{
    "tests": [
        {
            "fragmentContext": null,
            "description": "<b><p>Bold </b> Not bold</p>\\nAlso not bold.",
            "input": "<b><p>Bold </b> Not bold</p>\nAlso not bold.",
            "output": [
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "Character",
                    "Bold "
                ],
                [
                    "EndTag",
                    "b"
                ],
                [
                    "Character",
                    " Not bold"
                ],
                [
                    "EndTag",
                    "p"
                ],
                [
                    "Character",
                    "\nAlso not bold."
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<html>\\n<font color=red><i>Italic and Red<p>Italic and Red </font> Just italic.</p> Italic only.</i> Plain\\n<p>I should not be red. <font color=red>Red. <i>Italic and red.</p>\\n<p>Italic and red. </i> Red.</font> I should not be red.</p>\\n<b>Bold <i>Bold and italic</b> Only Italic </i> Plain",
            "input": "<html>\n<font color=red><i>Italic and Red<p>Italic and Red </font> Just italic.</p> Italic only.</i> Plain\n<p>I should not be red. <font color=red>Red. <i>Italic and red.</p>\n<p>Italic and red. </i> Red.</font> I should not be red.</p>\n<b>Bold <i>Bold and italic</b> Only Italic </i> Plain",
            "output": [
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "font",
                    {
                        "color": "red"
                    }
                ],
                [
                    "StartTag",
                    "i",
                    {}
                ],
                [
                    "Character",
                    "Italic and Red"
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "Character",
                    "Italic and Red "
                ],
                [
                    "EndTag",
                    "font"
                ],
                [
                    "Character",
                    " Just italic."
                ],
                [
                    "EndTag",
                    "p"
                ],
                [
                    "Character",
                    " Italic only."
                ],
                [
                    "EndTag",
                    "i"
                ],
                [
                    "Character",
                    " Plain\n"
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "Character",
                    "I should not be red. "
                ],
                [
                    "StartTag",
                    "font",
                    {
                        "color": "red"
                    }
                ],
                [
                    "Character",
                    "Red. "
                ],
                [
                    "StartTag",
                    "i",
                    {}
                ],
                [
                    "Character",
                    "Italic and red."
                ],
                [
                    "EndTag",
                    "p"
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "Character",
                    "Italic and red. "
                ],
                [
                    "EndTag",
                    "i"
                ],
                [
                    "Character",
                    " Red."
                ],
                [
                    "EndTag",
                    "font"
                ],
                [
                    "Character",
                    " I should not be red."
                ],
                [
                    "EndTag",
                    "p"
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "Character",
                    "Bold "
                ],
                [
                    "StartTag",
                    "i",
                    {}
                ],
                [
                    "Character",
                    "Bold and italic"
                ],
                [
                    "EndTag",
                    "b"
                ],
                [
                    "Character",
                    " Only Italic "
                ],
                [
                    "EndTag",
                    "i"
                ],
                [
                    "Character",
                    " Plain"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<html><body>\\n<p><font size=\"7\">First paragraph.</p>\\n<p>Second paragraph.</p></font>\\n<b><p><i>Bold and Italic</b> Italic</p>",
            "input": "<html><body>\n<p><font size=\"7\">First paragraph.</p>\n<p>Second paragraph.</p></font>\n<b><p><i>Bold and Italic</b> Italic</p>",
            "output": [
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "StartTag",
                    "font",
                    {
                        "size": "7"
                    }
                ],
                [
                    "Character",
                    "First paragraph."
                ],
                [
                    "EndTag",
                    "p"
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "Character",
                    "Second paragraph."
                ],
                [
                    "EndTag",
                    "p"
                ],
                [
                    "EndTag",
                    "font"
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "StartTag",
                    "i",
                    {}
                ],
                [
                    "Character",
                    "Bold and Italic"
                ],
                [
                    "EndTag",
                    "b"
                ],
                [
                    "Character",
                    " Italic"
                ],
                [
                    "EndTag",
                    "p"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<html>\\n<dl>\\n<dt><b>Boo\\n<dd>Goo?\\n</dl>\\n</html>",
            "input": "<html>\n<dl>\n<dt><b>Boo\n<dd>Goo?\n</dl>\n</html>",
            "output": [
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "dl",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "dt",
                    {}
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "Character",
                    "Boo\n"
                ],
                [
                    "StartTag",
                    "dd",
                    {}
                ],
                [
                    "Character",
                    "Goo?\n"
                ],
                [
                    "EndTag",
                    "dl"
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<html><body>\\n<label><a><div>Hello<div>World</div></a></label>  \\n</body></html>",
            "input": "<html><body>\n<label><a><div>Hello<div>World</div></a></label>  \n</body></html>",
            "output": [
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "label",
                    {}
                ],
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "Character",
                    "Hello"
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "Character",
                    "World"
                ],
                [
                    "EndTag",
                    "div"
                ],
                [
                    "EndTag",
                    "a"
                ],
                [
                    "EndTag",
                    "label"
                ],
                [
                    "Character",
                    "  \n"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<table><center> <font>a</center> <img> <tr><td> </td> </tr> </table>",
            "input": "<table><center> <font>a</center> <img> <tr><td> </td> </tr> </table>",
            "output": [
                [
                    "StartTag",
                    "table",
                    {}
                ],
                [
                    "StartTag",
                    "center",
                    {}
                ],
                [
                    "Character",
                    " "
                ],
                [
                    "StartTag",
                    "font",
                    {}
                ],
                [
                    "Character",
                    "a"
                ],
                [
                    "EndTag",
                    "center"
                ],
                [
                    "Character",
                    " "
                ],
                [
                    "StartTag",
                    "img",
                    {}
                ],
                [
                    "Character",
                    " "
                ],
                [
                    "StartTag",
                    "tr",
                    {}
                ],
                [
                    "StartTag",
                    "td",
                    {}
                ],
                [
                    "Character",
                    " "
                ],
                [
                    "EndTag",
                    "td"
                ],
                [
                    "Character",
                    " "
                ],
                [
                    "EndTag",
                    "tr"
                ],
                [
                    "Character",
                    " "
                ],
                [
                    "EndTag",
                    "table"
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<table><tr><p><a><p>You should see this text.",
            "input": "<table><tr><p><a><p>You should see this text.",
            "output": [
                [
                    "StartTag",
                    "table",
                    {}
                ],
                [
                    "StartTag",
                    "tr",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "StartTag",
                    "p",
                    {}
                ],
                [
                    "Character",
                    "You should see this text."
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<TABLE>\\n<TR>\\n<CENTER><CENTER><TD></TD></TR><TR>\\n<FONT>\\n<TABLE><tr></tr></TABLE>\\n</P>\\n<a></font><font></a>\\nThis page contains an insanely badly-nested tag sequence.",
            "input": "<TABLE>\n<TR>\n<CENTER><CENTER><TD></TD></TR><TR>\n<FONT>\n<TABLE><tr></tr></TABLE>\n</P>\n<a></font><font></a>\nThis page contains an insanely badly-nested tag sequence.",
            "output": [
                [
                    "StartTag",
                    "table",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "tr",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "center",
                    {}
                ],
                [
                    "StartTag",
                    "center",
                    {}
                ],
                [
                    "StartTag",
                    "td",
                    {}
                ],
                [
                    "EndTag",
                    "td"
                ],
                [
                    "EndTag",
                    "tr"
                ],
                [
                    "StartTag",
                    "tr",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "font",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "table",
                    {}
                ],
                [
                    "StartTag",
                    "tr",
                    {}
                ],
                [
                    "EndTag",
                    "tr"
                ],
                [
                    "EndTag",
                    "table"
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "EndTag",
                    "p"
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "a",
                    {}
                ],
                [
                    "EndTag",
                    "font"
                ],
                [
                    "StartTag",
                    "font",
                    {}
                ],
                [
                    "EndTag",
                    "a"
                ],
                [
                    "Character",
                    "\nThis page contains an insanely badly-nested tag sequence."
                ]
            ]
        },
        {
            "fragmentContext": null,
            "description": "<html>\\n<body>\\n<b><nobr><div>This text is in a div inside a nobr</nobr>More text that should not be in the nobr, i.e., the\\nnobr should have closed the div inside it implicitly. </b><pre>A pre tag outside everything else.</pre>\\n</body>\\n</html>",
            "input": "<html>\n<body>\n<b><nobr><div>This text is in a div inside a nobr</nobr>More text that should not be in the nobr, i.e., the\nnobr should have closed the div inside it implicitly. </b><pre>A pre tag outside everything else.</pre>\n</body>\n</html>",
            "output": [
                [
                    "StartTag",
                    "html",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "body",
                    {}
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "StartTag",
                    "b",
                    {}
                ],
                [
                    "StartTag",
                    "nobr",
                    {}
                ],
                [
                    "StartTag",
                    "div",
                    {}
                ],
                [
                    "Character",
                    "This text is in a div inside a nobr"
                ],
                [
                    "EndTag",
                    "nobr"
                ],
                [
                    "Character",
                    "More text that should not be in the nobr, i.e., the\nnobr should have closed the div inside it implicitly. "
                ],
                [
                    "EndTag",
                    "b"
                ],
                [
                    "StartTag",
                    "pre",
                    {}
                ],
                [
                    "Character",
                    "A pre tag outside everything else."
                ],
                [
                    "EndTag",
                    "pre"
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "EndTag",
                    "body"
                ],
                [
                    "Character",
                    "\n"
                ],
                [
                    "EndTag",
                    "html"
                ]
            ]
        }
    ]
}