authorgravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-01-03 02:31:08 -08:00
committergravatar for hello@nektro.netMeghan Denny <hello@nektro.net> 2026-01-03 02:31:08 -08:00
logc2cff948a394ab88efa68a5a77cced86f328b56b
tree9047abc4a7d8d519dfac75dc9c90435777cda1df

Initial commit


16 files changed, 27225 insertions(+), 0 deletions(-)

.gitattributes created+3
...@@ -0,0 +1,3 @@
1* text=auto
2*.zig text eol=lf
3zigmod.* text eol=lf
.gitignore created+7
...@@ -0,0 +1,7 @@
1.zig-cache
2zig-out
3.zigmod
4deps.zig
5files.zig
6zigmod.lock
7node_modules
IdnaTestV2.json created+12810
...@@ -0,0 +1,12810 @@
1[
2 "THIS IS A GENERATED FILE. PLEASE DO NOT MODIFY DIRECTLY. See ../tools/IdnaTestV2-parser.py instead.",
3 "--exclude-ipv4-like: True; --exclude-std3: True; --exclude-bidi: True",
4 {
5 "input": "fass.de",
6 "output": "fass.de"
7 },
8 {
9 "input": "fa\u00df.de",
10 "output": "xn--fa-hia.de"
11 },
12 {
13 "input": "Fa\u00df.de",
14 "output": "xn--fa-hia.de"
15 },
16 {
17 "input": "xn--fa-hia.de",
18 "output": "xn--fa-hia.de"
19 },
20 {
21 "input": "\u00e0.\u05d0\u0308",
22 "output": "xn--0ca.xn--ssa73l"
23 },
24 {
25 "input": "a\u0300.\u05d0\u0308",
26 "output": "xn--0ca.xn--ssa73l"
27 },
28 {
29 "input": "A\u0300.\u05d0\u0308",
30 "output": "xn--0ca.xn--ssa73l"
31 },
32 {
33 "input": "\u00c0.\u05d0\u0308",
34 "output": "xn--0ca.xn--ssa73l"
35 },
36 {
37 "input": "xn--0ca.xn--ssa73l",
38 "output": "xn--0ca.xn--ssa73l"
39 },
40 {
41 "input": "\u00e0\u0308.\u05d0",
42 "output": "xn--0ca81i.xn--4db"
43 },
44 {
45 "input": "a\u0300\u0308.\u05d0",
46 "output": "xn--0ca81i.xn--4db"
47 },
48 {
49 "input": "A\u0300\u0308.\u05d0",
50 "output": "xn--0ca81i.xn--4db"
51 },
52 {
53 "input": "\u00c0\u0308.\u05d0",
54 "output": "xn--0ca81i.xn--4db"
55 },
56 {
57 "input": "xn--0ca81i.xn--4db",
58 "output": "xn--0ca81i.xn--4db"
59 },
60 {
61 "comment": "C1",
62 "input": "a\u200cb",
63 "output": null
64 },
65 {
66 "comment": "C1",
67 "input": "A\u200cB",
68 "output": null
69 },
70 {
71 "comment": "C1",
72 "input": "A\u200cb",
73 "output": null
74 },
75 {
76 "input": "ab",
77 "output": "ab"
78 },
79 {
80 "comment": "C1",
81 "input": "xn--ab-j1t",
82 "output": null
83 },
84 {
85 "input": "a\u094d\u200cb",
86 "output": "xn--ab-fsf604u"
87 },
88 {
89 "input": "A\u094d\u200cB",
90 "output": "xn--ab-fsf604u"
91 },
92 {
93 "input": "A\u094d\u200cb",
94 "output": "xn--ab-fsf604u"
95 },
96 {
97 "input": "xn--ab-fsf",
98 "output": "xn--ab-fsf"
99 },
100 {
101 "input": "a\u094db",
102 "output": "xn--ab-fsf"
103 },
104 {
105 "input": "A\u094dB",
106 "output": "xn--ab-fsf"
107 },
108 {
109 "input": "A\u094db",
110 "output": "xn--ab-fsf"
111 },
112 {
113 "input": "xn--ab-fsf604u",
114 "output": "xn--ab-fsf604u"
115 },
116 {
117 "comment": "C2",
118 "input": "a\u200db",
119 "output": null
120 },
121 {
122 "comment": "C2",
123 "input": "A\u200dB",
124 "output": null
125 },
126 {
127 "comment": "C2",
128 "input": "A\u200db",
129 "output": null
130 },
131 {
132 "comment": "C2",
133 "input": "xn--ab-m1t",
134 "output": null
135 },
136 {
137 "input": "a\u094d\u200db",
138 "output": "xn--ab-fsf014u"
139 },
140 {
141 "input": "A\u094d\u200dB",
142 "output": "xn--ab-fsf014u"
143 },
144 {
145 "input": "A\u094d\u200db",
146 "output": "xn--ab-fsf014u"
147 },
148 {
149 "input": "xn--ab-fsf014u",
150 "output": "xn--ab-fsf014u"
151 },
152 {
153 "input": "\u00a1",
154 "output": "xn--7a"
155 },
156 {
157 "input": "xn--7a",
158 "output": "xn--7a"
159 },
160 {
161 "input": "\u19da",
162 "output": "xn--pkf"
163 },
164 {
165 "input": "xn--pkf",
166 "output": "xn--pkf"
167 },
168 {
169 "comment": "A4_1 (ignored); A4_2 (ignored)",
170 "input": "",
171 "output": ""
172 },
173 {
174 "comment": "A4_1 (ignored); A4_2 (ignored)",
175 "input": "\u3002",
176 "output": "."
177 },
178 {
179 "comment": "A4_1 (ignored); A4_2 (ignored)",
180 "input": ".",
181 "output": "."
182 },
183 {
184 "input": "\uab60",
185 "output": "xn--3y9a"
186 },
187 {
188 "input": "xn--3y9a",
189 "output": "xn--3y9a"
190 },
191 {
192 "comment": "A4_2 (ignored)",
193 "input": "1234567890\u00e41234567890123456789012345678901234567890123456",
194 "output": "xn--12345678901234567890123456789012345678901234567890123456-fxe"
195 },
196 {
197 "comment": "A4_2 (ignored)",
198 "input": "1234567890a\u03081234567890123456789012345678901234567890123456",
199 "output": "xn--12345678901234567890123456789012345678901234567890123456-fxe"
200 },
201 {
202 "comment": "A4_2 (ignored)",
203 "input": "1234567890A\u03081234567890123456789012345678901234567890123456",
204 "output": "xn--12345678901234567890123456789012345678901234567890123456-fxe"
205 },
206 {
207 "comment": "A4_2 (ignored)",
208 "input": "1234567890\u00c41234567890123456789012345678901234567890123456",
209 "output": "xn--12345678901234567890123456789012345678901234567890123456-fxe"
210 },
211 {
212 "comment": "A4_2 (ignored)",
213 "input": "xn--12345678901234567890123456789012345678901234567890123456-fxe",
214 "output": "xn--12345678901234567890123456789012345678901234567890123456-fxe"
215 },
216 {
217 "input": "www.eXample.cOm",
218 "output": "www.example.com"
219 },
220 {
221 "input": "B\u00fccher.de",
222 "output": "xn--bcher-kva.de"
223 },
224 {
225 "input": "Bu\u0308cher.de",
226 "output": "xn--bcher-kva.de"
227 },
228 {
229 "input": "bu\u0308cher.de",
230 "output": "xn--bcher-kva.de"
231 },
232 {
233 "input": "b\u00fccher.de",
234 "output": "xn--bcher-kva.de"
235 },
236 {
237 "input": "B\u00dcCHER.DE",
238 "output": "xn--bcher-kva.de"
239 },
240 {
241 "input": "BU\u0308CHER.DE",
242 "output": "xn--bcher-kva.de"
243 },
244 {
245 "input": "xn--bcher-kva.de",
246 "output": "xn--bcher-kva.de"
247 },
248 {
249 "input": "\u00d6BB",
250 "output": "xn--bb-eka"
251 },
252 {
253 "input": "O\u0308BB",
254 "output": "xn--bb-eka"
255 },
256 {
257 "input": "o\u0308bb",
258 "output": "xn--bb-eka"
259 },
260 {
261 "input": "\u00f6bb",
262 "output": "xn--bb-eka"
263 },
264 {
265 "input": "\u00d6bb",
266 "output": "xn--bb-eka"
267 },
268 {
269 "input": "O\u0308bb",
270 "output": "xn--bb-eka"
271 },
272 {
273 "input": "xn--bb-eka",
274 "output": "xn--bb-eka"
275 },
276 {
277 "input": "FA\u1e9e.de",
278 "output": "xn--fa-hia.de"
279 },
280 {
281 "input": "FA\u1e9e.DE",
282 "output": "xn--fa-hia.de"
283 },
284 {
285 "input": "\u03b2\u03cc\u03bb\u03bf\u03c2.com",
286 "output": "xn--nxasmm1c.com"
287 },
288 {
289 "input": "\u03b2\u03bf\u0301\u03bb\u03bf\u03c2.com",
290 "output": "xn--nxasmm1c.com"
291 },
292 {
293 "input": "\u0392\u039f\u0301\u039b\u039f\u03a3.COM",
294 "output": "xn--nxasmq6b.com"
295 },
296 {
297 "input": "\u0392\u038c\u039b\u039f\u03a3.COM",
298 "output": "xn--nxasmq6b.com"
299 },
300 {
301 "input": "\u03b2\u03cc\u03bb\u03bf\u03c3.com",
302 "output": "xn--nxasmq6b.com"
303 },
304 {
305 "input": "\u03b2\u03bf\u0301\u03bb\u03bf\u03c3.com",
306 "output": "xn--nxasmq6b.com"
307 },
308 {
309 "input": "\u0392\u03bf\u0301\u03bb\u03bf\u03c3.com",
310 "output": "xn--nxasmq6b.com"
311 },
312 {
313 "input": "\u0392\u03cc\u03bb\u03bf\u03c3.com",
314 "output": "xn--nxasmq6b.com"
315 },
316 {
317 "input": "xn--nxasmq6b.com",
318 "output": "xn--nxasmq6b.com"
319 },
320 {
321 "input": "\u0392\u03bf\u0301\u03bb\u03bf\u03c2.com",
322 "output": "xn--nxasmm1c.com"
323 },
324 {
325 "input": "\u0392\u03cc\u03bb\u03bf\u03c2.com",
326 "output": "xn--nxasmm1c.com"
327 },
328 {
329 "input": "xn--nxasmm1c.com",
330 "output": "xn--nxasmm1c.com"
331 },
332 {
333 "input": "xn--nxasmm1c",
334 "output": "xn--nxasmm1c"
335 },
336 {
337 "input": "\u03b2\u03cc\u03bb\u03bf\u03c2",
338 "output": "xn--nxasmm1c"
339 },
340 {
341 "input": "\u03b2\u03bf\u0301\u03bb\u03bf\u03c2",
342 "output": "xn--nxasmm1c"
343 },
344 {
345 "input": "\u0392\u039f\u0301\u039b\u039f\u03a3",
346 "output": "xn--nxasmq6b"
347 },
348 {
349 "input": "\u0392\u038c\u039b\u039f\u03a3",
350 "output": "xn--nxasmq6b"
351 },
352 {
353 "input": "\u03b2\u03cc\u03bb\u03bf\u03c3",
354 "output": "xn--nxasmq6b"
355 },
356 {
357 "input": "\u03b2\u03bf\u0301\u03bb\u03bf\u03c3",
358 "output": "xn--nxasmq6b"
359 },
360 {
361 "input": "\u0392\u03bf\u0301\u03bb\u03bf\u03c3",
362 "output": "xn--nxasmq6b"
363 },
364 {
365 "input": "\u0392\u03cc\u03bb\u03bf\u03c3",
366 "output": "xn--nxasmq6b"
367 },
368 {
369 "input": "xn--nxasmq6b",
370 "output": "xn--nxasmq6b"
371 },
372 {
373 "input": "\u0392\u03cc\u03bb\u03bf\u03c2",
374 "output": "xn--nxasmm1c"
375 },
376 {
377 "input": "\u0392\u03bf\u0301\u03bb\u03bf\u03c2",
378 "output": "xn--nxasmm1c"
379 },
380 {
381 "input": "www.\u0dc1\u0dca\u200d\u0dbb\u0dd3.com",
382 "output": "www.xn--10cl1a0b660p.com"
383 },
384 {
385 "input": "WWW.\u0dc1\u0dca\u200d\u0dbb\u0dd3.COM",
386 "output": "www.xn--10cl1a0b660p.com"
387 },
388 {
389 "input": "Www.\u0dc1\u0dca\u200d\u0dbb\u0dd3.com",
390 "output": "www.xn--10cl1a0b660p.com"
391 },
392 {
393 "input": "www.xn--10cl1a0b.com",
394 "output": "www.xn--10cl1a0b.com"
395 },
396 {
397 "input": "www.\u0dc1\u0dca\u0dbb\u0dd3.com",
398 "output": "www.xn--10cl1a0b.com"
399 },
400 {
401 "input": "WWW.\u0dc1\u0dca\u0dbb\u0dd3.COM",
402 "output": "www.xn--10cl1a0b.com"
403 },
404 {
405 "input": "Www.\u0dc1\u0dca\u0dbb\u0dd3.com",
406 "output": "www.xn--10cl1a0b.com"
407 },
408 {
409 "input": "www.xn--10cl1a0b660p.com",
410 "output": "www.xn--10cl1a0b660p.com"
411 },
412 {
413 "input": "\u0646\u0627\u0645\u0647\u200c\u0627\u06cc",
414 "output": "xn--mgba3gch31f060k"
415 },
416 {
417 "input": "xn--mgba3gch31f",
418 "output": "xn--mgba3gch31f"
419 },
420 {
421 "input": "\u0646\u0627\u0645\u0647\u0627\u06cc",
422 "output": "xn--mgba3gch31f"
423 },
424 {
425 "input": "xn--mgba3gch31f060k",
426 "output": "xn--mgba3gch31f060k"
427 },
428 {
429 "input": "xn--mgba3gch31f060k.com",
430 "output": "xn--mgba3gch31f060k.com"
431 },
432 {
433 "input": "\u0646\u0627\u0645\u0647\u200c\u0627\u06cc.com",
434 "output": "xn--mgba3gch31f060k.com"
435 },
436 {
437 "input": "\u0646\u0627\u0645\u0647\u200c\u0627\u06cc.COM",
438 "output": "xn--mgba3gch31f060k.com"
439 },
440 {
441 "input": "xn--mgba3gch31f.com",
442 "output": "xn--mgba3gch31f.com"
443 },
444 {
445 "input": "\u0646\u0627\u0645\u0647\u0627\u06cc.com",
446 "output": "xn--mgba3gch31f.com"
447 },
448 {
449 "input": "\u0646\u0627\u0645\u0647\u0627\u06cc.COM",
450 "output": "xn--mgba3gch31f.com"
451 },
452 {
453 "comment": "A4_2 (ignored)",
454 "input": "a.b\uff0ec\u3002d\uff61",
455 "output": "a.b.c.d."
456 },
457 {
458 "comment": "A4_2 (ignored)",
459 "input": "a.b.c\u3002d\u3002",
460 "output": "a.b.c.d."
461 },
462 {
463 "comment": "A4_2 (ignored)",
464 "input": "A.B.C\u3002D\u3002",
465 "output": "a.b.c.d."
466 },
467 {
468 "comment": "A4_2 (ignored)",
469 "input": "A.b.c\u3002D\u3002",
470 "output": "a.b.c.d."
471 },
472 {
473 "comment": "A4_2 (ignored)",
474 "input": "a.b.c.d.",
475 "output": "a.b.c.d."
476 },
477 {
478 "comment": "A4_2 (ignored)",
479 "input": "A.B\uff0eC\u3002D\uff61",
480 "output": "a.b.c.d."
481 },
482 {
483 "comment": "A4_2 (ignored)",
484 "input": "A.b\uff0ec\u3002D\uff61",
485 "output": "a.b.c.d."
486 },
487 {
488 "input": "U\u0308.xn--tda",
489 "output": "xn--tda.xn--tda"
490 },
491 {
492 "input": "\u00dc.xn--tda",
493 "output": "xn--tda.xn--tda"
494 },
495 {
496 "input": "\u00fc.xn--tda",
497 "output": "xn--tda.xn--tda"
498 },
499 {
500 "input": "u\u0308.xn--tda",
501 "output": "xn--tda.xn--tda"
502 },
503 {
504 "input": "U\u0308.XN--TDA",
505 "output": "xn--tda.xn--tda"
506 },
507 {
508 "input": "\u00dc.XN--TDA",
509 "output": "xn--tda.xn--tda"
510 },
511 {
512 "input": "\u00dc.xn--Tda",
513 "output": "xn--tda.xn--tda"
514 },
515 {
516 "input": "U\u0308.xn--Tda",
517 "output": "xn--tda.xn--tda"
518 },
519 {
520 "input": "xn--tda.xn--tda",
521 "output": "xn--tda.xn--tda"
522 },
523 {
524 "input": "\u00fc.\u00fc",
525 "output": "xn--tda.xn--tda"
526 },
527 {
528 "input": "u\u0308.u\u0308",
529 "output": "xn--tda.xn--tda"
530 },
531 {
532 "input": "U\u0308.U\u0308",
533 "output": "xn--tda.xn--tda"
534 },
535 {
536 "input": "\u00dc.\u00dc",
537 "output": "xn--tda.xn--tda"
538 },
539 {
540 "input": "\u00dc.\u00fc",
541 "output": "xn--tda.xn--tda"
542 },
543 {
544 "input": "U\u0308.u\u0308",
545 "output": "xn--tda.xn--tda"
546 },
547 {
548 "comment": "V1",
549 "input": "xn--u-ccb",
550 "output": null
551 },
552 {
553 "comment": "V7",
554 "input": "a\u2488com",
555 "output": null
556 },
557 {
558 "input": "a1.com",
559 "output": "a1.com"
560 },
561 {
562 "comment": "V7",
563 "input": "A\u2488COM",
564 "output": null
565 },
566 {
567 "comment": "V7",
568 "input": "A\u2488Com",
569 "output": null
570 },
571 {
572 "comment": "V7",
573 "input": "xn--acom-0w1b",
574 "output": null
575 },
576 {
577 "comment": "V7",
578 "input": "xn--a-ecp.ru",
579 "output": null
580 },
581 {
582 "comment": "P4",
583 "input": "xn--0.pt",
584 "output": null
585 },
586 {
587 "comment": "V7",
588 "input": "xn--a.pt",
589 "output": null
590 },
591 {
592 "comment": "P4",
593 "input": "xn--a-\u00c4.pt",
594 "output": null
595 },
596 {
597 "comment": "P4",
598 "input": "xn--a-A\u0308.pt",
599 "output": null
600 },
601 {
602 "comment": "P4",
603 "input": "xn--a-a\u0308.pt",
604 "output": null
605 },
606 {
607 "comment": "P4",
608 "input": "xn--a-\u00e4.pt",
609 "output": null
610 },
611 {
612 "comment": "P4",
613 "input": "XN--A-\u00c4.PT",
614 "output": null
615 },
616 {
617 "comment": "P4",
618 "input": "XN--A-A\u0308.PT",
619 "output": null
620 },
621 {
622 "comment": "P4",
623 "input": "Xn--A-A\u0308.pt",
624 "output": null
625 },
626 {
627 "comment": "P4",
628 "input": "Xn--A-\u00c4.pt",
629 "output": null
630 },
631 {
632 "comment": "V4; V2 (ignored)",
633 "input": "xn--xn--a--gua.pt",
634 "output": null
635 },
636 {
637 "input": "\u65e5\u672c\u8a9e\u3002\uff2a\uff30",
638 "output": "xn--wgv71a119e.jp"
639 },
640 {
641 "input": "\u65e5\u672c\u8a9e\u3002JP",
642 "output": "xn--wgv71a119e.jp"
643 },
644 {
645 "input": "\u65e5\u672c\u8a9e\u3002jp",
646 "output": "xn--wgv71a119e.jp"
647 },
648 {
649 "input": "\u65e5\u672c\u8a9e\u3002Jp",
650 "output": "xn--wgv71a119e.jp"
651 },
652 {
653 "input": "xn--wgv71a119e.jp",
654 "output": "xn--wgv71a119e.jp"
655 },
656 {
657 "input": "\u65e5\u672c\u8a9e.jp",
658 "output": "xn--wgv71a119e.jp"
659 },
660 {
661 "input": "\u65e5\u672c\u8a9e.JP",
662 "output": "xn--wgv71a119e.jp"
663 },
664 {
665 "input": "\u65e5\u672c\u8a9e.Jp",
666 "output": "xn--wgv71a119e.jp"
667 },
668 {
669 "input": "\u65e5\u672c\u8a9e\u3002\uff4a\uff50",
670 "output": "xn--wgv71a119e.jp"
671 },
672 {
673 "input": "\u65e5\u672c\u8a9e\u3002\uff2a\uff50",
674 "output": "xn--wgv71a119e.jp"
675 },
676 {
677 "input": "\u2615",
678 "output": "xn--53h"
679 },
680 {
681 "input": "xn--53h",
682 "output": "xn--53h"
683 },
684 {
685 "comment": "C1; C2; A4_2 (ignored)",
686 "input": "1.a\u00df\u200c\u200db\u200c\u200dc\u00df\u00df\u00df\u00dfd\u03c2\u03c3\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00dfe\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00dfx\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00dfy\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u0302\u00dfz",
687 "output": null
688 },
689 {
690 "comment": "C1; C2; A4_2 (ignored)",
691 "input": "1.ASS\u200c\u200dB\u200c\u200dCSSSSSSSSD\u03a3\u03a3SSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSS\u0302SSZ",
692 "output": null
693 },
694 {
695 "comment": "C1; C2; A4_2 (ignored)",
696 "input": "1.ASS\u200c\u200dB\u200c\u200dCSSSSSSSSD\u03a3\u03a3SSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSS\u015cSSZ",
697 "output": null
698 },
699 {
700 "comment": "C1; C2; A4_2 (ignored)",
701 "input": "1.ass\u200c\u200db\u200c\u200dcssssssssd\u03c3\u03c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssss\u015dssz",
702 "output": null
703 },
704 {
705 "comment": "C1; C2; A4_2 (ignored)",
706 "input": "1.ass\u200c\u200db\u200c\u200dcssssssssd\u03c3\u03c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\u0302ssz",
707 "output": null
708 },
709 {
710 "comment": "C1; C2; A4_2 (ignored)",
711 "input": "1.Ass\u200c\u200db\u200c\u200dcssssssssd\u03c3\u03c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\u0302ssz",
712 "output": null
713 },
714 {
715 "comment": "C1; C2; A4_2 (ignored)",
716 "input": "1.Ass\u200c\u200db\u200c\u200dcssssssssd\u03c3\u03c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssss\u015dssz",
717 "output": null
718 },
719 {
720 "comment": "A4_2 (ignored)",
721 "input": "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa",
722 "output": "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"
723 },
724 {
725 "comment": "A4_2 (ignored)",
726 "input": "1.assbcssssssssd\u03c3\u03c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssss\u015dssz",
727 "output": "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"
728 },
729 {
730 "comment": "A4_2 (ignored)",
731 "input": "1.assbcssssssssd\u03c3\u03c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\u0302ssz",
732 "output": "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"
733 },
734 {
735 "comment": "A4_2 (ignored)",
736 "input": "1.ASSBCSSSSSSSSD\u03a3\u03a3SSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSS\u0302SSZ",
737 "output": "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"
738 },
739 {
740 "comment": "A4_2 (ignored)",
741 "input": "1.ASSBCSSSSSSSSD\u03a3\u03a3SSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSS\u015cSSZ",
742 "output": "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"
743 },
744 {
745 "comment": "A4_2 (ignored)",
746 "input": "1.Assbcssssssssd\u03c3\u03c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssss\u015dssz",
747 "output": "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"
748 },
749 {
750 "comment": "A4_2 (ignored)",
751 "input": "1.Assbcssssssssd\u03c3\u03c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\u0302ssz",
752 "output": "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"
753 },
754 {
755 "comment": "C1; C2; A4_2 (ignored)",
756 "input": "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc",
757 "output": null
758 },
759 {
760 "comment": "C1; C2; A4_2 (ignored)",
761 "input": "1.A\u00df\u200c\u200db\u200c\u200dc\u00df\u00df\u00df\u00dfd\u03c2\u03c3\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00dfe\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00dfx\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00dfy\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u00df\u0302\u00dfz",
762 "output": null
763 },
764 {
765 "comment": "C1; C2; A4_2 (ignored)",
766 "input": "1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc",
767 "output": null
768 },
769 {
770 "comment": "C1; C2",
771 "input": "\u200cx\u200dn\u200c-\u200d-b\u00df",
772 "output": null
773 },
774 {
775 "comment": "C1; C2",
776 "input": "\u200cX\u200dN\u200c-\u200d-BSS",
777 "output": null
778 },
779 {
780 "comment": "C1; C2",
781 "input": "\u200cx\u200dn\u200c-\u200d-bss",
782 "output": null
783 },
784 {
785 "comment": "C1; C2",
786 "input": "\u200cX\u200dn\u200c-\u200d-Bss",
787 "output": null
788 },
789 {
790 "input": "xn--bss",
791 "output": "xn--bss"
792 },
793 {
794 "input": "\u5919",
795 "output": "xn--bss"
796 },
797 {
798 "comment": "C1; C2",
799 "input": "xn--xn--bss-7z6ccid",
800 "output": null
801 },
802 {
803 "comment": "C1; C2",
804 "input": "\u200cX\u200dn\u200c-\u200d-B\u00df",
805 "output": null
806 },
807 {
808 "comment": "C1; C2",
809 "input": "xn--xn--b-pqa5796ccahd",
810 "output": null
811 },
812 {
813 "input": "\u02e3\u034f\u2115\u200b\ufe63\u00ad\uff0d\u180c\u212c\ufe00\u017f\u2064\ud835\udd30\udb40\uddef\ufb04",
814 "output": "xn--bssffl"
815 },
816 {
817 "input": "x\u034fN\u200b-\u00ad-\u180cB\ufe00s\u2064s\udb40\uddefffl",
818 "output": "xn--bssffl"
819 },
820 {
821 "input": "x\u034fn\u200b-\u00ad-\u180cb\ufe00s\u2064s\udb40\uddefffl",
822 "output": "xn--bssffl"
823 },
824 {
825 "input": "X\u034fN\u200b-\u00ad-\u180cB\ufe00S\u2064S\udb40\uddefFFL",
826 "output": "xn--bssffl"
827 },
828 {
829 "input": "X\u034fn\u200b-\u00ad-\u180cB\ufe00s\u2064s\udb40\uddefffl",
830 "output": "xn--bssffl"
831 },
832 {
833 "input": "xn--bssffl",
834 "output": "xn--bssffl"
835 },
836 {
837 "input": "\u5921\u591e\u591c\u5919",
838 "output": "xn--bssffl"
839 },
840 {
841 "input": "\u02e3\u034f\u2115\u200b\ufe63\u00ad\uff0d\u180c\u212c\ufe00S\u2064\ud835\udd30\udb40\uddefFFL",
842 "output": "xn--bssffl"
843 },
844 {
845 "input": "x\u034fN\u200b-\u00ad-\u180cB\ufe00S\u2064s\udb40\uddefFFL",
846 "output": "xn--bssffl"
847 },
848 {
849 "input": "\u02e3\u034f\u2115\u200b\ufe63\u00ad\uff0d\u180c\u212c\ufe00s\u2064\ud835\udd30\udb40\uddefffl",
850 "output": "xn--bssffl"
851 },
852 {
853 "input": "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
854 "output": "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
855 },
856 {
857 "comment": "A4_2 (ignored)",
858 "input": "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.",
859 "output": "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."
860 },
861 {
862 "comment": "A4_1 (ignored)",
863 "input": "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c",
864 "output": "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"
865 },
866 {
867 "comment": "A4_2 (ignored)",
868 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a",
869 "output": "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"
870 },
871 {
872 "comment": "A4_2 (ignored)",
873 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.",
874 "output": "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."
875 },
876 {
877 "comment": "A4_1 (ignored); A4_2 (ignored)",
878 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
879 "output": "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
880 },
881 {
882 "input": "\u00e41234567890123456789012345678901234567890123456789012345",
883 "output": "xn--1234567890123456789012345678901234567890123456789012345-9te"
884 },
885 {
886 "input": "a\u03081234567890123456789012345678901234567890123456789012345",
887 "output": "xn--1234567890123456789012345678901234567890123456789012345-9te"
888 },
889 {
890 "input": "A\u03081234567890123456789012345678901234567890123456789012345",
891 "output": "xn--1234567890123456789012345678901234567890123456789012345-9te"
892 },
893 {
894 "input": "\u00c41234567890123456789012345678901234567890123456789012345",
895 "output": "xn--1234567890123456789012345678901234567890123456789012345-9te"
896 },
897 {
898 "input": "xn--1234567890123456789012345678901234567890123456789012345-9te",
899 "output": "xn--1234567890123456789012345678901234567890123456789012345-9te"
900 },
901 {
902 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00e4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
903 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
904 },
905 {
906 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890a\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
907 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
908 },
909 {
910 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B",
911 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
912 },
913 {
914 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B",
915 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
916 },
917 {
918 "input": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
919 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
920 },
921 {
922 "comment": "A4_2 (ignored)",
923 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00e4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.",
924 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."
925 },
926 {
927 "comment": "A4_2 (ignored)",
928 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890a\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.",
929 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."
930 },
931 {
932 "comment": "A4_2 (ignored)",
933 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B.",
934 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."
935 },
936 {
937 "comment": "A4_2 (ignored)",
938 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B.",
939 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."
940 },
941 {
942 "comment": "A4_2 (ignored)",
943 "input": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.",
944 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."
945 },
946 {
947 "comment": "A4_1 (ignored)",
948 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00e4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c",
949 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"
950 },
951 {
952 "comment": "A4_1 (ignored)",
953 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890a\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c",
954 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"
955 },
956 {
957 "comment": "A4_1 (ignored)",
958 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901C",
959 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"
960 },
961 {
962 "comment": "A4_1 (ignored)",
963 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901C",
964 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"
965 },
966 {
967 "comment": "A4_1 (ignored)",
968 "input": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c",
969 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"
970 },
971 {
972 "comment": "A4_2 (ignored)",
973 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00e41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a",
974 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"
975 },
976 {
977 "comment": "A4_2 (ignored)",
978 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890a\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a",
979 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"
980 },
981 {
982 "comment": "A4_2 (ignored)",
983 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A",
984 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"
985 },
986 {
987 "comment": "A4_2 (ignored)",
988 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A",
989 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"
990 },
991 {
992 "comment": "A4_2 (ignored)",
993 "input": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a",
994 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"
995 },
996 {
997 "comment": "A4_2 (ignored)",
998 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00e41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.",
999 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."
1000 },
1001 {
1002 "comment": "A4_2 (ignored)",
1003 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890a\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.",
1004 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."
1005 },
1006 {
1007 "comment": "A4_2 (ignored)",
1008 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A.",
1009 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."
1010 },
1011 {
1012 "comment": "A4_2 (ignored)",
1013 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A.",
1014 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."
1015 },
1016 {
1017 "comment": "A4_2 (ignored)",
1018 "input": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.",
1019 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."
1020 },
1021 {
1022 "comment": "A4_1 (ignored); A4_2 (ignored)",
1023 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00e41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
1024 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
1025 },
1026 {
1027 "comment": "A4_1 (ignored); A4_2 (ignored)",
1028 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890a\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
1029 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
1030 },
1031 {
1032 "comment": "A4_1 (ignored); A4_2 (ignored)",
1033 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B",
1034 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
1035 },
1036 {
1037 "comment": "A4_1 (ignored); A4_2 (ignored)",
1038 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B",
1039 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
1040 },
1041 {
1042 "comment": "A4_1 (ignored); A4_2 (ignored)",
1043 "input": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
1044 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
1045 },
1046 {
1047 "comment": "V2 (ignored); V3 (ignored); A4_2 (ignored)",
1048 "input": "a.b..-q--a-.e",
1049 "output": "a.b..-q--a-.e"
1050 },
1051 {
1052 "comment": "V2 (ignored); V3 (ignored); A4_2 (ignored)",
1053 "input": "a.b..-q--\u00e4-.e",
1054 "output": "a.b..xn---q----jra.e"
1055 },
1056 {
1057 "comment": "V2 (ignored); V3 (ignored); A4_2 (ignored)",
1058 "input": "a.b..-q--a\u0308-.e",
1059 "output": "a.b..xn---q----jra.e"
1060 },
1061 {
1062 "comment": "V2 (ignored); V3 (ignored); A4_2 (ignored)",
1063 "input": "A.B..-Q--A\u0308-.E",
1064 "output": "a.b..xn---q----jra.e"
1065 },
1066 {
1067 "comment": "V2 (ignored); V3 (ignored); A4_2 (ignored)",
1068 "input": "A.B..-Q--\u00c4-.E",
1069 "output": "a.b..xn---q----jra.e"
1070 },
1071 {
1072 "comment": "V2 (ignored); V3 (ignored); A4_2 (ignored)",
1073 "input": "A.b..-Q--\u00c4-.E",
1074 "output": "a.b..xn---q----jra.e"
1075 },
1076 {
1077 "comment": "V2 (ignored); V3 (ignored); A4_2 (ignored)",
1078 "input": "A.b..-Q--A\u0308-.E",
1079 "output": "a.b..xn---q----jra.e"
1080 },
1081 {
1082 "comment": "V2 (ignored); V3 (ignored); A4_2 (ignored)",
1083 "input": "a.b..xn---q----jra.e",
1084 "output": "a.b..xn---q----jra.e"
1085 },
1086 {
1087 "comment": "A4_2 (ignored)",
1088 "input": "a..c",
1089 "output": "a..c"
1090 },
1091 {
1092 "comment": "V3 (ignored); A4_2 (ignored)",
1093 "input": "a.-b.",
1094 "output": "a.-b."
1095 },
1096 {
1097 "comment": "V3 (ignored)",
1098 "input": "a.b-.c",
1099 "output": "a.b-.c"
1100 },
1101 {
1102 "comment": "V3 (ignored)",
1103 "input": "a.-.c",
1104 "output": "a.-.c"
1105 },
1106 {
1107 "comment": "V2 (ignored)",
1108 "input": "a.bc--de.f",
1109 "output": "a.bc--de.f"
1110 },
1111 {
1112 "comment": "V4; V2 (ignored)",
1113 "input": "xn--xn---epa",
1114 "output": null
1115 },
1116 {
1117 "comment": "A4_2 (ignored)",
1118 "input": "\u00e4.\u00ad.c",
1119 "output": "xn--4ca..c"
1120 },
1121 {
1122 "comment": "A4_2 (ignored)",
1123 "input": "a\u0308.\u00ad.c",
1124 "output": "xn--4ca..c"
1125 },
1126 {
1127 "comment": "A4_2 (ignored)",
1128 "input": "A\u0308.\u00ad.C",
1129 "output": "xn--4ca..c"
1130 },
1131 {
1132 "comment": "A4_2 (ignored)",
1133 "input": "\u00c4.\u00ad.C",
1134 "output": "xn--4ca..c"
1135 },
1136 {
1137 "comment": "A4_2 (ignored)",
1138 "input": "xn--4ca..c",
1139 "output": "xn--4ca..c"
1140 },
1141 {
1142 "comment": "V3 (ignored); A4_2 (ignored)",
1143 "input": "\u00e4.-b.",
1144 "output": "xn--4ca.-b."
1145 },
1146 {
1147 "comment": "V3 (ignored); A4_2 (ignored)",
1148 "input": "a\u0308.-b.",
1149 "output": "xn--4ca.-b."
1150 },
1151 {
1152 "comment": "V3 (ignored); A4_2 (ignored)",
1153 "input": "A\u0308.-B.",
1154 "output": "xn--4ca.-b."
1155 },
1156 {
1157 "comment": "V3 (ignored); A4_2 (ignored)",
1158 "input": "\u00c4.-B.",
1159 "output": "xn--4ca.-b."
1160 },
1161 {
1162 "comment": "V3 (ignored); A4_2 (ignored)",
1163 "input": "xn--4ca.-b.",
1164 "output": "xn--4ca.-b."
1165 },
1166 {
1167 "comment": "V3 (ignored)",
1168 "input": "\u00e4.b-.c",
1169 "output": "xn--4ca.b-.c"
1170 },
1171 {
1172 "comment": "V3 (ignored)",
1173 "input": "a\u0308.b-.c",
1174 "output": "xn--4ca.b-.c"
1175 },
1176 {
1177 "comment": "V3 (ignored)",
1178 "input": "A\u0308.B-.C",
1179 "output": "xn--4ca.b-.c"
1180 },
1181 {
1182 "comment": "V3 (ignored)",
1183 "input": "\u00c4.B-.C",
1184 "output": "xn--4ca.b-.c"
1185 },
1186 {
1187 "comment": "V3 (ignored)",
1188 "input": "\u00c4.b-.C",
1189 "output": "xn--4ca.b-.c"
1190 },
1191 {
1192 "comment": "V3 (ignored)",
1193 "input": "A\u0308.b-.C",
1194 "output": "xn--4ca.b-.c"
1195 },
1196 {
1197 "comment": "V3 (ignored)",
1198 "input": "xn--4ca.b-.c",
1199 "output": "xn--4ca.b-.c"
1200 },
1201 {
1202 "comment": "V3 (ignored)",
1203 "input": "\u00e4.-.c",
1204 "output": "xn--4ca.-.c"
1205 },
1206 {
1207 "comment": "V3 (ignored)",
1208 "input": "a\u0308.-.c",
1209 "output": "xn--4ca.-.c"
1210 },
1211 {
1212 "comment": "V3 (ignored)",
1213 "input": "A\u0308.-.C",
1214 "output": "xn--4ca.-.c"
1215 },
1216 {
1217 "comment": "V3 (ignored)",
1218 "input": "\u00c4.-.C",
1219 "output": "xn--4ca.-.c"
1220 },
1221 {
1222 "comment": "V3 (ignored)",
1223 "input": "xn--4ca.-.c",
1224 "output": "xn--4ca.-.c"
1225 },
1226 {
1227 "comment": "V2 (ignored)",
1228 "input": "\u00e4.bc--de.f",
1229 "output": "xn--4ca.bc--de.f"
1230 },
1231 {
1232 "comment": "V2 (ignored)",
1233 "input": "a\u0308.bc--de.f",
1234 "output": "xn--4ca.bc--de.f"
1235 },
1236 {
1237 "comment": "V2 (ignored)",
1238 "input": "A\u0308.BC--DE.F",
1239 "output": "xn--4ca.bc--de.f"
1240 },
1241 {
1242 "comment": "V2 (ignored)",
1243 "input": "\u00c4.BC--DE.F",
1244 "output": "xn--4ca.bc--de.f"
1245 },
1246 {
1247 "comment": "V2 (ignored)",
1248 "input": "\u00c4.bc--De.f",
1249 "output": "xn--4ca.bc--de.f"
1250 },
1251 {
1252 "comment": "V2 (ignored)",
1253 "input": "A\u0308.bc--De.f",
1254 "output": "xn--4ca.bc--de.f"
1255 },
1256 {
1257 "comment": "V2 (ignored)",
1258 "input": "xn--4ca.bc--de.f",
1259 "output": "xn--4ca.bc--de.f"
1260 },
1261 {
1262 "comment": "V6",
1263 "input": "a.b.\u0308c.d",
1264 "output": null
1265 },
1266 {
1267 "comment": "V6",
1268 "input": "A.B.\u0308C.D",
1269 "output": null
1270 },
1271 {
1272 "comment": "V6",
1273 "input": "A.b.\u0308c.d",
1274 "output": null
1275 },
1276 {
1277 "comment": "V6",
1278 "input": "a.b.xn--c-bcb.d",
1279 "output": null
1280 },
1281 {
1282 "input": "A0",
1283 "output": "a0"
1284 },
1285 {
1286 "input": "0A",
1287 "output": "0a"
1288 },
1289 {
1290 "input": "\u05d0\u05c7",
1291 "output": "xn--vdbr"
1292 },
1293 {
1294 "input": "xn--vdbr",
1295 "output": "xn--vdbr"
1296 },
1297 {
1298 "input": "\u05d09\u05c7",
1299 "output": "xn--9-ihcz"
1300 },
1301 {
1302 "input": "xn--9-ihcz",
1303 "output": "xn--9-ihcz"
1304 },
1305 {
1306 "input": "\u05d0\u05ea",
1307 "output": "xn--4db6c"
1308 },
1309 {
1310 "input": "xn--4db6c",
1311 "output": "xn--4db6c"
1312 },
1313 {
1314 "input": "\u05d0\u05f3\u05ea",
1315 "output": "xn--4db6c0a"
1316 },
1317 {
1318 "input": "xn--4db6c0a",
1319 "output": "xn--4db6c0a"
1320 },
1321 {
1322 "input": "\u05d07\u05ea",
1323 "output": "xn--7-zhc3f"
1324 },
1325 {
1326 "input": "xn--7-zhc3f",
1327 "output": "xn--7-zhc3f"
1328 },
1329 {
1330 "input": "\u05d0\u0667\u05ea",
1331 "output": "xn--4db6c6t"
1332 },
1333 {
1334 "input": "xn--4db6c6t",
1335 "output": "xn--4db6c6t"
1336 },
1337 {
1338 "input": "\u0bb9\u0bcd\u200d",
1339 "output": "xn--dmc4b194h"
1340 },
1341 {
1342 "input": "xn--dmc4b",
1343 "output": "xn--dmc4b"
1344 },
1345 {
1346 "input": "\u0bb9\u0bcd",
1347 "output": "xn--dmc4b"
1348 },
1349 {
1350 "input": "xn--dmc4b194h",
1351 "output": "xn--dmc4b194h"
1352 },
1353 {
1354 "comment": "C2",
1355 "input": "\u0bb9\u200d",
1356 "output": null
1357 },
1358 {
1359 "input": "xn--dmc",
1360 "output": "xn--dmc"
1361 },
1362 {
1363 "input": "\u0bb9",
1364 "output": "xn--dmc"
1365 },
1366 {
1367 "comment": "C2",
1368 "input": "xn--dmc225h",
1369 "output": null
1370 },
1371 {
1372 "comment": "C2",
1373 "input": "\u200d",
1374 "output": null
1375 },
1376 {
1377 "comment": "C2",
1378 "input": "xn--1ug",
1379 "output": null
1380 },
1381 {
1382 "input": "\u0bb9\u0bcd\u200c",
1383 "output": "xn--dmc4by94h"
1384 },
1385 {
1386 "input": "xn--dmc4by94h",
1387 "output": "xn--dmc4by94h"
1388 },
1389 {
1390 "comment": "C1",
1391 "input": "\u0bb9\u200c",
1392 "output": null
1393 },
1394 {
1395 "comment": "C1",
1396 "input": "xn--dmc025h",
1397 "output": null
1398 },
1399 {
1400 "comment": "C1",
1401 "input": "\u200c",
1402 "output": null
1403 },
1404 {
1405 "comment": "C1",
1406 "input": "xn--0ug",
1407 "output": null
1408 },
1409 {
1410 "input": "\u0644\u0670\u200c\u06ed\u06ef",
1411 "output": "xn--ghb2gxqia7523a"
1412 },
1413 {
1414 "input": "xn--ghb2gxqia",
1415 "output": "xn--ghb2gxqia"
1416 },
1417 {
1418 "input": "\u0644\u0670\u06ed\u06ef",
1419 "output": "xn--ghb2gxqia"
1420 },
1421 {
1422 "input": "xn--ghb2gxqia7523a",
1423 "output": "xn--ghb2gxqia7523a"
1424 },
1425 {
1426 "input": "\u0644\u0670\u200c\u06ef",
1427 "output": "xn--ghb2g3qq34f"
1428 },
1429 {
1430 "input": "xn--ghb2g3q",
1431 "output": "xn--ghb2g3q"
1432 },
1433 {
1434 "input": "\u0644\u0670\u06ef",
1435 "output": "xn--ghb2g3q"
1436 },
1437 {
1438 "input": "xn--ghb2g3qq34f",
1439 "output": "xn--ghb2g3qq34f"
1440 },
1441 {
1442 "input": "\u0644\u200c\u06ed\u06ef",
1443 "output": "xn--ghb25aga828w"
1444 },
1445 {
1446 "input": "xn--ghb25aga",
1447 "output": "xn--ghb25aga"
1448 },
1449 {
1450 "input": "\u0644\u06ed\u06ef",
1451 "output": "xn--ghb25aga"
1452 },
1453 {
1454 "input": "xn--ghb25aga828w",
1455 "output": "xn--ghb25aga828w"
1456 },
1457 {
1458 "input": "\u0644\u200c\u06ef",
1459 "output": "xn--ghb65a953d"
1460 },
1461 {
1462 "input": "xn--ghb65a",
1463 "output": "xn--ghb65a"
1464 },
1465 {
1466 "input": "\u0644\u06ef",
1467 "output": "xn--ghb65a"
1468 },
1469 {
1470 "input": "xn--ghb65a953d",
1471 "output": "xn--ghb65a953d"
1472 },
1473 {
1474 "input": "xn--ghb2gxq",
1475 "output": "xn--ghb2gxq"
1476 },
1477 {
1478 "input": "\u0644\u0670\u06ed",
1479 "output": "xn--ghb2gxq"
1480 },
1481 {
1482 "comment": "C1",
1483 "input": "\u06ef\u200c\u06ef",
1484 "output": null
1485 },
1486 {
1487 "input": "xn--cmba",
1488 "output": "xn--cmba"
1489 },
1490 {
1491 "input": "\u06ef\u06ef",
1492 "output": "xn--cmba"
1493 },
1494 {
1495 "comment": "C1",
1496 "input": "xn--cmba004q",
1497 "output": null
1498 },
1499 {
1500 "input": "xn--ghb",
1501 "output": "xn--ghb"
1502 },
1503 {
1504 "input": "\u0644",
1505 "output": "xn--ghb"
1506 },
1507 {
1508 "comment": "A4_2 (ignored)",
1509 "input": "a\u3002\u3002b",
1510 "output": "a..b"
1511 },
1512 {
1513 "comment": "A4_2 (ignored)",
1514 "input": "A\u3002\u3002B",
1515 "output": "a..b"
1516 },
1517 {
1518 "comment": "A4_2 (ignored)",
1519 "input": "a..b",
1520 "output": "a..b"
1521 },
1522 {
1523 "comment": "A4_2 (ignored)",
1524 "input": "..xn--skb",
1525 "output": "..xn--skb"
1526 },
1527 {
1528 "comment": "U1 (ignored)",
1529 "input": "$",
1530 "output": "$"
1531 },
1532 {
1533 "comment": "U1 (ignored)",
1534 "input": "\u2477.four",
1535 "output": "(4).four"
1536 },
1537 {
1538 "comment": "U1 (ignored)",
1539 "input": "(4).four",
1540 "output": "(4).four"
1541 },
1542 {
1543 "comment": "U1 (ignored)",
1544 "input": "\u2477.FOUR",
1545 "output": "(4).four"
1546 },
1547 {
1548 "comment": "U1 (ignored)",
1549 "input": "\u2477.Four",
1550 "output": "(4).four"
1551 },
1552 {
1553 "comment": "V7; A3",
1554 "input": "a\ud900z",
1555 "output": null
1556 },
1557 {
1558 "comment": "V7; A3",
1559 "input": "A\ud900Z",
1560 "output": null
1561 },
1562 {
1563 "comment": "P4; A4_1 (ignored); A4_2 (ignored)",
1564 "input": "xn--",
1565 "output": null
1566 },
1567 {
1568 "comment": "P4",
1569 "input": "xn---",
1570 "output": null
1571 },
1572 {
1573 "comment": "P4",
1574 "input": "xn--ASCII-",
1575 "output": null
1576 },
1577 {
1578 "input": "ascii",
1579 "output": "ascii"
1580 },
1581 {
1582 "comment": "P4",
1583 "input": "xn--unicode-.org",
1584 "output": null
1585 },
1586 {
1587 "input": "unicode.org",
1588 "output": "unicode.org"
1589 },
1590 {
1591 "input": "\uf951\ud87e\udc68\ud87e\udc74\ud87e\udd1f\ud87e\udd5f\ud87e\uddbf",
1592 "output": "xn--snl253bgitxhzwu2arn60c"
1593 },
1594 {
1595 "input": "\u964b\u36fc\u5f53\ud850\udfab\u7aee\u45d7",
1596 "output": "xn--snl253bgitxhzwu2arn60c"
1597 },
1598 {
1599 "input": "xn--snl253bgitxhzwu2arn60c",
1600 "output": "xn--snl253bgitxhzwu2arn60c"
1601 },
1602 {
1603 "input": "\u96fb\ud844\udf6a\u5f33\u43ab\u7aae\u4d57",
1604 "output": "xn--kbo60w31ob3z6t3av9z5b"
1605 },
1606 {
1607 "input": "xn--kbo60w31ob3z6t3av9z5b",
1608 "output": "xn--kbo60w31ob3z6t3av9z5b"
1609 },
1610 {
1611 "input": "xn--A-1ga",
1612 "output": "xn--a-1ga"
1613 },
1614 {
1615 "input": "a\u00f6",
1616 "output": "xn--a-1ga"
1617 },
1618 {
1619 "input": "ao\u0308",
1620 "output": "xn--a-1ga"
1621 },
1622 {
1623 "input": "AO\u0308",
1624 "output": "xn--a-1ga"
1625 },
1626 {
1627 "input": "A\u00d6",
1628 "output": "xn--a-1ga"
1629 },
1630 {
1631 "input": "A\u00f6",
1632 "output": "xn--a-1ga"
1633 },
1634 {
1635 "input": "Ao\u0308",
1636 "output": "xn--a-1ga"
1637 },
1638 {
1639 "input": "\uff1d\u0338",
1640 "output": "xn--1ch"
1641 },
1642 {
1643 "input": "\u2260",
1644 "output": "xn--1ch"
1645 },
1646 {
1647 "input": "=\u0338",
1648 "output": "xn--1ch"
1649 },
1650 {
1651 "input": "xn--1ch",
1652 "output": "xn--1ch"
1653 },
1654 {
1655 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
1656 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
1657 },
1658 {
1659 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
1660 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
1661 },
1662 {
1663 "comment": "A4_2 (ignored)",
1664 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.",
1665 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."
1666 },
1667 {
1668 "comment": "A4_2 (ignored)",
1669 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.",
1670 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."
1671 },
1672 {
1673 "comment": "A4_1 (ignored)",
1674 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u0308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c",
1675 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"
1676 },
1677 {
1678 "comment": "A4_1 (ignored)",
1679 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c",
1680 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"
1681 },
1682 {
1683 "comment": "A4_2 (ignored)",
1684 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a",
1685 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"
1686 },
1687 {
1688 "comment": "A4_2 (ignored)",
1689 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a",
1690 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"
1691 },
1692 {
1693 "comment": "A4_2 (ignored)",
1694 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.",
1695 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."
1696 },
1697 {
1698 "comment": "A4_2 (ignored)",
1699 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.",
1700 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."
1701 },
1702 {
1703 "comment": "A4_1 (ignored); A4_2 (ignored)",
1704 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890A\u03081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
1705 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
1706 },
1707 {
1708 "comment": "A4_1 (ignored); A4_2 (ignored)",
1709 "input": "123456789012345678901234567890123456789012345678901234567890123.1234567890\u00c41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b",
1710 "output": "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"
1711 },
1712 {
1713 "comment": "V7; V3 (ignored)",
1714 "input": "\u2495\u221d\u065f\uda0e\udd26\uff0e-\udb40\udd2f",
1715 "output": null
1716 },
1717 {
1718 "comment": "V7; V3 (ignored)",
1719 "input": "14.\u221d\u065f\uda0e\udd26.-\udb40\udd2f",
1720 "output": null
1721 },
1722 {
1723 "comment": "V7; V3 (ignored)",
1724 "input": "14.xn--7hb713l3v90n.-",
1725 "output": null
1726 },
1727 {
1728 "comment": "V7; V3 (ignored)",
1729 "input": "xn--7hb713lfwbi1311b.-",
1730 "output": null
1731 },
1732 {
1733 "input": "\ua863.\u07cf",
1734 "output": "xn--8c9a.xn--qsb"
1735 },
1736 {
1737 "input": "xn--8c9a.xn--qsb",
1738 "output": "xn--8c9a.xn--qsb"
1739 },
1740 {
1741 "comment": "C2",
1742 "input": "\u200d\u2260\u1899\u226f.\uc1a3-\u1874\u10a0",
1743 "output": null
1744 },
1745 {
1746 "comment": "C2",
1747 "input": "\u200d=\u0338\u1899>\u0338.\u1109\u1169\u11be-\u1874\u10a0",
1748 "output": null
1749 },
1750 {
1751 "comment": "C2",
1752 "input": "\u200d=\u0338\u1899>\u0338.\u1109\u1169\u11be-\u1874\u2d00",
1753 "output": null
1754 },
1755 {
1756 "comment": "C2",
1757 "input": "\u200d\u2260\u1899\u226f.\uc1a3-\u1874\u2d00",
1758 "output": null
1759 },
1760 {
1761 "input": "xn--jbf911clb.xn----p9j493ivi4l",
1762 "output": "xn--jbf911clb.xn----p9j493ivi4l"
1763 },
1764 {
1765 "input": "\u2260\u1899\u226f.\uc1a3-\u1874\u2d00",
1766 "output": "xn--jbf911clb.xn----p9j493ivi4l"
1767 },
1768 {
1769 "input": "=\u0338\u1899>\u0338.\u1109\u1169\u11be-\u1874\u2d00",
1770 "output": "xn--jbf911clb.xn----p9j493ivi4l"
1771 },
1772 {
1773 "input": "=\u0338\u1899>\u0338.\u1109\u1169\u11be-\u1874\u10a0",
1774 "output": "xn--jbf911clb.xn----p9j493ivi4l"
1775 },
1776 {
1777 "input": "\u2260\u1899\u226f.\uc1a3-\u1874\u10a0",
1778 "output": "xn--jbf911clb.xn----p9j493ivi4l"
1779 },
1780 {
1781 "comment": "C2",
1782 "input": "xn--jbf929a90b0b.xn----p9j493ivi4l",
1783 "output": null
1784 },
1785 {
1786 "comment": "V7",
1787 "input": "xn--jbf911clb.xn----6zg521d196p",
1788 "output": null
1789 },
1790 {
1791 "comment": "C2; V7",
1792 "input": "xn--jbf929a90b0b.xn----6zg521d196p",
1793 "output": null
1794 },
1795 {
1796 "comment": "V7",
1797 "input": "\ud97d\udf9c\uff0e\ud803\udfc7\u0fa2\u077d\u0600",
1798 "output": null
1799 },
1800 {
1801 "comment": "V7",
1802 "input": "\ud97d\udf9c\uff0e\ud803\udfc7\u0fa1\u0fb7\u077d\u0600",
1803 "output": null
1804 },
1805 {
1806 "comment": "V7",
1807 "input": "\ud97d\udf9c.\ud803\udfc7\u0fa1\u0fb7\u077d\u0600",
1808 "output": null
1809 },
1810 {
1811 "comment": "V7",
1812 "input": "xn--gw68a.xn--ifb57ev2psc6027m",
1813 "output": null
1814 },
1815 {
1816 "comment": "V6",
1817 "input": "\ud84f\udcd4\u0303.\ud805\udcc2",
1818 "output": null
1819 },
1820 {
1821 "comment": "V6",
1822 "input": "xn--nsa95820a.xn--wz1d",
1823 "output": null
1824 },
1825 {
1826 "comment": "C1; V7",
1827 "input": "\u200c\ud9d4\udfad.\u10b2\ud804\uddc0",
1828 "output": null
1829 },
1830 {
1831 "comment": "C1; V7",
1832 "input": "\u200c\ud9d4\udfad.\u2d12\ud804\uddc0",
1833 "output": null
1834 },
1835 {
1836 "comment": "V7",
1837 "input": "xn--bn95b.xn--9kj2034e",
1838 "output": null
1839 },
1840 {
1841 "comment": "C1; V7",
1842 "input": "xn--0ug15083f.xn--9kj2034e",
1843 "output": null
1844 },
1845 {
1846 "comment": "V7",
1847 "input": "xn--bn95b.xn--qnd6272k",
1848 "output": null
1849 },
1850 {
1851 "comment": "C1; V7",
1852 "input": "xn--0ug15083f.xn--qnd6272k",
1853 "output": null
1854 },
1855 {
1856 "comment": "V7",
1857 "input": "\u7e71\ud805\uddbf\u200d.\uff18\ufe12",
1858 "output": null
1859 },
1860 {
1861 "comment": "A4_2 (ignored)",
1862 "input": "xn--gl0as212a.i.",
1863 "output": "xn--gl0as212a.i."
1864 },
1865 {
1866 "comment": "A4_2 (ignored)",
1867 "input": "\u7e71\ud805\uddbf.i.",
1868 "output": "xn--gl0as212a.i."
1869 },
1870 {
1871 "comment": "A4_2 (ignored)",
1872 "input": "\u7e71\ud805\uddbf.I.",
1873 "output": "xn--gl0as212a.i."
1874 },
1875 {
1876 "comment": "A4_2 (ignored)",
1877 "input": "xn--1ug6928ac48e.i.",
1878 "output": "xn--1ug6928ac48e.i."
1879 },
1880 {
1881 "comment": "A4_2 (ignored)",
1882 "input": "\u7e71\ud805\uddbf\u200d.i.",
1883 "output": "xn--1ug6928ac48e.i."
1884 },
1885 {
1886 "comment": "A4_2 (ignored)",
1887 "input": "\u7e71\ud805\uddbf\u200d.I.",
1888 "output": "xn--1ug6928ac48e.i."
1889 },
1890 {
1891 "comment": "V7",
1892 "input": "xn--gl0as212a.xn--8-o89h",
1893 "output": null
1894 },
1895 {
1896 "comment": "V7",
1897 "input": "xn--1ug6928ac48e.xn--8-o89h",
1898 "output": null
1899 },
1900 {
1901 "comment": "V6; A4_2 (ignored)",
1902 "input": "\udb40\uddbe\uff0e\ud838\udc08",
1903 "output": null
1904 },
1905 {
1906 "comment": "V6; A4_2 (ignored)",
1907 "input": "\udb40\uddbe.\ud838\udc08",
1908 "output": null
1909 },
1910 {
1911 "comment": "V6; A4_2 (ignored)",
1912 "input": ".xn--ph4h",
1913 "output": null
1914 },
1915 {
1916 "comment": "C2",
1917 "input": "\u00df\u06eb\u3002\u200d",
1918 "output": null
1919 },
1920 {
1921 "comment": "C2",
1922 "input": "SS\u06eb\u3002\u200d",
1923 "output": null
1924 },
1925 {
1926 "comment": "C2",
1927 "input": "ss\u06eb\u3002\u200d",
1928 "output": null
1929 },
1930 {
1931 "comment": "C2",
1932 "input": "Ss\u06eb\u3002\u200d",
1933 "output": null
1934 },
1935 {
1936 "comment": "A4_2 (ignored)",
1937 "input": "xn--ss-59d.",
1938 "output": "xn--ss-59d."
1939 },
1940 {
1941 "comment": "A4_2 (ignored)",
1942 "input": "ss\u06eb.",
1943 "output": "xn--ss-59d."
1944 },
1945 {
1946 "comment": "A4_2 (ignored)",
1947 "input": "SS\u06eb.",
1948 "output": "xn--ss-59d."
1949 },
1950 {
1951 "comment": "A4_2 (ignored)",
1952 "input": "Ss\u06eb.",
1953 "output": "xn--ss-59d."
1954 },
1955 {
1956 "comment": "C2",
1957 "input": "xn--ss-59d.xn--1ug",
1958 "output": null
1959 },
1960 {
1961 "comment": "C2",
1962 "input": "xn--zca012a.xn--1ug",
1963 "output": null
1964 },
1965 {
1966 "comment": "C1; V7",
1967 "input": "\udb41\udc35\u200c\u2488\uff0e\udb40\udf87",
1968 "output": null
1969 },
1970 {
1971 "comment": "C1; V7; A4_2 (ignored)",
1972 "input": "\udb41\udc35\u200c1..\udb40\udf87",
1973 "output": null
1974 },
1975 {
1976 "comment": "V7; A4_2 (ignored)",
1977 "input": "xn--1-bs31m..xn--tv36e",
1978 "output": null
1979 },
1980 {
1981 "comment": "C1; V7; A4_2 (ignored)",
1982 "input": "xn--1-rgn37671n..xn--tv36e",
1983 "output": null
1984 },
1985 {
1986 "comment": "V7",
1987 "input": "xn--tshz2001k.xn--tv36e",
1988 "output": null
1989 },
1990 {
1991 "comment": "C1; V7",
1992 "input": "xn--0ug88o47900b.xn--tv36e",
1993 "output": null
1994 },
1995 {
1996 "comment": "V7",
1997 "input": "\udb3c\ude23\u065f\uaab2\u00df\u3002\udaf1\udce7",
1998 "output": null
1999 },
2000 {
2001 "comment": "V7",
2002 "input": "\udb3c\ude23\u065f\uaab2SS\u3002\udaf1\udce7",
2003 "output": null
2004 },
2005 {
2006 "comment": "V7",
2007 "input": "\udb3c\ude23\u065f\uaab2ss\u3002\udaf1\udce7",
2008 "output": null
2009 },
2010 {
2011 "comment": "V7",
2012 "input": "\udb3c\ude23\u065f\uaab2Ss\u3002\udaf1\udce7",
2013 "output": null
2014 },
2015 {
2016 "comment": "V7",
2017 "input": "xn--ss-3xd2839nncy1m.xn--bb79d",
2018 "output": null
2019 },
2020 {
2021 "comment": "V7",
2022 "input": "xn--zca92z0t7n5w96j.xn--bb79d",
2023 "output": null
2024 },
2025 {
2026 "comment": "C1; C2; V7",
2027 "input": "\u0774\u200c\ud83a\udd3f\u3002\ud8b5\ude10\u425c\u200d\ud9be\udd3c",
2028 "output": null
2029 },
2030 {
2031 "comment": "C1; C2; V7",
2032 "input": "\u0774\u200c\ud83a\udd1d\u3002\ud8b5\ude10\u425c\u200d\ud9be\udd3c",
2033 "output": null
2034 },
2035 {
2036 "comment": "V7",
2037 "input": "xn--4pb2977v.xn--z0nt555ukbnv",
2038 "output": null
2039 },
2040 {
2041 "comment": "C1; C2; V7",
2042 "input": "xn--4pb607jjt73a.xn--1ug236ke314donv1a",
2043 "output": null
2044 },
2045 {
2046 "comment": "V6; A4_2 (ignored)",
2047 "input": "\u3164\u094d\u10a0\u17d0.\u180b",
2048 "output": null
2049 },
2050 {
2051 "comment": "V6; A4_2 (ignored)",
2052 "input": "\u1160\u094d\u10a0\u17d0.\u180b",
2053 "output": null
2054 },
2055 {
2056 "comment": "V6; A4_2 (ignored)",
2057 "input": "\u1160\u094d\u2d00\u17d0.\u180b",
2058 "output": null
2059 },
2060 {
2061 "comment": "V6; A4_2 (ignored)",
2062 "input": "xn--n3b445e53p.",
2063 "output": null
2064 },
2065 {
2066 "comment": "V6; A4_2 (ignored)",
2067 "input": "\u3164\u094d\u2d00\u17d0.\u180b",
2068 "output": null
2069 },
2070 {
2071 "comment": "V7; A4_2 (ignored)",
2072 "input": "xn--n3b742bkqf4ty.",
2073 "output": null
2074 },
2075 {
2076 "comment": "V7; A4_2 (ignored)",
2077 "input": "xn--n3b468aoqa89r.",
2078 "output": null
2079 },
2080 {
2081 "comment": "V7; A4_2 (ignored)",
2082 "input": "xn--n3b445e53po6d.",
2083 "output": null
2084 },
2085 {
2086 "comment": "V7; A4_2 (ignored)",
2087 "input": "xn--n3b468azngju2a.",
2088 "output": null
2089 },
2090 {
2091 "comment": "C2; V6",
2092 "input": "\u2763\u200d\uff0e\u09cd\ud807\udc3d\u0612\ua929",
2093 "output": null
2094 },
2095 {
2096 "comment": "C2; V6",
2097 "input": "\u2763\u200d.\u09cd\ud807\udc3d\u0612\ua929",
2098 "output": null
2099 },
2100 {
2101 "comment": "V6",
2102 "input": "xn--pei.xn--0fb32q3w7q2g4d",
2103 "output": null
2104 },
2105 {
2106 "comment": "C2; V6",
2107 "input": "xn--1ugy10a.xn--0fb32q3w7q2g4d",
2108 "output": null
2109 },
2110 {
2111 "comment": "V6",
2112 "input": "\u0349\u3002\ud85e\udc6b",
2113 "output": null
2114 },
2115 {
2116 "comment": "V6",
2117 "input": "xn--nua.xn--bc6k",
2118 "output": null
2119 },
2120 {
2121 "comment": "V6; A4_2 (ignored)",
2122 "input": "\ud807\udc3f\udb40\udd66\uff0e\u1160",
2123 "output": null
2124 },
2125 {
2126 "comment": "V6; A4_2 (ignored)",
2127 "input": "\ud807\udc3f\udb40\udd66.\u1160",
2128 "output": null
2129 },
2130 {
2131 "comment": "V6; A4_2 (ignored)",
2132 "input": "xn--ok3d.",
2133 "output": null
2134 },
2135 {
2136 "comment": "V6; V7",
2137 "input": "xn--ok3d.xn--psd",
2138 "output": null
2139 },
2140 {
2141 "comment": "V6",
2142 "input": "\u850f\uff61\ud807\udc3a",
2143 "output": null
2144 },
2145 {
2146 "comment": "V6",
2147 "input": "\u850f\u3002\ud807\udc3a",
2148 "output": null
2149 },
2150 {
2151 "comment": "V6",
2152 "input": "xn--uy1a.xn--jk3d",
2153 "output": null
2154 },
2155 {
2156 "comment": "V7",
2157 "input": "xn--8g1d12120a.xn--5l6h",
2158 "output": null
2159 },
2160 {
2161 "comment": "V6; V7",
2162 "input": "\ud804\udee7\ua9c02\uff61\u39c9\uda09\udd84",
2163 "output": null
2164 },
2165 {
2166 "comment": "V6; V7",
2167 "input": "\ud804\udee7\ua9c02\u3002\u39c9\uda09\udd84",
2168 "output": null
2169 },
2170 {
2171 "comment": "V6; V7",
2172 "input": "xn--2-5z4eu89y.xn--97l02706d",
2173 "output": null
2174 },
2175 {
2176 "comment": "V7; A4_2 (ignored)",
2177 "input": "\u2938\u03c2\ud8ab\udc40\uff61\uffa0",
2178 "output": null
2179 },
2180 {
2181 "comment": "V7; A4_2 (ignored)",
2182 "input": "\u2938\u03c2\ud8ab\udc40\u3002\u1160",
2183 "output": null
2184 },
2185 {
2186 "comment": "V7; A4_2 (ignored)",
2187 "input": "\u2938\u03a3\ud8ab\udc40\u3002\u1160",
2188 "output": null
2189 },
2190 {
2191 "comment": "V7; A4_2 (ignored)",
2192 "input": "\u2938\u03c3\ud8ab\udc40\u3002\u1160",
2193 "output": null
2194 },
2195 {
2196 "comment": "V7; A4_2 (ignored)",
2197 "input": "xn--4xa192qmp03d.",
2198 "output": null
2199 },
2200 {
2201 "comment": "V7; A4_2 (ignored)",
2202 "input": "xn--3xa392qmp03d.",
2203 "output": null
2204 },
2205 {
2206 "comment": "V7; A4_2 (ignored)",
2207 "input": "\u2938\u03a3\ud8ab\udc40\uff61\uffa0",
2208 "output": null
2209 },
2210 {
2211 "comment": "V7; A4_2 (ignored)",
2212 "input": "\u2938\u03c3\ud8ab\udc40\uff61\uffa0",
2213 "output": null
2214 },
2215 {
2216 "comment": "V7",
2217 "input": "xn--4xa192qmp03d.xn--psd",
2218 "output": null
2219 },
2220 {
2221 "comment": "V7",
2222 "input": "xn--3xa392qmp03d.xn--psd",
2223 "output": null
2224 },
2225 {
2226 "comment": "V7",
2227 "input": "xn--4xa192qmp03d.xn--cl7c",
2228 "output": null
2229 },
2230 {
2231 "comment": "V7",
2232 "input": "xn--3xa392qmp03d.xn--cl7c",
2233 "output": null
2234 },
2235 {
2236 "comment": "C2; V6; V7",
2237 "input": "\u200d\udb7d\udc56\udb40\udc50\uff0e\u05bd\ud826\udfb0\ua85d\ud800\udee1",
2238 "output": null
2239 },
2240 {
2241 "comment": "C2; V6; V7",
2242 "input": "\u200d\udb7d\udc56\udb40\udc50.\u05bd\ud826\udfb0\ua85d\ud800\udee1",
2243 "output": null
2244 },
2245 {
2246 "comment": "V6; V7",
2247 "input": "xn--b726ey18m.xn--ldb8734fg0qcyzzg",
2248 "output": null
2249 },
2250 {
2251 "comment": "C2; V6; V7",
2252 "input": "xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg",
2253 "output": null
2254 },
2255 {
2256 "comment": "V7; A4_2 (ignored)",
2257 "input": "\u3002\udbcc\ude35\u03c2\ud8c2\udc07\u3002\ud802\udf88",
2258 "output": null
2259 },
2260 {
2261 "comment": "V7; A4_2 (ignored)",
2262 "input": "\u3002\udbcc\ude35\u03a3\ud8c2\udc07\u3002\ud802\udf88",
2263 "output": null
2264 },
2265 {
2266 "comment": "V7; A4_2 (ignored)",
2267 "input": "\u3002\udbcc\ude35\u03c3\ud8c2\udc07\u3002\ud802\udf88",
2268 "output": null
2269 },
2270 {
2271 "comment": "V7; A4_2 (ignored)",
2272 "input": ".xn--4xa68573c7n64d.xn--f29c",
2273 "output": null
2274 },
2275 {
2276 "comment": "V7; A4_2 (ignored)",
2277 "input": ".xn--3xa88573c7n64d.xn--f29c",
2278 "output": null
2279 },
2280 {
2281 "comment": "V7",
2282 "input": "\u2489\udb40\ude93\u2260\uff61\u10bf\u2b23\u10a8",
2283 "output": null
2284 },
2285 {
2286 "comment": "V7",
2287 "input": "\u2489\udb40\ude93=\u0338\uff61\u10bf\u2b23\u10a8",
2288 "output": null
2289 },
2290 {
2291 "comment": "V7",
2292 "input": "2.\udb40\ude93\u2260\u3002\u10bf\u2b23\u10a8",
2293 "output": null
2294 },
2295 {
2296 "comment": "V7",
2297 "input": "2.\udb40\ude93=\u0338\u3002\u10bf\u2b23\u10a8",
2298 "output": null
2299 },
2300 {
2301 "comment": "V7",
2302 "input": "2.\udb40\ude93=\u0338\u3002\u2d1f\u2b23\u2d08",
2303 "output": null
2304 },
2305 {
2306 "comment": "V7",
2307 "input": "2.\udb40\ude93\u2260\u3002\u2d1f\u2b23\u2d08",
2308 "output": null
2309 },
2310 {
2311 "comment": "V7",
2312 "input": "2.xn--1chz4101l.xn--45iz7d6b",
2313 "output": null
2314 },
2315 {
2316 "comment": "V7",
2317 "input": "\u2489\udb40\ude93=\u0338\uff61\u2d1f\u2b23\u2d08",
2318 "output": null
2319 },
2320 {
2321 "comment": "V7",
2322 "input": "\u2489\udb40\ude93\u2260\uff61\u2d1f\u2b23\u2d08",
2323 "output": null
2324 },
2325 {
2326 "comment": "V7",
2327 "input": "xn--1ch07f91401d.xn--45iz7d6b",
2328 "output": null
2329 },
2330 {
2331 "comment": "V7",
2332 "input": "2.xn--1chz4101l.xn--gnd9b297j",
2333 "output": null
2334 },
2335 {
2336 "comment": "V7",
2337 "input": "xn--1ch07f91401d.xn--gnd9b297j",
2338 "output": null
2339 },
2340 {
2341 "input": "\ud83a\udd37.\ud802\udf90\ud83a\udc81\ud803\ude60\u0624",
2342 "output": "xn--ve6h.xn--jgb1694kz0b2176a"
2343 },
2344 {
2345 "input": "\ud83a\udd37.\ud802\udf90\ud83a\udc81\ud803\ude60\u0648\u0654",
2346 "output": "xn--ve6h.xn--jgb1694kz0b2176a"
2347 },
2348 {
2349 "input": "\ud83a\udd15.\ud802\udf90\ud83a\udc81\ud803\ude60\u0648\u0654",
2350 "output": "xn--ve6h.xn--jgb1694kz0b2176a"
2351 },
2352 {
2353 "input": "\ud83a\udd15.\ud802\udf90\ud83a\udc81\ud803\ude60\u0624",
2354 "output": "xn--ve6h.xn--jgb1694kz0b2176a"
2355 },
2356 {
2357 "input": "xn--ve6h.xn--jgb1694kz0b2176a",
2358 "output": "xn--ve6h.xn--jgb1694kz0b2176a"
2359 },
2360 {
2361 "comment": "V7; V3 (ignored); U1 (ignored)",
2362 "input": "-\udb40\ude56\ua867\uff0e\udb40\ude82\ud8dc\udd83\ud83c\udd09",
2363 "output": null
2364 },
2365 {
2366 "comment": "V7; V3 (ignored); U1 (ignored)",
2367 "input": "-\udb40\ude56\ua867.\udb40\ude82\ud8dc\udd838,",
2368 "output": null
2369 },
2370 {
2371 "comment": "V7; V3 (ignored); U1 (ignored)",
2372 "input": "xn----hg4ei0361g.xn--8,-k362evu488a",
2373 "output": null
2374 },
2375 {
2376 "comment": "V7; V3 (ignored)",
2377 "input": "xn----hg4ei0361g.xn--207ht163h7m94c",
2378 "output": null
2379 },
2380 {
2381 "comment": "C1; V6",
2382 "input": "\u200c\uff61\u0354",
2383 "output": null
2384 },
2385 {
2386 "comment": "C1; V6",
2387 "input": "\u200c\u3002\u0354",
2388 "output": null
2389 },
2390 {
2391 "comment": "V6; A4_2 (ignored)",
2392 "input": ".xn--yua",
2393 "output": null
2394 },
2395 {
2396 "comment": "C1; V6",
2397 "input": "xn--0ug.xn--yua",
2398 "output": null
2399 },
2400 {
2401 "input": "\ud83a\udd25\udb40\udd6e\uff0e\u1844\u10ae",
2402 "output": "xn--de6h.xn--37e857h"
2403 },
2404 {
2405 "input": "\ud83a\udd25\udb40\udd6e.\u1844\u10ae",
2406 "output": "xn--de6h.xn--37e857h"
2407 },
2408 {
2409 "input": "\ud83a\udd25\udb40\udd6e.\u1844\u2d0e",
2410 "output": "xn--de6h.xn--37e857h"
2411 },
2412 {
2413 "input": "\ud83a\udd03\udb40\udd6e.\u1844\u10ae",
2414 "output": "xn--de6h.xn--37e857h"
2415 },
2416 {
2417 "input": "\ud83a\udd03\udb40\udd6e.\u1844\u2d0e",
2418 "output": "xn--de6h.xn--37e857h"
2419 },
2420 {
2421 "input": "xn--de6h.xn--37e857h",
2422 "output": "xn--de6h.xn--37e857h"
2423 },
2424 {
2425 "input": "\ud83a\udd25.\u1844\u2d0e",
2426 "output": "xn--de6h.xn--37e857h"
2427 },
2428 {
2429 "input": "\ud83a\udd03.\u1844\u10ae",
2430 "output": "xn--de6h.xn--37e857h"
2431 },
2432 {
2433 "input": "\ud83a\udd03.\u1844\u2d0e",
2434 "output": "xn--de6h.xn--37e857h"
2435 },
2436 {
2437 "input": "\ud83a\udd25\udb40\udd6e\uff0e\u1844\u2d0e",
2438 "output": "xn--de6h.xn--37e857h"
2439 },
2440 {
2441 "input": "\ud83a\udd03\udb40\udd6e\uff0e\u1844\u10ae",
2442 "output": "xn--de6h.xn--37e857h"
2443 },
2444 {
2445 "input": "\ud83a\udd03\udb40\udd6e\uff0e\u1844\u2d0e",
2446 "output": "xn--de6h.xn--37e857h"
2447 },
2448 {
2449 "comment": "V7",
2450 "input": "xn--de6h.xn--mnd799a",
2451 "output": null
2452 },
2453 {
2454 "input": "\ud83a\udd25.\u1844\u10ae",
2455 "output": "xn--de6h.xn--37e857h"
2456 },
2457 {
2458 "comment": "V6; V7",
2459 "input": "\u0fa4\ud986\udd2f\uff0e\ud835\udfed\u10bb",
2460 "output": null
2461 },
2462 {
2463 "comment": "V6; V7",
2464 "input": "\u0fa4\ud986\udd2f.1\u10bb",
2465 "output": null
2466 },
2467 {
2468 "comment": "V6; V7",
2469 "input": "\u0fa4\ud986\udd2f.1\u2d1b",
2470 "output": null
2471 },
2472 {
2473 "comment": "V6; V7",
2474 "input": "xn--0fd40533g.xn--1-tws",
2475 "output": null
2476 },
2477 {
2478 "comment": "V6; V7",
2479 "input": "\u0fa4\ud986\udd2f\uff0e\ud835\udfed\u2d1b",
2480 "output": null
2481 },
2482 {
2483 "comment": "V6; V7",
2484 "input": "xn--0fd40533g.xn--1-q1g",
2485 "output": null
2486 },
2487 {
2488 "comment": "V7",
2489 "input": "\u03c2\ud9d5\udf0c\uff18.\ud83a\udf64",
2490 "output": null
2491 },
2492 {
2493 "comment": "V7",
2494 "input": "\u03c2\ud9d5\udf0c8.\ud83a\udf64",
2495 "output": null
2496 },
2497 {
2498 "comment": "V7",
2499 "input": "\u03a3\ud9d5\udf0c8.\ud83a\udf64",
2500 "output": null
2501 },
2502 {
2503 "comment": "V7",
2504 "input": "\u03c3\ud9d5\udf0c8.\ud83a\udf64",
2505 "output": null
2506 },
2507 {
2508 "comment": "V7",
2509 "input": "xn--8-zmb14974n.xn--su6h",
2510 "output": null
2511 },
2512 {
2513 "comment": "V7",
2514 "input": "xn--8-xmb44974n.xn--su6h",
2515 "output": null
2516 },
2517 {
2518 "comment": "V7",
2519 "input": "\u03a3\ud9d5\udf0c\uff18.\ud83a\udf64",
2520 "output": null
2521 },
2522 {
2523 "comment": "V7",
2524 "input": "\u03c3\ud9d5\udf0c\uff18.\ud83a\udf64",
2525 "output": null
2526 },
2527 {
2528 "comment": "C1; V3 (ignored)",
2529 "input": "\u200c\uae03.\u69b6-",
2530 "output": null
2531 },
2532 {
2533 "comment": "C1; V3 (ignored)",
2534 "input": "\u200c\u1100\u1173\u11b2.\u69b6-",
2535 "output": null
2536 },
2537 {
2538 "comment": "V3 (ignored)",
2539 "input": "xn--ej0b.xn----d87b",
2540 "output": "xn--ej0b.xn----d87b"
2541 },
2542 {
2543 "comment": "C1; V3 (ignored)",
2544 "input": "xn--0ug3307c.xn----d87b",
2545 "output": null
2546 },
2547 {
2548 "comment": "V6",
2549 "input": "\ub253\u6cd3\ud833\udd7d.\u09cd\u200d",
2550 "output": null
2551 },
2552 {
2553 "comment": "V6",
2554 "input": "\u1102\u1170\u11be\u6cd3\ud833\udd7d.\u09cd\u200d",
2555 "output": null
2556 },
2557 {
2558 "comment": "V6",
2559 "input": "xn--lwwp69lqs7m.xn--b7b",
2560 "output": null
2561 },
2562 {
2563 "comment": "V6",
2564 "input": "xn--lwwp69lqs7m.xn--b7b605i",
2565 "output": null
2566 },
2567 {
2568 "comment": "V6",
2569 "input": "\u1b44\uff0e\u1baa-\u226e\u2260",
2570 "output": null
2571 },
2572 {
2573 "comment": "V6",
2574 "input": "\u1b44\uff0e\u1baa-<\u0338=\u0338",
2575 "output": null
2576 },
2577 {
2578 "comment": "V6",
2579 "input": "\u1b44.\u1baa-\u226e\u2260",
2580 "output": null
2581 },
2582 {
2583 "comment": "V6",
2584 "input": "\u1b44.\u1baa-<\u0338=\u0338",
2585 "output": null
2586 },
2587 {
2588 "comment": "V6",
2589 "input": "xn--1uf.xn----nmlz65aub",
2590 "output": null
2591 },
2592 {
2593 "comment": "V6",
2594 "input": "\u1bf3\u10b1\u115f\uff0e\ud804\udd34\u2132",
2595 "output": null
2596 },
2597 {
2598 "comment": "V6",
2599 "input": "\u1bf3\u10b1\u115f.\ud804\udd34\u2132",
2600 "output": null
2601 },
2602 {
2603 "comment": "V6",
2604 "input": "\u1bf3\u2d11\u115f.\ud804\udd34\u214e",
2605 "output": null
2606 },
2607 {
2608 "comment": "V6",
2609 "input": "\u1bf3\u10b1\u115f.\ud804\udd34\u214e",
2610 "output": null
2611 },
2612 {
2613 "comment": "V6",
2614 "input": "xn--1zf224e.xn--73g3065g",
2615 "output": null
2616 },
2617 {
2618 "comment": "V6",
2619 "input": "\u1bf3\u2d11\u115f\uff0e\ud804\udd34\u214e",
2620 "output": null
2621 },
2622 {
2623 "comment": "V6",
2624 "input": "\u1bf3\u10b1\u115f\uff0e\ud804\udd34\u214e",
2625 "output": null
2626 },
2627 {
2628 "comment": "V6; V7",
2629 "input": "xn--pnd26a55x.xn--73g3065g",
2630 "output": null
2631 },
2632 {
2633 "comment": "V6; V7",
2634 "input": "xn--osd925cvyn.xn--73g3065g",
2635 "output": null
2636 },
2637 {
2638 "comment": "V6; V7",
2639 "input": "xn--pnd26a55x.xn--f3g7465g",
2640 "output": null
2641 },
2642 {
2643 "comment": "V7",
2644 "input": "\u10a9\u7315\udba5\udeeb\u226e\uff0e\ufe12",
2645 "output": null
2646 },
2647 {
2648 "comment": "V7",
2649 "input": "\u10a9\u7315\udba5\udeeb<\u0338\uff0e\ufe12",
2650 "output": null
2651 },
2652 {
2653 "comment": "V7; A4_2 (ignored)",
2654 "input": "\u10a9\u7315\udba5\udeeb\u226e.\u3002",
2655 "output": null
2656 },
2657 {
2658 "comment": "V7; A4_2 (ignored)",
2659 "input": "\u10a9\u7315\udba5\udeeb<\u0338.\u3002",
2660 "output": null
2661 },
2662 {
2663 "comment": "V7; A4_2 (ignored)",
2664 "input": "\u2d09\u7315\udba5\udeeb<\u0338.\u3002",
2665 "output": null
2666 },
2667 {
2668 "comment": "V7; A4_2 (ignored)",
2669 "input": "\u2d09\u7315\udba5\udeeb\u226e.\u3002",
2670 "output": null
2671 },
2672 {
2673 "comment": "V7; A4_2 (ignored)",
2674 "input": "xn--gdh892bbz0d5438s..",
2675 "output": null
2676 },
2677 {
2678 "comment": "V7",
2679 "input": "\u2d09\u7315\udba5\udeeb<\u0338\uff0e\ufe12",
2680 "output": null
2681 },
2682 {
2683 "comment": "V7",
2684 "input": "\u2d09\u7315\udba5\udeeb\u226e\uff0e\ufe12",
2685 "output": null
2686 },
2687 {
2688 "comment": "V7",
2689 "input": "xn--gdh892bbz0d5438s.xn--y86c",
2690 "output": null
2691 },
2692 {
2693 "comment": "V7; A4_2 (ignored)",
2694 "input": "xn--hnd212gz32d54x5r..",
2695 "output": null
2696 },
2697 {
2698 "comment": "V7",
2699 "input": "xn--hnd212gz32d54x5r.xn--y86c",
2700 "output": null
2701 },
2702 {
2703 "comment": "C1; V3 (ignored)",
2704 "input": "\u00c5\ub444-\uff0e\u200c",
2705 "output": null
2706 },
2707 {
2708 "comment": "C1; V3 (ignored)",
2709 "input": "A\u030a\u1103\u116d\u11b7-\uff0e\u200c",
2710 "output": null
2711 },
2712 {
2713 "comment": "C1; V3 (ignored)",
2714 "input": "\u00c5\ub444-.\u200c",
2715 "output": null
2716 },
2717 {
2718 "comment": "C1; V3 (ignored)",
2719 "input": "A\u030a\u1103\u116d\u11b7-.\u200c",
2720 "output": null
2721 },
2722 {
2723 "comment": "C1; V3 (ignored)",
2724 "input": "a\u030a\u1103\u116d\u11b7-.\u200c",
2725 "output": null
2726 },
2727 {
2728 "comment": "C1; V3 (ignored)",
2729 "input": "\u00e5\ub444-.\u200c",
2730 "output": null
2731 },
2732 {
2733 "comment": "V3 (ignored); A4_2 (ignored)",
2734 "input": "xn----1fa1788k.",
2735 "output": "xn----1fa1788k."
2736 },
2737 {
2738 "comment": "C1; V3 (ignored)",
2739 "input": "xn----1fa1788k.xn--0ug",
2740 "output": null
2741 },
2742 {
2743 "comment": "C1; V3 (ignored)",
2744 "input": "a\u030a\u1103\u116d\u11b7-\uff0e\u200c",
2745 "output": null
2746 },
2747 {
2748 "comment": "C1; V3 (ignored)",
2749 "input": "\u00e5\ub444-\uff0e\u200c",
2750 "output": null
2751 },
2752 {
2753 "comment": "C1; C2; V6; V7",
2754 "input": "\ub8f1\u200d\ud880\udf68\u200c\u3002\ud836\ude16\ufe12",
2755 "output": null
2756 },
2757 {
2758 "comment": "C1; C2; V6; V7",
2759 "input": "\u1105\u116e\u11b0\u200d\ud880\udf68\u200c\u3002\ud836\ude16\ufe12",
2760 "output": null
2761 },
2762 {
2763 "comment": "C1; C2; V6; A4_2 (ignored)",
2764 "input": "\ub8f1\u200d\ud880\udf68\u200c\u3002\ud836\ude16\u3002",
2765 "output": null
2766 },
2767 {
2768 "comment": "C1; C2; V6; A4_2 (ignored)",
2769 "input": "\u1105\u116e\u11b0\u200d\ud880\udf68\u200c\u3002\ud836\ude16\u3002",
2770 "output": null
2771 },
2772 {
2773 "comment": "V6; A4_2 (ignored)",
2774 "input": "xn--ct2b0738h.xn--772h.",
2775 "output": null
2776 },
2777 {
2778 "comment": "C1; C2; V6; A4_2 (ignored)",
2779 "input": "xn--0ugb3358ili2v.xn--772h.",
2780 "output": null
2781 },
2782 {
2783 "comment": "V6; V7",
2784 "input": "xn--ct2b0738h.xn--y86cl899a",
2785 "output": null
2786 },
2787 {
2788 "comment": "C1; C2; V6; V7",
2789 "input": "xn--0ugb3358ili2v.xn--y86cl899a",
2790 "output": null
2791 },
2792 {
2793 "comment": "V6; V7; U1 (ignored)",
2794 "input": "\ud83c\udd04\uff0e\u1cdc\u2488\u00df",
2795 "output": null
2796 },
2797 {
2798 "comment": "V6; U1 (ignored)",
2799 "input": "3,.\u1cdc1.\u00df",
2800 "output": null
2801 },
2802 {
2803 "comment": "V6; U1 (ignored)",
2804 "input": "3,.\u1cdc1.SS",
2805 "output": null
2806 },
2807 {
2808 "comment": "V6; U1 (ignored)",
2809 "input": "3,.\u1cdc1.ss",
2810 "output": null
2811 },
2812 {
2813 "comment": "V6; U1 (ignored)",
2814 "input": "3,.\u1cdc1.Ss",
2815 "output": null
2816 },
2817 {
2818 "comment": "V6; U1 (ignored)",
2819 "input": "3,.xn--1-43l.ss",
2820 "output": null
2821 },
2822 {
2823 "comment": "V6; U1 (ignored)",
2824 "input": "3,.xn--1-43l.xn--zca",
2825 "output": null
2826 },
2827 {
2828 "comment": "V6; V7; U1 (ignored)",
2829 "input": "\ud83c\udd04\uff0e\u1cdc\u2488SS",
2830 "output": null
2831 },
2832 {
2833 "comment": "V6; V7; U1 (ignored)",
2834 "input": "\ud83c\udd04\uff0e\u1cdc\u2488ss",
2835 "output": null
2836 },
2837 {
2838 "comment": "V6; V7; U1 (ignored)",
2839 "input": "\ud83c\udd04\uff0e\u1cdc\u2488Ss",
2840 "output": null
2841 },
2842 {
2843 "comment": "V6; V7; U1 (ignored)",
2844 "input": "3,.xn--ss-k1r094b",
2845 "output": null
2846 },
2847 {
2848 "comment": "V6; V7; U1 (ignored)",
2849 "input": "3,.xn--zca344lmif",
2850 "output": null
2851 },
2852 {
2853 "comment": "V6; V7",
2854 "input": "xn--x07h.xn--ss-k1r094b",
2855 "output": null
2856 },
2857 {
2858 "comment": "V6; V7",
2859 "input": "xn--x07h.xn--zca344lmif",
2860 "output": null
2861 },
2862 {
2863 "comment": "C2; V6",
2864 "input": "\u1dfd\u103a\u094d\uff0e\u2260\u200d\u31db",
2865 "output": null
2866 },
2867 {
2868 "comment": "C2; V6",
2869 "input": "\u103a\u094d\u1dfd\uff0e\u2260\u200d\u31db",
2870 "output": null
2871 },
2872 {
2873 "comment": "C2; V6",
2874 "input": "\u103a\u094d\u1dfd\uff0e=\u0338\u200d\u31db",
2875 "output": null
2876 },
2877 {
2878 "comment": "C2; V6",
2879 "input": "\u103a\u094d\u1dfd.\u2260\u200d\u31db",
2880 "output": null
2881 },
2882 {
2883 "comment": "C2; V6",
2884 "input": "\u103a\u094d\u1dfd.=\u0338\u200d\u31db",
2885 "output": null
2886 },
2887 {
2888 "comment": "V6",
2889 "input": "xn--n3b956a9zm.xn--1ch912d",
2890 "output": null
2891 },
2892 {
2893 "comment": "C2; V6",
2894 "input": "xn--n3b956a9zm.xn--1ug63gz5w",
2895 "output": null
2896 },
2897 {
2898 "comment": "V6; V7; V3 (ignored)",
2899 "input": "\u1bf3.-\u900b\ud98e\uddad\udb25\ude6e",
2900 "output": null
2901 },
2902 {
2903 "comment": "V6; V7; V3 (ignored)",
2904 "input": "xn--1zf.xn----483d46987byr50b",
2905 "output": null
2906 },
2907 {
2908 "input": "xn--9ob.xn--4xa",
2909 "output": "xn--9ob.xn--4xa"
2910 },
2911 {
2912 "input": "\u0756.\u03c3",
2913 "output": "xn--9ob.xn--4xa"
2914 },
2915 {
2916 "input": "\u0756.\u03a3",
2917 "output": "xn--9ob.xn--4xa"
2918 },
2919 {
2920 "comment": "V7",
2921 "input": "xn--9ob.xn--4xa380e",
2922 "output": null
2923 },
2924 {
2925 "comment": "C2; V7",
2926 "input": "xn--9ob.xn--4xa380ebol",
2927 "output": null
2928 },
2929 {
2930 "comment": "C2; V7",
2931 "input": "xn--9ob.xn--3xa580ebol",
2932 "output": null
2933 },
2934 {
2935 "comment": "V7",
2936 "input": "xn--9ob.xn--4xa574u",
2937 "output": null
2938 },
2939 {
2940 "comment": "C2; V7",
2941 "input": "xn--9ob.xn--4xa795lq2l",
2942 "output": null
2943 },
2944 {
2945 "comment": "C2; V7",
2946 "input": "xn--9ob.xn--3xa995lq2l",
2947 "output": null
2948 },
2949 {
2950 "comment": "C2; V7",
2951 "input": "\u1846\u10a3\uff61\udb3a\udca7\u0315\u200d\u200d",
2952 "output": null
2953 },
2954 {
2955 "comment": "C2; V7",
2956 "input": "\u1846\u10a3\u3002\udb3a\udca7\u0315\u200d\u200d",
2957 "output": null
2958 },
2959 {
2960 "comment": "C2; V7",
2961 "input": "\u1846\u2d03\u3002\udb3a\udca7\u0315\u200d\u200d",
2962 "output": null
2963 },
2964 {
2965 "comment": "V7",
2966 "input": "xn--57e237h.xn--5sa98523p",
2967 "output": null
2968 },
2969 {
2970 "comment": "C2; V7",
2971 "input": "xn--57e237h.xn--5sa649la993427a",
2972 "output": null
2973 },
2974 {
2975 "comment": "C2; V7",
2976 "input": "\u1846\u2d03\uff61\udb3a\udca7\u0315\u200d\u200d",
2977 "output": null
2978 },
2979 {
2980 "comment": "V7",
2981 "input": "xn--bnd320b.xn--5sa98523p",
2982 "output": null
2983 },
2984 {
2985 "comment": "C2; V7",
2986 "input": "xn--bnd320b.xn--5sa649la993427a",
2987 "output": null
2988 },
2989 {
2990 "comment": "V6; V7",
2991 "input": "\ud838\udc28\uff61\u1b44\uda45\udee8\ud838\udf87",
2992 "output": null
2993 },
2994 {
2995 "comment": "V6; V7",
2996 "input": "\ud838\udc28\u3002\u1b44\uda45\udee8\ud838\udf87",
2997 "output": null
2998 },
2999 {
3000 "comment": "V6; V7",
3001 "input": "xn--mi4h.xn--1uf6843smg20c",
3002 "output": null
3003 },
3004 {
3005 "comment": "V7",
3006 "input": "\u189b\udb60\udd5f\u00df.\u1327",
3007 "output": null
3008 },
3009 {
3010 "comment": "V7",
3011 "input": "\u189b\udb60\udd5fSS.\u1327",
3012 "output": null
3013 },
3014 {
3015 "comment": "V7",
3016 "input": "\u189b\udb60\udd5fss.\u1327",
3017 "output": null
3018 },
3019 {
3020 "comment": "V7",
3021 "input": "\u189b\udb60\udd5fSs.\u1327",
3022 "output": null
3023 },
3024 {
3025 "comment": "V7",
3026 "input": "xn--ss-7dp66033t.xn--p5d",
3027 "output": null
3028 },
3029 {
3030 "comment": "V7",
3031 "input": "xn--zca562jc642x.xn--p5d",
3032 "output": null
3033 },
3034 {
3035 "comment": "C1; V7",
3036 "input": "\u2b92\u200c.\ud909\ude97\u200c",
3037 "output": null
3038 },
3039 {
3040 "comment": "V7",
3041 "input": "xn--b9i.xn--5p9y",
3042 "output": null
3043 },
3044 {
3045 "comment": "C1; V7",
3046 "input": "xn--0ugx66b.xn--0ugz2871c",
3047 "output": null
3048 },
3049 {
3050 "comment": "V6; V7",
3051 "input": "\u226f\ud805\udf2b\udb42\udf47.\u1734\ud909\udfa4\ud804\udf6c\u18a7",
3052 "output": null
3053 },
3054 {
3055 "comment": "V6; V7",
3056 "input": ">\u0338\ud805\udf2b\udb42\udf47.\u1734\ud909\udfa4\ud804\udf6c\u18a7",
3057 "output": null
3058 },
3059 {
3060 "comment": "V6; V7",
3061 "input": "xn--hdhx157g68o0g.xn--c0e65eu616c34o7a",
3062 "output": null
3063 },
3064 {
3065 "input": "\u00df\uff61\ud800\udef3\u10ac\u0fb8",
3066 "output": "xn--zca.xn--lgd921mvv0m"
3067 },
3068 {
3069 "input": "\u00df\u3002\ud800\udef3\u10ac\u0fb8",
3070 "output": "xn--zca.xn--lgd921mvv0m"
3071 },
3072 {
3073 "input": "\u00df\u3002\ud800\udef3\u2d0c\u0fb8",
3074 "output": "xn--zca.xn--lgd921mvv0m"
3075 },
3076 {
3077 "input": "SS\u3002\ud800\udef3\u10ac\u0fb8",
3078 "output": "ss.xn--lgd921mvv0m"
3079 },
3080 {
3081 "input": "ss\u3002\ud800\udef3\u2d0c\u0fb8",
3082 "output": "ss.xn--lgd921mvv0m"
3083 },
3084 {
3085 "input": "Ss\u3002\ud800\udef3\u10ac\u0fb8",
3086 "output": "ss.xn--lgd921mvv0m"
3087 },
3088 {
3089 "input": "ss.xn--lgd921mvv0m",
3090 "output": "ss.xn--lgd921mvv0m"
3091 },
3092 {
3093 "input": "ss.\ud800\udef3\u2d0c\u0fb8",
3094 "output": "ss.xn--lgd921mvv0m"
3095 },
3096 {
3097 "input": "SS.\ud800\udef3\u10ac\u0fb8",
3098 "output": "ss.xn--lgd921mvv0m"
3099 },
3100 {
3101 "input": "Ss.\ud800\udef3\u10ac\u0fb8",
3102 "output": "ss.xn--lgd921mvv0m"
3103 },
3104 {
3105 "input": "xn--zca.xn--lgd921mvv0m",
3106 "output": "xn--zca.xn--lgd921mvv0m"
3107 },
3108 {
3109 "input": "\u00df.\ud800\udef3\u2d0c\u0fb8",
3110 "output": "xn--zca.xn--lgd921mvv0m"
3111 },
3112 {
3113 "input": "\u00df\uff61\ud800\udef3\u2d0c\u0fb8",
3114 "output": "xn--zca.xn--lgd921mvv0m"
3115 },
3116 {
3117 "input": "SS\uff61\ud800\udef3\u10ac\u0fb8",
3118 "output": "ss.xn--lgd921mvv0m"
3119 },
3120 {
3121 "input": "ss\uff61\ud800\udef3\u2d0c\u0fb8",
3122 "output": "ss.xn--lgd921mvv0m"
3123 },
3124 {
3125 "input": "Ss\uff61\ud800\udef3\u10ac\u0fb8",
3126 "output": "ss.xn--lgd921mvv0m"
3127 },
3128 {
3129 "comment": "V7",
3130 "input": "ss.xn--lgd10cu829c",
3131 "output": null
3132 },
3133 {
3134 "comment": "V7",
3135 "input": "xn--zca.xn--lgd10cu829c",
3136 "output": null
3137 },
3138 {
3139 "comment": "V6; V7",
3140 "input": "\u1a5a\ud82e\udd9d\u0c4d\u3002\ud829\udf6c\ud835\udff5",
3141 "output": null
3142 },
3143 {
3144 "comment": "V6; V7",
3145 "input": "\u1a5a\ud82e\udd9d\u0c4d\u3002\ud829\udf6c9",
3146 "output": null
3147 },
3148 {
3149 "comment": "V6; V7",
3150 "input": "xn--lqc703ebm93a.xn--9-000p",
3151 "output": null
3152 },
3153 {
3154 "comment": "V6; V7; V3 (ignored)",
3155 "input": "\u1856\uff61\u031f\ud91d\udee8\u0b82-",
3156 "output": null
3157 },
3158 {
3159 "comment": "V6; V7; V3 (ignored)",
3160 "input": "\u1856\u3002\u031f\ud91d\udee8\u0b82-",
3161 "output": null
3162 },
3163 {
3164 "comment": "V6; V7; V3 (ignored)",
3165 "input": "xn--m8e.xn----mdb555dkk71m",
3166 "output": null
3167 },
3168 {
3169 "comment": "V6; V7",
3170 "input": "\u0596\u10ab\uff0e\ud835\udff3\u226f\ufe12\ufe0a",
3171 "output": null
3172 },
3173 {
3174 "comment": "V6; V7",
3175 "input": "\u0596\u10ab\uff0e\ud835\udff3>\u0338\ufe12\ufe0a",
3176 "output": null
3177 },
3178 {
3179 "comment": "V6; A4_2 (ignored)",
3180 "input": "\u0596\u10ab.7\u226f\u3002\ufe0a",
3181 "output": null
3182 },
3183 {
3184 "comment": "V6; A4_2 (ignored)",
3185 "input": "\u0596\u10ab.7>\u0338\u3002\ufe0a",
3186 "output": null
3187 },
3188 {
3189 "comment": "V6; A4_2 (ignored)",
3190 "input": "\u0596\u2d0b.7>\u0338\u3002\ufe0a",
3191 "output": null
3192 },
3193 {
3194 "comment": "V6; A4_2 (ignored)",
3195 "input": "\u0596\u2d0b.7\u226f\u3002\ufe0a",
3196 "output": null
3197 },
3198 {
3199 "comment": "V6; A4_2 (ignored)",
3200 "input": "xn--hcb613r.xn--7-pgo.",
3201 "output": null
3202 },
3203 {
3204 "comment": "V6; V7",
3205 "input": "\u0596\u2d0b\uff0e\ud835\udff3>\u0338\ufe12\ufe0a",
3206 "output": null
3207 },
3208 {
3209 "comment": "V6; V7",
3210 "input": "\u0596\u2d0b\uff0e\ud835\udff3\u226f\ufe12\ufe0a",
3211 "output": null
3212 },
3213 {
3214 "comment": "V6; V7",
3215 "input": "xn--hcb613r.xn--7-pgoy530h",
3216 "output": null
3217 },
3218 {
3219 "comment": "V6; V7; A4_2 (ignored)",
3220 "input": "xn--hcb887c.xn--7-pgo.",
3221 "output": null
3222 },
3223 {
3224 "comment": "V6; V7",
3225 "input": "xn--hcb887c.xn--7-pgoy530h",
3226 "output": null
3227 },
3228 {
3229 "comment": "V7; U1 (ignored)",
3230 "input": "\ud83c\udd07\u4f10\ufe12.\ud831\ude5a\ua8c4",
3231 "output": null
3232 },
3233 {
3234 "comment": "V7; U1 (ignored); A4_2 (ignored)",
3235 "input": "6,\u4f10\u3002.\ud831\ude5a\ua8c4",
3236 "output": null
3237 },
3238 {
3239 "comment": "V7; U1 (ignored); A4_2 (ignored)",
3240 "input": "xn--6,-7i3c..xn--0f9ao925c",
3241 "output": null
3242 },
3243 {
3244 "comment": "V7; U1 (ignored)",
3245 "input": "xn--6,-7i3cj157d.xn--0f9ao925c",
3246 "output": null
3247 },
3248 {
3249 "comment": "V7",
3250 "input": "xn--woqs083bel0g.xn--0f9ao925c",
3251 "output": null
3252 },
3253 {
3254 "comment": "V7; A4_2 (ignored)",
3255 "input": "\udb40\udda0\uff0e\ud99d\udc34\udaf1\udfc8",
3256 "output": null
3257 },
3258 {
3259 "comment": "V7; A4_2 (ignored)",
3260 "input": "\udb40\udda0.\ud99d\udc34\udaf1\udfc8",
3261 "output": null
3262 },
3263 {
3264 "comment": "V7; A4_2 (ignored)",
3265 "input": ".xn--rx21bhv12i",
3266 "output": null
3267 },
3268 {
3269 "comment": "V6; V7; V3 (ignored)",
3270 "input": "-.\u1886\udb47\udca3-",
3271 "output": null
3272 },
3273 {
3274 "comment": "V6; V7; V3 (ignored)",
3275 "input": "-.xn----pbkx6497q",
3276 "output": null
3277 },
3278 {
3279 "comment": "V7; V3 (ignored)",
3280 "input": "\udafd\udcb0\uff0e-\ud835\udffb\u00df",
3281 "output": null
3282 },
3283 {
3284 "comment": "V7; V3 (ignored)",
3285 "input": "\udafd\udcb0.-5\u00df",
3286 "output": null
3287 },
3288 {
3289 "comment": "V7; V3 (ignored)",
3290 "input": "\udafd\udcb0.-5SS",
3291 "output": null
3292 },
3293 {
3294 "comment": "V7; V3 (ignored)",
3295 "input": "\udafd\udcb0.-5ss",
3296 "output": null
3297 },
3298 {
3299 "comment": "V7; V3 (ignored)",
3300 "input": "xn--t960e.-5ss",
3301 "output": null
3302 },
3303 {
3304 "comment": "V7; V3 (ignored)",
3305 "input": "xn--t960e.xn---5-hia",
3306 "output": null
3307 },
3308 {
3309 "comment": "V7; V3 (ignored)",
3310 "input": "\udafd\udcb0\uff0e-\ud835\udffbSS",
3311 "output": null
3312 },
3313 {
3314 "comment": "V7; V3 (ignored)",
3315 "input": "\udafd\udcb0\uff0e-\ud835\udffbss",
3316 "output": null
3317 },
3318 {
3319 "comment": "V7; V3 (ignored)",
3320 "input": "\udafd\udcb0\uff0e-\ud835\udffbSs",
3321 "output": null
3322 },
3323 {
3324 "comment": "V7; V3 (ignored)",
3325 "input": "\udafd\udcb0.-5Ss",
3326 "output": null
3327 },
3328 {
3329 "comment": "C2; V7",
3330 "input": "\u200d\ud802\ude3f.\ud83e\udd12\u10c5\uda06\udfb6",
3331 "output": null
3332 },
3333 {
3334 "comment": "C2; V7",
3335 "input": "\u200d\ud802\ude3f.\ud83e\udd12\u2d25\uda06\udfb6",
3336 "output": null
3337 },
3338 {
3339 "comment": "V6; V7",
3340 "input": "xn--0s9c.xn--tljz038l0gz4b",
3341 "output": null
3342 },
3343 {
3344 "comment": "C2; V7",
3345 "input": "xn--1ug9533g.xn--tljz038l0gz4b",
3346 "output": null
3347 },
3348 {
3349 "comment": "V6; V7",
3350 "input": "xn--0s9c.xn--9nd3211w0gz4b",
3351 "output": null
3352 },
3353 {
3354 "comment": "C2; V7",
3355 "input": "xn--1ug9533g.xn--9nd3211w0gz4b",
3356 "output": null
3357 },
3358 {
3359 "comment": "C2; V7",
3360 "input": "\ud894\udec5\u3002\u00df\ud873\udd69\u200d",
3361 "output": null
3362 },
3363 {
3364 "comment": "C2; V7",
3365 "input": "\ud894\udec5\u3002SS\ud873\udd69\u200d",
3366 "output": null
3367 },
3368 {
3369 "comment": "C2; V7",
3370 "input": "\ud894\udec5\u3002ss\ud873\udd69\u200d",
3371 "output": null
3372 },
3373 {
3374 "comment": "C2; V7",
3375 "input": "\ud894\udec5\u3002Ss\ud873\udd69\u200d",
3376 "output": null
3377 },
3378 {
3379 "comment": "V7",
3380 "input": "xn--ey1p.xn--ss-eq36b",
3381 "output": null
3382 },
3383 {
3384 "comment": "C2; V7",
3385 "input": "xn--ey1p.xn--ss-n1tx0508a",
3386 "output": null
3387 },
3388 {
3389 "comment": "C2; V7",
3390 "input": "xn--ey1p.xn--zca870nz438b",
3391 "output": null
3392 },
3393 {
3394 "comment": "C1; V6; V7",
3395 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\uff61\ud805\uddbf\u1abb\u03c2\u2260",
3396 "output": null
3397 },
3398 {
3399 "comment": "C1; V6; V7",
3400 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\uff61\ud805\uddbf\u1abb\u03c2=\u0338",
3401 "output": null
3402 },
3403 {
3404 "comment": "C1; V6; V7",
3405 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\u3002\ud805\uddbf\u1abb\u03c2\u2260",
3406 "output": null
3407 },
3408 {
3409 "comment": "C1; V6; V7",
3410 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\u3002\ud805\uddbf\u1abb\u03c2=\u0338",
3411 "output": null
3412 },
3413 {
3414 "comment": "C1; V6; V7",
3415 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\u3002\ud805\uddbf\u1abb\u03a3=\u0338",
3416 "output": null
3417 },
3418 {
3419 "comment": "C1; V6; V7",
3420 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\u3002\ud805\uddbf\u1abb\u03a3\u2260",
3421 "output": null
3422 },
3423 {
3424 "comment": "C1; V6; V7",
3425 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\u3002\ud805\uddbf\u1abb\u03c3\u2260",
3426 "output": null
3427 },
3428 {
3429 "comment": "C1; V6; V7",
3430 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\u3002\ud805\uddbf\u1abb\u03c3=\u0338",
3431 "output": null
3432 },
3433 {
3434 "comment": "V6; V7",
3435 "input": "xn--zb9h5968x.xn--4xa378i1mfjw7y",
3436 "output": null
3437 },
3438 {
3439 "comment": "C1; V6; V7",
3440 "input": "xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y",
3441 "output": null
3442 },
3443 {
3444 "comment": "C1; V6; V7",
3445 "input": "xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y",
3446 "output": null
3447 },
3448 {
3449 "comment": "C1; V6; V7",
3450 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\uff61\ud805\uddbf\u1abb\u03a3=\u0338",
3451 "output": null
3452 },
3453 {
3454 "comment": "C1; V6; V7",
3455 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\uff61\ud805\uddbf\u1abb\u03a3\u2260",
3456 "output": null
3457 },
3458 {
3459 "comment": "C1; V6; V7",
3460 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\uff61\ud805\uddbf\u1abb\u03c3\u2260",
3461 "output": null
3462 },
3463 {
3464 "comment": "C1; V6; V7",
3465 "input": "\udb40\udd6f\ud9df\udf6d\u200c\ud83d\udf2d\uff61\ud805\uddbf\u1abb\u03c3=\u0338",
3466 "output": null
3467 },
3468 {
3469 "comment": "C2; V7",
3470 "input": "\u248b\uff61\u2488\u200d\uda8f\udd22",
3471 "output": null
3472 },
3473 {
3474 "comment": "C2; V7; A4_2 (ignored)",
3475 "input": "4.\u30021.\u200d\uda8f\udd22",
3476 "output": null
3477 },
3478 {
3479 "comment": "V7; A4_2 (ignored)",
3480 "input": "4..1.xn--sf51d",
3481 "output": null
3482 },
3483 {
3484 "comment": "C2; V7; A4_2 (ignored)",
3485 "input": "4..1.xn--1ug64613i",
3486 "output": null
3487 },
3488 {
3489 "comment": "V7",
3490 "input": "xn--wsh.xn--tsh07994h",
3491 "output": null
3492 },
3493 {
3494 "comment": "C2; V7",
3495 "input": "xn--wsh.xn--1ug58o74922a",
3496 "output": null
3497 },
3498 {
3499 "comment": "V7",
3500 "input": "\u10b3\ud805\udf2b\u200d\uda1e\udf53\uff0e\u06a7\ud807\udc36",
3501 "output": null
3502 },
3503 {
3504 "comment": "V7",
3505 "input": "\u10b3\ud805\udf2b\u200d\uda1e\udf53.\u06a7\ud807\udc36",
3506 "output": null
3507 },
3508 {
3509 "comment": "V7",
3510 "input": "\u2d13\ud805\udf2b\u200d\uda1e\udf53.\u06a7\ud807\udc36",
3511 "output": null
3512 },
3513 {
3514 "comment": "V7",
3515 "input": "xn--blj6306ey091d.xn--9jb4223l",
3516 "output": null
3517 },
3518 {
3519 "comment": "V7",
3520 "input": "xn--1ugy52cym7p7xu5e.xn--9jb4223l",
3521 "output": null
3522 },
3523 {
3524 "comment": "V7",
3525 "input": "\u2d13\ud805\udf2b\u200d\uda1e\udf53\uff0e\u06a7\ud807\udc36",
3526 "output": null
3527 },
3528 {
3529 "comment": "V7",
3530 "input": "xn--rnd8945ky009c.xn--9jb4223l",
3531 "output": null
3532 },
3533 {
3534 "comment": "V7",
3535 "input": "xn--rnd479ep20q7x12e.xn--9jb4223l",
3536 "output": null
3537 },
3538 {
3539 "comment": "V6; U1 (ignored)",
3540 "input": "\ud802\ude3f.\ud83c\udd06\u2014",
3541 "output": null
3542 },
3543 {
3544 "comment": "V6; U1 (ignored)",
3545 "input": "\ud802\ude3f.5,\u2014",
3546 "output": null
3547 },
3548 {
3549 "comment": "V6; U1 (ignored)",
3550 "input": "xn--0s9c.xn--5,-81t",
3551 "output": null
3552 },
3553 {
3554 "comment": "V6; V7",
3555 "input": "xn--0s9c.xn--8ug8324p",
3556 "output": null
3557 },
3558 {
3559 "comment": "V7; V3 (ignored)",
3560 "input": "\uda10\udeb1\ud8c6\uddae\u06f8\u3002\udb43\udfad-",
3561 "output": null
3562 },
3563 {
3564 "comment": "V7; V3 (ignored)",
3565 "input": "xn--lmb18944c0g2z.xn----2k81m",
3566 "output": null
3567 },
3568 {
3569 "comment": "V7",
3570 "input": "\ud83d\udf85\udb43\udce1\udb30\udf59.\ud989\uddb7",
3571 "output": null
3572 },
3573 {
3574 "comment": "V7",
3575 "input": "xn--ie9hi1349bqdlb.xn--oj69a",
3576 "output": null
3577 },
3578 {
3579 "comment": "C1; V6; V7",
3580 "input": "\u20e7\ud97e\udc4e-\uda6e\udcdd.4\u10a4\u200c",
3581 "output": null
3582 },
3583 {
3584 "comment": "C1; V6; V7",
3585 "input": "\u20e7\ud97e\udc4e-\uda6e\udcdd.4\u2d04\u200c",
3586 "output": null
3587 },
3588 {
3589 "comment": "V6; V7",
3590 "input": "xn----9snu5320fi76w.xn--4-ivs",
3591 "output": null
3592 },
3593 {
3594 "comment": "C1; V6; V7",
3595 "input": "xn----9snu5320fi76w.xn--4-sgn589c",
3596 "output": null
3597 },
3598 {
3599 "comment": "V6; V7",
3600 "input": "xn----9snu5320fi76w.xn--4-f0g",
3601 "output": null
3602 },
3603 {
3604 "comment": "C1; V6; V7",
3605 "input": "xn----9snu5320fi76w.xn--4-f0g649i",
3606 "output": null
3607 },
3608 {
3609 "input": "\u16ad\uff61\ud834\udf20\u00df\ud81a\udef1",
3610 "output": "xn--hwe.xn--zca4946pblnc"
3611 },
3612 {
3613 "input": "\u16ad\u3002\ud834\udf20\u00df\ud81a\udef1",
3614 "output": "xn--hwe.xn--zca4946pblnc"
3615 },
3616 {
3617 "input": "\u16ad\u3002\ud834\udf20SS\ud81a\udef1",
3618 "output": "xn--hwe.xn--ss-ci1ub261a"
3619 },
3620 {
3621 "input": "\u16ad\u3002\ud834\udf20ss\ud81a\udef1",
3622 "output": "xn--hwe.xn--ss-ci1ub261a"
3623 },
3624 {
3625 "input": "\u16ad\u3002\ud834\udf20Ss\ud81a\udef1",
3626 "output": "xn--hwe.xn--ss-ci1ub261a"
3627 },
3628 {
3629 "input": "xn--hwe.xn--ss-ci1ub261a",
3630 "output": "xn--hwe.xn--ss-ci1ub261a"
3631 },
3632 {
3633 "input": "\u16ad.\ud834\udf20ss\ud81a\udef1",
3634 "output": "xn--hwe.xn--ss-ci1ub261a"
3635 },
3636 {
3637 "input": "\u16ad.\ud834\udf20SS\ud81a\udef1",
3638 "output": "xn--hwe.xn--ss-ci1ub261a"
3639 },
3640 {
3641 "input": "\u16ad.\ud834\udf20Ss\ud81a\udef1",
3642 "output": "xn--hwe.xn--ss-ci1ub261a"
3643 },
3644 {
3645 "input": "xn--hwe.xn--zca4946pblnc",
3646 "output": "xn--hwe.xn--zca4946pblnc"
3647 },
3648 {
3649 "input": "\u16ad.\ud834\udf20\u00df\ud81a\udef1",
3650 "output": "xn--hwe.xn--zca4946pblnc"
3651 },
3652 {
3653 "input": "\u16ad\uff61\ud834\udf20SS\ud81a\udef1",
3654 "output": "xn--hwe.xn--ss-ci1ub261a"
3655 },
3656 {
3657 "input": "\u16ad\uff61\ud834\udf20ss\ud81a\udef1",
3658 "output": "xn--hwe.xn--ss-ci1ub261a"
3659 },
3660 {
3661 "input": "\u16ad\uff61\ud834\udf20Ss\ud81a\udef1",
3662 "output": "xn--hwe.xn--ss-ci1ub261a"
3663 },
3664 {
3665 "comment": "V6",
3666 "input": "\ud805\udc44\u226f\uff61\ud805\udf24",
3667 "output": null
3668 },
3669 {
3670 "comment": "V6",
3671 "input": "\ud805\udc44>\u0338\uff61\ud805\udf24",
3672 "output": null
3673 },
3674 {
3675 "comment": "V6",
3676 "input": "\ud805\udc44\u226f\u3002\ud805\udf24",
3677 "output": null
3678 },
3679 {
3680 "comment": "V6",
3681 "input": "\ud805\udc44>\u0338\u3002\ud805\udf24",
3682 "output": null
3683 },
3684 {
3685 "comment": "V6",
3686 "input": "xn--hdh5636g.xn--ci2d",
3687 "output": null
3688 },
3689 {
3690 "comment": "C2",
3691 "input": "\u10ab\u226e\ud887\udc86\u3002\u200d\u07a7\ud800\udee3",
3692 "output": null
3693 },
3694 {
3695 "comment": "C2",
3696 "input": "\u10ab<\u0338\ud887\udc86\u3002\u200d\u07a7\ud800\udee3",
3697 "output": null
3698 },
3699 {
3700 "comment": "C2",
3701 "input": "\u2d0b<\u0338\ud887\udc86\u3002\u200d\u07a7\ud800\udee3",
3702 "output": null
3703 },
3704 {
3705 "comment": "C2",
3706 "input": "\u2d0b\u226e\ud887\udc86\u3002\u200d\u07a7\ud800\udee3",
3707 "output": null
3708 },
3709 {
3710 "comment": "V6",
3711 "input": "xn--gdhz03bxt42d.xn--lrb6479j",
3712 "output": null
3713 },
3714 {
3715 "comment": "C2",
3716 "input": "xn--gdhz03bxt42d.xn--lrb506jqr4n",
3717 "output": null
3718 },
3719 {
3720 "comment": "V6; V7",
3721 "input": "xn--jnd802gsm17c.xn--lrb6479j",
3722 "output": null
3723 },
3724 {
3725 "comment": "C2; V7",
3726 "input": "xn--jnd802gsm17c.xn--lrb506jqr4n",
3727 "output": null
3728 },
3729 {
3730 "comment": "V6; V7",
3731 "input": "\u17d2.\ud9db\udf52\u226f",
3732 "output": null
3733 },
3734 {
3735 "comment": "V6; V7",
3736 "input": "\u17d2.\ud9db\udf52>\u0338",
3737 "output": null
3738 },
3739 {
3740 "comment": "V6; V7",
3741 "input": "xn--u4e.xn--hdhx0084f",
3742 "output": null
3743 },
3744 {
3745 "comment": "V6; V7",
3746 "input": "\ud8fc\udc47\u1734\uff0e\ud802\ude3a\u00c9\u2b13\ud804\udd34",
3747 "output": null
3748 },
3749 {
3750 "comment": "V6; V7",
3751 "input": "\ud8fc\udc47\u1734\uff0e\ud802\ude3aE\u0301\u2b13\ud804\udd34",
3752 "output": null
3753 },
3754 {
3755 "comment": "V6; V7",
3756 "input": "\ud8fc\udc47\u1734.\ud802\ude3a\u00c9\u2b13\ud804\udd34",
3757 "output": null
3758 },
3759 {
3760 "comment": "V6; V7",
3761 "input": "\ud8fc\udc47\u1734.\ud802\ude3aE\u0301\u2b13\ud804\udd34",
3762 "output": null
3763 },
3764 {
3765 "comment": "V6; V7",
3766 "input": "\ud8fc\udc47\u1734.\ud802\ude3ae\u0301\u2b13\ud804\udd34",
3767 "output": null
3768 },
3769 {
3770 "comment": "V6; V7",
3771 "input": "\ud8fc\udc47\u1734.\ud802\ude3a\u00e9\u2b13\ud804\udd34",
3772 "output": null
3773 },
3774 {
3775 "comment": "V6; V7",
3776 "input": "xn--c0e34564d.xn--9ca207st53lg3f",
3777 "output": null
3778 },
3779 {
3780 "comment": "V6; V7",
3781 "input": "\ud8fc\udc47\u1734\uff0e\ud802\ude3ae\u0301\u2b13\ud804\udd34",
3782 "output": null
3783 },
3784 {
3785 "comment": "V6; V7",
3786 "input": "\ud8fc\udc47\u1734\uff0e\ud802\ude3a\u00e9\u2b13\ud804\udd34",
3787 "output": null
3788 },
3789 {
3790 "comment": "A4_2 (ignored)",
3791 "input": "xn--09e4694e..xn--ye6h",
3792 "output": "xn--09e4694e..xn--ye6h"
3793 },
3794 {
3795 "comment": "V6",
3796 "input": "\u10c3\uff0e\u0653\u18a4",
3797 "output": null
3798 },
3799 {
3800 "comment": "V6",
3801 "input": "\u10c3.\u0653\u18a4",
3802 "output": null
3803 },
3804 {
3805 "comment": "V6",
3806 "input": "\u2d23.\u0653\u18a4",
3807 "output": null
3808 },
3809 {
3810 "comment": "V6",
3811 "input": "xn--rlj.xn--vhb294g",
3812 "output": null
3813 },
3814 {
3815 "comment": "V6",
3816 "input": "\u2d23\uff0e\u0653\u18a4",
3817 "output": null
3818 },
3819 {
3820 "comment": "V6; V7",
3821 "input": "xn--7nd.xn--vhb294g",
3822 "output": null
3823 },
3824 {
3825 "comment": "V7",
3826 "input": "\udb40\udd08\u0813\uff0e\uc2c9\ud9d0\uddbb\u10c4\ud9ca\udc50",
3827 "output": null
3828 },
3829 {
3830 "comment": "V7",
3831 "input": "\udb40\udd08\u0813\uff0e\u1109\u1174\u11b0\ud9d0\uddbb\u10c4\ud9ca\udc50",
3832 "output": null
3833 },
3834 {
3835 "comment": "V7",
3836 "input": "\udb40\udd08\u0813.\uc2c9\ud9d0\uddbb\u10c4\ud9ca\udc50",
3837 "output": null
3838 },
3839 {
3840 "comment": "V7",
3841 "input": "\udb40\udd08\u0813.\u1109\u1174\u11b0\ud9d0\uddbb\u10c4\ud9ca\udc50",
3842 "output": null
3843 },
3844 {
3845 "comment": "V7",
3846 "input": "\udb40\udd08\u0813.\u1109\u1174\u11b0\ud9d0\uddbb\u2d24\ud9ca\udc50",
3847 "output": null
3848 },
3849 {
3850 "comment": "V7",
3851 "input": "\udb40\udd08\u0813.\uc2c9\ud9d0\uddbb\u2d24\ud9ca\udc50",
3852 "output": null
3853 },
3854 {
3855 "comment": "V7",
3856 "input": "xn--oub.xn--sljz109bpe25dviva",
3857 "output": null
3858 },
3859 {
3860 "comment": "V7",
3861 "input": "\udb40\udd08\u0813\uff0e\u1109\u1174\u11b0\ud9d0\uddbb\u2d24\ud9ca\udc50",
3862 "output": null
3863 },
3864 {
3865 "comment": "V7",
3866 "input": "\udb40\udd08\u0813\uff0e\uc2c9\ud9d0\uddbb\u2d24\ud9ca\udc50",
3867 "output": null
3868 },
3869 {
3870 "comment": "V7",
3871 "input": "xn--oub.xn--8nd9522gpe69cviva",
3872 "output": null
3873 },
3874 {
3875 "comment": "V6",
3876 "input": "\uaa2c\ud807\udcab\u226e\uff0e\u2902",
3877 "output": null
3878 },
3879 {
3880 "comment": "V6",
3881 "input": "\uaa2c\ud807\udcab<\u0338\uff0e\u2902",
3882 "output": null
3883 },
3884 {
3885 "comment": "V6",
3886 "input": "\uaa2c\ud807\udcab\u226e.\u2902",
3887 "output": null
3888 },
3889 {
3890 "comment": "V6",
3891 "input": "\uaa2c\ud807\udcab<\u0338.\u2902",
3892 "output": null
3893 },
3894 {
3895 "comment": "V6",
3896 "input": "xn--gdh1854cn19c.xn--kqi",
3897 "output": null
3898 },
3899 {
3900 "comment": "V6; V3 (ignored)",
3901 "input": "\ud804\udc45\u3002-",
3902 "output": null
3903 },
3904 {
3905 "comment": "V6; V3 (ignored)",
3906 "input": "xn--210d.-",
3907 "output": null
3908 },
3909 {
3910 "comment": "C2; V7; V3 (ignored)",
3911 "input": "\ua866\u1851\u200d\u2488\u3002\ud800\udee3-",
3912 "output": null
3913 },
3914 {
3915 "comment": "C2; V3 (ignored); A4_2 (ignored)",
3916 "input": "\ua866\u1851\u200d1.\u3002\ud800\udee3-",
3917 "output": null
3918 },
3919 {
3920 "comment": "V3 (ignored); A4_2 (ignored)",
3921 "input": "xn--1-o7j0610f..xn----381i",
3922 "output": "xn--1-o7j0610f..xn----381i"
3923 },
3924 {
3925 "comment": "C2; V3 (ignored); A4_2 (ignored)",
3926 "input": "xn--1-o7j663bdl7m..xn----381i",
3927 "output": null
3928 },
3929 {
3930 "comment": "V7; V3 (ignored)",
3931 "input": "xn--h8e863drj7h.xn----381i",
3932 "output": null
3933 },
3934 {
3935 "comment": "C2; V7; V3 (ignored)",
3936 "input": "xn--h8e470bl0d838o.xn----381i",
3937 "output": null
3938 },
3939 {
3940 "comment": "C2; V7; V3 (ignored)",
3941 "input": "\u2488\u4c39\u200d-\u3002\uc6c8",
3942 "output": null
3943 },
3944 {
3945 "comment": "C2; V7; V3 (ignored)",
3946 "input": "\u2488\u4c39\u200d-\u3002\u110b\u116e\u11bf",
3947 "output": null
3948 },
3949 {
3950 "comment": "C2; V3 (ignored)",
3951 "input": "1.\u4c39\u200d-\u3002\uc6c8",
3952 "output": null
3953 },
3954 {
3955 "comment": "C2; V3 (ignored)",
3956 "input": "1.\u4c39\u200d-\u3002\u110b\u116e\u11bf",
3957 "output": null
3958 },
3959 {
3960 "comment": "V3 (ignored)",
3961 "input": "1.xn----zw5a.xn--kp5b",
3962 "output": "1.xn----zw5a.xn--kp5b"
3963 },
3964 {
3965 "comment": "C2; V3 (ignored)",
3966 "input": "1.xn----tgnz80r.xn--kp5b",
3967 "output": null
3968 },
3969 {
3970 "comment": "V7; V3 (ignored)",
3971 "input": "xn----dcp160o.xn--kp5b",
3972 "output": null
3973 },
3974 {
3975 "comment": "C2; V7; V3 (ignored)",
3976 "input": "xn----tgnx5rjr6c.xn--kp5b",
3977 "output": null
3978 },
3979 {
3980 "comment": "C1; V7",
3981 "input": "\u3066\u3002\u200c\udb43\udcfd\u07f3",
3982 "output": null
3983 },
3984 {
3985 "comment": "V7",
3986 "input": "xn--m9j.xn--rtb10784p",
3987 "output": null
3988 },
3989 {
3990 "comment": "C1; V7",
3991 "input": "xn--m9j.xn--rtb154j9l73w",
3992 "output": null
3993 },
3994 {
3995 "comment": "V6",
3996 "input": "\u03c2\uff61\ua9c0\u06e7",
3997 "output": null
3998 },
3999 {
4000 "comment": "V6",
4001 "input": "\u03c2\u3002\ua9c0\u06e7",
4002 "output": null
4003 },
4004 {
4005 "comment": "V6",
4006 "input": "\u03a3\u3002\ua9c0\u06e7",
4007 "output": null
4008 },
4009 {
4010 "comment": "V6",
4011 "input": "\u03c3\u3002\ua9c0\u06e7",
4012 "output": null
4013 },
4014 {
4015 "comment": "V6",
4016 "input": "xn--4xa.xn--3lb1944f",
4017 "output": null
4018 },
4019 {
4020 "comment": "V6",
4021 "input": "xn--3xa.xn--3lb1944f",
4022 "output": null
4023 },
4024 {
4025 "comment": "V6",
4026 "input": "\u03a3\uff61\ua9c0\u06e7",
4027 "output": null
4028 },
4029 {
4030 "comment": "V6",
4031 "input": "\u03c3\uff61\ua9c0\u06e7",
4032 "output": null
4033 },
4034 {
4035 "comment": "V6; V7",
4036 "input": "\u0bcd\udb56\udec5\ud9f0\ude51.\u10a2\u10b5",
4037 "output": null
4038 },
4039 {
4040 "comment": "V6; V7",
4041 "input": "\u0bcd\udb56\udec5\ud9f0\ude51.\u2d02\u2d15",
4042 "output": null
4043 },
4044 {
4045 "comment": "V6; V7",
4046 "input": "\u0bcd\udb56\udec5\ud9f0\ude51.\u10a2\u2d15",
4047 "output": null
4048 },
4049 {
4050 "comment": "V6; V7",
4051 "input": "xn--xmc83135idcxza.xn--tkjwb",
4052 "output": null
4053 },
4054 {
4055 "comment": "V6; V7",
4056 "input": "xn--xmc83135idcxza.xn--9md086l",
4057 "output": null
4058 },
4059 {
4060 "comment": "V6; V7",
4061 "input": "xn--xmc83135idcxza.xn--9md2b",
4062 "output": null
4063 },
4064 {
4065 "comment": "C2; V6; V7; U1 (ignored)",
4066 "input": "\u1c32\ud83c\udd08\u2f9b\u05a6\uff0e\u200d\uda7e\udd64\u07fd",
4067 "output": null
4068 },
4069 {
4070 "comment": "C2; V6; V7; U1 (ignored)",
4071 "input": "\u1c327,\u8d70\u05a6.\u200d\uda7e\udd64\u07fd",
4072 "output": null
4073 },
4074 {
4075 "comment": "V6; V7; U1 (ignored)",
4076 "input": "xn--7,-bid991urn3k.xn--1tb13454l",
4077 "output": null
4078 },
4079 {
4080 "comment": "C2; V6; V7; U1 (ignored)",
4081 "input": "xn--7,-bid991urn3k.xn--1tb334j1197q",
4082 "output": null
4083 },
4084 {
4085 "comment": "V6; V7",
4086 "input": "xn--xcb756i493fwi5o.xn--1tb13454l",
4087 "output": null
4088 },
4089 {
4090 "comment": "C2; V6; V7",
4091 "input": "xn--xcb756i493fwi5o.xn--1tb334j1197q",
4092 "output": null
4093 },
4094 {
4095 "comment": "V7",
4096 "input": "\u1897\uff61\u04c0\ud934\udd3b",
4097 "output": null
4098 },
4099 {
4100 "comment": "V7",
4101 "input": "\u1897\u3002\u04c0\ud934\udd3b",
4102 "output": null
4103 },
4104 {
4105 "comment": "V7",
4106 "input": "\u1897\u3002\u04cf\ud934\udd3b",
4107 "output": null
4108 },
4109 {
4110 "comment": "V7",
4111 "input": "xn--hbf.xn--s5a83117e",
4112 "output": null
4113 },
4114 {
4115 "comment": "V7",
4116 "input": "\u1897\uff61\u04cf\ud934\udd3b",
4117 "output": null
4118 },
4119 {
4120 "comment": "V7",
4121 "input": "xn--hbf.xn--d5a86117e",
4122 "output": null
4123 },
4124 {
4125 "comment": "V3 (ignored); A4_2 (ignored)",
4126 "input": "-\ud800\udef7\ud81b\udf91\u3002\udb40\uddac",
4127 "output": "xn----991iq40y."
4128 },
4129 {
4130 "comment": "V3 (ignored); A4_2 (ignored)",
4131 "input": "xn----991iq40y.",
4132 "output": "xn----991iq40y."
4133 },
4134 {
4135 "comment": "V6",
4136 "input": "\ud807\udc98\udb40\udd12\ud80d\udc61\uff61\ud835\udfea\u10bc",
4137 "output": null
4138 },
4139 {
4140 "comment": "V6",
4141 "input": "\ud807\udc98\udb40\udd12\ud80d\udc61\u30028\u10bc",
4142 "output": null
4143 },
4144 {
4145 "comment": "V6",
4146 "input": "\ud807\udc98\udb40\udd12\ud80d\udc61\u30028\u2d1c",
4147 "output": null
4148 },
4149 {
4150 "comment": "V6",
4151 "input": "xn--7m3d291b.xn--8-vws",
4152 "output": null
4153 },
4154 {
4155 "comment": "V6",
4156 "input": "\ud807\udc98\udb40\udd12\ud80d\udc61\uff61\ud835\udfea\u2d1c",
4157 "output": null
4158 },
4159 {
4160 "comment": "V6; V7",
4161 "input": "xn--7m3d291b.xn--8-s1g",
4162 "output": null
4163 },
4164 {
4165 "comment": "V6; V7",
4166 "input": "\u1bab\uff61\ud83c\udc89\udb40\udc70",
4167 "output": null
4168 },
4169 {
4170 "comment": "V6; V7",
4171 "input": "\u1bab\u3002\ud83c\udc89\udb40\udc70",
4172 "output": null
4173 },
4174 {
4175 "comment": "V6; V7",
4176 "input": "xn--zxf.xn--fx7ho0250c",
4177 "output": null
4178 },
4179 {
4180 "comment": "C1; V7; V3 (ignored)",
4181 "input": "\udb71\udeb6\udba0\uded6\uda1a\ude70-\u3002\u200c",
4182 "output": null
4183 },
4184 {
4185 "comment": "V7; V3 (ignored); A4_2 (ignored)",
4186 "input": "xn----7i12hu122k9ire.",
4187 "output": null
4188 },
4189 {
4190 "comment": "C1; V7; V3 (ignored)",
4191 "input": "xn----7i12hu122k9ire.xn--0ug",
4192 "output": null
4193 },
4194 {
4195 "comment": "V6; V7",
4196 "input": "\ufe12\uff0e\ufe2f\ud805\udc42",
4197 "output": null
4198 },
4199 {
4200 "comment": "V6; V7",
4201 "input": "\ufe12\uff0e\ud805\udc42\ufe2f",
4202 "output": null
4203 },
4204 {
4205 "comment": "V6; A4_2 (ignored)",
4206 "input": "\u3002.\ud805\udc42\ufe2f",
4207 "output": null
4208 },
4209 {
4210 "comment": "V6; A4_2 (ignored)",
4211 "input": "..xn--s96cu30b",
4212 "output": null
4213 },
4214 {
4215 "comment": "V6; V7",
4216 "input": "xn--y86c.xn--s96cu30b",
4217 "output": null
4218 },
4219 {
4220 "comment": "C2; V6",
4221 "input": "\ua92c\u3002\u200d",
4222 "output": null
4223 },
4224 {
4225 "comment": "V6; A4_2 (ignored)",
4226 "input": "xn--zi9a.",
4227 "output": null
4228 },
4229 {
4230 "comment": "C2; V6",
4231 "input": "xn--zi9a.xn--1ug",
4232 "output": null
4233 },
4234 {
4235 "comment": "V7; V3 (ignored)",
4236 "input": "\udb58\ude04\u3002-",
4237 "output": null
4238 },
4239 {
4240 "comment": "V7; V3 (ignored)",
4241 "input": "xn--xm38e.-",
4242 "output": null
4243 },
4244 {
4245 "comment": "V7",
4246 "input": "\u22e0\ud800\udeee\uff0e\uda98\ude2e\u0f18\u00df\u226f",
4247 "output": null
4248 },
4249 {
4250 "comment": "V7",
4251 "input": "\u227c\u0338\ud800\udeee\uff0e\uda98\ude2e\u0f18\u00df>\u0338",
4252 "output": null
4253 },
4254 {
4255 "comment": "V7",
4256 "input": "\u22e0\ud800\udeee.\uda98\ude2e\u0f18\u00df\u226f",
4257 "output": null
4258 },
4259 {
4260 "comment": "V7",
4261 "input": "\u227c\u0338\ud800\udeee.\uda98\ude2e\u0f18\u00df>\u0338",
4262 "output": null
4263 },
4264 {
4265 "comment": "V7",
4266 "input": "\u227c\u0338\ud800\udeee.\uda98\ude2e\u0f18SS>\u0338",
4267 "output": null
4268 },
4269 {
4270 "comment": "V7",
4271 "input": "\u22e0\ud800\udeee.\uda98\ude2e\u0f18SS\u226f",
4272 "output": null
4273 },
4274 {
4275 "comment": "V7",
4276 "input": "\u22e0\ud800\udeee.\uda98\ude2e\u0f18ss\u226f",
4277 "output": null
4278 },
4279 {
4280 "comment": "V7",
4281 "input": "\u227c\u0338\ud800\udeee.\uda98\ude2e\u0f18ss>\u0338",
4282 "output": null
4283 },
4284 {
4285 "comment": "V7",
4286 "input": "\u227c\u0338\ud800\udeee.\uda98\ude2e\u0f18Ss>\u0338",
4287 "output": null
4288 },
4289 {
4290 "comment": "V7",
4291 "input": "\u22e0\ud800\udeee.\uda98\ude2e\u0f18Ss\u226f",
4292 "output": null
4293 },
4294 {
4295 "comment": "V7",
4296 "input": "xn--pgh4639f.xn--ss-ifj426nle504a",
4297 "output": null
4298 },
4299 {
4300 "comment": "V7",
4301 "input": "xn--pgh4639f.xn--zca593eo6oc013y",
4302 "output": null
4303 },
4304 {
4305 "comment": "V7",
4306 "input": "\u227c\u0338\ud800\udeee\uff0e\uda98\ude2e\u0f18SS>\u0338",
4307 "output": null
4308 },
4309 {
4310 "comment": "V7",
4311 "input": "\u22e0\ud800\udeee\uff0e\uda98\ude2e\u0f18SS\u226f",
4312 "output": null
4313 },
4314 {
4315 "comment": "V7",
4316 "input": "\u22e0\ud800\udeee\uff0e\uda98\ude2e\u0f18ss\u226f",
4317 "output": null
4318 },
4319 {
4320 "comment": "V7",
4321 "input": "\u227c\u0338\ud800\udeee\uff0e\uda98\ude2e\u0f18ss>\u0338",
4322 "output": null
4323 },
4324 {
4325 "comment": "V7",
4326 "input": "\u227c\u0338\ud800\udeee\uff0e\uda98\ude2e\u0f18Ss>\u0338",
4327 "output": null
4328 },
4329 {
4330 "comment": "V7",
4331 "input": "\u22e0\ud800\udeee\uff0e\uda98\ude2e\u0f18Ss\u226f",
4332 "output": null
4333 },
4334 {
4335 "comment": "V6; V7",
4336 "input": "\u0330\uff0e\udb81\udf31\u8680",
4337 "output": null
4338 },
4339 {
4340 "comment": "V6; V7",
4341 "input": "\u0330.\udb81\udf31\u8680",
4342 "output": null
4343 },
4344 {
4345 "comment": "V6; V7",
4346 "input": "xn--xta.xn--e91aw9417e",
4347 "output": null
4348 },
4349 {
4350 "comment": "C2; V6; U1 (ignored)",
4351 "input": "\ud83e\udc9f\ud83c\udd08\u200d\ua84e\uff61\u0f84",
4352 "output": null
4353 },
4354 {
4355 "comment": "C2; V6; U1 (ignored)",
4356 "input": "\ud83e\udc9f7,\u200d\ua84e\u3002\u0f84",
4357 "output": null
4358 },
4359 {
4360 "comment": "V6; U1 (ignored)",
4361 "input": "xn--7,-gh9hg322i.xn--3ed",
4362 "output": null
4363 },
4364 {
4365 "comment": "C2; V6; U1 (ignored)",
4366 "input": "xn--7,-n1t0654eqo3o.xn--3ed",
4367 "output": null
4368 },
4369 {
4370 "comment": "V6; V7",
4371 "input": "xn--nc9aq743ds0e.xn--3ed",
4372 "output": null
4373 },
4374 {
4375 "comment": "C2; V6; V7",
4376 "input": "xn--1ug4874cfd0kbmg.xn--3ed",
4377 "output": null
4378 },
4379 {
4380 "comment": "V6",
4381 "input": "\ua854\u3002\u1039\u1887",
4382 "output": null
4383 },
4384 {
4385 "comment": "V6",
4386 "input": "xn--tc9a.xn--9jd663b",
4387 "output": null
4388 },
4389 {
4390 "comment": "V6",
4391 "input": "\u20eb\u226e.\ud836\ude16",
4392 "output": null
4393 },
4394 {
4395 "comment": "V6",
4396 "input": "\u20eb<\u0338.\ud836\ude16",
4397 "output": null
4398 },
4399 {
4400 "comment": "V6",
4401 "input": "xn--e1g71d.xn--772h",
4402 "output": null
4403 },
4404 {
4405 "comment": "C1",
4406 "input": "\u200c.\u226f",
4407 "output": null
4408 },
4409 {
4410 "comment": "C1",
4411 "input": "\u200c.>\u0338",
4412 "output": null
4413 },
4414 {
4415 "comment": "A4_2 (ignored)",
4416 "input": ".xn--hdh",
4417 "output": ".xn--hdh"
4418 },
4419 {
4420 "comment": "C1",
4421 "input": "xn--0ug.xn--hdh",
4422 "output": null
4423 },
4424 {
4425 "comment": "V6; V7; V3 (ignored)",
4426 "input": "\ud880\udd67\ud94e\ude60-\uff0e\uabed-\u609c",
4427 "output": null
4428 },
4429 {
4430 "comment": "V6; V7; V3 (ignored)",
4431 "input": "\ud880\udd67\ud94e\ude60-.\uabed-\u609c",
4432 "output": null
4433 },
4434 {
4435 "comment": "V6; V7; V3 (ignored)",
4436 "input": "xn----7m53aj640l.xn----8f4br83t",
4437 "output": null
4438 },
4439 {
4440 "comment": "C2; V7; V3 (ignored)",
4441 "input": "\u1849\ud899\udce7\u2b1e\u189c.-\u200d\ud83a\udcd1\u202e",
4442 "output": null
4443 },
4444 {
4445 "comment": "V7; V3 (ignored)",
4446 "input": "xn--87e0ol04cdl39e.xn----qinu247r",
4447 "output": null
4448 },
4449 {
4450 "comment": "C2; V7; V3 (ignored)",
4451 "input": "xn--87e0ol04cdl39e.xn----ugn5e3763s",
4452 "output": null
4453 },
4454 {
4455 "input": "\ud83a\udd53\uff0e\u0718",
4456 "output": "xn--of6h.xn--inb"
4457 },
4458 {
4459 "input": "\ud83a\udd53.\u0718",
4460 "output": "xn--of6h.xn--inb"
4461 },
4462 {
4463 "input": "xn--of6h.xn--inb",
4464 "output": "xn--of6h.xn--inb"
4465 },
4466 {
4467 "comment": "V3 (ignored)",
4468 "input": "\udb40\udd3d-\uff0e-\u0dca",
4469 "output": "-.xn----ptf"
4470 },
4471 {
4472 "comment": "V3 (ignored)",
4473 "input": "\udb40\udd3d-.-\u0dca",
4474 "output": "-.xn----ptf"
4475 },
4476 {
4477 "comment": "V3 (ignored)",
4478 "input": "-.xn----ptf",
4479 "output": "-.xn----ptf"
4480 },
4481 {
4482 "input": "\u10ba\ud800\udef8\udb40\udd04\u3002\ud835\udfdd\ud7f6\u103a",
4483 "output": "xn--ilj2659d.xn--5-dug9054m"
4484 },
4485 {
4486 "input": "\u10ba\ud800\udef8\udb40\udd04\u30025\ud7f6\u103a",
4487 "output": "xn--ilj2659d.xn--5-dug9054m"
4488 },
4489 {
4490 "input": "\u2d1a\ud800\udef8\udb40\udd04\u30025\ud7f6\u103a",
4491 "output": "xn--ilj2659d.xn--5-dug9054m"
4492 },
4493 {
4494 "input": "xn--ilj2659d.xn--5-dug9054m",
4495 "output": "xn--ilj2659d.xn--5-dug9054m"
4496 },
4497 {
4498 "input": "\u2d1a\ud800\udef8.5\ud7f6\u103a",
4499 "output": "xn--ilj2659d.xn--5-dug9054m"
4500 },
4501 {
4502 "input": "\u10ba\ud800\udef8.5\ud7f6\u103a",
4503 "output": "xn--ilj2659d.xn--5-dug9054m"
4504 },
4505 {
4506 "input": "\u2d1a\ud800\udef8\udb40\udd04\u3002\ud835\udfdd\ud7f6\u103a",
4507 "output": "xn--ilj2659d.xn--5-dug9054m"
4508 },
4509 {
4510 "comment": "V7",
4511 "input": "xn--ynd2415j.xn--5-dug9054m",
4512 "output": null
4513 },
4514 {
4515 "comment": "C2; V6; U1 (ignored)",
4516 "input": "\u200d-\u1839\ufe6a.\u1de1\u1922",
4517 "output": null
4518 },
4519 {
4520 "comment": "C2; V6; U1 (ignored)",
4521 "input": "\u200d-\u1839%.\u1de1\u1922",
4522 "output": null
4523 },
4524 {
4525 "comment": "V6; V3 (ignored); U1 (ignored)",
4526 "input": "xn---%-u4o.xn--gff52t",
4527 "output": null
4528 },
4529 {
4530 "comment": "C2; V6; U1 (ignored)",
4531 "input": "xn---%-u4oy48b.xn--gff52t",
4532 "output": null
4533 },
4534 {
4535 "comment": "V6; V7; V3 (ignored)",
4536 "input": "xn----c6jx047j.xn--gff52t",
4537 "output": null
4538 },
4539 {
4540 "comment": "C2; V6; V7",
4541 "input": "xn----c6j614b1z4v.xn--gff52t",
4542 "output": null
4543 },
4544 {
4545 "input": "\u2260.\u183f",
4546 "output": "xn--1ch.xn--y7e"
4547 },
4548 {
4549 "input": "=\u0338.\u183f",
4550 "output": "xn--1ch.xn--y7e"
4551 },
4552 {
4553 "input": "xn--1ch.xn--y7e",
4554 "output": "xn--1ch.xn--y7e"
4555 },
4556 {
4557 "input": "\u0723\u05a3\uff61\u332a",
4558 "output": "xn--ucb18e.xn--eck4c5a"
4559 },
4560 {
4561 "input": "\u0723\u05a3\u3002\u30cf\u30a4\u30c4",
4562 "output": "xn--ucb18e.xn--eck4c5a"
4563 },
4564 {
4565 "input": "xn--ucb18e.xn--eck4c5a",
4566 "output": "xn--ucb18e.xn--eck4c5a"
4567 },
4568 {
4569 "input": "\u0723\u05a3.\u30cf\u30a4\u30c4",
4570 "output": "xn--ucb18e.xn--eck4c5a"
4571 },
4572 {
4573 "comment": "V7",
4574 "input": "\ud84e\ude6b\uff0e\ud9f1\udc72",
4575 "output": null
4576 },
4577 {
4578 "comment": "V7",
4579 "input": "\ud84e\ude6b.\ud9f1\udc72",
4580 "output": null
4581 },
4582 {
4583 "comment": "V7",
4584 "input": "xn--td3j.xn--4628b",
4585 "output": null
4586 },
4587 {
4588 "input": "xn--skb",
4589 "output": "xn--skb"
4590 },
4591 {
4592 "input": "\u06b9",
4593 "output": "xn--skb"
4594 },
4595 {
4596 "comment": "V6; V3 (ignored)",
4597 "input": "\u0c4d\ud836\ude3e\u05a9\ud835\udfed\u3002-\ud805\udf28",
4598 "output": null
4599 },
4600 {
4601 "comment": "V6; V3 (ignored)",
4602 "input": "\u0c4d\ud836\ude3e\u05a91\u3002-\ud805\udf28",
4603 "output": null
4604 },
4605 {
4606 "comment": "V6; V3 (ignored)",
4607 "input": "xn--1-rfc312cdp45c.xn----nq0j",
4608 "output": null
4609 },
4610 {
4611 "comment": "V7",
4612 "input": "\uda4f\udfc8\u3002\ub64f",
4613 "output": null
4614 },
4615 {
4616 "comment": "V7",
4617 "input": "\uda4f\udfc8\u3002\u1104\u116b\u11ae",
4618 "output": null
4619 },
4620 {
4621 "comment": "V7",
4622 "input": "xn--ph26c.xn--281b",
4623 "output": null
4624 },
4625 {
4626 "comment": "V7",
4627 "input": "\ud916\ude1a\udb40\udd0c\udb07\udf40\u1840.\u08b6",
4628 "output": null
4629 },
4630 {
4631 "comment": "V7",
4632 "input": "xn--z7e98100evc01b.xn--czb",
4633 "output": null
4634 },
4635 {
4636 "comment": "C2; V7",
4637 "input": "\u200d\uff61\ud8d4\udc5b",
4638 "output": null
4639 },
4640 {
4641 "comment": "C2; V7",
4642 "input": "\u200d\u3002\ud8d4\udc5b",
4643 "output": null
4644 },
4645 {
4646 "comment": "V7; A4_2 (ignored)",
4647 "input": ".xn--6x4u",
4648 "output": null
4649 },
4650 {
4651 "comment": "C2; V7",
4652 "input": "xn--1ug.xn--6x4u",
4653 "output": null
4654 },
4655 {
4656 "comment": "C1; V7",
4657 "input": "\ufff9\u200c\uff61\u66f3\u2f91\ud800\udef0\u226f",
4658 "output": null
4659 },
4660 {
4661 "comment": "C1; V7",
4662 "input": "\ufff9\u200c\uff61\u66f3\u2f91\ud800\udef0>\u0338",
4663 "output": null
4664 },
4665 {
4666 "comment": "C1; V7",
4667 "input": "\ufff9\u200c\u3002\u66f3\u897e\ud800\udef0\u226f",
4668 "output": null
4669 },
4670 {
4671 "comment": "C1; V7",
4672 "input": "\ufff9\u200c\u3002\u66f3\u897e\ud800\udef0>\u0338",
4673 "output": null
4674 },
4675 {
4676 "comment": "V7",
4677 "input": "xn--vn7c.xn--hdh501y8wvfs5h",
4678 "output": null
4679 },
4680 {
4681 "comment": "C1; V7",
4682 "input": "xn--0ug2139f.xn--hdh501y8wvfs5h",
4683 "output": null
4684 },
4685 {
4686 "comment": "V7",
4687 "input": "\u226f\u2488\u3002\u00df",
4688 "output": null
4689 },
4690 {
4691 "comment": "V7",
4692 "input": ">\u0338\u2488\u3002\u00df",
4693 "output": null
4694 },
4695 {
4696 "comment": "A4_2 (ignored)",
4697 "input": "\u226f1.\u3002\u00df",
4698 "output": "xn--1-ogo..xn--zca"
4699 },
4700 {
4701 "comment": "A4_2 (ignored)",
4702 "input": ">\u03381.\u3002\u00df",
4703 "output": "xn--1-ogo..xn--zca"
4704 },
4705 {
4706 "comment": "A4_2 (ignored)",
4707 "input": ">\u03381.\u3002SS",
4708 "output": "xn--1-ogo..ss"
4709 },
4710 {
4711 "comment": "A4_2 (ignored)",
4712 "input": "\u226f1.\u3002SS",
4713 "output": "xn--1-ogo..ss"
4714 },
4715 {
4716 "comment": "A4_2 (ignored)",
4717 "input": "\u226f1.\u3002ss",
4718 "output": "xn--1-ogo..ss"
4719 },
4720 {
4721 "comment": "A4_2 (ignored)",
4722 "input": ">\u03381.\u3002ss",
4723 "output": "xn--1-ogo..ss"
4724 },
4725 {
4726 "comment": "A4_2 (ignored)",
4727 "input": ">\u03381.\u3002Ss",
4728 "output": "xn--1-ogo..ss"
4729 },
4730 {
4731 "comment": "A4_2 (ignored)",
4732 "input": "\u226f1.\u3002Ss",
4733 "output": "xn--1-ogo..ss"
4734 },
4735 {
4736 "comment": "A4_2 (ignored)",
4737 "input": "xn--1-ogo..ss",
4738 "output": "xn--1-ogo..ss"
4739 },
4740 {
4741 "comment": "A4_2 (ignored)",
4742 "input": "xn--1-ogo..xn--zca",
4743 "output": "xn--1-ogo..xn--zca"
4744 },
4745 {
4746 "comment": "V7",
4747 "input": ">\u0338\u2488\u3002SS",
4748 "output": null
4749 },
4750 {
4751 "comment": "V7",
4752 "input": "\u226f\u2488\u3002SS",
4753 "output": null
4754 },
4755 {
4756 "comment": "V7",
4757 "input": "\u226f\u2488\u3002ss",
4758 "output": null
4759 },
4760 {
4761 "comment": "V7",
4762 "input": ">\u0338\u2488\u3002ss",
4763 "output": null
4764 },
4765 {
4766 "comment": "V7",
4767 "input": ">\u0338\u2488\u3002Ss",
4768 "output": null
4769 },
4770 {
4771 "comment": "V7",
4772 "input": "\u226f\u2488\u3002Ss",
4773 "output": null
4774 },
4775 {
4776 "comment": "V7",
4777 "input": "xn--hdh84f.ss",
4778 "output": null
4779 },
4780 {
4781 "comment": "V7",
4782 "input": "xn--hdh84f.xn--zca",
4783 "output": null
4784 },
4785 {
4786 "comment": "C1",
4787 "input": "\u200c\uff61\u2260",
4788 "output": null
4789 },
4790 {
4791 "comment": "C1",
4792 "input": "\u200c\uff61=\u0338",
4793 "output": null
4794 },
4795 {
4796 "comment": "C1",
4797 "input": "\u200c\u3002\u2260",
4798 "output": null
4799 },
4800 {
4801 "comment": "C1",
4802 "input": "\u200c\u3002=\u0338",
4803 "output": null
4804 },
4805 {
4806 "comment": "A4_2 (ignored)",
4807 "input": ".xn--1ch",
4808 "output": ".xn--1ch"
4809 },
4810 {
4811 "comment": "C1",
4812 "input": "xn--0ug.xn--1ch",
4813 "output": null
4814 },
4815 {
4816 "comment": "C1; V6",
4817 "input": "\ud805\uddbf\ud836\ude14.\u185f\ud805\uddbf\u1b42\u200c",
4818 "output": null
4819 },
4820 {
4821 "comment": "V6",
4822 "input": "xn--461dw464a.xn--v8e29loy65a",
4823 "output": null
4824 },
4825 {
4826 "comment": "C1; V6",
4827 "input": "xn--461dw464a.xn--v8e29ldzfo952a",
4828 "output": null
4829 },
4830 {
4831 "comment": "C2; V6; V7; V3 (ignored)",
4832 "input": "\uda12\udcf3\u200d\uda05\udf71.\ud81a\udf34\u2183\u2260-",
4833 "output": null
4834 },
4835 {
4836 "comment": "C2; V6; V7; V3 (ignored)",
4837 "input": "\uda12\udcf3\u200d\uda05\udf71.\ud81a\udf34\u2183=\u0338-",
4838 "output": null
4839 },
4840 {
4841 "comment": "C2; V6; V7; V3 (ignored)",
4842 "input": "\uda12\udcf3\u200d\uda05\udf71.\ud81a\udf34\u2184=\u0338-",
4843 "output": null
4844 },
4845 {
4846 "comment": "C2; V6; V7; V3 (ignored)",
4847 "input": "\uda12\udcf3\u200d\uda05\udf71.\ud81a\udf34\u2184\u2260-",
4848 "output": null
4849 },
4850 {
4851 "comment": "V6; V7; V3 (ignored)",
4852 "input": "xn--6j00chy9a.xn----81n51bt713h",
4853 "output": null
4854 },
4855 {
4856 "comment": "C2; V6; V7; V3 (ignored)",
4857 "input": "xn--1ug15151gkb5a.xn----81n51bt713h",
4858 "output": null
4859 },
4860 {
4861 "comment": "V6; V7; V3 (ignored)",
4862 "input": "xn--6j00chy9a.xn----61n81bt713h",
4863 "output": null
4864 },
4865 {
4866 "comment": "C2; V6; V7; V3 (ignored)",
4867 "input": "xn--1ug15151gkb5a.xn----61n81bt713h",
4868 "output": null
4869 },
4870 {
4871 "comment": "C2; V6",
4872 "input": "\u200d\u252e\udb40\uddd0\uff0e\u0c00\u0c4d\u1734\u200d",
4873 "output": null
4874 },
4875 {
4876 "comment": "C2; V6",
4877 "input": "\u200d\u252e\udb40\uddd0.\u0c00\u0c4d\u1734\u200d",
4878 "output": null
4879 },
4880 {
4881 "comment": "V6",
4882 "input": "xn--kxh.xn--eoc8m432a",
4883 "output": null
4884 },
4885 {
4886 "comment": "C2; V6",
4887 "input": "xn--1ug04r.xn--eoc8m432a40i",
4888 "output": null
4889 },
4890 {
4891 "comment": "V7; U1 (ignored)",
4892 "input": "\udaa5\udeaa\uff61\ud83c\udd02",
4893 "output": null
4894 },
4895 {
4896 "comment": "V7; U1 (ignored)",
4897 "input": "\udaa5\udeaa\u30021,",
4898 "output": null
4899 },
4900 {
4901 "comment": "V7; U1 (ignored)",
4902 "input": "xn--n433d.1,",
4903 "output": null
4904 },
4905 {
4906 "comment": "V7",
4907 "input": "xn--n433d.xn--v07h",
4908 "output": null
4909 },
4910 {
4911 "comment": "V6",
4912 "input": "\ud804\udf68\u520d.\ud83d\udee6",
4913 "output": null
4914 },
4915 {
4916 "comment": "V6",
4917 "input": "xn--rbry728b.xn--y88h",
4918 "output": null
4919 },
4920 {
4921 "comment": "V6; V7",
4922 "input": "\udb40\udf0f3\uff61\u1bf1\ud835\udfd2",
4923 "output": null
4924 },
4925 {
4926 "comment": "V6; V7",
4927 "input": "\udb40\udf0f3\u3002\u1bf14",
4928 "output": null
4929 },
4930 {
4931 "comment": "V6; V7",
4932 "input": "xn--3-ib31m.xn--4-pql",
4933 "output": null
4934 },
4935 {
4936 "comment": "V7",
4937 "input": "\ua87d\u226f\uff0e\udaaf\udc80\uda0b\udcc4",
4938 "output": null
4939 },
4940 {
4941 "comment": "V7",
4942 "input": "\ua87d>\u0338\uff0e\udaaf\udc80\uda0b\udcc4",
4943 "output": null
4944 },
4945 {
4946 "comment": "V7",
4947 "input": "\ua87d\u226f.\udaaf\udc80\uda0b\udcc4",
4948 "output": null
4949 },
4950 {
4951 "comment": "V7",
4952 "input": "\ua87d>\u0338.\udaaf\udc80\uda0b\udcc4",
4953 "output": null
4954 },
4955 {
4956 "comment": "V7",
4957 "input": "xn--hdh8193c.xn--5z40cp629b",
4958 "output": null
4959 },
4960 {
4961 "comment": "C2; V7",
4962 "input": "\udb43\udcdb\uff0e\u200d\u492b\u2260\u10be",
4963 "output": null
4964 },
4965 {
4966 "comment": "C2; V7",
4967 "input": "\udb43\udcdb\uff0e\u200d\u492b=\u0338\u10be",
4968 "output": null
4969 },
4970 {
4971 "comment": "C2; V7",
4972 "input": "\udb43\udcdb.\u200d\u492b\u2260\u10be",
4973 "output": null
4974 },
4975 {
4976 "comment": "C2; V7",
4977 "input": "\udb43\udcdb.\u200d\u492b=\u0338\u10be",
4978 "output": null
4979 },
4980 {
4981 "comment": "C2; V7",
4982 "input": "\udb43\udcdb.\u200d\u492b=\u0338\u2d1e",
4983 "output": null
4984 },
4985 {
4986 "comment": "C2; V7",
4987 "input": "\udb43\udcdb.\u200d\u492b\u2260\u2d1e",
4988 "output": null
4989 },
4990 {
4991 "comment": "V7",
4992 "input": "xn--1t56e.xn--1ch153bqvw",
4993 "output": null
4994 },
4995 {
4996 "comment": "C2; V7",
4997 "input": "xn--1t56e.xn--1ug73gzzpwi3a",
4998 "output": null
4999 },
5000 {
5001 "comment": "C2; V7",
5002 "input": "\udb43\udcdb\uff0e\u200d\u492b=\u0338\u2d1e",
5003 "output": null
5004 },
5005 {
5006 "comment": "C2; V7",
5007 "input": "\udb43\udcdb\uff0e\u200d\u492b\u2260\u2d1e",
5008 "output": null
5009 },
5010 {
5011 "comment": "V7",
5012 "input": "xn--1t56e.xn--2nd141ghl2a",
5013 "output": null
5014 },
5015 {
5016 "comment": "C2; V7",
5017 "input": "xn--1t56e.xn--2nd159e9vb743e",
5018 "output": null
5019 },
5020 {
5021 "comment": "V6",
5022 "input": "3.1.xn--110d.j",
5023 "output": null
5024 },
5025 {
5026 "comment": "V7",
5027 "input": "xn--tshd3512p.j",
5028 "output": null
5029 },
5030 {
5031 "comment": "V6",
5032 "input": "\u034a\uff0e\ud802\ude0e",
5033 "output": null
5034 },
5035 {
5036 "comment": "V6",
5037 "input": "\u034a.\ud802\ude0e",
5038 "output": null
5039 },
5040 {
5041 "comment": "V6",
5042 "input": "xn--oua.xn--mr9c",
5043 "output": null
5044 },
5045 {
5046 "comment": "V6",
5047 "input": "\ud6c9\u226e\uff61\u0e34",
5048 "output": null
5049 },
5050 {
5051 "comment": "V6",
5052 "input": "\u1112\u116e\u11ac<\u0338\uff61\u0e34",
5053 "output": null
5054 },
5055 {
5056 "comment": "V6",
5057 "input": "\ud6c9\u226e\u3002\u0e34",
5058 "output": null
5059 },
5060 {
5061 "comment": "V6",
5062 "input": "\u1112\u116e\u11ac<\u0338\u3002\u0e34",
5063 "output": null
5064 },
5065 {
5066 "comment": "V6",
5067 "input": "xn--gdh2512e.xn--i4c",
5068 "output": null
5069 },
5070 {
5071 "comment": "V3 (ignored)",
5072 "input": "\ua846\u3002\u2183\u0fb5\ub1ae-",
5073 "output": "xn--fc9a.xn----qmg097k469k"
5074 },
5075 {
5076 "comment": "V3 (ignored)",
5077 "input": "\ua846\u3002\u2183\u0fb5\u1102\u116a\u11c1-",
5078 "output": "xn--fc9a.xn----qmg097k469k"
5079 },
5080 {
5081 "comment": "V3 (ignored)",
5082 "input": "\ua846\u3002\u2184\u0fb5\u1102\u116a\u11c1-",
5083 "output": "xn--fc9a.xn----qmg097k469k"
5084 },
5085 {
5086 "comment": "V3 (ignored)",
5087 "input": "\ua846\u3002\u2184\u0fb5\ub1ae-",
5088 "output": "xn--fc9a.xn----qmg097k469k"
5089 },
5090 {
5091 "comment": "V3 (ignored)",
5092 "input": "xn--fc9a.xn----qmg097k469k",
5093 "output": "xn--fc9a.xn----qmg097k469k"
5094 },
5095 {
5096 "comment": "V7; V3 (ignored)",
5097 "input": "xn--fc9a.xn----qmg787k869k",
5098 "output": null
5099 },
5100 {
5101 "comment": "V7",
5102 "input": "\u226e\ud834\udd76\uff0e\ud987\udc81\uaaec\u2e48\udb82\udd6d",
5103 "output": null
5104 },
5105 {
5106 "comment": "V7",
5107 "input": "<\u0338\ud834\udd76\uff0e\ud987\udc81\uaaec\u2e48\udb82\udd6d",
5108 "output": null
5109 },
5110 {
5111 "comment": "V7",
5112 "input": "\u226e\ud834\udd76.\ud987\udc81\uaaec\u2e48\udb82\udd6d",
5113 "output": null
5114 },
5115 {
5116 "comment": "V7",
5117 "input": "<\u0338\ud834\udd76.\ud987\udc81\uaaec\u2e48\udb82\udd6d",
5118 "output": null
5119 },
5120 {
5121 "comment": "V7",
5122 "input": "xn--gdh.xn--4tjx101bsg00ds9pyc",
5123 "output": null
5124 },
5125 {
5126 "comment": "V7",
5127 "input": "xn--gdh0880o.xn--4tjx101bsg00ds9pyc",
5128 "output": null
5129 },
5130 {
5131 "comment": "C2; V6; V7",
5132 "input": "\ud805\udc42\uff61\u200d\udb55\udf80\ud83d\udf95\uda54\udc54",
5133 "output": null
5134 },
5135 {
5136 "comment": "C2; V6; V7",
5137 "input": "\ud805\udc42\u3002\u200d\udb55\udf80\ud83d\udf95\uda54\udc54",
5138 "output": null
5139 },
5140 {
5141 "comment": "V6; V7",
5142 "input": "xn--8v1d.xn--ye9h41035a2qqs",
5143 "output": null
5144 },
5145 {
5146 "comment": "C2; V6; V7",
5147 "input": "xn--8v1d.xn--1ug1386plvx1cd8vya",
5148 "output": null
5149 },
5150 {
5151 "input": "\u00df\u09c1\u1ded\u3002\u06208\u2085",
5152 "output": "xn--zca266bwrr.xn--85-psd"
5153 },
5154 {
5155 "input": "\u00df\u09c1\u1ded\u3002\u062085",
5156 "output": "xn--zca266bwrr.xn--85-psd"
5157 },
5158 {
5159 "input": "SS\u09c1\u1ded\u3002\u062085",
5160 "output": "xn--ss-e2f077r.xn--85-psd"
5161 },
5162 {
5163 "input": "ss\u09c1\u1ded\u3002\u062085",
5164 "output": "xn--ss-e2f077r.xn--85-psd"
5165 },
5166 {
5167 "input": "Ss\u09c1\u1ded\u3002\u062085",
5168 "output": "xn--ss-e2f077r.xn--85-psd"
5169 },
5170 {
5171 "input": "xn--ss-e2f077r.xn--85-psd",
5172 "output": "xn--ss-e2f077r.xn--85-psd"
5173 },
5174 {
5175 "input": "ss\u09c1\u1ded.\u062085",
5176 "output": "xn--ss-e2f077r.xn--85-psd"
5177 },
5178 {
5179 "input": "SS\u09c1\u1ded.\u062085",
5180 "output": "xn--ss-e2f077r.xn--85-psd"
5181 },
5182 {
5183 "input": "Ss\u09c1\u1ded.\u062085",
5184 "output": "xn--ss-e2f077r.xn--85-psd"
5185 },
5186 {
5187 "input": "xn--zca266bwrr.xn--85-psd",
5188 "output": "xn--zca266bwrr.xn--85-psd"
5189 },
5190 {
5191 "input": "\u00df\u09c1\u1ded.\u062085",
5192 "output": "xn--zca266bwrr.xn--85-psd"
5193 },
5194 {
5195 "input": "SS\u09c1\u1ded\u3002\u06208\u2085",
5196 "output": "xn--ss-e2f077r.xn--85-psd"
5197 },
5198 {
5199 "input": "ss\u09c1\u1ded\u3002\u06208\u2085",
5200 "output": "xn--ss-e2f077r.xn--85-psd"
5201 },
5202 {
5203 "input": "Ss\u09c1\u1ded\u3002\u06208\u2085",
5204 "output": "xn--ss-e2f077r.xn--85-psd"
5205 },
5206 {
5207 "input": "\ufe0d\u0a9b\u3002\u5d68",
5208 "output": "xn--6dc.xn--tot"
5209 },
5210 {
5211 "input": "xn--6dc.xn--tot",
5212 "output": "xn--6dc.xn--tot"
5213 },
5214 {
5215 "input": "\u0a9b.\u5d68",
5216 "output": "xn--6dc.xn--tot"
5217 },
5218 {
5219 "comment": "C1; V6; V7; V3 (ignored)",
5220 "input": "-\u200c\u2499\ud802\udee5\uff61\ud836\ude35",
5221 "output": null
5222 },
5223 {
5224 "comment": "C1; V6; V3 (ignored)",
5225 "input": "-\u200c18.\ud802\udee5\u3002\ud836\ude35",
5226 "output": null
5227 },
5228 {
5229 "comment": "V6; V3 (ignored)",
5230 "input": "-18.xn--rx9c.xn--382h",
5231 "output": null
5232 },
5233 {
5234 "comment": "C1; V6; V3 (ignored)",
5235 "input": "xn---18-9m0a.xn--rx9c.xn--382h",
5236 "output": null
5237 },
5238 {
5239 "comment": "V6; V7; V3 (ignored)",
5240 "input": "xn----ddps939g.xn--382h",
5241 "output": null
5242 },
5243 {
5244 "comment": "C1; V6; V7; V3 (ignored)",
5245 "input": "xn----sgn18r3191a.xn--382h",
5246 "output": null
5247 },
5248 {
5249 "comment": "V7",
5250 "input": "\ufe05\ufe12\u3002\ud858\udc3e\u1ce0",
5251 "output": null
5252 },
5253 {
5254 "comment": "A4_2 (ignored)",
5255 "input": "\ufe05\u3002\u3002\ud858\udc3e\u1ce0",
5256 "output": "..xn--t6f5138v"
5257 },
5258 {
5259 "comment": "A4_2 (ignored)",
5260 "input": "..xn--t6f5138v",
5261 "output": "..xn--t6f5138v"
5262 },
5263 {
5264 "comment": "V7",
5265 "input": "xn--y86c.xn--t6f5138v",
5266 "output": null
5267 },
5268 {
5269 "input": "xn--t6f5138v",
5270 "output": "xn--t6f5138v"
5271 },
5272 {
5273 "input": "\ud858\udc3e\u1ce0",
5274 "output": "xn--t6f5138v"
5275 },
5276 {
5277 "comment": "C1; V7; V3 (ignored)",
5278 "input": "\udb41\udd4f\uff0e-\u00df\u200c\u2260",
5279 "output": null
5280 },
5281 {
5282 "comment": "C1; V7; V3 (ignored)",
5283 "input": "\udb41\udd4f\uff0e-\u00df\u200c=\u0338",
5284 "output": null
5285 },
5286 {
5287 "comment": "C1; V7; V3 (ignored)",
5288 "input": "\udb41\udd4f.-\u00df\u200c\u2260",
5289 "output": null
5290 },
5291 {
5292 "comment": "C1; V7; V3 (ignored)",
5293 "input": "\udb41\udd4f.-\u00df\u200c=\u0338",
5294 "output": null
5295 },
5296 {
5297 "comment": "C1; V7; V3 (ignored)",
5298 "input": "\udb41\udd4f.-SS\u200c=\u0338",
5299 "output": null
5300 },
5301 {
5302 "comment": "C1; V7; V3 (ignored)",
5303 "input": "\udb41\udd4f.-SS\u200c\u2260",
5304 "output": null
5305 },
5306 {
5307 "comment": "C1; V7; V3 (ignored)",
5308 "input": "\udb41\udd4f.-ss\u200c\u2260",
5309 "output": null
5310 },
5311 {
5312 "comment": "C1; V7; V3 (ignored)",
5313 "input": "\udb41\udd4f.-ss\u200c=\u0338",
5314 "output": null
5315 },
5316 {
5317 "comment": "C1; V7; V3 (ignored)",
5318 "input": "\udb41\udd4f.-Ss\u200c=\u0338",
5319 "output": null
5320 },
5321 {
5322 "comment": "C1; V7; V3 (ignored)",
5323 "input": "\udb41\udd4f.-Ss\u200c\u2260",
5324 "output": null
5325 },
5326 {
5327 "comment": "V7; V3 (ignored)",
5328 "input": "xn--u836e.xn---ss-gl2a",
5329 "output": null
5330 },
5331 {
5332 "comment": "C1; V7; V3 (ignored)",
5333 "input": "xn--u836e.xn---ss-cn0at5l",
5334 "output": null
5335 },
5336 {
5337 "comment": "C1; V7; V3 (ignored)",
5338 "input": "xn--u836e.xn----qfa750ve7b",
5339 "output": null
5340 },
5341 {
5342 "comment": "C1; V7; V3 (ignored)",
5343 "input": "\udb41\udd4f\uff0e-SS\u200c=\u0338",
5344 "output": null
5345 },
5346 {
5347 "comment": "C1; V7; V3 (ignored)",
5348 "input": "\udb41\udd4f\uff0e-SS\u200c\u2260",
5349 "output": null
5350 },
5351 {
5352 "comment": "C1; V7; V3 (ignored)",
5353 "input": "\udb41\udd4f\uff0e-ss\u200c\u2260",
5354 "output": null
5355 },
5356 {
5357 "comment": "C1; V7; V3 (ignored)",
5358 "input": "\udb41\udd4f\uff0e-ss\u200c=\u0338",
5359 "output": null
5360 },
5361 {
5362 "comment": "C1; V7; V3 (ignored)",
5363 "input": "\udb41\udd4f\uff0e-Ss\u200c=\u0338",
5364 "output": null
5365 },
5366 {
5367 "comment": "C1; V7; V3 (ignored)",
5368 "input": "\udb41\udd4f\uff0e-Ss\u200c\u2260",
5369 "output": null
5370 },
5371 {
5372 "comment": "C1",
5373 "input": "\u1859\u200c\uff61\u226f\ud800\udef2\u2260",
5374 "output": null
5375 },
5376 {
5377 "comment": "C1",
5378 "input": "\u1859\u200c\uff61>\u0338\ud800\udef2=\u0338",
5379 "output": null
5380 },
5381 {
5382 "comment": "C1",
5383 "input": "\u1859\u200c\u3002\u226f\ud800\udef2\u2260",
5384 "output": null
5385 },
5386 {
5387 "comment": "C1",
5388 "input": "\u1859\u200c\u3002>\u0338\ud800\udef2=\u0338",
5389 "output": null
5390 },
5391 {
5392 "input": "xn--p8e.xn--1ch3a7084l",
5393 "output": "xn--p8e.xn--1ch3a7084l"
5394 },
5395 {
5396 "input": "\u1859.\u226f\ud800\udef2\u2260",
5397 "output": "xn--p8e.xn--1ch3a7084l"
5398 },
5399 {
5400 "input": "\u1859.>\u0338\ud800\udef2=\u0338",
5401 "output": "xn--p8e.xn--1ch3a7084l"
5402 },
5403 {
5404 "comment": "C1",
5405 "input": "xn--p8e650b.xn--1ch3a7084l",
5406 "output": null
5407 },
5408 {
5409 "comment": "V7",
5410 "input": "\uda7b\udd5b\u0613.\u10b5",
5411 "output": null
5412 },
5413 {
5414 "comment": "V7",
5415 "input": "\uda7b\udd5b\u0613.\u2d15",
5416 "output": null
5417 },
5418 {
5419 "comment": "V7",
5420 "input": "xn--1fb94204l.xn--dlj",
5421 "output": null
5422 },
5423 {
5424 "comment": "V7",
5425 "input": "xn--1fb94204l.xn--tnd",
5426 "output": null
5427 },
5428 {
5429 "comment": "C1; V7",
5430 "input": "\u200c\udb40\udd37\uff61\uda09\udc41",
5431 "output": null
5432 },
5433 {
5434 "comment": "C1; V7",
5435 "input": "\u200c\udb40\udd37\u3002\uda09\udc41",
5436 "output": null
5437 },
5438 {
5439 "comment": "V7; A4_2 (ignored)",
5440 "input": ".xn--w720c",
5441 "output": null
5442 },
5443 {
5444 "comment": "C1; V7",
5445 "input": "xn--0ug.xn--w720c",
5446 "output": null
5447 },
5448 {
5449 "comment": "C2; V7",
5450 "input": "\u2488\u0dd6\u7105.\udb1e\udc59\u200d\ua85f",
5451 "output": null
5452 },
5453 {
5454 "comment": "C2; V6; V7",
5455 "input": "1.\u0dd6\u7105.\udb1e\udc59\u200d\ua85f",
5456 "output": null
5457 },
5458 {
5459 "comment": "V6; V7",
5460 "input": "1.xn--t1c6981c.xn--4c9a21133d",
5461 "output": null
5462 },
5463 {
5464 "comment": "C2; V6; V7",
5465 "input": "1.xn--t1c6981c.xn--1ugz184c9lw7i",
5466 "output": null
5467 },
5468 {
5469 "comment": "V7",
5470 "input": "xn--t1c337io97c.xn--4c9a21133d",
5471 "output": null
5472 },
5473 {
5474 "comment": "C2; V7",
5475 "input": "xn--t1c337io97c.xn--1ugz184c9lw7i",
5476 "output": null
5477 },
5478 {
5479 "comment": "V6",
5480 "input": "\ud804\uddc0\u258d.\u205e\u1830",
5481 "output": null
5482 },
5483 {
5484 "comment": "V6",
5485 "input": "xn--9zh3057f.xn--j7e103b",
5486 "output": null
5487 },
5488 {
5489 "comment": "C2; V3 (ignored)",
5490 "input": "-3.\u200d\u30cc\u1895",
5491 "output": null
5492 },
5493 {
5494 "comment": "V3 (ignored)",
5495 "input": "-3.xn--fbf115j",
5496 "output": "-3.xn--fbf115j"
5497 },
5498 {
5499 "comment": "C2; V3 (ignored)",
5500 "input": "-3.xn--fbf739aq5o",
5501 "output": null
5502 },
5503 {
5504 "comment": "C1; C2",
5505 "input": "\u2132\u17d2\u200d\uff61\u2260\u200d\u200c",
5506 "output": null
5507 },
5508 {
5509 "comment": "C1; C2",
5510 "input": "\u2132\u17d2\u200d\uff61=\u0338\u200d\u200c",
5511 "output": null
5512 },
5513 {
5514 "comment": "C1; C2",
5515 "input": "\u2132\u17d2\u200d\u3002\u2260\u200d\u200c",
5516 "output": null
5517 },
5518 {
5519 "comment": "C1; C2",
5520 "input": "\u2132\u17d2\u200d\u3002=\u0338\u200d\u200c",
5521 "output": null
5522 },
5523 {
5524 "comment": "C1; C2",
5525 "input": "\u214e\u17d2\u200d\u3002=\u0338\u200d\u200c",
5526 "output": null
5527 },
5528 {
5529 "comment": "C1; C2",
5530 "input": "\u214e\u17d2\u200d\u3002\u2260\u200d\u200c",
5531 "output": null
5532 },
5533 {
5534 "input": "xn--u4e969b.xn--1ch",
5535 "output": "xn--u4e969b.xn--1ch"
5536 },
5537 {
5538 "input": "\u214e\u17d2.\u2260",
5539 "output": "xn--u4e969b.xn--1ch"
5540 },
5541 {
5542 "input": "\u214e\u17d2.=\u0338",
5543 "output": "xn--u4e969b.xn--1ch"
5544 },
5545 {
5546 "input": "\u2132\u17d2.=\u0338",
5547 "output": "xn--u4e969b.xn--1ch"
5548 },
5549 {
5550 "input": "\u2132\u17d2.\u2260",
5551 "output": "xn--u4e969b.xn--1ch"
5552 },
5553 {
5554 "comment": "C1; C2",
5555 "input": "xn--u4e823bq1a.xn--0ugb89o",
5556 "output": null
5557 },
5558 {
5559 "comment": "C1; C2",
5560 "input": "\u214e\u17d2\u200d\uff61=\u0338\u200d\u200c",
5561 "output": null
5562 },
5563 {
5564 "comment": "C1; C2",
5565 "input": "\u214e\u17d2\u200d\uff61\u2260\u200d\u200c",
5566 "output": null
5567 },
5568 {
5569 "comment": "V7",
5570 "input": "xn--u4e319b.xn--1ch",
5571 "output": null
5572 },
5573 {
5574 "comment": "C1; C2; V7",
5575 "input": "xn--u4e823bcza.xn--0ugb89o",
5576 "output": null
5577 },
5578 {
5579 "comment": "V7",
5580 "input": "\ud9a9\udd2f\u0fa8\uff0e\u226f",
5581 "output": null
5582 },
5583 {
5584 "comment": "V7",
5585 "input": "\ud9a9\udd2f\u0fa8\uff0e>\u0338",
5586 "output": null
5587 },
5588 {
5589 "comment": "V7",
5590 "input": "\ud9a9\udd2f\u0fa8.\u226f",
5591 "output": null
5592 },
5593 {
5594 "comment": "V7",
5595 "input": "\ud9a9\udd2f\u0fa8.>\u0338",
5596 "output": null
5597 },
5598 {
5599 "comment": "V7",
5600 "input": "xn--4fd57150h.xn--hdh",
5601 "output": null
5602 },
5603 {
5604 "comment": "V6",
5605 "input": "\ud802\ude3f\udb40\udd8c\u9e2e\ud805\udeb6.\u03c2",
5606 "output": null
5607 },
5608 {
5609 "comment": "V6",
5610 "input": "\ud802\ude3f\udb40\udd8c\u9e2e\ud805\udeb6.\u03a3",
5611 "output": null
5612 },
5613 {
5614 "comment": "V6",
5615 "input": "\ud802\ude3f\udb40\udd8c\u9e2e\ud805\udeb6.\u03c3",
5616 "output": null
5617 },
5618 {
5619 "comment": "V6",
5620 "input": "xn--l76a726rt2h.xn--4xa",
5621 "output": null
5622 },
5623 {
5624 "comment": "V6",
5625 "input": "xn--l76a726rt2h.xn--3xa",
5626 "output": null
5627 },
5628 {
5629 "comment": "C1; V3 (ignored)",
5630 "input": "\u03c2-\u3002\u200c\ud835\udfed-",
5631 "output": null
5632 },
5633 {
5634 "comment": "C1; V3 (ignored)",
5635 "input": "\u03c2-\u3002\u200c1-",
5636 "output": null
5637 },
5638 {
5639 "comment": "C1; V3 (ignored)",
5640 "input": "\u03a3-\u3002\u200c1-",
5641 "output": null
5642 },
5643 {
5644 "comment": "C1; V3 (ignored)",
5645 "input": "\u03c3-\u3002\u200c1-",
5646 "output": null
5647 },
5648 {
5649 "comment": "V3 (ignored)",
5650 "input": "xn----zmb.1-",
5651 "output": "xn----zmb.1-"
5652 },
5653 {
5654 "comment": "C1; V3 (ignored)",
5655 "input": "xn----zmb.xn--1--i1t",
5656 "output": null
5657 },
5658 {
5659 "comment": "C1; V3 (ignored)",
5660 "input": "xn----xmb.xn--1--i1t",
5661 "output": null
5662 },
5663 {
5664 "comment": "C1; V3 (ignored)",
5665 "input": "\u03a3-\u3002\u200c\ud835\udfed-",
5666 "output": null
5667 },
5668 {
5669 "comment": "C1; V3 (ignored)",
5670 "input": "\u03c3-\u3002\u200c\ud835\udfed-",
5671 "output": null
5672 },
5673 {
5674 "comment": "V6",
5675 "input": "\u1734-\u0ce2\uff0e\udb40\udd29\u10a4",
5676 "output": null
5677 },
5678 {
5679 "comment": "V6",
5680 "input": "\u1734-\u0ce2.\udb40\udd29\u10a4",
5681 "output": null
5682 },
5683 {
5684 "comment": "V6",
5685 "input": "\u1734-\u0ce2.\udb40\udd29\u2d04",
5686 "output": null
5687 },
5688 {
5689 "comment": "V6",
5690 "input": "xn----ggf830f.xn--vkj",
5691 "output": null
5692 },
5693 {
5694 "comment": "V6",
5695 "input": "\u1734-\u0ce2\uff0e\udb40\udd29\u2d04",
5696 "output": null
5697 },
5698 {
5699 "comment": "V6; V7",
5700 "input": "xn----ggf830f.xn--cnd",
5701 "output": null
5702 },
5703 {
5704 "comment": "C2; V6; V7",
5705 "input": "\u200d\u3002\ud838\udc18\u2488\ua84d\u64c9",
5706 "output": null
5707 },
5708 {
5709 "comment": "C2; V6",
5710 "input": "\u200d\u3002\ud838\udc181.\ua84d\u64c9",
5711 "output": null
5712 },
5713 {
5714 "comment": "V6; A4_2 (ignored)",
5715 "input": ".xn--1-1p4r.xn--s7uv61m",
5716 "output": null
5717 },
5718 {
5719 "comment": "C2; V6",
5720 "input": "xn--1ug.xn--1-1p4r.xn--s7uv61m",
5721 "output": null
5722 },
5723 {
5724 "comment": "V6; V7; A4_2 (ignored)",
5725 "input": ".xn--tsh026uql4bew9p",
5726 "output": null
5727 },
5728 {
5729 "comment": "C2; V6; V7",
5730 "input": "xn--1ug.xn--tsh026uql4bew9p",
5731 "output": null
5732 },
5733 {
5734 "comment": "V7",
5735 "input": "\u2ad0\uff61\u10c0-\udacd\udc22",
5736 "output": null
5737 },
5738 {
5739 "comment": "V7",
5740 "input": "\u2ad0\u3002\u10c0-\udacd\udc22",
5741 "output": null
5742 },
5743 {
5744 "comment": "V7",
5745 "input": "\u2ad0\u3002\u2d20-\udacd\udc22",
5746 "output": null
5747 },
5748 {
5749 "comment": "V7",
5750 "input": "xn--r3i.xn----2wst7439i",
5751 "output": null
5752 },
5753 {
5754 "comment": "V7",
5755 "input": "\u2ad0\uff61\u2d20-\udacd\udc22",
5756 "output": null
5757 },
5758 {
5759 "comment": "V7",
5760 "input": "xn--r3i.xn----z1g58579u",
5761 "output": null
5762 },
5763 {
5764 "comment": "V6",
5765 "input": "\ud805\udc42\u25ca\uff0e\u299f\u2220",
5766 "output": null
5767 },
5768 {
5769 "comment": "V6",
5770 "input": "\ud805\udc42\u25ca.\u299f\u2220",
5771 "output": null
5772 },
5773 {
5774 "comment": "V6",
5775 "input": "xn--01h3338f.xn--79g270a",
5776 "output": null
5777 },
5778 {
5779 "comment": "V7",
5780 "input": "\ud5c1\udb21\udd99\u0e3a\udb28\udf5a\u3002\u06ba\ud835\udfdc",
5781 "output": null
5782 },
5783 {
5784 "comment": "V7",
5785 "input": "\u1112\u1164\u11bc\udb21\udd99\u0e3a\udb28\udf5a\u3002\u06ba\ud835\udfdc",
5786 "output": null
5787 },
5788 {
5789 "comment": "V7",
5790 "input": "\ud5c1\udb21\udd99\u0e3a\udb28\udf5a\u3002\u06ba4",
5791 "output": null
5792 },
5793 {
5794 "comment": "V7",
5795 "input": "\u1112\u1164\u11bc\udb21\udd99\u0e3a\udb28\udf5a\u3002\u06ba4",
5796 "output": null
5797 },
5798 {
5799 "comment": "V7",
5800 "input": "xn--o4c1723h8g85gt4ya.xn--4-dvc",
5801 "output": null
5802 },
5803 {
5804 "comment": "V6; V7",
5805 "input": "\ua953.\u033d\ud804\udcbd\u998b",
5806 "output": null
5807 },
5808 {
5809 "comment": "V6; V7",
5810 "input": "xn--3j9a.xn--bua0708eqzrd",
5811 "output": null
5812 },
5813 {
5814 "comment": "C2; V7",
5815 "input": "\udae2\udedd\uda69\udef8\u200d\uff61\u4716",
5816 "output": null
5817 },
5818 {
5819 "comment": "C2; V7",
5820 "input": "\udae2\udedd\uda69\udef8\u200d\u3002\u4716",
5821 "output": null
5822 },
5823 {
5824 "comment": "V7",
5825 "input": "xn--g138cxw05a.xn--k0o",
5826 "output": null
5827 },
5828 {
5829 "comment": "C2; V7",
5830 "input": "xn--1ug30527h9mxi.xn--k0o",
5831 "output": null
5832 },
5833 {
5834 "comment": "C2; U1 (ignored)",
5835 "input": "\u186f\u2689\u59f6\ud83c\udd09\uff0e\u06f7\u200d\ud83c\udfaa\u200d",
5836 "output": null
5837 },
5838 {
5839 "comment": "C2; U1 (ignored)",
5840 "input": "\u186f\u2689\u59f68,.\u06f7\u200d\ud83c\udfaa\u200d",
5841 "output": null
5842 },
5843 {
5844 "comment": "U1 (ignored)",
5845 "input": "xn--8,-g9oy26fzu4d.xn--kmb6733w",
5846 "output": "xn--8,-g9oy26fzu4d.xn--kmb6733w"
5847 },
5848 {
5849 "comment": "C2; U1 (ignored)",
5850 "input": "xn--8,-g9oy26fzu4d.xn--kmb859ja94998b",
5851 "output": null
5852 },
5853 {
5854 "comment": "V7",
5855 "input": "xn--c9e433epi4b3j20a.xn--kmb6733w",
5856 "output": null
5857 },
5858 {
5859 "comment": "C2; V7",
5860 "input": "xn--c9e433epi4b3j20a.xn--kmb859ja94998b",
5861 "output": null
5862 },
5863 {
5864 "comment": "C1; V6; V7; V3 (ignored)",
5865 "input": "\u135f\u1848\u200c\uff0e\ufe12-\ud81b\udf90-",
5866 "output": null
5867 },
5868 {
5869 "comment": "C1; V6; V3 (ignored); A4_2 (ignored)",
5870 "input": "\u135f\u1848\u200c.\u3002-\ud81b\udf90-",
5871 "output": null
5872 },
5873 {
5874 "comment": "V6; V3 (ignored); A4_2 (ignored)",
5875 "input": "xn--b7d82w..xn-----pe4u",
5876 "output": null
5877 },
5878 {
5879 "comment": "C1; V6; V3 (ignored); A4_2 (ignored)",
5880 "input": "xn--b7d82wo4h..xn-----pe4u",
5881 "output": null
5882 },
5883 {
5884 "comment": "V6; V7; V3 (ignored)",
5885 "input": "xn--b7d82w.xn-----c82nz547a",
5886 "output": null
5887 },
5888 {
5889 "comment": "C1; V6; V7; V3 (ignored)",
5890 "input": "xn--b7d82wo4h.xn-----c82nz547a",
5891 "output": null
5892 },
5893 {
5894 "comment": "V6; V3 (ignored)",
5895 "input": "\ud836\ude5c\u3002-\u0b4d\u10ab",
5896 "output": null
5897 },
5898 {
5899 "comment": "V6; V3 (ignored)",
5900 "input": "\ud836\ude5c\u3002-\u0b4d\u2d0b",
5901 "output": null
5902 },
5903 {
5904 "comment": "V6; V3 (ignored)",
5905 "input": "xn--792h.xn----bse820x",
5906 "output": null
5907 },
5908 {
5909 "comment": "V6; V7; V3 (ignored)",
5910 "input": "xn--792h.xn----bse632b",
5911 "output": null
5912 },
5913 {
5914 "comment": "C1",
5915 "input": "\ud835\udff5\u9681\u2bee\uff0e\u180d\u200c",
5916 "output": null
5917 },
5918 {
5919 "comment": "C1",
5920 "input": "9\u9681\u2bee.\u180d\u200c",
5921 "output": null
5922 },
5923 {
5924 "comment": "A4_2 (ignored)",
5925 "input": "xn--9-mfs8024b.",
5926 "output": "xn--9-mfs8024b."
5927 },
5928 {
5929 "comment": "A4_2 (ignored)",
5930 "input": "9\u9681\u2bee.",
5931 "output": "xn--9-mfs8024b."
5932 },
5933 {
5934 "comment": "C1",
5935 "input": "xn--9-mfs8024b.xn--0ug",
5936 "output": null
5937 },
5938 {
5939 "comment": "C1; V6",
5940 "input": "\u1bac\u10ac\u200c\u0325\u3002\ud835\udff8",
5941 "output": null
5942 },
5943 {
5944 "comment": "V6",
5945 "input": "xn--mta176jjjm.c",
5946 "output": null
5947 },
5948 {
5949 "comment": "C1; V6",
5950 "input": "xn--mta176j97cl2q.c",
5951 "output": null
5952 },
5953 {
5954 "comment": "C1; V6",
5955 "input": "\u1bac\u2d0c\u200c\u0325\u3002\ud835\udff8",
5956 "output": null
5957 },
5958 {
5959 "comment": "V6; V7",
5960 "input": "xn--mta930emri.c",
5961 "output": null
5962 },
5963 {
5964 "comment": "C1; V6; V7",
5965 "input": "xn--mta930emribme.c",
5966 "output": null
5967 },
5968 {
5969 "comment": "V6; V7",
5970 "input": "\udb40\udd01\u035f\u2fb6\uff61\u2087\ufe12\ub207\u226e",
5971 "output": null
5972 },
5973 {
5974 "comment": "V6; V7",
5975 "input": "\udb40\udd01\u035f\u2fb6\uff61\u2087\ufe12\u1102\u116e\u11aa<\u0338",
5976 "output": null
5977 },
5978 {
5979 "comment": "V6",
5980 "input": "\udb40\udd01\u035f\u98db\u30027\u3002\ub207\u226e",
5981 "output": null
5982 },
5983 {
5984 "comment": "V6",
5985 "input": "\udb40\udd01\u035f\u98db\u30027\u3002\u1102\u116e\u11aa<\u0338",
5986 "output": null
5987 },
5988 {
5989 "comment": "V6",
5990 "input": "xn--9ua0567e.7.xn--gdh6767c",
5991 "output": null
5992 },
5993 {
5994 "comment": "V6; V7",
5995 "input": "xn--9ua0567e.xn--7-ngou006d1ttc",
5996 "output": null
5997 },
5998 {
5999 "input": "xn--2ib43l.xn--te6h",
6000 "output": "xn--2ib43l.xn--te6h"
6001 },
6002 {
6003 "input": "\u067d\u0943.\ud83a\udd35",
6004 "output": "xn--2ib43l.xn--te6h"
6005 },
6006 {
6007 "input": "\u067d\u0943.\ud83a\udd13",
6008 "output": "xn--2ib43l.xn--te6h"
6009 },
6010 {
6011 "comment": "C1; V6",
6012 "input": "\u200c\u3002\uffa0\u0f84\u0f96",
6013 "output": null
6014 },
6015 {
6016 "comment": "C1; V6",
6017 "input": "\u200c\u3002\u1160\u0f84\u0f96",
6018 "output": null
6019 },
6020 {
6021 "comment": "V6; A4_2 (ignored)",
6022 "input": ".xn--3ed0b",
6023 "output": null
6024 },
6025 {
6026 "comment": "C1; V6",
6027 "input": "xn--0ug.xn--3ed0b",
6028 "output": null
6029 },
6030 {
6031 "comment": "V7; A4_2 (ignored)",
6032 "input": ".xn--3ed0b20h",
6033 "output": null
6034 },
6035 {
6036 "comment": "C1; V7",
6037 "input": "xn--0ug.xn--3ed0b20h",
6038 "output": null
6039 },
6040 {
6041 "comment": "V7; A4_2 (ignored)",
6042 "input": ".xn--3ed0by082k",
6043 "output": null
6044 },
6045 {
6046 "comment": "C1; V7",
6047 "input": "xn--0ug.xn--3ed0by082k",
6048 "output": null
6049 },
6050 {
6051 "comment": "C2; V7",
6052 "input": "\u226f\ud9f5\ude05\uff0e\u200d\ud800\udd7c\uda88\udddb",
6053 "output": null
6054 },
6055 {
6056 "comment": "C2; V7",
6057 "input": ">\u0338\ud9f5\ude05\uff0e\u200d\ud800\udd7c\uda88\udddb",
6058 "output": null
6059 },
6060 {
6061 "comment": "C2; V7",
6062 "input": "\u226f\ud9f5\ude05.\u200d\ud800\udd7c\uda88\udddb",
6063 "output": null
6064 },
6065 {
6066 "comment": "C2; V7",
6067 "input": ">\u0338\ud9f5\ude05.\u200d\ud800\udd7c\uda88\udddb",
6068 "output": null
6069 },
6070 {
6071 "comment": "V7",
6072 "input": "xn--hdh84488f.xn--xy7cw2886b",
6073 "output": null
6074 },
6075 {
6076 "comment": "C2; V7",
6077 "input": "xn--hdh84488f.xn--1ug8099fbjp4e",
6078 "output": null
6079 },
6080 {
6081 "input": "\ua9d0\u04c0\u1baa\u08f6\uff0e\ub235",
6082 "output": "xn--s5a04sn4u297k.xn--2e1b"
6083 },
6084 {
6085 "input": "\ua9d0\u04c0\u1baa\u08f6\uff0e\u1102\u116f\u11bc",
6086 "output": "xn--s5a04sn4u297k.xn--2e1b"
6087 },
6088 {
6089 "input": "\ua9d0\u04c0\u1baa\u08f6.\ub235",
6090 "output": "xn--s5a04sn4u297k.xn--2e1b"
6091 },
6092 {
6093 "input": "\ua9d0\u04c0\u1baa\u08f6.\u1102\u116f\u11bc",
6094 "output": "xn--s5a04sn4u297k.xn--2e1b"
6095 },
6096 {
6097 "input": "\ua9d0\u04cf\u1baa\u08f6.\u1102\u116f\u11bc",
6098 "output": "xn--s5a04sn4u297k.xn--2e1b"
6099 },
6100 {
6101 "input": "\ua9d0\u04cf\u1baa\u08f6.\ub235",
6102 "output": "xn--s5a04sn4u297k.xn--2e1b"
6103 },
6104 {
6105 "input": "xn--s5a04sn4u297k.xn--2e1b",
6106 "output": "xn--s5a04sn4u297k.xn--2e1b"
6107 },
6108 {
6109 "input": "\ua9d0\u04cf\u1baa\u08f6\uff0e\u1102\u116f\u11bc",
6110 "output": "xn--s5a04sn4u297k.xn--2e1b"
6111 },
6112 {
6113 "input": "\ua9d0\u04cf\u1baa\u08f6\uff0e\ub235",
6114 "output": "xn--s5a04sn4u297k.xn--2e1b"
6115 },
6116 {
6117 "comment": "V7",
6118 "input": "xn--d5a07sn4u297k.xn--2e1b",
6119 "output": null
6120 },
6121 {
6122 "comment": "V6; V7",
6123 "input": "\ua8ea\uff61\ud818\udd3f\ud804\uddbe\udb40\uddd7",
6124 "output": null
6125 },
6126 {
6127 "comment": "V6; V7",
6128 "input": "\ua8ea\u3002\ud818\udd3f\ud804\uddbe\udb40\uddd7",
6129 "output": null
6130 },
6131 {
6132 "comment": "V6; V7",
6133 "input": "xn--3g9a.xn--ud1dz07k",
6134 "output": null
6135 },
6136 {
6137 "comment": "V7",
6138 "input": "\udadd\udcd3\ud805\udeb3\u3002\ud903\uddff\u226f\u2f87",
6139 "output": null
6140 },
6141 {
6142 "comment": "V7",
6143 "input": "\udadd\udcd3\ud805\udeb3\u3002\ud903\uddff>\u0338\u2f87",
6144 "output": null
6145 },
6146 {
6147 "comment": "V7",
6148 "input": "\udadd\udcd3\ud805\udeb3\u3002\ud903\uddff\u226f\u821b",
6149 "output": null
6150 },
6151 {
6152 "comment": "V7",
6153 "input": "\udadd\udcd3\ud805\udeb3\u3002\ud903\uddff>\u0338\u821b",
6154 "output": null
6155 },
6156 {
6157 "comment": "V7",
6158 "input": "xn--3e2d79770c.xn--hdh0088abyy1c",
6159 "output": null
6160 },
6161 {
6162 "comment": "A4_2 (ignored)",
6163 "input": "xn--9hb7344k.",
6164 "output": "xn--9hb7344k."
6165 },
6166 {
6167 "comment": "A4_2 (ignored)",
6168 "input": "\ud802\udec7\u0661.",
6169 "output": "xn--9hb7344k."
6170 },
6171 {
6172 "comment": "C1; V7",
6173 "input": "\ud944\udd48\u782a\u226f\u1891\uff61\u226f\ud836\ude5a\uda0f\udd14\u200c",
6174 "output": null
6175 },
6176 {
6177 "comment": "C1; V7",
6178 "input": "\ud944\udd48\u782a>\u0338\u1891\uff61>\u0338\ud836\ude5a\uda0f\udd14\u200c",
6179 "output": null
6180 },
6181 {
6182 "comment": "C1; V7",
6183 "input": "\ud944\udd48\u782a\u226f\u1891\u3002\u226f\ud836\ude5a\uda0f\udd14\u200c",
6184 "output": null
6185 },
6186 {
6187 "comment": "C1; V7",
6188 "input": "\ud944\udd48\u782a>\u0338\u1891\u3002>\u0338\ud836\ude5a\uda0f\udd14\u200c",
6189 "output": null
6190 },
6191 {
6192 "comment": "V7",
6193 "input": "xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b",
6194 "output": null
6195 },
6196 {
6197 "comment": "C1; V7",
6198 "input": "xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c",
6199 "output": null
6200 },
6201 {
6202 "comment": "V6",
6203 "input": "\u10c5.\ud804\udd33\u32b8",
6204 "output": null
6205 },
6206 {
6207 "comment": "V6",
6208 "input": "\u10c5.\ud804\udd3343",
6209 "output": null
6210 },
6211 {
6212 "comment": "V6",
6213 "input": "\u2d25.\ud804\udd3343",
6214 "output": null
6215 },
6216 {
6217 "comment": "V6",
6218 "input": "xn--tlj.xn--43-274o",
6219 "output": null
6220 },
6221 {
6222 "comment": "V6",
6223 "input": "\u2d25.\ud804\udd33\u32b8",
6224 "output": null
6225 },
6226 {
6227 "comment": "V6; V7",
6228 "input": "xn--9nd.xn--43-274o",
6229 "output": null
6230 },
6231 {
6232 "comment": "V7",
6233 "input": "\ud91e\udea8\udb40\udd09\uffa0\u0fb7.\ud9a1\udfb0\ua953",
6234 "output": null
6235 },
6236 {
6237 "comment": "V7",
6238 "input": "\ud91e\udea8\udb40\udd09\u1160\u0fb7.\ud9a1\udfb0\ua953",
6239 "output": null
6240 },
6241 {
6242 "comment": "V7",
6243 "input": "xn--kgd72212e.xn--3j9au7544a",
6244 "output": null
6245 },
6246 {
6247 "comment": "V7",
6248 "input": "xn--kgd36f9z57y.xn--3j9au7544a",
6249 "output": null
6250 },
6251 {
6252 "comment": "V7",
6253 "input": "xn--kgd7493jee34a.xn--3j9au7544a",
6254 "output": null
6255 },
6256 {
6257 "comment": "C1; V6",
6258 "input": "\u0618.\u06f3\u200c\ua953",
6259 "output": null
6260 },
6261 {
6262 "comment": "V6",
6263 "input": "xn--6fb.xn--gmb0524f",
6264 "output": null
6265 },
6266 {
6267 "comment": "C1; V6",
6268 "input": "xn--6fb.xn--gmb469jjf1h",
6269 "output": null
6270 },
6271 {
6272 "comment": "V7",
6273 "input": "\u184c\uff0e\ufe12\u1891",
6274 "output": null
6275 },
6276 {
6277 "comment": "A4_2 (ignored)",
6278 "input": "\u184c.\u3002\u1891",
6279 "output": "xn--c8e..xn--bbf"
6280 },
6281 {
6282 "comment": "A4_2 (ignored)",
6283 "input": "xn--c8e..xn--bbf",
6284 "output": "xn--c8e..xn--bbf"
6285 },
6286 {
6287 "comment": "V7",
6288 "input": "xn--c8e.xn--bbf9168i",
6289 "output": null
6290 },
6291 {
6292 "comment": "V7",
6293 "input": "\ud83b\uddcf\u3002\u1822\uda0d\ude06",
6294 "output": null
6295 },
6296 {
6297 "comment": "V7",
6298 "input": "xn--hd7h.xn--46e66060j",
6299 "output": null
6300 },
6301 {
6302 "comment": "V7",
6303 "input": "\ud9f0\uded4\udb40\udd8e\udb40\udd97\ud807\udc95\u3002\u226e",
6304 "output": null
6305 },
6306 {
6307 "comment": "V7",
6308 "input": "\ud9f0\uded4\udb40\udd8e\udb40\udd97\ud807\udc95\u3002<\u0338",
6309 "output": null
6310 },
6311 {
6312 "comment": "V7",
6313 "input": "xn--4m3dv4354a.xn--gdh",
6314 "output": null
6315 },
6316 {
6317 "comment": "V6; A4_2 (ignored)",
6318 "input": "\udb40\udda6.\u08e3\u6680\u2260",
6319 "output": null
6320 },
6321 {
6322 "comment": "V6; A4_2 (ignored)",
6323 "input": "\udb40\udda6.\u08e3\u6680=\u0338",
6324 "output": null
6325 },
6326 {
6327 "comment": "V6; A4_2 (ignored)",
6328 "input": ".xn--m0b461k3g2c",
6329 "output": null
6330 },
6331 {
6332 "comment": "C2; V7",
6333 "input": "\u40b9\udbb9\udd85\ud800\udee6\uff0e\u200d",
6334 "output": null
6335 },
6336 {
6337 "comment": "C2; V7",
6338 "input": "\u40b9\udbb9\udd85\ud800\udee6.\u200d",
6339 "output": null
6340 },
6341 {
6342 "comment": "V7; A4_2 (ignored)",
6343 "input": "xn--0on3543c5981i.",
6344 "output": null
6345 },
6346 {
6347 "comment": "C2; V7",
6348 "input": "xn--0on3543c5981i.xn--1ug",
6349 "output": null
6350 },
6351 {
6352 "comment": "V7",
6353 "input": "\ufe12\uff61\u10a3\u226f",
6354 "output": null
6355 },
6356 {
6357 "comment": "V7",
6358 "input": "\ufe12\uff61\u10a3>\u0338",
6359 "output": null
6360 },
6361 {
6362 "comment": "A4_2 (ignored)",
6363 "input": "\u3002\u3002\u10a3\u226f",
6364 "output": "..xn--hdh782b"
6365 },
6366 {
6367 "comment": "A4_2 (ignored)",
6368 "input": "\u3002\u3002\u10a3>\u0338",
6369 "output": "..xn--hdh782b"
6370 },
6371 {
6372 "comment": "A4_2 (ignored)",
6373 "input": "\u3002\u3002\u2d03>\u0338",
6374 "output": "..xn--hdh782b"
6375 },
6376 {
6377 "comment": "A4_2 (ignored)",
6378 "input": "\u3002\u3002\u2d03\u226f",
6379 "output": "..xn--hdh782b"
6380 },
6381 {
6382 "comment": "A4_2 (ignored)",
6383 "input": "..xn--hdh782b",
6384 "output": "..xn--hdh782b"
6385 },
6386 {
6387 "comment": "V7",
6388 "input": "\ufe12\uff61\u2d03>\u0338",
6389 "output": null
6390 },
6391 {
6392 "comment": "V7",
6393 "input": "\ufe12\uff61\u2d03\u226f",
6394 "output": null
6395 },
6396 {
6397 "comment": "V7",
6398 "input": "xn--y86c.xn--hdh782b",
6399 "output": null
6400 },
6401 {
6402 "comment": "V7; A4_2 (ignored)",
6403 "input": "..xn--bnd622g",
6404 "output": null
6405 },
6406 {
6407 "comment": "V7",
6408 "input": "xn--y86c.xn--bnd622g",
6409 "output": null
6410 },
6411 {
6412 "comment": "V7",
6413 "input": "\u7b83\u10c1-\udb40\udc5d\uff61\u2260-\ud83e\udd16",
6414 "output": null
6415 },
6416 {
6417 "comment": "V7",
6418 "input": "\u7b83\u10c1-\udb40\udc5d\uff61=\u0338-\ud83e\udd16",
6419 "output": null
6420 },
6421 {
6422 "comment": "V7",
6423 "input": "\u7b83\u10c1-\udb40\udc5d\u3002\u2260-\ud83e\udd16",
6424 "output": null
6425 },
6426 {
6427 "comment": "V7",
6428 "input": "\u7b83\u10c1-\udb40\udc5d\u3002=\u0338-\ud83e\udd16",
6429 "output": null
6430 },
6431 {
6432 "comment": "V7",
6433 "input": "\u7b83\u2d21-\udb40\udc5d\u3002=\u0338-\ud83e\udd16",
6434 "output": null
6435 },
6436 {
6437 "comment": "V7",
6438 "input": "\u7b83\u2d21-\udb40\udc5d\u3002\u2260-\ud83e\udd16",
6439 "output": null
6440 },
6441 {
6442 "comment": "V7",
6443 "input": "xn----4wsr321ay823p.xn----tfot873s",
6444 "output": null
6445 },
6446 {
6447 "comment": "V7",
6448 "input": "\u7b83\u2d21-\udb40\udc5d\uff61=\u0338-\ud83e\udd16",
6449 "output": null
6450 },
6451 {
6452 "comment": "V7",
6453 "input": "\u7b83\u2d21-\udb40\udc5d\uff61\u2260-\ud83e\udd16",
6454 "output": null
6455 },
6456 {
6457 "comment": "V7",
6458 "input": "xn----11g3013fy8x5m.xn----tfot873s",
6459 "output": null
6460 },
6461 {
6462 "input": "\u07e5.\u06b5",
6463 "output": "xn--dtb.xn--okb"
6464 },
6465 {
6466 "input": "xn--dtb.xn--okb",
6467 "output": "xn--dtb.xn--okb"
6468 },
6469 {
6470 "comment": "A4_2 (ignored)",
6471 "input": ".xn--3e6h",
6472 "output": ".xn--3e6h"
6473 },
6474 {
6475 "input": "xn--3e6h",
6476 "output": "xn--3e6h"
6477 },
6478 {
6479 "input": "\ud83a\udd3f",
6480 "output": "xn--3e6h"
6481 },
6482 {
6483 "input": "\ud83a\udd1d",
6484 "output": "xn--3e6h"
6485 },
6486 {
6487 "comment": "C1; V6; V3 (ignored)",
6488 "input": "\u103a\u200d\u200c\u3002-\u200c",
6489 "output": null
6490 },
6491 {
6492 "comment": "V6; V3 (ignored)",
6493 "input": "xn--bkd.-",
6494 "output": null
6495 },
6496 {
6497 "comment": "C1; V6; V3 (ignored)",
6498 "input": "xn--bkd412fca.xn----sgn",
6499 "output": null
6500 },
6501 {
6502 "comment": "V6; V7",
6503 "input": "\ufe12\uff61\u1b44\u1849",
6504 "output": null
6505 },
6506 {
6507 "comment": "V6; A4_2 (ignored)",
6508 "input": "\u3002\u3002\u1b44\u1849",
6509 "output": null
6510 },
6511 {
6512 "comment": "V6; A4_2 (ignored)",
6513 "input": "..xn--87e93m",
6514 "output": null
6515 },
6516 {
6517 "comment": "V6; V7",
6518 "input": "xn--y86c.xn--87e93m",
6519 "output": null
6520 },
6521 {
6522 "comment": "C2; V7; V3 (ignored)",
6523 "input": "-\u1bab\ufe12\u200d.\ud90b\udd88\ud957\ude53",
6524 "output": null
6525 },
6526 {
6527 "comment": "C2; V7; V3 (ignored)",
6528 "input": "-\u1bab\u3002\u200d.\ud90b\udd88\ud957\ude53",
6529 "output": null
6530 },
6531 {
6532 "comment": "V7; V3 (ignored); A4_2 (ignored)",
6533 "input": "xn----qml..xn--x50zy803a",
6534 "output": null
6535 },
6536 {
6537 "comment": "C2; V7; V3 (ignored)",
6538 "input": "xn----qml.xn--1ug.xn--x50zy803a",
6539 "output": null
6540 },
6541 {
6542 "comment": "V7; V3 (ignored)",
6543 "input": "xn----qml1407i.xn--x50zy803a",
6544 "output": null
6545 },
6546 {
6547 "comment": "C2; V7; V3 (ignored)",
6548 "input": "xn----qmlv7tw180a.xn--x50zy803a",
6549 "output": null
6550 },
6551 {
6552 "comment": "V7",
6553 "input": "\udb42\uddae.\u226f\ud838\udc06",
6554 "output": null
6555 },
6556 {
6557 "comment": "V7",
6558 "input": "\udb42\uddae.>\u0338\ud838\udc06",
6559 "output": null
6560 },
6561 {
6562 "comment": "V7",
6563 "input": "xn--t546e.xn--hdh5166o",
6564 "output": null
6565 },
6566 {
6567 "input": "\u06b9\uff0e\u1873\u115f",
6568 "output": "xn--skb.xn--g9e"
6569 },
6570 {
6571 "input": "\u06b9.\u1873\u115f",
6572 "output": "xn--skb.xn--g9e"
6573 },
6574 {
6575 "input": "xn--skb.xn--g9e",
6576 "output": "xn--skb.xn--g9e"
6577 },
6578 {
6579 "input": "\u06b9.\u1873",
6580 "output": "xn--skb.xn--g9e"
6581 },
6582 {
6583 "comment": "V7",
6584 "input": "xn--skb.xn--osd737a",
6585 "output": null
6586 },
6587 {
6588 "comment": "V7",
6589 "input": "\u3a1b\ud823\udc4e.\ufe12\ud835\udfd5\u0d01",
6590 "output": null
6591 },
6592 {
6593 "comment": "A4_2 (ignored)",
6594 "input": "\u3a1b\ud823\udc4e.\u30027\u0d01",
6595 "output": "xn--mbm8237g..xn--7-7hf"
6596 },
6597 {
6598 "comment": "A4_2 (ignored)",
6599 "input": "xn--mbm8237g..xn--7-7hf",
6600 "output": "xn--mbm8237g..xn--7-7hf"
6601 },
6602 {
6603 "comment": "V7",
6604 "input": "xn--mbm8237g.xn--7-7hf1526p",
6605 "output": null
6606 },
6607 {
6608 "comment": "C1",
6609 "input": "\u00df\u200c\uaaf6\u18a5\uff0e\u22b6\u10c1\u10b6",
6610 "output": null
6611 },
6612 {
6613 "comment": "C1",
6614 "input": "\u00df\u200c\uaaf6\u18a5.\u22b6\u10c1\u10b6",
6615 "output": null
6616 },
6617 {
6618 "comment": "C1",
6619 "input": "\u00df\u200c\uaaf6\u18a5.\u22b6\u2d21\u2d16",
6620 "output": null
6621 },
6622 {
6623 "comment": "C1",
6624 "input": "SS\u200c\uaaf6\u18a5.\u22b6\u10c1\u10b6",
6625 "output": null
6626 },
6627 {
6628 "comment": "C1",
6629 "input": "ss\u200c\uaaf6\u18a5.\u22b6\u2d21\u2d16",
6630 "output": null
6631 },
6632 {
6633 "comment": "C1",
6634 "input": "Ss\u200c\uaaf6\u18a5.\u22b6\u10c1\u2d16",
6635 "output": null
6636 },
6637 {
6638 "input": "xn--ss-4epx629f.xn--ifh802b6a",
6639 "output": "xn--ss-4epx629f.xn--ifh802b6a"
6640 },
6641 {
6642 "input": "ss\uaaf6\u18a5.\u22b6\u2d21\u2d16",
6643 "output": "xn--ss-4epx629f.xn--ifh802b6a"
6644 },
6645 {
6646 "input": "SS\uaaf6\u18a5.\u22b6\u10c1\u10b6",
6647 "output": "xn--ss-4epx629f.xn--ifh802b6a"
6648 },
6649 {
6650 "input": "Ss\uaaf6\u18a5.\u22b6\u10c1\u2d16",
6651 "output": "xn--ss-4epx629f.xn--ifh802b6a"
6652 },
6653 {
6654 "comment": "C1",
6655 "input": "xn--ss-4ep585bkm5p.xn--ifh802b6a",
6656 "output": null
6657 },
6658 {
6659 "comment": "C1",
6660 "input": "xn--zca682johfi89m.xn--ifh802b6a",
6661 "output": null
6662 },
6663 {
6664 "comment": "C1",
6665 "input": "\u00df\u200c\uaaf6\u18a5\uff0e\u22b6\u2d21\u2d16",
6666 "output": null
6667 },
6668 {
6669 "comment": "C1",
6670 "input": "SS\u200c\uaaf6\u18a5\uff0e\u22b6\u10c1\u10b6",
6671 "output": null
6672 },
6673 {
6674 "comment": "C1",
6675 "input": "ss\u200c\uaaf6\u18a5\uff0e\u22b6\u2d21\u2d16",
6676 "output": null
6677 },
6678 {
6679 "comment": "C1",
6680 "input": "Ss\u200c\uaaf6\u18a5\uff0e\u22b6\u10c1\u2d16",
6681 "output": null
6682 },
6683 {
6684 "comment": "V7",
6685 "input": "xn--ss-4epx629f.xn--5nd703gyrh",
6686 "output": null
6687 },
6688 {
6689 "comment": "C1; V7",
6690 "input": "xn--ss-4ep585bkm5p.xn--5nd703gyrh",
6691 "output": null
6692 },
6693 {
6694 "comment": "V7",
6695 "input": "xn--ss-4epx629f.xn--undv409k",
6696 "output": null
6697 },
6698 {
6699 "comment": "C1; V7",
6700 "input": "xn--ss-4ep585bkm5p.xn--undv409k",
6701 "output": null
6702 },
6703 {
6704 "comment": "C1; V7",
6705 "input": "xn--zca682johfi89m.xn--undv409k",
6706 "output": null
6707 },
6708 {
6709 "comment": "C2; V7",
6710 "input": "\u200d\u3002\u03c2\udb40\udc49",
6711 "output": null
6712 },
6713 {
6714 "comment": "C2; V7",
6715 "input": "\u200d\u3002\u03a3\udb40\udc49",
6716 "output": null
6717 },
6718 {
6719 "comment": "C2; V7",
6720 "input": "\u200d\u3002\u03c3\udb40\udc49",
6721 "output": null
6722 },
6723 {
6724 "comment": "V7; A4_2 (ignored)",
6725 "input": ".xn--4xa24344p",
6726 "output": null
6727 },
6728 {
6729 "comment": "C2; V7",
6730 "input": "xn--1ug.xn--4xa24344p",
6731 "output": null
6732 },
6733 {
6734 "comment": "C2; V7",
6735 "input": "xn--1ug.xn--3xa44344p",
6736 "output": null
6737 },
6738 {
6739 "comment": "V7; V3 (ignored)",
6740 "input": "\u2492\uda61\ude19\uda8f\udce0\ud805\udcc0.-\udb3a\udc4a",
6741 "output": null
6742 },
6743 {
6744 "comment": "V7; V3 (ignored)",
6745 "input": "11.\uda61\ude19\uda8f\udce0\ud805\udcc0.-\udb3a\udc4a",
6746 "output": null
6747 },
6748 {
6749 "comment": "V7; V3 (ignored)",
6750 "input": "11.xn--uz1d59632bxujd.xn----x310m",
6751 "output": null
6752 },
6753 {
6754 "comment": "V7; V3 (ignored)",
6755 "input": "xn--3shy698frsu9dt1me.xn----x310m",
6756 "output": null
6757 },
6758 {
6759 "comment": "C2; V3 (ignored)",
6760 "input": "-\uff61\u200d",
6761 "output": null
6762 },
6763 {
6764 "comment": "C2; V3 (ignored)",
6765 "input": "-\u3002\u200d",
6766 "output": null
6767 },
6768 {
6769 "comment": "V3 (ignored); A4_2 (ignored)",
6770 "input": "-.",
6771 "output": "-."
6772 },
6773 {
6774 "comment": "C2; V3 (ignored)",
6775 "input": "-.xn--1ug",
6776 "output": null
6777 },
6778 {
6779 "comment": "V7",
6780 "input": "\u126c\uda12\udc3c\ud8c5\uddf6\uff61\ud802\ude2c\ud835\udfe0",
6781 "output": null
6782 },
6783 {
6784 "comment": "V7",
6785 "input": "\u126c\uda12\udc3c\ud8c5\uddf6\u3002\ud802\ude2c8",
6786 "output": null
6787 },
6788 {
6789 "comment": "V7",
6790 "input": "xn--d0d41273c887z.xn--8-ob5i",
6791 "output": null
6792 },
6793 {
6794 "comment": "C2; V3 (ignored)",
6795 "input": "\u03c2\u200d-.\u10c3\ud859\udfd9",
6796 "output": null
6797 },
6798 {
6799 "comment": "C2; V3 (ignored)",
6800 "input": "\u03c2\u200d-.\u2d23\ud859\udfd9",
6801 "output": null
6802 },
6803 {
6804 "comment": "C2; V3 (ignored)",
6805 "input": "\u03a3\u200d-.\u10c3\ud859\udfd9",
6806 "output": null
6807 },
6808 {
6809 "comment": "C2; V3 (ignored)",
6810 "input": "\u03c3\u200d-.\u2d23\ud859\udfd9",
6811 "output": null
6812 },
6813 {
6814 "comment": "V3 (ignored)",
6815 "input": "xn----zmb.xn--rlj2573p",
6816 "output": "xn----zmb.xn--rlj2573p"
6817 },
6818 {
6819 "comment": "C2; V3 (ignored)",
6820 "input": "xn----zmb048s.xn--rlj2573p",
6821 "output": null
6822 },
6823 {
6824 "comment": "C2; V3 (ignored)",
6825 "input": "xn----xmb348s.xn--rlj2573p",
6826 "output": null
6827 },
6828 {
6829 "comment": "V7; V3 (ignored)",
6830 "input": "xn----zmb.xn--7nd64871a",
6831 "output": null
6832 },
6833 {
6834 "comment": "C2; V7; V3 (ignored)",
6835 "input": "xn----zmb048s.xn--7nd64871a",
6836 "output": null
6837 },
6838 {
6839 "comment": "C2; V7; V3 (ignored)",
6840 "input": "xn----xmb348s.xn--7nd64871a",
6841 "output": null
6842 },
6843 {
6844 "input": "\u2260\u3002\ud83d\udfb3\ud835\udff2",
6845 "output": "xn--1ch.xn--6-dl4s"
6846 },
6847 {
6848 "input": "=\u0338\u3002\ud83d\udfb3\ud835\udff2",
6849 "output": "xn--1ch.xn--6-dl4s"
6850 },
6851 {
6852 "input": "\u2260\u3002\ud83d\udfb36",
6853 "output": "xn--1ch.xn--6-dl4s"
6854 },
6855 {
6856 "input": "=\u0338\u3002\ud83d\udfb36",
6857 "output": "xn--1ch.xn--6-dl4s"
6858 },
6859 {
6860 "input": "xn--1ch.xn--6-dl4s",
6861 "output": "xn--1ch.xn--6-dl4s"
6862 },
6863 {
6864 "input": "\u2260.\ud83d\udfb36",
6865 "output": "xn--1ch.xn--6-dl4s"
6866 },
6867 {
6868 "input": "=\u0338.\ud83d\udfb36",
6869 "output": "xn--1ch.xn--6-dl4s"
6870 },
6871 {
6872 "comment": "V7",
6873 "input": "\udad6\udf3d.\u8814",
6874 "output": null
6875 },
6876 {
6877 "comment": "V7",
6878 "input": "xn--g747d.xn--xl2a",
6879 "output": null
6880 },
6881 {
6882 "comment": "C2; V6",
6883 "input": "\u08e6\u200d\uff0e\ubf3d",
6884 "output": null
6885 },
6886 {
6887 "comment": "C2; V6",
6888 "input": "\u08e6\u200d\uff0e\u1108\u1168\u11c0",
6889 "output": null
6890 },
6891 {
6892 "comment": "C2; V6",
6893 "input": "\u08e6\u200d.\ubf3d",
6894 "output": null
6895 },
6896 {
6897 "comment": "C2; V6",
6898 "input": "\u08e6\u200d.\u1108\u1168\u11c0",
6899 "output": null
6900 },
6901 {
6902 "comment": "V6",
6903 "input": "xn--p0b.xn--e43b",
6904 "output": null
6905 },
6906 {
6907 "comment": "C2; V6",
6908 "input": "xn--p0b869i.xn--e43b",
6909 "output": null
6910 },
6911 {
6912 "comment": "V7",
6913 "input": "\ud8f6\ude3d\uff0e\ud8ef\ude15",
6914 "output": null
6915 },
6916 {
6917 "comment": "V7",
6918 "input": "\ud8f6\ude3d.\ud8ef\ude15",
6919 "output": null
6920 },
6921 {
6922 "comment": "V7",
6923 "input": "xn--pr3x.xn--rv7w",
6924 "output": null
6925 },
6926 {
6927 "comment": "V7",
6928 "input": "\ud802\udfc0\ud803\ude09\ud83a\uddcf\u3002\ud949\udea7\u2084\u10ab\ud8cb\ude6b",
6929 "output": null
6930 },
6931 {
6932 "comment": "V7",
6933 "input": "\ud802\udfc0\ud803\ude09\ud83a\uddcf\u3002\ud949\udea74\u10ab\ud8cb\ude6b",
6934 "output": null
6935 },
6936 {
6937 "comment": "V7",
6938 "input": "\ud802\udfc0\ud803\ude09\ud83a\uddcf\u3002\ud949\udea74\u2d0b\ud8cb\ude6b",
6939 "output": null
6940 },
6941 {
6942 "comment": "V7",
6943 "input": "xn--039c42bq865a.xn--4-wvs27840bnrzm",
6944 "output": null
6945 },
6946 {
6947 "comment": "V7",
6948 "input": "\ud802\udfc0\ud803\ude09\ud83a\uddcf\u3002\ud949\udea7\u2084\u2d0b\ud8cb\ude6b",
6949 "output": null
6950 },
6951 {
6952 "comment": "V7",
6953 "input": "xn--039c42bq865a.xn--4-t0g49302fnrzm",
6954 "output": null
6955 },
6956 {
6957 "comment": "V6",
6958 "input": "\ud835\udfd3\u3002\u06d7",
6959 "output": null
6960 },
6961 {
6962 "comment": "V6",
6963 "input": "5\u3002\u06d7",
6964 "output": null
6965 },
6966 {
6967 "comment": "V6",
6968 "input": "5.xn--nlb",
6969 "output": null
6970 },
6971 {
6972 "comment": "C1; V7",
6973 "input": "\u200c\udaab\ude29.\u2f95",
6974 "output": null
6975 },
6976 {
6977 "comment": "C1; V7",
6978 "input": "\u200c\udaab\ude29.\u8c37",
6979 "output": null
6980 },
6981 {
6982 "comment": "V7",
6983 "input": "xn--i183d.xn--6g3a",
6984 "output": null
6985 },
6986 {
6987 "comment": "C1; V7",
6988 "input": "xn--0ug26167i.xn--6g3a",
6989 "output": null
6990 },
6991 {
6992 "comment": "C1; C2; V7; V3 (ignored)",
6993 "input": "\ufe12\udafb\udc07\u200d.-\u073c\u200c",
6994 "output": null
6995 },
6996 {
6997 "comment": "C1; C2; V7; V3 (ignored); A4_2 (ignored)",
6998 "input": "\u3002\udafb\udc07\u200d.-\u073c\u200c",
6999 "output": null
7000 },
7001 {
7002 "comment": "V7; V3 (ignored); A4_2 (ignored)",
7003 "input": ".xn--hh50e.xn----t2c",
7004 "output": null
7005 },
7006 {
7007 "comment": "C1; C2; V7; V3 (ignored); A4_2 (ignored)",
7008 "input": ".xn--1ug05310k.xn----t2c071q",
7009 "output": null
7010 },
7011 {
7012 "comment": "V7; V3 (ignored)",
7013 "input": "xn--y86c71305c.xn----t2c",
7014 "output": null
7015 },
7016 {
7017 "comment": "C1; C2; V7; V3 (ignored)",
7018 "input": "xn--1ug1658ftw26f.xn----t2c071q",
7019 "output": null
7020 },
7021 {
7022 "comment": "C2",
7023 "input": "\u200d\uff0e\ud835\udfd7",
7024 "output": null
7025 },
7026 {
7027 "comment": "C2",
7028 "input": "\u200d.j",
7029 "output": null
7030 },
7031 {
7032 "comment": "C2",
7033 "input": "\u200d.J",
7034 "output": null
7035 },
7036 {
7037 "comment": "A4_2 (ignored)",
7038 "input": ".j",
7039 "output": ".j"
7040 },
7041 {
7042 "comment": "C2",
7043 "input": "xn--1ug.j",
7044 "output": null
7045 },
7046 {
7047 "input": "j",
7048 "output": "j"
7049 },
7050 {
7051 "comment": "C1; V7",
7052 "input": "\u10ad\ud8be\udccd\ua868\u05ae\u3002\u10be\u200c\u200c",
7053 "output": null
7054 },
7055 {
7056 "comment": "C1; V7",
7057 "input": "\u2d0d\ud8be\udccd\ua868\u05ae\u3002\u2d1e\u200c\u200c",
7058 "output": null
7059 },
7060 {
7061 "comment": "V7",
7062 "input": "xn--5cb172r175fug38a.xn--mlj",
7063 "output": null
7064 },
7065 {
7066 "comment": "C1; V7",
7067 "input": "xn--5cb172r175fug38a.xn--0uga051h",
7068 "output": null
7069 },
7070 {
7071 "comment": "V7",
7072 "input": "xn--5cb347co96jug15a.xn--2nd",
7073 "output": null
7074 },
7075 {
7076 "comment": "C1; V7",
7077 "input": "xn--5cb347co96jug15a.xn--2nd059ea",
7078 "output": null
7079 },
7080 {
7081 "comment": "V7",
7082 "input": "\ud800\udef0\u3002\udb05\udcf1",
7083 "output": null
7084 },
7085 {
7086 "comment": "V7",
7087 "input": "xn--k97c.xn--q031e",
7088 "output": null
7089 },
7090 {
7091 "comment": "V6; V7",
7092 "input": "\u08df\u10ab\ud89b\udff8\uade4\uff0e\uda40\udd7c\ud835\udfe2\ud72a\u0ae3",
7093 "output": null
7094 },
7095 {
7096 "comment": "V6; V7",
7097 "input": "\u08df\u10ab\ud89b\udff8\u1100\u1172\u11af\uff0e\uda40\udd7c\ud835\udfe2\u1112\u1171\u11b9\u0ae3",
7098 "output": null
7099 },
7100 {
7101 "comment": "V6; V7",
7102 "input": "\u08df\u10ab\ud89b\udff8\uade4.\uda40\udd7c0\ud72a\u0ae3",
7103 "output": null
7104 },
7105 {
7106 "comment": "V6; V7",
7107 "input": "\u08df\u10ab\ud89b\udff8\u1100\u1172\u11af.\uda40\udd7c0\u1112\u1171\u11b9\u0ae3",
7108 "output": null
7109 },
7110 {
7111 "comment": "V6; V7",
7112 "input": "\u08df\u2d0b\ud89b\udff8\u1100\u1172\u11af.\uda40\udd7c0\u1112\u1171\u11b9\u0ae3",
7113 "output": null
7114 },
7115 {
7116 "comment": "V6; V7",
7117 "input": "\u08df\u2d0b\ud89b\udff8\uade4.\uda40\udd7c0\ud72a\u0ae3",
7118 "output": null
7119 },
7120 {
7121 "comment": "V6; V7",
7122 "input": "xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f",
7123 "output": null
7124 },
7125 {
7126 "comment": "V6; V7",
7127 "input": "\u08df\u2d0b\ud89b\udff8\u1100\u1172\u11af\uff0e\uda40\udd7c\ud835\udfe2\u1112\u1171\u11b9\u0ae3",
7128 "output": null
7129 },
7130 {
7131 "comment": "V6; V7",
7132 "input": "\u08df\u2d0b\ud89b\udff8\uade4\uff0e\uda40\udd7c\ud835\udfe2\ud72a\u0ae3",
7133 "output": null
7134 },
7135 {
7136 "comment": "V6; V7",
7137 "input": "xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f",
7138 "output": null
7139 },
7140 {
7141 "comment": "V7",
7142 "input": "\u0784\uff0e\ud83a\udc5d\u0601",
7143 "output": null
7144 },
7145 {
7146 "comment": "V7",
7147 "input": "\u0784.\ud83a\udc5d\u0601",
7148 "output": null
7149 },
7150 {
7151 "comment": "V7",
7152 "input": "xn--lqb.xn--jfb1808v",
7153 "output": null
7154 },
7155 {
7156 "comment": "V6",
7157 "input": "\u0acd\u2083.8\ua8c4\u200d\ud83c\udce4",
7158 "output": null
7159 },
7160 {
7161 "comment": "V6",
7162 "input": "\u0acd3.8\ua8c4\u200d\ud83c\udce4",
7163 "output": null
7164 },
7165 {
7166 "comment": "V6",
7167 "input": "xn--3-yke.xn--8-sl4et308f",
7168 "output": null
7169 },
7170 {
7171 "comment": "V6",
7172 "input": "xn--3-yke.xn--8-ugnv982dbkwm",
7173 "output": null
7174 },
7175 {
7176 "comment": "V7",
7177 "input": "\ua855\u2260\u105e\udb7b\udff1\uff61\ud803\udd67\udb40\udd2b\uffa0",
7178 "output": null
7179 },
7180 {
7181 "comment": "V7",
7182 "input": "\ua855=\u0338\u105e\udb7b\udff1\uff61\ud803\udd67\udb40\udd2b\uffa0",
7183 "output": null
7184 },
7185 {
7186 "comment": "V7",
7187 "input": "\ua855\u2260\u105e\udb7b\udff1\u3002\ud803\udd67\udb40\udd2b\u1160",
7188 "output": null
7189 },
7190 {
7191 "comment": "V7",
7192 "input": "\ua855=\u0338\u105e\udb7b\udff1\u3002\ud803\udd67\udb40\udd2b\u1160",
7193 "output": null
7194 },
7195 {
7196 "comment": "V7",
7197 "input": "xn--cld333gn31h0158l.xn--3g0d",
7198 "output": null
7199 },
7200 {
7201 "comment": "C1",
7202 "input": "\u9c4a\u3002\u200c",
7203 "output": null
7204 },
7205 {
7206 "comment": "A4_2 (ignored)",
7207 "input": "xn--rt6a.",
7208 "output": "xn--rt6a."
7209 },
7210 {
7211 "comment": "A4_2 (ignored)",
7212 "input": "\u9c4a.",
7213 "output": "xn--rt6a."
7214 },
7215 {
7216 "comment": "C1",
7217 "input": "xn--rt6a.xn--0ug",
7218 "output": null
7219 },
7220 {
7221 "comment": "A4_2 (ignored)",
7222 "input": "xn--4-0bd15808a.",
7223 "output": "xn--4-0bd15808a."
7224 },
7225 {
7226 "comment": "A4_2 (ignored)",
7227 "input": "\ud83a\udd3a\u07cc4.",
7228 "output": "xn--4-0bd15808a."
7229 },
7230 {
7231 "comment": "A4_2 (ignored)",
7232 "input": "\ud83a\udd18\u07cc4.",
7233 "output": "xn--4-0bd15808a."
7234 },
7235 {
7236 "comment": "V3 (ignored)",
7237 "input": "-\uff61\u43db",
7238 "output": "-.xn--xco"
7239 },
7240 {
7241 "comment": "V3 (ignored)",
7242 "input": "-\u3002\u43db",
7243 "output": "-.xn--xco"
7244 },
7245 {
7246 "comment": "V3 (ignored)",
7247 "input": "-.xn--xco",
7248 "output": "-.xn--xco"
7249 },
7250 {
7251 "comment": "C1; C2; V7",
7252 "input": "\u200c\ud908\udce0\uff0e\u200d",
7253 "output": null
7254 },
7255 {
7256 "comment": "C1; C2; V7",
7257 "input": "\u200c\ud908\udce0.\u200d",
7258 "output": null
7259 },
7260 {
7261 "comment": "V7; A4_2 (ignored)",
7262 "input": "xn--dj8y.",
7263 "output": null
7264 },
7265 {
7266 "comment": "C1; C2; V7",
7267 "input": "xn--0ugz7551c.xn--1ug",
7268 "output": null
7269 },
7270 {
7271 "comment": "V6; V7",
7272 "input": "\ud804\uddc0.\udb42\ude31",
7273 "output": null
7274 },
7275 {
7276 "comment": "V6; V7",
7277 "input": "xn--wd1d.xn--k946e",
7278 "output": null
7279 },
7280 {
7281 "input": "\u2f86\uff0e\ua848\uff15\u226f\u00df",
7282 "output": "xn--tc1a.xn--5-qfa988w745i"
7283 },
7284 {
7285 "input": "\u2f86\uff0e\ua848\uff15>\u0338\u00df",
7286 "output": "xn--tc1a.xn--5-qfa988w745i"
7287 },
7288 {
7289 "input": "\u820c.\ua8485\u226f\u00df",
7290 "output": "xn--tc1a.xn--5-qfa988w745i"
7291 },
7292 {
7293 "input": "\u820c.\ua8485>\u0338\u00df",
7294 "output": "xn--tc1a.xn--5-qfa988w745i"
7295 },
7296 {
7297 "input": "\u820c.\ua8485>\u0338SS",
7298 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7299 },
7300 {
7301 "input": "\u820c.\ua8485\u226fSS",
7302 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7303 },
7304 {
7305 "input": "\u820c.\ua8485\u226fss",
7306 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7307 },
7308 {
7309 "input": "\u820c.\ua8485>\u0338ss",
7310 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7311 },
7312 {
7313 "input": "\u820c.\ua8485>\u0338Ss",
7314 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7315 },
7316 {
7317 "input": "\u820c.\ua8485\u226fSs",
7318 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7319 },
7320 {
7321 "input": "xn--tc1a.xn--5ss-3m2a5009e",
7322 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7323 },
7324 {
7325 "input": "xn--tc1a.xn--5-qfa988w745i",
7326 "output": "xn--tc1a.xn--5-qfa988w745i"
7327 },
7328 {
7329 "input": "\u2f86\uff0e\ua848\uff15>\u0338SS",
7330 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7331 },
7332 {
7333 "input": "\u2f86\uff0e\ua848\uff15\u226fSS",
7334 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7335 },
7336 {
7337 "input": "\u2f86\uff0e\ua848\uff15\u226fss",
7338 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7339 },
7340 {
7341 "input": "\u2f86\uff0e\ua848\uff15>\u0338ss",
7342 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7343 },
7344 {
7345 "input": "\u2f86\uff0e\ua848\uff15>\u0338Ss",
7346 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7347 },
7348 {
7349 "input": "\u2f86\uff0e\ua848\uff15\u226fSs",
7350 "output": "xn--tc1a.xn--5ss-3m2a5009e"
7351 },
7352 {
7353 "input": "\ud83a\udd2a.\u03c2",
7354 "output": "xn--ie6h.xn--3xa"
7355 },
7356 {
7357 "input": "\ud83a\udd08.\u03a3",
7358 "output": "xn--ie6h.xn--4xa"
7359 },
7360 {
7361 "input": "\ud83a\udd2a.\u03c3",
7362 "output": "xn--ie6h.xn--4xa"
7363 },
7364 {
7365 "input": "\ud83a\udd08.\u03c3",
7366 "output": "xn--ie6h.xn--4xa"
7367 },
7368 {
7369 "input": "xn--ie6h.xn--4xa",
7370 "output": "xn--ie6h.xn--4xa"
7371 },
7372 {
7373 "input": "\ud83a\udd08.\u03c2",
7374 "output": "xn--ie6h.xn--3xa"
7375 },
7376 {
7377 "input": "xn--ie6h.xn--3xa",
7378 "output": "xn--ie6h.xn--3xa"
7379 },
7380 {
7381 "input": "\ud83a\udd2a.\u03a3",
7382 "output": "xn--ie6h.xn--4xa"
7383 },
7384 {
7385 "comment": "C1",
7386 "input": "\u200c\u10ba\uff61\u03c2",
7387 "output": null
7388 },
7389 {
7390 "comment": "C1",
7391 "input": "\u200c\u10ba\u3002\u03c2",
7392 "output": null
7393 },
7394 {
7395 "comment": "C1",
7396 "input": "\u200c\u2d1a\u3002\u03c2",
7397 "output": null
7398 },
7399 {
7400 "comment": "C1",
7401 "input": "\u200c\u10ba\u3002\u03a3",
7402 "output": null
7403 },
7404 {
7405 "comment": "C1",
7406 "input": "\u200c\u2d1a\u3002\u03c3",
7407 "output": null
7408 },
7409 {
7410 "input": "xn--ilj.xn--4xa",
7411 "output": "xn--ilj.xn--4xa"
7412 },
7413 {
7414 "input": "\u2d1a.\u03c3",
7415 "output": "xn--ilj.xn--4xa"
7416 },
7417 {
7418 "input": "\u10ba.\u03a3",
7419 "output": "xn--ilj.xn--4xa"
7420 },
7421 {
7422 "input": "\u2d1a.\u03c2",
7423 "output": "xn--ilj.xn--3xa"
7424 },
7425 {
7426 "input": "\u10ba.\u03c2",
7427 "output": "xn--ilj.xn--3xa"
7428 },
7429 {
7430 "input": "xn--ilj.xn--3xa",
7431 "output": "xn--ilj.xn--3xa"
7432 },
7433 {
7434 "input": "\u10ba.\u03c3",
7435 "output": "xn--ilj.xn--4xa"
7436 },
7437 {
7438 "comment": "C1",
7439 "input": "xn--0ug262c.xn--4xa",
7440 "output": null
7441 },
7442 {
7443 "comment": "C1",
7444 "input": "xn--0ug262c.xn--3xa",
7445 "output": null
7446 },
7447 {
7448 "comment": "C1",
7449 "input": "\u200c\u2d1a\uff61\u03c2",
7450 "output": null
7451 },
7452 {
7453 "comment": "C1",
7454 "input": "\u200c\u10ba\uff61\u03a3",
7455 "output": null
7456 },
7457 {
7458 "comment": "C1",
7459 "input": "\u200c\u2d1a\uff61\u03c3",
7460 "output": null
7461 },
7462 {
7463 "comment": "V7",
7464 "input": "xn--ynd.xn--4xa",
7465 "output": null
7466 },
7467 {
7468 "comment": "V7",
7469 "input": "xn--ynd.xn--3xa",
7470 "output": null
7471 },
7472 {
7473 "comment": "C1; V7",
7474 "input": "xn--ynd759e.xn--4xa",
7475 "output": null
7476 },
7477 {
7478 "comment": "C1; V7",
7479 "input": "xn--ynd759e.xn--3xa",
7480 "output": null
7481 },
7482 {
7483 "comment": "C1; C2",
7484 "input": "\u200d\u2f95\u3002\u200c\u0310\ua953\ua84e",
7485 "output": null
7486 },
7487 {
7488 "comment": "C1; C2",
7489 "input": "\u200d\u2f95\u3002\u200c\ua953\u0310\ua84e",
7490 "output": null
7491 },
7492 {
7493 "comment": "C1; C2",
7494 "input": "\u200d\u8c37\u3002\u200c\ua953\u0310\ua84e",
7495 "output": null
7496 },
7497 {
7498 "comment": "V6",
7499 "input": "xn--6g3a.xn--0sa8175flwa",
7500 "output": null
7501 },
7502 {
7503 "comment": "C1; C2",
7504 "input": "xn--1ug0273b.xn--0sa359l6n7g13a",
7505 "output": null
7506 },
7507 {
7508 "input": "\u6dfd\u3002\u183e",
7509 "output": "xn--34w.xn--x7e"
7510 },
7511 {
7512 "input": "xn--34w.xn--x7e",
7513 "output": "xn--34w.xn--x7e"
7514 },
7515 {
7516 "input": "\u6dfd.\u183e",
7517 "output": "xn--34w.xn--x7e"
7518 },
7519 {
7520 "comment": "V6; V7",
7521 "input": "\uda72\ude29\u10b3\u2753\uff61\ud804\udd28",
7522 "output": null
7523 },
7524 {
7525 "comment": "V6; V7",
7526 "input": "\uda72\ude29\u10b3\u2753\u3002\ud804\udd28",
7527 "output": null
7528 },
7529 {
7530 "comment": "V6; V7",
7531 "input": "\uda72\ude29\u2d13\u2753\u3002\ud804\udd28",
7532 "output": null
7533 },
7534 {
7535 "comment": "V6; V7",
7536 "input": "xn--8di78qvw32y.xn--k80d",
7537 "output": null
7538 },
7539 {
7540 "comment": "V6; V7",
7541 "input": "\uda72\ude29\u2d13\u2753\uff61\ud804\udd28",
7542 "output": null
7543 },
7544 {
7545 "comment": "V6; V7",
7546 "input": "xn--rnd896i0j14q.xn--k80d",
7547 "output": null
7548 },
7549 {
7550 "comment": "V7",
7551 "input": "\u17ff\uff61\ud83a\udf33",
7552 "output": null
7553 },
7554 {
7555 "comment": "V7",
7556 "input": "\u17ff\u3002\ud83a\udf33",
7557 "output": null
7558 },
7559 {
7560 "comment": "V7",
7561 "input": "xn--45e.xn--et6h",
7562 "output": null
7563 },
7564 {
7565 "comment": "C2; V6",
7566 "input": "\u0652\u200d\uff61\u0ccd\ud805\udeb3",
7567 "output": null
7568 },
7569 {
7570 "comment": "C2; V6",
7571 "input": "\u0652\u200d\u3002\u0ccd\ud805\udeb3",
7572 "output": null
7573 },
7574 {
7575 "comment": "V6",
7576 "input": "xn--uhb.xn--8tc4527k",
7577 "output": null
7578 },
7579 {
7580 "comment": "C2; V6",
7581 "input": "xn--uhb882k.xn--8tc4527k",
7582 "output": null
7583 },
7584 {
7585 "comment": "V6; V7",
7586 "input": "\u00df\ud880\udc3b\ud8da\udf17\uff61\ud836\ude68\ud83d\udd6e\u00df",
7587 "output": null
7588 },
7589 {
7590 "comment": "V6; V7",
7591 "input": "\u00df\ud880\udc3b\ud8da\udf17\u3002\ud836\ude68\ud83d\udd6e\u00df",
7592 "output": null
7593 },
7594 {
7595 "comment": "V6; V7",
7596 "input": "SS\ud880\udc3b\ud8da\udf17\u3002\ud836\ude68\ud83d\udd6eSS",
7597 "output": null
7598 },
7599 {
7600 "comment": "V6; V7",
7601 "input": "ss\ud880\udc3b\ud8da\udf17\u3002\ud836\ude68\ud83d\udd6ess",
7602 "output": null
7603 },
7604 {
7605 "comment": "V6; V7",
7606 "input": "Ss\ud880\udc3b\ud8da\udf17\u3002\ud836\ude68\ud83d\udd6eSs",
7607 "output": null
7608 },
7609 {
7610 "comment": "V6; V7",
7611 "input": "xn--ss-jl59biy67d.xn--ss-4d11aw87d",
7612 "output": null
7613 },
7614 {
7615 "comment": "V6; V7",
7616 "input": "xn--zca20040bgrkh.xn--zca3653v86qa",
7617 "output": null
7618 },
7619 {
7620 "comment": "V6; V7",
7621 "input": "SS\ud880\udc3b\ud8da\udf17\uff61\ud836\ude68\ud83d\udd6eSS",
7622 "output": null
7623 },
7624 {
7625 "comment": "V6; V7",
7626 "input": "ss\ud880\udc3b\ud8da\udf17\uff61\ud836\ude68\ud83d\udd6ess",
7627 "output": null
7628 },
7629 {
7630 "comment": "V6; V7",
7631 "input": "Ss\ud880\udc3b\ud8da\udf17\uff61\ud836\ude68\ud83d\udd6eSs",
7632 "output": null
7633 },
7634 {
7635 "comment": "C1; C2",
7636 "input": "\u200d\u3002\u200c",
7637 "output": null
7638 },
7639 {
7640 "comment": "C1; C2",
7641 "input": "xn--1ug.xn--0ug",
7642 "output": null
7643 },
7644 {
7645 "comment": "V7; A4_2 (ignored)",
7646 "input": "\udb41\udc58\uff0e\udb40\udd2e",
7647 "output": null
7648 },
7649 {
7650 "comment": "V7; A4_2 (ignored)",
7651 "input": "\udb41\udc58.\udb40\udd2e",
7652 "output": null
7653 },
7654 {
7655 "comment": "V7; A4_2 (ignored)",
7656 "input": "xn--s136e.",
7657 "output": null
7658 },
7659 {
7660 "comment": "V6; V7",
7661 "input": "\ua9b7\udb37\udd59\uba79\u3002\u249b\udb42\ude07",
7662 "output": null
7663 },
7664 {
7665 "comment": "V6; V7",
7666 "input": "\ua9b7\udb37\udd59\u1106\u1167\u11b0\u3002\u249b\udb42\ude07",
7667 "output": null
7668 },
7669 {
7670 "comment": "V6; V7",
7671 "input": "\ua9b7\udb37\udd59\uba79\u300220.\udb42\ude07",
7672 "output": null
7673 },
7674 {
7675 "comment": "V6; V7",
7676 "input": "\ua9b7\udb37\udd59\u1106\u1167\u11b0\u300220.\udb42\ude07",
7677 "output": null
7678 },
7679 {
7680 "comment": "V6; V7",
7681 "input": "xn--ym9av13acp85w.20.xn--d846e",
7682 "output": null
7683 },
7684 {
7685 "comment": "V6; V7",
7686 "input": "xn--ym9av13acp85w.xn--dth22121k",
7687 "output": null
7688 },
7689 {
7690 "comment": "C1; V7",
7691 "input": "\u200c\uff61\ufe12",
7692 "output": null
7693 },
7694 {
7695 "comment": "C1; A4_2 (ignored)",
7696 "input": "\u200c\u3002\u3002",
7697 "output": null
7698 },
7699 {
7700 "comment": "A4_2 (ignored)",
7701 "input": "..",
7702 "output": ".."
7703 },
7704 {
7705 "comment": "C1; A4_2 (ignored)",
7706 "input": "xn--0ug..",
7707 "output": null
7708 },
7709 {
7710 "comment": "V7; A4_2 (ignored)",
7711 "input": ".xn--y86c",
7712 "output": null
7713 },
7714 {
7715 "comment": "C1; V7",
7716 "input": "xn--0ug.xn--y86c",
7717 "output": null
7718 },
7719 {
7720 "comment": "C1; V3 (ignored)",
7721 "input": "\u1872-\ud835\udff9.\u00df-\u200c-",
7722 "output": null
7723 },
7724 {
7725 "comment": "C1; V3 (ignored)",
7726 "input": "\u1872-3.\u00df-\u200c-",
7727 "output": null
7728 },
7729 {
7730 "comment": "C1; V3 (ignored)",
7731 "input": "\u1872-3.SS-\u200c-",
7732 "output": null
7733 },
7734 {
7735 "comment": "C1; V3 (ignored)",
7736 "input": "\u1872-3.ss-\u200c-",
7737 "output": null
7738 },
7739 {
7740 "comment": "C1; V3 (ignored)",
7741 "input": "\u1872-3.Ss-\u200c-",
7742 "output": null
7743 },
7744 {
7745 "comment": "V2 (ignored); V3 (ignored)",
7746 "input": "xn---3-p9o.ss--",
7747 "output": "xn---3-p9o.ss--"
7748 },
7749 {
7750 "comment": "C1; V3 (ignored)",
7751 "input": "xn---3-p9o.xn--ss---276a",
7752 "output": null
7753 },
7754 {
7755 "comment": "C1; V3 (ignored)",
7756 "input": "xn---3-p9o.xn-----fia9303a",
7757 "output": null
7758 },
7759 {
7760 "comment": "C1; V3 (ignored)",
7761 "input": "\u1872-\ud835\udff9.SS-\u200c-",
7762 "output": null
7763 },
7764 {
7765 "comment": "C1; V3 (ignored)",
7766 "input": "\u1872-\ud835\udff9.ss-\u200c-",
7767 "output": null
7768 },
7769 {
7770 "comment": "C1; V3 (ignored)",
7771 "input": "\u1872-\ud835\udff9.Ss-\u200c-",
7772 "output": null
7773 },
7774 {
7775 "comment": "V6; V7",
7776 "input": "\udb27\udd9c\u1898\u3002\u1a7f\u2ea2",
7777 "output": null
7778 },
7779 {
7780 "comment": "V6; V7",
7781 "input": "xn--ibf35138o.xn--fpfz94g",
7782 "output": null
7783 },
7784 {
7785 "comment": "V7",
7786 "input": "\uda1c\udda7\ud835\udfef\u3002\u2488\u1a76\ud835\udfda\uda41\ude0c",
7787 "output": null
7788 },
7789 {
7790 "comment": "V6; V7",
7791 "input": "\uda1c\udda73\u30021.\u1a762\uda41\ude0c",
7792 "output": null
7793 },
7794 {
7795 "comment": "V6; V7",
7796 "input": "xn--3-rj42h.1.xn--2-13k96240l",
7797 "output": null
7798 },
7799 {
7800 "comment": "V7",
7801 "input": "xn--3-rj42h.xn--2-13k746cq465x",
7802 "output": null
7803 },
7804 {
7805 "comment": "C2; V7",
7806 "input": "\u200d\u2085\u2488\u3002\u226f\ud835\udff4\u200d",
7807 "output": null
7808 },
7809 {
7810 "comment": "C2; V7",
7811 "input": "\u200d\u2085\u2488\u3002>\u0338\ud835\udff4\u200d",
7812 "output": null
7813 },
7814 {
7815 "comment": "C2; A4_2 (ignored)",
7816 "input": "\u200d51.\u3002\u226f8\u200d",
7817 "output": null
7818 },
7819 {
7820 "comment": "C2; A4_2 (ignored)",
7821 "input": "\u200d51.\u3002>\u03388\u200d",
7822 "output": null
7823 },
7824 {
7825 "comment": "A4_2 (ignored)",
7826 "input": "51..xn--8-ogo",
7827 "output": "51..xn--8-ogo"
7828 },
7829 {
7830 "comment": "C2; A4_2 (ignored)",
7831 "input": "xn--51-l1t..xn--8-ugn00i",
7832 "output": null
7833 },
7834 {
7835 "comment": "V7",
7836 "input": "xn--5-ecp.xn--8-ogo",
7837 "output": null
7838 },
7839 {
7840 "comment": "C2; V7",
7841 "input": "xn--5-tgnz5r.xn--8-ugn00i",
7842 "output": null
7843 },
7844 {
7845 "comment": "V7",
7846 "input": "\ud8bb\uddc2\u0a42\u10aa\ud8c8\udc9f.\u226e",
7847 "output": null
7848 },
7849 {
7850 "comment": "V7",
7851 "input": "\ud8bb\uddc2\u0a42\u10aa\ud8c8\udc9f.<\u0338",
7852 "output": null
7853 },
7854 {
7855 "comment": "V7",
7856 "input": "\ud8bb\uddc2\u0a42\u2d0a\ud8c8\udc9f.<\u0338",
7857 "output": null
7858 },
7859 {
7860 "comment": "V7",
7861 "input": "\ud8bb\uddc2\u0a42\u2d0a\ud8c8\udc9f.\u226e",
7862 "output": null
7863 },
7864 {
7865 "comment": "V7",
7866 "input": "xn--nbc229o4y27dgskb.xn--gdh",
7867 "output": null
7868 },
7869 {
7870 "comment": "V7",
7871 "input": "xn--nbc493aro75ggskb.xn--gdh",
7872 "output": null
7873 },
7874 {
7875 "input": "\ua860\uff0e\u06f2",
7876 "output": "xn--5c9a.xn--fmb"
7877 },
7878 {
7879 "input": "\ua860.\u06f2",
7880 "output": "xn--5c9a.xn--fmb"
7881 },
7882 {
7883 "input": "xn--5c9a.xn--fmb",
7884 "output": "xn--5c9a.xn--fmb"
7885 },
7886 {
7887 "comment": "C1; V6; U1 (ignored)",
7888 "input": "\ua67d\u200c\ud87e\uddf5\ud83c\udd06\uff61\u200c\ud804\udc42\u1b01",
7889 "output": null
7890 },
7891 {
7892 "comment": "C1; V6; U1 (ignored)",
7893 "input": "\ua67d\u200c\u9723\ud83c\udd06\uff61\u200c\ud804\udc42\u1b01",
7894 "output": null
7895 },
7896 {
7897 "comment": "C1; V6; U1 (ignored)",
7898 "input": "\ua67d\u200c\u97235,\u3002\u200c\ud804\udc42\u1b01",
7899 "output": null
7900 },
7901 {
7902 "comment": "V6; U1 (ignored)",
7903 "input": "xn--5,-op8g373c.xn--4sf0725i",
7904 "output": null
7905 },
7906 {
7907 "comment": "C1; V6; U1 (ignored)",
7908 "input": "xn--5,-i1tz135dnbqa.xn--4sf36u6u4w",
7909 "output": null
7910 },
7911 {
7912 "comment": "V6; V7",
7913 "input": "xn--2q5a751a653w.xn--4sf0725i",
7914 "output": null
7915 },
7916 {
7917 "comment": "C1; V6; V7",
7918 "input": "xn--0ug4208b2vjuk63a.xn--4sf36u6u4w",
7919 "output": null
7920 },
7921 {
7922 "comment": "V7",
7923 "input": "\u514e\uff61\u183c\udb43\udd1c\ud805\udeb6\ud807\udc3f",
7924 "output": null
7925 },
7926 {
7927 "comment": "V7",
7928 "input": "\u514e\u3002\u183c\udb43\udd1c\ud805\udeb6\ud807\udc3f",
7929 "output": null
7930 },
7931 {
7932 "comment": "V7",
7933 "input": "xn--b5q.xn--v7e6041kqqd4m251b",
7934 "output": null
7935 },
7936 {
7937 "comment": "C2",
7938 "input": "\ud835\udfd9\uff61\u200d\ud835\udff8\u200d\u2077",
7939 "output": null
7940 },
7941 {
7942 "comment": "C2",
7943 "input": "1\u3002\u200d2\u200d7",
7944 "output": null
7945 },
7946 {
7947 "input": "1.2h",
7948 "output": "1.2h"
7949 },
7950 {
7951 "comment": "C2",
7952 "input": "1.xn--27-l1tb",
7953 "output": null
7954 },
7955 {
7956 "comment": "V7; V3 (ignored)",
7957 "input": "\u1868-\uff61\udb43\udecb\ud835\udff7",
7958 "output": null
7959 },
7960 {
7961 "comment": "V7; V3 (ignored)",
7962 "input": "\u1868-\u3002\udb43\udecb1",
7963 "output": null
7964 },
7965 {
7966 "comment": "V7; V3 (ignored)",
7967 "input": "xn----z8j.xn--1-5671m",
7968 "output": null
7969 },
7970 {
7971 "comment": "C1; V7",
7972 "input": "\u10bc\ud9e3\udded\u0f80\u2f87\u3002\u10af\u2640\u200c\u200c",
7973 "output": null
7974 },
7975 {
7976 "comment": "C1; V7",
7977 "input": "\u10bc\ud9e3\udded\u0f80\u821b\u3002\u10af\u2640\u200c\u200c",
7978 "output": null
7979 },
7980 {
7981 "comment": "C1; V7",
7982 "input": "\u2d1c\ud9e3\udded\u0f80\u821b\u3002\u2d0f\u2640\u200c\u200c",
7983 "output": null
7984 },
7985 {
7986 "comment": "V7",
7987 "input": "xn--zed372mdj2do3v4h.xn--e5h11w",
7988 "output": null
7989 },
7990 {
7991 "comment": "C1; V7",
7992 "input": "xn--zed372mdj2do3v4h.xn--0uga678bgyh",
7993 "output": null
7994 },
7995 {
7996 "comment": "C1; V7",
7997 "input": "\u2d1c\ud9e3\udded\u0f80\u2f87\u3002\u2d0f\u2640\u200c\u200c",
7998 "output": null
7999 },
8000 {
8001 "comment": "V7",
8002 "input": "xn--zed54dz10wo343g.xn--nnd651i",
8003 "output": null
8004 },
8005 {
8006 "comment": "C1; V7",
8007 "input": "xn--zed54dz10wo343g.xn--nnd089ea464d",
8008 "output": null
8009 },
8010 {
8011 "comment": "C2; V6",
8012 "input": "\ud804\udc46\ud835\udff0.\u200d",
8013 "output": null
8014 },
8015 {
8016 "comment": "C2; V6",
8017 "input": "\ud804\udc464.\u200d",
8018 "output": null
8019 },
8020 {
8021 "comment": "V6; A4_2 (ignored)",
8022 "input": "xn--4-xu7i.",
8023 "output": null
8024 },
8025 {
8026 "comment": "C2; V6",
8027 "input": "xn--4-xu7i.xn--1ug",
8028 "output": null
8029 },
8030 {
8031 "comment": "C1; V6; V7",
8032 "input": "\ud97b\udd18\u10be\u7640\uff61\ud805\ude3f\u200d\u200c\ubdbc",
8033 "output": null
8034 },
8035 {
8036 "comment": "C1; V6; V7",
8037 "input": "\ud97b\udd18\u10be\u7640\uff61\ud805\ude3f\u200d\u200c\u1107\u1170\u11ab",
8038 "output": null
8039 },
8040 {
8041 "comment": "C1; V6; V7",
8042 "input": "\ud97b\udd18\u10be\u7640\u3002\ud805\ude3f\u200d\u200c\ubdbc",
8043 "output": null
8044 },
8045 {
8046 "comment": "C1; V6; V7",
8047 "input": "\ud97b\udd18\u10be\u7640\u3002\ud805\ude3f\u200d\u200c\u1107\u1170\u11ab",
8048 "output": null
8049 },
8050 {
8051 "comment": "C1; V6; V7",
8052 "input": "\ud97b\udd18\u2d1e\u7640\u3002\ud805\ude3f\u200d\u200c\u1107\u1170\u11ab",
8053 "output": null
8054 },
8055 {
8056 "comment": "C1; V6; V7",
8057 "input": "\ud97b\udd18\u2d1e\u7640\u3002\ud805\ude3f\u200d\u200c\ubdbc",
8058 "output": null
8059 },
8060 {
8061 "comment": "V6; V7",
8062 "input": "xn--mlju35u7qx2f.xn--et3bn23n",
8063 "output": null
8064 },
8065 {
8066 "comment": "C1; V6; V7",
8067 "input": "xn--mlju35u7qx2f.xn--0ugb6122js83c",
8068 "output": null
8069 },
8070 {
8071 "comment": "C1; V6; V7",
8072 "input": "\ud97b\udd18\u2d1e\u7640\uff61\ud805\ude3f\u200d\u200c\u1107\u1170\u11ab",
8073 "output": null
8074 },
8075 {
8076 "comment": "C1; V6; V7",
8077 "input": "\ud97b\udd18\u2d1e\u7640\uff61\ud805\ude3f\u200d\u200c\ubdbc",
8078 "output": null
8079 },
8080 {
8081 "comment": "V6; V7",
8082 "input": "xn--2nd6803c7q37d.xn--et3bn23n",
8083 "output": null
8084 },
8085 {
8086 "comment": "C1; V6; V7",
8087 "input": "xn--2nd6803c7q37d.xn--0ugb6122js83c",
8088 "output": null
8089 },
8090 {
8091 "comment": "V7",
8092 "input": "\u1843\ud835\udfe7\u226f\u1823\uff0e\u6c01\ud960\udff1\ua06b",
8093 "output": null
8094 },
8095 {
8096 "comment": "V7",
8097 "input": "\u1843\ud835\udfe7>\u0338\u1823\uff0e\u6c01\ud960\udff1\ua06b",
8098 "output": null
8099 },
8100 {
8101 "comment": "V7",
8102 "input": "\u18435\u226f\u1823.\u6c01\ud960\udff1\ua06b",
8103 "output": null
8104 },
8105 {
8106 "comment": "V7",
8107 "input": "\u18435>\u0338\u1823.\u6c01\ud960\udff1\ua06b",
8108 "output": null
8109 },
8110 {
8111 "comment": "V7",
8112 "input": "xn--5-24jyf768b.xn--lqw213ime95g",
8113 "output": null
8114 },
8115 {
8116 "comment": "V7; V3 (ignored)",
8117 "input": "-\ud804\ude36\u248f\uff0e\u248e\ud881\udee2\udb40\udfad",
8118 "output": null
8119 },
8120 {
8121 "comment": "V7; V3 (ignored); A4_2 (ignored)",
8122 "input": "-\ud804\ude368..7.\ud881\udee2\udb40\udfad",
8123 "output": null
8124 },
8125 {
8126 "comment": "V7; V3 (ignored); A4_2 (ignored)",
8127 "input": "xn---8-bv5o..7.xn--c35nf1622b",
8128 "output": null
8129 },
8130 {
8131 "comment": "V7; V3 (ignored)",
8132 "input": "xn----scp6252h.xn--zshy411yzpx2d",
8133 "output": null
8134 },
8135 {
8136 "comment": "C1; C2",
8137 "input": "\u200c\u10a1\u755d\u200d\uff0e\u226e",
8138 "output": null
8139 },
8140 {
8141 "comment": "C1; C2",
8142 "input": "\u200c\u10a1\u755d\u200d\uff0e<\u0338",
8143 "output": null
8144 },
8145 {
8146 "comment": "C1; C2",
8147 "input": "\u200c\u10a1\u755d\u200d.\u226e",
8148 "output": null
8149 },
8150 {
8151 "comment": "C1; C2",
8152 "input": "\u200c\u10a1\u755d\u200d.<\u0338",
8153 "output": null
8154 },
8155 {
8156 "comment": "C1; C2",
8157 "input": "\u200c\u2d01\u755d\u200d.<\u0338",
8158 "output": null
8159 },
8160 {
8161 "comment": "C1; C2",
8162 "input": "\u200c\u2d01\u755d\u200d.\u226e",
8163 "output": null
8164 },
8165 {
8166 "input": "xn--skjy82u.xn--gdh",
8167 "output": "xn--skjy82u.xn--gdh"
8168 },
8169 {
8170 "input": "\u2d01\u755d.\u226e",
8171 "output": "xn--skjy82u.xn--gdh"
8172 },
8173 {
8174 "input": "\u2d01\u755d.<\u0338",
8175 "output": "xn--skjy82u.xn--gdh"
8176 },
8177 {
8178 "input": "\u10a1\u755d.<\u0338",
8179 "output": "xn--skjy82u.xn--gdh"
8180 },
8181 {
8182 "input": "\u10a1\u755d.\u226e",
8183 "output": "xn--skjy82u.xn--gdh"
8184 },
8185 {
8186 "comment": "C1; C2",
8187 "input": "xn--0ugc160hb36e.xn--gdh",
8188 "output": null
8189 },
8190 {
8191 "comment": "C1; C2",
8192 "input": "\u200c\u2d01\u755d\u200d\uff0e<\u0338",
8193 "output": null
8194 },
8195 {
8196 "comment": "C1; C2",
8197 "input": "\u200c\u2d01\u755d\u200d\uff0e\u226e",
8198 "output": null
8199 },
8200 {
8201 "comment": "V7",
8202 "input": "xn--8md0962c.xn--gdh",
8203 "output": null
8204 },
8205 {
8206 "comment": "C1; C2; V7",
8207 "input": "xn--8md700fea3748f.xn--gdh",
8208 "output": null
8209 },
8210 {
8211 "comment": "C2; V6; V7",
8212 "input": "\u0ecb\u200d\uff0e\u9381\udb43\udc11",
8213 "output": null
8214 },
8215 {
8216 "comment": "C2; V6; V7",
8217 "input": "\u0ecb\u200d.\u9381\udb43\udc11",
8218 "output": null
8219 },
8220 {
8221 "comment": "V6; V7",
8222 "input": "xn--t8c.xn--iz4a43209d",
8223 "output": null
8224 },
8225 {
8226 "comment": "C2; V6; V7",
8227 "input": "xn--t8c059f.xn--iz4a43209d",
8228 "output": null
8229 },
8230 {
8231 "comment": "V7; V3 (ignored)",
8232 "input": "\ud9e5\udef4.-\u1862\u0592\ud836\ude20",
8233 "output": null
8234 },
8235 {
8236 "comment": "V7; V3 (ignored)",
8237 "input": "xn--ep37b.xn----hec165lho83b",
8238 "output": null
8239 },
8240 {
8241 "comment": "C2; V6; V7",
8242 "input": "\ud8bc\udc2b\uff0e\u1baa\u03c2\u10a6\u200d",
8243 "output": null
8244 },
8245 {
8246 "comment": "C2; V6; V7",
8247 "input": "\ud8bc\udc2b.\u1baa\u03c2\u10a6\u200d",
8248 "output": null
8249 },
8250 {
8251 "comment": "C2; V6; V7",
8252 "input": "\ud8bc\udc2b.\u1baa\u03c2\u2d06\u200d",
8253 "output": null
8254 },
8255 {
8256 "comment": "C2; V6; V7",
8257 "input": "\ud8bc\udc2b.\u1baa\u03a3\u10a6\u200d",
8258 "output": null
8259 },
8260 {
8261 "comment": "C2; V6; V7",
8262 "input": "\ud8bc\udc2b.\u1baa\u03c3\u2d06\u200d",
8263 "output": null
8264 },
8265 {
8266 "comment": "C2; V6; V7",
8267 "input": "\ud8bc\udc2b.\u1baa\u03a3\u2d06\u200d",
8268 "output": null
8269 },
8270 {
8271 "comment": "V6; V7",
8272 "input": "xn--nu4s.xn--4xa153j7im",
8273 "output": null
8274 },
8275 {
8276 "comment": "C2; V6; V7",
8277 "input": "xn--nu4s.xn--4xa153jk8cs1q",
8278 "output": null
8279 },
8280 {
8281 "comment": "C2; V6; V7",
8282 "input": "xn--nu4s.xn--3xa353jk8cs1q",
8283 "output": null
8284 },
8285 {
8286 "comment": "C2; V6; V7",
8287 "input": "\ud8bc\udc2b\uff0e\u1baa\u03c2\u2d06\u200d",
8288 "output": null
8289 },
8290 {
8291 "comment": "C2; V6; V7",
8292 "input": "\ud8bc\udc2b\uff0e\u1baa\u03a3\u10a6\u200d",
8293 "output": null
8294 },
8295 {
8296 "comment": "C2; V6; V7",
8297 "input": "\ud8bc\udc2b\uff0e\u1baa\u03c3\u2d06\u200d",
8298 "output": null
8299 },
8300 {
8301 "comment": "C2; V6; V7",
8302 "input": "\ud8bc\udc2b\uff0e\u1baa\u03a3\u2d06\u200d",
8303 "output": null
8304 },
8305 {
8306 "comment": "V6; V7",
8307 "input": "xn--nu4s.xn--4xa217dxri",
8308 "output": null
8309 },
8310 {
8311 "comment": "C2; V6; V7",
8312 "input": "xn--nu4s.xn--4xa217dxriome",
8313 "output": null
8314 },
8315 {
8316 "comment": "C2; V6; V7",
8317 "input": "xn--nu4s.xn--3xa417dxriome",
8318 "output": null
8319 },
8320 {
8321 "comment": "C1; V6; V7",
8322 "input": "\u2488\u200c\uaaec\ufe12\uff0e\u0acd",
8323 "output": null
8324 },
8325 {
8326 "comment": "C1; V6; A4_2 (ignored)",
8327 "input": "1.\u200c\uaaec\u3002.\u0acd",
8328 "output": null
8329 },
8330 {
8331 "comment": "V6; A4_2 (ignored)",
8332 "input": "1.xn--sv9a..xn--mfc",
8333 "output": null
8334 },
8335 {
8336 "comment": "C1; V6; A4_2 (ignored)",
8337 "input": "1.xn--0ug7185c..xn--mfc",
8338 "output": null
8339 },
8340 {
8341 "comment": "V6; V7",
8342 "input": "xn--tsh0720cse8b.xn--mfc",
8343 "output": null
8344 },
8345 {
8346 "comment": "C1; V6; V7",
8347 "input": "xn--0ug78o720myr1c.xn--mfc",
8348 "output": null
8349 },
8350 {
8351 "comment": "C2; V6; V7",
8352 "input": "\u00df\u200d.\u1bf2\ud8d3\udfbc",
8353 "output": null
8354 },
8355 {
8356 "comment": "C2; V6; V7",
8357 "input": "SS\u200d.\u1bf2\ud8d3\udfbc",
8358 "output": null
8359 },
8360 {
8361 "comment": "C2; V6; V7",
8362 "input": "ss\u200d.\u1bf2\ud8d3\udfbc",
8363 "output": null
8364 },
8365 {
8366 "comment": "C2; V6; V7",
8367 "input": "Ss\u200d.\u1bf2\ud8d3\udfbc",
8368 "output": null
8369 },
8370 {
8371 "comment": "V6; V7",
8372 "input": "ss.xn--0zf22107b",
8373 "output": null
8374 },
8375 {
8376 "comment": "C2; V6; V7",
8377 "input": "xn--ss-n1t.xn--0zf22107b",
8378 "output": null
8379 },
8380 {
8381 "comment": "C2; V6; V7",
8382 "input": "xn--zca870n.xn--0zf22107b",
8383 "output": null
8384 },
8385 {
8386 "comment": "V6",
8387 "input": "\ud805\udcc2\u200c\u226e.\u226e",
8388 "output": null
8389 },
8390 {
8391 "comment": "V6",
8392 "input": "\ud805\udcc2\u200c<\u0338.<\u0338",
8393 "output": null
8394 },
8395 {
8396 "comment": "V6",
8397 "input": "xn--gdhz656g.xn--gdh",
8398 "output": null
8399 },
8400 {
8401 "comment": "V6",
8402 "input": "xn--0ugy6glz29a.xn--gdh",
8403 "output": null
8404 },
8405 {
8406 "comment": "A4_2 (ignored)",
8407 "input": "\ud83d\udd7c\uff0e\uffa0",
8408 "output": "xn--my8h."
8409 },
8410 {
8411 "comment": "A4_2 (ignored)",
8412 "input": "\ud83d\udd7c.\u1160",
8413 "output": "xn--my8h."
8414 },
8415 {
8416 "comment": "A4_2 (ignored)",
8417 "input": "xn--my8h.",
8418 "output": "xn--my8h."
8419 },
8420 {
8421 "comment": "A4_2 (ignored)",
8422 "input": "\ud83d\udd7c.",
8423 "output": "xn--my8h."
8424 },
8425 {
8426 "comment": "V7",
8427 "input": "xn--my8h.xn--psd",
8428 "output": null
8429 },
8430 {
8431 "comment": "V7",
8432 "input": "xn--my8h.xn--cl7c",
8433 "output": null
8434 },
8435 {
8436 "comment": "V7",
8437 "input": "\u7215\uda8d\ude51\uff0e\ud835\udff0\u6c17",
8438 "output": null
8439 },
8440 {
8441 "comment": "V7",
8442 "input": "\u7215\uda8d\ude51.4\u6c17",
8443 "output": null
8444 },
8445 {
8446 "comment": "V7",
8447 "input": "xn--1zxq3199c.xn--4-678b",
8448 "output": null
8449 },
8450 {
8451 "comment": "V7; V2 (ignored); V3 (ignored)",
8452 "input": "\udb39\udf43\u3002\uda04\udd83\ud8e6\udc97--",
8453 "output": null
8454 },
8455 {
8456 "comment": "V7; V2 (ignored); V3 (ignored)",
8457 "input": "xn--2y75e.xn-----1l15eer88n",
8458 "output": null
8459 },
8460 {
8461 "comment": "V7",
8462 "input": "\u8530\u3002\udb40\udc79\u08dd-\ud804\ude35",
8463 "output": null
8464 },
8465 {
8466 "comment": "V7",
8467 "input": "xn--sz1a.xn----mrd9984r3dl0i",
8468 "output": null
8469 },
8470 {
8471 "input": "\u03c2\u10c5\u3002\u075a",
8472 "output": "xn--3xa403s.xn--epb"
8473 },
8474 {
8475 "input": "\u03c2\u2d25\u3002\u075a",
8476 "output": "xn--3xa403s.xn--epb"
8477 },
8478 {
8479 "input": "\u03a3\u10c5\u3002\u075a",
8480 "output": "xn--4xa203s.xn--epb"
8481 },
8482 {
8483 "input": "\u03c3\u2d25\u3002\u075a",
8484 "output": "xn--4xa203s.xn--epb"
8485 },
8486 {
8487 "input": "\u03a3\u2d25\u3002\u075a",
8488 "output": "xn--4xa203s.xn--epb"
8489 },
8490 {
8491 "input": "xn--4xa203s.xn--epb",
8492 "output": "xn--4xa203s.xn--epb"
8493 },
8494 {
8495 "input": "\u03c3\u2d25.\u075a",
8496 "output": "xn--4xa203s.xn--epb"
8497 },
8498 {
8499 "input": "\u03a3\u10c5.\u075a",
8500 "output": "xn--4xa203s.xn--epb"
8501 },
8502 {
8503 "input": "\u03a3\u2d25.\u075a",
8504 "output": "xn--4xa203s.xn--epb"
8505 },
8506 {
8507 "input": "xn--3xa403s.xn--epb",
8508 "output": "xn--3xa403s.xn--epb"
8509 },
8510 {
8511 "input": "\u03c2\u2d25.\u075a",
8512 "output": "xn--3xa403s.xn--epb"
8513 },
8514 {
8515 "comment": "V7",
8516 "input": "xn--4xa477d.xn--epb",
8517 "output": null
8518 },
8519 {
8520 "comment": "V7",
8521 "input": "xn--3xa677d.xn--epb",
8522 "output": null
8523 },
8524 {
8525 "input": "xn--vkb.xn--08e172a",
8526 "output": "xn--vkb.xn--08e172a"
8527 },
8528 {
8529 "input": "\u06bc.\u1e8f\u1864",
8530 "output": "xn--vkb.xn--08e172a"
8531 },
8532 {
8533 "input": "\u06bc.y\u0307\u1864",
8534 "output": "xn--vkb.xn--08e172a"
8535 },
8536 {
8537 "input": "\u06bc.Y\u0307\u1864",
8538 "output": "xn--vkb.xn--08e172a"
8539 },
8540 {
8541 "input": "\u06bc.\u1e8e\u1864",
8542 "output": "xn--vkb.xn--08e172a"
8543 },
8544 {
8545 "input": "xn--pt9c.xn--0kjya",
8546 "output": "xn--pt9c.xn--0kjya"
8547 },
8548 {
8549 "input": "\ud802\ude57.\u2d09\u2d15",
8550 "output": "xn--pt9c.xn--0kjya"
8551 },
8552 {
8553 "input": "\ud802\ude57.\u10a9\u10b5",
8554 "output": "xn--pt9c.xn--0kjya"
8555 },
8556 {
8557 "input": "\ud802\ude57.\u10a9\u2d15",
8558 "output": "xn--pt9c.xn--0kjya"
8559 },
8560 {
8561 "comment": "V7",
8562 "input": "xn--pt9c.xn--hnd666l",
8563 "output": null
8564 },
8565 {
8566 "comment": "V7",
8567 "input": "xn--pt9c.xn--hndy",
8568 "output": null
8569 },
8570 {
8571 "comment": "C1; V6; V7",
8572 "input": "\u200c\u200c\u3124\uff0e\u032e\udb16\ude11\u09c2",
8573 "output": null
8574 },
8575 {
8576 "comment": "C1; V6; V7",
8577 "input": "\u200c\u200c\u3124.\u032e\udb16\ude11\u09c2",
8578 "output": null
8579 },
8580 {
8581 "comment": "V6; V7",
8582 "input": "xn--1fk.xn--vta284a9o563a",
8583 "output": null
8584 },
8585 {
8586 "comment": "C1; V6; V7",
8587 "input": "xn--0uga242k.xn--vta284a9o563a",
8588 "output": null
8589 },
8590 {
8591 "comment": "V7",
8592 "input": "\u10b4\ud836\ude28\u2083\udb40\udc66\uff0e\ud835\udff3\ud804\udcb9\u0b82",
8593 "output": null
8594 },
8595 {
8596 "comment": "V7",
8597 "input": "\u10b4\ud836\ude283\udb40\udc66.7\ud804\udcb9\u0b82",
8598 "output": null
8599 },
8600 {
8601 "comment": "V7",
8602 "input": "\u2d14\ud836\ude283\udb40\udc66.7\ud804\udcb9\u0b82",
8603 "output": null
8604 },
8605 {
8606 "comment": "V7",
8607 "input": "xn--3-ews6985n35s3g.xn--7-cve6271r",
8608 "output": null
8609 },
8610 {
8611 "comment": "V7",
8612 "input": "\u2d14\ud836\ude28\u2083\udb40\udc66\uff0e\ud835\udff3\ud804\udcb9\u0b82",
8613 "output": null
8614 },
8615 {
8616 "comment": "V7",
8617 "input": "xn--3-b1g83426a35t0g.xn--7-cve6271r",
8618 "output": null
8619 },
8620 {
8621 "comment": "C1; V7",
8622 "input": "\u43c8\u200c\u3002\u200c\u2488\ud986\udc95",
8623 "output": null
8624 },
8625 {
8626 "comment": "C1; V7",
8627 "input": "\u43c8\u200c\u3002\u200c1.\ud986\udc95",
8628 "output": null
8629 },
8630 {
8631 "comment": "V7",
8632 "input": "xn--eco.1.xn--ms39a",
8633 "output": null
8634 },
8635 {
8636 "comment": "C1; V7",
8637 "input": "xn--0ug491l.xn--1-rgn.xn--ms39a",
8638 "output": null
8639 },
8640 {
8641 "comment": "V7",
8642 "input": "xn--eco.xn--tsh21126d",
8643 "output": null
8644 },
8645 {
8646 "comment": "C1; V7",
8647 "input": "xn--0ug491l.xn--0ug88oot66q",
8648 "output": null
8649 },
8650 {
8651 "comment": "V6",
8652 "input": "\uff11\uaaf6\u00df\ud807\udca5\uff61\u1dd8",
8653 "output": null
8654 },
8655 {
8656 "comment": "V6",
8657 "input": "1\uaaf6\u00df\ud807\udca5\u3002\u1dd8",
8658 "output": null
8659 },
8660 {
8661 "comment": "V6",
8662 "input": "1\uaaf6SS\ud807\udca5\u3002\u1dd8",
8663 "output": null
8664 },
8665 {
8666 "comment": "V6",
8667 "input": "1\uaaf6ss\ud807\udca5\u3002\u1dd8",
8668 "output": null
8669 },
8670 {
8671 "comment": "V6",
8672 "input": "xn--1ss-ir6ln166b.xn--weg",
8673 "output": null
8674 },
8675 {
8676 "comment": "V6",
8677 "input": "xn--1-qfa2471kdb0d.xn--weg",
8678 "output": null
8679 },
8680 {
8681 "comment": "V6",
8682 "input": "\uff11\uaaf6SS\ud807\udca5\uff61\u1dd8",
8683 "output": null
8684 },
8685 {
8686 "comment": "V6",
8687 "input": "\uff11\uaaf6ss\ud807\udca5\uff61\u1dd8",
8688 "output": null
8689 },
8690 {
8691 "comment": "V6",
8692 "input": "1\uaaf6Ss\ud807\udca5\u3002\u1dd8",
8693 "output": null
8694 },
8695 {
8696 "comment": "V6",
8697 "input": "\uff11\uaaf6Ss\ud807\udca5\uff61\u1dd8",
8698 "output": null
8699 },
8700 {
8701 "comment": "V7",
8702 "input": "xn--3j78f.xn--mkb20b",
8703 "output": null
8704 },
8705 {
8706 "comment": "V7",
8707 "input": "\ud88a\udd31\u249b\u2fb3\uff0e\ua866\u2488",
8708 "output": null
8709 },
8710 {
8711 "comment": "A4_2 (ignored)",
8712 "input": "\ud88a\udd3120.\u97f3.\ua8661.",
8713 "output": "xn--20-9802c.xn--0w5a.xn--1-eg4e."
8714 },
8715 {
8716 "comment": "A4_2 (ignored)",
8717 "input": "xn--20-9802c.xn--0w5a.xn--1-eg4e.",
8718 "output": "xn--20-9802c.xn--0w5a.xn--1-eg4e."
8719 },
8720 {
8721 "comment": "V7",
8722 "input": "xn--dth6033bzbvx.xn--tsh9439b",
8723 "output": null
8724 },
8725 {
8726 "input": "\u10b5\u3002\u06f0\u226e\u00df\u0745",
8727 "output": "xn--dlj.xn--zca912alh227g"
8728 },
8729 {
8730 "input": "\u10b5\u3002\u06f0<\u0338\u00df\u0745",
8731 "output": "xn--dlj.xn--zca912alh227g"
8732 },
8733 {
8734 "input": "\u2d15\u3002\u06f0<\u0338\u00df\u0745",
8735 "output": "xn--dlj.xn--zca912alh227g"
8736 },
8737 {
8738 "input": "\u2d15\u3002\u06f0\u226e\u00df\u0745",
8739 "output": "xn--dlj.xn--zca912alh227g"
8740 },
8741 {
8742 "input": "\u10b5\u3002\u06f0\u226eSS\u0745",
8743 "output": "xn--dlj.xn--ss-jbe65aw27i"
8744 },
8745 {
8746 "input": "\u10b5\u3002\u06f0<\u0338SS\u0745",
8747 "output": "xn--dlj.xn--ss-jbe65aw27i"
8748 },
8749 {
8750 "input": "\u2d15\u3002\u06f0<\u0338ss\u0745",
8751 "output": "xn--dlj.xn--ss-jbe65aw27i"
8752 },
8753 {
8754 "input": "\u2d15\u3002\u06f0\u226ess\u0745",
8755 "output": "xn--dlj.xn--ss-jbe65aw27i"
8756 },
8757 {
8758 "input": "\u10b5\u3002\u06f0\u226eSs\u0745",
8759 "output": "xn--dlj.xn--ss-jbe65aw27i"
8760 },
8761 {
8762 "input": "\u10b5\u3002\u06f0<\u0338Ss\u0745",
8763 "output": "xn--dlj.xn--ss-jbe65aw27i"
8764 },
8765 {
8766 "input": "xn--dlj.xn--ss-jbe65aw27i",
8767 "output": "xn--dlj.xn--ss-jbe65aw27i"
8768 },
8769 {
8770 "input": "\u2d15.\u06f0\u226ess\u0745",
8771 "output": "xn--dlj.xn--ss-jbe65aw27i"
8772 },
8773 {
8774 "input": "\u2d15.\u06f0<\u0338ss\u0745",
8775 "output": "xn--dlj.xn--ss-jbe65aw27i"
8776 },
8777 {
8778 "input": "\u10b5.\u06f0<\u0338SS\u0745",
8779 "output": "xn--dlj.xn--ss-jbe65aw27i"
8780 },
8781 {
8782 "input": "\u10b5.\u06f0\u226eSS\u0745",
8783 "output": "xn--dlj.xn--ss-jbe65aw27i"
8784 },
8785 {
8786 "input": "\u10b5.\u06f0\u226eSs\u0745",
8787 "output": "xn--dlj.xn--ss-jbe65aw27i"
8788 },
8789 {
8790 "input": "\u10b5.\u06f0<\u0338Ss\u0745",
8791 "output": "xn--dlj.xn--ss-jbe65aw27i"
8792 },
8793 {
8794 "input": "xn--dlj.xn--zca912alh227g",
8795 "output": "xn--dlj.xn--zca912alh227g"
8796 },
8797 {
8798 "input": "\u2d15.\u06f0\u226e\u00df\u0745",
8799 "output": "xn--dlj.xn--zca912alh227g"
8800 },
8801 {
8802 "input": "\u2d15.\u06f0<\u0338\u00df\u0745",
8803 "output": "xn--dlj.xn--zca912alh227g"
8804 },
8805 {
8806 "comment": "V7",
8807 "input": "xn--tnd.xn--ss-jbe65aw27i",
8808 "output": null
8809 },
8810 {
8811 "comment": "V7",
8812 "input": "xn--tnd.xn--zca912alh227g",
8813 "output": null
8814 },
8815 {
8816 "input": "xn--ge6h.xn--oc9a",
8817 "output": "xn--ge6h.xn--oc9a"
8818 },
8819 {
8820 "input": "\ud83a\udd28.\ua84f",
8821 "output": "xn--ge6h.xn--oc9a"
8822 },
8823 {
8824 "input": "\ud83a\udd06.\ua84f",
8825 "output": "xn--ge6h.xn--oc9a"
8826 },
8827 {
8828 "comment": "V7",
8829 "input": "\u2132\udb40\udd7a\ud937\udd52\u3002\u226f\u2f91",
8830 "output": null
8831 },
8832 {
8833 "comment": "V7",
8834 "input": "\u2132\udb40\udd7a\ud937\udd52\u3002>\u0338\u2f91",
8835 "output": null
8836 },
8837 {
8838 "comment": "V7",
8839 "input": "\u2132\udb40\udd7a\ud937\udd52\u3002\u226f\u897e",
8840 "output": null
8841 },
8842 {
8843 "comment": "V7",
8844 "input": "\u2132\udb40\udd7a\ud937\udd52\u3002>\u0338\u897e",
8845 "output": null
8846 },
8847 {
8848 "comment": "V7",
8849 "input": "\u214e\udb40\udd7a\ud937\udd52\u3002>\u0338\u897e",
8850 "output": null
8851 },
8852 {
8853 "comment": "V7",
8854 "input": "\u214e\udb40\udd7a\ud937\udd52\u3002\u226f\u897e",
8855 "output": null
8856 },
8857 {
8858 "comment": "V7",
8859 "input": "xn--73g39298c.xn--hdhz171b",
8860 "output": null
8861 },
8862 {
8863 "comment": "V7",
8864 "input": "\u214e\udb40\udd7a\ud937\udd52\u3002>\u0338\u2f91",
8865 "output": null
8866 },
8867 {
8868 "comment": "V7",
8869 "input": "\u214e\udb40\udd7a\ud937\udd52\u3002\u226f\u2f91",
8870 "output": null
8871 },
8872 {
8873 "comment": "V7",
8874 "input": "xn--f3g73398c.xn--hdhz171b",
8875 "output": null
8876 },
8877 {
8878 "comment": "C1; V3 (ignored)",
8879 "input": "\u200c.\u00df\u10a9-",
8880 "output": null
8881 },
8882 {
8883 "comment": "C1; V3 (ignored)",
8884 "input": "\u200c.\u00df\u2d09-",
8885 "output": null
8886 },
8887 {
8888 "comment": "C1; V3 (ignored)",
8889 "input": "\u200c.SS\u10a9-",
8890 "output": null
8891 },
8892 {
8893 "comment": "C1; V3 (ignored)",
8894 "input": "\u200c.ss\u2d09-",
8895 "output": null
8896 },
8897 {
8898 "comment": "C1; V3 (ignored)",
8899 "input": "\u200c.Ss\u2d09-",
8900 "output": null
8901 },
8902 {
8903 "comment": "V3 (ignored); A4_2 (ignored)",
8904 "input": ".xn--ss--bi1b",
8905 "output": ".xn--ss--bi1b"
8906 },
8907 {
8908 "comment": "C1; V3 (ignored)",
8909 "input": "xn--0ug.xn--ss--bi1b",
8910 "output": null
8911 },
8912 {
8913 "comment": "C1; V3 (ignored)",
8914 "input": "xn--0ug.xn----pfa2305a",
8915 "output": null
8916 },
8917 {
8918 "comment": "V7; V3 (ignored); A4_2 (ignored)",
8919 "input": ".xn--ss--4rn",
8920 "output": null
8921 },
8922 {
8923 "comment": "C1; V7; V3 (ignored)",
8924 "input": "xn--0ug.xn--ss--4rn",
8925 "output": null
8926 },
8927 {
8928 "comment": "C1; V7; V3 (ignored)",
8929 "input": "xn--0ug.xn----pfa042j",
8930 "output": null
8931 },
8932 {
8933 "input": "\u9f59--\ud835\udff0.\u00df",
8934 "output": "xn----4-p16k.xn--zca"
8935 },
8936 {
8937 "input": "\u9f59--4.\u00df",
8938 "output": "xn----4-p16k.xn--zca"
8939 },
8940 {
8941 "input": "\u9f59--4.SS",
8942 "output": "xn----4-p16k.ss"
8943 },
8944 {
8945 "input": "\u9f59--4.ss",
8946 "output": "xn----4-p16k.ss"
8947 },
8948 {
8949 "input": "\u9f59--4.Ss",
8950 "output": "xn----4-p16k.ss"
8951 },
8952 {
8953 "input": "xn----4-p16k.ss",
8954 "output": "xn----4-p16k.ss"
8955 },
8956 {
8957 "input": "xn----4-p16k.xn--zca",
8958 "output": "xn----4-p16k.xn--zca"
8959 },
8960 {
8961 "input": "\u9f59--\ud835\udff0.SS",
8962 "output": "xn----4-p16k.ss"
8963 },
8964 {
8965 "input": "\u9f59--\ud835\udff0.ss",
8966 "output": "xn----4-p16k.ss"
8967 },
8968 {
8969 "input": "\u9f59--\ud835\udff0.Ss",
8970 "output": "xn----4-p16k.ss"
8971 },
8972 {
8973 "comment": "V7; V3 (ignored)",
8974 "input": "\udb42\udea2-\u3002\uda2c\udc8f\u226e\ud805\udf2b",
8975 "output": null
8976 },
8977 {
8978 "comment": "V7; V3 (ignored)",
8979 "input": "\udb42\udea2-\u3002\uda2c\udc8f<\u0338\ud805\udf2b",
8980 "output": null
8981 },
8982 {
8983 "comment": "V7; V3 (ignored)",
8984 "input": "xn----bh61m.xn--gdhz157g0em1d",
8985 "output": null
8986 },
8987 {
8988 "comment": "C1; C2; V7",
8989 "input": "\u200c\udb40\ude79\u200d\u3002\ud9f3\udfe7\u226e\u10a9",
8990 "output": null
8991 },
8992 {
8993 "comment": "C1; C2; V7",
8994 "input": "\u200c\udb40\ude79\u200d\u3002\ud9f3\udfe7<\u0338\u10a9",
8995 "output": null
8996 },
8997 {
8998 "comment": "C1; C2; V7",
8999 "input": "\u200c\udb40\ude79\u200d\u3002\ud9f3\udfe7<\u0338\u2d09",
9000 "output": null
9001 },
9002 {
9003 "comment": "C1; C2; V7",
9004 "input": "\u200c\udb40\ude79\u200d\u3002\ud9f3\udfe7\u226e\u2d09",
9005 "output": null
9006 },
9007 {
9008 "comment": "V7",
9009 "input": "xn--3n36e.xn--gdh992byu01p",
9010 "output": null
9011 },
9012 {
9013 "comment": "C1; C2; V7",
9014 "input": "xn--0ugc90904y.xn--gdh992byu01p",
9015 "output": null
9016 },
9017 {
9018 "comment": "V7",
9019 "input": "xn--3n36e.xn--hnd112gpz83n",
9020 "output": null
9021 },
9022 {
9023 "comment": "C1; C2; V7",
9024 "input": "xn--0ugc90904y.xn--hnd112gpz83n",
9025 "output": null
9026 },
9027 {
9028 "comment": "V6",
9029 "input": "\ud836\ude9e\u10b0\uff61\ucaa1",
9030 "output": null
9031 },
9032 {
9033 "comment": "V6",
9034 "input": "\ud836\ude9e\u10b0\uff61\u110d\u1168\u11a8",
9035 "output": null
9036 },
9037 {
9038 "comment": "V6",
9039 "input": "\ud836\ude9e\u10b0\u3002\ucaa1",
9040 "output": null
9041 },
9042 {
9043 "comment": "V6",
9044 "input": "\ud836\ude9e\u10b0\u3002\u110d\u1168\u11a8",
9045 "output": null
9046 },
9047 {
9048 "comment": "V6",
9049 "input": "\ud836\ude9e\u2d10\u3002\u110d\u1168\u11a8",
9050 "output": null
9051 },
9052 {
9053 "comment": "V6",
9054 "input": "\ud836\ude9e\u2d10\u3002\ucaa1",
9055 "output": null
9056 },
9057 {
9058 "comment": "V6",
9059 "input": "xn--7kj1858k.xn--pi6b",
9060 "output": null
9061 },
9062 {
9063 "comment": "V6",
9064 "input": "\ud836\ude9e\u2d10\uff61\u110d\u1168\u11a8",
9065 "output": null
9066 },
9067 {
9068 "comment": "V6",
9069 "input": "\ud836\ude9e\u2d10\uff61\ucaa1",
9070 "output": null
9071 },
9072 {
9073 "comment": "V6; V7",
9074 "input": "xn--ond3755u.xn--pi6b",
9075 "output": null
9076 },
9077 {
9078 "comment": "C1; V7",
9079 "input": "\u1845\uff10\u200c\uff61\u23a2\udb52\ude04",
9080 "output": null
9081 },
9082 {
9083 "comment": "C1; V7",
9084 "input": "\u18450\u200c\u3002\u23a2\udb52\ude04",
9085 "output": null
9086 },
9087 {
9088 "comment": "V7",
9089 "input": "xn--0-z6j.xn--8lh28773l",
9090 "output": null
9091 },
9092 {
9093 "comment": "C1; V7",
9094 "input": "xn--0-z6jy93b.xn--8lh28773l",
9095 "output": null
9096 },
9097 {
9098 "comment": "C2",
9099 "input": "\ud88a\udf9a\uff19\ua369\u17d3\uff0e\u200d\u00df",
9100 "output": null
9101 },
9102 {
9103 "comment": "C2",
9104 "input": "\ud88a\udf9a9\ua369\u17d3.\u200d\u00df",
9105 "output": null
9106 },
9107 {
9108 "comment": "C2",
9109 "input": "\ud88a\udf9a9\ua369\u17d3.\u200dSS",
9110 "output": null
9111 },
9112 {
9113 "comment": "C2",
9114 "input": "\ud88a\udf9a9\ua369\u17d3.\u200dss",
9115 "output": null
9116 },
9117 {
9118 "input": "xn--9-i0j5967eg3qz.ss",
9119 "output": "xn--9-i0j5967eg3qz.ss"
9120 },
9121 {
9122 "input": "\ud88a\udf9a9\ua369\u17d3.ss",
9123 "output": "xn--9-i0j5967eg3qz.ss"
9124 },
9125 {
9126 "input": "\ud88a\udf9a9\ua369\u17d3.SS",
9127 "output": "xn--9-i0j5967eg3qz.ss"
9128 },
9129 {
9130 "comment": "C2",
9131 "input": "xn--9-i0j5967eg3qz.xn--ss-l1t",
9132 "output": null
9133 },
9134 {
9135 "comment": "C2",
9136 "input": "xn--9-i0j5967eg3qz.xn--zca770n",
9137 "output": null
9138 },
9139 {
9140 "comment": "C2",
9141 "input": "\ud88a\udf9a\uff19\ua369\u17d3\uff0e\u200dSS",
9142 "output": null
9143 },
9144 {
9145 "comment": "C2",
9146 "input": "\ud88a\udf9a\uff19\ua369\u17d3\uff0e\u200dss",
9147 "output": null
9148 },
9149 {
9150 "comment": "C2",
9151 "input": "\ud88a\udf9a9\ua369\u17d3.\u200dSs",
9152 "output": null
9153 },
9154 {
9155 "comment": "C2",
9156 "input": "\ud88a\udf9a\uff19\ua369\u17d3\uff0e\u200dSs",
9157 "output": null
9158 },
9159 {
9160 "input": "\ua5f7\ud804\udd80.\u075d\ud802\ude52",
9161 "output": "xn--ju8a625r.xn--hpb0073k"
9162 },
9163 {
9164 "input": "xn--ju8a625r.xn--hpb0073k",
9165 "output": "xn--ju8a625r.xn--hpb0073k"
9166 },
9167 {
9168 "comment": "V7; V3 (ignored)",
9169 "input": "\u2490\u226f-\u3002\ufe12\uda65\udc63-\ud939\udee0",
9170 "output": null
9171 },
9172 {
9173 "comment": "V7; V3 (ignored)",
9174 "input": "\u2490>\u0338-\u3002\ufe12\uda65\udc63-\ud939\udee0",
9175 "output": null
9176 },
9177 {
9178 "comment": "V7; V3 (ignored); A4_2 (ignored)",
9179 "input": "9.\u226f-\u3002\u3002\uda65\udc63-\ud939\udee0",
9180 "output": null
9181 },
9182 {
9183 "comment": "V7; V3 (ignored); A4_2 (ignored)",
9184 "input": "9.>\u0338-\u3002\u3002\uda65\udc63-\ud939\udee0",
9185 "output": null
9186 },
9187 {
9188 "comment": "V7; V3 (ignored); A4_2 (ignored)",
9189 "input": "9.xn----ogo..xn----xj54d1s69k",
9190 "output": null
9191 },
9192 {
9193 "comment": "V7; V3 (ignored)",
9194 "input": "xn----ogot9g.xn----n89hl0522az9u2a",
9195 "output": null
9196 },
9197 {
9198 "comment": "C2; V3 (ignored)",
9199 "input": "\u10af\udb40\udd4b-\uff0e\u200d\u10a9",
9200 "output": null
9201 },
9202 {
9203 "comment": "C2; V3 (ignored)",
9204 "input": "\u10af\udb40\udd4b-.\u200d\u10a9",
9205 "output": null
9206 },
9207 {
9208 "comment": "C2; V3 (ignored)",
9209 "input": "\u2d0f\udb40\udd4b-.\u200d\u2d09",
9210 "output": null
9211 },
9212 {
9213 "comment": "V3 (ignored)",
9214 "input": "xn----3vs.xn--0kj",
9215 "output": "xn----3vs.xn--0kj"
9216 },
9217 {
9218 "comment": "C2; V3 (ignored)",
9219 "input": "xn----3vs.xn--1ug532c",
9220 "output": null
9221 },
9222 {
9223 "comment": "C2; V3 (ignored)",
9224 "input": "\u2d0f\udb40\udd4b-\uff0e\u200d\u2d09",
9225 "output": null
9226 },
9227 {
9228 "comment": "V7; V3 (ignored)",
9229 "input": "xn----00g.xn--hnd",
9230 "output": null
9231 },
9232 {
9233 "comment": "C2; V7; V3 (ignored)",
9234 "input": "xn----00g.xn--hnd399e",
9235 "output": null
9236 },
9237 {
9238 "comment": "V6; V3 (ignored)",
9239 "input": "\u1714\u3002\udb40\udda3-\ud804\udeea",
9240 "output": null
9241 },
9242 {
9243 "comment": "V6; V3 (ignored)",
9244 "input": "xn--fze.xn----ly8i",
9245 "output": null
9246 },
9247 {
9248 "comment": "V6; V7; V3 (ignored)",
9249 "input": "\uabe8-\uff0e\uda60\udfdc\u05bd\u00df",
9250 "output": null
9251 },
9252 {
9253 "comment": "V6; V7; V3 (ignored)",
9254 "input": "\uabe8-.\uda60\udfdc\u05bd\u00df",
9255 "output": null
9256 },
9257 {
9258 "comment": "V6; V7; V3 (ignored)",
9259 "input": "\uabe8-.\uda60\udfdc\u05bdSS",
9260 "output": null
9261 },
9262 {
9263 "comment": "V6; V7; V3 (ignored)",
9264 "input": "\uabe8-.\uda60\udfdc\u05bdss",
9265 "output": null
9266 },
9267 {
9268 "comment": "V6; V7; V3 (ignored)",
9269 "input": "\uabe8-.\uda60\udfdc\u05bdSs",
9270 "output": null
9271 },
9272 {
9273 "comment": "V6; V7; V3 (ignored)",
9274 "input": "xn----pw5e.xn--ss-7jd10716y",
9275 "output": null
9276 },
9277 {
9278 "comment": "V6; V7; V3 (ignored)",
9279 "input": "xn----pw5e.xn--zca50wfv060a",
9280 "output": null
9281 },
9282 {
9283 "comment": "V6; V7; V3 (ignored)",
9284 "input": "\uabe8-\uff0e\uda60\udfdc\u05bdSS",
9285 "output": null
9286 },
9287 {
9288 "comment": "V6; V7; V3 (ignored)",
9289 "input": "\uabe8-\uff0e\uda60\udfdc\u05bdss",
9290 "output": null
9291 },
9292 {
9293 "comment": "V6; V7; V3 (ignored)",
9294 "input": "\uabe8-\uff0e\uda60\udfdc\u05bdSs",
9295 "output": null
9296 },
9297 {
9298 "comment": "V6",
9299 "input": "\ud835\udfe5\u266e\ud805\udf2b\u08ed\uff0e\u17d2\ud805\udf2b8\udb40\udd8f",
9300 "output": null
9301 },
9302 {
9303 "comment": "V6",
9304 "input": "3\u266e\ud805\udf2b\u08ed.\u17d2\ud805\udf2b8\udb40\udd8f",
9305 "output": null
9306 },
9307 {
9308 "comment": "V6",
9309 "input": "xn--3-ksd277tlo7s.xn--8-f0jx021l",
9310 "output": null
9311 },
9312 {
9313 "comment": "C2; V7; V3 (ignored)",
9314 "input": "-\uff61\uda14\udf00\u200d\u2761",
9315 "output": null
9316 },
9317 {
9318 "comment": "C2; V7; V3 (ignored)",
9319 "input": "-\u3002\uda14\udf00\u200d\u2761",
9320 "output": null
9321 },
9322 {
9323 "comment": "V7; V3 (ignored)",
9324 "input": "-.xn--nei54421f",
9325 "output": null
9326 },
9327 {
9328 "comment": "C2; V7; V3 (ignored)",
9329 "input": "-.xn--1ug800aq795s",
9330 "output": null
9331 },
9332 {
9333 "comment": "V6; V7",
9334 "input": "\ud835\udfd3\u2631\ud835\udfd0\uda57\udc35\uff61\ud836\udeae\ud902\udc73",
9335 "output": null
9336 },
9337 {
9338 "comment": "V6; V7",
9339 "input": "5\u26312\uda57\udc35\u3002\ud836\udeae\ud902\udc73",
9340 "output": null
9341 },
9342 {
9343 "comment": "V6; V7",
9344 "input": "xn--52-dwx47758j.xn--kd3hk431k",
9345 "output": null
9346 },
9347 {
9348 "comment": "V7; V3 (ignored)",
9349 "input": "-.-\u251c\uda1a\udda3",
9350 "output": null
9351 },
9352 {
9353 "comment": "V7; V3 (ignored)",
9354 "input": "-.xn----ukp70432h",
9355 "output": null
9356 },
9357 {
9358 "comment": "V7",
9359 "input": "\u03c2\uff0e\ufdc1\ud83d\udf9b\u2488",
9360 "output": null
9361 },
9362 {
9363 "comment": "A4_2 (ignored)",
9364 "input": "\u03c2.\u0641\u0645\u064a\ud83d\udf9b1.",
9365 "output": "xn--3xa.xn--1-gocmu97674d."
9366 },
9367 {
9368 "comment": "A4_2 (ignored)",
9369 "input": "\u03a3.\u0641\u0645\u064a\ud83d\udf9b1.",
9370 "output": "xn--4xa.xn--1-gocmu97674d."
9371 },
9372 {
9373 "comment": "A4_2 (ignored)",
9374 "input": "\u03c3.\u0641\u0645\u064a\ud83d\udf9b1.",
9375 "output": "xn--4xa.xn--1-gocmu97674d."
9376 },
9377 {
9378 "comment": "A4_2 (ignored)",
9379 "input": "xn--4xa.xn--1-gocmu97674d.",
9380 "output": "xn--4xa.xn--1-gocmu97674d."
9381 },
9382 {
9383 "comment": "A4_2 (ignored)",
9384 "input": "xn--3xa.xn--1-gocmu97674d.",
9385 "output": "xn--3xa.xn--1-gocmu97674d."
9386 },
9387 {
9388 "comment": "V7",
9389 "input": "\u03a3\uff0e\ufdc1\ud83d\udf9b\u2488",
9390 "output": null
9391 },
9392 {
9393 "comment": "V7",
9394 "input": "\u03c3\uff0e\ufdc1\ud83d\udf9b\u2488",
9395 "output": null
9396 },
9397 {
9398 "comment": "V7",
9399 "input": "xn--4xa.xn--dhbip2802atb20c",
9400 "output": null
9401 },
9402 {
9403 "comment": "V7",
9404 "input": "xn--3xa.xn--dhbip2802atb20c",
9405 "output": null
9406 },
9407 {
9408 "comment": "V7",
9409 "input": "9\udb40\udde5\uff0e\udb6b\udd34\u1893",
9410 "output": null
9411 },
9412 {
9413 "comment": "V7",
9414 "input": "9\udb40\udde5.\udb6b\udd34\u1893",
9415 "output": null
9416 },
9417 {
9418 "comment": "V7",
9419 "input": "9.xn--dbf91222q",
9420 "output": null
9421 },
9422 {
9423 "comment": "C1; V7",
9424 "input": "\ufe12\u10b6\u0366\uff0e\u200c",
9425 "output": null
9426 },
9427 {
9428 "comment": "C1; A4_2 (ignored)",
9429 "input": "\u3002\u10b6\u0366.\u200c",
9430 "output": null
9431 },
9432 {
9433 "comment": "C1; A4_2 (ignored)",
9434 "input": "\u3002\u2d16\u0366.\u200c",
9435 "output": null
9436 },
9437 {
9438 "comment": "A4_2 (ignored)",
9439 "input": ".xn--hva754s.",
9440 "output": ".xn--hva754s."
9441 },
9442 {
9443 "comment": "C1; A4_2 (ignored)",
9444 "input": ".xn--hva754s.xn--0ug",
9445 "output": null
9446 },
9447 {
9448 "comment": "C1; V7",
9449 "input": "\ufe12\u2d16\u0366\uff0e\u200c",
9450 "output": null
9451 },
9452 {
9453 "comment": "V7; A4_2 (ignored)",
9454 "input": "xn--hva754sy94k.",
9455 "output": null
9456 },
9457 {
9458 "comment": "C1; V7",
9459 "input": "xn--hva754sy94k.xn--0ug",
9460 "output": null
9461 },
9462 {
9463 "comment": "V7; A4_2 (ignored)",
9464 "input": ".xn--hva929d.",
9465 "output": null
9466 },
9467 {
9468 "comment": "C1; V7; A4_2 (ignored)",
9469 "input": ".xn--hva929d.xn--0ug",
9470 "output": null
9471 },
9472 {
9473 "comment": "V7; A4_2 (ignored)",
9474 "input": "xn--hva929dl29p.",
9475 "output": null
9476 },
9477 {
9478 "comment": "C1; V7",
9479 "input": "xn--hva929dl29p.xn--0ug",
9480 "output": null
9481 },
9482 {
9483 "comment": "A4_2 (ignored)",
9484 "input": "xn--hva754s.",
9485 "output": "xn--hva754s."
9486 },
9487 {
9488 "comment": "A4_2 (ignored)",
9489 "input": "\u2d16\u0366.",
9490 "output": "xn--hva754s."
9491 },
9492 {
9493 "comment": "A4_2 (ignored)",
9494 "input": "\u10b6\u0366.",
9495 "output": "xn--hva754s."
9496 },
9497 {
9498 "comment": "V7; A4_2 (ignored)",
9499 "input": "xn--hva929d.",
9500 "output": null
9501 },
9502 {
9503 "input": "xn--hzb.xn--ukj4430l",
9504 "output": "xn--hzb.xn--ukj4430l"
9505 },
9506 {
9507 "input": "\u08bb.\u2d03\ud838\udc12",
9508 "output": "xn--hzb.xn--ukj4430l"
9509 },
9510 {
9511 "input": "\u08bb.\u10a3\ud838\udc12",
9512 "output": "xn--hzb.xn--ukj4430l"
9513 },
9514 {
9515 "comment": "V7",
9516 "input": "xn--hzb.xn--bnd2938u",
9517 "output": null
9518 },
9519 {
9520 "comment": "C1; C2; V7",
9521 "input": "\u200d\u200c\u3002\uff12\u4af7\udb42\uddf7",
9522 "output": null
9523 },
9524 {
9525 "comment": "C1; C2; V7",
9526 "input": "\u200d\u200c\u30022\u4af7\udb42\uddf7",
9527 "output": null
9528 },
9529 {
9530 "comment": "V7; A4_2 (ignored)",
9531 "input": ".xn--2-me5ay1273i",
9532 "output": null
9533 },
9534 {
9535 "comment": "C1; C2; V7",
9536 "input": "xn--0ugb.xn--2-me5ay1273i",
9537 "output": null
9538 },
9539 {
9540 "comment": "V7; V3 (ignored)",
9541 "input": "-\ud838\udc24\udb32\udc10\u3002\ud9e2\udf16",
9542 "output": null
9543 },
9544 {
9545 "comment": "V7; V3 (ignored)",
9546 "input": "xn----rq4re4997d.xn--l707b",
9547 "output": null
9548 },
9549 {
9550 "comment": "C1; V7",
9551 "input": "\udb8d\udec2\ufe12\u200c\u37c0\uff0e\u0624\u2488",
9552 "output": null
9553 },
9554 {
9555 "comment": "C1; V7",
9556 "input": "\udb8d\udec2\ufe12\u200c\u37c0\uff0e\u0648\u0654\u2488",
9557 "output": null
9558 },
9559 {
9560 "comment": "V7; A4_2 (ignored)",
9561 "input": "xn--z272f.xn--etl.xn--1-smc.",
9562 "output": null
9563 },
9564 {
9565 "comment": "V7",
9566 "input": "xn--etlt457ccrq7h.xn--jgb476m",
9567 "output": null
9568 },
9569 {
9570 "comment": "C1; V7",
9571 "input": "xn--0ug754gxl4ldlt0k.xn--jgb476m",
9572 "output": null
9573 },
9574 {
9575 "comment": "V7",
9576 "input": "\u07fc\ud803\ude06.\ud80d\udd8f\ufe12\ud8ea\ude29\u10b0",
9577 "output": null
9578 },
9579 {
9580 "comment": "V7",
9581 "input": "\u07fc\ud803\ude06.\ud80d\udd8f\u3002\ud8ea\ude29\u10b0",
9582 "output": null
9583 },
9584 {
9585 "comment": "V7",
9586 "input": "\u07fc\ud803\ude06.\ud80d\udd8f\u3002\ud8ea\ude29\u2d10",
9587 "output": null
9588 },
9589 {
9590 "comment": "V7",
9591 "input": "xn--0tb8725k.xn--tu8d.xn--7kj73887a",
9592 "output": null
9593 },
9594 {
9595 "comment": "V7",
9596 "input": "\u07fc\ud803\ude06.\ud80d\udd8f\ufe12\ud8ea\ude29\u2d10",
9597 "output": null
9598 },
9599 {
9600 "comment": "V7",
9601 "input": "xn--0tb8725k.xn--7kj9008dt18a7py9c",
9602 "output": null
9603 },
9604 {
9605 "comment": "V7",
9606 "input": "xn--0tb8725k.xn--tu8d.xn--ond97931d",
9607 "output": null
9608 },
9609 {
9610 "comment": "V7",
9611 "input": "xn--0tb8725k.xn--ond3562jt18a7py9c",
9612 "output": null
9613 },
9614 {
9615 "comment": "V6; V7",
9616 "input": "\u10c5\u26ad\udb41\uddab\u22c3\uff61\ud804\udf3c",
9617 "output": null
9618 },
9619 {
9620 "comment": "V6; V7",
9621 "input": "\u10c5\u26ad\udb41\uddab\u22c3\u3002\ud804\udf3c",
9622 "output": null
9623 },
9624 {
9625 "comment": "V6; V7",
9626 "input": "\u2d25\u26ad\udb41\uddab\u22c3\u3002\ud804\udf3c",
9627 "output": null
9628 },
9629 {
9630 "comment": "V6; V7",
9631 "input": "xn--vfh16m67gx1162b.xn--ro1d",
9632 "output": null
9633 },
9634 {
9635 "comment": "V6; V7",
9636 "input": "\u2d25\u26ad\udb41\uddab\u22c3\uff61\ud804\udf3c",
9637 "output": null
9638 },
9639 {
9640 "comment": "V6; V7",
9641 "input": "xn--9nd623g4zc5z060c.xn--ro1d",
9642 "output": null
9643 },
9644 {
9645 "comment": "V3 (ignored)",
9646 "input": "\udb40\udd93\u26cf-\u3002\ua852",
9647 "output": "xn----o9p.xn--rc9a"
9648 },
9649 {
9650 "comment": "V3 (ignored)",
9651 "input": "xn----o9p.xn--rc9a",
9652 "output": "xn----o9p.xn--rc9a"
9653 },
9654 {
9655 "comment": "V7; V3 (ignored)",
9656 "input": "\ud8c8\ude26\u5e37\uff61\u226f\u843a\u1dc8-",
9657 "output": null
9658 },
9659 {
9660 "comment": "V7; V3 (ignored)",
9661 "input": "\ud8c8\ude26\u5e37\uff61>\u0338\u843a\u1dc8-",
9662 "output": null
9663 },
9664 {
9665 "comment": "V7; V3 (ignored)",
9666 "input": "\ud8c8\ude26\u5e37\u3002\u226f\u843a\u1dc8-",
9667 "output": null
9668 },
9669 {
9670 "comment": "V7; V3 (ignored)",
9671 "input": "\ud8c8\ude26\u5e37\u3002>\u0338\u843a\u1dc8-",
9672 "output": null
9673 },
9674 {
9675 "comment": "V7; V3 (ignored)",
9676 "input": "xn--qutw175s.xn----mimu6tf67j",
9677 "output": null
9678 },
9679 {
9680 "comment": "C2",
9681 "input": "\u200d\u650c\uabed\u3002\u1896-\u10b8",
9682 "output": null
9683 },
9684 {
9685 "comment": "C2",
9686 "input": "\u200d\u650c\uabed\u3002\u1896-\u2d18",
9687 "output": null
9688 },
9689 {
9690 "input": "xn--p9ut19m.xn----mck373i",
9691 "output": "xn--p9ut19m.xn----mck373i"
9692 },
9693 {
9694 "input": "\u650c\uabed.\u1896-\u2d18",
9695 "output": "xn--p9ut19m.xn----mck373i"
9696 },
9697 {
9698 "input": "\u650c\uabed.\u1896-\u10b8",
9699 "output": "xn--p9ut19m.xn----mck373i"
9700 },
9701 {
9702 "comment": "C2",
9703 "input": "xn--1ug592ykp6b.xn----mck373i",
9704 "output": null
9705 },
9706 {
9707 "comment": "V7",
9708 "input": "xn--p9ut19m.xn----k1g451d",
9709 "output": null
9710 },
9711 {
9712 "comment": "C2; V7",
9713 "input": "xn--1ug592ykp6b.xn----k1g451d",
9714 "output": null
9715 },
9716 {
9717 "comment": "C1; V7",
9718 "input": "\u200c\ua5a8\uff0e\u2497\uff13\ud212\u06f3",
9719 "output": null
9720 },
9721 {
9722 "comment": "C1; V7",
9723 "input": "\u200c\ua5a8\uff0e\u2497\uff13\u1110\u116d\u11a9\u06f3",
9724 "output": null
9725 },
9726 {
9727 "comment": "C1",
9728 "input": "\u200c\ua5a8.16.3\ud212\u06f3",
9729 "output": null
9730 },
9731 {
9732 "comment": "C1",
9733 "input": "\u200c\ua5a8.16.3\u1110\u116d\u11a9\u06f3",
9734 "output": null
9735 },
9736 {
9737 "input": "xn--9r8a.16.xn--3-nyc0117m",
9738 "output": "xn--9r8a.16.xn--3-nyc0117m"
9739 },
9740 {
9741 "input": "\ua5a8.16.3\ud212\u06f3",
9742 "output": "xn--9r8a.16.xn--3-nyc0117m"
9743 },
9744 {
9745 "input": "\ua5a8.16.3\u1110\u116d\u11a9\u06f3",
9746 "output": "xn--9r8a.16.xn--3-nyc0117m"
9747 },
9748 {
9749 "comment": "C1",
9750 "input": "xn--0ug2473c.16.xn--3-nyc0117m",
9751 "output": null
9752 },
9753 {
9754 "comment": "V7",
9755 "input": "xn--9r8a.xn--3-nyc678tu07m",
9756 "output": null
9757 },
9758 {
9759 "comment": "C1; V7",
9760 "input": "xn--0ug2473c.xn--3-nyc678tu07m",
9761 "output": null
9762 },
9763 {
9764 "comment": "C2",
9765 "input": "\ud835\udfcf\ud836\ude19\u2e16.\u200d",
9766 "output": null
9767 },
9768 {
9769 "comment": "C2",
9770 "input": "1\ud836\ude19\u2e16.\u200d",
9771 "output": null
9772 },
9773 {
9774 "comment": "A4_2 (ignored)",
9775 "input": "xn--1-5bt6845n.",
9776 "output": "xn--1-5bt6845n."
9777 },
9778 {
9779 "comment": "A4_2 (ignored)",
9780 "input": "1\ud836\ude19\u2e16.",
9781 "output": "xn--1-5bt6845n."
9782 },
9783 {
9784 "comment": "C2",
9785 "input": "xn--1-5bt6845n.xn--1ug",
9786 "output": null
9787 },
9788 {
9789 "comment": "V7",
9790 "input": "F\udb40\udd5f\uff61\ud9fd\uddc5\u265a",
9791 "output": null
9792 },
9793 {
9794 "comment": "V7",
9795 "input": "F\udb40\udd5f\u3002\ud9fd\uddc5\u265a",
9796 "output": null
9797 },
9798 {
9799 "comment": "V7",
9800 "input": "f\udb40\udd5f\u3002\ud9fd\uddc5\u265a",
9801 "output": null
9802 },
9803 {
9804 "comment": "V7",
9805 "input": "f.xn--45hz6953f",
9806 "output": null
9807 },
9808 {
9809 "comment": "V7",
9810 "input": "f\udb40\udd5f\uff61\ud9fd\uddc5\u265a",
9811 "output": null
9812 },
9813 {
9814 "comment": "V6; V7",
9815 "input": "\u0b4d\ud804\udd34\u1de9\u3002\ud835\udfee\u10b8\ud838\udc28\ud8ce\udd47",
9816 "output": null
9817 },
9818 {
9819 "comment": "V6; V7",
9820 "input": "\u0b4d\ud804\udd34\u1de9\u30022\u10b8\ud838\udc28\ud8ce\udd47",
9821 "output": null
9822 },
9823 {
9824 "comment": "V6; V7",
9825 "input": "\u0b4d\ud804\udd34\u1de9\u30022\u2d18\ud838\udc28\ud8ce\udd47",
9826 "output": null
9827 },
9828 {
9829 "comment": "V6; V7",
9830 "input": "xn--9ic246gs21p.xn--2-nws2918ndrjr",
9831 "output": null
9832 },
9833 {
9834 "comment": "V6; V7",
9835 "input": "\u0b4d\ud804\udd34\u1de9\u3002\ud835\udfee\u2d18\ud838\udc28\ud8ce\udd47",
9836 "output": null
9837 },
9838 {
9839 "comment": "V6; V7",
9840 "input": "xn--9ic246gs21p.xn--2-k1g43076adrwq",
9841 "output": null
9842 },
9843 {
9844 "comment": "C1; V7",
9845 "input": "\uda0e\udc2d\u200c\u200c\u2488\u3002\u52c9\ud804\udc45",
9846 "output": null
9847 },
9848 {
9849 "comment": "C1; V7; A4_2 (ignored)",
9850 "input": "\uda0e\udc2d\u200c\u200c1.\u3002\u52c9\ud804\udc45",
9851 "output": null
9852 },
9853 {
9854 "comment": "V7; A4_2 (ignored)",
9855 "input": "xn--1-yi00h..xn--4grs325b",
9856 "output": null
9857 },
9858 {
9859 "comment": "C1; V7; A4_2 (ignored)",
9860 "input": "xn--1-rgna61159u..xn--4grs325b",
9861 "output": null
9862 },
9863 {
9864 "comment": "V7",
9865 "input": "xn--tsh11906f.xn--4grs325b",
9866 "output": null
9867 },
9868 {
9869 "comment": "C1; V7",
9870 "input": "xn--0uga855aez302a.xn--4grs325b",
9871 "output": null
9872 },
9873 {
9874 "comment": "V7",
9875 "input": "\u1843.\u73bf\ud96c\ude1c\udb15\udf90",
9876 "output": null
9877 },
9878 {
9879 "comment": "V7",
9880 "input": "xn--27e.xn--7cy81125a0yq4a",
9881 "output": null
9882 },
9883 {
9884 "comment": "C1; V7",
9885 "input": "\u200c\u200c\uff61\u2488\u226f\ud835\udff5",
9886 "output": null
9887 },
9888 {
9889 "comment": "C1; V7",
9890 "input": "\u200c\u200c\uff61\u2488>\u0338\ud835\udff5",
9891 "output": null
9892 },
9893 {
9894 "comment": "C1",
9895 "input": "\u200c\u200c\u30021.\u226f9",
9896 "output": null
9897 },
9898 {
9899 "comment": "C1",
9900 "input": "\u200c\u200c\u30021.>\u03389",
9901 "output": null
9902 },
9903 {
9904 "comment": "A4_2 (ignored)",
9905 "input": ".1.xn--9-ogo",
9906 "output": ".1.xn--9-ogo"
9907 },
9908 {
9909 "comment": "C1",
9910 "input": "xn--0uga.1.xn--9-ogo",
9911 "output": null
9912 },
9913 {
9914 "comment": "V7; A4_2 (ignored)",
9915 "input": ".xn--9-ogo37g",
9916 "output": null
9917 },
9918 {
9919 "comment": "C1; V7",
9920 "input": "xn--0uga.xn--9-ogo37g",
9921 "output": null
9922 },
9923 {
9924 "comment": "V6; V3 (ignored)",
9925 "input": "\u20da\uff0e\ud805\ude3f-",
9926 "output": null
9927 },
9928 {
9929 "comment": "V6; V3 (ignored)",
9930 "input": "\u20da.\ud805\ude3f-",
9931 "output": null
9932 },
9933 {
9934 "comment": "V6; V3 (ignored)",
9935 "input": "xn--w0g.xn----bd0j",
9936 "output": null
9937 },
9938 {
9939 "comment": "C2; V6; V7",
9940 "input": "\u1082-\u200d\ua8ea\uff0e\ua84a\u200d\ud9b3\ude33",
9941 "output": null
9942 },
9943 {
9944 "comment": "C2; V6; V7",
9945 "input": "\u1082-\u200d\ua8ea.\ua84a\u200d\ud9b3\ude33",
9946 "output": null
9947 },
9948 {
9949 "comment": "V6; V7",
9950 "input": "xn----gyg3618i.xn--jc9ao4185a",
9951 "output": null
9952 },
9953 {
9954 "comment": "C2; V6; V7",
9955 "input": "xn----gyg250jio7k.xn--1ug8774cri56d",
9956 "output": null
9957 },
9958 {
9959 "comment": "V6",
9960 "input": "\ud804\ude35\u5eca.\ud802\udc0d",
9961 "output": null
9962 },
9963 {
9964 "comment": "V6",
9965 "input": "xn--xytw701b.xn--yc9c",
9966 "output": null
9967 },
9968 {
9969 "comment": "V7",
9970 "input": "\u10be\ud899\udec0\ud82d\uddfb\uff0e\u1897\ub9ab",
9971 "output": null
9972 },
9973 {
9974 "comment": "V7",
9975 "input": "\u10be\ud899\udec0\ud82d\uddfb\uff0e\u1897\u1105\u1174\u11c2",
9976 "output": null
9977 },
9978 {
9979 "comment": "V7",
9980 "input": "\u10be\ud899\udec0\ud82d\uddfb.\u1897\ub9ab",
9981 "output": null
9982 },
9983 {
9984 "comment": "V7",
9985 "input": "\u10be\ud899\udec0\ud82d\uddfb.\u1897\u1105\u1174\u11c2",
9986 "output": null
9987 },
9988 {
9989 "comment": "V7",
9990 "input": "\u2d1e\ud899\udec0\ud82d\uddfb.\u1897\u1105\u1174\u11c2",
9991 "output": null
9992 },
9993 {
9994 "comment": "V7",
9995 "input": "\u2d1e\ud899\udec0\ud82d\uddfb.\u1897\ub9ab",
9996 "output": null
9997 },
9998 {
9999 "comment": "V7",
10000 "input": "xn--mlj0486jgl2j.xn--hbf6853f",
10001 "output": null
10002 },
10003 {
10004 "comment": "V7",
10005 "input": "\u2d1e\ud899\udec0\ud82d\uddfb\uff0e\u1897\u1105\u1174\u11c2",
10006 "output": null
10007 },
10008 {
10009 "comment": "V7",
10010 "input": "\u2d1e\ud899\udec0\ud82d\uddfb\uff0e\u1897\ub9ab",
10011 "output": null
10012 },
10013 {
10014 "comment": "V7",
10015 "input": "xn--2nd8876sgl2j.xn--hbf6853f",
10016 "output": null
10017 },
10018 {
10019 "comment": "C2; V7",
10020 "input": "\u00df\u200d\u103a\uff61\u2488",
10021 "output": null
10022 },
10023 {
10024 "comment": "A4_2 (ignored)",
10025 "input": "xn--ss-f4j.b.",
10026 "output": "xn--ss-f4j.b."
10027 },
10028 {
10029 "comment": "A4_2 (ignored)",
10030 "input": "ss\u103a.b.",
10031 "output": "xn--ss-f4j.b."
10032 },
10033 {
10034 "comment": "A4_2 (ignored)",
10035 "input": "SS\u103a.B.",
10036 "output": "xn--ss-f4j.b."
10037 },
10038 {
10039 "comment": "A4_2 (ignored)",
10040 "input": "Ss\u103a.b.",
10041 "output": "xn--ss-f4j.b."
10042 },
10043 {
10044 "comment": "C2; A4_2 (ignored)",
10045 "input": "xn--ss-f4j585j.b.",
10046 "output": null
10047 },
10048 {
10049 "comment": "C2; A4_2 (ignored)",
10050 "input": "xn--zca679eh2l.b.",
10051 "output": null
10052 },
10053 {
10054 "comment": "C2; V7",
10055 "input": "SS\u200d\u103a\uff61\u2488",
10056 "output": null
10057 },
10058 {
10059 "comment": "C2; V7",
10060 "input": "ss\u200d\u103a\uff61\u2488",
10061 "output": null
10062 },
10063 {
10064 "comment": "C2; V7",
10065 "input": "Ss\u200d\u103a\uff61\u2488",
10066 "output": null
10067 },
10068 {
10069 "comment": "V7",
10070 "input": "xn--ss-f4j.xn--tsh",
10071 "output": null
10072 },
10073 {
10074 "comment": "C2; V7",
10075 "input": "xn--ss-f4j585j.xn--tsh",
10076 "output": null
10077 },
10078 {
10079 "comment": "C2; V7",
10080 "input": "xn--zca679eh2l.xn--tsh",
10081 "output": null
10082 },
10083 {
10084 "comment": "A4_2 (ignored)",
10085 "input": "SS\u103a.b.",
10086 "output": "xn--ss-f4j.b."
10087 },
10088 {
10089 "input": "\u06cc\ud802\ude3f\uff0e\u00df\u0f84\ud804\udf6c",
10090 "output": "xn--clb2593k.xn--zca216edt0r"
10091 },
10092 {
10093 "input": "\u06cc\ud802\ude3f.\u00df\u0f84\ud804\udf6c",
10094 "output": "xn--clb2593k.xn--zca216edt0r"
10095 },
10096 {
10097 "input": "\u06cc\ud802\ude3f.SS\u0f84\ud804\udf6c",
10098 "output": "xn--clb2593k.xn--ss-toj6092t"
10099 },
10100 {
10101 "input": "\u06cc\ud802\ude3f.ss\u0f84\ud804\udf6c",
10102 "output": "xn--clb2593k.xn--ss-toj6092t"
10103 },
10104 {
10105 "input": "xn--clb2593k.xn--ss-toj6092t",
10106 "output": "xn--clb2593k.xn--ss-toj6092t"
10107 },
10108 {
10109 "input": "xn--clb2593k.xn--zca216edt0r",
10110 "output": "xn--clb2593k.xn--zca216edt0r"
10111 },
10112 {
10113 "input": "\u06cc\ud802\ude3f\uff0eSS\u0f84\ud804\udf6c",
10114 "output": "xn--clb2593k.xn--ss-toj6092t"
10115 },
10116 {
10117 "input": "\u06cc\ud802\ude3f\uff0ess\u0f84\ud804\udf6c",
10118 "output": "xn--clb2593k.xn--ss-toj6092t"
10119 },
10120 {
10121 "input": "\u06cc\ud802\ude3f.Ss\u0f84\ud804\udf6c",
10122 "output": "xn--clb2593k.xn--ss-toj6092t"
10123 },
10124 {
10125 "input": "\u06cc\ud802\ude3f\uff0eSs\u0f84\ud804\udf6c",
10126 "output": "xn--clb2593k.xn--ss-toj6092t"
10127 },
10128 {
10129 "comment": "C1; A4_2 (ignored)",
10130 "input": "\ud835\udfe0\u226e\u200c\uff61\udb40\udd71\u17b4",
10131 "output": null
10132 },
10133 {
10134 "comment": "C1; A4_2 (ignored)",
10135 "input": "\ud835\udfe0<\u0338\u200c\uff61\udb40\udd71\u17b4",
10136 "output": null
10137 },
10138 {
10139 "comment": "C1; A4_2 (ignored)",
10140 "input": "8\u226e\u200c\u3002\udb40\udd71\u17b4",
10141 "output": null
10142 },
10143 {
10144 "comment": "C1; A4_2 (ignored)",
10145 "input": "8<\u0338\u200c\u3002\udb40\udd71\u17b4",
10146 "output": null
10147 },
10148 {
10149 "comment": "A4_2 (ignored)",
10150 "input": "xn--8-ngo.",
10151 "output": "xn--8-ngo."
10152 },
10153 {
10154 "comment": "A4_2 (ignored)",
10155 "input": "8\u226e.",
10156 "output": "xn--8-ngo."
10157 },
10158 {
10159 "comment": "A4_2 (ignored)",
10160 "input": "8<\u0338.",
10161 "output": "xn--8-ngo."
10162 },
10163 {
10164 "comment": "C1; A4_2 (ignored)",
10165 "input": "xn--8-sgn10i.",
10166 "output": null
10167 },
10168 {
10169 "comment": "V6; V7",
10170 "input": "xn--8-ngo.xn--z3e",
10171 "output": null
10172 },
10173 {
10174 "comment": "C1; V6; V7",
10175 "input": "xn--8-sgn10i.xn--z3e",
10176 "output": null
10177 },
10178 {
10179 "comment": "V7",
10180 "input": "\u1895\u226f\ufe12\ud8d0\udcaf\uff0e\u10a0",
10181 "output": null
10182 },
10183 {
10184 "comment": "V7",
10185 "input": "\u1895>\u0338\ufe12\ud8d0\udcaf\uff0e\u10a0",
10186 "output": null
10187 },
10188 {
10189 "comment": "V7",
10190 "input": "\u1895\u226f\u3002\ud8d0\udcaf.\u10a0",
10191 "output": null
10192 },
10193 {
10194 "comment": "V7",
10195 "input": "\u1895>\u0338\u3002\ud8d0\udcaf.\u10a0",
10196 "output": null
10197 },
10198 {
10199 "comment": "V7",
10200 "input": "\u1895>\u0338\u3002\ud8d0\udcaf.\u2d00",
10201 "output": null
10202 },
10203 {
10204 "comment": "V7",
10205 "input": "\u1895\u226f\u3002\ud8d0\udcaf.\u2d00",
10206 "output": null
10207 },
10208 {
10209 "comment": "V7",
10210 "input": "xn--fbf851c.xn--ko1u.xn--rkj",
10211 "output": null
10212 },
10213 {
10214 "comment": "V7",
10215 "input": "\u1895>\u0338\ufe12\ud8d0\udcaf\uff0e\u2d00",
10216 "output": null
10217 },
10218 {
10219 "comment": "V7",
10220 "input": "\u1895\u226f\ufe12\ud8d0\udcaf\uff0e\u2d00",
10221 "output": null
10222 },
10223 {
10224 "comment": "V7",
10225 "input": "xn--fbf851cq98poxw1a.xn--rkj",
10226 "output": null
10227 },
10228 {
10229 "comment": "V7",
10230 "input": "xn--fbf851c.xn--ko1u.xn--7md",
10231 "output": null
10232 },
10233 {
10234 "comment": "V7",
10235 "input": "xn--fbf851cq98poxw1a.xn--7md",
10236 "output": null
10237 },
10238 {
10239 "comment": "V6; V3 (ignored)",
10240 "input": "\u0f9f\uff0e-\u082a",
10241 "output": null
10242 },
10243 {
10244 "comment": "V6; V3 (ignored)",
10245 "input": "\u0f9f.-\u082a",
10246 "output": null
10247 },
10248 {
10249 "comment": "V6; V3 (ignored)",
10250 "input": "xn--vfd.xn----fhd",
10251 "output": null
10252 },
10253 {
10254 "comment": "V7",
10255 "input": "\u1d6c\udb40\udda0\uff0e\ud552\u2492\u2488\udbe0\udd26",
10256 "output": null
10257 },
10258 {
10259 "comment": "V7",
10260 "input": "\u1d6c\udb40\udda0\uff0e\u1111\u1175\u11bd\u2492\u2488\udbe0\udd26",
10261 "output": null
10262 },
10263 {
10264 "comment": "V7",
10265 "input": "\u1d6c\udb40\udda0.\ud55211.1.\udbe0\udd26",
10266 "output": null
10267 },
10268 {
10269 "comment": "V7",
10270 "input": "\u1d6c\udb40\udda0.\u1111\u1175\u11bd11.1.\udbe0\udd26",
10271 "output": null
10272 },
10273 {
10274 "comment": "V7",
10275 "input": "xn--tbg.xn--11-5o7k.1.xn--k469f",
10276 "output": null
10277 },
10278 {
10279 "comment": "V7",
10280 "input": "xn--tbg.xn--tsht7586kyts9l",
10281 "output": null
10282 },
10283 {
10284 "comment": "V7",
10285 "input": "\u2488\u270c\uda3e\udf1f\uff0e\ud835\udfe1\ud943\udc63",
10286 "output": null
10287 },
10288 {
10289 "comment": "V7",
10290 "input": "1.\u270c\uda3e\udf1f.9\ud943\udc63",
10291 "output": null
10292 },
10293 {
10294 "comment": "V7",
10295 "input": "1.xn--7bi44996f.xn--9-o706d",
10296 "output": null
10297 },
10298 {
10299 "comment": "V7",
10300 "input": "xn--tsh24g49550b.xn--9-o706d",
10301 "output": null
10302 },
10303 {
10304 "comment": "V6",
10305 "input": "\u03c2\uff0e\ua9c0\ua8c4",
10306 "output": null
10307 },
10308 {
10309 "comment": "V6",
10310 "input": "\u03c2.\ua9c0\ua8c4",
10311 "output": null
10312 },
10313 {
10314 "comment": "V6",
10315 "input": "\u03a3.\ua9c0\ua8c4",
10316 "output": null
10317 },
10318 {
10319 "comment": "V6",
10320 "input": "\u03c3.\ua9c0\ua8c4",
10321 "output": null
10322 },
10323 {
10324 "comment": "V6",
10325 "input": "xn--4xa.xn--0f9ars",
10326 "output": null
10327 },
10328 {
10329 "comment": "V6",
10330 "input": "xn--3xa.xn--0f9ars",
10331 "output": null
10332 },
10333 {
10334 "comment": "V6",
10335 "input": "\u03a3\uff0e\ua9c0\ua8c4",
10336 "output": null
10337 },
10338 {
10339 "comment": "V6",
10340 "input": "\u03c3\uff0e\ua9c0\ua8c4",
10341 "output": null
10342 },
10343 {
10344 "input": "\u7f9a\uff61\u226f",
10345 "output": "xn--xt0a.xn--hdh"
10346 },
10347 {
10348 "input": "\u7f9a\uff61>\u0338",
10349 "output": "xn--xt0a.xn--hdh"
10350 },
10351 {
10352 "input": "\u7f9a\u3002\u226f",
10353 "output": "xn--xt0a.xn--hdh"
10354 },
10355 {
10356 "input": "\u7f9a\u3002>\u0338",
10357 "output": "xn--xt0a.xn--hdh"
10358 },
10359 {
10360 "input": "xn--xt0a.xn--hdh",
10361 "output": "xn--xt0a.xn--hdh"
10362 },
10363 {
10364 "input": "\u7f9a.\u226f",
10365 "output": "xn--xt0a.xn--hdh"
10366 },
10367 {
10368 "input": "\u7f9a.>\u0338",
10369 "output": "xn--xt0a.xn--hdh"
10370 },
10371 {
10372 "comment": "V7",
10373 "input": "\u2786\ud99e\uddd5\u1ed7\u2488\uff0e\uda06\udf12\ud945\ude2e\u085b\ud835\udfeb",
10374 "output": null
10375 },
10376 {
10377 "comment": "V7",
10378 "input": "\u2786\ud99e\uddd5o\u0302\u0303\u2488\uff0e\uda06\udf12\ud945\ude2e\u085b\ud835\udfeb",
10379 "output": null
10380 },
10381 {
10382 "comment": "V7; A4_2 (ignored)",
10383 "input": "\u2786\ud99e\uddd5\u1ed71..\uda06\udf12\ud945\ude2e\u085b9",
10384 "output": null
10385 },
10386 {
10387 "comment": "V7; A4_2 (ignored)",
10388 "input": "\u2786\ud99e\uddd5o\u0302\u03031..\uda06\udf12\ud945\ude2e\u085b9",
10389 "output": null
10390 },
10391 {
10392 "comment": "V7; A4_2 (ignored)",
10393 "input": "\u2786\ud99e\uddd5O\u0302\u03031..\uda06\udf12\ud945\ude2e\u085b9",
10394 "output": null
10395 },
10396 {
10397 "comment": "V7; A4_2 (ignored)",
10398 "input": "\u2786\ud99e\uddd5\u1ed61..\uda06\udf12\ud945\ude2e\u085b9",
10399 "output": null
10400 },
10401 {
10402 "comment": "V7; A4_2 (ignored)",
10403 "input": "xn--1-3xm292b6044r..xn--9-6jd87310jtcqs",
10404 "output": null
10405 },
10406 {
10407 "comment": "V7",
10408 "input": "\u2786\ud99e\uddd5O\u0302\u0303\u2488\uff0e\uda06\udf12\ud945\ude2e\u085b\ud835\udfeb",
10409 "output": null
10410 },
10411 {
10412 "comment": "V7",
10413 "input": "\u2786\ud99e\uddd5\u1ed6\u2488\uff0e\uda06\udf12\ud945\ude2e\u085b\ud835\udfeb",
10414 "output": null
10415 },
10416 {
10417 "comment": "V7",
10418 "input": "xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs",
10419 "output": null
10420 },
10421 {
10422 "comment": "A4_2 (ignored)",
10423 "input": ".xn--ye6h",
10424 "output": ".xn--ye6h"
10425 },
10426 {
10427 "input": "xn--ye6h",
10428 "output": "xn--ye6h"
10429 },
10430 {
10431 "input": "\ud83a\udd3a",
10432 "output": "xn--ye6h"
10433 },
10434 {
10435 "input": "\ud83a\udd18",
10436 "output": "xn--ye6h"
10437 },
10438 {
10439 "comment": "C1; V6; V7; V3 (ignored)",
10440 "input": "\u073c\u200c-\u3002\ud80d\udc3e\u00df",
10441 "output": null
10442 },
10443 {
10444 "comment": "C1; V6; V7; V3 (ignored)",
10445 "input": "\u073c\u200c-\u3002\ud80d\udc3eSS",
10446 "output": null
10447 },
10448 {
10449 "comment": "C1; V6; V7; V3 (ignored)",
10450 "input": "\u073c\u200c-\u3002\ud80d\udc3ess",
10451 "output": null
10452 },
10453 {
10454 "comment": "C1; V6; V7; V3 (ignored)",
10455 "input": "\u073c\u200c-\u3002\ud80d\udc3eSs",
10456 "output": null
10457 },
10458 {
10459 "comment": "V6; V7; V3 (ignored)",
10460 "input": "xn----s2c.xn--ss-066q",
10461 "output": null
10462 },
10463 {
10464 "comment": "C1; V6; V7; V3 (ignored)",
10465 "input": "xn----s2c071q.xn--ss-066q",
10466 "output": null
10467 },
10468 {
10469 "comment": "C1; V6; V7; V3 (ignored)",
10470 "input": "xn----s2c071q.xn--zca7848m",
10471 "output": null
10472 },
10473 {
10474 "comment": "V6; V7; V3 (ignored)",
10475 "input": "-\uda9d\udf6c\u135e\ud805\udf27.\u1deb-\ufe12",
10476 "output": null
10477 },
10478 {
10479 "comment": "V6; V7; V3 (ignored); A4_2 (ignored)",
10480 "input": "-\uda9d\udf6c\u135e\ud805\udf27.\u1deb-\u3002",
10481 "output": null
10482 },
10483 {
10484 "comment": "V6; V7; V3 (ignored); A4_2 (ignored)",
10485 "input": "xn----b5h1837n2ok9f.xn----mkm.",
10486 "output": null
10487 },
10488 {
10489 "comment": "V6; V7; V3 (ignored)",
10490 "input": "xn----b5h1837n2ok9f.xn----mkmw278h",
10491 "output": null
10492 },
10493 {
10494 "comment": "V7",
10495 "input": "\ufe12.\uda2a\udc21\u1a59",
10496 "output": null
10497 },
10498 {
10499 "comment": "V7; A4_2 (ignored)",
10500 "input": "\u3002.\uda2a\udc21\u1a59",
10501 "output": null
10502 },
10503 {
10504 "comment": "V7; A4_2 (ignored)",
10505 "input": "..xn--cof61594i",
10506 "output": null
10507 },
10508 {
10509 "comment": "V7",
10510 "input": "xn--y86c.xn--cof61594i",
10511 "output": null
10512 },
10513 {
10514 "comment": "V6; V7; V3 (ignored)",
10515 "input": "\ud807\udc3a.-\uda05\udfcf",
10516 "output": null
10517 },
10518 {
10519 "comment": "V6; V7; V3 (ignored)",
10520 "input": "xn--jk3d.xn----iz68g",
10521 "output": null
10522 },
10523 {
10524 "comment": "V7",
10525 "input": "\udb43\udee9\uff0e\u8d4f",
10526 "output": null
10527 },
10528 {
10529 "comment": "V7",
10530 "input": "\udb43\udee9.\u8d4f",
10531 "output": null
10532 },
10533 {
10534 "comment": "V7",
10535 "input": "xn--2856e.xn--6o3a",
10536 "output": null
10537 },
10538 {
10539 "comment": "C1; V7",
10540 "input": "\u10ad\uff0e\ud8f4\udde6\u200c",
10541 "output": null
10542 },
10543 {
10544 "comment": "C1; V7",
10545 "input": "\u10ad.\ud8f4\udde6\u200c",
10546 "output": null
10547 },
10548 {
10549 "comment": "C1; V7",
10550 "input": "\u2d0d.\ud8f4\udde6\u200c",
10551 "output": null
10552 },
10553 {
10554 "comment": "V7",
10555 "input": "xn--4kj.xn--p01x",
10556 "output": null
10557 },
10558 {
10559 "comment": "C1; V7",
10560 "input": "xn--4kj.xn--0ug56448b",
10561 "output": null
10562 },
10563 {
10564 "comment": "C1; V7",
10565 "input": "\u2d0d\uff0e\ud8f4\udde6\u200c",
10566 "output": null
10567 },
10568 {
10569 "comment": "V7",
10570 "input": "xn--lnd.xn--p01x",
10571 "output": null
10572 },
10573 {
10574 "comment": "C1; V7",
10575 "input": "xn--lnd.xn--0ug56448b",
10576 "output": null
10577 },
10578 {
10579 "input": "\ud835\udfdb\uff0e\uf9f8",
10580 "output": "3.xn--6vz"
10581 },
10582 {
10583 "input": "\ud835\udfdb\uff0e\u7b20",
10584 "output": "3.xn--6vz"
10585 },
10586 {
10587 "input": "3.\u7b20",
10588 "output": "3.xn--6vz"
10589 },
10590 {
10591 "input": "3.xn--6vz",
10592 "output": "3.xn--6vz"
10593 },
10594 {
10595 "comment": "C2; V3 (ignored)",
10596 "input": "-\u200d.\u10be\ud800\udef7",
10597 "output": null
10598 },
10599 {
10600 "comment": "C2; V3 (ignored)",
10601 "input": "-\u200d.\u2d1e\ud800\udef7",
10602 "output": null
10603 },
10604 {
10605 "comment": "V3 (ignored)",
10606 "input": "-.xn--mlj8559d",
10607 "output": "-.xn--mlj8559d"
10608 },
10609 {
10610 "comment": "C2; V3 (ignored)",
10611 "input": "xn----ugn.xn--mlj8559d",
10612 "output": null
10613 },
10614 {
10615 "comment": "V7; V3 (ignored)",
10616 "input": "-.xn--2nd2315j",
10617 "output": null
10618 },
10619 {
10620 "comment": "C2; V7; V3 (ignored)",
10621 "input": "xn----ugn.xn--2nd2315j",
10622 "output": null
10623 },
10624 {
10625 "comment": "C2; V6",
10626 "input": "\u200d\u03c2\u00df\u0731\uff0e\u0bcd",
10627 "output": null
10628 },
10629 {
10630 "comment": "C2; V6",
10631 "input": "\u200d\u03c2\u00df\u0731.\u0bcd",
10632 "output": null
10633 },
10634 {
10635 "comment": "C2; V6",
10636 "input": "\u200d\u03a3SS\u0731.\u0bcd",
10637 "output": null
10638 },
10639 {
10640 "comment": "C2; V6",
10641 "input": "\u200d\u03c3ss\u0731.\u0bcd",
10642 "output": null
10643 },
10644 {
10645 "comment": "C2; V6",
10646 "input": "\u200d\u03a3ss\u0731.\u0bcd",
10647 "output": null
10648 },
10649 {
10650 "comment": "V6",
10651 "input": "xn--ss-ubc826a.xn--xmc",
10652 "output": null
10653 },
10654 {
10655 "comment": "C2; V6",
10656 "input": "xn--ss-ubc826ab34b.xn--xmc",
10657 "output": null
10658 },
10659 {
10660 "comment": "C2; V6",
10661 "input": "\u200d\u03a3\u00df\u0731.\u0bcd",
10662 "output": null
10663 },
10664 {
10665 "comment": "C2; V6",
10666 "input": "\u200d\u03c3\u00df\u0731.\u0bcd",
10667 "output": null
10668 },
10669 {
10670 "comment": "C2; V6",
10671 "input": "xn--zca39lk1di19a.xn--xmc",
10672 "output": null
10673 },
10674 {
10675 "comment": "C2; V6",
10676 "input": "xn--zca19ln1di19a.xn--xmc",
10677 "output": null
10678 },
10679 {
10680 "comment": "C2; V6",
10681 "input": "\u200d\u03a3SS\u0731\uff0e\u0bcd",
10682 "output": null
10683 },
10684 {
10685 "comment": "C2; V6",
10686 "input": "\u200d\u03c3ss\u0731\uff0e\u0bcd",
10687 "output": null
10688 },
10689 {
10690 "comment": "C2; V6",
10691 "input": "\u200d\u03a3ss\u0731\uff0e\u0bcd",
10692 "output": null
10693 },
10694 {
10695 "comment": "C2; V6",
10696 "input": "\u200d\u03a3\u00df\u0731\uff0e\u0bcd",
10697 "output": null
10698 },
10699 {
10700 "comment": "C2; V6",
10701 "input": "\u200d\u03c3\u00df\u0731\uff0e\u0bcd",
10702 "output": null
10703 },
10704 {
10705 "comment": "C2",
10706 "input": "\u2260\uff0e\u200d",
10707 "output": null
10708 },
10709 {
10710 "comment": "C2",
10711 "input": "=\u0338\uff0e\u200d",
10712 "output": null
10713 },
10714 {
10715 "comment": "C2",
10716 "input": "\u2260.\u200d",
10717 "output": null
10718 },
10719 {
10720 "comment": "C2",
10721 "input": "=\u0338.\u200d",
10722 "output": null
10723 },
10724 {
10725 "comment": "A4_2 (ignored)",
10726 "input": "xn--1ch.",
10727 "output": "xn--1ch."
10728 },
10729 {
10730 "comment": "A4_2 (ignored)",
10731 "input": "\u2260.",
10732 "output": "xn--1ch."
10733 },
10734 {
10735 "comment": "A4_2 (ignored)",
10736 "input": "=\u0338.",
10737 "output": "xn--1ch."
10738 },
10739 {
10740 "comment": "C2",
10741 "input": "xn--1ch.xn--1ug",
10742 "output": null
10743 },
10744 {
10745 "comment": "V7",
10746 "input": "\udb5c\udef5\u09cd\u03c2\uff0e\u03c2\ud802\ude3f",
10747 "output": null
10748 },
10749 {
10750 "comment": "V7",
10751 "input": "\udb5c\udef5\u09cd\u03c2.\u03c2\ud802\ude3f",
10752 "output": null
10753 },
10754 {
10755 "comment": "V7",
10756 "input": "\udb5c\udef5\u09cd\u03a3.\u03a3\ud802\ude3f",
10757 "output": null
10758 },
10759 {
10760 "comment": "V7",
10761 "input": "\udb5c\udef5\u09cd\u03c3.\u03c2\ud802\ude3f",
10762 "output": null
10763 },
10764 {
10765 "comment": "V7",
10766 "input": "\udb5c\udef5\u09cd\u03c3.\u03c3\ud802\ude3f",
10767 "output": null
10768 },
10769 {
10770 "comment": "V7",
10771 "input": "\udb5c\udef5\u09cd\u03a3.\u03c3\ud802\ude3f",
10772 "output": null
10773 },
10774 {
10775 "comment": "V7",
10776 "input": "xn--4xa502av8297a.xn--4xa6055k",
10777 "output": null
10778 },
10779 {
10780 "comment": "V7",
10781 "input": "\udb5c\udef5\u09cd\u03a3.\u03c2\ud802\ude3f",
10782 "output": null
10783 },
10784 {
10785 "comment": "V7",
10786 "input": "xn--4xa502av8297a.xn--3xa8055k",
10787 "output": null
10788 },
10789 {
10790 "comment": "V7",
10791 "input": "xn--3xa702av8297a.xn--3xa8055k",
10792 "output": null
10793 },
10794 {
10795 "comment": "V7",
10796 "input": "\udb5c\udef5\u09cd\u03a3\uff0e\u03a3\ud802\ude3f",
10797 "output": null
10798 },
10799 {
10800 "comment": "V7",
10801 "input": "\udb5c\udef5\u09cd\u03c3\uff0e\u03c2\ud802\ude3f",
10802 "output": null
10803 },
10804 {
10805 "comment": "V7",
10806 "input": "\udb5c\udef5\u09cd\u03c3\uff0e\u03c3\ud802\ude3f",
10807 "output": null
10808 },
10809 {
10810 "comment": "V7",
10811 "input": "\udb5c\udef5\u09cd\u03a3\uff0e\u03c3\ud802\ude3f",
10812 "output": null
10813 },
10814 {
10815 "comment": "V7",
10816 "input": "\udb5c\udef5\u09cd\u03a3\uff0e\u03c2\ud802\ude3f",
10817 "output": null
10818 },
10819 {
10820 "comment": "V7",
10821 "input": "\ud94e\udd12\uff61\ub967",
10822 "output": null
10823 },
10824 {
10825 "comment": "V7",
10826 "input": "\ud94e\udd12\uff61\u1105\u1172\u11b6",
10827 "output": null
10828 },
10829 {
10830 "comment": "V7",
10831 "input": "\ud94e\udd12\u3002\ub967",
10832 "output": null
10833 },
10834 {
10835 "comment": "V7",
10836 "input": "\ud94e\udd12\u3002\u1105\u1172\u11b6",
10837 "output": null
10838 },
10839 {
10840 "comment": "V7",
10841 "input": "xn--s264a.xn--pw2b",
10842 "output": null
10843 },
10844 {
10845 "comment": "V7",
10846 "input": "\u1846\ud805\udcdd\uff0e\ud83b\udd46",
10847 "output": null
10848 },
10849 {
10850 "comment": "V7",
10851 "input": "\u1846\ud805\udcdd.\ud83b\udd46",
10852 "output": null
10853 },
10854 {
10855 "comment": "V7",
10856 "input": "xn--57e0440k.xn--k86h",
10857 "output": null
10858 },
10859 {
10860 "comment": "V7",
10861 "input": "\udbef\udfe6\uff61\u183d",
10862 "output": null
10863 },
10864 {
10865 "comment": "V7",
10866 "input": "\udbef\udfe6\u3002\u183d",
10867 "output": null
10868 },
10869 {
10870 "comment": "V7",
10871 "input": "xn--j890g.xn--w7e",
10872 "output": null
10873 },
10874 {
10875 "comment": "C2",
10876 "input": "\u5b03\ud834\udf4c\uff0e\u200d\u0b44",
10877 "output": null
10878 },
10879 {
10880 "comment": "C2",
10881 "input": "\u5b03\ud834\udf4c.\u200d\u0b44",
10882 "output": null
10883 },
10884 {
10885 "comment": "V6",
10886 "input": "xn--b6s0078f.xn--0ic",
10887 "output": null
10888 },
10889 {
10890 "comment": "C2",
10891 "input": "xn--b6s0078f.xn--0ic557h",
10892 "output": null
10893 },
10894 {
10895 "comment": "C1; V7",
10896 "input": "\u200c.\ud93d\udee4",
10897 "output": null
10898 },
10899 {
10900 "comment": "V7; A4_2 (ignored)",
10901 "input": ".xn--q823a",
10902 "output": null
10903 },
10904 {
10905 "comment": "C1; V7",
10906 "input": "xn--0ug.xn--q823a",
10907 "output": null
10908 },
10909 {
10910 "comment": "V7",
10911 "input": "\udaa9\uded5\u10a3\u4805\uff0e\ud803\ude11",
10912 "output": null
10913 },
10914 {
10915 "comment": "V7",
10916 "input": "\udaa9\uded5\u10a3\u4805.\ud803\ude11",
10917 "output": null
10918 },
10919 {
10920 "comment": "V7",
10921 "input": "\udaa9\uded5\u2d03\u4805.\ud803\ude11",
10922 "output": null
10923 },
10924 {
10925 "comment": "V7",
10926 "input": "xn--ukju77frl47r.xn--yl0d",
10927 "output": null
10928 },
10929 {
10930 "comment": "V7",
10931 "input": "\udaa9\uded5\u2d03\u4805\uff0e\ud803\ude11",
10932 "output": null
10933 },
10934 {
10935 "comment": "V7",
10936 "input": "xn--bnd074zr557n.xn--yl0d",
10937 "output": null
10938 },
10939 {
10940 "comment": "V7; V3 (ignored)",
10941 "input": "-\uff61\ufe12",
10942 "output": null
10943 },
10944 {
10945 "comment": "V3 (ignored); A4_2 (ignored)",
10946 "input": "-\u3002\u3002",
10947 "output": "-.."
10948 },
10949 {
10950 "comment": "V3 (ignored); A4_2 (ignored)",
10951 "input": "-..",
10952 "output": "-.."
10953 },
10954 {
10955 "comment": "V7; V3 (ignored)",
10956 "input": "-.xn--y86c",
10957 "output": null
10958 },
10959 {
10960 "comment": "C2",
10961 "input": "\u200d.F",
10962 "output": null
10963 },
10964 {
10965 "comment": "C2",
10966 "input": "\u200d.f",
10967 "output": null
10968 },
10969 {
10970 "comment": "A4_2 (ignored)",
10971 "input": ".f",
10972 "output": ".f"
10973 },
10974 {
10975 "comment": "C2",
10976 "input": "xn--1ug.f",
10977 "output": null
10978 },
10979 {
10980 "input": "f",
10981 "output": "f"
10982 },
10983 {
10984 "comment": "C2",
10985 "input": "\u200d\u3a32\uff61\u00df",
10986 "output": null
10987 },
10988 {
10989 "comment": "C2",
10990 "input": "\u200d\u3a32\u3002\u00df",
10991 "output": null
10992 },
10993 {
10994 "comment": "C2",
10995 "input": "\u200d\u3a32\u3002SS",
10996 "output": null
10997 },
10998 {
10999 "comment": "C2",
11000 "input": "\u200d\u3a32\u3002ss",
11001 "output": null
11002 },
11003 {
11004 "comment": "C2",
11005 "input": "\u200d\u3a32\u3002Ss",
11006 "output": null
11007 },
11008 {
11009 "input": "xn--9bm.ss",
11010 "output": "xn--9bm.ss"
11011 },
11012 {
11013 "input": "\u3a32.ss",
11014 "output": "xn--9bm.ss"
11015 },
11016 {
11017 "input": "\u3a32.SS",
11018 "output": "xn--9bm.ss"
11019 },
11020 {
11021 "input": "\u3a32.Ss",
11022 "output": "xn--9bm.ss"
11023 },
11024 {
11025 "comment": "C2",
11026 "input": "xn--1ug914h.ss",
11027 "output": null
11028 },
11029 {
11030 "comment": "C2",
11031 "input": "xn--1ug914h.xn--zca",
11032 "output": null
11033 },
11034 {
11035 "comment": "C2",
11036 "input": "\u200d\u3a32\uff61SS",
11037 "output": null
11038 },
11039 {
11040 "comment": "C2",
11041 "input": "\u200d\u3a32\uff61ss",
11042 "output": null
11043 },
11044 {
11045 "comment": "C2",
11046 "input": "\u200d\u3a32\uff61Ss",
11047 "output": null
11048 },
11049 {
11050 "comment": "C2; V7",
11051 "input": "\u200d\uff0e\udbc3\ude28",
11052 "output": null
11053 },
11054 {
11055 "comment": "C2; V7",
11056 "input": "\u200d.\udbc3\ude28",
11057 "output": null
11058 },
11059 {
11060 "comment": "V7; A4_2 (ignored)",
11061 "input": ".xn--h327f",
11062 "output": null
11063 },
11064 {
11065 "comment": "C2; V7",
11066 "input": "xn--1ug.xn--h327f",
11067 "output": null
11068 },
11069 {
11070 "comment": "V7",
11071 "input": "\ud94e\udf7b\ud8f2\udd41\uff61\u2260\ud835\udff2",
11072 "output": null
11073 },
11074 {
11075 "comment": "V7",
11076 "input": "\ud94e\udf7b\ud8f2\udd41\uff61=\u0338\ud835\udff2",
11077 "output": null
11078 },
11079 {
11080 "comment": "V7",
11081 "input": "\ud94e\udf7b\ud8f2\udd41\u3002\u22606",
11082 "output": null
11083 },
11084 {
11085 "comment": "V7",
11086 "input": "\ud94e\udf7b\ud8f2\udd41\u3002=\u03386",
11087 "output": null
11088 },
11089 {
11090 "comment": "V7",
11091 "input": "xn--h79w4z99a.xn--6-tfo",
11092 "output": null
11093 },
11094 {
11095 "comment": "V7",
11096 "input": "xn--98e.xn--om9c",
11097 "output": null
11098 },
11099 {
11100 "comment": "V6; V7",
11101 "input": "\uaaf6\u188f\u0e3a\uff12.\ud800\udee2\u0745\u0f9f\ufe12",
11102 "output": null
11103 },
11104 {
11105 "comment": "V6; A4_2 (ignored)",
11106 "input": "\uaaf6\u188f\u0e3a2.\ud800\udee2\u0745\u0f9f\u3002",
11107 "output": null
11108 },
11109 {
11110 "comment": "V6; A4_2 (ignored)",
11111 "input": "xn--2-2zf840fk16m.xn--sob093b2m7s.",
11112 "output": null
11113 },
11114 {
11115 "comment": "V6; V7",
11116 "input": "xn--2-2zf840fk16m.xn--sob093bj62sz9d",
11117 "output": null
11118 },
11119 {
11120 "comment": "V7",
11121 "input": "\udad7\udd27\uff61\u2260-\udb41\ude44\u2f9b",
11122 "output": null
11123 },
11124 {
11125 "comment": "V7",
11126 "input": "\udad7\udd27\uff61=\u0338-\udb41\ude44\u2f9b",
11127 "output": null
11128 },
11129 {
11130 "comment": "V7",
11131 "input": "\udad7\udd27\u3002\u2260-\udb41\ude44\u8d70",
11132 "output": null
11133 },
11134 {
11135 "comment": "V7",
11136 "input": "\udad7\udd27\u3002=\u0338-\udb41\ude44\u8d70",
11137 "output": null
11138 },
11139 {
11140 "comment": "V7",
11141 "input": "xn--gm57d.xn----tfo4949b3664m",
11142 "output": null
11143 },
11144 {
11145 "input": "\ud835\udfce\u3002\u752f",
11146 "output": "0.xn--qny"
11147 },
11148 {
11149 "input": "0\u3002\u752f",
11150 "output": "0.xn--qny"
11151 },
11152 {
11153 "input": "0.xn--qny",
11154 "output": "0.xn--qny"
11155 },
11156 {
11157 "input": "0.\u752f",
11158 "output": "0.xn--qny"
11159 },
11160 {
11161 "comment": "V6; V3 (ignored)",
11162 "input": "-\u2f86\uff0e\uaaf6",
11163 "output": null
11164 },
11165 {
11166 "comment": "V6; V3 (ignored)",
11167 "input": "-\u820c.\uaaf6",
11168 "output": null
11169 },
11170 {
11171 "comment": "V6; V3 (ignored)",
11172 "input": "xn----ef8c.xn--2v9a",
11173 "output": null
11174 },
11175 {
11176 "comment": "V3 (ignored)",
11177 "input": "-\uff61\u1898",
11178 "output": "-.xn--ibf"
11179 },
11180 {
11181 "comment": "V3 (ignored)",
11182 "input": "-\u3002\u1898",
11183 "output": "-.xn--ibf"
11184 },
11185 {
11186 "comment": "V3 (ignored)",
11187 "input": "-.xn--ibf",
11188 "output": "-.xn--ibf"
11189 },
11190 {
11191 "input": "\ud83c\udcb4\u10ab.\u226e",
11192 "output": "xn--2kj7565l.xn--gdh"
11193 },
11194 {
11195 "input": "\ud83c\udcb4\u10ab.<\u0338",
11196 "output": "xn--2kj7565l.xn--gdh"
11197 },
11198 {
11199 "input": "\ud83c\udcb4\u2d0b.<\u0338",
11200 "output": "xn--2kj7565l.xn--gdh"
11201 },
11202 {
11203 "input": "\ud83c\udcb4\u2d0b.\u226e",
11204 "output": "xn--2kj7565l.xn--gdh"
11205 },
11206 {
11207 "input": "xn--2kj7565l.xn--gdh",
11208 "output": "xn--2kj7565l.xn--gdh"
11209 },
11210 {
11211 "comment": "V7",
11212 "input": "xn--jnd1986v.xn--gdh",
11213 "output": null
11214 },
11215 {
11216 "comment": "C1",
11217 "input": "\u74bc\ud836\ude2d\uff61\u200c\udb40\udddf",
11218 "output": null
11219 },
11220 {
11221 "comment": "C1",
11222 "input": "\u74bc\ud836\ude2d\u3002\u200c\udb40\udddf",
11223 "output": null
11224 },
11225 {
11226 "comment": "A4_2 (ignored)",
11227 "input": "xn--gky8837e.",
11228 "output": "xn--gky8837e."
11229 },
11230 {
11231 "comment": "A4_2 (ignored)",
11232 "input": "\u74bc\ud836\ude2d.",
11233 "output": "xn--gky8837e."
11234 },
11235 {
11236 "comment": "C1",
11237 "input": "xn--gky8837e.xn--0ug",
11238 "output": null
11239 },
11240 {
11241 "comment": "C1",
11242 "input": "\u200c.\u200c",
11243 "output": null
11244 },
11245 {
11246 "comment": "C1",
11247 "input": "xn--0ug.xn--0ug",
11248 "output": null
11249 },
11250 {
11251 "input": "xn--157b.xn--gnb",
11252 "output": "xn--157b.xn--gnb"
11253 },
11254 {
11255 "input": "\ud29b.\u0716",
11256 "output": "xn--157b.xn--gnb"
11257 },
11258 {
11259 "input": "\u1110\u1171\u11c2.\u0716",
11260 "output": "xn--157b.xn--gnb"
11261 },
11262 {
11263 "comment": "V6; V7",
11264 "input": "\u10b7\uff0e\u05c2\ud804\udd34\ua9b7\ud920\udce8",
11265 "output": null
11266 },
11267 {
11268 "comment": "V6; V7",
11269 "input": "\u10b7\uff0e\ud804\udd34\u05c2\ua9b7\ud920\udce8",
11270 "output": null
11271 },
11272 {
11273 "comment": "V6; V7",
11274 "input": "\u10b7.\ud804\udd34\u05c2\ua9b7\ud920\udce8",
11275 "output": null
11276 },
11277 {
11278 "comment": "V6; V7",
11279 "input": "\u2d17.\ud804\udd34\u05c2\ua9b7\ud920\udce8",
11280 "output": null
11281 },
11282 {
11283 "comment": "V6; V7",
11284 "input": "xn--flj.xn--qdb0605f14ycrms3c",
11285 "output": null
11286 },
11287 {
11288 "comment": "V6; V7",
11289 "input": "\u2d17\uff0e\ud804\udd34\u05c2\ua9b7\ud920\udce8",
11290 "output": null
11291 },
11292 {
11293 "comment": "V6; V7",
11294 "input": "\u2d17\uff0e\u05c2\ud804\udd34\ua9b7\ud920\udce8",
11295 "output": null
11296 },
11297 {
11298 "comment": "V6; V7",
11299 "input": "xn--vnd.xn--qdb0605f14ycrms3c",
11300 "output": null
11301 },
11302 {
11303 "comment": "V6; V7",
11304 "input": "\u2488\u916b\ufe12\u3002\u08d6",
11305 "output": null
11306 },
11307 {
11308 "comment": "V6; A4_2 (ignored)",
11309 "input": "1.\u916b\u3002\u3002\u08d6",
11310 "output": null
11311 },
11312 {
11313 "comment": "V6; A4_2 (ignored)",
11314 "input": "1.xn--8j4a..xn--8zb",
11315 "output": null
11316 },
11317 {
11318 "comment": "V6; V7",
11319 "input": "xn--tsh4490bfe8c.xn--8zb",
11320 "output": null
11321 },
11322 {
11323 "comment": "C1; V6",
11324 "input": "\u2de3\u200c\u226e\u1a6b.\u200c\u0e3a",
11325 "output": null
11326 },
11327 {
11328 "comment": "C1; V6",
11329 "input": "\u2de3\u200c<\u0338\u1a6b.\u200c\u0e3a",
11330 "output": null
11331 },
11332 {
11333 "comment": "V6",
11334 "input": "xn--uof548an0j.xn--o4c",
11335 "output": null
11336 },
11337 {
11338 "comment": "C1; V6",
11339 "input": "xn--uof63xk4bf3s.xn--o4c732g",
11340 "output": null
11341 },
11342 {
11343 "comment": "V7",
11344 "input": "xn--co6h.xn--1-kwssa",
11345 "output": null
11346 },
11347 {
11348 "comment": "V7",
11349 "input": "xn--co6h.xn--1-h1g429s",
11350 "output": null
11351 },
11352 {
11353 "comment": "V7",
11354 "input": "xn--co6h.xn--1-h1gs",
11355 "output": null
11356 },
11357 {
11358 "comment": "V6; V7",
11359 "input": "\ua806\u3002\ud8ad\ude8f\u0fb0\u2495",
11360 "output": null
11361 },
11362 {
11363 "comment": "V6; V7; A4_2 (ignored)",
11364 "input": "\ua806\u3002\ud8ad\ude8f\u0fb014.",
11365 "output": null
11366 },
11367 {
11368 "comment": "V6; V7; A4_2 (ignored)",
11369 "input": "xn--l98a.xn--14-jsj57880f.",
11370 "output": null
11371 },
11372 {
11373 "comment": "V6; V7",
11374 "input": "xn--l98a.xn--dgd218hhp28d",
11375 "output": null
11376 },
11377 {
11378 "comment": "C2",
11379 "input": "\ud835\udfe04\udb40\uddd7\ud834\ude3b\uff0e\u200d\ud800\udef5\u26e7\u200d",
11380 "output": null
11381 },
11382 {
11383 "comment": "C2",
11384 "input": "84\udb40\uddd7\ud834\ude3b.\u200d\ud800\udef5\u26e7\u200d",
11385 "output": null
11386 },
11387 {
11388 "input": "xn--84-s850a.xn--59h6326e",
11389 "output": "xn--84-s850a.xn--59h6326e"
11390 },
11391 {
11392 "input": "84\ud834\ude3b.\ud800\udef5\u26e7",
11393 "output": "xn--84-s850a.xn--59h6326e"
11394 },
11395 {
11396 "comment": "C2",
11397 "input": "xn--84-s850a.xn--1uga573cfq1w",
11398 "output": null
11399 },
11400 {
11401 "input": "\u226e\ud835\udfd5\uff0e\u8b16\u00df\u226f",
11402 "output": "xn--7-mgo.xn--zca892oly5e"
11403 },
11404 {
11405 "input": "<\u0338\ud835\udfd5\uff0e\u8b16\u00df>\u0338",
11406 "output": "xn--7-mgo.xn--zca892oly5e"
11407 },
11408 {
11409 "input": "\u226e7.\u8b16\u00df\u226f",
11410 "output": "xn--7-mgo.xn--zca892oly5e"
11411 },
11412 {
11413 "input": "<\u03387.\u8b16\u00df>\u0338",
11414 "output": "xn--7-mgo.xn--zca892oly5e"
11415 },
11416 {
11417 "input": "<\u03387.\u8b16SS>\u0338",
11418 "output": "xn--7-mgo.xn--ss-xjvv174c"
11419 },
11420 {
11421 "input": "\u226e7.\u8b16SS\u226f",
11422 "output": "xn--7-mgo.xn--ss-xjvv174c"
11423 },
11424 {
11425 "input": "\u226e7.\u8b16ss\u226f",
11426 "output": "xn--7-mgo.xn--ss-xjvv174c"
11427 },
11428 {
11429 "input": "<\u03387.\u8b16ss>\u0338",
11430 "output": "xn--7-mgo.xn--ss-xjvv174c"
11431 },
11432 {
11433 "input": "<\u03387.\u8b16Ss>\u0338",
11434 "output": "xn--7-mgo.xn--ss-xjvv174c"
11435 },
11436 {
11437 "input": "\u226e7.\u8b16Ss\u226f",
11438 "output": "xn--7-mgo.xn--ss-xjvv174c"
11439 },
11440 {
11441 "input": "xn--7-mgo.xn--ss-xjvv174c",
11442 "output": "xn--7-mgo.xn--ss-xjvv174c"
11443 },
11444 {
11445 "input": "xn--7-mgo.xn--zca892oly5e",
11446 "output": "xn--7-mgo.xn--zca892oly5e"
11447 },
11448 {
11449 "input": "<\u0338\ud835\udfd5\uff0e\u8b16SS>\u0338",
11450 "output": "xn--7-mgo.xn--ss-xjvv174c"
11451 },
11452 {
11453 "input": "\u226e\ud835\udfd5\uff0e\u8b16SS\u226f",
11454 "output": "xn--7-mgo.xn--ss-xjvv174c"
11455 },
11456 {
11457 "input": "\u226e\ud835\udfd5\uff0e\u8b16ss\u226f",
11458 "output": "xn--7-mgo.xn--ss-xjvv174c"
11459 },
11460 {
11461 "input": "<\u0338\ud835\udfd5\uff0e\u8b16ss>\u0338",
11462 "output": "xn--7-mgo.xn--ss-xjvv174c"
11463 },
11464 {
11465 "input": "<\u0338\ud835\udfd5\uff0e\u8b16Ss>\u0338",
11466 "output": "xn--7-mgo.xn--ss-xjvv174c"
11467 },
11468 {
11469 "input": "\u226e\ud835\udfd5\uff0e\u8b16Ss\u226f",
11470 "output": "xn--7-mgo.xn--ss-xjvv174c"
11471 },
11472 {
11473 "comment": "C1; V7",
11474 "input": "\ud975\udf0e\u2488\uff61\u200c\ud835\udfe4",
11475 "output": null
11476 },
11477 {
11478 "comment": "C1; V7; A4_2 (ignored)",
11479 "input": "\ud975\udf0e1.\u3002\u200c2",
11480 "output": null
11481 },
11482 {
11483 "comment": "V7; A4_2 (ignored)",
11484 "input": "xn--1-ex54e..c",
11485 "output": null
11486 },
11487 {
11488 "comment": "C1; V7; A4_2 (ignored)",
11489 "input": "xn--1-ex54e..xn--2-rgn",
11490 "output": null
11491 },
11492 {
11493 "comment": "V7",
11494 "input": "xn--tsh94183d.c",
11495 "output": null
11496 },
11497 {
11498 "comment": "C1; V7",
11499 "input": "xn--tsh94183d.xn--2-rgn",
11500 "output": null
11501 },
11502 {
11503 "comment": "C1; C2",
11504 "input": "\u200d\u200c\udb40\uddaa\uff61\u00df\ud805\udcc3",
11505 "output": null
11506 },
11507 {
11508 "comment": "C1; C2",
11509 "input": "\u200d\u200c\udb40\uddaa\u3002\u00df\ud805\udcc3",
11510 "output": null
11511 },
11512 {
11513 "comment": "C1; C2",
11514 "input": "\u200d\u200c\udb40\uddaa\u3002SS\ud805\udcc3",
11515 "output": null
11516 },
11517 {
11518 "comment": "C1; C2",
11519 "input": "\u200d\u200c\udb40\uddaa\u3002ss\ud805\udcc3",
11520 "output": null
11521 },
11522 {
11523 "comment": "C1; C2",
11524 "input": "\u200d\u200c\udb40\uddaa\u3002Ss\ud805\udcc3",
11525 "output": null
11526 },
11527 {
11528 "comment": "A4_2 (ignored)",
11529 "input": ".xn--ss-bh7o",
11530 "output": ".xn--ss-bh7o"
11531 },
11532 {
11533 "comment": "C1; C2",
11534 "input": "xn--0ugb.xn--ss-bh7o",
11535 "output": null
11536 },
11537 {
11538 "comment": "C1; C2",
11539 "input": "xn--0ugb.xn--zca0732l",
11540 "output": null
11541 },
11542 {
11543 "comment": "C1; C2",
11544 "input": "\u200d\u200c\udb40\uddaa\uff61SS\ud805\udcc3",
11545 "output": null
11546 },
11547 {
11548 "comment": "C1; C2",
11549 "input": "\u200d\u200c\udb40\uddaa\uff61ss\ud805\udcc3",
11550 "output": null
11551 },
11552 {
11553 "comment": "C1; C2",
11554 "input": "\u200d\u200c\udb40\uddaa\uff61Ss\ud805\udcc3",
11555 "output": null
11556 },
11557 {
11558 "input": "xn--ss-bh7o",
11559 "output": "xn--ss-bh7o"
11560 },
11561 {
11562 "input": "ss\ud805\udcc3",
11563 "output": "xn--ss-bh7o"
11564 },
11565 {
11566 "input": "SS\ud805\udcc3",
11567 "output": "xn--ss-bh7o"
11568 },
11569 {
11570 "input": "Ss\ud805\udcc3",
11571 "output": "xn--ss-bh7o"
11572 },
11573 {
11574 "comment": "C1; V7",
11575 "input": "\ufe12\u200c\u30f6\u44a9.\ua86a",
11576 "output": null
11577 },
11578 {
11579 "comment": "C1; A4_2 (ignored)",
11580 "input": "\u3002\u200c\u30f6\u44a9.\ua86a",
11581 "output": null
11582 },
11583 {
11584 "comment": "A4_2 (ignored)",
11585 "input": ".xn--qekw60d.xn--gd9a",
11586 "output": ".xn--qekw60d.xn--gd9a"
11587 },
11588 {
11589 "comment": "C1; A4_2 (ignored)",
11590 "input": ".xn--0ug287dj0o.xn--gd9a",
11591 "output": null
11592 },
11593 {
11594 "comment": "V7",
11595 "input": "xn--qekw60dns9k.xn--gd9a",
11596 "output": null
11597 },
11598 {
11599 "comment": "C1; V7",
11600 "input": "xn--0ug287dj0or48o.xn--gd9a",
11601 "output": null
11602 },
11603 {
11604 "input": "xn--qekw60d.xn--gd9a",
11605 "output": "xn--qekw60d.xn--gd9a"
11606 },
11607 {
11608 "input": "\u30f6\u44a9.\ua86a",
11609 "output": "xn--qekw60d.xn--gd9a"
11610 },
11611 {
11612 "comment": "C1; V7",
11613 "input": "\u200c\u2488\ud852\udf8d.\udb49\udccb\u1a60",
11614 "output": null
11615 },
11616 {
11617 "comment": "C1; V7",
11618 "input": "\u200c1.\ud852\udf8d.\udb49\udccb\u1a60",
11619 "output": null
11620 },
11621 {
11622 "comment": "V7",
11623 "input": "1.xn--4x6j.xn--jof45148n",
11624 "output": null
11625 },
11626 {
11627 "comment": "C1; V7",
11628 "input": "xn--1-rgn.xn--4x6j.xn--jof45148n",
11629 "output": null
11630 },
11631 {
11632 "comment": "V7",
11633 "input": "xn--tshw462r.xn--jof45148n",
11634 "output": null
11635 },
11636 {
11637 "comment": "C1; V7",
11638 "input": "xn--0ug88o7471d.xn--jof45148n",
11639 "output": null
11640 },
11641 {
11642 "comment": "V7; A4_2 (ignored)",
11643 "input": "\ud834\udd75\uff61\ud835\udfeb\ud838\udc08\u4b3a\u2488",
11644 "output": null
11645 },
11646 {
11647 "comment": "A4_2 (ignored)",
11648 "input": "\ud834\udd75\u30029\ud838\udc08\u4b3a1.",
11649 "output": ".xn--91-030c1650n."
11650 },
11651 {
11652 "comment": "A4_2 (ignored)",
11653 "input": ".xn--91-030c1650n.",
11654 "output": ".xn--91-030c1650n."
11655 },
11656 {
11657 "comment": "V7; A4_2 (ignored)",
11658 "input": ".xn--9-ecp936non25a",
11659 "output": null
11660 },
11661 {
11662 "comment": "V7; A4_2 (ignored)",
11663 "input": "xn--3f1h.xn--91-030c1650n.",
11664 "output": null
11665 },
11666 {
11667 "comment": "V7",
11668 "input": "xn--3f1h.xn--9-ecp936non25a",
11669 "output": null
11670 },
11671 {
11672 "input": "xn--8c1a.xn--2ib8jn539l",
11673 "output": "xn--8c1a.xn--2ib8jn539l"
11674 },
11675 {
11676 "input": "\u821b.\u067d\ud83a\udd34\u06bb",
11677 "output": "xn--8c1a.xn--2ib8jn539l"
11678 },
11679 {
11680 "input": "\u821b.\u067d\ud83a\udd12\u06bb",
11681 "output": "xn--8c1a.xn--2ib8jn539l"
11682 },
11683 {
11684 "comment": "V6; V3 (ignored)",
11685 "input": "-\udb40\udd710\uff61\u17cf\u1dfd\ud187\uc2ed",
11686 "output": null
11687 },
11688 {
11689 "comment": "V6; V3 (ignored)",
11690 "input": "-\udb40\udd710\uff61\u17cf\u1dfd\u1110\u1168\u11aa\u1109\u1175\u11b8",
11691 "output": null
11692 },
11693 {
11694 "comment": "V6; V3 (ignored)",
11695 "input": "-\udb40\udd710\u3002\u17cf\u1dfd\ud187\uc2ed",
11696 "output": null
11697 },
11698 {
11699 "comment": "V6; V3 (ignored)",
11700 "input": "-\udb40\udd710\u3002\u17cf\u1dfd\u1110\u1168\u11aa\u1109\u1175\u11b8",
11701 "output": null
11702 },
11703 {
11704 "comment": "V6; V3 (ignored)",
11705 "input": "-0.xn--r4e872ah77nghm",
11706 "output": null
11707 },
11708 {
11709 "comment": "V6",
11710 "input": "\u115f\u10bf\u10b5\u10e0\uff61\u0b4d",
11711 "output": null
11712 },
11713 {
11714 "comment": "V6",
11715 "input": "\u115f\u10bf\u10b5\u10e0\u3002\u0b4d",
11716 "output": null
11717 },
11718 {
11719 "comment": "V6",
11720 "input": "\u115f\u2d1f\u2d15\u10e0\u3002\u0b4d",
11721 "output": null
11722 },
11723 {
11724 "comment": "V6",
11725 "input": "\u115f\u10bf\u10b5\u1ca0\u3002\u0b4d",
11726 "output": null
11727 },
11728 {
11729 "comment": "V6",
11730 "input": "xn--1od555l3a.xn--9ic",
11731 "output": null
11732 },
11733 {
11734 "comment": "V6",
11735 "input": "\u115f\u2d1f\u2d15\u10e0\uff61\u0b4d",
11736 "output": null
11737 },
11738 {
11739 "comment": "V6",
11740 "input": "\u115f\u10bf\u10b5\u1ca0\uff61\u0b4d",
11741 "output": null
11742 },
11743 {
11744 "comment": "V6; V7",
11745 "input": "xn--tndt4hvw.xn--9ic",
11746 "output": null
11747 },
11748 {
11749 "comment": "V6; V7",
11750 "input": "xn--1od7wz74eeb.xn--9ic",
11751 "output": null
11752 },
11753 {
11754 "comment": "V6",
11755 "input": "\u115f\u10bf\u2d15\u10e0\u3002\u0b4d",
11756 "output": null
11757 },
11758 {
11759 "comment": "V6; V7",
11760 "input": "xn--3nd0etsm92g.xn--9ic",
11761 "output": null
11762 },
11763 {
11764 "comment": "V6",
11765 "input": "\u115f\u10bf\u2d15\u10e0\uff61\u0b4d",
11766 "output": null
11767 },
11768 {
11769 "comment": "V7",
11770 "input": "xn--l96h.xn--o8e4044k",
11771 "output": null
11772 },
11773 {
11774 "comment": "V7",
11775 "input": "xn--l96h.xn--03e93aq365d",
11776 "output": null
11777 },
11778 {
11779 "comment": "V6; V3 (ignored)",
11780 "input": "\ud835\udfdb\ud834\uddaa\ua8c4\uff61\ua8ea-",
11781 "output": null
11782 },
11783 {
11784 "comment": "V6; V3 (ignored)",
11785 "input": "\ud835\udfdb\ua8c4\ud834\uddaa\uff61\ua8ea-",
11786 "output": null
11787 },
11788 {
11789 "comment": "V6; V3 (ignored)",
11790 "input": "3\ua8c4\ud834\uddaa\u3002\ua8ea-",
11791 "output": null
11792 },
11793 {
11794 "comment": "V6; V3 (ignored)",
11795 "input": "xn--3-sl4eu679e.xn----xn4e",
11796 "output": null
11797 },
11798 {
11799 "comment": "V6; V7",
11800 "input": "\u1139\uff61\u0eca\uda42\udfe4\udb40\udd1e",
11801 "output": null
11802 },
11803 {
11804 "comment": "V6; V7",
11805 "input": "\u1139\u3002\u0eca\uda42\udfe4\udb40\udd1e",
11806 "output": null
11807 },
11808 {
11809 "comment": "V6; V7",
11810 "input": "xn--lrd.xn--s8c05302k",
11811 "output": null
11812 },
11813 {
11814 "comment": "V7",
11815 "input": "\u10a6\udaae\udca9\uff0e\udb40\udda1\ufe09\ud83a\udd0d",
11816 "output": null
11817 },
11818 {
11819 "comment": "V7",
11820 "input": "\u10a6\udaae\udca9.\udb40\udda1\ufe09\ud83a\udd0d",
11821 "output": null
11822 },
11823 {
11824 "comment": "V7",
11825 "input": "\u2d06\udaae\udca9.\udb40\udda1\ufe09\ud83a\udd2f",
11826 "output": null
11827 },
11828 {
11829 "comment": "V7",
11830 "input": "xn--xkjw3965g.xn--ne6h",
11831 "output": null
11832 },
11833 {
11834 "comment": "V7",
11835 "input": "\u2d06\udaae\udca9\uff0e\udb40\udda1\ufe09\ud83a\udd2f",
11836 "output": null
11837 },
11838 {
11839 "comment": "V7",
11840 "input": "xn--end82983m.xn--ne6h",
11841 "output": null
11842 },
11843 {
11844 "comment": "V7",
11845 "input": "\u2d06\udaae\udca9.\udb40\udda1\ufe09\ud83a\udd0d",
11846 "output": null
11847 },
11848 {
11849 "comment": "V7",
11850 "input": "\u2d06\udaae\udca9\uff0e\udb40\udda1\ufe09\ud83a\udd0d",
11851 "output": null
11852 },
11853 {
11854 "comment": "V7",
11855 "input": "\ud91d\udee8.\ud9d5\udfe2\ud835\udfe8\ua8c4",
11856 "output": null
11857 },
11858 {
11859 "comment": "V7",
11860 "input": "\ud91d\udee8.\ud9d5\udfe26\ua8c4",
11861 "output": null
11862 },
11863 {
11864 "comment": "V7",
11865 "input": "xn--mi60a.xn--6-sl4es8023c",
11866 "output": null
11867 },
11868 {
11869 "comment": "V7",
11870 "input": "\ud800\udef8\udb79\ude0b\u10c2.\u10a1",
11871 "output": null
11872 },
11873 {
11874 "comment": "V7",
11875 "input": "\ud800\udef8\udb79\ude0b\u2d22.\u2d01",
11876 "output": null
11877 },
11878 {
11879 "comment": "V7",
11880 "input": "\ud800\udef8\udb79\ude0b\u10c2.\u2d01",
11881 "output": null
11882 },
11883 {
11884 "comment": "V7",
11885 "input": "xn--qlj1559dr224h.xn--skj",
11886 "output": null
11887 },
11888 {
11889 "comment": "V7",
11890 "input": "xn--6nd5215jr2u0h.xn--skj",
11891 "output": null
11892 },
11893 {
11894 "comment": "V7",
11895 "input": "xn--6nd5215jr2u0h.xn--8md",
11896 "output": null
11897 },
11898 {
11899 "comment": "V7",
11900 "input": "\ud91d\udc7f\ua806\u2084\uda65\udf86\uff61\ud88a\ude67\udb41\udcb9\u03c2",
11901 "output": null
11902 },
11903 {
11904 "comment": "V7",
11905 "input": "\ud91d\udc7f\ua8064\uda65\udf86\u3002\ud88a\ude67\udb41\udcb9\u03c2",
11906 "output": null
11907 },
11908 {
11909 "comment": "V7",
11910 "input": "\ud91d\udc7f\ua8064\uda65\udf86\u3002\ud88a\ude67\udb41\udcb9\u03a3",
11911 "output": null
11912 },
11913 {
11914 "comment": "V7",
11915 "input": "\ud91d\udc7f\ua8064\uda65\udf86\u3002\ud88a\ude67\udb41\udcb9\u03c3",
11916 "output": null
11917 },
11918 {
11919 "comment": "V7",
11920 "input": "xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d",
11921 "output": null
11922 },
11923 {
11924 "comment": "V7",
11925 "input": "xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d",
11926 "output": null
11927 },
11928 {
11929 "comment": "V7",
11930 "input": "\ud91d\udc7f\ua806\u2084\uda65\udf86\uff61\ud88a\ude67\udb41\udcb9\u03a3",
11931 "output": null
11932 },
11933 {
11934 "comment": "V7",
11935 "input": "\ud91d\udc7f\ua806\u2084\uda65\udf86\uff61\ud88a\ude67\udb41\udcb9\u03c3",
11936 "output": null
11937 },
11938 {
11939 "comment": "V7",
11940 "input": "\ud8ba\udcac\u3002\u0729\u3002\ucbd95",
11941 "output": null
11942 },
11943 {
11944 "comment": "V7",
11945 "input": "\ud8ba\udcac\u3002\u0729\u3002\u110d\u1173\u11ac5",
11946 "output": null
11947 },
11948 {
11949 "comment": "V7",
11950 "input": "xn--t92s.xn--znb.xn--5-y88f",
11951 "output": null
11952 },
11953 {
11954 "comment": "C2; V6",
11955 "input": "\u17ca.\u200d\ud835\udfee\ud804\udc3f",
11956 "output": null
11957 },
11958 {
11959 "comment": "C2; V6",
11960 "input": "\u17ca.\u200d2\ud804\udc3f",
11961 "output": null
11962 },
11963 {
11964 "comment": "V6",
11965 "input": "xn--m4e.xn--2-ku7i",
11966 "output": null
11967 },
11968 {
11969 "comment": "C2; V6",
11970 "input": "xn--m4e.xn--2-tgnv469h",
11971 "output": null
11972 },
11973 {
11974 "comment": "V6",
11975 "input": "\uaaf6\u3002\u5b36\u00df\u847d",
11976 "output": null
11977 },
11978 {
11979 "comment": "V6",
11980 "input": "\uaaf6\u3002\u5b36SS\u847d",
11981 "output": null
11982 },
11983 {
11984 "comment": "V6",
11985 "input": "\uaaf6\u3002\u5b36ss\u847d",
11986 "output": null
11987 },
11988 {
11989 "comment": "V6",
11990 "input": "\uaaf6\u3002\u5b36Ss\u847d",
11991 "output": null
11992 },
11993 {
11994 "comment": "V6",
11995 "input": "xn--2v9a.xn--ss-q40dp97m",
11996 "output": null
11997 },
11998 {
11999 "comment": "V6",
12000 "input": "xn--2v9a.xn--zca7637b14za",
12001 "output": null
12002 },
12003 {
12004 "comment": "C1; V7",
12005 "input": "\u03c2\ud805\udc3d\ud896\udc88\ud805\udf2b\uff61\ud83a\udf29\u200c\ud802\udec4",
12006 "output": null
12007 },
12008 {
12009 "comment": "C1; V7",
12010 "input": "\u03c2\ud805\udc3d\ud896\udc88\ud805\udf2b\u3002\ud83a\udf29\u200c\ud802\udec4",
12011 "output": null
12012 },
12013 {
12014 "comment": "C1; V7",
12015 "input": "\u03a3\ud805\udc3d\ud896\udc88\ud805\udf2b\u3002\ud83a\udf29\u200c\ud802\udec4",
12016 "output": null
12017 },
12018 {
12019 "comment": "C1; V7",
12020 "input": "\u03c3\ud805\udc3d\ud896\udc88\ud805\udf2b\u3002\ud83a\udf29\u200c\ud802\udec4",
12021 "output": null
12022 },
12023 {
12024 "comment": "V7",
12025 "input": "xn--4xa2260lk3b8z15g.xn--tw9ct349a",
12026 "output": null
12027 },
12028 {
12029 "comment": "C1; V7",
12030 "input": "xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf",
12031 "output": null
12032 },
12033 {
12034 "comment": "C1; V7",
12035 "input": "xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf",
12036 "output": null
12037 },
12038 {
12039 "comment": "C1; V7",
12040 "input": "\u03a3\ud805\udc3d\ud896\udc88\ud805\udf2b\uff61\ud83a\udf29\u200c\ud802\udec4",
12041 "output": null
12042 },
12043 {
12044 "comment": "C1; V7",
12045 "input": "\u03c3\ud805\udc3d\ud896\udc88\ud805\udf2b\uff61\ud83a\udf29\u200c\ud802\udec4",
12046 "output": null
12047 },
12048 {
12049 "comment": "C2; V7",
12050 "input": "\u2ea2\ud9df\ude85\ud835\udfe4\uff61\u200d\ud83d\udeb7",
12051 "output": null
12052 },
12053 {
12054 "comment": "C2; V7",
12055 "input": "\u2ea2\ud9df\ude852\u3002\u200d\ud83d\udeb7",
12056 "output": null
12057 },
12058 {
12059 "comment": "V7",
12060 "input": "xn--2-4jtr4282f.xn--m78h",
12061 "output": null
12062 },
12063 {
12064 "comment": "C2; V7",
12065 "input": "xn--2-4jtr4282f.xn--1ugz946p",
12066 "output": null
12067 },
12068 {
12069 "comment": "V6",
12070 "input": "\ud836\ude25\u3002\u2adf\ud804\ude3e",
12071 "output": null
12072 },
12073 {
12074 "comment": "V6",
12075 "input": "xn--n82h.xn--63iw010f",
12076 "output": null
12077 },
12078 {
12079 "comment": "C1; V6; V3 (ignored); U1 (ignored)",
12080 "input": "-\u1897\u200c\ud83c\udd04.\ud805\udf22",
12081 "output": null
12082 },
12083 {
12084 "comment": "C1; V6; V3 (ignored); U1 (ignored)",
12085 "input": "-\u1897\u200c3,.\ud805\udf22",
12086 "output": null
12087 },
12088 {
12089 "comment": "V6; V3 (ignored); U1 (ignored)",
12090 "input": "xn---3,-3eu.xn--9h2d",
12091 "output": null
12092 },
12093 {
12094 "comment": "C1; V6; V3 (ignored); U1 (ignored)",
12095 "input": "xn---3,-3eu051c.xn--9h2d",
12096 "output": null
12097 },
12098 {
12099 "comment": "V6; V7; V3 (ignored)",
12100 "input": "xn----pck1820x.xn--9h2d",
12101 "output": null
12102 },
12103 {
12104 "comment": "C1; V6; V7; V3 (ignored)",
12105 "input": "xn----pck312bx563c.xn--9h2d",
12106 "output": null
12107 },
12108 {
12109 "comment": "V3 (ignored); A4_2 (ignored)",
12110 "input": "\u17b4.\ucb87-",
12111 "output": ".xn----938f"
12112 },
12113 {
12114 "comment": "V3 (ignored); A4_2 (ignored)",
12115 "input": "\u17b4.\u110d\u1170\u11ae-",
12116 "output": ".xn----938f"
12117 },
12118 {
12119 "comment": "V3 (ignored); A4_2 (ignored)",
12120 "input": ".xn----938f",
12121 "output": ".xn----938f"
12122 },
12123 {
12124 "comment": "V6; V7; V3 (ignored)",
12125 "input": "xn--z3e.xn----938f",
12126 "output": null
12127 },
12128 {
12129 "comment": "C1; V7",
12130 "input": "\u200c\ud805\udcc2\u3002\u2488-\udbc2\ude9b",
12131 "output": null
12132 },
12133 {
12134 "comment": "C1; V7; V3 (ignored)",
12135 "input": "\u200c\ud805\udcc2\u30021.-\udbc2\ude9b",
12136 "output": null
12137 },
12138 {
12139 "comment": "V6; V7; V3 (ignored)",
12140 "input": "xn--wz1d.1.xn----rg03o",
12141 "output": null
12142 },
12143 {
12144 "comment": "C1; V7; V3 (ignored)",
12145 "input": "xn--0ugy057g.1.xn----rg03o",
12146 "output": null
12147 },
12148 {
12149 "comment": "V6; V7",
12150 "input": "xn--wz1d.xn----dcp29674o",
12151 "output": null
12152 },
12153 {
12154 "comment": "C1; V7",
12155 "input": "xn--0ugy057g.xn----dcp29674o",
12156 "output": null
12157 },
12158 {
12159 "comment": "A4_2 (ignored)",
12160 "input": ".xn--hcb32bni",
12161 "output": ".xn--hcb32bni"
12162 },
12163 {
12164 "input": "xn--hcb32bni",
12165 "output": "xn--hcb32bni"
12166 },
12167 {
12168 "input": "\u06bd\u0663\u0596",
12169 "output": "xn--hcb32bni"
12170 },
12171 {
12172 "comment": "V6; V3 (ignored)",
12173 "input": "\u0f94\ua84b-\uff0e-\ud81a\udf34",
12174 "output": null
12175 },
12176 {
12177 "comment": "V6; V3 (ignored)",
12178 "input": "\u0f94\ua84b-.-\ud81a\udf34",
12179 "output": null
12180 },
12181 {
12182 "comment": "V6; V3 (ignored)",
12183 "input": "xn----ukg9938i.xn----4u5m",
12184 "output": null
12185 },
12186 {
12187 "comment": "C1; V7; V3 (ignored)",
12188 "input": "\ud9bd\udcb3-\u22e2\u200c\uff0e\u6807-",
12189 "output": null
12190 },
12191 {
12192 "comment": "C1; V7; V3 (ignored)",
12193 "input": "\ud9bd\udcb3-\u2291\u0338\u200c\uff0e\u6807-",
12194 "output": null
12195 },
12196 {
12197 "comment": "C1; V7; V3 (ignored)",
12198 "input": "\ud9bd\udcb3-\u22e2\u200c.\u6807-",
12199 "output": null
12200 },
12201 {
12202 "comment": "C1; V7; V3 (ignored)",
12203 "input": "\ud9bd\udcb3-\u2291\u0338\u200c.\u6807-",
12204 "output": null
12205 },
12206 {
12207 "comment": "V7; V3 (ignored)",
12208 "input": "xn----9mo67451g.xn----qj7b",
12209 "output": null
12210 },
12211 {
12212 "comment": "C1; V7; V3 (ignored)",
12213 "input": "xn----sgn90kn5663a.xn----qj7b",
12214 "output": null
12215 },
12216 {
12217 "comment": "V6; V7; V3 (ignored)",
12218 "input": "-\ud914\ude74.\u06e0\u189a-",
12219 "output": null
12220 },
12221 {
12222 "comment": "V6; V7; V3 (ignored)",
12223 "input": "xn----qi38c.xn----jxc827k",
12224 "output": null
12225 },
12226 {
12227 "comment": "V7; A4_2 (ignored)",
12228 "input": "\u3002\u0635\u0649\u0e37\u0644\u0627\u3002\u5c93\u1bf2\udb43\udf83\u1842",
12229 "output": null
12230 },
12231 {
12232 "comment": "V7; A4_2 (ignored)",
12233 "input": ".xn--mgb1a7bt462h.xn--17e10qe61f9r71s",
12234 "output": null
12235 },
12236 {
12237 "comment": "V3 (ignored)",
12238 "input": "\u188c\uff0e-\u085a",
12239 "output": "xn--59e.xn----5jd"
12240 },
12241 {
12242 "comment": "V3 (ignored)",
12243 "input": "\u188c.-\u085a",
12244 "output": "xn--59e.xn----5jd"
12245 },
12246 {
12247 "comment": "V3 (ignored)",
12248 "input": "xn--59e.xn----5jd",
12249 "output": "xn--59e.xn----5jd"
12250 },
12251 {
12252 "comment": "V6; V7",
12253 "input": "\u1039-\ud82a\udfad\ud83d\udfa2\uff0e\u00df",
12254 "output": null
12255 },
12256 {
12257 "comment": "V6; V7",
12258 "input": "\u1039-\ud82a\udfad\ud83d\udfa2.\u00df",
12259 "output": null
12260 },
12261 {
12262 "comment": "V6; V7",
12263 "input": "\u1039-\ud82a\udfad\ud83d\udfa2.SS",
12264 "output": null
12265 },
12266 {
12267 "comment": "V6; V7",
12268 "input": "\u1039-\ud82a\udfad\ud83d\udfa2.ss",
12269 "output": null
12270 },
12271 {
12272 "comment": "V6; V7",
12273 "input": "\u1039-\ud82a\udfad\ud83d\udfa2.Ss",
12274 "output": null
12275 },
12276 {
12277 "comment": "V6; V7",
12278 "input": "xn----9tg11172akr8b.ss",
12279 "output": null
12280 },
12281 {
12282 "comment": "V6; V7",
12283 "input": "xn----9tg11172akr8b.xn--zca",
12284 "output": null
12285 },
12286 {
12287 "comment": "V6; V7",
12288 "input": "\u1039-\ud82a\udfad\ud83d\udfa2\uff0eSS",
12289 "output": null
12290 },
12291 {
12292 "comment": "V6; V7",
12293 "input": "\u1039-\ud82a\udfad\ud83d\udfa2\uff0ess",
12294 "output": null
12295 },
12296 {
12297 "comment": "V6; V7",
12298 "input": "\u1039-\ud82a\udfad\ud83d\udfa2\uff0eSs",
12299 "output": null
12300 },
12301 {
12302 "comment": "C1; C2; V6; V7",
12303 "input": "\u0d4d-\u200d\u200c\uff61\ud955\udfa7\u2085\u2260",
12304 "output": null
12305 },
12306 {
12307 "comment": "C1; C2; V6; V7",
12308 "input": "\u0d4d-\u200d\u200c\uff61\ud955\udfa7\u2085=\u0338",
12309 "output": null
12310 },
12311 {
12312 "comment": "C1; C2; V6; V7",
12313 "input": "\u0d4d-\u200d\u200c\u3002\ud955\udfa75\u2260",
12314 "output": null
12315 },
12316 {
12317 "comment": "C1; C2; V6; V7",
12318 "input": "\u0d4d-\u200d\u200c\u3002\ud955\udfa75=\u0338",
12319 "output": null
12320 },
12321 {
12322 "comment": "V6; V7; V3 (ignored)",
12323 "input": "xn----jmf.xn--5-ufo50192e",
12324 "output": null
12325 },
12326 {
12327 "comment": "C1; C2; V6; V7",
12328 "input": "xn----jmf215lda.xn--5-ufo50192e",
12329 "output": null
12330 },
12331 {
12332 "comment": "V6; V7",
12333 "input": "\u9523\u3002\u0a4d\udb41\ude3b\udb41\ude86",
12334 "output": null
12335 },
12336 {
12337 "comment": "V6; V7",
12338 "input": "xn--gc5a.xn--ybc83044ppga",
12339 "output": null
12340 },
12341 {
12342 "input": "xn--8gb2338k.xn--lhb0154f",
12343 "output": "xn--8gb2338k.xn--lhb0154f"
12344 },
12345 {
12346 "input": "\u063d\ud804\ude3e.\u0649\ua92b",
12347 "output": "xn--8gb2338k.xn--lhb0154f"
12348 },
12349 {
12350 "input": "\u10c1\u10b16\u0318\u3002\u00df\u1b03",
12351 "output": "xn--6-8cb7433a2ba.xn--zca894k"
12352 },
12353 {
12354 "input": "\u2d21\u2d116\u0318\u3002\u00df\u1b03",
12355 "output": "xn--6-8cb7433a2ba.xn--zca894k"
12356 },
12357 {
12358 "input": "\u10c1\u10b16\u0318\u3002SS\u1b03",
12359 "output": "xn--6-8cb7433a2ba.xn--ss-2vq"
12360 },
12361 {
12362 "input": "\u2d21\u2d116\u0318\u3002ss\u1b03",
12363 "output": "xn--6-8cb7433a2ba.xn--ss-2vq"
12364 },
12365 {
12366 "input": "\u10c1\u2d116\u0318\u3002Ss\u1b03",
12367 "output": "xn--6-8cb7433a2ba.xn--ss-2vq"
12368 },
12369 {
12370 "input": "xn--6-8cb7433a2ba.xn--ss-2vq",
12371 "output": "xn--6-8cb7433a2ba.xn--ss-2vq"
12372 },
12373 {
12374 "input": "\u2d21\u2d116\u0318.ss\u1b03",
12375 "output": "xn--6-8cb7433a2ba.xn--ss-2vq"
12376 },
12377 {
12378 "input": "\u10c1\u10b16\u0318.SS\u1b03",
12379 "output": "xn--6-8cb7433a2ba.xn--ss-2vq"
12380 },
12381 {
12382 "input": "\u10c1\u2d116\u0318.Ss\u1b03",
12383 "output": "xn--6-8cb7433a2ba.xn--ss-2vq"
12384 },
12385 {
12386 "input": "xn--6-8cb7433a2ba.xn--zca894k",
12387 "output": "xn--6-8cb7433a2ba.xn--zca894k"
12388 },
12389 {
12390 "input": "\u2d21\u2d116\u0318.\u00df\u1b03",
12391 "output": "xn--6-8cb7433a2ba.xn--zca894k"
12392 },
12393 {
12394 "comment": "V7",
12395 "input": "xn--6-8cb306hms1a.xn--ss-2vq",
12396 "output": null
12397 },
12398 {
12399 "comment": "V7",
12400 "input": "xn--6-8cb555h2b.xn--ss-2vq",
12401 "output": null
12402 },
12403 {
12404 "comment": "V7",
12405 "input": "xn--6-8cb555h2b.xn--zca894k",
12406 "output": null
12407 },
12408 {
12409 "comment": "V7",
12410 "input": "\ud9ee\udc50\uff61\u226f\ud804\udeea",
12411 "output": null
12412 },
12413 {
12414 "comment": "V7",
12415 "input": "\ud9ee\udc50\uff61>\u0338\ud804\udeea",
12416 "output": null
12417 },
12418 {
12419 "comment": "V7",
12420 "input": "\ud9ee\udc50\u3002\u226f\ud804\udeea",
12421 "output": null
12422 },
12423 {
12424 "comment": "V7",
12425 "input": "\ud9ee\udc50\u3002>\u0338\ud804\udeea",
12426 "output": null
12427 },
12428 {
12429 "comment": "V7",
12430 "input": "xn--eo08b.xn--hdh3385g",
12431 "output": null
12432 },
12433 {
12434 "comment": "V6; V7; A4_2 (ignored)",
12435 "input": "\udb40\udd0f\ud81a\udf34\udb43\udcbd\uff61\uffa0",
12436 "output": null
12437 },
12438 {
12439 "comment": "V6; V7; A4_2 (ignored)",
12440 "input": "\udb40\udd0f\ud81a\udf34\udb43\udcbd\u3002\u1160",
12441 "output": null
12442 },
12443 {
12444 "comment": "V6; V7; A4_2 (ignored)",
12445 "input": "xn--619ep9154c.",
12446 "output": null
12447 },
12448 {
12449 "comment": "V6; V7",
12450 "input": "xn--619ep9154c.xn--psd",
12451 "output": null
12452 },
12453 {
12454 "comment": "V6; V7",
12455 "input": "xn--619ep9154c.xn--cl7c",
12456 "output": null
12457 },
12458 {
12459 "comment": "V7",
12460 "input": "\udb42\udf54.\ud800\udef1\u2082",
12461 "output": null
12462 },
12463 {
12464 "comment": "V7",
12465 "input": "\udb42\udf54.\ud800\udef12",
12466 "output": null
12467 },
12468 {
12469 "comment": "V7",
12470 "input": "xn--vi56e.xn--2-w91i",
12471 "output": null
12472 },
12473 {
12474 "comment": "C2; V7",
12475 "input": "\u2dbf.\u00df\u200d",
12476 "output": null
12477 },
12478 {
12479 "comment": "C2; V7",
12480 "input": "\u2dbf.SS\u200d",
12481 "output": null
12482 },
12483 {
12484 "comment": "C2; V7",
12485 "input": "\u2dbf.ss\u200d",
12486 "output": null
12487 },
12488 {
12489 "comment": "C2; V7",
12490 "input": "\u2dbf.Ss\u200d",
12491 "output": null
12492 },
12493 {
12494 "comment": "V7",
12495 "input": "xn--7pj.ss",
12496 "output": null
12497 },
12498 {
12499 "comment": "C2; V7",
12500 "input": "xn--7pj.xn--ss-n1t",
12501 "output": null
12502 },
12503 {
12504 "comment": "C2; V7",
12505 "input": "xn--7pj.xn--zca870n",
12506 "output": null
12507 },
12508 {
12509 "comment": "C1",
12510 "input": "\u6889\u3002\u200c",
12511 "output": null
12512 },
12513 {
12514 "comment": "A4_2 (ignored)",
12515 "input": "xn--7zv.",
12516 "output": "xn--7zv."
12517 },
12518 {
12519 "comment": "A4_2 (ignored)",
12520 "input": "\u6889.",
12521 "output": "xn--7zv."
12522 },
12523 {
12524 "comment": "C1",
12525 "input": "xn--7zv.xn--0ug",
12526 "output": null
12527 },
12528 {
12529 "input": "xn--iwb.ss",
12530 "output": "xn--iwb.ss"
12531 },
12532 {
12533 "input": "\u0853.ss",
12534 "output": "xn--iwb.ss"
12535 },
12536 {
12537 "input": "\u0853.SS",
12538 "output": "xn--iwb.ss"
12539 },
12540 {
12541 "comment": "V7; V3 (ignored)",
12542 "input": "\u40da\u87e5-\u3002-\ud9b5\udc98\u2488",
12543 "output": null
12544 },
12545 {
12546 "comment": "V7; V3 (ignored); A4_2 (ignored)",
12547 "input": "\u40da\u87e5-\u3002-\ud9b5\udc981.",
12548 "output": null
12549 },
12550 {
12551 "comment": "V7; V3 (ignored); A4_2 (ignored)",
12552 "input": "xn----n50a258u.xn---1-up07j.",
12553 "output": null
12554 },
12555 {
12556 "comment": "V7; V3 (ignored)",
12557 "input": "xn----n50a258u.xn----ecp33805f",
12558 "output": null
12559 },
12560 {
12561 "comment": "C2; V7",
12562 "input": "\u1894\u2260\udbec\ude42.\u200d\ud800\udee2",
12563 "output": null
12564 },
12565 {
12566 "comment": "C2; V7",
12567 "input": "\u1894=\u0338\udbec\ude42.\u200d\ud800\udee2",
12568 "output": null
12569 },
12570 {
12571 "comment": "V7",
12572 "input": "xn--ebf031cf7196a.xn--587c",
12573 "output": null
12574 },
12575 {
12576 "comment": "C2; V7",
12577 "input": "xn--ebf031cf7196a.xn--1ug9540g",
12578 "output": null
12579 },
12580 {
12581 "comment": "V3 (ignored)",
12582 "input": "-\uff61\u2e90",
12583 "output": "-.xn--6vj"
12584 },
12585 {
12586 "comment": "V3 (ignored)",
12587 "input": "-\u3002\u2e90",
12588 "output": "-.xn--6vj"
12589 },
12590 {
12591 "comment": "V3 (ignored)",
12592 "input": "-.xn--6vj",
12593 "output": "-.xn--6vj"
12594 },
12595 {
12596 "comment": "V6; V7",
12597 "input": "\udb43\udc29\ud807\udcac\uff0e\u065c",
12598 "output": null
12599 },
12600 {
12601 "comment": "V6; V7",
12602 "input": "\udb43\udc29\ud807\udcac.\u065c",
12603 "output": null
12604 },
12605 {
12606 "comment": "V6; V7",
12607 "input": "xn--sn3d59267c.xn--4hb",
12608 "output": null
12609 },
12610 {
12611 "comment": "C1; V6; V7",
12612 "input": "\ud800\udf7a.\ud928\uddc3\u200c",
12613 "output": null
12614 },
12615 {
12616 "comment": "V6; V7",
12617 "input": "xn--ie8c.xn--2g51a",
12618 "output": null
12619 },
12620 {
12621 "comment": "C1; V6; V7",
12622 "input": "xn--ie8c.xn--0ug03366c",
12623 "output": null
12624 },
12625 {
12626 "comment": "C2; V7; V3 (ignored)",
12627 "input": "\u200d\u226e\uff0e\udb41\udfea\ud8a6\udecf-",
12628 "output": null
12629 },
12630 {
12631 "comment": "C2; V7; V3 (ignored)",
12632 "input": "\u200d<\u0338\uff0e\udb41\udfea\ud8a6\udecf-",
12633 "output": null
12634 },
12635 {
12636 "comment": "C2; V7; V3 (ignored)",
12637 "input": "\u200d\u226e.\udb41\udfea\ud8a6\udecf-",
12638 "output": null
12639 },
12640 {
12641 "comment": "C2; V7; V3 (ignored)",
12642 "input": "\u200d<\u0338.\udb41\udfea\ud8a6\udecf-",
12643 "output": null
12644 },
12645 {
12646 "comment": "V7; V3 (ignored)",
12647 "input": "xn--gdh.xn----cr99a1w710b",
12648 "output": null
12649 },
12650 {
12651 "comment": "C2; V7; V3 (ignored)",
12652 "input": "xn--1ug95g.xn----cr99a1w710b",
12653 "output": null
12654 },
12655 {
12656 "comment": "C2; V7",
12657 "input": "\u200d\u200d\u8954\u3002\u10bc5\ua86e\ud995\udf4f",
12658 "output": null
12659 },
12660 {
12661 "comment": "C2; V7",
12662 "input": "\u200d\u200d\u8954\u3002\u2d1c5\ua86e\ud995\udf4f",
12663 "output": null
12664 },
12665 {
12666 "comment": "V7",
12667 "input": "xn--2u2a.xn--5-uws5848bpf44e",
12668 "output": null
12669 },
12670 {
12671 "comment": "C2; V7",
12672 "input": "xn--1uga7691f.xn--5-uws5848bpf44e",
12673 "output": null
12674 },
12675 {
12676 "comment": "V7",
12677 "input": "xn--2u2a.xn--5-r1g7167ipfw8d",
12678 "output": null
12679 },
12680 {
12681 "comment": "C2; V7",
12682 "input": "xn--1uga7691f.xn--5-r1g7167ipfw8d",
12683 "output": null
12684 },
12685 {
12686 "input": "xn--ix9c26l.xn--q0s",
12687 "output": "xn--ix9c26l.xn--q0s"
12688 },
12689 {
12690 "input": "\ud802\udedc\ud804\udf3c.\u5a40",
12691 "output": "xn--ix9c26l.xn--q0s"
12692 },
12693 {
12694 "comment": "C2; V6; V7",
12695 "input": "\ua9b9\u200d\ud077\ud8af\udda1\uff61\u2082",
12696 "output": null
12697 },
12698 {
12699 "comment": "C2; V6; V7",
12700 "input": "\ua9b9\u200d\u110f\u1173\u11b2\ud8af\udda1\uff61\u2082",
12701 "output": null
12702 },
12703 {
12704 "comment": "V6; V7",
12705 "input": "xn--0m9as84e2e21c.c",
12706 "output": null
12707 },
12708 {
12709 "comment": "C2; V6; V7",
12710 "input": "xn--1ug1435cfkyaoi04d.c",
12711 "output": null
12712 },
12713 {
12714 "input": "\ud802\udec0\uff0e\u0689\ud804\udf00",
12715 "output": "xn--pw9c.xn--fjb8658k"
12716 },
12717 {
12718 "input": "\ud802\udec0.\u0689\ud804\udf00",
12719 "output": "xn--pw9c.xn--fjb8658k"
12720 },
12721 {
12722 "input": "xn--pw9c.xn--fjb8658k",
12723 "output": "xn--pw9c.xn--fjb8658k"
12724 },
12725 {
12726 "comment": "V6",
12727 "input": "\u2260\u81a3\u3002\u0f83",
12728 "output": null
12729 },
12730 {
12731 "comment": "V6",
12732 "input": "=\u0338\u81a3\u3002\u0f83",
12733 "output": null
12734 },
12735 {
12736 "comment": "V6",
12737 "input": "xn--1chy468a.xn--2ed",
12738 "output": null
12739 },
12740 {
12741 "comment": "C2",
12742 "input": "\ud800\udef7\u3002\u200d",
12743 "output": null
12744 },
12745 {
12746 "comment": "A4_2 (ignored)",
12747 "input": "xn--r97c.",
12748 "output": "xn--r97c."
12749 },
12750 {
12751 "comment": "A4_2 (ignored)",
12752 "input": "\ud800\udef7.",
12753 "output": "xn--r97c."
12754 },
12755 {
12756 "comment": "C2",
12757 "input": "xn--r97c.xn--1ug",
12758 "output": null
12759 },
12760 {
12761 "comment": "V6",
12762 "input": "\ud807\udc33\ud804\ude2f\u3002\u296a",
12763 "output": null
12764 },
12765 {
12766 "comment": "V6",
12767 "input": "xn--2g1d14o.xn--jti",
12768 "output": null
12769 },
12770 {
12771 "comment": "C1; V6; V7",
12772 "input": "\ud804\udd80\u4074\ud952\udde3\uff0e\u10b5\ud835\udfdc\u200c\u0348",
12773 "output": null
12774 },
12775 {
12776 "comment": "C1; V6; V7",
12777 "input": "\ud804\udd80\u4074\ud952\udde3.\u10b54\u200c\u0348",
12778 "output": null
12779 },
12780 {
12781 "comment": "C1; V6; V7",
12782 "input": "\ud804\udd80\u4074\ud952\udde3.\u2d154\u200c\u0348",
12783 "output": null
12784 },
12785 {
12786 "comment": "V6; V7",
12787 "input": "xn--1mnx647cg3x1b.xn--4-zfb5123a",
12788 "output": null
12789 },
12790 {
12791 "comment": "C1; V6; V7",
12792 "input": "xn--1mnx647cg3x1b.xn--4-zfb502tlsl",
12793 "output": null
12794 },
12795 {
12796 "comment": "C1; V6; V7",
12797 "input": "\ud804\udd80\u4074\ud952\udde3\uff0e\u2d15\ud835\udfdc\u200c\u0348",
12798 "output": null
12799 },
12800 {
12801 "comment": "V6; V7",
12802 "input": "xn--1mnx647cg3x1b.xn--4-zfb324h",
12803 "output": null
12804 },
12805 {
12806 "comment": "C1; V6; V7",
12807 "input": "xn--1mnx647cg3x1b.xn--4-zfb324h32o",
12808 "output": null
12809 }
12810]
LICENSE created+307
...@@ -0,0 +1,307 @@
1Mozilla Public License Version 2.0
2
31. Definitions
4
5 1.1. "Contributor" means each individual or legal entity that creates,
6contributes to the creation of, or owns Covered Software.
7
8 1.2. "Contributor Version" means the combination of the Contributions of
9others (if any) used by a Contributor and that particular Contributor's
10Contribution.
11
12 1.3. "Contribution" means Covered Software of a particular Contributor.
13
14 1.4. "Covered Software" means Source Code Form to which the initial
15Contributor has attached the notice in Exhibit A, the Executable Form of such
16Source Code Form, and Modifications of such Source Code Form, in each case
17including portions thereof.
18
19 1.5. "Incompatible With Secondary Licenses" means
20
21 (a) that the initial Contributor has attached the notice described
22in Exhibit B to the Covered Software; or
23
24 (b) that the Covered Software was made available under the terms of
25version 1.1 or earlier of the License, but not also under the terms of a
26Secondary License.
27
28 1.6. "Executable Form" means any form of the work other than Source Code
29Form.
30
31 1.7. "Larger Work" means a work that combines Covered Software with other
32material, in a separate file or files, that is not Covered Software.
33
34 1.8. "License" means this document.
35
36 1.9. "Licensable" means having the right to grant, to the maximum extent
37possible, whether at the time of the initial grant or subsequently, any and
38all of the rights conveyed by this License.
39
40 1.10. "Modifications" means any of the following:
41
42 (a) any file in Source Code Form that results from an addition to,
43deletion from, or modification of the contents of Covered Software; or
44
45 (b) any new file in Source Code Form that contains any Covered
46Software.
47
48 1.11. "Patent Claims" of a Contributor means any patent claim(s),
49including without limitation, method, process, and apparatus claims, in any
50patent Licensable by such Contributor that would be infringed, but for the
51grant of the License, by the making, using, selling, offering for sale, having
52made, import, or transfer of either its Contributions or its Contributor
53Version.
54
55 1.12. "Secondary License" means either the GNU General Public License,
56Version 2.0, the GNU Lesser General Public License, Version 2.1, the GNU
57Affero General Public License, Version 3.0, or any later versions of those
58licenses.
59
60 1.13. "Source Code Form" means the form of the work preferred for making
61modifications.
62
63 1.14. "You" (or "Your") means an individual or a legal entity exercising
64rights under this License. For legal entities, "You" includes any entity that
65controls, is controlled by, or is under common control with You. For purposes
66of this definition, "control" means (a) the power, direct or indirect, to
67cause the direction or management of such entity, whether by contract or
68otherwise, or (b) ownership of more than fifty percent (50%) of the
69outstanding shares or beneficial ownership of such entity.
70
712. License Grants and Conditions
72
73 2.1. Grants
74 Each Contributor hereby grants You a world-wide, royalty-free,
75non-exclusive license:
76
77 (a) under intellectual property rights (other than patent or
78trademark) Licensable by such Contributor to use, reproduce, make available,
79modify, display, perform, distribute, and otherwise exploit its Contributions,
80either on an unmodified basis, with Modifications, or as part of a Larger
81Work; and
82
83 (b) under Patent Claims of such Contributor to make, use, sell,
84offer for sale, have made, import, and otherwise transfer either its
85Contributions or its Contributor Version.
86
87 2.2. Effective Date
88 The licenses granted in Section 2.1 with respect to any Contribution
89become effective for each Contribution on the date the Contributor first
90distributes such Contribution.
91
92 2.3. Limitations on Grant Scope
93 The licenses granted in this Section 2 are the only rights granted under
94this License. No additional rights or licenses will be implied from the
95distribution or licensing of Covered Software under this License.
96Notwithstanding Section 2.1(b) above, no patent license is granted by a
97Contributor:
98
99 (a) for any code that a Contributor has removed from Covered
100Software; or
101
102 (b) for infringements caused by: (i) Your and any other third
103party's modifications of Covered Software, or (ii) the combination of its
104Contributions with other software (except as part of its Contributor Version);
105or
106
107 (c) under Patent Claims infringed by Covered Software in the absence
108of its Contributions.
109
110 This License does not grant any rights in the trademarks, service marks,
111or logos of any Contributor (except as may be necessary to comply with the
112notice requirements in Section 3.4).
113
114 2.4. Subsequent Licenses
115 No Contributor makes additional grants as a result of Your choice to
116distribute the Covered Software under a subsequent version of this License
117(see Section 10.2) or under the terms of a Secondary License (if permitted
118under the terms of Section 3.3).
119
120 2.5. Representation
121 Each Contributor represents that the Contributor believes its
122Contributions are its original creation(s) or it has sufficient rights to
123grant the rights to its Contributions conveyed by this License.
124
125 2.6. Fair Use
126 This License is not intended to limit any rights You have under
127applicable copyright doctrines of fair use, fair dealing, or other
128equivalents.
129
130 2.7. Conditions
131 Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted in
132Section 2.1.
133
1343. Responsibilities
135
136 3.1. Distribution of Source Form
137 All distribution of Covered Software in Source Code Form, including any
138Modifications that You create or to which You contribute, must be under the
139terms of this License. You must inform recipients that the Source Code Form of
140the Covered Software is governed by the terms of this License, and how they
141can obtain a copy of this License. You may not attempt to alter or restrict
142the recipients' rights in the Source Code Form.
143
144 3.2. Distribution of Executable Form
145 If You distribute Covered Software in Executable Form then:
146
147 (a) such Covered Software must also be made available in Source Code
148Form, as described in Section 3.1, and You must inform recipients of the
149Executable Form how they can obtain a copy of such Source Code Form by
150reasonable means in a timely manner, at a charge no more than the cost of
151distribution to the recipient; and
152
153 (b) You may distribute such Executable Form under the terms of this
154License, or sublicense it under different terms, provided that the license for
155the Executable Form does not attempt to limit or alter the recipients' rights
156in the Source Code Form under this License.
157
158 3.3. Distribution of a Larger Work
159 You may create and distribute a Larger Work under terms of Your choice,
160provided that You also comply with the requirements of this License for the
161Covered Software. If the Larger Work is a combination of Covered Software with
162a work governed by one or more Secondary Licenses, and the Covered Software is
163not Incompatible With Secondary Licenses, this License permits You to
164additionally distribute such Covered Software under the terms of such
165Secondary License(s), so that the recipient of the Larger Work may, at their
166option, further distribute the Covered Software under the terms of either this
167License or such Secondary License(s).
168
169 3.4. Notices
170 You may not remove or alter the substance of any license notices
171(including copyright notices, patent notices, disclaimers of warranty, or
172limitations of liability) contained within the Source Code Form of the Covered
173Software, except that You may alter any license notices to the extent required
174to remedy known factual inaccuracies.
175
176 3.5. Application of Additional Terms
177 You may choose to offer, and to charge a fee for, warranty, support,
178indemnity or liability obligations to one or more recipients of Covered
179Software. However, You may do so only on Your own behalf, and not on behalf of
180any Contributor. You must make it absolutely clear that any such warranty,
181support, indemnity, or liability obligation is offered by You alone, and You
182hereby agree to indemnify every Contributor for any liability incurred by such
183Contributor as a result of warranty, support, indemnity or liability terms You
184offer. You may include additional disclaimers of warranty and limitations of
185liability specific to any jurisdiction.
186
1874. Inability to Comply Due to Statute or Regulation
188If it is impossible for You to comply with any of the terms of this License
189with respect to some or all of the Covered Software due to statute, judicial
190order, or regulation then You must: (a) comply with the terms of this License
191to the maximum extent possible; and (b) describe the limitations and the code
192they affect. Such description must be placed in a text file included with all
193distributions of the Covered Software under this License. Except to the extent
194prohibited by statute or regulation, such description must be sufficiently
195detailed for a recipient of ordinary skill to be able to understand it.
196
1975. Termination
198
199 5.1. The rights granted under this License will terminate automatically
200if You fail to comply with any of its terms. However, if You become compliant,
201then the rights granted under this License from a particular Contributor are
202reinstated (a) provisionally, unless and until such Contributor explicitly and
203finally terminates Your grants, and (b) on an ongoing basis, if such
204Contributor fails to notify You of the non-compliance by some reasonable means
205prior to 60 days after You have come back into compliance. Moreover, Your
206grants from a particular Contributor are reinstated on an ongoing basis if
207such Contributor notifies You of the non-compliance by some reasonable means,
208this is the first time You have received notice of non-compliance with this
209License from such Contributor, and You become compliant prior to 30 days after
210Your receipt of the notice.
211
212 5.2. If You initiate litigation against any entity by asserting a patent
213infringement claim (excluding declaratory judgment actions, counter-claims,
214and cross-claims) alleging that a Contributor Version directly or indirectly
215infringes any patent, then the rights granted to You by any and all
216Contributors for the Covered Software under Section 2.1 of this License shall
217terminate.
218
219 5.3. In the event of termination under Sections 5.1 or 5.2 above, all end
220user license agreements (excluding distributors and resellers) which have been
221validly granted by You or Your distributors under this License prior to
222termination shall survive termination.
223
2246. Disclaimer of Warranty
225Covered Software is provided under this License on an "as is" basis, without
226warranty of any kind, either expressed, implied, or statutory, including,
227without limitation, warranties that the Covered Software is free of defects,
228merchantable, fit for a particular purpose or non-infringing. The entire risk
229as to the quality and performance of the Covered Software is with You. Should
230any Covered Software prove defective in any respect, You (not any Contributor)
231assume the cost of any necessary servicing, repair, or correction. This
232disclaimer of warranty constitutes an essential part of this License. No use
233of any Covered Software is authorized under this License except under this
234disclaimer.
235
2367. Limitation of Liability
237Under no circumstances and under no legal theory, whether tort (including
238negligence), contract, or otherwise, shall any Contributor, or anyone who
239distributes Covered Software as permitted above, be liable to You for any
240direct, indirect, special, incidental, or consequential damages of any
241character including, without limitation, damages for lost profits, loss of
242goodwill, work stoppage, computer failure or malfunction, or any and all other
243commercial damages or losses, even if such party shall have been informed of
244the possibility of such damages. This limitation of liability shall not apply
245to liability for death or personal injury resulting from such party's
246negligence to the extent applicable law prohibits such limitation. Some
247jurisdictions do not allow the exclusion or limitation of incidental or
248consequential damages, so this exclusion and limitation may not apply to You.
249
2508. Litigation
251Any litigation relating to this License may be brought only in the courts of a
252jurisdiction where the defendant maintains its principal place of business and
253such litigation shall be governed by laws of that jurisdiction, without
254reference to its conflict-of-law provisions. Nothing in this Section shall
255prevent a party's ability to bring cross-claims or counter-claims.
256
2579. Miscellaneous
258This License represents the complete agreement concerning the subject matter
259hereof. If any provision of this License is held to be unenforceable, such
260provision shall be reformed only to the extent necessary to make it
261enforceable. Any law or regulation which provides that the language of a
262contract shall be construed against the drafter shall not be used to construe
263this License against a Contributor.
264
26510. Versions of the License
266
267 10.1. New Versions
268 Mozilla Foundation is the license steward. Except as provided in Section
26910.3, no one other than the license steward has the right to modify or publish
270new versions of this License. Each version will be given a distinguishing
271version number.
272
273 10.2. Effect of New Versions
274 You may distribute the Covered Software under the terms of the version of
275the License under which You originally received the Covered Software, or under
276the terms of any subsequent version published by the license steward.
277
278 10.3. Modified Versions
279 If you create software not governed by this License, and you want to
280create a new license for such software, you may create and use a modified
281version of this License if you rename the license and remove any references to
282the name of the license steward (except to note that such modified license
283differs from this License).
284
285 10.4. Distributing Source Code Form that is Incompatible With Secondary
286Licenses
287 If You choose to distribute Source Code Form that is Incompatible With
288Secondary Licenses under the terms of this version of the License, the notice
289described in Exhibit B of this License must be attached.
290
291Exhibit A - Source Code Form License Notice
292
293 This Source Code Form is subject to the terms of the Mozilla Public
294License, v. 2.0. If a copy of the MPL was not distributed with this file, You
295can obtain one at http://mozilla.org/MPL/2.0/.
296
297If it is not possible or desirable to put the notice in a particular file,
298then You may include the notice in a location (such as a LICENSE file in a
299relevant directory) where a recipient would be likely to look for such a
300notice.
301
302You may add additional accurate notices of copyright ownership.
303
304Exhibit B - "Incompatible With Secondary Licenses" Notice
305
306 This Source Code Form is "Incompatible With Secondary Licenses", as
307defined by the Mozilla Public License, v. 2.0.
README.md created+15
...@@ -0,0 +1,15 @@
1# zig-net-url
2
3![loc](https://sloc.xyz/github/nektro/zig-net-url)
4[![license](https://img.shields.io/github/license/nektro/zig-net-url.svg)](https://github.com/nektro/zig-net-url/blob/master/LICENSE)
5[![nektro @ github sponsors](https://img.shields.io/badge/sponsors-nektro-purple?logo=github)](https://github.com/sponsors/nektro)
6[![Zig](https://img.shields.io/badge/Zig-0.14-f7a41d)](https://ziglang.org/)
7[![Zigmod](https://img.shields.io/badge/Zigmod-latest-f7a41d)](https://github.com/nektro/zigmod)
8
9A WHATWG URL-compatible parser for Zig.
10
11`urltestdata.json` is from https://github.com/web-platform-tests/wpt/blob/master/url/resources/urltestdata.json.
12Last fetched at `048018b5af85f8d47b8a704b48cf6f9c0a461876`.
13
14`IdnaTestV2.json` is from https://github.com/web-platform-tests/wpt/blob/master/url/resources/IdnaTestV2.json.
15Last fetched at `40fc257a28faf7c378f59185235685ea8684e8f4`.
build.zig created+20
...@@ -0,0 +1,20 @@
1const std = @import("std");
2const deps = @import("./deps.zig");
3
4pub fn build(b: *std.Build) void {
5 const target = b.standardTargetOptions(.{});
6 const mode = b.option(std.builtin.Mode, "mode", "") orelse .Debug;
7
8 const tests = b.addTest(.{
9 .root_source_file = b.path("test.zig"),
10 .target = target,
11 .optimize = mode,
12 });
13 deps.addAllTo(tests);
14
15 const test_step = b.step("test", "Run all library tests");
16 const tests_run = b.addRunArtifact(tests);
17 tests_run.setCwd(b.path("."));
18 tests_run.has_side_effects = true;
19 test_step.dependOn(&tests_run.step);
20}
bun.lock created+26
...@@ -0,0 +1,26 @@
1{
2 "lockfileVersion": 1,
3 "configVersion": 1,
4 "workspaces": {
5 "": {
6 "name": "zig-net-url",
7 "devDependencies": {
8 "@types/bun": "latest",
9 },
10 "peerDependencies": {
11 "typescript": "^5",
12 },
13 },
14 },
15 "packages": {
16 "@types/bun": ["@types/bun@1.3.5", "", { "dependencies": { "bun-types": "1.3.5" } }, "sha512-RnygCqNrd3srIPEWBd5LFeUYG7plCoH2Yw9WaZGyNmdTEei+gWaHqydbaIRkIkcbXwhBT94q78QljxN0Sk838w=="],
17
18 "@types/node": ["@types/node@25.0.3", "", { "dependencies": { "undici-types": "~7.16.0" } }, "sha512-W609buLVRVmeW693xKfzHeIV6nJGGz98uCPfeXI1ELMLXVeKYZ9m15fAMSaUPBHYLGFsVRcMmSCksQOrZV9BYA=="],
19
20 "bun-types": ["bun-types@1.3.5", "", { "dependencies": { "@types/node": "*" } }, "sha512-inmAYe2PFLs0SUbFOWSVD24sg1jFlMPxOjOSSCYqUgn4Hsc3rDc7dFvfVYjFPNHtov6kgUeulV4SxbuIV/stPw=="],
21
22 "typescript": ["typescript@5.9.3", "", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw=="],
23
24 "undici-types": ["undici-types@7.16.0", "", {}, "sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw=="],
25 }
26}
generate.ts created+110
...@@ -0,0 +1,110 @@
1import { closeSync, openSync } from "node:fs";
2import casesraw from "./urltestdata.json";
3import casesidna from "./IdnaTestV2.json";
4
5const cases = casesraw.filter((v) => typeof v !== "string");
6closeSync(openSync("./test.generated.zig", "w", 0o777));
7const f = Bun.file("./test.generated.zig");
8const w = f.writer();
9
10w.write(`const std = @import("std");\n`);
11w.write(`const url = @import("url");\n`);
12w.write(`const expect = @import("expect").expect;\n`);
13w.write(`\n`);
14w.write(`// zig fmt: off\n`);
15
16function stringEscape(s?: string) {
17 if (!s) return "";
18 return s
19 .split("")
20 .map((x) => {
21 if (x === "\n") return "\\n";
22 if (x === "\r") return "\\r";
23 if (x === "\t") return "\\t";
24 if (x === "\\") return "\\\\";
25 if (x === '"') return `\\"`;
26 if (x === "'") return x;
27 if (x === " ") return x;
28 if (x === "!") return x;
29 if (x.codePointAt(0)! >= "#".codePointAt(0)! && x.codePointAt(0)! <= "&".codePointAt(0)!) return x;
30 if (x.codePointAt(0)! >= "(".codePointAt(0)! && x.codePointAt(0)! <= "[".codePointAt(0)!) return x;
31 if (x.codePointAt(0)! >= "]".codePointAt(0)! && x.codePointAt(0)! <= "~".codePointAt(0)!) return x;
32 return `\\x${x.codePointAt(0)!.toString(16).padStart(2, "0")}`;
33 })
34 .join("");
35}
36const E = stringEscape;
37
38w.write(`
39pub fn parseFail(input: []const u8, base: ?[]const u8) !void {
40 const allocator = std.testing.allocator;
41 _ = url.URL.parse(allocator, input, base) catch return;
42 return error.SkipZigTest;
43 // return error.FailZigTest;
44}
45
46pub fn parsePass(input: []const u8, base: ?[]const u8, href: []const u8, origin: []const u8, protocol: []const u8, username: []const u8, password: []const u8, host: []const u8, hostname: []const u8, port: []const u8, pathname: []const u8, search: []const u8, hash: []const u8) !void {
47 const allocator = std.testing.allocator;
48 const u = try url.URL.parse(allocator, input, base);
49 try expect(u.href).toEqualString(href);
50 try expect(u.origin).toEqualString(origin);
51 try expect(u.protocol).toEqualString(protocol);
52 try expect(u.username).toEqualString(username);
53 try expect(u.password).toEqualString(password);
54 try expect(u.host).toEqualString(host);
55 try expect(u.hostname).toEqualString(hostname);
56 try expect(u.port).toEqualString(port);
57 try expect(u.pathname).toEqualString(pathname);
58 try expect(u.search).toEqualString(search);
59 try expect(u.hash).toEqualString(hash);
60}
61
62pub fn parseIDNAFail(input: []const u8) !void {
63 _ = input;
64 // new URL('https://{idnaTest.input}/x')
65 return error.SkipZigTest;
66}
67
68pub fn parseIDNAPass(input: []const u8, output: []const u8) !void {
69 _ = input;
70 _ = output;
71 // new URL('https://{idnaTest.input}/x');
72 // assert_equals(url.host, idnaTest.output);
73 // assert_equals(url.hostname, idnaTest.output);
74 // assert_equals(url.pathname, "/x");
75 // assert_equals(url.href, 'https://{idnaTest.output}/x');
76 return error.SkipZigTest;
77}
78`);
79
80w.write(`\n`);
81for (const c of cases.filter((v) => v.base == null && !!v.failure)) {
82 w.write(`test { try parseFail("${stringEscape(c.input)}", null); }\n`);
83}
84
85w.write(`\n`);
86for (const c of cases.filter((v) => v.base != null && !!v.failure)) {
87 w.write(`test { try parseFail("${stringEscape(c.input)}", "${stringEscape(c.base!)}"); }\n`);
88}
89
90w.write(`\n`);
91for (const c of cases.filter((v) => v.base == null && !v.failure)) {
92 w.write(`test { try parsePass("${E(c.input)}", null, "${E(c.href)}", "${E(c.origin)}", "${E(c.protocol)}", "${E(c.username)}", "${E(c.password)}", "${E(c.host)}", "${E(c.hostname)}", "${E(c.port)}", "${E(c.pathname)}", "${E(c.search)}", "${E(c.hash)}"); }\n`);
93}
94
95w.write(`\n`);
96for (const c of cases.filter((v) => v.base != null && !v.failure)) {
97 w.write(`test { try parsePass("${E(c.input)}", "${E(c.base!)}", "${E(c.href)}", "${E(c.origin)}", "${E(c.protocol)}", "${E(c.username)}", "${E(c.password)}", "${E(c.host)}", "${E(c.hostname)}", "${E(c.port)}", "${E(c.pathname)}", "${E(c.search)}", "${E(c.hash)}"); }\n`);
98}
99
100w.write(`\n`);
101for (const c of casesidna.filter((v) => typeof v !== "string").filter((v) => !v.output)) {
102 w.write(`test { try parseIDNAFail("${stringEscape(c.input)}"); }\n`);
103}
104
105w.write(`\n`);
106for (const c of casesidna.filter((v) => typeof v !== "string").filter((v) => !!v.output)) {
107 w.write(`test { try parseIDNAPass("${stringEscape(c.input)}", "${stringEscape(c.output!)}"); }\n`);
108}
109
110w.flush();
licenses.txt created+16
...@@ -0,0 +1,16 @@
1MPL-2.0:
2= https://spdx.org/licenses/MPL-2.0
3- This
4- git https://github.com/nektro/zig-intrusive-parser
5- git https://github.com/nektro/zig-nio
6
7MIT:
8= https://spdx.org/licenses/MIT
9- git https://github.com/nektro/zig-expect
10- git https://github.com/nektro/zig-extras
11- git https://github.com/nektro/zig-json
12- git https://github.com/nektro/zig-sys-linux
13- git https://github.com/nektro/zig-tracer
14
15Unspecified:
16- system_lib c
package.json created+10
...@@ -0,0 +1,10 @@
1{
2 "name": "zig-net-url",
3 "private": true,
4 "devDependencies": {
5 "@types/bun": "latest"
6 },
7 "peerDependencies": {
8 "typescript": "^5"
9 }
10}
test.generated.zig created+3591
...@@ -0,0 +1,3591 @@
1const std = @import("std");
2const url = @import("url");
3const expect = @import("expect").expect;
4
5// zig fmt: off
6
7pub fn parseFail(input: []const u8, base: ?[]const u8) !void {
8 const allocator = std.testing.allocator;
9 _ = url.URL.parse(allocator, input, base) catch return;
10 return error.SkipZigTest;
11 // return error.FailZigTest;
12}
13
14pub fn parsePass(input: []const u8, base: ?[]const u8, href: []const u8, origin: []const u8, protocol: []const u8, username: []const u8, password: []const u8, host: []const u8, hostname: []const u8, port: []const u8, pathname: []const u8, search: []const u8, hash: []const u8) !void {
15 const allocator = std.testing.allocator;
16 const u = try url.URL.parse(allocator, input, base);
17 try expect(u.href).toEqualString(href);
18 try expect(u.origin).toEqualString(origin);
19 try expect(u.protocol).toEqualString(protocol);
20 try expect(u.username).toEqualString(username);
21 try expect(u.password).toEqualString(password);
22 try expect(u.host).toEqualString(host);
23 try expect(u.hostname).toEqualString(hostname);
24 try expect(u.port).toEqualString(port);
25 try expect(u.pathname).toEqualString(pathname);
26 try expect(u.search).toEqualString(search);
27 try expect(u.hash).toEqualString(hash);
28}
29
30pub fn parseIDNAFail(input: []const u8) !void {
31 _ = input;
32 // new URL('https://{idnaTest.input}/x')
33 return error.SkipZigTest;
34}
35
36pub fn parseIDNAPass(input: []const u8, output: []const u8) !void {
37 _ = input;
38 _ = output;
39 // new URL('https://{idnaTest.input}/x');
40 // assert_equals(url.host, idnaTest.output);
41 // assert_equals(url.hostname, idnaTest.output);
42 // assert_equals(url.pathname, "/x");
43 // assert_equals(url.href, 'https://{idnaTest.output}/x');
44 return error.SkipZigTest;
45}
46
47test { try parseFail("file://example:1/", null); }
48test { try parseFail("file://example:test/", null); }
49test { try parseFail("file://example%/", null); }
50test { try parseFail("file://[example]/", null); }
51test { try parseFail("http://user:pass@/", null); }
52test { try parseFail("http://foo:-80/", null); }
53test { try parseFail("http:/:@/www.example.com", null); }
54test { try parseFail("http://user@/www.example.com", null); }
55test { try parseFail("http:@/www.example.com", null); }
56test { try parseFail("http:/@/www.example.com", null); }
57test { try parseFail("http://@/www.example.com", null); }
58test { try parseFail("https:@/www.example.com", null); }
59test { try parseFail("http:a:b@/www.example.com", null); }
60test { try parseFail("http:/a:b@/www.example.com", null); }
61test { try parseFail("http://a:b@/www.example.com", null); }
62test { try parseFail("http::@/www.example.com", null); }
63test { try parseFail("http:@:www.example.com", null); }
64test { try parseFail("http:/@:www.example.com", null); }
65test { try parseFail("http://@:www.example.com", null); }
66test { try parseFail("https://\xfffd", null); }
67test { try parseFail("https://%EF%BF%BD", null); }
68test { try parseFail("http://a.b.c.xn--pokxncvks", null); }
69test { try parseFail("http://10.0.0.xn--pokxncvks", null); }
70test { try parseFail("http://a.b.c.XN--pokxncvks", null); }
71test { try parseFail("http://a.b.c.Xn--pokxncvks", null); }
72test { try parseFail("http://10.0.0.XN--pokxncvks", null); }
73test { try parseFail("http://10.0.0.xN--pokxncvks", null); }
74test { try parseFail("https://x x:12", null); }
75test { try parseFail("http://[www.google.com]/", null); }
76test { try parseFail("sc://@/", null); }
77test { try parseFail("sc://te@s:t@/", null); }
78test { try parseFail("sc://:/", null); }
79test { try parseFail("sc://:12/", null); }
80test { try parseFail("sc://a\x00b/", null); }
81test { try parseFail("sc://a b/", null); }
82test { try parseFail("sc://a<b", null); }
83test { try parseFail("sc://a>b", null); }
84test { try parseFail("sc://a[b/", null); }
85test { try parseFail("sc://a\\b/", null); }
86test { try parseFail("sc://a]b/", null); }
87test { try parseFail("sc://a^b", null); }
88test { try parseFail("sc://a|b/", null); }
89test { try parseFail("http://a\x00b/", null); }
90test { try parseFail("http://a\x01b/", null); }
91test { try parseFail("http://a\x02b/", null); }
92test { try parseFail("http://a\x03b/", null); }
93test { try parseFail("http://a\x04b/", null); }
94test { try parseFail("http://a\x05b/", null); }
95test { try parseFail("http://a\x06b/", null); }
96test { try parseFail("http://a\x07b/", null); }
97test { try parseFail("http://a\x08b/", null); }
98test { try parseFail("http://a\x0bb/", null); }
99test { try parseFail("http://a\x0cb/", null); }
100test { try parseFail("http://a\x0eb/", null); }
101test { try parseFail("http://a\x0fb/", null); }
102test { try parseFail("http://a\x10b/", null); }
103test { try parseFail("http://a\x11b/", null); }
104test { try parseFail("http://a\x12b/", null); }
105test { try parseFail("http://a\x13b/", null); }
106test { try parseFail("http://a\x14b/", null); }
107test { try parseFail("http://a\x15b/", null); }
108test { try parseFail("http://a\x16b/", null); }
109test { try parseFail("http://a\x17b/", null); }
110test { try parseFail("http://a\x18b/", null); }
111test { try parseFail("http://a\x19b/", null); }
112test { try parseFail("http://a\x1ab/", null); }
113test { try parseFail("http://a\x1bb/", null); }
114test { try parseFail("http://a\x1cb/", null); }
115test { try parseFail("http://a\x1db/", null); }
116test { try parseFail("http://a\x1eb/", null); }
117test { try parseFail("http://a\x1fb/", null); }
118test { try parseFail("http://a b/", null); }
119test { try parseFail("http://a%b/", null); }
120test { try parseFail("http://a<b", null); }
121test { try parseFail("http://a>b", null); }
122test { try parseFail("http://a[b/", null); }
123test { try parseFail("http://a]b/", null); }
124test { try parseFail("http://a^b", null); }
125test { try parseFail("http://a|b/", null); }
126test { try parseFail("http://a\x7fb/", null); }
127test { try parseFail("http://ho%00st/", null); }
128test { try parseFail("http://ho%01st/", null); }
129test { try parseFail("http://ho%02st/", null); }
130test { try parseFail("http://ho%03st/", null); }
131test { try parseFail("http://ho%04st/", null); }
132test { try parseFail("http://ho%05st/", null); }
133test { try parseFail("http://ho%06st/", null); }
134test { try parseFail("http://ho%07st/", null); }
135test { try parseFail("http://ho%08st/", null); }
136test { try parseFail("http://ho%09st/", null); }
137test { try parseFail("http://ho%0Ast/", null); }
138test { try parseFail("http://ho%0Bst/", null); }
139test { try parseFail("http://ho%0Cst/", null); }
140test { try parseFail("http://ho%0Dst/", null); }
141test { try parseFail("http://ho%0Est/", null); }
142test { try parseFail("http://ho%0Fst/", null); }
143test { try parseFail("http://ho%10st/", null); }
144test { try parseFail("http://ho%11st/", null); }
145test { try parseFail("http://ho%12st/", null); }
146test { try parseFail("http://ho%13st/", null); }
147test { try parseFail("http://ho%14st/", null); }
148test { try parseFail("http://ho%15st/", null); }
149test { try parseFail("http://ho%16st/", null); }
150test { try parseFail("http://ho%17st/", null); }
151test { try parseFail("http://ho%18st/", null); }
152test { try parseFail("http://ho%19st/", null); }
153test { try parseFail("http://ho%1Ast/", null); }
154test { try parseFail("http://ho%1Bst/", null); }
155test { try parseFail("http://ho%1Cst/", null); }
156test { try parseFail("http://ho%1Dst/", null); }
157test { try parseFail("http://ho%1Est/", null); }
158test { try parseFail("http://ho%1Fst/", null); }
159test { try parseFail("http://ho%20st/", null); }
160test { try parseFail("http://ho%23st/", null); }
161test { try parseFail("http://ho%25st/", null); }
162test { try parseFail("http://ho%2Fst/", null); }
163test { try parseFail("http://ho%3Ast/", null); }
164test { try parseFail("http://ho%3Cst/", null); }
165test { try parseFail("http://ho%3Est/", null); }
166test { try parseFail("http://ho%3Fst/", null); }
167test { try parseFail("http://ho%40st/", null); }
168test { try parseFail("http://ho%5Bst/", null); }
169test { try parseFail("http://ho%5Cst/", null); }
170test { try parseFail("http://ho%5Dst/", null); }
171test { try parseFail("http://ho%7Cst/", null); }
172test { try parseFail("http://ho%7Fst/", null); }
173test { try parseFail("ftp://example.com%80/", null); }
174test { try parseFail("ftp://example.com%A0/", null); }
175test { try parseFail("https://example.com%80/", null); }
176test { try parseFail("https://example.com%A0/", null); }
177test { try parseFail("https://0x100000000/test", null); }
178test { try parseFail("https://256.0.0.1/test", null); }
179test { try parseFail("file://%43%3A", null); }
180test { try parseFail("file://%43%7C", null); }
181test { try parseFail("file://%43|", null); }
182test { try parseFail("file://C%7C", null); }
183test { try parseFail("file://%43%7C/", null); }
184test { try parseFail("https://%43%7C/", null); }
185test { try parseFail("asdf://%43|/", null); }
186test { try parseFail("\\\\\\.\\Y:", null); }
187test { try parseFail("\\\\\\.\\y:", null); }
188test { try parseFail("https://[0::0::0]", null); }
189test { try parseFail("https://[0:.0]", null); }
190test { try parseFail("https://[0:0:]", null); }
191test { try parseFail("https://[0:1:2:3:4:5:6:7.0.0.0.1]", null); }
192test { try parseFail("https://[0:1.00.0.0.0]", null); }
193test { try parseFail("https://[0:1.290.0.0.0]", null); }
194test { try parseFail("https://[0:1.23.23]", null); }
195test { try parseFail("http://?", null); }
196test { try parseFail("http://#", null); }
197test { try parseFail("non-special://[:80/", null); }
198test { try parseFail("http://[::127.0.0.0.1]", null); }
199test { try parseFail("a", null); }
200test { try parseFail("a/", null); }
201test { try parseFail("a//", null); }
202test { try parseFail("file://\xad/p", null); }
203test { try parseFail("file://%C2%AD/p", null); }
204test { try parseFail("file://xn--/p", null); }
205test { try parseFail("#", null); }
206test { try parseFail("?", null); }
207test { try parseFail("http://0..0x300/", null); }
208test { try parseFail("http://0..0x300./", null); }
209test { try parseFail("http://1.2.3.08", null); }
210test { try parseFail("http://1.2.3.08.", null); }
211test { try parseFail("http://1.2.3.09", null); }
212test { try parseFail("http://09.2.3.4", null); }
213test { try parseFail("http://09.2.3.4.", null); }
214test { try parseFail("http://01.2.3.4.5", null); }
215test { try parseFail("http://01.2.3.4.5.", null); }
216test { try parseFail("http://0x100.2.3.4", null); }
217test { try parseFail("http://0x100.2.3.4.", null); }
218test { try parseFail("http://0x1.2.3.4.5", null); }
219test { try parseFail("http://0x1.2.3.4.5.", null); }
220test { try parseFail("http://foo.1.2.3.4", null); }
221test { try parseFail("http://foo.1.2.3.4.", null); }
222test { try parseFail("http://foo.2.3.4", null); }
223test { try parseFail("http://foo.2.3.4.", null); }
224test { try parseFail("http://foo.09", null); }
225test { try parseFail("http://foo.09.", null); }
226test { try parseFail("http://foo.0x4", null); }
227test { try parseFail("http://foo.0x4.", null); }
228test { try parseFail("http://0999999999999999999/", null); }
229test { try parseFail("http://foo.0x", null); }
230test { try parseFail("http://foo.0XFfFfFfFfFfFfFfFfFfAcE123", null); }
231test { try parseFail("http://\xd83d\xdca9.123/", null); }
232test { try parseFail("https://\x00y", null); }
233test { try parseFail("https://\xffffy", null); }
234test { try parseFail("", null); }
235test { try parseFail("https://\xad/", null); }
236test { try parseFail("https://%C2%AD/", null); }
237test { try parseFail("https://xn--/", null); }
238test { try parseFail("data://:443", null); }
239test { try parseFail("data://test:test", null); }
240test { try parseFail("data://[:1]", null); }
241test { try parseFail("javascript://:443", null); }
242test { try parseFail("javascript://test:test", null); }
243test { try parseFail("javascript://[:1]", null); }
244test { try parseFail("mailto://:443", null); }
245test { try parseFail("mailto://test:test", null); }
246test { try parseFail("mailto://[:1]", null); }
247test { try parseFail("intent://:443", null); }
248test { try parseFail("intent://test:test", null); }
249test { try parseFail("intent://[:1]", null); }
250test { try parseFail("urn://:443", null); }
251test { try parseFail("urn://test:test", null); }
252test { try parseFail("urn://[:1]", null); }
253test { try parseFail("turn://:443", null); }
254test { try parseFail("turn://test:test", null); }
255test { try parseFail("turn://[:1]", null); }
256test { try parseFail("stun://:443", null); }
257test { try parseFail("stun://test:test", null); }
258test { try parseFail("stun://[:1]", null); }
259test { try parseFail("non-special://host\\a", null); }
260
261test { try parseFail("http://f:b/c", "http://example.org/foo/bar"); }
262test { try parseFail("http://f: /c", "http://example.org/foo/bar"); }
263test { try parseFail("http://f:fifty-two/c", "http://example.org/foo/bar"); }
264test { try parseFail("http://f:999999/c", "http://example.org/foo/bar"); }
265test { try parseFail("non-special://f:999999/c", "http://example.org/foo/bar"); }
266test { try parseFail("http://f: 21 / b ? d # e ", "http://example.org/foo/bar"); }
267test { try parseFail("http://[1::2]:3:4", "http://example.org/foo/bar"); }
268test { try parseFail("http://2001::1", "http://example.org/foo/bar"); }
269test { try parseFail("http://2001::1]", "http://example.org/foo/bar"); }
270test { try parseFail("http://2001::1]:80", "http://example.org/foo/bar"); }
271test { try parseFail("http://[::127.0.0.1.]", "http://example.org/foo/bar"); }
272test { try parseFail("http://example example.com", "http://other.com/"); }
273test { try parseFail("http://Goo%20 goo%7C|.com", "http://other.com/"); }
274test { try parseFail("http://[]", "http://other.com/"); }
275test { try parseFail("http://[:]", "http://other.com/"); }
276test { try parseFail("http://GOO\xa0\x3000goo.com", "http://other.com/"); }
277test { try parseFail("http://\xfdd0zyx.com", "http://other.com/"); }
278test { try parseFail("http://%ef%b7%90zyx.com", "http://other.com/"); }
279test { try parseFail("http://\xff05\xff14\xff11.com", "http://other.com/"); }
280test { try parseFail("http://%ef%bc%85%ef%bc%94%ef%bc%91.com", "http://other.com/"); }
281test { try parseFail("http://\xff05\xff10\xff10.com", "http://other.com/"); }
282test { try parseFail("http://%ef%bc%85%ef%bc%90%ef%bc%90.com", "http://other.com/"); }
283test { try parseFail("http://%zz%66%a.com", "http://other.com/"); }
284test { try parseFail("http://%25", "http://other.com/"); }
285test { try parseFail("http://hello%00", "http://other.com/"); }
286test { try parseFail("http://192.168.0.257", "http://other.com/"); }
287test { try parseFail("http://%3g%78%63%30%2e%30%32%35%30%2E.01", "http://other.com/"); }
288test { try parseFail("http://192.168.0.1 hello", "http://other.com/"); }
289test { try parseFail("http://[google.com]", "http://other.com/"); }
290test { try parseFail("http://[::1.2.3.4x]", "http://other.com/"); }
291test { try parseFail("http://[::1.2.3.]", "http://other.com/"); }
292test { try parseFail("http://[::1.2.]", "http://other.com/"); }
293test { try parseFail("http://[::.1.2]", "http://other.com/"); }
294test { try parseFail("http://[::1.]", "http://other.com/"); }
295test { try parseFail("http://[::.1]", "http://other.com/"); }
296test { try parseFail("http://[::%31]", "http://other.com/"); }
297test { try parseFail("http://%5B::1]", "http://other.com/"); }
298test { try parseFail("i", "sc:sd"); }
299test { try parseFail("i", "sc:sd/sd"); }
300test { try parseFail("../i", "sc:sd"); }
301test { try parseFail("../i", "sc:sd/sd"); }
302test { try parseFail("/i", "sc:sd"); }
303test { try parseFail("/i", "sc:sd/sd"); }
304test { try parseFail("?i", "sc:sd"); }
305test { try parseFail("?i", "sc:sd/sd"); }
306test { try parseFail("http:", "https://example.org/foo/bar"); }
307test { try parseFail("http://10000000000", "http://other.com/"); }
308test { try parseFail("http://4294967296", "http://other.com/"); }
309test { try parseFail("http://0xffffffff1", "http://other.com/"); }
310test { try parseFail("http://256.256.256.256", "http://other.com/"); }
311test { try parseFail("http://[0:1:2:3:4:5:6:7:8]", "http://example.net/"); }
312test { try parseFail("http://f:4294967377/c", "http://example.org/"); }
313test { try parseFail("http://f:18446744073709551697/c", "http://example.org/"); }
314test { try parseFail("http://f:340282366920938463463374607431768211537/c", "http://example.org/"); }
315test { try parseFail("test-a-colon.html", "a:"); }
316test { try parseFail("test-a-colon-b.html", "a:b"); }
317test { try parseFail("http://1.2.3.4.5", "http://other.com/"); }
318test { try parseFail("http://1.2.3.4.5.", "http://other.com/"); }
319test { try parseFail("http://256.256.256.256.256", "http://other.com/"); }
320test { try parseFail("http://256.256.256.256.256.", "http://other.com/"); }
321
322test { try parsePass("https://test:@test", null, "https://test@test/", "https://test", "https:", "test", "", "test", "test", "", "/", "", ""); }
323test { try parsePass("https://:@test", null, "https://test/", "https://test", "https:", "", "", "test", "test", "", "/", "", ""); }
324test { try parsePass("non-special://test:@test/x", null, "non-special://test@test/x", "null", "non-special:", "test", "", "test", "test", "", "/x", "", ""); }
325test { try parsePass("non-special://:@test/x", null, "non-special://test/x", "null", "non-special:", "", "", "test", "test", "", "/x", "", ""); }
326test { try parsePass("lolscheme:x x#x x", null, "lolscheme:x x#x%20x", "", "lolscheme:", "", "", "", "", "", "x x", "", "#x%20x"); }
327test { try parsePass("http://a:b@c\\", null, "http://a:b@c/", "http://c", "http:", "a", "b", "c", "c", "", "/", "", ""); }
328test { try parsePass("ws://a@b\\c", null, "ws://a@b/c", "ws://b", "ws:", "a", "", "b", "b", "", "/c", "", ""); }
329test { try parsePass("file:///w|m", null, "file:///w|m", "", "file:", "", "", "", "", "", "/w|m", "", ""); }
330test { try parsePass("file:///w||m", null, "file:///w||m", "", "file:", "", "", "", "", "", "/w||m", "", ""); }
331test { try parsePass("file:///w|/m", null, "file:///w:/m", "", "file:", "", "", "", "", "", "/w:/m", "", ""); }
332test { try parsePass("file:C|/m/", null, "file:///C:/m/", "", "file:", "", "", "", "", "", "/C:/m/", "", ""); }
333test { try parsePass("file:C||/m/", null, "file:///C||/m/", "", "file:", "", "", "", "", "", "/C||/m/", "", ""); }
334test { try parsePass("http://example.com/././foo", null, "http://example.com/foo", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo", "", ""); }
335test { try parsePass("http://example.com/./.foo", null, "http://example.com/.foo", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/.foo", "", ""); }
336test { try parsePass("http://example.com/foo/.", null, "http://example.com/foo/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo/", "", ""); }
337test { try parsePass("http://example.com/foo/./", null, "http://example.com/foo/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo/", "", ""); }
338test { try parsePass("http://example.com/foo/bar/..", null, "http://example.com/foo/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo/", "", ""); }
339test { try parsePass("http://example.com/foo/bar/../", null, "http://example.com/foo/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo/", "", ""); }
340test { try parsePass("http://example.com/foo/..bar", null, "http://example.com/foo/..bar", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo/..bar", "", ""); }
341test { try parsePass("http://example.com/foo/bar/../ton", null, "http://example.com/foo/ton", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo/ton", "", ""); }
342test { try parsePass("http://example.com/foo/bar/../ton/../../a", null, "http://example.com/a", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/a", "", ""); }
343test { try parsePass("http://example.com/foo/../../..", null, "http://example.com/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/", "", ""); }
344test { try parsePass("http://example.com/foo/../../../ton", null, "http://example.com/ton", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/ton", "", ""); }
345test { try parsePass("http://example.com/foo/%2e", null, "http://example.com/foo/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo/", "", ""); }
346test { try parsePass("http://example.com/foo/%2e%2", null, "http://example.com/foo/%2e%2", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo/%2e%2", "", ""); }
347test { try parsePass("http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar", null, "http://example.com/%2e.bar", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/%2e.bar", "", ""); }
348test { try parsePass("http://example.com////../..", null, "http://example.com//", "http://example.com", "http:", "", "", "example.com", "example.com", "", "//", "", ""); }
349test { try parsePass("http://example.com/foo/bar//../..", null, "http://example.com/foo/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo/", "", ""); }
350test { try parsePass("http://example.com/foo/bar//..", null, "http://example.com/foo/bar/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo/bar/", "", ""); }
351test { try parsePass("http://example.com/foo", null, "http://example.com/foo", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo", "", ""); }
352test { try parsePass("http://example.com/%20foo", null, "http://example.com/%20foo", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/%20foo", "", ""); }
353test { try parsePass("http://example.com/foo%", null, "http://example.com/foo%", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo%", "", ""); }
354test { try parsePass("http://example.com/foo%2", null, "http://example.com/foo%2", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo%2", "", ""); }
355test { try parsePass("http://example.com/foo%2zbar", null, "http://example.com/foo%2zbar", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo%2zbar", "", ""); }
356test { try parsePass("http://example.com/foo%2\xc2\xa9zbar", null, "http://example.com/foo%2%C3%82%C2%A9zbar", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo%2%C3%82%C2%A9zbar", "", ""); }
357test { try parsePass("http://example.com/foo%41%7a", null, "http://example.com/foo%41%7a", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo%41%7a", "", ""); }
358test { try parsePass("http://example.com/foo\t\x91%91", null, "http://example.com/foo%C2%91%91", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo%C2%91%91", "", ""); }
359test { try parsePass("http://example.com/foo%00%51", null, "http://example.com/foo%00%51", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foo%00%51", "", ""); }
360test { try parsePass("http://example.com/(%28:%3A%29)", null, "http://example.com/(%28:%3A%29)", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/(%28:%3A%29)", "", ""); }
361test { try parsePass("http://example.com/%3A%3a%3C%3c", null, "http://example.com/%3A%3a%3C%3c", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/%3A%3a%3C%3c", "", ""); }
362test { try parsePass("http://example.com/foo\tbar", null, "http://example.com/foobar", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/foobar", "", ""); }
363test { try parsePass("http://example.com\\\\foo\\\\bar", null, "http://example.com//foo//bar", "http://example.com", "http:", "", "", "example.com", "example.com", "", "//foo//bar", "", ""); }
364test { try parsePass("http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd", null, "http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/%7Ffp3%3Eju%3Dduvgw%3Dd", "", ""); }
365test { try parsePass("http://example.com/@asdf%40", null, "http://example.com/@asdf%40", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/@asdf%40", "", ""); }
366test { try parsePass("http://example.com/\x4f60\x597d\x4f60\x597d", null, "http://example.com/%E4%BD%A0%E5%A5%BD%E4%BD%A0%E5%A5%BD", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/%E4%BD%A0%E5%A5%BD%E4%BD%A0%E5%A5%BD", "", ""); }
367test { try parsePass("http://example.com/\x2025/foo", null, "http://example.com/%E2%80%A5/foo", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/%E2%80%A5/foo", "", ""); }
368test { try parsePass("http://example.com/\xfeff/foo", null, "http://example.com/%EF%BB%BF/foo", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/%EF%BB%BF/foo", "", ""); }
369test { try parsePass("http://example.com/\x202e/foo/\x202d/bar", null, "http://example.com/%E2%80%AE/foo/%E2%80%AD/bar", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/%E2%80%AE/foo/%E2%80%AD/bar", "", ""); }
370test { try parsePass("http://www.google.com/foo?bar=baz#", null, "http://www.google.com/foo?bar=baz#", "http://www.google.com", "http:", "", "", "www.google.com", "www.google.com", "", "/foo", "?bar=baz", ""); }
371test { try parsePass("http://www.google.com/foo?bar=baz# \xbb", null, "http://www.google.com/foo?bar=baz#%20%C2%BB", "http://www.google.com", "http:", "", "", "www.google.com", "www.google.com", "", "/foo", "?bar=baz", "#%20%C2%BB"); }
372test { try parsePass("data:test# \xbb", null, "data:test#%20%C2%BB", "null", "data:", "", "", "", "", "", "test", "", "#%20%C2%BB"); }
373test { try parsePass("http://www.google.com", null, "http://www.google.com/", "http://www.google.com", "http:", "", "", "www.google.com", "www.google.com", "", "/", "", ""); }
374test { try parsePass("http://192.0x00A80001", null, "http://192.168.0.1/", "http://192.168.0.1", "http:", "", "", "192.168.0.1", "192.168.0.1", "", "/", "", ""); }
375test { try parsePass("http://www/foo%2Ehtml", null, "http://www/foo%2Ehtml", "http://www", "http:", "", "", "www", "www", "", "/foo%2Ehtml", "", ""); }
376test { try parsePass("http://www/foo/%2E/html", null, "http://www/foo/html", "http://www", "http:", "", "", "www", "www", "", "/foo/html", "", ""); }
377test { try parsePass("http://%25DOMAIN:foobar@foodomain.com/", null, "http://%25DOMAIN:foobar@foodomain.com/", "http://foodomain.com", "http:", "%25DOMAIN", "foobar", "foodomain.com", "foodomain.com", "", "/", "", ""); }
378test { try parsePass("http:\\\\www.google.com\\foo", null, "http://www.google.com/foo", "http://www.google.com", "http:", "", "", "www.google.com", "www.google.com", "", "/foo", "", ""); }
379test { try parsePass("http://foo:80/", null, "http://foo/", "http://foo", "http:", "", "", "foo", "foo", "", "/", "", ""); }
380test { try parsePass("http://foo:81/", null, "http://foo:81/", "http://foo:81", "http:", "", "", "foo:81", "foo", "81", "/", "", ""); }
381test { try parsePass("httpa://foo:80/", null, "httpa://foo:80/", "null", "httpa:", "", "", "foo:80", "foo", "80", "/", "", ""); }
382test { try parsePass("https://foo:443/", null, "https://foo/", "https://foo", "https:", "", "", "foo", "foo", "", "/", "", ""); }
383test { try parsePass("https://foo:80/", null, "https://foo:80/", "https://foo:80", "https:", "", "", "foo:80", "foo", "80", "/", "", ""); }
384test { try parsePass("ftp://foo:21/", null, "ftp://foo/", "ftp://foo", "ftp:", "", "", "foo", "foo", "", "/", "", ""); }
385test { try parsePass("ftp://foo:80/", null, "ftp://foo:80/", "ftp://foo:80", "ftp:", "", "", "foo:80", "foo", "80", "/", "", ""); }
386test { try parsePass("gopher://foo:70/", null, "gopher://foo:70/", "null", "gopher:", "", "", "foo:70", "foo", "70", "/", "", ""); }
387test { try parsePass("gopher://foo:443/", null, "gopher://foo:443/", "null", "gopher:", "", "", "foo:443", "foo", "443", "/", "", ""); }
388test { try parsePass("ws://foo:80/", null, "ws://foo/", "ws://foo", "ws:", "", "", "foo", "foo", "", "/", "", ""); }
389test { try parsePass("ws://foo:81/", null, "ws://foo:81/", "ws://foo:81", "ws:", "", "", "foo:81", "foo", "81", "/", "", ""); }
390test { try parsePass("ws://foo:443/", null, "ws://foo:443/", "ws://foo:443", "ws:", "", "", "foo:443", "foo", "443", "/", "", ""); }
391test { try parsePass("ws://foo:815/", null, "ws://foo:815/", "ws://foo:815", "ws:", "", "", "foo:815", "foo", "815", "/", "", ""); }
392test { try parsePass("wss://foo:80/", null, "wss://foo:80/", "wss://foo:80", "wss:", "", "", "foo:80", "foo", "80", "/", "", ""); }
393test { try parsePass("wss://foo:81/", null, "wss://foo:81/", "wss://foo:81", "wss:", "", "", "foo:81", "foo", "81", "/", "", ""); }
394test { try parsePass("wss://foo:443/", null, "wss://foo/", "wss://foo", "wss:", "", "", "foo", "foo", "", "/", "", ""); }
395test { try parsePass("wss://foo:815/", null, "wss://foo:815/", "wss://foo:815", "wss:", "", "", "foo:815", "foo", "815", "/", "", ""); }
396test { try parsePass("http:/example.com/", null, "http://example.com/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/", "", ""); }
397test { try parsePass("ftp:/example.com/", null, "ftp://example.com/", "ftp://example.com", "ftp:", "", "", "example.com", "example.com", "", "/", "", ""); }
398test { try parsePass("https:/example.com/", null, "https://example.com/", "https://example.com", "https:", "", "", "example.com", "example.com", "", "/", "", ""); }
399test { try parsePass("madeupscheme:/example.com/", null, "madeupscheme:/example.com/", "null", "madeupscheme:", "", "", "", "", "", "/example.com/", "", ""); }
400test { try parsePass("file:/example.com/", null, "file:///example.com/", "", "file:", "", "", "", "", "", "/example.com/", "", ""); }
401test { try parsePass("ftps:/example.com/", null, "ftps:/example.com/", "null", "ftps:", "", "", "", "", "", "/example.com/", "", ""); }
402test { try parsePass("gopher:/example.com/", null, "gopher:/example.com/", "null", "gopher:", "", "", "", "", "", "/example.com/", "", ""); }
403test { try parsePass("ws:/example.com/", null, "ws://example.com/", "ws://example.com", "ws:", "", "", "example.com", "example.com", "", "/", "", ""); }
404test { try parsePass("wss:/example.com/", null, "wss://example.com/", "wss://example.com", "wss:", "", "", "example.com", "example.com", "", "/", "", ""); }
405test { try parsePass("data:/example.com/", null, "data:/example.com/", "null", "data:", "", "", "", "", "", "/example.com/", "", ""); }
406test { try parsePass("javascript:/example.com/", null, "javascript:/example.com/", "null", "javascript:", "", "", "", "", "", "/example.com/", "", ""); }
407test { try parsePass("mailto:/example.com/", null, "mailto:/example.com/", "null", "mailto:", "", "", "", "", "", "/example.com/", "", ""); }
408test { try parsePass("http:example.com/", null, "http://example.com/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/", "", ""); }
409test { try parsePass("ftp:example.com/", null, "ftp://example.com/", "ftp://example.com", "ftp:", "", "", "example.com", "example.com", "", "/", "", ""); }
410test { try parsePass("https:example.com/", null, "https://example.com/", "https://example.com", "https:", "", "", "example.com", "example.com", "", "/", "", ""); }
411test { try parsePass("madeupscheme:example.com/", null, "madeupscheme:example.com/", "null", "madeupscheme:", "", "", "", "", "", "example.com/", "", ""); }
412test { try parsePass("ftps:example.com/", null, "ftps:example.com/", "null", "ftps:", "", "", "", "", "", "example.com/", "", ""); }
413test { try parsePass("gopher:example.com/", null, "gopher:example.com/", "null", "gopher:", "", "", "", "", "", "example.com/", "", ""); }
414test { try parsePass("ws:example.com/", null, "ws://example.com/", "ws://example.com", "ws:", "", "", "example.com", "example.com", "", "/", "", ""); }
415test { try parsePass("wss:example.com/", null, "wss://example.com/", "wss://example.com", "wss:", "", "", "example.com", "example.com", "", "/", "", ""); }
416test { try parsePass("data:example.com/", null, "data:example.com/", "null", "data:", "", "", "", "", "", "example.com/", "", ""); }
417test { try parsePass("javascript:example.com/", null, "javascript:example.com/", "null", "javascript:", "", "", "", "", "", "example.com/", "", ""); }
418test { try parsePass("mailto:example.com/", null, "mailto:example.com/", "null", "mailto:", "", "", "", "", "", "example.com/", "", ""); }
419test { try parsePass("https://example.com/aaa/bbb/%2e%2e?query", null, "https://example.com/aaa/?query", "https://example.com", "https:", "", "", "example.com", "example.com", "", "/aaa/", "?query", ""); }
420test { try parsePass("http:@www.example.com", null, "http://www.example.com/", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/", "", ""); }
421test { try parsePass("http:/@www.example.com", null, "http://www.example.com/", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/", "", ""); }
422test { try parsePass("http://@www.example.com", null, "http://www.example.com/", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/", "", ""); }
423test { try parsePass("http:a:b@www.example.com", null, "http://a:b@www.example.com/", "http://www.example.com", "http:", "a", "b", "www.example.com", "www.example.com", "", "/", "", ""); }
424test { try parsePass("http:/a:b@www.example.com", null, "http://a:b@www.example.com/", "http://www.example.com", "http:", "a", "b", "www.example.com", "www.example.com", "", "/", "", ""); }
425test { try parsePass("http://a:b@www.example.com", null, "http://a:b@www.example.com/", "http://www.example.com", "http:", "a", "b", "www.example.com", "www.example.com", "", "/", "", ""); }
426test { try parsePass("http://@pple.com", null, "http://pple.com/", "http://pple.com", "http:", "", "", "pple.com", "pple.com", "", "/", "", ""); }
427test { try parsePass("http::b@www.example.com", null, "http://:b@www.example.com/", "http://www.example.com", "http:", "", "b", "www.example.com", "www.example.com", "", "/", "", ""); }
428test { try parsePass("http:/:b@www.example.com", null, "http://:b@www.example.com/", "http://www.example.com", "http:", "", "b", "www.example.com", "www.example.com", "", "/", "", ""); }
429test { try parsePass("http://:b@www.example.com", null, "http://:b@www.example.com/", "http://www.example.com", "http:", "", "b", "www.example.com", "www.example.com", "", "/", "", ""); }
430test { try parsePass("http:a:@www.example.com", null, "http://a@www.example.com/", "http://www.example.com", "http:", "a", "", "www.example.com", "www.example.com", "", "/", "", ""); }
431test { try parsePass("http:/a:@www.example.com", null, "http://a@www.example.com/", "http://www.example.com", "http:", "a", "", "www.example.com", "www.example.com", "", "/", "", ""); }
432test { try parsePass("http://a:@www.example.com", null, "http://a@www.example.com/", "http://www.example.com", "http:", "a", "", "www.example.com", "www.example.com", "", "/", "", ""); }
433test { try parsePass("http://www.@pple.com", null, "http://www.@pple.com/", "http://pple.com", "http:", "www.", "", "pple.com", "pple.com", "", "/", "", ""); }
434test { try parsePass("http://:@www.example.com", null, "http://www.example.com/", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/", "", ""); }
435test { try parsePass("file:.", null, "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
436test { try parsePass("\x00\x1b\x04\x12 http://example.com/\x1f \r ", null, "http://example.com/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/", "", ""); }
437test { try parsePass("non-special:opaque ", null, "non-special:opaque", "null", "non-special:", "", "", "", "", "", "opaque", "", ""); }
438test { try parsePass("non-special:opaque ?hi", null, "non-special:opaque %20?hi", "null", "non-special:", "", "", "", "", "", "opaque %20", "?hi", ""); }
439test { try parsePass("non-special:opaque #hi", null, "non-special:opaque %20#hi", "null", "non-special:", "", "", "", "", "", "opaque %20", "", "#hi"); }
440test { try parsePass("non-special:opaque x?hi", null, "non-special:opaque x?hi", "null", "non-special:", "", "", "", "", "", "opaque x", "?hi", ""); }
441test { try parsePass("non-special:opaque x#hi", null, "non-special:opaque x#hi", "null", "non-special:", "", "", "", "", "", "opaque x", "", "#hi"); }
442test { try parsePass("non-special:opaque \t\t \t#hi", null, "non-special:opaque %20#hi", "null", "non-special:", "", "", "", "", "", "opaque %20", "", "#hi"); }
443test { try parsePass("non-special:opaque \t\t #hi", null, "non-special:opaque %20#hi", "null", "non-special:", "", "", "", "", "", "opaque %20", "", "#hi"); }
444test { try parsePass("non-special:opaque\t\t \r #hi", null, "non-special:opaque %20#hi", "null", "non-special:", "", "", "", "", "", "opaque %20", "", "#hi"); }
445test { try parsePass("https://x/\xfffd?\xfffd#\xfffd", null, "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD", "https://x", "https:", "", "", "x", "x", "", "/%EF%BF%BD", "?%EF%BF%BD", "#%EF%BF%BD"); }
446test { try parsePass("https://fa\xdf.ExAmPlE/", null, "https://xn--fa-hia.example/", "https://xn--fa-hia.example", "https:", "", "", "xn--fa-hia.example", "xn--fa-hia.example", "", "/", "", ""); }
447test { try parsePass("sc://fa\xdf.ExAmPlE/", null, "sc://fa%C3%9F.ExAmPlE/", "null", "sc:", "", "", "fa%C3%9F.ExAmPlE", "fa%C3%9F.ExAmPlE", "", "/", "", ""); }
448test { try parsePass("http://./", null, "http://./", "http://.", "http:", "", "", ".", ".", "", "/", "", ""); }
449test { try parsePass("http://../", null, "http://../", "http://..", "http:", "", "", "..", "..", "", "/", "", ""); }
450test { try parsePass("h://.", null, "h://.", "null", "h:", "", "", ".", ".", "", "", "", ""); }
451test { try parsePass("http://host/?'", null, "http://host/?%27", "http://host", "http:", "", "", "host", "host", "", "/", "?%27", ""); }
452test { try parsePass("notspecial://host/?'", null, "notspecial://host/?'", "null", "notspecial:", "", "", "host", "host", "", "/", "?'", ""); }
453test { try parsePass("about:/../", null, "about:/", "null", "about:", "", "", "", "", "", "/", "", ""); }
454test { try parsePass("data:/../", null, "data:/", "null", "data:", "", "", "", "", "", "/", "", ""); }
455test { try parsePass("javascript:/../", null, "javascript:/", "null", "javascript:", "", "", "", "", "", "/", "", ""); }
456test { try parsePass("mailto:/../", null, "mailto:/", "null", "mailto:", "", "", "", "", "", "/", "", ""); }
457test { try parsePass("sc://\xf1.test/", null, "sc://%C3%B1.test/", "null", "sc:", "", "", "%C3%B1.test", "%C3%B1.test", "", "/", "", ""); }
458test { try parsePass("sc://%/", null, "sc://%/", "", "sc:", "", "", "%", "%", "", "/", "", ""); }
459test { try parsePass("sc:\\../", null, "sc:\\../", "null", "sc:", "", "", "", "", "", "\\../", "", ""); }
460test { try parsePass("sc::a@example.net", null, "sc::a@example.net", "null", "sc:", "", "", "", "", "", ":a@example.net", "", ""); }
461test { try parsePass("wow:%NBD", null, "wow:%NBD", "null", "wow:", "", "", "", "", "", "%NBD", "", ""); }
462test { try parsePass("wow:%1G", null, "wow:%1G", "null", "wow:", "", "", "", "", "", "%1G", "", ""); }
463test { try parsePass("wow:\xffff", null, "wow:%EF%BF%BF", "null", "wow:", "", "", "", "", "", "%EF%BF%BF", "", ""); }
464test { try parsePass("foo://ho\tst/", null, "foo://host/", "", "foo:", "", "", "host", "host", "", "/", "", ""); }
465test { try parsePass("foo://ho\nst/", null, "foo://host/", "", "foo:", "", "", "host", "host", "", "/", "", ""); }
466test { try parsePass("foo://ho\rst/", null, "foo://host/", "", "foo:", "", "", "host", "host", "", "/", "", ""); }
467test { try parsePass("http://ho\tst/", null, "http://host/", "", "http:", "", "", "host", "host", "", "/", "", ""); }
468test { try parsePass("http://ho\nst/", null, "http://host/", "", "http:", "", "", "host", "host", "", "/", "", ""); }
469test { try parsePass("http://ho\rst/", null, "http://host/", "", "http:", "", "", "host", "host", "", "/", "", ""); }
470test { try parsePass("http://!\"$&'()*+,-.;=_`{}~/", null, "http://!\"$&'()*+,-.;=_`{}~/", "http://!\"$&'()*+,-.;=_`{}~", "http:", "", "", "!\"$&'()*+,-.;=_`{}~", "!\"$&'()*+,-.;=_`{}~", "", "/", "", ""); }
471test { try parsePass("sc://\x01\x02\x03\x04\x05\x06\x07\x08\x0b\x0c\x0e\x0f\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x7f!\"$%&'()*+,-.;=_`{}~/", null, "sc://%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~/", "null", "sc:", "", "", "%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~", "%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~", "", "/", "", ""); }
472test { try parsePass("ftp://%e2%98%83", null, "ftp://xn--n3h/", "ftp://xn--n3h", "ftp:", "", "", "xn--n3h", "xn--n3h", "", "/", "", ""); }
473test { try parsePass("https://%e2%98%83", null, "https://xn--n3h/", "https://xn--n3h", "https:", "", "", "xn--n3h", "xn--n3h", "", "/", "", ""); }
474test { try parsePass("http://127.0.0.1:10100/relative_import.html", null, "http://127.0.0.1:10100/relative_import.html", "http://127.0.0.1:10100", "http:", "", "", "127.0.0.1:10100", "127.0.0.1", "10100", "/relative_import.html", "", ""); }
475test { try parsePass("http://facebook.com/?foo=%7B%22abc%22", null, "http://facebook.com/?foo=%7B%22abc%22", "http://facebook.com", "http:", "", "", "facebook.com", "facebook.com", "", "/", "?foo=%7B%22abc%22", ""); }
476test { try parsePass("https://localhost:3000/jqueryui@1.2.3", null, "https://localhost:3000/jqueryui@1.2.3", "https://localhost:3000", "https:", "", "", "localhost:3000", "localhost", "3000", "/jqueryui@1.2.3", "", ""); }
477test { try parsePass("h\tt\nt\rp://h\to\ns\rt:9\t0\n0\r0/p\ta\nt\rh?q\tu\ne\rry#f\tr\na\rg", null, "http://host:9000/path?query#frag", "http://host:9000", "http:", "", "", "host:9000", "host", "9000", "/path", "?query", "#frag"); }
478test { try parsePass("http://foo.bar/baz?qux#foo\x08bar", null, "http://foo.bar/baz?qux#foo%08bar", "http://foo.bar", "http:", "", "", "foo.bar", "foo.bar", "", "/baz", "?qux", "#foo%08bar"); }
479test { try parsePass("http://foo.bar/baz?qux#foo\"bar", null, "http://foo.bar/baz?qux#foo%22bar", "http://foo.bar", "http:", "", "", "foo.bar", "foo.bar", "", "/baz", "?qux", "#foo%22bar"); }
480test { try parsePass("http://foo.bar/baz?qux#foo<bar", null, "http://foo.bar/baz?qux#foo%3Cbar", "http://foo.bar", "http:", "", "", "foo.bar", "foo.bar", "", "/baz", "?qux", "#foo%3Cbar"); }
481test { try parsePass("http://foo.bar/baz?qux#foo>bar", null, "http://foo.bar/baz?qux#foo%3Ebar", "http://foo.bar", "http:", "", "", "foo.bar", "foo.bar", "", "/baz", "?qux", "#foo%3Ebar"); }
482test { try parsePass("http://foo.bar/baz?qux#foo`bar", null, "http://foo.bar/baz?qux#foo%60bar", "http://foo.bar", "http:", "", "", "foo.bar", "foo.bar", "", "/baz", "?qux", "#foo%60bar"); }
483test { try parsePass("https://0x.0x.0", null, "https://0.0.0.0/", "https://0.0.0.0", "https:", "", "", "0.0.0.0", "0.0.0.0", "", "/", "", ""); }
484test { try parsePass("file:///C%3A/", null, "file:///C%3A/", "", "file:", "", "", "", "", "", "/C%3A/", "", ""); }
485test { try parsePass("file:///C%7C/", null, "file:///C%7C/", "", "file:", "", "", "", "", "", "/C%7C/", "", ""); }
486test { try parsePass("asdf://%43%7C/", null, "asdf://%43%7C/", "null", "asdf:", "", "", "%43%7C", "%43%7C", "", "/", "", ""); }
487test { try parsePass("file:\\\\//", null, "file:////", "", "file:", "", "", "", "", "", "//", "", ""); }
488test { try parsePass("file:\\\\\\\\", null, "file:////", "", "file:", "", "", "", "", "", "//", "", ""); }
489test { try parsePass("file:\\\\\\\\?fox", null, "file:////?fox", "", "file:", "", "", "", "", "", "//", "?fox", ""); }
490test { try parsePass("file:\\\\\\\\#guppy", null, "file:////#guppy", "", "file:", "", "", "", "", "", "//", "", "#guppy"); }
491test { try parsePass("file://spider///", null, "file://spider///", "", "file:", "", "", "spider", "spider", "", "///", "", ""); }
492test { try parsePass("file:\\\\localhost//", null, "file:////", "", "file:", "", "", "", "", "", "//", "", ""); }
493test { try parsePass("file:///localhost//cat", null, "file:///localhost//cat", "", "file:", "", "", "", "", "", "/localhost//cat", "", ""); }
494test { try parsePass("file://\\/localhost//cat", null, "file:////localhost//cat", "", "file:", "", "", "", "", "", "//localhost//cat", "", ""); }
495test { try parsePass("file://localhost//a//../..//", null, "file://///", "", "file:", "", "", "", "", "", "///", "", ""); }
496test { try parsePass("file://example.net/C:/", null, "file://example.net/C:/", "", "file:", "", "", "example.net", "example.net", "", "/C:/", "", ""); }
497test { try parsePass("file://1.2.3.4/C:/", null, "file://1.2.3.4/C:/", "", "file:", "", "", "1.2.3.4", "1.2.3.4", "", "/C:/", "", ""); }
498test { try parsePass("file://[1::8]/C:/", null, "file://[1::8]/C:/", "", "file:", "", "", "[1::8]", "[1::8]", "", "/C:/", "", ""); }
499test { try parsePass("file:/C|/", null, "file:///C:/", "", "file:", "", "", "", "", "", "/C:/", "", ""); }
500test { try parsePass("file://C|/", null, "file:///C:/", "", "file:", "", "", "", "", "", "/C:/", "", ""); }
501test { try parsePass("file:", null, "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
502test { try parsePass("file:?q=v", null, "file:///?q=v", "", "file:", "", "", "", "", "", "/", "?q=v", ""); }
503test { try parsePass("file:#frag", null, "file:///#frag", "", "file:", "", "", "", "", "", "/", "", "#frag"); }
504test { try parsePass("file:///Y:", null, "file:///Y:", "", "file:", "", "", "", "", "", "/Y:", "", ""); }
505test { try parsePass("file:///Y:/", null, "file:///Y:/", "", "file:", "", "", "", "", "", "/Y:/", "", ""); }
506test { try parsePass("file:///./Y", null, "file:///Y", "", "file:", "", "", "", "", "", "/Y", "", ""); }
507test { try parsePass("file:///./Y:", null, "file:///Y:", "", "file:", "", "", "", "", "", "/Y:", "", ""); }
508test { try parsePass("file:///y:", null, "file:///y:", "", "file:", "", "", "", "", "", "/y:", "", ""); }
509test { try parsePass("file:///y:/", null, "file:///y:/", "", "file:", "", "", "", "", "", "/y:/", "", ""); }
510test { try parsePass("file:///./y", null, "file:///y", "", "file:", "", "", "", "", "", "/y", "", ""); }
511test { try parsePass("file:///./y:", null, "file:///y:", "", "file:", "", "", "", "", "", "/y:", "", ""); }
512test { try parsePass("file://localhost//a//../..//foo", null, "file://///foo", "", "file:", "", "", "", "", "", "///foo", "", ""); }
513test { try parsePass("file://localhost////foo", null, "file://////foo", "", "file:", "", "", "", "", "", "////foo", "", ""); }
514test { try parsePass("file:////foo", null, "file:////foo", "", "file:", "", "", "", "", "", "//foo", "", ""); }
515test { try parsePass("file:.//p", null, "file:////p", "", "file:", "", "", "", "", "", "//p", "", ""); }
516test { try parsePass("file:/.//p", null, "file:////p", "", "file:", "", "", "", "", "", "//p", "", ""); }
517test { try parsePass("sc://\xf1", null, "sc://%C3%B1", "null", "sc:", "", "", "%C3%B1", "%C3%B1", "", "", "", ""); }
518test { try parsePass("sc://\xf1?x", null, "sc://%C3%B1?x", "null", "sc:", "", "", "%C3%B1", "%C3%B1", "", "", "?x", ""); }
519test { try parsePass("sc://\xf1#x", null, "sc://%C3%B1#x", "null", "sc:", "", "", "%C3%B1", "%C3%B1", "", "", "", "#x"); }
520test { try parsePass("sc://?", null, "sc://?", "", "sc:", "", "", "", "", "", "", "", ""); }
521test { try parsePass("sc://#", null, "sc://#", "", "sc:", "", "", "", "", "", "", "", ""); }
522test { try parsePass("tftp://foobar.com/someconfig;mode=netascii", null, "tftp://foobar.com/someconfig;mode=netascii", "null", "tftp:", "", "", "foobar.com", "foobar.com", "", "/someconfig;mode=netascii", "", ""); }
523test { try parsePass("telnet://user:pass@foobar.com:23/", null, "telnet://user:pass@foobar.com:23/", "null", "telnet:", "user", "pass", "foobar.com:23", "foobar.com", "23", "/", "", ""); }
524test { try parsePass("ut2004://10.10.10.10:7777/Index.ut2", null, "ut2004://10.10.10.10:7777/Index.ut2", "null", "ut2004:", "", "", "10.10.10.10:7777", "10.10.10.10", "7777", "/Index.ut2", "", ""); }
525test { try parsePass("redis://foo:bar@somehost:6379/0?baz=bam&qux=baz", null, "redis://foo:bar@somehost:6379/0?baz=bam&qux=baz", "null", "redis:", "foo", "bar", "somehost:6379", "somehost", "6379", "/0", "?baz=bam&qux=baz", ""); }
526test { try parsePass("rsync://foo@host:911/sup", null, "rsync://foo@host:911/sup", "null", "rsync:", "foo", "", "host:911", "host", "911", "/sup", "", ""); }
527test { try parsePass("git://github.com/foo/bar.git", null, "git://github.com/foo/bar.git", "null", "git:", "", "", "github.com", "github.com", "", "/foo/bar.git", "", ""); }
528test { try parsePass("irc://myserver.com:6999/channel?passwd", null, "irc://myserver.com:6999/channel?passwd", "null", "irc:", "", "", "myserver.com:6999", "myserver.com", "6999", "/channel", "?passwd", ""); }
529test { try parsePass("dns://fw.example.org:9999/foo.bar.org?type=TXT", null, "dns://fw.example.org:9999/foo.bar.org?type=TXT", "null", "dns:", "", "", "fw.example.org:9999", "fw.example.org", "9999", "/foo.bar.org", "?type=TXT", ""); }
530test { try parsePass("ldap://localhost:389/ou=People,o=JNDITutorial", null, "ldap://localhost:389/ou=People,o=JNDITutorial", "null", "ldap:", "", "", "localhost:389", "localhost", "389", "/ou=People,o=JNDITutorial", "", ""); }
531test { try parsePass("git+https://github.com/foo/bar", null, "git+https://github.com/foo/bar", "null", "git+https:", "", "", "github.com", "github.com", "", "/foo/bar", "", ""); }
532test { try parsePass("urn:ietf:rfc:2648", null, "urn:ietf:rfc:2648", "null", "urn:", "", "", "", "", "", "ietf:rfc:2648", "", ""); }
533test { try parsePass("tag:joe@example.org,2001:foo/bar", null, "tag:joe@example.org,2001:foo/bar", "null", "tag:", "", "", "", "", "", "joe@example.org,2001:foo/bar", "", ""); }
534test { try parsePass("non-spec:/.//", null, "non-spec:/.//", "", "non-spec:", "", "", "", "", "", "//", "", ""); }
535test { try parsePass("non-spec:/..//", null, "non-spec:/.//", "", "non-spec:", "", "", "", "", "", "//", "", ""); }
536test { try parsePass("non-spec:/a/..//", null, "non-spec:/.//", "", "non-spec:", "", "", "", "", "", "//", "", ""); }
537test { try parsePass("non-spec:/.//path", null, "non-spec:/.//path", "", "non-spec:", "", "", "", "", "", "//path", "", ""); }
538test { try parsePass("non-spec:/..//path", null, "non-spec:/.//path", "", "non-spec:", "", "", "", "", "", "//path", "", ""); }
539test { try parsePass("non-spec:/a/..//path", null, "non-spec:/.//path", "", "non-spec:", "", "", "", "", "", "//path", "", ""); }
540test { try parsePass("non-special://%E2%80%A0/", null, "non-special://%E2%80%A0/", "", "non-special:", "", "", "%E2%80%A0", "%E2%80%A0", "", "/", "", ""); }
541test { try parsePass("non-special://H%4fSt/path", null, "non-special://H%4fSt/path", "", "non-special:", "", "", "H%4fSt", "H%4fSt", "", "/path", "", ""); }
542test { try parsePass("non-special://[1:2:0:0:5:0:0:0]/", null, "non-special://[1:2:0:0:5::]/", "", "non-special:", "", "", "[1:2:0:0:5::]", "[1:2:0:0:5::]", "", "/", "", ""); }
543test { try parsePass("non-special://[1:2:0:0:0:0:0:3]/", null, "non-special://[1:2::3]/", "", "non-special:", "", "", "[1:2::3]", "[1:2::3]", "", "/", "", ""); }
544test { try parsePass("non-special://[1:2::3]:80/", null, "non-special://[1:2::3]:80/", "", "non-special:", "", "", "[1:2::3]:80", "[1:2::3]", "80", "/", "", ""); }
545test { try parsePass("blob:https://example.com:443/", null, "blob:https://example.com:443/", "https://example.com", "blob:", "", "", "", "", "", "https://example.com:443/", "", ""); }
546test { try parsePass("blob:http://example.org:88/", null, "blob:http://example.org:88/", "http://example.org:88", "blob:", "", "", "", "", "", "http://example.org:88/", "", ""); }
547test { try parsePass("blob:d3958f5c-0777-0845-9dcf-2cb28783acaf", null, "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf", "null", "blob:", "", "", "", "", "", "d3958f5c-0777-0845-9dcf-2cb28783acaf", "", ""); }
548test { try parsePass("blob:", null, "blob:", "null", "blob:", "", "", "", "", "", "", "", ""); }
549test { try parsePass("blob:blob:", null, "blob:blob:", "null", "blob:", "", "", "", "", "", "blob:", "", ""); }
550test { try parsePass("blob:blob:https://example.org/", null, "blob:blob:https://example.org/", "null", "blob:", "", "", "", "", "", "blob:https://example.org/", "", ""); }
551test { try parsePass("blob:about:blank", null, "blob:about:blank", "null", "blob:", "", "", "", "", "", "about:blank", "", ""); }
552test { try parsePass("blob:file://host/path", null, "blob:file://host/path", "", "blob:", "", "", "", "", "", "file://host/path", "", ""); }
553test { try parsePass("blob:ftp://host/path", null, "blob:ftp://host/path", "null", "blob:", "", "", "", "", "", "ftp://host/path", "", ""); }
554test { try parsePass("blob:ws://example.org/", null, "blob:ws://example.org/", "null", "blob:", "", "", "", "", "", "ws://example.org/", "", ""); }
555test { try parsePass("blob:wss://example.org/", null, "blob:wss://example.org/", "null", "blob:", "", "", "", "", "", "wss://example.org/", "", ""); }
556test { try parsePass("blob:http%3a//example.org/", null, "blob:http%3a//example.org/", "null", "blob:", "", "", "", "", "", "http%3a//example.org/", "", ""); }
557test { try parsePass("http://0x7f.0.0.0x7g", null, "http://0x7f.0.0.0x7g/", "", "http:", "", "", "0x7f.0.0.0x7g", "0x7f.0.0.0x7g", "", "/", "", ""); }
558test { try parsePass("http://0X7F.0.0.0X7G", null, "http://0x7f.0.0.0x7g/", "", "http:", "", "", "0x7f.0.0.0x7g", "0x7f.0.0.0x7g", "", "/", "", ""); }
559test { try parsePass("http://[0:1:0:1:0:1:0:1]", null, "http://[0:1:0:1:0:1:0:1]/", "", "http:", "", "", "[0:1:0:1:0:1:0:1]", "[0:1:0:1:0:1:0:1]", "", "/", "", ""); }
560test { try parsePass("http://[1:0:1:0:1:0:1:0]", null, "http://[1:0:1:0:1:0:1:0]/", "", "http:", "", "", "[1:0:1:0:1:0:1:0]", "[1:0:1:0:1:0:1:0]", "", "/", "", ""); }
561test { try parsePass("http://example.org/test?\"", null, "http://example.org/test?%22", "", "http:", "", "", "example.org", "example.org", "", "/test", "?%22", ""); }
562test { try parsePass("http://example.org/test?#", null, "http://example.org/test?#", "", "http:", "", "", "example.org", "example.org", "", "/test", "", ""); }
563test { try parsePass("http://example.org/test?<", null, "http://example.org/test?%3C", "", "http:", "", "", "example.org", "example.org", "", "/test", "?%3C", ""); }
564test { try parsePass("http://example.org/test?>", null, "http://example.org/test?%3E", "", "http:", "", "", "example.org", "example.org", "", "/test", "?%3E", ""); }
565test { try parsePass("http://example.org/test?\x2323", null, "http://example.org/test?%E2%8C%A3", "", "http:", "", "", "example.org", "example.org", "", "/test", "?%E2%8C%A3", ""); }
566test { try parsePass("http://example.org/test?%23%23", null, "http://example.org/test?%23%23", "", "http:", "", "", "example.org", "example.org", "", "/test", "?%23%23", ""); }
567test { try parsePass("http://example.org/test?%GH", null, "http://example.org/test?%GH", "", "http:", "", "", "example.org", "example.org", "", "/test", "?%GH", ""); }
568test { try parsePass("http://example.org/test?a#%EF", null, "http://example.org/test?a#%EF", "", "http:", "", "", "example.org", "example.org", "", "/test", "?a", "#%EF"); }
569test { try parsePass("http://example.org/test?a#%GH", null, "http://example.org/test?a#%GH", "", "http:", "", "", "example.org", "example.org", "", "/test", "?a", "#%GH"); }
570test { try parsePass("http://example.org/test?a#b\x00c", null, "http://example.org/test?a#b%00c", "", "http:", "", "", "example.org", "example.org", "", "/test", "?a", "#b%00c"); }
571test { try parsePass("non-spec://example.org/test?a#b\x00c", null, "non-spec://example.org/test?a#b%00c", "", "non-spec:", "", "", "example.org", "example.org", "", "/test", "?a", "#b%00c"); }
572test { try parsePass("non-spec:/test?a#b\x00c", null, "non-spec:/test?a#b%00c", "", "non-spec:", "", "", "", "", "", "/test", "?a", "#b%00c"); }
573test { try parsePass("file://a\xadb/p", null, "file://ab/p", "", "file:", "", "", "ab", "ab", "", "/p", "", ""); }
574test { try parsePass("file://a%C2%ADb/p", null, "file://ab/p", "", "file:", "", "", "ab", "ab", "", "/p", "", ""); }
575test { try parsePass("file://loC\xd835\xdc00\xd835\xdc0b\xd835\xdc07\xd835\xdc28\xd835\xdc2c\xd835\xdc2d/usr/bin", null, "file:///usr/bin", "", "file:", "", "", "", "", "", "/usr/bin", "", ""); }
576test { try parsePass("non-special:cannot-be-a-base-url-\x00\x01\x1f\x1e~\x7f\x80", null, "non-special:cannot-be-a-base-url-%00%01%1F%1E~%7F%C2%80", "null", "non-special:", "", "", "", "", "", "cannot-be-a-base-url-%00%01%1F%1E~%7F%C2%80", "", ""); }
577test { try parsePass("non-special:cannot-be-a-base-url-!\"$%&'()*+,-.;<=>@[\\]^_`{|}~@/", null, "non-special:cannot-be-a-base-url-!\"$%&'()*+,-.;<=>@[\\]^_`{|}~@/", "null", "non-special:", "", "", "", "", "", "cannot-be-a-base-url-!\"$%&'()*+,-.;<=>@[\\]^_`{|}~@/", "", ""); }
578test { try parsePass("https://www.example.com/path{\x7fpath.html?query'\x7f=query#fragment<\x7ffragment", null, "https://www.example.com/path%7B%7Fpath.html?query%27%7F=query#fragment%3C%7Ffragment", "https://www.example.com", "https:", "", "", "www.example.com", "www.example.com", "", "/path%7B%7Fpath.html", "?query%27%7F=query", "#fragment%3C%7Ffragment"); }
579test { try parsePass("foo:// !\"$%&'()*+,-.;<=>@[\\]^_`{|}~@host/", null, "foo://%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~@host/", "null", "foo:", "%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~", "", "host", "host", "", "/", "", ""); }
580test { try parsePass("wss:// !\"$%&'()*+,-.;<=>@[]^_`{|}~@host/", null, "wss://%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~@host/", "wss://host", "wss:", "%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~", "", "host", "host", "", "/", "", ""); }
581test { try parsePass("foo://joe: !\"$%&'()*+,-.:;<=>@[\\]^_`{|}~@host/", null, "foo://joe:%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~@host/", "null", "foo:", "joe", "%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~", "host", "host", "", "/", "", ""); }
582test { try parsePass("wss://joe: !\"$%&'()*+,-.:;<=>@[]^_`{|}~@host/", null, "wss://joe:%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~@host/", "wss://host", "wss:", "joe", "%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~", "host", "host", "", "/", "", ""); }
583test { try parsePass("foo://!\"$%&'()*+,-.;=_`{}~/", null, "foo://!\"$%&'()*+,-.;=_`{}~/", "null", "foo:", "", "", "!\"$%&'()*+,-.;=_`{}~", "!\"$%&'()*+,-.;=_`{}~", "", "/", "", ""); }
584test { try parsePass("wss://!\"$&'()*+,-.;=_`{}~/", null, "wss://!\"$&'()*+,-.;=_`{}~/", "wss://!\"$&'()*+,-.;=_`{}~", "wss:", "", "", "!\"$&'()*+,-.;=_`{}~", "!\"$&'()*+,-.;=_`{}~", "", "/", "", ""); }
585test { try parsePass("foo://host/ !\"$%&'()*+,-./:;<=>@[\\]^_`{|}~", null, "foo://host/%20!%22$%&'()*+,-./:;%3C=%3E@[\\]%5E_%60%7B|%7D~", "null", "foo:", "", "", "host", "host", "", "/%20!%22$%&'()*+,-./:;%3C=%3E@[\\]%5E_%60%7B|%7D~", "", ""); }
586test { try parsePass("wss://host/ !\"$%&'()*+,-./:;<=>@[\\]^_`{|}~", null, "wss://host/%20!%22$%&'()*+,-./:;%3C=%3E@[/]%5E_%60%7B|%7D~", "wss://host", "wss:", "", "", "host", "host", "", "/%20!%22$%&'()*+,-./:;%3C=%3E@[/]%5E_%60%7B|%7D~", "", ""); }
587test { try parsePass("foo://host/dir/? !\"$%&'()*+,-./:;<=>?@[\\]^_`{|}~", null, "foo://host/dir/?%20!%22$%&'()*+,-./:;%3C=%3E?@[\\]^_`{|}~", "null", "foo:", "", "", "host", "host", "", "/dir/", "?%20!%22$%&'()*+,-./:;%3C=%3E?@[\\]^_`{|}~", ""); }
588test { try parsePass("wss://host/dir/? !\"$%&'()*+,-./:;<=>?@[\\]^_`{|}~", null, "wss://host/dir/?%20!%22$%&%27()*+,-./:;%3C=%3E?@[\\]^_`{|}~", "wss://host", "wss:", "", "", "host", "host", "", "/dir/", "?%20!%22$%&%27()*+,-./:;%3C=%3E?@[\\]^_`{|}~", ""); }
589test { try parsePass("foo://host/dir/# !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", null, "foo://host/dir/#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~", "null", "foo:", "", "", "host", "host", "", "/dir/", "", "#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~"); }
590test { try parsePass("wss://host/dir/# !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~", null, "wss://host/dir/#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~", "wss://host", "wss:", "", "", "host", "host", "", "/dir/", "", "#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~"); }
591test { try parsePass("http://foo.09..", null, "http://foo.09../", "", "http:", "", "", "foo.09..", "foo.09..", "", "/", "", ""); }
592test { try parsePass("https://x/\x00y", null, "https://x/%00y", "", "https:", "", "", "x", "x", "", "/%00y", "", ""); }
593test { try parsePass("https://x/?\x00y", null, "https://x/?%00y", "", "https:", "", "", "x", "x", "", "/", "?%00y", ""); }
594test { try parsePass("https://x/?#\x00y", null, "https://x/?#%00y", "", "https:", "", "", "x", "x", "", "/", "", "#%00y"); }
595test { try parsePass("https://x/\xffffy", null, "https://x/%EF%BF%BFy", "", "https:", "", "", "x", "x", "", "/%EF%BF%BFy", "", ""); }
596test { try parsePass("https://x/?\xffffy", null, "https://x/?%EF%BF%BFy", "", "https:", "", "", "x", "x", "", "/", "?%EF%BF%BFy", ""); }
597test { try parsePass("https://x/?#\xffffy", null, "https://x/?#%EF%BF%BFy", "", "https:", "", "", "x", "x", "", "/", "", "#%EF%BF%BFy"); }
598test { try parsePass("non-special:\x00y", null, "non-special:%00y", "", "non-special:", "", "", "", "", "", "%00y", "", ""); }
599test { try parsePass("non-special:x/\x00y", null, "non-special:x/%00y", "", "non-special:", "", "", "", "", "", "x/%00y", "", ""); }
600test { try parsePass("non-special:x/?\x00y", null, "non-special:x/?%00y", "", "non-special:", "", "", "", "", "", "x/", "?%00y", ""); }
601test { try parsePass("non-special:x/?#\x00y", null, "non-special:x/?#%00y", "", "non-special:", "", "", "", "", "", "x/", "", "#%00y"); }
602test { try parsePass("non-special:\xffffy", null, "non-special:%EF%BF%BFy", "", "non-special:", "", "", "", "", "", "%EF%BF%BFy", "", ""); }
603test { try parsePass("non-special:x/\xffffy", null, "non-special:x/%EF%BF%BFy", "", "non-special:", "", "", "", "", "", "x/%EF%BF%BFy", "", ""); }
604test { try parsePass("non-special:x/?\xffffy", null, "non-special:x/?%EF%BF%BFy", "", "non-special:", "", "", "", "", "", "x/", "?%EF%BF%BFy", ""); }
605test { try parsePass("non-special:x/?#\xffffy", null, "non-special:x/?#%EF%BF%BFy", "", "non-special:", "", "", "", "", "", "x/", "", "#%EF%BF%BFy"); }
606test { try parsePass("https://example.com/\"quoted\"", null, "https://example.com/%22quoted%22", "https://example.com", "https:", "", "", "example.com", "example.com", "", "/%22quoted%22", "", ""); }
607test { try parsePass("https://a%C2%ADb/", null, "https://ab/", "https://ab", "https:", "", "", "ab", "ab", "", "/", "", ""); }
608test { try parsePass("data://example.com:8080/pathname?search#hash", null, "data://example.com:8080/pathname?search#hash", "null", "data:", "", "", "example.com:8080", "example.com", "8080", "/pathname", "?search", "#hash"); }
609test { try parsePass("data:///test", null, "data:///test", "null", "data:", "", "", "", "", "", "/test", "", ""); }
610test { try parsePass("data://test/a/../b", null, "data://test/b", "null", "data:", "", "", "test", "test", "", "/b", "", ""); }
611test { try parsePass("javascript://example.com:8080/pathname?search#hash", null, "javascript://example.com:8080/pathname?search#hash", "null", "javascript:", "", "", "example.com:8080", "example.com", "8080", "/pathname", "?search", "#hash"); }
612test { try parsePass("javascript:///test", null, "javascript:///test", "null", "javascript:", "", "", "", "", "", "/test", "", ""); }
613test { try parsePass("javascript://test/a/../b", null, "javascript://test/b", "null", "javascript:", "", "", "test", "test", "", "/b", "", ""); }
614test { try parsePass("mailto://example.com:8080/pathname?search#hash", null, "mailto://example.com:8080/pathname?search#hash", "null", "mailto:", "", "", "example.com:8080", "example.com", "8080", "/pathname", "?search", "#hash"); }
615test { try parsePass("mailto:///test", null, "mailto:///test", "null", "mailto:", "", "", "", "", "", "/test", "", ""); }
616test { try parsePass("mailto://test/a/../b", null, "mailto://test/b", "null", "mailto:", "", "", "test", "test", "", "/b", "", ""); }
617test { try parsePass("intent://example.com:8080/pathname?search#hash", null, "intent://example.com:8080/pathname?search#hash", "null", "intent:", "", "", "example.com:8080", "example.com", "8080", "/pathname", "?search", "#hash"); }
618test { try parsePass("intent:///test", null, "intent:///test", "null", "intent:", "", "", "", "", "", "/test", "", ""); }
619test { try parsePass("intent://test/a/../b", null, "intent://test/b", "null", "intent:", "", "", "test", "test", "", "/b", "", ""); }
620test { try parsePass("urn://example.com:8080/pathname?search#hash", null, "urn://example.com:8080/pathname?search#hash", "null", "urn:", "", "", "example.com:8080", "example.com", "8080", "/pathname", "?search", "#hash"); }
621test { try parsePass("urn:///test", null, "urn:///test", "null", "urn:", "", "", "", "", "", "/test", "", ""); }
622test { try parsePass("urn://test/a/../b", null, "urn://test/b", "null", "urn:", "", "", "test", "test", "", "/b", "", ""); }
623test { try parsePass("turn://example.com:8080/pathname?search#hash", null, "turn://example.com:8080/pathname?search#hash", "null", "turn:", "", "", "example.com:8080", "example.com", "8080", "/pathname", "?search", "#hash"); }
624test { try parsePass("turn:///test", null, "turn:///test", "null", "turn:", "", "", "", "", "", "/test", "", ""); }
625test { try parsePass("turn://test/a/../b", null, "turn://test/b", "null", "turn:", "", "", "test", "test", "", "/b", "", ""); }
626test { try parsePass("stun://example.com:8080/pathname?search#hash", null, "stun://example.com:8080/pathname?search#hash", "null", "stun:", "", "", "example.com:8080", "example.com", "8080", "/pathname", "?search", "#hash"); }
627test { try parsePass("stun:///test", null, "stun:///test", "null", "stun:", "", "", "", "", "", "/test", "", ""); }
628test { try parsePass("stun://test/a/../b", null, "stun://test/b", "null", "stun:", "", "", "test", "test", "", "/b", "", ""); }
629test { try parsePass("w://x:0", null, "w://x:0", "null", "w:", "", "", "x:0", "x", "0", "", "", ""); }
630test { try parsePass("west://x:0", null, "west://x:0", "null", "west:", "", "", "x:0", "x", "0", "", "", ""); }
631test { try parsePass("android://x:0/a", null, "android://x:0/a", "null", "android:", "", "", "x:0", "x", "0", "/a", "", ""); }
632test { try parsePass("drivefs://x:0/a", null, "drivefs://x:0/a", "null", "drivefs:", "", "", "x:0", "x", "0", "/a", "", ""); }
633test { try parsePass("chromeos-steam://x:0/a", null, "chromeos-steam://x:0/a", "null", "chromeos-steam:", "", "", "x:0", "x", "0", "/a", "", ""); }
634test { try parsePass("steam://x:0/a", null, "steam://x:0/a", "null", "steam:", "", "", "x:0", "x", "0", "/a", "", ""); }
635test { try parsePass("materialized-view://x:0/a", null, "materialized-view://x:0/a", "null", "materialized-view:", "", "", "x:0", "x", "0", "/a", "", ""); }
636test { try parsePass("android-app://x:0", null, "android-app://x:0", "null", "android-app:", "", "", "x:0", "x", "0", "", "", ""); }
637test { try parsePass("chrome-distiller://x:0", null, "chrome-distiller://x:0", "null", "chrome-distiller:", "", "", "x:0", "x", "0", "", "", ""); }
638test { try parsePass("chrome-extension://x:0", null, "chrome-extension://x:0", "null", "chrome-extension:", "", "", "x:0", "x", "0", "", "", ""); }
639test { try parsePass("chrome-native://x:0", null, "chrome-native://x:0", "null", "chrome-native:", "", "", "x:0", "x", "0", "", "", ""); }
640test { try parsePass("chrome-resource://x:0", null, "chrome-resource://x:0", "null", "chrome-resource:", "", "", "x:0", "x", "0", "", "", ""); }
641test { try parsePass("chrome-search://x:0", null, "chrome-search://x:0", "null", "chrome-search:", "", "", "x:0", "x", "0", "", "", ""); }
642test { try parsePass("fuchsia-dir://x:0", null, "fuchsia-dir://x:0", "null", "fuchsia-dir:", "", "", "x:0", "x", "0", "", "", ""); }
643test { try parsePass("isolated-app://x:0", null, "isolated-app://x:0", "null", "isolated-app:", "", "", "x:0", "x", "0", "", "", ""); }
644test { try parsePass("non-special:\\\\opaque", null, "non-special:\\\\opaque", "null", "non-special:", "", "", "", "", "", "\\\\opaque", "", ""); }
645test { try parsePass("non-special:\\\\opaque/path", null, "non-special:\\\\opaque/path", "null", "non-special:", "", "", "", "", "", "\\\\opaque/path", "", ""); }
646test { try parsePass("non-special:\\\\opaque\\path", null, "non-special:\\\\opaque\\path", "null", "non-special:", "", "", "", "", "", "\\\\opaque\\path", "", ""); }
647test { try parsePass("non-special:\\/opaque", null, "non-special:\\/opaque", "null", "non-special:", "", "", "", "", "", "\\/opaque", "", ""); }
648test { try parsePass("non-special:/\\path", null, "non-special:/\\path", "null", "non-special:", "", "", "", "", "", "/\\path", "", ""); }
649test { try parsePass("non-special://host/a\\b", null, "non-special://host/a\\b", "null", "non-special:", "", "", "host", "host", "", "/a\\b", "", ""); }
650
651test { try parsePass("http://example\t.\norg", "http://example.org/foo/bar", "http://example.org/", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/", "", ""); }
652test { try parsePass("http://user:pass@foo:21/bar;par?b#c", "http://example.org/foo/bar", "http://user:pass@foo:21/bar;par?b#c", "http://foo:21", "http:", "user", "pass", "foo:21", "foo", "21", "/bar;par", "?b", "#c"); }
653test { try parsePass("http:foo.com", "http://example.org/foo/bar", "http://example.org/foo/foo.com", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/foo.com", "", ""); }
654test { try parsePass("\t :foo.com \n", "http://example.org/foo/bar", "http://example.org/foo/:foo.com", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/:foo.com", "", ""); }
655test { try parsePass(" foo.com ", "http://example.org/foo/bar", "http://example.org/foo/foo.com", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/foo.com", "", ""); }
656test { try parsePass("a:\t foo.com", "http://example.org/foo/bar", "a: foo.com", "null", "a:", "", "", "", "", "", " foo.com", "", ""); }
657test { try parsePass("http://f:21/ b ? d # e ", "http://example.org/foo/bar", "http://f:21/%20b%20?%20d%20#%20e", "http://f:21", "http:", "", "", "f:21", "f", "21", "/%20b%20", "?%20d%20", "#%20e"); }
658test { try parsePass("http://f:/c", "http://example.org/foo/bar", "http://f/c", "http://f", "http:", "", "", "f", "f", "", "/c", "", ""); }
659test { try parsePass("http://f:0/c", "http://example.org/foo/bar", "http://f:0/c", "http://f:0", "http:", "", "", "f:0", "f", "0", "/c", "", ""); }
660test { try parsePass("http://f:00000000000000/c", "http://example.org/foo/bar", "http://f:0/c", "http://f:0", "http:", "", "", "f:0", "f", "0", "/c", "", ""); }
661test { try parsePass("http://f:00000000000000000000080/c", "http://example.org/foo/bar", "http://f/c", "http://f", "http:", "", "", "f", "f", "", "/c", "", ""); }
662test { try parsePass("http://f:\n/c", "http://example.org/foo/bar", "http://f/c", "http://f", "http:", "", "", "f", "f", "", "/c", "", ""); }
663test { try parsePass("", "http://example.org/foo/bar", "http://example.org/foo/bar", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "", ""); }
664test { try parsePass(" \t", "http://example.org/foo/bar", "http://example.org/foo/bar", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "", ""); }
665test { try parsePass(":foo.com/", "http://example.org/foo/bar", "http://example.org/foo/:foo.com/", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/:foo.com/", "", ""); }
666test { try parsePass(":foo.com\\", "http://example.org/foo/bar", "http://example.org/foo/:foo.com/", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/:foo.com/", "", ""); }
667test { try parsePass(":", "http://example.org/foo/bar", "http://example.org/foo/:", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/:", "", ""); }
668test { try parsePass(":a", "http://example.org/foo/bar", "http://example.org/foo/:a", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/:a", "", ""); }
669test { try parsePass(":/", "http://example.org/foo/bar", "http://example.org/foo/:/", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/:/", "", ""); }
670test { try parsePass(":\\", "http://example.org/foo/bar", "http://example.org/foo/:/", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/:/", "", ""); }
671test { try parsePass(":#", "http://example.org/foo/bar", "http://example.org/foo/:#", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/:", "", ""); }
672test { try parsePass("#", "http://example.org/foo/bar", "http://example.org/foo/bar#", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "", ""); }
673test { try parsePass("#/", "http://example.org/foo/bar", "http://example.org/foo/bar#/", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "", "#/"); }
674test { try parsePass("#\\", "http://example.org/foo/bar", "http://example.org/foo/bar#\\", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "", "#\\"); }
675test { try parsePass("#;?", "http://example.org/foo/bar", "http://example.org/foo/bar#;?", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "", "#;?"); }
676test { try parsePass("?", "http://example.org/foo/bar", "http://example.org/foo/bar?", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "", ""); }
677test { try parsePass("/", "http://example.org/foo/bar", "http://example.org/", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/", "", ""); }
678test { try parsePass(":23", "http://example.org/foo/bar", "http://example.org/foo/:23", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/:23", "", ""); }
679test { try parsePass("/:23", "http://example.org/foo/bar", "http://example.org/:23", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/:23", "", ""); }
680test { try parsePass("\\x", "http://example.org/foo/bar", "http://example.org/x", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/x", "", ""); }
681test { try parsePass("\\\\x\\hello", "http://example.org/foo/bar", "http://x/hello", "http://x", "http:", "", "", "x", "x", "", "/hello", "", ""); }
682test { try parsePass("::", "http://example.org/foo/bar", "http://example.org/foo/::", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/::", "", ""); }
683test { try parsePass("::23", "http://example.org/foo/bar", "http://example.org/foo/::23", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/::23", "", ""); }
684test { try parsePass("foo://", "http://example.org/foo/bar", "foo://", "null", "foo:", "", "", "", "", "", "", "", ""); }
685test { try parsePass("http://a:b@c:29/d", "http://example.org/foo/bar", "http://a:b@c:29/d", "http://c:29", "http:", "a", "b", "c:29", "c", "29", "/d", "", ""); }
686test { try parsePass("http::@c:29", "http://example.org/foo/bar", "http://example.org/foo/:@c:29", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/:@c:29", "", ""); }
687test { try parsePass("http://&a:foo(b]c@d:2/", "http://example.org/foo/bar", "http://&a:foo(b%5Dc@d:2/", "http://d:2", "http:", "&a", "foo(b%5Dc", "d:2", "d", "2", "/", "", ""); }
688test { try parsePass("http://::@c@d:2", "http://example.org/foo/bar", "http://:%3A%40c@d:2/", "http://d:2", "http:", "", "%3A%40c", "d:2", "d", "2", "/", "", ""); }
689test { try parsePass("http://foo.com:b@d/", "http://example.org/foo/bar", "http://foo.com:b@d/", "http://d", "http:", "foo.com", "b", "d", "d", "", "/", "", ""); }
690test { try parsePass("http://foo.com/\\@", "http://example.org/foo/bar", "http://foo.com//@", "http://foo.com", "http:", "", "", "foo.com", "foo.com", "", "//@", "", ""); }
691test { try parsePass("http:\\\\foo.com\\", "http://example.org/foo/bar", "http://foo.com/", "http://foo.com", "http:", "", "", "foo.com", "foo.com", "", "/", "", ""); }
692test { try parsePass("http:\\\\a\\b:c\\d@foo.com\\", "http://example.org/foo/bar", "http://a/b:c/d@foo.com/", "http://a", "http:", "", "", "a", "a", "", "/b:c/d@foo.com/", "", ""); }
693test { try parsePass("foo:/", "http://example.org/foo/bar", "foo:/", "null", "foo:", "", "", "", "", "", "/", "", ""); }
694test { try parsePass("foo:/bar.com/", "http://example.org/foo/bar", "foo:/bar.com/", "null", "foo:", "", "", "", "", "", "/bar.com/", "", ""); }
695test { try parsePass("foo://///////", "http://example.org/foo/bar", "foo://///////", "null", "foo:", "", "", "", "", "", "///////", "", ""); }
696test { try parsePass("foo://///////bar.com/", "http://example.org/foo/bar", "foo://///////bar.com/", "null", "foo:", "", "", "", "", "", "///////bar.com/", "", ""); }
697test { try parsePass("foo:////://///", "http://example.org/foo/bar", "foo:////://///", "null", "foo:", "", "", "", "", "", "//://///", "", ""); }
698test { try parsePass("c:/foo", "http://example.org/foo/bar", "c:/foo", "null", "c:", "", "", "", "", "", "/foo", "", ""); }
699test { try parsePass("//foo/bar", "http://example.org/foo/bar", "http://foo/bar", "http://foo", "http:", "", "", "foo", "foo", "", "/bar", "", ""); }
700test { try parsePass("http://foo/path;a??e#f#g", "http://example.org/foo/bar", "http://foo/path;a??e#f#g", "http://foo", "http:", "", "", "foo", "foo", "", "/path;a", "??e", "#f#g"); }
701test { try parsePass("http://foo/abcd?efgh?ijkl", "http://example.org/foo/bar", "http://foo/abcd?efgh?ijkl", "http://foo", "http:", "", "", "foo", "foo", "", "/abcd", "?efgh?ijkl", ""); }
702test { try parsePass("http://foo/abcd#foo?bar", "http://example.org/foo/bar", "http://foo/abcd#foo?bar", "http://foo", "http:", "", "", "foo", "foo", "", "/abcd", "", "#foo?bar"); }
703test { try parsePass("[61:24:74]:98", "http://example.org/foo/bar", "http://example.org/foo/[61:24:74]:98", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/[61:24:74]:98", "", ""); }
704test { try parsePass("http:[61:27]/:foo", "http://example.org/foo/bar", "http://example.org/foo/[61:27]/:foo", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/[61:27]/:foo", "", ""); }
705test { try parsePass("http://[2001::1]", "http://example.org/foo/bar", "http://[2001::1]/", "http://[2001::1]", "http:", "", "", "[2001::1]", "[2001::1]", "", "/", "", ""); }
706test { try parsePass("http://[::127.0.0.1]", "http://example.org/foo/bar", "http://[::7f00:1]/", "http://[::7f00:1]", "http:", "", "", "[::7f00:1]", "[::7f00:1]", "", "/", "", ""); }
707test { try parsePass("http://[0:0:0:0:0:0:13.1.68.3]", "http://example.org/foo/bar", "http://[::d01:4403]/", "http://[::d01:4403]", "http:", "", "", "[::d01:4403]", "[::d01:4403]", "", "/", "", ""); }
708test { try parsePass("http://[2001::1]:80", "http://example.org/foo/bar", "http://[2001::1]/", "http://[2001::1]", "http:", "", "", "[2001::1]", "[2001::1]", "", "/", "", ""); }
709test { try parsePass("http:/example.com/", "http://example.org/foo/bar", "http://example.org/example.com/", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/example.com/", "", ""); }
710test { try parsePass("ftp:/example.com/", "http://example.org/foo/bar", "ftp://example.com/", "ftp://example.com", "ftp:", "", "", "example.com", "example.com", "", "/", "", ""); }
711test { try parsePass("https:/example.com/", "http://example.org/foo/bar", "https://example.com/", "https://example.com", "https:", "", "", "example.com", "example.com", "", "/", "", ""); }
712test { try parsePass("madeupscheme:/example.com/", "http://example.org/foo/bar", "madeupscheme:/example.com/", "null", "madeupscheme:", "", "", "", "", "", "/example.com/", "", ""); }
713test { try parsePass("file:/example.com/", "http://example.org/foo/bar", "file:///example.com/", "", "file:", "", "", "", "", "", "/example.com/", "", ""); }
714test { try parsePass("ftps:/example.com/", "http://example.org/foo/bar", "ftps:/example.com/", "null", "ftps:", "", "", "", "", "", "/example.com/", "", ""); }
715test { try parsePass("gopher:/example.com/", "http://example.org/foo/bar", "gopher:/example.com/", "null", "gopher:", "", "", "", "", "", "/example.com/", "", ""); }
716test { try parsePass("ws:/example.com/", "http://example.org/foo/bar", "ws://example.com/", "ws://example.com", "ws:", "", "", "example.com", "example.com", "", "/", "", ""); }
717test { try parsePass("wss:/example.com/", "http://example.org/foo/bar", "wss://example.com/", "wss://example.com", "wss:", "", "", "example.com", "example.com", "", "/", "", ""); }
718test { try parsePass("data:/example.com/", "http://example.org/foo/bar", "data:/example.com/", "null", "data:", "", "", "", "", "", "/example.com/", "", ""); }
719test { try parsePass("javascript:/example.com/", "http://example.org/foo/bar", "javascript:/example.com/", "null", "javascript:", "", "", "", "", "", "/example.com/", "", ""); }
720test { try parsePass("mailto:/example.com/", "http://example.org/foo/bar", "mailto:/example.com/", "null", "mailto:", "", "", "", "", "", "/example.com/", "", ""); }
721test { try parsePass("http:example.com/", "http://example.org/foo/bar", "http://example.org/foo/example.com/", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/example.com/", "", ""); }
722test { try parsePass("ftp:example.com/", "http://example.org/foo/bar", "ftp://example.com/", "ftp://example.com", "ftp:", "", "", "example.com", "example.com", "", "/", "", ""); }
723test { try parsePass("https:example.com/", "http://example.org/foo/bar", "https://example.com/", "https://example.com", "https:", "", "", "example.com", "example.com", "", "/", "", ""); }
724test { try parsePass("madeupscheme:example.com/", "http://example.org/foo/bar", "madeupscheme:example.com/", "null", "madeupscheme:", "", "", "", "", "", "example.com/", "", ""); }
725test { try parsePass("ftps:example.com/", "http://example.org/foo/bar", "ftps:example.com/", "null", "ftps:", "", "", "", "", "", "example.com/", "", ""); }
726test { try parsePass("gopher:example.com/", "http://example.org/foo/bar", "gopher:example.com/", "null", "gopher:", "", "", "", "", "", "example.com/", "", ""); }
727test { try parsePass("ws:example.com/", "http://example.org/foo/bar", "ws://example.com/", "ws://example.com", "ws:", "", "", "example.com", "example.com", "", "/", "", ""); }
728test { try parsePass("wss:example.com/", "http://example.org/foo/bar", "wss://example.com/", "wss://example.com", "wss:", "", "", "example.com", "example.com", "", "/", "", ""); }
729test { try parsePass("data:example.com/", "http://example.org/foo/bar", "data:example.com/", "null", "data:", "", "", "", "", "", "example.com/", "", ""); }
730test { try parsePass("javascript:example.com/", "http://example.org/foo/bar", "javascript:example.com/", "null", "javascript:", "", "", "", "", "", "example.com/", "", ""); }
731test { try parsePass("mailto:example.com/", "http://example.org/foo/bar", "mailto:example.com/", "null", "mailto:", "", "", "", "", "", "example.com/", "", ""); }
732test { try parsePass("/a/b/c", "http://example.org/foo/bar", "http://example.org/a/b/c", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/a/b/c", "", ""); }
733test { try parsePass("/a/ /c", "http://example.org/foo/bar", "http://example.org/a/%20/c", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/a/%20/c", "", ""); }
734test { try parsePass("/a%2fc", "http://example.org/foo/bar", "http://example.org/a%2fc", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/a%2fc", "", ""); }
735test { try parsePass("/a/%2f/c", "http://example.org/foo/bar", "http://example.org/a/%2f/c", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/a/%2f/c", "", ""); }
736test { try parsePass("#\x3b2", "http://example.org/foo/bar", "http://example.org/foo/bar#%CE%B2", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "", "#%CE%B2"); }
737test { try parsePass("data:text/html,test#test", "http://example.org/foo/bar", "data:text/html,test#test", "null", "data:", "", "", "", "", "", "text/html,test", "", "#test"); }
738test { try parsePass("tel:1234567890", "http://example.org/foo/bar", "tel:1234567890", "null", "tel:", "", "", "", "", "", "1234567890", "", ""); }
739test { try parsePass("ssh://example.com/foo/bar.git", "http://example.org/", "ssh://example.com/foo/bar.git", "null", "ssh:", "", "", "example.com", "example.com", "", "/foo/bar.git", "", ""); }
740test { try parsePass("file:c:\\foo\\bar.html", "file:///tmp/mock/path", "file:///c:/foo/bar.html", "", "file:", "", "", "", "", "", "/c:/foo/bar.html", "", ""); }
741test { try parsePass(" File:c|////foo\\bar.html", "file:///tmp/mock/path", "file:///c:////foo/bar.html", "", "file:", "", "", "", "", "", "/c:////foo/bar.html", "", ""); }
742test { try parsePass("C|/foo/bar", "file:///tmp/mock/path", "file:///C:/foo/bar", "", "file:", "", "", "", "", "", "/C:/foo/bar", "", ""); }
743test { try parsePass("/C|\\foo\\bar", "file:///tmp/mock/path", "file:///C:/foo/bar", "", "file:", "", "", "", "", "", "/C:/foo/bar", "", ""); }
744test { try parsePass("//C|/foo/bar", "file:///tmp/mock/path", "file:///C:/foo/bar", "", "file:", "", "", "", "", "", "/C:/foo/bar", "", ""); }
745test { try parsePass("//server/file", "file:///tmp/mock/path", "file://server/file", "", "file:", "", "", "server", "server", "", "/file", "", ""); }
746test { try parsePass("\\\\server\\file", "file:///tmp/mock/path", "file://server/file", "", "file:", "", "", "server", "server", "", "/file", "", ""); }
747test { try parsePass("/\\server/file", "file:///tmp/mock/path", "file://server/file", "", "file:", "", "", "server", "server", "", "/file", "", ""); }
748test { try parsePass("file:///foo/bar.txt", "file:///tmp/mock/path", "file:///foo/bar.txt", "", "file:", "", "", "", "", "", "/foo/bar.txt", "", ""); }
749test { try parsePass("file:///home/me", "file:///tmp/mock/path", "file:///home/me", "", "file:", "", "", "", "", "", "/home/me", "", ""); }
750test { try parsePass("//", "file:///tmp/mock/path", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
751test { try parsePass("///", "file:///tmp/mock/path", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
752test { try parsePass("///test", "file:///tmp/mock/path", "file:///test", "", "file:", "", "", "", "", "", "/test", "", ""); }
753test { try parsePass("file://test", "file:///tmp/mock/path", "file://test/", "", "file:", "", "", "test", "test", "", "/", "", ""); }
754test { try parsePass("file://localhost", "file:///tmp/mock/path", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
755test { try parsePass("file://localhost/", "file:///tmp/mock/path", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
756test { try parsePass("file://localhost/test", "file:///tmp/mock/path", "file:///test", "", "file:", "", "", "", "", "", "/test", "", ""); }
757test { try parsePass("test", "file:///tmp/mock/path", "file:///tmp/mock/test", "", "file:", "", "", "", "", "", "/tmp/mock/test", "", ""); }
758test { try parsePass("file:test", "file:///tmp/mock/path", "file:///tmp/mock/test", "", "file:", "", "", "", "", "", "/tmp/mock/test", "", ""); }
759test { try parsePass("/", "http://www.example.com/test", "http://www.example.com/", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/", "", ""); }
760test { try parsePass("/test.txt", "http://www.example.com/test", "http://www.example.com/test.txt", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/test.txt", "", ""); }
761test { try parsePass(".", "http://www.example.com/test", "http://www.example.com/", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/", "", ""); }
762test { try parsePass("..", "http://www.example.com/test", "http://www.example.com/", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/", "", ""); }
763test { try parsePass("test.txt", "http://www.example.com/test", "http://www.example.com/test.txt", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/test.txt", "", ""); }
764test { try parsePass("./test.txt", "http://www.example.com/test", "http://www.example.com/test.txt", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/test.txt", "", ""); }
765test { try parsePass("../test.txt", "http://www.example.com/test", "http://www.example.com/test.txt", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/test.txt", "", ""); }
766test { try parsePass("../aaa/test.txt", "http://www.example.com/test", "http://www.example.com/aaa/test.txt", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/aaa/test.txt", "", ""); }
767test { try parsePass("../../test.txt", "http://www.example.com/test", "http://www.example.com/test.txt", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/test.txt", "", ""); }
768test { try parsePass("\x4e2d/test.txt", "http://www.example.com/test", "http://www.example.com/%E4%B8%AD/test.txt", "http://www.example.com", "http:", "", "", "www.example.com", "www.example.com", "", "/%E4%B8%AD/test.txt", "", ""); }
769test { try parsePass("http://www.example2.com", "http://www.example.com/test", "http://www.example2.com/", "http://www.example2.com", "http:", "", "", "www.example2.com", "www.example2.com", "", "/", "", ""); }
770test { try parsePass("//www.example2.com", "http://www.example.com/test", "http://www.example2.com/", "http://www.example2.com", "http:", "", "", "www.example2.com", "www.example2.com", "", "/", "", ""); }
771test { try parsePass("file:...", "http://www.example.com/test", "file:///...", "", "file:", "", "", "", "", "", "/...", "", ""); }
772test { try parsePass("file:..", "http://www.example.com/test", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
773test { try parsePass("file:a", "http://www.example.com/test", "file:///a", "", "file:", "", "", "", "", "", "/a", "", ""); }
774test { try parsePass("file:.", "http://www.example.com/test", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
775test { try parsePass("http://ExAmPlE.CoM", "http://other.com/", "http://example.com/", "http://example.com", "http:", "", "", "example.com", "example.com", "", "/", "", ""); }
776test { try parsePass("http://GOO\x200b\x2060\xfeffgoo.com", "http://other.com/", "http://googoo.com/", "http://googoo.com", "http:", "", "", "googoo.com", "googoo.com", "", "/", "", ""); }
777test { try parsePass("http://www.foo\x3002bar.com", "http://other.com/", "http://www.foo.bar.com/", "http://www.foo.bar.com", "http:", "", "", "www.foo.bar.com", "www.foo.bar.com", "", "/", "", ""); }
778test { try parsePass("http://\xff27\xff4f.com", "http://other.com/", "http://go.com/", "http://go.com", "http:", "", "", "go.com", "go.com", "", "/", "", ""); }
779test { try parsePass("http://\x4f60\x597d\x4f60\x597d", "http://other.com/", "http://xn--6qqa088eba/", "http://xn--6qqa088eba", "http:", "", "", "xn--6qqa088eba", "xn--6qqa088eba", "", "/", "", ""); }
780test { try parsePass("http://%30%78%63%30%2e%30%32%35%30.01", "http://other.com/", "http://192.168.0.1/", "http://192.168.0.1", "http:", "", "", "192.168.0.1", "192.168.0.1", "", "/", "", ""); }
781test { try parsePass("http://%30%78%63%30%2e%30%32%35%30.01%2e", "http://other.com/", "http://192.168.0.1/", "http://192.168.0.1", "http:", "", "", "192.168.0.1", "192.168.0.1", "", "/", "", ""); }
782test { try parsePass("http://\xff10\xff38\xff43\xff10\xff0e\xff10\xff12\xff15\xff10\xff0e\xff10\xff11", "http://other.com/", "http://192.168.0.1/", "http://192.168.0.1", "http:", "", "", "192.168.0.1", "192.168.0.1", "", "/", "", ""); }
783test { try parsePass("http://foo:\xd83d\xdca9@example.com/bar", "http://other.com/", "http://foo:%F0%9F%92%A9@example.com/bar", "http://example.com", "http:", "foo", "%F0%9F%92%A9", "example.com", "example.com", "", "/bar", "", ""); }
784test { try parsePass("#", "test:test", "test:test#", "null", "test:", "", "", "", "", "", "test", "", ""); }
785test { try parsePass("#x", "mailto:x@x.com", "mailto:x@x.com#x", "null", "mailto:", "", "", "", "", "", "x@x.com", "", "#x"); }
786test { try parsePass("#x", "data:,", "data:,#x", "null", "data:", "", "", "", "", "", ",", "", "#x"); }
787test { try parsePass("#x", "about:blank", "about:blank#x", "null", "about:", "", "", "", "", "", "blank", "", "#x"); }
788test { try parsePass("#x:y", "about:blank", "about:blank#x:y", "null", "about:", "", "", "", "", "", "blank", "", "#x:y"); }
789test { try parsePass("#", "test:test?test", "test:test?test#", "null", "test:", "", "", "", "", "", "test", "?test", ""); }
790test { try parsePass("https://@test@test@example:800/", "http://doesnotmatter/", "https://%40test%40test@example:800/", "https://example:800", "https:", "%40test%40test", "", "example:800", "example", "800", "/", "", ""); }
791test { try parsePass("https://@@@example", "http://doesnotmatter/", "https://%40%40@example/", "https://example", "https:", "%40%40", "", "example", "example", "", "/", "", ""); }
792test { try parsePass("http://`{}:`{}@h/`{}?`{}", "http://doesnotmatter/", "http://%60%7B%7D:%60%7B%7D@h/%60%7B%7D?`{}", "http://h", "http:", "%60%7B%7D", "%60%7B%7D", "h", "h", "", "/%60%7B%7D", "?`{}", ""); }
793test { try parsePass("/some/path", "http://user@example.org/smth", "http://user@example.org/some/path", "http://example.org", "http:", "user", "", "example.org", "example.org", "", "/some/path", "", ""); }
794test { try parsePass("", "http://user:pass@example.org:21/smth", "http://user:pass@example.org:21/smth", "http://example.org:21", "http:", "user", "pass", "example.org:21", "example.org", "21", "/smth", "", ""); }
795test { try parsePass("/some/path", "http://user:pass@example.org:21/smth", "http://user:pass@example.org:21/some/path", "http://example.org:21", "http:", "user", "pass", "example.org:21", "example.org", "21", "/some/path", "", ""); }
796test { try parsePass("i", "sc:/pa/pa", "sc:/pa/i", "null", "sc:", "", "", "", "", "", "/pa/i", "", ""); }
797test { try parsePass("i", "sc://ho/pa", "sc://ho/i", "null", "sc:", "", "", "ho", "ho", "", "/i", "", ""); }
798test { try parsePass("i", "sc:///pa/pa", "sc:///pa/i", "null", "sc:", "", "", "", "", "", "/pa/i", "", ""); }
799test { try parsePass("../i", "sc:/pa/pa", "sc:/i", "null", "sc:", "", "", "", "", "", "/i", "", ""); }
800test { try parsePass("../i", "sc://ho/pa", "sc://ho/i", "null", "sc:", "", "", "ho", "ho", "", "/i", "", ""); }
801test { try parsePass("../i", "sc:///pa/pa", "sc:///i", "null", "sc:", "", "", "", "", "", "/i", "", ""); }
802test { try parsePass("/i", "sc:/pa/pa", "sc:/i", "null", "sc:", "", "", "", "", "", "/i", "", ""); }
803test { try parsePass("/i", "sc://ho/pa", "sc://ho/i", "null", "sc:", "", "", "ho", "ho", "", "/i", "", ""); }
804test { try parsePass("/i", "sc:///pa/pa", "sc:///i", "null", "sc:", "", "", "", "", "", "/i", "", ""); }
805test { try parsePass("?i", "sc:/pa/pa", "sc:/pa/pa?i", "null", "sc:", "", "", "", "", "", "/pa/pa", "?i", ""); }
806test { try parsePass("?i", "sc://ho/pa", "sc://ho/pa?i", "null", "sc:", "", "", "ho", "ho", "", "/pa", "?i", ""); }
807test { try parsePass("?i", "sc:///pa/pa", "sc:///pa/pa?i", "null", "sc:", "", "", "", "", "", "/pa/pa", "?i", ""); }
808test { try parsePass("#i", "sc:sd", "sc:sd#i", "null", "sc:", "", "", "", "", "", "sd", "", "#i"); }
809test { try parsePass("#i", "sc:sd/sd", "sc:sd/sd#i", "null", "sc:", "", "", "", "", "", "sd/sd", "", "#i"); }
810test { try parsePass("#i", "sc:/pa/pa", "sc:/pa/pa#i", "null", "sc:", "", "", "", "", "", "/pa/pa", "", "#i"); }
811test { try parsePass("#i", "sc://ho/pa", "sc://ho/pa#i", "null", "sc:", "", "", "ho", "ho", "", "/pa", "", "#i"); }
812test { try parsePass("#i", "sc:///pa/pa", "sc:///pa/pa#i", "null", "sc:", "", "", "", "", "", "/pa/pa", "", "#i"); }
813test { try parsePass("x", "sc://\xf1", "sc://%C3%B1/x", "null", "sc:", "", "", "%C3%B1", "%C3%B1", "", "/x", "", ""); }
814test { try parsePass("?a=b&c=d", "http://example.org/foo/bar", "http://example.org/foo/bar?a=b&c=d", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "?a=b&c=d", ""); }
815test { try parsePass("??a=b&c=d", "http://example.org/foo/bar", "http://example.org/foo/bar??a=b&c=d", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "??a=b&c=d", ""); }
816test { try parsePass("http:", "http://example.org/foo/bar", "http://example.org/foo/bar", "http://example.org", "http:", "", "", "example.org", "example.org", "", "/foo/bar", "", ""); }
817test { try parsePass("sc:", "https://example.org/foo/bar", "sc:", "null", "sc:", "", "", "", "", "", "", "", ""); }
818test { try parsePass("http://1.2.3.4/", "http://other.com/", "http://1.2.3.4/", "http://1.2.3.4", "http:", "", "", "1.2.3.4", "1.2.3.4", "", "/", "", ""); }
819test { try parsePass("http://1.2.3.4./", "http://other.com/", "http://1.2.3.4/", "http://1.2.3.4", "http:", "", "", "1.2.3.4", "1.2.3.4", "", "/", "", ""); }
820test { try parsePass("http://192.168.257", "http://other.com/", "http://192.168.1.1/", "http://192.168.1.1", "http:", "", "", "192.168.1.1", "192.168.1.1", "", "/", "", ""); }
821test { try parsePass("http://192.168.257.", "http://other.com/", "http://192.168.1.1/", "http://192.168.1.1", "http:", "", "", "192.168.1.1", "192.168.1.1", "", "/", "", ""); }
822test { try parsePass("http://192.168.257.com", "http://other.com/", "http://192.168.257.com/", "http://192.168.257.com", "http:", "", "", "192.168.257.com", "192.168.257.com", "", "/", "", ""); }
823test { try parsePass("http://256", "http://other.com/", "http://0.0.1.0/", "http://0.0.1.0", "http:", "", "", "0.0.1.0", "0.0.1.0", "", "/", "", ""); }
824test { try parsePass("http://256.com", "http://other.com/", "http://256.com/", "http://256.com", "http:", "", "", "256.com", "256.com", "", "/", "", ""); }
825test { try parsePass("http://999999999", "http://other.com/", "http://59.154.201.255/", "http://59.154.201.255", "http:", "", "", "59.154.201.255", "59.154.201.255", "", "/", "", ""); }
826test { try parsePass("http://999999999.", "http://other.com/", "http://59.154.201.255/", "http://59.154.201.255", "http:", "", "", "59.154.201.255", "59.154.201.255", "", "/", "", ""); }
827test { try parsePass("http://999999999.com", "http://other.com/", "http://999999999.com/", "http://999999999.com", "http:", "", "", "999999999.com", "999999999.com", "", "/", "", ""); }
828test { try parsePass("http://10000000000.com", "http://other.com/", "http://10000000000.com/", "http://10000000000.com", "http:", "", "", "10000000000.com", "10000000000.com", "", "/", "", ""); }
829test { try parsePass("http://4294967295", "http://other.com/", "http://255.255.255.255/", "http://255.255.255.255", "http:", "", "", "255.255.255.255", "255.255.255.255", "", "/", "", ""); }
830test { try parsePass("http://0xffffffff", "http://other.com/", "http://255.255.255.255/", "http://255.255.255.255", "http:", "", "", "255.255.255.255", "255.255.255.255", "", "/", "", ""); }
831test { try parsePass("pix/submit.gif", "file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html", "file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif", "", "file:", "", "", "", "", "", "/C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif", "", ""); }
832test { try parsePass("..", "file:///C:/", "file:///C:/", "", "file:", "", "", "", "", "", "/C:/", "", ""); }
833test { try parsePass("..", "file:///", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
834test { try parsePass("/", "file:///C:/a/b", "file:///C:/", "", "file:", "", "", "", "", "", "/C:/", "", ""); }
835test { try parsePass("/", "file://h/C:/a/b", "file://h/C:/", "", "file:", "", "", "h", "h", "", "/C:/", "", ""); }
836test { try parsePass("/", "file://h/a/b", "file://h/", "", "file:", "", "", "h", "h", "", "/", "", ""); }
837test { try parsePass("//d:", "file:///C:/a/b", "file:///d:", "", "file:", "", "", "", "", "", "/d:", "", ""); }
838test { try parsePass("//d:/..", "file:///C:/a/b", "file:///d:/", "", "file:", "", "", "", "", "", "/d:/", "", ""); }
839test { try parsePass("..", "file:///ab:/", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
840test { try parsePass("..", "file:///1:/", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
841test { try parsePass("", "file:///test?test#test", "file:///test?test", "", "file:", "", "", "", "", "", "/test", "?test", ""); }
842test { try parsePass("file:", "file:///test?test#test", "file:///test?test", "", "file:", "", "", "", "", "", "/test", "?test", ""); }
843test { try parsePass("?x", "file:///test?test#test", "file:///test?x", "", "file:", "", "", "", "", "", "/test", "?x", ""); }
844test { try parsePass("file:?x", "file:///test?test#test", "file:///test?x", "", "file:", "", "", "", "", "", "/test", "?x", ""); }
845test { try parsePass("#x", "file:///test?test#test", "file:///test?test#x", "", "file:", "", "", "", "", "", "/test", "?test", "#x"); }
846test { try parsePass("file:#x", "file:///test?test#test", "file:///test?test#x", "", "file:", "", "", "", "", "", "/test", "?test", "#x"); }
847test { try parsePass("/////mouse", "file:///elephant", "file://///mouse", "", "file:", "", "", "", "", "", "///mouse", "", ""); }
848test { try parsePass("\\//pig", "file://lion/", "file:///pig", "", "file:", "", "", "", "", "", "/pig", "", ""); }
849test { try parsePass("\\/localhost//pig", "file://lion/", "file:////pig", "", "file:", "", "", "", "", "", "//pig", "", ""); }
850test { try parsePass("//localhost//pig", "file://lion/", "file:////pig", "", "file:", "", "", "", "", "", "//pig", "", ""); }
851test { try parsePass("/..//localhost//pig", "file://lion/", "file://lion//localhost//pig", "", "file:", "", "", "lion", "lion", "", "//localhost//pig", "", ""); }
852test { try parsePass("file://", "file://ape/", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
853test { try parsePass("/rooibos", "file://tea/", "file://tea/rooibos", "", "file:", "", "", "tea", "tea", "", "/rooibos", "", ""); }
854test { try parsePass("/?chai", "file://tea/", "file://tea/?chai", "", "file:", "", "", "tea", "tea", "", "/", "?chai", ""); }
855test { try parsePass("C|", "file://host/dir/file", "file://host/C:", "", "file:", "", "", "host", "host", "", "/C:", "", ""); }
856test { try parsePass("C|", "file://host/D:/dir1/dir2/file", "file://host/C:", "", "file:", "", "", "host", "host", "", "/C:", "", ""); }
857test { try parsePass("C|#", "file://host/dir/file", "file://host/C:#", "", "file:", "", "", "host", "host", "", "/C:", "", ""); }
858test { try parsePass("C|?", "file://host/dir/file", "file://host/C:?", "", "file:", "", "", "host", "host", "", "/C:", "", ""); }
859test { try parsePass("C|/", "file://host/dir/file", "file://host/C:/", "", "file:", "", "", "host", "host", "", "/C:/", "", ""); }
860test { try parsePass("C|\n/", "file://host/dir/file", "file://host/C:/", "", "file:", "", "", "host", "host", "", "/C:/", "", ""); }
861test { try parsePass("C|\\", "file://host/dir/file", "file://host/C:/", "", "file:", "", "", "host", "host", "", "/C:/", "", ""); }
862test { try parsePass("C", "file://host/dir/file", "file://host/dir/C", "", "file:", "", "", "host", "host", "", "/dir/C", "", ""); }
863test { try parsePass("C|a", "file://host/dir/file", "file://host/dir/C|a", "", "file:", "", "", "host", "host", "", "/dir/C|a", "", ""); }
864test { try parsePass("/c:/foo/bar", "file:///c:/baz/qux", "file:///c:/foo/bar", "", "file:", "", "", "", "", "", "/c:/foo/bar", "", ""); }
865test { try parsePass("/c|/foo/bar", "file:///c:/baz/qux", "file:///c:/foo/bar", "", "file:", "", "", "", "", "", "/c:/foo/bar", "", ""); }
866test { try parsePass("file:\\c:\\foo\\bar", "file:///c:/baz/qux", "file:///c:/foo/bar", "", "file:", "", "", "", "", "", "/c:/foo/bar", "", ""); }
867test { try parsePass("/c:/foo/bar", "file://host/path", "file://host/c:/foo/bar", "", "file:", "", "", "host", "host", "", "/c:/foo/bar", "", ""); }
868test { try parsePass("C|/", "file://host/", "file://host/C:/", "", "file:", "", "", "host", "host", "", "/C:/", "", ""); }
869test { try parsePass("/C:/", "file://host/", "file://host/C:/", "", "file:", "", "", "host", "host", "", "/C:/", "", ""); }
870test { try parsePass("file:C:/", "file://host/", "file://host/C:/", "", "file:", "", "", "host", "host", "", "/C:/", "", ""); }
871test { try parsePass("file:/C:/", "file://host/", "file://host/C:/", "", "file:", "", "", "host", "host", "", "/C:/", "", ""); }
872test { try parsePass("//C:/", "file://host/", "file:///C:/", "", "file:", "", "", "", "", "", "/C:/", "", ""); }
873test { try parsePass("file://C:/", "file://host/", "file:///C:/", "", "file:", "", "", "", "", "", "/C:/", "", ""); }
874test { try parsePass("///C:/", "file://host/", "file:///C:/", "", "file:", "", "", "", "", "", "/C:/", "", ""); }
875test { try parsePass("file:///C:/", "file://host/", "file:///C:/", "", "file:", "", "", "", "", "", "/C:/", "", ""); }
876test { try parsePass("file:///one/two", "file:///", "file:///one/two", "", "file:", "", "", "", "", "", "/one/two", "", ""); }
877test { try parsePass("file:////one/two", "file:///", "file:////one/two", "", "file:", "", "", "", "", "", "//one/two", "", ""); }
878test { try parsePass("//one/two", "file:///", "file://one/two", "", "file:", "", "", "one", "one", "", "/two", "", ""); }
879test { try parsePass("///one/two", "file:///", "file:///one/two", "", "file:", "", "", "", "", "", "/one/two", "", ""); }
880test { try parsePass("////one/two", "file:///", "file:////one/two", "", "file:", "", "", "", "", "", "//one/two", "", ""); }
881test { try parsePass("file:///.//", "file:////", "file:////", "", "file:", "", "", "", "", "", "//", "", ""); }
882test { try parsePass("http://[1:0::]", "http://example.net/", "http://[1::]/", "http://[1::]", "http:", "", "", "[1::]", "[1::]", "", "/", "", ""); }
883test { try parsePass("#x", "sc://\xf1", "sc://%C3%B1#x", "null", "sc:", "", "", "%C3%B1", "%C3%B1", "", "", "", "#x"); }
884test { try parsePass("?x", "sc://\xf1", "sc://%C3%B1?x", "null", "sc:", "", "", "%C3%B1", "%C3%B1", "", "", "?x", ""); }
885test { try parsePass("///", "sc://x/", "sc:///", "", "sc:", "", "", "", "", "", "/", "", ""); }
886test { try parsePass("////", "sc://x/", "sc:////", "", "sc:", "", "", "", "", "", "//", "", ""); }
887test { try parsePass("////x/", "sc://x/", "sc:////x/", "", "sc:", "", "", "", "", "", "//x/", "", ""); }
888test { try parsePass("/.//path", "non-spec:/p", "non-spec:/.//path", "", "non-spec:", "", "", "", "", "", "//path", "", ""); }
889test { try parsePass("/..//path", "non-spec:/p", "non-spec:/.//path", "", "non-spec:", "", "", "", "", "", "//path", "", ""); }
890test { try parsePass("..//path", "non-spec:/p", "non-spec:/.//path", "", "non-spec:", "", "", "", "", "", "//path", "", ""); }
891test { try parsePass("a/..//path", "non-spec:/p", "non-spec:/.//path", "", "non-spec:", "", "", "", "", "", "//path", "", ""); }
892test { try parsePass("", "non-spec:/..//p", "non-spec:/.//p", "", "non-spec:", "", "", "", "", "", "//p", "", ""); }
893test { try parsePass("path", "non-spec:/..//p", "non-spec:/.//path", "", "non-spec:", "", "", "", "", "", "//path", "", ""); }
894test { try parsePass("../path", "non-spec:/.//p", "non-spec:/path", "", "non-spec:", "", "", "", "", "", "/path", "", ""); }
895test { try parsePass("test-a-colon-slash.html", "a:/", "a:/test-a-colon-slash.html", "", "a:", "", "", "", "", "", "/test-a-colon-slash.html", "", ""); }
896test { try parsePass("test-a-colon-slash-slash.html", "a://", "a:///test-a-colon-slash-slash.html", "", "a:", "", "", "", "", "", "/test-a-colon-slash-slash.html", "", ""); }
897test { try parsePass("test-a-colon-slash-b.html", "a:/b", "a:/test-a-colon-slash-b.html", "", "a:", "", "", "", "", "", "/test-a-colon-slash-b.html", "", ""); }
898test { try parsePass("test-a-colon-slash-slash-b.html", "a://b", "a://b/test-a-colon-slash-slash-b.html", "", "a:", "", "", "b", "b", "", "/test-a-colon-slash-slash-b.html", "", ""); }
899test { try parsePass("10.0.0.7:8080/foo.html", "file:///some/dir/bar.html", "file:///some/dir/10.0.0.7:8080/foo.html", "", "file:", "", "", "", "", "", "/some/dir/10.0.0.7:8080/foo.html", "", ""); }
900test { try parsePass("a!@$*=/foo.html", "file:///some/dir/bar.html", "file:///some/dir/a!@$*=/foo.html", "", "file:", "", "", "", "", "", "/some/dir/a!@$*=/foo.html", "", ""); }
901test { try parsePass("a1234567890-+.:foo/bar", "http://example.com/dir/file", "a1234567890-+.:foo/bar", "", "a1234567890-+.:", "", "", "", "", "", "foo/bar", "", ""); }
902test { try parsePass("#link", "https://example.org/##link", "https://example.org/#link", "", "https:", "", "", "example.org", "example.org", "", "/", "", "#link"); }
903test { try parsePass("https://user:pass[\x7f@foo/bar", "http://example.org", "https://user:pass%5B%7F@foo/bar", "https://foo", "https:", "user", "pass%5B%7F", "foo", "foo", "", "/bar", "", ""); }
904test { try parsePass("abc:rootless", "abc://host/path", "abc:rootless", "", "abc:", "", "", "", "", "", "rootless", "", ""); }
905test { try parsePass("abc:rootless", "abc:/path", "abc:rootless", "", "abc:", "", "", "", "", "", "rootless", "", ""); }
906test { try parsePass("abc:rootless", "abc:path", "abc:rootless", "", "abc:", "", "", "", "", "", "rootless", "", ""); }
907test { try parsePass("abc:/rooted", "abc://host/path", "abc:/rooted", "", "abc:", "", "", "", "", "", "/rooted", "", ""); }
908test { try parsePass("///test", "http://example.org/", "http://test/", "", "http:", "", "", "test", "test", "", "/", "", ""); }
909test { try parsePass("///\\//\\//test", "http://example.org/", "http://test/", "", "http:", "", "", "test", "test", "", "/", "", ""); }
910test { try parsePass("///example.org/path", "http://example.org/", "http://example.org/path", "", "http:", "", "", "example.org", "example.org", "", "/path", "", ""); }
911test { try parsePass("///example.org/../path", "http://example.org/", "http://example.org/path", "", "http:", "", "", "example.org", "example.org", "", "/path", "", ""); }
912test { try parsePass("///example.org/../../", "http://example.org/", "http://example.org/", "", "http:", "", "", "example.org", "example.org", "", "/", "", ""); }
913test { try parsePass("///example.org/../path/../../", "http://example.org/", "http://example.org/", "", "http:", "", "", "example.org", "example.org", "", "/", "", ""); }
914test { try parsePass("///example.org/../path/../../path", "http://example.org/", "http://example.org/path", "", "http:", "", "", "example.org", "example.org", "", "/path", "", ""); }
915test { try parsePass("/\\/\\//example.org/../path", "http://example.org/", "http://example.org/path", "", "http:", "", "", "example.org", "example.org", "", "/path", "", ""); }
916test { try parsePass("///abcdef/../", "file:///", "file:///", "", "file:", "", "", "", "", "", "/", "", ""); }
917test { try parsePass("/\\//\\/a/../", "file:///", "file://////", "", "file:", "", "", "", "", "", "////", "", ""); }
918test { try parsePass("//a/../", "file:///", "file://a/", "", "file:", "", "", "a", "a", "", "/", "", ""); }
919
920test { try parseIDNAFail("a\x200cb"); }
921test { try parseIDNAFail("A\x200cB"); }
922test { try parseIDNAFail("A\x200cb"); }
923test { try parseIDNAFail("xn--ab-j1t"); }
924test { try parseIDNAFail("a\x200db"); }
925test { try parseIDNAFail("A\x200dB"); }
926test { try parseIDNAFail("A\x200db"); }
927test { try parseIDNAFail("xn--ab-m1t"); }
928test { try parseIDNAFail(""); }
929test { try parseIDNAFail("xn--u-ccb"); }
930test { try parseIDNAFail("a\x2488com"); }
931test { try parseIDNAFail("A\x2488COM"); }
932test { try parseIDNAFail("A\x2488Com"); }
933test { try parseIDNAFail("xn--acom-0w1b"); }
934test { try parseIDNAFail("xn--a-ecp.ru"); }
935test { try parseIDNAFail("xn--0.pt"); }
936test { try parseIDNAFail("xn--a.pt"); }
937test { try parseIDNAFail("xn--a-\xc4.pt"); }
938test { try parseIDNAFail("xn--a-A\x308.pt"); }
939test { try parseIDNAFail("xn--a-a\x308.pt"); }
940test { try parseIDNAFail("xn--a-\xe4.pt"); }
941test { try parseIDNAFail("XN--A-\xc4.PT"); }
942test { try parseIDNAFail("XN--A-A\x308.PT"); }
943test { try parseIDNAFail("Xn--A-A\x308.pt"); }
944test { try parseIDNAFail("Xn--A-\xc4.pt"); }
945test { try parseIDNAFail("xn--xn--a--gua.pt"); }
946test { try parseIDNAFail("1.a\xdf\x200c\x200db\x200c\x200dc\xdf\xdf\xdf\xdfd\x3c2\x3c3\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdfe\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdfx\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdfy\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdf\x302\xdfz"); }
947test { try parseIDNAFail("1.ASS\x200c\x200dB\x200c\x200dCSSSSSSSSD\x3a3\x3a3SSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSS\x302SSZ"); }
948test { try parseIDNAFail("1.ASS\x200c\x200dB\x200c\x200dCSSSSSSSSD\x3a3\x3a3SSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSS\x15cSSZ"); }
949test { try parseIDNAFail("1.ass\x200c\x200db\x200c\x200dcssssssssd\x3c3\x3c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssss\x15dssz"); }
950test { try parseIDNAFail("1.ass\x200c\x200db\x200c\x200dcssssssssd\x3c3\x3c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\x302ssz"); }
951test { try parseIDNAFail("1.Ass\x200c\x200db\x200c\x200dcssssssssd\x3c3\x3c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\x302ssz"); }
952test { try parseIDNAFail("1.Ass\x200c\x200db\x200c\x200dcssssssssd\x3c3\x3c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssss\x15dssz"); }
953test { try parseIDNAFail("1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa69989dba9gc"); }
954test { try parseIDNAFail("1.A\xdf\x200c\x200db\x200c\x200dc\xdf\xdf\xdf\xdfd\x3c2\x3c3\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdfe\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdfx\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdfy\xdf\xdf\xdf\xdf\xdf\xdf\xdf\xdf\x302\xdfz"); }
955test { try parseIDNAFail("1.xn--abcdexyz-qyacaaabaaaaaaabaaaaaaaaabaaaaaaaaabaaaaaaaa010ze2isb1140zba8cc"); }
956test { try parseIDNAFail("\x200cx\x200dn\x200c-\x200d-b\xdf"); }
957test { try parseIDNAFail("\x200cX\x200dN\x200c-\x200d-BSS"); }
958test { try parseIDNAFail("\x200cx\x200dn\x200c-\x200d-bss"); }
959test { try parseIDNAFail("\x200cX\x200dn\x200c-\x200d-Bss"); }
960test { try parseIDNAFail("xn--xn--bss-7z6ccid"); }
961test { try parseIDNAFail("\x200cX\x200dn\x200c-\x200d-B\xdf"); }
962test { try parseIDNAFail("xn--xn--b-pqa5796ccahd"); }
963test { try parseIDNAFail("xn--xn---epa"); }
964test { try parseIDNAFail("a.b.\x308c.d"); }
965test { try parseIDNAFail("A.B.\x308C.D"); }
966test { try parseIDNAFail("A.b.\x308c.d"); }
967test { try parseIDNAFail("a.b.xn--c-bcb.d"); }
968test { try parseIDNAFail("\xbb9\x200d"); }
969test { try parseIDNAFail("xn--dmc225h"); }
970test { try parseIDNAFail("\x200d"); }
971test { try parseIDNAFail("xn--1ug"); }
972test { try parseIDNAFail("\xbb9\x200c"); }
973test { try parseIDNAFail("xn--dmc025h"); }
974test { try parseIDNAFail("\x200c"); }
975test { try parseIDNAFail("xn--0ug"); }
976test { try parseIDNAFail("\x6ef\x200c\x6ef"); }
977test { try parseIDNAFail("xn--cmba004q"); }
978test { try parseIDNAFail("a\xd900z"); }
979test { try parseIDNAFail("A\xd900Z"); }
980test { try parseIDNAFail("xn--"); }
981test { try parseIDNAFail("xn---"); }
982test { try parseIDNAFail("xn--ASCII-"); }
983test { try parseIDNAFail("xn--unicode-.org"); }
984test { try parseIDNAFail("\x2495\x221d\x65f\xda0e\xdd26\xff0e-\xdb40\xdd2f"); }
985test { try parseIDNAFail("14.\x221d\x65f\xda0e\xdd26.-\xdb40\xdd2f"); }
986test { try parseIDNAFail("14.xn--7hb713l3v90n.-"); }
987test { try parseIDNAFail("xn--7hb713lfwbi1311b.-"); }
988test { try parseIDNAFail("\x200d\x2260\x1899\x226f.\xc1a3-\x1874\x10a0"); }
989test { try parseIDNAFail("\x200d=\x338\x1899>\x338.\x1109\x1169\x11be-\x1874\x10a0"); }
990test { try parseIDNAFail("\x200d=\x338\x1899>\x338.\x1109\x1169\x11be-\x1874\x2d00"); }
991test { try parseIDNAFail("\x200d\x2260\x1899\x226f.\xc1a3-\x1874\x2d00"); }
992test { try parseIDNAFail("xn--jbf929a90b0b.xn----p9j493ivi4l"); }
993test { try parseIDNAFail("xn--jbf911clb.xn----6zg521d196p"); }
994test { try parseIDNAFail("xn--jbf929a90b0b.xn----6zg521d196p"); }
995test { try parseIDNAFail("\xd97d\xdf9c\xff0e\xd803\xdfc7\xfa2\x77d\x600"); }
996test { try parseIDNAFail("\xd97d\xdf9c\xff0e\xd803\xdfc7\xfa1\xfb7\x77d\x600"); }
997test { try parseIDNAFail("\xd97d\xdf9c.\xd803\xdfc7\xfa1\xfb7\x77d\x600"); }
998test { try parseIDNAFail("xn--gw68a.xn--ifb57ev2psc6027m"); }
999test { try parseIDNAFail("\xd84f\xdcd4\x303.\xd805\xdcc2"); }
1000test { try parseIDNAFail("xn--nsa95820a.xn--wz1d"); }
1001test { try parseIDNAFail("\x200c\xd9d4\xdfad.\x10b2\xd804\xddc0"); }
1002test { try parseIDNAFail("\x200c\xd9d4\xdfad.\x2d12\xd804\xddc0"); }
1003test { try parseIDNAFail("xn--bn95b.xn--9kj2034e"); }
1004test { try parseIDNAFail("xn--0ug15083f.xn--9kj2034e"); }
1005test { try parseIDNAFail("xn--bn95b.xn--qnd6272k"); }
1006test { try parseIDNAFail("xn--0ug15083f.xn--qnd6272k"); }
1007test { try parseIDNAFail("\x7e71\xd805\xddbf\x200d.\xff18\xfe12"); }
1008test { try parseIDNAFail("xn--gl0as212a.xn--8-o89h"); }
1009test { try parseIDNAFail("xn--1ug6928ac48e.xn--8-o89h"); }
1010test { try parseIDNAFail("\xdb40\xddbe\xff0e\xd838\xdc08"); }
1011test { try parseIDNAFail("\xdb40\xddbe.\xd838\xdc08"); }
1012test { try parseIDNAFail(".xn--ph4h"); }
1013test { try parseIDNAFail("\xdf\x6eb\x3002\x200d"); }
1014test { try parseIDNAFail("SS\x6eb\x3002\x200d"); }
1015test { try parseIDNAFail("ss\x6eb\x3002\x200d"); }
1016test { try parseIDNAFail("Ss\x6eb\x3002\x200d"); }
1017test { try parseIDNAFail("xn--ss-59d.xn--1ug"); }
1018test { try parseIDNAFail("xn--zca012a.xn--1ug"); }
1019test { try parseIDNAFail("\xdb41\xdc35\x200c\x2488\xff0e\xdb40\xdf87"); }
1020test { try parseIDNAFail("\xdb41\xdc35\x200c1..\xdb40\xdf87"); }
1021test { try parseIDNAFail("xn--1-bs31m..xn--tv36e"); }
1022test { try parseIDNAFail("xn--1-rgn37671n..xn--tv36e"); }
1023test { try parseIDNAFail("xn--tshz2001k.xn--tv36e"); }
1024test { try parseIDNAFail("xn--0ug88o47900b.xn--tv36e"); }
1025test { try parseIDNAFail("\xdb3c\xde23\x65f\xaab2\xdf\x3002\xdaf1\xdce7"); }
1026test { try parseIDNAFail("\xdb3c\xde23\x65f\xaab2SS\x3002\xdaf1\xdce7"); }
1027test { try parseIDNAFail("\xdb3c\xde23\x65f\xaab2ss\x3002\xdaf1\xdce7"); }
1028test { try parseIDNAFail("\xdb3c\xde23\x65f\xaab2Ss\x3002\xdaf1\xdce7"); }
1029test { try parseIDNAFail("xn--ss-3xd2839nncy1m.xn--bb79d"); }
1030test { try parseIDNAFail("xn--zca92z0t7n5w96j.xn--bb79d"); }
1031test { try parseIDNAFail("\x774\x200c\xd83a\xdd3f\x3002\xd8b5\xde10\x425c\x200d\xd9be\xdd3c"); }
1032test { try parseIDNAFail("\x774\x200c\xd83a\xdd1d\x3002\xd8b5\xde10\x425c\x200d\xd9be\xdd3c"); }
1033test { try parseIDNAFail("xn--4pb2977v.xn--z0nt555ukbnv"); }
1034test { try parseIDNAFail("xn--4pb607jjt73a.xn--1ug236ke314donv1a"); }
1035test { try parseIDNAFail("\x3164\x94d\x10a0\x17d0.\x180b"); }
1036test { try parseIDNAFail("\x1160\x94d\x10a0\x17d0.\x180b"); }
1037test { try parseIDNAFail("\x1160\x94d\x2d00\x17d0.\x180b"); }
1038test { try parseIDNAFail("xn--n3b445e53p."); }
1039test { try parseIDNAFail("\x3164\x94d\x2d00\x17d0.\x180b"); }
1040test { try parseIDNAFail("xn--n3b742bkqf4ty."); }
1041test { try parseIDNAFail("xn--n3b468aoqa89r."); }
1042test { try parseIDNAFail("xn--n3b445e53po6d."); }
1043test { try parseIDNAFail("xn--n3b468azngju2a."); }
1044test { try parseIDNAFail("\x2763\x200d\xff0e\x9cd\xd807\xdc3d\x612\xa929"); }
1045test { try parseIDNAFail("\x2763\x200d.\x9cd\xd807\xdc3d\x612\xa929"); }
1046test { try parseIDNAFail("xn--pei.xn--0fb32q3w7q2g4d"); }
1047test { try parseIDNAFail("xn--1ugy10a.xn--0fb32q3w7q2g4d"); }
1048test { try parseIDNAFail("\x349\x3002\xd85e\xdc6b"); }
1049test { try parseIDNAFail("xn--nua.xn--bc6k"); }
1050test { try parseIDNAFail("\xd807\xdc3f\xdb40\xdd66\xff0e\x1160"); }
1051test { try parseIDNAFail("\xd807\xdc3f\xdb40\xdd66.\x1160"); }
1052test { try parseIDNAFail("xn--ok3d."); }
1053test { try parseIDNAFail("xn--ok3d.xn--psd"); }
1054test { try parseIDNAFail("\x850f\xff61\xd807\xdc3a"); }
1055test { try parseIDNAFail("\x850f\x3002\xd807\xdc3a"); }
1056test { try parseIDNAFail("xn--uy1a.xn--jk3d"); }
1057test { try parseIDNAFail("xn--8g1d12120a.xn--5l6h"); }
1058test { try parseIDNAFail("\xd804\xdee7\xa9c02\xff61\x39c9\xda09\xdd84"); }
1059test { try parseIDNAFail("\xd804\xdee7\xa9c02\x3002\x39c9\xda09\xdd84"); }
1060test { try parseIDNAFail("xn--2-5z4eu89y.xn--97l02706d"); }
1061test { try parseIDNAFail("\x2938\x3c2\xd8ab\xdc40\xff61\xffa0"); }
1062test { try parseIDNAFail("\x2938\x3c2\xd8ab\xdc40\x3002\x1160"); }
1063test { try parseIDNAFail("\x2938\x3a3\xd8ab\xdc40\x3002\x1160"); }
1064test { try parseIDNAFail("\x2938\x3c3\xd8ab\xdc40\x3002\x1160"); }
1065test { try parseIDNAFail("xn--4xa192qmp03d."); }
1066test { try parseIDNAFail("xn--3xa392qmp03d."); }
1067test { try parseIDNAFail("\x2938\x3a3\xd8ab\xdc40\xff61\xffa0"); }
1068test { try parseIDNAFail("\x2938\x3c3\xd8ab\xdc40\xff61\xffa0"); }
1069test { try parseIDNAFail("xn--4xa192qmp03d.xn--psd"); }
1070test { try parseIDNAFail("xn--3xa392qmp03d.xn--psd"); }
1071test { try parseIDNAFail("xn--4xa192qmp03d.xn--cl7c"); }
1072test { try parseIDNAFail("xn--3xa392qmp03d.xn--cl7c"); }
1073test { try parseIDNAFail("\x200d\xdb7d\xdc56\xdb40\xdc50\xff0e\x5bd\xd826\xdfb0\xa85d\xd800\xdee1"); }
1074test { try parseIDNAFail("\x200d\xdb7d\xdc56\xdb40\xdc50.\x5bd\xd826\xdfb0\xa85d\xd800\xdee1"); }
1075test { try parseIDNAFail("xn--b726ey18m.xn--ldb8734fg0qcyzzg"); }
1076test { try parseIDNAFail("xn--1ug66101lt8me.xn--ldb8734fg0qcyzzg"); }
1077test { try parseIDNAFail("\x3002\xdbcc\xde35\x3c2\xd8c2\xdc07\x3002\xd802\xdf88"); }
1078test { try parseIDNAFail("\x3002\xdbcc\xde35\x3a3\xd8c2\xdc07\x3002\xd802\xdf88"); }
1079test { try parseIDNAFail("\x3002\xdbcc\xde35\x3c3\xd8c2\xdc07\x3002\xd802\xdf88"); }
1080test { try parseIDNAFail(".xn--4xa68573c7n64d.xn--f29c"); }
1081test { try parseIDNAFail(".xn--3xa88573c7n64d.xn--f29c"); }
1082test { try parseIDNAFail("\x2489\xdb40\xde93\x2260\xff61\x10bf\x2b23\x10a8"); }
1083test { try parseIDNAFail("\x2489\xdb40\xde93=\x338\xff61\x10bf\x2b23\x10a8"); }
1084test { try parseIDNAFail("2.\xdb40\xde93\x2260\x3002\x10bf\x2b23\x10a8"); }
1085test { try parseIDNAFail("2.\xdb40\xde93=\x338\x3002\x10bf\x2b23\x10a8"); }
1086test { try parseIDNAFail("2.\xdb40\xde93=\x338\x3002\x2d1f\x2b23\x2d08"); }
1087test { try parseIDNAFail("2.\xdb40\xde93\x2260\x3002\x2d1f\x2b23\x2d08"); }
1088test { try parseIDNAFail("2.xn--1chz4101l.xn--45iz7d6b"); }
1089test { try parseIDNAFail("\x2489\xdb40\xde93=\x338\xff61\x2d1f\x2b23\x2d08"); }
1090test { try parseIDNAFail("\x2489\xdb40\xde93\x2260\xff61\x2d1f\x2b23\x2d08"); }
1091test { try parseIDNAFail("xn--1ch07f91401d.xn--45iz7d6b"); }
1092test { try parseIDNAFail("2.xn--1chz4101l.xn--gnd9b297j"); }
1093test { try parseIDNAFail("xn--1ch07f91401d.xn--gnd9b297j"); }
1094test { try parseIDNAFail("-\xdb40\xde56\xa867\xff0e\xdb40\xde82\xd8dc\xdd83\xd83c\xdd09"); }
1095test { try parseIDNAFail("-\xdb40\xde56\xa867.\xdb40\xde82\xd8dc\xdd838,"); }
1096test { try parseIDNAFail("xn----hg4ei0361g.xn--8,-k362evu488a"); }
1097test { try parseIDNAFail("xn----hg4ei0361g.xn--207ht163h7m94c"); }
1098test { try parseIDNAFail("\x200c\xff61\x354"); }
1099test { try parseIDNAFail("\x200c\x3002\x354"); }
1100test { try parseIDNAFail(".xn--yua"); }
1101test { try parseIDNAFail("xn--0ug.xn--yua"); }
1102test { try parseIDNAFail("xn--de6h.xn--mnd799a"); }
1103test { try parseIDNAFail("\xfa4\xd986\xdd2f\xff0e\xd835\xdfed\x10bb"); }
1104test { try parseIDNAFail("\xfa4\xd986\xdd2f.1\x10bb"); }
1105test { try parseIDNAFail("\xfa4\xd986\xdd2f.1\x2d1b"); }
1106test { try parseIDNAFail("xn--0fd40533g.xn--1-tws"); }
1107test { try parseIDNAFail("\xfa4\xd986\xdd2f\xff0e\xd835\xdfed\x2d1b"); }
1108test { try parseIDNAFail("xn--0fd40533g.xn--1-q1g"); }
1109test { try parseIDNAFail("\x3c2\xd9d5\xdf0c\xff18.\xd83a\xdf64"); }
1110test { try parseIDNAFail("\x3c2\xd9d5\xdf0c8.\xd83a\xdf64"); }
1111test { try parseIDNAFail("\x3a3\xd9d5\xdf0c8.\xd83a\xdf64"); }
1112test { try parseIDNAFail("\x3c3\xd9d5\xdf0c8.\xd83a\xdf64"); }
1113test { try parseIDNAFail("xn--8-zmb14974n.xn--su6h"); }
1114test { try parseIDNAFail("xn--8-xmb44974n.xn--su6h"); }
1115test { try parseIDNAFail("\x3a3\xd9d5\xdf0c\xff18.\xd83a\xdf64"); }
1116test { try parseIDNAFail("\x3c3\xd9d5\xdf0c\xff18.\xd83a\xdf64"); }
1117test { try parseIDNAFail("\x200c\xae03.\x69b6-"); }
1118test { try parseIDNAFail("\x200c\x1100\x1173\x11b2.\x69b6-"); }
1119test { try parseIDNAFail("xn--0ug3307c.xn----d87b"); }
1120test { try parseIDNAFail("\xb253\x6cd3\xd833\xdd7d.\x9cd\x200d"); }
1121test { try parseIDNAFail("\x1102\x1170\x11be\x6cd3\xd833\xdd7d.\x9cd\x200d"); }
1122test { try parseIDNAFail("xn--lwwp69lqs7m.xn--b7b"); }
1123test { try parseIDNAFail("xn--lwwp69lqs7m.xn--b7b605i"); }
1124test { try parseIDNAFail("\x1b44\xff0e\x1baa-\x226e\x2260"); }
1125test { try parseIDNAFail("\x1b44\xff0e\x1baa-<\x338=\x338"); }
1126test { try parseIDNAFail("\x1b44.\x1baa-\x226e\x2260"); }
1127test { try parseIDNAFail("\x1b44.\x1baa-<\x338=\x338"); }
1128test { try parseIDNAFail("xn--1uf.xn----nmlz65aub"); }
1129test { try parseIDNAFail("\x1bf3\x10b1\x115f\xff0e\xd804\xdd34\x2132"); }
1130test { try parseIDNAFail("\x1bf3\x10b1\x115f.\xd804\xdd34\x2132"); }
1131test { try parseIDNAFail("\x1bf3\x2d11\x115f.\xd804\xdd34\x214e"); }
1132test { try parseIDNAFail("\x1bf3\x10b1\x115f.\xd804\xdd34\x214e"); }
1133test { try parseIDNAFail("xn--1zf224e.xn--73g3065g"); }
1134test { try parseIDNAFail("\x1bf3\x2d11\x115f\xff0e\xd804\xdd34\x214e"); }
1135test { try parseIDNAFail("\x1bf3\x10b1\x115f\xff0e\xd804\xdd34\x214e"); }
1136test { try parseIDNAFail("xn--pnd26a55x.xn--73g3065g"); }
1137test { try parseIDNAFail("xn--osd925cvyn.xn--73g3065g"); }
1138test { try parseIDNAFail("xn--pnd26a55x.xn--f3g7465g"); }
1139test { try parseIDNAFail("\x10a9\x7315\xdba5\xdeeb\x226e\xff0e\xfe12"); }
1140test { try parseIDNAFail("\x10a9\x7315\xdba5\xdeeb<\x338\xff0e\xfe12"); }
1141test { try parseIDNAFail("\x10a9\x7315\xdba5\xdeeb\x226e.\x3002"); }
1142test { try parseIDNAFail("\x10a9\x7315\xdba5\xdeeb<\x338.\x3002"); }
1143test { try parseIDNAFail("\x2d09\x7315\xdba5\xdeeb<\x338.\x3002"); }
1144test { try parseIDNAFail("\x2d09\x7315\xdba5\xdeeb\x226e.\x3002"); }
1145test { try parseIDNAFail("xn--gdh892bbz0d5438s.."); }
1146test { try parseIDNAFail("\x2d09\x7315\xdba5\xdeeb<\x338\xff0e\xfe12"); }
1147test { try parseIDNAFail("\x2d09\x7315\xdba5\xdeeb\x226e\xff0e\xfe12"); }
1148test { try parseIDNAFail("xn--gdh892bbz0d5438s.xn--y86c"); }
1149test { try parseIDNAFail("xn--hnd212gz32d54x5r.."); }
1150test { try parseIDNAFail("xn--hnd212gz32d54x5r.xn--y86c"); }
1151test { try parseIDNAFail("\xc5\xb444-\xff0e\x200c"); }
1152test { try parseIDNAFail("A\x30a\x1103\x116d\x11b7-\xff0e\x200c"); }
1153test { try parseIDNAFail("\xc5\xb444-.\x200c"); }
1154test { try parseIDNAFail("A\x30a\x1103\x116d\x11b7-.\x200c"); }
1155test { try parseIDNAFail("a\x30a\x1103\x116d\x11b7-.\x200c"); }
1156test { try parseIDNAFail("\xe5\xb444-.\x200c"); }
1157test { try parseIDNAFail("xn----1fa1788k.xn--0ug"); }
1158test { try parseIDNAFail("a\x30a\x1103\x116d\x11b7-\xff0e\x200c"); }
1159test { try parseIDNAFail("\xe5\xb444-\xff0e\x200c"); }
1160test { try parseIDNAFail("\xb8f1\x200d\xd880\xdf68\x200c\x3002\xd836\xde16\xfe12"); }
1161test { try parseIDNAFail("\x1105\x116e\x11b0\x200d\xd880\xdf68\x200c\x3002\xd836\xde16\xfe12"); }
1162test { try parseIDNAFail("\xb8f1\x200d\xd880\xdf68\x200c\x3002\xd836\xde16\x3002"); }
1163test { try parseIDNAFail("\x1105\x116e\x11b0\x200d\xd880\xdf68\x200c\x3002\xd836\xde16\x3002"); }
1164test { try parseIDNAFail("xn--ct2b0738h.xn--772h."); }
1165test { try parseIDNAFail("xn--0ugb3358ili2v.xn--772h."); }
1166test { try parseIDNAFail("xn--ct2b0738h.xn--y86cl899a"); }
1167test { try parseIDNAFail("xn--0ugb3358ili2v.xn--y86cl899a"); }
1168test { try parseIDNAFail("\xd83c\xdd04\xff0e\x1cdc\x2488\xdf"); }
1169test { try parseIDNAFail("3,.\x1cdc1.\xdf"); }
1170test { try parseIDNAFail("3,.\x1cdc1.SS"); }
1171test { try parseIDNAFail("3,.\x1cdc1.ss"); }
1172test { try parseIDNAFail("3,.\x1cdc1.Ss"); }
1173test { try parseIDNAFail("3,.xn--1-43l.ss"); }
1174test { try parseIDNAFail("3,.xn--1-43l.xn--zca"); }
1175test { try parseIDNAFail("\xd83c\xdd04\xff0e\x1cdc\x2488SS"); }
1176test { try parseIDNAFail("\xd83c\xdd04\xff0e\x1cdc\x2488ss"); }
1177test { try parseIDNAFail("\xd83c\xdd04\xff0e\x1cdc\x2488Ss"); }
1178test { try parseIDNAFail("3,.xn--ss-k1r094b"); }
1179test { try parseIDNAFail("3,.xn--zca344lmif"); }
1180test { try parseIDNAFail("xn--x07h.xn--ss-k1r094b"); }
1181test { try parseIDNAFail("xn--x07h.xn--zca344lmif"); }
1182test { try parseIDNAFail("\x1dfd\x103a\x94d\xff0e\x2260\x200d\x31db"); }
1183test { try parseIDNAFail("\x103a\x94d\x1dfd\xff0e\x2260\x200d\x31db"); }
1184test { try parseIDNAFail("\x103a\x94d\x1dfd\xff0e=\x338\x200d\x31db"); }
1185test { try parseIDNAFail("\x103a\x94d\x1dfd.\x2260\x200d\x31db"); }
1186test { try parseIDNAFail("\x103a\x94d\x1dfd.=\x338\x200d\x31db"); }
1187test { try parseIDNAFail("xn--n3b956a9zm.xn--1ch912d"); }
1188test { try parseIDNAFail("xn--n3b956a9zm.xn--1ug63gz5w"); }
1189test { try parseIDNAFail("\x1bf3.-\x900b\xd98e\xddad\xdb25\xde6e"); }
1190test { try parseIDNAFail("xn--1zf.xn----483d46987byr50b"); }
1191test { try parseIDNAFail("xn--9ob.xn--4xa380e"); }
1192test { try parseIDNAFail("xn--9ob.xn--4xa380ebol"); }
1193test { try parseIDNAFail("xn--9ob.xn--3xa580ebol"); }
1194test { try parseIDNAFail("xn--9ob.xn--4xa574u"); }
1195test { try parseIDNAFail("xn--9ob.xn--4xa795lq2l"); }
1196test { try parseIDNAFail("xn--9ob.xn--3xa995lq2l"); }
1197test { try parseIDNAFail("\x1846\x10a3\xff61\xdb3a\xdca7\x315\x200d\x200d"); }
1198test { try parseIDNAFail("\x1846\x10a3\x3002\xdb3a\xdca7\x315\x200d\x200d"); }
1199test { try parseIDNAFail("\x1846\x2d03\x3002\xdb3a\xdca7\x315\x200d\x200d"); }
1200test { try parseIDNAFail("xn--57e237h.xn--5sa98523p"); }
1201test { try parseIDNAFail("xn--57e237h.xn--5sa649la993427a"); }
1202test { try parseIDNAFail("\x1846\x2d03\xff61\xdb3a\xdca7\x315\x200d\x200d"); }
1203test { try parseIDNAFail("xn--bnd320b.xn--5sa98523p"); }
1204test { try parseIDNAFail("xn--bnd320b.xn--5sa649la993427a"); }
1205test { try parseIDNAFail("\xd838\xdc28\xff61\x1b44\xda45\xdee8\xd838\xdf87"); }
1206test { try parseIDNAFail("\xd838\xdc28\x3002\x1b44\xda45\xdee8\xd838\xdf87"); }
1207test { try parseIDNAFail("xn--mi4h.xn--1uf6843smg20c"); }
1208test { try parseIDNAFail("\x189b\xdb60\xdd5f\xdf.\x1327"); }
1209test { try parseIDNAFail("\x189b\xdb60\xdd5fSS.\x1327"); }
1210test { try parseIDNAFail("\x189b\xdb60\xdd5fss.\x1327"); }
1211test { try parseIDNAFail("\x189b\xdb60\xdd5fSs.\x1327"); }
1212test { try parseIDNAFail("xn--ss-7dp66033t.xn--p5d"); }
1213test { try parseIDNAFail("xn--zca562jc642x.xn--p5d"); }
1214test { try parseIDNAFail("\x2b92\x200c.\xd909\xde97\x200c"); }
1215test { try parseIDNAFail("xn--b9i.xn--5p9y"); }
1216test { try parseIDNAFail("xn--0ugx66b.xn--0ugz2871c"); }
1217test { try parseIDNAFail("\x226f\xd805\xdf2b\xdb42\xdf47.\x1734\xd909\xdfa4\xd804\xdf6c\x18a7"); }
1218test { try parseIDNAFail(">\x338\xd805\xdf2b\xdb42\xdf47.\x1734\xd909\xdfa4\xd804\xdf6c\x18a7"); }
1219test { try parseIDNAFail("xn--hdhx157g68o0g.xn--c0e65eu616c34o7a"); }
1220test { try parseIDNAFail("ss.xn--lgd10cu829c"); }
1221test { try parseIDNAFail("xn--zca.xn--lgd10cu829c"); }
1222test { try parseIDNAFail("\x1a5a\xd82e\xdd9d\xc4d\x3002\xd829\xdf6c\xd835\xdff5"); }
1223test { try parseIDNAFail("\x1a5a\xd82e\xdd9d\xc4d\x3002\xd829\xdf6c9"); }
1224test { try parseIDNAFail("xn--lqc703ebm93a.xn--9-000p"); }
1225test { try parseIDNAFail("\x1856\xff61\x31f\xd91d\xdee8\xb82-"); }
1226test { try parseIDNAFail("\x1856\x3002\x31f\xd91d\xdee8\xb82-"); }
1227test { try parseIDNAFail("xn--m8e.xn----mdb555dkk71m"); }
1228test { try parseIDNAFail("\x596\x10ab\xff0e\xd835\xdff3\x226f\xfe12\xfe0a"); }
1229test { try parseIDNAFail("\x596\x10ab\xff0e\xd835\xdff3>\x338\xfe12\xfe0a"); }
1230test { try parseIDNAFail("\x596\x10ab.7\x226f\x3002\xfe0a"); }
1231test { try parseIDNAFail("\x596\x10ab.7>\x338\x3002\xfe0a"); }
1232test { try parseIDNAFail("\x596\x2d0b.7>\x338\x3002\xfe0a"); }
1233test { try parseIDNAFail("\x596\x2d0b.7\x226f\x3002\xfe0a"); }
1234test { try parseIDNAFail("xn--hcb613r.xn--7-pgo."); }
1235test { try parseIDNAFail("\x596\x2d0b\xff0e\xd835\xdff3>\x338\xfe12\xfe0a"); }
1236test { try parseIDNAFail("\x596\x2d0b\xff0e\xd835\xdff3\x226f\xfe12\xfe0a"); }
1237test { try parseIDNAFail("xn--hcb613r.xn--7-pgoy530h"); }
1238test { try parseIDNAFail("xn--hcb887c.xn--7-pgo."); }
1239test { try parseIDNAFail("xn--hcb887c.xn--7-pgoy530h"); }
1240test { try parseIDNAFail("\xd83c\xdd07\x4f10\xfe12.\xd831\xde5a\xa8c4"); }
1241test { try parseIDNAFail("6,\x4f10\x3002.\xd831\xde5a\xa8c4"); }
1242test { try parseIDNAFail("xn--6,-7i3c..xn--0f9ao925c"); }
1243test { try parseIDNAFail("xn--6,-7i3cj157d.xn--0f9ao925c"); }
1244test { try parseIDNAFail("xn--woqs083bel0g.xn--0f9ao925c"); }
1245test { try parseIDNAFail("\xdb40\xdda0\xff0e\xd99d\xdc34\xdaf1\xdfc8"); }
1246test { try parseIDNAFail("\xdb40\xdda0.\xd99d\xdc34\xdaf1\xdfc8"); }
1247test { try parseIDNAFail(".xn--rx21bhv12i"); }
1248test { try parseIDNAFail("-.\x1886\xdb47\xdca3-"); }
1249test { try parseIDNAFail("-.xn----pbkx6497q"); }
1250test { try parseIDNAFail("\xdafd\xdcb0\xff0e-\xd835\xdffb\xdf"); }
1251test { try parseIDNAFail("\xdafd\xdcb0.-5\xdf"); }
1252test { try parseIDNAFail("\xdafd\xdcb0.-5SS"); }
1253test { try parseIDNAFail("\xdafd\xdcb0.-5ss"); }
1254test { try parseIDNAFail("xn--t960e.-5ss"); }
1255test { try parseIDNAFail("xn--t960e.xn---5-hia"); }
1256test { try parseIDNAFail("\xdafd\xdcb0\xff0e-\xd835\xdffbSS"); }
1257test { try parseIDNAFail("\xdafd\xdcb0\xff0e-\xd835\xdffbss"); }
1258test { try parseIDNAFail("\xdafd\xdcb0\xff0e-\xd835\xdffbSs"); }
1259test { try parseIDNAFail("\xdafd\xdcb0.-5Ss"); }
1260test { try parseIDNAFail("\x200d\xd802\xde3f.\xd83e\xdd12\x10c5\xda06\xdfb6"); }
1261test { try parseIDNAFail("\x200d\xd802\xde3f.\xd83e\xdd12\x2d25\xda06\xdfb6"); }
1262test { try parseIDNAFail("xn--0s9c.xn--tljz038l0gz4b"); }
1263test { try parseIDNAFail("xn--1ug9533g.xn--tljz038l0gz4b"); }
1264test { try parseIDNAFail("xn--0s9c.xn--9nd3211w0gz4b"); }
1265test { try parseIDNAFail("xn--1ug9533g.xn--9nd3211w0gz4b"); }
1266test { try parseIDNAFail("\xd894\xdec5\x3002\xdf\xd873\xdd69\x200d"); }
1267test { try parseIDNAFail("\xd894\xdec5\x3002SS\xd873\xdd69\x200d"); }
1268test { try parseIDNAFail("\xd894\xdec5\x3002ss\xd873\xdd69\x200d"); }
1269test { try parseIDNAFail("\xd894\xdec5\x3002Ss\xd873\xdd69\x200d"); }
1270test { try parseIDNAFail("xn--ey1p.xn--ss-eq36b"); }
1271test { try parseIDNAFail("xn--ey1p.xn--ss-n1tx0508a"); }
1272test { try parseIDNAFail("xn--ey1p.xn--zca870nz438b"); }
1273test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\xff61\xd805\xddbf\x1abb\x3c2\x2260"); }
1274test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\xff61\xd805\xddbf\x1abb\x3c2=\x338"); }
1275test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\x3002\xd805\xddbf\x1abb\x3c2\x2260"); }
1276test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\x3002\xd805\xddbf\x1abb\x3c2=\x338"); }
1277test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\x3002\xd805\xddbf\x1abb\x3a3=\x338"); }
1278test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\x3002\xd805\xddbf\x1abb\x3a3\x2260"); }
1279test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\x3002\xd805\xddbf\x1abb\x3c3\x2260"); }
1280test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\x3002\xd805\xddbf\x1abb\x3c3=\x338"); }
1281test { try parseIDNAFail("xn--zb9h5968x.xn--4xa378i1mfjw7y"); }
1282test { try parseIDNAFail("xn--0ug3766p5nm1b.xn--4xa378i1mfjw7y"); }
1283test { try parseIDNAFail("xn--0ug3766p5nm1b.xn--3xa578i1mfjw7y"); }
1284test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\xff61\xd805\xddbf\x1abb\x3a3=\x338"); }
1285test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\xff61\xd805\xddbf\x1abb\x3a3\x2260"); }
1286test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\xff61\xd805\xddbf\x1abb\x3c3\x2260"); }
1287test { try parseIDNAFail("\xdb40\xdd6f\xd9df\xdf6d\x200c\xd83d\xdf2d\xff61\xd805\xddbf\x1abb\x3c3=\x338"); }
1288test { try parseIDNAFail("\x248b\xff61\x2488\x200d\xda8f\xdd22"); }
1289test { try parseIDNAFail("4.\x30021.\x200d\xda8f\xdd22"); }
1290test { try parseIDNAFail("4..1.xn--sf51d"); }
1291test { try parseIDNAFail("4..1.xn--1ug64613i"); }
1292test { try parseIDNAFail("xn--wsh.xn--tsh07994h"); }
1293test { try parseIDNAFail("xn--wsh.xn--1ug58o74922a"); }
1294test { try parseIDNAFail("\x10b3\xd805\xdf2b\x200d\xda1e\xdf53\xff0e\x6a7\xd807\xdc36"); }
1295test { try parseIDNAFail("\x10b3\xd805\xdf2b\x200d\xda1e\xdf53.\x6a7\xd807\xdc36"); }
1296test { try parseIDNAFail("\x2d13\xd805\xdf2b\x200d\xda1e\xdf53.\x6a7\xd807\xdc36"); }
1297test { try parseIDNAFail("xn--blj6306ey091d.xn--9jb4223l"); }
1298test { try parseIDNAFail("xn--1ugy52cym7p7xu5e.xn--9jb4223l"); }
1299test { try parseIDNAFail("\x2d13\xd805\xdf2b\x200d\xda1e\xdf53\xff0e\x6a7\xd807\xdc36"); }
1300test { try parseIDNAFail("xn--rnd8945ky009c.xn--9jb4223l"); }
1301test { try parseIDNAFail("xn--rnd479ep20q7x12e.xn--9jb4223l"); }
1302test { try parseIDNAFail("\xd802\xde3f.\xd83c\xdd06\x2014"); }
1303test { try parseIDNAFail("\xd802\xde3f.5,\x2014"); }
1304test { try parseIDNAFail("xn--0s9c.xn--5,-81t"); }
1305test { try parseIDNAFail("xn--0s9c.xn--8ug8324p"); }
1306test { try parseIDNAFail("\xda10\xdeb1\xd8c6\xddae\x6f8\x3002\xdb43\xdfad-"); }
1307test { try parseIDNAFail("xn--lmb18944c0g2z.xn----2k81m"); }
1308test { try parseIDNAFail("\xd83d\xdf85\xdb43\xdce1\xdb30\xdf59.\xd989\xddb7"); }
1309test { try parseIDNAFail("xn--ie9hi1349bqdlb.xn--oj69a"); }
1310test { try parseIDNAFail("\x20e7\xd97e\xdc4e-\xda6e\xdcdd.4\x10a4\x200c"); }
1311test { try parseIDNAFail("\x20e7\xd97e\xdc4e-\xda6e\xdcdd.4\x2d04\x200c"); }
1312test { try parseIDNAFail("xn----9snu5320fi76w.xn--4-ivs"); }
1313test { try parseIDNAFail("xn----9snu5320fi76w.xn--4-sgn589c"); }
1314test { try parseIDNAFail("xn----9snu5320fi76w.xn--4-f0g"); }
1315test { try parseIDNAFail("xn----9snu5320fi76w.xn--4-f0g649i"); }
1316test { try parseIDNAFail("\xd805\xdc44\x226f\xff61\xd805\xdf24"); }
1317test { try parseIDNAFail("\xd805\xdc44>\x338\xff61\xd805\xdf24"); }
1318test { try parseIDNAFail("\xd805\xdc44\x226f\x3002\xd805\xdf24"); }
1319test { try parseIDNAFail("\xd805\xdc44>\x338\x3002\xd805\xdf24"); }
1320test { try parseIDNAFail("xn--hdh5636g.xn--ci2d"); }
1321test { try parseIDNAFail("\x10ab\x226e\xd887\xdc86\x3002\x200d\x7a7\xd800\xdee3"); }
1322test { try parseIDNAFail("\x10ab<\x338\xd887\xdc86\x3002\x200d\x7a7\xd800\xdee3"); }
1323test { try parseIDNAFail("\x2d0b<\x338\xd887\xdc86\x3002\x200d\x7a7\xd800\xdee3"); }
1324test { try parseIDNAFail("\x2d0b\x226e\xd887\xdc86\x3002\x200d\x7a7\xd800\xdee3"); }
1325test { try parseIDNAFail("xn--gdhz03bxt42d.xn--lrb6479j"); }
1326test { try parseIDNAFail("xn--gdhz03bxt42d.xn--lrb506jqr4n"); }
1327test { try parseIDNAFail("xn--jnd802gsm17c.xn--lrb6479j"); }
1328test { try parseIDNAFail("xn--jnd802gsm17c.xn--lrb506jqr4n"); }
1329test { try parseIDNAFail("\x17d2.\xd9db\xdf52\x226f"); }
1330test { try parseIDNAFail("\x17d2.\xd9db\xdf52>\x338"); }
1331test { try parseIDNAFail("xn--u4e.xn--hdhx0084f"); }
1332test { try parseIDNAFail("\xd8fc\xdc47\x1734\xff0e\xd802\xde3a\xc9\x2b13\xd804\xdd34"); }
1333test { try parseIDNAFail("\xd8fc\xdc47\x1734\xff0e\xd802\xde3aE\x301\x2b13\xd804\xdd34"); }
1334test { try parseIDNAFail("\xd8fc\xdc47\x1734.\xd802\xde3a\xc9\x2b13\xd804\xdd34"); }
1335test { try parseIDNAFail("\xd8fc\xdc47\x1734.\xd802\xde3aE\x301\x2b13\xd804\xdd34"); }
1336test { try parseIDNAFail("\xd8fc\xdc47\x1734.\xd802\xde3ae\x301\x2b13\xd804\xdd34"); }
1337test { try parseIDNAFail("\xd8fc\xdc47\x1734.\xd802\xde3a\xe9\x2b13\xd804\xdd34"); }
1338test { try parseIDNAFail("xn--c0e34564d.xn--9ca207st53lg3f"); }
1339test { try parseIDNAFail("\xd8fc\xdc47\x1734\xff0e\xd802\xde3ae\x301\x2b13\xd804\xdd34"); }
1340test { try parseIDNAFail("\xd8fc\xdc47\x1734\xff0e\xd802\xde3a\xe9\x2b13\xd804\xdd34"); }
1341test { try parseIDNAFail("\x10c3\xff0e\x653\x18a4"); }
1342test { try parseIDNAFail("\x10c3.\x653\x18a4"); }
1343test { try parseIDNAFail("\x2d23.\x653\x18a4"); }
1344test { try parseIDNAFail("xn--rlj.xn--vhb294g"); }
1345test { try parseIDNAFail("\x2d23\xff0e\x653\x18a4"); }
1346test { try parseIDNAFail("xn--7nd.xn--vhb294g"); }
1347test { try parseIDNAFail("\xdb40\xdd08\x813\xff0e\xc2c9\xd9d0\xddbb\x10c4\xd9ca\xdc50"); }
1348test { try parseIDNAFail("\xdb40\xdd08\x813\xff0e\x1109\x1174\x11b0\xd9d0\xddbb\x10c4\xd9ca\xdc50"); }
1349test { try parseIDNAFail("\xdb40\xdd08\x813.\xc2c9\xd9d0\xddbb\x10c4\xd9ca\xdc50"); }
1350test { try parseIDNAFail("\xdb40\xdd08\x813.\x1109\x1174\x11b0\xd9d0\xddbb\x10c4\xd9ca\xdc50"); }
1351test { try parseIDNAFail("\xdb40\xdd08\x813.\x1109\x1174\x11b0\xd9d0\xddbb\x2d24\xd9ca\xdc50"); }
1352test { try parseIDNAFail("\xdb40\xdd08\x813.\xc2c9\xd9d0\xddbb\x2d24\xd9ca\xdc50"); }
1353test { try parseIDNAFail("xn--oub.xn--sljz109bpe25dviva"); }
1354test { try parseIDNAFail("\xdb40\xdd08\x813\xff0e\x1109\x1174\x11b0\xd9d0\xddbb\x2d24\xd9ca\xdc50"); }
1355test { try parseIDNAFail("\xdb40\xdd08\x813\xff0e\xc2c9\xd9d0\xddbb\x2d24\xd9ca\xdc50"); }
1356test { try parseIDNAFail("xn--oub.xn--8nd9522gpe69cviva"); }
1357test { try parseIDNAFail("\xaa2c\xd807\xdcab\x226e\xff0e\x2902"); }
1358test { try parseIDNAFail("\xaa2c\xd807\xdcab<\x338\xff0e\x2902"); }
1359test { try parseIDNAFail("\xaa2c\xd807\xdcab\x226e.\x2902"); }
1360test { try parseIDNAFail("\xaa2c\xd807\xdcab<\x338.\x2902"); }
1361test { try parseIDNAFail("xn--gdh1854cn19c.xn--kqi"); }
1362test { try parseIDNAFail("\xd804\xdc45\x3002-"); }
1363test { try parseIDNAFail("xn--210d.-"); }
1364test { try parseIDNAFail("\xa866\x1851\x200d\x2488\x3002\xd800\xdee3-"); }
1365test { try parseIDNAFail("\xa866\x1851\x200d1.\x3002\xd800\xdee3-"); }
1366test { try parseIDNAFail("xn--1-o7j663bdl7m..xn----381i"); }
1367test { try parseIDNAFail("xn--h8e863drj7h.xn----381i"); }
1368test { try parseIDNAFail("xn--h8e470bl0d838o.xn----381i"); }
1369test { try parseIDNAFail("\x2488\x4c39\x200d-\x3002\xc6c8"); }
1370test { try parseIDNAFail("\x2488\x4c39\x200d-\x3002\x110b\x116e\x11bf"); }
1371test { try parseIDNAFail("1.\x4c39\x200d-\x3002\xc6c8"); }
1372test { try parseIDNAFail("1.\x4c39\x200d-\x3002\x110b\x116e\x11bf"); }
1373test { try parseIDNAFail("1.xn----tgnz80r.xn--kp5b"); }
1374test { try parseIDNAFail("xn----dcp160o.xn--kp5b"); }
1375test { try parseIDNAFail("xn----tgnx5rjr6c.xn--kp5b"); }
1376test { try parseIDNAFail("\x3066\x3002\x200c\xdb43\xdcfd\x7f3"); }
1377test { try parseIDNAFail("xn--m9j.xn--rtb10784p"); }
1378test { try parseIDNAFail("xn--m9j.xn--rtb154j9l73w"); }
1379test { try parseIDNAFail("\x3c2\xff61\xa9c0\x6e7"); }
1380test { try parseIDNAFail("\x3c2\x3002\xa9c0\x6e7"); }
1381test { try parseIDNAFail("\x3a3\x3002\xa9c0\x6e7"); }
1382test { try parseIDNAFail("\x3c3\x3002\xa9c0\x6e7"); }
1383test { try parseIDNAFail("xn--4xa.xn--3lb1944f"); }
1384test { try parseIDNAFail("xn--3xa.xn--3lb1944f"); }
1385test { try parseIDNAFail("\x3a3\xff61\xa9c0\x6e7"); }
1386test { try parseIDNAFail("\x3c3\xff61\xa9c0\x6e7"); }
1387test { try parseIDNAFail("\xbcd\xdb56\xdec5\xd9f0\xde51.\x10a2\x10b5"); }
1388test { try parseIDNAFail("\xbcd\xdb56\xdec5\xd9f0\xde51.\x2d02\x2d15"); }
1389test { try parseIDNAFail("\xbcd\xdb56\xdec5\xd9f0\xde51.\x10a2\x2d15"); }
1390test { try parseIDNAFail("xn--xmc83135idcxza.xn--tkjwb"); }
1391test { try parseIDNAFail("xn--xmc83135idcxza.xn--9md086l"); }
1392test { try parseIDNAFail("xn--xmc83135idcxza.xn--9md2b"); }
1393test { try parseIDNAFail("\x1c32\xd83c\xdd08\x2f9b\x5a6\xff0e\x200d\xda7e\xdd64\x7fd"); }
1394test { try parseIDNAFail("\x1c327,\x8d70\x5a6.\x200d\xda7e\xdd64\x7fd"); }
1395test { try parseIDNAFail("xn--7,-bid991urn3k.xn--1tb13454l"); }
1396test { try parseIDNAFail("xn--7,-bid991urn3k.xn--1tb334j1197q"); }
1397test { try parseIDNAFail("xn--xcb756i493fwi5o.xn--1tb13454l"); }
1398test { try parseIDNAFail("xn--xcb756i493fwi5o.xn--1tb334j1197q"); }
1399test { try parseIDNAFail("\x1897\xff61\x4c0\xd934\xdd3b"); }
1400test { try parseIDNAFail("\x1897\x3002\x4c0\xd934\xdd3b"); }
1401test { try parseIDNAFail("\x1897\x3002\x4cf\xd934\xdd3b"); }
1402test { try parseIDNAFail("xn--hbf.xn--s5a83117e"); }
1403test { try parseIDNAFail("\x1897\xff61\x4cf\xd934\xdd3b"); }
1404test { try parseIDNAFail("xn--hbf.xn--d5a86117e"); }
1405test { try parseIDNAFail("\xd807\xdc98\xdb40\xdd12\xd80d\xdc61\xff61\xd835\xdfea\x10bc"); }
1406test { try parseIDNAFail("\xd807\xdc98\xdb40\xdd12\xd80d\xdc61\x30028\x10bc"); }
1407test { try parseIDNAFail("\xd807\xdc98\xdb40\xdd12\xd80d\xdc61\x30028\x2d1c"); }
1408test { try parseIDNAFail("xn--7m3d291b.xn--8-vws"); }
1409test { try parseIDNAFail("\xd807\xdc98\xdb40\xdd12\xd80d\xdc61\xff61\xd835\xdfea\x2d1c"); }
1410test { try parseIDNAFail("xn--7m3d291b.xn--8-s1g"); }
1411test { try parseIDNAFail("\x1bab\xff61\xd83c\xdc89\xdb40\xdc70"); }
1412test { try parseIDNAFail("\x1bab\x3002\xd83c\xdc89\xdb40\xdc70"); }
1413test { try parseIDNAFail("xn--zxf.xn--fx7ho0250c"); }
1414test { try parseIDNAFail("\xdb71\xdeb6\xdba0\xded6\xda1a\xde70-\x3002\x200c"); }
1415test { try parseIDNAFail("xn----7i12hu122k9ire."); }
1416test { try parseIDNAFail("xn----7i12hu122k9ire.xn--0ug"); }
1417test { try parseIDNAFail("\xfe12\xff0e\xfe2f\xd805\xdc42"); }
1418test { try parseIDNAFail("\xfe12\xff0e\xd805\xdc42\xfe2f"); }
1419test { try parseIDNAFail("\x3002.\xd805\xdc42\xfe2f"); }
1420test { try parseIDNAFail("..xn--s96cu30b"); }
1421test { try parseIDNAFail("xn--y86c.xn--s96cu30b"); }
1422test { try parseIDNAFail("\xa92c\x3002\x200d"); }
1423test { try parseIDNAFail("xn--zi9a."); }
1424test { try parseIDNAFail("xn--zi9a.xn--1ug"); }
1425test { try parseIDNAFail("\xdb58\xde04\x3002-"); }
1426test { try parseIDNAFail("xn--xm38e.-"); }
1427test { try parseIDNAFail("\x22e0\xd800\xdeee\xff0e\xda98\xde2e\xf18\xdf\x226f"); }
1428test { try parseIDNAFail("\x227c\x338\xd800\xdeee\xff0e\xda98\xde2e\xf18\xdf>\x338"); }
1429test { try parseIDNAFail("\x22e0\xd800\xdeee.\xda98\xde2e\xf18\xdf\x226f"); }
1430test { try parseIDNAFail("\x227c\x338\xd800\xdeee.\xda98\xde2e\xf18\xdf>\x338"); }
1431test { try parseIDNAFail("\x227c\x338\xd800\xdeee.\xda98\xde2e\xf18SS>\x338"); }
1432test { try parseIDNAFail("\x22e0\xd800\xdeee.\xda98\xde2e\xf18SS\x226f"); }
1433test { try parseIDNAFail("\x22e0\xd800\xdeee.\xda98\xde2e\xf18ss\x226f"); }
1434test { try parseIDNAFail("\x227c\x338\xd800\xdeee.\xda98\xde2e\xf18ss>\x338"); }
1435test { try parseIDNAFail("\x227c\x338\xd800\xdeee.\xda98\xde2e\xf18Ss>\x338"); }
1436test { try parseIDNAFail("\x22e0\xd800\xdeee.\xda98\xde2e\xf18Ss\x226f"); }
1437test { try parseIDNAFail("xn--pgh4639f.xn--ss-ifj426nle504a"); }
1438test { try parseIDNAFail("xn--pgh4639f.xn--zca593eo6oc013y"); }
1439test { try parseIDNAFail("\x227c\x338\xd800\xdeee\xff0e\xda98\xde2e\xf18SS>\x338"); }
1440test { try parseIDNAFail("\x22e0\xd800\xdeee\xff0e\xda98\xde2e\xf18SS\x226f"); }
1441test { try parseIDNAFail("\x22e0\xd800\xdeee\xff0e\xda98\xde2e\xf18ss\x226f"); }
1442test { try parseIDNAFail("\x227c\x338\xd800\xdeee\xff0e\xda98\xde2e\xf18ss>\x338"); }
1443test { try parseIDNAFail("\x227c\x338\xd800\xdeee\xff0e\xda98\xde2e\xf18Ss>\x338"); }
1444test { try parseIDNAFail("\x22e0\xd800\xdeee\xff0e\xda98\xde2e\xf18Ss\x226f"); }
1445test { try parseIDNAFail("\x330\xff0e\xdb81\xdf31\x8680"); }
1446test { try parseIDNAFail("\x330.\xdb81\xdf31\x8680"); }
1447test { try parseIDNAFail("xn--xta.xn--e91aw9417e"); }
1448test { try parseIDNAFail("\xd83e\xdc9f\xd83c\xdd08\x200d\xa84e\xff61\xf84"); }
1449test { try parseIDNAFail("\xd83e\xdc9f7,\x200d\xa84e\x3002\xf84"); }
1450test { try parseIDNAFail("xn--7,-gh9hg322i.xn--3ed"); }
1451test { try parseIDNAFail("xn--7,-n1t0654eqo3o.xn--3ed"); }
1452test { try parseIDNAFail("xn--nc9aq743ds0e.xn--3ed"); }
1453test { try parseIDNAFail("xn--1ug4874cfd0kbmg.xn--3ed"); }
1454test { try parseIDNAFail("\xa854\x3002\x1039\x1887"); }
1455test { try parseIDNAFail("xn--tc9a.xn--9jd663b"); }
1456test { try parseIDNAFail("\x20eb\x226e.\xd836\xde16"); }
1457test { try parseIDNAFail("\x20eb<\x338.\xd836\xde16"); }
1458test { try parseIDNAFail("xn--e1g71d.xn--772h"); }
1459test { try parseIDNAFail("\x200c.\x226f"); }
1460test { try parseIDNAFail("\x200c.>\x338"); }
1461test { try parseIDNAFail("xn--0ug.xn--hdh"); }
1462test { try parseIDNAFail("\xd880\xdd67\xd94e\xde60-\xff0e\xabed-\x609c"); }
1463test { try parseIDNAFail("\xd880\xdd67\xd94e\xde60-.\xabed-\x609c"); }
1464test { try parseIDNAFail("xn----7m53aj640l.xn----8f4br83t"); }
1465test { try parseIDNAFail("\x1849\xd899\xdce7\x2b1e\x189c.-\x200d\xd83a\xdcd1\x202e"); }
1466test { try parseIDNAFail("xn--87e0ol04cdl39e.xn----qinu247r"); }
1467test { try parseIDNAFail("xn--87e0ol04cdl39e.xn----ugn5e3763s"); }
1468test { try parseIDNAFail("xn--ynd2415j.xn--5-dug9054m"); }
1469test { try parseIDNAFail("\x200d-\x1839\xfe6a.\x1de1\x1922"); }
1470test { try parseIDNAFail("\x200d-\x1839%.\x1de1\x1922"); }
1471test { try parseIDNAFail("xn---%-u4o.xn--gff52t"); }
1472test { try parseIDNAFail("xn---%-u4oy48b.xn--gff52t"); }
1473test { try parseIDNAFail("xn----c6jx047j.xn--gff52t"); }
1474test { try parseIDNAFail("xn----c6j614b1z4v.xn--gff52t"); }
1475test { try parseIDNAFail("\xd84e\xde6b\xff0e\xd9f1\xdc72"); }
1476test { try parseIDNAFail("\xd84e\xde6b.\xd9f1\xdc72"); }
1477test { try parseIDNAFail("xn--td3j.xn--4628b"); }
1478test { try parseIDNAFail("\xc4d\xd836\xde3e\x5a9\xd835\xdfed\x3002-\xd805\xdf28"); }
1479test { try parseIDNAFail("\xc4d\xd836\xde3e\x5a91\x3002-\xd805\xdf28"); }
1480test { try parseIDNAFail("xn--1-rfc312cdp45c.xn----nq0j"); }
1481test { try parseIDNAFail("\xda4f\xdfc8\x3002\xb64f"); }
1482test { try parseIDNAFail("\xda4f\xdfc8\x3002\x1104\x116b\x11ae"); }
1483test { try parseIDNAFail("xn--ph26c.xn--281b"); }
1484test { try parseIDNAFail("\xd916\xde1a\xdb40\xdd0c\xdb07\xdf40\x1840.\x8b6"); }
1485test { try parseIDNAFail("xn--z7e98100evc01b.xn--czb"); }
1486test { try parseIDNAFail("\x200d\xff61\xd8d4\xdc5b"); }
1487test { try parseIDNAFail("\x200d\x3002\xd8d4\xdc5b"); }
1488test { try parseIDNAFail(".xn--6x4u"); }
1489test { try parseIDNAFail("xn--1ug.xn--6x4u"); }
1490test { try parseIDNAFail("\xfff9\x200c\xff61\x66f3\x2f91\xd800\xdef0\x226f"); }
1491test { try parseIDNAFail("\xfff9\x200c\xff61\x66f3\x2f91\xd800\xdef0>\x338"); }
1492test { try parseIDNAFail("\xfff9\x200c\x3002\x66f3\x897e\xd800\xdef0\x226f"); }
1493test { try parseIDNAFail("\xfff9\x200c\x3002\x66f3\x897e\xd800\xdef0>\x338"); }
1494test { try parseIDNAFail("xn--vn7c.xn--hdh501y8wvfs5h"); }
1495test { try parseIDNAFail("xn--0ug2139f.xn--hdh501y8wvfs5h"); }
1496test { try parseIDNAFail("\x226f\x2488\x3002\xdf"); }
1497test { try parseIDNAFail(">\x338\x2488\x3002\xdf"); }
1498test { try parseIDNAFail(">\x338\x2488\x3002SS"); }
1499test { try parseIDNAFail("\x226f\x2488\x3002SS"); }
1500test { try parseIDNAFail("\x226f\x2488\x3002ss"); }
1501test { try parseIDNAFail(">\x338\x2488\x3002ss"); }
1502test { try parseIDNAFail(">\x338\x2488\x3002Ss"); }
1503test { try parseIDNAFail("\x226f\x2488\x3002Ss"); }
1504test { try parseIDNAFail("xn--hdh84f.ss"); }
1505test { try parseIDNAFail("xn--hdh84f.xn--zca"); }
1506test { try parseIDNAFail("\x200c\xff61\x2260"); }
1507test { try parseIDNAFail("\x200c\xff61=\x338"); }
1508test { try parseIDNAFail("\x200c\x3002\x2260"); }
1509test { try parseIDNAFail("\x200c\x3002=\x338"); }
1510test { try parseIDNAFail("xn--0ug.xn--1ch"); }
1511test { try parseIDNAFail("\xd805\xddbf\xd836\xde14.\x185f\xd805\xddbf\x1b42\x200c"); }
1512test { try parseIDNAFail("xn--461dw464a.xn--v8e29loy65a"); }
1513test { try parseIDNAFail("xn--461dw464a.xn--v8e29ldzfo952a"); }
1514test { try parseIDNAFail("\xda12\xdcf3\x200d\xda05\xdf71.\xd81a\xdf34\x2183\x2260-"); }
1515test { try parseIDNAFail("\xda12\xdcf3\x200d\xda05\xdf71.\xd81a\xdf34\x2183=\x338-"); }
1516test { try parseIDNAFail("\xda12\xdcf3\x200d\xda05\xdf71.\xd81a\xdf34\x2184=\x338-"); }
1517test { try parseIDNAFail("\xda12\xdcf3\x200d\xda05\xdf71.\xd81a\xdf34\x2184\x2260-"); }
1518test { try parseIDNAFail("xn--6j00chy9a.xn----81n51bt713h"); }
1519test { try parseIDNAFail("xn--1ug15151gkb5a.xn----81n51bt713h"); }
1520test { try parseIDNAFail("xn--6j00chy9a.xn----61n81bt713h"); }
1521test { try parseIDNAFail("xn--1ug15151gkb5a.xn----61n81bt713h"); }
1522test { try parseIDNAFail("\x200d\x252e\xdb40\xddd0\xff0e\xc00\xc4d\x1734\x200d"); }
1523test { try parseIDNAFail("\x200d\x252e\xdb40\xddd0.\xc00\xc4d\x1734\x200d"); }
1524test { try parseIDNAFail("xn--kxh.xn--eoc8m432a"); }
1525test { try parseIDNAFail("xn--1ug04r.xn--eoc8m432a40i"); }
1526test { try parseIDNAFail("\xdaa5\xdeaa\xff61\xd83c\xdd02"); }
1527test { try parseIDNAFail("\xdaa5\xdeaa\x30021,"); }
1528test { try parseIDNAFail("xn--n433d.1,"); }
1529test { try parseIDNAFail("xn--n433d.xn--v07h"); }
1530test { try parseIDNAFail("\xd804\xdf68\x520d.\xd83d\xdee6"); }
1531test { try parseIDNAFail("xn--rbry728b.xn--y88h"); }
1532test { try parseIDNAFail("\xdb40\xdf0f3\xff61\x1bf1\xd835\xdfd2"); }
1533test { try parseIDNAFail("\xdb40\xdf0f3\x3002\x1bf14"); }
1534test { try parseIDNAFail("xn--3-ib31m.xn--4-pql"); }
1535test { try parseIDNAFail("\xa87d\x226f\xff0e\xdaaf\xdc80\xda0b\xdcc4"); }
1536test { try parseIDNAFail("\xa87d>\x338\xff0e\xdaaf\xdc80\xda0b\xdcc4"); }
1537test { try parseIDNAFail("\xa87d\x226f.\xdaaf\xdc80\xda0b\xdcc4"); }
1538test { try parseIDNAFail("\xa87d>\x338.\xdaaf\xdc80\xda0b\xdcc4"); }
1539test { try parseIDNAFail("xn--hdh8193c.xn--5z40cp629b"); }
1540test { try parseIDNAFail("\xdb43\xdcdb\xff0e\x200d\x492b\x2260\x10be"); }
1541test { try parseIDNAFail("\xdb43\xdcdb\xff0e\x200d\x492b=\x338\x10be"); }
1542test { try parseIDNAFail("\xdb43\xdcdb.\x200d\x492b\x2260\x10be"); }
1543test { try parseIDNAFail("\xdb43\xdcdb.\x200d\x492b=\x338\x10be"); }
1544test { try parseIDNAFail("\xdb43\xdcdb.\x200d\x492b=\x338\x2d1e"); }
1545test { try parseIDNAFail("\xdb43\xdcdb.\x200d\x492b\x2260\x2d1e"); }
1546test { try parseIDNAFail("xn--1t56e.xn--1ch153bqvw"); }
1547test { try parseIDNAFail("xn--1t56e.xn--1ug73gzzpwi3a"); }
1548test { try parseIDNAFail("\xdb43\xdcdb\xff0e\x200d\x492b=\x338\x2d1e"); }
1549test { try parseIDNAFail("\xdb43\xdcdb\xff0e\x200d\x492b\x2260\x2d1e"); }
1550test { try parseIDNAFail("xn--1t56e.xn--2nd141ghl2a"); }
1551test { try parseIDNAFail("xn--1t56e.xn--2nd159e9vb743e"); }
1552test { try parseIDNAFail("3.1.xn--110d.j"); }
1553test { try parseIDNAFail("xn--tshd3512p.j"); }
1554test { try parseIDNAFail("\x34a\xff0e\xd802\xde0e"); }
1555test { try parseIDNAFail("\x34a.\xd802\xde0e"); }
1556test { try parseIDNAFail("xn--oua.xn--mr9c"); }
1557test { try parseIDNAFail("\xd6c9\x226e\xff61\xe34"); }
1558test { try parseIDNAFail("\x1112\x116e\x11ac<\x338\xff61\xe34"); }
1559test { try parseIDNAFail("\xd6c9\x226e\x3002\xe34"); }
1560test { try parseIDNAFail("\x1112\x116e\x11ac<\x338\x3002\xe34"); }
1561test { try parseIDNAFail("xn--gdh2512e.xn--i4c"); }
1562test { try parseIDNAFail("xn--fc9a.xn----qmg787k869k"); }
1563test { try parseIDNAFail("\x226e\xd834\xdd76\xff0e\xd987\xdc81\xaaec\x2e48\xdb82\xdd6d"); }
1564test { try parseIDNAFail("<\x338\xd834\xdd76\xff0e\xd987\xdc81\xaaec\x2e48\xdb82\xdd6d"); }
1565test { try parseIDNAFail("\x226e\xd834\xdd76.\xd987\xdc81\xaaec\x2e48\xdb82\xdd6d"); }
1566test { try parseIDNAFail("<\x338\xd834\xdd76.\xd987\xdc81\xaaec\x2e48\xdb82\xdd6d"); }
1567test { try parseIDNAFail("xn--gdh.xn--4tjx101bsg00ds9pyc"); }
1568test { try parseIDNAFail("xn--gdh0880o.xn--4tjx101bsg00ds9pyc"); }
1569test { try parseIDNAFail("\xd805\xdc42\xff61\x200d\xdb55\xdf80\xd83d\xdf95\xda54\xdc54"); }
1570test { try parseIDNAFail("\xd805\xdc42\x3002\x200d\xdb55\xdf80\xd83d\xdf95\xda54\xdc54"); }
1571test { try parseIDNAFail("xn--8v1d.xn--ye9h41035a2qqs"); }
1572test { try parseIDNAFail("xn--8v1d.xn--1ug1386plvx1cd8vya"); }
1573test { try parseIDNAFail("-\x200c\x2499\xd802\xdee5\xff61\xd836\xde35"); }
1574test { try parseIDNAFail("-\x200c18.\xd802\xdee5\x3002\xd836\xde35"); }
1575test { try parseIDNAFail("-18.xn--rx9c.xn--382h"); }
1576test { try parseIDNAFail("xn---18-9m0a.xn--rx9c.xn--382h"); }
1577test { try parseIDNAFail("xn----ddps939g.xn--382h"); }
1578test { try parseIDNAFail("xn----sgn18r3191a.xn--382h"); }
1579test { try parseIDNAFail("\xfe05\xfe12\x3002\xd858\xdc3e\x1ce0"); }
1580test { try parseIDNAFail("xn--y86c.xn--t6f5138v"); }
1581test { try parseIDNAFail("\xdb41\xdd4f\xff0e-\xdf\x200c\x2260"); }
1582test { try parseIDNAFail("\xdb41\xdd4f\xff0e-\xdf\x200c=\x338"); }
1583test { try parseIDNAFail("\xdb41\xdd4f.-\xdf\x200c\x2260"); }
1584test { try parseIDNAFail("\xdb41\xdd4f.-\xdf\x200c=\x338"); }
1585test { try parseIDNAFail("\xdb41\xdd4f.-SS\x200c=\x338"); }
1586test { try parseIDNAFail("\xdb41\xdd4f.-SS\x200c\x2260"); }
1587test { try parseIDNAFail("\xdb41\xdd4f.-ss\x200c\x2260"); }
1588test { try parseIDNAFail("\xdb41\xdd4f.-ss\x200c=\x338"); }
1589test { try parseIDNAFail("\xdb41\xdd4f.-Ss\x200c=\x338"); }
1590test { try parseIDNAFail("\xdb41\xdd4f.-Ss\x200c\x2260"); }
1591test { try parseIDNAFail("xn--u836e.xn---ss-gl2a"); }
1592test { try parseIDNAFail("xn--u836e.xn---ss-cn0at5l"); }
1593test { try parseIDNAFail("xn--u836e.xn----qfa750ve7b"); }
1594test { try parseIDNAFail("\xdb41\xdd4f\xff0e-SS\x200c=\x338"); }
1595test { try parseIDNAFail("\xdb41\xdd4f\xff0e-SS\x200c\x2260"); }
1596test { try parseIDNAFail("\xdb41\xdd4f\xff0e-ss\x200c\x2260"); }
1597test { try parseIDNAFail("\xdb41\xdd4f\xff0e-ss\x200c=\x338"); }
1598test { try parseIDNAFail("\xdb41\xdd4f\xff0e-Ss\x200c=\x338"); }
1599test { try parseIDNAFail("\xdb41\xdd4f\xff0e-Ss\x200c\x2260"); }
1600test { try parseIDNAFail("\x1859\x200c\xff61\x226f\xd800\xdef2\x2260"); }
1601test { try parseIDNAFail("\x1859\x200c\xff61>\x338\xd800\xdef2=\x338"); }
1602test { try parseIDNAFail("\x1859\x200c\x3002\x226f\xd800\xdef2\x2260"); }
1603test { try parseIDNAFail("\x1859\x200c\x3002>\x338\xd800\xdef2=\x338"); }
1604test { try parseIDNAFail("xn--p8e650b.xn--1ch3a7084l"); }
1605test { try parseIDNAFail("\xda7b\xdd5b\x613.\x10b5"); }
1606test { try parseIDNAFail("\xda7b\xdd5b\x613.\x2d15"); }
1607test { try parseIDNAFail("xn--1fb94204l.xn--dlj"); }
1608test { try parseIDNAFail("xn--1fb94204l.xn--tnd"); }
1609test { try parseIDNAFail("\x200c\xdb40\xdd37\xff61\xda09\xdc41"); }
1610test { try parseIDNAFail("\x200c\xdb40\xdd37\x3002\xda09\xdc41"); }
1611test { try parseIDNAFail(".xn--w720c"); }
1612test { try parseIDNAFail("xn--0ug.xn--w720c"); }
1613test { try parseIDNAFail("\x2488\xdd6\x7105.\xdb1e\xdc59\x200d\xa85f"); }
1614test { try parseIDNAFail("1.\xdd6\x7105.\xdb1e\xdc59\x200d\xa85f"); }
1615test { try parseIDNAFail("1.xn--t1c6981c.xn--4c9a21133d"); }
1616test { try parseIDNAFail("1.xn--t1c6981c.xn--1ugz184c9lw7i"); }
1617test { try parseIDNAFail("xn--t1c337io97c.xn--4c9a21133d"); }
1618test { try parseIDNAFail("xn--t1c337io97c.xn--1ugz184c9lw7i"); }
1619test { try parseIDNAFail("\xd804\xddc0\x258d.\x205e\x1830"); }
1620test { try parseIDNAFail("xn--9zh3057f.xn--j7e103b"); }
1621test { try parseIDNAFail("-3.\x200d\x30cc\x1895"); }
1622test { try parseIDNAFail("-3.xn--fbf739aq5o"); }
1623test { try parseIDNAFail("\x2132\x17d2\x200d\xff61\x2260\x200d\x200c"); }
1624test { try parseIDNAFail("\x2132\x17d2\x200d\xff61=\x338\x200d\x200c"); }
1625test { try parseIDNAFail("\x2132\x17d2\x200d\x3002\x2260\x200d\x200c"); }
1626test { try parseIDNAFail("\x2132\x17d2\x200d\x3002=\x338\x200d\x200c"); }
1627test { try parseIDNAFail("\x214e\x17d2\x200d\x3002=\x338\x200d\x200c"); }
1628test { try parseIDNAFail("\x214e\x17d2\x200d\x3002\x2260\x200d\x200c"); }
1629test { try parseIDNAFail("xn--u4e823bq1a.xn--0ugb89o"); }
1630test { try parseIDNAFail("\x214e\x17d2\x200d\xff61=\x338\x200d\x200c"); }
1631test { try parseIDNAFail("\x214e\x17d2\x200d\xff61\x2260\x200d\x200c"); }
1632test { try parseIDNAFail("xn--u4e319b.xn--1ch"); }
1633test { try parseIDNAFail("xn--u4e823bcza.xn--0ugb89o"); }
1634test { try parseIDNAFail("\xd9a9\xdd2f\xfa8\xff0e\x226f"); }
1635test { try parseIDNAFail("\xd9a9\xdd2f\xfa8\xff0e>\x338"); }
1636test { try parseIDNAFail("\xd9a9\xdd2f\xfa8.\x226f"); }
1637test { try parseIDNAFail("\xd9a9\xdd2f\xfa8.>\x338"); }
1638test { try parseIDNAFail("xn--4fd57150h.xn--hdh"); }
1639test { try parseIDNAFail("\xd802\xde3f\xdb40\xdd8c\x9e2e\xd805\xdeb6.\x3c2"); }
1640test { try parseIDNAFail("\xd802\xde3f\xdb40\xdd8c\x9e2e\xd805\xdeb6.\x3a3"); }
1641test { try parseIDNAFail("\xd802\xde3f\xdb40\xdd8c\x9e2e\xd805\xdeb6.\x3c3"); }
1642test { try parseIDNAFail("xn--l76a726rt2h.xn--4xa"); }
1643test { try parseIDNAFail("xn--l76a726rt2h.xn--3xa"); }
1644test { try parseIDNAFail("\x3c2-\x3002\x200c\xd835\xdfed-"); }
1645test { try parseIDNAFail("\x3c2-\x3002\x200c1-"); }
1646test { try parseIDNAFail("\x3a3-\x3002\x200c1-"); }
1647test { try parseIDNAFail("\x3c3-\x3002\x200c1-"); }
1648test { try parseIDNAFail("xn----zmb.xn--1--i1t"); }
1649test { try parseIDNAFail("xn----xmb.xn--1--i1t"); }
1650test { try parseIDNAFail("\x3a3-\x3002\x200c\xd835\xdfed-"); }
1651test { try parseIDNAFail("\x3c3-\x3002\x200c\xd835\xdfed-"); }
1652test { try parseIDNAFail("\x1734-\xce2\xff0e\xdb40\xdd29\x10a4"); }
1653test { try parseIDNAFail("\x1734-\xce2.\xdb40\xdd29\x10a4"); }
1654test { try parseIDNAFail("\x1734-\xce2.\xdb40\xdd29\x2d04"); }
1655test { try parseIDNAFail("xn----ggf830f.xn--vkj"); }
1656test { try parseIDNAFail("\x1734-\xce2\xff0e\xdb40\xdd29\x2d04"); }
1657test { try parseIDNAFail("xn----ggf830f.xn--cnd"); }
1658test { try parseIDNAFail("\x200d\x3002\xd838\xdc18\x2488\xa84d\x64c9"); }
1659test { try parseIDNAFail("\x200d\x3002\xd838\xdc181.\xa84d\x64c9"); }
1660test { try parseIDNAFail(".xn--1-1p4r.xn--s7uv61m"); }
1661test { try parseIDNAFail("xn--1ug.xn--1-1p4r.xn--s7uv61m"); }
1662test { try parseIDNAFail(".xn--tsh026uql4bew9p"); }
1663test { try parseIDNAFail("xn--1ug.xn--tsh026uql4bew9p"); }
1664test { try parseIDNAFail("\x2ad0\xff61\x10c0-\xdacd\xdc22"); }
1665test { try parseIDNAFail("\x2ad0\x3002\x10c0-\xdacd\xdc22"); }
1666test { try parseIDNAFail("\x2ad0\x3002\x2d20-\xdacd\xdc22"); }
1667test { try parseIDNAFail("xn--r3i.xn----2wst7439i"); }
1668test { try parseIDNAFail("\x2ad0\xff61\x2d20-\xdacd\xdc22"); }
1669test { try parseIDNAFail("xn--r3i.xn----z1g58579u"); }
1670test { try parseIDNAFail("\xd805\xdc42\x25ca\xff0e\x299f\x2220"); }
1671test { try parseIDNAFail("\xd805\xdc42\x25ca.\x299f\x2220"); }
1672test { try parseIDNAFail("xn--01h3338f.xn--79g270a"); }
1673test { try parseIDNAFail("\xd5c1\xdb21\xdd99\xe3a\xdb28\xdf5a\x3002\x6ba\xd835\xdfdc"); }
1674test { try parseIDNAFail("\x1112\x1164\x11bc\xdb21\xdd99\xe3a\xdb28\xdf5a\x3002\x6ba\xd835\xdfdc"); }
1675test { try parseIDNAFail("\xd5c1\xdb21\xdd99\xe3a\xdb28\xdf5a\x3002\x6ba4"); }
1676test { try parseIDNAFail("\x1112\x1164\x11bc\xdb21\xdd99\xe3a\xdb28\xdf5a\x3002\x6ba4"); }
1677test { try parseIDNAFail("xn--o4c1723h8g85gt4ya.xn--4-dvc"); }
1678test { try parseIDNAFail("\xa953.\x33d\xd804\xdcbd\x998b"); }
1679test { try parseIDNAFail("xn--3j9a.xn--bua0708eqzrd"); }
1680test { try parseIDNAFail("\xdae2\xdedd\xda69\xdef8\x200d\xff61\x4716"); }
1681test { try parseIDNAFail("\xdae2\xdedd\xda69\xdef8\x200d\x3002\x4716"); }
1682test { try parseIDNAFail("xn--g138cxw05a.xn--k0o"); }
1683test { try parseIDNAFail("xn--1ug30527h9mxi.xn--k0o"); }
1684test { try parseIDNAFail("\x186f\x2689\x59f6\xd83c\xdd09\xff0e\x6f7\x200d\xd83c\xdfaa\x200d"); }
1685test { try parseIDNAFail("\x186f\x2689\x59f68,.\x6f7\x200d\xd83c\xdfaa\x200d"); }
1686test { try parseIDNAFail("xn--8,-g9oy26fzu4d.xn--kmb859ja94998b"); }
1687test { try parseIDNAFail("xn--c9e433epi4b3j20a.xn--kmb6733w"); }
1688test { try parseIDNAFail("xn--c9e433epi4b3j20a.xn--kmb859ja94998b"); }
1689test { try parseIDNAFail("\x135f\x1848\x200c\xff0e\xfe12-\xd81b\xdf90-"); }
1690test { try parseIDNAFail("\x135f\x1848\x200c.\x3002-\xd81b\xdf90-"); }
1691test { try parseIDNAFail("xn--b7d82w..xn-----pe4u"); }
1692test { try parseIDNAFail("xn--b7d82wo4h..xn-----pe4u"); }
1693test { try parseIDNAFail("xn--b7d82w.xn-----c82nz547a"); }
1694test { try parseIDNAFail("xn--b7d82wo4h.xn-----c82nz547a"); }
1695test { try parseIDNAFail("\xd836\xde5c\x3002-\xb4d\x10ab"); }
1696test { try parseIDNAFail("\xd836\xde5c\x3002-\xb4d\x2d0b"); }
1697test { try parseIDNAFail("xn--792h.xn----bse820x"); }
1698test { try parseIDNAFail("xn--792h.xn----bse632b"); }
1699test { try parseIDNAFail("\xd835\xdff5\x9681\x2bee\xff0e\x180d\x200c"); }
1700test { try parseIDNAFail("9\x9681\x2bee.\x180d\x200c"); }
1701test { try parseIDNAFail("xn--9-mfs8024b.xn--0ug"); }
1702test { try parseIDNAFail("\x1bac\x10ac\x200c\x325\x3002\xd835\xdff8"); }
1703test { try parseIDNAFail("xn--mta176jjjm.c"); }
1704test { try parseIDNAFail("xn--mta176j97cl2q.c"); }
1705test { try parseIDNAFail("\x1bac\x2d0c\x200c\x325\x3002\xd835\xdff8"); }
1706test { try parseIDNAFail("xn--mta930emri.c"); }
1707test { try parseIDNAFail("xn--mta930emribme.c"); }
1708test { try parseIDNAFail("\xdb40\xdd01\x35f\x2fb6\xff61\x2087\xfe12\xb207\x226e"); }
1709test { try parseIDNAFail("\xdb40\xdd01\x35f\x2fb6\xff61\x2087\xfe12\x1102\x116e\x11aa<\x338"); }
1710test { try parseIDNAFail("\xdb40\xdd01\x35f\x98db\x30027\x3002\xb207\x226e"); }
1711test { try parseIDNAFail("\xdb40\xdd01\x35f\x98db\x30027\x3002\x1102\x116e\x11aa<\x338"); }
1712test { try parseIDNAFail("xn--9ua0567e.7.xn--gdh6767c"); }
1713test { try parseIDNAFail("xn--9ua0567e.xn--7-ngou006d1ttc"); }
1714test { try parseIDNAFail("\x200c\x3002\xffa0\xf84\xf96"); }
1715test { try parseIDNAFail("\x200c\x3002\x1160\xf84\xf96"); }
1716test { try parseIDNAFail(".xn--3ed0b"); }
1717test { try parseIDNAFail("xn--0ug.xn--3ed0b"); }
1718test { try parseIDNAFail(".xn--3ed0b20h"); }
1719test { try parseIDNAFail("xn--0ug.xn--3ed0b20h"); }
1720test { try parseIDNAFail(".xn--3ed0by082k"); }
1721test { try parseIDNAFail("xn--0ug.xn--3ed0by082k"); }
1722test { try parseIDNAFail("\x226f\xd9f5\xde05\xff0e\x200d\xd800\xdd7c\xda88\xdddb"); }
1723test { try parseIDNAFail(">\x338\xd9f5\xde05\xff0e\x200d\xd800\xdd7c\xda88\xdddb"); }
1724test { try parseIDNAFail("\x226f\xd9f5\xde05.\x200d\xd800\xdd7c\xda88\xdddb"); }
1725test { try parseIDNAFail(">\x338\xd9f5\xde05.\x200d\xd800\xdd7c\xda88\xdddb"); }
1726test { try parseIDNAFail("xn--hdh84488f.xn--xy7cw2886b"); }
1727test { try parseIDNAFail("xn--hdh84488f.xn--1ug8099fbjp4e"); }
1728test { try parseIDNAFail("xn--d5a07sn4u297k.xn--2e1b"); }
1729test { try parseIDNAFail("\xa8ea\xff61\xd818\xdd3f\xd804\xddbe\xdb40\xddd7"); }
1730test { try parseIDNAFail("\xa8ea\x3002\xd818\xdd3f\xd804\xddbe\xdb40\xddd7"); }
1731test { try parseIDNAFail("xn--3g9a.xn--ud1dz07k"); }
1732test { try parseIDNAFail("\xdadd\xdcd3\xd805\xdeb3\x3002\xd903\xddff\x226f\x2f87"); }
1733test { try parseIDNAFail("\xdadd\xdcd3\xd805\xdeb3\x3002\xd903\xddff>\x338\x2f87"); }
1734test { try parseIDNAFail("\xdadd\xdcd3\xd805\xdeb3\x3002\xd903\xddff\x226f\x821b"); }
1735test { try parseIDNAFail("\xdadd\xdcd3\xd805\xdeb3\x3002\xd903\xddff>\x338\x821b"); }
1736test { try parseIDNAFail("xn--3e2d79770c.xn--hdh0088abyy1c"); }
1737test { try parseIDNAFail("\xd944\xdd48\x782a\x226f\x1891\xff61\x226f\xd836\xde5a\xda0f\xdd14\x200c"); }
1738test { try parseIDNAFail("\xd944\xdd48\x782a>\x338\x1891\xff61>\x338\xd836\xde5a\xda0f\xdd14\x200c"); }
1739test { try parseIDNAFail("\xd944\xdd48\x782a\x226f\x1891\x3002\x226f\xd836\xde5a\xda0f\xdd14\x200c"); }
1740test { try parseIDNAFail("\xd944\xdd48\x782a>\x338\x1891\x3002>\x338\xd836\xde5a\xda0f\xdd14\x200c"); }
1741test { try parseIDNAFail("xn--bbf561cf95e57y3e.xn--hdh0834o7mj6b"); }
1742test { try parseIDNAFail("xn--bbf561cf95e57y3e.xn--0ugz6gc910ejro8c"); }
1743test { try parseIDNAFail("\x10c5.\xd804\xdd33\x32b8"); }
1744test { try parseIDNAFail("\x10c5.\xd804\xdd3343"); }
1745test { try parseIDNAFail("\x2d25.\xd804\xdd3343"); }
1746test { try parseIDNAFail("xn--tlj.xn--43-274o"); }
1747test { try parseIDNAFail("\x2d25.\xd804\xdd33\x32b8"); }
1748test { try parseIDNAFail("xn--9nd.xn--43-274o"); }
1749test { try parseIDNAFail("\xd91e\xdea8\xdb40\xdd09\xffa0\xfb7.\xd9a1\xdfb0\xa953"); }
1750test { try parseIDNAFail("\xd91e\xdea8\xdb40\xdd09\x1160\xfb7.\xd9a1\xdfb0\xa953"); }
1751test { try parseIDNAFail("xn--kgd72212e.xn--3j9au7544a"); }
1752test { try parseIDNAFail("xn--kgd36f9z57y.xn--3j9au7544a"); }
1753test { try parseIDNAFail("xn--kgd7493jee34a.xn--3j9au7544a"); }
1754test { try parseIDNAFail("\x618.\x6f3\x200c\xa953"); }
1755test { try parseIDNAFail("xn--6fb.xn--gmb0524f"); }
1756test { try parseIDNAFail("xn--6fb.xn--gmb469jjf1h"); }
1757test { try parseIDNAFail("\x184c\xff0e\xfe12\x1891"); }
1758test { try parseIDNAFail("xn--c8e.xn--bbf9168i"); }
1759test { try parseIDNAFail("\xd83b\xddcf\x3002\x1822\xda0d\xde06"); }
1760test { try parseIDNAFail("xn--hd7h.xn--46e66060j"); }
1761test { try parseIDNAFail("\xd9f0\xded4\xdb40\xdd8e\xdb40\xdd97\xd807\xdc95\x3002\x226e"); }
1762test { try parseIDNAFail("\xd9f0\xded4\xdb40\xdd8e\xdb40\xdd97\xd807\xdc95\x3002<\x338"); }
1763test { try parseIDNAFail("xn--4m3dv4354a.xn--gdh"); }
1764test { try parseIDNAFail("\xdb40\xdda6.\x8e3\x6680\x2260"); }
1765test { try parseIDNAFail("\xdb40\xdda6.\x8e3\x6680=\x338"); }
1766test { try parseIDNAFail(".xn--m0b461k3g2c"); }
1767test { try parseIDNAFail("\x40b9\xdbb9\xdd85\xd800\xdee6\xff0e\x200d"); }
1768test { try parseIDNAFail("\x40b9\xdbb9\xdd85\xd800\xdee6.\x200d"); }
1769test { try parseIDNAFail("xn--0on3543c5981i."); }
1770test { try parseIDNAFail("xn--0on3543c5981i.xn--1ug"); }
1771test { try parseIDNAFail("\xfe12\xff61\x10a3\x226f"); }
1772test { try parseIDNAFail("\xfe12\xff61\x10a3>\x338"); }
1773test { try parseIDNAFail("\xfe12\xff61\x2d03>\x338"); }
1774test { try parseIDNAFail("\xfe12\xff61\x2d03\x226f"); }
1775test { try parseIDNAFail("xn--y86c.xn--hdh782b"); }
1776test { try parseIDNAFail("..xn--bnd622g"); }
1777test { try parseIDNAFail("xn--y86c.xn--bnd622g"); }
1778test { try parseIDNAFail("\x7b83\x10c1-\xdb40\xdc5d\xff61\x2260-\xd83e\xdd16"); }
1779test { try parseIDNAFail("\x7b83\x10c1-\xdb40\xdc5d\xff61=\x338-\xd83e\xdd16"); }
1780test { try parseIDNAFail("\x7b83\x10c1-\xdb40\xdc5d\x3002\x2260-\xd83e\xdd16"); }
1781test { try parseIDNAFail("\x7b83\x10c1-\xdb40\xdc5d\x3002=\x338-\xd83e\xdd16"); }
1782test { try parseIDNAFail("\x7b83\x2d21-\xdb40\xdc5d\x3002=\x338-\xd83e\xdd16"); }
1783test { try parseIDNAFail("\x7b83\x2d21-\xdb40\xdc5d\x3002\x2260-\xd83e\xdd16"); }
1784test { try parseIDNAFail("xn----4wsr321ay823p.xn----tfot873s"); }
1785test { try parseIDNAFail("\x7b83\x2d21-\xdb40\xdc5d\xff61=\x338-\xd83e\xdd16"); }
1786test { try parseIDNAFail("\x7b83\x2d21-\xdb40\xdc5d\xff61\x2260-\xd83e\xdd16"); }
1787test { try parseIDNAFail("xn----11g3013fy8x5m.xn----tfot873s"); }
1788test { try parseIDNAFail("\x103a\x200d\x200c\x3002-\x200c"); }
1789test { try parseIDNAFail("xn--bkd.-"); }
1790test { try parseIDNAFail("xn--bkd412fca.xn----sgn"); }
1791test { try parseIDNAFail("\xfe12\xff61\x1b44\x1849"); }
1792test { try parseIDNAFail("\x3002\x3002\x1b44\x1849"); }
1793test { try parseIDNAFail("..xn--87e93m"); }
1794test { try parseIDNAFail("xn--y86c.xn--87e93m"); }
1795test { try parseIDNAFail("-\x1bab\xfe12\x200d.\xd90b\xdd88\xd957\xde53"); }
1796test { try parseIDNAFail("-\x1bab\x3002\x200d.\xd90b\xdd88\xd957\xde53"); }
1797test { try parseIDNAFail("xn----qml..xn--x50zy803a"); }
1798test { try parseIDNAFail("xn----qml.xn--1ug.xn--x50zy803a"); }
1799test { try parseIDNAFail("xn----qml1407i.xn--x50zy803a"); }
1800test { try parseIDNAFail("xn----qmlv7tw180a.xn--x50zy803a"); }
1801test { try parseIDNAFail("\xdb42\xddae.\x226f\xd838\xdc06"); }
1802test { try parseIDNAFail("\xdb42\xddae.>\x338\xd838\xdc06"); }
1803test { try parseIDNAFail("xn--t546e.xn--hdh5166o"); }
1804test { try parseIDNAFail("xn--skb.xn--osd737a"); }
1805test { try parseIDNAFail("\x3a1b\xd823\xdc4e.\xfe12\xd835\xdfd5\xd01"); }
1806test { try parseIDNAFail("xn--mbm8237g.xn--7-7hf1526p"); }
1807test { try parseIDNAFail("\xdf\x200c\xaaf6\x18a5\xff0e\x22b6\x10c1\x10b6"); }
1808test { try parseIDNAFail("\xdf\x200c\xaaf6\x18a5.\x22b6\x10c1\x10b6"); }
1809test { try parseIDNAFail("\xdf\x200c\xaaf6\x18a5.\x22b6\x2d21\x2d16"); }
1810test { try parseIDNAFail("SS\x200c\xaaf6\x18a5.\x22b6\x10c1\x10b6"); }
1811test { try parseIDNAFail("ss\x200c\xaaf6\x18a5.\x22b6\x2d21\x2d16"); }
1812test { try parseIDNAFail("Ss\x200c\xaaf6\x18a5.\x22b6\x10c1\x2d16"); }
1813test { try parseIDNAFail("xn--ss-4ep585bkm5p.xn--ifh802b6a"); }
1814test { try parseIDNAFail("xn--zca682johfi89m.xn--ifh802b6a"); }
1815test { try parseIDNAFail("\xdf\x200c\xaaf6\x18a5\xff0e\x22b6\x2d21\x2d16"); }
1816test { try parseIDNAFail("SS\x200c\xaaf6\x18a5\xff0e\x22b6\x10c1\x10b6"); }
1817test { try parseIDNAFail("ss\x200c\xaaf6\x18a5\xff0e\x22b6\x2d21\x2d16"); }
1818test { try parseIDNAFail("Ss\x200c\xaaf6\x18a5\xff0e\x22b6\x10c1\x2d16"); }
1819test { try parseIDNAFail("xn--ss-4epx629f.xn--5nd703gyrh"); }
1820test { try parseIDNAFail("xn--ss-4ep585bkm5p.xn--5nd703gyrh"); }
1821test { try parseIDNAFail("xn--ss-4epx629f.xn--undv409k"); }
1822test { try parseIDNAFail("xn--ss-4ep585bkm5p.xn--undv409k"); }
1823test { try parseIDNAFail("xn--zca682johfi89m.xn--undv409k"); }
1824test { try parseIDNAFail("\x200d\x3002\x3c2\xdb40\xdc49"); }
1825test { try parseIDNAFail("\x200d\x3002\x3a3\xdb40\xdc49"); }
1826test { try parseIDNAFail("\x200d\x3002\x3c3\xdb40\xdc49"); }
1827test { try parseIDNAFail(".xn--4xa24344p"); }
1828test { try parseIDNAFail("xn--1ug.xn--4xa24344p"); }
1829test { try parseIDNAFail("xn--1ug.xn--3xa44344p"); }
1830test { try parseIDNAFail("\x2492\xda61\xde19\xda8f\xdce0\xd805\xdcc0.-\xdb3a\xdc4a"); }
1831test { try parseIDNAFail("11.\xda61\xde19\xda8f\xdce0\xd805\xdcc0.-\xdb3a\xdc4a"); }
1832test { try parseIDNAFail("11.xn--uz1d59632bxujd.xn----x310m"); }
1833test { try parseIDNAFail("xn--3shy698frsu9dt1me.xn----x310m"); }
1834test { try parseIDNAFail("-\xff61\x200d"); }
1835test { try parseIDNAFail("-\x3002\x200d"); }
1836test { try parseIDNAFail("-.xn--1ug"); }
1837test { try parseIDNAFail("\x126c\xda12\xdc3c\xd8c5\xddf6\xff61\xd802\xde2c\xd835\xdfe0"); }
1838test { try parseIDNAFail("\x126c\xda12\xdc3c\xd8c5\xddf6\x3002\xd802\xde2c8"); }
1839test { try parseIDNAFail("xn--d0d41273c887z.xn--8-ob5i"); }
1840test { try parseIDNAFail("\x3c2\x200d-.\x10c3\xd859\xdfd9"); }
1841test { try parseIDNAFail("\x3c2\x200d-.\x2d23\xd859\xdfd9"); }
1842test { try parseIDNAFail("\x3a3\x200d-.\x10c3\xd859\xdfd9"); }
1843test { try parseIDNAFail("\x3c3\x200d-.\x2d23\xd859\xdfd9"); }
1844test { try parseIDNAFail("xn----zmb048s.xn--rlj2573p"); }
1845test { try parseIDNAFail("xn----xmb348s.xn--rlj2573p"); }
1846test { try parseIDNAFail("xn----zmb.xn--7nd64871a"); }
1847test { try parseIDNAFail("xn----zmb048s.xn--7nd64871a"); }
1848test { try parseIDNAFail("xn----xmb348s.xn--7nd64871a"); }
1849test { try parseIDNAFail("\xdad6\xdf3d.\x8814"); }
1850test { try parseIDNAFail("xn--g747d.xn--xl2a"); }
1851test { try parseIDNAFail("\x8e6\x200d\xff0e\xbf3d"); }
1852test { try parseIDNAFail("\x8e6\x200d\xff0e\x1108\x1168\x11c0"); }
1853test { try parseIDNAFail("\x8e6\x200d.\xbf3d"); }
1854test { try parseIDNAFail("\x8e6\x200d.\x1108\x1168\x11c0"); }
1855test { try parseIDNAFail("xn--p0b.xn--e43b"); }
1856test { try parseIDNAFail("xn--p0b869i.xn--e43b"); }
1857test { try parseIDNAFail("\xd8f6\xde3d\xff0e\xd8ef\xde15"); }
1858test { try parseIDNAFail("\xd8f6\xde3d.\xd8ef\xde15"); }
1859test { try parseIDNAFail("xn--pr3x.xn--rv7w"); }
1860test { try parseIDNAFail("\xd802\xdfc0\xd803\xde09\xd83a\xddcf\x3002\xd949\xdea7\x2084\x10ab\xd8cb\xde6b"); }
1861test { try parseIDNAFail("\xd802\xdfc0\xd803\xde09\xd83a\xddcf\x3002\xd949\xdea74\x10ab\xd8cb\xde6b"); }
1862test { try parseIDNAFail("\xd802\xdfc0\xd803\xde09\xd83a\xddcf\x3002\xd949\xdea74\x2d0b\xd8cb\xde6b"); }
1863test { try parseIDNAFail("xn--039c42bq865a.xn--4-wvs27840bnrzm"); }
1864test { try parseIDNAFail("\xd802\xdfc0\xd803\xde09\xd83a\xddcf\x3002\xd949\xdea7\x2084\x2d0b\xd8cb\xde6b"); }
1865test { try parseIDNAFail("xn--039c42bq865a.xn--4-t0g49302fnrzm"); }
1866test { try parseIDNAFail("\xd835\xdfd3\x3002\x6d7"); }
1867test { try parseIDNAFail("5\x3002\x6d7"); }
1868test { try parseIDNAFail("5.xn--nlb"); }
1869test { try parseIDNAFail("\x200c\xdaab\xde29.\x2f95"); }
1870test { try parseIDNAFail("\x200c\xdaab\xde29.\x8c37"); }
1871test { try parseIDNAFail("xn--i183d.xn--6g3a"); }
1872test { try parseIDNAFail("xn--0ug26167i.xn--6g3a"); }
1873test { try parseIDNAFail("\xfe12\xdafb\xdc07\x200d.-\x73c\x200c"); }
1874test { try parseIDNAFail("\x3002\xdafb\xdc07\x200d.-\x73c\x200c"); }
1875test { try parseIDNAFail(".xn--hh50e.xn----t2c"); }
1876test { try parseIDNAFail(".xn--1ug05310k.xn----t2c071q"); }
1877test { try parseIDNAFail("xn--y86c71305c.xn----t2c"); }
1878test { try parseIDNAFail("xn--1ug1658ftw26f.xn----t2c071q"); }
1879test { try parseIDNAFail("\x200d\xff0e\xd835\xdfd7"); }
1880test { try parseIDNAFail("\x200d.j"); }
1881test { try parseIDNAFail("\x200d.J"); }
1882test { try parseIDNAFail("xn--1ug.j"); }
1883test { try parseIDNAFail("\x10ad\xd8be\xdccd\xa868\x5ae\x3002\x10be\x200c\x200c"); }
1884test { try parseIDNAFail("\x2d0d\xd8be\xdccd\xa868\x5ae\x3002\x2d1e\x200c\x200c"); }
1885test { try parseIDNAFail("xn--5cb172r175fug38a.xn--mlj"); }
1886test { try parseIDNAFail("xn--5cb172r175fug38a.xn--0uga051h"); }
1887test { try parseIDNAFail("xn--5cb347co96jug15a.xn--2nd"); }
1888test { try parseIDNAFail("xn--5cb347co96jug15a.xn--2nd059ea"); }
1889test { try parseIDNAFail("\xd800\xdef0\x3002\xdb05\xdcf1"); }
1890test { try parseIDNAFail("xn--k97c.xn--q031e"); }
1891test { try parseIDNAFail("\x8df\x10ab\xd89b\xdff8\xade4\xff0e\xda40\xdd7c\xd835\xdfe2\xd72a\xae3"); }
1892test { try parseIDNAFail("\x8df\x10ab\xd89b\xdff8\x1100\x1172\x11af\xff0e\xda40\xdd7c\xd835\xdfe2\x1112\x1171\x11b9\xae3"); }
1893test { try parseIDNAFail("\x8df\x10ab\xd89b\xdff8\xade4.\xda40\xdd7c0\xd72a\xae3"); }
1894test { try parseIDNAFail("\x8df\x10ab\xd89b\xdff8\x1100\x1172\x11af.\xda40\xdd7c0\x1112\x1171\x11b9\xae3"); }
1895test { try parseIDNAFail("\x8df\x2d0b\xd89b\xdff8\x1100\x1172\x11af.\xda40\xdd7c0\x1112\x1171\x11b9\xae3"); }
1896test { try parseIDNAFail("\x8df\x2d0b\xd89b\xdff8\xade4.\xda40\xdd7c0\xd72a\xae3"); }
1897test { try parseIDNAFail("xn--i0b436pkl2g2h42a.xn--0-8le8997mulr5f"); }
1898test { try parseIDNAFail("\x8df\x2d0b\xd89b\xdff8\x1100\x1172\x11af\xff0e\xda40\xdd7c\xd835\xdfe2\x1112\x1171\x11b9\xae3"); }
1899test { try parseIDNAFail("\x8df\x2d0b\xd89b\xdff8\xade4\xff0e\xda40\xdd7c\xd835\xdfe2\xd72a\xae3"); }
1900test { try parseIDNAFail("xn--i0b601b6r7l2hs0a.xn--0-8le8997mulr5f"); }
1901test { try parseIDNAFail("\x784\xff0e\xd83a\xdc5d\x601"); }
1902test { try parseIDNAFail("\x784.\xd83a\xdc5d\x601"); }
1903test { try parseIDNAFail("xn--lqb.xn--jfb1808v"); }
1904test { try parseIDNAFail("\xacd\x2083.8\xa8c4\x200d\xd83c\xdce4"); }
1905test { try parseIDNAFail("\xacd3.8\xa8c4\x200d\xd83c\xdce4"); }
1906test { try parseIDNAFail("xn--3-yke.xn--8-sl4et308f"); }
1907test { try parseIDNAFail("xn--3-yke.xn--8-ugnv982dbkwm"); }
1908test { try parseIDNAFail("\xa855\x2260\x105e\xdb7b\xdff1\xff61\xd803\xdd67\xdb40\xdd2b\xffa0"); }
1909test { try parseIDNAFail("\xa855=\x338\x105e\xdb7b\xdff1\xff61\xd803\xdd67\xdb40\xdd2b\xffa0"); }
1910test { try parseIDNAFail("\xa855\x2260\x105e\xdb7b\xdff1\x3002\xd803\xdd67\xdb40\xdd2b\x1160"); }
1911test { try parseIDNAFail("\xa855=\x338\x105e\xdb7b\xdff1\x3002\xd803\xdd67\xdb40\xdd2b\x1160"); }
1912test { try parseIDNAFail("xn--cld333gn31h0158l.xn--3g0d"); }
1913test { try parseIDNAFail("\x9c4a\x3002\x200c"); }
1914test { try parseIDNAFail("xn--rt6a.xn--0ug"); }
1915test { try parseIDNAFail("\x200c\xd908\xdce0\xff0e\x200d"); }
1916test { try parseIDNAFail("\x200c\xd908\xdce0.\x200d"); }
1917test { try parseIDNAFail("xn--dj8y."); }
1918test { try parseIDNAFail("xn--0ugz7551c.xn--1ug"); }
1919test { try parseIDNAFail("\xd804\xddc0.\xdb42\xde31"); }
1920test { try parseIDNAFail("xn--wd1d.xn--k946e"); }
1921test { try parseIDNAFail("\x200c\x10ba\xff61\x3c2"); }
1922test { try parseIDNAFail("\x200c\x10ba\x3002\x3c2"); }
1923test { try parseIDNAFail("\x200c\x2d1a\x3002\x3c2"); }
1924test { try parseIDNAFail("\x200c\x10ba\x3002\x3a3"); }
1925test { try parseIDNAFail("\x200c\x2d1a\x3002\x3c3"); }
1926test { try parseIDNAFail("xn--0ug262c.xn--4xa"); }
1927test { try parseIDNAFail("xn--0ug262c.xn--3xa"); }
1928test { try parseIDNAFail("\x200c\x2d1a\xff61\x3c2"); }
1929test { try parseIDNAFail("\x200c\x10ba\xff61\x3a3"); }
1930test { try parseIDNAFail("\x200c\x2d1a\xff61\x3c3"); }
1931test { try parseIDNAFail("xn--ynd.xn--4xa"); }
1932test { try parseIDNAFail("xn--ynd.xn--3xa"); }
1933test { try parseIDNAFail("xn--ynd759e.xn--4xa"); }
1934test { try parseIDNAFail("xn--ynd759e.xn--3xa"); }
1935test { try parseIDNAFail("\x200d\x2f95\x3002\x200c\x310\xa953\xa84e"); }
1936test { try parseIDNAFail("\x200d\x2f95\x3002\x200c\xa953\x310\xa84e"); }
1937test { try parseIDNAFail("\x200d\x8c37\x3002\x200c\xa953\x310\xa84e"); }
1938test { try parseIDNAFail("xn--6g3a.xn--0sa8175flwa"); }
1939test { try parseIDNAFail("xn--1ug0273b.xn--0sa359l6n7g13a"); }
1940test { try parseIDNAFail("\xda72\xde29\x10b3\x2753\xff61\xd804\xdd28"); }
1941test { try parseIDNAFail("\xda72\xde29\x10b3\x2753\x3002\xd804\xdd28"); }
1942test { try parseIDNAFail("\xda72\xde29\x2d13\x2753\x3002\xd804\xdd28"); }
1943test { try parseIDNAFail("xn--8di78qvw32y.xn--k80d"); }
1944test { try parseIDNAFail("\xda72\xde29\x2d13\x2753\xff61\xd804\xdd28"); }
1945test { try parseIDNAFail("xn--rnd896i0j14q.xn--k80d"); }
1946test { try parseIDNAFail("\x17ff\xff61\xd83a\xdf33"); }
1947test { try parseIDNAFail("\x17ff\x3002\xd83a\xdf33"); }
1948test { try parseIDNAFail("xn--45e.xn--et6h"); }
1949test { try parseIDNAFail("\x652\x200d\xff61\xccd\xd805\xdeb3"); }
1950test { try parseIDNAFail("\x652\x200d\x3002\xccd\xd805\xdeb3"); }
1951test { try parseIDNAFail("xn--uhb.xn--8tc4527k"); }
1952test { try parseIDNAFail("xn--uhb882k.xn--8tc4527k"); }
1953test { try parseIDNAFail("\xdf\xd880\xdc3b\xd8da\xdf17\xff61\xd836\xde68\xd83d\xdd6e\xdf"); }
1954test { try parseIDNAFail("\xdf\xd880\xdc3b\xd8da\xdf17\x3002\xd836\xde68\xd83d\xdd6e\xdf"); }
1955test { try parseIDNAFail("SS\xd880\xdc3b\xd8da\xdf17\x3002\xd836\xde68\xd83d\xdd6eSS"); }
1956test { try parseIDNAFail("ss\xd880\xdc3b\xd8da\xdf17\x3002\xd836\xde68\xd83d\xdd6ess"); }
1957test { try parseIDNAFail("Ss\xd880\xdc3b\xd8da\xdf17\x3002\xd836\xde68\xd83d\xdd6eSs"); }
1958test { try parseIDNAFail("xn--ss-jl59biy67d.xn--ss-4d11aw87d"); }
1959test { try parseIDNAFail("xn--zca20040bgrkh.xn--zca3653v86qa"); }
1960test { try parseIDNAFail("SS\xd880\xdc3b\xd8da\xdf17\xff61\xd836\xde68\xd83d\xdd6eSS"); }
1961test { try parseIDNAFail("ss\xd880\xdc3b\xd8da\xdf17\xff61\xd836\xde68\xd83d\xdd6ess"); }
1962test { try parseIDNAFail("Ss\xd880\xdc3b\xd8da\xdf17\xff61\xd836\xde68\xd83d\xdd6eSs"); }
1963test { try parseIDNAFail("\x200d\x3002\x200c"); }
1964test { try parseIDNAFail("xn--1ug.xn--0ug"); }
1965test { try parseIDNAFail("\xdb41\xdc58\xff0e\xdb40\xdd2e"); }
1966test { try parseIDNAFail("\xdb41\xdc58.\xdb40\xdd2e"); }
1967test { try parseIDNAFail("xn--s136e."); }
1968test { try parseIDNAFail("\xa9b7\xdb37\xdd59\xba79\x3002\x249b\xdb42\xde07"); }
1969test { try parseIDNAFail("\xa9b7\xdb37\xdd59\x1106\x1167\x11b0\x3002\x249b\xdb42\xde07"); }
1970test { try parseIDNAFail("\xa9b7\xdb37\xdd59\xba79\x300220.\xdb42\xde07"); }
1971test { try parseIDNAFail("\xa9b7\xdb37\xdd59\x1106\x1167\x11b0\x300220.\xdb42\xde07"); }
1972test { try parseIDNAFail("xn--ym9av13acp85w.20.xn--d846e"); }
1973test { try parseIDNAFail("xn--ym9av13acp85w.xn--dth22121k"); }
1974test { try parseIDNAFail("\x200c\xff61\xfe12"); }
1975test { try parseIDNAFail("\x200c\x3002\x3002"); }
1976test { try parseIDNAFail("xn--0ug.."); }
1977test { try parseIDNAFail(".xn--y86c"); }
1978test { try parseIDNAFail("xn--0ug.xn--y86c"); }
1979test { try parseIDNAFail("\x1872-\xd835\xdff9.\xdf-\x200c-"); }
1980test { try parseIDNAFail("\x1872-3.\xdf-\x200c-"); }
1981test { try parseIDNAFail("\x1872-3.SS-\x200c-"); }
1982test { try parseIDNAFail("\x1872-3.ss-\x200c-"); }
1983test { try parseIDNAFail("\x1872-3.Ss-\x200c-"); }
1984test { try parseIDNAFail("xn---3-p9o.xn--ss---276a"); }
1985test { try parseIDNAFail("xn---3-p9o.xn-----fia9303a"); }
1986test { try parseIDNAFail("\x1872-\xd835\xdff9.SS-\x200c-"); }
1987test { try parseIDNAFail("\x1872-\xd835\xdff9.ss-\x200c-"); }
1988test { try parseIDNAFail("\x1872-\xd835\xdff9.Ss-\x200c-"); }
1989test { try parseIDNAFail("\xdb27\xdd9c\x1898\x3002\x1a7f\x2ea2"); }
1990test { try parseIDNAFail("xn--ibf35138o.xn--fpfz94g"); }
1991test { try parseIDNAFail("\xda1c\xdda7\xd835\xdfef\x3002\x2488\x1a76\xd835\xdfda\xda41\xde0c"); }
1992test { try parseIDNAFail("\xda1c\xdda73\x30021.\x1a762\xda41\xde0c"); }
1993test { try parseIDNAFail("xn--3-rj42h.1.xn--2-13k96240l"); }
1994test { try parseIDNAFail("xn--3-rj42h.xn--2-13k746cq465x"); }
1995test { try parseIDNAFail("\x200d\x2085\x2488\x3002\x226f\xd835\xdff4\x200d"); }
1996test { try parseIDNAFail("\x200d\x2085\x2488\x3002>\x338\xd835\xdff4\x200d"); }
1997test { try parseIDNAFail("\x200d51.\x3002\x226f8\x200d"); }
1998test { try parseIDNAFail("\x200d51.\x3002>\x3388\x200d"); }
1999test { try parseIDNAFail("xn--51-l1t..xn--8-ugn00i"); }
2000test { try parseIDNAFail("xn--5-ecp.xn--8-ogo"); }
2001test { try parseIDNAFail("xn--5-tgnz5r.xn--8-ugn00i"); }
2002test { try parseIDNAFail("\xd8bb\xddc2\xa42\x10aa\xd8c8\xdc9f.\x226e"); }
2003test { try parseIDNAFail("\xd8bb\xddc2\xa42\x10aa\xd8c8\xdc9f.<\x338"); }
2004test { try parseIDNAFail("\xd8bb\xddc2\xa42\x2d0a\xd8c8\xdc9f.<\x338"); }
2005test { try parseIDNAFail("\xd8bb\xddc2\xa42\x2d0a\xd8c8\xdc9f.\x226e"); }
2006test { try parseIDNAFail("xn--nbc229o4y27dgskb.xn--gdh"); }
2007test { try parseIDNAFail("xn--nbc493aro75ggskb.xn--gdh"); }
2008test { try parseIDNAFail("\xa67d\x200c\xd87e\xddf5\xd83c\xdd06\xff61\x200c\xd804\xdc42\x1b01"); }
2009test { try parseIDNAFail("\xa67d\x200c\x9723\xd83c\xdd06\xff61\x200c\xd804\xdc42\x1b01"); }
2010test { try parseIDNAFail("\xa67d\x200c\x97235,\x3002\x200c\xd804\xdc42\x1b01"); }
2011test { try parseIDNAFail("xn--5,-op8g373c.xn--4sf0725i"); }
2012test { try parseIDNAFail("xn--5,-i1tz135dnbqa.xn--4sf36u6u4w"); }
2013test { try parseIDNAFail("xn--2q5a751a653w.xn--4sf0725i"); }
2014test { try parseIDNAFail("xn--0ug4208b2vjuk63a.xn--4sf36u6u4w"); }
2015test { try parseIDNAFail("\x514e\xff61\x183c\xdb43\xdd1c\xd805\xdeb6\xd807\xdc3f"); }
2016test { try parseIDNAFail("\x514e\x3002\x183c\xdb43\xdd1c\xd805\xdeb6\xd807\xdc3f"); }
2017test { try parseIDNAFail("xn--b5q.xn--v7e6041kqqd4m251b"); }
2018test { try parseIDNAFail("\xd835\xdfd9\xff61\x200d\xd835\xdff8\x200d\x2077"); }
2019test { try parseIDNAFail("1\x3002\x200d2\x200d7"); }
2020test { try parseIDNAFail("1.xn--27-l1tb"); }
2021test { try parseIDNAFail("\x1868-\xff61\xdb43\xdecb\xd835\xdff7"); }
2022test { try parseIDNAFail("\x1868-\x3002\xdb43\xdecb1"); }
2023test { try parseIDNAFail("xn----z8j.xn--1-5671m"); }
2024test { try parseIDNAFail("\x10bc\xd9e3\xdded\xf80\x2f87\x3002\x10af\x2640\x200c\x200c"); }
2025test { try parseIDNAFail("\x10bc\xd9e3\xdded\xf80\x821b\x3002\x10af\x2640\x200c\x200c"); }
2026test { try parseIDNAFail("\x2d1c\xd9e3\xdded\xf80\x821b\x3002\x2d0f\x2640\x200c\x200c"); }
2027test { try parseIDNAFail("xn--zed372mdj2do3v4h.xn--e5h11w"); }
2028test { try parseIDNAFail("xn--zed372mdj2do3v4h.xn--0uga678bgyh"); }
2029test { try parseIDNAFail("\x2d1c\xd9e3\xdded\xf80\x2f87\x3002\x2d0f\x2640\x200c\x200c"); }
2030test { try parseIDNAFail("xn--zed54dz10wo343g.xn--nnd651i"); }
2031test { try parseIDNAFail("xn--zed54dz10wo343g.xn--nnd089ea464d"); }
2032test { try parseIDNAFail("\xd804\xdc46\xd835\xdff0.\x200d"); }
2033test { try parseIDNAFail("\xd804\xdc464.\x200d"); }
2034test { try parseIDNAFail("xn--4-xu7i."); }
2035test { try parseIDNAFail("xn--4-xu7i.xn--1ug"); }
2036test { try parseIDNAFail("\xd97b\xdd18\x10be\x7640\xff61\xd805\xde3f\x200d\x200c\xbdbc"); }
2037test { try parseIDNAFail("\xd97b\xdd18\x10be\x7640\xff61\xd805\xde3f\x200d\x200c\x1107\x1170\x11ab"); }
2038test { try parseIDNAFail("\xd97b\xdd18\x10be\x7640\x3002\xd805\xde3f\x200d\x200c\xbdbc"); }
2039test { try parseIDNAFail("\xd97b\xdd18\x10be\x7640\x3002\xd805\xde3f\x200d\x200c\x1107\x1170\x11ab"); }
2040test { try parseIDNAFail("\xd97b\xdd18\x2d1e\x7640\x3002\xd805\xde3f\x200d\x200c\x1107\x1170\x11ab"); }
2041test { try parseIDNAFail("\xd97b\xdd18\x2d1e\x7640\x3002\xd805\xde3f\x200d\x200c\xbdbc"); }
2042test { try parseIDNAFail("xn--mlju35u7qx2f.xn--et3bn23n"); }
2043test { try parseIDNAFail("xn--mlju35u7qx2f.xn--0ugb6122js83c"); }
2044test { try parseIDNAFail("\xd97b\xdd18\x2d1e\x7640\xff61\xd805\xde3f\x200d\x200c\x1107\x1170\x11ab"); }
2045test { try parseIDNAFail("\xd97b\xdd18\x2d1e\x7640\xff61\xd805\xde3f\x200d\x200c\xbdbc"); }
2046test { try parseIDNAFail("xn--2nd6803c7q37d.xn--et3bn23n"); }
2047test { try parseIDNAFail("xn--2nd6803c7q37d.xn--0ugb6122js83c"); }
2048test { try parseIDNAFail("\x1843\xd835\xdfe7\x226f\x1823\xff0e\x6c01\xd960\xdff1\xa06b"); }
2049test { try parseIDNAFail("\x1843\xd835\xdfe7>\x338\x1823\xff0e\x6c01\xd960\xdff1\xa06b"); }
2050test { try parseIDNAFail("\x18435\x226f\x1823.\x6c01\xd960\xdff1\xa06b"); }
2051test { try parseIDNAFail("\x18435>\x338\x1823.\x6c01\xd960\xdff1\xa06b"); }
2052test { try parseIDNAFail("xn--5-24jyf768b.xn--lqw213ime95g"); }
2053test { try parseIDNAFail("-\xd804\xde36\x248f\xff0e\x248e\xd881\xdee2\xdb40\xdfad"); }
2054test { try parseIDNAFail("-\xd804\xde368..7.\xd881\xdee2\xdb40\xdfad"); }
2055test { try parseIDNAFail("xn---8-bv5o..7.xn--c35nf1622b"); }
2056test { try parseIDNAFail("xn----scp6252h.xn--zshy411yzpx2d"); }
2057test { try parseIDNAFail("\x200c\x10a1\x755d\x200d\xff0e\x226e"); }
2058test { try parseIDNAFail("\x200c\x10a1\x755d\x200d\xff0e<\x338"); }
2059test { try parseIDNAFail("\x200c\x10a1\x755d\x200d.\x226e"); }
2060test { try parseIDNAFail("\x200c\x10a1\x755d\x200d.<\x338"); }
2061test { try parseIDNAFail("\x200c\x2d01\x755d\x200d.<\x338"); }
2062test { try parseIDNAFail("\x200c\x2d01\x755d\x200d.\x226e"); }
2063test { try parseIDNAFail("xn--0ugc160hb36e.xn--gdh"); }
2064test { try parseIDNAFail("\x200c\x2d01\x755d\x200d\xff0e<\x338"); }
2065test { try parseIDNAFail("\x200c\x2d01\x755d\x200d\xff0e\x226e"); }
2066test { try parseIDNAFail("xn--8md0962c.xn--gdh"); }
2067test { try parseIDNAFail("xn--8md700fea3748f.xn--gdh"); }
2068test { try parseIDNAFail("\xecb\x200d\xff0e\x9381\xdb43\xdc11"); }
2069test { try parseIDNAFail("\xecb\x200d.\x9381\xdb43\xdc11"); }
2070test { try parseIDNAFail("xn--t8c.xn--iz4a43209d"); }
2071test { try parseIDNAFail("xn--t8c059f.xn--iz4a43209d"); }
2072test { try parseIDNAFail("\xd9e5\xdef4.-\x1862\x592\xd836\xde20"); }
2073test { try parseIDNAFail("xn--ep37b.xn----hec165lho83b"); }
2074test { try parseIDNAFail("\xd8bc\xdc2b\xff0e\x1baa\x3c2\x10a6\x200d"); }
2075test { try parseIDNAFail("\xd8bc\xdc2b.\x1baa\x3c2\x10a6\x200d"); }
2076test { try parseIDNAFail("\xd8bc\xdc2b.\x1baa\x3c2\x2d06\x200d"); }
2077test { try parseIDNAFail("\xd8bc\xdc2b.\x1baa\x3a3\x10a6\x200d"); }
2078test { try parseIDNAFail("\xd8bc\xdc2b.\x1baa\x3c3\x2d06\x200d"); }
2079test { try parseIDNAFail("\xd8bc\xdc2b.\x1baa\x3a3\x2d06\x200d"); }
2080test { try parseIDNAFail("xn--nu4s.xn--4xa153j7im"); }
2081test { try parseIDNAFail("xn--nu4s.xn--4xa153jk8cs1q"); }
2082test { try parseIDNAFail("xn--nu4s.xn--3xa353jk8cs1q"); }
2083test { try parseIDNAFail("\xd8bc\xdc2b\xff0e\x1baa\x3c2\x2d06\x200d"); }
2084test { try parseIDNAFail("\xd8bc\xdc2b\xff0e\x1baa\x3a3\x10a6\x200d"); }
2085test { try parseIDNAFail("\xd8bc\xdc2b\xff0e\x1baa\x3c3\x2d06\x200d"); }
2086test { try parseIDNAFail("\xd8bc\xdc2b\xff0e\x1baa\x3a3\x2d06\x200d"); }
2087test { try parseIDNAFail("xn--nu4s.xn--4xa217dxri"); }
2088test { try parseIDNAFail("xn--nu4s.xn--4xa217dxriome"); }
2089test { try parseIDNAFail("xn--nu4s.xn--3xa417dxriome"); }
2090test { try parseIDNAFail("\x2488\x200c\xaaec\xfe12\xff0e\xacd"); }
2091test { try parseIDNAFail("1.\x200c\xaaec\x3002.\xacd"); }
2092test { try parseIDNAFail("1.xn--sv9a..xn--mfc"); }
2093test { try parseIDNAFail("1.xn--0ug7185c..xn--mfc"); }
2094test { try parseIDNAFail("xn--tsh0720cse8b.xn--mfc"); }
2095test { try parseIDNAFail("xn--0ug78o720myr1c.xn--mfc"); }
2096test { try parseIDNAFail("\xdf\x200d.\x1bf2\xd8d3\xdfbc"); }
2097test { try parseIDNAFail("SS\x200d.\x1bf2\xd8d3\xdfbc"); }
2098test { try parseIDNAFail("ss\x200d.\x1bf2\xd8d3\xdfbc"); }
2099test { try parseIDNAFail("Ss\x200d.\x1bf2\xd8d3\xdfbc"); }
2100test { try parseIDNAFail("ss.xn--0zf22107b"); }
2101test { try parseIDNAFail("xn--ss-n1t.xn--0zf22107b"); }
2102test { try parseIDNAFail("xn--zca870n.xn--0zf22107b"); }
2103test { try parseIDNAFail("\xd805\xdcc2\x200c\x226e.\x226e"); }
2104test { try parseIDNAFail("\xd805\xdcc2\x200c<\x338.<\x338"); }
2105test { try parseIDNAFail("xn--gdhz656g.xn--gdh"); }
2106test { try parseIDNAFail("xn--0ugy6glz29a.xn--gdh"); }
2107test { try parseIDNAFail("xn--my8h.xn--psd"); }
2108test { try parseIDNAFail("xn--my8h.xn--cl7c"); }
2109test { try parseIDNAFail("\x7215\xda8d\xde51\xff0e\xd835\xdff0\x6c17"); }
2110test { try parseIDNAFail("\x7215\xda8d\xde51.4\x6c17"); }
2111test { try parseIDNAFail("xn--1zxq3199c.xn--4-678b"); }
2112test { try parseIDNAFail("\xdb39\xdf43\x3002\xda04\xdd83\xd8e6\xdc97--"); }
2113test { try parseIDNAFail("xn--2y75e.xn-----1l15eer88n"); }
2114test { try parseIDNAFail("\x8530\x3002\xdb40\xdc79\x8dd-\xd804\xde35"); }
2115test { try parseIDNAFail("xn--sz1a.xn----mrd9984r3dl0i"); }
2116test { try parseIDNAFail("xn--4xa477d.xn--epb"); }
2117test { try parseIDNAFail("xn--3xa677d.xn--epb"); }
2118test { try parseIDNAFail("xn--pt9c.xn--hnd666l"); }
2119test { try parseIDNAFail("xn--pt9c.xn--hndy"); }
2120test { try parseIDNAFail("\x200c\x200c\x3124\xff0e\x32e\xdb16\xde11\x9c2"); }
2121test { try parseIDNAFail("\x200c\x200c\x3124.\x32e\xdb16\xde11\x9c2"); }
2122test { try parseIDNAFail("xn--1fk.xn--vta284a9o563a"); }
2123test { try parseIDNAFail("xn--0uga242k.xn--vta284a9o563a"); }
2124test { try parseIDNAFail("\x10b4\xd836\xde28\x2083\xdb40\xdc66\xff0e\xd835\xdff3\xd804\xdcb9\xb82"); }
2125test { try parseIDNAFail("\x10b4\xd836\xde283\xdb40\xdc66.7\xd804\xdcb9\xb82"); }
2126test { try parseIDNAFail("\x2d14\xd836\xde283\xdb40\xdc66.7\xd804\xdcb9\xb82"); }
2127test { try parseIDNAFail("xn--3-ews6985n35s3g.xn--7-cve6271r"); }
2128test { try parseIDNAFail("\x2d14\xd836\xde28\x2083\xdb40\xdc66\xff0e\xd835\xdff3\xd804\xdcb9\xb82"); }
2129test { try parseIDNAFail("xn--3-b1g83426a35t0g.xn--7-cve6271r"); }
2130test { try parseIDNAFail("\x43c8\x200c\x3002\x200c\x2488\xd986\xdc95"); }
2131test { try parseIDNAFail("\x43c8\x200c\x3002\x200c1.\xd986\xdc95"); }
2132test { try parseIDNAFail("xn--eco.1.xn--ms39a"); }
2133test { try parseIDNAFail("xn--0ug491l.xn--1-rgn.xn--ms39a"); }
2134test { try parseIDNAFail("xn--eco.xn--tsh21126d"); }
2135test { try parseIDNAFail("xn--0ug491l.xn--0ug88oot66q"); }
2136test { try parseIDNAFail("\xff11\xaaf6\xdf\xd807\xdca5\xff61\x1dd8"); }
2137test { try parseIDNAFail("1\xaaf6\xdf\xd807\xdca5\x3002\x1dd8"); }
2138test { try parseIDNAFail("1\xaaf6SS\xd807\xdca5\x3002\x1dd8"); }
2139test { try parseIDNAFail("1\xaaf6ss\xd807\xdca5\x3002\x1dd8"); }
2140test { try parseIDNAFail("xn--1ss-ir6ln166b.xn--weg"); }
2141test { try parseIDNAFail("xn--1-qfa2471kdb0d.xn--weg"); }
2142test { try parseIDNAFail("\xff11\xaaf6SS\xd807\xdca5\xff61\x1dd8"); }
2143test { try parseIDNAFail("\xff11\xaaf6ss\xd807\xdca5\xff61\x1dd8"); }
2144test { try parseIDNAFail("1\xaaf6Ss\xd807\xdca5\x3002\x1dd8"); }
2145test { try parseIDNAFail("\xff11\xaaf6Ss\xd807\xdca5\xff61\x1dd8"); }
2146test { try parseIDNAFail("xn--3j78f.xn--mkb20b"); }
2147test { try parseIDNAFail("\xd88a\xdd31\x249b\x2fb3\xff0e\xa866\x2488"); }
2148test { try parseIDNAFail("xn--dth6033bzbvx.xn--tsh9439b"); }
2149test { try parseIDNAFail("xn--tnd.xn--ss-jbe65aw27i"); }
2150test { try parseIDNAFail("xn--tnd.xn--zca912alh227g"); }
2151test { try parseIDNAFail("\x2132\xdb40\xdd7a\xd937\xdd52\x3002\x226f\x2f91"); }
2152test { try parseIDNAFail("\x2132\xdb40\xdd7a\xd937\xdd52\x3002>\x338\x2f91"); }
2153test { try parseIDNAFail("\x2132\xdb40\xdd7a\xd937\xdd52\x3002\x226f\x897e"); }
2154test { try parseIDNAFail("\x2132\xdb40\xdd7a\xd937\xdd52\x3002>\x338\x897e"); }
2155test { try parseIDNAFail("\x214e\xdb40\xdd7a\xd937\xdd52\x3002>\x338\x897e"); }
2156test { try parseIDNAFail("\x214e\xdb40\xdd7a\xd937\xdd52\x3002\x226f\x897e"); }
2157test { try parseIDNAFail("xn--73g39298c.xn--hdhz171b"); }
2158test { try parseIDNAFail("\x214e\xdb40\xdd7a\xd937\xdd52\x3002>\x338\x2f91"); }
2159test { try parseIDNAFail("\x214e\xdb40\xdd7a\xd937\xdd52\x3002\x226f\x2f91"); }
2160test { try parseIDNAFail("xn--f3g73398c.xn--hdhz171b"); }
2161test { try parseIDNAFail("\x200c.\xdf\x10a9-"); }
2162test { try parseIDNAFail("\x200c.\xdf\x2d09-"); }
2163test { try parseIDNAFail("\x200c.SS\x10a9-"); }
2164test { try parseIDNAFail("\x200c.ss\x2d09-"); }
2165test { try parseIDNAFail("\x200c.Ss\x2d09-"); }
2166test { try parseIDNAFail("xn--0ug.xn--ss--bi1b"); }
2167test { try parseIDNAFail("xn--0ug.xn----pfa2305a"); }
2168test { try parseIDNAFail(".xn--ss--4rn"); }
2169test { try parseIDNAFail("xn--0ug.xn--ss--4rn"); }
2170test { try parseIDNAFail("xn--0ug.xn----pfa042j"); }
2171test { try parseIDNAFail("\xdb42\xdea2-\x3002\xda2c\xdc8f\x226e\xd805\xdf2b"); }
2172test { try parseIDNAFail("\xdb42\xdea2-\x3002\xda2c\xdc8f<\x338\xd805\xdf2b"); }
2173test { try parseIDNAFail("xn----bh61m.xn--gdhz157g0em1d"); }
2174test { try parseIDNAFail("\x200c\xdb40\xde79\x200d\x3002\xd9f3\xdfe7\x226e\x10a9"); }
2175test { try parseIDNAFail("\x200c\xdb40\xde79\x200d\x3002\xd9f3\xdfe7<\x338\x10a9"); }
2176test { try parseIDNAFail("\x200c\xdb40\xde79\x200d\x3002\xd9f3\xdfe7<\x338\x2d09"); }
2177test { try parseIDNAFail("\x200c\xdb40\xde79\x200d\x3002\xd9f3\xdfe7\x226e\x2d09"); }
2178test { try parseIDNAFail("xn--3n36e.xn--gdh992byu01p"); }
2179test { try parseIDNAFail("xn--0ugc90904y.xn--gdh992byu01p"); }
2180test { try parseIDNAFail("xn--3n36e.xn--hnd112gpz83n"); }
2181test { try parseIDNAFail("xn--0ugc90904y.xn--hnd112gpz83n"); }
2182test { try parseIDNAFail("\xd836\xde9e\x10b0\xff61\xcaa1"); }
2183test { try parseIDNAFail("\xd836\xde9e\x10b0\xff61\x110d\x1168\x11a8"); }
2184test { try parseIDNAFail("\xd836\xde9e\x10b0\x3002\xcaa1"); }
2185test { try parseIDNAFail("\xd836\xde9e\x10b0\x3002\x110d\x1168\x11a8"); }
2186test { try parseIDNAFail("\xd836\xde9e\x2d10\x3002\x110d\x1168\x11a8"); }
2187test { try parseIDNAFail("\xd836\xde9e\x2d10\x3002\xcaa1"); }
2188test { try parseIDNAFail("xn--7kj1858k.xn--pi6b"); }
2189test { try parseIDNAFail("\xd836\xde9e\x2d10\xff61\x110d\x1168\x11a8"); }
2190test { try parseIDNAFail("\xd836\xde9e\x2d10\xff61\xcaa1"); }
2191test { try parseIDNAFail("xn--ond3755u.xn--pi6b"); }
2192test { try parseIDNAFail("\x1845\xff10\x200c\xff61\x23a2\xdb52\xde04"); }
2193test { try parseIDNAFail("\x18450\x200c\x3002\x23a2\xdb52\xde04"); }
2194test { try parseIDNAFail("xn--0-z6j.xn--8lh28773l"); }
2195test { try parseIDNAFail("xn--0-z6jy93b.xn--8lh28773l"); }
2196test { try parseIDNAFail("\xd88a\xdf9a\xff19\xa369\x17d3\xff0e\x200d\xdf"); }
2197test { try parseIDNAFail("\xd88a\xdf9a9\xa369\x17d3.\x200d\xdf"); }
2198test { try parseIDNAFail("\xd88a\xdf9a9\xa369\x17d3.\x200dSS"); }
2199test { try parseIDNAFail("\xd88a\xdf9a9\xa369\x17d3.\x200dss"); }
2200test { try parseIDNAFail("xn--9-i0j5967eg3qz.xn--ss-l1t"); }
2201test { try parseIDNAFail("xn--9-i0j5967eg3qz.xn--zca770n"); }
2202test { try parseIDNAFail("\xd88a\xdf9a\xff19\xa369\x17d3\xff0e\x200dSS"); }
2203test { try parseIDNAFail("\xd88a\xdf9a\xff19\xa369\x17d3\xff0e\x200dss"); }
2204test { try parseIDNAFail("\xd88a\xdf9a9\xa369\x17d3.\x200dSs"); }
2205test { try parseIDNAFail("\xd88a\xdf9a\xff19\xa369\x17d3\xff0e\x200dSs"); }
2206test { try parseIDNAFail("\x2490\x226f-\x3002\xfe12\xda65\xdc63-\xd939\xdee0"); }
2207test { try parseIDNAFail("\x2490>\x338-\x3002\xfe12\xda65\xdc63-\xd939\xdee0"); }
2208test { try parseIDNAFail("9.\x226f-\x3002\x3002\xda65\xdc63-\xd939\xdee0"); }
2209test { try parseIDNAFail("9.>\x338-\x3002\x3002\xda65\xdc63-\xd939\xdee0"); }
2210test { try parseIDNAFail("9.xn----ogo..xn----xj54d1s69k"); }
2211test { try parseIDNAFail("xn----ogot9g.xn----n89hl0522az9u2a"); }
2212test { try parseIDNAFail("\x10af\xdb40\xdd4b-\xff0e\x200d\x10a9"); }
2213test { try parseIDNAFail("\x10af\xdb40\xdd4b-.\x200d\x10a9"); }
2214test { try parseIDNAFail("\x2d0f\xdb40\xdd4b-.\x200d\x2d09"); }
2215test { try parseIDNAFail("xn----3vs.xn--1ug532c"); }
2216test { try parseIDNAFail("\x2d0f\xdb40\xdd4b-\xff0e\x200d\x2d09"); }
2217test { try parseIDNAFail("xn----00g.xn--hnd"); }
2218test { try parseIDNAFail("xn----00g.xn--hnd399e"); }
2219test { try parseIDNAFail("\x1714\x3002\xdb40\xdda3-\xd804\xdeea"); }
2220test { try parseIDNAFail("xn--fze.xn----ly8i"); }
2221test { try parseIDNAFail("\xabe8-\xff0e\xda60\xdfdc\x5bd\xdf"); }
2222test { try parseIDNAFail("\xabe8-.\xda60\xdfdc\x5bd\xdf"); }
2223test { try parseIDNAFail("\xabe8-.\xda60\xdfdc\x5bdSS"); }
2224test { try parseIDNAFail("\xabe8-.\xda60\xdfdc\x5bdss"); }
2225test { try parseIDNAFail("\xabe8-.\xda60\xdfdc\x5bdSs"); }
2226test { try parseIDNAFail("xn----pw5e.xn--ss-7jd10716y"); }
2227test { try parseIDNAFail("xn----pw5e.xn--zca50wfv060a"); }
2228test { try parseIDNAFail("\xabe8-\xff0e\xda60\xdfdc\x5bdSS"); }
2229test { try parseIDNAFail("\xabe8-\xff0e\xda60\xdfdc\x5bdss"); }
2230test { try parseIDNAFail("\xabe8-\xff0e\xda60\xdfdc\x5bdSs"); }
2231test { try parseIDNAFail("\xd835\xdfe5\x266e\xd805\xdf2b\x8ed\xff0e\x17d2\xd805\xdf2b8\xdb40\xdd8f"); }
2232test { try parseIDNAFail("3\x266e\xd805\xdf2b\x8ed.\x17d2\xd805\xdf2b8\xdb40\xdd8f"); }
2233test { try parseIDNAFail("xn--3-ksd277tlo7s.xn--8-f0jx021l"); }
2234test { try parseIDNAFail("-\xff61\xda14\xdf00\x200d\x2761"); }
2235test { try parseIDNAFail("-\x3002\xda14\xdf00\x200d\x2761"); }
2236test { try parseIDNAFail("-.xn--nei54421f"); }
2237test { try parseIDNAFail("-.xn--1ug800aq795s"); }
2238test { try parseIDNAFail("\xd835\xdfd3\x2631\xd835\xdfd0\xda57\xdc35\xff61\xd836\xdeae\xd902\xdc73"); }
2239test { try parseIDNAFail("5\x26312\xda57\xdc35\x3002\xd836\xdeae\xd902\xdc73"); }
2240test { try parseIDNAFail("xn--52-dwx47758j.xn--kd3hk431k"); }
2241test { try parseIDNAFail("-.-\x251c\xda1a\xdda3"); }
2242test { try parseIDNAFail("-.xn----ukp70432h"); }
2243test { try parseIDNAFail("\x3c2\xff0e\xfdc1\xd83d\xdf9b\x2488"); }
2244test { try parseIDNAFail("\x3a3\xff0e\xfdc1\xd83d\xdf9b\x2488"); }
2245test { try parseIDNAFail("\x3c3\xff0e\xfdc1\xd83d\xdf9b\x2488"); }
2246test { try parseIDNAFail("xn--4xa.xn--dhbip2802atb20c"); }
2247test { try parseIDNAFail("xn--3xa.xn--dhbip2802atb20c"); }
2248test { try parseIDNAFail("9\xdb40\xdde5\xff0e\xdb6b\xdd34\x1893"); }
2249test { try parseIDNAFail("9\xdb40\xdde5.\xdb6b\xdd34\x1893"); }
2250test { try parseIDNAFail("9.xn--dbf91222q"); }
2251test { try parseIDNAFail("\xfe12\x10b6\x366\xff0e\x200c"); }
2252test { try parseIDNAFail("\x3002\x10b6\x366.\x200c"); }
2253test { try parseIDNAFail("\x3002\x2d16\x366.\x200c"); }
2254test { try parseIDNAFail(".xn--hva754s.xn--0ug"); }
2255test { try parseIDNAFail("\xfe12\x2d16\x366\xff0e\x200c"); }
2256test { try parseIDNAFail("xn--hva754sy94k."); }
2257test { try parseIDNAFail("xn--hva754sy94k.xn--0ug"); }
2258test { try parseIDNAFail(".xn--hva929d."); }
2259test { try parseIDNAFail(".xn--hva929d.xn--0ug"); }
2260test { try parseIDNAFail("xn--hva929dl29p."); }
2261test { try parseIDNAFail("xn--hva929dl29p.xn--0ug"); }
2262test { try parseIDNAFail("xn--hva929d."); }
2263test { try parseIDNAFail("xn--hzb.xn--bnd2938u"); }
2264test { try parseIDNAFail("\x200d\x200c\x3002\xff12\x4af7\xdb42\xddf7"); }
2265test { try parseIDNAFail("\x200d\x200c\x30022\x4af7\xdb42\xddf7"); }
2266test { try parseIDNAFail(".xn--2-me5ay1273i"); }
2267test { try parseIDNAFail("xn--0ugb.xn--2-me5ay1273i"); }
2268test { try parseIDNAFail("-\xd838\xdc24\xdb32\xdc10\x3002\xd9e2\xdf16"); }
2269test { try parseIDNAFail("xn----rq4re4997d.xn--l707b"); }
2270test { try parseIDNAFail("\xdb8d\xdec2\xfe12\x200c\x37c0\xff0e\x624\x2488"); }
2271test { try parseIDNAFail("\xdb8d\xdec2\xfe12\x200c\x37c0\xff0e\x648\x654\x2488"); }
2272test { try parseIDNAFail("xn--z272f.xn--etl.xn--1-smc."); }
2273test { try parseIDNAFail("xn--etlt457ccrq7h.xn--jgb476m"); }
2274test { try parseIDNAFail("xn--0ug754gxl4ldlt0k.xn--jgb476m"); }
2275test { try parseIDNAFail("\x7fc\xd803\xde06.\xd80d\xdd8f\xfe12\xd8ea\xde29\x10b0"); }
2276test { try parseIDNAFail("\x7fc\xd803\xde06.\xd80d\xdd8f\x3002\xd8ea\xde29\x10b0"); }
2277test { try parseIDNAFail("\x7fc\xd803\xde06.\xd80d\xdd8f\x3002\xd8ea\xde29\x2d10"); }
2278test { try parseIDNAFail("xn--0tb8725k.xn--tu8d.xn--7kj73887a"); }
2279test { try parseIDNAFail("\x7fc\xd803\xde06.\xd80d\xdd8f\xfe12\xd8ea\xde29\x2d10"); }
2280test { try parseIDNAFail("xn--0tb8725k.xn--7kj9008dt18a7py9c"); }
2281test { try parseIDNAFail("xn--0tb8725k.xn--tu8d.xn--ond97931d"); }
2282test { try parseIDNAFail("xn--0tb8725k.xn--ond3562jt18a7py9c"); }
2283test { try parseIDNAFail("\x10c5\x26ad\xdb41\xddab\x22c3\xff61\xd804\xdf3c"); }
2284test { try parseIDNAFail("\x10c5\x26ad\xdb41\xddab\x22c3\x3002\xd804\xdf3c"); }
2285test { try parseIDNAFail("\x2d25\x26ad\xdb41\xddab\x22c3\x3002\xd804\xdf3c"); }
2286test { try parseIDNAFail("xn--vfh16m67gx1162b.xn--ro1d"); }
2287test { try parseIDNAFail("\x2d25\x26ad\xdb41\xddab\x22c3\xff61\xd804\xdf3c"); }
2288test { try parseIDNAFail("xn--9nd623g4zc5z060c.xn--ro1d"); }
2289test { try parseIDNAFail("\xd8c8\xde26\x5e37\xff61\x226f\x843a\x1dc8-"); }
2290test { try parseIDNAFail("\xd8c8\xde26\x5e37\xff61>\x338\x843a\x1dc8-"); }
2291test { try parseIDNAFail("\xd8c8\xde26\x5e37\x3002\x226f\x843a\x1dc8-"); }
2292test { try parseIDNAFail("\xd8c8\xde26\x5e37\x3002>\x338\x843a\x1dc8-"); }
2293test { try parseIDNAFail("xn--qutw175s.xn----mimu6tf67j"); }
2294test { try parseIDNAFail("\x200d\x650c\xabed\x3002\x1896-\x10b8"); }
2295test { try parseIDNAFail("\x200d\x650c\xabed\x3002\x1896-\x2d18"); }
2296test { try parseIDNAFail("xn--1ug592ykp6b.xn----mck373i"); }
2297test { try parseIDNAFail("xn--p9ut19m.xn----k1g451d"); }
2298test { try parseIDNAFail("xn--1ug592ykp6b.xn----k1g451d"); }
2299test { try parseIDNAFail("\x200c\xa5a8\xff0e\x2497\xff13\xd212\x6f3"); }
2300test { try parseIDNAFail("\x200c\xa5a8\xff0e\x2497\xff13\x1110\x116d\x11a9\x6f3"); }
2301test { try parseIDNAFail("\x200c\xa5a8.16.3\xd212\x6f3"); }
2302test { try parseIDNAFail("\x200c\xa5a8.16.3\x1110\x116d\x11a9\x6f3"); }
2303test { try parseIDNAFail("xn--0ug2473c.16.xn--3-nyc0117m"); }
2304test { try parseIDNAFail("xn--9r8a.xn--3-nyc678tu07m"); }
2305test { try parseIDNAFail("xn--0ug2473c.xn--3-nyc678tu07m"); }
2306test { try parseIDNAFail("\xd835\xdfcf\xd836\xde19\x2e16.\x200d"); }
2307test { try parseIDNAFail("1\xd836\xde19\x2e16.\x200d"); }
2308test { try parseIDNAFail("xn--1-5bt6845n.xn--1ug"); }
2309test { try parseIDNAFail("F\xdb40\xdd5f\xff61\xd9fd\xddc5\x265a"); }
2310test { try parseIDNAFail("F\xdb40\xdd5f\x3002\xd9fd\xddc5\x265a"); }
2311test { try parseIDNAFail("f\xdb40\xdd5f\x3002\xd9fd\xddc5\x265a"); }
2312test { try parseIDNAFail("f.xn--45hz6953f"); }
2313test { try parseIDNAFail("f\xdb40\xdd5f\xff61\xd9fd\xddc5\x265a"); }
2314test { try parseIDNAFail("\xb4d\xd804\xdd34\x1de9\x3002\xd835\xdfee\x10b8\xd838\xdc28\xd8ce\xdd47"); }
2315test { try parseIDNAFail("\xb4d\xd804\xdd34\x1de9\x30022\x10b8\xd838\xdc28\xd8ce\xdd47"); }
2316test { try parseIDNAFail("\xb4d\xd804\xdd34\x1de9\x30022\x2d18\xd838\xdc28\xd8ce\xdd47"); }
2317test { try parseIDNAFail("xn--9ic246gs21p.xn--2-nws2918ndrjr"); }
2318test { try parseIDNAFail("\xb4d\xd804\xdd34\x1de9\x3002\xd835\xdfee\x2d18\xd838\xdc28\xd8ce\xdd47"); }
2319test { try parseIDNAFail("xn--9ic246gs21p.xn--2-k1g43076adrwq"); }
2320test { try parseIDNAFail("\xda0e\xdc2d\x200c\x200c\x2488\x3002\x52c9\xd804\xdc45"); }
2321test { try parseIDNAFail("\xda0e\xdc2d\x200c\x200c1.\x3002\x52c9\xd804\xdc45"); }
2322test { try parseIDNAFail("xn--1-yi00h..xn--4grs325b"); }
2323test { try parseIDNAFail("xn--1-rgna61159u..xn--4grs325b"); }
2324test { try parseIDNAFail("xn--tsh11906f.xn--4grs325b"); }
2325test { try parseIDNAFail("xn--0uga855aez302a.xn--4grs325b"); }
2326test { try parseIDNAFail("\x1843.\x73bf\xd96c\xde1c\xdb15\xdf90"); }
2327test { try parseIDNAFail("xn--27e.xn--7cy81125a0yq4a"); }
2328test { try parseIDNAFail("\x200c\x200c\xff61\x2488\x226f\xd835\xdff5"); }
2329test { try parseIDNAFail("\x200c\x200c\xff61\x2488>\x338\xd835\xdff5"); }
2330test { try parseIDNAFail("\x200c\x200c\x30021.\x226f9"); }
2331test { try parseIDNAFail("\x200c\x200c\x30021.>\x3389"); }
2332test { try parseIDNAFail("xn--0uga.1.xn--9-ogo"); }
2333test { try parseIDNAFail(".xn--9-ogo37g"); }
2334test { try parseIDNAFail("xn--0uga.xn--9-ogo37g"); }
2335test { try parseIDNAFail("\x20da\xff0e\xd805\xde3f-"); }
2336test { try parseIDNAFail("\x20da.\xd805\xde3f-"); }
2337test { try parseIDNAFail("xn--w0g.xn----bd0j"); }
2338test { try parseIDNAFail("\x1082-\x200d\xa8ea\xff0e\xa84a\x200d\xd9b3\xde33"); }
2339test { try parseIDNAFail("\x1082-\x200d\xa8ea.\xa84a\x200d\xd9b3\xde33"); }
2340test { try parseIDNAFail("xn----gyg3618i.xn--jc9ao4185a"); }
2341test { try parseIDNAFail("xn----gyg250jio7k.xn--1ug8774cri56d"); }
2342test { try parseIDNAFail("\xd804\xde35\x5eca.\xd802\xdc0d"); }
2343test { try parseIDNAFail("xn--xytw701b.xn--yc9c"); }
2344test { try parseIDNAFail("\x10be\xd899\xdec0\xd82d\xddfb\xff0e\x1897\xb9ab"); }
2345test { try parseIDNAFail("\x10be\xd899\xdec0\xd82d\xddfb\xff0e\x1897\x1105\x1174\x11c2"); }
2346test { try parseIDNAFail("\x10be\xd899\xdec0\xd82d\xddfb.\x1897\xb9ab"); }
2347test { try parseIDNAFail("\x10be\xd899\xdec0\xd82d\xddfb.\x1897\x1105\x1174\x11c2"); }
2348test { try parseIDNAFail("\x2d1e\xd899\xdec0\xd82d\xddfb.\x1897\x1105\x1174\x11c2"); }
2349test { try parseIDNAFail("\x2d1e\xd899\xdec0\xd82d\xddfb.\x1897\xb9ab"); }
2350test { try parseIDNAFail("xn--mlj0486jgl2j.xn--hbf6853f"); }
2351test { try parseIDNAFail("\x2d1e\xd899\xdec0\xd82d\xddfb\xff0e\x1897\x1105\x1174\x11c2"); }
2352test { try parseIDNAFail("\x2d1e\xd899\xdec0\xd82d\xddfb\xff0e\x1897\xb9ab"); }
2353test { try parseIDNAFail("xn--2nd8876sgl2j.xn--hbf6853f"); }
2354test { try parseIDNAFail("\xdf\x200d\x103a\xff61\x2488"); }
2355test { try parseIDNAFail("xn--ss-f4j585j.b."); }
2356test { try parseIDNAFail("xn--zca679eh2l.b."); }
2357test { try parseIDNAFail("SS\x200d\x103a\xff61\x2488"); }
2358test { try parseIDNAFail("ss\x200d\x103a\xff61\x2488"); }
2359test { try parseIDNAFail("Ss\x200d\x103a\xff61\x2488"); }
2360test { try parseIDNAFail("xn--ss-f4j.xn--tsh"); }
2361test { try parseIDNAFail("xn--ss-f4j585j.xn--tsh"); }
2362test { try parseIDNAFail("xn--zca679eh2l.xn--tsh"); }
2363test { try parseIDNAFail("\xd835\xdfe0\x226e\x200c\xff61\xdb40\xdd71\x17b4"); }
2364test { try parseIDNAFail("\xd835\xdfe0<\x338\x200c\xff61\xdb40\xdd71\x17b4"); }
2365test { try parseIDNAFail("8\x226e\x200c\x3002\xdb40\xdd71\x17b4"); }
2366test { try parseIDNAFail("8<\x338\x200c\x3002\xdb40\xdd71\x17b4"); }
2367test { try parseIDNAFail("xn--8-sgn10i."); }
2368test { try parseIDNAFail("xn--8-ngo.xn--z3e"); }
2369test { try parseIDNAFail("xn--8-sgn10i.xn--z3e"); }
2370test { try parseIDNAFail("\x1895\x226f\xfe12\xd8d0\xdcaf\xff0e\x10a0"); }
2371test { try parseIDNAFail("\x1895>\x338\xfe12\xd8d0\xdcaf\xff0e\x10a0"); }
2372test { try parseIDNAFail("\x1895\x226f\x3002\xd8d0\xdcaf.\x10a0"); }
2373test { try parseIDNAFail("\x1895>\x338\x3002\xd8d0\xdcaf.\x10a0"); }
2374test { try parseIDNAFail("\x1895>\x338\x3002\xd8d0\xdcaf.\x2d00"); }
2375test { try parseIDNAFail("\x1895\x226f\x3002\xd8d0\xdcaf.\x2d00"); }
2376test { try parseIDNAFail("xn--fbf851c.xn--ko1u.xn--rkj"); }
2377test { try parseIDNAFail("\x1895>\x338\xfe12\xd8d0\xdcaf\xff0e\x2d00"); }
2378test { try parseIDNAFail("\x1895\x226f\xfe12\xd8d0\xdcaf\xff0e\x2d00"); }
2379test { try parseIDNAFail("xn--fbf851cq98poxw1a.xn--rkj"); }
2380test { try parseIDNAFail("xn--fbf851c.xn--ko1u.xn--7md"); }
2381test { try parseIDNAFail("xn--fbf851cq98poxw1a.xn--7md"); }
2382test { try parseIDNAFail("\xf9f\xff0e-\x82a"); }
2383test { try parseIDNAFail("\xf9f.-\x82a"); }
2384test { try parseIDNAFail("xn--vfd.xn----fhd"); }
2385test { try parseIDNAFail("\x1d6c\xdb40\xdda0\xff0e\xd552\x2492\x2488\xdbe0\xdd26"); }
2386test { try parseIDNAFail("\x1d6c\xdb40\xdda0\xff0e\x1111\x1175\x11bd\x2492\x2488\xdbe0\xdd26"); }
2387test { try parseIDNAFail("\x1d6c\xdb40\xdda0.\xd55211.1.\xdbe0\xdd26"); }
2388test { try parseIDNAFail("\x1d6c\xdb40\xdda0.\x1111\x1175\x11bd11.1.\xdbe0\xdd26"); }
2389test { try parseIDNAFail("xn--tbg.xn--11-5o7k.1.xn--k469f"); }
2390test { try parseIDNAFail("xn--tbg.xn--tsht7586kyts9l"); }
2391test { try parseIDNAFail("\x2488\x270c\xda3e\xdf1f\xff0e\xd835\xdfe1\xd943\xdc63"); }
2392test { try parseIDNAFail("1.\x270c\xda3e\xdf1f.9\xd943\xdc63"); }
2393test { try parseIDNAFail("1.xn--7bi44996f.xn--9-o706d"); }
2394test { try parseIDNAFail("xn--tsh24g49550b.xn--9-o706d"); }
2395test { try parseIDNAFail("\x3c2\xff0e\xa9c0\xa8c4"); }
2396test { try parseIDNAFail("\x3c2.\xa9c0\xa8c4"); }
2397test { try parseIDNAFail("\x3a3.\xa9c0\xa8c4"); }
2398test { try parseIDNAFail("\x3c3.\xa9c0\xa8c4"); }
2399test { try parseIDNAFail("xn--4xa.xn--0f9ars"); }
2400test { try parseIDNAFail("xn--3xa.xn--0f9ars"); }
2401test { try parseIDNAFail("\x3a3\xff0e\xa9c0\xa8c4"); }
2402test { try parseIDNAFail("\x3c3\xff0e\xa9c0\xa8c4"); }
2403test { try parseIDNAFail("\x2786\xd99e\xddd5\x1ed7\x2488\xff0e\xda06\xdf12\xd945\xde2e\x85b\xd835\xdfeb"); }
2404test { try parseIDNAFail("\x2786\xd99e\xddd5o\x302\x303\x2488\xff0e\xda06\xdf12\xd945\xde2e\x85b\xd835\xdfeb"); }
2405test { try parseIDNAFail("\x2786\xd99e\xddd5\x1ed71..\xda06\xdf12\xd945\xde2e\x85b9"); }
2406test { try parseIDNAFail("\x2786\xd99e\xddd5o\x302\x3031..\xda06\xdf12\xd945\xde2e\x85b9"); }
2407test { try parseIDNAFail("\x2786\xd99e\xddd5O\x302\x3031..\xda06\xdf12\xd945\xde2e\x85b9"); }
2408test { try parseIDNAFail("\x2786\xd99e\xddd5\x1ed61..\xda06\xdf12\xd945\xde2e\x85b9"); }
2409test { try parseIDNAFail("xn--1-3xm292b6044r..xn--9-6jd87310jtcqs"); }
2410test { try parseIDNAFail("\x2786\xd99e\xddd5O\x302\x303\x2488\xff0e\xda06\xdf12\xd945\xde2e\x85b\xd835\xdfeb"); }
2411test { try parseIDNAFail("\x2786\xd99e\xddd5\x1ed6\x2488\xff0e\xda06\xdf12\xd945\xde2e\x85b\xd835\xdfeb"); }
2412test { try parseIDNAFail("xn--6lg26tvvc6v99z.xn--9-6jd87310jtcqs"); }
2413test { try parseIDNAFail("\x73c\x200c-\x3002\xd80d\xdc3e\xdf"); }
2414test { try parseIDNAFail("\x73c\x200c-\x3002\xd80d\xdc3eSS"); }
2415test { try parseIDNAFail("\x73c\x200c-\x3002\xd80d\xdc3ess"); }
2416test { try parseIDNAFail("\x73c\x200c-\x3002\xd80d\xdc3eSs"); }
2417test { try parseIDNAFail("xn----s2c.xn--ss-066q"); }
2418test { try parseIDNAFail("xn----s2c071q.xn--ss-066q"); }
2419test { try parseIDNAFail("xn----s2c071q.xn--zca7848m"); }
2420test { try parseIDNAFail("-\xda9d\xdf6c\x135e\xd805\xdf27.\x1deb-\xfe12"); }
2421test { try parseIDNAFail("-\xda9d\xdf6c\x135e\xd805\xdf27.\x1deb-\x3002"); }
2422test { try parseIDNAFail("xn----b5h1837n2ok9f.xn----mkm."); }
2423test { try parseIDNAFail("xn----b5h1837n2ok9f.xn----mkmw278h"); }
2424test { try parseIDNAFail("\xfe12.\xda2a\xdc21\x1a59"); }
2425test { try parseIDNAFail("\x3002.\xda2a\xdc21\x1a59"); }
2426test { try parseIDNAFail("..xn--cof61594i"); }
2427test { try parseIDNAFail("xn--y86c.xn--cof61594i"); }
2428test { try parseIDNAFail("\xd807\xdc3a.-\xda05\xdfcf"); }
2429test { try parseIDNAFail("xn--jk3d.xn----iz68g"); }
2430test { try parseIDNAFail("\xdb43\xdee9\xff0e\x8d4f"); }
2431test { try parseIDNAFail("\xdb43\xdee9.\x8d4f"); }
2432test { try parseIDNAFail("xn--2856e.xn--6o3a"); }
2433test { try parseIDNAFail("\x10ad\xff0e\xd8f4\xdde6\x200c"); }
2434test { try parseIDNAFail("\x10ad.\xd8f4\xdde6\x200c"); }
2435test { try parseIDNAFail("\x2d0d.\xd8f4\xdde6\x200c"); }
2436test { try parseIDNAFail("xn--4kj.xn--p01x"); }
2437test { try parseIDNAFail("xn--4kj.xn--0ug56448b"); }
2438test { try parseIDNAFail("\x2d0d\xff0e\xd8f4\xdde6\x200c"); }
2439test { try parseIDNAFail("xn--lnd.xn--p01x"); }
2440test { try parseIDNAFail("xn--lnd.xn--0ug56448b"); }
2441test { try parseIDNAFail("-\x200d.\x10be\xd800\xdef7"); }
2442test { try parseIDNAFail("-\x200d.\x2d1e\xd800\xdef7"); }
2443test { try parseIDNAFail("xn----ugn.xn--mlj8559d"); }
2444test { try parseIDNAFail("-.xn--2nd2315j"); }
2445test { try parseIDNAFail("xn----ugn.xn--2nd2315j"); }
2446test { try parseIDNAFail("\x200d\x3c2\xdf\x731\xff0e\xbcd"); }
2447test { try parseIDNAFail("\x200d\x3c2\xdf\x731.\xbcd"); }
2448test { try parseIDNAFail("\x200d\x3a3SS\x731.\xbcd"); }
2449test { try parseIDNAFail("\x200d\x3c3ss\x731.\xbcd"); }
2450test { try parseIDNAFail("\x200d\x3a3ss\x731.\xbcd"); }
2451test { try parseIDNAFail("xn--ss-ubc826a.xn--xmc"); }
2452test { try parseIDNAFail("xn--ss-ubc826ab34b.xn--xmc"); }
2453test { try parseIDNAFail("\x200d\x3a3\xdf\x731.\xbcd"); }
2454test { try parseIDNAFail("\x200d\x3c3\xdf\x731.\xbcd"); }
2455test { try parseIDNAFail("xn--zca39lk1di19a.xn--xmc"); }
2456test { try parseIDNAFail("xn--zca19ln1di19a.xn--xmc"); }
2457test { try parseIDNAFail("\x200d\x3a3SS\x731\xff0e\xbcd"); }
2458test { try parseIDNAFail("\x200d\x3c3ss\x731\xff0e\xbcd"); }
2459test { try parseIDNAFail("\x200d\x3a3ss\x731\xff0e\xbcd"); }
2460test { try parseIDNAFail("\x200d\x3a3\xdf\x731\xff0e\xbcd"); }
2461test { try parseIDNAFail("\x200d\x3c3\xdf\x731\xff0e\xbcd"); }
2462test { try parseIDNAFail("\x2260\xff0e\x200d"); }
2463test { try parseIDNAFail("=\x338\xff0e\x200d"); }
2464test { try parseIDNAFail("\x2260.\x200d"); }
2465test { try parseIDNAFail("=\x338.\x200d"); }
2466test { try parseIDNAFail("xn--1ch.xn--1ug"); }
2467test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3c2\xff0e\x3c2\xd802\xde3f"); }
2468test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3c2.\x3c2\xd802\xde3f"); }
2469test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3a3.\x3a3\xd802\xde3f"); }
2470test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3c3.\x3c2\xd802\xde3f"); }
2471test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3c3.\x3c3\xd802\xde3f"); }
2472test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3a3.\x3c3\xd802\xde3f"); }
2473test { try parseIDNAFail("xn--4xa502av8297a.xn--4xa6055k"); }
2474test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3a3.\x3c2\xd802\xde3f"); }
2475test { try parseIDNAFail("xn--4xa502av8297a.xn--3xa8055k"); }
2476test { try parseIDNAFail("xn--3xa702av8297a.xn--3xa8055k"); }
2477test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3a3\xff0e\x3a3\xd802\xde3f"); }
2478test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3c3\xff0e\x3c2\xd802\xde3f"); }
2479test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3c3\xff0e\x3c3\xd802\xde3f"); }
2480test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3a3\xff0e\x3c3\xd802\xde3f"); }
2481test { try parseIDNAFail("\xdb5c\xdef5\x9cd\x3a3\xff0e\x3c2\xd802\xde3f"); }
2482test { try parseIDNAFail("\xd94e\xdd12\xff61\xb967"); }
2483test { try parseIDNAFail("\xd94e\xdd12\xff61\x1105\x1172\x11b6"); }
2484test { try parseIDNAFail("\xd94e\xdd12\x3002\xb967"); }
2485test { try parseIDNAFail("\xd94e\xdd12\x3002\x1105\x1172\x11b6"); }
2486test { try parseIDNAFail("xn--s264a.xn--pw2b"); }
2487test { try parseIDNAFail("\x1846\xd805\xdcdd\xff0e\xd83b\xdd46"); }
2488test { try parseIDNAFail("\x1846\xd805\xdcdd.\xd83b\xdd46"); }
2489test { try parseIDNAFail("xn--57e0440k.xn--k86h"); }
2490test { try parseIDNAFail("\xdbef\xdfe6\xff61\x183d"); }
2491test { try parseIDNAFail("\xdbef\xdfe6\x3002\x183d"); }
2492test { try parseIDNAFail("xn--j890g.xn--w7e"); }
2493test { try parseIDNAFail("\x5b03\xd834\xdf4c\xff0e\x200d\xb44"); }
2494test { try parseIDNAFail("\x5b03\xd834\xdf4c.\x200d\xb44"); }
2495test { try parseIDNAFail("xn--b6s0078f.xn--0ic"); }
2496test { try parseIDNAFail("xn--b6s0078f.xn--0ic557h"); }
2497test { try parseIDNAFail("\x200c.\xd93d\xdee4"); }
2498test { try parseIDNAFail(".xn--q823a"); }
2499test { try parseIDNAFail("xn--0ug.xn--q823a"); }
2500test { try parseIDNAFail("\xdaa9\xded5\x10a3\x4805\xff0e\xd803\xde11"); }
2501test { try parseIDNAFail("\xdaa9\xded5\x10a3\x4805.\xd803\xde11"); }
2502test { try parseIDNAFail("\xdaa9\xded5\x2d03\x4805.\xd803\xde11"); }
2503test { try parseIDNAFail("xn--ukju77frl47r.xn--yl0d"); }
2504test { try parseIDNAFail("\xdaa9\xded5\x2d03\x4805\xff0e\xd803\xde11"); }
2505test { try parseIDNAFail("xn--bnd074zr557n.xn--yl0d"); }
2506test { try parseIDNAFail("-\xff61\xfe12"); }
2507test { try parseIDNAFail("-.xn--y86c"); }
2508test { try parseIDNAFail("\x200d.F"); }
2509test { try parseIDNAFail("\x200d.f"); }
2510test { try parseIDNAFail("xn--1ug.f"); }
2511test { try parseIDNAFail("\x200d\x3a32\xff61\xdf"); }
2512test { try parseIDNAFail("\x200d\x3a32\x3002\xdf"); }
2513test { try parseIDNAFail("\x200d\x3a32\x3002SS"); }
2514test { try parseIDNAFail("\x200d\x3a32\x3002ss"); }
2515test { try parseIDNAFail("\x200d\x3a32\x3002Ss"); }
2516test { try parseIDNAFail("xn--1ug914h.ss"); }
2517test { try parseIDNAFail("xn--1ug914h.xn--zca"); }
2518test { try parseIDNAFail("\x200d\x3a32\xff61SS"); }
2519test { try parseIDNAFail("\x200d\x3a32\xff61ss"); }
2520test { try parseIDNAFail("\x200d\x3a32\xff61Ss"); }
2521test { try parseIDNAFail("\x200d\xff0e\xdbc3\xde28"); }
2522test { try parseIDNAFail("\x200d.\xdbc3\xde28"); }
2523test { try parseIDNAFail(".xn--h327f"); }
2524test { try parseIDNAFail("xn--1ug.xn--h327f"); }
2525test { try parseIDNAFail("\xd94e\xdf7b\xd8f2\xdd41\xff61\x2260\xd835\xdff2"); }
2526test { try parseIDNAFail("\xd94e\xdf7b\xd8f2\xdd41\xff61=\x338\xd835\xdff2"); }
2527test { try parseIDNAFail("\xd94e\xdf7b\xd8f2\xdd41\x3002\x22606"); }
2528test { try parseIDNAFail("\xd94e\xdf7b\xd8f2\xdd41\x3002=\x3386"); }
2529test { try parseIDNAFail("xn--h79w4z99a.xn--6-tfo"); }
2530test { try parseIDNAFail("xn--98e.xn--om9c"); }
2531test { try parseIDNAFail("\xaaf6\x188f\xe3a\xff12.\xd800\xdee2\x745\xf9f\xfe12"); }
2532test { try parseIDNAFail("\xaaf6\x188f\xe3a2.\xd800\xdee2\x745\xf9f\x3002"); }
2533test { try parseIDNAFail("xn--2-2zf840fk16m.xn--sob093b2m7s."); }
2534test { try parseIDNAFail("xn--2-2zf840fk16m.xn--sob093bj62sz9d"); }
2535test { try parseIDNAFail("\xdad7\xdd27\xff61\x2260-\xdb41\xde44\x2f9b"); }
2536test { try parseIDNAFail("\xdad7\xdd27\xff61=\x338-\xdb41\xde44\x2f9b"); }
2537test { try parseIDNAFail("\xdad7\xdd27\x3002\x2260-\xdb41\xde44\x8d70"); }
2538test { try parseIDNAFail("\xdad7\xdd27\x3002=\x338-\xdb41\xde44\x8d70"); }
2539test { try parseIDNAFail("xn--gm57d.xn----tfo4949b3664m"); }
2540test { try parseIDNAFail("-\x2f86\xff0e\xaaf6"); }
2541test { try parseIDNAFail("-\x820c.\xaaf6"); }
2542test { try parseIDNAFail("xn----ef8c.xn--2v9a"); }
2543test { try parseIDNAFail("xn--jnd1986v.xn--gdh"); }
2544test { try parseIDNAFail("\x74bc\xd836\xde2d\xff61\x200c\xdb40\xdddf"); }
2545test { try parseIDNAFail("\x74bc\xd836\xde2d\x3002\x200c\xdb40\xdddf"); }
2546test { try parseIDNAFail("xn--gky8837e.xn--0ug"); }
2547test { try parseIDNAFail("\x200c.\x200c"); }
2548test { try parseIDNAFail("xn--0ug.xn--0ug"); }
2549test { try parseIDNAFail("\x10b7\xff0e\x5c2\xd804\xdd34\xa9b7\xd920\xdce8"); }
2550test { try parseIDNAFail("\x10b7\xff0e\xd804\xdd34\x5c2\xa9b7\xd920\xdce8"); }
2551test { try parseIDNAFail("\x10b7.\xd804\xdd34\x5c2\xa9b7\xd920\xdce8"); }
2552test { try parseIDNAFail("\x2d17.\xd804\xdd34\x5c2\xa9b7\xd920\xdce8"); }
2553test { try parseIDNAFail("xn--flj.xn--qdb0605f14ycrms3c"); }
2554test { try parseIDNAFail("\x2d17\xff0e\xd804\xdd34\x5c2\xa9b7\xd920\xdce8"); }
2555test { try parseIDNAFail("\x2d17\xff0e\x5c2\xd804\xdd34\xa9b7\xd920\xdce8"); }
2556test { try parseIDNAFail("xn--vnd.xn--qdb0605f14ycrms3c"); }
2557test { try parseIDNAFail("\x2488\x916b\xfe12\x3002\x8d6"); }
2558test { try parseIDNAFail("1.\x916b\x3002\x3002\x8d6"); }
2559test { try parseIDNAFail("1.xn--8j4a..xn--8zb"); }
2560test { try parseIDNAFail("xn--tsh4490bfe8c.xn--8zb"); }
2561test { try parseIDNAFail("\x2de3\x200c\x226e\x1a6b.\x200c\xe3a"); }
2562test { try parseIDNAFail("\x2de3\x200c<\x338\x1a6b.\x200c\xe3a"); }
2563test { try parseIDNAFail("xn--uof548an0j.xn--o4c"); }
2564test { try parseIDNAFail("xn--uof63xk4bf3s.xn--o4c732g"); }
2565test { try parseIDNAFail("xn--co6h.xn--1-kwssa"); }
2566test { try parseIDNAFail("xn--co6h.xn--1-h1g429s"); }
2567test { try parseIDNAFail("xn--co6h.xn--1-h1gs"); }
2568test { try parseIDNAFail("\xa806\x3002\xd8ad\xde8f\xfb0\x2495"); }
2569test { try parseIDNAFail("\xa806\x3002\xd8ad\xde8f\xfb014."); }
2570test { try parseIDNAFail("xn--l98a.xn--14-jsj57880f."); }
2571test { try parseIDNAFail("xn--l98a.xn--dgd218hhp28d"); }
2572test { try parseIDNAFail("\xd835\xdfe04\xdb40\xddd7\xd834\xde3b\xff0e\x200d\xd800\xdef5\x26e7\x200d"); }
2573test { try parseIDNAFail("84\xdb40\xddd7\xd834\xde3b.\x200d\xd800\xdef5\x26e7\x200d"); }
2574test { try parseIDNAFail("xn--84-s850a.xn--1uga573cfq1w"); }
2575test { try parseIDNAFail("\xd975\xdf0e\x2488\xff61\x200c\xd835\xdfe4"); }
2576test { try parseIDNAFail("\xd975\xdf0e1.\x3002\x200c2"); }
2577test { try parseIDNAFail("xn--1-ex54e..c"); }
2578test { try parseIDNAFail("xn--1-ex54e..xn--2-rgn"); }
2579test { try parseIDNAFail("xn--tsh94183d.c"); }
2580test { try parseIDNAFail("xn--tsh94183d.xn--2-rgn"); }
2581test { try parseIDNAFail("\x200d\x200c\xdb40\xddaa\xff61\xdf\xd805\xdcc3"); }
2582test { try parseIDNAFail("\x200d\x200c\xdb40\xddaa\x3002\xdf\xd805\xdcc3"); }
2583test { try parseIDNAFail("\x200d\x200c\xdb40\xddaa\x3002SS\xd805\xdcc3"); }
2584test { try parseIDNAFail("\x200d\x200c\xdb40\xddaa\x3002ss\xd805\xdcc3"); }
2585test { try parseIDNAFail("\x200d\x200c\xdb40\xddaa\x3002Ss\xd805\xdcc3"); }
2586test { try parseIDNAFail("xn--0ugb.xn--ss-bh7o"); }
2587test { try parseIDNAFail("xn--0ugb.xn--zca0732l"); }
2588test { try parseIDNAFail("\x200d\x200c\xdb40\xddaa\xff61SS\xd805\xdcc3"); }
2589test { try parseIDNAFail("\x200d\x200c\xdb40\xddaa\xff61ss\xd805\xdcc3"); }
2590test { try parseIDNAFail("\x200d\x200c\xdb40\xddaa\xff61Ss\xd805\xdcc3"); }
2591test { try parseIDNAFail("\xfe12\x200c\x30f6\x44a9.\xa86a"); }
2592test { try parseIDNAFail("\x3002\x200c\x30f6\x44a9.\xa86a"); }
2593test { try parseIDNAFail(".xn--0ug287dj0o.xn--gd9a"); }
2594test { try parseIDNAFail("xn--qekw60dns9k.xn--gd9a"); }
2595test { try parseIDNAFail("xn--0ug287dj0or48o.xn--gd9a"); }
2596test { try parseIDNAFail("\x200c\x2488\xd852\xdf8d.\xdb49\xdccb\x1a60"); }
2597test { try parseIDNAFail("\x200c1.\xd852\xdf8d.\xdb49\xdccb\x1a60"); }
2598test { try parseIDNAFail("1.xn--4x6j.xn--jof45148n"); }
2599test { try parseIDNAFail("xn--1-rgn.xn--4x6j.xn--jof45148n"); }
2600test { try parseIDNAFail("xn--tshw462r.xn--jof45148n"); }
2601test { try parseIDNAFail("xn--0ug88o7471d.xn--jof45148n"); }
2602test { try parseIDNAFail("\xd834\xdd75\xff61\xd835\xdfeb\xd838\xdc08\x4b3a\x2488"); }
2603test { try parseIDNAFail(".xn--9-ecp936non25a"); }
2604test { try parseIDNAFail("xn--3f1h.xn--91-030c1650n."); }
2605test { try parseIDNAFail("xn--3f1h.xn--9-ecp936non25a"); }
2606test { try parseIDNAFail("-\xdb40\xdd710\xff61\x17cf\x1dfd\xd187\xc2ed"); }
2607test { try parseIDNAFail("-\xdb40\xdd710\xff61\x17cf\x1dfd\x1110\x1168\x11aa\x1109\x1175\x11b8"); }
2608test { try parseIDNAFail("-\xdb40\xdd710\x3002\x17cf\x1dfd\xd187\xc2ed"); }
2609test { try parseIDNAFail("-\xdb40\xdd710\x3002\x17cf\x1dfd\x1110\x1168\x11aa\x1109\x1175\x11b8"); }
2610test { try parseIDNAFail("-0.xn--r4e872ah77nghm"); }
2611test { try parseIDNAFail("\x115f\x10bf\x10b5\x10e0\xff61\xb4d"); }
2612test { try parseIDNAFail("\x115f\x10bf\x10b5\x10e0\x3002\xb4d"); }
2613test { try parseIDNAFail("\x115f\x2d1f\x2d15\x10e0\x3002\xb4d"); }
2614test { try parseIDNAFail("\x115f\x10bf\x10b5\x1ca0\x3002\xb4d"); }
2615test { try parseIDNAFail("xn--1od555l3a.xn--9ic"); }
2616test { try parseIDNAFail("\x115f\x2d1f\x2d15\x10e0\xff61\xb4d"); }
2617test { try parseIDNAFail("\x115f\x10bf\x10b5\x1ca0\xff61\xb4d"); }
2618test { try parseIDNAFail("xn--tndt4hvw.xn--9ic"); }
2619test { try parseIDNAFail("xn--1od7wz74eeb.xn--9ic"); }
2620test { try parseIDNAFail("\x115f\x10bf\x2d15\x10e0\x3002\xb4d"); }
2621test { try parseIDNAFail("xn--3nd0etsm92g.xn--9ic"); }
2622test { try parseIDNAFail("\x115f\x10bf\x2d15\x10e0\xff61\xb4d"); }
2623test { try parseIDNAFail("xn--l96h.xn--o8e4044k"); }
2624test { try parseIDNAFail("xn--l96h.xn--03e93aq365d"); }
2625test { try parseIDNAFail("\xd835\xdfdb\xd834\xddaa\xa8c4\xff61\xa8ea-"); }
2626test { try parseIDNAFail("\xd835\xdfdb\xa8c4\xd834\xddaa\xff61\xa8ea-"); }
2627test { try parseIDNAFail("3\xa8c4\xd834\xddaa\x3002\xa8ea-"); }
2628test { try parseIDNAFail("xn--3-sl4eu679e.xn----xn4e"); }
2629test { try parseIDNAFail("\x1139\xff61\xeca\xda42\xdfe4\xdb40\xdd1e"); }
2630test { try parseIDNAFail("\x1139\x3002\xeca\xda42\xdfe4\xdb40\xdd1e"); }
2631test { try parseIDNAFail("xn--lrd.xn--s8c05302k"); }
2632test { try parseIDNAFail("\x10a6\xdaae\xdca9\xff0e\xdb40\xdda1\xfe09\xd83a\xdd0d"); }
2633test { try parseIDNAFail("\x10a6\xdaae\xdca9.\xdb40\xdda1\xfe09\xd83a\xdd0d"); }
2634test { try parseIDNAFail("\x2d06\xdaae\xdca9.\xdb40\xdda1\xfe09\xd83a\xdd2f"); }
2635test { try parseIDNAFail("xn--xkjw3965g.xn--ne6h"); }
2636test { try parseIDNAFail("\x2d06\xdaae\xdca9\xff0e\xdb40\xdda1\xfe09\xd83a\xdd2f"); }
2637test { try parseIDNAFail("xn--end82983m.xn--ne6h"); }
2638test { try parseIDNAFail("\x2d06\xdaae\xdca9.\xdb40\xdda1\xfe09\xd83a\xdd0d"); }
2639test { try parseIDNAFail("\x2d06\xdaae\xdca9\xff0e\xdb40\xdda1\xfe09\xd83a\xdd0d"); }
2640test { try parseIDNAFail("\xd91d\xdee8.\xd9d5\xdfe2\xd835\xdfe8\xa8c4"); }
2641test { try parseIDNAFail("\xd91d\xdee8.\xd9d5\xdfe26\xa8c4"); }
2642test { try parseIDNAFail("xn--mi60a.xn--6-sl4es8023c"); }
2643test { try parseIDNAFail("\xd800\xdef8\xdb79\xde0b\x10c2.\x10a1"); }
2644test { try parseIDNAFail("\xd800\xdef8\xdb79\xde0b\x2d22.\x2d01"); }
2645test { try parseIDNAFail("\xd800\xdef8\xdb79\xde0b\x10c2.\x2d01"); }
2646test { try parseIDNAFail("xn--qlj1559dr224h.xn--skj"); }
2647test { try parseIDNAFail("xn--6nd5215jr2u0h.xn--skj"); }
2648test { try parseIDNAFail("xn--6nd5215jr2u0h.xn--8md"); }
2649test { try parseIDNAFail("\xd91d\xdc7f\xa806\x2084\xda65\xdf86\xff61\xd88a\xde67\xdb41\xdcb9\x3c2"); }
2650test { try parseIDNAFail("\xd91d\xdc7f\xa8064\xda65\xdf86\x3002\xd88a\xde67\xdb41\xdcb9\x3c2"); }
2651test { try parseIDNAFail("\xd91d\xdc7f\xa8064\xda65\xdf86\x3002\xd88a\xde67\xdb41\xdcb9\x3a3"); }
2652test { try parseIDNAFail("\xd91d\xdc7f\xa8064\xda65\xdf86\x3002\xd88a\xde67\xdb41\xdcb9\x3c3"); }
2653test { try parseIDNAFail("xn--4-w93ej7463a9io5a.xn--4xa31142bk3f0d"); }
2654test { try parseIDNAFail("xn--4-w93ej7463a9io5a.xn--3xa51142bk3f0d"); }
2655test { try parseIDNAFail("\xd91d\xdc7f\xa806\x2084\xda65\xdf86\xff61\xd88a\xde67\xdb41\xdcb9\x3a3"); }
2656test { try parseIDNAFail("\xd91d\xdc7f\xa806\x2084\xda65\xdf86\xff61\xd88a\xde67\xdb41\xdcb9\x3c3"); }
2657test { try parseIDNAFail("\xd8ba\xdcac\x3002\x729\x3002\xcbd95"); }
2658test { try parseIDNAFail("\xd8ba\xdcac\x3002\x729\x3002\x110d\x1173\x11ac5"); }
2659test { try parseIDNAFail("xn--t92s.xn--znb.xn--5-y88f"); }
2660test { try parseIDNAFail("\x17ca.\x200d\xd835\xdfee\xd804\xdc3f"); }
2661test { try parseIDNAFail("\x17ca.\x200d2\xd804\xdc3f"); }
2662test { try parseIDNAFail("xn--m4e.xn--2-ku7i"); }
2663test { try parseIDNAFail("xn--m4e.xn--2-tgnv469h"); }
2664test { try parseIDNAFail("\xaaf6\x3002\x5b36\xdf\x847d"); }
2665test { try parseIDNAFail("\xaaf6\x3002\x5b36SS\x847d"); }
2666test { try parseIDNAFail("\xaaf6\x3002\x5b36ss\x847d"); }
2667test { try parseIDNAFail("\xaaf6\x3002\x5b36Ss\x847d"); }
2668test { try parseIDNAFail("xn--2v9a.xn--ss-q40dp97m"); }
2669test { try parseIDNAFail("xn--2v9a.xn--zca7637b14za"); }
2670test { try parseIDNAFail("\x3c2\xd805\xdc3d\xd896\xdc88\xd805\xdf2b\xff61\xd83a\xdf29\x200c\xd802\xdec4"); }
2671test { try parseIDNAFail("\x3c2\xd805\xdc3d\xd896\xdc88\xd805\xdf2b\x3002\xd83a\xdf29\x200c\xd802\xdec4"); }
2672test { try parseIDNAFail("\x3a3\xd805\xdc3d\xd896\xdc88\xd805\xdf2b\x3002\xd83a\xdf29\x200c\xd802\xdec4"); }
2673test { try parseIDNAFail("\x3c3\xd805\xdc3d\xd896\xdc88\xd805\xdf2b\x3002\xd83a\xdf29\x200c\xd802\xdec4"); }
2674test { try parseIDNAFail("xn--4xa2260lk3b8z15g.xn--tw9ct349a"); }
2675test { try parseIDNAFail("xn--4xa2260lk3b8z15g.xn--0ug4653g2xzf"); }
2676test { try parseIDNAFail("xn--3xa4260lk3b8z15g.xn--0ug4653g2xzf"); }
2677test { try parseIDNAFail("\x3a3\xd805\xdc3d\xd896\xdc88\xd805\xdf2b\xff61\xd83a\xdf29\x200c\xd802\xdec4"); }
2678test { try parseIDNAFail("\x3c3\xd805\xdc3d\xd896\xdc88\xd805\xdf2b\xff61\xd83a\xdf29\x200c\xd802\xdec4"); }
2679test { try parseIDNAFail("\x2ea2\xd9df\xde85\xd835\xdfe4\xff61\x200d\xd83d\xdeb7"); }
2680test { try parseIDNAFail("\x2ea2\xd9df\xde852\x3002\x200d\xd83d\xdeb7"); }
2681test { try parseIDNAFail("xn--2-4jtr4282f.xn--m78h"); }
2682test { try parseIDNAFail("xn--2-4jtr4282f.xn--1ugz946p"); }
2683test { try parseIDNAFail("\xd836\xde25\x3002\x2adf\xd804\xde3e"); }
2684test { try parseIDNAFail("xn--n82h.xn--63iw010f"); }
2685test { try parseIDNAFail("-\x1897\x200c\xd83c\xdd04.\xd805\xdf22"); }
2686test { try parseIDNAFail("-\x1897\x200c3,.\xd805\xdf22"); }
2687test { try parseIDNAFail("xn---3,-3eu.xn--9h2d"); }
2688test { try parseIDNAFail("xn---3,-3eu051c.xn--9h2d"); }
2689test { try parseIDNAFail("xn----pck1820x.xn--9h2d"); }
2690test { try parseIDNAFail("xn----pck312bx563c.xn--9h2d"); }
2691test { try parseIDNAFail("xn--z3e.xn----938f"); }
2692test { try parseIDNAFail("\x200c\xd805\xdcc2\x3002\x2488-\xdbc2\xde9b"); }
2693test { try parseIDNAFail("\x200c\xd805\xdcc2\x30021.-\xdbc2\xde9b"); }
2694test { try parseIDNAFail("xn--wz1d.1.xn----rg03o"); }
2695test { try parseIDNAFail("xn--0ugy057g.1.xn----rg03o"); }
2696test { try parseIDNAFail("xn--wz1d.xn----dcp29674o"); }
2697test { try parseIDNAFail("xn--0ugy057g.xn----dcp29674o"); }
2698test { try parseIDNAFail("\xf94\xa84b-\xff0e-\xd81a\xdf34"); }
2699test { try parseIDNAFail("\xf94\xa84b-.-\xd81a\xdf34"); }
2700test { try parseIDNAFail("xn----ukg9938i.xn----4u5m"); }
2701test { try parseIDNAFail("\xd9bd\xdcb3-\x22e2\x200c\xff0e\x6807-"); }
2702test { try parseIDNAFail("\xd9bd\xdcb3-\x2291\x338\x200c\xff0e\x6807-"); }
2703test { try parseIDNAFail("\xd9bd\xdcb3-\x22e2\x200c.\x6807-"); }
2704test { try parseIDNAFail("\xd9bd\xdcb3-\x2291\x338\x200c.\x6807-"); }
2705test { try parseIDNAFail("xn----9mo67451g.xn----qj7b"); }
2706test { try parseIDNAFail("xn----sgn90kn5663a.xn----qj7b"); }
2707test { try parseIDNAFail("-\xd914\xde74.\x6e0\x189a-"); }
2708test { try parseIDNAFail("xn----qi38c.xn----jxc827k"); }
2709test { try parseIDNAFail("\x3002\x635\x649\xe37\x644\x627\x3002\x5c93\x1bf2\xdb43\xdf83\x1842"); }
2710test { try parseIDNAFail(".xn--mgb1a7bt462h.xn--17e10qe61f9r71s"); }
2711test { try parseIDNAFail("\x1039-\xd82a\xdfad\xd83d\xdfa2\xff0e\xdf"); }
2712test { try parseIDNAFail("\x1039-\xd82a\xdfad\xd83d\xdfa2.\xdf"); }
2713test { try parseIDNAFail("\x1039-\xd82a\xdfad\xd83d\xdfa2.SS"); }
2714test { try parseIDNAFail("\x1039-\xd82a\xdfad\xd83d\xdfa2.ss"); }
2715test { try parseIDNAFail("\x1039-\xd82a\xdfad\xd83d\xdfa2.Ss"); }
2716test { try parseIDNAFail("xn----9tg11172akr8b.ss"); }
2717test { try parseIDNAFail("xn----9tg11172akr8b.xn--zca"); }
2718test { try parseIDNAFail("\x1039-\xd82a\xdfad\xd83d\xdfa2\xff0eSS"); }
2719test { try parseIDNAFail("\x1039-\xd82a\xdfad\xd83d\xdfa2\xff0ess"); }
2720test { try parseIDNAFail("\x1039-\xd82a\xdfad\xd83d\xdfa2\xff0eSs"); }
2721test { try parseIDNAFail("\xd4d-\x200d\x200c\xff61\xd955\xdfa7\x2085\x2260"); }
2722test { try parseIDNAFail("\xd4d-\x200d\x200c\xff61\xd955\xdfa7\x2085=\x338"); }
2723test { try parseIDNAFail("\xd4d-\x200d\x200c\x3002\xd955\xdfa75\x2260"); }
2724test { try parseIDNAFail("\xd4d-\x200d\x200c\x3002\xd955\xdfa75=\x338"); }
2725test { try parseIDNAFail("xn----jmf.xn--5-ufo50192e"); }
2726test { try parseIDNAFail("xn----jmf215lda.xn--5-ufo50192e"); }
2727test { try parseIDNAFail("\x9523\x3002\xa4d\xdb41\xde3b\xdb41\xde86"); }
2728test { try parseIDNAFail("xn--gc5a.xn--ybc83044ppga"); }
2729test { try parseIDNAFail("xn--6-8cb306hms1a.xn--ss-2vq"); }
2730test { try parseIDNAFail("xn--6-8cb555h2b.xn--ss-2vq"); }
2731test { try parseIDNAFail("xn--6-8cb555h2b.xn--zca894k"); }
2732test { try parseIDNAFail("\xd9ee\xdc50\xff61\x226f\xd804\xdeea"); }
2733test { try parseIDNAFail("\xd9ee\xdc50\xff61>\x338\xd804\xdeea"); }
2734test { try parseIDNAFail("\xd9ee\xdc50\x3002\x226f\xd804\xdeea"); }
2735test { try parseIDNAFail("\xd9ee\xdc50\x3002>\x338\xd804\xdeea"); }
2736test { try parseIDNAFail("xn--eo08b.xn--hdh3385g"); }
2737test { try parseIDNAFail("\xdb40\xdd0f\xd81a\xdf34\xdb43\xdcbd\xff61\xffa0"); }
2738test { try parseIDNAFail("\xdb40\xdd0f\xd81a\xdf34\xdb43\xdcbd\x3002\x1160"); }
2739test { try parseIDNAFail("xn--619ep9154c."); }
2740test { try parseIDNAFail("xn--619ep9154c.xn--psd"); }
2741test { try parseIDNAFail("xn--619ep9154c.xn--cl7c"); }
2742test { try parseIDNAFail("\xdb42\xdf54.\xd800\xdef1\x2082"); }
2743test { try parseIDNAFail("\xdb42\xdf54.\xd800\xdef12"); }
2744test { try parseIDNAFail("xn--vi56e.xn--2-w91i"); }
2745test { try parseIDNAFail("\x2dbf.\xdf\x200d"); }
2746test { try parseIDNAFail("\x2dbf.SS\x200d"); }
2747test { try parseIDNAFail("\x2dbf.ss\x200d"); }
2748test { try parseIDNAFail("\x2dbf.Ss\x200d"); }
2749test { try parseIDNAFail("xn--7pj.ss"); }
2750test { try parseIDNAFail("xn--7pj.xn--ss-n1t"); }
2751test { try parseIDNAFail("xn--7pj.xn--zca870n"); }
2752test { try parseIDNAFail("\x6889\x3002\x200c"); }
2753test { try parseIDNAFail("xn--7zv.xn--0ug"); }
2754test { try parseIDNAFail("\x40da\x87e5-\x3002-\xd9b5\xdc98\x2488"); }
2755test { try parseIDNAFail("\x40da\x87e5-\x3002-\xd9b5\xdc981."); }
2756test { try parseIDNAFail("xn----n50a258u.xn---1-up07j."); }
2757test { try parseIDNAFail("xn----n50a258u.xn----ecp33805f"); }
2758test { try parseIDNAFail("\x1894\x2260\xdbec\xde42.\x200d\xd800\xdee2"); }
2759test { try parseIDNAFail("\x1894=\x338\xdbec\xde42.\x200d\xd800\xdee2"); }
2760test { try parseIDNAFail("xn--ebf031cf7196a.xn--587c"); }
2761test { try parseIDNAFail("xn--ebf031cf7196a.xn--1ug9540g"); }
2762test { try parseIDNAFail("\xdb43\xdc29\xd807\xdcac\xff0e\x65c"); }
2763test { try parseIDNAFail("\xdb43\xdc29\xd807\xdcac.\x65c"); }
2764test { try parseIDNAFail("xn--sn3d59267c.xn--4hb"); }
2765test { try parseIDNAFail("\xd800\xdf7a.\xd928\xddc3\x200c"); }
2766test { try parseIDNAFail("xn--ie8c.xn--2g51a"); }
2767test { try parseIDNAFail("xn--ie8c.xn--0ug03366c"); }
2768test { try parseIDNAFail("\x200d\x226e\xff0e\xdb41\xdfea\xd8a6\xdecf-"); }
2769test { try parseIDNAFail("\x200d<\x338\xff0e\xdb41\xdfea\xd8a6\xdecf-"); }
2770test { try parseIDNAFail("\x200d\x226e.\xdb41\xdfea\xd8a6\xdecf-"); }
2771test { try parseIDNAFail("\x200d<\x338.\xdb41\xdfea\xd8a6\xdecf-"); }
2772test { try parseIDNAFail("xn--gdh.xn----cr99a1w710b"); }
2773test { try parseIDNAFail("xn--1ug95g.xn----cr99a1w710b"); }
2774test { try parseIDNAFail("\x200d\x200d\x8954\x3002\x10bc5\xa86e\xd995\xdf4f"); }
2775test { try parseIDNAFail("\x200d\x200d\x8954\x3002\x2d1c5\xa86e\xd995\xdf4f"); }
2776test { try parseIDNAFail("xn--2u2a.xn--5-uws5848bpf44e"); }
2777test { try parseIDNAFail("xn--1uga7691f.xn--5-uws5848bpf44e"); }
2778test { try parseIDNAFail("xn--2u2a.xn--5-r1g7167ipfw8d"); }
2779test { try parseIDNAFail("xn--1uga7691f.xn--5-r1g7167ipfw8d"); }
2780test { try parseIDNAFail("\xa9b9\x200d\xd077\xd8af\xdda1\xff61\x2082"); }
2781test { try parseIDNAFail("\xa9b9\x200d\x110f\x1173\x11b2\xd8af\xdda1\xff61\x2082"); }
2782test { try parseIDNAFail("xn--0m9as84e2e21c.c"); }
2783test { try parseIDNAFail("xn--1ug1435cfkyaoi04d.c"); }
2784test { try parseIDNAFail("\x2260\x81a3\x3002\xf83"); }
2785test { try parseIDNAFail("=\x338\x81a3\x3002\xf83"); }
2786test { try parseIDNAFail("xn--1chy468a.xn--2ed"); }
2787test { try parseIDNAFail("\xd800\xdef7\x3002\x200d"); }
2788test { try parseIDNAFail("xn--r97c.xn--1ug"); }
2789test { try parseIDNAFail("\xd807\xdc33\xd804\xde2f\x3002\x296a"); }
2790test { try parseIDNAFail("xn--2g1d14o.xn--jti"); }
2791test { try parseIDNAFail("\xd804\xdd80\x4074\xd952\xdde3\xff0e\x10b5\xd835\xdfdc\x200c\x348"); }
2792test { try parseIDNAFail("\xd804\xdd80\x4074\xd952\xdde3.\x10b54\x200c\x348"); }
2793test { try parseIDNAFail("\xd804\xdd80\x4074\xd952\xdde3.\x2d154\x200c\x348"); }
2794test { try parseIDNAFail("xn--1mnx647cg3x1b.xn--4-zfb5123a"); }
2795test { try parseIDNAFail("xn--1mnx647cg3x1b.xn--4-zfb502tlsl"); }
2796test { try parseIDNAFail("\xd804\xdd80\x4074\xd952\xdde3\xff0e\x2d15\xd835\xdfdc\x200c\x348"); }
2797test { try parseIDNAFail("xn--1mnx647cg3x1b.xn--4-zfb324h"); }
2798test { try parseIDNAFail("xn--1mnx647cg3x1b.xn--4-zfb324h32o"); }
2799
2800test { try parseIDNAPass("fass.de", "fass.de"); }
2801test { try parseIDNAPass("fa\xdf.de", "xn--fa-hia.de"); }
2802test { try parseIDNAPass("Fa\xdf.de", "xn--fa-hia.de"); }
2803test { try parseIDNAPass("xn--fa-hia.de", "xn--fa-hia.de"); }
2804test { try parseIDNAPass("\xe0.\x5d0\x308", "xn--0ca.xn--ssa73l"); }
2805test { try parseIDNAPass("a\x300.\x5d0\x308", "xn--0ca.xn--ssa73l"); }
2806test { try parseIDNAPass("A\x300.\x5d0\x308", "xn--0ca.xn--ssa73l"); }
2807test { try parseIDNAPass("\xc0.\x5d0\x308", "xn--0ca.xn--ssa73l"); }
2808test { try parseIDNAPass("xn--0ca.xn--ssa73l", "xn--0ca.xn--ssa73l"); }
2809test { try parseIDNAPass("\xe0\x308.\x5d0", "xn--0ca81i.xn--4db"); }
2810test { try parseIDNAPass("a\x300\x308.\x5d0", "xn--0ca81i.xn--4db"); }
2811test { try parseIDNAPass("A\x300\x308.\x5d0", "xn--0ca81i.xn--4db"); }
2812test { try parseIDNAPass("\xc0\x308.\x5d0", "xn--0ca81i.xn--4db"); }
2813test { try parseIDNAPass("xn--0ca81i.xn--4db", "xn--0ca81i.xn--4db"); }
2814test { try parseIDNAPass("ab", "ab"); }
2815test { try parseIDNAPass("a\x94d\x200cb", "xn--ab-fsf604u"); }
2816test { try parseIDNAPass("A\x94d\x200cB", "xn--ab-fsf604u"); }
2817test { try parseIDNAPass("A\x94d\x200cb", "xn--ab-fsf604u"); }
2818test { try parseIDNAPass("xn--ab-fsf", "xn--ab-fsf"); }
2819test { try parseIDNAPass("a\x94db", "xn--ab-fsf"); }
2820test { try parseIDNAPass("A\x94dB", "xn--ab-fsf"); }
2821test { try parseIDNAPass("A\x94db", "xn--ab-fsf"); }
2822test { try parseIDNAPass("xn--ab-fsf604u", "xn--ab-fsf604u"); }
2823test { try parseIDNAPass("a\x94d\x200db", "xn--ab-fsf014u"); }
2824test { try parseIDNAPass("A\x94d\x200dB", "xn--ab-fsf014u"); }
2825test { try parseIDNAPass("A\x94d\x200db", "xn--ab-fsf014u"); }
2826test { try parseIDNAPass("xn--ab-fsf014u", "xn--ab-fsf014u"); }
2827test { try parseIDNAPass("\xa1", "xn--7a"); }
2828test { try parseIDNAPass("xn--7a", "xn--7a"); }
2829test { try parseIDNAPass("\x19da", "xn--pkf"); }
2830test { try parseIDNAPass("xn--pkf", "xn--pkf"); }
2831test { try parseIDNAPass("\x3002", "."); }
2832test { try parseIDNAPass(".", "."); }
2833test { try parseIDNAPass("\xab60", "xn--3y9a"); }
2834test { try parseIDNAPass("xn--3y9a", "xn--3y9a"); }
2835test { try parseIDNAPass("1234567890\xe41234567890123456789012345678901234567890123456", "xn--12345678901234567890123456789012345678901234567890123456-fxe"); }
2836test { try parseIDNAPass("1234567890a\x3081234567890123456789012345678901234567890123456", "xn--12345678901234567890123456789012345678901234567890123456-fxe"); }
2837test { try parseIDNAPass("1234567890A\x3081234567890123456789012345678901234567890123456", "xn--12345678901234567890123456789012345678901234567890123456-fxe"); }
2838test { try parseIDNAPass("1234567890\xc41234567890123456789012345678901234567890123456", "xn--12345678901234567890123456789012345678901234567890123456-fxe"); }
2839test { try parseIDNAPass("xn--12345678901234567890123456789012345678901234567890123456-fxe", "xn--12345678901234567890123456789012345678901234567890123456-fxe"); }
2840test { try parseIDNAPass("www.eXample.cOm", "www.example.com"); }
2841test { try parseIDNAPass("B\xfccher.de", "xn--bcher-kva.de"); }
2842test { try parseIDNAPass("Bu\x308cher.de", "xn--bcher-kva.de"); }
2843test { try parseIDNAPass("bu\x308cher.de", "xn--bcher-kva.de"); }
2844test { try parseIDNAPass("b\xfccher.de", "xn--bcher-kva.de"); }
2845test { try parseIDNAPass("B\xdcCHER.DE", "xn--bcher-kva.de"); }
2846test { try parseIDNAPass("BU\x308CHER.DE", "xn--bcher-kva.de"); }
2847test { try parseIDNAPass("xn--bcher-kva.de", "xn--bcher-kva.de"); }
2848test { try parseIDNAPass("\xd6BB", "xn--bb-eka"); }
2849test { try parseIDNAPass("O\x308BB", "xn--bb-eka"); }
2850test { try parseIDNAPass("o\x308bb", "xn--bb-eka"); }
2851test { try parseIDNAPass("\xf6bb", "xn--bb-eka"); }
2852test { try parseIDNAPass("\xd6bb", "xn--bb-eka"); }
2853test { try parseIDNAPass("O\x308bb", "xn--bb-eka"); }
2854test { try parseIDNAPass("xn--bb-eka", "xn--bb-eka"); }
2855test { try parseIDNAPass("FA\x1e9e.de", "xn--fa-hia.de"); }
2856test { try parseIDNAPass("FA\x1e9e.DE", "xn--fa-hia.de"); }
2857test { try parseIDNAPass("\x3b2\x3cc\x3bb\x3bf\x3c2.com", "xn--nxasmm1c.com"); }
2858test { try parseIDNAPass("\x3b2\x3bf\x301\x3bb\x3bf\x3c2.com", "xn--nxasmm1c.com"); }
2859test { try parseIDNAPass("\x392\x39f\x301\x39b\x39f\x3a3.COM", "xn--nxasmq6b.com"); }
2860test { try parseIDNAPass("\x392\x38c\x39b\x39f\x3a3.COM", "xn--nxasmq6b.com"); }
2861test { try parseIDNAPass("\x3b2\x3cc\x3bb\x3bf\x3c3.com", "xn--nxasmq6b.com"); }
2862test { try parseIDNAPass("\x3b2\x3bf\x301\x3bb\x3bf\x3c3.com", "xn--nxasmq6b.com"); }
2863test { try parseIDNAPass("\x392\x3bf\x301\x3bb\x3bf\x3c3.com", "xn--nxasmq6b.com"); }
2864test { try parseIDNAPass("\x392\x3cc\x3bb\x3bf\x3c3.com", "xn--nxasmq6b.com"); }
2865test { try parseIDNAPass("xn--nxasmq6b.com", "xn--nxasmq6b.com"); }
2866test { try parseIDNAPass("\x392\x3bf\x301\x3bb\x3bf\x3c2.com", "xn--nxasmm1c.com"); }
2867test { try parseIDNAPass("\x392\x3cc\x3bb\x3bf\x3c2.com", "xn--nxasmm1c.com"); }
2868test { try parseIDNAPass("xn--nxasmm1c.com", "xn--nxasmm1c.com"); }
2869test { try parseIDNAPass("xn--nxasmm1c", "xn--nxasmm1c"); }
2870test { try parseIDNAPass("\x3b2\x3cc\x3bb\x3bf\x3c2", "xn--nxasmm1c"); }
2871test { try parseIDNAPass("\x3b2\x3bf\x301\x3bb\x3bf\x3c2", "xn--nxasmm1c"); }
2872test { try parseIDNAPass("\x392\x39f\x301\x39b\x39f\x3a3", "xn--nxasmq6b"); }
2873test { try parseIDNAPass("\x392\x38c\x39b\x39f\x3a3", "xn--nxasmq6b"); }
2874test { try parseIDNAPass("\x3b2\x3cc\x3bb\x3bf\x3c3", "xn--nxasmq6b"); }
2875test { try parseIDNAPass("\x3b2\x3bf\x301\x3bb\x3bf\x3c3", "xn--nxasmq6b"); }
2876test { try parseIDNAPass("\x392\x3bf\x301\x3bb\x3bf\x3c3", "xn--nxasmq6b"); }
2877test { try parseIDNAPass("\x392\x3cc\x3bb\x3bf\x3c3", "xn--nxasmq6b"); }
2878test { try parseIDNAPass("xn--nxasmq6b", "xn--nxasmq6b"); }
2879test { try parseIDNAPass("\x392\x3cc\x3bb\x3bf\x3c2", "xn--nxasmm1c"); }
2880test { try parseIDNAPass("\x392\x3bf\x301\x3bb\x3bf\x3c2", "xn--nxasmm1c"); }
2881test { try parseIDNAPass("www.\xdc1\xdca\x200d\xdbb\xdd3.com", "www.xn--10cl1a0b660p.com"); }
2882test { try parseIDNAPass("WWW.\xdc1\xdca\x200d\xdbb\xdd3.COM", "www.xn--10cl1a0b660p.com"); }
2883test { try parseIDNAPass("Www.\xdc1\xdca\x200d\xdbb\xdd3.com", "www.xn--10cl1a0b660p.com"); }
2884test { try parseIDNAPass("www.xn--10cl1a0b.com", "www.xn--10cl1a0b.com"); }
2885test { try parseIDNAPass("www.\xdc1\xdca\xdbb\xdd3.com", "www.xn--10cl1a0b.com"); }
2886test { try parseIDNAPass("WWW.\xdc1\xdca\xdbb\xdd3.COM", "www.xn--10cl1a0b.com"); }
2887test { try parseIDNAPass("Www.\xdc1\xdca\xdbb\xdd3.com", "www.xn--10cl1a0b.com"); }
2888test { try parseIDNAPass("www.xn--10cl1a0b660p.com", "www.xn--10cl1a0b660p.com"); }
2889test { try parseIDNAPass("\x646\x627\x645\x647\x200c\x627\x6cc", "xn--mgba3gch31f060k"); }
2890test { try parseIDNAPass("xn--mgba3gch31f", "xn--mgba3gch31f"); }
2891test { try parseIDNAPass("\x646\x627\x645\x647\x627\x6cc", "xn--mgba3gch31f"); }
2892test { try parseIDNAPass("xn--mgba3gch31f060k", "xn--mgba3gch31f060k"); }
2893test { try parseIDNAPass("xn--mgba3gch31f060k.com", "xn--mgba3gch31f060k.com"); }
2894test { try parseIDNAPass("\x646\x627\x645\x647\x200c\x627\x6cc.com", "xn--mgba3gch31f060k.com"); }
2895test { try parseIDNAPass("\x646\x627\x645\x647\x200c\x627\x6cc.COM", "xn--mgba3gch31f060k.com"); }
2896test { try parseIDNAPass("xn--mgba3gch31f.com", "xn--mgba3gch31f.com"); }
2897test { try parseIDNAPass("\x646\x627\x645\x647\x627\x6cc.com", "xn--mgba3gch31f.com"); }
2898test { try parseIDNAPass("\x646\x627\x645\x647\x627\x6cc.COM", "xn--mgba3gch31f.com"); }
2899test { try parseIDNAPass("a.b\xff0ec\x3002d\xff61", "a.b.c.d."); }
2900test { try parseIDNAPass("a.b.c\x3002d\x3002", "a.b.c.d."); }
2901test { try parseIDNAPass("A.B.C\x3002D\x3002", "a.b.c.d."); }
2902test { try parseIDNAPass("A.b.c\x3002D\x3002", "a.b.c.d."); }
2903test { try parseIDNAPass("a.b.c.d.", "a.b.c.d."); }
2904test { try parseIDNAPass("A.B\xff0eC\x3002D\xff61", "a.b.c.d."); }
2905test { try parseIDNAPass("A.b\xff0ec\x3002D\xff61", "a.b.c.d."); }
2906test { try parseIDNAPass("U\x308.xn--tda", "xn--tda.xn--tda"); }
2907test { try parseIDNAPass("\xdc.xn--tda", "xn--tda.xn--tda"); }
2908test { try parseIDNAPass("\xfc.xn--tda", "xn--tda.xn--tda"); }
2909test { try parseIDNAPass("u\x308.xn--tda", "xn--tda.xn--tda"); }
2910test { try parseIDNAPass("U\x308.XN--TDA", "xn--tda.xn--tda"); }
2911test { try parseIDNAPass("\xdc.XN--TDA", "xn--tda.xn--tda"); }
2912test { try parseIDNAPass("\xdc.xn--Tda", "xn--tda.xn--tda"); }
2913test { try parseIDNAPass("U\x308.xn--Tda", "xn--tda.xn--tda"); }
2914test { try parseIDNAPass("xn--tda.xn--tda", "xn--tda.xn--tda"); }
2915test { try parseIDNAPass("\xfc.\xfc", "xn--tda.xn--tda"); }
2916test { try parseIDNAPass("u\x308.u\x308", "xn--tda.xn--tda"); }
2917test { try parseIDNAPass("U\x308.U\x308", "xn--tda.xn--tda"); }
2918test { try parseIDNAPass("\xdc.\xdc", "xn--tda.xn--tda"); }
2919test { try parseIDNAPass("\xdc.\xfc", "xn--tda.xn--tda"); }
2920test { try parseIDNAPass("U\x308.u\x308", "xn--tda.xn--tda"); }
2921test { try parseIDNAPass("a1.com", "a1.com"); }
2922test { try parseIDNAPass("\x65e5\x672c\x8a9e\x3002\xff2a\xff30", "xn--wgv71a119e.jp"); }
2923test { try parseIDNAPass("\x65e5\x672c\x8a9e\x3002JP", "xn--wgv71a119e.jp"); }
2924test { try parseIDNAPass("\x65e5\x672c\x8a9e\x3002jp", "xn--wgv71a119e.jp"); }
2925test { try parseIDNAPass("\x65e5\x672c\x8a9e\x3002Jp", "xn--wgv71a119e.jp"); }
2926test { try parseIDNAPass("xn--wgv71a119e.jp", "xn--wgv71a119e.jp"); }
2927test { try parseIDNAPass("\x65e5\x672c\x8a9e.jp", "xn--wgv71a119e.jp"); }
2928test { try parseIDNAPass("\x65e5\x672c\x8a9e.JP", "xn--wgv71a119e.jp"); }
2929test { try parseIDNAPass("\x65e5\x672c\x8a9e.Jp", "xn--wgv71a119e.jp"); }
2930test { try parseIDNAPass("\x65e5\x672c\x8a9e\x3002\xff4a\xff50", "xn--wgv71a119e.jp"); }
2931test { try parseIDNAPass("\x65e5\x672c\x8a9e\x3002\xff2a\xff50", "xn--wgv71a119e.jp"); }
2932test { try parseIDNAPass("\x2615", "xn--53h"); }
2933test { try parseIDNAPass("xn--53h", "xn--53h"); }
2934test { try parseIDNAPass("1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); }
2935test { try parseIDNAPass("1.assbcssssssssd\x3c3\x3c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssss\x15dssz", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); }
2936test { try parseIDNAPass("1.assbcssssssssd\x3c3\x3c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\x302ssz", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); }
2937test { try parseIDNAPass("1.ASSBCSSSSSSSSD\x3a3\x3a3SSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSSS\x302SSZ", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); }
2938test { try parseIDNAPass("1.ASSBCSSSSSSSSD\x3a3\x3a3SSSSSSSSSSSSSSSSESSSSSSSSSSSSSSSSSSSSXSSSSSSSSSSSSSSSSSSSSYSSSSSSSSSSSSSSS\x15cSSZ", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); }
2939test { try parseIDNAPass("1.Assbcssssssssd\x3c3\x3c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssss\x15dssz", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); }
2940test { try parseIDNAPass("1.Assbcssssssssd\x3c3\x3c3ssssssssssssssssessssssssssssssssssssxssssssssssssssssssssyssssssssssssssss\x302ssz", "1.xn--assbcssssssssdssssssssssssssssessssssssssssssssssssxssssssssssssssssssssysssssssssssssssssz-pxq1419aa"); }
2941test { try parseIDNAPass("xn--bss", "xn--bss"); }
2942test { try parseIDNAPass("\x5919", "xn--bss"); }
2943test { try parseIDNAPass("\x2e3\x34f\x2115\x200b\xfe63\xad\xff0d\x180c\x212c\xfe00\x17f\x2064\xd835\xdd30\xdb40\xddef\xfb04", "xn--bssffl"); }
2944test { try parseIDNAPass("x\x34fN\x200b-\xad-\x180cB\xfe00s\x2064s\xdb40\xddefffl", "xn--bssffl"); }
2945test { try parseIDNAPass("x\x34fn\x200b-\xad-\x180cb\xfe00s\x2064s\xdb40\xddefffl", "xn--bssffl"); }
2946test { try parseIDNAPass("X\x34fN\x200b-\xad-\x180cB\xfe00S\x2064S\xdb40\xddefFFL", "xn--bssffl"); }
2947test { try parseIDNAPass("X\x34fn\x200b-\xad-\x180cB\xfe00s\x2064s\xdb40\xddefffl", "xn--bssffl"); }
2948test { try parseIDNAPass("xn--bssffl", "xn--bssffl"); }
2949test { try parseIDNAPass("\x5921\x591e\x591c\x5919", "xn--bssffl"); }
2950test { try parseIDNAPass("\x2e3\x34f\x2115\x200b\xfe63\xad\xff0d\x180c\x212c\xfe00S\x2064\xd835\xdd30\xdb40\xddefFFL", "xn--bssffl"); }
2951test { try parseIDNAPass("x\x34fN\x200b-\xad-\x180cB\xfe00S\x2064s\xdb40\xddefFFL", "xn--bssffl"); }
2952test { try parseIDNAPass("\x2e3\x34f\x2115\x200b\xfe63\xad\xff0d\x180c\x212c\xfe00s\x2064\xd835\xdd30\xdb40\xddefffl", "xn--bssffl"); }
2953test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2954test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); }
2955test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); }
2956test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); }
2957test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); }
2958test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901234.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2959test { try parseIDNAPass("\xe41234567890123456789012345678901234567890123456789012345", "xn--1234567890123456789012345678901234567890123456789012345-9te"); }
2960test { try parseIDNAPass("a\x3081234567890123456789012345678901234567890123456789012345", "xn--1234567890123456789012345678901234567890123456789012345-9te"); }
2961test { try parseIDNAPass("A\x3081234567890123456789012345678901234567890123456789012345", "xn--1234567890123456789012345678901234567890123456789012345-9te"); }
2962test { try parseIDNAPass("\xc41234567890123456789012345678901234567890123456789012345", "xn--1234567890123456789012345678901234567890123456789012345-9te"); }
2963test { try parseIDNAPass("xn--1234567890123456789012345678901234567890123456789012345-9te", "xn--1234567890123456789012345678901234567890123456789012345-9te"); }
2964test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xe4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2965test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\x308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2966test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2967test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2968test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2969test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xe4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); }
2970test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\x308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); }
2971test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); }
2972test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); }
2973test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); }
2974test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xe4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); }
2975test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\x308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); }
2976test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901C", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); }
2977test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901C", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); }
2978test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); }
2979test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xe41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); }
2980test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\x3081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); }
2981test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x3081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); }
2982test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); }
2983test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); }
2984test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xe41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); }
2985test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\x3081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); }
2986test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x3081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); }
2987test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789A.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); }
2988test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); }
2989test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xe41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2990test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890a\x3081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2991test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x3081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2992test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890B", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2993test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
2994test { try parseIDNAPass("a.b..-q--a-.e", "a.b..-q--a-.e"); }
2995test { try parseIDNAPass("a.b..-q--\xe4-.e", "a.b..xn---q----jra.e"); }
2996test { try parseIDNAPass("a.b..-q--a\x308-.e", "a.b..xn---q----jra.e"); }
2997test { try parseIDNAPass("A.B..-Q--A\x308-.E", "a.b..xn---q----jra.e"); }
2998test { try parseIDNAPass("A.B..-Q--\xc4-.E", "a.b..xn---q----jra.e"); }
2999test { try parseIDNAPass("A.b..-Q--\xc4-.E", "a.b..xn---q----jra.e"); }
3000test { try parseIDNAPass("A.b..-Q--A\x308-.E", "a.b..xn---q----jra.e"); }
3001test { try parseIDNAPass("a.b..xn---q----jra.e", "a.b..xn---q----jra.e"); }
3002test { try parseIDNAPass("a..c", "a..c"); }
3003test { try parseIDNAPass("a.-b.", "a.-b."); }
3004test { try parseIDNAPass("a.b-.c", "a.b-.c"); }
3005test { try parseIDNAPass("a.-.c", "a.-.c"); }
3006test { try parseIDNAPass("a.bc--de.f", "a.bc--de.f"); }
3007test { try parseIDNAPass("\xe4.\xad.c", "xn--4ca..c"); }
3008test { try parseIDNAPass("a\x308.\xad.c", "xn--4ca..c"); }
3009test { try parseIDNAPass("A\x308.\xad.C", "xn--4ca..c"); }
3010test { try parseIDNAPass("\xc4.\xad.C", "xn--4ca..c"); }
3011test { try parseIDNAPass("xn--4ca..c", "xn--4ca..c"); }
3012test { try parseIDNAPass("\xe4.-b.", "xn--4ca.-b."); }
3013test { try parseIDNAPass("a\x308.-b.", "xn--4ca.-b."); }
3014test { try parseIDNAPass("A\x308.-B.", "xn--4ca.-b."); }
3015test { try parseIDNAPass("\xc4.-B.", "xn--4ca.-b."); }
3016test { try parseIDNAPass("xn--4ca.-b.", "xn--4ca.-b."); }
3017test { try parseIDNAPass("\xe4.b-.c", "xn--4ca.b-.c"); }
3018test { try parseIDNAPass("a\x308.b-.c", "xn--4ca.b-.c"); }
3019test { try parseIDNAPass("A\x308.B-.C", "xn--4ca.b-.c"); }
3020test { try parseIDNAPass("\xc4.B-.C", "xn--4ca.b-.c"); }
3021test { try parseIDNAPass("\xc4.b-.C", "xn--4ca.b-.c"); }
3022test { try parseIDNAPass("A\x308.b-.C", "xn--4ca.b-.c"); }
3023test { try parseIDNAPass("xn--4ca.b-.c", "xn--4ca.b-.c"); }
3024test { try parseIDNAPass("\xe4.-.c", "xn--4ca.-.c"); }
3025test { try parseIDNAPass("a\x308.-.c", "xn--4ca.-.c"); }
3026test { try parseIDNAPass("A\x308.-.C", "xn--4ca.-.c"); }
3027test { try parseIDNAPass("\xc4.-.C", "xn--4ca.-.c"); }
3028test { try parseIDNAPass("xn--4ca.-.c", "xn--4ca.-.c"); }
3029test { try parseIDNAPass("\xe4.bc--de.f", "xn--4ca.bc--de.f"); }
3030test { try parseIDNAPass("a\x308.bc--de.f", "xn--4ca.bc--de.f"); }
3031test { try parseIDNAPass("A\x308.BC--DE.F", "xn--4ca.bc--de.f"); }
3032test { try parseIDNAPass("\xc4.BC--DE.F", "xn--4ca.bc--de.f"); }
3033test { try parseIDNAPass("\xc4.bc--De.f", "xn--4ca.bc--de.f"); }
3034test { try parseIDNAPass("A\x308.bc--De.f", "xn--4ca.bc--de.f"); }
3035test { try parseIDNAPass("xn--4ca.bc--de.f", "xn--4ca.bc--de.f"); }
3036test { try parseIDNAPass("A0", "a0"); }
3037test { try parseIDNAPass("0A", "0a"); }
3038test { try parseIDNAPass("\x5d0\x5c7", "xn--vdbr"); }
3039test { try parseIDNAPass("xn--vdbr", "xn--vdbr"); }
3040test { try parseIDNAPass("\x5d09\x5c7", "xn--9-ihcz"); }
3041test { try parseIDNAPass("xn--9-ihcz", "xn--9-ihcz"); }
3042test { try parseIDNAPass("\x5d0\x5ea", "xn--4db6c"); }
3043test { try parseIDNAPass("xn--4db6c", "xn--4db6c"); }
3044test { try parseIDNAPass("\x5d0\x5f3\x5ea", "xn--4db6c0a"); }
3045test { try parseIDNAPass("xn--4db6c0a", "xn--4db6c0a"); }
3046test { try parseIDNAPass("\x5d07\x5ea", "xn--7-zhc3f"); }
3047test { try parseIDNAPass("xn--7-zhc3f", "xn--7-zhc3f"); }
3048test { try parseIDNAPass("\x5d0\x667\x5ea", "xn--4db6c6t"); }
3049test { try parseIDNAPass("xn--4db6c6t", "xn--4db6c6t"); }
3050test { try parseIDNAPass("\xbb9\xbcd\x200d", "xn--dmc4b194h"); }
3051test { try parseIDNAPass("xn--dmc4b", "xn--dmc4b"); }
3052test { try parseIDNAPass("\xbb9\xbcd", "xn--dmc4b"); }
3053test { try parseIDNAPass("xn--dmc4b194h", "xn--dmc4b194h"); }
3054test { try parseIDNAPass("xn--dmc", "xn--dmc"); }
3055test { try parseIDNAPass("\xbb9", "xn--dmc"); }
3056test { try parseIDNAPass("\xbb9\xbcd\x200c", "xn--dmc4by94h"); }
3057test { try parseIDNAPass("xn--dmc4by94h", "xn--dmc4by94h"); }
3058test { try parseIDNAPass("\x644\x670\x200c\x6ed\x6ef", "xn--ghb2gxqia7523a"); }
3059test { try parseIDNAPass("xn--ghb2gxqia", "xn--ghb2gxqia"); }
3060test { try parseIDNAPass("\x644\x670\x6ed\x6ef", "xn--ghb2gxqia"); }
3061test { try parseIDNAPass("xn--ghb2gxqia7523a", "xn--ghb2gxqia7523a"); }
3062test { try parseIDNAPass("\x644\x670\x200c\x6ef", "xn--ghb2g3qq34f"); }
3063test { try parseIDNAPass("xn--ghb2g3q", "xn--ghb2g3q"); }
3064test { try parseIDNAPass("\x644\x670\x6ef", "xn--ghb2g3q"); }
3065test { try parseIDNAPass("xn--ghb2g3qq34f", "xn--ghb2g3qq34f"); }
3066test { try parseIDNAPass("\x644\x200c\x6ed\x6ef", "xn--ghb25aga828w"); }
3067test { try parseIDNAPass("xn--ghb25aga", "xn--ghb25aga"); }
3068test { try parseIDNAPass("\x644\x6ed\x6ef", "xn--ghb25aga"); }
3069test { try parseIDNAPass("xn--ghb25aga828w", "xn--ghb25aga828w"); }
3070test { try parseIDNAPass("\x644\x200c\x6ef", "xn--ghb65a953d"); }
3071test { try parseIDNAPass("xn--ghb65a", "xn--ghb65a"); }
3072test { try parseIDNAPass("\x644\x6ef", "xn--ghb65a"); }
3073test { try parseIDNAPass("xn--ghb65a953d", "xn--ghb65a953d"); }
3074test { try parseIDNAPass("xn--ghb2gxq", "xn--ghb2gxq"); }
3075test { try parseIDNAPass("\x644\x670\x6ed", "xn--ghb2gxq"); }
3076test { try parseIDNAPass("xn--cmba", "xn--cmba"); }
3077test { try parseIDNAPass("\x6ef\x6ef", "xn--cmba"); }
3078test { try parseIDNAPass("xn--ghb", "xn--ghb"); }
3079test { try parseIDNAPass("\x644", "xn--ghb"); }
3080test { try parseIDNAPass("a\x3002\x3002b", "a..b"); }
3081test { try parseIDNAPass("A\x3002\x3002B", "a..b"); }
3082test { try parseIDNAPass("a..b", "a..b"); }
3083test { try parseIDNAPass("..xn--skb", "..xn--skb"); }
3084test { try parseIDNAPass("$", "$"); }
3085test { try parseIDNAPass("\x2477.four", "(4).four"); }
3086test { try parseIDNAPass("(4).four", "(4).four"); }
3087test { try parseIDNAPass("\x2477.FOUR", "(4).four"); }
3088test { try parseIDNAPass("\x2477.Four", "(4).four"); }
3089test { try parseIDNAPass("ascii", "ascii"); }
3090test { try parseIDNAPass("unicode.org", "unicode.org"); }
3091test { try parseIDNAPass("\xf951\xd87e\xdc68\xd87e\xdc74\xd87e\xdd1f\xd87e\xdd5f\xd87e\xddbf", "xn--snl253bgitxhzwu2arn60c"); }
3092test { try parseIDNAPass("\x964b\x36fc\x5f53\xd850\xdfab\x7aee\x45d7", "xn--snl253bgitxhzwu2arn60c"); }
3093test { try parseIDNAPass("xn--snl253bgitxhzwu2arn60c", "xn--snl253bgitxhzwu2arn60c"); }
3094test { try parseIDNAPass("\x96fb\xd844\xdf6a\x5f33\x43ab\x7aae\x4d57", "xn--kbo60w31ob3z6t3av9z5b"); }
3095test { try parseIDNAPass("xn--kbo60w31ob3z6t3av9z5b", "xn--kbo60w31ob3z6t3av9z5b"); }
3096test { try parseIDNAPass("xn--A-1ga", "xn--a-1ga"); }
3097test { try parseIDNAPass("a\xf6", "xn--a-1ga"); }
3098test { try parseIDNAPass("ao\x308", "xn--a-1ga"); }
3099test { try parseIDNAPass("AO\x308", "xn--a-1ga"); }
3100test { try parseIDNAPass("A\xd6", "xn--a-1ga"); }
3101test { try parseIDNAPass("A\xf6", "xn--a-1ga"); }
3102test { try parseIDNAPass("Ao\x308", "xn--a-1ga"); }
3103test { try parseIDNAPass("\xff1d\x338", "xn--1ch"); }
3104test { try parseIDNAPass("\x2260", "xn--1ch"); }
3105test { try parseIDNAPass("=\x338", "xn--1ch"); }
3106test { try parseIDNAPass("xn--1ch", "xn--1ch"); }
3107test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
3108test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
3109test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); }
3110test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b.", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b."); }
3111test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x308123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); }
3112test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc4123456789012345678901234567890123456789012345.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c", "123456789012345678901234567890123456789012345678901234567890123.xn--1234567890123456789012345678901234567890123456789012345-kue.123456789012345678901234567890123456789012345678901234567890123.1234567890123456789012345678901234567890123456789012345678901c"); }
3113test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x3081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); }
3114test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a"); }
3115test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x3081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); }
3116test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a.", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.12345678901234567890123456789012345678901234567890123456789a."); }
3117test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890A\x3081234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
3118test { try parseIDNAPass("123456789012345678901234567890123456789012345678901234567890123.1234567890\xc41234567890123456789012345678901234567890123456.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b", "123456789012345678901234567890123456789012345678901234567890123.xn--12345678901234567890123456789012345678901234567890123456-fxe.123456789012345678901234567890123456789012345678901234567890123.123456789012345678901234567890123456789012345678901234567890b"); }
3119test { try parseIDNAPass("\xa863.\x7cf", "xn--8c9a.xn--qsb"); }
3120test { try parseIDNAPass("xn--8c9a.xn--qsb", "xn--8c9a.xn--qsb"); }
3121test { try parseIDNAPass("xn--jbf911clb.xn----p9j493ivi4l", "xn--jbf911clb.xn----p9j493ivi4l"); }
3122test { try parseIDNAPass("\x2260\x1899\x226f.\xc1a3-\x1874\x2d00", "xn--jbf911clb.xn----p9j493ivi4l"); }
3123test { try parseIDNAPass("=\x338\x1899>\x338.\x1109\x1169\x11be-\x1874\x2d00", "xn--jbf911clb.xn----p9j493ivi4l"); }
3124test { try parseIDNAPass("=\x338\x1899>\x338.\x1109\x1169\x11be-\x1874\x10a0", "xn--jbf911clb.xn----p9j493ivi4l"); }
3125test { try parseIDNAPass("\x2260\x1899\x226f.\xc1a3-\x1874\x10a0", "xn--jbf911clb.xn----p9j493ivi4l"); }
3126test { try parseIDNAPass("xn--gl0as212a.i.", "xn--gl0as212a.i."); }
3127test { try parseIDNAPass("\x7e71\xd805\xddbf.i.", "xn--gl0as212a.i."); }
3128test { try parseIDNAPass("\x7e71\xd805\xddbf.I.", "xn--gl0as212a.i."); }
3129test { try parseIDNAPass("xn--1ug6928ac48e.i.", "xn--1ug6928ac48e.i."); }
3130test { try parseIDNAPass("\x7e71\xd805\xddbf\x200d.i.", "xn--1ug6928ac48e.i."); }
3131test { try parseIDNAPass("\x7e71\xd805\xddbf\x200d.I.", "xn--1ug6928ac48e.i."); }
3132test { try parseIDNAPass("xn--ss-59d.", "xn--ss-59d."); }
3133test { try parseIDNAPass("ss\x6eb.", "xn--ss-59d."); }
3134test { try parseIDNAPass("SS\x6eb.", "xn--ss-59d."); }
3135test { try parseIDNAPass("Ss\x6eb.", "xn--ss-59d."); }
3136test { try parseIDNAPass("\xd83a\xdd37.\xd802\xdf90\xd83a\xdc81\xd803\xde60\x624", "xn--ve6h.xn--jgb1694kz0b2176a"); }
3137test { try parseIDNAPass("\xd83a\xdd37.\xd802\xdf90\xd83a\xdc81\xd803\xde60\x648\x654", "xn--ve6h.xn--jgb1694kz0b2176a"); }
3138test { try parseIDNAPass("\xd83a\xdd15.\xd802\xdf90\xd83a\xdc81\xd803\xde60\x648\x654", "xn--ve6h.xn--jgb1694kz0b2176a"); }
3139test { try parseIDNAPass("\xd83a\xdd15.\xd802\xdf90\xd83a\xdc81\xd803\xde60\x624", "xn--ve6h.xn--jgb1694kz0b2176a"); }
3140test { try parseIDNAPass("xn--ve6h.xn--jgb1694kz0b2176a", "xn--ve6h.xn--jgb1694kz0b2176a"); }
3141test { try parseIDNAPass("\xd83a\xdd25\xdb40\xdd6e\xff0e\x1844\x10ae", "xn--de6h.xn--37e857h"); }
3142test { try parseIDNAPass("\xd83a\xdd25\xdb40\xdd6e.\x1844\x10ae", "xn--de6h.xn--37e857h"); }
3143test { try parseIDNAPass("\xd83a\xdd25\xdb40\xdd6e.\x1844\x2d0e", "xn--de6h.xn--37e857h"); }
3144test { try parseIDNAPass("\xd83a\xdd03\xdb40\xdd6e.\x1844\x10ae", "xn--de6h.xn--37e857h"); }
3145test { try parseIDNAPass("\xd83a\xdd03\xdb40\xdd6e.\x1844\x2d0e", "xn--de6h.xn--37e857h"); }
3146test { try parseIDNAPass("xn--de6h.xn--37e857h", "xn--de6h.xn--37e857h"); }
3147test { try parseIDNAPass("\xd83a\xdd25.\x1844\x2d0e", "xn--de6h.xn--37e857h"); }
3148test { try parseIDNAPass("\xd83a\xdd03.\x1844\x10ae", "xn--de6h.xn--37e857h"); }
3149test { try parseIDNAPass("\xd83a\xdd03.\x1844\x2d0e", "xn--de6h.xn--37e857h"); }
3150test { try parseIDNAPass("\xd83a\xdd25\xdb40\xdd6e\xff0e\x1844\x2d0e", "xn--de6h.xn--37e857h"); }
3151test { try parseIDNAPass("\xd83a\xdd03\xdb40\xdd6e\xff0e\x1844\x10ae", "xn--de6h.xn--37e857h"); }
3152test { try parseIDNAPass("\xd83a\xdd03\xdb40\xdd6e\xff0e\x1844\x2d0e", "xn--de6h.xn--37e857h"); }
3153test { try parseIDNAPass("\xd83a\xdd25.\x1844\x10ae", "xn--de6h.xn--37e857h"); }
3154test { try parseIDNAPass("xn--ej0b.xn----d87b", "xn--ej0b.xn----d87b"); }
3155test { try parseIDNAPass("xn----1fa1788k.", "xn----1fa1788k."); }
3156test { try parseIDNAPass("xn--9ob.xn--4xa", "xn--9ob.xn--4xa"); }
3157test { try parseIDNAPass("\x756.\x3c3", "xn--9ob.xn--4xa"); }
3158test { try parseIDNAPass("\x756.\x3a3", "xn--9ob.xn--4xa"); }
3159test { try parseIDNAPass("\xdf\xff61\xd800\xdef3\x10ac\xfb8", "xn--zca.xn--lgd921mvv0m"); }
3160test { try parseIDNAPass("\xdf\x3002\xd800\xdef3\x10ac\xfb8", "xn--zca.xn--lgd921mvv0m"); }
3161test { try parseIDNAPass("\xdf\x3002\xd800\xdef3\x2d0c\xfb8", "xn--zca.xn--lgd921mvv0m"); }
3162test { try parseIDNAPass("SS\x3002\xd800\xdef3\x10ac\xfb8", "ss.xn--lgd921mvv0m"); }
3163test { try parseIDNAPass("ss\x3002\xd800\xdef3\x2d0c\xfb8", "ss.xn--lgd921mvv0m"); }
3164test { try parseIDNAPass("Ss\x3002\xd800\xdef3\x10ac\xfb8", "ss.xn--lgd921mvv0m"); }
3165test { try parseIDNAPass("ss.xn--lgd921mvv0m", "ss.xn--lgd921mvv0m"); }
3166test { try parseIDNAPass("ss.\xd800\xdef3\x2d0c\xfb8", "ss.xn--lgd921mvv0m"); }
3167test { try parseIDNAPass("SS.\xd800\xdef3\x10ac\xfb8", "ss.xn--lgd921mvv0m"); }
3168test { try parseIDNAPass("Ss.\xd800\xdef3\x10ac\xfb8", "ss.xn--lgd921mvv0m"); }
3169test { try parseIDNAPass("xn--zca.xn--lgd921mvv0m", "xn--zca.xn--lgd921mvv0m"); }
3170test { try parseIDNAPass("\xdf.\xd800\xdef3\x2d0c\xfb8", "xn--zca.xn--lgd921mvv0m"); }
3171test { try parseIDNAPass("\xdf\xff61\xd800\xdef3\x2d0c\xfb8", "xn--zca.xn--lgd921mvv0m"); }
3172test { try parseIDNAPass("SS\xff61\xd800\xdef3\x10ac\xfb8", "ss.xn--lgd921mvv0m"); }
3173test { try parseIDNAPass("ss\xff61\xd800\xdef3\x2d0c\xfb8", "ss.xn--lgd921mvv0m"); }
3174test { try parseIDNAPass("Ss\xff61\xd800\xdef3\x10ac\xfb8", "ss.xn--lgd921mvv0m"); }
3175test { try parseIDNAPass("\x16ad\xff61\xd834\xdf20\xdf\xd81a\xdef1", "xn--hwe.xn--zca4946pblnc"); }
3176test { try parseIDNAPass("\x16ad\x3002\xd834\xdf20\xdf\xd81a\xdef1", "xn--hwe.xn--zca4946pblnc"); }
3177test { try parseIDNAPass("\x16ad\x3002\xd834\xdf20SS\xd81a\xdef1", "xn--hwe.xn--ss-ci1ub261a"); }
3178test { try parseIDNAPass("\x16ad\x3002\xd834\xdf20ss\xd81a\xdef1", "xn--hwe.xn--ss-ci1ub261a"); }
3179test { try parseIDNAPass("\x16ad\x3002\xd834\xdf20Ss\xd81a\xdef1", "xn--hwe.xn--ss-ci1ub261a"); }
3180test { try parseIDNAPass("xn--hwe.xn--ss-ci1ub261a", "xn--hwe.xn--ss-ci1ub261a"); }
3181test { try parseIDNAPass("\x16ad.\xd834\xdf20ss\xd81a\xdef1", "xn--hwe.xn--ss-ci1ub261a"); }
3182test { try parseIDNAPass("\x16ad.\xd834\xdf20SS\xd81a\xdef1", "xn--hwe.xn--ss-ci1ub261a"); }
3183test { try parseIDNAPass("\x16ad.\xd834\xdf20Ss\xd81a\xdef1", "xn--hwe.xn--ss-ci1ub261a"); }
3184test { try parseIDNAPass("xn--hwe.xn--zca4946pblnc", "xn--hwe.xn--zca4946pblnc"); }
3185test { try parseIDNAPass("\x16ad.\xd834\xdf20\xdf\xd81a\xdef1", "xn--hwe.xn--zca4946pblnc"); }
3186test { try parseIDNAPass("\x16ad\xff61\xd834\xdf20SS\xd81a\xdef1", "xn--hwe.xn--ss-ci1ub261a"); }
3187test { try parseIDNAPass("\x16ad\xff61\xd834\xdf20ss\xd81a\xdef1", "xn--hwe.xn--ss-ci1ub261a"); }
3188test { try parseIDNAPass("\x16ad\xff61\xd834\xdf20Ss\xd81a\xdef1", "xn--hwe.xn--ss-ci1ub261a"); }
3189test { try parseIDNAPass("xn--09e4694e..xn--ye6h", "xn--09e4694e..xn--ye6h"); }
3190test { try parseIDNAPass("xn--1-o7j0610f..xn----381i", "xn--1-o7j0610f..xn----381i"); }
3191test { try parseIDNAPass("1.xn----zw5a.xn--kp5b", "1.xn----zw5a.xn--kp5b"); }
3192test { try parseIDNAPass("-\xd800\xdef7\xd81b\xdf91\x3002\xdb40\xddac", "xn----991iq40y."); }
3193test { try parseIDNAPass("xn----991iq40y.", "xn----991iq40y."); }
3194test { try parseIDNAPass(".xn--hdh", ".xn--hdh"); }
3195test { try parseIDNAPass("\xd83a\xdd53\xff0e\x718", "xn--of6h.xn--inb"); }
3196test { try parseIDNAPass("\xd83a\xdd53.\x718", "xn--of6h.xn--inb"); }
3197test { try parseIDNAPass("xn--of6h.xn--inb", "xn--of6h.xn--inb"); }
3198test { try parseIDNAPass("\xdb40\xdd3d-\xff0e-\xdca", "-.xn----ptf"); }
3199test { try parseIDNAPass("\xdb40\xdd3d-.-\xdca", "-.xn----ptf"); }
3200test { try parseIDNAPass("-.xn----ptf", "-.xn----ptf"); }
3201test { try parseIDNAPass("\x10ba\xd800\xdef8\xdb40\xdd04\x3002\xd835\xdfdd\xd7f6\x103a", "xn--ilj2659d.xn--5-dug9054m"); }
3202test { try parseIDNAPass("\x10ba\xd800\xdef8\xdb40\xdd04\x30025\xd7f6\x103a", "xn--ilj2659d.xn--5-dug9054m"); }
3203test { try parseIDNAPass("\x2d1a\xd800\xdef8\xdb40\xdd04\x30025\xd7f6\x103a", "xn--ilj2659d.xn--5-dug9054m"); }
3204test { try parseIDNAPass("xn--ilj2659d.xn--5-dug9054m", "xn--ilj2659d.xn--5-dug9054m"); }
3205test { try parseIDNAPass("\x2d1a\xd800\xdef8.5\xd7f6\x103a", "xn--ilj2659d.xn--5-dug9054m"); }
3206test { try parseIDNAPass("\x10ba\xd800\xdef8.5\xd7f6\x103a", "xn--ilj2659d.xn--5-dug9054m"); }
3207test { try parseIDNAPass("\x2d1a\xd800\xdef8\xdb40\xdd04\x3002\xd835\xdfdd\xd7f6\x103a", "xn--ilj2659d.xn--5-dug9054m"); }
3208test { try parseIDNAPass("\x2260.\x183f", "xn--1ch.xn--y7e"); }
3209test { try parseIDNAPass("=\x338.\x183f", "xn--1ch.xn--y7e"); }
3210test { try parseIDNAPass("xn--1ch.xn--y7e", "xn--1ch.xn--y7e"); }
3211test { try parseIDNAPass("\x723\x5a3\xff61\x332a", "xn--ucb18e.xn--eck4c5a"); }
3212test { try parseIDNAPass("\x723\x5a3\x3002\x30cf\x30a4\x30c4", "xn--ucb18e.xn--eck4c5a"); }
3213test { try parseIDNAPass("xn--ucb18e.xn--eck4c5a", "xn--ucb18e.xn--eck4c5a"); }
3214test { try parseIDNAPass("\x723\x5a3.\x30cf\x30a4\x30c4", "xn--ucb18e.xn--eck4c5a"); }
3215test { try parseIDNAPass("xn--skb", "xn--skb"); }
3216test { try parseIDNAPass("\x6b9", "xn--skb"); }
3217test { try parseIDNAPass("\x226f1.\x3002\xdf", "xn--1-ogo..xn--zca"); }
3218test { try parseIDNAPass(">\x3381.\x3002\xdf", "xn--1-ogo..xn--zca"); }
3219test { try parseIDNAPass(">\x3381.\x3002SS", "xn--1-ogo..ss"); }
3220test { try parseIDNAPass("\x226f1.\x3002SS", "xn--1-ogo..ss"); }
3221test { try parseIDNAPass("\x226f1.\x3002ss", "xn--1-ogo..ss"); }
3222test { try parseIDNAPass(">\x3381.\x3002ss", "xn--1-ogo..ss"); }
3223test { try parseIDNAPass(">\x3381.\x3002Ss", "xn--1-ogo..ss"); }
3224test { try parseIDNAPass("\x226f1.\x3002Ss", "xn--1-ogo..ss"); }
3225test { try parseIDNAPass("xn--1-ogo..ss", "xn--1-ogo..ss"); }
3226test { try parseIDNAPass("xn--1-ogo..xn--zca", "xn--1-ogo..xn--zca"); }
3227test { try parseIDNAPass(".xn--1ch", ".xn--1ch"); }
3228test { try parseIDNAPass("\xa846\x3002\x2183\xfb5\xb1ae-", "xn--fc9a.xn----qmg097k469k"); }
3229test { try parseIDNAPass("\xa846\x3002\x2183\xfb5\x1102\x116a\x11c1-", "xn--fc9a.xn----qmg097k469k"); }
3230test { try parseIDNAPass("\xa846\x3002\x2184\xfb5\x1102\x116a\x11c1-", "xn--fc9a.xn----qmg097k469k"); }
3231test { try parseIDNAPass("\xa846\x3002\x2184\xfb5\xb1ae-", "xn--fc9a.xn----qmg097k469k"); }
3232test { try parseIDNAPass("xn--fc9a.xn----qmg097k469k", "xn--fc9a.xn----qmg097k469k"); }
3233test { try parseIDNAPass("\xdf\x9c1\x1ded\x3002\x6208\x2085", "xn--zca266bwrr.xn--85-psd"); }
3234test { try parseIDNAPass("\xdf\x9c1\x1ded\x3002\x62085", "xn--zca266bwrr.xn--85-psd"); }
3235test { try parseIDNAPass("SS\x9c1\x1ded\x3002\x62085", "xn--ss-e2f077r.xn--85-psd"); }
3236test { try parseIDNAPass("ss\x9c1\x1ded\x3002\x62085", "xn--ss-e2f077r.xn--85-psd"); }
3237test { try parseIDNAPass("Ss\x9c1\x1ded\x3002\x62085", "xn--ss-e2f077r.xn--85-psd"); }
3238test { try parseIDNAPass("xn--ss-e2f077r.xn--85-psd", "xn--ss-e2f077r.xn--85-psd"); }
3239test { try parseIDNAPass("ss\x9c1\x1ded.\x62085", "xn--ss-e2f077r.xn--85-psd"); }
3240test { try parseIDNAPass("SS\x9c1\x1ded.\x62085", "xn--ss-e2f077r.xn--85-psd"); }
3241test { try parseIDNAPass("Ss\x9c1\x1ded.\x62085", "xn--ss-e2f077r.xn--85-psd"); }
3242test { try parseIDNAPass("xn--zca266bwrr.xn--85-psd", "xn--zca266bwrr.xn--85-psd"); }
3243test { try parseIDNAPass("\xdf\x9c1\x1ded.\x62085", "xn--zca266bwrr.xn--85-psd"); }
3244test { try parseIDNAPass("SS\x9c1\x1ded\x3002\x6208\x2085", "xn--ss-e2f077r.xn--85-psd"); }
3245test { try parseIDNAPass("ss\x9c1\x1ded\x3002\x6208\x2085", "xn--ss-e2f077r.xn--85-psd"); }
3246test { try parseIDNAPass("Ss\x9c1\x1ded\x3002\x6208\x2085", "xn--ss-e2f077r.xn--85-psd"); }
3247test { try parseIDNAPass("\xfe0d\xa9b\x3002\x5d68", "xn--6dc.xn--tot"); }
3248test { try parseIDNAPass("xn--6dc.xn--tot", "xn--6dc.xn--tot"); }
3249test { try parseIDNAPass("\xa9b.\x5d68", "xn--6dc.xn--tot"); }
3250test { try parseIDNAPass("\xfe05\x3002\x3002\xd858\xdc3e\x1ce0", "..xn--t6f5138v"); }
3251test { try parseIDNAPass("..xn--t6f5138v", "..xn--t6f5138v"); }
3252test { try parseIDNAPass("xn--t6f5138v", "xn--t6f5138v"); }
3253test { try parseIDNAPass("\xd858\xdc3e\x1ce0", "xn--t6f5138v"); }
3254test { try parseIDNAPass("xn--p8e.xn--1ch3a7084l", "xn--p8e.xn--1ch3a7084l"); }
3255test { try parseIDNAPass("\x1859.\x226f\xd800\xdef2\x2260", "xn--p8e.xn--1ch3a7084l"); }
3256test { try parseIDNAPass("\x1859.>\x338\xd800\xdef2=\x338", "xn--p8e.xn--1ch3a7084l"); }
3257test { try parseIDNAPass("-3.xn--fbf115j", "-3.xn--fbf115j"); }
3258test { try parseIDNAPass("xn--u4e969b.xn--1ch", "xn--u4e969b.xn--1ch"); }
3259test { try parseIDNAPass("\x214e\x17d2.\x2260", "xn--u4e969b.xn--1ch"); }
3260test { try parseIDNAPass("\x214e\x17d2.=\x338", "xn--u4e969b.xn--1ch"); }
3261test { try parseIDNAPass("\x2132\x17d2.=\x338", "xn--u4e969b.xn--1ch"); }
3262test { try parseIDNAPass("\x2132\x17d2.\x2260", "xn--u4e969b.xn--1ch"); }
3263test { try parseIDNAPass("xn----zmb.1-", "xn----zmb.1-"); }
3264test { try parseIDNAPass("xn--8,-g9oy26fzu4d.xn--kmb6733w", "xn--8,-g9oy26fzu4d.xn--kmb6733w"); }
3265test { try parseIDNAPass("xn--9-mfs8024b.", "xn--9-mfs8024b."); }
3266test { try parseIDNAPass("9\x9681\x2bee.", "xn--9-mfs8024b."); }
3267test { try parseIDNAPass("xn--2ib43l.xn--te6h", "xn--2ib43l.xn--te6h"); }
3268test { try parseIDNAPass("\x67d\x943.\xd83a\xdd35", "xn--2ib43l.xn--te6h"); }
3269test { try parseIDNAPass("\x67d\x943.\xd83a\xdd13", "xn--2ib43l.xn--te6h"); }
3270test { try parseIDNAPass("\xa9d0\x4c0\x1baa\x8f6\xff0e\xb235", "xn--s5a04sn4u297k.xn--2e1b"); }
3271test { try parseIDNAPass("\xa9d0\x4c0\x1baa\x8f6\xff0e\x1102\x116f\x11bc", "xn--s5a04sn4u297k.xn--2e1b"); }
3272test { try parseIDNAPass("\xa9d0\x4c0\x1baa\x8f6.\xb235", "xn--s5a04sn4u297k.xn--2e1b"); }
3273test { try parseIDNAPass("\xa9d0\x4c0\x1baa\x8f6.\x1102\x116f\x11bc", "xn--s5a04sn4u297k.xn--2e1b"); }
3274test { try parseIDNAPass("\xa9d0\x4cf\x1baa\x8f6.\x1102\x116f\x11bc", "xn--s5a04sn4u297k.xn--2e1b"); }
3275test { try parseIDNAPass("\xa9d0\x4cf\x1baa\x8f6.\xb235", "xn--s5a04sn4u297k.xn--2e1b"); }
3276test { try parseIDNAPass("xn--s5a04sn4u297k.xn--2e1b", "xn--s5a04sn4u297k.xn--2e1b"); }
3277test { try parseIDNAPass("\xa9d0\x4cf\x1baa\x8f6\xff0e\x1102\x116f\x11bc", "xn--s5a04sn4u297k.xn--2e1b"); }
3278test { try parseIDNAPass("\xa9d0\x4cf\x1baa\x8f6\xff0e\xb235", "xn--s5a04sn4u297k.xn--2e1b"); }
3279test { try parseIDNAPass("xn--9hb7344k.", "xn--9hb7344k."); }
3280test { try parseIDNAPass("\xd802\xdec7\x661.", "xn--9hb7344k."); }
3281test { try parseIDNAPass("\x184c.\x3002\x1891", "xn--c8e..xn--bbf"); }
3282test { try parseIDNAPass("xn--c8e..xn--bbf", "xn--c8e..xn--bbf"); }
3283test { try parseIDNAPass("\x3002\x3002\x10a3\x226f", "..xn--hdh782b"); }
3284test { try parseIDNAPass("\x3002\x3002\x10a3>\x338", "..xn--hdh782b"); }
3285test { try parseIDNAPass("\x3002\x3002\x2d03>\x338", "..xn--hdh782b"); }
3286test { try parseIDNAPass("\x3002\x3002\x2d03\x226f", "..xn--hdh782b"); }
3287test { try parseIDNAPass("..xn--hdh782b", "..xn--hdh782b"); }
3288test { try parseIDNAPass("\x7e5.\x6b5", "xn--dtb.xn--okb"); }
3289test { try parseIDNAPass("xn--dtb.xn--okb", "xn--dtb.xn--okb"); }
3290test { try parseIDNAPass(".xn--3e6h", ".xn--3e6h"); }
3291test { try parseIDNAPass("xn--3e6h", "xn--3e6h"); }
3292test { try parseIDNAPass("\xd83a\xdd3f", "xn--3e6h"); }
3293test { try parseIDNAPass("\xd83a\xdd1d", "xn--3e6h"); }
3294test { try parseIDNAPass("\x6b9\xff0e\x1873\x115f", "xn--skb.xn--g9e"); }
3295test { try parseIDNAPass("\x6b9.\x1873\x115f", "xn--skb.xn--g9e"); }
3296test { try parseIDNAPass("xn--skb.xn--g9e", "xn--skb.xn--g9e"); }
3297test { try parseIDNAPass("\x6b9.\x1873", "xn--skb.xn--g9e"); }
3298test { try parseIDNAPass("\x3a1b\xd823\xdc4e.\x30027\xd01", "xn--mbm8237g..xn--7-7hf"); }
3299test { try parseIDNAPass("xn--mbm8237g..xn--7-7hf", "xn--mbm8237g..xn--7-7hf"); }
3300test { try parseIDNAPass("xn--ss-4epx629f.xn--ifh802b6a", "xn--ss-4epx629f.xn--ifh802b6a"); }
3301test { try parseIDNAPass("ss\xaaf6\x18a5.\x22b6\x2d21\x2d16", "xn--ss-4epx629f.xn--ifh802b6a"); }
3302test { try parseIDNAPass("SS\xaaf6\x18a5.\x22b6\x10c1\x10b6", "xn--ss-4epx629f.xn--ifh802b6a"); }
3303test { try parseIDNAPass("Ss\xaaf6\x18a5.\x22b6\x10c1\x2d16", "xn--ss-4epx629f.xn--ifh802b6a"); }
3304test { try parseIDNAPass("-.", "-."); }
3305test { try parseIDNAPass("xn----zmb.xn--rlj2573p", "xn----zmb.xn--rlj2573p"); }
3306test { try parseIDNAPass("\x2260\x3002\xd83d\xdfb3\xd835\xdff2", "xn--1ch.xn--6-dl4s"); }
3307test { try parseIDNAPass("=\x338\x3002\xd83d\xdfb3\xd835\xdff2", "xn--1ch.xn--6-dl4s"); }
3308test { try parseIDNAPass("\x2260\x3002\xd83d\xdfb36", "xn--1ch.xn--6-dl4s"); }
3309test { try parseIDNAPass("=\x338\x3002\xd83d\xdfb36", "xn--1ch.xn--6-dl4s"); }
3310test { try parseIDNAPass("xn--1ch.xn--6-dl4s", "xn--1ch.xn--6-dl4s"); }
3311test { try parseIDNAPass("\x2260.\xd83d\xdfb36", "xn--1ch.xn--6-dl4s"); }
3312test { try parseIDNAPass("=\x338.\xd83d\xdfb36", "xn--1ch.xn--6-dl4s"); }
3313test { try parseIDNAPass(".j", ".j"); }
3314test { try parseIDNAPass("j", "j"); }
3315test { try parseIDNAPass("xn--rt6a.", "xn--rt6a."); }
3316test { try parseIDNAPass("\x9c4a.", "xn--rt6a."); }
3317test { try parseIDNAPass("xn--4-0bd15808a.", "xn--4-0bd15808a."); }
3318test { try parseIDNAPass("\xd83a\xdd3a\x7cc4.", "xn--4-0bd15808a."); }
3319test { try parseIDNAPass("\xd83a\xdd18\x7cc4.", "xn--4-0bd15808a."); }
3320test { try parseIDNAPass("-\xff61\x43db", "-.xn--xco"); }
3321test { try parseIDNAPass("-\x3002\x43db", "-.xn--xco"); }
3322test { try parseIDNAPass("-.xn--xco", "-.xn--xco"); }
3323test { try parseIDNAPass("\x2f86\xff0e\xa848\xff15\x226f\xdf", "xn--tc1a.xn--5-qfa988w745i"); }
3324test { try parseIDNAPass("\x2f86\xff0e\xa848\xff15>\x338\xdf", "xn--tc1a.xn--5-qfa988w745i"); }
3325test { try parseIDNAPass("\x820c.\xa8485\x226f\xdf", "xn--tc1a.xn--5-qfa988w745i"); }
3326test { try parseIDNAPass("\x820c.\xa8485>\x338\xdf", "xn--tc1a.xn--5-qfa988w745i"); }
3327test { try parseIDNAPass("\x820c.\xa8485>\x338SS", "xn--tc1a.xn--5ss-3m2a5009e"); }
3328test { try parseIDNAPass("\x820c.\xa8485\x226fSS", "xn--tc1a.xn--5ss-3m2a5009e"); }
3329test { try parseIDNAPass("\x820c.\xa8485\x226fss", "xn--tc1a.xn--5ss-3m2a5009e"); }
3330test { try parseIDNAPass("\x820c.\xa8485>\x338ss", "xn--tc1a.xn--5ss-3m2a5009e"); }
3331test { try parseIDNAPass("\x820c.\xa8485>\x338Ss", "xn--tc1a.xn--5ss-3m2a5009e"); }
3332test { try parseIDNAPass("\x820c.\xa8485\x226fSs", "xn--tc1a.xn--5ss-3m2a5009e"); }
3333test { try parseIDNAPass("xn--tc1a.xn--5ss-3m2a5009e", "xn--tc1a.xn--5ss-3m2a5009e"); }
3334test { try parseIDNAPass("xn--tc1a.xn--5-qfa988w745i", "xn--tc1a.xn--5-qfa988w745i"); }
3335test { try parseIDNAPass("\x2f86\xff0e\xa848\xff15>\x338SS", "xn--tc1a.xn--5ss-3m2a5009e"); }
3336test { try parseIDNAPass("\x2f86\xff0e\xa848\xff15\x226fSS", "xn--tc1a.xn--5ss-3m2a5009e"); }
3337test { try parseIDNAPass("\x2f86\xff0e\xa848\xff15\x226fss", "xn--tc1a.xn--5ss-3m2a5009e"); }
3338test { try parseIDNAPass("\x2f86\xff0e\xa848\xff15>\x338ss", "xn--tc1a.xn--5ss-3m2a5009e"); }
3339test { try parseIDNAPass("\x2f86\xff0e\xa848\xff15>\x338Ss", "xn--tc1a.xn--5ss-3m2a5009e"); }
3340test { try parseIDNAPass("\x2f86\xff0e\xa848\xff15\x226fSs", "xn--tc1a.xn--5ss-3m2a5009e"); }
3341test { try parseIDNAPass("\xd83a\xdd2a.\x3c2", "xn--ie6h.xn--3xa"); }
3342test { try parseIDNAPass("\xd83a\xdd08.\x3a3", "xn--ie6h.xn--4xa"); }
3343test { try parseIDNAPass("\xd83a\xdd2a.\x3c3", "xn--ie6h.xn--4xa"); }
3344test { try parseIDNAPass("\xd83a\xdd08.\x3c3", "xn--ie6h.xn--4xa"); }
3345test { try parseIDNAPass("xn--ie6h.xn--4xa", "xn--ie6h.xn--4xa"); }
3346test { try parseIDNAPass("\xd83a\xdd08.\x3c2", "xn--ie6h.xn--3xa"); }
3347test { try parseIDNAPass("xn--ie6h.xn--3xa", "xn--ie6h.xn--3xa"); }
3348test { try parseIDNAPass("\xd83a\xdd2a.\x3a3", "xn--ie6h.xn--4xa"); }
3349test { try parseIDNAPass("xn--ilj.xn--4xa", "xn--ilj.xn--4xa"); }
3350test { try parseIDNAPass("\x2d1a.\x3c3", "xn--ilj.xn--4xa"); }
3351test { try parseIDNAPass("\x10ba.\x3a3", "xn--ilj.xn--4xa"); }
3352test { try parseIDNAPass("\x2d1a.\x3c2", "xn--ilj.xn--3xa"); }
3353test { try parseIDNAPass("\x10ba.\x3c2", "xn--ilj.xn--3xa"); }
3354test { try parseIDNAPass("xn--ilj.xn--3xa", "xn--ilj.xn--3xa"); }
3355test { try parseIDNAPass("\x10ba.\x3c3", "xn--ilj.xn--4xa"); }
3356test { try parseIDNAPass("\x6dfd\x3002\x183e", "xn--34w.xn--x7e"); }
3357test { try parseIDNAPass("xn--34w.xn--x7e", "xn--34w.xn--x7e"); }
3358test { try parseIDNAPass("\x6dfd.\x183e", "xn--34w.xn--x7e"); }
3359test { try parseIDNAPass("..", ".."); }
3360test { try parseIDNAPass("xn---3-p9o.ss--", "xn---3-p9o.ss--"); }
3361test { try parseIDNAPass("51..xn--8-ogo", "51..xn--8-ogo"); }
3362test { try parseIDNAPass("\xa860\xff0e\x6f2", "xn--5c9a.xn--fmb"); }
3363test { try parseIDNAPass("\xa860.\x6f2", "xn--5c9a.xn--fmb"); }
3364test { try parseIDNAPass("xn--5c9a.xn--fmb", "xn--5c9a.xn--fmb"); }
3365test { try parseIDNAPass("1.2h", "1.2h"); }
3366test { try parseIDNAPass("xn--skjy82u.xn--gdh", "xn--skjy82u.xn--gdh"); }
3367test { try parseIDNAPass("\x2d01\x755d.\x226e", "xn--skjy82u.xn--gdh"); }
3368test { try parseIDNAPass("\x2d01\x755d.<\x338", "xn--skjy82u.xn--gdh"); }
3369test { try parseIDNAPass("\x10a1\x755d.<\x338", "xn--skjy82u.xn--gdh"); }
3370test { try parseIDNAPass("\x10a1\x755d.\x226e", "xn--skjy82u.xn--gdh"); }
3371test { try parseIDNAPass("\xd83d\xdd7c\xff0e\xffa0", "xn--my8h."); }
3372test { try parseIDNAPass("\xd83d\xdd7c.\x1160", "xn--my8h."); }
3373test { try parseIDNAPass("xn--my8h.", "xn--my8h."); }
3374test { try parseIDNAPass("\xd83d\xdd7c.", "xn--my8h."); }
3375test { try parseIDNAPass("\x3c2\x10c5\x3002\x75a", "xn--3xa403s.xn--epb"); }
3376test { try parseIDNAPass("\x3c2\x2d25\x3002\x75a", "xn--3xa403s.xn--epb"); }
3377test { try parseIDNAPass("\x3a3\x10c5\x3002\x75a", "xn--4xa203s.xn--epb"); }
3378test { try parseIDNAPass("\x3c3\x2d25\x3002\x75a", "xn--4xa203s.xn--epb"); }
3379test { try parseIDNAPass("\x3a3\x2d25\x3002\x75a", "xn--4xa203s.xn--epb"); }
3380test { try parseIDNAPass("xn--4xa203s.xn--epb", "xn--4xa203s.xn--epb"); }
3381test { try parseIDNAPass("\x3c3\x2d25.\x75a", "xn--4xa203s.xn--epb"); }
3382test { try parseIDNAPass("\x3a3\x10c5.\x75a", "xn--4xa203s.xn--epb"); }
3383test { try parseIDNAPass("\x3a3\x2d25.\x75a", "xn--4xa203s.xn--epb"); }
3384test { try parseIDNAPass("xn--3xa403s.xn--epb", "xn--3xa403s.xn--epb"); }
3385test { try parseIDNAPass("\x3c2\x2d25.\x75a", "xn--3xa403s.xn--epb"); }
3386test { try parseIDNAPass("xn--vkb.xn--08e172a", "xn--vkb.xn--08e172a"); }
3387test { try parseIDNAPass("\x6bc.\x1e8f\x1864", "xn--vkb.xn--08e172a"); }
3388test { try parseIDNAPass("\x6bc.y\x307\x1864", "xn--vkb.xn--08e172a"); }
3389test { try parseIDNAPass("\x6bc.Y\x307\x1864", "xn--vkb.xn--08e172a"); }
3390test { try parseIDNAPass("\x6bc.\x1e8e\x1864", "xn--vkb.xn--08e172a"); }
3391test { try parseIDNAPass("xn--pt9c.xn--0kjya", "xn--pt9c.xn--0kjya"); }
3392test { try parseIDNAPass("\xd802\xde57.\x2d09\x2d15", "xn--pt9c.xn--0kjya"); }
3393test { try parseIDNAPass("\xd802\xde57.\x10a9\x10b5", "xn--pt9c.xn--0kjya"); }
3394test { try parseIDNAPass("\xd802\xde57.\x10a9\x2d15", "xn--pt9c.xn--0kjya"); }
3395test { try parseIDNAPass("\xd88a\xdd3120.\x97f3.\xa8661.", "xn--20-9802c.xn--0w5a.xn--1-eg4e."); }
3396test { try parseIDNAPass("xn--20-9802c.xn--0w5a.xn--1-eg4e.", "xn--20-9802c.xn--0w5a.xn--1-eg4e."); }
3397test { try parseIDNAPass("\x10b5\x3002\x6f0\x226e\xdf\x745", "xn--dlj.xn--zca912alh227g"); }
3398test { try parseIDNAPass("\x10b5\x3002\x6f0<\x338\xdf\x745", "xn--dlj.xn--zca912alh227g"); }
3399test { try parseIDNAPass("\x2d15\x3002\x6f0<\x338\xdf\x745", "xn--dlj.xn--zca912alh227g"); }
3400test { try parseIDNAPass("\x2d15\x3002\x6f0\x226e\xdf\x745", "xn--dlj.xn--zca912alh227g"); }
3401test { try parseIDNAPass("\x10b5\x3002\x6f0\x226eSS\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3402test { try parseIDNAPass("\x10b5\x3002\x6f0<\x338SS\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3403test { try parseIDNAPass("\x2d15\x3002\x6f0<\x338ss\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3404test { try parseIDNAPass("\x2d15\x3002\x6f0\x226ess\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3405test { try parseIDNAPass("\x10b5\x3002\x6f0\x226eSs\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3406test { try parseIDNAPass("\x10b5\x3002\x6f0<\x338Ss\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3407test { try parseIDNAPass("xn--dlj.xn--ss-jbe65aw27i", "xn--dlj.xn--ss-jbe65aw27i"); }
3408test { try parseIDNAPass("\x2d15.\x6f0\x226ess\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3409test { try parseIDNAPass("\x2d15.\x6f0<\x338ss\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3410test { try parseIDNAPass("\x10b5.\x6f0<\x338SS\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3411test { try parseIDNAPass("\x10b5.\x6f0\x226eSS\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3412test { try parseIDNAPass("\x10b5.\x6f0\x226eSs\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3413test { try parseIDNAPass("\x10b5.\x6f0<\x338Ss\x745", "xn--dlj.xn--ss-jbe65aw27i"); }
3414test { try parseIDNAPass("xn--dlj.xn--zca912alh227g", "xn--dlj.xn--zca912alh227g"); }
3415test { try parseIDNAPass("\x2d15.\x6f0\x226e\xdf\x745", "xn--dlj.xn--zca912alh227g"); }
3416test { try parseIDNAPass("\x2d15.\x6f0<\x338\xdf\x745", "xn--dlj.xn--zca912alh227g"); }
3417test { try parseIDNAPass("xn--ge6h.xn--oc9a", "xn--ge6h.xn--oc9a"); }
3418test { try parseIDNAPass("\xd83a\xdd28.\xa84f", "xn--ge6h.xn--oc9a"); }
3419test { try parseIDNAPass("\xd83a\xdd06.\xa84f", "xn--ge6h.xn--oc9a"); }
3420test { try parseIDNAPass(".xn--ss--bi1b", ".xn--ss--bi1b"); }
3421test { try parseIDNAPass("\x9f59--\xd835\xdff0.\xdf", "xn----4-p16k.xn--zca"); }
3422test { try parseIDNAPass("\x9f59--4.\xdf", "xn----4-p16k.xn--zca"); }
3423test { try parseIDNAPass("\x9f59--4.SS", "xn----4-p16k.ss"); }
3424test { try parseIDNAPass("\x9f59--4.ss", "xn----4-p16k.ss"); }
3425test { try parseIDNAPass("\x9f59--4.Ss", "xn----4-p16k.ss"); }
3426test { try parseIDNAPass("xn----4-p16k.ss", "xn----4-p16k.ss"); }
3427test { try parseIDNAPass("xn----4-p16k.xn--zca", "xn----4-p16k.xn--zca"); }
3428test { try parseIDNAPass("\x9f59--\xd835\xdff0.SS", "xn----4-p16k.ss"); }
3429test { try parseIDNAPass("\x9f59--\xd835\xdff0.ss", "xn----4-p16k.ss"); }
3430test { try parseIDNAPass("\x9f59--\xd835\xdff0.Ss", "xn----4-p16k.ss"); }
3431test { try parseIDNAPass("xn--9-i0j5967eg3qz.ss", "xn--9-i0j5967eg3qz.ss"); }
3432test { try parseIDNAPass("\xd88a\xdf9a9\xa369\x17d3.ss", "xn--9-i0j5967eg3qz.ss"); }
3433test { try parseIDNAPass("\xd88a\xdf9a9\xa369\x17d3.SS", "xn--9-i0j5967eg3qz.ss"); }
3434test { try parseIDNAPass("\xa5f7\xd804\xdd80.\x75d\xd802\xde52", "xn--ju8a625r.xn--hpb0073k"); }
3435test { try parseIDNAPass("xn--ju8a625r.xn--hpb0073k", "xn--ju8a625r.xn--hpb0073k"); }
3436test { try parseIDNAPass("xn----3vs.xn--0kj", "xn----3vs.xn--0kj"); }
3437test { try parseIDNAPass("\x3c2.\x641\x645\x64a\xd83d\xdf9b1.", "xn--3xa.xn--1-gocmu97674d."); }
3438test { try parseIDNAPass("\x3a3.\x641\x645\x64a\xd83d\xdf9b1.", "xn--4xa.xn--1-gocmu97674d."); }
3439test { try parseIDNAPass("\x3c3.\x641\x645\x64a\xd83d\xdf9b1.", "xn--4xa.xn--1-gocmu97674d."); }
3440test { try parseIDNAPass("xn--4xa.xn--1-gocmu97674d.", "xn--4xa.xn--1-gocmu97674d."); }
3441test { try parseIDNAPass("xn--3xa.xn--1-gocmu97674d.", "xn--3xa.xn--1-gocmu97674d."); }
3442test { try parseIDNAPass(".xn--hva754s.", ".xn--hva754s."); }
3443test { try parseIDNAPass("xn--hva754s.", "xn--hva754s."); }
3444test { try parseIDNAPass("\x2d16\x366.", "xn--hva754s."); }
3445test { try parseIDNAPass("\x10b6\x366.", "xn--hva754s."); }
3446test { try parseIDNAPass("xn--hzb.xn--ukj4430l", "xn--hzb.xn--ukj4430l"); }
3447test { try parseIDNAPass("\x8bb.\x2d03\xd838\xdc12", "xn--hzb.xn--ukj4430l"); }
3448test { try parseIDNAPass("\x8bb.\x10a3\xd838\xdc12", "xn--hzb.xn--ukj4430l"); }
3449test { try parseIDNAPass("\xdb40\xdd93\x26cf-\x3002\xa852", "xn----o9p.xn--rc9a"); }
3450test { try parseIDNAPass("xn----o9p.xn--rc9a", "xn----o9p.xn--rc9a"); }
3451test { try parseIDNAPass("xn--p9ut19m.xn----mck373i", "xn--p9ut19m.xn----mck373i"); }
3452test { try parseIDNAPass("\x650c\xabed.\x1896-\x2d18", "xn--p9ut19m.xn----mck373i"); }
3453test { try parseIDNAPass("\x650c\xabed.\x1896-\x10b8", "xn--p9ut19m.xn----mck373i"); }
3454test { try parseIDNAPass("xn--9r8a.16.xn--3-nyc0117m", "xn--9r8a.16.xn--3-nyc0117m"); }
3455test { try parseIDNAPass("\xa5a8.16.3\xd212\x6f3", "xn--9r8a.16.xn--3-nyc0117m"); }
3456test { try parseIDNAPass("\xa5a8.16.3\x1110\x116d\x11a9\x6f3", "xn--9r8a.16.xn--3-nyc0117m"); }
3457test { try parseIDNAPass("xn--1-5bt6845n.", "xn--1-5bt6845n."); }
3458test { try parseIDNAPass("1\xd836\xde19\x2e16.", "xn--1-5bt6845n."); }
3459test { try parseIDNAPass(".1.xn--9-ogo", ".1.xn--9-ogo"); }
3460test { try parseIDNAPass("xn--ss-f4j.b.", "xn--ss-f4j.b."); }
3461test { try parseIDNAPass("ss\x103a.b.", "xn--ss-f4j.b."); }
3462test { try parseIDNAPass("SS\x103a.B.", "xn--ss-f4j.b."); }
3463test { try parseIDNAPass("Ss\x103a.b.", "xn--ss-f4j.b."); }
3464test { try parseIDNAPass("SS\x103a.b.", "xn--ss-f4j.b."); }
3465test { try parseIDNAPass("\x6cc\xd802\xde3f\xff0e\xdf\xf84\xd804\xdf6c", "xn--clb2593k.xn--zca216edt0r"); }
3466test { try parseIDNAPass("\x6cc\xd802\xde3f.\xdf\xf84\xd804\xdf6c", "xn--clb2593k.xn--zca216edt0r"); }
3467test { try parseIDNAPass("\x6cc\xd802\xde3f.SS\xf84\xd804\xdf6c", "xn--clb2593k.xn--ss-toj6092t"); }
3468test { try parseIDNAPass("\x6cc\xd802\xde3f.ss\xf84\xd804\xdf6c", "xn--clb2593k.xn--ss-toj6092t"); }
3469test { try parseIDNAPass("xn--clb2593k.xn--ss-toj6092t", "xn--clb2593k.xn--ss-toj6092t"); }
3470test { try parseIDNAPass("xn--clb2593k.xn--zca216edt0r", "xn--clb2593k.xn--zca216edt0r"); }
3471test { try parseIDNAPass("\x6cc\xd802\xde3f\xff0eSS\xf84\xd804\xdf6c", "xn--clb2593k.xn--ss-toj6092t"); }
3472test { try parseIDNAPass("\x6cc\xd802\xde3f\xff0ess\xf84\xd804\xdf6c", "xn--clb2593k.xn--ss-toj6092t"); }
3473test { try parseIDNAPass("\x6cc\xd802\xde3f.Ss\xf84\xd804\xdf6c", "xn--clb2593k.xn--ss-toj6092t"); }
3474test { try parseIDNAPass("\x6cc\xd802\xde3f\xff0eSs\xf84\xd804\xdf6c", "xn--clb2593k.xn--ss-toj6092t"); }
3475test { try parseIDNAPass("xn--8-ngo.", "xn--8-ngo."); }
3476test { try parseIDNAPass("8\x226e.", "xn--8-ngo."); }
3477test { try parseIDNAPass("8<\x338.", "xn--8-ngo."); }
3478test { try parseIDNAPass("\x7f9a\xff61\x226f", "xn--xt0a.xn--hdh"); }
3479test { try parseIDNAPass("\x7f9a\xff61>\x338", "xn--xt0a.xn--hdh"); }
3480test { try parseIDNAPass("\x7f9a\x3002\x226f", "xn--xt0a.xn--hdh"); }
3481test { try parseIDNAPass("\x7f9a\x3002>\x338", "xn--xt0a.xn--hdh"); }
3482test { try parseIDNAPass("xn--xt0a.xn--hdh", "xn--xt0a.xn--hdh"); }
3483test { try parseIDNAPass("\x7f9a.\x226f", "xn--xt0a.xn--hdh"); }
3484test { try parseIDNAPass("\x7f9a.>\x338", "xn--xt0a.xn--hdh"); }
3485test { try parseIDNAPass(".xn--ye6h", ".xn--ye6h"); }
3486test { try parseIDNAPass("xn--ye6h", "xn--ye6h"); }
3487test { try parseIDNAPass("\xd83a\xdd3a", "xn--ye6h"); }
3488test { try parseIDNAPass("\xd83a\xdd18", "xn--ye6h"); }
3489test { try parseIDNAPass("\xd835\xdfdb\xff0e\xf9f8", "3.xn--6vz"); }
3490test { try parseIDNAPass("\xd835\xdfdb\xff0e\x7b20", "3.xn--6vz"); }
3491test { try parseIDNAPass("3.\x7b20", "3.xn--6vz"); }
3492test { try parseIDNAPass("3.xn--6vz", "3.xn--6vz"); }
3493test { try parseIDNAPass("-.xn--mlj8559d", "-.xn--mlj8559d"); }
3494test { try parseIDNAPass("xn--1ch.", "xn--1ch."); }
3495test { try parseIDNAPass("\x2260.", "xn--1ch."); }
3496test { try parseIDNAPass("=\x338.", "xn--1ch."); }
3497test { try parseIDNAPass("-\x3002\x3002", "-.."); }
3498test { try parseIDNAPass("-..", "-.."); }
3499test { try parseIDNAPass(".f", ".f"); }
3500test { try parseIDNAPass("f", "f"); }
3501test { try parseIDNAPass("xn--9bm.ss", "xn--9bm.ss"); }
3502test { try parseIDNAPass("\x3a32.ss", "xn--9bm.ss"); }
3503test { try parseIDNAPass("\x3a32.SS", "xn--9bm.ss"); }
3504test { try parseIDNAPass("\x3a32.Ss", "xn--9bm.ss"); }
3505test { try parseIDNAPass("\xd835\xdfce\x3002\x752f", "0.xn--qny"); }
3506test { try parseIDNAPass("0\x3002\x752f", "0.xn--qny"); }
3507test { try parseIDNAPass("0.xn--qny", "0.xn--qny"); }
3508test { try parseIDNAPass("0.\x752f", "0.xn--qny"); }
3509test { try parseIDNAPass("-\xff61\x1898", "-.xn--ibf"); }
3510test { try parseIDNAPass("-\x3002\x1898", "-.xn--ibf"); }
3511test { try parseIDNAPass("-.xn--ibf", "-.xn--ibf"); }
3512test { try parseIDNAPass("\xd83c\xdcb4\x10ab.\x226e", "xn--2kj7565l.xn--gdh"); }
3513test { try parseIDNAPass("\xd83c\xdcb4\x10ab.<\x338", "xn--2kj7565l.xn--gdh"); }
3514test { try parseIDNAPass("\xd83c\xdcb4\x2d0b.<\x338", "xn--2kj7565l.xn--gdh"); }
3515test { try parseIDNAPass("\xd83c\xdcb4\x2d0b.\x226e", "xn--2kj7565l.xn--gdh"); }
3516test { try parseIDNAPass("xn--2kj7565l.xn--gdh", "xn--2kj7565l.xn--gdh"); }
3517test { try parseIDNAPass("xn--gky8837e.", "xn--gky8837e."); }
3518test { try parseIDNAPass("\x74bc\xd836\xde2d.", "xn--gky8837e."); }
3519test { try parseIDNAPass("xn--157b.xn--gnb", "xn--157b.xn--gnb"); }
3520test { try parseIDNAPass("\xd29b.\x716", "xn--157b.xn--gnb"); }
3521test { try parseIDNAPass("\x1110\x1171\x11c2.\x716", "xn--157b.xn--gnb"); }
3522test { try parseIDNAPass("xn--84-s850a.xn--59h6326e", "xn--84-s850a.xn--59h6326e"); }
3523test { try parseIDNAPass("84\xd834\xde3b.\xd800\xdef5\x26e7", "xn--84-s850a.xn--59h6326e"); }
3524test { try parseIDNAPass("\x226e\xd835\xdfd5\xff0e\x8b16\xdf\x226f", "xn--7-mgo.xn--zca892oly5e"); }
3525test { try parseIDNAPass("<\x338\xd835\xdfd5\xff0e\x8b16\xdf>\x338", "xn--7-mgo.xn--zca892oly5e"); }
3526test { try parseIDNAPass("\x226e7.\x8b16\xdf\x226f", "xn--7-mgo.xn--zca892oly5e"); }
3527test { try parseIDNAPass("<\x3387.\x8b16\xdf>\x338", "xn--7-mgo.xn--zca892oly5e"); }
3528test { try parseIDNAPass("<\x3387.\x8b16SS>\x338", "xn--7-mgo.xn--ss-xjvv174c"); }
3529test { try parseIDNAPass("\x226e7.\x8b16SS\x226f", "xn--7-mgo.xn--ss-xjvv174c"); }
3530test { try parseIDNAPass("\x226e7.\x8b16ss\x226f", "xn--7-mgo.xn--ss-xjvv174c"); }
3531test { try parseIDNAPass("<\x3387.\x8b16ss>\x338", "xn--7-mgo.xn--ss-xjvv174c"); }
3532test { try parseIDNAPass("<\x3387.\x8b16Ss>\x338", "xn--7-mgo.xn--ss-xjvv174c"); }
3533test { try parseIDNAPass("\x226e7.\x8b16Ss\x226f", "xn--7-mgo.xn--ss-xjvv174c"); }
3534test { try parseIDNAPass("xn--7-mgo.xn--ss-xjvv174c", "xn--7-mgo.xn--ss-xjvv174c"); }
3535test { try parseIDNAPass("xn--7-mgo.xn--zca892oly5e", "xn--7-mgo.xn--zca892oly5e"); }
3536test { try parseIDNAPass("<\x338\xd835\xdfd5\xff0e\x8b16SS>\x338", "xn--7-mgo.xn--ss-xjvv174c"); }
3537test { try parseIDNAPass("\x226e\xd835\xdfd5\xff0e\x8b16SS\x226f", "xn--7-mgo.xn--ss-xjvv174c"); }
3538test { try parseIDNAPass("\x226e\xd835\xdfd5\xff0e\x8b16ss\x226f", "xn--7-mgo.xn--ss-xjvv174c"); }
3539test { try parseIDNAPass("<\x338\xd835\xdfd5\xff0e\x8b16ss>\x338", "xn--7-mgo.xn--ss-xjvv174c"); }
3540test { try parseIDNAPass("<\x338\xd835\xdfd5\xff0e\x8b16Ss>\x338", "xn--7-mgo.xn--ss-xjvv174c"); }
3541test { try parseIDNAPass("\x226e\xd835\xdfd5\xff0e\x8b16Ss\x226f", "xn--7-mgo.xn--ss-xjvv174c"); }
3542test { try parseIDNAPass(".xn--ss-bh7o", ".xn--ss-bh7o"); }
3543test { try parseIDNAPass("xn--ss-bh7o", "xn--ss-bh7o"); }
3544test { try parseIDNAPass("ss\xd805\xdcc3", "xn--ss-bh7o"); }
3545test { try parseIDNAPass("SS\xd805\xdcc3", "xn--ss-bh7o"); }
3546test { try parseIDNAPass("Ss\xd805\xdcc3", "xn--ss-bh7o"); }
3547test { try parseIDNAPass(".xn--qekw60d.xn--gd9a", ".xn--qekw60d.xn--gd9a"); }
3548test { try parseIDNAPass("xn--qekw60d.xn--gd9a", "xn--qekw60d.xn--gd9a"); }
3549test { try parseIDNAPass("\x30f6\x44a9.\xa86a", "xn--qekw60d.xn--gd9a"); }
3550test { try parseIDNAPass("\xd834\xdd75\x30029\xd838\xdc08\x4b3a1.", ".xn--91-030c1650n."); }
3551test { try parseIDNAPass(".xn--91-030c1650n.", ".xn--91-030c1650n."); }
3552test { try parseIDNAPass("xn--8c1a.xn--2ib8jn539l", "xn--8c1a.xn--2ib8jn539l"); }
3553test { try parseIDNAPass("\x821b.\x67d\xd83a\xdd34\x6bb", "xn--8c1a.xn--2ib8jn539l"); }
3554test { try parseIDNAPass("\x821b.\x67d\xd83a\xdd12\x6bb", "xn--8c1a.xn--2ib8jn539l"); }
3555test { try parseIDNAPass("\x17b4.\xcb87-", ".xn----938f"); }
3556test { try parseIDNAPass("\x17b4.\x110d\x1170\x11ae-", ".xn----938f"); }
3557test { try parseIDNAPass(".xn----938f", ".xn----938f"); }
3558test { try parseIDNAPass(".xn--hcb32bni", ".xn--hcb32bni"); }
3559test { try parseIDNAPass("xn--hcb32bni", "xn--hcb32bni"); }
3560test { try parseIDNAPass("\x6bd\x663\x596", "xn--hcb32bni"); }
3561test { try parseIDNAPass("\x188c\xff0e-\x85a", "xn--59e.xn----5jd"); }
3562test { try parseIDNAPass("\x188c.-\x85a", "xn--59e.xn----5jd"); }
3563test { try parseIDNAPass("xn--59e.xn----5jd", "xn--59e.xn----5jd"); }
3564test { try parseIDNAPass("xn--8gb2338k.xn--lhb0154f", "xn--8gb2338k.xn--lhb0154f"); }
3565test { try parseIDNAPass("\x63d\xd804\xde3e.\x649\xa92b", "xn--8gb2338k.xn--lhb0154f"); }
3566test { try parseIDNAPass("\x10c1\x10b16\x318\x3002\xdf\x1b03", "xn--6-8cb7433a2ba.xn--zca894k"); }
3567test { try parseIDNAPass("\x2d21\x2d116\x318\x3002\xdf\x1b03", "xn--6-8cb7433a2ba.xn--zca894k"); }
3568test { try parseIDNAPass("\x10c1\x10b16\x318\x3002SS\x1b03", "xn--6-8cb7433a2ba.xn--ss-2vq"); }
3569test { try parseIDNAPass("\x2d21\x2d116\x318\x3002ss\x1b03", "xn--6-8cb7433a2ba.xn--ss-2vq"); }
3570test { try parseIDNAPass("\x10c1\x2d116\x318\x3002Ss\x1b03", "xn--6-8cb7433a2ba.xn--ss-2vq"); }
3571test { try parseIDNAPass("xn--6-8cb7433a2ba.xn--ss-2vq", "xn--6-8cb7433a2ba.xn--ss-2vq"); }
3572test { try parseIDNAPass("\x2d21\x2d116\x318.ss\x1b03", "xn--6-8cb7433a2ba.xn--ss-2vq"); }
3573test { try parseIDNAPass("\x10c1\x10b16\x318.SS\x1b03", "xn--6-8cb7433a2ba.xn--ss-2vq"); }
3574test { try parseIDNAPass("\x10c1\x2d116\x318.Ss\x1b03", "xn--6-8cb7433a2ba.xn--ss-2vq"); }
3575test { try parseIDNAPass("xn--6-8cb7433a2ba.xn--zca894k", "xn--6-8cb7433a2ba.xn--zca894k"); }
3576test { try parseIDNAPass("\x2d21\x2d116\x318.\xdf\x1b03", "xn--6-8cb7433a2ba.xn--zca894k"); }
3577test { try parseIDNAPass("xn--7zv.", "xn--7zv."); }
3578test { try parseIDNAPass("\x6889.", "xn--7zv."); }
3579test { try parseIDNAPass("xn--iwb.ss", "xn--iwb.ss"); }
3580test { try parseIDNAPass("\x853.ss", "xn--iwb.ss"); }
3581test { try parseIDNAPass("\x853.SS", "xn--iwb.ss"); }
3582test { try parseIDNAPass("-\xff61\x2e90", "-.xn--6vj"); }
3583test { try parseIDNAPass("-\x3002\x2e90", "-.xn--6vj"); }
3584test { try parseIDNAPass("-.xn--6vj", "-.xn--6vj"); }
3585test { try parseIDNAPass("xn--ix9c26l.xn--q0s", "xn--ix9c26l.xn--q0s"); }
3586test { try parseIDNAPass("\xd802\xdedc\xd804\xdf3c.\x5a40", "xn--ix9c26l.xn--q0s"); }
3587test { try parseIDNAPass("\xd802\xdec0\xff0e\x689\xd804\xdf00", "xn--pw9c.xn--fjb8658k"); }
3588test { try parseIDNAPass("\xd802\xdec0.\x689\xd804\xdf00", "xn--pw9c.xn--fjb8658k"); }
3589test { try parseIDNAPass("xn--pw9c.xn--fjb8658k", "xn--pw9c.xn--fjb8658k"); }
3590test { try parseIDNAPass("xn--r97c.", "xn--r97c."); }
3591test { try parseIDNAPass("\xd800\xdef7.", "xn--r97c."); }
test.zig created+6
...@@ -0,0 +1,6 @@
1const std = @import("std");
2const url = @import("url");
3
4test {
5 _ = @import("./test.generated.zig");
6}
tsconfig.json created+29
...@@ -0,0 +1,29 @@
1{
2 "compilerOptions": {
3 // Environment setup & latest features
4 "lib": ["ESNext"],
5 "target": "ESNext",
6 "module": "Preserve",
7 "moduleDetection": "force",
8 "jsx": "react-jsx",
9 "allowJs": true,
10
11 // Bundler mode
12 "moduleResolution": "bundler",
13 "allowImportingTsExtensions": true,
14 "verbatimModuleSyntax": true,
15 "noEmit": true,
16
17 // Best practices
18 "strict": true,
19 "skipLibCheck": true,
20 "noFallthroughCasesInSwitch": true,
21 "noUncheckedIndexedAccess": true,
22 "noImplicitOverride": true,
23
24 // Some stricter flags (disabled by default)
25 "noUnusedLocals": false,
26 "noUnusedParameters": false,
27 "noPropertyAccessFromIndexSignature": false
28 }
29}
url.zig created+25
...@@ -0,0 +1,25 @@
1const std = @import("std");
2
3pub const URL = struct {
4 href: []const u8,
5 origin: []const u8,
6 protocol: []const u8,
7 username: []const u8,
8 password: []const u8,
9 host: []const u8,
10 hostname: []const u8,
11 port: []const u8,
12 pathname: []const u8,
13 search: []const u8,
14 hash: []const u8,
15
16 /// Caller owns memory and is responsible for freeing `url.href`.
17 pub fn parse(alloc: std.mem.Allocator, input: []const u8, base: ?[]const u8) !URL {
18 var u: URL = .{ .href = "", .origin = "", .protocol = "", .username = "", .password = "", .host = "", .hostname = "", .port = "", .pathname = "", .search = "", .hash = "" };
19 _ = &u;
20 _ = alloc;
21 _ = input;
22 _ = base;
23 return error.SkipZigTest;
24 }
25};
urltestdata.json created+10242
...@@ -0,0 +1,10242 @@
1[
2 "See ../README.md for a description of the format.",
3 {
4 "input": "http://example\t.\norg",
5 "base": "http://example.org/foo/bar",
6 "href": "http://example.org/",
7 "origin": "http://example.org",
8 "protocol": "http:",
9 "username": "",
10 "password": "",
11 "host": "example.org",
12 "hostname": "example.org",
13 "port": "",
14 "pathname": "/",
15 "search": "",
16 "hash": ""
17 },
18 {
19 "input": "http://user:pass@foo:21/bar;par?b#c",
20 "base": "http://example.org/foo/bar",
21 "href": "http://user:pass@foo:21/bar;par?b#c",
22 "origin": "http://foo:21",
23 "protocol": "http:",
24 "username": "user",
25 "password": "pass",
26 "host": "foo:21",
27 "hostname": "foo",
28 "port": "21",
29 "pathname": "/bar;par",
30 "search": "?b",
31 "hash": "#c"
32 },
33 {
34 "input": "https://test:@test",
35 "base": null,
36 "href": "https://test@test/",
37 "origin": "https://test",
38 "protocol": "https:",
39 "username": "test",
40 "password": "",
41 "host": "test",
42 "hostname": "test",
43 "port": "",
44 "pathname": "/",
45 "search": "",
46 "hash": ""
47 },
48 {
49 "input": "https://:@test",
50 "base": null,
51 "href": "https://test/",
52 "origin": "https://test",
53 "protocol": "https:",
54 "username": "",
55 "password": "",
56 "host": "test",
57 "hostname": "test",
58 "port": "",
59 "pathname": "/",
60 "search": "",
61 "hash": ""
62 },
63 {
64 "input": "non-special://test:@test/x",
65 "base": null,
66 "href": "non-special://test@test/x",
67 "origin": "null",
68 "protocol": "non-special:",
69 "username": "test",
70 "password": "",
71 "host": "test",
72 "hostname": "test",
73 "port": "",
74 "pathname": "/x",
75 "search": "",
76 "hash": ""
77 },
78 {
79 "input": "non-special://:@test/x",
80 "base": null,
81 "href": "non-special://test/x",
82 "origin": "null",
83 "protocol": "non-special:",
84 "username": "",
85 "password": "",
86 "host": "test",
87 "hostname": "test",
88 "port": "",
89 "pathname": "/x",
90 "search": "",
91 "hash": ""
92 },
93 {
94 "input": "http:foo.com",
95 "base": "http://example.org/foo/bar",
96 "href": "http://example.org/foo/foo.com",
97 "origin": "http://example.org",
98 "protocol": "http:",
99 "username": "",
100 "password": "",
101 "host": "example.org",
102 "hostname": "example.org",
103 "port": "",
104 "pathname": "/foo/foo.com",
105 "search": "",
106 "hash": ""
107 },
108 {
109 "input": "\t :foo.com \n",
110 "base": "http://example.org/foo/bar",
111 "href": "http://example.org/foo/:foo.com",
112 "origin": "http://example.org",
113 "protocol": "http:",
114 "username": "",
115 "password": "",
116 "host": "example.org",
117 "hostname": "example.org",
118 "port": "",
119 "pathname": "/foo/:foo.com",
120 "search": "",
121 "hash": ""
122 },
123 {
124 "input": " foo.com ",
125 "base": "http://example.org/foo/bar",
126 "href": "http://example.org/foo/foo.com",
127 "origin": "http://example.org",
128 "protocol": "http:",
129 "username": "",
130 "password": "",
131 "host": "example.org",
132 "hostname": "example.org",
133 "port": "",
134 "pathname": "/foo/foo.com",
135 "search": "",
136 "hash": ""
137 },
138 {
139 "input": "a:\t foo.com",
140 "base": "http://example.org/foo/bar",
141 "href": "a: foo.com",
142 "origin": "null",
143 "protocol": "a:",
144 "username": "",
145 "password": "",
146 "host": "",
147 "hostname": "",
148 "port": "",
149 "pathname": " foo.com",
150 "search": "",
151 "hash": ""
152 },
153 {
154 "input": "http://f:21/ b ? d # e ",
155 "base": "http://example.org/foo/bar",
156 "href": "http://f:21/%20b%20?%20d%20#%20e",
157 "origin": "http://f:21",
158 "protocol": "http:",
159 "username": "",
160 "password": "",
161 "host": "f:21",
162 "hostname": "f",
163 "port": "21",
164 "pathname": "/%20b%20",
165 "search": "?%20d%20",
166 "hash": "#%20e"
167 },
168 {
169 "input": "lolscheme:x x#x x",
170 "base": null,
171 "href": "lolscheme:x x#x%20x",
172 "protocol": "lolscheme:",
173 "username": "",
174 "password": "",
175 "host": "",
176 "hostname": "",
177 "port": "",
178 "pathname": "x x",
179 "search": "",
180 "hash": "#x%20x"
181 },
182 {
183 "input": "http://f:/c",
184 "base": "http://example.org/foo/bar",
185 "href": "http://f/c",
186 "origin": "http://f",
187 "protocol": "http:",
188 "username": "",
189 "password": "",
190 "host": "f",
191 "hostname": "f",
192 "port": "",
193 "pathname": "/c",
194 "search": "",
195 "hash": ""
196 },
197 {
198 "input": "http://f:0/c",
199 "base": "http://example.org/foo/bar",
200 "href": "http://f:0/c",
201 "origin": "http://f:0",
202 "protocol": "http:",
203 "username": "",
204 "password": "",
205 "host": "f:0",
206 "hostname": "f",
207 "port": "0",
208 "pathname": "/c",
209 "search": "",
210 "hash": ""
211 },
212 {
213 "input": "http://f:00000000000000/c",
214 "base": "http://example.org/foo/bar",
215 "href": "http://f:0/c",
216 "origin": "http://f:0",
217 "protocol": "http:",
218 "username": "",
219 "password": "",
220 "host": "f:0",
221 "hostname": "f",
222 "port": "0",
223 "pathname": "/c",
224 "search": "",
225 "hash": ""
226 },
227 {
228 "input": "http://f:00000000000000000000080/c",
229 "base": "http://example.org/foo/bar",
230 "href": "http://f/c",
231 "origin": "http://f",
232 "protocol": "http:",
233 "username": "",
234 "password": "",
235 "host": "f",
236 "hostname": "f",
237 "port": "",
238 "pathname": "/c",
239 "search": "",
240 "hash": ""
241 },
242 {
243 "input": "http://f:b/c",
244 "base": "http://example.org/foo/bar",
245 "failure": true
246 },
247 {
248 "input": "http://f: /c",
249 "base": "http://example.org/foo/bar",
250 "failure": true
251 },
252 {
253 "input": "http://f:\n/c",
254 "base": "http://example.org/foo/bar",
255 "href": "http://f/c",
256 "origin": "http://f",
257 "protocol": "http:",
258 "username": "",
259 "password": "",
260 "host": "f",
261 "hostname": "f",
262 "port": "",
263 "pathname": "/c",
264 "search": "",
265 "hash": ""
266 },
267 {
268 "input": "http://f:fifty-two/c",
269 "base": "http://example.org/foo/bar",
270 "failure": true
271 },
272 {
273 "input": "http://f:999999/c",
274 "base": "http://example.org/foo/bar",
275 "failure": true
276 },
277 {
278 "input": "non-special://f:999999/c",
279 "base": "http://example.org/foo/bar",
280 "failure": true
281 },
282 {
283 "input": "http://f: 21 / b ? d # e ",
284 "base": "http://example.org/foo/bar",
285 "failure": true
286 },
287 {
288 "input": "",
289 "base": "http://example.org/foo/bar",
290 "href": "http://example.org/foo/bar",
291 "origin": "http://example.org",
292 "protocol": "http:",
293 "username": "",
294 "password": "",
295 "host": "example.org",
296 "hostname": "example.org",
297 "port": "",
298 "pathname": "/foo/bar",
299 "search": "",
300 "hash": ""
301 },
302 {
303 "input": " \t",
304 "base": "http://example.org/foo/bar",
305 "href": "http://example.org/foo/bar",
306 "origin": "http://example.org",
307 "protocol": "http:",
308 "username": "",
309 "password": "",
310 "host": "example.org",
311 "hostname": "example.org",
312 "port": "",
313 "pathname": "/foo/bar",
314 "search": "",
315 "hash": ""
316 },
317 {
318 "input": ":foo.com/",
319 "base": "http://example.org/foo/bar",
320 "href": "http://example.org/foo/:foo.com/",
321 "origin": "http://example.org",
322 "protocol": "http:",
323 "username": "",
324 "password": "",
325 "host": "example.org",
326 "hostname": "example.org",
327 "port": "",
328 "pathname": "/foo/:foo.com/",
329 "search": "",
330 "hash": ""
331 },
332 {
333 "input": ":foo.com\\",
334 "base": "http://example.org/foo/bar",
335 "href": "http://example.org/foo/:foo.com/",
336 "origin": "http://example.org",
337 "protocol": "http:",
338 "username": "",
339 "password": "",
340 "host": "example.org",
341 "hostname": "example.org",
342 "port": "",
343 "pathname": "/foo/:foo.com/",
344 "search": "",
345 "hash": ""
346 },
347 {
348 "input": ":",
349 "base": "http://example.org/foo/bar",
350 "href": "http://example.org/foo/:",
351 "origin": "http://example.org",
352 "protocol": "http:",
353 "username": "",
354 "password": "",
355 "host": "example.org",
356 "hostname": "example.org",
357 "port": "",
358 "pathname": "/foo/:",
359 "search": "",
360 "hash": ""
361 },
362 {
363 "input": ":a",
364 "base": "http://example.org/foo/bar",
365 "href": "http://example.org/foo/:a",
366 "origin": "http://example.org",
367 "protocol": "http:",
368 "username": "",
369 "password": "",
370 "host": "example.org",
371 "hostname": "example.org",
372 "port": "",
373 "pathname": "/foo/:a",
374 "search": "",
375 "hash": ""
376 },
377 {
378 "input": ":/",
379 "base": "http://example.org/foo/bar",
380 "href": "http://example.org/foo/:/",
381 "origin": "http://example.org",
382 "protocol": "http:",
383 "username": "",
384 "password": "",
385 "host": "example.org",
386 "hostname": "example.org",
387 "port": "",
388 "pathname": "/foo/:/",
389 "search": "",
390 "hash": ""
391 },
392 {
393 "input": ":\\",
394 "base": "http://example.org/foo/bar",
395 "href": "http://example.org/foo/:/",
396 "origin": "http://example.org",
397 "protocol": "http:",
398 "username": "",
399 "password": "",
400 "host": "example.org",
401 "hostname": "example.org",
402 "port": "",
403 "pathname": "/foo/:/",
404 "search": "",
405 "hash": ""
406 },
407 {
408 "input": ":#",
409 "base": "http://example.org/foo/bar",
410 "href": "http://example.org/foo/:#",
411 "origin": "http://example.org",
412 "protocol": "http:",
413 "username": "",
414 "password": "",
415 "host": "example.org",
416 "hostname": "example.org",
417 "port": "",
418 "pathname": "/foo/:",
419 "search": "",
420 "hash": ""
421 },
422 {
423 "input": "#",
424 "base": "http://example.org/foo/bar",
425 "href": "http://example.org/foo/bar#",
426 "origin": "http://example.org",
427 "protocol": "http:",
428 "username": "",
429 "password": "",
430 "host": "example.org",
431 "hostname": "example.org",
432 "port": "",
433 "pathname": "/foo/bar",
434 "search": "",
435 "hash": ""
436 },
437 {
438 "input": "#/",
439 "base": "http://example.org/foo/bar",
440 "href": "http://example.org/foo/bar#/",
441 "origin": "http://example.org",
442 "protocol": "http:",
443 "username": "",
444 "password": "",
445 "host": "example.org",
446 "hostname": "example.org",
447 "port": "",
448 "pathname": "/foo/bar",
449 "search": "",
450 "hash": "#/"
451 },
452 {
453 "input": "#\\",
454 "base": "http://example.org/foo/bar",
455 "href": "http://example.org/foo/bar#\\",
456 "origin": "http://example.org",
457 "protocol": "http:",
458 "username": "",
459 "password": "",
460 "host": "example.org",
461 "hostname": "example.org",
462 "port": "",
463 "pathname": "/foo/bar",
464 "search": "",
465 "hash": "#\\"
466 },
467 {
468 "input": "#;?",
469 "base": "http://example.org/foo/bar",
470 "href": "http://example.org/foo/bar#;?",
471 "origin": "http://example.org",
472 "protocol": "http:",
473 "username": "",
474 "password": "",
475 "host": "example.org",
476 "hostname": "example.org",
477 "port": "",
478 "pathname": "/foo/bar",
479 "search": "",
480 "hash": "#;?"
481 },
482 {
483 "input": "?",
484 "base": "http://example.org/foo/bar",
485 "href": "http://example.org/foo/bar?",
486 "origin": "http://example.org",
487 "protocol": "http:",
488 "username": "",
489 "password": "",
490 "host": "example.org",
491 "hostname": "example.org",
492 "port": "",
493 "pathname": "/foo/bar",
494 "search": "",
495 "hash": ""
496 },
497 {
498 "input": "/",
499 "base": "http://example.org/foo/bar",
500 "href": "http://example.org/",
501 "origin": "http://example.org",
502 "protocol": "http:",
503 "username": "",
504 "password": "",
505 "host": "example.org",
506 "hostname": "example.org",
507 "port": "",
508 "pathname": "/",
509 "search": "",
510 "hash": ""
511 },
512 {
513 "input": ":23",
514 "base": "http://example.org/foo/bar",
515 "href": "http://example.org/foo/:23",
516 "origin": "http://example.org",
517 "protocol": "http:",
518 "username": "",
519 "password": "",
520 "host": "example.org",
521 "hostname": "example.org",
522 "port": "",
523 "pathname": "/foo/:23",
524 "search": "",
525 "hash": ""
526 },
527 {
528 "input": "/:23",
529 "base": "http://example.org/foo/bar",
530 "href": "http://example.org/:23",
531 "origin": "http://example.org",
532 "protocol": "http:",
533 "username": "",
534 "password": "",
535 "host": "example.org",
536 "hostname": "example.org",
537 "port": "",
538 "pathname": "/:23",
539 "search": "",
540 "hash": ""
541 },
542 {
543 "input": "\\x",
544 "base": "http://example.org/foo/bar",
545 "href": "http://example.org/x",
546 "origin": "http://example.org",
547 "protocol": "http:",
548 "username": "",
549 "password": "",
550 "host": "example.org",
551 "hostname": "example.org",
552 "port": "",
553 "pathname": "/x",
554 "search": "",
555 "hash": ""
556 },
557 {
558 "input": "\\\\x\\hello",
559 "base": "http://example.org/foo/bar",
560 "href": "http://x/hello",
561 "origin": "http://x",
562 "protocol": "http:",
563 "username": "",
564 "password": "",
565 "host": "x",
566 "hostname": "x",
567 "port": "",
568 "pathname": "/hello",
569 "search": "",
570 "hash": ""
571 },
572 {
573 "input": "::",
574 "base": "http://example.org/foo/bar",
575 "href": "http://example.org/foo/::",
576 "origin": "http://example.org",
577 "protocol": "http:",
578 "username": "",
579 "password": "",
580 "host": "example.org",
581 "hostname": "example.org",
582 "port": "",
583 "pathname": "/foo/::",
584 "search": "",
585 "hash": ""
586 },
587 {
588 "input": "::23",
589 "base": "http://example.org/foo/bar",
590 "href": "http://example.org/foo/::23",
591 "origin": "http://example.org",
592 "protocol": "http:",
593 "username": "",
594 "password": "",
595 "host": "example.org",
596 "hostname": "example.org",
597 "port": "",
598 "pathname": "/foo/::23",
599 "search": "",
600 "hash": ""
601 },
602 {
603 "input": "foo://",
604 "base": "http://example.org/foo/bar",
605 "href": "foo://",
606 "origin": "null",
607 "protocol": "foo:",
608 "username": "",
609 "password": "",
610 "host": "",
611 "hostname": "",
612 "port": "",
613 "pathname": "",
614 "search": "",
615 "hash": ""
616 },
617 {
618 "input": "http://a:b@c:29/d",
619 "base": "http://example.org/foo/bar",
620 "href": "http://a:b@c:29/d",
621 "origin": "http://c:29",
622 "protocol": "http:",
623 "username": "a",
624 "password": "b",
625 "host": "c:29",
626 "hostname": "c",
627 "port": "29",
628 "pathname": "/d",
629 "search": "",
630 "hash": ""
631 },
632 {
633 "input": "http::@c:29",
634 "base": "http://example.org/foo/bar",
635 "href": "http://example.org/foo/:@c:29",
636 "origin": "http://example.org",
637 "protocol": "http:",
638 "username": "",
639 "password": "",
640 "host": "example.org",
641 "hostname": "example.org",
642 "port": "",
643 "pathname": "/foo/:@c:29",
644 "search": "",
645 "hash": ""
646 },
647 {
648 "input": "http://&a:foo(b]c@d:2/",
649 "base": "http://example.org/foo/bar",
650 "href": "http://&a:foo(b%5Dc@d:2/",
651 "origin": "http://d:2",
652 "protocol": "http:",
653 "username": "&a",
654 "password": "foo(b%5Dc",
655 "host": "d:2",
656 "hostname": "d",
657 "port": "2",
658 "pathname": "/",
659 "search": "",
660 "hash": ""
661 },
662 {
663 "input": "http://::@c@d:2",
664 "base": "http://example.org/foo/bar",
665 "href": "http://:%3A%40c@d:2/",
666 "origin": "http://d:2",
667 "protocol": "http:",
668 "username": "",
669 "password": "%3A%40c",
670 "host": "d:2",
671 "hostname": "d",
672 "port": "2",
673 "pathname": "/",
674 "search": "",
675 "hash": ""
676 },
677 {
678 "input": "http://foo.com:b@d/",
679 "base": "http://example.org/foo/bar",
680 "href": "http://foo.com:b@d/",
681 "origin": "http://d",
682 "protocol": "http:",
683 "username": "foo.com",
684 "password": "b",
685 "host": "d",
686 "hostname": "d",
687 "port": "",
688 "pathname": "/",
689 "search": "",
690 "hash": ""
691 },
692 {
693 "input": "http://foo.com/\\@",
694 "base": "http://example.org/foo/bar",
695 "href": "http://foo.com//@",
696 "origin": "http://foo.com",
697 "protocol": "http:",
698 "username": "",
699 "password": "",
700 "host": "foo.com",
701 "hostname": "foo.com",
702 "port": "",
703 "pathname": "//@",
704 "search": "",
705 "hash": ""
706 },
707 {
708 "input": "http:\\\\foo.com\\",
709 "base": "http://example.org/foo/bar",
710 "href": "http://foo.com/",
711 "origin": "http://foo.com",
712 "protocol": "http:",
713 "username": "",
714 "password": "",
715 "host": "foo.com",
716 "hostname": "foo.com",
717 "port": "",
718 "pathname": "/",
719 "search": "",
720 "hash": ""
721 },
722 {
723 "input": "http:\\\\a\\b:c\\d@foo.com\\",
724 "base": "http://example.org/foo/bar",
725 "href": "http://a/b:c/d@foo.com/",
726 "origin": "http://a",
727 "protocol": "http:",
728 "username": "",
729 "password": "",
730 "host": "a",
731 "hostname": "a",
732 "port": "",
733 "pathname": "/b:c/d@foo.com/",
734 "search": "",
735 "hash": ""
736 },
737 {
738 "input": "http://a:b@c\\",
739 "base": null,
740 "href": "http://a:b@c/",
741 "origin": "http://c",
742 "protocol": "http:",
743 "username": "a",
744 "password": "b",
745 "host": "c",
746 "hostname": "c",
747 "port": "",
748 "pathname": "/",
749 "search": "",
750 "hash": ""
751 },
752 {
753 "input": "ws://a@b\\c",
754 "base": null,
755 "href": "ws://a@b/c",
756 "origin": "ws://b",
757 "protocol": "ws:",
758 "username": "a",
759 "password": "",
760 "host": "b",
761 "hostname": "b",
762 "port": "",
763 "pathname": "/c",
764 "search": "",
765 "hash": ""
766 },
767 {
768 "input": "foo:/",
769 "base": "http://example.org/foo/bar",
770 "href": "foo:/",
771 "origin": "null",
772 "protocol": "foo:",
773 "username": "",
774 "password": "",
775 "host": "",
776 "hostname": "",
777 "port": "",
778 "pathname": "/",
779 "search": "",
780 "hash": ""
781 },
782 {
783 "input": "foo:/bar.com/",
784 "base": "http://example.org/foo/bar",
785 "href": "foo:/bar.com/",
786 "origin": "null",
787 "protocol": "foo:",
788 "username": "",
789 "password": "",
790 "host": "",
791 "hostname": "",
792 "port": "",
793 "pathname": "/bar.com/",
794 "search": "",
795 "hash": ""
796 },
797 {
798 "input": "foo://///////",
799 "base": "http://example.org/foo/bar",
800 "href": "foo://///////",
801 "origin": "null",
802 "protocol": "foo:",
803 "username": "",
804 "password": "",
805 "host": "",
806 "hostname": "",
807 "port": "",
808 "pathname": "///////",
809 "search": "",
810 "hash": ""
811 },
812 {
813 "input": "foo://///////bar.com/",
814 "base": "http://example.org/foo/bar",
815 "href": "foo://///////bar.com/",
816 "origin": "null",
817 "protocol": "foo:",
818 "username": "",
819 "password": "",
820 "host": "",
821 "hostname": "",
822 "port": "",
823 "pathname": "///////bar.com/",
824 "search": "",
825 "hash": ""
826 },
827 {
828 "input": "foo:////://///",
829 "base": "http://example.org/foo/bar",
830 "href": "foo:////://///",
831 "origin": "null",
832 "protocol": "foo:",
833 "username": "",
834 "password": "",
835 "host": "",
836 "hostname": "",
837 "port": "",
838 "pathname": "//://///",
839 "search": "",
840 "hash": ""
841 },
842 {
843 "input": "c:/foo",
844 "base": "http://example.org/foo/bar",
845 "href": "c:/foo",
846 "origin": "null",
847 "protocol": "c:",
848 "username": "",
849 "password": "",
850 "host": "",
851 "hostname": "",
852 "port": "",
853 "pathname": "/foo",
854 "search": "",
855 "hash": ""
856 },
857 {
858 "input": "//foo/bar",
859 "base": "http://example.org/foo/bar",
860 "href": "http://foo/bar",
861 "origin": "http://foo",
862 "protocol": "http:",
863 "username": "",
864 "password": "",
865 "host": "foo",
866 "hostname": "foo",
867 "port": "",
868 "pathname": "/bar",
869 "search": "",
870 "hash": ""
871 },
872 {
873 "input": "http://foo/path;a??e#f#g",
874 "base": "http://example.org/foo/bar",
875 "href": "http://foo/path;a??e#f#g",
876 "origin": "http://foo",
877 "protocol": "http:",
878 "username": "",
879 "password": "",
880 "host": "foo",
881 "hostname": "foo",
882 "port": "",
883 "pathname": "/path;a",
884 "search": "??e",
885 "hash": "#f#g"
886 },
887 {
888 "input": "http://foo/abcd?efgh?ijkl",
889 "base": "http://example.org/foo/bar",
890 "href": "http://foo/abcd?efgh?ijkl",
891 "origin": "http://foo",
892 "protocol": "http:",
893 "username": "",
894 "password": "",
895 "host": "foo",
896 "hostname": "foo",
897 "port": "",
898 "pathname": "/abcd",
899 "search": "?efgh?ijkl",
900 "hash": ""
901 },
902 {
903 "input": "http://foo/abcd#foo?bar",
904 "base": "http://example.org/foo/bar",
905 "href": "http://foo/abcd#foo?bar",
906 "origin": "http://foo",
907 "protocol": "http:",
908 "username": "",
909 "password": "",
910 "host": "foo",
911 "hostname": "foo",
912 "port": "",
913 "pathname": "/abcd",
914 "search": "",
915 "hash": "#foo?bar"
916 },
917 {
918 "input": "[61:24:74]:98",
919 "base": "http://example.org/foo/bar",
920 "href": "http://example.org/foo/[61:24:74]:98",
921 "origin": "http://example.org",
922 "protocol": "http:",
923 "username": "",
924 "password": "",
925 "host": "example.org",
926 "hostname": "example.org",
927 "port": "",
928 "pathname": "/foo/[61:24:74]:98",
929 "search": "",
930 "hash": ""
931 },
932 {
933 "input": "http:[61:27]/:foo",
934 "base": "http://example.org/foo/bar",
935 "href": "http://example.org/foo/[61:27]/:foo",
936 "origin": "http://example.org",
937 "protocol": "http:",
938 "username": "",
939 "password": "",
940 "host": "example.org",
941 "hostname": "example.org",
942 "port": "",
943 "pathname": "/foo/[61:27]/:foo",
944 "search": "",
945 "hash": ""
946 },
947 {
948 "input": "http://[1::2]:3:4",
949 "base": "http://example.org/foo/bar",
950 "failure": true
951 },
952 {
953 "input": "http://2001::1",
954 "base": "http://example.org/foo/bar",
955 "failure": true
956 },
957 {
958 "input": "http://2001::1]",
959 "base": "http://example.org/foo/bar",
960 "failure": true
961 },
962 {
963 "input": "http://2001::1]:80",
964 "base": "http://example.org/foo/bar",
965 "failure": true
966 },
967 {
968 "input": "http://[2001::1]",
969 "base": "http://example.org/foo/bar",
970 "href": "http://[2001::1]/",
971 "origin": "http://[2001::1]",
972 "protocol": "http:",
973 "username": "",
974 "password": "",
975 "host": "[2001::1]",
976 "hostname": "[2001::1]",
977 "port": "",
978 "pathname": "/",
979 "search": "",
980 "hash": ""
981 },
982 {
983 "input": "http://[::127.0.0.1]",
984 "base": "http://example.org/foo/bar",
985 "href": "http://[::7f00:1]/",
986 "origin": "http://[::7f00:1]",
987 "protocol": "http:",
988 "username": "",
989 "password": "",
990 "host": "[::7f00:1]",
991 "hostname": "[::7f00:1]",
992 "port": "",
993 "pathname": "/",
994 "search": "",
995 "hash": ""
996 },
997 {
998 "input": "http://[::127.0.0.1.]",
999 "base": "http://example.org/foo/bar",
1000 "failure": true
1001 },
1002 {
1003 "input": "http://[0:0:0:0:0:0:13.1.68.3]",
1004 "base": "http://example.org/foo/bar",
1005 "href": "http://[::d01:4403]/",
1006 "origin": "http://[::d01:4403]",
1007 "protocol": "http:",
1008 "username": "",
1009 "password": "",
1010 "host": "[::d01:4403]",
1011 "hostname": "[::d01:4403]",
1012 "port": "",
1013 "pathname": "/",
1014 "search": "",
1015 "hash": ""
1016 },
1017 {
1018 "input": "http://[2001::1]:80",
1019 "base": "http://example.org/foo/bar",
1020 "href": "http://[2001::1]/",
1021 "origin": "http://[2001::1]",
1022 "protocol": "http:",
1023 "username": "",
1024 "password": "",
1025 "host": "[2001::1]",
1026 "hostname": "[2001::1]",
1027 "port": "",
1028 "pathname": "/",
1029 "search": "",
1030 "hash": ""
1031 },
1032 {
1033 "input": "http:/example.com/",
1034 "base": "http://example.org/foo/bar",
1035 "href": "http://example.org/example.com/",
1036 "origin": "http://example.org",
1037 "protocol": "http:",
1038 "username": "",
1039 "password": "",
1040 "host": "example.org",
1041 "hostname": "example.org",
1042 "port": "",
1043 "pathname": "/example.com/",
1044 "search": "",
1045 "hash": ""
1046 },
1047 {
1048 "input": "ftp:/example.com/",
1049 "base": "http://example.org/foo/bar",
1050 "href": "ftp://example.com/",
1051 "origin": "ftp://example.com",
1052 "protocol": "ftp:",
1053 "username": "",
1054 "password": "",
1055 "host": "example.com",
1056 "hostname": "example.com",
1057 "port": "",
1058 "pathname": "/",
1059 "search": "",
1060 "hash": ""
1061 },
1062 {
1063 "input": "https:/example.com/",
1064 "base": "http://example.org/foo/bar",
1065 "href": "https://example.com/",
1066 "origin": "https://example.com",
1067 "protocol": "https:",
1068 "username": "",
1069 "password": "",
1070 "host": "example.com",
1071 "hostname": "example.com",
1072 "port": "",
1073 "pathname": "/",
1074 "search": "",
1075 "hash": ""
1076 },
1077 {
1078 "input": "madeupscheme:/example.com/",
1079 "base": "http://example.org/foo/bar",
1080 "href": "madeupscheme:/example.com/",
1081 "origin": "null",
1082 "protocol": "madeupscheme:",
1083 "username": "",
1084 "password": "",
1085 "host": "",
1086 "hostname": "",
1087 "port": "",
1088 "pathname": "/example.com/",
1089 "search": "",
1090 "hash": ""
1091 },
1092 {
1093 "input": "file:/example.com/",
1094 "base": "http://example.org/foo/bar",
1095 "href": "file:///example.com/",
1096 "protocol": "file:",
1097 "username": "",
1098 "password": "",
1099 "host": "",
1100 "hostname": "",
1101 "port": "",
1102 "pathname": "/example.com/",
1103 "search": "",
1104 "hash": ""
1105 },
1106 {
1107 "input": "file://example:1/",
1108 "base": null,
1109 "failure": true
1110 },
1111 {
1112 "input": "file://example:test/",
1113 "base": null,
1114 "failure": true
1115 },
1116 {
1117 "input": "file://example%/",
1118 "base": null,
1119 "failure": true
1120 },
1121 {
1122 "input": "file://[example]/",
1123 "base": null,
1124 "failure": true
1125 },
1126 {
1127 "input": "ftps:/example.com/",
1128 "base": "http://example.org/foo/bar",
1129 "href": "ftps:/example.com/",
1130 "origin": "null",
1131 "protocol": "ftps:",
1132 "username": "",
1133 "password": "",
1134 "host": "",
1135 "hostname": "",
1136 "port": "",
1137 "pathname": "/example.com/",
1138 "search": "",
1139 "hash": ""
1140 },
1141 {
1142 "input": "gopher:/example.com/",
1143 "base": "http://example.org/foo/bar",
1144 "href": "gopher:/example.com/",
1145 "origin": "null",
1146 "protocol": "gopher:",
1147 "username": "",
1148 "password": "",
1149 "host": "",
1150 "hostname": "",
1151 "port": "",
1152 "pathname": "/example.com/",
1153 "search": "",
1154 "hash": ""
1155 },
1156 {
1157 "input": "ws:/example.com/",
1158 "base": "http://example.org/foo/bar",
1159 "href": "ws://example.com/",
1160 "origin": "ws://example.com",
1161 "protocol": "ws:",
1162 "username": "",
1163 "password": "",
1164 "host": "example.com",
1165 "hostname": "example.com",
1166 "port": "",
1167 "pathname": "/",
1168 "search": "",
1169 "hash": ""
1170 },
1171 {
1172 "input": "wss:/example.com/",
1173 "base": "http://example.org/foo/bar",
1174 "href": "wss://example.com/",
1175 "origin": "wss://example.com",
1176 "protocol": "wss:",
1177 "username": "",
1178 "password": "",
1179 "host": "example.com",
1180 "hostname": "example.com",
1181 "port": "",
1182 "pathname": "/",
1183 "search": "",
1184 "hash": ""
1185 },
1186 {
1187 "input": "data:/example.com/",
1188 "base": "http://example.org/foo/bar",
1189 "href": "data:/example.com/",
1190 "origin": "null",
1191 "protocol": "data:",
1192 "username": "",
1193 "password": "",
1194 "host": "",
1195 "hostname": "",
1196 "port": "",
1197 "pathname": "/example.com/",
1198 "search": "",
1199 "hash": ""
1200 },
1201 {
1202 "input": "javascript:/example.com/",
1203 "base": "http://example.org/foo/bar",
1204 "href": "javascript:/example.com/",
1205 "origin": "null",
1206 "protocol": "javascript:",
1207 "username": "",
1208 "password": "",
1209 "host": "",
1210 "hostname": "",
1211 "port": "",
1212 "pathname": "/example.com/",
1213 "search": "",
1214 "hash": ""
1215 },
1216 {
1217 "input": "mailto:/example.com/",
1218 "base": "http://example.org/foo/bar",
1219 "href": "mailto:/example.com/",
1220 "origin": "null",
1221 "protocol": "mailto:",
1222 "username": "",
1223 "password": "",
1224 "host": "",
1225 "hostname": "",
1226 "port": "",
1227 "pathname": "/example.com/",
1228 "search": "",
1229 "hash": ""
1230 },
1231 {
1232 "input": "http:example.com/",
1233 "base": "http://example.org/foo/bar",
1234 "href": "http://example.org/foo/example.com/",
1235 "origin": "http://example.org",
1236 "protocol": "http:",
1237 "username": "",
1238 "password": "",
1239 "host": "example.org",
1240 "hostname": "example.org",
1241 "port": "",
1242 "pathname": "/foo/example.com/",
1243 "search": "",
1244 "hash": ""
1245 },
1246 {
1247 "input": "ftp:example.com/",
1248 "base": "http://example.org/foo/bar",
1249 "href": "ftp://example.com/",
1250 "origin": "ftp://example.com",
1251 "protocol": "ftp:",
1252 "username": "",
1253 "password": "",
1254 "host": "example.com",
1255 "hostname": "example.com",
1256 "port": "",
1257 "pathname": "/",
1258 "search": "",
1259 "hash": ""
1260 },
1261 {
1262 "input": "https:example.com/",
1263 "base": "http://example.org/foo/bar",
1264 "href": "https://example.com/",
1265 "origin": "https://example.com",
1266 "protocol": "https:",
1267 "username": "",
1268 "password": "",
1269 "host": "example.com",
1270 "hostname": "example.com",
1271 "port": "",
1272 "pathname": "/",
1273 "search": "",
1274 "hash": ""
1275 },
1276 {
1277 "input": "madeupscheme:example.com/",
1278 "base": "http://example.org/foo/bar",
1279 "href": "madeupscheme:example.com/",
1280 "origin": "null",
1281 "protocol": "madeupscheme:",
1282 "username": "",
1283 "password": "",
1284 "host": "",
1285 "hostname": "",
1286 "port": "",
1287 "pathname": "example.com/",
1288 "search": "",
1289 "hash": ""
1290 },
1291 {
1292 "input": "ftps:example.com/",
1293 "base": "http://example.org/foo/bar",
1294 "href": "ftps:example.com/",
1295 "origin": "null",
1296 "protocol": "ftps:",
1297 "username": "",
1298 "password": "",
1299 "host": "",
1300 "hostname": "",
1301 "port": "",
1302 "pathname": "example.com/",
1303 "search": "",
1304 "hash": ""
1305 },
1306 {
1307 "input": "gopher:example.com/",
1308 "base": "http://example.org/foo/bar",
1309 "href": "gopher:example.com/",
1310 "origin": "null",
1311 "protocol": "gopher:",
1312 "username": "",
1313 "password": "",
1314 "host": "",
1315 "hostname": "",
1316 "port": "",
1317 "pathname": "example.com/",
1318 "search": "",
1319 "hash": ""
1320 },
1321 {
1322 "input": "ws:example.com/",
1323 "base": "http://example.org/foo/bar",
1324 "href": "ws://example.com/",
1325 "origin": "ws://example.com",
1326 "protocol": "ws:",
1327 "username": "",
1328 "password": "",
1329 "host": "example.com",
1330 "hostname": "example.com",
1331 "port": "",
1332 "pathname": "/",
1333 "search": "",
1334 "hash": ""
1335 },
1336 {
1337 "input": "wss:example.com/",
1338 "base": "http://example.org/foo/bar",
1339 "href": "wss://example.com/",
1340 "origin": "wss://example.com",
1341 "protocol": "wss:",
1342 "username": "",
1343 "password": "",
1344 "host": "example.com",
1345 "hostname": "example.com",
1346 "port": "",
1347 "pathname": "/",
1348 "search": "",
1349 "hash": ""
1350 },
1351 {
1352 "input": "data:example.com/",
1353 "base": "http://example.org/foo/bar",
1354 "href": "data:example.com/",
1355 "origin": "null",
1356 "protocol": "data:",
1357 "username": "",
1358 "password": "",
1359 "host": "",
1360 "hostname": "",
1361 "port": "",
1362 "pathname": "example.com/",
1363 "search": "",
1364 "hash": ""
1365 },
1366 {
1367 "input": "javascript:example.com/",
1368 "base": "http://example.org/foo/bar",
1369 "href": "javascript:example.com/",
1370 "origin": "null",
1371 "protocol": "javascript:",
1372 "username": "",
1373 "password": "",
1374 "host": "",
1375 "hostname": "",
1376 "port": "",
1377 "pathname": "example.com/",
1378 "search": "",
1379 "hash": ""
1380 },
1381 {
1382 "input": "mailto:example.com/",
1383 "base": "http://example.org/foo/bar",
1384 "href": "mailto:example.com/",
1385 "origin": "null",
1386 "protocol": "mailto:",
1387 "username": "",
1388 "password": "",
1389 "host": "",
1390 "hostname": "",
1391 "port": "",
1392 "pathname": "example.com/",
1393 "search": "",
1394 "hash": ""
1395 },
1396 {
1397 "input": "/a/b/c",
1398 "base": "http://example.org/foo/bar",
1399 "href": "http://example.org/a/b/c",
1400 "origin": "http://example.org",
1401 "protocol": "http:",
1402 "username": "",
1403 "password": "",
1404 "host": "example.org",
1405 "hostname": "example.org",
1406 "port": "",
1407 "pathname": "/a/b/c",
1408 "search": "",
1409 "hash": ""
1410 },
1411 {
1412 "input": "/a/ /c",
1413 "base": "http://example.org/foo/bar",
1414 "href": "http://example.org/a/%20/c",
1415 "origin": "http://example.org",
1416 "protocol": "http:",
1417 "username": "",
1418 "password": "",
1419 "host": "example.org",
1420 "hostname": "example.org",
1421 "port": "",
1422 "pathname": "/a/%20/c",
1423 "search": "",
1424 "hash": ""
1425 },
1426 {
1427 "input": "/a%2fc",
1428 "base": "http://example.org/foo/bar",
1429 "href": "http://example.org/a%2fc",
1430 "origin": "http://example.org",
1431 "protocol": "http:",
1432 "username": "",
1433 "password": "",
1434 "host": "example.org",
1435 "hostname": "example.org",
1436 "port": "",
1437 "pathname": "/a%2fc",
1438 "search": "",
1439 "hash": ""
1440 },
1441 {
1442 "input": "/a/%2f/c",
1443 "base": "http://example.org/foo/bar",
1444 "href": "http://example.org/a/%2f/c",
1445 "origin": "http://example.org",
1446 "protocol": "http:",
1447 "username": "",
1448 "password": "",
1449 "host": "example.org",
1450 "hostname": "example.org",
1451 "port": "",
1452 "pathname": "/a/%2f/c",
1453 "search": "",
1454 "hash": ""
1455 },
1456 {
1457 "input": "#β",
1458 "base": "http://example.org/foo/bar",
1459 "href": "http://example.org/foo/bar#%CE%B2",
1460 "origin": "http://example.org",
1461 "protocol": "http:",
1462 "username": "",
1463 "password": "",
1464 "host": "example.org",
1465 "hostname": "example.org",
1466 "port": "",
1467 "pathname": "/foo/bar",
1468 "search": "",
1469 "hash": "#%CE%B2"
1470 },
1471 {
1472 "input": "data:text/html,test#test",
1473 "base": "http://example.org/foo/bar",
1474 "href": "data:text/html,test#test",
1475 "origin": "null",
1476 "protocol": "data:",
1477 "username": "",
1478 "password": "",
1479 "host": "",
1480 "hostname": "",
1481 "port": "",
1482 "pathname": "text/html,test",
1483 "search": "",
1484 "hash": "#test"
1485 },
1486 {
1487 "input": "tel:1234567890",
1488 "base": "http://example.org/foo/bar",
1489 "href": "tel:1234567890",
1490 "origin": "null",
1491 "protocol": "tel:",
1492 "username": "",
1493 "password": "",
1494 "host": "",
1495 "hostname": "",
1496 "port": "",
1497 "pathname": "1234567890",
1498 "search": "",
1499 "hash": ""
1500 },
1501 "# Based on https://felixfbecker.github.io/whatwg-url-custom-host-repro/",
1502 {
1503 "input": "ssh://example.com/foo/bar.git",
1504 "base": "http://example.org/",
1505 "href": "ssh://example.com/foo/bar.git",
1506 "origin": "null",
1507 "protocol": "ssh:",
1508 "username": "",
1509 "password": "",
1510 "host": "example.com",
1511 "hostname": "example.com",
1512 "port": "",
1513 "pathname": "/foo/bar.git",
1514 "search": "",
1515 "hash": ""
1516 },
1517 "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/file.html",
1518 {
1519 "input": "file:c:\\foo\\bar.html",
1520 "base": "file:///tmp/mock/path",
1521 "href": "file:///c:/foo/bar.html",
1522 "protocol": "file:",
1523 "username": "",
1524 "password": "",
1525 "host": "",
1526 "hostname": "",
1527 "port": "",
1528 "pathname": "/c:/foo/bar.html",
1529 "search": "",
1530 "hash": ""
1531 },
1532 {
1533 "input": " File:c|////foo\\bar.html",
1534 "base": "file:///tmp/mock/path",
1535 "href": "file:///c:////foo/bar.html",
1536 "protocol": "file:",
1537 "username": "",
1538 "password": "",
1539 "host": "",
1540 "hostname": "",
1541 "port": "",
1542 "pathname": "/c:////foo/bar.html",
1543 "search": "",
1544 "hash": ""
1545 },
1546 {
1547 "input": "C|/foo/bar",
1548 "base": "file:///tmp/mock/path",
1549 "href": "file:///C:/foo/bar",
1550 "protocol": "file:",
1551 "username": "",
1552 "password": "",
1553 "host": "",
1554 "hostname": "",
1555 "port": "",
1556 "pathname": "/C:/foo/bar",
1557 "search": "",
1558 "hash": ""
1559 },
1560 {
1561 "input": "/C|\\foo\\bar",
1562 "base": "file:///tmp/mock/path",
1563 "href": "file:///C:/foo/bar",
1564 "protocol": "file:",
1565 "username": "",
1566 "password": "",
1567 "host": "",
1568 "hostname": "",
1569 "port": "",
1570 "pathname": "/C:/foo/bar",
1571 "search": "",
1572 "hash": ""
1573 },
1574 {
1575 "input": "//C|/foo/bar",
1576 "base": "file:///tmp/mock/path",
1577 "href": "file:///C:/foo/bar",
1578 "protocol": "file:",
1579 "username": "",
1580 "password": "",
1581 "host": "",
1582 "hostname": "",
1583 "port": "",
1584 "pathname": "/C:/foo/bar",
1585 "search": "",
1586 "hash": ""
1587 },
1588 {
1589 "input": "//server/file",
1590 "base": "file:///tmp/mock/path",
1591 "href": "file://server/file",
1592 "protocol": "file:",
1593 "username": "",
1594 "password": "",
1595 "host": "server",
1596 "hostname": "server",
1597 "port": "",
1598 "pathname": "/file",
1599 "search": "",
1600 "hash": ""
1601 },
1602 {
1603 "input": "\\\\server\\file",
1604 "base": "file:///tmp/mock/path",
1605 "href": "file://server/file",
1606 "protocol": "file:",
1607 "username": "",
1608 "password": "",
1609 "host": "server",
1610 "hostname": "server",
1611 "port": "",
1612 "pathname": "/file",
1613 "search": "",
1614 "hash": ""
1615 },
1616 {
1617 "input": "/\\server/file",
1618 "base": "file:///tmp/mock/path",
1619 "href": "file://server/file",
1620 "protocol": "file:",
1621 "username": "",
1622 "password": "",
1623 "host": "server",
1624 "hostname": "server",
1625 "port": "",
1626 "pathname": "/file",
1627 "search": "",
1628 "hash": ""
1629 },
1630 {
1631 "input": "file:///foo/bar.txt",
1632 "base": "file:///tmp/mock/path",
1633 "href": "file:///foo/bar.txt",
1634 "protocol": "file:",
1635 "username": "",
1636 "password": "",
1637 "host": "",
1638 "hostname": "",
1639 "port": "",
1640 "pathname": "/foo/bar.txt",
1641 "search": "",
1642 "hash": ""
1643 },
1644 {
1645 "input": "file:///home/me",
1646 "base": "file:///tmp/mock/path",
1647 "href": "file:///home/me",
1648 "protocol": "file:",
1649 "username": "",
1650 "password": "",
1651 "host": "",
1652 "hostname": "",
1653 "port": "",
1654 "pathname": "/home/me",
1655 "search": "",
1656 "hash": ""
1657 },
1658 {
1659 "input": "//",
1660 "base": "file:///tmp/mock/path",
1661 "href": "file:///",
1662 "protocol": "file:",
1663 "username": "",
1664 "password": "",
1665 "host": "",
1666 "hostname": "",
1667 "port": "",
1668 "pathname": "/",
1669 "search": "",
1670 "hash": ""
1671 },
1672 {
1673 "input": "///",
1674 "base": "file:///tmp/mock/path",
1675 "href": "file:///",
1676 "protocol": "file:",
1677 "username": "",
1678 "password": "",
1679 "host": "",
1680 "hostname": "",
1681 "port": "",
1682 "pathname": "/",
1683 "search": "",
1684 "hash": ""
1685 },
1686 {
1687 "input": "///test",
1688 "base": "file:///tmp/mock/path",
1689 "href": "file:///test",
1690 "protocol": "file:",
1691 "username": "",
1692 "password": "",
1693 "host": "",
1694 "hostname": "",
1695 "port": "",
1696 "pathname": "/test",
1697 "search": "",
1698 "hash": ""
1699 },
1700 {
1701 "input": "file://test",
1702 "base": "file:///tmp/mock/path",
1703 "href": "file://test/",
1704 "protocol": "file:",
1705 "username": "",
1706 "password": "",
1707 "host": "test",
1708 "hostname": "test",
1709 "port": "",
1710 "pathname": "/",
1711 "search": "",
1712 "hash": ""
1713 },
1714 {
1715 "input": "file://localhost",
1716 "base": "file:///tmp/mock/path",
1717 "href": "file:///",
1718 "protocol": "file:",
1719 "username": "",
1720 "password": "",
1721 "host": "",
1722 "hostname": "",
1723 "port": "",
1724 "pathname": "/",
1725 "search": "",
1726 "hash": ""
1727 },
1728 {
1729 "input": "file://localhost/",
1730 "base": "file:///tmp/mock/path",
1731 "href": "file:///",
1732 "protocol": "file:",
1733 "username": "",
1734 "password": "",
1735 "host": "",
1736 "hostname": "",
1737 "port": "",
1738 "pathname": "/",
1739 "search": "",
1740 "hash": ""
1741 },
1742 {
1743 "input": "file://localhost/test",
1744 "base": "file:///tmp/mock/path",
1745 "href": "file:///test",
1746 "protocol": "file:",
1747 "username": "",
1748 "password": "",
1749 "host": "",
1750 "hostname": "",
1751 "port": "",
1752 "pathname": "/test",
1753 "search": "",
1754 "hash": ""
1755 },
1756 {
1757 "input": "test",
1758 "base": "file:///tmp/mock/path",
1759 "href": "file:///tmp/mock/test",
1760 "protocol": "file:",
1761 "username": "",
1762 "password": "",
1763 "host": "",
1764 "hostname": "",
1765 "port": "",
1766 "pathname": "/tmp/mock/test",
1767 "search": "",
1768 "hash": ""
1769 },
1770 {
1771 "input": "file:test",
1772 "base": "file:///tmp/mock/path",
1773 "href": "file:///tmp/mock/test",
1774 "protocol": "file:",
1775 "username": "",
1776 "password": "",
1777 "host": "",
1778 "hostname": "",
1779 "port": "",
1780 "pathname": "/tmp/mock/test",
1781 "search": "",
1782 "hash": ""
1783 },
1784 {
1785 "input": "file:///w|m",
1786 "base": null,
1787 "href": "file:///w|m",
1788 "protocol": "file:",
1789 "username": "",
1790 "password": "",
1791 "host": "",
1792 "hostname": "",
1793 "port": "",
1794 "pathname": "/w|m",
1795 "search": "",
1796 "hash": ""
1797 },
1798 {
1799 "input": "file:///w||m",
1800 "base": null,
1801 "href": "file:///w||m",
1802 "protocol": "file:",
1803 "username": "",
1804 "password": "",
1805 "host": "",
1806 "hostname": "",
1807 "port": "",
1808 "pathname": "/w||m",
1809 "search": "",
1810 "hash": ""
1811 },
1812 {
1813 "input": "file:///w|/m",
1814 "base": null,
1815 "href": "file:///w:/m",
1816 "protocol": "file:",
1817 "username": "",
1818 "password": "",
1819 "host": "",
1820 "hostname": "",
1821 "port": "",
1822 "pathname": "/w:/m",
1823 "search": "",
1824 "hash": ""
1825 },
1826 {
1827 "input": "file:C|/m/",
1828 "base": null,
1829 "href": "file:///C:/m/",
1830 "protocol": "file:",
1831 "username": "",
1832 "password": "",
1833 "host": "",
1834 "hostname": "",
1835 "port": "",
1836 "pathname": "/C:/m/",
1837 "search": "",
1838 "hash": ""
1839 },
1840 {
1841 "input": "file:C||/m/",
1842 "base": null,
1843 "href": "file:///C||/m/",
1844 "protocol": "file:",
1845 "username": "",
1846 "password": "",
1847 "host": "",
1848 "hostname": "",
1849 "port": "",
1850 "pathname": "/C||/m/",
1851 "search": "",
1852 "hash": ""
1853 },
1854 "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/script-tests/path.js",
1855 {
1856 "input": "http://example.com/././foo",
1857 "base": null,
1858 "href": "http://example.com/foo",
1859 "origin": "http://example.com",
1860 "protocol": "http:",
1861 "username": "",
1862 "password": "",
1863 "host": "example.com",
1864 "hostname": "example.com",
1865 "port": "",
1866 "pathname": "/foo",
1867 "search": "",
1868 "hash": ""
1869 },
1870 {
1871 "input": "http://example.com/./.foo",
1872 "base": null,
1873 "href": "http://example.com/.foo",
1874 "origin": "http://example.com",
1875 "protocol": "http:",
1876 "username": "",
1877 "password": "",
1878 "host": "example.com",
1879 "hostname": "example.com",
1880 "port": "",
1881 "pathname": "/.foo",
1882 "search": "",
1883 "hash": ""
1884 },
1885 {
1886 "input": "http://example.com/foo/.",
1887 "base": null,
1888 "href": "http://example.com/foo/",
1889 "origin": "http://example.com",
1890 "protocol": "http:",
1891 "username": "",
1892 "password": "",
1893 "host": "example.com",
1894 "hostname": "example.com",
1895 "port": "",
1896 "pathname": "/foo/",
1897 "search": "",
1898 "hash": ""
1899 },
1900 {
1901 "input": "http://example.com/foo/./",
1902 "base": null,
1903 "href": "http://example.com/foo/",
1904 "origin": "http://example.com",
1905 "protocol": "http:",
1906 "username": "",
1907 "password": "",
1908 "host": "example.com",
1909 "hostname": "example.com",
1910 "port": "",
1911 "pathname": "/foo/",
1912 "search": "",
1913 "hash": ""
1914 },
1915 {
1916 "input": "http://example.com/foo/bar/..",
1917 "base": null,
1918 "href": "http://example.com/foo/",
1919 "origin": "http://example.com",
1920 "protocol": "http:",
1921 "username": "",
1922 "password": "",
1923 "host": "example.com",
1924 "hostname": "example.com",
1925 "port": "",
1926 "pathname": "/foo/",
1927 "search": "",
1928 "hash": ""
1929 },
1930 {
1931 "input": "http://example.com/foo/bar/../",
1932 "base": null,
1933 "href": "http://example.com/foo/",
1934 "origin": "http://example.com",
1935 "protocol": "http:",
1936 "username": "",
1937 "password": "",
1938 "host": "example.com",
1939 "hostname": "example.com",
1940 "port": "",
1941 "pathname": "/foo/",
1942 "search": "",
1943 "hash": ""
1944 },
1945 {
1946 "input": "http://example.com/foo/..bar",
1947 "base": null,
1948 "href": "http://example.com/foo/..bar",
1949 "origin": "http://example.com",
1950 "protocol": "http:",
1951 "username": "",
1952 "password": "",
1953 "host": "example.com",
1954 "hostname": "example.com",
1955 "port": "",
1956 "pathname": "/foo/..bar",
1957 "search": "",
1958 "hash": ""
1959 },
1960 {
1961 "input": "http://example.com/foo/bar/../ton",
1962 "base": null,
1963 "href": "http://example.com/foo/ton",
1964 "origin": "http://example.com",
1965 "protocol": "http:",
1966 "username": "",
1967 "password": "",
1968 "host": "example.com",
1969 "hostname": "example.com",
1970 "port": "",
1971 "pathname": "/foo/ton",
1972 "search": "",
1973 "hash": ""
1974 },
1975 {
1976 "input": "http://example.com/foo/bar/../ton/../../a",
1977 "base": null,
1978 "href": "http://example.com/a",
1979 "origin": "http://example.com",
1980 "protocol": "http:",
1981 "username": "",
1982 "password": "",
1983 "host": "example.com",
1984 "hostname": "example.com",
1985 "port": "",
1986 "pathname": "/a",
1987 "search": "",
1988 "hash": ""
1989 },
1990 {
1991 "input": "http://example.com/foo/../../..",
1992 "base": null,
1993 "href": "http://example.com/",
1994 "origin": "http://example.com",
1995 "protocol": "http:",
1996 "username": "",
1997 "password": "",
1998 "host": "example.com",
1999 "hostname": "example.com",
2000 "port": "",
2001 "pathname": "/",
2002 "search": "",
2003 "hash": ""
2004 },
2005 {
2006 "input": "http://example.com/foo/../../../ton",
2007 "base": null,
2008 "href": "http://example.com/ton",
2009 "origin": "http://example.com",
2010 "protocol": "http:",
2011 "username": "",
2012 "password": "",
2013 "host": "example.com",
2014 "hostname": "example.com",
2015 "port": "",
2016 "pathname": "/ton",
2017 "search": "",
2018 "hash": ""
2019 },
2020 {
2021 "input": "http://example.com/foo/%2e",
2022 "base": null,
2023 "href": "http://example.com/foo/",
2024 "origin": "http://example.com",
2025 "protocol": "http:",
2026 "username": "",
2027 "password": "",
2028 "host": "example.com",
2029 "hostname": "example.com",
2030 "port": "",
2031 "pathname": "/foo/",
2032 "search": "",
2033 "hash": ""
2034 },
2035 {
2036 "input": "http://example.com/foo/%2e%2",
2037 "base": null,
2038 "href": "http://example.com/foo/%2e%2",
2039 "origin": "http://example.com",
2040 "protocol": "http:",
2041 "username": "",
2042 "password": "",
2043 "host": "example.com",
2044 "hostname": "example.com",
2045 "port": "",
2046 "pathname": "/foo/%2e%2",
2047 "search": "",
2048 "hash": ""
2049 },
2050 {
2051 "input": "http://example.com/foo/%2e./%2e%2e/.%2e/%2e.bar",
2052 "base": null,
2053 "href": "http://example.com/%2e.bar",
2054 "origin": "http://example.com",
2055 "protocol": "http:",
2056 "username": "",
2057 "password": "",
2058 "host": "example.com",
2059 "hostname": "example.com",
2060 "port": "",
2061 "pathname": "/%2e.bar",
2062 "search": "",
2063 "hash": ""
2064 },
2065 {
2066 "input": "http://example.com////../..",
2067 "base": null,
2068 "href": "http://example.com//",
2069 "origin": "http://example.com",
2070 "protocol": "http:",
2071 "username": "",
2072 "password": "",
2073 "host": "example.com",
2074 "hostname": "example.com",
2075 "port": "",
2076 "pathname": "//",
2077 "search": "",
2078 "hash": ""
2079 },
2080 {
2081 "input": "http://example.com/foo/bar//../..",
2082 "base": null,
2083 "href": "http://example.com/foo/",
2084 "origin": "http://example.com",
2085 "protocol": "http:",
2086 "username": "",
2087 "password": "",
2088 "host": "example.com",
2089 "hostname": "example.com",
2090 "port": "",
2091 "pathname": "/foo/",
2092 "search": "",
2093 "hash": ""
2094 },
2095 {
2096 "input": "http://example.com/foo/bar//..",
2097 "base": null,
2098 "href": "http://example.com/foo/bar/",
2099 "origin": "http://example.com",
2100 "protocol": "http:",
2101 "username": "",
2102 "password": "",
2103 "host": "example.com",
2104 "hostname": "example.com",
2105 "port": "",
2106 "pathname": "/foo/bar/",
2107 "search": "",
2108 "hash": ""
2109 },
2110 {
2111 "input": "http://example.com/foo",
2112 "base": null,
2113 "href": "http://example.com/foo",
2114 "origin": "http://example.com",
2115 "protocol": "http:",
2116 "username": "",
2117 "password": "",
2118 "host": "example.com",
2119 "hostname": "example.com",
2120 "port": "",
2121 "pathname": "/foo",
2122 "search": "",
2123 "hash": ""
2124 },
2125 {
2126 "input": "http://example.com/%20foo",
2127 "base": null,
2128 "href": "http://example.com/%20foo",
2129 "origin": "http://example.com",
2130 "protocol": "http:",
2131 "username": "",
2132 "password": "",
2133 "host": "example.com",
2134 "hostname": "example.com",
2135 "port": "",
2136 "pathname": "/%20foo",
2137 "search": "",
2138 "hash": ""
2139 },
2140 {
2141 "input": "http://example.com/foo%",
2142 "base": null,
2143 "href": "http://example.com/foo%",
2144 "origin": "http://example.com",
2145 "protocol": "http:",
2146 "username": "",
2147 "password": "",
2148 "host": "example.com",
2149 "hostname": "example.com",
2150 "port": "",
2151 "pathname": "/foo%",
2152 "search": "",
2153 "hash": ""
2154 },
2155 {
2156 "input": "http://example.com/foo%2",
2157 "base": null,
2158 "href": "http://example.com/foo%2",
2159 "origin": "http://example.com",
2160 "protocol": "http:",
2161 "username": "",
2162 "password": "",
2163 "host": "example.com",
2164 "hostname": "example.com",
2165 "port": "",
2166 "pathname": "/foo%2",
2167 "search": "",
2168 "hash": ""
2169 },
2170 {
2171 "input": "http://example.com/foo%2zbar",
2172 "base": null,
2173 "href": "http://example.com/foo%2zbar",
2174 "origin": "http://example.com",
2175 "protocol": "http:",
2176 "username": "",
2177 "password": "",
2178 "host": "example.com",
2179 "hostname": "example.com",
2180 "port": "",
2181 "pathname": "/foo%2zbar",
2182 "search": "",
2183 "hash": ""
2184 },
2185 {
2186 "input": "http://example.com/foo%2©zbar",
2187 "base": null,
2188 "href": "http://example.com/foo%2%C3%82%C2%A9zbar",
2189 "origin": "http://example.com",
2190 "protocol": "http:",
2191 "username": "",
2192 "password": "",
2193 "host": "example.com",
2194 "hostname": "example.com",
2195 "port": "",
2196 "pathname": "/foo%2%C3%82%C2%A9zbar",
2197 "search": "",
2198 "hash": ""
2199 },
2200 {
2201 "input": "http://example.com/foo%41%7a",
2202 "base": null,
2203 "href": "http://example.com/foo%41%7a",
2204 "origin": "http://example.com",
2205 "protocol": "http:",
2206 "username": "",
2207 "password": "",
2208 "host": "example.com",
2209 "hostname": "example.com",
2210 "port": "",
2211 "pathname": "/foo%41%7a",
2212 "search": "",
2213 "hash": ""
2214 },
2215 {
2216 "input": "http://example.com/foo\t\u0091%91",
2217 "base": null,
2218 "href": "http://example.com/foo%C2%91%91",
2219 "origin": "http://example.com",
2220 "protocol": "http:",
2221 "username": "",
2222 "password": "",
2223 "host": "example.com",
2224 "hostname": "example.com",
2225 "port": "",
2226 "pathname": "/foo%C2%91%91",
2227 "search": "",
2228 "hash": ""
2229 },
2230 {
2231 "input": "http://example.com/foo%00%51",
2232 "base": null,
2233 "href": "http://example.com/foo%00%51",
2234 "origin": "http://example.com",
2235 "protocol": "http:",
2236 "username": "",
2237 "password": "",
2238 "host": "example.com",
2239 "hostname": "example.com",
2240 "port": "",
2241 "pathname": "/foo%00%51",
2242 "search": "",
2243 "hash": ""
2244 },
2245 {
2246 "input": "http://example.com/(%28:%3A%29)",
2247 "base": null,
2248 "href": "http://example.com/(%28:%3A%29)",
2249 "origin": "http://example.com",
2250 "protocol": "http:",
2251 "username": "",
2252 "password": "",
2253 "host": "example.com",
2254 "hostname": "example.com",
2255 "port": "",
2256 "pathname": "/(%28:%3A%29)",
2257 "search": "",
2258 "hash": ""
2259 },
2260 {
2261 "input": "http://example.com/%3A%3a%3C%3c",
2262 "base": null,
2263 "href": "http://example.com/%3A%3a%3C%3c",
2264 "origin": "http://example.com",
2265 "protocol": "http:",
2266 "username": "",
2267 "password": "",
2268 "host": "example.com",
2269 "hostname": "example.com",
2270 "port": "",
2271 "pathname": "/%3A%3a%3C%3c",
2272 "search": "",
2273 "hash": ""
2274 },
2275 {
2276 "input": "http://example.com/foo\tbar",
2277 "base": null,
2278 "href": "http://example.com/foobar",
2279 "origin": "http://example.com",
2280 "protocol": "http:",
2281 "username": "",
2282 "password": "",
2283 "host": "example.com",
2284 "hostname": "example.com",
2285 "port": "",
2286 "pathname": "/foobar",
2287 "search": "",
2288 "hash": ""
2289 },
2290 {
2291 "input": "http://example.com\\\\foo\\\\bar",
2292 "base": null,
2293 "href": "http://example.com//foo//bar",
2294 "origin": "http://example.com",
2295 "protocol": "http:",
2296 "username": "",
2297 "password": "",
2298 "host": "example.com",
2299 "hostname": "example.com",
2300 "port": "",
2301 "pathname": "//foo//bar",
2302 "search": "",
2303 "hash": ""
2304 },
2305 {
2306 "input": "http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd",
2307 "base": null,
2308 "href": "http://example.com/%7Ffp3%3Eju%3Dduvgw%3Dd",
2309 "origin": "http://example.com",
2310 "protocol": "http:",
2311 "username": "",
2312 "password": "",
2313 "host": "example.com",
2314 "hostname": "example.com",
2315 "port": "",
2316 "pathname": "/%7Ffp3%3Eju%3Dduvgw%3Dd",
2317 "search": "",
2318 "hash": ""
2319 },
2320 {
2321 "input": "http://example.com/@asdf%40",
2322 "base": null,
2323 "href": "http://example.com/@asdf%40",
2324 "origin": "http://example.com",
2325 "protocol": "http:",
2326 "username": "",
2327 "password": "",
2328 "host": "example.com",
2329 "hostname": "example.com",
2330 "port": "",
2331 "pathname": "/@asdf%40",
2332 "search": "",
2333 "hash": ""
2334 },
2335 {
2336 "input": "http://example.com/你好你好",
2337 "base": null,
2338 "href": "http://example.com/%E4%BD%A0%E5%A5%BD%E4%BD%A0%E5%A5%BD",
2339 "origin": "http://example.com",
2340 "protocol": "http:",
2341 "username": "",
2342 "password": "",
2343 "host": "example.com",
2344 "hostname": "example.com",
2345 "port": "",
2346 "pathname": "/%E4%BD%A0%E5%A5%BD%E4%BD%A0%E5%A5%BD",
2347 "search": "",
2348 "hash": ""
2349 },
2350 {
2351 "input": "http://example.com/‥/foo",
2352 "base": null,
2353 "href": "http://example.com/%E2%80%A5/foo",
2354 "origin": "http://example.com",
2355 "protocol": "http:",
2356 "username": "",
2357 "password": "",
2358 "host": "example.com",
2359 "hostname": "example.com",
2360 "port": "",
2361 "pathname": "/%E2%80%A5/foo",
2362 "search": "",
2363 "hash": ""
2364 },
2365 {
2366 "input": "http://example.com//foo",
2367 "base": null,
2368 "href": "http://example.com/%EF%BB%BF/foo",
2369 "origin": "http://example.com",
2370 "protocol": "http:",
2371 "username": "",
2372 "password": "",
2373 "host": "example.com",
2374 "hostname": "example.com",
2375 "port": "",
2376 "pathname": "/%EF%BB%BF/foo",
2377 "search": "",
2378 "hash": ""
2379 },
2380 {
2381 "input": "http://example.com/‮/foo/‭/bar",
2382 "base": null,
2383 "href": "http://example.com/%E2%80%AE/foo/%E2%80%AD/bar",
2384 "origin": "http://example.com",
2385 "protocol": "http:",
2386 "username": "",
2387 "password": "",
2388 "host": "example.com",
2389 "hostname": "example.com",
2390 "port": "",
2391 "pathname": "/%E2%80%AE/foo/%E2%80%AD/bar",
2392 "search": "",
2393 "hash": ""
2394 },
2395 "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/script-tests/relative.js",
2396 {
2397 "input": "http://www.google.com/foo?bar=baz#",
2398 "base": null,
2399 "href": "http://www.google.com/foo?bar=baz#",
2400 "origin": "http://www.google.com",
2401 "protocol": "http:",
2402 "username": "",
2403 "password": "",
2404 "host": "www.google.com",
2405 "hostname": "www.google.com",
2406 "port": "",
2407 "pathname": "/foo",
2408 "search": "?bar=baz",
2409 "hash": ""
2410 },
2411 {
2412 "input": "http://www.google.com/foo?bar=baz# »",
2413 "base": null,
2414 "href": "http://www.google.com/foo?bar=baz#%20%C2%BB",
2415 "origin": "http://www.google.com",
2416 "protocol": "http:",
2417 "username": "",
2418 "password": "",
2419 "host": "www.google.com",
2420 "hostname": "www.google.com",
2421 "port": "",
2422 "pathname": "/foo",
2423 "search": "?bar=baz",
2424 "hash": "#%20%C2%BB"
2425 },
2426 {
2427 "input": "data:test# »",
2428 "base": null,
2429 "href": "data:test#%20%C2%BB",
2430 "origin": "null",
2431 "protocol": "data:",
2432 "username": "",
2433 "password": "",
2434 "host": "",
2435 "hostname": "",
2436 "port": "",
2437 "pathname": "test",
2438 "search": "",
2439 "hash": "#%20%C2%BB"
2440 },
2441 {
2442 "input": "http://www.google.com",
2443 "base": null,
2444 "href": "http://www.google.com/",
2445 "origin": "http://www.google.com",
2446 "protocol": "http:",
2447 "username": "",
2448 "password": "",
2449 "host": "www.google.com",
2450 "hostname": "www.google.com",
2451 "port": "",
2452 "pathname": "/",
2453 "search": "",
2454 "hash": ""
2455 },
2456 {
2457 "input": "http://192.0x00A80001",
2458 "base": null,
2459 "href": "http://192.168.0.1/",
2460 "origin": "http://192.168.0.1",
2461 "protocol": "http:",
2462 "username": "",
2463 "password": "",
2464 "host": "192.168.0.1",
2465 "hostname": "192.168.0.1",
2466 "port": "",
2467 "pathname": "/",
2468 "search": "",
2469 "hash": ""
2470 },
2471 {
2472 "input": "http://www/foo%2Ehtml",
2473 "base": null,
2474 "href": "http://www/foo%2Ehtml",
2475 "origin": "http://www",
2476 "protocol": "http:",
2477 "username": "",
2478 "password": "",
2479 "host": "www",
2480 "hostname": "www",
2481 "port": "",
2482 "pathname": "/foo%2Ehtml",
2483 "search": "",
2484 "hash": ""
2485 },
2486 {
2487 "input": "http://www/foo/%2E/html",
2488 "base": null,
2489 "href": "http://www/foo/html",
2490 "origin": "http://www",
2491 "protocol": "http:",
2492 "username": "",
2493 "password": "",
2494 "host": "www",
2495 "hostname": "www",
2496 "port": "",
2497 "pathname": "/foo/html",
2498 "search": "",
2499 "hash": ""
2500 },
2501 {
2502 "input": "http://user:pass@/",
2503 "base": null,
2504 "failure": true
2505 },
2506 {
2507 "input": "http://%25DOMAIN:foobar@foodomain.com/",
2508 "base": null,
2509 "href": "http://%25DOMAIN:foobar@foodomain.com/",
2510 "origin": "http://foodomain.com",
2511 "protocol": "http:",
2512 "username": "%25DOMAIN",
2513 "password": "foobar",
2514 "host": "foodomain.com",
2515 "hostname": "foodomain.com",
2516 "port": "",
2517 "pathname": "/",
2518 "search": "",
2519 "hash": ""
2520 },
2521 {
2522 "input": "http:\\\\www.google.com\\foo",
2523 "base": null,
2524 "href": "http://www.google.com/foo",
2525 "origin": "http://www.google.com",
2526 "protocol": "http:",
2527 "username": "",
2528 "password": "",
2529 "host": "www.google.com",
2530 "hostname": "www.google.com",
2531 "port": "",
2532 "pathname": "/foo",
2533 "search": "",
2534 "hash": ""
2535 },
2536 {
2537 "input": "http://foo:80/",
2538 "base": null,
2539 "href": "http://foo/",
2540 "origin": "http://foo",
2541 "protocol": "http:",
2542 "username": "",
2543 "password": "",
2544 "host": "foo",
2545 "hostname": "foo",
2546 "port": "",
2547 "pathname": "/",
2548 "search": "",
2549 "hash": ""
2550 },
2551 {
2552 "input": "http://foo:81/",
2553 "base": null,
2554 "href": "http://foo:81/",
2555 "origin": "http://foo:81",
2556 "protocol": "http:",
2557 "username": "",
2558 "password": "",
2559 "host": "foo:81",
2560 "hostname": "foo",
2561 "port": "81",
2562 "pathname": "/",
2563 "search": "",
2564 "hash": ""
2565 },
2566 {
2567 "input": "httpa://foo:80/",
2568 "base": null,
2569 "href": "httpa://foo:80/",
2570 "origin": "null",
2571 "protocol": "httpa:",
2572 "username": "",
2573 "password": "",
2574 "host": "foo:80",
2575 "hostname": "foo",
2576 "port": "80",
2577 "pathname": "/",
2578 "search": "",
2579 "hash": ""
2580 },
2581 {
2582 "input": "http://foo:-80/",
2583 "base": null,
2584 "failure": true
2585 },
2586 {
2587 "input": "https://foo:443/",
2588 "base": null,
2589 "href": "https://foo/",
2590 "origin": "https://foo",
2591 "protocol": "https:",
2592 "username": "",
2593 "password": "",
2594 "host": "foo",
2595 "hostname": "foo",
2596 "port": "",
2597 "pathname": "/",
2598 "search": "",
2599 "hash": ""
2600 },
2601 {
2602 "input": "https://foo:80/",
2603 "base": null,
2604 "href": "https://foo:80/",
2605 "origin": "https://foo:80",
2606 "protocol": "https:",
2607 "username": "",
2608 "password": "",
2609 "host": "foo:80",
2610 "hostname": "foo",
2611 "port": "80",
2612 "pathname": "/",
2613 "search": "",
2614 "hash": ""
2615 },
2616 {
2617 "input": "ftp://foo:21/",
2618 "base": null,
2619 "href": "ftp://foo/",
2620 "origin": "ftp://foo",
2621 "protocol": "ftp:",
2622 "username": "",
2623 "password": "",
2624 "host": "foo",
2625 "hostname": "foo",
2626 "port": "",
2627 "pathname": "/",
2628 "search": "",
2629 "hash": ""
2630 },
2631 {
2632 "input": "ftp://foo:80/",
2633 "base": null,
2634 "href": "ftp://foo:80/",
2635 "origin": "ftp://foo:80",
2636 "protocol": "ftp:",
2637 "username": "",
2638 "password": "",
2639 "host": "foo:80",
2640 "hostname": "foo",
2641 "port": "80",
2642 "pathname": "/",
2643 "search": "",
2644 "hash": ""
2645 },
2646 {
2647 "input": "gopher://foo:70/",
2648 "base": null,
2649 "href": "gopher://foo:70/",
2650 "origin": "null",
2651 "protocol": "gopher:",
2652 "username": "",
2653 "password": "",
2654 "host": "foo:70",
2655 "hostname": "foo",
2656 "port": "70",
2657 "pathname": "/",
2658 "search": "",
2659 "hash": ""
2660 },
2661 {
2662 "input": "gopher://foo:443/",
2663 "base": null,
2664 "href": "gopher://foo:443/",
2665 "origin": "null",
2666 "protocol": "gopher:",
2667 "username": "",
2668 "password": "",
2669 "host": "foo:443",
2670 "hostname": "foo",
2671 "port": "443",
2672 "pathname": "/",
2673 "search": "",
2674 "hash": ""
2675 },
2676 {
2677 "input": "ws://foo:80/",
2678 "base": null,
2679 "href": "ws://foo/",
2680 "origin": "ws://foo",
2681 "protocol": "ws:",
2682 "username": "",
2683 "password": "",
2684 "host": "foo",
2685 "hostname": "foo",
2686 "port": "",
2687 "pathname": "/",
2688 "search": "",
2689 "hash": ""
2690 },
2691 {
2692 "input": "ws://foo:81/",
2693 "base": null,
2694 "href": "ws://foo:81/",
2695 "origin": "ws://foo:81",
2696 "protocol": "ws:",
2697 "username": "",
2698 "password": "",
2699 "host": "foo:81",
2700 "hostname": "foo",
2701 "port": "81",
2702 "pathname": "/",
2703 "search": "",
2704 "hash": ""
2705 },
2706 {
2707 "input": "ws://foo:443/",
2708 "base": null,
2709 "href": "ws://foo:443/",
2710 "origin": "ws://foo:443",
2711 "protocol": "ws:",
2712 "username": "",
2713 "password": "",
2714 "host": "foo:443",
2715 "hostname": "foo",
2716 "port": "443",
2717 "pathname": "/",
2718 "search": "",
2719 "hash": ""
2720 },
2721 {
2722 "input": "ws://foo:815/",
2723 "base": null,
2724 "href": "ws://foo:815/",
2725 "origin": "ws://foo:815",
2726 "protocol": "ws:",
2727 "username": "",
2728 "password": "",
2729 "host": "foo:815",
2730 "hostname": "foo",
2731 "port": "815",
2732 "pathname": "/",
2733 "search": "",
2734 "hash": ""
2735 },
2736 {
2737 "input": "wss://foo:80/",
2738 "base": null,
2739 "href": "wss://foo:80/",
2740 "origin": "wss://foo:80",
2741 "protocol": "wss:",
2742 "username": "",
2743 "password": "",
2744 "host": "foo:80",
2745 "hostname": "foo",
2746 "port": "80",
2747 "pathname": "/",
2748 "search": "",
2749 "hash": ""
2750 },
2751 {
2752 "input": "wss://foo:81/",
2753 "base": null,
2754 "href": "wss://foo:81/",
2755 "origin": "wss://foo:81",
2756 "protocol": "wss:",
2757 "username": "",
2758 "password": "",
2759 "host": "foo:81",
2760 "hostname": "foo",
2761 "port": "81",
2762 "pathname": "/",
2763 "search": "",
2764 "hash": ""
2765 },
2766 {
2767 "input": "wss://foo:443/",
2768 "base": null,
2769 "href": "wss://foo/",
2770 "origin": "wss://foo",
2771 "protocol": "wss:",
2772 "username": "",
2773 "password": "",
2774 "host": "foo",
2775 "hostname": "foo",
2776 "port": "",
2777 "pathname": "/",
2778 "search": "",
2779 "hash": ""
2780 },
2781 {
2782 "input": "wss://foo:815/",
2783 "base": null,
2784 "href": "wss://foo:815/",
2785 "origin": "wss://foo:815",
2786 "protocol": "wss:",
2787 "username": "",
2788 "password": "",
2789 "host": "foo:815",
2790 "hostname": "foo",
2791 "port": "815",
2792 "pathname": "/",
2793 "search": "",
2794 "hash": ""
2795 },
2796 {
2797 "input": "http:/example.com/",
2798 "base": null,
2799 "href": "http://example.com/",
2800 "origin": "http://example.com",
2801 "protocol": "http:",
2802 "username": "",
2803 "password": "",
2804 "host": "example.com",
2805 "hostname": "example.com",
2806 "port": "",
2807 "pathname": "/",
2808 "search": "",
2809 "hash": ""
2810 },
2811 {
2812 "input": "ftp:/example.com/",
2813 "base": null,
2814 "href": "ftp://example.com/",
2815 "origin": "ftp://example.com",
2816 "protocol": "ftp:",
2817 "username": "",
2818 "password": "",
2819 "host": "example.com",
2820 "hostname": "example.com",
2821 "port": "",
2822 "pathname": "/",
2823 "search": "",
2824 "hash": ""
2825 },
2826 {
2827 "input": "https:/example.com/",
2828 "base": null,
2829 "href": "https://example.com/",
2830 "origin": "https://example.com",
2831 "protocol": "https:",
2832 "username": "",
2833 "password": "",
2834 "host": "example.com",
2835 "hostname": "example.com",
2836 "port": "",
2837 "pathname": "/",
2838 "search": "",
2839 "hash": ""
2840 },
2841 {
2842 "input": "madeupscheme:/example.com/",
2843 "base": null,
2844 "href": "madeupscheme:/example.com/",
2845 "origin": "null",
2846 "protocol": "madeupscheme:",
2847 "username": "",
2848 "password": "",
2849 "host": "",
2850 "hostname": "",
2851 "port": "",
2852 "pathname": "/example.com/",
2853 "search": "",
2854 "hash": ""
2855 },
2856 {
2857 "input": "file:/example.com/",
2858 "base": null,
2859 "href": "file:///example.com/",
2860 "protocol": "file:",
2861 "username": "",
2862 "password": "",
2863 "host": "",
2864 "hostname": "",
2865 "port": "",
2866 "pathname": "/example.com/",
2867 "search": "",
2868 "hash": ""
2869 },
2870 {
2871 "input": "ftps:/example.com/",
2872 "base": null,
2873 "href": "ftps:/example.com/",
2874 "origin": "null",
2875 "protocol": "ftps:",
2876 "username": "",
2877 "password": "",
2878 "host": "",
2879 "hostname": "",
2880 "port": "",
2881 "pathname": "/example.com/",
2882 "search": "",
2883 "hash": ""
2884 },
2885 {
2886 "input": "gopher:/example.com/",
2887 "base": null,
2888 "href": "gopher:/example.com/",
2889 "origin": "null",
2890 "protocol": "gopher:",
2891 "username": "",
2892 "password": "",
2893 "host": "",
2894 "hostname": "",
2895 "port": "",
2896 "pathname": "/example.com/",
2897 "search": "",
2898 "hash": ""
2899 },
2900 {
2901 "input": "ws:/example.com/",
2902 "base": null,
2903 "href": "ws://example.com/",
2904 "origin": "ws://example.com",
2905 "protocol": "ws:",
2906 "username": "",
2907 "password": "",
2908 "host": "example.com",
2909 "hostname": "example.com",
2910 "port": "",
2911 "pathname": "/",
2912 "search": "",
2913 "hash": ""
2914 },
2915 {
2916 "input": "wss:/example.com/",
2917 "base": null,
2918 "href": "wss://example.com/",
2919 "origin": "wss://example.com",
2920 "protocol": "wss:",
2921 "username": "",
2922 "password": "",
2923 "host": "example.com",
2924 "hostname": "example.com",
2925 "port": "",
2926 "pathname": "/",
2927 "search": "",
2928 "hash": ""
2929 },
2930 {
2931 "input": "data:/example.com/",
2932 "base": null,
2933 "href": "data:/example.com/",
2934 "origin": "null",
2935 "protocol": "data:",
2936 "username": "",
2937 "password": "",
2938 "host": "",
2939 "hostname": "",
2940 "port": "",
2941 "pathname": "/example.com/",
2942 "search": "",
2943 "hash": ""
2944 },
2945 {
2946 "input": "javascript:/example.com/",
2947 "base": null,
2948 "href": "javascript:/example.com/",
2949 "origin": "null",
2950 "protocol": "javascript:",
2951 "username": "",
2952 "password": "",
2953 "host": "",
2954 "hostname": "",
2955 "port": "",
2956 "pathname": "/example.com/",
2957 "search": "",
2958 "hash": ""
2959 },
2960 {
2961 "input": "mailto:/example.com/",
2962 "base": null,
2963 "href": "mailto:/example.com/",
2964 "origin": "null",
2965 "protocol": "mailto:",
2966 "username": "",
2967 "password": "",
2968 "host": "",
2969 "hostname": "",
2970 "port": "",
2971 "pathname": "/example.com/",
2972 "search": "",
2973 "hash": ""
2974 },
2975 {
2976 "input": "http:example.com/",
2977 "base": null,
2978 "href": "http://example.com/",
2979 "origin": "http://example.com",
2980 "protocol": "http:",
2981 "username": "",
2982 "password": "",
2983 "host": "example.com",
2984 "hostname": "example.com",
2985 "port": "",
2986 "pathname": "/",
2987 "search": "",
2988 "hash": ""
2989 },
2990 {
2991 "input": "ftp:example.com/",
2992 "base": null,
2993 "href": "ftp://example.com/",
2994 "origin": "ftp://example.com",
2995 "protocol": "ftp:",
2996 "username": "",
2997 "password": "",
2998 "host": "example.com",
2999 "hostname": "example.com",
3000 "port": "",
3001 "pathname": "/",
3002 "search": "",
3003 "hash": ""
3004 },
3005 {
3006 "input": "https:example.com/",
3007 "base": null,
3008 "href": "https://example.com/",
3009 "origin": "https://example.com",
3010 "protocol": "https:",
3011 "username": "",
3012 "password": "",
3013 "host": "example.com",
3014 "hostname": "example.com",
3015 "port": "",
3016 "pathname": "/",
3017 "search": "",
3018 "hash": ""
3019 },
3020 {
3021 "input": "madeupscheme:example.com/",
3022 "base": null,
3023 "href": "madeupscheme:example.com/",
3024 "origin": "null",
3025 "protocol": "madeupscheme:",
3026 "username": "",
3027 "password": "",
3028 "host": "",
3029 "hostname": "",
3030 "port": "",
3031 "pathname": "example.com/",
3032 "search": "",
3033 "hash": ""
3034 },
3035 {
3036 "input": "ftps:example.com/",
3037 "base": null,
3038 "href": "ftps:example.com/",
3039 "origin": "null",
3040 "protocol": "ftps:",
3041 "username": "",
3042 "password": "",
3043 "host": "",
3044 "hostname": "",
3045 "port": "",
3046 "pathname": "example.com/",
3047 "search": "",
3048 "hash": ""
3049 },
3050 {
3051 "input": "gopher:example.com/",
3052 "base": null,
3053 "href": "gopher:example.com/",
3054 "origin": "null",
3055 "protocol": "gopher:",
3056 "username": "",
3057 "password": "",
3058 "host": "",
3059 "hostname": "",
3060 "port": "",
3061 "pathname": "example.com/",
3062 "search": "",
3063 "hash": ""
3064 },
3065 {
3066 "input": "ws:example.com/",
3067 "base": null,
3068 "href": "ws://example.com/",
3069 "origin": "ws://example.com",
3070 "protocol": "ws:",
3071 "username": "",
3072 "password": "",
3073 "host": "example.com",
3074 "hostname": "example.com",
3075 "port": "",
3076 "pathname": "/",
3077 "search": "",
3078 "hash": ""
3079 },
3080 {
3081 "input": "wss:example.com/",
3082 "base": null,
3083 "href": "wss://example.com/",
3084 "origin": "wss://example.com",
3085 "protocol": "wss:",
3086 "username": "",
3087 "password": "",
3088 "host": "example.com",
3089 "hostname": "example.com",
3090 "port": "",
3091 "pathname": "/",
3092 "search": "",
3093 "hash": ""
3094 },
3095 {
3096 "input": "data:example.com/",
3097 "base": null,
3098 "href": "data:example.com/",
3099 "origin": "null",
3100 "protocol": "data:",
3101 "username": "",
3102 "password": "",
3103 "host": "",
3104 "hostname": "",
3105 "port": "",
3106 "pathname": "example.com/",
3107 "search": "",
3108 "hash": ""
3109 },
3110 {
3111 "input": "javascript:example.com/",
3112 "base": null,
3113 "href": "javascript:example.com/",
3114 "origin": "null",
3115 "protocol": "javascript:",
3116 "username": "",
3117 "password": "",
3118 "host": "",
3119 "hostname": "",
3120 "port": "",
3121 "pathname": "example.com/",
3122 "search": "",
3123 "hash": ""
3124 },
3125 {
3126 "input": "mailto:example.com/",
3127 "base": null,
3128 "href": "mailto:example.com/",
3129 "origin": "null",
3130 "protocol": "mailto:",
3131 "username": "",
3132 "password": "",
3133 "host": "",
3134 "hostname": "",
3135 "port": "",
3136 "pathname": "example.com/",
3137 "search": "",
3138 "hash": ""
3139 },
3140 {
3141 "input": "https://example.com/aaa/bbb/%2e%2e?query",
3142 "base": null,
3143 "href": "https://example.com/aaa/?query",
3144 "origin": "https://example.com",
3145 "protocol": "https:",
3146 "username": "",
3147 "password": "",
3148 "host": "example.com",
3149 "hostname": "example.com",
3150 "port": "",
3151 "pathname": "/aaa/",
3152 "search": "?query",
3153 "hash": ""
3154 },
3155 "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/segments-userinfo-vs-host.html",
3156 {
3157 "input": "http:@www.example.com",
3158 "base": null,
3159 "href": "http://www.example.com/",
3160 "origin": "http://www.example.com",
3161 "protocol": "http:",
3162 "username": "",
3163 "password": "",
3164 "host": "www.example.com",
3165 "hostname": "www.example.com",
3166 "port": "",
3167 "pathname": "/",
3168 "search": "",
3169 "hash": ""
3170 },
3171 {
3172 "input": "http:/@www.example.com",
3173 "base": null,
3174 "href": "http://www.example.com/",
3175 "origin": "http://www.example.com",
3176 "protocol": "http:",
3177 "username": "",
3178 "password": "",
3179 "host": "www.example.com",
3180 "hostname": "www.example.com",
3181 "port": "",
3182 "pathname": "/",
3183 "search": "",
3184 "hash": ""
3185 },
3186 {
3187 "input": "http://@www.example.com",
3188 "base": null,
3189 "href": "http://www.example.com/",
3190 "origin": "http://www.example.com",
3191 "protocol": "http:",
3192 "username": "",
3193 "password": "",
3194 "host": "www.example.com",
3195 "hostname": "www.example.com",
3196 "port": "",
3197 "pathname": "/",
3198 "search": "",
3199 "hash": ""
3200 },
3201 {
3202 "input": "http:a:b@www.example.com",
3203 "base": null,
3204 "href": "http://a:b@www.example.com/",
3205 "origin": "http://www.example.com",
3206 "protocol": "http:",
3207 "username": "a",
3208 "password": "b",
3209 "host": "www.example.com",
3210 "hostname": "www.example.com",
3211 "port": "",
3212 "pathname": "/",
3213 "search": "",
3214 "hash": ""
3215 },
3216 {
3217 "input": "http:/a:b@www.example.com",
3218 "base": null,
3219 "href": "http://a:b@www.example.com/",
3220 "origin": "http://www.example.com",
3221 "protocol": "http:",
3222 "username": "a",
3223 "password": "b",
3224 "host": "www.example.com",
3225 "hostname": "www.example.com",
3226 "port": "",
3227 "pathname": "/",
3228 "search": "",
3229 "hash": ""
3230 },
3231 {
3232 "input": "http://a:b@www.example.com",
3233 "base": null,
3234 "href": "http://a:b@www.example.com/",
3235 "origin": "http://www.example.com",
3236 "protocol": "http:",
3237 "username": "a",
3238 "password": "b",
3239 "host": "www.example.com",
3240 "hostname": "www.example.com",
3241 "port": "",
3242 "pathname": "/",
3243 "search": "",
3244 "hash": ""
3245 },
3246 {
3247 "input": "http://@pple.com",
3248 "base": null,
3249 "href": "http://pple.com/",
3250 "origin": "http://pple.com",
3251 "protocol": "http:",
3252 "username": "",
3253 "password": "",
3254 "host": "pple.com",
3255 "hostname": "pple.com",
3256 "port": "",
3257 "pathname": "/",
3258 "search": "",
3259 "hash": ""
3260 },
3261 {
3262 "input": "http::b@www.example.com",
3263 "base": null,
3264 "href": "http://:b@www.example.com/",
3265 "origin": "http://www.example.com",
3266 "protocol": "http:",
3267 "username": "",
3268 "password": "b",
3269 "host": "www.example.com",
3270 "hostname": "www.example.com",
3271 "port": "",
3272 "pathname": "/",
3273 "search": "",
3274 "hash": ""
3275 },
3276 {
3277 "input": "http:/:b@www.example.com",
3278 "base": null,
3279 "href": "http://:b@www.example.com/",
3280 "origin": "http://www.example.com",
3281 "protocol": "http:",
3282 "username": "",
3283 "password": "b",
3284 "host": "www.example.com",
3285 "hostname": "www.example.com",
3286 "port": "",
3287 "pathname": "/",
3288 "search": "",
3289 "hash": ""
3290 },
3291 {
3292 "input": "http://:b@www.example.com",
3293 "base": null,
3294 "href": "http://:b@www.example.com/",
3295 "origin": "http://www.example.com",
3296 "protocol": "http:",
3297 "username": "",
3298 "password": "b",
3299 "host": "www.example.com",
3300 "hostname": "www.example.com",
3301 "port": "",
3302 "pathname": "/",
3303 "search": "",
3304 "hash": ""
3305 },
3306 {
3307 "input": "http:/:@/www.example.com",
3308 "base": null,
3309 "failure": true,
3310 "relativeTo": "non-opaque-path-base"
3311 },
3312 {
3313 "input": "http://user@/www.example.com",
3314 "base": null,
3315 "failure": true
3316 },
3317 {
3318 "input": "http:@/www.example.com",
3319 "base": null,
3320 "failure": true,
3321 "relativeTo": "non-opaque-path-base"
3322 },
3323 {
3324 "input": "http:/@/www.example.com",
3325 "base": null,
3326 "failure": true,
3327 "relativeTo": "non-opaque-path-base"
3328 },
3329 {
3330 "input": "http://@/www.example.com",
3331 "base": null,
3332 "failure": true
3333 },
3334 {
3335 "input": "https:@/www.example.com",
3336 "base": null,
3337 "failure": true,
3338 "relativeTo": "non-opaque-path-base"
3339 },
3340 {
3341 "input": "http:a:b@/www.example.com",
3342 "base": null,
3343 "failure": true,
3344 "relativeTo": "non-opaque-path-base"
3345 },
3346 {
3347 "input": "http:/a:b@/www.example.com",
3348 "base": null,
3349 "failure": true,
3350 "relativeTo": "non-opaque-path-base"
3351 },
3352 {
3353 "input": "http://a:b@/www.example.com",
3354 "base": null,
3355 "failure": true
3356 },
3357 {
3358 "input": "http::@/www.example.com",
3359 "base": null,
3360 "failure": true,
3361 "relativeTo": "non-opaque-path-base"
3362 },
3363 {
3364 "input": "http:a:@www.example.com",
3365 "base": null,
3366 "href": "http://a@www.example.com/",
3367 "origin": "http://www.example.com",
3368 "protocol": "http:",
3369 "username": "a",
3370 "password": "",
3371 "host": "www.example.com",
3372 "hostname": "www.example.com",
3373 "port": "",
3374 "pathname": "/",
3375 "search": "",
3376 "hash": ""
3377 },
3378 {
3379 "input": "http:/a:@www.example.com",
3380 "base": null,
3381 "href": "http://a@www.example.com/",
3382 "origin": "http://www.example.com",
3383 "protocol": "http:",
3384 "username": "a",
3385 "password": "",
3386 "host": "www.example.com",
3387 "hostname": "www.example.com",
3388 "port": "",
3389 "pathname": "/",
3390 "search": "",
3391 "hash": ""
3392 },
3393 {
3394 "input": "http://a:@www.example.com",
3395 "base": null,
3396 "href": "http://a@www.example.com/",
3397 "origin": "http://www.example.com",
3398 "protocol": "http:",
3399 "username": "a",
3400 "password": "",
3401 "host": "www.example.com",
3402 "hostname": "www.example.com",
3403 "port": "",
3404 "pathname": "/",
3405 "search": "",
3406 "hash": ""
3407 },
3408 {
3409 "input": "http://www.@pple.com",
3410 "base": null,
3411 "href": "http://www.@pple.com/",
3412 "origin": "http://pple.com",
3413 "protocol": "http:",
3414 "username": "www.",
3415 "password": "",
3416 "host": "pple.com",
3417 "hostname": "pple.com",
3418 "port": "",
3419 "pathname": "/",
3420 "search": "",
3421 "hash": ""
3422 },
3423 {
3424 "input": "http:@:www.example.com",
3425 "base": null,
3426 "failure": true,
3427 "relativeTo": "non-opaque-path-base"
3428 },
3429 {
3430 "input": "http:/@:www.example.com",
3431 "base": null,
3432 "failure": true,
3433 "relativeTo": "non-opaque-path-base"
3434 },
3435 {
3436 "input": "http://@:www.example.com",
3437 "base": null,
3438 "failure": true
3439 },
3440 {
3441 "input": "http://:@www.example.com",
3442 "base": null,
3443 "href": "http://www.example.com/",
3444 "origin": "http://www.example.com",
3445 "protocol": "http:",
3446 "username": "",
3447 "password": "",
3448 "host": "www.example.com",
3449 "hostname": "www.example.com",
3450 "port": "",
3451 "pathname": "/",
3452 "search": "",
3453 "hash": ""
3454 },
3455 "# Others",
3456 {
3457 "input": "/",
3458 "base": "http://www.example.com/test",
3459 "href": "http://www.example.com/",
3460 "origin": "http://www.example.com",
3461 "protocol": "http:",
3462 "username": "",
3463 "password": "",
3464 "host": "www.example.com",
3465 "hostname": "www.example.com",
3466 "port": "",
3467 "pathname": "/",
3468 "search": "",
3469 "hash": ""
3470 },
3471 {
3472 "input": "/test.txt",
3473 "base": "http://www.example.com/test",
3474 "href": "http://www.example.com/test.txt",
3475 "origin": "http://www.example.com",
3476 "protocol": "http:",
3477 "username": "",
3478 "password": "",
3479 "host": "www.example.com",
3480 "hostname": "www.example.com",
3481 "port": "",
3482 "pathname": "/test.txt",
3483 "search": "",
3484 "hash": ""
3485 },
3486 {
3487 "input": ".",
3488 "base": "http://www.example.com/test",
3489 "href": "http://www.example.com/",
3490 "origin": "http://www.example.com",
3491 "protocol": "http:",
3492 "username": "",
3493 "password": "",
3494 "host": "www.example.com",
3495 "hostname": "www.example.com",
3496 "port": "",
3497 "pathname": "/",
3498 "search": "",
3499 "hash": ""
3500 },
3501 {
3502 "input": "..",
3503 "base": "http://www.example.com/test",
3504 "href": "http://www.example.com/",
3505 "origin": "http://www.example.com",
3506 "protocol": "http:",
3507 "username": "",
3508 "password": "",
3509 "host": "www.example.com",
3510 "hostname": "www.example.com",
3511 "port": "",
3512 "pathname": "/",
3513 "search": "",
3514 "hash": ""
3515 },
3516 {
3517 "input": "test.txt",
3518 "base": "http://www.example.com/test",
3519 "href": "http://www.example.com/test.txt",
3520 "origin": "http://www.example.com",
3521 "protocol": "http:",
3522 "username": "",
3523 "password": "",
3524 "host": "www.example.com",
3525 "hostname": "www.example.com",
3526 "port": "",
3527 "pathname": "/test.txt",
3528 "search": "",
3529 "hash": ""
3530 },
3531 {
3532 "input": "./test.txt",
3533 "base": "http://www.example.com/test",
3534 "href": "http://www.example.com/test.txt",
3535 "origin": "http://www.example.com",
3536 "protocol": "http:",
3537 "username": "",
3538 "password": "",
3539 "host": "www.example.com",
3540 "hostname": "www.example.com",
3541 "port": "",
3542 "pathname": "/test.txt",
3543 "search": "",
3544 "hash": ""
3545 },
3546 {
3547 "input": "../test.txt",
3548 "base": "http://www.example.com/test",
3549 "href": "http://www.example.com/test.txt",
3550 "origin": "http://www.example.com",
3551 "protocol": "http:",
3552 "username": "",
3553 "password": "",
3554 "host": "www.example.com",
3555 "hostname": "www.example.com",
3556 "port": "",
3557 "pathname": "/test.txt",
3558 "search": "",
3559 "hash": ""
3560 },
3561 {
3562 "input": "../aaa/test.txt",
3563 "base": "http://www.example.com/test",
3564 "href": "http://www.example.com/aaa/test.txt",
3565 "origin": "http://www.example.com",
3566 "protocol": "http:",
3567 "username": "",
3568 "password": "",
3569 "host": "www.example.com",
3570 "hostname": "www.example.com",
3571 "port": "",
3572 "pathname": "/aaa/test.txt",
3573 "search": "",
3574 "hash": ""
3575 },
3576 {
3577 "input": "../../test.txt",
3578 "base": "http://www.example.com/test",
3579 "href": "http://www.example.com/test.txt",
3580 "origin": "http://www.example.com",
3581 "protocol": "http:",
3582 "username": "",
3583 "password": "",
3584 "host": "www.example.com",
3585 "hostname": "www.example.com",
3586 "port": "",
3587 "pathname": "/test.txt",
3588 "search": "",
3589 "hash": ""
3590 },
3591 {
3592 "input": "中/test.txt",
3593 "base": "http://www.example.com/test",
3594 "href": "http://www.example.com/%E4%B8%AD/test.txt",
3595 "origin": "http://www.example.com",
3596 "protocol": "http:",
3597 "username": "",
3598 "password": "",
3599 "host": "www.example.com",
3600 "hostname": "www.example.com",
3601 "port": "",
3602 "pathname": "/%E4%B8%AD/test.txt",
3603 "search": "",
3604 "hash": ""
3605 },
3606 {
3607 "input": "http://www.example2.com",
3608 "base": "http://www.example.com/test",
3609 "href": "http://www.example2.com/",
3610 "origin": "http://www.example2.com",
3611 "protocol": "http:",
3612 "username": "",
3613 "password": "",
3614 "host": "www.example2.com",
3615 "hostname": "www.example2.com",
3616 "port": "",
3617 "pathname": "/",
3618 "search": "",
3619 "hash": ""
3620 },
3621 {
3622 "input": "//www.example2.com",
3623 "base": "http://www.example.com/test",
3624 "href": "http://www.example2.com/",
3625 "origin": "http://www.example2.com",
3626 "protocol": "http:",
3627 "username": "",
3628 "password": "",
3629 "host": "www.example2.com",
3630 "hostname": "www.example2.com",
3631 "port": "",
3632 "pathname": "/",
3633 "search": "",
3634 "hash": ""
3635 },
3636 {
3637 "input": "file:...",
3638 "base": "http://www.example.com/test",
3639 "href": "file:///...",
3640 "protocol": "file:",
3641 "username": "",
3642 "password": "",
3643 "host": "",
3644 "hostname": "",
3645 "port": "",
3646 "pathname": "/...",
3647 "search": "",
3648 "hash": ""
3649 },
3650 {
3651 "input": "file:..",
3652 "base": "http://www.example.com/test",
3653 "href": "file:///",
3654 "protocol": "file:",
3655 "username": "",
3656 "password": "",
3657 "host": "",
3658 "hostname": "",
3659 "port": "",
3660 "pathname": "/",
3661 "search": "",
3662 "hash": ""
3663 },
3664 {
3665 "input": "file:a",
3666 "base": "http://www.example.com/test",
3667 "href": "file:///a",
3668 "protocol": "file:",
3669 "username": "",
3670 "password": "",
3671 "host": "",
3672 "hostname": "",
3673 "port": "",
3674 "pathname": "/a",
3675 "search": "",
3676 "hash": ""
3677 },
3678 {
3679 "input": "file:.",
3680 "base": null,
3681 "href": "file:///",
3682 "protocol": "file:",
3683 "username": "",
3684 "password": "",
3685 "host": "",
3686 "hostname": "",
3687 "port": "",
3688 "pathname": "/",
3689 "search": "",
3690 "hash": ""
3691 },
3692 {
3693 "input": "file:.",
3694 "base": "http://www.example.com/test",
3695 "href": "file:///",
3696 "protocol": "file:",
3697 "username": "",
3698 "password": "",
3699 "host": "",
3700 "hostname": "",
3701 "port": "",
3702 "pathname": "/",
3703 "search": "",
3704 "hash": ""
3705 },
3706 "# Based on http://trac.webkit.org/browser/trunk/LayoutTests/fast/url/host.html",
3707 "Basic canonicalization, uppercase should be converted to lowercase",
3708 {
3709 "input": "http://ExAmPlE.CoM",
3710 "base": "http://other.com/",
3711 "href": "http://example.com/",
3712 "origin": "http://example.com",
3713 "protocol": "http:",
3714 "username": "",
3715 "password": "",
3716 "host": "example.com",
3717 "hostname": "example.com",
3718 "port": "",
3719 "pathname": "/",
3720 "search": "",
3721 "hash": ""
3722 },
3723 {
3724 "input": "http://example example.com",
3725 "base": "http://other.com/",
3726 "failure": true
3727 },
3728 {
3729 "input": "http://Goo%20 goo%7C|.com",
3730 "base": "http://other.com/",
3731 "failure": true
3732 },
3733 {
3734 "input": "http://[]",
3735 "base": "http://other.com/",
3736 "failure": true
3737 },
3738 {
3739 "input": "http://[:]",
3740 "base": "http://other.com/",
3741 "failure": true
3742 },
3743 "U+3000 is mapped to U+0020 (space) which is disallowed",
3744 {
3745 "input": "http://GOO\u00a0\u3000goo.com",
3746 "base": "http://other.com/",
3747 "failure": true
3748 },
3749 "Other types of space (no-break, zero-width, zero-width-no-break) are name-prepped away to nothing. U+200B, U+2060, and U+FEFF, are ignored",
3750 {
3751 "input": "http://GOO\u200b\u2060\ufeffgoo.com",
3752 "base": "http://other.com/",
3753 "href": "http://googoo.com/",
3754 "origin": "http://googoo.com",
3755 "protocol": "http:",
3756 "username": "",
3757 "password": "",
3758 "host": "googoo.com",
3759 "hostname": "googoo.com",
3760 "port": "",
3761 "pathname": "/",
3762 "search": "",
3763 "hash": ""
3764 },
3765 "Leading and trailing C0 control or space",
3766 {
3767 "input": "\u0000\u001b\u0004\u0012 http://example.com/\u001f \u000d ",
3768 "base": null,
3769 "href": "http://example.com/",
3770 "origin": "http://example.com",
3771 "protocol": "http:",
3772 "username": "",
3773 "password": "",
3774 "host": "example.com",
3775 "hostname": "example.com",
3776 "port": "",
3777 "pathname": "/",
3778 "search": "",
3779 "hash": ""
3780 },
3781 {
3782 "input": "non-special:opaque ",
3783 "base": null,
3784 "href": "non-special:opaque",
3785 "origin": "null",
3786 "protocol": "non-special:",
3787 "username": "",
3788 "password": "",
3789 "host": "",
3790 "hostname": "",
3791 "port": "",
3792 "pathname": "opaque",
3793 "search": "",
3794 "hash": ""
3795 },
3796 {
3797 "input": "non-special:opaque ?hi",
3798 "base": null,
3799 "href": "non-special:opaque %20?hi",
3800 "origin": "null",
3801 "protocol": "non-special:",
3802 "username": "",
3803 "password": "",
3804 "host": "",
3805 "hostname": "",
3806 "port": "",
3807 "pathname": "opaque %20",
3808 "search": "?hi",
3809 "hash": ""
3810 },
3811 {
3812 "input": "non-special:opaque #hi",
3813 "base": null,
3814 "href": "non-special:opaque %20#hi",
3815 "origin": "null",
3816 "protocol": "non-special:",
3817 "username": "",
3818 "password": "",
3819 "host": "",
3820 "hostname": "",
3821 "port": "",
3822 "pathname": "opaque %20",
3823 "search": "",
3824 "hash": "#hi"
3825 },
3826 {
3827 "input": "non-special:opaque x?hi",
3828 "base": null,
3829 "href": "non-special:opaque x?hi",
3830 "origin": "null",
3831 "protocol": "non-special:",
3832 "username": "",
3833 "password": "",
3834 "host": "",
3835 "hostname": "",
3836 "port": "",
3837 "pathname": "opaque x",
3838 "search": "?hi",
3839 "hash": ""
3840 },
3841 {
3842 "input": "non-special:opaque x#hi",
3843 "base": null,
3844 "href": "non-special:opaque x#hi",
3845 "origin": "null",
3846 "protocol": "non-special:",
3847 "username": "",
3848 "password": "",
3849 "host": "",
3850 "hostname": "",
3851 "port": "",
3852 "pathname": "opaque x",
3853 "search": "",
3854 "hash": "#hi"
3855 },
3856 {
3857 "input": "non-special:opaque \t\t \t#hi",
3858 "base": null,
3859 "href": "non-special:opaque %20#hi",
3860 "origin": "null",
3861 "protocol": "non-special:",
3862 "username": "",
3863 "password": "",
3864 "host": "",
3865 "hostname": "",
3866 "port": "",
3867 "pathname": "opaque %20",
3868 "search": "",
3869 "hash": "#hi"
3870 },
3871 {
3872 "input": "non-special:opaque \t\t #hi",
3873 "base": null,
3874 "href": "non-special:opaque %20#hi",
3875 "origin": "null",
3876 "protocol": "non-special:",
3877 "username": "",
3878 "password": "",
3879 "host": "",
3880 "hostname": "",
3881 "port": "",
3882 "pathname": "opaque %20",
3883 "search": "",
3884 "hash": "#hi"
3885 },
3886 {
3887 "input": "non-special:opaque\t\t \r #hi",
3888 "base": null,
3889 "href": "non-special:opaque %20#hi",
3890 "origin": "null",
3891 "protocol": "non-special:",
3892 "username": "",
3893 "password": "",
3894 "host": "",
3895 "hostname": "",
3896 "port": "",
3897 "pathname": "opaque %20",
3898 "search": "",
3899 "hash": "#hi"
3900 },
3901 "Ideographic full stop (full-width period for Chinese, etc.) should be treated as a dot. U+3002 is mapped to U+002E (dot)",
3902 {
3903 "input": "http://www.foo。bar.com",
3904 "base": "http://other.com/",
3905 "href": "http://www.foo.bar.com/",
3906 "origin": "http://www.foo.bar.com",
3907 "protocol": "http:",
3908 "username": "",
3909 "password": "",
3910 "host": "www.foo.bar.com",
3911 "hostname": "www.foo.bar.com",
3912 "port": "",
3913 "pathname": "/",
3914 "search": "",
3915 "hash": ""
3916 },
3917 "Invalid unicode characters should fail... U+FDD0 is disallowed; %ef%b7%90 is U+FDD0",
3918 {
3919 "input": "http://\ufdd0zyx.com",
3920 "base": "http://other.com/",
3921 "failure": true
3922 },
3923 "This is the same as previous but escaped",
3924 {
3925 "input": "http://%ef%b7%90zyx.com",
3926 "base": "http://other.com/",
3927 "failure": true
3928 },
3929 "U+FFFD",
3930 {
3931 "input": "https://\ufffd",
3932 "base": null,
3933 "failure": true
3934 },
3935 {
3936 "input": "https://%EF%BF%BD",
3937 "base": null,
3938 "failure": true
3939 },
3940 {
3941 "input": "https://x/\ufffd?\ufffd#\ufffd",
3942 "base": null,
3943 "href": "https://x/%EF%BF%BD?%EF%BF%BD#%EF%BF%BD",
3944 "origin": "https://x",
3945 "protocol": "https:",
3946 "username": "",
3947 "password": "",
3948 "host": "x",
3949 "hostname": "x",
3950 "port": "",
3951 "pathname": "/%EF%BF%BD",
3952 "search": "?%EF%BF%BD",
3953 "hash": "#%EF%BF%BD"
3954 },
3955 "Domain is ASCII, but a label is invalid IDNA",
3956 {
3957 "input": "http://a.b.c.xn--pokxncvks",
3958 "base": null,
3959 "failure": true
3960 },
3961 {
3962 "input": "http://10.0.0.xn--pokxncvks",
3963 "base": null,
3964 "failure": true
3965 },
3966 "IDNA labels should be matched case-insensitively",
3967 {
3968 "input": "http://a.b.c.XN--pokxncvks",
3969 "base": null,
3970 "failure": true
3971 },
3972 {
3973 "input": "http://a.b.c.Xn--pokxncvks",
3974 "base": null,
3975 "failure": true
3976 },
3977 {
3978 "input": "http://10.0.0.XN--pokxncvks",
3979 "base": null,
3980 "failure": true
3981 },
3982 {
3983 "input": "http://10.0.0.xN--pokxncvks",
3984 "base": null,
3985 "failure": true
3986 },
3987 "Test name prepping, fullwidth input should be converted to ASCII and NOT IDN-ized. This is 'Go' in fullwidth UTF-8/UTF-16.",
3988 {
3989 "input": "http://Go.com",
3990 "base": "http://other.com/",
3991 "href": "http://go.com/",
3992 "origin": "http://go.com",
3993 "protocol": "http:",
3994 "username": "",
3995 "password": "",
3996 "host": "go.com",
3997 "hostname": "go.com",
3998 "port": "",
3999 "pathname": "/",
4000 "search": "",
4001 "hash": ""
4002 },
4003 "URL spec forbids the following. https://www.w3.org/Bugs/Public/show_bug.cgi?id=24257",
4004 {
4005 "input": "http://%41.com",
4006 "base": "http://other.com/",
4007 "failure": true
4008 },
4009 {
4010 "input": "http://%ef%bc%85%ef%bc%94%ef%bc%91.com",
4011 "base": "http://other.com/",
4012 "failure": true
4013 },
4014 "...%00 in fullwidth should fail (also as escaped UTF-8 input)",
4015 {
4016 "input": "http://%00.com",
4017 "base": "http://other.com/",
4018 "failure": true
4019 },
4020 {
4021 "input": "http://%ef%bc%85%ef%bc%90%ef%bc%90.com",
4022 "base": "http://other.com/",
4023 "failure": true
4024 },
4025 "Basic IDN support, UTF-8 and UTF-16 input should be converted to IDN",
4026 {
4027 "input": "http://你好你好",
4028 "base": "http://other.com/",
4029 "href": "http://xn--6qqa088eba/",
4030 "origin": "http://xn--6qqa088eba",
4031 "protocol": "http:",
4032 "username": "",
4033 "password": "",
4034 "host": "xn--6qqa088eba",
4035 "hostname": "xn--6qqa088eba",
4036 "port": "",
4037 "pathname": "/",
4038 "search": "",
4039 "hash": ""
4040 },
4041 {
4042 "input": "https://faß.ExAmPlE/",
4043 "base": null,
4044 "href": "https://xn--fa-hia.example/",
4045 "origin": "https://xn--fa-hia.example",
4046 "protocol": "https:",
4047 "username": "",
4048 "password": "",
4049 "host": "xn--fa-hia.example",
4050 "hostname": "xn--fa-hia.example",
4051 "port": "",
4052 "pathname": "/",
4053 "search": "",
4054 "hash": ""
4055 },
4056 {
4057 "input": "sc://faß.ExAmPlE/",
4058 "base": null,
4059 "href": "sc://fa%C3%9F.ExAmPlE/",
4060 "origin": "null",
4061 "protocol": "sc:",
4062 "username": "",
4063 "password": "",
4064 "host": "fa%C3%9F.ExAmPlE",
4065 "hostname": "fa%C3%9F.ExAmPlE",
4066 "port": "",
4067 "pathname": "/",
4068 "search": "",
4069 "hash": ""
4070 },
4071 "Invalid escaped characters should fail and the percents should be escaped. https://www.w3.org/Bugs/Public/show_bug.cgi?id=24191",
4072 {
4073 "input": "http://%zz%66%a.com",
4074 "base": "http://other.com/",
4075 "failure": true
4076 },
4077 "If we get an invalid character that has been escaped.",
4078 {
4079 "input": "http://%25",
4080 "base": "http://other.com/",
4081 "failure": true
4082 },
4083 {
4084 "input": "http://hello%00",
4085 "base": "http://other.com/",
4086 "failure": true
4087 },
4088 "Escaped numbers should be treated like IP addresses if they are.",
4089 {
4090 "input": "http://%30%78%63%30%2e%30%32%35%30.01",
4091 "base": "http://other.com/",
4092 "href": "http://192.168.0.1/",
4093 "origin": "http://192.168.0.1",
4094 "protocol": "http:",
4095 "username": "",
4096 "password": "",
4097 "host": "192.168.0.1",
4098 "hostname": "192.168.0.1",
4099 "port": "",
4100 "pathname": "/",
4101 "search": "",
4102 "hash": ""
4103 },
4104 {
4105 "input": "http://%30%78%63%30%2e%30%32%35%30.01%2e",
4106 "base": "http://other.com/",
4107 "href": "http://192.168.0.1/",
4108 "origin": "http://192.168.0.1",
4109 "protocol": "http:",
4110 "username": "",
4111 "password": "",
4112 "host": "192.168.0.1",
4113 "hostname": "192.168.0.1",
4114 "port": "",
4115 "pathname": "/",
4116 "search": "",
4117 "hash": ""
4118 },
4119 {
4120 "input": "http://192.168.0.257",
4121 "base": "http://other.com/",
4122 "failure": true
4123 },
4124 "Invalid escaping in hosts causes failure",
4125 {
4126 "input": "http://%3g%78%63%30%2e%30%32%35%30%2E.01",
4127 "base": "http://other.com/",
4128 "failure": true
4129 },
4130 "A space in a host causes failure",
4131 {
4132 "input": "http://192.168.0.1 hello",
4133 "base": "http://other.com/",
4134 "failure": true
4135 },
4136 {
4137 "input": "https://x x:12",
4138 "base": null,
4139 "failure": true
4140 },
4141 "Fullwidth and escaped UTF-8 fullwidth should still be treated as IP",
4142 {
4143 "input": "http://0Xc0.0250.01",
4144 "base": "http://other.com/",
4145 "href": "http://192.168.0.1/",
4146 "origin": "http://192.168.0.1",
4147 "protocol": "http:",
4148 "username": "",
4149 "password": "",
4150 "host": "192.168.0.1",
4151 "hostname": "192.168.0.1",
4152 "port": "",
4153 "pathname": "/",
4154 "search": "",
4155 "hash": ""
4156 },
4157 "Domains with empty labels",
4158 {
4159 "input": "http://./",
4160 "base": null,
4161 "href": "http://./",
4162 "origin": "http://.",
4163 "protocol": "http:",
4164 "username": "",
4165 "password": "",
4166 "host": ".",
4167 "hostname": ".",
4168 "port": "",
4169 "pathname": "/",
4170 "search": "",
4171 "hash": ""
4172 },
4173 {
4174 "input": "http://../",
4175 "base": null,
4176 "href": "http://../",
4177 "origin": "http://..",
4178 "protocol": "http:",
4179 "username": "",
4180 "password": "",
4181 "host": "..",
4182 "hostname": "..",
4183 "port": "",
4184 "pathname": "/",
4185 "search": "",
4186 "hash": ""
4187 },
4188 "Non-special domains with empty labels",
4189 {
4190 "input": "h://.",
4191 "base": null,
4192 "href": "h://.",
4193 "origin": "null",
4194 "protocol": "h:",
4195 "username": "",
4196 "password": "",
4197 "host": ".",
4198 "hostname": ".",
4199 "port": "",
4200 "pathname": "",
4201 "search": "",
4202 "hash": ""
4203 },
4204 "Broken IPv6",
4205 {
4206 "input": "http://[www.google.com]/",
4207 "base": null,
4208 "failure": true
4209 },
4210 {
4211 "input": "http://[google.com]",
4212 "base": "http://other.com/",
4213 "failure": true
4214 },
4215 {
4216 "input": "http://[::1.2.3.4x]",
4217 "base": "http://other.com/",
4218 "failure": true
4219 },
4220 {
4221 "input": "http://[::1.2.3.]",
4222 "base": "http://other.com/",
4223 "failure": true
4224 },
4225 {
4226 "input": "http://[::1.2.]",
4227 "base": "http://other.com/",
4228 "failure": true
4229 },
4230 {
4231 "input": "http://[::.1.2]",
4232 "base": "http://other.com/",
4233 "failure": true
4234 },
4235 {
4236 "input": "http://[::1.]",
4237 "base": "http://other.com/",
4238 "failure": true
4239 },
4240 {
4241 "input": "http://[::.1]",
4242 "base": "http://other.com/",
4243 "failure": true
4244 },
4245 {
4246 "input": "http://[::%31]",
4247 "base": "http://other.com/",
4248 "failure": true
4249 },
4250 {
4251 "input": "http://%5B::1]",
4252 "base": "http://other.com/",
4253 "failure": true
4254 },
4255 "Misc Unicode",
4256 {
4257 "input": "http://foo:💩@example.com/bar",
4258 "base": "http://other.com/",
4259 "href": "http://foo:%F0%9F%92%A9@example.com/bar",
4260 "origin": "http://example.com",
4261 "protocol": "http:",
4262 "username": "foo",
4263 "password": "%F0%9F%92%A9",
4264 "host": "example.com",
4265 "hostname": "example.com",
4266 "port": "",
4267 "pathname": "/bar",
4268 "search": "",
4269 "hash": ""
4270 },
4271 "# resolving a fragment against any scheme succeeds",
4272 {
4273 "input": "#",
4274 "base": "test:test",
4275 "href": "test:test#",
4276 "origin": "null",
4277 "protocol": "test:",
4278 "username": "",
4279 "password": "",
4280 "host": "",
4281 "hostname": "",
4282 "port": "",
4283 "pathname": "test",
4284 "search": "",
4285 "hash": ""
4286 },
4287 {
4288 "input": "#x",
4289 "base": "mailto:x@x.com",
4290 "href": "mailto:x@x.com#x",
4291 "origin": "null",
4292 "protocol": "mailto:",
4293 "username": "",
4294 "password": "",
4295 "host": "",
4296 "hostname": "",
4297 "port": "",
4298 "pathname": "x@x.com",
4299 "search": "",
4300 "hash": "#x"
4301 },
4302 {
4303 "input": "#x",
4304 "base": "data:,",
4305 "href": "data:,#x",
4306 "origin": "null",
4307 "protocol": "data:",
4308 "username": "",
4309 "password": "",
4310 "host": "",
4311 "hostname": "",
4312 "port": "",
4313 "pathname": ",",
4314 "search": "",
4315 "hash": "#x"
4316 },
4317 {
4318 "input": "#x",
4319 "base": "about:blank",
4320 "href": "about:blank#x",
4321 "origin": "null",
4322 "protocol": "about:",
4323 "username": "",
4324 "password": "",
4325 "host": "",
4326 "hostname": "",
4327 "port": "",
4328 "pathname": "blank",
4329 "search": "",
4330 "hash": "#x"
4331 },
4332 {
4333 "input": "#x:y",
4334 "base": "about:blank",
4335 "href": "about:blank#x:y",
4336 "origin": "null",
4337 "protocol": "about:",
4338 "username": "",
4339 "password": "",
4340 "host": "",
4341 "hostname": "",
4342 "port": "",
4343 "pathname": "blank",
4344 "search": "",
4345 "hash": "#x:y"
4346 },
4347 {
4348 "input": "#",
4349 "base": "test:test?test",
4350 "href": "test:test?test#",
4351 "origin": "null",
4352 "protocol": "test:",
4353 "username": "",
4354 "password": "",
4355 "host": "",
4356 "hostname": "",
4357 "port": "",
4358 "pathname": "test",
4359 "search": "?test",
4360 "hash": ""
4361 },
4362 "# multiple @ in authority state",
4363 {
4364 "input": "https://@test@test@example:800/",
4365 "base": "http://doesnotmatter/",
4366 "href": "https://%40test%40test@example:800/",
4367 "origin": "https://example:800",
4368 "protocol": "https:",
4369 "username": "%40test%40test",
4370 "password": "",
4371 "host": "example:800",
4372 "hostname": "example",
4373 "port": "800",
4374 "pathname": "/",
4375 "search": "",
4376 "hash": ""
4377 },
4378 {
4379 "input": "https://@@@example",
4380 "base": "http://doesnotmatter/",
4381 "href": "https://%40%40@example/",
4382 "origin": "https://example",
4383 "protocol": "https:",
4384 "username": "%40%40",
4385 "password": "",
4386 "host": "example",
4387 "hostname": "example",
4388 "port": "",
4389 "pathname": "/",
4390 "search": "",
4391 "hash": ""
4392 },
4393 "non-az-09 characters",
4394 {
4395 "input": "http://`{}:`{}@h/`{}?`{}",
4396 "base": "http://doesnotmatter/",
4397 "href": "http://%60%7B%7D:%60%7B%7D@h/%60%7B%7D?`{}",
4398 "origin": "http://h",
4399 "protocol": "http:",
4400 "username": "%60%7B%7D",
4401 "password": "%60%7B%7D",
4402 "host": "h",
4403 "hostname": "h",
4404 "port": "",
4405 "pathname": "/%60%7B%7D",
4406 "search": "?`{}",
4407 "hash": ""
4408 },
4409 "byte is ' and url is special",
4410 {
4411 "input": "http://host/?'",
4412 "base": null,
4413 "href": "http://host/?%27",
4414 "origin": "http://host",
4415 "protocol": "http:",
4416 "username": "",
4417 "password": "",
4418 "host": "host",
4419 "hostname": "host",
4420 "port": "",
4421 "pathname": "/",
4422 "search": "?%27",
4423 "hash": ""
4424 },
4425 {
4426 "input": "notspecial://host/?'",
4427 "base": null,
4428 "href": "notspecial://host/?'",
4429 "origin": "null",
4430 "protocol": "notspecial:",
4431 "username": "",
4432 "password": "",
4433 "host": "host",
4434 "hostname": "host",
4435 "port": "",
4436 "pathname": "/",
4437 "search": "?'",
4438 "hash": ""
4439 },
4440 "# Credentials in base",
4441 {
4442 "input": "/some/path",
4443 "base": "http://user@example.org/smth",
4444 "href": "http://user@example.org/some/path",
4445 "origin": "http://example.org",
4446 "protocol": "http:",
4447 "username": "user",
4448 "password": "",
4449 "host": "example.org",
4450 "hostname": "example.org",
4451 "port": "",
4452 "pathname": "/some/path",
4453 "search": "",
4454 "hash": ""
4455 },
4456 {
4457 "input": "",
4458 "base": "http://user:pass@example.org:21/smth",
4459 "href": "http://user:pass@example.org:21/smth",
4460 "origin": "http://example.org:21",
4461 "protocol": "http:",
4462 "username": "user",
4463 "password": "pass",
4464 "host": "example.org:21",
4465 "hostname": "example.org",
4466 "port": "21",
4467 "pathname": "/smth",
4468 "search": "",
4469 "hash": ""
4470 },
4471 {
4472 "input": "/some/path",
4473 "base": "http://user:pass@example.org:21/smth",
4474 "href": "http://user:pass@example.org:21/some/path",
4475 "origin": "http://example.org:21",
4476 "protocol": "http:",
4477 "username": "user",
4478 "password": "pass",
4479 "host": "example.org:21",
4480 "hostname": "example.org",
4481 "port": "21",
4482 "pathname": "/some/path",
4483 "search": "",
4484 "hash": ""
4485 },
4486 "# a set of tests designed by zcorpan for relative URLs with unknown schemes",
4487 {
4488 "input": "i",
4489 "base": "sc:sd",
4490 "failure": true
4491 },
4492 {
4493 "input": "i",
4494 "base": "sc:sd/sd",
4495 "failure": true
4496 },
4497 {
4498 "input": "i",
4499 "base": "sc:/pa/pa",
4500 "href": "sc:/pa/i",
4501 "origin": "null",
4502 "protocol": "sc:",
4503 "username": "",
4504 "password": "",
4505 "host": "",
4506 "hostname": "",
4507 "port": "",
4508 "pathname": "/pa/i",
4509 "search": "",
4510 "hash": ""
4511 },
4512 {
4513 "input": "i",
4514 "base": "sc://ho/pa",
4515 "href": "sc://ho/i",
4516 "origin": "null",
4517 "protocol": "sc:",
4518 "username": "",
4519 "password": "",
4520 "host": "ho",
4521 "hostname": "ho",
4522 "port": "",
4523 "pathname": "/i",
4524 "search": "",
4525 "hash": ""
4526 },
4527 {
4528 "input": "i",
4529 "base": "sc:///pa/pa",
4530 "href": "sc:///pa/i",
4531 "origin": "null",
4532 "protocol": "sc:",
4533 "username": "",
4534 "password": "",
4535 "host": "",
4536 "hostname": "",
4537 "port": "",
4538 "pathname": "/pa/i",
4539 "search": "",
4540 "hash": ""
4541 },
4542 {
4543 "input": "../i",
4544 "base": "sc:sd",
4545 "failure": true
4546 },
4547 {
4548 "input": "../i",
4549 "base": "sc:sd/sd",
4550 "failure": true
4551 },
4552 {
4553 "input": "../i",
4554 "base": "sc:/pa/pa",
4555 "href": "sc:/i",
4556 "origin": "null",
4557 "protocol": "sc:",
4558 "username": "",
4559 "password": "",
4560 "host": "",
4561 "hostname": "",
4562 "port": "",
4563 "pathname": "/i",
4564 "search": "",
4565 "hash": ""
4566 },
4567 {
4568 "input": "../i",
4569 "base": "sc://ho/pa",
4570 "href": "sc://ho/i",
4571 "origin": "null",
4572 "protocol": "sc:",
4573 "username": "",
4574 "password": "",
4575 "host": "ho",
4576 "hostname": "ho",
4577 "port": "",
4578 "pathname": "/i",
4579 "search": "",
4580 "hash": ""
4581 },
4582 {
4583 "input": "../i",
4584 "base": "sc:///pa/pa",
4585 "href": "sc:///i",
4586 "origin": "null",
4587 "protocol": "sc:",
4588 "username": "",
4589 "password": "",
4590 "host": "",
4591 "hostname": "",
4592 "port": "",
4593 "pathname": "/i",
4594 "search": "",
4595 "hash": ""
4596 },
4597 {
4598 "input": "/i",
4599 "base": "sc:sd",
4600 "failure": true
4601 },
4602 {
4603 "input": "/i",
4604 "base": "sc:sd/sd",
4605 "failure": true
4606 },
4607 {
4608 "input": "/i",
4609 "base": "sc:/pa/pa",
4610 "href": "sc:/i",
4611 "origin": "null",
4612 "protocol": "sc:",
4613 "username": "",
4614 "password": "",
4615 "host": "",
4616 "hostname": "",
4617 "port": "",
4618 "pathname": "/i",
4619 "search": "",
4620 "hash": ""
4621 },
4622 {
4623 "input": "/i",
4624 "base": "sc://ho/pa",
4625 "href": "sc://ho/i",
4626 "origin": "null",
4627 "protocol": "sc:",
4628 "username": "",
4629 "password": "",
4630 "host": "ho",
4631 "hostname": "ho",
4632 "port": "",
4633 "pathname": "/i",
4634 "search": "",
4635 "hash": ""
4636 },
4637 {
4638 "input": "/i",
4639 "base": "sc:///pa/pa",
4640 "href": "sc:///i",
4641 "origin": "null",
4642 "protocol": "sc:",
4643 "username": "",
4644 "password": "",
4645 "host": "",
4646 "hostname": "",
4647 "port": "",
4648 "pathname": "/i",
4649 "search": "",
4650 "hash": ""
4651 },
4652 {
4653 "input": "?i",
4654 "base": "sc:sd",
4655 "failure": true
4656 },
4657 {
4658 "input": "?i",
4659 "base": "sc:sd/sd",
4660 "failure": true
4661 },
4662 {
4663 "input": "?i",
4664 "base": "sc:/pa/pa",
4665 "href": "sc:/pa/pa?i",
4666 "origin": "null",
4667 "protocol": "sc:",
4668 "username": "",
4669 "password": "",
4670 "host": "",
4671 "hostname": "",
4672 "port": "",
4673 "pathname": "/pa/pa",
4674 "search": "?i",
4675 "hash": ""
4676 },
4677 {
4678 "input": "?i",
4679 "base": "sc://ho/pa",
4680 "href": "sc://ho/pa?i",
4681 "origin": "null",
4682 "protocol": "sc:",
4683 "username": "",
4684 "password": "",
4685 "host": "ho",
4686 "hostname": "ho",
4687 "port": "",
4688 "pathname": "/pa",
4689 "search": "?i",
4690 "hash": ""
4691 },
4692 {
4693 "input": "?i",
4694 "base": "sc:///pa/pa",
4695 "href": "sc:///pa/pa?i",
4696 "origin": "null",
4697 "protocol": "sc:",
4698 "username": "",
4699 "password": "",
4700 "host": "",
4701 "hostname": "",
4702 "port": "",
4703 "pathname": "/pa/pa",
4704 "search": "?i",
4705 "hash": ""
4706 },
4707 {
4708 "input": "#i",
4709 "base": "sc:sd",
4710 "href": "sc:sd#i",
4711 "origin": "null",
4712 "protocol": "sc:",
4713 "username": "",
4714 "password": "",
4715 "host": "",
4716 "hostname": "",
4717 "port": "",
4718 "pathname": "sd",
4719 "search": "",
4720 "hash": "#i"
4721 },
4722 {
4723 "input": "#i",
4724 "base": "sc:sd/sd",
4725 "href": "sc:sd/sd#i",
4726 "origin": "null",
4727 "protocol": "sc:",
4728 "username": "",
4729 "password": "",
4730 "host": "",
4731 "hostname": "",
4732 "port": "",
4733 "pathname": "sd/sd",
4734 "search": "",
4735 "hash": "#i"
4736 },
4737 {
4738 "input": "#i",
4739 "base": "sc:/pa/pa",
4740 "href": "sc:/pa/pa#i",
4741 "origin": "null",
4742 "protocol": "sc:",
4743 "username": "",
4744 "password": "",
4745 "host": "",
4746 "hostname": "",
4747 "port": "",
4748 "pathname": "/pa/pa",
4749 "search": "",
4750 "hash": "#i"
4751 },
4752 {
4753 "input": "#i",
4754 "base": "sc://ho/pa",
4755 "href": "sc://ho/pa#i",
4756 "origin": "null",
4757 "protocol": "sc:",
4758 "username": "",
4759 "password": "",
4760 "host": "ho",
4761 "hostname": "ho",
4762 "port": "",
4763 "pathname": "/pa",
4764 "search": "",
4765 "hash": "#i"
4766 },
4767 {
4768 "input": "#i",
4769 "base": "sc:///pa/pa",
4770 "href": "sc:///pa/pa#i",
4771 "origin": "null",
4772 "protocol": "sc:",
4773 "username": "",
4774 "password": "",
4775 "host": "",
4776 "hostname": "",
4777 "port": "",
4778 "pathname": "/pa/pa",
4779 "search": "",
4780 "hash": "#i"
4781 },
4782 "# make sure that relative URL logic works on known typically non-relative schemes too",
4783 {
4784 "input": "about:/../",
4785 "base": null,
4786 "href": "about:/",
4787 "origin": "null",
4788 "protocol": "about:",
4789 "username": "",
4790 "password": "",
4791 "host": "",
4792 "hostname": "",
4793 "port": "",
4794 "pathname": "/",
4795 "search": "",
4796 "hash": ""
4797 },
4798 {
4799 "input": "data:/../",
4800 "base": null,
4801 "href": "data:/",
4802 "origin": "null",
4803 "protocol": "data:",
4804 "username": "",
4805 "password": "",
4806 "host": "",
4807 "hostname": "",
4808 "port": "",
4809 "pathname": "/",
4810 "search": "",
4811 "hash": ""
4812 },
4813 {
4814 "input": "javascript:/../",
4815 "base": null,
4816 "href": "javascript:/",
4817 "origin": "null",
4818 "protocol": "javascript:",
4819 "username": "",
4820 "password": "",
4821 "host": "",
4822 "hostname": "",
4823 "port": "",
4824 "pathname": "/",
4825 "search": "",
4826 "hash": ""
4827 },
4828 {
4829 "input": "mailto:/../",
4830 "base": null,
4831 "href": "mailto:/",
4832 "origin": "null",
4833 "protocol": "mailto:",
4834 "username": "",
4835 "password": "",
4836 "host": "",
4837 "hostname": "",
4838 "port": "",
4839 "pathname": "/",
4840 "search": "",
4841 "hash": ""
4842 },
4843 "# unknown schemes and their hosts",
4844 {
4845 "input": "sc://ñ.test/",
4846 "base": null,
4847 "href": "sc://%C3%B1.test/",
4848 "origin": "null",
4849 "protocol": "sc:",
4850 "username": "",
4851 "password": "",
4852 "host": "%C3%B1.test",
4853 "hostname": "%C3%B1.test",
4854 "port": "",
4855 "pathname": "/",
4856 "search": "",
4857 "hash": ""
4858 },
4859 {
4860 "input": "sc://%/",
4861 "base": null,
4862 "href": "sc://%/",
4863 "protocol": "sc:",
4864 "username": "",
4865 "password": "",
4866 "host": "%",
4867 "hostname": "%",
4868 "port": "",
4869 "pathname": "/",
4870 "search": "",
4871 "hash": ""
4872 },
4873 {
4874 "input": "sc://@/",
4875 "base": null,
4876 "failure": true
4877 },
4878 {
4879 "input": "sc://te@s:t@/",
4880 "base": null,
4881 "failure": true
4882 },
4883 {
4884 "input": "sc://:/",
4885 "base": null,
4886 "failure": true
4887 },
4888 {
4889 "input": "sc://:12/",
4890 "base": null,
4891 "failure": true
4892 },
4893 {
4894 "input": "x",
4895 "base": "sc://ñ",
4896 "href": "sc://%C3%B1/x",
4897 "origin": "null",
4898 "protocol": "sc:",
4899 "username": "",
4900 "password": "",
4901 "host": "%C3%B1",
4902 "hostname": "%C3%B1",
4903 "port": "",
4904 "pathname": "/x",
4905 "search": "",
4906 "hash": ""
4907 },
4908 "# unknown schemes and backslashes",
4909 {
4910 "input": "sc:\\../",
4911 "base": null,
4912 "href": "sc:\\../",
4913 "origin": "null",
4914 "protocol": "sc:",
4915 "username": "",
4916 "password": "",
4917 "host": "",
4918 "hostname": "",
4919 "port": "",
4920 "pathname": "\\../",
4921 "search": "",
4922 "hash": ""
4923 },
4924 "# unknown scheme with path looking like a password",
4925 {
4926 "input": "sc::a@example.net",
4927 "base": null,
4928 "href": "sc::a@example.net",
4929 "origin": "null",
4930 "protocol": "sc:",
4931 "username": "",
4932 "password": "",
4933 "host": "",
4934 "hostname": "",
4935 "port": "",
4936 "pathname": ":a@example.net",
4937 "search": "",
4938 "hash": ""
4939 },
4940 "# unknown scheme with bogus percent-encoding",
4941 {
4942 "input": "wow:%NBD",
4943 "base": null,
4944 "href": "wow:%NBD",
4945 "origin": "null",
4946 "protocol": "wow:",
4947 "username": "",
4948 "password": "",
4949 "host": "",
4950 "hostname": "",
4951 "port": "",
4952 "pathname": "%NBD",
4953 "search": "",
4954 "hash": ""
4955 },
4956 {
4957 "input": "wow:%1G",
4958 "base": null,
4959 "href": "wow:%1G",
4960 "origin": "null",
4961 "protocol": "wow:",
4962 "username": "",
4963 "password": "",
4964 "host": "",
4965 "hostname": "",
4966 "port": "",
4967 "pathname": "%1G",
4968 "search": "",
4969 "hash": ""
4970 },
4971 "# unknown scheme with non-URL characters",
4972 {
4973 "input": "wow:\uFFFF",
4974 "base": null,
4975 "href": "wow:%EF%BF%BF",
4976 "origin": "null",
4977 "protocol": "wow:",
4978 "username": "",
4979 "password": "",
4980 "host": "",
4981 "hostname": "",
4982 "port": "",
4983 "pathname": "%EF%BF%BF",
4984 "search": "",
4985 "hash": ""
4986 },
4987 "Forbidden host code points",
4988 {
4989 "input": "sc://a\u0000b/",
4990 "base": null,
4991 "failure": true
4992 },
4993 {
4994 "input": "sc://a b/",
4995 "base": null,
4996 "failure": true
4997 },
4998 {
4999 "input": "sc://a<b",
5000 "base": null,
5001 "failure": true
5002 },
5003 {
5004 "input": "sc://a>b",
5005 "base": null,
5006 "failure": true
5007 },
5008 {
5009 "input": "sc://a[b/",
5010 "base": null,
5011 "failure": true
5012 },
5013 {
5014 "input": "sc://a\\b/",
5015 "base": null,
5016 "failure": true
5017 },
5018 {
5019 "input": "sc://a]b/",
5020 "base": null,
5021 "failure": true
5022 },
5023 {
5024 "input": "sc://a^b",
5025 "base": null,
5026 "failure": true
5027 },
5028 {
5029 "input": "sc://a|b/",
5030 "base": null,
5031 "failure": true
5032 },
5033 "Forbidden host codepoints: tabs and newlines are removed during preprocessing",
5034 {
5035 "input": "foo://ho\u0009st/",
5036 "base": null,
5037 "hash": "",
5038 "host": "host",
5039 "hostname": "host",
5040 "href":"foo://host/",
5041 "password": "",
5042 "pathname": "/",
5043 "port":"",
5044 "protocol": "foo:",
5045 "search": "",
5046 "username": ""
5047 },
5048 {
5049 "input": "foo://ho\u000Ast/",
5050 "base": null,
5051 "hash": "",
5052 "host": "host",
5053 "hostname": "host",
5054 "href":"foo://host/",
5055 "password": "",
5056 "pathname": "/",
5057 "port":"",
5058 "protocol": "foo:",
5059 "search": "",
5060 "username": ""
5061 },
5062 {
5063 "input": "foo://ho\u000Dst/",
5064 "base": null,
5065 "hash": "",
5066 "host": "host",
5067 "hostname": "host",
5068 "href":"foo://host/",
5069 "password": "",
5070 "pathname": "/",
5071 "port":"",
5072 "protocol": "foo:",
5073 "search": "",
5074 "username": ""
5075 },
5076 "Forbidden domain code-points",
5077 {
5078 "input": "http://a\u0000b/",
5079 "base": null,
5080 "failure": true
5081 },
5082 {
5083 "input": "http://a\u0001b/",
5084 "base": null,
5085 "failure": true
5086 },
5087 {
5088 "input": "http://a\u0002b/",
5089 "base": null,
5090 "failure": true
5091 },
5092 {
5093 "input": "http://a\u0003b/",
5094 "base": null,
5095 "failure": true
5096 },
5097 {
5098 "input": "http://a\u0004b/",
5099 "base": null,
5100 "failure": true
5101 },
5102 {
5103 "input": "http://a\u0005b/",
5104 "base": null,
5105 "failure": true
5106 },
5107 {
5108 "input": "http://a\u0006b/",
5109 "base": null,
5110 "failure": true
5111 },
5112 {
5113 "input": "http://a\u0007b/",
5114 "base": null,
5115 "failure": true
5116 },
5117 {
5118 "input": "http://a\u0008b/",
5119 "base": null,
5120 "failure": true
5121 },
5122 {
5123 "input": "http://a\u000Bb/",
5124 "base": null,
5125 "failure": true
5126 },
5127 {
5128 "input": "http://a\u000Cb/",
5129 "base": null,
5130 "failure": true
5131 },
5132 {
5133 "input": "http://a\u000Eb/",
5134 "base": null,
5135 "failure": true
5136 },
5137 {
5138 "input": "http://a\u000Fb/",
5139 "base": null,
5140 "failure": true
5141 },
5142 {
5143 "input": "http://a\u0010b/",
5144 "base": null,
5145 "failure": true
5146 },
5147 {
5148 "input": "http://a\u0011b/",
5149 "base": null,
5150 "failure": true
5151 },
5152 {
5153 "input": "http://a\u0012b/",
5154 "base": null,
5155 "failure": true
5156 },
5157 {
5158 "input": "http://a\u0013b/",
5159 "base": null,
5160 "failure": true
5161 },
5162 {
5163 "input": "http://a\u0014b/",
5164 "base": null,
5165 "failure": true
5166 },
5167 {
5168 "input": "http://a\u0015b/",
5169 "base": null,
5170 "failure": true
5171 },
5172 {
5173 "input": "http://a\u0016b/",
5174 "base": null,
5175 "failure": true
5176 },
5177 {
5178 "input": "http://a\u0017b/",
5179 "base": null,
5180 "failure": true
5181 },
5182 {
5183 "input": "http://a\u0018b/",
5184 "base": null,
5185 "failure": true
5186 },
5187 {
5188 "input": "http://a\u0019b/",
5189 "base": null,
5190 "failure": true
5191 },
5192 {
5193 "input": "http://a\u001Ab/",
5194 "base": null,
5195 "failure": true
5196 },
5197 {
5198 "input": "http://a\u001Bb/",
5199 "base": null,
5200 "failure": true
5201 },
5202 {
5203 "input": "http://a\u001Cb/",
5204 "base": null,
5205 "failure": true
5206 },
5207 {
5208 "input": "http://a\u001Db/",
5209 "base": null,
5210 "failure": true
5211 },
5212 {
5213 "input": "http://a\u001Eb/",
5214 "base": null,
5215 "failure": true
5216 },
5217 {
5218 "input": "http://a\u001Fb/",
5219 "base": null,
5220 "failure": true
5221 },
5222 {
5223 "input": "http://a b/",
5224 "base": null,
5225 "failure": true
5226 },
5227 {
5228 "input": "http://a%b/",
5229 "base": null,
5230 "failure": true
5231 },
5232 {
5233 "input": "http://a<b",
5234 "base": null,
5235 "failure": true
5236 },
5237 {
5238 "input": "http://a>b",
5239 "base": null,
5240 "failure": true
5241 },
5242 {
5243 "input": "http://a[b/",
5244 "base": null,
5245 "failure": true
5246 },
5247 {
5248 "input": "http://a]b/",
5249 "base": null,
5250 "failure": true
5251 },
5252 {
5253 "input": "http://a^b",
5254 "base": null,
5255 "failure": true
5256 },
5257 {
5258 "input": "http://a|b/",
5259 "base": null,
5260 "failure": true
5261 },
5262 {
5263 "input": "http://a\u007Fb/",
5264 "base": null,
5265 "failure": true
5266 },
5267 "Forbidden domain codepoints: tabs and newlines are removed during preprocessing",
5268 {
5269 "input": "http://ho\u0009st/",
5270 "base": null,
5271 "hash": "",
5272 "host": "host",
5273 "hostname": "host",
5274 "href":"http://host/",
5275 "password": "",
5276 "pathname": "/",
5277 "port":"",
5278 "protocol": "http:",
5279 "search": "",
5280 "username": ""
5281 },
5282 {
5283 "input": "http://ho\u000Ast/",
5284 "base": null,
5285 "hash": "",
5286 "host": "host",
5287 "hostname": "host",
5288 "href":"http://host/",
5289 "password": "",
5290 "pathname": "/",
5291 "port":"",
5292 "protocol": "http:",
5293 "search": "",
5294 "username": ""
5295 },
5296 {
5297 "input": "http://ho\u000Dst/",
5298 "base": null,
5299 "hash": "",
5300 "host": "host",
5301 "hostname": "host",
5302 "href":"http://host/",
5303 "password": "",
5304 "pathname": "/",
5305 "port":"",
5306 "protocol": "http:",
5307 "search": "",
5308 "username": ""
5309 },
5310 "Encoded forbidden domain codepoints in special URLs",
5311 {
5312 "input": "http://ho%00st/",
5313 "base": null,
5314 "failure": true
5315 },
5316 {
5317 "input": "http://ho%01st/",
5318 "base": null,
5319 "failure": true
5320 },
5321 {
5322 "input": "http://ho%02st/",
5323 "base": null,
5324 "failure": true
5325 },
5326 {
5327 "input": "http://ho%03st/",
5328 "base": null,
5329 "failure": true
5330 },
5331 {
5332 "input": "http://ho%04st/",
5333 "base": null,
5334 "failure": true
5335 },
5336 {
5337 "input": "http://ho%05st/",
5338 "base": null,
5339 "failure": true
5340 },
5341 {
5342 "input": "http://ho%06st/",
5343 "base": null,
5344 "failure": true
5345 },
5346 {
5347 "input": "http://ho%07st/",
5348 "base": null,
5349 "failure": true
5350 },
5351 {
5352 "input": "http://ho%08st/",
5353 "base": null,
5354 "failure": true
5355 },
5356 {
5357 "input": "http://ho%09st/",
5358 "base": null,
5359 "failure": true
5360 },
5361 {
5362 "input": "http://ho%0Ast/",
5363 "base": null,
5364 "failure": true
5365 },
5366 {
5367 "input": "http://ho%0Bst/",
5368 "base": null,
5369 "failure": true
5370 },
5371 {
5372 "input": "http://ho%0Cst/",
5373 "base": null,
5374 "failure": true
5375 },
5376 {
5377 "input": "http://ho%0Dst/",
5378 "base": null,
5379 "failure": true
5380 },
5381 {
5382 "input": "http://ho%0Est/",
5383 "base": null,
5384 "failure": true
5385 },
5386 {
5387 "input": "http://ho%0Fst/",
5388 "base": null,
5389 "failure": true
5390 },
5391 {
5392 "input": "http://ho%10st/",
5393 "base": null,
5394 "failure": true
5395 },
5396 {
5397 "input": "http://ho%11st/",
5398 "base": null,
5399 "failure": true
5400 },
5401 {
5402 "input": "http://ho%12st/",
5403 "base": null,
5404 "failure": true
5405 },
5406 {
5407 "input": "http://ho%13st/",
5408 "base": null,
5409 "failure": true
5410 },
5411 {
5412 "input": "http://ho%14st/",
5413 "base": null,
5414 "failure": true
5415 },
5416 {
5417 "input": "http://ho%15st/",
5418 "base": null,
5419 "failure": true
5420 },
5421 {
5422 "input": "http://ho%16st/",
5423 "base": null,
5424 "failure": true
5425 },
5426 {
5427 "input": "http://ho%17st/",
5428 "base": null,
5429 "failure": true
5430 },
5431 {
5432 "input": "http://ho%18st/",
5433 "base": null,
5434 "failure": true
5435 },
5436 {
5437 "input": "http://ho%19st/",
5438 "base": null,
5439 "failure": true
5440 },
5441 {
5442 "input": "http://ho%1Ast/",
5443 "base": null,
5444 "failure": true
5445 },
5446 {
5447 "input": "http://ho%1Bst/",
5448 "base": null,
5449 "failure": true
5450 },
5451 {
5452 "input": "http://ho%1Cst/",
5453 "base": null,
5454 "failure": true
5455 },
5456 {
5457 "input": "http://ho%1Dst/",
5458 "base": null,
5459 "failure": true
5460 },
5461 {
5462 "input": "http://ho%1Est/",
5463 "base": null,
5464 "failure": true
5465 },
5466 {
5467 "input": "http://ho%1Fst/",
5468 "base": null,
5469 "failure": true
5470 },
5471 {
5472 "input": "http://ho%20st/",
5473 "base": null,
5474 "failure": true
5475 },
5476 {
5477 "input": "http://ho%23st/",
5478 "base": null,
5479 "failure": true
5480 },
5481 {
5482 "input": "http://ho%25st/",
5483 "base": null,
5484 "failure": true
5485 },
5486 {
5487 "input": "http://ho%2Fst/",
5488 "base": null,
5489 "failure": true
5490 },
5491 {
5492 "input": "http://ho%3Ast/",
5493 "base": null,
5494 "failure": true
5495 },
5496 {
5497 "input": "http://ho%3Cst/",
5498 "base": null,
5499 "failure": true
5500 },
5501 {
5502 "input": "http://ho%3Est/",
5503 "base": null,
5504 "failure": true
5505 },
5506 {
5507 "input": "http://ho%3Fst/",
5508 "base": null,
5509 "failure": true
5510 },
5511 {
5512 "input": "http://ho%40st/",
5513 "base": null,
5514 "failure": true
5515 },
5516 {
5517 "input": "http://ho%5Bst/",
5518 "base": null,
5519 "failure": true
5520 },
5521 {
5522 "input": "http://ho%5Cst/",
5523 "base": null,
5524 "failure": true
5525 },
5526 {
5527 "input": "http://ho%5Dst/",
5528 "base": null,
5529 "failure": true
5530 },
5531 {
5532 "input": "http://ho%7Cst/",
5533 "base": null,
5534 "failure": true
5535 },
5536 {
5537 "input": "http://ho%7Fst/",
5538 "base": null,
5539 "failure": true
5540 },
5541 "Allowed host/domain code points",
5542 {
5543 "input": "http://!\"$&'()*+,-.;=_`{}~/",
5544 "base": null,
5545 "href": "http://!\"$&'()*+,-.;=_`{}~/",
5546 "origin": "http://!\"$&'()*+,-.;=_`{}~",
5547 "protocol": "http:",
5548 "username": "",
5549 "password": "",
5550 "host": "!\"$&'()*+,-.;=_`{}~",
5551 "hostname": "!\"$&'()*+,-.;=_`{}~",
5552 "port": "",
5553 "pathname": "/",
5554 "search": "",
5555 "hash": ""
5556 },
5557 {
5558 "input": "sc://\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u000B\u000C\u000E\u000F\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001A\u001B\u001C\u001D\u001E\u001F\u007F!\"$%&'()*+,-.;=_`{}~/",
5559 "base": null,
5560 "href": "sc://%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~/",
5561 "origin": "null",
5562 "protocol": "sc:",
5563 "username": "",
5564 "password": "",
5565 "host": "%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~",
5566 "hostname": "%01%02%03%04%05%06%07%08%0B%0C%0E%0F%10%11%12%13%14%15%16%17%18%19%1A%1B%1C%1D%1E%1F%7F!\"$%&'()*+,-.;=_`{}~",
5567 "port": "",
5568 "pathname": "/",
5569 "search": "",
5570 "hash": ""
5571 },
5572 "# Hosts and percent-encoding",
5573 {
5574 "input": "ftp://example.com%80/",
5575 "base": null,
5576 "failure": true
5577 },
5578 {
5579 "input": "ftp://example.com%A0/",
5580 "base": null,
5581 "failure": true
5582 },
5583 {
5584 "input": "https://example.com%80/",
5585 "base": null,
5586 "failure": true
5587 },
5588 {
5589 "input": "https://example.com%A0/",
5590 "base": null,
5591 "failure": true
5592 },
5593 {
5594 "input": "ftp://%e2%98%83",
5595 "base": null,
5596 "href": "ftp://xn--n3h/",
5597 "origin": "ftp://xn--n3h",
5598 "protocol": "ftp:",
5599 "username": "",
5600 "password": "",
5601 "host": "xn--n3h",
5602 "hostname": "xn--n3h",
5603 "port": "",
5604 "pathname": "/",
5605 "search": "",
5606 "hash": ""
5607 },
5608 {
5609 "input": "https://%e2%98%83",
5610 "base": null,
5611 "href": "https://xn--n3h/",
5612 "origin": "https://xn--n3h",
5613 "protocol": "https:",
5614 "username": "",
5615 "password": "",
5616 "host": "xn--n3h",
5617 "hostname": "xn--n3h",
5618 "port": "",
5619 "pathname": "/",
5620 "search": "",
5621 "hash": ""
5622 },
5623 "# tests from jsdom/whatwg-url designed for code coverage",
5624 {
5625 "input": "http://127.0.0.1:10100/relative_import.html",
5626 "base": null,
5627 "href": "http://127.0.0.1:10100/relative_import.html",
5628 "origin": "http://127.0.0.1:10100",
5629 "protocol": "http:",
5630 "username": "",
5631 "password": "",
5632 "host": "127.0.0.1:10100",
5633 "hostname": "127.0.0.1",
5634 "port": "10100",
5635 "pathname": "/relative_import.html",
5636 "search": "",
5637 "hash": ""
5638 },
5639 {
5640 "input": "http://facebook.com/?foo=%7B%22abc%22",
5641 "base": null,
5642 "href": "http://facebook.com/?foo=%7B%22abc%22",
5643 "origin": "http://facebook.com",
5644 "protocol": "http:",
5645 "username": "",
5646 "password": "",
5647 "host": "facebook.com",
5648 "hostname": "facebook.com",
5649 "port": "",
5650 "pathname": "/",
5651 "search": "?foo=%7B%22abc%22",
5652 "hash": ""
5653 },
5654 {
5655 "input": "https://localhost:3000/jqueryui@1.2.3",
5656 "base": null,
5657 "href": "https://localhost:3000/jqueryui@1.2.3",
5658 "origin": "https://localhost:3000",
5659 "protocol": "https:",
5660 "username": "",
5661 "password": "",
5662 "host": "localhost:3000",
5663 "hostname": "localhost",
5664 "port": "3000",
5665 "pathname": "/jqueryui@1.2.3",
5666 "search": "",
5667 "hash": ""
5668 },
5669 "# tab/LF/CR",
5670 {
5671 "input": "h\tt\nt\rp://h\to\ns\rt:9\t0\n0\r0/p\ta\nt\rh?q\tu\ne\rry#f\tr\na\rg",
5672 "base": null,
5673 "href": "http://host:9000/path?query#frag",
5674 "origin": "http://host:9000",
5675 "protocol": "http:",
5676 "username": "",
5677 "password": "",
5678 "host": "host:9000",
5679 "hostname": "host",
5680 "port": "9000",
5681 "pathname": "/path",
5682 "search": "?query",
5683 "hash": "#frag"
5684 },
5685 "# Stringification of URL.searchParams",
5686 {
5687 "input": "?a=b&c=d",
5688 "base": "http://example.org/foo/bar",
5689 "href": "http://example.org/foo/bar?a=b&c=d",
5690 "origin": "http://example.org",
5691 "protocol": "http:",
5692 "username": "",
5693 "password": "",
5694 "host": "example.org",
5695 "hostname": "example.org",
5696 "port": "",
5697 "pathname": "/foo/bar",
5698 "search": "?a=b&c=d",
5699 "searchParams": "a=b&c=d",
5700 "hash": ""
5701 },
5702 {
5703 "input": "??a=b&c=d",
5704 "base": "http://example.org/foo/bar",
5705 "href": "http://example.org/foo/bar??a=b&c=d",
5706 "origin": "http://example.org",
5707 "protocol": "http:",
5708 "username": "",
5709 "password": "",
5710 "host": "example.org",
5711 "hostname": "example.org",
5712 "port": "",
5713 "pathname": "/foo/bar",
5714 "search": "??a=b&c=d",
5715 "searchParams": "%3Fa=b&c=d",
5716 "hash": ""
5717 },
5718 "# Scheme only",
5719 {
5720 "input": "http:",
5721 "base": "http://example.org/foo/bar",
5722 "href": "http://example.org/foo/bar",
5723 "origin": "http://example.org",
5724 "protocol": "http:",
5725 "username": "",
5726 "password": "",
5727 "host": "example.org",
5728 "hostname": "example.org",
5729 "port": "",
5730 "pathname": "/foo/bar",
5731 "search": "",
5732 "searchParams": "",
5733 "hash": ""
5734 },
5735 {
5736 "input": "http:",
5737 "base": "https://example.org/foo/bar",
5738 "failure": true
5739 },
5740 {
5741 "input": "sc:",
5742 "base": "https://example.org/foo/bar",
5743 "href": "sc:",
5744 "origin": "null",
5745 "protocol": "sc:",
5746 "username": "",
5747 "password": "",
5748 "host": "",
5749 "hostname": "",
5750 "port": "",
5751 "pathname": "",
5752 "search": "",
5753 "searchParams": "",
5754 "hash": ""
5755 },
5756 "# Percent encoding of fragments",
5757 {
5758 "input": "http://foo.bar/baz?qux#foo\bbar",
5759 "base": null,
5760 "href": "http://foo.bar/baz?qux#foo%08bar",
5761 "origin": "http://foo.bar",
5762 "protocol": "http:",
5763 "username": "",
5764 "password": "",
5765 "host": "foo.bar",
5766 "hostname": "foo.bar",
5767 "port": "",
5768 "pathname": "/baz",
5769 "search": "?qux",
5770 "searchParams": "qux=",
5771 "hash": "#foo%08bar"
5772 },
5773 {
5774 "input": "http://foo.bar/baz?qux#foo\"bar",
5775 "base": null,
5776 "href": "http://foo.bar/baz?qux#foo%22bar",
5777 "origin": "http://foo.bar",
5778 "protocol": "http:",
5779 "username": "",
5780 "password": "",
5781 "host": "foo.bar",
5782 "hostname": "foo.bar",
5783 "port": "",
5784 "pathname": "/baz",
5785 "search": "?qux",
5786 "searchParams": "qux=",
5787 "hash": "#foo%22bar"
5788 },
5789 {
5790 "input": "http://foo.bar/baz?qux#foo<bar",
5791 "base": null,
5792 "href": "http://foo.bar/baz?qux#foo%3Cbar",
5793 "origin": "http://foo.bar",
5794 "protocol": "http:",
5795 "username": "",
5796 "password": "",
5797 "host": "foo.bar",
5798 "hostname": "foo.bar",
5799 "port": "",
5800 "pathname": "/baz",
5801 "search": "?qux",
5802 "searchParams": "qux=",
5803 "hash": "#foo%3Cbar"
5804 },
5805 {
5806 "input": "http://foo.bar/baz?qux#foo>bar",
5807 "base": null,
5808 "href": "http://foo.bar/baz?qux#foo%3Ebar",
5809 "origin": "http://foo.bar",
5810 "protocol": "http:",
5811 "username": "",
5812 "password": "",
5813 "host": "foo.bar",
5814 "hostname": "foo.bar",
5815 "port": "",
5816 "pathname": "/baz",
5817 "search": "?qux",
5818 "searchParams": "qux=",
5819 "hash": "#foo%3Ebar"
5820 },
5821 {
5822 "input": "http://foo.bar/baz?qux#foo`bar",
5823 "base": null,
5824 "href": "http://foo.bar/baz?qux#foo%60bar",
5825 "origin": "http://foo.bar",
5826 "protocol": "http:",
5827 "username": "",
5828 "password": "",
5829 "host": "foo.bar",
5830 "hostname": "foo.bar",
5831 "port": "",
5832 "pathname": "/baz",
5833 "search": "?qux",
5834 "searchParams": "qux=",
5835 "hash": "#foo%60bar"
5836 },
5837 "# IPv4 parsing (via https://github.com/nodejs/node/pull/10317)",
5838 {
5839 "input": "http://1.2.3.4/",
5840 "base": "http://other.com/",
5841 "href": "http://1.2.3.4/",
5842 "origin": "http://1.2.3.4",
5843 "protocol": "http:",
5844 "username": "",
5845 "password": "",
5846 "host": "1.2.3.4",
5847 "hostname": "1.2.3.4",
5848 "port": "",
5849 "pathname": "/",
5850 "search": "",
5851 "hash": ""
5852 },
5853 {
5854 "input": "http://1.2.3.4./",
5855 "base": "http://other.com/",
5856 "href": "http://1.2.3.4/",
5857 "origin": "http://1.2.3.4",
5858 "protocol": "http:",
5859 "username": "",
5860 "password": "",
5861 "host": "1.2.3.4",
5862 "hostname": "1.2.3.4",
5863 "port": "",
5864 "pathname": "/",
5865 "search": "",
5866 "hash": ""
5867 },
5868 {
5869 "input": "http://192.168.257",
5870 "base": "http://other.com/",
5871 "href": "http://192.168.1.1/",
5872 "origin": "http://192.168.1.1",
5873 "protocol": "http:",
5874 "username": "",
5875 "password": "",
5876 "host": "192.168.1.1",
5877 "hostname": "192.168.1.1",
5878 "port": "",
5879 "pathname": "/",
5880 "search": "",
5881 "hash": ""
5882 },
5883 {
5884 "input": "http://192.168.257.",
5885 "base": "http://other.com/",
5886 "href": "http://192.168.1.1/",
5887 "origin": "http://192.168.1.1",
5888 "protocol": "http:",
5889 "username": "",
5890 "password": "",
5891 "host": "192.168.1.1",
5892 "hostname": "192.168.1.1",
5893 "port": "",
5894 "pathname": "/",
5895 "search": "",
5896 "hash": ""
5897 },
5898 {
5899 "input": "http://192.168.257.com",
5900 "base": "http://other.com/",
5901 "href": "http://192.168.257.com/",
5902 "origin": "http://192.168.257.com",
5903 "protocol": "http:",
5904 "username": "",
5905 "password": "",
5906 "host": "192.168.257.com",
5907 "hostname": "192.168.257.com",
5908 "port": "",
5909 "pathname": "/",
5910 "search": "",
5911 "hash": ""
5912 },
5913 {
5914 "input": "http://256",
5915 "base": "http://other.com/",
5916 "href": "http://0.0.1.0/",
5917 "origin": "http://0.0.1.0",
5918 "protocol": "http:",
5919 "username": "",
5920 "password": "",
5921 "host": "0.0.1.0",
5922 "hostname": "0.0.1.0",
5923 "port": "",
5924 "pathname": "/",
5925 "search": "",
5926 "hash": ""
5927 },
5928 {
5929 "input": "http://256.com",
5930 "base": "http://other.com/",
5931 "href": "http://256.com/",
5932 "origin": "http://256.com",
5933 "protocol": "http:",
5934 "username": "",
5935 "password": "",
5936 "host": "256.com",
5937 "hostname": "256.com",
5938 "port": "",
5939 "pathname": "/",
5940 "search": "",
5941 "hash": ""
5942 },
5943 {
5944 "input": "http://999999999",
5945 "base": "http://other.com/",
5946 "href": "http://59.154.201.255/",
5947 "origin": "http://59.154.201.255",
5948 "protocol": "http:",
5949 "username": "",
5950 "password": "",
5951 "host": "59.154.201.255",
5952 "hostname": "59.154.201.255",
5953 "port": "",
5954 "pathname": "/",
5955 "search": "",
5956 "hash": ""
5957 },
5958 {
5959 "input": "http://999999999.",
5960 "base": "http://other.com/",
5961 "href": "http://59.154.201.255/",
5962 "origin": "http://59.154.201.255",
5963 "protocol": "http:",
5964 "username": "",
5965 "password": "",
5966 "host": "59.154.201.255",
5967 "hostname": "59.154.201.255",
5968 "port": "",
5969 "pathname": "/",
5970 "search": "",
5971 "hash": ""
5972 },
5973 {
5974 "input": "http://999999999.com",
5975 "base": "http://other.com/",
5976 "href": "http://999999999.com/",
5977 "origin": "http://999999999.com",
5978 "protocol": "http:",
5979 "username": "",
5980 "password": "",
5981 "host": "999999999.com",
5982 "hostname": "999999999.com",
5983 "port": "",
5984 "pathname": "/",
5985 "search": "",
5986 "hash": ""
5987 },
5988 {
5989 "input": "http://10000000000",
5990 "base": "http://other.com/",
5991 "failure": true
5992 },
5993 {
5994 "input": "http://10000000000.com",
5995 "base": "http://other.com/",
5996 "href": "http://10000000000.com/",
5997 "origin": "http://10000000000.com",
5998 "protocol": "http:",
5999 "username": "",
6000 "password": "",
6001 "host": "10000000000.com",
6002 "hostname": "10000000000.com",
6003 "port": "",
6004 "pathname": "/",
6005 "search": "",
6006 "hash": ""
6007 },
6008 {
6009 "input": "http://4294967295",
6010 "base": "http://other.com/",
6011 "href": "http://255.255.255.255/",
6012 "origin": "http://255.255.255.255",
6013 "protocol": "http:",
6014 "username": "",
6015 "password": "",
6016 "host": "255.255.255.255",
6017 "hostname": "255.255.255.255",
6018 "port": "",
6019 "pathname": "/",
6020 "search": "",
6021 "hash": ""
6022 },
6023 {
6024 "input": "http://4294967296",
6025 "base": "http://other.com/",
6026 "failure": true
6027 },
6028 {
6029 "input": "http://0xffffffff",
6030 "base": "http://other.com/",
6031 "href": "http://255.255.255.255/",
6032 "origin": "http://255.255.255.255",
6033 "protocol": "http:",
6034 "username": "",
6035 "password": "",
6036 "host": "255.255.255.255",
6037 "hostname": "255.255.255.255",
6038 "port": "",
6039 "pathname": "/",
6040 "search": "",
6041 "hash": ""
6042 },
6043 {
6044 "input": "http://0xffffffff1",
6045 "base": "http://other.com/",
6046 "failure": true
6047 },
6048 {
6049 "input": "http://256.256.256.256",
6050 "base": "http://other.com/",
6051 "failure": true
6052 },
6053 {
6054 "input": "https://0x.0x.0",
6055 "base": null,
6056 "href": "https://0.0.0.0/",
6057 "origin": "https://0.0.0.0",
6058 "protocol": "https:",
6059 "username": "",
6060 "password": "",
6061 "host": "0.0.0.0",
6062 "hostname": "0.0.0.0",
6063 "port": "",
6064 "pathname": "/",
6065 "search": "",
6066 "hash": ""
6067 },
6068 "More IPv4 parsing (via https://github.com/jsdom/whatwg-url/issues/92)",
6069 {
6070 "input": "https://0x100000000/test",
6071 "base": null,
6072 "failure": true
6073 },
6074 {
6075 "input": "https://256.0.0.1/test",
6076 "base": null,
6077 "failure": true
6078 },
6079 "# file URLs containing percent-encoded Windows drive letters (shouldn't work)",
6080 {
6081 "input": "file:///C%3A/",
6082 "base": null,
6083 "href": "file:///C%3A/",
6084 "protocol": "file:",
6085 "username": "",
6086 "password": "",
6087 "host": "",
6088 "hostname": "",
6089 "port": "",
6090 "pathname": "/C%3A/",
6091 "search": "",
6092 "hash": ""
6093 },
6094 {
6095 "input": "file:///C%7C/",
6096 "base": null,
6097 "href": "file:///C%7C/",
6098 "protocol": "file:",
6099 "username": "",
6100 "password": "",
6101 "host": "",
6102 "hostname": "",
6103 "port": "",
6104 "pathname": "/C%7C/",
6105 "search": "",
6106 "hash": ""
6107 },
6108 {
6109 "input": "file://%43%3A",
6110 "base": null,
6111 "failure": true
6112 },
6113 {
6114 "input": "file://%43%7C",
6115 "base": null,
6116 "failure": true
6117 },
6118 {
6119 "input": "file://%43|",
6120 "base": null,
6121 "failure": true
6122 },
6123 {
6124 "input": "file://C%7C",
6125 "base": null,
6126 "failure": true
6127 },
6128 {
6129 "input": "file://%43%7C/",
6130 "base": null,
6131 "failure": true
6132 },
6133 {
6134 "input": "https://%43%7C/",
6135 "base": null,
6136 "failure": true
6137 },
6138 {
6139 "input": "asdf://%43|/",
6140 "base": null,
6141 "failure": true
6142 },
6143 {
6144 "input": "asdf://%43%7C/",
6145 "base": null,
6146 "href": "asdf://%43%7C/",
6147 "origin": "null",
6148 "protocol": "asdf:",
6149 "username": "",
6150 "password": "",
6151 "host": "%43%7C",
6152 "hostname": "%43%7C",
6153 "port": "",
6154 "pathname": "/",
6155 "search": "",
6156 "hash": ""
6157 },
6158 "# file URLs relative to other file URLs (via https://github.com/jsdom/whatwg-url/pull/60)",
6159 {
6160 "input": "pix/submit.gif",
6161 "base": "file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/anchor.html",
6162 "href": "file:///C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif",
6163 "protocol": "file:",
6164 "username": "",
6165 "password": "",
6166 "host": "",
6167 "hostname": "",
6168 "port": "",
6169 "pathname": "/C:/Users/Domenic/Dropbox/GitHub/tmpvar/jsdom/test/level2/html/files/pix/submit.gif",
6170 "search": "",
6171 "hash": ""
6172 },
6173 {
6174 "input": "..",
6175 "base": "file:///C:/",
6176 "href": "file:///C:/",
6177 "protocol": "file:",
6178 "username": "",
6179 "password": "",
6180 "host": "",
6181 "hostname": "",
6182 "port": "",
6183 "pathname": "/C:/",
6184 "search": "",
6185 "hash": ""
6186 },
6187 {
6188 "input": "..",
6189 "base": "file:///",
6190 "href": "file:///",
6191 "protocol": "file:",
6192 "username": "",
6193 "password": "",
6194 "host": "",
6195 "hostname": "",
6196 "port": "",
6197 "pathname": "/",
6198 "search": "",
6199 "hash": ""
6200 },
6201 "# More file URL tests by zcorpan and annevk",
6202 {
6203 "input": "/",
6204 "base": "file:///C:/a/b",
6205 "href": "file:///C:/",
6206 "protocol": "file:",
6207 "username": "",
6208 "password": "",
6209 "host": "",
6210 "hostname": "",
6211 "port": "",
6212 "pathname": "/C:/",
6213 "search": "",
6214 "hash": ""
6215 },
6216 {
6217 "input": "/",
6218 "base": "file://h/C:/a/b",
6219 "href": "file://h/C:/",
6220 "protocol": "file:",
6221 "username": "",
6222 "password": "",
6223 "host": "h",
6224 "hostname": "h",
6225 "port": "",
6226 "pathname": "/C:/",
6227 "search": "",
6228 "hash": ""
6229 },
6230 {
6231 "input": "/",
6232 "base": "file://h/a/b",
6233 "href": "file://h/",
6234 "protocol": "file:",
6235 "username": "",
6236 "password": "",
6237 "host": "h",
6238 "hostname": "h",
6239 "port": "",
6240 "pathname": "/",
6241 "search": "",
6242 "hash": ""
6243 },
6244 {
6245 "input": "//d:",
6246 "base": "file:///C:/a/b",
6247 "href": "file:///d:",
6248 "protocol": "file:",
6249 "username": "",
6250 "password": "",
6251 "host": "",
6252 "hostname": "",
6253 "port": "",
6254 "pathname": "/d:",
6255 "search": "",
6256 "hash": ""
6257 },
6258 {
6259 "input": "//d:/..",
6260 "base": "file:///C:/a/b",
6261 "href": "file:///d:/",
6262 "protocol": "file:",
6263 "username": "",
6264 "password": "",
6265 "host": "",
6266 "hostname": "",
6267 "port": "",
6268 "pathname": "/d:/",
6269 "search": "",
6270 "hash": ""
6271 },
6272 {
6273 "input": "..",
6274 "base": "file:///ab:/",
6275 "href": "file:///",
6276 "protocol": "file:",
6277 "username": "",
6278 "password": "",
6279 "host": "",
6280 "hostname": "",
6281 "port": "",
6282 "pathname": "/",
6283 "search": "",
6284 "hash": ""
6285 },
6286 {
6287 "input": "..",
6288 "base": "file:///1:/",
6289 "href": "file:///",
6290 "protocol": "file:",
6291 "username": "",
6292 "password": "",
6293 "host": "",
6294 "hostname": "",
6295 "port": "",
6296 "pathname": "/",
6297 "search": "",
6298 "hash": ""
6299 },
6300 {
6301 "input": "",
6302 "base": "file:///test?test#test",
6303 "href": "file:///test?test",
6304 "protocol": "file:",
6305 "username": "",
6306 "password": "",
6307 "host": "",
6308 "hostname": "",
6309 "port": "",
6310 "pathname": "/test",
6311 "search": "?test",
6312 "hash": ""
6313 },
6314 {
6315 "input": "file:",
6316 "base": "file:///test?test#test",
6317 "href": "file:///test?test",
6318 "protocol": "file:",
6319 "username": "",
6320 "password": "",
6321 "host": "",
6322 "hostname": "",
6323 "port": "",
6324 "pathname": "/test",
6325 "search": "?test",
6326 "hash": ""
6327 },
6328 {
6329 "input": "?x",
6330 "base": "file:///test?test#test",
6331 "href": "file:///test?x",
6332 "protocol": "file:",
6333 "username": "",
6334 "password": "",
6335 "host": "",
6336 "hostname": "",
6337 "port": "",
6338 "pathname": "/test",
6339 "search": "?x",
6340 "hash": ""
6341 },
6342 {
6343 "input": "file:?x",
6344 "base": "file:///test?test#test",
6345 "href": "file:///test?x",
6346 "protocol": "file:",
6347 "username": "",
6348 "password": "",
6349 "host": "",
6350 "hostname": "",
6351 "port": "",
6352 "pathname": "/test",
6353 "search": "?x",
6354 "hash": ""
6355 },
6356 {
6357 "input": "#x",
6358 "base": "file:///test?test#test",
6359 "href": "file:///test?test#x",
6360 "protocol": "file:",
6361 "username": "",
6362 "password": "",
6363 "host": "",
6364 "hostname": "",
6365 "port": "",
6366 "pathname": "/test",
6367 "search": "?test",
6368 "hash": "#x"
6369 },
6370 {
6371 "input": "file:#x",
6372 "base": "file:///test?test#test",
6373 "href": "file:///test?test#x",
6374 "protocol": "file:",
6375 "username": "",
6376 "password": "",
6377 "host": "",
6378 "hostname": "",
6379 "port": "",
6380 "pathname": "/test",
6381 "search": "?test",
6382 "hash": "#x"
6383 },
6384 "# File URLs and many (back)slashes",
6385 {
6386 "input": "file:\\\\//",
6387 "base": null,
6388 "href": "file:////",
6389 "protocol": "file:",
6390 "username": "",
6391 "password": "",
6392 "host": "",
6393 "hostname": "",
6394 "port": "",
6395 "pathname": "//",
6396 "search": "",
6397 "hash": ""
6398 },
6399 {
6400 "input": "file:\\\\\\\\",
6401 "base": null,
6402 "href": "file:////",
6403 "protocol": "file:",
6404 "username": "",
6405 "password": "",
6406 "host": "",
6407 "hostname": "",
6408 "port": "",
6409 "pathname": "//",
6410 "search": "",
6411 "hash": ""
6412 },
6413 {
6414 "input": "file:\\\\\\\\?fox",
6415 "base": null,
6416 "href": "file:////?fox",
6417 "protocol": "file:",
6418 "username": "",
6419 "password": "",
6420 "host": "",
6421 "hostname": "",
6422 "port": "",
6423 "pathname": "//",
6424 "search": "?fox",
6425 "hash": ""
6426 },
6427 {
6428 "input": "file:\\\\\\\\#guppy",
6429 "base": null,
6430 "href": "file:////#guppy",
6431 "protocol": "file:",
6432 "username": "",
6433 "password": "",
6434 "host": "",
6435 "hostname": "",
6436 "port": "",
6437 "pathname": "//",
6438 "search": "",
6439 "hash": "#guppy"
6440 },
6441 {
6442 "input": "file://spider///",
6443 "base": null,
6444 "href": "file://spider///",
6445 "protocol": "file:",
6446 "username": "",
6447 "password": "",
6448 "host": "spider",
6449 "hostname": "spider",
6450 "port": "",
6451 "pathname": "///",
6452 "search": "",
6453 "hash": ""
6454 },
6455 {
6456 "input": "file:\\\\localhost//",
6457 "base": null,
6458 "href": "file:////",
6459 "protocol": "file:",
6460 "username": "",
6461 "password": "",
6462 "host": "",
6463 "hostname": "",
6464 "port": "",
6465 "pathname": "//",
6466 "search": "",
6467 "hash": ""
6468 },
6469 {
6470 "input": "file:///localhost//cat",
6471 "base": null,
6472 "href": "file:///localhost//cat",
6473 "protocol": "file:",
6474 "username": "",
6475 "password": "",
6476 "host": "",
6477 "hostname": "",
6478 "port": "",
6479 "pathname": "/localhost//cat",
6480 "search": "",
6481 "hash": ""
6482 },
6483 {
6484 "input": "file://\\/localhost//cat",
6485 "base": null,
6486 "href": "file:////localhost//cat",
6487 "protocol": "file:",
6488 "username": "",
6489 "password": "",
6490 "host": "",
6491 "hostname": "",
6492 "port": "",
6493 "pathname": "//localhost//cat",
6494 "search": "",
6495 "hash": ""
6496 },
6497 {
6498 "input": "file://localhost//a//../..//",
6499 "base": null,
6500 "href": "file://///",
6501 "protocol": "file:",
6502 "username": "",
6503 "password": "",
6504 "host": "",
6505 "hostname": "",
6506 "port": "",
6507 "pathname": "///",
6508 "search": "",
6509 "hash": ""
6510 },
6511 {
6512 "input": "/////mouse",
6513 "base": "file:///elephant",
6514 "href": "file://///mouse",
6515 "protocol": "file:",
6516 "username": "",
6517 "password": "",
6518 "host": "",
6519 "hostname": "",
6520 "port": "",
6521 "pathname": "///mouse",
6522 "search": "",
6523 "hash": ""
6524 },
6525 {
6526 "input": "\\//pig",
6527 "base": "file://lion/",
6528 "href": "file:///pig",
6529 "protocol": "file:",
6530 "username": "",
6531 "password": "",
6532 "host": "",
6533 "hostname": "",
6534 "port": "",
6535 "pathname": "/pig",
6536 "search": "",
6537 "hash": ""
6538 },
6539 {
6540 "input": "\\/localhost//pig",
6541 "base": "file://lion/",
6542 "href": "file:////pig",
6543 "protocol": "file:",
6544 "username": "",
6545 "password": "",
6546 "host": "",
6547 "hostname": "",
6548 "port": "",
6549 "pathname": "//pig",
6550 "search": "",
6551 "hash": ""
6552 },
6553 {
6554 "input": "//localhost//pig",
6555 "base": "file://lion/",
6556 "href": "file:////pig",
6557 "protocol": "file:",
6558 "username": "",
6559 "password": "",
6560 "host": "",
6561 "hostname": "",
6562 "port": "",
6563 "pathname": "//pig",
6564 "search": "",
6565 "hash": ""
6566 },
6567 {
6568 "input": "/..//localhost//pig",
6569 "base": "file://lion/",
6570 "href": "file://lion//localhost//pig",
6571 "protocol": "file:",
6572 "username": "",
6573 "password": "",
6574 "host": "lion",
6575 "hostname": "lion",
6576 "port": "",
6577 "pathname": "//localhost//pig",
6578 "search": "",
6579 "hash": ""
6580 },
6581 {
6582 "input": "file://",
6583 "base": "file://ape/",
6584 "href": "file:///",
6585 "protocol": "file:",
6586 "username": "",
6587 "password": "",
6588 "host": "",
6589 "hostname": "",
6590 "port": "",
6591 "pathname": "/",
6592 "search": "",
6593 "hash": ""
6594 },
6595 "# File URLs with non-empty hosts",
6596 {
6597 "input": "/rooibos",
6598 "base": "file://tea/",
6599 "href": "file://tea/rooibos",
6600 "protocol": "file:",
6601 "username": "",
6602 "password": "",
6603 "host": "tea",
6604 "hostname": "tea",
6605 "port": "",
6606 "pathname": "/rooibos",
6607 "search": "",
6608 "hash": ""
6609 },
6610 {
6611 "input": "/?chai",
6612 "base": "file://tea/",
6613 "href": "file://tea/?chai",
6614 "protocol": "file:",
6615 "username": "",
6616 "password": "",
6617 "host": "tea",
6618 "hostname": "tea",
6619 "port": "",
6620 "pathname": "/",
6621 "search": "?chai",
6622 "hash": ""
6623 },
6624 "# Windows drive letter handling with the 'file:' base URL",
6625 {
6626 "input": "C|",
6627 "base": "file://host/dir/file",
6628 "href": "file://host/C:",
6629 "protocol": "file:",
6630 "username": "",
6631 "password": "",
6632 "host": "host",
6633 "hostname": "host",
6634 "port": "",
6635 "pathname": "/C:",
6636 "search": "",
6637 "hash": ""
6638 },
6639 {
6640 "input": "C|",
6641 "base": "file://host/D:/dir1/dir2/file",
6642 "href": "file://host/C:",
6643 "protocol": "file:",
6644 "username": "",
6645 "password": "",
6646 "host": "host",
6647 "hostname": "host",
6648 "port": "",
6649 "pathname": "/C:",
6650 "search": "",
6651 "hash": ""
6652 },
6653 {
6654 "input": "C|#",
6655 "base": "file://host/dir/file",
6656 "href": "file://host/C:#",
6657 "protocol": "file:",
6658 "username": "",
6659 "password": "",
6660 "host": "host",
6661 "hostname": "host",
6662 "port": "",
6663 "pathname": "/C:",
6664 "search": "",
6665 "hash": ""
6666 },
6667 {
6668 "input": "C|?",
6669 "base": "file://host/dir/file",
6670 "href": "file://host/C:?",
6671 "protocol": "file:",
6672 "username": "",
6673 "password": "",
6674 "host": "host",
6675 "hostname": "host",
6676 "port": "",
6677 "pathname": "/C:",
6678 "search": "",
6679 "hash": ""
6680 },
6681 {
6682 "input": "C|/",
6683 "base": "file://host/dir/file",
6684 "href": "file://host/C:/",
6685 "protocol": "file:",
6686 "username": "",
6687 "password": "",
6688 "host": "host",
6689 "hostname": "host",
6690 "port": "",
6691 "pathname": "/C:/",
6692 "search": "",
6693 "hash": ""
6694 },
6695 {
6696 "input": "C|\n/",
6697 "base": "file://host/dir/file",
6698 "href": "file://host/C:/",
6699 "protocol": "file:",
6700 "username": "",
6701 "password": "",
6702 "host": "host",
6703 "hostname": "host",
6704 "port": "",
6705 "pathname": "/C:/",
6706 "search": "",
6707 "hash": ""
6708 },
6709 {
6710 "input": "C|\\",
6711 "base": "file://host/dir/file",
6712 "href": "file://host/C:/",
6713 "protocol": "file:",
6714 "username": "",
6715 "password": "",
6716 "host": "host",
6717 "hostname": "host",
6718 "port": "",
6719 "pathname": "/C:/",
6720 "search": "",
6721 "hash": ""
6722 },
6723 {
6724 "input": "C",
6725 "base": "file://host/dir/file",
6726 "href": "file://host/dir/C",
6727 "protocol": "file:",
6728 "username": "",
6729 "password": "",
6730 "host": "host",
6731 "hostname": "host",
6732 "port": "",
6733 "pathname": "/dir/C",
6734 "search": "",
6735 "hash": ""
6736 },
6737 {
6738 "input": "C|a",
6739 "base": "file://host/dir/file",
6740 "href": "file://host/dir/C|a",
6741 "protocol": "file:",
6742 "username": "",
6743 "password": "",
6744 "host": "host",
6745 "hostname": "host",
6746 "port": "",
6747 "pathname": "/dir/C|a",
6748 "search": "",
6749 "hash": ""
6750 },
6751 "# Windows drive letter quirk in the file slash state",
6752 {
6753 "input": "/c:/foo/bar",
6754 "base": "file:///c:/baz/qux",
6755 "href": "file:///c:/foo/bar",
6756 "protocol": "file:",
6757 "username": "",
6758 "password": "",
6759 "host": "",
6760 "hostname": "",
6761 "port": "",
6762 "pathname": "/c:/foo/bar",
6763 "search": "",
6764 "hash": ""
6765 },
6766 {
6767 "input": "/c|/foo/bar",
6768 "base": "file:///c:/baz/qux",
6769 "href": "file:///c:/foo/bar",
6770 "protocol": "file:",
6771 "username": "",
6772 "password": "",
6773 "host": "",
6774 "hostname": "",
6775 "port": "",
6776 "pathname": "/c:/foo/bar",
6777 "search": "",
6778 "hash": ""
6779 },
6780 {
6781 "input": "file:\\c:\\foo\\bar",
6782 "base": "file:///c:/baz/qux",
6783 "href": "file:///c:/foo/bar",
6784 "protocol": "file:",
6785 "username": "",
6786 "password": "",
6787 "host": "",
6788 "hostname": "",
6789 "port": "",
6790 "pathname": "/c:/foo/bar",
6791 "search": "",
6792 "hash": ""
6793 },
6794 {
6795 "input": "/c:/foo/bar",
6796 "base": "file://host/path",
6797 "href": "file://host/c:/foo/bar",
6798 "protocol": "file:",
6799 "username": "",
6800 "password": "",
6801 "host": "host",
6802 "hostname": "host",
6803 "port": "",
6804 "pathname": "/c:/foo/bar",
6805 "search": "",
6806 "hash": ""
6807 },
6808 "# Do not drop the host in the presence of a drive letter",
6809 {
6810 "input": "file://example.net/C:/",
6811 "base": null,
6812 "href": "file://example.net/C:/",
6813 "protocol": "file:",
6814 "username": "",
6815 "password": "",
6816 "host": "example.net",
6817 "hostname": "example.net",
6818 "port": "",
6819 "pathname": "/C:/",
6820 "search": "",
6821 "hash": ""
6822 },
6823 {
6824 "input": "file://1.2.3.4/C:/",
6825 "base": null,
6826 "href": "file://1.2.3.4/C:/",
6827 "protocol": "file:",
6828 "username": "",
6829 "password": "",
6830 "host": "1.2.3.4",
6831 "hostname": "1.2.3.4",
6832 "port": "",
6833 "pathname": "/C:/",
6834 "search": "",
6835 "hash": ""
6836 },
6837 {
6838 "input": "file://[1::8]/C:/",
6839 "base": null,
6840 "href": "file://[1::8]/C:/",
6841 "protocol": "file:",
6842 "username": "",
6843 "password": "",
6844 "host": "[1::8]",
6845 "hostname": "[1::8]",
6846 "port": "",
6847 "pathname": "/C:/",
6848 "search": "",
6849 "hash": ""
6850 },
6851 "# Copy the host from the base URL in the following cases",
6852 {
6853 "input": "C|/",
6854 "base": "file://host/",
6855 "href": "file://host/C:/",
6856 "protocol": "file:",
6857 "username": "",
6858 "password": "",
6859 "host": "host",
6860 "hostname": "host",
6861 "port": "",
6862 "pathname": "/C:/",
6863 "search": "",
6864 "hash": ""
6865 },
6866 {
6867 "input": "/C:/",
6868 "base": "file://host/",
6869 "href": "file://host/C:/",
6870 "protocol": "file:",
6871 "username": "",
6872 "password": "",
6873 "host": "host",
6874 "hostname": "host",
6875 "port": "",
6876 "pathname": "/C:/",
6877 "search": "",
6878 "hash": ""
6879 },
6880 {
6881 "input": "file:C:/",
6882 "base": "file://host/",
6883 "href": "file://host/C:/",
6884 "protocol": "file:",
6885 "username": "",
6886 "password": "",
6887 "host": "host",
6888 "hostname": "host",
6889 "port": "",
6890 "pathname": "/C:/",
6891 "search": "",
6892 "hash": ""
6893 },
6894 {
6895 "input": "file:/C:/",
6896 "base": "file://host/",
6897 "href": "file://host/C:/",
6898 "protocol": "file:",
6899 "username": "",
6900 "password": "",
6901 "host": "host",
6902 "hostname": "host",
6903 "port": "",
6904 "pathname": "/C:/",
6905 "search": "",
6906 "hash": ""
6907 },
6908 "# Copy the empty host from the input in the following cases",
6909 {
6910 "input": "//C:/",
6911 "base": "file://host/",
6912 "href": "file:///C:/",
6913 "protocol": "file:",
6914 "username": "",
6915 "password": "",
6916 "host": "",
6917 "hostname": "",
6918 "port": "",
6919 "pathname": "/C:/",
6920 "search": "",
6921 "hash": ""
6922 },
6923 {
6924 "input": "file://C:/",
6925 "base": "file://host/",
6926 "href": "file:///C:/",
6927 "protocol": "file:",
6928 "username": "",
6929 "password": "",
6930 "host": "",
6931 "hostname": "",
6932 "port": "",
6933 "pathname": "/C:/",
6934 "search": "",
6935 "hash": ""
6936 },
6937 {
6938 "input": "///C:/",
6939 "base": "file://host/",
6940 "href": "file:///C:/",
6941 "protocol": "file:",
6942 "username": "",
6943 "password": "",
6944 "host": "",
6945 "hostname": "",
6946 "port": "",
6947 "pathname": "/C:/",
6948 "search": "",
6949 "hash": ""
6950 },
6951 {
6952 "input": "file:///C:/",
6953 "base": "file://host/",
6954 "href": "file:///C:/",
6955 "protocol": "file:",
6956 "username": "",
6957 "password": "",
6958 "host": "",
6959 "hostname": "",
6960 "port": "",
6961 "pathname": "/C:/",
6962 "search": "",
6963 "hash": ""
6964 },
6965 "# Windows drive letter quirk (no host)",
6966 {
6967 "input": "file:/C|/",
6968 "base": null,
6969 "href": "file:///C:/",
6970 "protocol": "file:",
6971 "username": "",
6972 "password": "",
6973 "host": "",
6974 "hostname": "",
6975 "port": "",
6976 "pathname": "/C:/",
6977 "search": "",
6978 "hash": ""
6979 },
6980 {
6981 "input": "file://C|/",
6982 "base": null,
6983 "href": "file:///C:/",
6984 "protocol": "file:",
6985 "username": "",
6986 "password": "",
6987 "host": "",
6988 "hostname": "",
6989 "port": "",
6990 "pathname": "/C:/",
6991 "search": "",
6992 "hash": ""
6993 },
6994 "# file URLs without base URL by Rimas Misevičius",
6995 {
6996 "input": "file:",
6997 "base": null,
6998 "href": "file:///",
6999 "protocol": "file:",
7000 "username": "",
7001 "password": "",
7002 "host": "",
7003 "hostname": "",
7004 "port": "",
7005 "pathname": "/",
7006 "search": "",
7007 "hash": ""
7008 },
7009 {
7010 "input": "file:?q=v",
7011 "base": null,
7012 "href": "file:///?q=v",
7013 "protocol": "file:",
7014 "username": "",
7015 "password": "",
7016 "host": "",
7017 "hostname": "",
7018 "port": "",
7019 "pathname": "/",
7020 "search": "?q=v",
7021 "hash": ""
7022 },
7023 {
7024 "input": "file:#frag",
7025 "base": null,
7026 "href": "file:///#frag",
7027 "protocol": "file:",
7028 "username": "",
7029 "password": "",
7030 "host": "",
7031 "hostname": "",
7032 "port": "",
7033 "pathname": "/",
7034 "search": "",
7035 "hash": "#frag"
7036 },
7037 "# file: drive letter cases from https://crbug.com/1078698",
7038 {
7039 "input": "file:///Y:",
7040 "base": null,
7041 "href": "file:///Y:",
7042 "protocol": "file:",
7043 "username": "",
7044 "password": "",
7045 "host": "",
7046 "hostname": "",
7047 "port": "",
7048 "pathname": "/Y:",
7049 "search": "",
7050 "hash": ""
7051 },
7052 {
7053 "input": "file:///Y:/",
7054 "base": null,
7055 "href": "file:///Y:/",
7056 "protocol": "file:",
7057 "username": "",
7058 "password": "",
7059 "host": "",
7060 "hostname": "",
7061 "port": "",
7062 "pathname": "/Y:/",
7063 "search": "",
7064 "hash": ""
7065 },
7066 {
7067 "input": "file:///./Y",
7068 "base": null,
7069 "href": "file:///Y",
7070 "protocol": "file:",
7071 "username": "",
7072 "password": "",
7073 "host": "",
7074 "hostname": "",
7075 "port": "",
7076 "pathname": "/Y",
7077 "search": "",
7078 "hash": ""
7079 },
7080 {
7081 "input": "file:///./Y:",
7082 "base": null,
7083 "href": "file:///Y:",
7084 "protocol": "file:",
7085 "username": "",
7086 "password": "",
7087 "host": "",
7088 "hostname": "",
7089 "port": "",
7090 "pathname": "/Y:",
7091 "search": "",
7092 "hash": ""
7093 },
7094 {
7095 "input": "\\\\\\.\\Y:",
7096 "base": null,
7097 "failure": true,
7098 "relativeTo": "non-opaque-path-base"
7099 },
7100 "# file: drive letter cases from https://crbug.com/1078698 but lowercased",
7101 {
7102 "input": "file:///y:",
7103 "base": null,
7104 "href": "file:///y:",
7105 "protocol": "file:",
7106 "username": "",
7107 "password": "",
7108 "host": "",
7109 "hostname": "",
7110 "port": "",
7111 "pathname": "/y:",
7112 "search": "",
7113 "hash": ""
7114 },
7115 {
7116 "input": "file:///y:/",
7117 "base": null,
7118 "href": "file:///y:/",
7119 "protocol": "file:",
7120 "username": "",
7121 "password": "",
7122 "host": "",
7123 "hostname": "",
7124 "port": "",
7125 "pathname": "/y:/",
7126 "search": "",
7127 "hash": ""
7128 },
7129 {
7130 "input": "file:///./y",
7131 "base": null,
7132 "href": "file:///y",
7133 "protocol": "file:",
7134 "username": "",
7135 "password": "",
7136 "host": "",
7137 "hostname": "",
7138 "port": "",
7139 "pathname": "/y",
7140 "search": "",
7141 "hash": ""
7142 },
7143 {
7144 "input": "file:///./y:",
7145 "base": null,
7146 "href": "file:///y:",
7147 "protocol": "file:",
7148 "username": "",
7149 "password": "",
7150 "host": "",
7151 "hostname": "",
7152 "port": "",
7153 "pathname": "/y:",
7154 "search": "",
7155 "hash": ""
7156 },
7157 {
7158 "input": "\\\\\\.\\y:",
7159 "base": null,
7160 "failure": true,
7161 "relativeTo": "non-opaque-path-base"
7162 },
7163 "# Additional file URL tests for (https://github.com/whatwg/url/issues/405)",
7164 {
7165 "input": "file://localhost//a//../..//foo",
7166 "base": null,
7167 "href": "file://///foo",
7168 "protocol": "file:",
7169 "username": "",
7170 "password": "",
7171 "host": "",
7172 "hostname": "",
7173 "port": "",
7174 "pathname": "///foo",
7175 "search": "",
7176 "hash": ""
7177 },
7178 {
7179 "input": "file://localhost////foo",
7180 "base": null,
7181 "href": "file://////foo",
7182 "protocol": "file:",
7183 "username": "",
7184 "password": "",
7185 "host": "",
7186 "hostname": "",
7187 "port": "",
7188 "pathname": "////foo",
7189 "search": "",
7190 "hash": ""
7191 },
7192 {
7193 "input": "file:////foo",
7194 "base": null,
7195 "href": "file:////foo",
7196 "protocol": "file:",
7197 "username": "",
7198 "password": "",
7199 "host": "",
7200 "hostname": "",
7201 "port": "",
7202 "pathname": "//foo",
7203 "search": "",
7204 "hash": ""
7205 },
7206 {
7207 "input": "file:///one/two",
7208 "base": "file:///",
7209 "href": "file:///one/two",
7210 "protocol": "file:",
7211 "username": "",
7212 "password": "",
7213 "host": "",
7214 "hostname": "",
7215 "port": "",
7216 "pathname": "/one/two",
7217 "search": "",
7218 "hash": ""
7219 },
7220 {
7221 "input": "file:////one/two",
7222 "base": "file:///",
7223 "href": "file:////one/two",
7224 "protocol": "file:",
7225 "username": "",
7226 "password": "",
7227 "host": "",
7228 "hostname": "",
7229 "port": "",
7230 "pathname": "//one/two",
7231 "search": "",
7232 "hash": ""
7233 },
7234 {
7235 "input": "//one/two",
7236 "base": "file:///",
7237 "href": "file://one/two",
7238 "protocol": "file:",
7239 "username": "",
7240 "password": "",
7241 "host": "one",
7242 "hostname": "one",
7243 "port": "",
7244 "pathname": "/two",
7245 "search": "",
7246 "hash": ""
7247 },
7248 {
7249 "input": "///one/two",
7250 "base": "file:///",
7251 "href": "file:///one/two",
7252 "protocol": "file:",
7253 "username": "",
7254 "password": "",
7255 "host": "",
7256 "hostname": "",
7257 "port": "",
7258 "pathname": "/one/two",
7259 "search": "",
7260 "hash": ""
7261 },
7262 {
7263 "input": "////one/two",
7264 "base": "file:///",
7265 "href": "file:////one/two",
7266 "protocol": "file:",
7267 "username": "",
7268 "password": "",
7269 "host": "",
7270 "hostname": "",
7271 "port": "",
7272 "pathname": "//one/two",
7273 "search": "",
7274 "hash": ""
7275 },
7276 {
7277 "input": "file:///.//",
7278 "base": "file:////",
7279 "href": "file:////",
7280 "protocol": "file:",
7281 "username": "",
7282 "password": "",
7283 "host": "",
7284 "hostname": "",
7285 "port": "",
7286 "pathname": "//",
7287 "search": "",
7288 "hash": ""
7289 },
7290 "File URL tests for https://github.com/whatwg/url/issues/549",
7291 {
7292 "input": "file:.//p",
7293 "base": null,
7294 "href": "file:////p",
7295 "protocol": "file:",
7296 "username": "",
7297 "password": "",
7298 "host": "",
7299 "hostname": "",
7300 "port": "",
7301 "pathname": "//p",
7302 "search": "",
7303 "hash": ""
7304 },
7305 {
7306 "input": "file:/.//p",
7307 "base": null,
7308 "href": "file:////p",
7309 "protocol": "file:",
7310 "username": "",
7311 "password": "",
7312 "host": "",
7313 "hostname": "",
7314 "port": "",
7315 "pathname": "//p",
7316 "search": "",
7317 "hash": ""
7318 },
7319 "# IPv6 tests",
7320 {
7321 "input": "http://[1:0::]",
7322 "base": "http://example.net/",
7323 "href": "http://[1::]/",
7324 "origin": "http://[1::]",
7325 "protocol": "http:",
7326 "username": "",
7327 "password": "",
7328 "host": "[1::]",
7329 "hostname": "[1::]",
7330 "port": "",
7331 "pathname": "/",
7332 "search": "",
7333 "hash": ""
7334 },
7335 {
7336 "input": "http://[0:1:2:3:4:5:6:7:8]",
7337 "base": "http://example.net/",
7338 "failure": true
7339 },
7340 {
7341 "input": "https://[0::0::0]",
7342 "base": null,
7343 "failure": true
7344 },
7345 {
7346 "input": "https://[0:.0]",
7347 "base": null,
7348 "failure": true
7349 },
7350 {
7351 "input": "https://[0:0:]",
7352 "base": null,
7353 "failure": true
7354 },
7355 {
7356 "input": "https://[0:1:2:3:4:5:6:7.0.0.0.1]",
7357 "base": null,
7358 "failure": true
7359 },
7360 {
7361 "input": "https://[0:1.00.0.0.0]",
7362 "base": null,
7363 "failure": true
7364 },
7365 {
7366 "input": "https://[0:1.290.0.0.0]",
7367 "base": null,
7368 "failure": true
7369 },
7370 {
7371 "input": "https://[0:1.23.23]",
7372 "base": null,
7373 "failure": true
7374 },
7375 "# Empty host",
7376 {
7377 "input": "http://?",
7378 "base": null,
7379 "failure": true
7380 },
7381 {
7382 "input": "http://#",
7383 "base": null,
7384 "failure": true
7385 },
7386 "Port overflow (2^32 + 81)",
7387 {
7388 "input": "http://f:4294967377/c",
7389 "base": "http://example.org/",
7390 "failure": true
7391 },
7392 "Port overflow (2^64 + 81)",
7393 {
7394 "input": "http://f:18446744073709551697/c",
7395 "base": "http://example.org/",
7396 "failure": true
7397 },
7398 "Port overflow (2^128 + 81)",
7399 {
7400 "input": "http://f:340282366920938463463374607431768211537/c",
7401 "base": "http://example.org/",
7402 "failure": true
7403 },
7404 "# Non-special-URL path tests",
7405 {
7406 "input": "sc://ñ",
7407 "base": null,
7408 "href": "sc://%C3%B1",
7409 "origin": "null",
7410 "protocol": "sc:",
7411 "username": "",
7412 "password": "",
7413 "host": "%C3%B1",
7414 "hostname": "%C3%B1",
7415 "port": "",
7416 "pathname": "",
7417 "search": "",
7418 "hash": ""
7419 },
7420 {
7421 "input": "sc://ñ?x",
7422 "base": null,
7423 "href": "sc://%C3%B1?x",
7424 "origin": "null",
7425 "protocol": "sc:",
7426 "username": "",
7427 "password": "",
7428 "host": "%C3%B1",
7429 "hostname": "%C3%B1",
7430 "port": "",
7431 "pathname": "",
7432 "search": "?x",
7433 "hash": ""
7434 },
7435 {
7436 "input": "sc://ñ#x",
7437 "base": null,
7438 "href": "sc://%C3%B1#x",
7439 "origin": "null",
7440 "protocol": "sc:",
7441 "username": "",
7442 "password": "",
7443 "host": "%C3%B1",
7444 "hostname": "%C3%B1",
7445 "port": "",
7446 "pathname": "",
7447 "search": "",
7448 "hash": "#x"
7449 },
7450 {
7451 "input": "#x",
7452 "base": "sc://ñ",
7453 "href": "sc://%C3%B1#x",
7454 "origin": "null",
7455 "protocol": "sc:",
7456 "username": "",
7457 "password": "",
7458 "host": "%C3%B1",
7459 "hostname": "%C3%B1",
7460 "port": "",
7461 "pathname": "",
7462 "search": "",
7463 "hash": "#x"
7464 },
7465 {
7466 "input": "?x",
7467 "base": "sc://ñ",
7468 "href": "sc://%C3%B1?x",
7469 "origin": "null",
7470 "protocol": "sc:",
7471 "username": "",
7472 "password": "",
7473 "host": "%C3%B1",
7474 "hostname": "%C3%B1",
7475 "port": "",
7476 "pathname": "",
7477 "search": "?x",
7478 "hash": ""
7479 },
7480 {
7481 "input": "sc://?",
7482 "base": null,
7483 "href": "sc://?",
7484 "protocol": "sc:",
7485 "username": "",
7486 "password": "",
7487 "host": "",
7488 "hostname": "",
7489 "port": "",
7490 "pathname": "",
7491 "search": "",
7492 "hash": ""
7493 },
7494 {
7495 "input": "sc://#",
7496 "base": null,
7497 "href": "sc://#",
7498 "protocol": "sc:",
7499 "username": "",
7500 "password": "",
7501 "host": "",
7502 "hostname": "",
7503 "port": "",
7504 "pathname": "",
7505 "search": "",
7506 "hash": ""
7507 },
7508 {
7509 "input": "///",
7510 "base": "sc://x/",
7511 "href": "sc:///",
7512 "protocol": "sc:",
7513 "username": "",
7514 "password": "",
7515 "host": "",
7516 "hostname": "",
7517 "port": "",
7518 "pathname": "/",
7519 "search": "",
7520 "hash": ""
7521 },
7522 {
7523 "input": "////",
7524 "base": "sc://x/",
7525 "href": "sc:////",
7526 "protocol": "sc:",
7527 "username": "",
7528 "password": "",
7529 "host": "",
7530 "hostname": "",
7531 "port": "",
7532 "pathname": "//",
7533 "search": "",
7534 "hash": ""
7535 },
7536 {
7537 "input": "////x/",
7538 "base": "sc://x/",
7539 "href": "sc:////x/",
7540 "protocol": "sc:",
7541 "username": "",
7542 "password": "",
7543 "host": "",
7544 "hostname": "",
7545 "port": "",
7546 "pathname": "//x/",
7547 "search": "",
7548 "hash": ""
7549 },
7550 {
7551 "input": "tftp://foobar.com/someconfig;mode=netascii",
7552 "base": null,
7553 "href": "tftp://foobar.com/someconfig;mode=netascii",
7554 "origin": "null",
7555 "protocol": "tftp:",
7556 "username": "",
7557 "password": "",
7558 "host": "foobar.com",
7559 "hostname": "foobar.com",
7560 "port": "",
7561 "pathname": "/someconfig;mode=netascii",
7562 "search": "",
7563 "hash": ""
7564 },
7565 {
7566 "input": "telnet://user:pass@foobar.com:23/",
7567 "base": null,
7568 "href": "telnet://user:pass@foobar.com:23/",
7569 "origin": "null",
7570 "protocol": "telnet:",
7571 "username": "user",
7572 "password": "pass",
7573 "host": "foobar.com:23",
7574 "hostname": "foobar.com",
7575 "port": "23",
7576 "pathname": "/",
7577 "search": "",
7578 "hash": ""
7579 },
7580 {
7581 "input": "ut2004://10.10.10.10:7777/Index.ut2",
7582 "base": null,
7583 "href": "ut2004://10.10.10.10:7777/Index.ut2",
7584 "origin": "null",
7585 "protocol": "ut2004:",
7586 "username": "",
7587 "password": "",
7588 "host": "10.10.10.10:7777",
7589 "hostname": "10.10.10.10",
7590 "port": "7777",
7591 "pathname": "/Index.ut2",
7592 "search": "",
7593 "hash": ""
7594 },
7595 {
7596 "input": "redis://foo:bar@somehost:6379/0?baz=bam&qux=baz",
7597 "base": null,
7598 "href": "redis://foo:bar@somehost:6379/0?baz=bam&qux=baz",
7599 "origin": "null",
7600 "protocol": "redis:",
7601 "username": "foo",
7602 "password": "bar",
7603 "host": "somehost:6379",
7604 "hostname": "somehost",
7605 "port": "6379",
7606 "pathname": "/0",
7607 "search": "?baz=bam&qux=baz",
7608 "hash": ""
7609 },
7610 {
7611 "input": "rsync://foo@host:911/sup",
7612 "base": null,
7613 "href": "rsync://foo@host:911/sup",
7614 "origin": "null",
7615 "protocol": "rsync:",
7616 "username": "foo",
7617 "password": "",
7618 "host": "host:911",
7619 "hostname": "host",
7620 "port": "911",
7621 "pathname": "/sup",
7622 "search": "",
7623 "hash": ""
7624 },
7625 {
7626 "input": "git://github.com/foo/bar.git",
7627 "base": null,
7628 "href": "git://github.com/foo/bar.git",
7629 "origin": "null",
7630 "protocol": "git:",
7631 "username": "",
7632 "password": "",
7633 "host": "github.com",
7634 "hostname": "github.com",
7635 "port": "",
7636 "pathname": "/foo/bar.git",
7637 "search": "",
7638 "hash": ""
7639 },
7640 {
7641 "input": "irc://myserver.com:6999/channel?passwd",
7642 "base": null,
7643 "href": "irc://myserver.com:6999/channel?passwd",
7644 "origin": "null",
7645 "protocol": "irc:",
7646 "username": "",
7647 "password": "",
7648 "host": "myserver.com:6999",
7649 "hostname": "myserver.com",
7650 "port": "6999",
7651 "pathname": "/channel",
7652 "search": "?passwd",
7653 "hash": ""
7654 },
7655 {
7656 "input": "dns://fw.example.org:9999/foo.bar.org?type=TXT",
7657 "base": null,
7658 "href": "dns://fw.example.org:9999/foo.bar.org?type=TXT",
7659 "origin": "null",
7660 "protocol": "dns:",
7661 "username": "",
7662 "password": "",
7663 "host": "fw.example.org:9999",
7664 "hostname": "fw.example.org",
7665 "port": "9999",
7666 "pathname": "/foo.bar.org",
7667 "search": "?type=TXT",
7668 "hash": ""
7669 },
7670 {
7671 "input": "ldap://localhost:389/ou=People,o=JNDITutorial",
7672 "base": null,
7673 "href": "ldap://localhost:389/ou=People,o=JNDITutorial",
7674 "origin": "null",
7675 "protocol": "ldap:",
7676 "username": "",
7677 "password": "",
7678 "host": "localhost:389",
7679 "hostname": "localhost",
7680 "port": "389",
7681 "pathname": "/ou=People,o=JNDITutorial",
7682 "search": "",
7683 "hash": ""
7684 },
7685 {
7686 "input": "git+https://github.com/foo/bar",
7687 "base": null,
7688 "href": "git+https://github.com/foo/bar",
7689 "origin": "null",
7690 "protocol": "git+https:",
7691 "username": "",
7692 "password": "",
7693 "host": "github.com",
7694 "hostname": "github.com",
7695 "port": "",
7696 "pathname": "/foo/bar",
7697 "search": "",
7698 "hash": ""
7699 },
7700 {
7701 "input": "urn:ietf:rfc:2648",
7702 "base": null,
7703 "href": "urn:ietf:rfc:2648",
7704 "origin": "null",
7705 "protocol": "urn:",
7706 "username": "",
7707 "password": "",
7708 "host": "",
7709 "hostname": "",
7710 "port": "",
7711 "pathname": "ietf:rfc:2648",
7712 "search": "",
7713 "hash": ""
7714 },
7715 {
7716 "input": "tag:joe@example.org,2001:foo/bar",
7717 "base": null,
7718 "href": "tag:joe@example.org,2001:foo/bar",
7719 "origin": "null",
7720 "protocol": "tag:",
7721 "username": "",
7722 "password": "",
7723 "host": "",
7724 "hostname": "",
7725 "port": "",
7726 "pathname": "joe@example.org,2001:foo/bar",
7727 "search": "",
7728 "hash": ""
7729 },
7730 "Serialize /. in path",
7731 {
7732 "input": "non-spec:/.//",
7733 "base": null,
7734 "href": "non-spec:/.//",
7735 "protocol": "non-spec:",
7736 "username": "",
7737 "password": "",
7738 "host": "",
7739 "hostname": "",
7740 "port": "",
7741 "pathname": "//",
7742 "search": "",
7743 "hash": ""
7744 },
7745 {
7746 "input": "non-spec:/..//",
7747 "base": null,
7748 "href": "non-spec:/.//",
7749 "protocol": "non-spec:",
7750 "username": "",
7751 "password": "",
7752 "host": "",
7753 "hostname": "",
7754 "port": "",
7755 "pathname": "//",
7756 "search": "",
7757 "hash": ""
7758 },
7759 {
7760 "input": "non-spec:/a/..//",
7761 "base": null,
7762 "href": "non-spec:/.//",
7763 "protocol": "non-spec:",
7764 "username": "",
7765 "password": "",
7766 "host": "",
7767 "hostname": "",
7768 "port": "",
7769 "pathname": "//",
7770 "search": "",
7771 "hash": ""
7772 },
7773 {
7774 "input": "non-spec:/.//path",
7775 "base": null,
7776 "href": "non-spec:/.//path",
7777 "protocol": "non-spec:",
7778 "username": "",
7779 "password": "",
7780 "host": "",
7781 "hostname": "",
7782 "port": "",
7783 "pathname": "//path",
7784 "search": "",
7785 "hash": ""
7786 },
7787 {
7788 "input": "non-spec:/..//path",
7789 "base": null,
7790 "href": "non-spec:/.//path",
7791 "protocol": "non-spec:",
7792 "username": "",
7793 "password": "",
7794 "host": "",
7795 "hostname": "",
7796 "port": "",
7797 "pathname": "//path",
7798 "search": "",
7799 "hash": ""
7800 },
7801 {
7802 "input": "non-spec:/a/..//path",
7803 "base": null,
7804 "href": "non-spec:/.//path",
7805 "protocol": "non-spec:",
7806 "username": "",
7807 "password": "",
7808 "host": "",
7809 "hostname": "",
7810 "port": "",
7811 "pathname": "//path",
7812 "search": "",
7813 "hash": ""
7814 },
7815 {
7816 "input": "/.//path",
7817 "base": "non-spec:/p",
7818 "href": "non-spec:/.//path",
7819 "protocol": "non-spec:",
7820 "username": "",
7821 "password": "",
7822 "host": "",
7823 "hostname": "",
7824 "port": "",
7825 "pathname": "//path",
7826 "search": "",
7827 "hash": ""
7828 },
7829 {
7830 "input": "/..//path",
7831 "base": "non-spec:/p",
7832 "href": "non-spec:/.//path",
7833 "protocol": "non-spec:",
7834 "username": "",
7835 "password": "",
7836 "host": "",
7837 "hostname": "",
7838 "port": "",
7839 "pathname": "//path",
7840 "search": "",
7841 "hash": ""
7842 },
7843 {
7844 "input": "..//path",
7845 "base": "non-spec:/p",
7846 "href": "non-spec:/.//path",
7847 "protocol": "non-spec:",
7848 "username": "",
7849 "password": "",
7850 "host": "",
7851 "hostname": "",
7852 "port": "",
7853 "pathname": "//path",
7854 "search": "",
7855 "hash": ""
7856 },
7857 {
7858 "input": "a/..//path",
7859 "base": "non-spec:/p",
7860 "href": "non-spec:/.//path",
7861 "protocol": "non-spec:",
7862 "username": "",
7863 "password": "",
7864 "host": "",
7865 "hostname": "",
7866 "port": "",
7867 "pathname": "//path",
7868 "search": "",
7869 "hash": ""
7870 },
7871 {
7872 "input": "",
7873 "base": "non-spec:/..//p",
7874 "href": "non-spec:/.//p",
7875 "protocol": "non-spec:",
7876 "username": "",
7877 "password": "",
7878 "host": "",
7879 "hostname": "",
7880 "port": "",
7881 "pathname": "//p",
7882 "search": "",
7883 "hash": ""
7884 },
7885 {
7886 "input": "path",
7887 "base": "non-spec:/..//p",
7888 "href": "non-spec:/.//path",
7889 "protocol": "non-spec:",
7890 "username": "",
7891 "password": "",
7892 "host": "",
7893 "hostname": "",
7894 "port": "",
7895 "pathname": "//path",
7896 "search": "",
7897 "hash": ""
7898 },
7899 "Do not serialize /. in path",
7900 {
7901 "input": "../path",
7902 "base": "non-spec:/.//p",
7903 "href": "non-spec:/path",
7904 "protocol": "non-spec:",
7905 "username": "",
7906 "password": "",
7907 "host": "",
7908 "hostname": "",
7909 "port": "",
7910 "pathname": "/path",
7911 "search": "",
7912 "hash": ""
7913 },
7914 "# percent encoded hosts in non-special-URLs",
7915 {
7916 "input": "non-special://%E2%80%A0/",
7917 "base": null,
7918 "href": "non-special://%E2%80%A0/",
7919 "protocol": "non-special:",
7920 "username": "",
7921 "password": "",
7922 "host": "%E2%80%A0",
7923 "hostname": "%E2%80%A0",
7924 "port": "",
7925 "pathname": "/",
7926 "search": "",
7927 "hash": ""
7928 },
7929 {
7930 "input": "non-special://H%4fSt/path",
7931 "base": null,
7932 "href": "non-special://H%4fSt/path",
7933 "protocol": "non-special:",
7934 "username": "",
7935 "password": "",
7936 "host": "H%4fSt",
7937 "hostname": "H%4fSt",
7938 "port": "",
7939 "pathname": "/path",
7940 "search": "",
7941 "hash": ""
7942 },
7943 "# IPv6 in non-special-URLs",
7944 {
7945 "input": "non-special://[1:2:0:0:5:0:0:0]/",
7946 "base": null,
7947 "href": "non-special://[1:2:0:0:5::]/",
7948 "protocol": "non-special:",
7949 "username": "",
7950 "password": "",
7951 "host": "[1:2:0:0:5::]",
7952 "hostname": "[1:2:0:0:5::]",
7953 "port": "",
7954 "pathname": "/",
7955 "search": "",
7956 "hash": ""
7957 },
7958 {
7959 "input": "non-special://[1:2:0:0:0:0:0:3]/",
7960 "base": null,
7961 "href": "non-special://[1:2::3]/",
7962 "protocol": "non-special:",
7963 "username": "",
7964 "password": "",
7965 "host": "[1:2::3]",
7966 "hostname": "[1:2::3]",
7967 "port": "",
7968 "pathname": "/",
7969 "search": "",
7970 "hash": ""
7971 },
7972 {
7973 "input": "non-special://[1:2::3]:80/",
7974 "base": null,
7975 "href": "non-special://[1:2::3]:80/",
7976 "protocol": "non-special:",
7977 "username": "",
7978 "password": "",
7979 "host": "[1:2::3]:80",
7980 "hostname": "[1:2::3]",
7981 "port": "80",
7982 "pathname": "/",
7983 "search": "",
7984 "hash": ""
7985 },
7986 {
7987 "input": "non-special://[:80/",
7988 "base": null,
7989 "failure": true
7990 },
7991 {
7992 "input": "blob:https://example.com:443/",
7993 "base": null,
7994 "href": "blob:https://example.com:443/",
7995 "origin": "https://example.com",
7996 "protocol": "blob:",
7997 "username": "",
7998 "password": "",
7999 "host": "",
8000 "hostname": "",
8001 "port": "",
8002 "pathname": "https://example.com:443/",
8003 "search": "",
8004 "hash": ""
8005 },
8006 {
8007 "input": "blob:http://example.org:88/",
8008 "base": null,
8009 "href": "blob:http://example.org:88/",
8010 "origin": "http://example.org:88",
8011 "protocol": "blob:",
8012 "username": "",
8013 "password": "",
8014 "host": "",
8015 "hostname": "",
8016 "port": "",
8017 "pathname": "http://example.org:88/",
8018 "search": "",
8019 "hash": ""
8020 },
8021 {
8022 "input": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf",
8023 "base": null,
8024 "href": "blob:d3958f5c-0777-0845-9dcf-2cb28783acaf",
8025 "origin": "null",
8026 "protocol": "blob:",
8027 "username": "",
8028 "password": "",
8029 "host": "",
8030 "hostname": "",
8031 "port": "",
8032 "pathname": "d3958f5c-0777-0845-9dcf-2cb28783acaf",
8033 "search": "",
8034 "hash": ""
8035 },
8036 {
8037 "input": "blob:",
8038 "base": null,
8039 "href": "blob:",
8040 "origin": "null",
8041 "protocol": "blob:",
8042 "username": "",
8043 "password": "",
8044 "host": "",
8045 "hostname": "",
8046 "port": "",
8047 "pathname": "",
8048 "search": "",
8049 "hash": ""
8050 },
8051 "blob: in blob:",
8052 {
8053 "input": "blob:blob:",
8054 "base": null,
8055 "href": "blob:blob:",
8056 "origin": "null",
8057 "protocol": "blob:",
8058 "username": "",
8059 "password": "",
8060 "host": "",
8061 "hostname": "",
8062 "port": "",
8063 "pathname": "blob:",
8064 "search": "",
8065 "hash": ""
8066 },
8067 {
8068 "input": "blob:blob:https://example.org/",
8069 "base": null,
8070 "href": "blob:blob:https://example.org/",
8071 "origin": "null",
8072 "protocol": "blob:",
8073 "username": "",
8074 "password": "",
8075 "host": "",
8076 "hostname": "",
8077 "port": "",
8078 "pathname": "blob:https://example.org/",
8079 "search": "",
8080 "hash": ""
8081 },
8082 "Non-http(s): in blob:",
8083 {
8084 "input": "blob:about:blank",
8085 "base": null,
8086 "href": "blob:about:blank",
8087 "origin": "null",
8088 "protocol": "blob:",
8089 "username": "",
8090 "password": "",
8091 "host": "",
8092 "hostname": "",
8093 "port": "",
8094 "pathname": "about:blank",
8095 "search": "",
8096 "hash": ""
8097 },
8098 {
8099 "input": "blob:file://host/path",
8100 "base": null,
8101 "href": "blob:file://host/path",
8102 "protocol": "blob:",
8103 "username": "",
8104 "password": "",
8105 "host": "",
8106 "hostname": "",
8107 "port": "",
8108 "pathname": "file://host/path",
8109 "search": "",
8110 "hash": ""
8111 },
8112 {
8113 "input": "blob:ftp://host/path",
8114 "base": null,
8115 "href": "blob:ftp://host/path",
8116 "origin": "null",
8117 "protocol": "blob:",
8118 "username": "",
8119 "password": "",
8120 "host": "",
8121 "hostname": "",
8122 "port": "",
8123 "pathname": "ftp://host/path",
8124 "search": "",
8125 "hash": ""
8126 },
8127 {
8128 "input": "blob:ws://example.org/",
8129 "base": null,
8130 "href": "blob:ws://example.org/",
8131 "origin": "null",
8132 "protocol": "blob:",
8133 "username": "",
8134 "password": "",
8135 "host": "",
8136 "hostname": "",
8137 "port": "",
8138 "pathname": "ws://example.org/",
8139 "search": "",
8140 "hash": ""
8141 },
8142 {
8143 "input": "blob:wss://example.org/",
8144 "base": null,
8145 "href": "blob:wss://example.org/",
8146 "origin": "null",
8147 "protocol": "blob:",
8148 "username": "",
8149 "password": "",
8150 "host": "",
8151 "hostname": "",
8152 "port": "",
8153 "pathname": "wss://example.org/",
8154 "search": "",
8155 "hash": ""
8156 },
8157 "Percent-encoded http: in blob:",
8158 {
8159 "input": "blob:http%3a//example.org/",
8160 "base": null,
8161 "href": "blob:http%3a//example.org/",
8162 "origin": "null",
8163 "protocol": "blob:",
8164 "username": "",
8165 "password": "",
8166 "host": "",
8167 "hostname": "",
8168 "port": "",
8169 "pathname": "http%3a//example.org/",
8170 "search": "",
8171 "hash": ""
8172 },
8173 "Invalid IPv4 radix digits",
8174 {
8175 "input": "http://0x7f.0.0.0x7g",
8176 "base": null,
8177 "href": "http://0x7f.0.0.0x7g/",
8178 "protocol": "http:",
8179 "username": "",
8180 "password": "",
8181 "host": "0x7f.0.0.0x7g",
8182 "hostname": "0x7f.0.0.0x7g",
8183 "port": "",
8184 "pathname": "/",
8185 "search": "",
8186 "hash": ""
8187 },
8188 {
8189 "input": "http://0X7F.0.0.0X7G",
8190 "base": null,
8191 "href": "http://0x7f.0.0.0x7g/",
8192 "protocol": "http:",
8193 "username": "",
8194 "password": "",
8195 "host": "0x7f.0.0.0x7g",
8196 "hostname": "0x7f.0.0.0x7g",
8197 "port": "",
8198 "pathname": "/",
8199 "search": "",
8200 "hash": ""
8201 },
8202 "Invalid IPv4 portion of IPv6 address",
8203 {
8204 "input": "http://[::127.0.0.0.1]",
8205 "base": null,
8206 "failure": true
8207 },
8208 "Uncompressed IPv6 addresses with 0",
8209 {
8210 "input": "http://[0:1:0:1:0:1:0:1]",
8211 "base": null,
8212 "href": "http://[0:1:0:1:0:1:0:1]/",
8213 "protocol": "http:",
8214 "username": "",
8215 "password": "",
8216 "host": "[0:1:0:1:0:1:0:1]",
8217 "hostname": "[0:1:0:1:0:1:0:1]",
8218 "port": "",
8219 "pathname": "/",
8220 "search": "",
8221 "hash": ""
8222 },
8223 {
8224 "input": "http://[1:0:1:0:1:0:1:0]",
8225 "base": null,
8226 "href": "http://[1:0:1:0:1:0:1:0]/",
8227 "protocol": "http:",
8228 "username": "",
8229 "password": "",
8230 "host": "[1:0:1:0:1:0:1:0]",
8231 "hostname": "[1:0:1:0:1:0:1:0]",
8232 "port": "",
8233 "pathname": "/",
8234 "search": "",
8235 "hash": ""
8236 },
8237 "Percent-encoded query and fragment",
8238 {
8239 "input": "http://example.org/test?\u0022",
8240 "base": null,
8241 "href": "http://example.org/test?%22",
8242 "protocol": "http:",
8243 "username": "",
8244 "password": "",
8245 "host": "example.org",
8246 "hostname": "example.org",
8247 "port": "",
8248 "pathname": "/test",
8249 "search": "?%22",
8250 "hash": ""
8251 },
8252 {
8253 "input": "http://example.org/test?\u0023",
8254 "base": null,
8255 "href": "http://example.org/test?#",
8256 "protocol": "http:",
8257 "username": "",
8258 "password": "",
8259 "host": "example.org",
8260 "hostname": "example.org",
8261 "port": "",
8262 "pathname": "/test",
8263 "search": "",
8264 "hash": ""
8265 },
8266 {
8267 "input": "http://example.org/test?\u003C",
8268 "base": null,
8269 "href": "http://example.org/test?%3C",
8270 "protocol": "http:",
8271 "username": "",
8272 "password": "",
8273 "host": "example.org",
8274 "hostname": "example.org",
8275 "port": "",
8276 "pathname": "/test",
8277 "search": "?%3C",
8278 "hash": ""
8279 },
8280 {
8281 "input": "http://example.org/test?\u003E",
8282 "base": null,
8283 "href": "http://example.org/test?%3E",
8284 "protocol": "http:",
8285 "username": "",
8286 "password": "",
8287 "host": "example.org",
8288 "hostname": "example.org",
8289 "port": "",
8290 "pathname": "/test",
8291 "search": "?%3E",
8292 "hash": ""
8293 },
8294 {
8295 "input": "http://example.org/test?\u2323",
8296 "base": null,
8297 "href": "http://example.org/test?%E2%8C%A3",
8298 "protocol": "http:",
8299 "username": "",
8300 "password": "",
8301 "host": "example.org",
8302 "hostname": "example.org",
8303 "port": "",
8304 "pathname": "/test",
8305 "search": "?%E2%8C%A3",
8306 "hash": ""
8307 },
8308 {
8309 "input": "http://example.org/test?%23%23",
8310 "base": null,
8311 "href": "http://example.org/test?%23%23",
8312 "protocol": "http:",
8313 "username": "",
8314 "password": "",
8315 "host": "example.org",
8316 "hostname": "example.org",
8317 "port": "",
8318 "pathname": "/test",
8319 "search": "?%23%23",
8320 "hash": ""
8321 },
8322 {
8323 "input": "http://example.org/test?%GH",
8324 "base": null,
8325 "href": "http://example.org/test?%GH",
8326 "protocol": "http:",
8327 "username": "",
8328 "password": "",
8329 "host": "example.org",
8330 "hostname": "example.org",
8331 "port": "",
8332 "pathname": "/test",
8333 "search": "?%GH",
8334 "hash": ""
8335 },
8336 {
8337 "input": "http://example.org/test?a#%EF",
8338 "base": null,
8339 "href": "http://example.org/test?a#%EF",
8340 "protocol": "http:",
8341 "username": "",
8342 "password": "",
8343 "host": "example.org",
8344 "hostname": "example.org",
8345 "port": "",
8346 "pathname": "/test",
8347 "search": "?a",
8348 "hash": "#%EF"
8349 },
8350 {
8351 "input": "http://example.org/test?a#%GH",
8352 "base": null,
8353 "href": "http://example.org/test?a#%GH",
8354 "protocol": "http:",
8355 "username": "",
8356 "password": "",
8357 "host": "example.org",
8358 "hostname": "example.org",
8359 "port": "",
8360 "pathname": "/test",
8361 "search": "?a",
8362 "hash": "#%GH"
8363 },
8364 "URLs that require a non-about:blank base. (Also serve as invalid base tests.)",
8365 {
8366 "input": "a",
8367 "base": null,
8368 "failure": true,
8369 "relativeTo": "non-opaque-path-base"
8370 },
8371 {
8372 "input": "a/",
8373 "base": null,
8374 "failure": true,
8375 "relativeTo": "non-opaque-path-base"
8376 },
8377 {
8378 "input": "a//",
8379 "base": null,
8380 "failure": true,
8381 "relativeTo": "non-opaque-path-base"
8382 },
8383 "Bases that don't fail to parse but fail to be bases",
8384 {
8385 "input": "test-a-colon.html",
8386 "base": "a:",
8387 "failure": true
8388 },
8389 {
8390 "input": "test-a-colon-b.html",
8391 "base": "a:b",
8392 "failure": true
8393 },
8394 "Other base URL tests, that must succeed",
8395 {
8396 "input": "test-a-colon-slash.html",
8397 "base": "a:/",
8398 "href": "a:/test-a-colon-slash.html",
8399 "protocol": "a:",
8400 "username": "",
8401 "password": "",
8402 "host": "",
8403 "hostname": "",
8404 "port": "",
8405 "pathname": "/test-a-colon-slash.html",
8406 "search": "",
8407 "hash": ""
8408 },
8409 {
8410 "input": "test-a-colon-slash-slash.html",
8411 "base": "a://",
8412 "href": "a:///test-a-colon-slash-slash.html",
8413 "protocol": "a:",
8414 "username": "",
8415 "password": "",
8416 "host": "",
8417 "hostname": "",
8418 "port": "",
8419 "pathname": "/test-a-colon-slash-slash.html",
8420 "search": "",
8421 "hash": ""
8422 },
8423 {
8424 "input": "test-a-colon-slash-b.html",
8425 "base": "a:/b",
8426 "href": "a:/test-a-colon-slash-b.html",
8427 "protocol": "a:",
8428 "username": "",
8429 "password": "",
8430 "host": "",
8431 "hostname": "",
8432 "port": "",
8433 "pathname": "/test-a-colon-slash-b.html",
8434 "search": "",
8435 "hash": ""
8436 },
8437 {
8438 "input": "test-a-colon-slash-slash-b.html",
8439 "base": "a://b",
8440 "href": "a://b/test-a-colon-slash-slash-b.html",
8441 "protocol": "a:",
8442 "username": "",
8443 "password": "",
8444 "host": "b",
8445 "hostname": "b",
8446 "port": "",
8447 "pathname": "/test-a-colon-slash-slash-b.html",
8448 "search": "",
8449 "hash": ""
8450 },
8451 "Null code point in fragment",
8452 {
8453 "input": "http://example.org/test?a#b\u0000c",
8454 "base": null,
8455 "href": "http://example.org/test?a#b%00c",
8456 "protocol": "http:",
8457 "username": "",
8458 "password": "",
8459 "host": "example.org",
8460 "hostname": "example.org",
8461 "port": "",
8462 "pathname": "/test",
8463 "search": "?a",
8464 "hash": "#b%00c"
8465 },
8466 {
8467 "input": "non-spec://example.org/test?a#b\u0000c",
8468 "base": null,
8469 "href": "non-spec://example.org/test?a#b%00c",
8470 "protocol": "non-spec:",
8471 "username": "",
8472 "password": "",
8473 "host": "example.org",
8474 "hostname": "example.org",
8475 "port": "",
8476 "pathname": "/test",
8477 "search": "?a",
8478 "hash": "#b%00c"
8479 },
8480 {
8481 "input": "non-spec:/test?a#b\u0000c",
8482 "base": null,
8483 "href": "non-spec:/test?a#b%00c",
8484 "protocol": "non-spec:",
8485 "username": "",
8486 "password": "",
8487 "host": "",
8488 "hostname": "",
8489 "port": "",
8490 "pathname": "/test",
8491 "search": "?a",
8492 "hash": "#b%00c"
8493 },
8494 "First scheme char - not allowed: https://github.com/whatwg/url/issues/464",
8495 {
8496 "input": "10.0.0.7:8080/foo.html",
8497 "base": "file:///some/dir/bar.html",
8498 "href": "file:///some/dir/10.0.0.7:8080/foo.html",
8499 "protocol": "file:",
8500 "username": "",
8501 "password": "",
8502 "host": "",
8503 "hostname": "",
8504 "port": "",
8505 "pathname": "/some/dir/10.0.0.7:8080/foo.html",
8506 "search": "",
8507 "hash": ""
8508 },
8509 "Subsequent scheme chars - not allowed",
8510 {
8511 "input": "a!@$*=/foo.html",
8512 "base": "file:///some/dir/bar.html",
8513 "href": "file:///some/dir/a!@$*=/foo.html",
8514 "protocol": "file:",
8515 "username": "",
8516 "password": "",
8517 "host": "",
8518 "hostname": "",
8519 "port": "",
8520 "pathname": "/some/dir/a!@$*=/foo.html",
8521 "search": "",
8522 "hash": ""
8523 },
8524 "First and subsequent scheme chars - allowed",
8525 {
8526 "input": "a1234567890-+.:foo/bar",
8527 "base": "http://example.com/dir/file",
8528 "href": "a1234567890-+.:foo/bar",
8529 "protocol": "a1234567890-+.:",
8530 "username": "",
8531 "password": "",
8532 "host": "",
8533 "hostname": "",
8534 "port": "",
8535 "pathname": "foo/bar",
8536 "search": "",
8537 "hash": ""
8538 },
8539 "IDNA ignored code points in file URLs hosts",
8540 {
8541 "input": "file://a\u00ADb/p",
8542 "base": null,
8543 "href": "file://ab/p",
8544 "protocol": "file:",
8545 "username": "",
8546 "password": "",
8547 "host": "ab",
8548 "hostname": "ab",
8549 "port": "",
8550 "pathname": "/p",
8551 "search": "",
8552 "hash": ""
8553 },
8554 {
8555 "input": "file://a%C2%ADb/p",
8556 "base": null,
8557 "href": "file://ab/p",
8558 "protocol": "file:",
8559 "username": "",
8560 "password": "",
8561 "host": "ab",
8562 "hostname": "ab",
8563 "port": "",
8564 "pathname": "/p",
8565 "search": "",
8566 "hash": ""
8567 },
8568 "IDNA hostnames which get mapped to 'localhost'",
8569 {
8570 "input": "file://loC𝐀𝐋𝐇𝐨𝐬𝐭/usr/bin",
8571 "base": null,
8572 "href": "file:///usr/bin",
8573 "protocol": "file:",
8574 "username": "",
8575 "password": "",
8576 "host": "",
8577 "hostname": "",
8578 "port": "",
8579 "pathname": "/usr/bin",
8580 "search": "",
8581 "hash": ""
8582 },
8583 "Empty host after the domain to ASCII",
8584 {
8585 "input": "file://\u00ad/p",
8586 "base": null,
8587 "failure": true
8588 },
8589 {
8590 "input": "file://%C2%AD/p",
8591 "base": null,
8592 "failure": true
8593 },
8594 {
8595 "input": "file://xn--/p",
8596 "base": null,
8597 "failure": true
8598 },
8599 "https://bugzilla.mozilla.org/show_bug.cgi?id=1647058",
8600 {
8601 "input": "#link",
8602 "base": "https://example.org/##link",
8603 "href": "https://example.org/#link",
8604 "protocol": "https:",
8605 "username": "",
8606 "password": "",
8607 "host": "example.org",
8608 "hostname": "example.org",
8609 "port": "",
8610 "pathname": "/",
8611 "search": "",
8612 "hash": "#link"
8613 },
8614 "UTF-8 percent-encode of C0 control percent-encode set and supersets",
8615 {
8616 "input": "non-special:cannot-be-a-base-url-\u0000\u0001\u001F\u001E\u007E\u007F\u0080",
8617 "base": null,
8618 "hash": "",
8619 "host": "",
8620 "hostname": "",
8621 "href": "non-special:cannot-be-a-base-url-%00%01%1F%1E~%7F%C2%80",
8622 "origin": "null",
8623 "password": "",
8624 "pathname": "cannot-be-a-base-url-%00%01%1F%1E~%7F%C2%80",
8625 "port": "",
8626 "protocol": "non-special:",
8627 "search": "",
8628 "username": ""
8629 },
8630 {
8631 "input": "non-special:cannot-be-a-base-url-!\"$%&'()*+,-.;<=>@[\\]^_`{|}~@/",
8632 "base": null,
8633 "hash": "",
8634 "host": "",
8635 "hostname": "",
8636 "href": "non-special:cannot-be-a-base-url-!\"$%&'()*+,-.;<=>@[\\]^_`{|}~@/",
8637 "origin": "null",
8638 "password": "",
8639 "pathname": "cannot-be-a-base-url-!\"$%&'()*+,-.;<=>@[\\]^_`{|}~@/",
8640 "port": "",
8641 "protocol": "non-special:",
8642 "search": "",
8643 "username": ""
8644 },
8645 {
8646 "input": "https://www.example.com/path{\u007Fpath.html?query'\u007F=query#fragment<\u007Ffragment",
8647 "base": null,
8648 "hash": "#fragment%3C%7Ffragment",
8649 "host": "www.example.com",
8650 "hostname": "www.example.com",
8651 "href": "https://www.example.com/path%7B%7Fpath.html?query%27%7F=query#fragment%3C%7Ffragment",
8652 "origin": "https://www.example.com",
8653 "password": "",
8654 "pathname": "/path%7B%7Fpath.html",
8655 "port": "",
8656 "protocol": "https:",
8657 "search": "?query%27%7F=query",
8658 "username": ""
8659 },
8660 {
8661 "input": "https://user:pass[\u007F@foo/bar",
8662 "base": "http://example.org",
8663 "hash": "",
8664 "host": "foo",
8665 "hostname": "foo",
8666 "href": "https://user:pass%5B%7F@foo/bar",
8667 "origin": "https://foo",
8668 "password": "pass%5B%7F",
8669 "pathname": "/bar",
8670 "port": "",
8671 "protocol": "https:",
8672 "search": "",
8673 "username": "user"
8674 },
8675 "Tests for the distinct percent-encode sets",
8676 {
8677 "input": "foo:// !\"$%&'()*+,-.;<=>@[\\]^_`{|}~@host/",
8678 "base": null,
8679 "hash": "",
8680 "host": "host",
8681 "hostname": "host",
8682 "href": "foo://%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~@host/",
8683 "origin": "null",
8684 "password": "",
8685 "pathname": "/",
8686 "port":"",
8687 "protocol": "foo:",
8688 "search": "",
8689 "username": "%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~"
8690 },
8691 {
8692 "input": "wss:// !\"$%&'()*+,-.;<=>@[]^_`{|}~@host/",
8693 "base": null,
8694 "hash": "",
8695 "host": "host",
8696 "hostname": "host",
8697 "href": "wss://%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~@host/",
8698 "origin": "wss://host",
8699 "password": "",
8700 "pathname": "/",
8701 "port":"",
8702 "protocol": "wss:",
8703 "search": "",
8704 "username": "%20!%22$%&'()*+,-.%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~"
8705 },
8706 {
8707 "input": "foo://joe: !\"$%&'()*+,-.:;<=>@[\\]^_`{|}~@host/",
8708 "base": null,
8709 "hash": "",
8710 "host": "host",
8711 "hostname": "host",
8712 "href": "foo://joe:%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~@host/",
8713 "origin": "null",
8714 "password": "%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5C%5D%5E_%60%7B%7C%7D~",
8715 "pathname": "/",
8716 "port":"",
8717 "protocol": "foo:",
8718 "search": "",
8719 "username": "joe"
8720 },
8721 {
8722 "input": "wss://joe: !\"$%&'()*+,-.:;<=>@[]^_`{|}~@host/",
8723 "base": null,
8724 "hash": "",
8725 "host": "host",
8726 "hostname": "host",
8727 "href": "wss://joe:%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~@host/",
8728 "origin": "wss://host",
8729 "password": "%20!%22$%&'()*+,-.%3A%3B%3C%3D%3E%40%5B%5D%5E_%60%7B%7C%7D~",
8730 "pathname": "/",
8731 "port":"",
8732 "protocol": "wss:",
8733 "search": "",
8734 "username": "joe"
8735 },
8736 {
8737 "input": "foo://!\"$%&'()*+,-.;=_`{}~/",
8738 "base": null,
8739 "hash": "",
8740 "host": "!\"$%&'()*+,-.;=_`{}~",
8741 "hostname": "!\"$%&'()*+,-.;=_`{}~",
8742 "href":"foo://!\"$%&'()*+,-.;=_`{}~/",
8743 "origin": "null",
8744 "password": "",
8745 "pathname": "/",
8746 "port":"",
8747 "protocol": "foo:",
8748 "search": "",
8749 "username": ""
8750 },
8751 {
8752 "input": "wss://!\"$&'()*+,-.;=_`{}~/",
8753 "base": null,
8754 "hash": "",
8755 "host": "!\"$&'()*+,-.;=_`{}~",
8756 "hostname": "!\"$&'()*+,-.;=_`{}~",
8757 "href":"wss://!\"$&'()*+,-.;=_`{}~/",
8758 "origin": "wss://!\"$&'()*+,-.;=_`{}~",
8759 "password": "",
8760 "pathname": "/",
8761 "port":"",
8762 "protocol": "wss:",
8763 "search": "",
8764 "username": ""
8765 },
8766 {
8767 "input": "foo://host/ !\"$%&'()*+,-./:;<=>@[\\]^_`{|}~",
8768 "base": null,
8769 "hash": "",
8770 "host": "host",
8771 "hostname": "host",
8772 "href": "foo://host/%20!%22$%&'()*+,-./:;%3C=%3E@[\\]%5E_%60%7B|%7D~",
8773 "origin": "null",
8774 "password": "",
8775 "pathname": "/%20!%22$%&'()*+,-./:;%3C=%3E@[\\]%5E_%60%7B|%7D~",
8776 "port":"",
8777 "protocol": "foo:",
8778 "search": "",
8779 "username": ""
8780 },
8781 {
8782 "input": "wss://host/ !\"$%&'()*+,-./:;<=>@[\\]^_`{|}~",
8783 "base": null,
8784 "hash": "",
8785 "host": "host",
8786 "hostname": "host",
8787 "href": "wss://host/%20!%22$%&'()*+,-./:;%3C=%3E@[/]%5E_%60%7B|%7D~",
8788 "origin": "wss://host",
8789 "password": "",
8790 "pathname": "/%20!%22$%&'()*+,-./:;%3C=%3E@[/]%5E_%60%7B|%7D~",
8791 "port":"",
8792 "protocol": "wss:",
8793 "search": "",
8794 "username": ""
8795 },
8796 {
8797 "input": "foo://host/dir/? !\"$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
8798 "base": null,
8799 "hash": "",
8800 "host": "host",
8801 "hostname": "host",
8802 "href": "foo://host/dir/?%20!%22$%&'()*+,-./:;%3C=%3E?@[\\]^_`{|}~",
8803 "origin": "null",
8804 "password": "",
8805 "pathname": "/dir/",
8806 "port":"",
8807 "protocol": "foo:",
8808 "search": "?%20!%22$%&'()*+,-./:;%3C=%3E?@[\\]^_`{|}~",
8809 "username": ""
8810 },
8811 {
8812 "input": "wss://host/dir/? !\"$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
8813 "base": null,
8814 "hash": "",
8815 "host": "host",
8816 "hostname": "host",
8817 "href": "wss://host/dir/?%20!%22$%&%27()*+,-./:;%3C=%3E?@[\\]^_`{|}~",
8818 "origin": "wss://host",
8819 "password": "",
8820 "pathname": "/dir/",
8821 "port":"",
8822 "protocol": "wss:",
8823 "search": "?%20!%22$%&%27()*+,-./:;%3C=%3E?@[\\]^_`{|}~",
8824 "username": ""
8825 },
8826 {
8827 "input": "foo://host/dir/# !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
8828 "base": null,
8829 "hash": "#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~",
8830 "host": "host",
8831 "hostname": "host",
8832 "href": "foo://host/dir/#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~",
8833 "origin": "null",
8834 "password": "",
8835 "pathname": "/dir/",
8836 "port":"",
8837 "protocol": "foo:",
8838 "search": "",
8839 "username": ""
8840 },
8841 {
8842 "input": "wss://host/dir/# !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~",
8843 "base": null,
8844 "hash": "#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~",
8845 "host": "host",
8846 "hostname": "host",
8847 "href": "wss://host/dir/#%20!%22#$%&'()*+,-./:;%3C=%3E?@[\\]^_%60{|}~",
8848 "origin": "wss://host",
8849 "password": "",
8850 "pathname": "/dir/",
8851 "port":"",
8852 "protocol": "wss:",
8853 "search": "",
8854 "username": ""
8855 },
8856 "Ensure that input schemes are not ignored when resolving non-special URLs",
8857 {
8858 "input": "abc:rootless",
8859 "base": "abc://host/path",
8860 "hash": "",
8861 "host": "",
8862 "hostname": "",
8863 "href":"abc:rootless",
8864 "password": "",
8865 "pathname": "rootless",
8866 "port":"",
8867 "protocol": "abc:",
8868 "search": "",
8869 "username": ""
8870 },
8871 {
8872 "input": "abc:rootless",
8873 "base": "abc:/path",
8874 "hash": "",
8875 "host": "",
8876 "hostname": "",
8877 "href":"abc:rootless",
8878 "password": "",
8879 "pathname": "rootless",
8880 "port":"",
8881 "protocol": "abc:",
8882 "search": "",
8883 "username": ""
8884 },
8885 {
8886 "input": "abc:rootless",
8887 "base": "abc:path",
8888 "hash": "",
8889 "host": "",
8890 "hostname": "",
8891 "href":"abc:rootless",
8892 "password": "",
8893 "pathname": "rootless",
8894 "port":"",
8895 "protocol": "abc:",
8896 "search": "",
8897 "username": ""
8898 },
8899 {
8900 "input": "abc:/rooted",
8901 "base": "abc://host/path",
8902 "hash": "",
8903 "host": "",
8904 "hostname": "",
8905 "href":"abc:/rooted",
8906 "password": "",
8907 "pathname": "/rooted",
8908 "port":"",
8909 "protocol": "abc:",
8910 "search": "",
8911 "username": ""
8912 },
8913 "Empty query and fragment with blank should throw an error",
8914 {
8915 "input": "#",
8916 "base": null,
8917 "failure": true,
8918 "relativeTo": "any-base"
8919 },
8920 {
8921 "input": "?",
8922 "base": null,
8923 "failure": true,
8924 "relativeTo": "non-opaque-path-base"
8925 },
8926 "Last component looks like a number, but not valid IPv4",
8927 {
8928 "input": "http://1.2.3.4.5",
8929 "base": "http://other.com/",
8930 "failure": true
8931 },
8932 {
8933 "input": "http://1.2.3.4.5.",
8934 "base": "http://other.com/",
8935 "failure": true
8936 },
8937 {
8938 "input": "http://0..0x300/",
8939 "base": null,
8940 "failure": true
8941 },
8942 {
8943 "input": "http://0..0x300./",
8944 "base": null,
8945 "failure": true
8946 },
8947 {
8948 "input": "http://256.256.256.256.256",
8949 "base": "http://other.com/",
8950 "failure": true
8951 },
8952 {
8953 "input": "http://256.256.256.256.256.",
8954 "base": "http://other.com/",
8955 "failure": true
8956 },
8957 {
8958 "input": "http://1.2.3.08",
8959 "base": null,
8960 "failure": true
8961 },
8962 {
8963 "input": "http://1.2.3.08.",
8964 "base": null,
8965 "failure": true
8966 },
8967 {
8968 "input": "http://1.2.3.09",
8969 "base": null,
8970 "failure": true
8971 },
8972 {
8973 "input": "http://09.2.3.4",
8974 "base": null,
8975 "failure": true
8976 },
8977 {
8978 "input": "http://09.2.3.4.",
8979 "base": null,
8980 "failure": true
8981 },
8982 {
8983 "input": "http://01.2.3.4.5",
8984 "base": null,
8985 "failure": true
8986 },
8987 {
8988 "input": "http://01.2.3.4.5.",
8989 "base": null,
8990 "failure": true
8991 },
8992 {
8993 "input": "http://0x100.2.3.4",
8994 "base": null,
8995 "failure": true
8996 },
8997 {
8998 "input": "http://0x100.2.3.4.",
8999 "base": null,
9000 "failure": true
9001 },
9002 {
9003 "input": "http://0x1.2.3.4.5",
9004 "base": null,
9005 "failure": true
9006 },
9007 {
9008 "input": "http://0x1.2.3.4.5.",
9009 "base": null,
9010 "failure": true
9011 },
9012 {
9013 "input": "http://foo.1.2.3.4",
9014 "base": null,
9015 "failure": true
9016 },
9017 {
9018 "input": "http://foo.1.2.3.4.",
9019 "base": null,
9020 "failure": true
9021 },
9022 {
9023 "input": "http://foo.2.3.4",
9024 "base": null,
9025 "failure": true
9026 },
9027 {
9028 "input": "http://foo.2.3.4.",
9029 "base": null,
9030 "failure": true
9031 },
9032 {
9033 "input": "http://foo.09",
9034 "base": null,
9035 "failure": true
9036 },
9037 {
9038 "input": "http://foo.09.",
9039 "base": null,
9040 "failure": true
9041 },
9042 {
9043 "input": "http://foo.0x4",
9044 "base": null,
9045 "failure": true
9046 },
9047 {
9048 "input": "http://foo.0x4.",
9049 "base": null,
9050 "failure": true
9051 },
9052 {
9053 "input": "http://foo.09..",
9054 "base": null,
9055 "hash": "",
9056 "host": "foo.09..",
9057 "hostname": "foo.09..",
9058 "href":"http://foo.09../",
9059 "password": "",
9060 "pathname": "/",
9061 "port":"",
9062 "protocol": "http:",
9063 "search": "",
9064 "username": ""
9065 },
9066 {
9067 "input": "http://0999999999999999999/",
9068 "base": null,
9069 "failure": true
9070 },
9071 {
9072 "input": "http://foo.0x",
9073 "base": null,
9074 "failure": true
9075 },
9076 {
9077 "input": "http://foo.0XFfFfFfFfFfFfFfFfFfAcE123",
9078 "base": null,
9079 "failure": true
9080 },
9081 {
9082 "input": "http://💩.123/",
9083 "base": null,
9084 "failure": true
9085 },
9086 "U+0000 and U+FFFF in various places",
9087 {
9088 "input": "https://\u0000y",
9089 "base": null,
9090 "failure": true
9091 },
9092 {
9093 "input": "https://x/\u0000y",
9094 "base": null,
9095 "hash": "",
9096 "host": "x",
9097 "hostname": "x",
9098 "href": "https://x/%00y",
9099 "password": "",
9100 "pathname": "/%00y",
9101 "port": "",
9102 "protocol": "https:",
9103 "search": "",
9104 "username": ""
9105 },
9106 {
9107 "input": "https://x/?\u0000y",
9108 "base": null,
9109 "hash": "",
9110 "host": "x",
9111 "hostname": "x",
9112 "href": "https://x/?%00y",
9113 "password": "",
9114 "pathname": "/",
9115 "port": "",
9116 "protocol": "https:",
9117 "search": "?%00y",
9118 "username": ""
9119 },
9120 {
9121 "input": "https://x/?#\u0000y",
9122 "base": null,
9123 "hash": "#%00y",
9124 "host": "x",
9125 "hostname": "x",
9126 "href": "https://x/?#%00y",
9127 "password": "",
9128 "pathname": "/",
9129 "port": "",
9130 "protocol": "https:",
9131 "search": "",
9132 "username": ""
9133 },
9134 {
9135 "input": "https://\uFFFFy",
9136 "base": null,
9137 "failure": true
9138 },
9139 {
9140 "input": "https://x/\uFFFFy",
9141 "base": null,
9142 "hash": "",
9143 "host": "x",
9144 "hostname": "x",
9145 "href": "https://x/%EF%BF%BFy",
9146 "password": "",
9147 "pathname": "/%EF%BF%BFy",
9148 "port": "",
9149 "protocol": "https:",
9150 "search": "",
9151 "username": ""
9152 },
9153 {
9154 "input": "https://x/?\uFFFFy",
9155 "base": null,
9156 "hash": "",
9157 "host": "x",
9158 "hostname": "x",
9159 "href": "https://x/?%EF%BF%BFy",
9160 "password": "",
9161 "pathname": "/",
9162 "port": "",
9163 "protocol": "https:",
9164 "search": "?%EF%BF%BFy",
9165 "username": ""
9166 },
9167 {
9168 "input": "https://x/?#\uFFFFy",
9169 "base": null,
9170 "hash": "#%EF%BF%BFy",
9171 "host": "x",
9172 "hostname": "x",
9173 "href": "https://x/?#%EF%BF%BFy",
9174 "password": "",
9175 "pathname": "/",
9176 "port": "",
9177 "protocol": "https:",
9178 "search": "",
9179 "username": ""
9180 },
9181 {
9182 "input": "non-special:\u0000y",
9183 "base": null,
9184 "hash": "",
9185 "host": "",
9186 "hostname": "",
9187 "href": "non-special:%00y",
9188 "password": "",
9189 "pathname": "%00y",
9190 "port": "",
9191 "protocol": "non-special:",
9192 "search": "",
9193 "username": ""
9194 },
9195 {
9196 "input": "non-special:x/\u0000y",
9197 "base": null,
9198 "hash": "",
9199 "host": "",
9200 "hostname": "",
9201 "href": "non-special:x/%00y",
9202 "password": "",
9203 "pathname": "x/%00y",
9204 "port": "",
9205 "protocol": "non-special:",
9206 "search": "",
9207 "username": ""
9208 },
9209 {
9210 "input": "non-special:x/?\u0000y",
9211 "base": null,
9212 "hash": "",
9213 "host": "",
9214 "hostname": "",
9215 "href": "non-special:x/?%00y",
9216 "password": "",
9217 "pathname": "x/",
9218 "port": "",
9219 "protocol": "non-special:",
9220 "search": "?%00y",
9221 "username": ""
9222 },
9223 {
9224 "input": "non-special:x/?#\u0000y",
9225 "base": null,
9226 "hash": "#%00y",
9227 "host": "",
9228 "hostname": "",
9229 "href": "non-special:x/?#%00y",
9230 "password": "",
9231 "pathname": "x/",
9232 "port": "",
9233 "protocol": "non-special:",
9234 "search": "",
9235 "username": ""
9236 },
9237 {
9238 "input": "non-special:\uFFFFy",
9239 "base": null,
9240 "hash": "",
9241 "host": "",
9242 "hostname": "",
9243 "href": "non-special:%EF%BF%BFy",
9244 "password": "",
9245 "pathname": "%EF%BF%BFy",
9246 "port": "",
9247 "protocol": "non-special:",
9248 "search": "",
9249 "username": ""
9250 },
9251 {
9252 "input": "non-special:x/\uFFFFy",
9253 "base": null,
9254 "hash": "",
9255 "host": "",
9256 "hostname": "",
9257 "href": "non-special:x/%EF%BF%BFy",
9258 "password": "",
9259 "pathname": "x/%EF%BF%BFy",
9260 "port": "",
9261 "protocol": "non-special:",
9262 "search": "",
9263 "username": ""
9264 },
9265 {
9266 "input": "non-special:x/?\uFFFFy",
9267 "base": null,
9268 "hash": "",
9269 "host": "",
9270 "hostname": "",
9271 "href": "non-special:x/?%EF%BF%BFy",
9272 "password": "",
9273 "pathname": "x/",
9274 "port": "",
9275 "protocol": "non-special:",
9276 "search": "?%EF%BF%BFy",
9277 "username": ""
9278 },
9279 {
9280 "input": "non-special:x/?#\uFFFFy",
9281 "base": null,
9282 "hash": "#%EF%BF%BFy",
9283 "host": "",
9284 "hostname": "",
9285 "href": "non-special:x/?#%EF%BF%BFy",
9286 "password": "",
9287 "pathname": "x/",
9288 "port": "",
9289 "protocol": "non-special:",
9290 "search": "",
9291 "username": ""
9292 },
9293 {
9294 "input": "",
9295 "base": null,
9296 "failure": true,
9297 "relativeTo": "non-opaque-path-base"
9298 },
9299 {
9300 "input": "https://example.com/\"quoted\"",
9301 "base": null,
9302 "hash": "",
9303 "host": "example.com",
9304 "hostname": "example.com",
9305 "href": "https://example.com/%22quoted%22",
9306 "origin": "https://example.com",
9307 "password": "",
9308 "pathname": "/%22quoted%22",
9309 "port": "",
9310 "protocol": "https:",
9311 "search": "",
9312 "username": ""
9313 },
9314 {
9315 "input": "https://a%C2%ADb/",
9316 "base": null,
9317 "hash": "",
9318 "host": "ab",
9319 "hostname": "ab",
9320 "href": "https://ab/",
9321 "origin": "https://ab",
9322 "password": "",
9323 "pathname": "/",
9324 "port": "",
9325 "protocol": "https:",
9326 "search": "",
9327 "username": ""
9328 },
9329 {
9330 "comment": "Empty host after domain to ASCII",
9331 "input": "https://\u00AD/",
9332 "base": null,
9333 "failure": true
9334 },
9335 {
9336 "input": "https://%C2%AD/",
9337 "base": null,
9338 "failure": true
9339 },
9340 {
9341 "input": "https://xn--/",
9342 "base": null,
9343 "failure": true
9344 },
9345 "Non-special schemes that some implementations might incorrectly treat as special",
9346 {
9347 "input": "data://example.com:8080/pathname?search#hash",
9348 "base": null,
9349 "href": "data://example.com:8080/pathname?search#hash",
9350 "origin": "null",
9351 "protocol": "data:",
9352 "username": "",
9353 "password": "",
9354 "host": "example.com:8080",
9355 "hostname": "example.com",
9356 "port": "8080",
9357 "pathname": "/pathname",
9358 "search": "?search",
9359 "hash": "#hash"
9360 },
9361 {
9362 "input": "data:///test",
9363 "base": null,
9364 "href": "data:///test",
9365 "origin": "null",
9366 "protocol": "data:",
9367 "username": "",
9368 "password": "",
9369 "host": "",
9370 "hostname": "",
9371 "port": "",
9372 "pathname": "/test",
9373 "search": "",
9374 "hash": ""
9375 },
9376 {
9377 "input": "data://test/a/../b",
9378 "base": null,
9379 "href": "data://test/b",
9380 "origin": "null",
9381 "protocol": "data:",
9382 "username": "",
9383 "password": "",
9384 "host": "test",
9385 "hostname": "test",
9386 "port": "",
9387 "pathname": "/b",
9388 "search": "",
9389 "hash": ""
9390 },
9391 {
9392 "input": "data://:443",
9393 "base": null,
9394 "failure": true
9395 },
9396 {
9397 "input": "data://test:test",
9398 "base": null,
9399 "failure": true
9400 },
9401 {
9402 "input": "data://[:1]",
9403 "base": null,
9404 "failure": true
9405 },
9406 {
9407 "input": "javascript://example.com:8080/pathname?search#hash",
9408 "base": null,
9409 "href": "javascript://example.com:8080/pathname?search#hash",
9410 "origin": "null",
9411 "protocol": "javascript:",
9412 "username": "",
9413 "password": "",
9414 "host": "example.com:8080",
9415 "hostname": "example.com",
9416 "port": "8080",
9417 "pathname": "/pathname",
9418 "search": "?search",
9419 "hash": "#hash"
9420 },
9421 {
9422 "input": "javascript:///test",
9423 "base": null,
9424 "href": "javascript:///test",
9425 "origin": "null",
9426 "protocol": "javascript:",
9427 "username": "",
9428 "password": "",
9429 "host": "",
9430 "hostname": "",
9431 "port": "",
9432 "pathname": "/test",
9433 "search": "",
9434 "hash": ""
9435 },
9436 {
9437 "input": "javascript://test/a/../b",
9438 "base": null,
9439 "href": "javascript://test/b",
9440 "origin": "null",
9441 "protocol": "javascript:",
9442 "username": "",
9443 "password": "",
9444 "host": "test",
9445 "hostname": "test",
9446 "port": "",
9447 "pathname": "/b",
9448 "search": "",
9449 "hash": ""
9450 },
9451 {
9452 "input": "javascript://:443",
9453 "base": null,
9454 "failure": true
9455 },
9456 {
9457 "input": "javascript://test:test",
9458 "base": null,
9459 "failure": true
9460 },
9461 {
9462 "input": "javascript://[:1]",
9463 "base": null,
9464 "failure": true
9465 },
9466 {
9467 "input": "mailto://example.com:8080/pathname?search#hash",
9468 "base": null,
9469 "href": "mailto://example.com:8080/pathname?search#hash",
9470 "origin": "null",
9471 "protocol": "mailto:",
9472 "username": "",
9473 "password": "",
9474 "host": "example.com:8080",
9475 "hostname": "example.com",
9476 "port": "8080",
9477 "pathname": "/pathname",
9478 "search": "?search",
9479 "hash": "#hash"
9480 },
9481 {
9482 "input": "mailto:///test",
9483 "base": null,
9484 "href": "mailto:///test",
9485 "origin": "null",
9486 "protocol": "mailto:",
9487 "username": "",
9488 "password": "",
9489 "host": "",
9490 "hostname": "",
9491 "port": "",
9492 "pathname": "/test",
9493 "search": "",
9494 "hash": ""
9495 },
9496 {
9497 "input": "mailto://test/a/../b",
9498 "base": null,
9499 "href": "mailto://test/b",
9500 "origin": "null",
9501 "protocol": "mailto:",
9502 "username": "",
9503 "password": "",
9504 "host": "test",
9505 "hostname": "test",
9506 "port": "",
9507 "pathname": "/b",
9508 "search": "",
9509 "hash": ""
9510 },
9511 {
9512 "input": "mailto://:443",
9513 "base": null,
9514 "failure": true
9515 },
9516 {
9517 "input": "mailto://test:test",
9518 "base": null,
9519 "failure": true
9520 },
9521 {
9522 "input": "mailto://[:1]",
9523 "base": null,
9524 "failure": true
9525 },
9526 {
9527 "input": "intent://example.com:8080/pathname?search#hash",
9528 "base": null,
9529 "href": "intent://example.com:8080/pathname?search#hash",
9530 "origin": "null",
9531 "protocol": "intent:",
9532 "username": "",
9533 "password": "",
9534 "host": "example.com:8080",
9535 "hostname": "example.com",
9536 "port": "8080",
9537 "pathname": "/pathname",
9538 "search": "?search",
9539 "hash": "#hash"
9540 },
9541 {
9542 "input": "intent:///test",
9543 "base": null,
9544 "href": "intent:///test",
9545 "origin": "null",
9546 "protocol": "intent:",
9547 "username": "",
9548 "password": "",
9549 "host": "",
9550 "hostname": "",
9551 "port": "",
9552 "pathname": "/test",
9553 "search": "",
9554 "hash": ""
9555 },
9556 {
9557 "input": "intent://test/a/../b",
9558 "base": null,
9559 "href": "intent://test/b",
9560 "origin": "null",
9561 "protocol": "intent:",
9562 "username": "",
9563 "password": "",
9564 "host": "test",
9565 "hostname": "test",
9566 "port": "",
9567 "pathname": "/b",
9568 "search": "",
9569 "hash": ""
9570 },
9571 {
9572 "input": "intent://:443",
9573 "base": null,
9574 "failure": true
9575 },
9576 {
9577 "input": "intent://test:test",
9578 "base": null,
9579 "failure": true
9580 },
9581 {
9582 "input": "intent://[:1]",
9583 "base": null,
9584 "failure": true
9585 },
9586 {
9587 "input": "urn://example.com:8080/pathname?search#hash",
9588 "base": null,
9589 "href": "urn://example.com:8080/pathname?search#hash",
9590 "origin": "null",
9591 "protocol": "urn:",
9592 "username": "",
9593 "password": "",
9594 "host": "example.com:8080",
9595 "hostname": "example.com",
9596 "port": "8080",
9597 "pathname": "/pathname",
9598 "search": "?search",
9599 "hash": "#hash"
9600 },
9601 {
9602 "input": "urn:///test",
9603 "base": null,
9604 "href": "urn:///test",
9605 "origin": "null",
9606 "protocol": "urn:",
9607 "username": "",
9608 "password": "",
9609 "host": "",
9610 "hostname": "",
9611 "port": "",
9612 "pathname": "/test",
9613 "search": "",
9614 "hash": ""
9615 },
9616 {
9617 "input": "urn://test/a/../b",
9618 "base": null,
9619 "href": "urn://test/b",
9620 "origin": "null",
9621 "protocol": "urn:",
9622 "username": "",
9623 "password": "",
9624 "host": "test",
9625 "hostname": "test",
9626 "port": "",
9627 "pathname": "/b",
9628 "search": "",
9629 "hash": ""
9630 },
9631 {
9632 "input": "urn://:443",
9633 "base": null,
9634 "failure": true
9635 },
9636 {
9637 "input": "urn://test:test",
9638 "base": null,
9639 "failure": true
9640 },
9641 {
9642 "input": "urn://[:1]",
9643 "base": null,
9644 "failure": true
9645 },
9646 {
9647 "input": "turn://example.com:8080/pathname?search#hash",
9648 "base": null,
9649 "href": "turn://example.com:8080/pathname?search#hash",
9650 "origin": "null",
9651 "protocol": "turn:",
9652 "username": "",
9653 "password": "",
9654 "host": "example.com:8080",
9655 "hostname": "example.com",
9656 "port": "8080",
9657 "pathname": "/pathname",
9658 "search": "?search",
9659 "hash": "#hash"
9660 },
9661 {
9662 "input": "turn:///test",
9663 "base": null,
9664 "href": "turn:///test",
9665 "origin": "null",
9666 "protocol": "turn:",
9667 "username": "",
9668 "password": "",
9669 "host": "",
9670 "hostname": "",
9671 "port": "",
9672 "pathname": "/test",
9673 "search": "",
9674 "hash": ""
9675 },
9676 {
9677 "input": "turn://test/a/../b",
9678 "base": null,
9679 "href": "turn://test/b",
9680 "origin": "null",
9681 "protocol": "turn:",
9682 "username": "",
9683 "password": "",
9684 "host": "test",
9685 "hostname": "test",
9686 "port": "",
9687 "pathname": "/b",
9688 "search": "",
9689 "hash": ""
9690 },
9691 {
9692 "input": "turn://:443",
9693 "base": null,
9694 "failure": true
9695 },
9696 {
9697 "input": "turn://test:test",
9698 "base": null,
9699 "failure": true
9700 },
9701 {
9702 "input": "turn://[:1]",
9703 "base": null,
9704 "failure": true
9705 },
9706 {
9707 "input": "stun://example.com:8080/pathname?search#hash",
9708 "base": null,
9709 "href": "stun://example.com:8080/pathname?search#hash",
9710 "origin": "null",
9711 "protocol": "stun:",
9712 "username": "",
9713 "password": "",
9714 "host": "example.com:8080",
9715 "hostname": "example.com",
9716 "port": "8080",
9717 "pathname": "/pathname",
9718 "search": "?search",
9719 "hash": "#hash"
9720 },
9721 {
9722 "input": "stun:///test",
9723 "base": null,
9724 "href": "stun:///test",
9725 "origin": "null",
9726 "protocol": "stun:",
9727 "username": "",
9728 "password": "",
9729 "host": "",
9730 "hostname": "",
9731 "port": "",
9732 "pathname": "/test",
9733 "search": "",
9734 "hash": ""
9735 },
9736 {
9737 "input": "stun://test/a/../b",
9738 "base": null,
9739 "href": "stun://test/b",
9740 "origin": "null",
9741 "protocol": "stun:",
9742 "username": "",
9743 "password": "",
9744 "host": "test",
9745 "hostname": "test",
9746 "port": "",
9747 "pathname": "/b",
9748 "search": "",
9749 "hash": ""
9750 },
9751 {
9752 "input": "stun://:443",
9753 "base": null,
9754 "failure": true
9755 },
9756 {
9757 "input": "stun://test:test",
9758 "base": null,
9759 "failure": true
9760 },
9761 {
9762 "input": "stun://[:1]",
9763 "base": null,
9764 "failure": true
9765 },
9766 {
9767 "input": "w://x:0",
9768 "base": null,
9769 "href": "w://x:0",
9770 "origin": "null",
9771 "protocol": "w:",
9772 "username": "",
9773 "password": "",
9774 "host": "x:0",
9775 "hostname": "x",
9776 "port": "0",
9777 "pathname": "",
9778 "search": "",
9779 "hash": ""
9780 },
9781 {
9782 "input": "west://x:0",
9783 "base": null,
9784 "href": "west://x:0",
9785 "origin": "null",
9786 "protocol": "west:",
9787 "username": "",
9788 "password": "",
9789 "host": "x:0",
9790 "hostname": "x",
9791 "port": "0",
9792 "pathname": "",
9793 "search": "",
9794 "hash": ""
9795 },
9796 {
9797 "input": "android://x:0/a",
9798 "base": null,
9799 "href": "android://x:0/a",
9800 "origin": "null",
9801 "protocol": "android:",
9802 "username": "",
9803 "password": "",
9804 "host": "x:0",
9805 "hostname": "x",
9806 "port": "0",
9807 "pathname": "/a",
9808 "search": "",
9809 "hash": ""
9810 },
9811 {
9812 "input": "drivefs://x:0/a",
9813 "base": null,
9814 "href": "drivefs://x:0/a",
9815 "origin": "null",
9816 "protocol": "drivefs:",
9817 "username": "",
9818 "password": "",
9819 "host": "x:0",
9820 "hostname": "x",
9821 "port": "0",
9822 "pathname": "/a",
9823 "search": "",
9824 "hash": ""
9825 },
9826 {
9827 "input": "chromeos-steam://x:0/a",
9828 "base": null,
9829 "href": "chromeos-steam://x:0/a",
9830 "origin": "null",
9831 "protocol": "chromeos-steam:",
9832 "username": "",
9833 "password": "",
9834 "host": "x:0",
9835 "hostname": "x",
9836 "port": "0",
9837 "pathname": "/a",
9838 "search": "",
9839 "hash": ""
9840 },
9841 {
9842 "input": "steam://x:0/a",
9843 "base": null,
9844 "href": "steam://x:0/a",
9845 "origin": "null",
9846 "protocol": "steam:",
9847 "username": "",
9848 "password": "",
9849 "host": "x:0",
9850 "hostname": "x",
9851 "port": "0",
9852 "pathname": "/a",
9853 "search": "",
9854 "hash": ""
9855 },
9856 {
9857 "input": "materialized-view://x:0/a",
9858 "base": null,
9859 "href": "materialized-view://x:0/a",
9860 "origin": "null",
9861 "protocol": "materialized-view:",
9862 "username": "",
9863 "password": "",
9864 "host": "x:0",
9865 "hostname": "x",
9866 "port": "0",
9867 "pathname": "/a",
9868 "search": "",
9869 "hash": ""
9870 },
9871 {
9872 "input": "android-app://x:0",
9873 "base": null,
9874 "href": "android-app://x:0",
9875 "origin": "null",
9876 "protocol": "android-app:",
9877 "username": "",
9878 "password": "",
9879 "host": "x:0",
9880 "hostname": "x",
9881 "port": "0",
9882 "pathname": "",
9883 "search": "",
9884 "hash": ""
9885 },
9886 {
9887 "input": "chrome-distiller://x:0",
9888 "base": null,
9889 "href": "chrome-distiller://x:0",
9890 "origin": "null",
9891 "protocol": "chrome-distiller:",
9892 "username": "",
9893 "password": "",
9894 "host": "x:0",
9895 "hostname": "x",
9896 "port": "0",
9897 "pathname": "",
9898 "search": "",
9899 "hash": ""
9900 },
9901 {
9902 "input": "chrome-extension://x:0",
9903 "base": null,
9904 "href": "chrome-extension://x:0",
9905 "origin": "null",
9906 "protocol": "chrome-extension:",
9907 "username": "",
9908 "password": "",
9909 "host": "x:0",
9910 "hostname": "x",
9911 "port": "0",
9912 "pathname": "",
9913 "search": "",
9914 "hash": ""
9915 },
9916 {
9917 "input": "chrome-native://x:0",
9918 "base": null,
9919 "href": "chrome-native://x:0",
9920 "origin": "null",
9921 "protocol": "chrome-native:",
9922 "username": "",
9923 "password": "",
9924 "host": "x:0",
9925 "hostname": "x",
9926 "port": "0",
9927 "pathname": "",
9928 "search": "",
9929 "hash": ""
9930 },
9931 {
9932 "input": "chrome-resource://x:0",
9933 "base": null,
9934 "href": "chrome-resource://x:0",
9935 "origin": "null",
9936 "protocol": "chrome-resource:",
9937 "username": "",
9938 "password": "",
9939 "host": "x:0",
9940 "hostname": "x",
9941 "port": "0",
9942 "pathname": "",
9943 "search": "",
9944 "hash": ""
9945 },
9946 {
9947 "input": "chrome-search://x:0",
9948 "base": null,
9949 "href": "chrome-search://x:0",
9950 "origin": "null",
9951 "protocol": "chrome-search:",
9952 "username": "",
9953 "password": "",
9954 "host": "x:0",
9955 "hostname": "x",
9956 "port": "0",
9957 "pathname": "",
9958 "search": "",
9959 "hash": ""
9960 },
9961 {
9962 "input": "fuchsia-dir://x:0",
9963 "base": null,
9964 "href": "fuchsia-dir://x:0",
9965 "origin": "null",
9966 "protocol": "fuchsia-dir:",
9967 "username": "",
9968 "password": "",
9969 "host": "x:0",
9970 "hostname": "x",
9971 "port": "0",
9972 "pathname": "",
9973 "search": "",
9974 "hash": ""
9975 },
9976 {
9977 "input": "isolated-app://x:0",
9978 "base": null,
9979 "href": "isolated-app://x:0",
9980 "origin": "null",
9981 "protocol": "isolated-app:",
9982 "username": "",
9983 "password": "",
9984 "host": "x:0",
9985 "hostname": "x",
9986 "port": "0",
9987 "pathname": "",
9988 "search": "",
9989 "hash": ""
9990 },
9991 "Scheme relative path starting with multiple slashes",
9992 {
9993 "input": "///test",
9994 "base": "http://example.org/",
9995 "href": "http://test/",
9996 "protocol": "http:",
9997 "username": "",
9998 "password": "",
9999 "host": "test",
10000 "hostname": "test",
10001 "port": "",
10002 "pathname": "/",
10003 "search": "",
10004 "hash": ""
10005 },
10006 {
10007 "input": "///\\//\\//test",
10008 "base": "http://example.org/",
10009 "href": "http://test/",
10010 "protocol": "http:",
10011 "username": "",
10012 "password": "",
10013 "host": "test",
10014 "hostname": "test",
10015 "port": "",
10016 "pathname": "/",
10017 "search": "",
10018 "hash": ""
10019 },
10020 {
10021 "input": "///example.org/path",
10022 "base": "http://example.org/",
10023 "href": "http://example.org/path",
10024 "protocol": "http:",
10025 "username": "",
10026 "password": "",
10027 "host": "example.org",
10028 "hostname": "example.org",
10029 "port": "",
10030 "pathname": "/path",
10031 "search": "",
10032 "hash": ""
10033 },
10034 {
10035 "input": "///example.org/../path",
10036 "base": "http://example.org/",
10037 "href": "http://example.org/path",
10038 "protocol": "http:",
10039 "username": "",
10040 "password": "",
10041 "host": "example.org",
10042 "hostname": "example.org",
10043 "port": "",
10044 "pathname": "/path",
10045 "search": "",
10046 "hash": ""
10047 },
10048 {
10049 "input": "///example.org/../../",
10050 "base": "http://example.org/",
10051 "href": "http://example.org/",
10052 "protocol": "http:",
10053 "username": "",
10054 "password": "",
10055 "host": "example.org",
10056 "hostname": "example.org",
10057 "port": "",
10058 "pathname": "/",
10059 "search": "",
10060 "hash": ""
10061 },
10062 {
10063 "input": "///example.org/../path/../../",
10064 "base": "http://example.org/",
10065 "href": "http://example.org/",
10066 "protocol": "http:",
10067 "username": "",
10068 "password": "",
10069 "host": "example.org",
10070 "hostname": "example.org",
10071 "port": "",
10072 "pathname": "/",
10073 "search": "",
10074 "hash": ""
10075 },
10076 {
10077 "input": "///example.org/../path/../../path",
10078 "base": "http://example.org/",
10079 "href": "http://example.org/path",
10080 "protocol": "http:",
10081 "username": "",
10082 "password": "",
10083 "host": "example.org",
10084 "hostname": "example.org",
10085 "port": "",
10086 "pathname": "/path",
10087 "search": "",
10088 "hash": ""
10089 },
10090 {
10091 "input": "/\\/\\//example.org/../path",
10092 "base": "http://example.org/",
10093 "href": "http://example.org/path",
10094 "protocol": "http:",
10095 "username": "",
10096 "password": "",
10097 "host": "example.org",
10098 "hostname": "example.org",
10099 "port": "",
10100 "pathname": "/path",
10101 "search": "",
10102 "hash": ""
10103 },
10104 {
10105 "input": "///abcdef/../",
10106 "base": "file:///",
10107 "href": "file:///",
10108 "protocol": "file:",
10109 "username": "",
10110 "password": "",
10111 "host": "",
10112 "hostname": "",
10113 "port": "",
10114 "pathname": "/",
10115 "search": "",
10116 "hash": ""
10117 },
10118 {
10119 "input": "/\\//\\/a/../",
10120 "base": "file:///",
10121 "href": "file://////",
10122 "protocol": "file:",
10123 "username": "",
10124 "password": "",
10125 "host": "",
10126 "hostname": "",
10127 "port": "",
10128 "pathname": "////",
10129 "search": "",
10130 "hash": ""
10131 },
10132 {
10133 "input": "//a/../",
10134 "base": "file:///",
10135 "href": "file://a/",
10136 "protocol": "file:",
10137 "username": "",
10138 "password": "",
10139 "host": "a",
10140 "hostname": "a",
10141 "port": "",
10142 "pathname": "/",
10143 "search": "",
10144 "hash": ""
10145 },
10146 "# Non-special URL and backslashes",
10147 {
10148 "input": "non-special:\\\\opaque",
10149 "base": null,
10150 "href": "non-special:\\\\opaque",
10151 "origin": "null",
10152 "protocol": "non-special:",
10153 "username": "",
10154 "password": "",
10155 "host": "",
10156 "hostname": "",
10157 "port": "",
10158 "pathname": "\\\\opaque",
10159 "search": "",
10160 "hash": ""
10161 },
10162 {
10163 "input": "non-special:\\\\opaque/path",
10164 "base": null,
10165 "href": "non-special:\\\\opaque/path",
10166 "origin": "null",
10167 "protocol": "non-special:",
10168 "username": "",
10169 "password": "",
10170 "host": "",
10171 "hostname": "",
10172 "port": "",
10173 "pathname": "\\\\opaque/path",
10174 "search": "",
10175 "hash": ""
10176 },
10177 {
10178 "input": "non-special:\\\\opaque\\path",
10179 "base": null,
10180 "href": "non-special:\\\\opaque\\path",
10181 "origin": "null",
10182 "protocol": "non-special:",
10183 "username": "",
10184 "password": "",
10185 "host": "",
10186 "hostname": "",
10187 "port": "",
10188 "pathname": "\\\\opaque\\path",
10189 "search": "",
10190 "hash": ""
10191 },
10192 {
10193 "input": "non-special:\\/opaque",
10194 "base": null,
10195 "href": "non-special:\\/opaque",
10196 "origin": "null",
10197 "protocol": "non-special:",
10198 "username": "",
10199 "password": "",
10200 "host": "",
10201 "hostname": "",
10202 "port": "",
10203 "pathname": "\\/opaque",
10204 "search": "",
10205 "hash": ""
10206 },
10207 {
10208 "input": "non-special:/\\path",
10209 "base": null,
10210 "href": "non-special:/\\path",
10211 "origin": "null",
10212 "protocol": "non-special:",
10213 "username": "",
10214 "password": "",
10215 "host": "",
10216 "hostname": "",
10217 "port": "",
10218 "pathname": "/\\path",
10219 "search": "",
10220 "hash": ""
10221 },
10222 {
10223 "input": "non-special://host\\a",
10224 "base": null,
10225 "failure": true
10226 },
10227 {
10228 "input": "non-special://host/a\\b",
10229 "base": null,
10230 "href": "non-special://host/a\\b",
10231 "origin": "null",
10232 "protocol": "non-special:",
10233 "username": "",
10234 "password": "",
10235 "host": "host",
10236 "hostname": "host",
10237 "port": "",
10238 "pathname": "/a\\b",
10239 "search": "",
10240 "hash": ""
10241 }
10242]
zigmod.yml created+8
...@@ -0,0 +1,8 @@
1id: k90bjcb81yhkqjoddl1qasoktf2eowtyjrf6ixvmmn1s0sra
2name: url
3main: url.zig
4license: MPL-2.0
5description: A WHATWG URL-compatible parser for Zig
6root_dependencies:
7 - src: git https://github.com/nektro/zig-json
8 - src: git https://github.com/nektro/zig-expect