/* Generated by re2c 0.15.3 */
#include <stdlib.h>
#include "chunk.h"
#include "scanners.h"

bufsize_t _scan_at(bufsize_t (*scanner)(const unsigned char *), cmark_chunk *c,
                   bufsize_t offset) {
  bufsize_t res;
  unsigned char *ptr = (unsigned char *)c->data;

  if (ptr == NULL || offset > c->len) {
    return 0;
  } else {
    unsigned char lim = ptr[c->len];

    ptr[c->len] = '\0';
    res = scanner(ptr + offset);
    ptr[c->len] = lim;
  }

  return res;
}

// Try to match a scheme including colon.
bufsize_t _scan_scheme(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    yych = *(marker = p);
    if (yych <= 0x7F) {
      if (yych <= ' ') {
        if (yych == '\n')
          goto yy2;
        if (yych <= 0x1F)
          goto yy4;
        goto yy3;
      } else {
        if (yych <= 'Z') {
          if (yych <= '@')
            goto yy4;
          goto yy3;
        } else {
          if (yych <= '`')
            goto yy4;
          if (yych <= 'z')
            goto yy3;
          goto yy4;
        }
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF) {
          if (yych >= 0xC2)
            goto yy5;
        } else {
          if (yych <= 0xE0)
            goto yy7;
          if (yych <= 0xEC)
            goto yy8;
          goto yy12;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy8;
          goto yy9;
        } else {
          if (yych <= 0xF3)
            goto yy10;
          if (yych <= 0xF4)
            goto yy11;
        }
      }
    }
  yy2 : { return 0; }
  yy3:
    yych = *(marker = ++p);
    if (yych <= '.') {
      if (yych == '+')
        goto yy13;
      if (yych <= ',')
        goto yy2;
      goto yy13;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy2;
        goto yy13;
      } else {
        if (yych <= '`')
          goto yy2;
        if (yych <= 'z')
          goto yy13;
        goto yy2;
      }
    }
  yy4:
    yych = *++p;
    goto yy2;
  yy5:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy6;
    if (yych <= 0xBF)
      goto yy4;
  yy6:
    p = marker;
    goto yy2;
  yy7:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy6;
    if (yych <= 0xBF)
      goto yy5;
    goto yy6;
  yy8:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy6;
    if (yych <= 0xBF)
      goto yy5;
    goto yy6;
  yy9:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy6;
    if (yych <= 0xBF)
      goto yy8;
    goto yy6;
  yy10:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy6;
    if (yych <= 0xBF)
      goto yy8;
    goto yy6;
  yy11:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy6;
    if (yych <= 0x8F)
      goto yy8;
    goto yy6;
  yy12:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy6;
    if (yych <= 0x9F)
      goto yy5;
    goto yy6;
  yy13:
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
        goto yy16;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych <= '.')
          goto yy16;
        goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
        goto yy16;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych <= 'z')
          goto yy16;
        goto yy6;
      }
    }
  yy14:
    ++p;
    { return (bufsize_t)(p - start); }
  yy16:
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy6;
      } else {
        if (yych <= ',')
          goto yy6;
        if (yych >= '/')
          goto yy6;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy14;
        if (yych <= '@')
          goto yy6;
      } else {
        if (yych <= '`')
          goto yy6;
        if (yych >= '{')
          goto yy6;
      }
    }
    ++p;
    if ((yych = *p) == ':')
      goto yy14;
    goto yy6;
  }
}

// Try to match URI autolink after first <, returning number of chars matched.
bufsize_t _scan_autolink_uri(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 0,   128, 0,   128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= 0x7F) {
      if (yych <= ' ') {
        if (yych == '\n')
          goto yy48;
        if (yych <= 0x1F)
          goto yy50;
        goto yy49;
      } else {
        if (yych <= 'Z') {
          if (yych <= '@')
            goto yy50;
          goto yy49;
        } else {
          if (yych <= '`')
            goto yy50;
          if (yych <= 'z')
            goto yy49;
          goto yy50;
        }
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF) {
          if (yych >= 0xC2)
            goto yy51;
        } else {
          if (yych <= 0xE0)
            goto yy53;
          if (yych <= 0xEC)
            goto yy54;
          goto yy58;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy54;
          goto yy55;
        } else {
          if (yych <= 0xF3)
            goto yy56;
          if (yych <= 0xF4)
            goto yy57;
        }
      }
    }
  yy48 : { return 0; }
  yy49:
    yych = *(marker = ++p);
    if (yych <= '.') {
      if (yych == '+')
        goto yy59;
      if (yych <= ',')
        goto yy48;
      goto yy59;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy48;
        goto yy59;
      } else {
        if (yych <= '`')
          goto yy48;
        if (yych <= 'z')
          goto yy59;
        goto yy48;
      }
    }
  yy50:
    yych = *++p;
    goto yy48;
  yy51:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy52;
    if (yych <= 0xBF)
      goto yy50;
  yy52:
    p = marker;
    goto yy48;
  yy53:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy52;
    if (yych <= 0xBF)
      goto yy51;
    goto yy52;
  yy54:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy52;
    if (yych <= 0xBF)
      goto yy51;
    goto yy52;
  yy55:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy52;
    if (yych <= 0xBF)
      goto yy54;
    goto yy52;
  yy56:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy52;
    if (yych <= 0xBF)
      goto yy54;
    goto yy52;
  yy57:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy52;
    if (yych <= 0x8F)
      goto yy54;
    goto yy52;
  yy58:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy52;
    if (yych <= 0x9F)
      goto yy51;
    goto yy52;
  yy59:
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
        goto yy62;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych <= '.')
          goto yy62;
        goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
        goto yy62;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych <= 'z')
          goto yy62;
        goto yy52;
      }
    }
  yy60:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy60;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '<')
          goto yy52;
        if (yych <= '>')
          goto yy99;
        goto yy52;
      } else {
        if (yych <= 0xDF)
          goto yy92;
        if (yych <= 0xE0)
          goto yy93;
        goto yy94;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy98;
        if (yych <= 0xEF)
          goto yy94;
        goto yy95;
      } else {
        if (yych <= 0xF3)
          goto yy96;
        if (yych <= 0xF4)
          goto yy97;
        goto yy52;
      }
    }
  yy62:
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych <= '9') {
      if (yych <= '+') {
        if (yych <= '*')
          goto yy52;
      } else {
        if (yych <= ',')
          goto yy52;
        if (yych >= '/')
          goto yy52;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= ':')
          goto yy60;
        if (yych <= '@')
          goto yy52;
      } else {
        if (yych <= '`')
          goto yy52;
        if (yych >= '{')
          goto yy52;
      }
    }
    yych = *++p;
    if (yych == ':')
      goto yy60;
    goto yy52;
  yy92:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy52;
    if (yych <= 0xBF)
      goto yy60;
    goto yy52;
  yy93:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy52;
    if (yych <= 0xBF)
      goto yy92;
    goto yy52;
  yy94:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy52;
    if (yych <= 0xBF)
      goto yy92;
    goto yy52;
  yy95:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy52;
    if (yych <= 0xBF)
      goto yy94;
    goto yy52;
  yy96:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy52;
    if (yych <= 0xBF)
      goto yy94;
    goto yy52;
  yy97:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy52;
    if (yych <= 0x8F)
      goto yy94;
    goto yy52;
  yy98:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy52;
    if (yych <= 0x9F)
      goto yy92;
    goto yy52;
  yy99:
    ++p;
    { return (bufsize_t)(p - start); }
  }
}

// Try to match email autolink after first <, returning num of chars matched.
bufsize_t _scan_autolink_email(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   128, 0,   128, 128, 128, 128, 128, 0,   0,
        128, 128, 0,   128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 0,   0,   0,   128, 0,   128, 0,   128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 0,   0,   0,   128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= '?') {
      if (yych <= ')') {
        if (yych <= ' ') {
          if (yych != '\n')
            goto yy105;
        } else {
          if (yych == '"')
            goto yy105;
          if (yych <= '\'')
            goto yy104;
          goto yy105;
        }
      } else {
        if (yych <= '9') {
          if (yych == ',')
            goto yy105;
          goto yy104;
        } else {
          if (yych == '=')
            goto yy104;
          if (yych <= '>')
            goto yy105;
          goto yy104;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= ']') {
          if (yych <= '@')
            goto yy105;
          if (yych <= 'Z')
            goto yy104;
          goto yy105;
        } else {
          if (yych <= '~')
            goto yy104;
          if (yych <= 0x7F)
            goto yy105;
          if (yych >= 0xC2)
            goto yy106;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy108;
          if (yych == 0xED)
            goto yy113;
          goto yy109;
        } else {
          if (yych <= 0xF0)
            goto yy110;
          if (yych <= 0xF3)
            goto yy111;
          if (yych <= 0xF4)
            goto yy112;
        }
      }
    }
  yy103 : { return 0; }
  yy104:
    yych = *(marker = ++p);
    if (yych <= ',') {
      if (yych <= '"') {
        if (yych == '!')
          goto yy116;
        goto yy103;
      } else {
        if (yych <= '\'')
          goto yy116;
        if (yych <= ')')
          goto yy103;
        if (yych <= '+')
          goto yy116;
        goto yy103;
      }
    } else {
      if (yych <= '>') {
        if (yych <= '9')
          goto yy116;
        if (yych == '=')
          goto yy116;
        goto yy103;
      } else {
        if (yych <= 'Z')
          goto yy116;
        if (yych <= ']')
          goto yy103;
        if (yych <= '~')
          goto yy116;
        goto yy103;
      }
    }
  yy105:
    yych = *++p;
    goto yy103;
  yy106:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy107;
    if (yych <= 0xBF)
      goto yy105;
  yy107:
    p = marker;
    goto yy103;
  yy108:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy107;
    if (yych <= 0xBF)
      goto yy106;
    goto yy107;
  yy109:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy107;
    if (yych <= 0xBF)
      goto yy106;
    goto yy107;
  yy110:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy107;
    if (yych <= 0xBF)
      goto yy109;
    goto yy107;
  yy111:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy107;
    if (yych <= 0xBF)
      goto yy109;
    goto yy107;
  yy112:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy107;
    if (yych <= 0x8F)
      goto yy109;
    goto yy107;
  yy113:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy107;
    if (yych <= 0x9F)
      goto yy106;
    goto yy107;
  yy114:
    yych = *++p;
    if (yych <= '@') {
      if (yych <= '/')
        goto yy107;
      if (yych <= '9')
        goto yy117;
      goto yy107;
    } else {
      if (yych <= 'Z')
        goto yy117;
      if (yych <= '`')
        goto yy107;
      if (yych <= 'z')
        goto yy117;
      goto yy107;
    }
  yy115:
    ++p;
    yych = *p;
  yy116:
    if (yybm[0 + yych] & 128) {
      goto yy115;
    }
    if (yych <= '>')
      goto yy107;
    if (yych <= '@')
      goto yy114;
    goto yy107;
  yy117:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy119;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych >= ':')
          goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy248;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy247;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy247;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy247;
        goto yy107;
      }
    }
  yy119:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy248;
      if (yych <= '/')
        goto yy107;
      goto yy247;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
        goto yy247;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy247;
        goto yy107;
      }
    }
  yy120:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '/')
        goto yy107;
      if (yych <= '9')
        goto yy123;
      goto yy107;
    } else {
      if (yych <= 'Z')
        goto yy123;
      if (yych <= '`')
        goto yy107;
      if (yych <= 'z')
        goto yy123;
      goto yy107;
    }
  yy121:
    ++p;
    { return (bufsize_t)(p - start); }
  yy123:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy125;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych >= ':')
          goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy127;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy126;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy126;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy126;
        goto yy107;
      }
    }
  yy125:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy127;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy126:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy129;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy128;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy128;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy128;
        goto yy107;
      }
    }
  yy127:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy129;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy128:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy131;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy130;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy130;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy130;
        goto yy107;
      }
    }
  yy129:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy131;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy130:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy133;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy132;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy132;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy132;
        goto yy107;
      }
    }
  yy131:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy133;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy132:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy135;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy134;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy134;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy134;
        goto yy107;
      }
    }
  yy133:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy135;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy134:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy137;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy136;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy136;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy136;
        goto yy107;
      }
    }
  yy135:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy137;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy136:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy139;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy138;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy138;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy138;
        goto yy107;
      }
    }
  yy137:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy139;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy138:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy141;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy140;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy140;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy140;
        goto yy107;
      }
    }
  yy139:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy141;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy140:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy143;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy142;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy142;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy142;
        goto yy107;
      }
    }
  yy141:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy143;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy142:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy145;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy144;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy144;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy144;
        goto yy107;
      }
    }
  yy143:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy145;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy144:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy147;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy146;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy146;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy146;
        goto yy107;
      }
    }
  yy145:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy147;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy146:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy149;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy148;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy148;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy148;
        goto yy107;
      }
    }
  yy147:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy149;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy148:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy151;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy150;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy150;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy150;
        goto yy107;
      }
    }
  yy149:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy151;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy150:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy153;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy152;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy152;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy152;
        goto yy107;
      }
    }
  yy151:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy153;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy152:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy155;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy154;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy154;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy154;
        goto yy107;
      }
    }
  yy153:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy155;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy154:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy157;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy156;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy156;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy156;
        goto yy107;
      }
    }
  yy155:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy157;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy156:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy159;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy158;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy158;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy158;
        goto yy107;
      }
    }
  yy157:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy159;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy158:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy161;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy160;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy160;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy160;
        goto yy107;
      }
    }
  yy159:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy161;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy160:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy163;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy162;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy162;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy162;
        goto yy107;
      }
    }
  yy161:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy163;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy162:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy165;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy164;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy164;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy164;
        goto yy107;
      }
    }
  yy163:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy165;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy164:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy167;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy166;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy166;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy166;
        goto yy107;
      }
    }
  yy165:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy167;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy166:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy169;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy168;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy168;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy168;
        goto yy107;
      }
    }
  yy167:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy169;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy168:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy171;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy170;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy170;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy170;
        goto yy107;
      }
    }
  yy169:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy171;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy170:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy173;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy172;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy172;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy172;
        goto yy107;
      }
    }
  yy171:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy173;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy172:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy175;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy174;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy174;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy174;
        goto yy107;
      }
    }
  yy173:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy175;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy174:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy177;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy176;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy176;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy176;
        goto yy107;
      }
    }
  yy175:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy177;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy176:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy179;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy178;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy178;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy178;
        goto yy107;
      }
    }
  yy177:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy179;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy178:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy181;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy180;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy180;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy180;
        goto yy107;
      }
    }
  yy179:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy181;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy180:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy183;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy182;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy182;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy182;
        goto yy107;
      }
    }
  yy181:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy183;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy182:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy185;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy184;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy184;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy184;
        goto yy107;
      }
    }
  yy183:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy185;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy184:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy187;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy186;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy186;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy186;
        goto yy107;
      }
    }
  yy185:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy187;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy186:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy189;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy188;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy188;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy188;
        goto yy107;
      }
    }
  yy187:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy189;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy188:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy191;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy190;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy190;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy190;
        goto yy107;
      }
    }
  yy189:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy191;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy190:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy193;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy192;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy192;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy192;
        goto yy107;
      }
    }
  yy191:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy193;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy192:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy195;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy194;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy194;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy194;
        goto yy107;
      }
    }
  yy193:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy195;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy194:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy197;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy196;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy196;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy196;
        goto yy107;
      }
    }
  yy195:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy197;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy196:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy199;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy198;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy198;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy198;
        goto yy107;
      }
    }
  yy197:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy199;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy198:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy201;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy200;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy200;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy200;
        goto yy107;
      }
    }
  yy199:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy201;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy200:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy203;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy202;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy202;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy202;
        goto yy107;
      }
    }
  yy201:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy203;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy202:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy205;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy204;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy204;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy204;
        goto yy107;
      }
    }
  yy203:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy205;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy204:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy207;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy206;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy206;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy206;
        goto yy107;
      }
    }
  yy205:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy207;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy206:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy209;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy208;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy208;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy208;
        goto yy107;
      }
    }
  yy207:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy209;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy208:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy211;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy210;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy210;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy210;
        goto yy107;
      }
    }
  yy209:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy211;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy210:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy213;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy212;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy212;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy212;
        goto yy107;
      }
    }
  yy211:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy213;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy212:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy215;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy214;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy214;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy214;
        goto yy107;
      }
    }
  yy213:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy215;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy214:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy217;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy216;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy216;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy216;
        goto yy107;
      }
    }
  yy215:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy217;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy216:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy219;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy218;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy218;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy218;
        goto yy107;
      }
    }
  yy217:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy219;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy218:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy221;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy220;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy220;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy220;
        goto yy107;
      }
    }
  yy219:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy221;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy220:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy223;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy222;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy222;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy222;
        goto yy107;
      }
    }
  yy221:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy223;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy222:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy225;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy224;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy224;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy224;
        goto yy107;
      }
    }
  yy223:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy225;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy224:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy227;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy226;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy226;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy226;
        goto yy107;
      }
    }
  yy225:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy227;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy226:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy229;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy228;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy228;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy228;
        goto yy107;
      }
    }
  yy227:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy229;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy228:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy231;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy230;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy230;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy230;
        goto yy107;
      }
    }
  yy229:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy231;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy230:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy233;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy232;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy232;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy232;
        goto yy107;
      }
    }
  yy231:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy233;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy232:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy235;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy234;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy234;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy234;
        goto yy107;
      }
    }
  yy233:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy235;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy234:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy237;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy236;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy236;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy236;
        goto yy107;
      }
    }
  yy235:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy237;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy236:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy239;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy238;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy238;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy238;
        goto yy107;
      }
    }
  yy237:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy239;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy238:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy241;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy240;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy240;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy240;
        goto yy107;
      }
    }
  yy239:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy241;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy240:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy243;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy242;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy242;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy242;
        goto yy107;
      }
    }
  yy241:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy243;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy242:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy245;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy244;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy244;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy244;
        goto yy107;
      }
    }
  yy243:
    ++p;
    yych = *p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy245;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy244:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= '-')
          goto yy107;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy246;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy246;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy246;
        goto yy107;
      }
    }
  yy245:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '/')
        goto yy107;
      if (yych >= ':')
        goto yy107;
    } else {
      if (yych <= 'Z')
        goto yy246;
      if (yych <= '`')
        goto yy107;
      if (yych >= '{')
        goto yy107;
    }
  yy246:
    ++p;
    yych = *p;
    if (yych == '.')
      goto yy120;
    if (yych == '>')
      goto yy121;
    goto yy107;
  yy247:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy250;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy249;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy249;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy249;
        goto yy107;
      }
    }
  yy248:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy250;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy249:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy252;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy251;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy251;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy251;
        goto yy107;
      }
    }
  yy250:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy252;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy251:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy254;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy253;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy253;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy253;
        goto yy107;
      }
    }
  yy252:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy254;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy253:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy256;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy255;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy255;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy255;
        goto yy107;
      }
    }
  yy254:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy256;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy255:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy258;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy257;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy257;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy257;
        goto yy107;
      }
    }
  yy256:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy258;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy257:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy260;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy259;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy259;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy259;
        goto yy107;
      }
    }
  yy258:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy260;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy259:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy262;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy261;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy261;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy261;
        goto yy107;
      }
    }
  yy260:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy262;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy261:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy264;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy263;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy263;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy263;
        goto yy107;
      }
    }
  yy262:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy264;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy263:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy266;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy265;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy265;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy265;
        goto yy107;
      }
    }
  yy264:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy266;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy265:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy268;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy267;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy267;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy267;
        goto yy107;
      }
    }
  yy266:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy268;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy267:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy270;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy269;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy269;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy269;
        goto yy107;
      }
    }
  yy268:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy270;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy269:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy272;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy271;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy271;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy271;
        goto yy107;
      }
    }
  yy270:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy272;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy271:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy274;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy273;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy273;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy273;
        goto yy107;
      }
    }
  yy272:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy274;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy273:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy276;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy275;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy275;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy275;
        goto yy107;
      }
    }
  yy274:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy276;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy275:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy278;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy277;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy277;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy277;
        goto yy107;
      }
    }
  yy276:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy278;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy277:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy280;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy279;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy279;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy279;
        goto yy107;
      }
    }
  yy278:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy280;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy279:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy282;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy281;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy281;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy281;
        goto yy107;
      }
    }
  yy280:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy282;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy281:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy284;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy283;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy283;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy283;
        goto yy107;
      }
    }
  yy282:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy284;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy283:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy286;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy285;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy285;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy285;
        goto yy107;
      }
    }
  yy284:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy286;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy285:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy288;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy287;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy287;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy287;
        goto yy107;
      }
    }
  yy286:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy288;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy287:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy290;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy289;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy289;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy289;
        goto yy107;
      }
    }
  yy288:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy290;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy289:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy292;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy291;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy291;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy291;
        goto yy107;
      }
    }
  yy290:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy292;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy291:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy294;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy293;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy293;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy293;
        goto yy107;
      }
    }
  yy292:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy294;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy293:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy296;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy295;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy295;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy295;
        goto yy107;
      }
    }
  yy294:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy296;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy295:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy298;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy297;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy297;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy297;
        goto yy107;
      }
    }
  yy296:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy298;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy297:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy300;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy299;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy299;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy299;
        goto yy107;
      }
    }
  yy298:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy300;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy299:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy302;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy301;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy301;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy301;
        goto yy107;
      }
    }
  yy300:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy302;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy301:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy304;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy303;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy303;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy303;
        goto yy107;
      }
    }
  yy302:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy304;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy303:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy306;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy305;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy305;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy305;
        goto yy107;
      }
    }
  yy304:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy306;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy305:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy308;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy307;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy307;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy307;
        goto yy107;
      }
    }
  yy306:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy308;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy307:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy310;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy309;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy309;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy309;
        goto yy107;
      }
    }
  yy308:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy310;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy309:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy312;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy311;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy311;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy311;
        goto yy107;
      }
    }
  yy310:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy312;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy311:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy314;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy313;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy313;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy313;
        goto yy107;
      }
    }
  yy312:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy314;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy313:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy316;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy315;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy315;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy315;
        goto yy107;
      }
    }
  yy314:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy316;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy315:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy318;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy317;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy317;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy317;
        goto yy107;
      }
    }
  yy316:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy318;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy317:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy320;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy319;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy319;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy319;
        goto yy107;
      }
    }
  yy318:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy320;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy319:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy322;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy321;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy321;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy321;
        goto yy107;
      }
    }
  yy320:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy322;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy321:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy324;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy323;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy323;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy323;
        goto yy107;
      }
    }
  yy322:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy324;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy323:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy326;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy325;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy325;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy325;
        goto yy107;
      }
    }
  yy324:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy326;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy325:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy328;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy327;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy327;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy327;
        goto yy107;
      }
    }
  yy326:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy328;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy327:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy330;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy329;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy329;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy329;
        goto yy107;
      }
    }
  yy328:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy330;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy329:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy332;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy331;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy331;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy331;
        goto yy107;
      }
    }
  yy330:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy332;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy331:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy334;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy333;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy333;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy333;
        goto yy107;
      }
    }
  yy332:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy334;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy333:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy336;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy335;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy335;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy335;
        goto yy107;
      }
    }
  yy334:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy336;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy335:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy338;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy337;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy337;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy337;
        goto yy107;
      }
    }
  yy336:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy338;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy337:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy340;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy339;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy339;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy339;
        goto yy107;
      }
    }
  yy338:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy340;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy339:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy342;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy341;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy341;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy341;
        goto yy107;
      }
    }
  yy340:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy342;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy341:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy344;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy343;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy343;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy343;
        goto yy107;
      }
    }
  yy342:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy344;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy343:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy346;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy345;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy345;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy345;
        goto yy107;
      }
    }
  yy344:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy346;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy345:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy348;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy347;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy347;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy347;
        goto yy107;
      }
    }
  yy346:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy348;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy347:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy350;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy349;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy349;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy349;
        goto yy107;
      }
    }
  yy348:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy350;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy349:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy352;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy351;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy351;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy351;
        goto yy107;
      }
    }
  yy350:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy352;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy351:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy354;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy353;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy353;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy353;
        goto yy107;
      }
    }
  yy352:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy354;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy353:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy356;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy355;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy355;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy355;
        goto yy107;
      }
    }
  yy354:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy356;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy355:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy358;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy357;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy357;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy357;
        goto yy107;
      }
    }
  yy356:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy358;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy357:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy360;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy359;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy359;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy359;
        goto yy107;
      }
    }
  yy358:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy360;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy359:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy362;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy361;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy361;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy361;
        goto yy107;
      }
    }
  yy360:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy362;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy361:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy364;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy363;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy363;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy363;
        goto yy107;
      }
    }
  yy362:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy364;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy363:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= ',')
          goto yy107;
        if (yych <= '-')
          goto yy366;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy365;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy365;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy365;
        goto yy107;
      }
    }
  yy364:
    yych = *++p;
    if (yych <= '9') {
      if (yych == '-')
        goto yy366;
      if (yych <= '/')
        goto yy107;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy107;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych >= '{')
          goto yy107;
      }
    }
  yy365:
    yych = *++p;
    if (yych <= '=') {
      if (yych <= '.') {
        if (yych <= '-')
          goto yy107;
        goto yy120;
      } else {
        if (yych <= '/')
          goto yy107;
        if (yych <= '9')
          goto yy246;
        goto yy107;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy121;
        if (yych <= '@')
          goto yy107;
        goto yy246;
      } else {
        if (yych <= '`')
          goto yy107;
        if (yych <= 'z')
          goto yy246;
        goto yy107;
      }
    }
  yy366:
    ++p;
    if ((yych = *p) <= '@') {
      if (yych <= '/')
        goto yy107;
      if (yych <= '9')
        goto yy246;
      goto yy107;
    } else {
      if (yych <= 'Z')
        goto yy246;
      if (yych <= '`')
        goto yy107;
      if (yych <= 'z')
        goto yy246;
      goto yy107;
    }
  }
}

// Try to match an HTML tag after first <, returning num of chars matched.
bufsize_t _scan_html_tag(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        /* table 1 .. 8: 0 */
        0,   230, 230, 230, 230, 230, 230, 230, 230, 199, 199, 199, 199, 199,
        230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
        230, 230, 230, 230, 199, 230, 70,  230, 230, 230, 230, 134, 230, 230,
        230, 230, 230, 254, 246, 230, 254, 254, 254, 254, 254, 254, 254, 254,
        254, 254, 246, 230, 198, 198, 196, 230, 230, 254, 254, 254, 254, 254,
        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
        254, 254, 254, 254, 254, 254, 254, 230, 230, 226, 230, 246, 198, 254,
        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
        254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 230, 230, 230,
        230, 230, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
        /* table 9 .. 11: 256 */
        0,   160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 32,  160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 128, 160, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= '`') {
      if (yych <= '.') {
        if (yych <= '\n') {
          if (yych <= '\t')
            goto yy374;
        } else {
          if (yych == '!')
            goto yy372;
          goto yy374;
        }
      } else {
        if (yych <= '?') {
          if (yych <= '/')
            goto yy371;
          if (yych <= '>')
            goto yy374;
          goto yy373;
        } else {
          if (yych <= '@')
            goto yy374;
          if (yych <= 'Z')
            goto yy370;
          goto yy374;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= 'z')
            goto yy370;
          if (yych <= 0x7F)
            goto yy374;
        } else {
          if (yych <= 0xDF)
            goto yy375;
          if (yych <= 0xE0)
            goto yy377;
          goto yy378;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy382;
          if (yych <= 0xEF)
            goto yy378;
          goto yy379;
        } else {
          if (yych <= 0xF3)
            goto yy380;
          if (yych <= 0xF4)
            goto yy381;
        }
      }
    }
  yy369 : { return 0; }
  yy370:
    yych = *(marker = ++p);
    if (yych <= '/') {
      if (yych <= ' ') {
        if (yych <= 0x08)
          goto yy369;
        if (yych <= '\r')
          goto yy474;
        if (yych <= 0x1F)
          goto yy369;
        goto yy474;
      } else {
        if (yych == '-')
          goto yy472;
        if (yych <= '.')
          goto yy369;
        goto yy476;
      }
    } else {
      if (yych <= '@') {
        if (yych <= '9')
          goto yy472;
        if (yych == '>')
          goto yy393;
        goto yy369;
      } else {
        if (yych <= 'Z')
          goto yy472;
        if (yych <= '`')
          goto yy369;
        if (yych <= 'z')
          goto yy472;
        goto yy369;
      }
    }
  yy371:
    yych = *(marker = ++p);
    if (yych <= '@')
      goto yy369;
    if (yych <= 'Z')
      goto yy468;
    if (yych <= '`')
      goto yy369;
    if (yych <= 'z')
      goto yy468;
    goto yy369;
  yy372:
    yych = *(marker = ++p);
    if (yybm[256 + yych] & 64) {
      goto yy403;
    }
    if (yych == '-')
      goto yy405;
    if (yych <= '@')
      goto yy369;
    if (yych <= '[')
      goto yy402;
    goto yy369;
  yy373:
    yych = *(marker = ++p);
    if (yych <= 0x00)
      goto yy369;
    if (yych <= 0x7F)
      goto yy384;
    if (yych <= 0xC1)
      goto yy369;
    if (yych <= 0xF4)
      goto yy384;
    goto yy369;
  yy374:
    yych = *++p;
    goto yy369;
  yy375:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy374;
  yy376:
    p = marker;
    goto yy369;
  yy377:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy375;
    goto yy376;
  yy378:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy375;
    goto yy376;
  yy379:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy378;
    goto yy376;
  yy380:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy378;
    goto yy376;
  yy381:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy378;
    goto yy376;
  yy382:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy375;
    goto yy376;
  yy383:
    ++p;
    yych = *p;
  yy384:
    if (yybm[256 + yych] & 32) {
      goto yy383;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= '?')
          goto yy392;
        goto yy376;
      } else {
        if (yych <= 0xDF)
          goto yy385;
        if (yych <= 0xE0)
          goto yy386;
        goto yy387;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy391;
        if (yych <= 0xEF)
          goto yy387;
        goto yy388;
      } else {
        if (yych <= 0xF3)
          goto yy389;
        if (yych <= 0xF4)
          goto yy390;
        goto yy376;
      }
    }
  yy385:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy383;
    goto yy376;
  yy386:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy385;
    goto yy376;
  yy387:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy385;
    goto yy376;
  yy388:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy387;
    goto yy376;
  yy389:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy387;
    goto yy376;
  yy390:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy387;
    goto yy376;
  yy391:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy385;
    goto yy376;
  yy392:
    ++p;
    yych = *p;
    if (yych <= 0xE0) {
      if (yych <= '>') {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= '=')
          goto yy383;
      } else {
        if (yych <= 0x7F)
          goto yy383;
        if (yych <= 0xC1)
          goto yy376;
        if (yych <= 0xDF)
          goto yy395;
        goto yy396;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy401;
        goto yy397;
      } else {
        if (yych <= 0xF0)
          goto yy398;
        if (yych <= 0xF3)
          goto yy399;
        if (yych <= 0xF4)
          goto yy400;
        goto yy376;
      }
    }
  yy393:
    ++p;
    { return (bufsize_t)(p - start); }
  yy395:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy383;
    goto yy376;
  yy396:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy395;
    goto yy376;
  yy397:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy395;
    goto yy376;
  yy398:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy397;
    goto yy376;
  yy399:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy397;
    goto yy376;
  yy400:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy397;
    goto yy376;
  yy401:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy395;
    goto yy376;
  yy402:
    yych = *++p;
    if (yych == 'C')
      goto yy438;
    if (yych == 'c')
      goto yy438;
    goto yy376;
  yy403:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 1) {
      goto yy427;
    }
    if (yych <= '@')
      goto yy376;
    if (yych <= 'Z')
      goto yy403;
    goto yy376;
  yy405:
    yych = *++p;
    if (yych != '-')
      goto yy376;
    yych = *++p;
    if (yych <= 0xE0) {
      if (yych <= '=') {
        if (yych != '-')
          goto yy409;
      } else {
        if (yych <= '>')
          goto yy376;
        if (yych <= 0xC1)
          goto yy409;
        if (yych <= 0xDF)
          goto yy410;
        goto yy411;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy416;
        goto yy412;
      } else {
        if (yych <= 0xF0)
          goto yy413;
        if (yych <= 0xF3)
          goto yy414;
        if (yych <= 0xF4)
          goto yy415;
        goto yy409;
      }
    }
    yych = *++p;
    if (yych <= 0xE0) {
      if (yych <= '=') {
        if (yych == '-')
          goto yy426;
        goto yy409;
      } else {
        if (yych <= '>')
          goto yy376;
        if (yych <= 0xC1)
          goto yy409;
        if (yych <= 0xDF)
          goto yy410;
        goto yy411;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy416;
        goto yy412;
      } else {
        if (yych <= 0xF0)
          goto yy413;
        if (yych <= 0xF3)
          goto yy414;
        if (yych <= 0xF4)
          goto yy415;
        goto yy409;
      }
    }
  yy408:
    ++p;
    yych = *p;
  yy409:
    if (yybm[256 + yych] & 128) {
      goto yy408;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= '-')
          goto yy417;
        goto yy376;
      } else {
        if (yych <= 0xDF)
          goto yy418;
        if (yych <= 0xE0)
          goto yy419;
        goto yy420;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy424;
        if (yych <= 0xEF)
          goto yy420;
        goto yy421;
      } else {
        if (yych <= 0xF3)
          goto yy422;
        if (yych <= 0xF4)
          goto yy423;
        goto yy376;
      }
    }
  yy410:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy408;
    goto yy376;
  yy411:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy410;
    goto yy376;
  yy412:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy410;
    goto yy376;
  yy413:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy412;
    goto yy376;
  yy414:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy412;
    goto yy376;
  yy415:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy412;
    goto yy376;
  yy416:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy410;
    goto yy376;
  yy417:
    ++p;
    yych = *p;
    if (yybm[256 + yych] & 128) {
      goto yy408;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= '-')
          goto yy425;
        goto yy376;
      } else {
        if (yych <= 0xDF)
          goto yy418;
        if (yych <= 0xE0)
          goto yy419;
        goto yy420;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy424;
        if (yych <= 0xEF)
          goto yy420;
        goto yy421;
      } else {
        if (yych <= 0xF3)
          goto yy422;
        if (yych <= 0xF4)
          goto yy423;
        goto yy376;
      }
    }
  yy418:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy408;
    goto yy376;
  yy419:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy418;
    goto yy376;
  yy420:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy418;
    goto yy376;
  yy421:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy420;
    goto yy376;
  yy422:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy420;
    goto yy376;
  yy423:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy420;
    goto yy376;
  yy424:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy418;
    goto yy376;
  yy425:
    yych = *++p;
    if (yych == '>')
      goto yy393;
    goto yy376;
  yy426:
    yych = *++p;
    if (yych == '>')
      goto yy393;
    goto yy376;
  yy427:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 1) {
      goto yy427;
    }
    if (yych <= 0xE0) {
      if (yych <= '>') {
        if (yych <= 0x00)
          goto yy376;
        if (yych >= '>')
          goto yy393;
      } else {
        if (yych <= 0x7F)
          goto yy429;
        if (yych <= 0xC1)
          goto yy376;
        if (yych <= 0xDF)
          goto yy431;
        goto yy432;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy437;
        goto yy433;
      } else {
        if (yych <= 0xF0)
          goto yy434;
        if (yych <= 0xF3)
          goto yy435;
        if (yych <= 0xF4)
          goto yy436;
        goto yy376;
      }
    }
  yy429:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 2) {
      goto yy429;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= '>')
          goto yy393;
        goto yy376;
      } else {
        if (yych <= 0xDF)
          goto yy431;
        if (yych <= 0xE0)
          goto yy432;
        goto yy433;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy437;
        if (yych <= 0xEF)
          goto yy433;
        goto yy434;
      } else {
        if (yych <= 0xF3)
          goto yy435;
        if (yych <= 0xF4)
          goto yy436;
        goto yy376;
      }
    }
  yy431:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy429;
    goto yy376;
  yy432:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy431;
    goto yy376;
  yy433:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy431;
    goto yy376;
  yy434:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy433;
    goto yy376;
  yy435:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy433;
    goto yy376;
  yy436:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy433;
    goto yy376;
  yy437:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy431;
    goto yy376;
  yy438:
    yych = *++p;
    if (yych == 'D')
      goto yy439;
    if (yych != 'd')
      goto yy376;
  yy439:
    yych = *++p;
    if (yych == 'A')
      goto yy440;
    if (yych != 'a')
      goto yy376;
  yy440:
    yych = *++p;
    if (yych == 'T')
      goto yy441;
    if (yych != 't')
      goto yy376;
  yy441:
    yych = *++p;
    if (yych == 'A')
      goto yy442;
    if (yych != 'a')
      goto yy376;
  yy442:
    yych = *++p;
    if (yych != '[')
      goto yy376;
  yy443:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 4) {
      goto yy443;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= ']')
          goto yy452;
        goto yy376;
      } else {
        if (yych <= 0xDF)
          goto yy445;
        if (yych <= 0xE0)
          goto yy446;
        goto yy447;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy451;
        if (yych <= 0xEF)
          goto yy447;
        goto yy448;
      } else {
        if (yych <= 0xF3)
          goto yy449;
        if (yych <= 0xF4)
          goto yy450;
        goto yy376;
      }
    }
  yy445:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy443;
    goto yy376;
  yy446:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy445;
    goto yy376;
  yy447:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy445;
    goto yy376;
  yy448:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy447;
    goto yy376;
  yy449:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy447;
    goto yy376;
  yy450:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy447;
    goto yy376;
  yy451:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy445;
    goto yy376;
  yy452:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 4) {
      goto yy443;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy376;
        if (yych >= '^')
          goto yy376;
      } else {
        if (yych <= 0xDF)
          goto yy454;
        if (yych <= 0xE0)
          goto yy455;
        goto yy456;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy460;
        if (yych <= 0xEF)
          goto yy456;
        goto yy457;
      } else {
        if (yych <= 0xF3)
          goto yy458;
        if (yych <= 0xF4)
          goto yy459;
        goto yy376;
      }
    }
    ++p;
    yych = *p;
    if (yych <= 0xE0) {
      if (yych <= '>') {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= '=')
          goto yy443;
        goto yy393;
      } else {
        if (yych <= 0x7F)
          goto yy443;
        if (yych <= 0xC1)
          goto yy376;
        if (yych <= 0xDF)
          goto yy461;
        goto yy462;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy467;
        goto yy463;
      } else {
        if (yych <= 0xF0)
          goto yy464;
        if (yych <= 0xF3)
          goto yy465;
        if (yych <= 0xF4)
          goto yy466;
        goto yy376;
      }
    }
  yy454:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy443;
    goto yy376;
  yy455:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy454;
    goto yy376;
  yy456:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy454;
    goto yy376;
  yy457:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy456;
    goto yy376;
  yy458:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy456;
    goto yy376;
  yy459:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy456;
    goto yy376;
  yy460:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy454;
    goto yy376;
  yy461:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy443;
    goto yy376;
  yy462:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy461;
    goto yy376;
  yy463:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy461;
    goto yy376;
  yy464:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy463;
    goto yy376;
  yy465:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy463;
    goto yy376;
  yy466:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy463;
    goto yy376;
  yy467:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy461;
    goto yy376;
  yy468:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 8) {
      goto yy468;
    }
    if (yych <= 0x1F) {
      if (yych <= 0x08)
        goto yy376;
      if (yych >= 0x0E)
        goto yy376;
    } else {
      if (yych <= ' ')
        goto yy470;
      if (yych == '>')
        goto yy393;
      goto yy376;
    }
  yy470:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych <= 0x08)
        goto yy376;
      if (yych <= '\r')
        goto yy470;
      goto yy376;
    } else {
      if (yych <= ' ')
        goto yy470;
      if (yych == '>')
        goto yy393;
      goto yy376;
    }
  yy472:
    ++p;
    yych = *p;
    if (yych <= '/') {
      if (yych <= ' ') {
        if (yych <= 0x08)
          goto yy376;
        if (yych <= '\r')
          goto yy474;
        if (yych <= 0x1F)
          goto yy376;
      } else {
        if (yych == '-')
          goto yy472;
        if (yych <= '.')
          goto yy376;
        goto yy476;
      }
    } else {
      if (yych <= '@') {
        if (yych <= '9')
          goto yy472;
        if (yych == '>')
          goto yy393;
        goto yy376;
      } else {
        if (yych <= 'Z')
          goto yy472;
        if (yych <= '`')
          goto yy376;
        if (yych <= 'z')
          goto yy472;
        goto yy376;
      }
    }
  yy474:
    ++p;
    yych = *p;
    if (yych <= ':') {
      if (yych <= ' ') {
        if (yych <= 0x08)
          goto yy376;
        if (yych <= '\r')
          goto yy474;
        if (yych <= 0x1F)
          goto yy376;
        goto yy474;
      } else {
        if (yych == '/')
          goto yy476;
        if (yych <= '9')
          goto yy376;
        goto yy477;
      }
    } else {
      if (yych <= 'Z') {
        if (yych == '>')
          goto yy393;
        if (yych <= '@')
          goto yy376;
        goto yy477;
      } else {
        if (yych <= '_') {
          if (yych <= '^')
            goto yy376;
          goto yy477;
        } else {
          if (yych <= '`')
            goto yy376;
          if (yych <= 'z')
            goto yy477;
          goto yy376;
        }
      }
    }
  yy476:
    yych = *++p;
    if (yych == '>')
      goto yy393;
    goto yy376;
  yy477:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 16) {
      goto yy477;
    }
    if (yych <= ',') {
      if (yych <= '\r') {
        if (yych <= 0x08)
          goto yy376;
      } else {
        if (yych != ' ')
          goto yy376;
      }
    } else {
      if (yych <= '<') {
        if (yych <= '/')
          goto yy476;
        goto yy376;
      } else {
        if (yych <= '=')
          goto yy481;
        if (yych <= '>')
          goto yy393;
        goto yy376;
      }
    }
  yy479:
    ++p;
    yych = *p;
    if (yych <= '<') {
      if (yych <= ' ') {
        if (yych <= 0x08)
          goto yy376;
        if (yych <= '\r')
          goto yy479;
        if (yych <= 0x1F)
          goto yy376;
        goto yy479;
      } else {
        if (yych <= '/') {
          if (yych <= '.')
            goto yy376;
          goto yy476;
        } else {
          if (yych == ':')
            goto yy477;
          goto yy376;
        }
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '=')
          goto yy481;
        if (yych <= '>')
          goto yy393;
        if (yych <= '@')
          goto yy376;
        goto yy477;
      } else {
        if (yych <= '_') {
          if (yych <= '^')
            goto yy376;
          goto yy477;
        } else {
          if (yych <= '`')
            goto yy376;
          if (yych <= 'z')
            goto yy477;
          goto yy376;
        }
      }
    }
  yy481:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy483;
    }
    if (yych <= 0xE0) {
      if (yych <= '"') {
        if (yych <= 0x00)
          goto yy376;
        if (yych >= '!')
          goto yy494;
      } else {
        if (yych <= '\'')
          goto yy492;
        if (yych <= 0xC1)
          goto yy376;
        if (yych <= 0xDF)
          goto yy485;
        goto yy486;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy491;
        goto yy487;
      } else {
        if (yych <= 0xF0)
          goto yy488;
        if (yych <= 0xF3)
          goto yy489;
        if (yych <= 0xF4)
          goto yy490;
        goto yy376;
      }
    }
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy483;
    }
    if (yych <= 0xDF) {
      if (yych <= '\'') {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= ' ')
          goto yy517;
        if (yych <= '"')
          goto yy494;
        goto yy492;
      } else {
        if (yych == '>')
          goto yy393;
        if (yych <= 0xC1)
          goto yy376;
        goto yy485;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy486;
        if (yych == 0xED)
          goto yy491;
        goto yy487;
      } else {
        if (yych <= 0xF0)
          goto yy488;
        if (yych <= 0xF3)
          goto yy489;
        if (yych <= 0xF4)
          goto yy490;
        goto yy376;
      }
    }
  yy483:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy483;
    }
    if (yych <= 0xE0) {
      if (yych <= '=') {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= ' ')
          goto yy511;
        goto yy376;
      } else {
        if (yych <= '>')
          goto yy393;
        if (yych <= 0xC1)
          goto yy376;
        if (yych >= 0xE0)
          goto yy486;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy491;
        goto yy487;
      } else {
        if (yych <= 0xF0)
          goto yy488;
        if (yych <= 0xF3)
          goto yy489;
        if (yych <= 0xF4)
          goto yy490;
        goto yy376;
      }
    }
  yy485:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy483;
    goto yy376;
  yy486:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy485;
    goto yy376;
  yy487:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy485;
    goto yy376;
  yy488:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy487;
    goto yy376;
  yy489:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy487;
    goto yy376;
  yy490:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy487;
    goto yy376;
  yy491:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy485;
    goto yy376;
  yy492:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy492;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= '\'')
          goto yy503;
        goto yy376;
      } else {
        if (yych <= 0xDF)
          goto yy504;
        if (yych <= 0xE0)
          goto yy505;
        goto yy506;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy510;
        if (yych <= 0xEF)
          goto yy506;
        goto yy507;
      } else {
        if (yych <= 0xF3)
          goto yy508;
        if (yych <= 0xF4)
          goto yy509;
        goto yy376;
      }
    }
  yy494:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy494;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy376;
        if (yych <= '"')
          goto yy503;
        goto yy376;
      } else {
        if (yych <= 0xDF)
          goto yy496;
        if (yych <= 0xE0)
          goto yy497;
        goto yy498;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy502;
        if (yych <= 0xEF)
          goto yy498;
        goto yy499;
      } else {
        if (yych <= 0xF3)
          goto yy500;
        if (yych <= 0xF4)
          goto yy501;
        goto yy376;
      }
    }
  yy496:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy494;
    goto yy376;
  yy497:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy496;
    goto yy376;
  yy498:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy496;
    goto yy376;
  yy499:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy498;
    goto yy376;
  yy500:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy498;
    goto yy376;
  yy501:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy498;
    goto yy376;
  yy502:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy496;
    goto yy376;
  yy503:
    ++p;
    yych = *p;
    if (yych <= ' ') {
      if (yych <= 0x08)
        goto yy376;
      if (yych <= '\r')
        goto yy474;
      if (yych <= 0x1F)
        goto yy376;
      goto yy474;
    } else {
      if (yych <= '/') {
        if (yych <= '.')
          goto yy376;
        goto yy476;
      } else {
        if (yych == '>')
          goto yy393;
        goto yy376;
      }
    }
  yy504:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy492;
    goto yy376;
  yy505:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy504;
    goto yy376;
  yy506:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy504;
    goto yy376;
  yy507:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy506;
    goto yy376;
  yy508:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0xBF)
      goto yy506;
    goto yy376;
  yy509:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x8F)
      goto yy506;
    goto yy376;
  yy510:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy376;
    if (yych <= 0x9F)
      goto yy504;
    goto yy376;
  yy511:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '"') {
        if (yych <= '\r') {
          if (yych <= 0x00)
            goto yy376;
          if (yych <= 0x08)
            goto yy483;
          goto yy511;
        } else {
          if (yych == ' ')
            goto yy511;
          if (yych <= '!')
            goto yy483;
          goto yy376;
        }
      } else {
        if (yych <= ':') {
          if (yych == '\'')
            goto yy376;
          if (yych <= '9')
            goto yy483;
        } else {
          if (yych <= ';')
            goto yy483;
          if (yych <= '=')
            goto yy376;
          if (yych <= '>')
            goto yy393;
          goto yy483;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= '`') {
          if (yych <= 'Z')
            goto yy513;
          if (yych <= '^')
            goto yy483;
          if (yych >= '`')
            goto yy376;
        } else {
          if (yych <= 'z')
            goto yy513;
          if (yych <= 0x7F)
            goto yy483;
          if (yych <= 0xC1)
            goto yy376;
          goto yy485;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy486;
          if (yych == 0xED)
            goto yy491;
          goto yy487;
        } else {
          if (yych <= 0xF0)
            goto yy488;
          if (yych <= 0xF3)
            goto yy489;
          if (yych <= 0xF4)
            goto yy490;
          goto yy376;
        }
      }
    }
  yy513:
    ++p;
    yych = *p;
    if (yych <= '>') {
      if (yych <= '&') {
        if (yych <= 0x1F) {
          if (yych <= 0x00)
            goto yy376;
          if (yych <= 0x08)
            goto yy483;
          if (yych >= 0x0E)
            goto yy483;
        } else {
          if (yych <= ' ')
            goto yy515;
          if (yych == '"')
            goto yy376;
          goto yy483;
        }
      } else {
        if (yych <= '/') {
          if (yych <= '\'')
            goto yy376;
          if (yych <= ',')
            goto yy483;
          if (yych <= '.')
            goto yy513;
          goto yy483;
        } else {
          if (yych <= ';') {
            if (yych <= ':')
              goto yy513;
            goto yy483;
          } else {
            if (yych <= '<')
              goto yy376;
            if (yych <= '=')
              goto yy481;
            goto yy393;
          }
        }
      }
    } else {
      if (yych <= 0xC1) {
        if (yych <= '_') {
          if (yych <= '@')
            goto yy483;
          if (yych <= 'Z')
            goto yy513;
          if (yych <= '^')
            goto yy483;
          goto yy513;
        } else {
          if (yych <= '`')
            goto yy376;
          if (yych <= 'z')
            goto yy513;
          if (yych <= 0x7F)
            goto yy483;
          goto yy376;
        }
      } else {
        if (yych <= 0xED) {
          if (yych <= 0xDF)
            goto yy485;
          if (yych <= 0xE0)
            goto yy486;
          if (yych <= 0xEC)
            goto yy487;
          goto yy491;
        } else {
          if (yych <= 0xF0) {
            if (yych <= 0xEF)
              goto yy487;
            goto yy488;
          } else {
            if (yych <= 0xF3)
              goto yy489;
            if (yych <= 0xF4)
              goto yy490;
            goto yy376;
          }
        }
      }
    }
  yy515:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '&') {
        if (yych <= 0x1F) {
          if (yych <= 0x00)
            goto yy376;
          if (yych <= 0x08)
            goto yy483;
          if (yych <= '\r')
            goto yy515;
          goto yy483;
        } else {
          if (yych <= ' ')
            goto yy515;
          if (yych == '"')
            goto yy376;
          goto yy483;
        }
      } else {
        if (yych <= ';') {
          if (yych <= '\'')
            goto yy376;
          if (yych == ':')
            goto yy513;
          goto yy483;
        } else {
          if (yych <= '<')
            goto yy376;
          if (yych <= '=')
            goto yy481;
          if (yych <= '>')
            goto yy393;
          goto yy483;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= '`') {
          if (yych <= 'Z')
            goto yy513;
          if (yych <= '^')
            goto yy483;
          if (yych <= '_')
            goto yy513;
          goto yy376;
        } else {
          if (yych <= 'z')
            goto yy513;
          if (yych <= 0x7F)
            goto yy483;
          if (yych <= 0xC1)
            goto yy376;
          goto yy485;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy486;
          if (yych == 0xED)
            goto yy491;
          goto yy487;
        } else {
          if (yych <= 0xF0)
            goto yy488;
          if (yych <= 0xF3)
            goto yy489;
          if (yych <= 0xF4)
            goto yy490;
          goto yy376;
        }
      }
    }
  yy517:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '"') {
        if (yych <= '\r') {
          if (yych <= 0x00)
            goto yy376;
          if (yych <= 0x08)
            goto yy483;
          goto yy517;
        } else {
          if (yych == ' ')
            goto yy517;
          if (yych <= '!')
            goto yy483;
          goto yy494;
        }
      } else {
        if (yych <= ':') {
          if (yych == '\'')
            goto yy492;
          if (yych <= '9')
            goto yy483;
          goto yy513;
        } else {
          if (yych <= ';')
            goto yy483;
          if (yych <= '=')
            goto yy376;
          if (yych <= '>')
            goto yy393;
          goto yy483;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= '`') {
          if (yych <= 'Z')
            goto yy513;
          if (yych <= '^')
            goto yy483;
          if (yych <= '_')
            goto yy513;
          goto yy376;
        } else {
          if (yych <= 'z')
            goto yy513;
          if (yych <= 0x7F)
            goto yy483;
          if (yych <= 0xC1)
            goto yy376;
          goto yy485;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy486;
          if (yych == 0xED)
            goto yy491;
          goto yy487;
        } else {
          if (yych <= 0xF0)
            goto yy488;
          if (yych <= 0xF3)
            goto yy489;
          if (yych <= 0xF4)
            goto yy490;
          goto yy376;
        }
      }
    }
  }
}

// Try to match an HTML block tag start line, returning
// an integer code for the type of block (1-6, matching the spec).
// #7 is handled by a separate function, below.
bufsize_t _scan_html_block_start(const unsigned char *p) {
  const unsigned char *marker = NULL;

  {
    unsigned char yych;
    yych = *(marker = p);
    if (yych <= 0xDF) {
      if (yych <= ';') {
        if (yych != '\n')
          goto yy523;
      } else {
        if (yych <= '<')
          goto yy522;
        if (yych <= 0x7F)
          goto yy523;
        if (yych >= 0xC2)
          goto yy524;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy526;
        if (yych == 0xED)
          goto yy531;
        goto yy527;
      } else {
        if (yych <= 0xF0)
          goto yy528;
        if (yych <= 0xF3)
          goto yy529;
        if (yych <= 0xF4)
          goto yy530;
      }
    }
  yy521 : { return 0; }
  yy522:
    yych = *(marker = ++p);
    switch (yych) {
    case '!':
      goto yy548;
    case '/':
      goto yy532;
    case '?':
      goto yy549;
    case 'A':
    case 'a':
      goto yy534;
    case 'B':
    case 'b':
      goto yy535;
    case 'C':
    case 'c':
      goto yy536;
    case 'D':
    case 'd':
      goto yy537;
    case 'F':
    case 'f':
      goto yy538;
    case 'H':
    case 'h':
      goto yy539;
    case 'I':
    case 'i':
      goto yy540;
    case 'L':
    case 'l':
      goto yy541;
    case 'M':
    case 'm':
      goto yy542;
    case 'N':
    case 'n':
      goto yy543;
    case 'O':
    case 'o':
      goto yy544;
    case 'P':
    case 'p':
      goto yy533;
    case 'S':
    case 's':
      goto yy545;
    case 'T':
    case 't':
      goto yy546;
    case 'U':
    case 'u':
      goto yy547;
    default:
      goto yy521;
    }
  yy523:
    yych = *++p;
    goto yy521;
  yy524:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy525;
    if (yych <= 0xBF)
      goto yy523;
  yy525:
    p = marker;
    goto yy521;
  yy526:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy525;
    if (yych <= 0xBF)
      goto yy524;
    goto yy525;
  yy527:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy525;
    if (yych <= 0xBF)
      goto yy524;
    goto yy525;
  yy528:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy525;
    if (yych <= 0xBF)
      goto yy527;
    goto yy525;
  yy529:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy525;
    if (yych <= 0xBF)
      goto yy527;
    goto yy525;
  yy530:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy525;
    if (yych <= 0x8F)
      goto yy527;
    goto yy525;
  yy531:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy525;
    if (yych <= 0x9F)
      goto yy524;
    goto yy525;
  yy532:
    yych = *++p;
    switch (yych) {
    case 'A':
    case 'a':
      goto yy534;
    case 'B':
    case 'b':
      goto yy535;
    case 'C':
    case 'c':
      goto yy536;
    case 'D':
    case 'd':
      goto yy537;
    case 'F':
    case 'f':
      goto yy538;
    case 'H':
    case 'h':
      goto yy539;
    case 'I':
    case 'i':
      goto yy540;
    case 'L':
    case 'l':
      goto yy541;
    case 'M':
    case 'm':
      goto yy542;
    case 'N':
    case 'n':
      goto yy543;
    case 'O':
    case 'o':
      goto yy544;
    case 'P':
    case 'p':
      goto yy733;
    case 'S':
    case 's':
      goto yy734;
    case 'T':
    case 't':
      goto yy546;
    case 'U':
    case 'u':
      goto yy547;
    default:
      goto yy525;
    }
  yy533:
    yych = *++p;
    if (yych <= '>') {
      if (yych <= ' ') {
        if (yych <= 0x08)
          goto yy525;
        if (yych <= '\r')
          goto yy565;
        if (yych <= 0x1F)
          goto yy525;
        goto yy565;
      } else {
        if (yych == '/')
          goto yy567;
        if (yych <= '=')
          goto yy525;
        goto yy565;
      }
    } else {
      if (yych <= 'R') {
        if (yych == 'A')
          goto yy730;
        if (yych <= 'Q')
          goto yy525;
        goto yy729;
      } else {
        if (yych <= 'a') {
          if (yych <= '`')
            goto yy525;
          goto yy730;
        } else {
          if (yych == 'r')
            goto yy729;
          goto yy525;
        }
      }
    }
  yy534:
    yych = *++p;
    if (yych <= 'S') {
      if (yych <= 'D') {
        if (yych <= 'C')
          goto yy525;
        goto yy718;
      } else {
        if (yych <= 'Q')
          goto yy525;
        if (yych <= 'R')
          goto yy717;
        goto yy716;
      }
    } else {
      if (yych <= 'q') {
        if (yych == 'd')
          goto yy718;
        goto yy525;
      } else {
        if (yych <= 'r')
          goto yy717;
        if (yych <= 's')
          goto yy716;
        goto yy525;
      }
    }
  yy535:
    yych = *++p;
    if (yych <= 'O') {
      if (yych <= 'K') {
        if (yych == 'A')
          goto yy702;
        goto yy525;
      } else {
        if (yych <= 'L')
          goto yy701;
        if (yych <= 'N')
          goto yy525;
        goto yy700;
      }
    } else {
      if (yych <= 'k') {
        if (yych == 'a')
          goto yy702;
        goto yy525;
      } else {
        if (yych <= 'l')
          goto yy701;
        if (yych == 'o')
          goto yy700;
        goto yy525;
      }
    }
  yy536:
    yych = *++p;
    if (yych <= 'O') {
      if (yych <= 'D') {
        if (yych == 'A')
          goto yy687;
        goto yy525;
      } else {
        if (yych <= 'E')
          goto yy686;
        if (yych <= 'N')
          goto yy525;
        goto yy685;
      }
    } else {
      if (yych <= 'd') {
        if (yych == 'a')
          goto yy687;
        goto yy525;
      } else {
        if (yych <= 'e')
          goto yy686;
        if (yych == 'o')
          goto yy685;
        goto yy525;
      }
    }
  yy537:
    yych = *++p;
    switch (yych) {
    case 'D':
    case 'L':
    case 'T':
    case 'd':
    case 'l':
    case 't':
      goto yy564;
    case 'E':
    case 'e':
      goto yy677;
    case 'I':
    case 'i':
      goto yy676;
    default:
      goto yy525;
    }
  yy538:
    yych = *++p;
    if (yych <= 'R') {
      if (yych <= 'N') {
        if (yych == 'I')
          goto yy652;
        goto yy525;
      } else {
        if (yych <= 'O')
          goto yy651;
        if (yych <= 'Q')
          goto yy525;
        goto yy650;
      }
    } else {
      if (yych <= 'n') {
        if (yych == 'i')
          goto yy652;
        goto yy525;
      } else {
        if (yych <= 'o')
          goto yy651;
        if (yych == 'r')
          goto yy650;
        goto yy525;
      }
    }
  yy539:
    yych = *++p;
    if (yych <= 'S') {
      if (yych <= 'D') {
        if (yych == '1')
          goto yy564;
        goto yy525;
      } else {
        if (yych <= 'E')
          goto yy645;
        if (yych == 'R')
          goto yy564;
        goto yy525;
      }
    } else {
      if (yych <= 'q') {
        if (yych <= 'T')
          goto yy644;
        if (yych == 'e')
          goto yy645;
        goto yy525;
      } else {
        if (yych <= 'r')
          goto yy564;
        if (yych == 't')
          goto yy644;
        goto yy525;
      }
    }
  yy540:
    yych = *++p;
    if (yych == 'F')
      goto yy640;
    if (yych == 'f')
      goto yy640;
    goto yy525;
  yy541:
    yych = *++p;
    if (yych <= 'I') {
      if (yych == 'E')
        goto yy635;
      if (yych <= 'H')
        goto yy525;
      goto yy634;
    } else {
      if (yych <= 'e') {
        if (yych <= 'd')
          goto yy525;
        goto yy635;
      } else {
        if (yych == 'i')
          goto yy634;
        goto yy525;
      }
    }
  yy542:
    yych = *++p;
    if (yych <= 'E') {
      if (yych == 'A')
        goto yy626;
      if (yych <= 'D')
        goto yy525;
      goto yy625;
    } else {
      if (yych <= 'a') {
        if (yych <= '`')
          goto yy525;
        goto yy626;
      } else {
        if (yych == 'e')
          goto yy625;
        goto yy525;
      }
    }
  yy543:
    yych = *++p;
    if (yych <= 'O') {
      if (yych == 'A')
        goto yy619;
      if (yych <= 'N')
        goto yy525;
      goto yy618;
    } else {
      if (yych <= 'a') {
        if (yych <= '`')
          goto yy525;
        goto yy619;
      } else {
        if (yych == 'o')
          goto yy618;
        goto yy525;
      }
    }
  yy544:
    yych = *++p;
    if (yych <= 'P') {
      if (yych == 'L')
        goto yy564;
      if (yych <= 'O')
        goto yy525;
      goto yy610;
    } else {
      if (yych <= 'l') {
        if (yych <= 'k')
          goto yy525;
        goto yy564;
      } else {
        if (yych == 'p')
          goto yy610;
        goto yy525;
      }
    }
  yy545:
    yych = *++p;
    switch (yych) {
    case 'C':
    case 'c':
      goto yy587;
    case 'E':
    case 'e':
      goto yy590;
    case 'O':
    case 'o':
      goto yy589;
    case 'T':
    case 't':
      goto yy586;
    case 'U':
    case 'u':
      goto yy588;
    default:
      goto yy525;
    }
  yy546:
    yych = *++p;
    switch (yych) {
    case 'A':
    case 'a':
      goto yy573;
    case 'B':
    case 'b':
      goto yy572;
    case 'D':
    case 'd':
      goto yy564;
    case 'F':
    case 'f':
      goto yy571;
    case 'H':
    case 'h':
      goto yy570;
    case 'I':
    case 'i':
      goto yy569;
    case 'R':
    case 'r':
      goto yy568;
    default:
      goto yy525;
    }
  yy547:
    yych = *++p;
    if (yych == 'L')
      goto yy564;
    if (yych == 'l')
      goto yy564;
    goto yy525;
  yy548:
    yych = *++p;
    if (yych <= '@') {
      if (yych == '-')
        goto yy551;
      goto yy525;
    } else {
      if (yych <= 'Z')
        goto yy552;
      if (yych <= '[')
        goto yy554;
      goto yy525;
    }
  yy549:
    ++p;
    { return 3; }
  yy551:
    yych = *++p;
    if (yych == '-')
      goto yy562;
    goto yy525;
  yy552:
    ++p;
    { return 4; }
  yy554:
    yych = *++p;
    if (yych == 'C')
      goto yy555;
    if (yych != 'c')
      goto yy525;
  yy555:
    yych = *++p;
    if (yych == 'D')
      goto yy556;
    if (yych != 'd')
      goto yy525;
  yy556:
    yych = *++p;
    if (yych == 'A')
      goto yy557;
    if (yych != 'a')
      goto yy525;
  yy557:
    yych = *++p;
    if (yych == 'T')
      goto yy558;
    if (yych != 't')
      goto yy525;
  yy558:
    yych = *++p;
    if (yych == 'A')
      goto yy559;
    if (yych != 'a')
      goto yy525;
  yy559:
    yych = *++p;
    if (yych != '[')
      goto yy525;
    ++p;
    { return 5; }
  yy562:
    ++p;
    { return 2; }
  yy564:
    yych = *++p;
    if (yych <= ' ') {
      if (yych <= 0x08)
        goto yy525;
      if (yych <= '\r')
        goto yy565;
      if (yych <= 0x1F)
        goto yy525;
    } else {
      if (yych <= '/') {
        if (yych <= '.')
          goto yy525;
        goto yy567;
      } else {
        if (yych != '>')
          goto yy525;
      }
    }
  yy565:
    ++p;
    { return 6; }
  yy567:
    yych = *++p;
    if (yych == '>')
      goto yy565;
    goto yy525;
  yy568:
    yych = *++p;
    if (yych <= '/') {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy525;
        if (yych <= '\r')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= ' ')
          goto yy565;
        if (yych <= '.')
          goto yy525;
        goto yy567;
      }
    } else {
      if (yych <= '@') {
        if (yych == '>')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= 'A')
          goto yy584;
        if (yych == 'a')
          goto yy584;
        goto yy525;
      }
    }
  yy569:
    yych = *++p;
    if (yych == 'T')
      goto yy582;
    if (yych == 't')
      goto yy582;
    goto yy525;
  yy570:
    yych = *++p;
    if (yych <= '/') {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy525;
        if (yych <= '\r')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= ' ')
          goto yy565;
        if (yych <= '.')
          goto yy525;
        goto yy567;
      }
    } else {
      if (yych <= 'D') {
        if (yych == '>')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= 'E')
          goto yy580;
        if (yych == 'e')
          goto yy580;
        goto yy525;
      }
    }
  yy571:
    yych = *++p;
    if (yych == 'O')
      goto yy578;
    if (yych == 'o')
      goto yy578;
    goto yy525;
  yy572:
    yych = *++p;
    if (yych == 'O')
      goto yy576;
    if (yych == 'o')
      goto yy576;
    goto yy525;
  yy573:
    yych = *++p;
    if (yych == 'B')
      goto yy574;
    if (yych != 'b')
      goto yy525;
  yy574:
    yych = *++p;
    if (yych == 'L')
      goto yy575;
    if (yych != 'l')
      goto yy525;
  yy575:
    yych = *++p;
    if (yych == 'E')
      goto yy564;
    if (yych == 'e')
      goto yy564;
    goto yy525;
  yy576:
    yych = *++p;
    if (yych == 'D')
      goto yy577;
    if (yych != 'd')
      goto yy525;
  yy577:
    yych = *++p;
    if (yych == 'Y')
      goto yy564;
    if (yych == 'y')
      goto yy564;
    goto yy525;
  yy578:
    yych = *++p;
    if (yych == 'O')
      goto yy579;
    if (yych != 'o')
      goto yy525;
  yy579:
    yych = *++p;
    if (yych == 'T')
      goto yy564;
    if (yych == 't')
      goto yy564;
    goto yy525;
  yy580:
    yych = *++p;
    if (yych == 'A')
      goto yy581;
    if (yych != 'a')
      goto yy525;
  yy581:
    yych = *++p;
    if (yych == 'D')
      goto yy564;
    if (yych == 'd')
      goto yy564;
    goto yy525;
  yy582:
    yych = *++p;
    if (yych == 'L')
      goto yy583;
    if (yych != 'l')
      goto yy525;
  yy583:
    yych = *++p;
    if (yych == 'E')
      goto yy564;
    if (yych == 'e')
      goto yy564;
    goto yy525;
  yy584:
    yych = *++p;
    if (yych == 'C')
      goto yy585;
    if (yych != 'c')
      goto yy525;
  yy585:
    yych = *++p;
    if (yych == 'K')
      goto yy564;
    if (yych == 'k')
      goto yy564;
    goto yy525;
  yy586:
    yych = *++p;
    if (yych == 'Y')
      goto yy608;
    if (yych == 'y')
      goto yy608;
    goto yy525;
  yy587:
    yych = *++p;
    if (yych == 'R')
      goto yy602;
    if (yych == 'r')
      goto yy602;
    goto yy525;
  yy588:
    yych = *++p;
    if (yych == 'M')
      goto yy598;
    if (yych == 'm')
      goto yy598;
    goto yy525;
  yy589:
    yych = *++p;
    if (yych == 'U')
      goto yy595;
    if (yych == 'u')
      goto yy595;
    goto yy525;
  yy590:
    yych = *++p;
    if (yych == 'C')
      goto yy591;
    if (yych != 'c')
      goto yy525;
  yy591:
    yych = *++p;
    if (yych == 'T')
      goto yy592;
    if (yych != 't')
      goto yy525;
  yy592:
    yych = *++p;
    if (yych == 'I')
      goto yy593;
    if (yych != 'i')
      goto yy525;
  yy593:
    yych = *++p;
    if (yych == 'O')
      goto yy594;
    if (yych != 'o')
      goto yy525;
  yy594:
    yych = *++p;
    if (yych == 'N')
      goto yy564;
    if (yych == 'n')
      goto yy564;
    goto yy525;
  yy595:
    yych = *++p;
    if (yych == 'R')
      goto yy596;
    if (yych != 'r')
      goto yy525;
  yy596:
    yych = *++p;
    if (yych == 'C')
      goto yy597;
    if (yych != 'c')
      goto yy525;
  yy597:
    yych = *++p;
    if (yych == 'E')
      goto yy564;
    if (yych == 'e')
      goto yy564;
    goto yy525;
  yy598:
    yych = *++p;
    if (yych == 'M')
      goto yy599;
    if (yych != 'm')
      goto yy525;
  yy599:
    yych = *++p;
    if (yych == 'A')
      goto yy600;
    if (yych != 'a')
      goto yy525;
  yy600:
    yych = *++p;
    if (yych == 'R')
      goto yy601;
    if (yych != 'r')
      goto yy525;
  yy601:
    yych = *++p;
    if (yych == 'Y')
      goto yy564;
    if (yych == 'y')
      goto yy564;
    goto yy525;
  yy602:
    yych = *++p;
    if (yych == 'I')
      goto yy603;
    if (yych != 'i')
      goto yy525;
  yy603:
    yych = *++p;
    if (yych == 'P')
      goto yy604;
    if (yych != 'p')
      goto yy525;
  yy604:
    yych = *++p;
    if (yych == 'T')
      goto yy605;
    if (yych != 't')
      goto yy525;
  yy605:
    yych = *++p;
    if (yych <= 0x1F) {
      if (yych <= 0x08)
        goto yy525;
      if (yych >= 0x0E)
        goto yy525;
    } else {
      if (yych <= ' ')
        goto yy606;
      if (yych != '>')
        goto yy525;
    }
  yy606:
    ++p;
    { return 1; }
  yy608:
    yych = *++p;
    if (yych == 'L')
      goto yy609;
    if (yych != 'l')
      goto yy525;
  yy609:
    yych = *++p;
    if (yych == 'E')
      goto yy605;
    if (yych == 'e')
      goto yy605;
    goto yy525;
  yy610:
    yych = *++p;
    if (yych == 'T')
      goto yy611;
    if (yych != 't')
      goto yy525;
  yy611:
    yych = *++p;
    if (yych <= 'I') {
      if (yych == 'G')
        goto yy613;
      if (yych <= 'H')
        goto yy525;
    } else {
      if (yych <= 'g') {
        if (yych <= 'f')
          goto yy525;
        goto yy613;
      } else {
        if (yych != 'i')
          goto yy525;
      }
    }
    yych = *++p;
    if (yych == 'O')
      goto yy617;
    if (yych == 'o')
      goto yy617;
    goto yy525;
  yy613:
    yych = *++p;
    if (yych == 'R')
      goto yy614;
    if (yych != 'r')
      goto yy525;
  yy614:
    yych = *++p;
    if (yych == 'O')
      goto yy615;
    if (yych != 'o')
      goto yy525;
  yy615:
    yych = *++p;
    if (yych == 'U')
      goto yy616;
    if (yych != 'u')
      goto yy525;
  yy616:
    yych = *++p;
    if (yych == 'P')
      goto yy564;
    if (yych == 'p')
      goto yy564;
    goto yy525;
  yy617:
    yych = *++p;
    if (yych == 'N')
      goto yy564;
    if (yych == 'n')
      goto yy564;
    goto yy525;
  yy618:
    yych = *++p;
    if (yych == 'F')
      goto yy620;
    if (yych == 'f')
      goto yy620;
    goto yy525;
  yy619:
    yych = *++p;
    if (yych == 'V')
      goto yy564;
    if (yych == 'v')
      goto yy564;
    goto yy525;
  yy620:
    yych = *++p;
    if (yych == 'R')
      goto yy621;
    if (yych != 'r')
      goto yy525;
  yy621:
    yych = *++p;
    if (yych == 'A')
      goto yy622;
    if (yych != 'a')
      goto yy525;
  yy622:
    yych = *++p;
    if (yych == 'M')
      goto yy623;
    if (yych != 'm')
      goto yy525;
  yy623:
    yych = *++p;
    if (yych == 'E')
      goto yy624;
    if (yych != 'e')
      goto yy525;
  yy624:
    yych = *++p;
    if (yych == 'S')
      goto yy564;
    if (yych == 's')
      goto yy564;
    goto yy525;
  yy625:
    yych = *++p;
    if (yych <= 'T') {
      if (yych == 'N')
        goto yy628;
      if (yych <= 'S')
        goto yy525;
      goto yy629;
    } else {
      if (yych <= 'n') {
        if (yych <= 'm')
          goto yy525;
        goto yy628;
      } else {
        if (yych == 't')
          goto yy629;
        goto yy525;
      }
    }
  yy626:
    yych = *++p;
    if (yych == 'I')
      goto yy627;
    if (yych != 'i')
      goto yy525;
  yy627:
    yych = *++p;
    if (yych == 'N')
      goto yy564;
    if (yych == 'n')
      goto yy564;
    goto yy525;
  yy628:
    yych = *++p;
    if (yych == 'U')
      goto yy630;
    if (yych == 'u')
      goto yy630;
    goto yy525;
  yy629:
    yych = *++p;
    if (yych == 'A')
      goto yy564;
    if (yych == 'a')
      goto yy564;
    goto yy525;
  yy630:
    yych = *++p;
    if (yych <= '/') {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy525;
        if (yych <= '\r')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= ' ')
          goto yy565;
        if (yych <= '.')
          goto yy525;
        goto yy567;
      }
    } else {
      if (yych <= 'H') {
        if (yych == '>')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= 'I')
          goto yy631;
        if (yych != 'i')
          goto yy525;
      }
    }
  yy631:
    yych = *++p;
    if (yych == 'T')
      goto yy632;
    if (yych != 't')
      goto yy525;
  yy632:
    yych = *++p;
    if (yych == 'E')
      goto yy633;
    if (yych != 'e')
      goto yy525;
  yy633:
    yych = *++p;
    if (yych == 'M')
      goto yy564;
    if (yych == 'm')
      goto yy564;
    goto yy525;
  yy634:
    yych = *++p;
    if (yych <= '/') {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy525;
        if (yych <= '\r')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= ' ')
          goto yy565;
        if (yych <= '.')
          goto yy525;
        goto yy567;
      }
    } else {
      if (yych <= 'M') {
        if (yych == '>')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= 'N')
          goto yy639;
        if (yych == 'n')
          goto yy639;
        goto yy525;
      }
    }
  yy635:
    yych = *++p;
    if (yych == 'G')
      goto yy636;
    if (yych != 'g')
      goto yy525;
  yy636:
    yych = *++p;
    if (yych == 'E')
      goto yy637;
    if (yych != 'e')
      goto yy525;
  yy637:
    yych = *++p;
    if (yych == 'N')
      goto yy638;
    if (yych != 'n')
      goto yy525;
  yy638:
    yych = *++p;
    if (yych == 'D')
      goto yy564;
    if (yych == 'd')
      goto yy564;
    goto yy525;
  yy639:
    yych = *++p;
    if (yych == 'K')
      goto yy564;
    if (yych == 'k')
      goto yy564;
    goto yy525;
  yy640:
    yych = *++p;
    if (yych == 'R')
      goto yy641;
    if (yych != 'r')
      goto yy525;
  yy641:
    yych = *++p;
    if (yych == 'A')
      goto yy642;
    if (yych != 'a')
      goto yy525;
  yy642:
    yych = *++p;
    if (yych == 'M')
      goto yy643;
    if (yych != 'm')
      goto yy525;
  yy643:
    yych = *++p;
    if (yych == 'E')
      goto yy564;
    if (yych == 'e')
      goto yy564;
    goto yy525;
  yy644:
    yych = *++p;
    if (yych == 'M')
      goto yy649;
    if (yych == 'm')
      goto yy649;
    goto yy525;
  yy645:
    yych = *++p;
    if (yych == 'A')
      goto yy646;
    if (yych != 'a')
      goto yy525;
  yy646:
    yych = *++p;
    if (yych == 'D')
      goto yy647;
    if (yych != 'd')
      goto yy525;
  yy647:
    yych = *++p;
    if (yych <= '/') {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy525;
        if (yych <= '\r')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= ' ')
          goto yy565;
        if (yych <= '.')
          goto yy525;
        goto yy567;
      }
    } else {
      if (yych <= 'D') {
        if (yych == '>')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= 'E')
          goto yy648;
        if (yych != 'e')
          goto yy525;
      }
    }
  yy648:
    yych = *++p;
    if (yych == 'R')
      goto yy564;
    if (yych == 'r')
      goto yy564;
    goto yy525;
  yy649:
    yych = *++p;
    if (yych == 'L')
      goto yy564;
    if (yych == 'l')
      goto yy564;
    goto yy525;
  yy650:
    yych = *++p;
    if (yych == 'A')
      goto yy671;
    if (yych == 'a')
      goto yy671;
    goto yy525;
  yy651:
    yych = *++p;
    if (yych <= 'R') {
      if (yych == 'O')
        goto yy667;
      if (yych <= 'Q')
        goto yy525;
      goto yy668;
    } else {
      if (yych <= 'o') {
        if (yych <= 'n')
          goto yy525;
        goto yy667;
      } else {
        if (yych == 'r')
          goto yy668;
        goto yy525;
      }
    }
  yy652:
    yych = *++p;
    if (yych <= 'G') {
      if (yych == 'E')
        goto yy653;
      if (yych <= 'F')
        goto yy525;
      goto yy654;
    } else {
      if (yych <= 'e') {
        if (yych <= 'd')
          goto yy525;
      } else {
        if (yych == 'g')
          goto yy654;
        goto yy525;
      }
    }
  yy653:
    yych = *++p;
    if (yych == 'L')
      goto yy663;
    if (yych == 'l')
      goto yy663;
    goto yy525;
  yy654:
    yych = *++p;
    if (yych <= 'U') {
      if (yych == 'C')
        goto yy656;
      if (yych <= 'T')
        goto yy525;
    } else {
      if (yych <= 'c') {
        if (yych <= 'b')
          goto yy525;
        goto yy656;
      } else {
        if (yych != 'u')
          goto yy525;
      }
    }
    yych = *++p;
    if (yych == 'R')
      goto yy662;
    if (yych == 'r')
      goto yy662;
    goto yy525;
  yy656:
    yych = *++p;
    if (yych == 'A')
      goto yy657;
    if (yych != 'a')
      goto yy525;
  yy657:
    yych = *++p;
    if (yych == 'P')
      goto yy658;
    if (yych != 'p')
      goto yy525;
  yy658:
    yych = *++p;
    if (yych == 'T')
      goto yy659;
    if (yych != 't')
      goto yy525;
  yy659:
    yych = *++p;
    if (yych == 'I')
      goto yy660;
    if (yych != 'i')
      goto yy525;
  yy660:
    yych = *++p;
    if (yych == 'O')
      goto yy661;
    if (yych != 'o')
      goto yy525;
  yy661:
    yych = *++p;
    if (yych == 'N')
      goto yy564;
    if (yych == 'n')
      goto yy564;
    goto yy525;
  yy662:
    yych = *++p;
    if (yych == 'E')
      goto yy564;
    if (yych == 'e')
      goto yy564;
    goto yy525;
  yy663:
    yych = *++p;
    if (yych == 'D')
      goto yy664;
    if (yych != 'd')
      goto yy525;
  yy664:
    yych = *++p;
    if (yych == 'S')
      goto yy665;
    if (yych != 's')
      goto yy525;
  yy665:
    yych = *++p;
    if (yych == 'E')
      goto yy666;
    if (yych != 'e')
      goto yy525;
  yy666:
    yych = *++p;
    if (yych == 'T')
      goto yy564;
    if (yych == 't')
      goto yy564;
    goto yy525;
  yy667:
    yych = *++p;
    if (yych == 'T')
      goto yy669;
    if (yych == 't')
      goto yy669;
    goto yy525;
  yy668:
    yych = *++p;
    if (yych == 'M')
      goto yy564;
    if (yych == 'm')
      goto yy564;
    goto yy525;
  yy669:
    yych = *++p;
    if (yych == 'E')
      goto yy670;
    if (yych != 'e')
      goto yy525;
  yy670:
    yych = *++p;
    if (yych == 'R')
      goto yy564;
    if (yych == 'r')
      goto yy564;
    goto yy525;
  yy671:
    yych = *++p;
    if (yych == 'M')
      goto yy672;
    if (yych != 'm')
      goto yy525;
  yy672:
    yych = *++p;
    if (yych == 'E')
      goto yy673;
    if (yych != 'e')
      goto yy525;
  yy673:
    yych = *++p;
    if (yych <= '/') {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy525;
        if (yych <= '\r')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= ' ')
          goto yy565;
        if (yych <= '.')
          goto yy525;
        goto yy567;
      }
    } else {
      if (yych <= 'R') {
        if (yych == '>')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= 'S')
          goto yy674;
        if (yych != 's')
          goto yy525;
      }
    }
  yy674:
    yych = *++p;
    if (yych == 'E')
      goto yy675;
    if (yych != 'e')
      goto yy525;
  yy675:
    yych = *++p;
    if (yych == 'T')
      goto yy564;
    if (yych == 't')
      goto yy564;
    goto yy525;
  yy676:
    yych = *++p;
    if (yych <= 'V') {
      if (yych <= 'Q') {
        if (yych == 'A')
          goto yy682;
        goto yy525;
      } else {
        if (yych <= 'R')
          goto yy564;
        if (yych <= 'U')
          goto yy525;
        goto yy564;
      }
    } else {
      if (yych <= 'q') {
        if (yych == 'a')
          goto yy682;
        goto yy525;
      } else {
        if (yych <= 'r')
          goto yy564;
        if (yych == 'v')
          goto yy564;
        goto yy525;
      }
    }
  yy677:
    yych = *++p;
    if (yych == 'T')
      goto yy678;
    if (yych != 't')
      goto yy525;
  yy678:
    yych = *++p;
    if (yych == 'A')
      goto yy679;
    if (yych != 'a')
      goto yy525;
  yy679:
    yych = *++p;
    if (yych == 'I')
      goto yy680;
    if (yych != 'i')
      goto yy525;
  yy680:
    yych = *++p;
    if (yych == 'L')
      goto yy681;
    if (yych != 'l')
      goto yy525;
  yy681:
    yych = *++p;
    if (yych == 'S')
      goto yy564;
    if (yych == 's')
      goto yy564;
    goto yy525;
  yy682:
    yych = *++p;
    if (yych == 'L')
      goto yy683;
    if (yych != 'l')
      goto yy525;
  yy683:
    yych = *++p;
    if (yych == 'O')
      goto yy684;
    if (yych != 'o')
      goto yy525;
  yy684:
    yych = *++p;
    if (yych == 'G')
      goto yy564;
    if (yych == 'g')
      goto yy564;
    goto yy525;
  yy685:
    yych = *++p;
    if (yych == 'L')
      goto yy695;
    if (yych == 'l')
      goto yy695;
    goto yy525;
  yy686:
    yych = *++p;
    if (yych == 'N')
      goto yy692;
    if (yych == 'n')
      goto yy692;
    goto yy525;
  yy687:
    yych = *++p;
    if (yych == 'P')
      goto yy688;
    if (yych != 'p')
      goto yy525;
  yy688:
    yych = *++p;
    if (yych == 'T')
      goto yy689;
    if (yych != 't')
      goto yy525;
  yy689:
    yych = *++p;
    if (yych == 'I')
      goto yy690;
    if (yych != 'i')
      goto yy525;
  yy690:
    yych = *++p;
    if (yych == 'O')
      goto yy691;
    if (yych != 'o')
      goto yy525;
  yy691:
    yych = *++p;
    if (yych == 'N')
      goto yy564;
    if (yych == 'n')
      goto yy564;
    goto yy525;
  yy692:
    yych = *++p;
    if (yych == 'T')
      goto yy693;
    if (yych != 't')
      goto yy525;
  yy693:
    yych = *++p;
    if (yych == 'E')
      goto yy694;
    if (yych != 'e')
      goto yy525;
  yy694:
    yych = *++p;
    if (yych == 'R')
      goto yy564;
    if (yych == 'r')
      goto yy564;
    goto yy525;
  yy695:
    yych = *++p;
    if (yych <= '/') {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy525;
        if (yych <= '\r')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= ' ')
          goto yy565;
        if (yych <= '.')
          goto yy525;
        goto yy567;
      }
    } else {
      if (yych <= 'F') {
        if (yych == '>')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= 'G')
          goto yy696;
        if (yych != 'g')
          goto yy525;
      }
    }
  yy696:
    yych = *++p;
    if (yych == 'R')
      goto yy697;
    if (yych != 'r')
      goto yy525;
  yy697:
    yych = *++p;
    if (yych == 'O')
      goto yy698;
    if (yych != 'o')
      goto yy525;
  yy698:
    yych = *++p;
    if (yych == 'U')
      goto yy699;
    if (yych != 'u')
      goto yy525;
  yy699:
    yych = *++p;
    if (yych == 'P')
      goto yy564;
    if (yych == 'p')
      goto yy564;
    goto yy525;
  yy700:
    yych = *++p;
    if (yych == 'D')
      goto yy715;
    if (yych == 'd')
      goto yy715;
    goto yy525;
  yy701:
    yych = *++p;
    if (yych == 'O')
      goto yy708;
    if (yych == 'o')
      goto yy708;
    goto yy525;
  yy702:
    yych = *++p;
    if (yych == 'S')
      goto yy703;
    if (yych != 's')
      goto yy525;
  yy703:
    yych = *++p;
    if (yych == 'E')
      goto yy704;
    if (yych != 'e')
      goto yy525;
  yy704:
    yych = *++p;
    if (yych <= '/') {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy525;
        if (yych <= '\r')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= ' ')
          goto yy565;
        if (yych <= '.')
          goto yy525;
        goto yy567;
      }
    } else {
      if (yych <= 'E') {
        if (yych == '>')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= 'F')
          goto yy705;
        if (yych != 'f')
          goto yy525;
      }
    }
  yy705:
    yych = *++p;
    if (yych == 'O')
      goto yy706;
    if (yych != 'o')
      goto yy525;
  yy706:
    yych = *++p;
    if (yych == 'N')
      goto yy707;
    if (yych != 'n')
      goto yy525;
  yy707:
    yych = *++p;
    if (yych == 'T')
      goto yy564;
    if (yych == 't')
      goto yy564;
    goto yy525;
  yy708:
    yych = *++p;
    if (yych == 'C')
      goto yy709;
    if (yych != 'c')
      goto yy525;
  yy709:
    yych = *++p;
    if (yych == 'K')
      goto yy710;
    if (yych != 'k')
      goto yy525;
  yy710:
    yych = *++p;
    if (yych == 'Q')
      goto yy711;
    if (yych != 'q')
      goto yy525;
  yy711:
    yych = *++p;
    if (yych == 'U')
      goto yy712;
    if (yych != 'u')
      goto yy525;
  yy712:
    yych = *++p;
    if (yych == 'O')
      goto yy713;
    if (yych != 'o')
      goto yy525;
  yy713:
    yych = *++p;
    if (yych == 'T')
      goto yy714;
    if (yych != 't')
      goto yy525;
  yy714:
    yych = *++p;
    if (yych == 'E')
      goto yy564;
    if (yych == 'e')
      goto yy564;
    goto yy525;
  yy715:
    yych = *++p;
    if (yych == 'Y')
      goto yy564;
    if (yych == 'y')
      goto yy564;
    goto yy525;
  yy716:
    yych = *++p;
    if (yych == 'I')
      goto yy727;
    if (yych == 'i')
      goto yy727;
    goto yy525;
  yy717:
    yych = *++p;
    if (yych == 'T')
      goto yy723;
    if (yych == 't')
      goto yy723;
    goto yy525;
  yy718:
    yych = *++p;
    if (yych == 'D')
      goto yy719;
    if (yych != 'd')
      goto yy525;
  yy719:
    yych = *++p;
    if (yych == 'R')
      goto yy720;
    if (yych != 'r')
      goto yy525;
  yy720:
    yych = *++p;
    if (yych == 'E')
      goto yy721;
    if (yych != 'e')
      goto yy525;
  yy721:
    yych = *++p;
    if (yych == 'S')
      goto yy722;
    if (yych != 's')
      goto yy525;
  yy722:
    yych = *++p;
    if (yych == 'S')
      goto yy564;
    if (yych == 's')
      goto yy564;
    goto yy525;
  yy723:
    yych = *++p;
    if (yych == 'I')
      goto yy724;
    if (yych != 'i')
      goto yy525;
  yy724:
    yych = *++p;
    if (yych == 'C')
      goto yy725;
    if (yych != 'c')
      goto yy525;
  yy725:
    yych = *++p;
    if (yych == 'L')
      goto yy726;
    if (yych != 'l')
      goto yy525;
  yy726:
    yych = *++p;
    if (yych == 'E')
      goto yy564;
    if (yych == 'e')
      goto yy564;
    goto yy525;
  yy727:
    yych = *++p;
    if (yych == 'D')
      goto yy728;
    if (yych != 'd')
      goto yy525;
  yy728:
    yych = *++p;
    if (yych == 'E')
      goto yy564;
    if (yych == 'e')
      goto yy564;
    goto yy525;
  yy729:
    yych = *++p;
    if (yych == 'E')
      goto yy605;
    if (yych == 'e')
      goto yy605;
    goto yy525;
  yy730:
    yych = *++p;
    if (yych == 'R')
      goto yy731;
    if (yych != 'r')
      goto yy525;
  yy731:
    yych = *++p;
    if (yych == 'A')
      goto yy732;
    if (yych != 'a')
      goto yy525;
  yy732:
    yych = *++p;
    if (yych == 'M')
      goto yy564;
    if (yych == 'm')
      goto yy564;
    goto yy525;
  yy733:
    yych = *++p;
    if (yych <= '/') {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy525;
        if (yych <= '\r')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= ' ')
          goto yy565;
        if (yych <= '.')
          goto yy525;
        goto yy567;
      }
    } else {
      if (yych <= '@') {
        if (yych == '>')
          goto yy565;
        goto yy525;
      } else {
        if (yych <= 'A')
          goto yy730;
        if (yych == 'a')
          goto yy730;
        goto yy525;
      }
    }
  yy734:
    ++p;
    if ((yych = *p) <= 'U') {
      if (yych <= 'N') {
        if (yych == 'E')
          goto yy590;
        goto yy525;
      } else {
        if (yych <= 'O')
          goto yy589;
        if (yych <= 'T')
          goto yy525;
        goto yy588;
      }
    } else {
      if (yych <= 'n') {
        if (yych == 'e')
          goto yy590;
        goto yy525;
      } else {
        if (yych <= 'o')
          goto yy589;
        if (yych == 'u')
          goto yy588;
        goto yy525;
      }
    }
  }
}

// Try to match an HTML block tag start line of type 7, returning
// 7 if successful, 0 if not.
bufsize_t _scan_html_block_start_7(const unsigned char *p) {
  const unsigned char *marker = NULL;

  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        0,   224, 224, 224, 224, 224, 224, 224, 224, 198, 202, 194, 198, 194,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 198, 224, 64,  224, 224, 224, 224, 128, 224, 224,
        224, 224, 224, 241, 240, 224, 241, 241, 241, 241, 241, 241, 241, 241,
        241, 241, 240, 224, 192, 192, 192, 224, 224, 241, 241, 241, 241, 241,
        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
        241, 241, 241, 241, 241, 241, 241, 224, 224, 224, 224, 240, 192, 241,
        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241,
        241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 224, 224, 224,
        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= 0xDF) {
      if (yych <= ';') {
        if (yych != '\n')
          goto yy739;
      } else {
        if (yych <= '<')
          goto yy738;
        if (yych <= 0x7F)
          goto yy739;
        if (yych >= 0xC2)
          goto yy740;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy742;
        if (yych == 0xED)
          goto yy747;
        goto yy743;
      } else {
        if (yych <= 0xF0)
          goto yy744;
        if (yych <= 0xF3)
          goto yy745;
        if (yych <= 0xF4)
          goto yy746;
      }
    }
  yy737 : { return 0; }
  yy738:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= '@') {
      if (yych == '/')
        goto yy750;
      goto yy737;
    } else {
      if (yych <= 'Z')
        goto yy748;
      if (yych <= '`')
        goto yy737;
      if (yych <= 'z')
        goto yy748;
      goto yy737;
    }
  yy739:
    yych = *++p;
    goto yy737;
  yy740:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy739;
  yy741:
    p = marker;
    if (yyaccept == 0) {
      goto yy737;
    } else {
      goto yy759;
    }
  yy742:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy740;
    goto yy741;
  yy743:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy740;
    goto yy741;
  yy744:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy743;
    goto yy741;
  yy745:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy743;
    goto yy741;
  yy746:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0x8F)
      goto yy743;
    goto yy741;
  yy747:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0x9F)
      goto yy740;
    goto yy741;
  yy748:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 1) {
      goto yy748;
    }
    if (yych <= ' ') {
      if (yych <= 0x08)
        goto yy741;
      if (yych <= '\r')
        goto yy761;
      if (yych <= 0x1F)
        goto yy741;
      goto yy761;
    } else {
      if (yych <= '/') {
        if (yych <= '.')
          goto yy741;
        goto yy763;
      } else {
        if (yych == '>')
          goto yy755;
        goto yy741;
      }
    }
  yy750:
    yych = *++p;
    if (yych <= '@')
      goto yy741;
    if (yych <= 'Z')
      goto yy751;
    if (yych <= '`')
      goto yy741;
    if (yych >= '{')
      goto yy741;
  yy751:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 2) {
      goto yy753;
    }
    if (yych <= '=') {
      if (yych <= '-') {
        if (yych <= ',')
          goto yy741;
        goto yy751;
      } else {
        if (yych <= '/')
          goto yy741;
        if (yych <= '9')
          goto yy751;
        goto yy741;
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '>')
          goto yy755;
        if (yych <= '@')
          goto yy741;
        goto yy751;
      } else {
        if (yych <= '`')
          goto yy741;
        if (yych <= 'z')
          goto yy751;
        goto yy741;
      }
    }
  yy753:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 2) {
      goto yy753;
    }
    if (yych != '>')
      goto yy741;
  yy755:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 4) {
      goto yy755;
    }
    if (yych <= 0x08)
      goto yy741;
    if (yych <= '\n')
      goto yy757;
    if (yych <= '\v')
      goto yy741;
    if (yych <= '\r')
      goto yy760;
    goto yy741;
  yy757:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 4) {
      goto yy755;
    }
    if (yych <= 0x08)
      goto yy759;
    if (yych <= '\n')
      goto yy757;
    if (yych <= '\v')
      goto yy759;
    if (yych <= '\r')
      goto yy760;
  yy759 : { return 7; }
  yy760:
    yych = *++p;
    goto yy759;
  yy761:
    ++p;
    yych = *p;
    if (yych <= ':') {
      if (yych <= ' ') {
        if (yych <= 0x08)
          goto yy741;
        if (yych <= '\r')
          goto yy761;
        if (yych <= 0x1F)
          goto yy741;
        goto yy761;
      } else {
        if (yych == '/')
          goto yy763;
        if (yych <= '9')
          goto yy741;
        goto yy764;
      }
    } else {
      if (yych <= 'Z') {
        if (yych == '>')
          goto yy755;
        if (yych <= '@')
          goto yy741;
        goto yy764;
      } else {
        if (yych <= '_') {
          if (yych <= '^')
            goto yy741;
          goto yy764;
        } else {
          if (yych <= '`')
            goto yy741;
          if (yych <= 'z')
            goto yy764;
          goto yy741;
        }
      }
    }
  yy763:
    yych = *++p;
    if (yych == '>')
      goto yy755;
    goto yy741;
  yy764:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 16) {
      goto yy764;
    }
    if (yych <= ',') {
      if (yych <= '\r') {
        if (yych <= 0x08)
          goto yy741;
      } else {
        if (yych != ' ')
          goto yy741;
      }
    } else {
      if (yych <= '<') {
        if (yych <= '/')
          goto yy763;
        goto yy741;
      } else {
        if (yych <= '=')
          goto yy768;
        if (yych <= '>')
          goto yy755;
        goto yy741;
      }
    }
  yy766:
    ++p;
    yych = *p;
    if (yych <= '<') {
      if (yych <= ' ') {
        if (yych <= 0x08)
          goto yy741;
        if (yych <= '\r')
          goto yy766;
        if (yych <= 0x1F)
          goto yy741;
        goto yy766;
      } else {
        if (yych <= '/') {
          if (yych <= '.')
            goto yy741;
          goto yy763;
        } else {
          if (yych == ':')
            goto yy764;
          goto yy741;
        }
      }
    } else {
      if (yych <= 'Z') {
        if (yych <= '=')
          goto yy768;
        if (yych <= '>')
          goto yy755;
        if (yych <= '@')
          goto yy741;
        goto yy764;
      } else {
        if (yych <= '_') {
          if (yych <= '^')
            goto yy741;
          goto yy764;
        } else {
          if (yych <= '`')
            goto yy741;
          if (yych <= 'z')
            goto yy764;
          goto yy741;
        }
      }
    }
  yy768:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy770;
    }
    if (yych <= 0xE0) {
      if (yych <= '"') {
        if (yych <= 0x00)
          goto yy741;
        if (yych >= '!')
          goto yy781;
      } else {
        if (yych <= '\'')
          goto yy779;
        if (yych <= 0xC1)
          goto yy741;
        if (yych <= 0xDF)
          goto yy772;
        goto yy773;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy778;
        goto yy774;
      } else {
        if (yych <= 0xF0)
          goto yy775;
        if (yych <= 0xF3)
          goto yy776;
        if (yych <= 0xF4)
          goto yy777;
        goto yy741;
      }
    }
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy770;
    }
    if (yych <= 0xDF) {
      if (yych <= '\'') {
        if (yych <= 0x00)
          goto yy741;
        if (yych <= ' ')
          goto yy804;
        if (yych <= '"')
          goto yy781;
        goto yy779;
      } else {
        if (yych == '>')
          goto yy755;
        if (yych <= 0xC1)
          goto yy741;
        goto yy772;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy773;
        if (yych == 0xED)
          goto yy778;
        goto yy774;
      } else {
        if (yych <= 0xF0)
          goto yy775;
        if (yych <= 0xF3)
          goto yy776;
        if (yych <= 0xF4)
          goto yy777;
        goto yy741;
      }
    }
  yy770:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy770;
    }
    if (yych <= 0xE0) {
      if (yych <= '=') {
        if (yych <= 0x00)
          goto yy741;
        if (yych <= ' ')
          goto yy798;
        goto yy741;
      } else {
        if (yych <= '>')
          goto yy755;
        if (yych <= 0xC1)
          goto yy741;
        if (yych >= 0xE0)
          goto yy773;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy778;
        goto yy774;
      } else {
        if (yych <= 0xF0)
          goto yy775;
        if (yych <= 0xF3)
          goto yy776;
        if (yych <= 0xF4)
          goto yy777;
        goto yy741;
      }
    }
  yy772:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy770;
    goto yy741;
  yy773:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy772;
    goto yy741;
  yy774:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy772;
    goto yy741;
  yy775:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy774;
    goto yy741;
  yy776:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy774;
    goto yy741;
  yy777:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0x8F)
      goto yy774;
    goto yy741;
  yy778:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0x9F)
      goto yy772;
    goto yy741;
  yy779:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy779;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy741;
        if (yych <= '\'')
          goto yy790;
        goto yy741;
      } else {
        if (yych <= 0xDF)
          goto yy791;
        if (yych <= 0xE0)
          goto yy792;
        goto yy793;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy797;
        if (yych <= 0xEF)
          goto yy793;
        goto yy794;
      } else {
        if (yych <= 0xF3)
          goto yy795;
        if (yych <= 0xF4)
          goto yy796;
        goto yy741;
      }
    }
  yy781:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy781;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy741;
        if (yych <= '"')
          goto yy790;
        goto yy741;
      } else {
        if (yych <= 0xDF)
          goto yy783;
        if (yych <= 0xE0)
          goto yy784;
        goto yy785;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy789;
        if (yych <= 0xEF)
          goto yy785;
        goto yy786;
      } else {
        if (yych <= 0xF3)
          goto yy787;
        if (yych <= 0xF4)
          goto yy788;
        goto yy741;
      }
    }
  yy783:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy781;
    goto yy741;
  yy784:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy783;
    goto yy741;
  yy785:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy783;
    goto yy741;
  yy786:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy785;
    goto yy741;
  yy787:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy785;
    goto yy741;
  yy788:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0x8F)
      goto yy785;
    goto yy741;
  yy789:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0x9F)
      goto yy783;
    goto yy741;
  yy790:
    ++p;
    yych = *p;
    if (yych <= ' ') {
      if (yych <= 0x08)
        goto yy741;
      if (yych <= '\r')
        goto yy761;
      if (yych <= 0x1F)
        goto yy741;
      goto yy761;
    } else {
      if (yych <= '/') {
        if (yych <= '.')
          goto yy741;
        goto yy763;
      } else {
        if (yych == '>')
          goto yy755;
        goto yy741;
      }
    }
  yy791:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy779;
    goto yy741;
  yy792:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy791;
    goto yy741;
  yy793:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy791;
    goto yy741;
  yy794:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy793;
    goto yy741;
  yy795:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0xBF)
      goto yy793;
    goto yy741;
  yy796:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0x8F)
      goto yy793;
    goto yy741;
  yy797:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy741;
    if (yych <= 0x9F)
      goto yy791;
    goto yy741;
  yy798:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '"') {
        if (yych <= '\r') {
          if (yych <= 0x00)
            goto yy741;
          if (yych <= 0x08)
            goto yy770;
          goto yy798;
        } else {
          if (yych == ' ')
            goto yy798;
          if (yych <= '!')
            goto yy770;
          goto yy741;
        }
      } else {
        if (yych <= ':') {
          if (yych == '\'')
            goto yy741;
          if (yych <= '9')
            goto yy770;
        } else {
          if (yych <= ';')
            goto yy770;
          if (yych <= '=')
            goto yy741;
          if (yych <= '>')
            goto yy755;
          goto yy770;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= '`') {
          if (yych <= 'Z')
            goto yy800;
          if (yych <= '^')
            goto yy770;
          if (yych >= '`')
            goto yy741;
        } else {
          if (yych <= 'z')
            goto yy800;
          if (yych <= 0x7F)
            goto yy770;
          if (yych <= 0xC1)
            goto yy741;
          goto yy772;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy773;
          if (yych == 0xED)
            goto yy778;
          goto yy774;
        } else {
          if (yych <= 0xF0)
            goto yy775;
          if (yych <= 0xF3)
            goto yy776;
          if (yych <= 0xF4)
            goto yy777;
          goto yy741;
        }
      }
    }
  yy800:
    ++p;
    yych = *p;
    if (yych <= '>') {
      if (yych <= '&') {
        if (yych <= 0x1F) {
          if (yych <= 0x00)
            goto yy741;
          if (yych <= 0x08)
            goto yy770;
          if (yych >= 0x0E)
            goto yy770;
        } else {
          if (yych <= ' ')
            goto yy802;
          if (yych == '"')
            goto yy741;
          goto yy770;
        }
      } else {
        if (yych <= '/') {
          if (yych <= '\'')
            goto yy741;
          if (yych <= ',')
            goto yy770;
          if (yych <= '.')
            goto yy800;
          goto yy770;
        } else {
          if (yych <= ';') {
            if (yych <= ':')
              goto yy800;
            goto yy770;
          } else {
            if (yych <= '<')
              goto yy741;
            if (yych <= '=')
              goto yy768;
            goto yy755;
          }
        }
      }
    } else {
      if (yych <= 0xC1) {
        if (yych <= '_') {
          if (yych <= '@')
            goto yy770;
          if (yych <= 'Z')
            goto yy800;
          if (yych <= '^')
            goto yy770;
          goto yy800;
        } else {
          if (yych <= '`')
            goto yy741;
          if (yych <= 'z')
            goto yy800;
          if (yych <= 0x7F)
            goto yy770;
          goto yy741;
        }
      } else {
        if (yych <= 0xED) {
          if (yych <= 0xDF)
            goto yy772;
          if (yych <= 0xE0)
            goto yy773;
          if (yych <= 0xEC)
            goto yy774;
          goto yy778;
        } else {
          if (yych <= 0xF0) {
            if (yych <= 0xEF)
              goto yy774;
            goto yy775;
          } else {
            if (yych <= 0xF3)
              goto yy776;
            if (yych <= 0xF4)
              goto yy777;
            goto yy741;
          }
        }
      }
    }
  yy802:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '&') {
        if (yych <= 0x1F) {
          if (yych <= 0x00)
            goto yy741;
          if (yych <= 0x08)
            goto yy770;
          if (yych <= '\r')
            goto yy802;
          goto yy770;
        } else {
          if (yych <= ' ')
            goto yy802;
          if (yych == '"')
            goto yy741;
          goto yy770;
        }
      } else {
        if (yych <= ';') {
          if (yych <= '\'')
            goto yy741;
          if (yych == ':')
            goto yy800;
          goto yy770;
        } else {
          if (yych <= '<')
            goto yy741;
          if (yych <= '=')
            goto yy768;
          if (yych <= '>')
            goto yy755;
          goto yy770;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= '`') {
          if (yych <= 'Z')
            goto yy800;
          if (yych <= '^')
            goto yy770;
          if (yych <= '_')
            goto yy800;
          goto yy741;
        } else {
          if (yych <= 'z')
            goto yy800;
          if (yych <= 0x7F)
            goto yy770;
          if (yych <= 0xC1)
            goto yy741;
          goto yy772;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy773;
          if (yych == 0xED)
            goto yy778;
          goto yy774;
        } else {
          if (yych <= 0xF0)
            goto yy775;
          if (yych <= 0xF3)
            goto yy776;
          if (yych <= 0xF4)
            goto yy777;
          goto yy741;
        }
      }
    }
  yy804:
    ++p;
    yych = *p;
    if (yych <= '@') {
      if (yych <= '"') {
        if (yych <= '\r') {
          if (yych <= 0x00)
            goto yy741;
          if (yych <= 0x08)
            goto yy770;
          goto yy804;
        } else {
          if (yych == ' ')
            goto yy804;
          if (yych <= '!')
            goto yy770;
          goto yy781;
        }
      } else {
        if (yych <= ':') {
          if (yych == '\'')
            goto yy779;
          if (yych <= '9')
            goto yy770;
          goto yy800;
        } else {
          if (yych <= ';')
            goto yy770;
          if (yych <= '=')
            goto yy741;
          if (yych <= '>')
            goto yy755;
          goto yy770;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= '`') {
          if (yych <= 'Z')
            goto yy800;
          if (yych <= '^')
            goto yy770;
          if (yych <= '_')
            goto yy800;
          goto yy741;
        } else {
          if (yych <= 'z')
            goto yy800;
          if (yych <= 0x7F)
            goto yy770;
          if (yych <= 0xC1)
            goto yy741;
          goto yy772;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy773;
          if (yych == 0xED)
            goto yy778;
          goto yy774;
        } else {
          if (yych <= 0xF0)
            goto yy775;
          if (yych <= 0xF3)
            goto yy776;
          if (yych <= 0xF4)
            goto yy777;
          goto yy741;
        }
      }
    }
  }
}

// Try to match an HTML block end line of type 1
bufsize_t _scan_html_block_end_1(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= 0xDF) {
      if (yych <= ';') {
        if (yych != '\n')
          goto yy809;
      } else {
        if (yych <= '<')
          goto yy810;
        if (yych <= 0x7F)
          goto yy809;
        if (yych >= 0xC2)
          goto yy811;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy813;
        if (yych == 0xED)
          goto yy818;
        goto yy814;
      } else {
        if (yych <= 0xF0)
          goto yy815;
        if (yych <= 0xF3)
          goto yy816;
        if (yych <= 0xF4)
          goto yy817;
      }
    }
  yy808 : { return 0; }
  yy809:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych == '\n')
        goto yy808;
      goto yy823;
    } else {
      if (yych <= 0xC1)
        goto yy808;
      if (yych <= 0xF4)
        goto yy823;
      goto yy808;
    }
  yy810:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= '/') {
      if (yych == '\n')
        goto yy808;
      if (yych <= '.')
        goto yy823;
      goto yy819;
    } else {
      if (yych <= 0x7F)
        goto yy823;
      if (yych <= 0xC1)
        goto yy808;
      if (yych <= 0xF4)
        goto yy823;
      goto yy808;
    }
  yy811:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy812;
    if (yych <= 0xBF)
      goto yy809;
  yy812:
    p = marker;
    if (yyaccept == 0) {
      goto yy808;
    } else {
      goto yy840;
    }
  yy813:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy812;
    if (yych <= 0xBF)
      goto yy811;
    goto yy812;
  yy814:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy812;
    if (yych <= 0xBF)
      goto yy811;
    goto yy812;
  yy815:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy812;
    if (yych <= 0xBF)
      goto yy814;
    goto yy812;
  yy816:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy812;
    if (yych <= 0xBF)
      goto yy814;
    goto yy812;
  yy817:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy812;
    if (yych <= 0x8F)
      goto yy814;
    goto yy812;
  yy818:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy812;
    if (yych <= 0x9F)
      goto yy811;
    goto yy812;
  yy819:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 's') {
      if (yych <= 'R') {
        if (yych <= '\n') {
          if (yych <= '\t')
            goto yy822;
          goto yy812;
        } else {
          if (yych == 'P')
            goto yy831;
          goto yy822;
        }
      } else {
        if (yych <= 'o') {
          if (yych <= 'S')
            goto yy832;
          goto yy822;
        } else {
          if (yych <= 'p')
            goto yy831;
          if (yych <= 'r')
            goto yy822;
          goto yy832;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= 0x7F)
            goto yy822;
          goto yy812;
        } else {
          if (yych <= 0xDF)
            goto yy824;
          if (yych <= 0xE0)
            goto yy825;
          goto yy826;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy830;
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
  yy820:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xDF) {
      if (yych <= '.') {
        if (yych == '\n')
          goto yy812;
      } else {
        if (yych <= '/')
          goto yy819;
        if (yych <= 0x7F)
          goto yy822;
        if (yych <= 0xC1)
          goto yy812;
        goto yy824;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy825;
        if (yych == 0xED)
          goto yy830;
        goto yy826;
      } else {
        if (yych <= 0xF0)
          goto yy827;
        if (yych <= 0xF3)
          goto yy828;
        if (yych <= 0xF4)
          goto yy829;
        goto yy812;
      }
    }
  yy822:
    ++p;
    yych = *p;
  yy823:
    if (yybm[0 + yych] & 128) {
      goto yy822;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy812;
        if (yych <= '<')
          goto yy820;
        goto yy812;
      } else {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        goto yy826;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy830;
        if (yych <= 0xEF)
          goto yy826;
        goto yy827;
      } else {
        if (yych <= 0xF3)
          goto yy828;
        if (yych <= 0xF4)
          goto yy829;
        goto yy812;
      }
    }
  yy824:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy812;
    if (yych <= 0xBF)
      goto yy822;
    goto yy812;
  yy825:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy812;
    if (yych <= 0xBF)
      goto yy824;
    goto yy812;
  yy826:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy812;
    if (yych <= 0xBF)
      goto yy824;
    goto yy812;
  yy827:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy812;
    if (yych <= 0xBF)
      goto yy826;
    goto yy812;
  yy828:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy812;
    if (yych <= 0xBF)
      goto yy826;
    goto yy812;
  yy829:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy812;
    if (yych <= 0x8F)
      goto yy826;
    goto yy812;
  yy830:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy812;
    if (yych <= 0x9F)
      goto yy824;
    goto yy812;
  yy831:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xC1) {
      if (yych <= 'R') {
        if (yych == '\n')
          goto yy812;
        if (yych <= 'Q')
          goto yy822;
        goto yy843;
      } else {
        if (yych == 'r')
          goto yy843;
        if (yych <= 0x7F)
          goto yy822;
        goto yy812;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        if (yych <= 0xEC)
          goto yy826;
        goto yy830;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
  yy832:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 't') {
      if (yych <= 'S') {
        if (yych <= '\n') {
          if (yych <= '\t')
            goto yy822;
          goto yy812;
        } else {
          if (yych == 'C')
            goto yy834;
          goto yy822;
        }
      } else {
        if (yych <= 'b') {
          if (yych >= 'U')
            goto yy822;
        } else {
          if (yych <= 'c')
            goto yy834;
          if (yych <= 's')
            goto yy822;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= 0x7F)
            goto yy822;
          goto yy812;
        } else {
          if (yych <= 0xDF)
            goto yy824;
          if (yych <= 0xE0)
            goto yy825;
          goto yy826;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy830;
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xC1) {
      if (yych <= 'Y') {
        if (yych == '\n')
          goto yy812;
        if (yych <= 'X')
          goto yy822;
        goto yy841;
      } else {
        if (yych == 'y')
          goto yy841;
        if (yych <= 0x7F)
          goto yy822;
        goto yy812;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        if (yych <= 0xEC)
          goto yy826;
        goto yy830;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
  yy834:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xC1) {
      if (yych <= 'R') {
        if (yych == '\n')
          goto yy812;
        if (yych <= 'Q')
          goto yy822;
      } else {
        if (yych == 'r')
          goto yy835;
        if (yych <= 0x7F)
          goto yy822;
        goto yy812;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        if (yych <= 0xEC)
          goto yy826;
        goto yy830;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
  yy835:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xC1) {
      if (yych <= 'I') {
        if (yych == '\n')
          goto yy812;
        if (yych <= 'H')
          goto yy822;
      } else {
        if (yych == 'i')
          goto yy836;
        if (yych <= 0x7F)
          goto yy822;
        goto yy812;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        if (yych <= 0xEC)
          goto yy826;
        goto yy830;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
  yy836:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xC1) {
      if (yych <= 'P') {
        if (yych == '\n')
          goto yy812;
        if (yych <= 'O')
          goto yy822;
      } else {
        if (yych == 'p')
          goto yy837;
        if (yych <= 0x7F)
          goto yy822;
        goto yy812;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        if (yych <= 0xEC)
          goto yy826;
        goto yy830;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
  yy837:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xC1) {
      if (yych <= 'T') {
        if (yych == '\n')
          goto yy812;
        if (yych <= 'S')
          goto yy822;
      } else {
        if (yych == 't')
          goto yy838;
        if (yych <= 0x7F)
          goto yy822;
        goto yy812;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        if (yych <= 0xEC)
          goto yy826;
        goto yy830;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
  yy838:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xDF) {
      if (yych <= '=') {
        if (yych == '\n')
          goto yy812;
        goto yy822;
      } else {
        if (yych <= '>')
          goto yy839;
        if (yych <= 0x7F)
          goto yy822;
        if (yych <= 0xC1)
          goto yy812;
        goto yy824;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy825;
        if (yych == 0xED)
          goto yy830;
        goto yy826;
      } else {
        if (yych <= 0xF0)
          goto yy827;
        if (yych <= 0xF3)
          goto yy828;
        if (yych <= 0xF4)
          goto yy829;
        goto yy812;
      }
    }
  yy839:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy822;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy840;
        if (yych <= '<')
          goto yy820;
      } else {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        goto yy826;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy830;
        if (yych <= 0xEF)
          goto yy826;
        goto yy827;
      } else {
        if (yych <= 0xF3)
          goto yy828;
        if (yych <= 0xF4)
          goto yy829;
      }
    }
  yy840 : { return (bufsize_t)(p - start); }
  yy841:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xC1) {
      if (yych <= 'L') {
        if (yych == '\n')
          goto yy812;
        if (yych <= 'K')
          goto yy822;
      } else {
        if (yych == 'l')
          goto yy842;
        if (yych <= 0x7F)
          goto yy822;
        goto yy812;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        if (yych <= 0xEC)
          goto yy826;
        goto yy830;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
  yy842:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xC1) {
      if (yych <= 'E') {
        if (yych == '\n')
          goto yy812;
        if (yych <= 'D')
          goto yy822;
        goto yy838;
      } else {
        if (yych == 'e')
          goto yy838;
        if (yych <= 0x7F)
          goto yy822;
        goto yy812;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        if (yych <= 0xEC)
          goto yy826;
        goto yy830;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
  yy843:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy820;
    }
    if (yych <= 0xC1) {
      if (yych <= 'E') {
        if (yych == '\n')
          goto yy812;
        if (yych <= 'D')
          goto yy822;
        goto yy838;
      } else {
        if (yych == 'e')
          goto yy838;
        if (yych <= 0x7F)
          goto yy822;
        goto yy812;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy824;
        if (yych <= 0xE0)
          goto yy825;
        if (yych <= 0xEC)
          goto yy826;
        goto yy830;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy826;
          goto yy827;
        } else {
          if (yych <= 0xF3)
            goto yy828;
          if (yych <= 0xF4)
            goto yy829;
          goto yy812;
        }
      }
    }
  }
}

// Try to match an HTML block end line of type 2
bufsize_t _scan_html_block_end_2(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= 0xDF) {
      if (yych <= ',') {
        if (yych != '\n')
          goto yy847;
      } else {
        if (yych <= '-')
          goto yy848;
        if (yych <= 0x7F)
          goto yy847;
        if (yych >= 0xC2)
          goto yy849;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy851;
        if (yych == 0xED)
          goto yy856;
        goto yy852;
      } else {
        if (yych <= 0xF0)
          goto yy853;
        if (yych <= 0xF3)
          goto yy854;
        if (yych <= 0xF4)
          goto yy855;
      }
    }
  yy846 : { return 0; }
  yy847:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych == '\n')
        goto yy846;
      goto yy860;
    } else {
      if (yych <= 0xC1)
        goto yy846;
      if (yych <= 0xF4)
        goto yy860;
      goto yy846;
    }
  yy848:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 64) {
      goto yy857;
    }
    if (yych <= 0x7F) {
      if (yych == '\n')
        goto yy846;
      goto yy860;
    } else {
      if (yych <= 0xC1)
        goto yy846;
      if (yych <= 0xF4)
        goto yy860;
      goto yy846;
    }
  yy849:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy850;
    if (yych <= 0xBF)
      goto yy847;
  yy850:
    p = marker;
    if (yyaccept == 0) {
      goto yy846;
    } else {
      goto yy870;
    }
  yy851:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy850;
    if (yych <= 0xBF)
      goto yy849;
    goto yy850;
  yy852:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy850;
    if (yych <= 0xBF)
      goto yy849;
    goto yy850;
  yy853:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy850;
    if (yych <= 0xBF)
      goto yy852;
    goto yy850;
  yy854:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy850;
    if (yych <= 0xBF)
      goto yy852;
    goto yy850;
  yy855:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy850;
    if (yych <= 0x8F)
      goto yy852;
    goto yy850;
  yy856:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy850;
    if (yych <= 0x9F)
      goto yy849;
    goto yy850;
  yy857:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy857;
    }
    if (yych <= 0xDF) {
      if (yych <= '=') {
        if (yych == '\n')
          goto yy850;
      } else {
        if (yych <= '>')
          goto yy869;
        if (yych <= 0x7F)
          goto yy859;
        if (yych <= 0xC1)
          goto yy850;
        goto yy861;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy862;
        if (yych == 0xED)
          goto yy867;
        goto yy863;
      } else {
        if (yych <= 0xF0)
          goto yy864;
        if (yych <= 0xF3)
          goto yy865;
        if (yych <= 0xF4)
          goto yy866;
        goto yy850;
      }
    }
  yy859:
    ++p;
    yych = *p;
  yy860:
    if (yybm[0 + yych] & 128) {
      goto yy859;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy850;
        if (yych <= '-')
          goto yy868;
        goto yy850;
      } else {
        if (yych <= 0xDF)
          goto yy861;
        if (yych <= 0xE0)
          goto yy862;
        goto yy863;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy867;
        if (yych <= 0xEF)
          goto yy863;
        goto yy864;
      } else {
        if (yych <= 0xF3)
          goto yy865;
        if (yych <= 0xF4)
          goto yy866;
        goto yy850;
      }
    }
  yy861:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy850;
    if (yych <= 0xBF)
      goto yy859;
    goto yy850;
  yy862:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy850;
    if (yych <= 0xBF)
      goto yy861;
    goto yy850;
  yy863:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy850;
    if (yych <= 0xBF)
      goto yy861;
    goto yy850;
  yy864:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy850;
    if (yych <= 0xBF)
      goto yy863;
    goto yy850;
  yy865:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy850;
    if (yych <= 0xBF)
      goto yy863;
    goto yy850;
  yy866:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy850;
    if (yych <= 0x8F)
      goto yy863;
    goto yy850;
  yy867:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy850;
    if (yych <= 0x9F)
      goto yy861;
    goto yy850;
  yy868:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy859;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy850;
        if (yych <= '-')
          goto yy857;
        goto yy850;
      } else {
        if (yych <= 0xDF)
          goto yy861;
        if (yych <= 0xE0)
          goto yy862;
        goto yy863;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy867;
        if (yych <= 0xEF)
          goto yy863;
        goto yy864;
      } else {
        if (yych <= 0xF3)
          goto yy865;
        if (yych <= 0xF4)
          goto yy866;
        goto yy850;
      }
    }
  yy869:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy859;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy870;
        if (yych <= '-')
          goto yy868;
      } else {
        if (yych <= 0xDF)
          goto yy861;
        if (yych <= 0xE0)
          goto yy862;
        goto yy863;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy867;
        if (yych <= 0xEF)
          goto yy863;
        goto yy864;
      } else {
        if (yych <= 0xF3)
          goto yy865;
        if (yych <= 0xF4)
          goto yy866;
      }
    }
  yy870 : { return (bufsize_t)(p - start); }
  }
}

// Try to match an HTML block end line of type 3
bufsize_t _scan_html_block_end_3(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= 0xDF) {
      if (yych <= '>') {
        if (yych != '\n')
          goto yy874;
      } else {
        if (yych <= '?')
          goto yy875;
        if (yych <= 0x7F)
          goto yy874;
        if (yych >= 0xC2)
          goto yy876;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy878;
        if (yych == 0xED)
          goto yy883;
        goto yy879;
      } else {
        if (yych <= 0xF0)
          goto yy880;
        if (yych <= 0xF3)
          goto yy881;
        if (yych <= 0xF4)
          goto yy882;
      }
    }
  yy873 : { return 0; }
  yy874:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych == '\n')
        goto yy873;
      goto yy889;
    } else {
      if (yych <= 0xC1)
        goto yy873;
      if (yych <= 0xF4)
        goto yy889;
      goto yy873;
    }
  yy875:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= '>') {
      if (yych == '\n')
        goto yy873;
      if (yych <= '=')
        goto yy889;
      goto yy884;
    } else {
      if (yych <= 0x7F)
        goto yy889;
      if (yych <= 0xC1)
        goto yy873;
      if (yych <= 0xF4)
        goto yy889;
      goto yy873;
    }
  yy876:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy877;
    if (yych <= 0xBF)
      goto yy874;
  yy877:
    p = marker;
    if (yyaccept == 0) {
      goto yy873;
    } else {
      goto yy885;
    }
  yy878:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy877;
    if (yych <= 0xBF)
      goto yy876;
    goto yy877;
  yy879:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy877;
    if (yych <= 0xBF)
      goto yy876;
    goto yy877;
  yy880:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy877;
    if (yych <= 0xBF)
      goto yy879;
    goto yy877;
  yy881:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy877;
    if (yych <= 0xBF)
      goto yy879;
    goto yy877;
  yy882:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy877;
    if (yych <= 0x8F)
      goto yy879;
    goto yy877;
  yy883:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy877;
    if (yych <= 0x9F)
      goto yy876;
    goto yy877;
  yy884:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy888;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy885;
        if (yych <= '?')
          goto yy886;
      } else {
        if (yych <= 0xDF)
          goto yy890;
        if (yych <= 0xE0)
          goto yy891;
        goto yy892;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy896;
        if (yych <= 0xEF)
          goto yy892;
        goto yy893;
      } else {
        if (yych <= 0xF3)
          goto yy894;
        if (yych <= 0xF4)
          goto yy895;
      }
    }
  yy885 : { return (bufsize_t)(p - start); }
  yy886:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy886;
    }
    if (yych <= 0xDF) {
      if (yych <= '=') {
        if (yych == '\n')
          goto yy877;
      } else {
        if (yych <= '>')
          goto yy884;
        if (yych <= 0x7F)
          goto yy888;
        if (yych <= 0xC1)
          goto yy877;
        goto yy890;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy891;
        if (yych == 0xED)
          goto yy896;
        goto yy892;
      } else {
        if (yych <= 0xF0)
          goto yy893;
        if (yych <= 0xF3)
          goto yy894;
        if (yych <= 0xF4)
          goto yy895;
        goto yy877;
      }
    }
  yy888:
    ++p;
    yych = *p;
  yy889:
    if (yybm[0 + yych] & 128) {
      goto yy888;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy877;
        if (yych <= '?')
          goto yy886;
        goto yy877;
      } else {
        if (yych <= 0xDF)
          goto yy890;
        if (yych <= 0xE0)
          goto yy891;
        goto yy892;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy896;
        if (yych <= 0xEF)
          goto yy892;
        goto yy893;
      } else {
        if (yych <= 0xF3)
          goto yy894;
        if (yych <= 0xF4)
          goto yy895;
        goto yy877;
      }
    }
  yy890:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy877;
    if (yych <= 0xBF)
      goto yy888;
    goto yy877;
  yy891:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy877;
    if (yych <= 0xBF)
      goto yy890;
    goto yy877;
  yy892:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy877;
    if (yych <= 0xBF)
      goto yy890;
    goto yy877;
  yy893:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy877;
    if (yych <= 0xBF)
      goto yy892;
    goto yy877;
  yy894:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy877;
    if (yych <= 0xBF)
      goto yy892;
    goto yy877;
  yy895:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy877;
    if (yych <= 0x8F)
      goto yy892;
    goto yy877;
  yy896:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy877;
    if (yych <= 0x9F)
      goto yy890;
    goto yy877;
  }
}

// Try to match an HTML block end line of type 4
bufsize_t _scan_html_block_end_4(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= 0xDF) {
      if (yych <= '=') {
        if (yych != '\n')
          goto yy900;
      } else {
        if (yych <= '>')
          goto yy901;
        if (yych <= 0x7F)
          goto yy900;
        if (yych >= 0xC2)
          goto yy903;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy905;
        if (yych == 0xED)
          goto yy910;
        goto yy906;
      } else {
        if (yych <= 0xF0)
          goto yy907;
        if (yych <= 0xF3)
          goto yy908;
        if (yych <= 0xF4)
          goto yy909;
      }
    }
  yy899 : { return 0; }
  yy900:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych == '\n')
        goto yy899;
      goto yy914;
    } else {
      if (yych <= 0xC1)
        goto yy899;
      if (yych <= 0xF4)
        goto yy914;
      goto yy899;
    }
  yy901:
    yyaccept = 1;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych != '\n')
        goto yy914;
    } else {
      if (yych <= 0xC1)
        goto yy902;
      if (yych <= 0xF4)
        goto yy914;
    }
  yy902 : { return (bufsize_t)(p - start); }
  yy903:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy904;
    if (yych <= 0xBF)
      goto yy900;
  yy904:
    p = marker;
    if (yyaccept == 0) {
      goto yy899;
    } else {
      goto yy902;
    }
  yy905:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy904;
    if (yych <= 0xBF)
      goto yy903;
    goto yy904;
  yy906:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy904;
    if (yych <= 0xBF)
      goto yy903;
    goto yy904;
  yy907:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy904;
    if (yych <= 0xBF)
      goto yy906;
    goto yy904;
  yy908:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy904;
    if (yych <= 0xBF)
      goto yy906;
    goto yy904;
  yy909:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy904;
    if (yych <= 0x8F)
      goto yy906;
    goto yy904;
  yy910:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy904;
    if (yych <= 0x9F)
      goto yy903;
    goto yy904;
  yy911:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy913;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy902;
        if (yych <= '>')
          goto yy911;
        goto yy902;
      } else {
        if (yych <= 0xDF)
          goto yy915;
        if (yych <= 0xE0)
          goto yy916;
        goto yy917;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy921;
        if (yych <= 0xEF)
          goto yy917;
        goto yy918;
      } else {
        if (yych <= 0xF3)
          goto yy919;
        if (yych <= 0xF4)
          goto yy920;
        goto yy902;
      }
    }
  yy913:
    ++p;
    yych = *p;
  yy914:
    if (yybm[0 + yych] & 128) {
      goto yy913;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy904;
        if (yych <= '>')
          goto yy911;
        goto yy904;
      } else {
        if (yych <= 0xDF)
          goto yy915;
        if (yych <= 0xE0)
          goto yy916;
        goto yy917;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy921;
        if (yych <= 0xEF)
          goto yy917;
        goto yy918;
      } else {
        if (yych <= 0xF3)
          goto yy919;
        if (yych <= 0xF4)
          goto yy920;
        goto yy904;
      }
    }
  yy915:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy904;
    if (yych <= 0xBF)
      goto yy913;
    goto yy904;
  yy916:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy904;
    if (yych <= 0xBF)
      goto yy915;
    goto yy904;
  yy917:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy904;
    if (yych <= 0xBF)
      goto yy915;
    goto yy904;
  yy918:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy904;
    if (yych <= 0xBF)
      goto yy917;
    goto yy904;
  yy919:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy904;
    if (yych <= 0xBF)
      goto yy917;
    goto yy904;
  yy920:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy904;
    if (yych <= 0x8F)
      goto yy917;
    goto yy904;
  yy921:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy904;
    if (yych <= 0x9F)
      goto yy915;
    goto yy904;
  }
}

// Try to match an HTML block end line of type 5
bufsize_t _scan_html_block_end_5(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 0,   128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 64,  128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= 0xDF) {
      if (yych <= '\\') {
        if (yych != '\n')
          goto yy925;
      } else {
        if (yych <= ']')
          goto yy926;
        if (yych <= 0x7F)
          goto yy925;
        if (yych >= 0xC2)
          goto yy927;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy929;
        if (yych == 0xED)
          goto yy934;
        goto yy930;
      } else {
        if (yych <= 0xF0)
          goto yy931;
        if (yych <= 0xF3)
          goto yy932;
        if (yych <= 0xF4)
          goto yy933;
      }
    }
  yy924 : { return 0; }
  yy925:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x7F) {
      if (yych == '\n')
        goto yy924;
      goto yy938;
    } else {
      if (yych <= 0xC1)
        goto yy924;
      if (yych <= 0xF4)
        goto yy938;
      goto yy924;
    }
  yy926:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 64) {
      goto yy935;
    }
    if (yych <= 0x7F) {
      if (yych == '\n')
        goto yy924;
      goto yy938;
    } else {
      if (yych <= 0xC1)
        goto yy924;
      if (yych <= 0xF4)
        goto yy938;
      goto yy924;
    }
  yy927:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy928;
    if (yych <= 0xBF)
      goto yy925;
  yy928:
    p = marker;
    if (yyaccept == 0) {
      goto yy924;
    } else {
      goto yy948;
    }
  yy929:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy928;
    if (yych <= 0xBF)
      goto yy927;
    goto yy928;
  yy930:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy928;
    if (yych <= 0xBF)
      goto yy927;
    goto yy928;
  yy931:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy928;
    if (yych <= 0xBF)
      goto yy930;
    goto yy928;
  yy932:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy928;
    if (yych <= 0xBF)
      goto yy930;
    goto yy928;
  yy933:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy928;
    if (yych <= 0x8F)
      goto yy930;
    goto yy928;
  yy934:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy928;
    if (yych <= 0x9F)
      goto yy927;
    goto yy928;
  yy935:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy935;
    }
    if (yych <= 0xDF) {
      if (yych <= '=') {
        if (yych == '\n')
          goto yy928;
      } else {
        if (yych <= '>')
          goto yy947;
        if (yych <= 0x7F)
          goto yy937;
        if (yych <= 0xC1)
          goto yy928;
        goto yy939;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy940;
        if (yych == 0xED)
          goto yy945;
        goto yy941;
      } else {
        if (yych <= 0xF0)
          goto yy942;
        if (yych <= 0xF3)
          goto yy943;
        if (yych <= 0xF4)
          goto yy944;
        goto yy928;
      }
    }
  yy937:
    ++p;
    yych = *p;
  yy938:
    if (yybm[0 + yych] & 128) {
      goto yy937;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy928;
        if (yych <= ']')
          goto yy946;
        goto yy928;
      } else {
        if (yych <= 0xDF)
          goto yy939;
        if (yych <= 0xE0)
          goto yy940;
        goto yy941;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy945;
        if (yych <= 0xEF)
          goto yy941;
        goto yy942;
      } else {
        if (yych <= 0xF3)
          goto yy943;
        if (yych <= 0xF4)
          goto yy944;
        goto yy928;
      }
    }
  yy939:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy928;
    if (yych <= 0xBF)
      goto yy937;
    goto yy928;
  yy940:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy928;
    if (yych <= 0xBF)
      goto yy939;
    goto yy928;
  yy941:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy928;
    if (yych <= 0xBF)
      goto yy939;
    goto yy928;
  yy942:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy928;
    if (yych <= 0xBF)
      goto yy941;
    goto yy928;
  yy943:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy928;
    if (yych <= 0xBF)
      goto yy941;
    goto yy928;
  yy944:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy928;
    if (yych <= 0x8F)
      goto yy941;
    goto yy928;
  yy945:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy928;
    if (yych <= 0x9F)
      goto yy939;
    goto yy928;
  yy946:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy937;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy928;
        if (yych <= ']')
          goto yy935;
        goto yy928;
      } else {
        if (yych <= 0xDF)
          goto yy939;
        if (yych <= 0xE0)
          goto yy940;
        goto yy941;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy945;
        if (yych <= 0xEF)
          goto yy941;
        goto yy942;
      } else {
        if (yych <= 0xF3)
          goto yy943;
        if (yych <= 0xF4)
          goto yy944;
        goto yy928;
      }
    }
  yy947:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy937;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= '\n')
          goto yy948;
        if (yych <= ']')
          goto yy946;
      } else {
        if (yych <= 0xDF)
          goto yy939;
        if (yych <= 0xE0)
          goto yy940;
        goto yy941;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy945;
        if (yych <= 0xEF)
          goto yy941;
        goto yy942;
      } else {
        if (yych <= 0xF3)
          goto yy943;
        if (yych <= 0xF4)
          goto yy944;
      }
    }
  yy948 : { return (bufsize_t)(p - start); }
  }
}

// Try to match a URL in a link or reference, return number of chars matched.
// This may optionally be contained in <..>; otherwise
// whitespace and unbalanced right parentheses aren't allowed.
// Newlines aren't ever allowed.
bufsize_t _scan_link_url(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        0,   128, 128, 128, 128, 128, 128, 128, 128, 0,   8,   128, 128, 8,
        128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128, 128,
        128, 128, 128, 128, 8,   224, 224, 224, 224, 224, 224, 224, 128, 128,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 32,  224, 32,  224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= '[') {
      if (yych <= ' ') {
        if (yych <= '\f') {
          if (yych == '\n')
            goto yy952;
          goto yy968;
        } else {
          if (yych <= '\r')
            goto yy954;
          if (yych <= 0x1F)
            goto yy968;
          goto yy954;
        }
      } else {
        if (yych <= ')') {
          if (yych <= '\'')
            goto yy956;
          if (yych <= '(')
            goto yy966;
          goto yy968;
        } else {
          if (yych == '<')
            goto yy955;
          goto yy956;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= '\\')
            goto yy965;
          if (yych <= 0x7F)
            goto yy956;
        } else {
          if (yych <= 0xDF)
            goto yy957;
          if (yych <= 0xE0)
            goto yy959;
          goto yy960;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy964;
          if (yych <= 0xEF)
            goto yy960;
          goto yy961;
        } else {
          if (yych <= 0xF3)
            goto yy962;
          if (yych <= 0xF4)
            goto yy963;
        }
      }
    }
  yy951 : { return (bufsize_t)(p - start); }
  yy952:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
  yy953:
    if (yybm[0 + yych] & 8) {
      goto yy952;
    }
    if (yych <= 0x7F) {
      if (yych <= ')') {
        if (yych <= 0x1F)
          goto yy951;
        if (yych <= '\'')
          goto yy980;
        if (yych <= '(')
          goto yy971;
        goto yy951;
      } else {
        if (yych <= '<') {
          if (yych <= ';')
            goto yy980;
          goto yy1016;
        } else {
          if (yych == '\\')
            goto yy982;
          goto yy980;
        }
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF) {
          if (yych <= 0xC1)
            goto yy951;
          goto yy983;
        } else {
          if (yych <= 0xE0)
            goto yy984;
          if (yych <= 0xEC)
            goto yy985;
          goto yy989;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy985;
          goto yy986;
        } else {
          if (yych <= 0xF3)
            goto yy987;
          if (yych <= 0xF4)
            goto yy988;
          goto yy951;
        }
      }
    }
  yy954:
    yyaccept = 0;
    yych = *(marker = ++p);
    goto yy953;
  yy955:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 64) {
      goto yy1016;
    }
    if (yych <= '>') {
      if (yych <= '\r') {
        if (yych <= 0x08) {
          if (yych <= 0x00)
            goto yy951;
          goto yy1029;
        } else {
          if (yych <= '\n')
            goto yy951;
          if (yych <= '\f')
            goto yy1029;
          goto yy951;
        }
      } else {
        if (yych <= '(') {
          if (yych <= 0x1F)
            goto yy1029;
          if (yych <= ' ')
            goto yy951;
          goto yy1027;
        } else {
          if (yych <= ')')
            goto yy1029;
          if (yych <= '<')
            goto yy980;
          goto yy1018;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= '\\')
            goto yy1015;
          goto yy951;
        } else {
          if (yych <= 0xDF)
            goto yy1020;
          if (yych <= 0xE0)
            goto yy1021;
          goto yy1022;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy1026;
          if (yych <= 0xEF)
            goto yy1022;
          goto yy1023;
        } else {
          if (yych <= 0xF3)
            goto yy1024;
          if (yych <= 0xF4)
            goto yy1025;
          goto yy951;
        }
      }
    }
  yy956:
    yyaccept = 0;
    yych = *(marker = ++p);
    goto yy981;
  yy957:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy956;
  yy958:
    p = marker;
    if (yyaccept <= 1) {
      if (yyaccept == 0) {
        goto yy951;
      } else {
        goto yy967;
      }
    } else {
      goto yy1019;
    }
  yy959:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy957;
    goto yy958;
  yy960:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy957;
    goto yy958;
  yy961:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy960;
    goto yy958;
  yy962:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy960;
    goto yy958;
  yy963:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy960;
    goto yy958;
  yy964:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy957;
    goto yy958;
  yy965:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0xDF) {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy980;
        if (yych <= '\r')
          goto yy951;
        goto yy980;
      } else {
        if (yych <= ' ')
          goto yy951;
        if (yych <= 0x7F)
          goto yy980;
        if (yych <= 0xC1)
          goto yy951;
        goto yy990;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy991;
        if (yych == 0xED)
          goto yy996;
        goto yy992;
      } else {
        if (yych <= 0xF0)
          goto yy993;
        if (yych <= 0xF3)
          goto yy994;
        if (yych <= 0xF4)
          goto yy995;
        goto yy951;
      }
    }
  yy966:
    yyaccept = 1;
    yych = *(marker = ++p);
    if (yych <= '(') {
      if (yych <= ' ')
        goto yy967;
      if (yych <= '\'')
        goto yy972;
    } else {
      if (yych <= 0x7F)
        goto yy972;
      if (yych <= 0xC1)
        goto yy967;
      if (yych <= 0xF4)
        goto yy972;
    }
  yy967 : { return 0; }
  yy968:
    yych = *++p;
    goto yy967;
  yy969:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 16) {
      goto yy969;
    }
    if (yych <= 0xE0) {
      if (yych <= ')') {
        if (yych <= ' ')
          goto yy958;
        if (yych >= ')')
          goto yy997;
      } else {
        if (yych <= 0x7F)
          goto yy971;
        if (yych <= 0xC1)
          goto yy958;
        if (yych <= 0xDF)
          goto yy973;
        goto yy974;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy979;
        goto yy975;
      } else {
        if (yych <= 0xF0)
          goto yy976;
        if (yych <= 0xF3)
          goto yy977;
        if (yych <= 0xF4)
          goto yy978;
        goto yy958;
      }
    }
  yy971:
    ++p;
    yych = *p;
  yy972:
    if (yybm[0 + yych] & 32) {
      goto yy971;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= '(')
          goto yy958;
        if (yych <= ')')
          goto yy980;
        goto yy969;
      } else {
        if (yych <= 0xC1)
          goto yy958;
        if (yych >= 0xE0)
          goto yy974;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy979;
        goto yy975;
      } else {
        if (yych <= 0xF0)
          goto yy976;
        if (yych <= 0xF3)
          goto yy977;
        if (yych <= 0xF4)
          goto yy978;
        goto yy958;
      }
    }
  yy973:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy971;
    goto yy958;
  yy974:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy973;
    goto yy958;
  yy975:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy973;
    goto yy958;
  yy976:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy975;
    goto yy958;
  yy977:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy975;
    goto yy958;
  yy978:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy975;
    goto yy958;
  yy979:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy973;
    goto yy958;
  yy980:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
  yy981:
    if (yych <= 0xC1) {
      if (yych <= ')') {
        if (yych <= ' ')
          goto yy951;
        if (yych <= '\'')
          goto yy980;
        if (yych <= '(')
          goto yy971;
        goto yy951;
      } else {
        if (yych == '\\')
          goto yy982;
        if (yych <= 0x7F)
          goto yy980;
        goto yy951;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy983;
        if (yych <= 0xE0)
          goto yy984;
        if (yych <= 0xEC)
          goto yy985;
        goto yy989;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy985;
          goto yy986;
        } else {
          if (yych <= 0xF3)
            goto yy987;
          if (yych <= 0xF4)
            goto yy988;
          goto yy951;
        }
      }
    }
  yy982:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yych <= 0xDF) {
      if (yych <= 0x1F) {
        if (yych <= 0x08)
          goto yy980;
        if (yych <= '\r')
          goto yy951;
        goto yy980;
      } else {
        if (yych <= ' ')
          goto yy951;
        if (yych <= 0x7F)
          goto yy980;
        if (yych <= 0xC1)
          goto yy951;
        goto yy990;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy991;
        if (yych == 0xED)
          goto yy996;
        goto yy992;
      } else {
        if (yych <= 0xF0)
          goto yy993;
        if (yych <= 0xF3)
          goto yy994;
        if (yych <= 0xF4)
          goto yy995;
        goto yy951;
      }
    }
  yy983:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy980;
    goto yy958;
  yy984:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy983;
    goto yy958;
  yy985:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy983;
    goto yy958;
  yy986:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy985;
    goto yy958;
  yy987:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy985;
    goto yy958;
  yy988:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy985;
    goto yy958;
  yy989:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy983;
    goto yy958;
  yy990:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy980;
    goto yy958;
  yy991:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy990;
    goto yy958;
  yy992:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy990;
    goto yy958;
  yy993:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy992;
    goto yy958;
  yy994:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy992;
    goto yy958;
  yy995:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy992;
    goto yy958;
  yy996:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy990;
    goto yy958;
  yy997:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
  yy998:
    if (yych <= 0xC1) {
      if (yych <= ')') {
        if (yych <= ' ')
          goto yy951;
        if (yych <= '\'')
          goto yy997;
        if (yych <= '(')
          goto yy971;
        goto yy980;
      } else {
        if (yych == '\\')
          goto yy999;
        if (yych <= 0x7F)
          goto yy997;
        goto yy951;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy1000;
        if (yych <= 0xE0)
          goto yy1001;
        if (yych <= 0xEC)
          goto yy1002;
        goto yy1006;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy1002;
          goto yy1003;
        } else {
          if (yych <= 0xF3)
            goto yy1004;
          if (yych <= 0xF4)
            goto yy1005;
          goto yy951;
        }
      }
    }
  yy999:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yych <= 0xC1) {
      if (yych <= ' ') {
        if (yych <= 0x08)
          goto yy980;
        if (yych <= '\r')
          goto yy951;
        if (yych <= 0x1F)
          goto yy980;
        goto yy951;
      } else {
        if (yych == '\\')
          goto yy1007;
        if (yych <= 0x7F)
          goto yy997;
        goto yy951;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy1008;
        if (yych <= 0xE0)
          goto yy1009;
        if (yych <= 0xEC)
          goto yy1010;
        goto yy1014;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy1010;
          goto yy1011;
        } else {
          if (yych <= 0xF3)
            goto yy1012;
          if (yych <= 0xF4)
            goto yy1013;
          goto yy951;
        }
      }
    }
  yy1000:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy997;
    goto yy958;
  yy1001:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1000;
    goto yy958;
  yy1002:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1000;
    goto yy958;
  yy1003:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1002;
    goto yy958;
  yy1004:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1002;
    goto yy958;
  yy1005:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy1002;
    goto yy958;
  yy1006:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy1000;
    goto yy958;
  yy1007:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yych <= 0xDF) {
      if (yych <= '[') {
        if (yych <= ' ')
          goto yy951;
        if (yych == '(')
          goto yy971;
        goto yy997;
      } else {
        if (yych <= '\\')
          goto yy999;
        if (yych <= 0x7F)
          goto yy997;
        if (yych <= 0xC1)
          goto yy951;
        goto yy1000;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy1001;
        if (yych == 0xED)
          goto yy1006;
        goto yy1002;
      } else {
        if (yych <= 0xF0)
          goto yy1003;
        if (yych <= 0xF3)
          goto yy1004;
        if (yych <= 0xF4)
          goto yy1005;
        goto yy951;
      }
    }
  yy1008:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy997;
    goto yy958;
  yy1009:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1008;
    goto yy958;
  yy1010:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1008;
    goto yy958;
  yy1011:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1010;
    goto yy958;
  yy1012:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1010;
    goto yy958;
  yy1013:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy1010;
    goto yy958;
  yy1014:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy1008;
    goto yy958;
  yy1015:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yych <= '\\') {
      if (yych <= '\r') {
        if (yych <= 0x08) {
          if (yych <= 0x00)
            goto yy980;
        } else {
          if (yych <= '\n')
            goto yy951;
          if (yych <= '\f')
            goto yy1029;
          goto yy951;
        }
      } else {
        if (yych <= '=') {
          if (yych == ' ')
            goto yy951;
        } else {
          if (yych <= '>')
            goto yy1073;
          if (yych >= '\\')
            goto yy1074;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych >= 0x80)
            goto yy951;
        } else {
          if (yych <= 0xDF)
            goto yy1075;
          if (yych <= 0xE0)
            goto yy1076;
          goto yy1077;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy1081;
          if (yych <= 0xEF)
            goto yy1077;
          goto yy1078;
        } else {
          if (yych <= 0xF3)
            goto yy1079;
          if (yych <= 0xF4)
            goto yy1080;
          goto yy951;
        }
      }
    }
  yy1016:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy1016;
    }
    if (yych <= '>') {
      if (yych <= '\r') {
        if (yych <= 0x08) {
          if (yych <= 0x00)
            goto yy951;
          goto yy1029;
        } else {
          if (yych <= '\n')
            goto yy951;
          if (yych <= '\f')
            goto yy1029;
          goto yy951;
        }
      } else {
        if (yych <= '(') {
          if (yych <= 0x1F)
            goto yy1029;
          if (yych <= ' ')
            goto yy951;
          goto yy1027;
        } else {
          if (yych <= ')')
            goto yy1029;
          if (yych <= '<')
            goto yy980;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= '\\')
            goto yy1015;
          goto yy951;
        } else {
          if (yych <= 0xDF)
            goto yy1020;
          if (yych <= 0xE0)
            goto yy1021;
          goto yy1022;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy1026;
          if (yych <= 0xEF)
            goto yy1022;
          goto yy1023;
        } else {
          if (yych <= 0xF3)
            goto yy1024;
          if (yych <= 0xF4)
            goto yy1025;
          goto yy951;
        }
      }
    }
  yy1018:
    yyaccept = 2;
    yych = *(marker = ++p);
    if (yych <= ')') {
      if (yych <= ' ')
        goto yy1019;
      if (yych <= '(')
        goto yy981;
    } else {
      if (yych <= 0x7F)
        goto yy981;
      if (yych <= 0xC1)
        goto yy1019;
      if (yych <= 0xF4)
        goto yy981;
    }
  yy1019 : { return (bufsize_t)(p - start); }
  yy1020:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1016;
    goto yy958;
  yy1021:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1020;
    goto yy958;
  yy1022:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1020;
    goto yy958;
  yy1023:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1022;
    goto yy958;
  yy1024:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1022;
    goto yy958;
  yy1025:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy1022;
    goto yy958;
  yy1026:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy1020;
    goto yy958;
  yy1027:
    ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= 0x1F) {
        if (yych <= '\n') {
          if (yych <= 0x00)
            goto yy958;
          if (yych >= '\t')
            goto yy958;
        } else {
          if (yych == '\r')
            goto yy958;
        }
      } else {
        if (yych <= '(') {
          if (yych <= ' ')
            goto yy958;
          if (yych <= '\'')
            goto yy1027;
        } else {
          if (yych <= ')')
            goto yy1016;
          if (yych == '<')
            goto yy971;
          goto yy1027;
        }
      }
    } else {
      if (yych <= 0xE0) {
        if (yych <= '\\') {
          if (yych <= '>')
            goto yy1042;
          if (yych <= '[')
            goto yy1027;
          goto yy1043;
        } else {
          if (yych <= 0x7F)
            goto yy1027;
          if (yych <= 0xC1)
            goto yy958;
          if (yych <= 0xDF)
            goto yy1045;
          goto yy1046;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych == 0xED)
            goto yy1051;
          goto yy1047;
        } else {
          if (yych <= 0xF0)
            goto yy1048;
          if (yych <= 0xF3)
            goto yy1049;
          if (yych <= 0xF4)
            goto yy1050;
          goto yy958;
        }
      }
    }
  yy1029:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1029;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= '<')
          goto yy958;
        if (yych >= '?')
          goto yy1032;
      } else {
        if (yych <= 0xC1)
          goto yy958;
        if (yych <= 0xDF)
          goto yy1034;
        goto yy1035;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1040;
        goto yy1036;
      } else {
        if (yych <= 0xF0)
          goto yy1037;
        if (yych <= 0xF3)
          goto yy1038;
        if (yych <= 0xF4)
          goto yy1039;
        goto yy958;
      }
    }
  yy1031:
    yych = *++p;
    goto yy1019;
  yy1032:
    ++p;
    yych = *p;
    if (yych <= '\\') {
      if (yych <= '\r') {
        if (yych <= 0x08) {
          if (yych <= 0x00)
            goto yy958;
          goto yy1029;
        } else {
          if (yych <= '\n')
            goto yy958;
          if (yych <= '\f')
            goto yy1029;
          goto yy958;
        }
      } else {
        if (yych <= '=') {
          if (yych == ' ')
            goto yy958;
          goto yy1029;
        } else {
          if (yych <= '>')
            goto yy1041;
          if (yych <= '[')
            goto yy1029;
          goto yy1032;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= 0x7F)
            goto yy1029;
          goto yy958;
        } else {
          if (yych <= 0xDF)
            goto yy1034;
          if (yych <= 0xE0)
            goto yy1035;
          goto yy1036;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy1040;
          if (yych <= 0xEF)
            goto yy1036;
          goto yy1037;
        } else {
          if (yych <= 0xF3)
            goto yy1038;
          if (yych <= 0xF4)
            goto yy1039;
          goto yy958;
        }
      }
    }
  yy1034:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1029;
    goto yy958;
  yy1035:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1034;
    goto yy958;
  yy1036:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1034;
    goto yy958;
  yy1037:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1036;
    goto yy958;
  yy1038:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1036;
    goto yy958;
  yy1039:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy1036;
    goto yy958;
  yy1040:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy1034;
    goto yy958;
  yy1041:
    yyaccept = 2;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1029;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= '<')
          goto yy1019;
        if (yych <= '>')
          goto yy1031;
        goto yy1032;
      } else {
        if (yych <= 0xC1)
          goto yy1019;
        if (yych <= 0xDF)
          goto yy1034;
        goto yy1035;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1040;
        goto yy1036;
      } else {
        if (yych <= 0xF0)
          goto yy1037;
        if (yych <= 0xF3)
          goto yy1038;
        if (yych <= 0xF4)
          goto yy1039;
        goto yy1019;
      }
    }
  yy1042:
    yyaccept = 2;
    yych = *(marker = ++p);
    if (yych <= '(') {
      if (yych <= ' ')
        goto yy1019;
      if (yych <= '\'')
        goto yy972;
      goto yy1019;
    } else {
      if (yych <= 0x7F)
        goto yy972;
      if (yych <= 0xC1)
        goto yy1019;
      if (yych <= 0xF4)
        goto yy972;
      goto yy1019;
    }
  yy1043:
    ++p;
    yych = *p;
    if (yych <= '[') {
      if (yych <= 0x1F) {
        if (yych <= '\n') {
          if (yych <= 0x00)
            goto yy958;
          if (yych <= 0x08)
            goto yy1029;
          goto yy958;
        } else {
          if (yych == '\r')
            goto yy958;
          goto yy1029;
        }
      } else {
        if (yych <= ')') {
          if (yych <= ' ')
            goto yy958;
          if (yych <= '(')
            goto yy1027;
          goto yy1052;
        } else {
          if (yych == '>')
            goto yy1054;
          goto yy1027;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= '\\')
            goto yy1043;
          if (yych <= 0x7F)
            goto yy1027;
          goto yy958;
        } else {
          if (yych <= 0xDF)
            goto yy1045;
          if (yych <= 0xE0)
            goto yy1046;
          goto yy1047;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy1051;
          if (yych <= 0xEF)
            goto yy1047;
          goto yy1048;
        } else {
          if (yych <= 0xF3)
            goto yy1049;
          if (yych <= 0xF4)
            goto yy1050;
          goto yy958;
        }
      }
    }
  yy1045:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1027;
    goto yy958;
  yy1046:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1045;
    goto yy958;
  yy1047:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1045;
    goto yy958;
  yy1048:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1047;
    goto yy958;
  yy1049:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1047;
    goto yy958;
  yy1050:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy1047;
    goto yy958;
  yy1051:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy1045;
    goto yy958;
  yy1052:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= 0x1F) {
        if (yych <= '\n') {
          if (yych <= 0x00)
            goto yy951;
          if (yych <= 0x08)
            goto yy1029;
          goto yy951;
        } else {
          if (yych == '\r')
            goto yy951;
          goto yy1029;
        }
      } else {
        if (yych <= '(') {
          if (yych <= ' ')
            goto yy951;
          if (yych <= '\'')
            goto yy1052;
          goto yy1027;
        } else {
          if (yych <= ')')
            goto yy1016;
          if (yych == '<')
            goto yy997;
          goto yy1052;
        }
      }
    } else {
      if (yych <= 0xE0) {
        if (yych <= '\\') {
          if (yych <= '>')
            goto yy1055;
          if (yych <= '[')
            goto yy1052;
          goto yy1056;
        } else {
          if (yych <= 0x7F)
            goto yy1052;
          if (yych <= 0xC1)
            goto yy951;
          if (yych <= 0xDF)
            goto yy1057;
          goto yy1058;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych == 0xED)
            goto yy1063;
          goto yy1059;
        } else {
          if (yych <= 0xF0)
            goto yy1060;
          if (yych <= 0xF3)
            goto yy1061;
          if (yych <= 0xF4)
            goto yy1062;
          goto yy951;
        }
      }
    }
  yy1054:
    yyaccept = 2;
    marker = ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= 0x1F) {
        if (yych <= '\n') {
          if (yych <= 0x00)
            goto yy1019;
          if (yych <= 0x08)
            goto yy1029;
          goto yy1019;
        } else {
          if (yych == '\r')
            goto yy1019;
          goto yy1029;
        }
      } else {
        if (yych <= '(') {
          if (yych <= ' ')
            goto yy1019;
          if (yych <= '\'')
            goto yy1027;
          goto yy1029;
        } else {
          if (yych <= ')')
            goto yy1016;
          if (yych == '<')
            goto yy971;
          goto yy1027;
        }
      }
    } else {
      if (yych <= 0xE0) {
        if (yych <= '\\') {
          if (yych <= '>')
            goto yy1042;
          if (yych <= '[')
            goto yy1027;
          goto yy1043;
        } else {
          if (yych <= 0x7F)
            goto yy1027;
          if (yych <= 0xC1)
            goto yy1019;
          if (yych <= 0xDF)
            goto yy1045;
          goto yy1046;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych == 0xED)
            goto yy1051;
          goto yy1047;
        } else {
          if (yych <= 0xF0)
            goto yy1048;
          if (yych <= 0xF3)
            goto yy1049;
          if (yych <= 0xF4)
            goto yy1050;
          goto yy1019;
        }
      }
    }
  yy1055:
    yyaccept = 2;
    yych = *(marker = ++p);
    if (yych <= ' ')
      goto yy1019;
    if (yych <= 0x7F)
      goto yy998;
    if (yych <= 0xC1)
      goto yy1019;
    if (yych <= 0xF4)
      goto yy998;
    goto yy1019;
  yy1056:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yych <= '\\') {
      if (yych <= '\r') {
        if (yych <= 0x08) {
          if (yych <= 0x00)
            goto yy980;
          goto yy1016;
        } else {
          if (yych <= '\n')
            goto yy951;
          if (yych <= '\f')
            goto yy1029;
          goto yy951;
        }
      } else {
        if (yych <= '=') {
          if (yych <= 0x1F)
            goto yy1016;
          if (yych <= ' ')
            goto yy951;
          goto yy1052;
        } else {
          if (yych <= '>')
            goto yy1064;
          if (yych <= '[')
            goto yy1052;
          goto yy1065;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= 0x7F)
            goto yy1052;
          goto yy951;
        } else {
          if (yych <= 0xDF)
            goto yy1066;
          if (yych <= 0xE0)
            goto yy1067;
          goto yy1068;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy1072;
          if (yych <= 0xEF)
            goto yy1068;
          goto yy1069;
        } else {
          if (yych <= 0xF3)
            goto yy1070;
          if (yych <= 0xF4)
            goto yy1071;
          goto yy951;
        }
      }
    }
  yy1057:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1052;
    goto yy958;
  yy1058:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1057;
    goto yy958;
  yy1059:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1057;
    goto yy958;
  yy1060:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1059;
    goto yy958;
  yy1061:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1059;
    goto yy958;
  yy1062:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy1059;
    goto yy958;
  yy1063:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy1057;
    goto yy958;
  yy1064:
    yyaccept = 2;
    marker = ++p;
    yych = *p;
    if (yych <= '=') {
      if (yych <= 0x1F) {
        if (yych <= '\n') {
          if (yych <= 0x00)
            goto yy1019;
          if (yych <= 0x08)
            goto yy1029;
          goto yy1019;
        } else {
          if (yych == '\r')
            goto yy1019;
          goto yy1029;
        }
      } else {
        if (yych <= '(') {
          if (yych <= ' ')
            goto yy1019;
          if (yych <= '\'')
            goto yy1052;
          goto yy1027;
        } else {
          if (yych <= ')')
            goto yy1016;
          if (yych == '<')
            goto yy997;
          goto yy1052;
        }
      }
    } else {
      if (yych <= 0xE0) {
        if (yych <= '\\') {
          if (yych <= '>')
            goto yy1055;
          if (yych <= '[')
            goto yy1052;
          goto yy1056;
        } else {
          if (yych <= 0x7F)
            goto yy1052;
          if (yych <= 0xC1)
            goto yy1019;
          if (yych <= 0xDF)
            goto yy1057;
          goto yy1058;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych == 0xED)
            goto yy1063;
          goto yy1059;
        } else {
          if (yych <= 0xF0)
            goto yy1060;
          if (yych <= 0xF3)
            goto yy1061;
          if (yych <= 0xF4)
            goto yy1062;
          goto yy1019;
        }
      }
    }
  yy1065:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yych <= '[') {
      if (yych <= 0x1F) {
        if (yych <= '\n') {
          if (yych <= 0x00)
            goto yy951;
          if (yych <= 0x08)
            goto yy1029;
          goto yy951;
        } else {
          if (yych == '\r')
            goto yy951;
          goto yy1029;
        }
      } else {
        if (yych <= '(') {
          if (yych <= ' ')
            goto yy951;
          if (yych <= '\'')
            goto yy1052;
          goto yy1027;
        } else {
          if (yych == '>')
            goto yy1064;
          goto yy1052;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= '\\')
            goto yy1056;
          if (yych <= 0x7F)
            goto yy1052;
          goto yy951;
        } else {
          if (yych <= 0xDF)
            goto yy1057;
          if (yych <= 0xE0)
            goto yy1058;
          goto yy1059;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy1063;
          if (yych <= 0xEF)
            goto yy1059;
          goto yy1060;
        } else {
          if (yych <= 0xF3)
            goto yy1061;
          if (yych <= 0xF4)
            goto yy1062;
          goto yy951;
        }
      }
    }
  yy1066:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1052;
    goto yy958;
  yy1067:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1066;
    goto yy958;
  yy1068:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1066;
    goto yy958;
  yy1069:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1068;
    goto yy958;
  yy1070:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1068;
    goto yy958;
  yy1071:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy1068;
    goto yy958;
  yy1072:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy1066;
    goto yy958;
  yy1073:
    yyaccept = 2;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy1016;
    }
    if (yych <= '>') {
      if (yych <= '\r') {
        if (yych <= 0x08) {
          if (yych <= 0x00)
            goto yy1019;
          goto yy1029;
        } else {
          if (yych <= '\n')
            goto yy1019;
          if (yych <= '\f')
            goto yy1029;
          goto yy1019;
        }
      } else {
        if (yych <= '(') {
          if (yych <= 0x1F)
            goto yy1029;
          if (yych <= ' ')
            goto yy1019;
          goto yy1027;
        } else {
          if (yych <= ')')
            goto yy1029;
          if (yych <= '<')
            goto yy980;
          goto yy1018;
        }
      }
    } else {
      if (yych <= 0xEC) {
        if (yych <= 0xC1) {
          if (yych <= '\\')
            goto yy1015;
          goto yy1019;
        } else {
          if (yych <= 0xDF)
            goto yy1020;
          if (yych <= 0xE0)
            goto yy1021;
          goto yy1022;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xED)
            goto yy1026;
          if (yych <= 0xEF)
            goto yy1022;
          goto yy1023;
        } else {
          if (yych <= 0xF3)
            goto yy1024;
          if (yych <= 0xF4)
            goto yy1025;
          goto yy1019;
        }
      }
    }
  yy1074:
    yyaccept = 0;
    marker = ++p;
    yych = *p;
    if (yych <= '>') {
      if (yych <= 0x1F) {
        if (yych <= '\n') {
          if (yych <= 0x00)
            goto yy951;
          if (yych <= 0x08)
            goto yy1029;
          goto yy951;
        } else {
          if (yych == '\r')
            goto yy951;
          goto yy1029;
        }
      } else {
        if (yych <= '(') {
          if (yych <= ' ')
            goto yy951;
          if (yych <= '\'')
            goto yy1016;
          goto yy1027;
        } else {
          if (yych <= ')')
            goto yy1029;
          if (yych <= '=')
            goto yy1016;
          goto yy1073;
        }
      }
    } else {
      if (yych <= 0xE0) {
        if (yych <= 0x7F) {
          if (yych == '\\')
            goto yy1015;
          goto yy1016;
        } else {
          if (yych <= 0xC1)
            goto yy951;
          if (yych <= 0xDF)
            goto yy1020;
          goto yy1021;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych == 0xED)
            goto yy1026;
          goto yy1022;
        } else {
          if (yych <= 0xF0)
            goto yy1023;
          if (yych <= 0xF3)
            goto yy1024;
          if (yych <= 0xF4)
            goto yy1025;
          goto yy951;
        }
      }
    }
  yy1075:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1016;
    goto yy958;
  yy1076:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1075;
    goto yy958;
  yy1077:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1075;
    goto yy958;
  yy1078:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1077;
    goto yy958;
  yy1079:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0xBF)
      goto yy1077;
    goto yy958;
  yy1080:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x8F)
      goto yy1077;
    goto yy958;
  yy1081:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy958;
    if (yych <= 0x9F)
      goto yy1075;
    goto yy958;
  }
}

// Try to match a link title (in single quotes, in double quotes, or
// in parentheses), returning number of chars matched.  Allow one
// level of internal nesting (quotes within quotes).
bufsize_t _scan_link_title(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    static const unsigned char yybm[] = {
        0,   224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 96,  224, 224, 224, 224, 160, 224, 192,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 16,  224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
        224, 224, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= 0xC1) {
      if (yych <= '"') {
        if (yych == '\n')
          goto yy1084;
        if (yych <= '!')
          goto yy1088;
        goto yy1085;
      } else {
        if (yych <= '\'') {
          if (yych <= '&')
            goto yy1088;
          goto yy1086;
        } else {
          if (yych <= '(')
            goto yy1087;
          if (yych <= 0x7F)
            goto yy1088;
        }
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy1089;
        if (yych <= 0xE0)
          goto yy1091;
        if (yych <= 0xEC)
          goto yy1092;
        goto yy1096;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy1092;
          goto yy1093;
        } else {
          if (yych <= 0xF3)
            goto yy1094;
          if (yych <= 0xF4)
            goto yy1095;
        }
      }
    }
  yy1084 : { return 0; }
  yy1085:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x00)
      goto yy1084;
    if (yych <= 0x7F)
      goto yy1128;
    if (yych <= 0xC1)
      goto yy1084;
    if (yych <= 0xF4)
      goto yy1128;
    goto yy1084;
  yy1086:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x00)
      goto yy1084;
    if (yych <= 0x7F)
      goto yy1114;
    if (yych <= 0xC1)
      goto yy1084;
    if (yych <= 0xF4)
      goto yy1114;
    goto yy1084;
  yy1087:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych <= 0x00)
      goto yy1084;
    if (yych <= 0x7F)
      goto yy1100;
    if (yych <= 0xC1)
      goto yy1084;
    if (yych <= 0xF4)
      goto yy1100;
    goto yy1084;
  yy1088:
    yych = *++p;
    goto yy1084;
  yy1089:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1088;
  yy1090:
    p = marker;
    if (yyaccept <= 1) {
      if (yyaccept == 0) {
        goto yy1084;
      } else {
        goto yy1109;
      }
    } else {
      if (yyaccept == 2) {
        goto yy1123;
      } else {
        goto yy1137;
      }
    }
  yy1091:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1089;
    goto yy1090;
  yy1092:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1089;
    goto yy1090;
  yy1093:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1092;
    goto yy1090;
  yy1094:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1092;
    goto yy1090;
  yy1095:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0x8F)
      goto yy1092;
    goto yy1090;
  yy1096:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0x9F)
      goto yy1089;
    goto yy1090;
  yy1097:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1099;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy1090;
        if (yych <= ')')
          goto yy1110;
        goto yy1097;
      } else {
        if (yych <= 0xC1)
          goto yy1090;
        if (yych <= 0xDF)
          goto yy1101;
        goto yy1102;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1107;
        goto yy1103;
      } else {
        if (yych <= 0xF0)
          goto yy1104;
        if (yych <= 0xF3)
          goto yy1105;
        if (yych <= 0xF4)
          goto yy1106;
        goto yy1090;
      }
    }
  yy1099:
    ++p;
    yych = *p;
  yy1100:
    if (yybm[0 + yych] & 32) {
      goto yy1099;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy1090;
        if (yych <= ')')
          goto yy1108;
        goto yy1097;
      } else {
        if (yych <= 0xC1)
          goto yy1090;
        if (yych >= 0xE0)
          goto yy1102;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1107;
        goto yy1103;
      } else {
        if (yych <= 0xF0)
          goto yy1104;
        if (yych <= 0xF3)
          goto yy1105;
        if (yych <= 0xF4)
          goto yy1106;
        goto yy1090;
      }
    }
  yy1101:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1099;
    goto yy1090;
  yy1102:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1101;
    goto yy1090;
  yy1103:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1101;
    goto yy1090;
  yy1104:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1103;
    goto yy1090;
  yy1105:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1103;
    goto yy1090;
  yy1106:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0x8F)
      goto yy1103;
    goto yy1090;
  yy1107:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0x9F)
      goto yy1101;
    goto yy1090;
  yy1108:
    ++p;
  yy1109 : { return (bufsize_t)(p - start); }
  yy1110:
    yyaccept = 1;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1099;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy1109;
        if (yych <= ')')
          goto yy1108;
        goto yy1097;
      } else {
        if (yych <= 0xC1)
          goto yy1109;
        if (yych <= 0xDF)
          goto yy1101;
        goto yy1102;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1107;
        goto yy1103;
      } else {
        if (yych <= 0xF0)
          goto yy1104;
        if (yych <= 0xF3)
          goto yy1105;
        if (yych <= 0xF4)
          goto yy1106;
        goto yy1109;
      }
    }
  yy1111:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy1113;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy1090;
        if (yych <= '\'')
          goto yy1124;
        goto yy1111;
      } else {
        if (yych <= 0xC1)
          goto yy1090;
        if (yych <= 0xDF)
          goto yy1115;
        goto yy1116;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1121;
        goto yy1117;
      } else {
        if (yych <= 0xF0)
          goto yy1118;
        if (yych <= 0xF3)
          goto yy1119;
        if (yych <= 0xF4)
          goto yy1120;
        goto yy1090;
      }
    }
  yy1113:
    ++p;
    yych = *p;
  yy1114:
    if (yybm[0 + yych] & 64) {
      goto yy1113;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy1090;
        if (yych <= '\'')
          goto yy1122;
        goto yy1111;
      } else {
        if (yych <= 0xC1)
          goto yy1090;
        if (yych >= 0xE0)
          goto yy1116;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1121;
        goto yy1117;
      } else {
        if (yych <= 0xF0)
          goto yy1118;
        if (yych <= 0xF3)
          goto yy1119;
        if (yych <= 0xF4)
          goto yy1120;
        goto yy1090;
      }
    }
  yy1115:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1113;
    goto yy1090;
  yy1116:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1115;
    goto yy1090;
  yy1117:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1115;
    goto yy1090;
  yy1118:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1117;
    goto yy1090;
  yy1119:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1117;
    goto yy1090;
  yy1120:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0x8F)
      goto yy1117;
    goto yy1090;
  yy1121:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0x9F)
      goto yy1115;
    goto yy1090;
  yy1122:
    ++p;
  yy1123 : { return (bufsize_t)(p - start); }
  yy1124:
    yyaccept = 2;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy1113;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy1123;
        if (yych <= '\'')
          goto yy1122;
        goto yy1111;
      } else {
        if (yych <= 0xC1)
          goto yy1123;
        if (yych <= 0xDF)
          goto yy1115;
        goto yy1116;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1121;
        goto yy1117;
      } else {
        if (yych <= 0xF0)
          goto yy1118;
        if (yych <= 0xF3)
          goto yy1119;
        if (yych <= 0xF4)
          goto yy1120;
        goto yy1123;
      }
    }
  yy1125:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1127;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy1090;
        if (yych <= '"')
          goto yy1138;
        goto yy1125;
      } else {
        if (yych <= 0xC1)
          goto yy1090;
        if (yych <= 0xDF)
          goto yy1129;
        goto yy1130;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1135;
        goto yy1131;
      } else {
        if (yych <= 0xF0)
          goto yy1132;
        if (yych <= 0xF3)
          goto yy1133;
        if (yych <= 0xF4)
          goto yy1134;
        goto yy1090;
      }
    }
  yy1127:
    ++p;
    yych = *p;
  yy1128:
    if (yybm[0 + yych] & 128) {
      goto yy1127;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy1090;
        if (yych <= '"')
          goto yy1136;
        goto yy1125;
      } else {
        if (yych <= 0xC1)
          goto yy1090;
        if (yych >= 0xE0)
          goto yy1130;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1135;
        goto yy1131;
      } else {
        if (yych <= 0xF0)
          goto yy1132;
        if (yych <= 0xF3)
          goto yy1133;
        if (yych <= 0xF4)
          goto yy1134;
        goto yy1090;
      }
    }
  yy1129:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1127;
    goto yy1090;
  yy1130:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1129;
    goto yy1090;
  yy1131:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1129;
    goto yy1090;
  yy1132:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1131;
    goto yy1090;
  yy1133:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0xBF)
      goto yy1131;
    goto yy1090;
  yy1134:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0x8F)
      goto yy1131;
    goto yy1090;
  yy1135:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1090;
    if (yych <= 0x9F)
      goto yy1129;
    goto yy1090;
  yy1136:
    ++p;
  yy1137 : { return (bufsize_t)(p - start); }
  yy1138:
    yyaccept = 3;
    marker = ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1127;
    }
    if (yych <= 0xE0) {
      if (yych <= '\\') {
        if (yych <= 0x00)
          goto yy1137;
        if (yych <= '"')
          goto yy1136;
        goto yy1125;
      } else {
        if (yych <= 0xC1)
          goto yy1137;
        if (yych <= 0xDF)
          goto yy1129;
        goto yy1130;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1135;
        goto yy1131;
      } else {
        if (yych <= 0xF0)
          goto yy1132;
        if (yych <= 0xF3)
          goto yy1133;
        if (yych <= 0xF4)
          goto yy1134;
        goto yy1137;
      }
    }
  }
}

// Match space characters, including newlines.
bufsize_t _scan_spacechars(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 128, 128, 128, 128, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   128, 0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0,   0,   0,   0, 0,
    };
    yych = *(marker = p);
    if (yych <= 0xC1) {
      if (yych <= '\r') {
        if (yych <= 0x08)
          goto yy1145;
        if (yych == '\n')
          goto yy1143;
        goto yy1142;
      } else {
        if (yych == ' ')
          goto yy1142;
        if (yych <= 0x7F)
          goto yy1145;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy1147;
        if (yych <= 0xE0)
          goto yy1149;
        if (yych <= 0xEC)
          goto yy1150;
        goto yy1154;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy1150;
          goto yy1151;
        } else {
          if (yych <= 0xF3)
            goto yy1152;
          if (yych <= 0xF4)
            goto yy1153;
        }
      }
    }
  yy1141 : { return (bufsize_t)(p - start); }
  yy1142:
    yych = *++p;
    goto yy1144;
  yy1143:
    ++p;
    yych = *p;
  yy1144:
    if (yybm[0 + yych] & 128) {
      goto yy1143;
    }
    goto yy1141;
  yy1145:
    ++p;
    { return 0; }
  yy1147:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1148;
    if (yych <= 0xBF)
      goto yy1145;
  yy1148:
    p = marker;
    goto yy1141;
  yy1149:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy1148;
    if (yych <= 0xBF)
      goto yy1147;
    goto yy1148;
  yy1150:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1148;
    if (yych <= 0xBF)
      goto yy1147;
    goto yy1148;
  yy1151:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy1148;
    if (yych <= 0xBF)
      goto yy1150;
    goto yy1148;
  yy1152:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1148;
    if (yych <= 0xBF)
      goto yy1150;
    goto yy1148;
  yy1153:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1148;
    if (yych <= 0x8F)
      goto yy1150;
    goto yy1148;
  yy1154:
    ++p;
    if ((yych = *p) <= 0x7F)
      goto yy1148;
    if (yych <= 0x9F)
      goto yy1147;
    goto yy1148;
  }
}

// Match ATX heading start.
bufsize_t _scan_atx_heading_start(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0, 0,   0,   0, 0, 0,
    };
    yych = *(marker = p);
    if (yych <= 0xDF) {
      if (yych <= '"') {
        if (yych != '\n')
          goto yy1159;
      } else {
        if (yych <= '#')
          goto yy1158;
        if (yych <= 0x7F)
          goto yy1159;
        if (yych >= 0xC2)
          goto yy1160;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy1162;
        if (yych == 0xED)
          goto yy1167;
        goto yy1163;
      } else {
        if (yych <= 0xF0)
          goto yy1164;
        if (yych <= 0xF3)
          goto yy1165;
        if (yych <= 0xF4)
          goto yy1166;
      }
    }
  yy1157 : { return 0; }
  yy1158:
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 128) {
      goto yy1170;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy1157;
      if (yych <= '\n')
        goto yy1168;
      goto yy1157;
    } else {
      if (yych <= '\r')
        goto yy1168;
      if (yych == '#')
        goto yy1172;
      goto yy1157;
    }
  yy1159:
    yych = *++p;
    goto yy1157;
  yy1160:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1161;
    if (yych <= 0xBF)
      goto yy1159;
  yy1161:
    p = marker;
    goto yy1157;
  yy1162:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy1161;
    if (yych <= 0xBF)
      goto yy1160;
    goto yy1161;
  yy1163:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1161;
    if (yych <= 0xBF)
      goto yy1160;
    goto yy1161;
  yy1164:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy1161;
    if (yych <= 0xBF)
      goto yy1163;
    goto yy1161;
  yy1165:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1161;
    if (yych <= 0xBF)
      goto yy1163;
    goto yy1161;
  yy1166:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1161;
    if (yych <= 0x8F)
      goto yy1163;
    goto yy1161;
  yy1167:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1161;
    if (yych <= 0x9F)
      goto yy1160;
    goto yy1161;
  yy1168:
    ++p;
  yy1169 : { return (bufsize_t)(p - start); }
  yy1170:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1170;
    }
    goto yy1169;
  yy1172:
    yych = *++p;
    if (yybm[0 + yych] & 128) {
      goto yy1170;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy1161;
      if (yych <= '\n')
        goto yy1168;
      goto yy1161;
    } else {
      if (yych <= '\r')
        goto yy1168;
      if (yych != '#')
        goto yy1161;
    }
    yych = *++p;
    if (yybm[0 + yych] & 128) {
      goto yy1170;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy1161;
      if (yych <= '\n')
        goto yy1168;
      goto yy1161;
    } else {
      if (yych <= '\r')
        goto yy1168;
      if (yych != '#')
        goto yy1161;
    }
    yych = *++p;
    if (yybm[0 + yych] & 128) {
      goto yy1170;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy1161;
      if (yych <= '\n')
        goto yy1168;
      goto yy1161;
    } else {
      if (yych <= '\r')
        goto yy1168;
      if (yych != '#')
        goto yy1161;
    }
    yych = *++p;
    if (yybm[0 + yych] & 128) {
      goto yy1170;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy1161;
      if (yych <= '\n')
        goto yy1168;
      goto yy1161;
    } else {
      if (yych <= '\r')
        goto yy1168;
      if (yych != '#')
        goto yy1161;
    }
    ++p;
    if (yybm[0 + (yych = *p)] & 128) {
      goto yy1170;
    }
    if (yych <= 0x08)
      goto yy1161;
    if (yych <= '\n')
      goto yy1168;
    if (yych == '\r')
      goto yy1168;
    goto yy1161;
  }
}

// Match setext heading line.  Return 1 for level-1 heading,
// 2 for level-2, 0 for no match.
bufsize_t _scan_setext_heading_line(const unsigned char *p) {
  const unsigned char *marker = NULL;

  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
        0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 128, 0, 0, 0, 0,
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0, 0, 0,   0, 0, 0, 0,
        0, 0,  0, 0, 0, 0, 0, 0, 0, 0, 0,  0, 0, 0,
    };
    yych = *(marker = p);
    if (yych <= 0xC1) {
      if (yych <= '-') {
        if (yych == '\n')
          goto yy1179;
        if (yych <= ',')
          goto yy1182;
        goto yy1181;
      } else {
        if (yych == '=')
          goto yy1180;
        if (yych <= 0x7F)
          goto yy1182;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy1183;
        if (yych <= 0xE0)
          goto yy1185;
        if (yych <= 0xEC)
          goto yy1186;
        goto yy1190;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy1186;
          goto yy1187;
        } else {
          if (yych <= 0xF3)
            goto yy1188;
          if (yych <= 0xF4)
            goto yy1189;
        }
      }
    }
  yy1179 : { return 0; }
  yy1180:
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 128) {
      goto yy1201;
    }
    if (yych <= '\f') {
      if (yych == '\n')
        goto yy1199;
      goto yy1179;
    } else {
      if (yych <= '\r')
        goto yy1199;
      if (yych == ' ')
        goto yy1197;
      goto yy1179;
    }
  yy1181:
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 32) {
      goto yy1191;
    }
    if (yych <= '\f') {
      if (yych == '\n')
        goto yy1193;
      goto yy1179;
    } else {
      if (yych <= '\r')
        goto yy1193;
      if (yych == '-')
        goto yy1195;
      goto yy1179;
    }
  yy1182:
    yych = *++p;
    goto yy1179;
  yy1183:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1184;
    if (yych <= 0xBF)
      goto yy1182;
  yy1184:
    p = marker;
    goto yy1179;
  yy1185:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy1184;
    if (yych <= 0xBF)
      goto yy1183;
    goto yy1184;
  yy1186:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1184;
    if (yych <= 0xBF)
      goto yy1183;
    goto yy1184;
  yy1187:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy1184;
    if (yych <= 0xBF)
      goto yy1186;
    goto yy1184;
  yy1188:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1184;
    if (yych <= 0xBF)
      goto yy1186;
    goto yy1184;
  yy1189:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1184;
    if (yych <= 0x8F)
      goto yy1186;
    goto yy1184;
  yy1190:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1184;
    if (yych <= 0x9F)
      goto yy1183;
    goto yy1184;
  yy1191:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1191;
    }
    if (yych == '\n')
      goto yy1193;
    if (yych != '\r')
      goto yy1184;
  yy1193:
    ++p;
    { return 2; }
  yy1195:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1191;
    }
    if (yych <= '\f') {
      if (yych == '\n')
        goto yy1193;
      goto yy1184;
    } else {
      if (yych <= '\r')
        goto yy1193;
      if (yych == '-')
        goto yy1195;
      goto yy1184;
    }
  yy1197:
    ++p;
    yych = *p;
    if (yych <= '\f') {
      if (yych != '\n')
        goto yy1184;
    } else {
      if (yych <= '\r')
        goto yy1199;
      if (yych == ' ')
        goto yy1197;
      goto yy1184;
    }
  yy1199:
    ++p;
    { return 1; }
  yy1201:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1201;
    }
    if (yych <= '\f') {
      if (yych == '\n')
        goto yy1199;
      goto yy1184;
    } else {
      if (yych <= '\r')
        goto yy1199;
      if (yych == ' ')
        goto yy1197;
      goto yy1184;
    }
  }
}

// Scan a thematic break line: "...three or more hyphens, asterisks,
// or underscores on a line by themselves. If you wish, you may use
// spaces between the hyphens or asterisks."
bufsize_t _scan_thematic_break(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0, 0, 0,   0, 0, 0,  0, 0, 0, 240, 0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 240, 0, 0, 0,  0, 0, 0, 0,
        0, 0, 128, 0, 0, 32, 0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 64, 0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,  0, 0, 0, 0,
        0, 0, 0,   0, 0, 0,  0, 0, 0, 0,   0, 0, 0,   0, 0, 0,
    };
    yych = *(marker = p);
    if (yych <= 0x7F) {
      if (yych <= '*') {
        if (yych == '\n')
          goto yy1205;
        if (yych <= ')')
          goto yy1209;
        goto yy1206;
      } else {
        if (yych <= '-') {
          if (yych <= ',')
            goto yy1209;
          goto yy1208;
        } else {
          if (yych == '_')
            goto yy1207;
          goto yy1209;
        }
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF) {
          if (yych >= 0xC2)
            goto yy1210;
        } else {
          if (yych <= 0xE0)
            goto yy1212;
          if (yych <= 0xEC)
            goto yy1213;
          goto yy1217;
        }
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy1213;
          goto yy1214;
        } else {
          if (yych <= 0xF3)
            goto yy1215;
          if (yych <= 0xF4)
            goto yy1216;
        }
      }
    }
  yy1205 : { return 0; }
  yy1206:
    yych = *(marker = ++p);
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy1238;
      goto yy1205;
    } else {
      if (yych <= ' ')
        goto yy1238;
      if (yych == '*')
        goto yy1240;
      goto yy1205;
    }
  yy1207:
    yych = *(marker = ++p);
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy1228;
      goto yy1205;
    } else {
      if (yych <= ' ')
        goto yy1228;
      if (yych == '_')
        goto yy1230;
      goto yy1205;
    }
  yy1208:
    yych = *(marker = ++p);
    if (yybm[0 + yych] & 16) {
      goto yy1218;
    }
    if (yych == '-')
      goto yy1220;
    goto yy1205;
  yy1209:
    yych = *++p;
    goto yy1205;
  yy1210:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1211;
    if (yych <= 0xBF)
      goto yy1209;
  yy1211:
    p = marker;
    goto yy1205;
  yy1212:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy1211;
    if (yych <= 0xBF)
      goto yy1210;
    goto yy1211;
  yy1213:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1211;
    if (yych <= 0xBF)
      goto yy1210;
    goto yy1211;
  yy1214:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy1211;
    if (yych <= 0xBF)
      goto yy1213;
    goto yy1211;
  yy1215:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1211;
    if (yych <= 0xBF)
      goto yy1213;
    goto yy1211;
  yy1216:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1211;
    if (yych <= 0x8F)
      goto yy1213;
    goto yy1211;
  yy1217:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1211;
    if (yych <= 0x9F)
      goto yy1210;
    goto yy1211;
  yy1218:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 16) {
      goto yy1218;
    }
    if (yych != '-')
      goto yy1211;
  yy1220:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy1220;
      goto yy1211;
    } else {
      if (yych <= ' ')
        goto yy1220;
      if (yych != '-')
        goto yy1211;
    }
  yy1222:
    ++p;
    yych = *p;
    if (yych <= '\r') {
      if (yych <= '\t') {
        if (yych <= 0x08)
          goto yy1211;
        goto yy1222;
      } else {
        if (yych <= '\n')
          goto yy1224;
        if (yych <= '\f')
          goto yy1211;
      }
    } else {
      if (yych <= ' ') {
        if (yych <= 0x1F)
          goto yy1211;
        goto yy1222;
      } else {
        if (yych == '-')
          goto yy1226;
        goto yy1211;
      }
    }
  yy1224:
    ++p;
    { return (bufsize_t)(p - start); }
  yy1226:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1226;
    }
    if (yych <= 0x08)
      goto yy1211;
    if (yych <= '\n')
      goto yy1224;
    if (yych == '\r')
      goto yy1224;
    goto yy1211;
  yy1228:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy1228;
      goto yy1211;
    } else {
      if (yych <= ' ')
        goto yy1228;
      if (yych != '_')
        goto yy1211;
    }
  yy1230:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy1230;
      goto yy1211;
    } else {
      if (yych <= ' ')
        goto yy1230;
      if (yych != '_')
        goto yy1211;
    }
  yy1232:
    ++p;
    yych = *p;
    if (yych <= '\r') {
      if (yych <= '\t') {
        if (yych <= 0x08)
          goto yy1211;
        goto yy1232;
      } else {
        if (yych <= '\n')
          goto yy1234;
        if (yych <= '\f')
          goto yy1211;
      }
    } else {
      if (yych <= ' ') {
        if (yych <= 0x1F)
          goto yy1211;
        goto yy1232;
      } else {
        if (yych == '_')
          goto yy1236;
        goto yy1211;
      }
    }
  yy1234:
    ++p;
    { return (bufsize_t)(p - start); }
  yy1236:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy1236;
    }
    if (yych <= 0x08)
      goto yy1211;
    if (yych <= '\n')
      goto yy1234;
    if (yych == '\r')
      goto yy1234;
    goto yy1211;
  yy1238:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy1238;
      goto yy1211;
    } else {
      if (yych <= ' ')
        goto yy1238;
      if (yych != '*')
        goto yy1211;
    }
  yy1240:
    ++p;
    yych = *p;
    if (yych <= 0x1F) {
      if (yych == '\t')
        goto yy1240;
      goto yy1211;
    } else {
      if (yych <= ' ')
        goto yy1240;
      if (yych != '*')
        goto yy1211;
    }
  yy1242:
    ++p;
    yych = *p;
    if (yych <= '\r') {
      if (yych <= '\t') {
        if (yych <= 0x08)
          goto yy1211;
        goto yy1242;
      } else {
        if (yych <= '\n')
          goto yy1244;
        if (yych <= '\f')
          goto yy1211;
      }
    } else {
      if (yych <= ' ') {
        if (yych <= 0x1F)
          goto yy1211;
        goto yy1242;
      } else {
        if (yych == '*')
          goto yy1246;
        goto yy1211;
      }
    }
  yy1244:
    ++p;
    { return (bufsize_t)(p - start); }
  yy1246:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1246;
    }
    if (yych <= 0x08)
      goto yy1211;
    if (yych <= '\n')
      goto yy1244;
    if (yych == '\r')
      goto yy1244;
    goto yy1211;
  }
}

// Scan an opening code fence.
bufsize_t _scan_open_code_fence(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0,   160, 160, 160, 160, 160, 160, 160, 160, 160, 0,   160, 160, 0,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 96,  160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160,
        144, 160, 0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,   0,
        0,   0,   0,   0,
    };
    yych = *(marker = p);
    if (yych <= 0xC1) {
      if (yych <= '`') {
        if (yych == '\n')
          goto yy1250;
        if (yych <= '_')
          goto yy1253;
        goto yy1251;
      } else {
        if (yych == '~')
          goto yy1252;
        if (yych <= 0x7F)
          goto yy1253;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy1254;
        if (yych <= 0xE0)
          goto yy1256;
        if (yych <= 0xEC)
          goto yy1257;
        goto yy1261;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy1257;
          goto yy1258;
        } else {
          if (yych <= 0xF3)
            goto yy1259;
          if (yych <= 0xF4)
            goto yy1260;
        }
      }
    }
  yy1250 : { return 0; }
  yy1251:
    yych = *(marker = ++p);
    if (yych == '`')
      goto yy1276;
    goto yy1250;
  yy1252:
    yych = *(marker = ++p);
    if (yych == '~')
      goto yy1262;
    goto yy1250;
  yy1253:
    yych = *++p;
    goto yy1250;
  yy1254:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1253;
  yy1255:
    p = marker;
    goto yy1250;
  yy1256:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1254;
    goto yy1255;
  yy1257:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1254;
    goto yy1255;
  yy1258:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1257;
    goto yy1255;
  yy1259:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1257;
    goto yy1255;
  yy1260:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0x8F)
      goto yy1257;
    goto yy1255;
  yy1261:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0x9F)
      goto yy1254;
    goto yy1255;
  yy1262:
    yych = *++p;
    if (yybm[0 + yych] & 16) {
      goto yy1263;
    }
    goto yy1255;
  yy1263:
    ++p;
    yych = *p;
    marker = p;
    if (yybm[0 + yych] & 32) {
      goto yy1265;
    }
    if (yych <= 0xE0) {
      if (yych <= '~') {
        if (yych <= 0x00)
          goto yy1255;
        if (yych <= '\r')
          goto yy1274;
        goto yy1263;
      } else {
        if (yych <= 0xC1)
          goto yy1255;
        if (yych <= 0xDF)
          goto yy1267;
        goto yy1268;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1273;
        goto yy1269;
      } else {
        if (yych <= 0xF0)
          goto yy1270;
        if (yych <= 0xF3)
          goto yy1271;
        if (yych <= 0xF4)
          goto yy1272;
        goto yy1255;
      }
    }
  yy1265:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 32) {
      goto yy1265;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy1255;
        if (yych <= '\r')
          goto yy1274;
        goto yy1255;
      } else {
        if (yych <= 0xDF)
          goto yy1267;
        if (yych <= 0xE0)
          goto yy1268;
        goto yy1269;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy1273;
        if (yych <= 0xEF)
          goto yy1269;
        goto yy1270;
      } else {
        if (yych <= 0xF3)
          goto yy1271;
        if (yych <= 0xF4)
          goto yy1272;
        goto yy1255;
      }
    }
  yy1267:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1265;
    goto yy1255;
  yy1268:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1267;
    goto yy1255;
  yy1269:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1267;
    goto yy1255;
  yy1270:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1269;
    goto yy1255;
  yy1271:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1269;
    goto yy1255;
  yy1272:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0x8F)
      goto yy1269;
    goto yy1255;
  yy1273:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0x9F)
      goto yy1267;
    goto yy1255;
  yy1274:
    ++p;
    p = marker;
    { return (bufsize_t)(p - start); }
  yy1276:
    yych = *++p;
    if (yybm[0 + yych] & 64) {
      goto yy1277;
    }
    goto yy1255;
  yy1277:
    ++p;
    yych = *p;
    marker = p;
    if (yybm[0 + yych] & 128) {
      goto yy1279;
    }
    if (yych <= 0xE0) {
      if (yych <= '`') {
        if (yych <= 0x00)
          goto yy1255;
        if (yych <= '\r')
          goto yy1288;
        goto yy1277;
      } else {
        if (yych <= 0xC1)
          goto yy1255;
        if (yych <= 0xDF)
          goto yy1281;
        goto yy1282;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych == 0xED)
          goto yy1287;
        goto yy1283;
      } else {
        if (yych <= 0xF0)
          goto yy1284;
        if (yych <= 0xF3)
          goto yy1285;
        if (yych <= 0xF4)
          goto yy1286;
        goto yy1255;
      }
    }
  yy1279:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 128) {
      goto yy1279;
    }
    if (yych <= 0xEC) {
      if (yych <= 0xC1) {
        if (yych <= 0x00)
          goto yy1255;
        if (yych <= '\r')
          goto yy1288;
        goto yy1255;
      } else {
        if (yych <= 0xDF)
          goto yy1281;
        if (yych <= 0xE0)
          goto yy1282;
        goto yy1283;
      }
    } else {
      if (yych <= 0xF0) {
        if (yych <= 0xED)
          goto yy1287;
        if (yych <= 0xEF)
          goto yy1283;
        goto yy1284;
      } else {
        if (yych <= 0xF3)
          goto yy1285;
        if (yych <= 0xF4)
          goto yy1286;
        goto yy1255;
      }
    }
  yy1281:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1279;
    goto yy1255;
  yy1282:
    ++p;
    yych = *p;
    if (yych <= 0x9F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1281;
    goto yy1255;
  yy1283:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1281;
    goto yy1255;
  yy1284:
    ++p;
    yych = *p;
    if (yych <= 0x8F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1283;
    goto yy1255;
  yy1285:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0xBF)
      goto yy1283;
    goto yy1255;
  yy1286:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0x8F)
      goto yy1283;
    goto yy1255;
  yy1287:
    ++p;
    yych = *p;
    if (yych <= 0x7F)
      goto yy1255;
    if (yych <= 0x9F)
      goto yy1281;
    goto yy1255;
  yy1288:
    ++p;
    p = marker;
    { return (bufsize_t)(p - start); }
  }
}

// Scan a closing code fence with length at least len.
bufsize_t _scan_close_code_fence(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    static const unsigned char yybm[] = {
        0, 0, 0, 0, 0, 0, 0, 0, 0,   64, 0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  64, 0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 128, 0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0, 0, 0, 0,  0, 0, 0, 0, 0,
        0, 0, 0, 0, 0, 0, 0, 0, 0,   0,  0,  0, 0, 0,
    };
    yych = *(marker = p);
    if (yych <= 0xC1) {
      if (yych <= '`') {
        if (yych == '\n')
          goto yy1292;
        if (yych <= '_')
          goto yy1295;
        goto yy1293;
      } else {
        if (yych == '~')
          goto yy1294;
        if (yych <= 0x7F)
          goto yy1295;
      }
    } else {
      if (yych <= 0xED) {
        if (yych <= 0xDF)
          goto yy1296;
        if (yych <= 0xE0)
          goto yy1298;
        if (yych <= 0xEC)
          goto yy1299;
        goto yy1303;
      } else {
        if (yych <= 0xF0) {
          if (yych <= 0xEF)
            goto yy1299;
          goto yy1300;
        } else {
          if (yych <= 0xF3)
            goto yy1301;
          if (yych <= 0xF4)
            goto yy1302;
        }
      }
    }
  yy1292 : { return 0; }
  yy1293:
    yych = *(marker = ++p);
    if (yych == '`')
      goto yy1311;
    goto yy1292;
  yy1294:
    yych = *(marker = ++p);
    if (yych == '~')
      goto yy1304;
    goto yy1292;
  yy1295:
    yych = *++p;
    goto yy1292;
  yy1296:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1297;
    if (yych <= 0xBF)
      goto yy1295;
  yy1297:
    p = marker;
    goto yy1292;
  yy1298:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy1297;
    if (yych <= 0xBF)
      goto yy1296;
    goto yy1297;
  yy1299:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1297;
    if (yych <= 0xBF)
      goto yy1296;
    goto yy1297;
  yy1300:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy1297;
    if (yych <= 0xBF)
      goto yy1299;
    goto yy1297;
  yy1301:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1297;
    if (yych <= 0xBF)
      goto yy1299;
    goto yy1297;
  yy1302:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1297;
    if (yych <= 0x8F)
      goto yy1299;
    goto yy1297;
  yy1303:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1297;
    if (yych <= 0x9F)
      goto yy1296;
    goto yy1297;
  yy1304:
    yych = *++p;
    if (yybm[0 + yych] & 32) {
      goto yy1305;
    }
    goto yy1297;
  yy1305:
    ++p;
    yych = *p;
    marker = p;
    if (yybm[0 + yych] & 64) {
      goto yy1307;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy1297;
      if (yych <= '\n')
        goto yy1309;
      goto yy1297;
    } else {
      if (yych <= '\r')
        goto yy1309;
      if (yych == '~')
        goto yy1305;
      goto yy1297;
    }
  yy1307:
    ++p;
    yych = *p;
    if (yybm[0 + yych] & 64) {
      goto yy1307;
    }
    if (yych <= 0x08)
      goto yy1297;
    if (yych <= '\n')
      goto yy1309;
    if (yych != '\r')
      goto yy1297;
  yy1309:
    ++p;
    p = marker;
    { return (bufsize_t)(p - start); }
  yy1311:
    yych = *++p;
    if (yybm[0 + yych] & 128) {
      goto yy1312;
    }
    goto yy1297;
  yy1312:
    ++p;
    yych = *p;
    marker = p;
    if (yybm[0 + yych] & 128) {
      goto yy1312;
    }
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy1297;
      if (yych <= '\t')
        goto yy1314;
      if (yych <= '\n')
        goto yy1316;
      goto yy1297;
    } else {
      if (yych <= '\r')
        goto yy1316;
      if (yych != ' ')
        goto yy1297;
    }
  yy1314:
    ++p;
    yych = *p;
    if (yych <= '\f') {
      if (yych <= 0x08)
        goto yy1297;
      if (yych <= '\t')
        goto yy1314;
      if (yych >= '\v')
        goto yy1297;
    } else {
      if (yych <= '\r')
        goto yy1316;
      if (yych == ' ')
        goto yy1314;
      goto yy1297;
    }
  yy1316:
    ++p;
    p = marker;
    { return (bufsize_t)(p - start); }
  }
}

// Scans an entity.
// Returns number of chars matched.
bufsize_t _scan_entity(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    yych = *(marker = p);
    if (yych <= 0xDF) {
      if (yych <= '%') {
        if (yych != '\n')
          goto yy1322;
      } else {
        if (yych <= '&')
          goto yy1321;
        if (yych <= 0x7F)
          goto yy1322;
        if (yych >= 0xC2)
          goto yy1323;
      }
    } else {
      if (yych <= 0xEF) {
        if (yych <= 0xE0)
          goto yy1325;
        if (yych == 0xED)
          goto yy1330;
        goto yy1326;
      } else {
        if (yych <= 0xF0)
          goto yy1327;
        if (yych <= 0xF3)
          goto yy1328;
        if (yych <= 0xF4)
          goto yy1329;
      }
    }
  yy1320 : { return 0; }
  yy1321:
    yych = *(marker = ++p);
    if (yych <= '@') {
      if (yych == '#')
        goto yy1331;
      goto yy1320;
    } else {
      if (yych <= 'Z')
        goto yy1332;
      if (yych <= '`')
        goto yy1320;
      if (yych <= 'z')
        goto yy1332;
      goto yy1320;
    }
  yy1322:
    yych = *++p;
    goto yy1320;
  yy1323:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1324;
    if (yych <= 0xBF)
      goto yy1322;
  yy1324:
    p = marker;
    goto yy1320;
  yy1325:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy1324;
    if (yych <= 0xBF)
      goto yy1323;
    goto yy1324;
  yy1326:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1324;
    if (yych <= 0xBF)
      goto yy1323;
    goto yy1324;
  yy1327:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy1324;
    if (yych <= 0xBF)
      goto yy1326;
    goto yy1324;
  yy1328:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1324;
    if (yych <= 0xBF)
      goto yy1326;
    goto yy1324;
  yy1329:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1324;
    if (yych <= 0x8F)
      goto yy1326;
    goto yy1324;
  yy1330:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1324;
    if (yych <= 0x9F)
      goto yy1323;
    goto yy1324;
  yy1331:
    yych = *++p;
    if (yych <= 'W') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1367;
      goto yy1324;
    } else {
      if (yych <= 'X')
        goto yy1366;
      if (yych == 'x')
        goto yy1366;
      goto yy1324;
    }
  yy1332:
    yych = *++p;
    if (yych <= '@') {
      if (yych <= '/')
        goto yy1324;
      if (yych >= ':')
        goto yy1324;
    } else {
      if (yych <= 'Z')
        goto yy1333;
      if (yych <= '`')
        goto yy1324;
      if (yych >= '{')
        goto yy1324;
    }
  yy1333:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1336;
      if (yych <= ':')
        goto yy1324;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
        goto yy1336;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych <= 'z')
          goto yy1336;
        goto yy1324;
      }
    }
  yy1334:
    ++p;
    { return (bufsize_t)(p - start); }
  yy1336:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1337;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1337:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1338;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1338:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1339;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1339:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1340;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1340:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1341;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1341:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1342;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1342:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1343;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1343:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1344;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1344:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1345;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1345:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1346;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1346:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1347;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1347:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1348;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1348:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1349;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1349:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1350;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1350:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1351;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1351:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1352;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1352:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1353;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1353:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1354;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1354:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1355;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1355:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1356;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1356:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1357;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1357:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1358;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1358:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1359;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1359:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1360;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1360:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1361;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1361:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1362;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1362:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1363;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1363:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1364;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1364:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1365;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'Z') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= '{')
          goto yy1324;
      }
    }
  yy1365:
    yych = *++p;
    if (yych == ';')
      goto yy1334;
    goto yy1324;
  yy1366:
    yych = *++p;
    if (yych <= '@') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1374;
      goto yy1324;
    } else {
      if (yych <= 'F')
        goto yy1374;
      if (yych <= '`')
        goto yy1324;
      if (yych <= 'f')
        goto yy1374;
      goto yy1324;
    }
  yy1367:
    yych = *++p;
    if (yych <= '/')
      goto yy1324;
    if (yych <= '9')
      goto yy1368;
    if (yych == ';')
      goto yy1334;
    goto yy1324;
  yy1368:
    yych = *++p;
    if (yych <= '/')
      goto yy1324;
    if (yych <= '9')
      goto yy1369;
    if (yych == ';')
      goto yy1334;
    goto yy1324;
  yy1369:
    yych = *++p;
    if (yych <= '/')
      goto yy1324;
    if (yych <= '9')
      goto yy1370;
    if (yych == ';')
      goto yy1334;
    goto yy1324;
  yy1370:
    yych = *++p;
    if (yych <= '/')
      goto yy1324;
    if (yych <= '9')
      goto yy1371;
    if (yych == ';')
      goto yy1334;
    goto yy1324;
  yy1371:
    yych = *++p;
    if (yych <= '/')
      goto yy1324;
    if (yych <= '9')
      goto yy1372;
    if (yych == ';')
      goto yy1334;
    goto yy1324;
  yy1372:
    yych = *++p;
    if (yych <= '/')
      goto yy1324;
    if (yych <= '9')
      goto yy1373;
    if (yych == ';')
      goto yy1334;
    goto yy1324;
  yy1373:
    yych = *++p;
    if (yych <= '/')
      goto yy1324;
    if (yych <= '9')
      goto yy1365;
    if (yych == ';')
      goto yy1334;
    goto yy1324;
  yy1374:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1375;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= 'g')
          goto yy1324;
      }
    }
  yy1375:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1376;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= 'g')
          goto yy1324;
      }
    }
  yy1376:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1377;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= 'g')
          goto yy1324;
      }
    }
  yy1377:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1378;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= 'g')
          goto yy1324;
      }
    }
  yy1378:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1379;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= 'g')
          goto yy1324;
      }
    }
  yy1379:
    yych = *++p;
    if (yych <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1380;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy1324;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych >= 'g')
          goto yy1324;
      }
    }
  yy1380:
    ++p;
    if ((yych = *p) <= ';') {
      if (yych <= '/')
        goto yy1324;
      if (yych <= '9')
        goto yy1365;
      if (yych <= ':')
        goto yy1324;
      goto yy1334;
    } else {
      if (yych <= 'F') {
        if (yych <= '@')
          goto yy1324;
        goto yy1365;
      } else {
        if (yych <= '`')
          goto yy1324;
        if (yych <= 'f')
          goto yy1365;
        goto yy1324;
      }
    }
  }
}

// Returns positive value if a URL begins in a way that is potentially
// dangerous, with javascript:, vbscript:, file:, or data:, otherwise 0.
bufsize_t _scan_dangerous_url(const unsigned char *p) {
  const unsigned char *marker = NULL;
  const unsigned char *start = p;

  {
    unsigned char yych;
    unsigned int yyaccept = 0;
    yych = *(marker = p);
    if (yych <= 'f') {
      if (yych <= 'I') {
        if (yych <= 'C') {
          if (yych != '\n')
            goto yy1388;
        } else {
          if (yych <= 'D')
            goto yy1384;
          if (yych == 'F')
            goto yy1387;
          goto yy1388;
        }
      } else {
        if (yych <= 'V') {
          if (yych <= 'J')
            goto yy1385;
          if (yych <= 'U')
            goto yy1388;
          goto yy1386;
        } else {
          if (yych == 'd')
            goto yy1384;
          if (yych <= 'e')
            goto yy1388;
          goto yy1387;
        }
      }
    } else {
      if (yych <= 0xDF) {
        if (yych <= 'u') {
          if (yych == 'j')
            goto yy1385;
          goto yy1388;
        } else {
          if (yych <= 'v')
            goto yy1386;
          if (yych <= 0x7F)
            goto yy1388;
          if (yych >= 0xC2)
            goto yy1389;
        }
      } else {
        if (yych <= 0xEF) {
          if (yych <= 0xE0)
            goto yy1391;
          if (yych == 0xED)
            goto yy1396;
          goto yy1392;
        } else {
          if (yych <= 0xF0)
            goto yy1393;
          if (yych <= 0xF3)
            goto yy1394;
          if (yych <= 0xF4)
            goto yy1395;
        }
      }
    }
  yy1383 : { return 0; }
  yy1384:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych == 'A')
      goto yy1418;
    if (yych == 'a')
      goto yy1418;
    goto yy1383;
  yy1385:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych == 'A')
      goto yy1409;
    if (yych == 'a')
      goto yy1409;
    goto yy1383;
  yy1386:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych == 'B')
      goto yy1402;
    if (yych == 'b')
      goto yy1402;
    goto yy1383;
  yy1387:
    yyaccept = 0;
    yych = *(marker = ++p);
    if (yych == 'I')
      goto yy1397;
    if (yych == 'i')
      goto yy1397;
    goto yy1383;
  yy1388:
    yych = *++p;
    goto yy1383;
  yy1389:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1390;
    if (yych <= 0xBF)
      goto yy1388;
  yy1390:
    p = marker;
    if (yyaccept == 0) {
      goto yy1383;
    } else {
      goto yy1401;
    }
  yy1391:
    yych = *++p;
    if (yych <= 0x9F)
      goto yy1390;
    if (yych <= 0xBF)
      goto yy1389;
    goto yy1390;
  yy1392:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1390;
    if (yych <= 0xBF)
      goto yy1389;
    goto yy1390;
  yy1393:
    yych = *++p;
    if (yych <= 0x8F)
      goto yy1390;
    if (yych <= 0xBF)
      goto yy1392;
    goto yy1390;
  yy1394:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1390;
    if (yych <= 0xBF)
      goto yy1392;
    goto yy1390;
  yy1395:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1390;
    if (yych <= 0x8F)
      goto yy1392;
    goto yy1390;
  yy1396:
    yych = *++p;
    if (yych <= 0x7F)
      goto yy1390;
    if (yych <= 0x9F)
      goto yy1389;
    goto yy1390;
  yy1397:
    yych = *++p;
    if (yych == 'L')
      goto yy1398;
    if (yych != 'l')
      goto yy1390;
  yy1398:
    yych = *++p;
    if (yych == 'E')
      goto yy1399;
    if (yych != 'e')
      goto yy1390;
  yy1399:
    yych = *++p;
    if (yych != ':')
      goto yy1390;
  yy1400:
    ++p;
  yy1401 : { return (bufsize_t)(p - start); }
  yy1402:
    yych = *++p;
    if (yych == 'S')
      goto yy1403;
    if (yych != 's')
      goto yy1390;
  yy1403:
    yych = *++p;
    if (yych == 'C')
      goto yy1404;
    if (yych != 'c')
      goto yy1390;
  yy1404:
    yych = *++p;
    if (yych == 'R')
      goto yy1405;
    if (yych != 'r')
      goto yy1390;
  yy1405:
    yych = *++p;
    if (yych == 'I')
      goto yy1406;
    if (yych != 'i')
      goto yy1390;
  yy1406:
    yych = *++p;
    if (yych == 'P')
      goto yy1407;
    if (yych != 'p')
      goto yy1390;
  yy1407:
    yych = *++p;
    if (yych == 'T')
      goto yy1408;
    if (yych != 't')
      goto yy1390;
  yy1408:
    yych = *++p;
    if (yych == ':')
      goto yy1400;
    goto yy1390;
  yy1409:
    yych = *++p;
    if (yych == 'V')
      goto yy1410;
    if (yych != 'v')
      goto yy1390;
  yy1410:
    yych = *++p;
    if (yych == 'A')
      goto yy1411;
    if (yych != 'a')
      goto yy1390;
  yy1411:
    yych = *++p;
    if (yych == 'S')
      goto yy1412;
    if (yych != 's')
      goto yy1390;
  yy1412:
    yych = *++p;
    if (yych == 'C')
      goto yy1413;
    if (yych != 'c')
      goto yy1390;
  yy1413:
    yych = *++p;
    if (yych == 'R')
      goto yy1414;
    if (yych != 'r')
      goto yy1390;
  yy1414:
    yych = *++p;
    if (yych == 'I')
      goto yy1415;
    if (yych != 'i')
      goto yy1390;
  yy1415:
    yych = *++p;
    if (yych == 'P')
      goto yy1416;
    if (yych != 'p')
      goto yy1390;
  yy1416:
    yych = *++p;
    if (yych == 'T')
      goto yy1417;
    if (yych != 't')
      goto yy1390;
  yy1417:
    yych = *++p;
    if (yych == ':')
      goto yy1400;
    goto yy1390;
  yy1418:
    yych = *++p;
    if (yych == 'T')
      goto yy1419;
    if (yych != 't')
      goto yy1390;
  yy1419:
    yych = *++p;
    if (yych == 'A')
      goto yy1420;
    if (yych != 'a')
      goto yy1390;
  yy1420:
    yych = *++p;
    if (yych != ':')
      goto yy1390;
    yyaccept = 1;
    yych = *(marker = ++p);
    if (yych == 'I')
      goto yy1422;
    if (yych != 'i')
      goto yy1401;
  yy1422:
    yych = *++p;
    if (yych == 'M')
      goto yy1423;
    if (yych != 'm')
      goto yy1390;
  yy1423:
    yych = *++p;
    if (yych == 'A')
      goto yy1424;
    if (yych != 'a')
      goto yy1390;
  yy1424:
    yych = *++p;
    if (yych == 'G')
      goto yy1425;
    if (yych != 'g')
      goto yy1390;
  yy1425:
    yych = *++p;
    if (yych == 'E')
      goto yy1426;
    if (yych != 'e')
      goto yy1390;
  yy1426:
    yych = *++p;
    if (yych != '/')
      goto yy1390;
    yych = *++p;
    if (yych <= 'W') {
      if (yych <= 'J') {
        if (yych == 'G')
          goto yy1429;
        if (yych <= 'I')
          goto yy1390;
        goto yy1430;
      } else {
        if (yych == 'P')
          goto yy1428;
        if (yych <= 'V')
          goto yy1390;
        goto yy1431;
      }
    } else {
      if (yych <= 'j') {
        if (yych == 'g')
          goto yy1429;
        if (yych <= 'i')
          goto yy1390;
        goto yy1430;
      } else {
        if (yych <= 'p') {
          if (yych <= 'o')
            goto yy1390;
        } else {
          if (yych == 'w')
            goto yy1431;
          goto yy1390;
        }
      }
    }
  yy1428:
    yych = *++p;
    if (yych == 'N')
      goto yy1439;
    if (yych == 'n')
      goto yy1439;
    goto yy1390;
  yy1429:
    yych = *++p;
    if (yych == 'I')
      goto yy1438;
    if (yych == 'i')
      goto yy1438;
    goto yy1390;
  yy1430:
    yych = *++p;
    if (yych == 'P')
      goto yy1436;
    if (yych == 'p')
      goto yy1436;
    goto yy1390;
  yy1431:
    yych = *++p;
    if (yych == 'E')
      goto yy1432;
    if (yych != 'e')
      goto yy1390;
  yy1432:
    yych = *++p;
    if (yych == 'B')
      goto yy1433;
    if (yych != 'b')
      goto yy1390;
  yy1433:
    yych = *++p;
    if (yych == 'P')
      goto yy1434;
    if (yych != 'p')
      goto yy1390;
  yy1434:
    ++p;
    { return 0; }
  yy1436:
    yych = *++p;
    if (yych == 'E')
      goto yy1437;
    if (yych != 'e')
      goto yy1390;
  yy1437:
    yych = *++p;
    if (yych == 'G')
      goto yy1434;
    if (yych == 'g')
      goto yy1434;
    goto yy1390;
  yy1438:
    yych = *++p;
    if (yych == 'F')
      goto yy1434;
    if (yych == 'f')
      goto yy1434;
    goto yy1390;
  yy1439:
    ++p;
    if ((yych = *p) == 'G')
      goto yy1434;
    if (yych == 'g')
      goto yy1434;
    goto yy1390;
  }
}
