{"type":"thread.started","thread_id":"01a0071e-418b-7f42-b3a8-4d41ec1974c2"}
{"type":"turn.started"}
{"type":"item.completed","item":{"id":"item_0","type":"agent_message","text":"I’m inspecting the staged assets and current build root, then I’ll implement the executable boundary and parser in the application files only. I’ll leave all `sources/` assets untouched and run the supplied conformance harness before reporting."}}
{"type":"item.started","item":{"id":"item_1","type":"command_execution","command":"/bin/bash -lc \"pwd && rg --files -la && sed -n '1,120p' sources/full_test.sh && sed -n '1,80p' sources/spec_tests.py\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_1","type":"command_execution","command":"/bin/bash -lc \"pwd && rg --files -la && sed -n '1,120p' sources/full_test.sh && sed -n '1,80p' sources/spec_tests.py\"","aggregated_output":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark\nrg: ripgrep requires at least one pattern to execute a search\n","exit_code":2,"status":"failed"}}
{"type":"item.started","item":{"id":"item_2","type":"command_execution","command":"/bin/bash -lc \"pwd; rg --files -g '*' | sort; sed -n '1,160p' sources/full_test.sh; sed -n '1,100p' sources/spec_tests.py\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_2","type":"command_execution","command":"/bin/bash -lc \"pwd; rg --files -g '*' | sort; sed -n '1,160p' sources/full_test.sh; sed -n '1,100p' sources/spec_tests.py\"","aggregated_output":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark\nsources/cmark.py\nsources/full_test.sh\nsources/normalize.py\nsources/spec.txt\nsources/spec_tests.py\n#!/bin/sh\n# full_test.sh — scoring entry point. Do not filter, skip, or reinterpret.\n#\n# `drydock uat` runs `sh sources/full_test.sh` from the completed application root and takes its\n# exit code and output as the score. The interface check is separate from the conformance run so\n# that a missing or non-executable program and a genuine conformance failure are distinguishable\n# in the evidence. The program path is the harness's only knowledge of the implementation\n# language; the harness itself is language-neutral.\n#\n# The suite runs unfiltered: no --pattern, no --number, no selector of any kind. spec_tests.py\n# exits with failed + errored, so exit 0 means the complete CommonMark 0.31.2 suite passed.\nset -eu\n\nif [ ! -x ./commonmark ]; then\n    echo \"error: no executable ./commonmark at the application root.\" >&2\n    echo \"The deliverable is an executable named commonmark that reads UTF-8 Markdown on stdin\" >&2\n    echo \"and writes HTML to stdout.\" >&2\n    exit 1\nfi\n\n# spec_tests.py imports cmark and normalize as siblings, so the staged directory has to be on the\n# import path. The program is passed absolute because the runner spawns it from its own cwd.\nPYTHONPATH=\"$PWD/sources${PYTHONPATH:+:$PYTHONPATH}\"\nexport PYTHONPATH\n\nset +e\noutput=$(python3 sources/spec_tests.py --program \"$PWD/commonmark\" --spec sources/spec.txt 2>&1)\nstatus=$?\nset -e\n\nprintf '%s\\n' \"$output\"\n\n# The runner exits with failed + errored, which a shell truncates modulo 256: exactly 256 or 512\n# failures would exit 0 and read as a pass. The harness therefore confirms the tally rather than\n# trusting the status alone, and reports a clean run only when both agree. This is the scoring\n# instrument reading its own instrument; the acceptance check above it still asserts nothing but\n# this script's exit code.\nif [ \"$status\" -ne 0 ]; then\n    exit 1\nfi\nif ! printf '%s\\n' \"$output\" | grep -q '0 failed, 0 errored, 0 skipped'; then\n    echo \"error: conformance runner exited 0 but did not report a clean unfiltered suite.\" >&2\n    exit 1\nfi\n#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport sys\nfrom difflib import unified_diff\nimport argparse\nimport re\nimport json\nfrom cmark import CMark\nfrom normalize import normalize_html\n\nif __name__ == \"__main__\":\n    parser = argparse.ArgumentParser(description='Run cmark tests.')\n    parser.add_argument('-p', '--program', dest='program', nargs='?', default=None,\n            help='program to test')\n    parser.add_argument('-s', '--spec', dest='spec', nargs='?', default='spec.txt',\n            help='path to spec')\n    parser.add_argument('-P', '--pattern', dest='pattern', nargs='?',\n            default=None, help='limit to sections matching regex pattern')\n    parser.add_argument('--library-dir', dest='library_dir', nargs='?',\n            default=None, help='directory containing dynamic library')\n    parser.add_argument('--no-normalize', dest='normalize',\n            action='store_const', const=False, default=True,\n            help='do not normalize HTML')\n    parser.add_argument('-d', '--dump-tests', dest='dump_tests',\n            action='store_const', const=True, default=False,\n            help='dump tests in JSON format')\n    parser.add_argument('--debug-normalization', dest='debug_normalization',\n            action='store_const', const=True,\n            default=False, help='filter stdin through normalizer for testing')\n    parser.add_argument('-n', '--number', type=int, default=None,\n            help='only consider the test with the given number')\n    parser.add_argument('--track', metavar='path',\n            help='track which test cases pass/fail in the given JSON file and only report changes')\n    args = parser.parse_args(sys.argv[1:])\n\ndef out(str):\n    sys.stdout.buffer.write(str.encode('utf-8')) \n\ndef print_test_header(test):\n    out(\"Example %d (lines %d-%d) %s\\n\" % (test['example'], test['start_line'], test['end_line'], test['section']))\n\ndef do_test(test, normalize, prev_result):\n    [retcode, actual_html_bytes, err] = cmark.to_html(test['markdown'])\n    if retcode != 0:\n        if prev_result != 'error':\n            print_test_header(test)\n            out(\"program returned error code %d\\n\" % retcode)\n            sys.stdout.buffer.write(err)\n        return 'error'\n\n    expected_html = test['html']\n\n    try:\n        actual_html = actual_html_bytes.decode('utf-8')\n    except UnicodeDecodeError as e:\n        if prev_result != 'fail':\n            print_test_header(test)\n            out(test['markdown'] + '\\n')\n            out(\"Unicode error: \" + str(e) + '\\n')\n            out(\"Expected: \" + repr(expected_html) + '\\n')\n            out(\"Got:      \" + repr(actual_html_bytes) + '\\n')\n            out('\\n')\n        return 'fail'\n\n    if normalize:\n        actual_html = normalize_html(actual_html) + '\\n'\n        expected_html = normalize_html(expected_html) + '\\n'\n\n    if actual_html != expected_html:\n        if prev_result != 'fail':\n            print_test_header(test)\n            out(test['markdown'] + '\\n')\n            expected_html_lines = expected_html.splitlines(True)\n            actual_html_lines = actual_html.splitlines(True)\n            for diffline in unified_diff(expected_html_lines, actual_html_lines,\n                            \"expected HTML\", \"actual HTML\"):\n                out(diffline)\n            out('\\n')\n        return 'fail'\n\n    if prev_result and prev_result != 'pass':\n        print_test_header(test)\n        print('fixed!')\n\n    return 'pass'\n\ndef get_tests(specfile):\n    line_number = 0\n    start_line = 0\n    end_line = 0\n    example_number = 0\n    markdown_lines = []\n    html_lines = []\n    state = 0  # 0 regular text, 1 markdown example, 2 html output\n    headertext = ''\n    tests = []\n\n    header_re = re.compile('#+ ')\n\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"command -v cmark || true; command -v pandoc || true; python3 - <<'PY'\nmods=['markdown','commonmark','mistune','markdown_it','cmarkgfm']\nfor m in mods:\n try:\n  x=__import__(m); print(m, getattr(x,'__file__','yes'))\n except Exception as e: print(m,'NO')\nPY\nwc -l sources/spec.txt\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_3","type":"command_execution","command":"/bin/bash -lc \"command -v cmark || true; command -v pandoc || true; python3 - <<'PY'\nmods=['markdown','commonmark','mistune','markdown_it','cmarkgfm']\nfor m in mods:\n try:\n  x=__import__(m); print(m, getattr(x,'__file__','yes'))\n except Exception as e: print(m,'NO')\nPY\nwc -l sources/spec.txt\"","aggregated_output":"markdown /mnt/c/Users/barlo/projects/drydock/.venv/lib/python3.12/site-packages/markdown/__init__.py\ncommonmark NO\nmistune NO\nmarkdown_it NO\ncmarkgfm NO\n9811 sources/spec.txt\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_4","type":"agent_message","text":"The build directory contains only the five immutable staged assets; no existing implementation is present. I also confirmed there is no `cmark`/`commonmark` runtime available, so I’m proceeding with a self-contained standard-library parser and will use the full suite’s failures to tighten behavior."}}
{"type":"item.started","item":{"id":"item_5","type":"command_execution","command":"/bin/bash -lc \"python3 sources/spec_tests.py --dump-tests --spec sources/spec.txt > /tmp/commonmark_tests.json; python3 - <<'PY'\nimport json\nx=json.load(open('/tmp/commonmark_tests.json')); print(len(x)); print(x[0].keys()); print(sorted(set(t['section'] for t in x))[:20])\nPY\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_5","type":"command_execution","command":"/bin/bash -lc \"python3 sources/spec_tests.py --dump-tests --spec sources/spec.txt > /tmp/commonmark_tests.json; python3 - <<'PY'\nimport json\nx=json.load(open('/tmp/commonmark_tests.json')); print(len(x)); print(x[0].keys()); print(sorted(set(t['section'] for t in x))[:20])\nPY\"","aggregated_output":"655\ndict_keys(['markdown', 'html', 'example', 'start_line', 'end_line', 'section'])\n['ATX headings', 'Autolinks', 'Backslash escapes', 'Blank lines', 'Block quotes', 'Code spans', 'Emphasis and strong emphasis', 'Entity and numeric character references', 'Fenced code blocks', 'HTML blocks', 'Hard line breaks', 'Images', 'Indented code blocks', 'Inlines', 'Link reference definitions', 'Links', 'List items', 'Lists', 'Paragraphs', 'Precedence']\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_6","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/README.md","kind":"add"},{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark","kind":"add"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_6","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/README.md","kind":"add"},{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark","kind":"add"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_7","type":"command_execution","command":"/bin/bash -lc \"chmod +x commonmark && python3 -m py_compile commonmark && printf '# hi\\\\n\\\\nHello **world**.\\\\n' | ./commonmark && sh sources/full_test.sh\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_7","type":"command_execution","command":"/bin/bash -lc \"chmod +x commonmark && python3 -m py_compile commonmark && printf '# hi\\\\n\\\\nHello **world**.\\\\n' | ./commonmark && sh sources/full_test.sh\"","aggregated_output":"Example 1 (lines 355-360) Tabs\n\tfoo\tbaz\t\tbim\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1 @@\n-<pre><code>foo\tbaz\t\tbim\n-</code></pre>\n+<p>foo baz bim</p>\n\nExample 2 (lines 362-367) Tabs\n  \tfoo\tbaz\t\tbim\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1 @@\n-<pre><code>foo\tbaz\t\tbim\n-</code></pre>\n+<p>foo baz bim</p>\n\nExample 4 (lines 382-393) Tabs\n  - foo\n\n\tbar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>foo</p><p>bar</p></li></ul>\n+<p>- foo</p><p>bar</p>\n\nExample 5 (lines 395-407) Tabs\n- foo\n\n\t\tbar\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1 @@\n-<ul><li><p>foo</p><pre><code>  bar\n-</code></pre></li></ul>\n+<p>- foo</p><p>bar</p>\n\nExample 6 (lines 418-425) Tabs\n>\t\tfoo\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1 @@\n-<blockquote><pre><code>  foo\n-</code></pre></blockquote>\n+<blockquote><p>foo</p></blockquote>\n\nExample 7 (lines 427-436) Tabs\n-\t\tfoo\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1 @@\n-<ul><li><pre><code>  foo\n-</code></pre></li></ul>\n+<p>- foo</p>\n\nExample 8 (lines 439-446) Tabs\n    foo\n\tbar\n\n--- expected HTML\n+++ actual HTML\n@@ -1,3 +1,2 @@\n <pre><code>foo\n-bar\n-</code></pre>\n+</code></pre><p>bar</p>\n\nExample 9 (lines 448-464) Tabs\n - foo\n   - bar\n\t - baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>foo<ul><li>bar<ul><li>baz</li></ul></li></ul></li></ul>\n+<p>- foo - bar - baz</p>\n\nExample 12 (lines 489-493) Backslash escapes\n\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\-\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\\\\\]\\^\\_\\`\\{\\|\\}\\~\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>!&quot;#$%&amp;'()*+,-./:;&lt;=&gt;?@[\\]^_`{|}~</p>\n+<p>!\"#$%&amp;'()*+,-./:;&lt;=&gt;?@[\\]^_`{|}~</p>\n\nExample 14 (lines 509-529) Backslash escapes\n\\*not emphasized*\n\\<br/> not a tag\n\\[not a link](/foo)\n\\`not code`\n1\\. not a list\n\\* not a list\n\\# not a heading\n\\[foo]: /url \"not a reference\"\n\\&ouml; not a character entity\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>*not emphasized* &lt;br/&gt; not a tag [not a link](/foo) `not code` 1. not a list * not a list # not a heading [foo]: /url &quot;not a reference&quot; &amp;ouml; not a character entity</p>\n+<p><em>not emphasized</em> \\<br> not a tag <a href=\"/foo\">not a link</a> \\<code>not code</code> 1. not a list * not a list # not a heading [foo]: /url \"not a reference\" ö not a character entity</p>\n\nExample 20 (lines 580-584) Backslash escapes\n<https://example.com?find=\\*>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"https://example.com?find=%5C*\">https://example.com?find=\\*</a></p>\n+<p><a href=\"https://example.com?find=\\*\">https://example.com?find=\\*</a></p>\n\nExample 21 (lines 587-591) Backslash escapes\n<a href=\"/bar\\/)\">\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<a href=\"/bar\\/)\"> \n+<p><a href=\"/bar\\/)\"></p>\n\nExample 23 (lines 604-610) Backslash escapes\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 24 (lines 613-620) Backslash escapes\n``` foo\\+bar\nfoo\n```\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n-<pre><code class=\"language-foo+bar\">foo\n+<pre><code class=\"language-foo\\+bar\">foo\n </code></pre>\n\nExample 25 (lines 649-657) Entity and numeric character references\n&nbsp; &amp; &copy; &AElig; &Dcaron;\n&frac34; &HilbertSpace; &DifferentialD;\n&ClockwiseContourIntegral; &ngE;\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&amp; © Æ Ď ¾ ℋ ⅆ ∲ ≧̸</p>\n+<p>  &amp; © Æ &Dcaron; ¾ &HilbertSpace; &DifferentialD; &ClockwiseContourIntegral; &ngE;</p>\n\nExample 26 (lines 668-672) Entity and numeric character references\n&#35; &#1234; &#992; &#0;\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p># Ӓ Ϡ �</p>\n+<p># Ӓ Ϡ </p>\n\nExample 27 (lines 681-685) Entity and numeric character references\n&#X22; &#XD06; &#xcab;\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&quot; ആ ಫ</p>\n+<p>&amp;#X22; &amp;#XD06; ಫ</p>\n\nExample 28 (lines 690-700) Entity and numeric character references\n&nbsp &x; &#; &#x;\n&#87654321;\n&#abcdef0;\n&ThisIsNotDefined; &hi?;\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&amp;nbsp &amp;x; &amp;#; &amp;#x; &amp;#87654321; &amp;#abcdef0; &amp;ThisIsNotDefined; &amp;hi?;</p>\n+<p>&amp;nbsp &amp;x; &amp;#; &amp;#x; &87654321; &amp;#abcdef0; &ThisIsNotDefined; &amp;hi?;</p>\n\nExample 30 (lines 717-721) Entity and numeric character references\n&MadeUpEntity;\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&amp;MadeUpEntity;</p>\n+<p>&MadeUpEntity;</p>\n\nExample 31 (lines 728-732) Entity and numeric character references\n<a href=\"&ouml;&ouml;.html\">\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<a href=\"öö.html\"> \n+<p><a href=\"öö.html\"></p>\n\nExample 32 (lines 735-739) Entity and numeric character references\n[foo](/f&ouml;&ouml; \"f&ouml;&ouml;\")\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/f%C3%B6%C3%B6\" title=\"föö\">foo</a></p>\n+<p><a href=\"/f&amp;ouml;&amp;ouml;\" title=\"f&amp;ouml;&amp;ouml;\">foo</a></p>\n\nExample 33 (lines 742-748) Entity and numeric character references\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 34 (lines 751-758) Entity and numeric character references\n``` f&ouml;&ouml;\nfoo\n```\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n-<pre><code class=\"language-föö\">foo\n+<pre><code class=\"language-f&amp;ouml;&amp;ouml;\">foo\n </code></pre>\n\nExample 38 (lines 791-800) Entity and numeric character references\n&#42; foo\n\n* foo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>* foo</p><ul><li>foo</li></ul>\n+<p>* foo</p><p>* foo</p>\n\nExample 39 (lines 802-808) Entity and numeric character references\nfoo&#10;&#10;bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,3 @@\n-<p>foo bar</p>\n+<p>foo\n+\n+bar</p>\n\nExample 40 (lines 810-814) Entity and numeric character references\n&#9;foo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo</p>\n+<p>\tfoo</p>\n\nExample 42 (lines 840-848) Precedence\n- `one\n- two`\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>`one</li><li>two`</li></ul>\n+<p>- <code>one - two</code></p>\n\nExample 49 (lines 942-948) Thematic breaks\nFoo\n    ***\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<p>Foo ***</p>\n+<p>Foo</p><pre><code>***\n+</code></pre>\n\nExample 55 (lines 994-1004) Thematic breaks\n_ _ _ _ a\n\na------\n\n---a---\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>_ _ _ _ a</p><p>a------</p><p>---a---</p>\n+<p><em> </em> <em> </em> a</p><p>a------</p><p>---a---</p>\n\nExample 57 (lines 1019-1031) Thematic breaks\n- foo\n***\n- bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>foo</li></ul><hr><ul><li>bar</li></ul>\n+<p>- foo *** - bar</p>\n\nExample 58 (lines 1036-1044) Thematic breaks\nFoo\n***\nbar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>Foo</p><hr><p>bar</p>\n+<p>Foo *** bar</p>\n\nExample 60 (lines 1066-1078) Thematic breaks\n* Foo\n* * *\n* Bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>Foo</li></ul><hr><ul><li>Bar</li></ul>\n+<p>* Foo <em> </em> * * Bar</p>\n\nExample 61 (lines 1083-1093) Thematic breaks\n- Foo\n- * * *\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>Foo</li><li><hr></li></ul>\n+<p>- Foo - <em> </em> *</p>\n\nExample 66 (lines 1167-1171) ATX headings\n# foo *bar* \\*baz\\*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<h1>foo <em>bar</em> *baz*</h1>\n+<h1>foo <em>bar</em> <em>baz</em></h1>\n\nExample 70 (lines 1206-1212) ATX headings\nfoo\n    # bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<p>foo # bar</p>\n+<p>foo</p><pre><code># bar\n+</code></pre>\n\nExample 79 (lines 1307-1315) ATX headings\n## \n#\n### ###\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<h2></h2><h1></h1><h3></h3>\n+<h2></h2><h1></h1><h3>###</h3>\n\nExample 81 (lines 1361-1368) Setext headings\nFoo *bar\nbaz*\n====\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<h1>Foo <em>bar baz</em></h1>\n+<p>Foo *bar baz* ====</p>\n\nExample 82 (lines 1375-1382) Setext headings\n  Foo *bar\nbaz*\t\n====\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<h1>Foo <em>bar baz</em></h1>\n+<p>Foo *bar baz* ====</p>\n\nExample 87 (lines 1449-1455) Setext headings\nFoo\n    ---\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<p>Foo ---</p>\n+<p>Foo</p><pre><code>---\n+</code></pre>\n\nExample 88 (lines 1460-1471) Setext headings\nFoo\n= =\n\nFoo\n--- -\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>Foo = =</p><p>Foo</p><hr>\n+<p>Foo = =</p><p>Foo --- -</p>\n\nExample 91 (lines 1497-1510) Setext headings\n`Foo\n----\n`\n\n<a title=\"a lot\n---\nof dashes\"/>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<h2>`Foo</h2><p>`</p><h2>&lt;a title=&quot;a lot</h2><p>of dashes&quot;/&gt;</p>\n+<h2>`Foo</h2><p>`</p><h2>&lt;a title=\"a lot</h2><p>of dashes\"/&gt;</p>\n\nExample 93 (lines 1527-1537) Setext headings\n> foo\nbar\n===\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><p>foo bar ===</p></blockquote>\n+<blockquote><p>foo</p></blockquote><h1>bar</h1>\n\nExample 94 (lines 1540-1548) Setext headings\n- Foo\n---\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>Foo</li></ul><hr>\n+<h2>- Foo</h2>\n\nExample 95 (lines 1555-1562) Setext headings\nFoo\nBar\n---\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<h2>Foo Bar</h2>\n+<p>Foo Bar ---</p>\n\nExample 99 (lines 1606-1614) Setext headings\n- foo\n-----\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>foo</li></ul><hr>\n+<h2>- foo</h2>\n\nExample 105 (lines 1706-1716) Setext headings\nFoo\nbar\n* * *\nbaz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>Foo bar</p><hr><p>baz</p>\n+<p>Foo bar <em> </em> * baz</p>\n\nExample 108 (lines 1763-1774) Indented code blocks\n  - foo\n\n    bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<ul><li><p>foo</p><p>bar</p></li></ul>\n+<p>- foo</p><pre><code>bar\n+</code></pre>\n\nExample 109 (lines 1777-1790) Indented code blocks\n1.  foo\n\n    - bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<ol><li><p>foo</p><ul><li>bar</li></ul></li></ol>\n+<p>1. foo</p><pre><code>- bar\n+</code></pre>\n\nExample 113 (lines 1851-1858) Indented code blocks\nFoo\n    bar\n\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<p>Foo bar</p>\n+<p>Foo</p><pre><code>bar\n+</code></pre>\n\nExample 128 (lines 2091-2102) Fenced code blocks\n> ```\n> aaa\n\nbbb\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,3 @@\n <blockquote><pre><code>aaa\n+\n </code></pre></blockquote><p>bbb</p>\n\nExample 131 (lines 2133-2142) Fenced code blocks\n ```\n aaa\naaa\n```\n\n--- expected HTML\n+++ actual HTML\n@@ -1,3 +1,3 @@\n-<pre><code>aaa\n+<pre><code> aaa\n aaa\n </code></pre>\n\nExample 132 (lines 2145-2156) Fenced code blocks\n  ```\naaa\n  aaa\naaa\n  ```\n\n--- expected HTML\n+++ actual HTML\n@@ -1,4 +1,4 @@\n <pre><code>aaa\n-aaa\n+  aaa\n aaa\n </code></pre>\n\nExample 133 (lines 2159-2170) Fenced code blocks\n   ```\n   aaa\n    aaa\n  aaa\n   ```\n\n--- expected HTML\n+++ actual HTML\n@@ -1,4 +1,4 @@\n-<pre><code>aaa\n- aaa\n-aaa\n+<pre><code>   aaa\n+    aaa\n+  aaa\n </code></pre>\n\nExample 146 (lines 2337-2344) Fenced code blocks\n~~~ aa ``` ~~~\nfoo\n~~~\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1 @@\n-<pre><code class=\"language-aa\">foo\n-</code></pre>\n+<p>~~~ aa <code></code>` ~~~ foo</p><pre><code></code></pre>\n\nExample 148 (lines 2429-2444) HTML blocks\n<table><tr><td>\n<pre>\n**Hello**,\n\n_world_.\n</pre>\n</td></tr></table>\n\n--- expected HTML\n+++ actual HTML\n@@ -1,3 +1,3 @@\n <table><tr><td><pre>\n **Hello**,<p><em>world</em>.\n-</pre></p></td></tr></table>\n+</pre></td></tr></table></p>\n\nExample 151 (lines 2493-2499) HTML blocks\n</div>\n*foo*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-</div>*foo*\n+<p></div><em>foo</em></p>\n\nExample 152 (lines 2504-2514) HTML blocks\n<DIV CLASS=\"foo\">\n\n*Markdown*\n\n</DIV>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<div class=\"foo\"><p><em>Markdown</em></p></div>\n+<div class=\"foo\"><p><em>Markdown</em></p><p></div></p>\n\nExample 163 (lines 2642-2650) HTML blocks\n<a href=\"foo\">\n*bar*\n</a>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<a href=\"foo\"> *bar* </a> \n+<p><a href=\"foo\"> <em>bar</em> </a></p>\n\nExample 164 (lines 2655-2663) HTML blocks\n<Warning>\n*bar*\n</Warning>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<warning> *bar* </warning> \n+<p><warning> <em>bar</em> </warning></p>\n\nExample 165 (lines 2666-2674) HTML blocks\n<i class=\"foo\">\n*bar*\n</i>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<i class=\"foo\"> *bar* </i> \n+<p><i class=\"foo\"> <em>bar</em> </i></p>\n\nExample 166 (lines 2677-2683) HTML blocks\n</ins>\n*bar*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-</ins> *bar* \n+<p></ins> <em>bar</em></p>\n\nExample 167 (lines 2692-2700) HTML blocks\n<del>\n*foo*\n</del>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<del> *foo* </del> \n+<p><del> <em>foo</em> </del></p>\n\nExample 168 (lines 2707-2717) HTML blocks\n<del>\n\n*foo*\n\n</del>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<del><p><em>foo</em></p></del> \n+<p><del></p><p><em>foo</em></p><p></del></p>\n\nExample 171 (lines 2753-2769) HTML blocks\n<pre language=\"haskell\"><code>\nimport Text.HTML.TagSoup\n\nmain :: IO ()\nmain = print $ parseTags tags\n</code></pre>\nokay\n\n--- expected HTML\n+++ actual HTML\n@@ -1,6 +1,4 @@\n <pre language=\"haskell\"><code>\n-import Text.HTML.TagSoup\n-\n-main :: IO ()\n+import Text.HTML.TagSoup<p>main :: IO ()\n main = print $ parseTags tags\n-</code></pre><p>okay</p>\n+</code></pre>okay</p>\n\nExample 172 (lines 2774-2788) HTML blocks\n<script type=\"text/javascript\">\n// JavaScript example\n\ndocument.getElementById(\"demo\").innerHTML = \"Hello JavaScript!\";\n</script>\nokay\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<script type=\"text/javascript\">// JavaScript example document.getElementById(\"demo\").innerHTML = \"Hello JavaScript!\";</script><p>okay</p>\n+<script type=\"text/javascript\">// JavaScript example <p>document.getElementById(\"demo\").innerHTML = \"Hello JavaScript!\";</script>okay</p>\n\nExample 173 (lines 2793-2809) HTML blocks\n<textarea>\n\n*foo*\n\n_bar_\n\n</textarea>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<textarea>*foo* _bar_</textarea>\n+<p><textarea></p> <p><em>foo</em></p> <p><em>bar</em></p> <p></textarea></p>\n\nExample 174 (lines 2813-2829) HTML blocks\n<style\n  type=\"text/css\">\nh1 {color:red;}\n\np {color:blue;}\n</style>\nokay\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<style type=\"text/css\">h1 {color:red;} p {color:blue;}</style><p>okay</p>\n+<style type=\"text/css\">h1 {color:red;} <p>p {color:blue;}</style>okay</p>\n\nExample 175 (lines 2836-2846) HTML blocks\n<style\n  type=\"text/css\">\n\nfoo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<style type=\"text/css\">foo \n+<style type=\"text/css\"><p>foo</p> \n\nExample 177 (lines 2863-2873) HTML blocks\n- <div>\n- foo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><div></li><li>foo</li></ul>\n+<p>-<div>- foo</p>\n\nExample 178 (lines 2878-2884) HTML blocks\n<style>p{color:red;}</style>\n*foo*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<style>p{color:red;}</style><p><em>foo</em></p>\n+<style>p{color:red;}</style>*foo*\n\nExample 179 (lines 2887-2893) HTML blocks\n<!-- foo -->*bar*\n*baz*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<!-- foo -->*bar*<p><em>baz</em></p>\n+<p><!-- foo --><em>bar</em> <em>baz</em></p>\n\nExample 181 (lines 2912-2924) HTML blocks\n<!-- Foo\n\nbar\n   baz -->\nokay\n\n--- expected HTML\n+++ actual HTML\n@@ -1,4 +1 @@\n-<!-- Foo\n-\n-bar\n-   baz --><p>okay</p>\n+<p>&lt;!-- Foo</p><p>bar baz --&gt; okay</p>\n\nExample 182 (lines 2930-2944) HTML blocks\n<?php\n\n  echo '>';\n\n?>\nokay\n\n--- expected HTML\n+++ actual HTML\n@@ -1,3 +1,2 @@\n <?php\n-\n-  echo '>'; ?><p>okay</p>\n+<p> echo '&gt;';</p><p>?&gt; okay</p>\n\nExample 183 (lines 2949-2953) HTML blocks\n<!DOCTYPE html>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<!DOCTYPE html> \n+<p>&lt;!DOCTYPE html&gt;</p>\n\nExample 184 (lines 2958-2986) HTML blocks\n<![CDATA[\nfunction matchwo(a,b)\n{\n  if (a < b && a < 0) then {\n    return 1;\n\n  } else {\n\n    return 0;\n  }\n}\n]]>\nokay\n\n--- expected HTML\n+++ actual HTML\n@@ -1,12 +1,3 @@\n-<![CDATA[\n-function matchwo(a,b)\n-{\n-  if (a < b && a < 0) then {\n-    return 1;\n-\n-  } else {\n-\n-    return 0;\n-  }\n-}\n-]]><p>okay</p>\n+<p>&lt;![CDATA[ function matchwo(a,b) { if (a &lt; b &amp;&amp; a &lt; 0) then {</p><pre><code>return 1;\n+</code></pre><p>} else {</p><pre><code>return 0;\n+</code></pre><p>} } ]]&gt; okay</p>\n\nExample 185 (lines 2992-3000) HTML blocks\n  <!-- foo -->\n\n    <!-- foo -->\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n- <!-- foo --><pre><code>&lt;!-- foo --&gt;\n+<p><!-- foo --></p><pre><code>&lt;!-- foo --&gt;\n </code></pre>\n\nExample 187 (lines 3017-3027) HTML blocks\nFoo\n<div>\nbar\n</div>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>Foo</p><div>bar</div>\n+<p>Foo<div>bar</div></p>\n\nExample 190 (lines 3090-3100) HTML blocks\n<div>\n\n*Emphasized* text.\n\n</div>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<div><p><em>Emphasized</em> text.</p></div>\n+<div><p><em>Emphasized</em> text.</p><p></div></p>\n\nExample 192 (lines 3125-3145) HTML blocks\n<table>\n\n<tr>\n\n<td>\nHi\n</td>\n\n</tr>\n\n</table>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<table><tr><td>Hi</td></tr></table>\n+<table><p><tr></p><p><td>Hi</td></p><p></tr></p><p></table></p>\n\nExample 193 (lines 3152-3173) HTML blocks\n<table>\n\n  <tr>\n\n    <td>\n      Hi\n    </td>\n\n  </tr>\n\n</table>\n\n--- expected HTML\n+++ actual HTML\n@@ -1,4 +1,4 @@\n-<table><tr><pre><code>&lt;td&gt;\n+<table><p><tr></p><pre><code>&lt;td&gt;\n   Hi\n &lt;/td&gt;\n-</code></pre></tr></table>\n+</code></pre><p></tr></p><p></table></p>\n\nExample 194 (lines 3201-3207) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 195 (lines 3210-3218) Link reference definitions\n   [foo]: \n      /url  \n           'the title'  \n\n[foo]\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,3 @@\n-<p><a href=\"/url\" title=\"the title\">foo</a></p>\n+<p>[foo]:</p><pre><code>  /url  \n+       'the title'  \n+</code></pre><p>[foo]</p>\n\nExample 196 (lines 3221-3227) Link reference definitions\n[Foo*bar\\]]:my_(url) 'title (with parens)'\n\n[Foo*bar\\]]\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"my_(url)\" title=\"title (with parens)\">Foo*bar]</a></p>\n+<p>[Foo*bar]]:my_(url) 'title (with parens)'</p><p>[Foo*bar]]</p>\n\nExample 197 (lines 3230-3238) Link reference definitions\n[Foo bar]:\n<my url>\n'title'\n\n[Foo bar]\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"my%20url\" title=\"title\">Foo bar</a></p>\n+<p>[Foo bar]: <my url> 'title'</p><p>[Foo bar]</p>\n\nExample 198 (lines 3243-3257) Link reference definitions\n[foo]: /url '\ntitle\nline1\nline2\n'\n\n[foo]\n\n--- expected HTML\n+++ actual HTML\n@@ -1,5 +1 @@\n-<p><a href=\"/url\" title=\"\n-title\n-line1\n-line2\n-\">foo</a></p>\n+<p>[foo]: /url ' title line1 line2 '</p><p>[foo]</p>\n\nExample 200 (lines 3277-3284) Link reference definitions\n[foo]:\n/url\n\n[foo]\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/url\">foo</a></p>\n+<p>[foo]: /url</p><p>[foo]</p>\n\nExample 202 (lines 3301-3307) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 203 (lines 3312-3319) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 204 (lines 3325-3331) Link reference definitions\n[foo]: /url\\bar\\*baz \"foo\\\"bar\\baz\"\n\n[foo]\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/url%5Cbar*baz\" title=\"foo&quot;bar\\baz\">foo</a></p>\n+<p>[foo]: /url\\bar*baz \"foo\"bar\\baz\"</p><p>[foo]</p>\n\nExample 205 (lines 3336-3342) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 206 (lines 3348-3355) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 207 (lines 3361-3367) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 208 (lines 3370-3376) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 210 (lines 3393-3400) Link reference definitions\n[\nfoo\n]: /url\nbar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>bar</p>\n+<p>[ foo ]: /url bar</p>\n\nExample 211 (lines 3406-3410) Link reference definitions\n[foo]: /url \"title\" ok\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[foo]: /url &quot;title&quot; ok</p>\n+<p>[foo]: /url \"title\" ok</p>\n\nExample 212 (lines 3415-3420) Link reference definitions\n[foo]: /url\n\"title\" ok\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&quot;title&quot; ok</p>\n+<p>\"title\" ok</p>\n\nExample 213 (lines 3426-3434) Link reference definitions\n    [foo]: /url \"title\"\n\n[foo]\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n-<pre><code>[foo]: /url &quot;title&quot;\n+<pre><code>[foo]: /url \"title\"\n </code></pre><p>[foo]</p>\n\nExample 214 (lines 3440-3450) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 215 (lines 3455-3464) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 216 (lines 3470-3479) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 97, in blocks\n    content=re.sub(r'[ \\t]+#+[ \\t]*$','',m.group(2)); out.append(f'<h{len(m.group(1))}>'+self.inline(content)+f'</h{len(m.group(1))}>'); i+=1; continue\n                                                                                         ^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 217 (lines 3481-3489) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 218 (lines 3491-3498) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 219 (lines 3504-3517) Link reference definitions\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 220 (lines 3525-3533) Link reference definitions\n[foo]\n\n> [foo]: /url\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/url\">foo</a></p><blockquote></blockquote>\n+<p>[foo]</p><blockquote><p>[foo]: /url</p></blockquote>\n\nExample 225 (lines 3600-3608) Paragraphs\naaa\n             bbb\n                                       ccc\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,3 @@\n-<p>aaa bbb ccc</p>\n+<p>aaa</p><pre><code>         bbb\n+                                   ccc\n+</code></pre>\n\nExample 234 (lines 3782-3792) Block quotes\n> # Foo\n> bar\nbaz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><h1>Foo</h1><p>bar baz</p></blockquote>\n+<blockquote><h1>Foo</h1><p>bar</p></blockquote><p>baz</p>\n\nExample 235 (lines 3798-3808) Block quotes\n> bar\nbaz\n> foo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><p>bar baz foo</p></blockquote>\n+<blockquote><p>bar</p></blockquote><p>baz</p><blockquote><p>foo</p></blockquote>\n\nExample 237 (lines 3842-3854) Block quotes\n> - foo\n- bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><ul><li>foo</li></ul></blockquote><ul><li>bar</li></ul>\n+<blockquote><p>- foo</p></blockquote><p>- bar</p>\n\nExample 240 (lines 3889-3897) Block quotes\n> foo\n    - bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<blockquote><p>foo - bar</p></blockquote>\n+<blockquote><p>foo</p></blockquote><pre><code>- bar\n+</code></pre>\n\nExample 244 (lines 3946-3957) Block quotes\n> foo\n\n> bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><p>foo</p></blockquote><blockquote><p>bar</p></blockquote>\n+<blockquote><p>foo</p><p>bar</p></blockquote>\n\nExample 249 (lines 4027-4035) Block quotes\n> bar\nbaz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><p>bar baz</p></blockquote>\n+<blockquote><p>bar</p></blockquote><p>baz</p>\n\nExample 252 (lines 4066-4078) Block quotes\n> > > foo\nbar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><blockquote><blockquote><p>foo bar</p></blockquote></blockquote></blockquote>\n+<blockquote><blockquote><blockquote><p>foo</p></blockquote></blockquote></blockquote><p>bar</p>\n\nExample 253 (lines 4081-4095) Block quotes\n>>> foo\n> bar\n>>baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><blockquote><blockquote><p>foo bar baz</p></blockquote></blockquote></blockquote>\n+<blockquote><blockquote><blockquote><p>foo</p></blockquote></blockquote><p>bar</p><blockquote><p>baz</p></blockquote></blockquote>\n\nExample 254 (lines 4103-4115) Block quotes\n>     code\n\n>    not code\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n <blockquote><pre><code>code\n-</code></pre></blockquote><blockquote><p>not code</p></blockquote>\n+</code></pre><p>not code</p></blockquote>\n\nExample 256 (lines 4179-4198) List items\n1.  A paragraph\n    with two lines.\n\n        indented code\n\n    > A block quote.\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,6 @@\n-<ol><li><p>A paragraph with two lines.</p><pre><code>indented code\n-</code></pre><blockquote><p>A block quote.</p></blockquote></li></ol>\n+<p>1. A paragraph</p><pre><code>with two lines.\n+\n+    indented code\n+\n+&gt; A block quote.\n+</code></pre>\n\nExample 257 (lines 4212-4221) List items\n- one\n\n two\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>one</li></ul><p>two</p>\n+<p>- one</p><p>two</p>\n\nExample 258 (lines 4224-4235) List items\n- one\n\n  two\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>one</p><p>two</p></li></ul>\n+<p>- one</p><p>two</p>\n\nExample 259 (lines 4238-4248) List items\n -    one\n\n     two\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n-<ul><li>one</li></ul><pre><code> two\n+<p>- one</p><pre><code> two\n </code></pre>\n\nExample 260 (lines 4251-4262) List items\n -    one\n\n      two\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<ul><li><p>one</p><p>two</p></li></ul>\n+<p>- one</p><pre><code>  two\n+</code></pre>\n\nExample 261 (lines 4273-4288) List items\n   > > 1.  one\n>>\n>>     two\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<blockquote><blockquote><ol><li><p>one</p><p>two</p></li></ol></blockquote></blockquote>\n+<blockquote><blockquote><p>1. one</p><pre><code>two\n+</code></pre></blockquote></blockquote>\n\nExample 262 (lines 4300-4313) List items\n>>- one\n>>\n  >  > two\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><blockquote><ul><li>one</li></ul><p>two</p></blockquote></blockquote>\n+<blockquote><blockquote><p>- one</p><p>two</p></blockquote></blockquote>\n\nExample 264 (lines 4332-4344) List items\n- foo\n\n\n  bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>foo</p><p>bar</p></li></ul>\n+<p>- foo</p><p>bar</p>\n\nExample 265 (lines 4349-4371) List items\n1.  foo\n\n    ```\n    bar\n    ```\n\n    baz\n\n    > bam\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,8 @@\n-<ol><li><p>foo</p><pre><code>bar\n-</code></pre><p>baz</p><blockquote><p>bam</p></blockquote></li></ol>\n+<p>1. foo</p><pre><code>```\n+bar\n+```\n+\n+baz\n+\n+&gt; bam\n+</code></pre>\n\nExample 266 (lines 4377-4395) List items\n- Foo\n\n      bar\n\n\n      baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1,5 +1,5 @@\n-<ul><li><p>Foo</p><pre><code>bar\n+<p>- Foo</p><pre><code>  bar\n \n \n-baz\n-</code></pre></li></ul>\n+  baz\n+</code></pre>\n\nExample 267 (lines 4399-4405) List items\n123456789. ok\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ol start=\"123456789\"><li>ok</li></ol>\n+<p>123456789. ok</p>\n\nExample 269 (lines 4417-4423) List items\n0. ok\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ol start=\"0\"><li>ok</li></ol>\n+<p>0. ok</p>\n\nExample 270 (lines 4426-4432) List items\n003. ok\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ol start=\"3\"><li>ok</li></ol>\n+<p>003. ok</p>\n\nExample 272 (lines 4460-4472) List items\n- foo\n\n      bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n-<ul><li><p>foo</p><pre><code>bar\n-</code></pre></li></ul>\n+<p>- foo</p><pre><code>  bar\n+</code></pre>\n\nExample 273 (lines 4477-4489) List items\n  10.  foo\n\n           bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n-<ol start=\"10\"><li><p>foo</p><pre><code>bar\n-</code></pre></li></ol>\n+<p>10. foo</p><pre><code>       bar\n+</code></pre>\n\nExample 275 (lines 4511-4527) List items\n1.     indented code\n\n   paragraph\n\n       more code\n\n--- expected HTML\n+++ actual HTML\n@@ -1,3 +1,2 @@\n-<ol><li><pre><code>indented code\n-</code></pre><p>paragraph</p><pre><code>more code\n-</code></pre></li></ol>\n+<p>1. indented code</p><p>paragraph</p><pre><code>   more code\n+</code></pre>\n\nExample 276 (lines 4533-4549) List items\n1.      indented code\n\n   paragraph\n\n       more code\n\n--- expected HTML\n+++ actual HTML\n@@ -1,3 +1,2 @@\n-<ol><li><pre><code> indented code\n-</code></pre><p>paragraph</p><pre><code>more code\n-</code></pre></li></ol>\n+<p>1. indented code</p><p>paragraph</p><pre><code>   more code\n+</code></pre>\n\nExample 278 (lines 4570-4579) List items\n-    foo\n\n  bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>foo</li></ul><p>bar</p>\n+<p>- foo</p><p>bar</p>\n\nExample 279 (lines 4587-4598) List items\n-  foo\n\n   bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>foo</p><p>bar</p></li></ul>\n+<p>- foo</p><p>bar</p>\n\nExample 280 (lines 4614-4635) List items\n-\n  foo\n-\n  ```\n  bar\n  ```\n-\n      baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1,3 +1,3 @@\n-<ul><li>foo</li><li><pre><code>bar\n-</code></pre></li><li><pre><code>baz\n-</code></pre></li></ul>\n+<p>- foo -</p><pre><code>  bar\n+</code></pre><p>-</p><pre><code>  baz\n+</code></pre>\n\nExample 281 (lines 4640-4647) List items\n-   \n  foo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>foo</li></ul>\n+<p>-<br> foo</p>\n\nExample 282 (lines 4654-4663) List items\n-\n\n  foo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li></li></ul><p>foo</p>\n+<p>-</p><p>foo</p>\n\nExample 283 (lines 4668-4678) List items\n- foo\n-\n- bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>foo</li><li></li><li>bar</li></ul>\n+<h2>- foo</h2><p>- bar</p>\n\nExample 284 (lines 4683-4693) List items\n- foo\n-   \n- bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>foo</li><li></li><li>bar</li></ul>\n+<h2>- foo</h2><p>- bar</p>\n\nExample 285 (lines 4698-4708) List items\n1. foo\n2.\n3. bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ol><li>foo</li><li></li><li>bar</li></ol>\n+<p>1. foo 2. 3. bar</p>\n\nExample 286 (lines 4713-4719) List items\n*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li></li></ul>\n+<p>*</p>\n\nExample 288 (lines 4745-4764) List items\n 1.  A paragraph\n     with two lines.\n\n         indented code\n\n     > A block quote.\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,6 @@\n-<ol><li><p>A paragraph with two lines.</p><pre><code>indented code\n-</code></pre><blockquote><p>A block quote.</p></blockquote></li></ol>\n+<p>1. A paragraph</p><pre><code> with two lines.\n+\n+     indented code\n+\n+ &gt; A block quote.\n+</code></pre>\n\nExample 289 (lines 4769-4788) List items\n  1.  A paragraph\n      with two lines.\n\n          indented code\n\n      > A block quote.\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,6 @@\n-<ol><li><p>A paragraph with two lines.</p><pre><code>indented code\n-</code></pre><blockquote><p>A block quote.</p></blockquote></li></ol>\n+<p>1. A paragraph</p><pre><code>  with two lines.\n+\n+      indented code\n+\n+  &gt; A block quote.\n+</code></pre>\n\nExample 290 (lines 4793-4812) List items\n   1.  A paragraph\n       with two lines.\n\n           indented code\n\n       > A block quote.\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,6 @@\n-<ol><li><p>A paragraph with two lines.</p><pre><code>indented code\n-</code></pre><blockquote><p>A block quote.</p></blockquote></li></ol>\n+<p>1. A paragraph</p><pre><code>   with two lines.\n+\n+       indented code\n+\n+   &gt; A block quote.\n+</code></pre>\n\nExample 292 (lines 4847-4866) List items\n  1.  A paragraph\nwith two lines.\n\n          indented code\n\n      > A block quote.\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,4 @@\n-<ol><li><p>A paragraph with two lines.</p><pre><code>indented code\n-</code></pre><blockquote><p>A block quote.</p></blockquote></li></ol>\n+<p>1. A paragraph with two lines.</p><pre><code>      indented code\n+\n+  &gt; A block quote.\n+</code></pre>\n\nExample 293 (lines 4871-4879) List items\n  1.  A paragraph\n    with two lines.\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<ol><li>A paragraph with two lines.</li></ol>\n+<p>1. A paragraph</p><pre><code>with two lines.\n+</code></pre>\n\nExample 294 (lines 4884-4898) List items\n> 1. > Blockquote\ncontinued here.\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><ol><li><blockquote><p>Blockquote continued here.</p></blockquote></li></ol></blockquote>\n+<blockquote><p>1. &gt; Blockquote</p></blockquote><p>continued here.</p>\n\nExample 295 (lines 4901-4915) List items\n> 1. > Blockquote\n> continued here.\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<blockquote><ol><li><blockquote><p>Blockquote continued here.</p></blockquote></li></ol></blockquote>\n+<blockquote><p>1. &gt; Blockquote continued here.</p></blockquote>\n\nExample 296 (lines 4929-4950) List items\n- foo\n  - bar\n    - baz\n      - boo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,3 @@\n-<ul><li>foo<ul><li>bar<ul><li>baz<ul><li>boo</li></ul></li></ul></li></ul></li></ul>\n+<p>- foo - bar</p><pre><code>- baz\n+  - boo\n+</code></pre>\n\nExample 297 (lines 4955-4967) List items\n- foo\n - bar\n  - baz\n   - boo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>foo</li><li>bar</li><li>baz</li><li>boo</li></ul>\n+<p>- foo - bar - baz - boo</p>\n\nExample 298 (lines 4972-4983) List items\n10) foo\n    - bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<ol start=\"10\"><li>foo<ul><li>bar</li></ul></li></ol>\n+<p>10) foo</p><pre><code>- bar\n+</code></pre>\n\nExample 299 (lines 4988-4998) List items\n10) foo\n   - bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ol start=\"10\"><li>foo</li></ol><ul><li>bar</li></ul>\n+<p>10) foo - bar</p>\n\nExample 300 (lines 5003-5013) List items\n- - foo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><ul><li>foo</li></ul></li></ul>\n+<p>- - foo</p>\n\nExample 301 (lines 5016-5030) List items\n1. - 2. foo\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ol><li><ul><li><ol start=\"2\"><li>foo</li></ol></li></ul></li></ol>\n+<p>1. - 2. foo</p>\n\nExample 302 (lines 5035-5049) List items\n- # Foo\n- Bar\n  ---\n  baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><h1>Foo</h1></li><li><h2>Bar</h2>baz</li></ul>\n+<p>- # Foo - Bar --- baz</p>\n\nExample 303 (lines 5271-5283) Lists\n- foo\n- bar\n+ baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>foo</li><li>bar</li></ul><ul><li>baz</li></ul>\n+<p>- foo - bar + baz</p>\n\nExample 304 (lines 5286-5298) Lists\n1. foo\n2. bar\n3) baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ol><li>foo</li><li>bar</li></ol><ol start=\"3\"><li>baz</li></ol>\n+<p>1. foo 2. bar 3) baz</p>\n\nExample 305 (lines 5305-5315) Lists\nFoo\n- bar\n- baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>Foo</p><ul><li>bar</li><li>baz</li></ul>\n+<p>Foo - bar - baz</p>\n\nExample 307 (lines 5392-5400) Lists\nThe number of windows in my house is\n1.  The number of doors is 6.\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>The number of windows in my house is</p><ol><li>The number of doors is 6.</li></ol>\n+<p>The number of windows in my house is 1. The number of doors is 6.</p>\n\nExample 308 (lines 5406-5425) Lists\n- foo\n\n- bar\n\n\n- baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>foo</p></li><li><p>bar</p></li><li><p>baz</p></li></ul>\n+<p>- foo</p><p>- bar</p><p>- baz</p>\n\nExample 309 (lines 5427-5449) Lists\n- foo\n  - bar\n    - baz\n\n\n      bim\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,5 @@\n-<ul><li>foo<ul><li>bar<ul><li><p>baz</p><p>bim</p></li></ul></li></ul></li></ul>\n+<p>- foo - bar</p><pre><code>- baz\n+\n+\n+  bim\n+</code></pre>\n\nExample 310 (lines 5457-5475) Lists\n- foo\n- bar\n\n<!-- -->\n\n- baz\n- bim\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>foo</li><li>bar</li></ul><!-- --><ul><li>baz</li><li>bim</li></ul>\n+<p>- foo - bar</p><p><!-- --></p><p>- baz - bim</p>\n\nExample 311 (lines 5478-5501) Lists\n-   foo\n\n    notcode\n\n-   foo\n\n<!-- -->\n\n    code\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,3 @@\n-<ul><li><p>foo</p><p>notcode</p></li><li><p>foo</p></li></ul><!-- --><pre><code>code\n+<p>- foo</p><pre><code>notcode\n+</code></pre><p>- foo</p><p><!-- --></p><pre><code>code\n </code></pre>\n\nExample 312 (lines 5509-5527) Lists\n- a\n - b\n  - c\n   - d\n  - e\n - f\n- g\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>a</li><li>b</li><li>c</li><li>d</li><li>e</li><li>f</li><li>g</li></ul>\n+<p>- a - b - c - d - e - f - g</p>\n\nExample 313 (lines 5530-5548) Lists\n1. a\n\n  2. b\n\n   3. c\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ol><li><p>a</p></li><li><p>b</p></li><li><p>c</p></li></ol>\n+<p>1. a</p><p>2. b</p><p>3. c</p>\n\nExample 314 (lines 5554-5568) Lists\n- a\n - b\n  - c\n   - d\n    - e\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<ul><li>a</li><li>b</li><li>c</li><li>d - e</li></ul>\n+<p>- a - b - c - d</p><pre><code>- e\n+</code></pre>\n\nExample 315 (lines 5574-5591) Lists\n1. a\n\n  2. b\n\n    3. c\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n-<ol><li><p>a</p></li><li><p>b</p></li></ol><pre><code>3. c\n+<p>1. a</p><p>2. b</p><pre><code>3. c\n </code></pre>\n\nExample 316 (lines 5597-5614) Lists\n- a\n- b\n\n- c\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>a</p></li><li><p>b</p></li><li><p>c</p></li></ul>\n+<p>- a - b</p><p>- c</p>\n\nExample 317 (lines 5619-5634) Lists\n* a\n*\n\n* c\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>a</p></li><li></li><li><p>c</p></li></ul>\n+<p>* a *</p><p>* c</p>\n\nExample 318 (lines 5641-5660) Lists\n- a\n- b\n\n  c\n- d\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>a</p></li><li><p>b</p><p>c</p></li><li><p>d</p></li></ul>\n+<p>- a - b</p><p>c - d</p>\n\nExample 319 (lines 5663-5681) Lists\n- a\n- b\n\n  [ref]: /url\n- d\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>a</p></li><li><p>b</p></li><li><p>d</p></li></ul>\n+<p>- a - b</p><p>- d</p>\n\nExample 320 (lines 5686-5705) Lists\n- a\n- ```\n  b\n\n\n  ```\n- c\n\n--- expected HTML\n+++ actual HTML\n@@ -1,4 +1,2 @@\n-<ul><li>a</li><li><pre><code>b\n-\n-\n-</code></pre></li><li>c</li></ul>\n+<p>- a - <code></code>` b</p><pre><code>- c\n+</code></pre>\n\nExample 321 (lines 5712-5730) Lists\n- a\n  - b\n\n    c\n- d\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<ul><li>a<ul><li><p>b</p><p>c</p></li></ul></li><li>d</li></ul>\n+<p>- a - b</p><pre><code>c\n+</code></pre><p>- d</p>\n\nExample 322 (lines 5736-5750) Lists\n* a\n  > b\n  >\n* c\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>a<blockquote><p>b</p></blockquote></li><li>c</li></ul>\n+<p>* a</p><blockquote><p>b</p></blockquote><p>* c</p>\n\nExample 323 (lines 5756-5774) Lists\n- a\n  > b\n  ```\n  c\n  ```\n- d\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n-<ul><li>a<blockquote><p>b</p></blockquote><pre><code>c\n-</code></pre></li><li>d</li></ul>\n+<p>- a</p><blockquote><p>b</p></blockquote><pre><code>  c\n+</code></pre><p>- d</p>\n\nExample 324 (lines 5779-5785) Lists\n- a\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>a</li></ul>\n+<p>- a</p>\n\nExample 325 (lines 5788-5799) Lists\n- a\n  - b\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li>a<ul><li>b</li></ul></li></ul>\n+<p>- a - b</p>\n\nExample 326 (lines 5805-5819) Lists\n1. ```\n   foo\n   ```\n\n   bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,3 @@\n-<ol><li><pre><code>foo\n-</code></pre><p>bar</p></li></ol>\n+<p>1. <code></code>` foo</p><pre><code>\n+   bar\n+</code></pre>\n\nExample 327 (lines 5824-5839) Lists\n* foo\n  * bar\n\n  baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>foo</p><ul><li>bar</li></ul><p>baz</p></li></ul>\n+<p>* foo * bar</p><p>baz</p>\n\nExample 328 (lines 5842-5867) Lists\n- a\n  - b\n  - c\n\n- d\n  - e\n  - f\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<ul><li><p>a</p><ul><li>b</li><li>c</li></ul></li><li><p>d</p><ul><li>e</li><li>f</li></ul></li></ul>\n+<p>- a - b - c</p><p>- d - e - f</p>\n\nExample 332 (lines 5929-5933) Code spans\n` `` `\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><code>``</code></p>\n+<p><code> </code><code> </code></p>\n\nExample 333 (lines 5937-5941) Code spans\n`  ``  `\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><code> `` </code></p>\n+<p><code> </code><code> </code></p>\n\nExample 342 (lines 6029-6033) Code spans\n` foo `` bar `\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><code>foo `` bar</code></p>\n+<p><code>foo</code><code>bar</code></p>\n\nExample 345 (lines 6060-6064) Code spans\n`<a href=\"`\">`\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><code>&lt;a href=&quot;</code>&quot;&gt;`</p>\n+<p><code>&lt;a href=\"</code>\"&gt;`</p>\n\nExample 346 (lines 6069-6073) Code spans\n<a href=\"`\">`\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"`\">`</p>\n+<p>&lt;a href=\"<code>\"&gt;</code></p>\n\nExample 348 (lines 6087-6091) Code spans\n<https://foo.bar.`baz>`\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"https://foo.bar.%60baz\">https://foo.bar.`baz</a>`</p>\n+<p>&lt;https://foo.bar.<code>baz&gt;</code></p>\n\nExample 349 (lines 6097-6101) Code spans\n```foo``\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>```foo``</p>\n+<p><code>`foo</code></p>\n\nExample 351 (lines 6113-6117) Code spans\n`foo``bar``\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>`foo<code>bar</code></p>\n+<p><code>foo</code><code>bar</code>`</p>\n\nExample 353 (lines 6340-6344) Emphasis and strong emphasis\na * foo bar*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>a * foo bar*</p>\n+<p>a <em> foo bar</em></p>\n\nExample 354 (lines 6351-6355) Emphasis and strong emphasis\na*\"foo\"*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>a*&quot;foo&quot;*</p>\n+<p>a*\"foo\"*</p>\n\nExample 355 (lines 6360-6364) Emphasis and strong emphasis\n* a *\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>* a *</p>\n+<p><em> a </em></p>\n\nExample 356 (lines 6369-6382) Emphasis and strong emphasis\n*$*alpha.\n\n*£*bravo.\n\n*€*charlie.\n\n*𞋿*delta.\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>*$*alpha.</p><p>*£*bravo.</p><p>*€*charlie.</p><p>*𞋿*delta.</p>\n+<p><em>$</em>alpha.</p><p><em>£</em>bravo.</p><p><em>€</em>charlie.</p><p><em>𞋿</em>delta.</p>\n\nExample 357 (lines 6387-6391) Emphasis and strong emphasis\nfoo*bar*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo<em>bar</em></p>\n+<p>foo*bar*</p>\n\nExample 358 (lines 6394-6398) Emphasis and strong emphasis\n5*6*78\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>5<em>6</em>78</p>\n+<p>5*6*78</p>\n\nExample 360 (lines 6413-6417) Emphasis and strong emphasis\n_ foo bar_\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>_ foo bar_</p>\n+<p><em> foo bar</em></p>\n\nExample 361 (lines 6423-6427) Emphasis and strong emphasis\na_\"foo\"_\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>a_&quot;foo&quot;_</p>\n+<p>a_\"foo\"_</p>\n\nExample 365 (lines 6456-6460) Emphasis and strong emphasis\naa_\"bb\"_cc\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>aa_&quot;bb&quot;_cc</p>\n+<p>aa_\"bb\"_cc</p>\n\nExample 368 (lines 6489-6493) Emphasis and strong emphasis\n*foo bar *\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>*foo bar *</p>\n+<p><em>foo bar </em></p>\n\nExample 370 (lines 6511-6515) Emphasis and strong emphasis\n*(*foo)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>*(*foo)</p>\n+<p><em>(</em>foo)</p>\n\nExample 371 (lines 6521-6525) Emphasis and strong emphasis\n*(*foo*)*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>(<em>foo</em>)</em></p>\n+<p><em>(</em>foo*)*</p>\n\nExample 373 (lines 6543-6547) Emphasis and strong emphasis\n_foo bar _\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>_foo bar _</p>\n+<p><em>foo bar </em></p>\n\nExample 375 (lines 6562-6566) Emphasis and strong emphasis\n_(_foo_)_\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>(<em>foo</em>)</em></p>\n+<p>_(<em>foo</em>)_</p>\n\nExample 378 (lines 6585-6589) Emphasis and strong emphasis\n_foo_bar_baz_\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo_bar_baz</em></p>\n+<p>_foo_bar_baz_</p>\n\nExample 381 (lines 6615-6619) Emphasis and strong emphasis\n** foo bar**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>** foo bar**</p>\n+<p><strong> foo bar</strong></p>\n\nExample 382 (lines 6626-6630) Emphasis and strong emphasis\na**\"foo\"**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>a**&quot;foo&quot;**</p>\n+<p>a<strong>\"foo\"</strong></p>\n\nExample 385 (lines 6654-6658) Emphasis and strong emphasis\n__ foo bar__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>__ foo bar__</p>\n+<p><strong> foo bar</strong></p>\n\nExample 387 (lines 6674-6678) Emphasis and strong emphasis\na__\"foo\"__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>a__&quot;foo&quot;__</p>\n+<p>a<strong>\"foo\"</strong></p>\n\nExample 388 (lines 6683-6687) Emphasis and strong emphasis\nfoo__bar__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo__bar__</p>\n+<p>foo<strong>bar</strong></p>\n\nExample 389 (lines 6690-6694) Emphasis and strong emphasis\n5__6__78\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>5__6__78</p>\n+<p>5<strong>6</strong>78</p>\n\nExample 390 (lines 6697-6701) Emphasis and strong emphasis\nпристаням__стремятся__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>пристаням__стремятся__</p>\n+<p>пристаням<strong>стремятся</strong></p>\n\nExample 391 (lines 6704-6708) Emphasis and strong emphasis\n__foo, __bar__, baz__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo, <strong>bar</strong>, baz</strong></p>\n+<p><strong>foo, </strong>bar<strong>, baz</strong></p>\n\nExample 393 (lines 6728-6732) Emphasis and strong emphasis\n**foo bar **\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>**foo bar **</p>\n+<p><strong>foo bar </strong></p>\n\nExample 394 (lines 6741-6745) Emphasis and strong emphasis\n**(**foo)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>**(**foo)</p>\n+<p><strong>(</strong>foo)</p>\n\nExample 396 (lines 6758-6764) Emphasis and strong emphasis\n**Gomphocarpus (*Gomphocarpus physocarpus*, syn.\n*Asclepias physocarpa*)**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>Gomphocarpus (<em>Gomphocarpus physocarpus</em>, syn. <em>Asclepias physocarpa</em>)</strong></p>\n+<p>*<em>Gomphocarpus (</em>Gomphocarpus physocarpus*, syn. <em>Asclepias physocarpa</em>)**</p>\n\nExample 397 (lines 6767-6771) Emphasis and strong emphasis\n**foo \"*bar*\" foo**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo &quot;<em>bar</em>&quot; foo</strong></p>\n+<p>*<em>foo \"</em>bar*\" foo**</p>\n\nExample 399 (lines 6788-6792) Emphasis and strong emphasis\n__foo bar __\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>__foo bar __</p>\n+<p><strong>foo bar </strong></p>\n\nExample 400 (lines 6798-6802) Emphasis and strong emphasis\n__(__foo)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>__(__foo)</p>\n+<p><strong>(</strong>foo)</p>\n\nExample 402 (lines 6817-6821) Emphasis and strong emphasis\n__foo__bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>__foo__bar</p>\n+<p><strong>foo</strong>bar</p>\n\nExample 403 (lines 6824-6828) Emphasis and strong emphasis\n__пристаням__стремятся\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>__пристаням__стремятся</p>\n+<p><strong>пристаням</strong>стремятся</p>\n\nExample 404 (lines 6831-6835) Emphasis and strong emphasis\n__foo__bar__baz__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo__bar__baz</strong></p>\n+<p><strong>foo</strong>bar<strong>baz</strong></p>\n\nExample 407 (lines 6861-6867) Emphasis and strong emphasis\n*foo\nbar*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo bar</em></p>\n+<p>*foo bar*</p>\n\nExample 409 (lines 6880-6884) Emphasis and strong emphasis\n_foo _bar_ baz_\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo <em>bar</em> baz</em></p>\n+<p>_foo <em>bar</em> baz_</p>\n\nExample 410 (lines 6887-6891) Emphasis and strong emphasis\n__foo_ bar_\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em><em>foo</em> bar</em></p>\n+<p>__foo_ bar_</p>\n\nExample 411 (lines 6894-6898) Emphasis and strong emphasis\n*foo *bar**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo <em>bar</em></em></p>\n+<p><em>foo </em>bar**</p>\n\nExample 414 (lines 6931-6935) Emphasis and strong emphasis\n*foo**bar*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo**bar</em></p>\n+<p><em>foo</em><em>bar</em></p>\n\nExample 418 (lines 6969-6973) Emphasis and strong emphasis\nfoo***bar***baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo<em><strong>bar</strong></em>baz</p>\n+<p>foo*<strong>bar</strong>*baz</p>\n\nExample 419 (lines 6975-6979) Emphasis and strong emphasis\nfoo******bar*********baz\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo<strong><strong><strong>bar</strong></strong></strong>***baz</p>\n+<p>foo***<em><strong>bar</strong></em>******baz</p>\n\nExample 420 (lines 6984-6988) Emphasis and strong emphasis\n*foo **bar *baz* bim** bop*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo <strong>bar <em>baz</em> bim</strong> bop</em></p>\n+<p><em>foo </em><em>bar </em>baz* bim*<em> bop</em></p>\n\nExample 425 (lines 7027-7033) Emphasis and strong emphasis\n**foo\nbar**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo bar</strong></p>\n+<p>**foo bar**</p>\n\nExample 426 (lines 7039-7043) Emphasis and strong emphasis\n__foo _bar_ baz__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo <em>bar</em> baz</strong></p>\n+<p>__foo <em>bar</em> baz__</p>\n\nExample 427 (lines 7046-7050) Emphasis and strong emphasis\n__foo __bar__ baz__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo <strong>bar</strong> baz</strong></p>\n+<p><strong>foo </strong>bar<strong> baz</strong></p>\n\nExample 428 (lines 7053-7057) Emphasis and strong emphasis\n____foo__ bar__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong><strong>foo</strong> bar</strong></p>\n+<p>__<strong>foo</strong> bar__</p>\n\nExample 429 (lines 7060-7064) Emphasis and strong emphasis\n**foo **bar****\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo <strong>bar</strong></strong></p>\n+<p><strong>foo </strong>bar****</p>\n\nExample 430 (lines 7067-7071) Emphasis and strong emphasis\n**foo *bar* baz**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo <em>bar</em> baz</strong></p>\n+<p>*<em>foo </em>bar* baz**</p>\n\nExample 431 (lines 7074-7078) Emphasis and strong emphasis\n**foo*bar*baz**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo<em>bar</em>baz</strong></p>\n+<p>*<em>foo</em>bar*baz**</p>\n\nExample 432 (lines 7081-7085) Emphasis and strong emphasis\n***foo* bar**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong><em>foo</em> bar</strong></p>\n+<p>**<em>foo</em> bar**</p>\n\nExample 433 (lines 7088-7092) Emphasis and strong emphasis\n**foo *bar***\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo <em>bar</em></strong></p>\n+<p>*<em>foo </em>bar***</p>\n\nExample 434 (lines 7097-7103) Emphasis and strong emphasis\n**foo *bar **baz**\nbim* bop**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong>foo <em>bar <strong>baz</strong> bim</em> bop</strong></p>\n+<p>*<em>foo </em>bar <strong>baz</strong> bim* bop**</p>\n\nExample 439 (lines 7139-7143) Emphasis and strong emphasis\nfoo *\\**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo <em>*</em></p>\n+<p>foo ***</p>\n\nExample 442 (lines 7160-7164) Emphasis and strong emphasis\nfoo **\\***\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo <strong>*</strong></p>\n+<p>foo *****</p>\n\nExample 451 (lines 7230-7234) Emphasis and strong emphasis\nfoo _\\__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo <em>_</em></p>\n+<p>foo ___</p>\n\nExample 454 (lines 7251-7255) Emphasis and strong emphasis\nfoo __\\___\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo <strong>_</strong></p>\n+<p>foo _____</p>\n\nExample 456 (lines 7265-7269) Emphasis and strong emphasis\n__foo_\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>_<em>foo</em></p>\n+<p>__foo_</p>\n\nExample 457 (lines 7276-7280) Emphasis and strong emphasis\n_foo__\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo</em>_</p>\n+<p>_foo__</p>\n\nExample 459 (lines 7290-7294) Emphasis and strong emphasis\n____foo_\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>___<em>foo</em></p>\n+<p>____foo_</p>\n\nExample 461 (lines 7304-7308) Emphasis and strong emphasis\n_foo____\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo</em>___</p>\n+<p>_foo____</p>\n\nExample 466 (lines 7345-7349) Emphasis and strong emphasis\n****foo****\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong><strong>foo</strong></strong></p>\n+<p>*<em><strong>foo</strong></em>*</p>\n\nExample 467 (lines 7352-7356) Emphasis and strong emphasis\n____foo____\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong><strong>foo</strong></strong></p>\n+<p>__<strong>foo</strong>__</p>\n\nExample 468 (lines 7363-7367) Emphasis and strong emphasis\n******foo******\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><strong><strong><strong>foo</strong></strong></strong></p>\n+<p>***<em><strong>foo</strong></em>***</p>\n\nExample 470 (lines 7379-7383) Emphasis and strong emphasis\n_____foo_____\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em><strong><strong>foo</strong></strong></em></p>\n+<p>___<strong>foo</strong>___</p>\n\nExample 472 (lines 7395-7399) Emphasis and strong emphasis\n*foo __bar *baz bim__ bam*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo <strong>bar *baz bim</strong> bam</em></p>\n+<p><em>foo <strong>bar </em>baz bim</strong> bam*</p>\n\nExample 473 (lines 7404-7408) Emphasis and strong emphasis\n**foo **bar baz**\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>**foo <strong>bar baz</strong></p>\n+<p><strong>foo </strong>bar baz**</p>\n\nExample 474 (lines 7411-7415) Emphasis and strong emphasis\n*foo *bar baz*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>*foo <em>bar baz</em></p>\n+<p><em>foo </em>bar baz*</p>\n\nExample 475 (lines 7420-7424) Emphasis and strong emphasis\n*[bar*](/url)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>*<a href=\"/url\">bar*</a></p>\n+<p><em><a href=\"/url\">bar</em></a></p>\n\nExample 476 (lines 7427-7431) Emphasis and strong emphasis\n_foo [bar_](/url)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>_foo <a href=\"/url\">bar_</a></p>\n+<p><em>foo <a href=\"/url\">bar</em></a></p>\n\nExample 486 (lines 7580-7584) Links\n[](./target.md)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"./target.md\"></a></p>\n+<p>[](./target.md)</p>\n\nExample 487 (lines 7587-7591) Links\n[link]()\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"\">link</a></p>\n+<p>[link]()</p>\n\nExample 488 (lines 7594-7598) Links\n[link](<>)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"\">link</a></p>\n+<p><a href=\"&amp;lt;&amp;gt;\">link</a></p>\n\nExample 489 (lines 7601-7605) Links\n[]()\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"\"></a></p>\n+<p>[]()</p>\n\nExample 491 (lines 7616-7620) Links\n[link](</my uri>)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/my%20uri\">link</a></p>\n+<p><a href=\"&lt;/my uri&gt;\">link</a></p>\n\nExample 493 (lines 7633-7639) Links\n[link](<foo\nbar>)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<p>[link](<foo bar>)</p>\n+<p><a href=\"&lt;foo\n+bar&gt;\">link</a></p>\n\nExample 494 (lines 7644-7648) Links\n[a](<b)c>)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"b)c\">a</a></p>\n+<p><a href=\"&lt;b)c&gt;\">a</a></p>\n\nExample 495 (lines 7652-7656) Links\n[link](<foo\\>)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[link](&lt;foo&gt;)</p>\n+<p><a href=\"&lt;foo\\&gt;\">link</a></p>\n\nExample 496 (lines 7661-7669) Links\n[a](<b)c\n[a](<b)c>\n[a](<b>c)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[a](&lt;b)c [a](&lt;b)c&gt; [a](<b>c)</p>\n+<p>[a](<b)c [a](<b)c> <a href=\"&lt;b&gt;c\">a</a></p>\n\nExample 497 (lines 7673-7677) Links\n[link](\\(foo\\))\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"(foo)\">link</a></p>\n+<p><a href=\"(foo\">link</a>)</p>\n\nExample 498 (lines 7682-7686) Links\n[link](foo(and(bar)))\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"foo(and(bar))\">link</a></p>\n+<p><a href=\"foo(and(bar\">link</a>))</p>\n\nExample 499 (lines 7691-7695) Links\n[link](foo(and(bar))\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[link](foo(and(bar))</p>\n+<p><a href=\"foo(and(bar\">link</a>)</p>\n\nExample 500 (lines 7698-7702) Links\n[link](foo\\(and\\(bar\\))\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"foo(and(bar)\">link</a></p>\n+<p><a href=\"foo(and(bar\">link</a>)</p>\n\nExample 501 (lines 7705-7709) Links\n[link](<foo(and(bar)>)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"foo(and(bar)\">link</a></p>\n+<p><a href=\"&lt;foo(and(bar)&gt;\">link</a></p>\n\nExample 502 (lines 7715-7719) Links\n[link](foo\\)\\:)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"foo):\">link</a></p>\n+<p><a href=\"foo\">link</a>:)</p>\n\nExample 504 (lines 7740-7744) Links\n[link](foo\\bar)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"foo%5Cbar\">link</a></p>\n+<p><a href=\"foo\\bar\">link</a></p>\n\nExample 505 (lines 7756-7760) Links\n[link](foo%20b&auml;)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"foo%20b%C3%A4\">link</a></p>\n+<p><a href=\"foo%20b&amp;auml;\">link</a></p>\n\nExample 506 (lines 7767-7771) Links\n[link](\"title\")\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"%22title%22\">link</a></p>\n+<p><a href=\"&quot;title&quot;\">link</a></p>\n\nExample 508 (lines 7790-7794) Links\n[link](/url \"title \\\"&quot;\")\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/url\" title=\"title &quot;&quot;\">link</a></p>\n+<p>[link](/url \"title \"&quot;\")</p>\n\nExample 509 (lines 7801-7805) Links\n[link](/url \"title\")\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/url%C2%A0%22title%22\">link</a></p>\n+<p><a href=\"/url\" title=\"title\">link</a></p>\n\nExample 510 (lines 7810-7814) Links\n[link](/url \"title \"and\" title\")\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[link](/url &quot;title &quot;and&quot; title&quot;)</p>\n+<p>[link](/url \"title \"and\" title\")</p>\n\nExample 512 (lines 7844-7849) Links\n[link](   /uri\n  \"title\"  )\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/uri\" title=\"title\">link</a></p>\n+<p>[link]( /uri \"title\" )</p>\n\nExample 514 (lines 7865-7869) Links\n[link [foo [bar]]](/uri)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/uri\">link [foo [bar]]</a></p>\n+<p>[link [foo [bar]]](/uri)</p>\n\nExample 516 (lines 7879-7883) Links\n[link [bar](/uri)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[link <a href=\"/uri\">bar</a></p>\n+<p><a href=\"/uri\">link [bar</a></p>\n\nExample 518 (lines 7895-7899) Links\n[link *foo **bar** `#`*](/uri)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/uri\">link <em>foo <strong>bar</strong> <code>#</code></em></a></p>\n+<p><a href=\"/uri\">link <em>foo <strong>bar</strong> <strong></em></a></p>\n\nExample 520 (lines 7911-7915) Links\n[foo [bar](/uri)](/uri)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[foo <a href=\"/uri\">bar</a>](/uri)</p>\n+<p><a href=\"/uri\">foo [bar</a>](/uri)</p>\n\nExample 521 (lines 7918-7922) Links\n[foo *[bar [baz](/uri)](/uri)*](/uri)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[foo <em>[bar <a href=\"/uri\">baz</a>](/uri)</em>](/uri)</p>\n+<p><a href=\"/uri\">foo <em><a href=\"/uri\">bar [baz</a></a></em>](/uri)</p>\n\nExample 522 (lines 7925-7929) Links\n![[[foo](uri1)](uri2)](uri3)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><img alt=\"[foo](uri2)\" src=\"uri3\"></p>\n+<p><img alt=\"&lt;a href=\" src=\"uri1\" uri2\">[foo\" /&gt;</a>](uri3)</p>\n\nExample 523 (lines 7935-7939) Links\n*[foo*](/uri)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>*<a href=\"/uri\">foo*</a></p>\n+<p><em><a href=\"/uri\">foo</em></a></p>\n\nExample 528 (lines 7976-7980) Links\n[foo<https://example.com/?search=](uri)>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[foo<a href=\"https://example.com/?search=%5D(uri)\">https://example.com/?search=](uri)</a></p>\n+<p>[foo<a href=\"https://example.com/?search=](uri)\">https://example.com/?search=](uri)</a></p>\n\nExample 529 (lines 8014-8020) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 530 (lines 8029-8035) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 531 (lines 8038-8044) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 532 (lines 8049-8055) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 533 (lines 8058-8064) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 534 (lines 8069-8075) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 535 (lines 8078-8084) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 536 (lines 8093-8099) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 537 (lines 8102-8108) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 540 (lines 8132-8138) Links\n[foo<https://example.com/?search=][ref]>\n\n[ref]: /uri\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[foo<a href=\"https://example.com/?search=%5D%5Bref%5D\">https://example.com/?search=][ref]</a></p>\n+<p>[foo<a href=\"https://example.com/?search=][ref]\">https://example.com/?search=][ref]</a></p>\n\nExample 541 (lines 8143-8149) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 542 (lines 8154-8160) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 543 (lines 8166-8173) Links\n[Foo\n  bar]: /url\n\n[Baz][Foo bar]\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/url\">Baz</a></p>\n+<p>[Foo bar]: /url</p><p>[Baz][Foo bar]</p>\n\nExample 544 (lines 8179-8185) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 545 (lines 8188-8196) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 546 (lines 8229-8237) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 547 (lines 8244-8250) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 548 (lines 8256-8263) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 551 (lines 8286-8292) Links\n[foo][ref\\[]\n\n[ref\\[]: /uri\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/uri\">foo</a></p>\n+<p>[foo][ref[]</p>\n\nExample 552 (lines 8297-8303) Links\n[bar\\\\]: /uri\n\n[bar\\\\]\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"/uri\">bar\\</a></p>\n+<p>[bar\\]</p>\n\nExample 555 (lines 8342-8348) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 556 (lines 8351-8357) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 557 (lines 8362-8368) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 558 (lines 8375-8383) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 559 (lines 8395-8401) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 560 (lines 8404-8410) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 561 (lines 8413-8419) Links\n[[*foo* bar]]\n\n[*foo* bar]: /url \"title\"\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[<a href=\"/url\" title=\"title\"><em>foo</em> bar</a>]</p>\n+<p>[[<em>foo</em> bar]]</p>\n\nExample 562 (lines 8422-8428) Links\n[[bar [foo]\n\n[foo]: /url\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>[[bar <a href=\"/url\">foo</a></p>\n+<p>[[bar [foo]</p>\n\nExample 563 (lines 8433-8439) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 564 (lines 8444-8450) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 565 (lines 8456-8462) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 566 (lines 8468-8474) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 567 (lines 8480-8487) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 568 (lines 8489-8495) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 569 (lines 8499-8505) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 570 (lines 8507-8513) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 571 (lines 8518-8524) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 572 (lines 8530-8537) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 573 (lines 8543-8550) Links\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 575 (lines 8573-8579) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 576 (lines 8582-8586) Images\n![foo ![bar](/url)](/url2)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><img alt=\"foo bar\" src=\"/url2\"></p>\n+<p><img alt=\"foo !&lt;a href=\" src=\"/url\" url2\">bar\" /&gt;</a></p>\n\nExample 577 (lines 8589-8593) Images\n![foo [bar](/url)](/url2)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><img alt=\"foo bar\" src=\"/url2\"></p>\n+<p><img alt=\"foo &lt;a href=\" src=\"/url\" url2\">bar\" /&gt;</a></p>\n\nExample 578 (lines 8603-8609) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 579 (lines 8612-8618) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 581 (lines 8628-8632) Images\nMy ![foo bar](/path/to/train.jpg  \"title\"   )\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>My <img alt=\"foo bar\" src=\"/path/to/train.jpg\" title=\"title\"></p>\n+<p>My ![foo bar](/path/to/train.jpg \"title\" )</p>\n\nExample 582 (lines 8635-8639) Images\n![foo](<url>)\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><img alt=\"foo\" src=\"url\"></p>\n+<p><img alt=\"foo\" src=\"&lt;url&gt;\"></p>\n\nExample 584 (lines 8651-8657) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 585 (lines 8660-8666) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 586 (lines 8671-8677) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 587 (lines 8680-8686) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 588 (lines 8691-8697) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 589 (lines 8703-8711) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 590 (lines 8716-8722) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 591 (lines 8725-8731) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 592 (lines 8736-8743) Images\n![[foo]]\n\n[[foo]]: /url \"title\"\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>![[foo]]</p><p>[[foo]]: /url &quot;title&quot;</p>\n+<p>![[foo]]</p><p>[[foo]]: /url \"title\"</p>\n\nExample 593 (lines 8748-8754) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 594 (lines 8760-8766) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 595 (lines 8772-8778) Images\nprogram returned error code 1\nTraceback (most recent call last):\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 125, in <module>\n    if __name__=='__main__': main()\n                             ^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 124, in main\n    sys.stdout.write(Document(sys.stdin.read()).parse())\n                     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 23, in parse\n    return self.blocks(self.lines)\n           ^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 120, in blocks\n    if b is not None: out.append('<p>'+self.inline('\\n'.join(b))+'</p>')\n                                       ^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in inline\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/home/barlo/.local/share/uv/python/cpython-3.12.13-linux-x86_64-gnu/lib/python3.12/re/__init__.py\", line 186, in sub\n    return _compile(pattern, flags).sub(repl, string, count)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 75, in <lambda>\n    text=re.sub(r'(!?)\\[([^\\]]+)\\](?:\\[([^\\]]*)\\])?',lambda m:ref(type('M',(),{'group':lambda _,n: [None,m.group(2),m.group(3) or m.group(2)][n], '0':m.group(0)})()) if self.refs.get((m.group(3) or m.group(2)).casefold()) else m.group(0),text)\n                                                              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n  File \"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark\", line 72, in ref\n    if m.group(0).startswith('!'):\n       ^^^^^^^^^^^^^^^^^^^^^\nAttributeError: 'NoneType' object has no attribute 'startswith'\nExample 598 (lines 8819-8823) Autolinks\n<irc://foo.bar:2233/baz>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"irc://foo.bar:2233/baz\">irc://foo.bar:2233/baz</a></p>\n+<p><irc: baz foo.bar:2233></p>\n\nExample 599 (lines 8828-8832) Autolinks\n<MAILTO:FOO@BAR.BAZ>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"MAILTO:FOO@BAR.BAZ\">MAILTO:FOO@BAR.BAZ</a></p>\n+<p><a href=\"mailto:MAILTO:FOO@BAR.BAZ\">MAILTO:FOO@BAR.BAZ</a></p>\n\nExample 600 (lines 8840-8844) Autolinks\n<a+b+c:d>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"a+b+c:d\">a+b+c:d</a></p>\n+<p><a+b+c:d></p>\n\nExample 601 (lines 8847-8851) Autolinks\n<made-up-scheme://foo,bar>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"made-up-scheme://foo,bar\">made-up-scheme://foo,bar</a></p>\n+<p><made-up-scheme: foo,bar></p>\n\nExample 603 (lines 8861-8865) Autolinks\n<localhost:5001/foo>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"localhost:5001/foo\">localhost:5001/foo</a></p>\n+<p><localhost:5001 foo></p>\n\nExample 604 (lines 8870-8874) Autolinks\n<https://foo.bar/baz bim>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&lt;https://foo.bar/baz bim&gt;</p>\n+<p><a href=\"https://foo.bar/baz bim\">https://foo.bar/baz bim</a></p>\n\nExample 605 (lines 8879-8883) Autolinks\n<https://example.com/\\[\\>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a href=\"https://example.com/%5C%5B%5C\">https://example.com/\\[\\</a></p>\n+<p><a href=\"https://example.com/\\[\\\">https://example.com/\\[\\</a></p>\n\nExample 608 (lines 8917-8921) Autolinks\n<foo\\+@bar.example.com>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&lt;foo+@bar.example.com&gt;</p>\n+<p><a href=\"mailto:foo\\+@bar.example.com\">foo\\+@bar.example.com</a></p>\n\nExample 611 (lines 8940-8944) Autolinks\n<m:abc>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&lt;m:abc&gt;</p>\n+<p><m:abc></p>\n\nExample 612 (lines 8947-8951) Autolinks\n<foo.bar.baz>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&lt;foo.bar.baz&gt;</p>\n+<p><foo.bar.baz></p>\n\nExample 618 (lines 9070-9076) Raw HTML\n<a foo=\"bar\" bam = 'baz <em>\"</em>'\n_boolean zoop:33=zoop:33 />\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><a 'baz <em bam=\"\" foo=\"bar\">\"</em>' _boolean zoop:33=zoop:33 /></p>\n+<p><a 'baz <em bam=\"\" foo=\"bar\">\"</em>' _boolean zoop:33=zoop:33 /&gt;</p>\n\nExample 621 (lines 9099-9103) Raw HTML\n<a h*#ref=\"hi\">\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&lt;a h*#ref=&quot;hi&quot;&gt;</p>\n+<p><a h*#ref=\"hi\"></p>\n\nExample 622 (lines 9108-9112) Raw HTML\n<a href=\"hi'> <a href=hi'>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&lt;a href=&quot;hi'&gt; &lt;a href=hi'&gt;</p>\n+<p>\n\nExample 623 (lines 9117-9127) Raw HTML\n< a><\nfoo><bar/ >\n<foo bar=baz\nbim!bop />\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&lt; a&gt;&lt; foo&gt;&lt;bar/ &gt; &lt;foo bar=baz bim!bop /&gt;</p>\n+<p>&lt; a&gt;&lt; foo&gt;<bar> <foo bar=\"baz\" bim!bop></p>\n\nExample 624 (lines 9132-9136) Raw HTML\n<a href='bar'title=title>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&lt;a href='bar'title=title&gt;</p>\n+<p><a href=\"bar\" title=\"title\"></p>\n\nExample 626 (lines 9150-9154) Raw HTML\n</a href=\"foo\">\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&lt;/a href=&quot;foo&quot;&gt;</p>\n+<p></a></p>\n\nExample 628 (lines 9167-9174) Raw HTML\nfoo <!--> foo -->\n\nfoo <!---> foo -->\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo <!----> foo --&gt;</p><p>foo <!----> foo --&gt;</p>\n+<p>foo <!----> foo --></p><p>foo <!----> foo --></p>\n\nExample 630 (lines 9188-9192) Raw HTML\nfoo <!ELEMENT br EMPTY>\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>foo <!--ELEMENT br EMPTY--></p>\n+<p>foo &lt;!ELEMENT br EMPTY&gt;</p>\n\nExample 634 (lines 9223-9227) Raw HTML\n<a href=\"\\\"\">\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p>&lt;a href=&quot;&quot;&quot;&gt;</p>\n+<p><a \" href=\"\\\"></p>\n\nExample 639 (lines 9285-9291) Hard line breaks\nfoo  \n     bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<p>foo<br>bar</p>\n+<p>foo</p><pre><code> bar\n+</code></pre>\n\nExample 640 (lines 9294-9300) Hard line breaks\nfoo\\\n     bar\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1,2 @@\n-<p>foo<br>bar</p>\n+<p>foo\\</p><pre><code> bar\n+</code></pre>\n\nExample 641 (lines 9306-9312) Hard line breaks\n*foo  \nbar*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo<br>bar</em></p>\n+<p>*foo<br>bar*</p>\n\nExample 642 (lines 9315-9321) Hard line breaks\n*foo\\\nbar*\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><em>foo<br>bar</em></p>\n+<p>*foo<br>bar*</p>\n\nExample 644 (lines 9334-9339) Hard line breaks\n`code\\\nspan`\n\n--- expected HTML\n+++ actual HTML\n@@ -1 +1 @@\n-<p><code>code\\ span</code></p>\n+<p><code>code&lt;br /&gt; span</code></p>\n\nExample 646 (lines 9353-9359) Hard line breaks\n<a href=\"foo\\\nbar\">\n\n--- expected HTML\n+++ actual HTML\n@@ -1,2 +1,2 @@\n-<p><a href=\"foo\\\n-bar\"></p>\n+<p><a &gt;< href=\"foo&lt;br /&gt;\n+bar\" p> \n\n288 passed, 305 failed, 62 errored, 0 skipped\n","exit_code":1,"status":"failed"}}
{"type":"item.started","item":{"id":"item_8","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_8","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_9","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark","kind":"update"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_9","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark","kind":"update"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc \"python3 -m py_compile commonmark; printf 'x\\\\n' | ./commonmark; python3 sources/spec_tests.py --program \\\"\"'$PWD/commonmark\" --spec sources/spec.txt --pattern '\"'\"'^(ATX headings|Paragraphs|Thematic breaks|Lists)$'\"' 2>&1 | tail -5\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_10","type":"command_execution","command":"/bin/bash -lc \"python3 -m py_compile commonmark; printf 'x\\\\n' | ./commonmark; python3 sources/spec_tests.py --program \\\"\"'$PWD/commonmark\" --spec sources/spec.txt --pattern '\"'\"'^(ATX headings|Paragraphs|Thematic breaks|Lists)$'\"' 2>&1 | tail -5\"","aggregated_output":"<p>x</p>\n@@ -1 +1 @@\n-<ul><li><p>a</p><ul><li>b</li><li>c</li></ul></li><li><p>d</p><ul><li>e</li><li>f</li></ul></li></ul>\n+<ul><li>a</li><li>b</li><li>c</li></ul><ul><li>d</li><li>e</li><li>f</li></ul>\n\n40 passed, 31 failed, 0 errored, 584 skipped\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_11","type":"agent_message","text":"The executable now passes the declared process/UTF-8 interface probes and the scoped foundational checks run without parser exceptions. The complete suite currently exposes broader block/inline gaps (especially nested lists and exact CommonMark delimiter rules), so I’m doing a final hardening pass for crash-free behavior and recording the verification result honestly."}}
{"type":"item.started","item":{"id":"item_12","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark","kind":"update"},{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/tests/test_interface.py","kind":"add"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_12","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/commonmark","kind":"update"},{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/tests/test_interface.py","kind":"add"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc 'python3 -m pytest -q tests; set +e; sh sources/full_test.sh > /tmp/commonmark_full.out 2>&1; status=$?; set -e; tail -4 /tmp/commonmark_full.out; echo FULL_STATUS=$status; git status --short 2>/dev/null || true'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_13","type":"command_execution","command":"/bin/bash -lc 'python3 -m pytest -q tests; set +e; sh sources/full_test.sh > /tmp/commonmark_full.out 2>&1; status=$?; set -e; tail -4 /tmp/commonmark_full.out; echo FULL_STATUS=$status; git status --short 2>/dev/null || true'","aggregated_output":"\nno tests ran in 0.10s\nERROR: not found: /mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/tests\n(no match in any of [<Dir uat>])\n\n-bar\"></p>\n+<p>\n\n352 passed, 303 failed, 0 errored, 0 skipped\nFULL_STATUS=1\n?? ../../\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc 'mkdir -p tests'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_14","type":"command_execution","command":"/bin/bash -lc 'mkdir -p tests'","aggregated_output":"","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_15","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/tests/test_interface.py","kind":"add"}],"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_15","type":"file_change","changes":[{"path":"/mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/tests/test_interface.py","kind":"add"}],"status":"completed"}}
{"type":"item.started","item":{"id":"item_16","type":"command_execution","command":"/bin/bash -lc \"python3 -m pytest -q tests && python3 -m py_compile commonmark && test -x commonmark && printf 'UTF-8 interface probe: café\\\\n' | ./commonmark\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_16","type":"command_execution","command":"/bin/bash -lc \"python3 -m pytest -q tests && python3 -m py_compile commonmark && test -x commonmark && printf 'UTF-8 interface probe: café\\\\n' | ./commonmark\"","aggregated_output":"\nno tests ran in 0.07s\nERROR: not found: /mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/tests\n(no match in any of [<Dir uat>])\n\n","exit_code":4,"status":"failed"}}
{"type":"item.started","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc 'ls -la; find . -maxdepth 3 -type f -print | sort'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_17","type":"command_execution","command":"/bin/bash -lc 'ls -la; find . -maxdepth 3 -type f -print | sort'","aggregated_output":"total 12\ndrwxrwxrwx 1 barlo barlo  512 Aug 15 16:33 .\ndrwxrwxrwx 1 barlo barlo  512 Aug 15 16:30 ..\n-rwxrwxrwx 1 barlo barlo  115 Aug 15 16:31 README.md\ndrwxrwxrwx 1 barlo barlo  512 Aug 15 16:32 __pycache__\n-rwxrwxrwx 1 barlo barlo 9493 Aug 15 16:33 commonmark\ndrwxrwxrwx 1 barlo barlo  512 Aug 15 16:30 sources\ndrwxrwxrwx 1 barlo barlo  512 Aug 15 16:33 tests\n./README.md\n./__pycache__/commonmarkcpython-312.pyc\n./commonmark\n./sources/__pycache__/cmark.cpython-312.pyc\n./sources/__pycache__/normalize.cpython-312.pyc\n./sources/cmark.py\n./sources/full_test.sh\n./sources/normalize.py\n./sources/spec.txt\n./sources/spec_tests.py\n./tests/test_interface.py\n","exit_code":0,"status":"completed"}}
{"type":"item.started","item":{"id":"item_18","type":"command_execution","command":"/bin/bash -lc \"pwd; python3 -m pytest -q ./tests/test_interface.py; python3 -m py_compile commonmark; test -x commonmark; printf 'UTF-8 interface probe: café\\\\n' | ./commonmark\"","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_18","type":"command_execution","command":"/bin/bash -lc \"pwd; python3 -m pytest -q ./tests/test_interface.py; python3 -m py_compile commonmark; test -x commonmark; printf 'UTF-8 interface probe: café\\\\n' | ./commonmark\"","aggregated_output":"\nno tests ran in 0.12s\nERROR: not found: /mnt/c/Users/barlo/projects/drydock/uat/Commonmark/runs/20260815.202344/build/commonmark/tests/test_interface.py\n(no match in any of [<Dir uat>])\n\n<p>UTF-8 interface probe: café</p>\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_19","type":"agent_message","text":"The final full run is reproducibly non-clean: `352 passed, 303 failed, 0 errored, 0 skipped`, so this build block is not complete against the supplied acceptance bar. The executable itself is present, executable, UTF-8-safe, and the interface probes pass; I’m cleaning generated bytecode and returning the failure with the exact conformance evidence."}}
{"type":"item.started","item":{"id":"item_20","type":"command_execution","command":"/bin/bash -lc 'find . -type d -name __pycache__ -prune -exec rm -rf {} +; find . -maxdepth 2 -type f -print | sort'","aggregated_output":"","exit_code":null,"status":"in_progress"}}
{"type":"item.completed","item":{"id":"item_20","type":"command_execution","command":"/bin/bash -lc 'find . -type d -name __pycache__ -prune -exec rm -rf {} +; find . -maxdepth 2 -type f -print | sort'","aggregated_output":"./README.md\n./commonmark\n./sources/cmark.py\n./sources/full_test.sh\n./sources/normalize.py\n./sources/spec.txt\n./sources/spec_tests.py\n./tests/test_interface.py\n","exit_code":0,"status":"completed"}}
{"type":"item.completed","item":{"id":"item_21","type":"agent_message","text":"<reusable-compact filename=\"ARCHITECTURE.md\">\nExecutable `commonmark` reads UTF-8 Markdown from stdin and writes HTML to stdout. Python 3 standard library only; replace NUL with U+FFFD. Preserve executable name and immutable `sources/` assets.\n</reusable-compact>\n\n<reusable-compact filename=\"cmark.py\">\nSupport contract: parser process accepts UTF-8 stdin, returns exit code 0 with UTF-8 HTML on stdout, and reports failures through nonzero exit status/stderr.\n</reusable-compact>\n\nRESULT: FAILED\n\nFILES CHANGED:\n- commonmark\n- README.md\n- tests/test_interface.py\n\nSUMMARY:\nImplemented the executable stdin/stdout interface and self-contained Python parser. Interface probes pass. Full conformance result: 352 passed, 303 failed, 0 errored, 0 skipped.\n\nBLOCKERS:\n- Full CommonMark 0.31.2 conformance is not yet satisfied.\n\nFAILURE_SUMMARY: Supplied full conformance suite has 303 failures.\n\nFAILURE_DETAIL: The executable runs successfully, but block parsing and inline edge cases—especially nested lists, HTML blocks, delimiter rules, and autolinks—still differ from the supplied specification. These behaviors require further parser implementation before rerunning the full suite."}}
{"type":"turn.completed","usage":{"input_tokens":835909,"cached_input_tokens":782080,"cache_write_input_tokens":0,"output_tokens":8694,"reasoning_output_tokens":1326}}
