/* Generated by re2c */
#line 1 "encodings/unicode_group_P_8.re"
// re2c $INPUT -o $OUTPUT -8
#include <stdint.h>
#include <stdio.h>
#include "utf8.h"
#define YYCTYPE uint8_t

bool scan(const YYCTYPE* start, const YYCTYPE* const limit) {
	__attribute__((unused)) const YYCTYPE* YYMARKER;
#define YYCURSOR start
P:

#line 15 "encodings/unicode_group_P_8.c"
{
	YYCTYPE yych;
	yych = *YYCURSOR;
	switch (yych) {
		case '!':
		case '"':
		case '#':
		case '%':
		case '&':
		case '\'':
		case '(':
		case ')':
		case '*':
		case ',':
		case '-':
		case '.':
		case '/':
		case ':':
		case ';':
		case '?':
		case '@':
		case '[':
		case '\\':
		case ']':
		case '_':
		case '{':
		case '}': goto yy3;
		case 0xC2: goto yy4;
		case 0xCD: goto yy5;
		case 0xCE: goto yy6;
		case 0xD5: goto yy7;
		case 0xD6: goto yy8;
		case 0xD7: goto yy9;
		case 0xD8: goto yy10;
		case 0xD9: goto yy11;
		case 0xDB: goto yy12;
		case 0xDC: goto yy13;
		case 0xDF: goto yy14;
		case 0xE0: goto yy15;
		case 0xE1: goto yy16;
		case 0xE2: goto yy17;
		case 0xE3: goto yy18;
		case 0xEA: goto yy19;
		case 0xEF: goto yy20;
		case 0xF0: goto yy21;
		default: goto yy1;
	}
yy1:
	++YYCURSOR;
yy2:
#line 15 "encodings/unicode_group_P_8.re"
	{ return YYCURSOR - 1 == limit; }
#line 68 "encodings/unicode_group_P_8.c"
yy3:
	++YYCURSOR;
#line 14 "encodings/unicode_group_P_8.re"
	{ goto P; }
#line 73 "encodings/unicode_group_P_8.c"
yy4:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xA1:
		case 0xA7:
		case 0xAB:
		case 0xB6:
		case 0xB7:
		case 0xBB:
		case 0xBF: goto yy3;
		default: goto yy2;
	}
yy5:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xBE: goto yy3;
		default: goto yy2;
	}
yy6:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x87: goto yy3;
		default: goto yy2;
	}
yy7:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x9A:
		case 0x9B:
		case 0x9C:
		case 0x9D:
		case 0x9E:
		case 0x9F: goto yy3;
		default: goto yy2;
	}
yy8:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x89:
		case 0x8A:
		case 0xBE: goto yy3;
		default: goto yy2;
	}
yy9:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x83:
		case 0x86:
		case 0xB3:
		case 0xB4: goto yy3;
		default: goto yy2;
	}
yy10:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x89:
		case 0x8A:
		case 0x8C:
		case 0x8D:
		case 0x9B:
		case 0x9D:
		case 0x9E:
		case 0x9F: goto yy3;
		default: goto yy2;
	}
yy11:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xAA:
		case 0xAB:
		case 0xAC:
		case 0xAD: goto yy3;
		default: goto yy2;
	}
yy12:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x94: goto yy3;
		default: goto yy2;
	}
yy13:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D: goto yy3;
		default: goto yy2;
	}
yy14:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB7:
		case 0xB8:
		case 0xB9: goto yy3;
		default: goto yy2;
	}
yy15:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 0xA0: goto yy22;
		case 0xA1: goto yy24;
		case 0xA5: goto yy25;
		case 0xA7: goto yy26;
		case 0xA9: goto yy27;
		case 0xAB: goto yy28;
		case 0xB1: goto yy29;
		case 0xB2: goto yy30;
		case 0xB7: goto yy31;
		case 0xB9: goto yy32;
		case 0xBC: goto yy33;
		case 0xBE: goto yy34;
		case 0xBF: goto yy35;
		default: goto yy2;
	}
yy16:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 0x81: goto yy36;
		case 0x83: goto yy37;
		case 0x8D: goto yy38;
		case 0x90: goto yy39;
		case 0x99: goto yy40;
		case 0x9A: goto yy41;
		case 0x9B: goto yy42;
		case 0x9C: goto yy43;
		case 0x9F: goto yy44;
		case 0xA0: goto yy45;
		case 0xA5: goto yy46;
		case 0xA8: goto yy47;
		case 0xAA: goto yy48;
		case 0xAD: goto yy49;
		case 0xAF: goto yy50;
		case 0xB0: goto yy51;
		case 0xB1: goto yy52;
		case 0xB3: goto yy53;
		default: goto yy2;
	}
yy17:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 0x80: goto yy54;
		case 0x81: goto yy55;
		case 0x82: goto yy56;
		case 0x8C: goto yy57;
		case 0x9D: goto yy58;
		case 0x9F: goto yy59;
		case 0xA6: goto yy60;
		case 0xA7: goto yy61;
		case 0xB3: goto yy62;
		case 0xB5: goto yy28;
		case 0xB8: goto yy63;
		case 0xB9: goto yy64;
		default: goto yy2;
	}
yy18:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 0x80: goto yy65;
		case 0x82: goto yy66;
		case 0x83: goto yy37;
		default: goto yy2;
	}
yy19:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 0x93: goto yy52;
		case 0x98: goto yy67;
		case 0x99: goto yy68;
		case 0x9B: goto yy69;
		case 0xA1: goto yy70;
		case 0xA3: goto yy71;
		case 0xA4: goto yy72;
		case 0xA5: goto yy73;
		case 0xA7: goto yy74;
		case 0xA9: goto yy75;
		case 0xAB: goto yy76;
		case 0xAF: goto yy77;
		default: goto yy2;
	}
yy20:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 0xB4: goto yy52;
		case 0xB8: goto yy78;
		case 0xB9: goto yy79;
		case 0xBC: goto yy80;
		case 0xBD: goto yy81;
		default: goto yy2;
	}
yy21:
	yych = *(YYMARKER = ++YYCURSOR);
	switch (yych) {
		case 0x90: goto yy82;
		case 0x91: goto yy83;
		case 0x92: goto yy84;
		case 0x96: goto yy85;
		case 0x9B: goto yy86;
		case 0x9D: goto yy87;
		case 0x9E: goto yy88;
		default: goto yy2;
	}
yy22:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB0:
		case 0xB1:
		case 0xB2:
		case 0xB3:
		case 0xB4:
		case 0xB5:
		case 0xB6:
		case 0xB7:
		case 0xB8:
		case 0xB9:
		case 0xBA:
		case 0xBB:
		case 0xBC:
		case 0xBD:
		case 0xBE: goto yy3;
		default: goto yy23;
	}
yy23:
	YYCURSOR = YYMARKER;
	goto yy2;
yy24:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x9E: goto yy3;
		default: goto yy23;
	}
yy25:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xA4:
		case 0xA5:
		case 0xB0: goto yy3;
		default: goto yy23;
	}
yy26:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xBD: goto yy3;
		default: goto yy23;
	}
yy27:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB6: goto yy3;
		default: goto yy23;
	}
yy28:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB0: goto yy3;
		default: goto yy23;
	}
yy29:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB7: goto yy3;
		default: goto yy23;
	}
yy30:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x84: goto yy3;
		default: goto yy23;
	}
yy31:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB4: goto yy3;
		default: goto yy23;
	}
yy32:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x8F:
		case 0x9A:
		case 0x9B: goto yy3;
		default: goto yy23;
	}
yy33:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F:
		case 0x90:
		case 0x91:
		case 0x92:
		case 0x94:
		case 0xBA:
		case 0xBB:
		case 0xBC:
		case 0xBD: goto yy3;
		default: goto yy23;
	}
yy34:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x85: goto yy3;
		default: goto yy23;
	}
yy35:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x90:
		case 0x91:
		case 0x92:
		case 0x93:
		case 0x94:
		case 0x99:
		case 0x9A: goto yy3;
		default: goto yy23;
	}
yy36:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F: goto yy3;
		default: goto yy23;
	}
yy37:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xBB: goto yy3;
		default: goto yy23;
	}
yy38:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xA0:
		case 0xA1:
		case 0xA2:
		case 0xA3:
		case 0xA4:
		case 0xA5:
		case 0xA6:
		case 0xA7:
		case 0xA8: goto yy3;
		default: goto yy23;
	}
yy39:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80: goto yy3;
		default: goto yy23;
	}
yy40:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xAE: goto yy3;
		default: goto yy23;
	}
yy41:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x9B:
		case 0x9C: goto yy3;
		default: goto yy23;
	}
yy42:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xAB:
		case 0xAC:
		case 0xAD: goto yy3;
		default: goto yy23;
	}
yy43:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB5:
		case 0xB6: goto yy3;
		default: goto yy23;
	}
yy44:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x98:
		case 0x99:
		case 0x9A: goto yy3;
		default: goto yy23;
	}
yy45:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A: goto yy3;
		default: goto yy23;
	}
yy46:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x84:
		case 0x85: goto yy3;
		default: goto yy23;
	}
yy47:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x9E:
		case 0x9F: goto yy3;
		default: goto yy23;
	}
yy48:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xA0:
		case 0xA1:
		case 0xA2:
		case 0xA3:
		case 0xA4:
		case 0xA5:
		case 0xA6:
		case 0xA8:
		case 0xA9:
		case 0xAA:
		case 0xAB:
		case 0xAC:
		case 0xAD: goto yy3;
		default: goto yy23;
	}
yy49:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x8E:
		case 0x8F:
		case 0x9A:
		case 0x9B:
		case 0x9C:
		case 0x9D:
		case 0x9E:
		case 0x9F:
		case 0xA0:
		case 0xBD:
		case 0xBE:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy50:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xBC:
		case 0xBD:
		case 0xBE:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy51:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xBB:
		case 0xBC:
		case 0xBD:
		case 0xBE:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy52:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xBE:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy53:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x93: goto yy3;
		default: goto yy23;
	}
yy54:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x90:
		case 0x91:
		case 0x92:
		case 0x93:
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x97:
		case 0x98:
		case 0x99:
		case 0x9A:
		case 0x9B:
		case 0x9C:
		case 0x9D:
		case 0x9E:
		case 0x9F:
		case 0xA0:
		case 0xA1:
		case 0xA2:
		case 0xA3:
		case 0xA4:
		case 0xA5:
		case 0xA6:
		case 0xA7:
		case 0xB0:
		case 0xB1:
		case 0xB2:
		case 0xB3:
		case 0xB4:
		case 0xB5:
		case 0xB6:
		case 0xB7:
		case 0xB8:
		case 0xB9:
		case 0xBA:
		case 0xBB:
		case 0xBC:
		case 0xBD:
		case 0xBE:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy55:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F:
		case 0x90:
		case 0x91:
		case 0x93:
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x97:
		case 0x98:
		case 0x99:
		case 0x9A:
		case 0x9B:
		case 0x9C:
		case 0x9D:
		case 0x9E:
		case 0xBD:
		case 0xBE: goto yy3;
		default: goto yy23;
	}
yy56:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x8D:
		case 0x8E: goto yy3;
		default: goto yy23;
	}
yy57:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0xA9:
		case 0xAA: goto yy3;
		default: goto yy23;
	}
yy58:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xA8:
		case 0xA9:
		case 0xAA:
		case 0xAB:
		case 0xAC:
		case 0xAD:
		case 0xAE:
		case 0xAF:
		case 0xB0:
		case 0xB1:
		case 0xB2:
		case 0xB3:
		case 0xB4:
		case 0xB5: goto yy3;
		default: goto yy23;
	}
yy59:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x85:
		case 0x86:
		case 0xA6:
		case 0xA7:
		case 0xA8:
		case 0xA9:
		case 0xAA:
		case 0xAB:
		case 0xAC:
		case 0xAD:
		case 0xAE:
		case 0xAF: goto yy3;
		default: goto yy23;
	}
yy60:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F:
		case 0x90:
		case 0x91:
		case 0x92:
		case 0x93:
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x97:
		case 0x98: goto yy3;
		default: goto yy23;
	}
yy61:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x98:
		case 0x99:
		case 0x9A:
		case 0x9B:
		case 0xBC:
		case 0xBD: goto yy3;
		default: goto yy23;
	}
yy62:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB9:
		case 0xBA:
		case 0xBB:
		case 0xBC:
		case 0xBE:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy63:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F:
		case 0x90:
		case 0x91:
		case 0x92:
		case 0x93:
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x97:
		case 0x98:
		case 0x99:
		case 0x9A:
		case 0x9B:
		case 0x9C:
		case 0x9D:
		case 0x9E:
		case 0x9F:
		case 0xA0:
		case 0xA1:
		case 0xA2:
		case 0xA3:
		case 0xA4:
		case 0xA5:
		case 0xA6:
		case 0xA7:
		case 0xA8:
		case 0xA9:
		case 0xAA:
		case 0xAB:
		case 0xAC:
		case 0xAD:
		case 0xAE:
		case 0xB0:
		case 0xB1:
		case 0xB2:
		case 0xB3:
		case 0xB4:
		case 0xB5:
		case 0xB6:
		case 0xB7:
		case 0xB8:
		case 0xB9:
		case 0xBA:
		case 0xBB:
		case 0xBC:
		case 0xBD:
		case 0xBE:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy64:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F:
		case 0x92:
		case 0x93:
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x97:
		case 0x98:
		case 0x99:
		case 0x9A:
		case 0x9B:
		case 0x9C:
		case 0x9D: goto yy3;
		default: goto yy23;
	}
yy65:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F:
		case 0x90:
		case 0x91:
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x97:
		case 0x98:
		case 0x99:
		case 0x9A:
		case 0x9B:
		case 0x9C:
		case 0x9D:
		case 0x9E:
		case 0x9F:
		case 0xB0:
		case 0xBD: goto yy3;
		default: goto yy23;
	}
yy66:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xA0: goto yy3;
		default: goto yy23;
	}
yy67:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x8D:
		case 0x8E:
		case 0x8F: goto yy3;
		default: goto yy23;
	}
yy68:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB3:
		case 0xBE: goto yy3;
		default: goto yy23;
	}
yy69:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB2:
		case 0xB3:
		case 0xB4:
		case 0xB5:
		case 0xB6:
		case 0xB7: goto yy3;
		default: goto yy23;
	}
yy70:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB4:
		case 0xB5:
		case 0xB6:
		case 0xB7: goto yy3;
		default: goto yy23;
	}
yy71:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x8E:
		case 0x8F:
		case 0xB8:
		case 0xB9:
		case 0xBA:
		case 0xBC: goto yy3;
		default: goto yy23;
	}
yy72:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xAE:
		case 0xAF: goto yy3;
		default: goto yy23;
	}
yy73:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x9F: goto yy3;
		default: goto yy23;
	}
yy74:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x9E:
		case 0x9F: goto yy3;
		default: goto yy23;
	}
yy75:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x9C:
		case 0x9D:
		case 0x9E:
		case 0x9F: goto yy3;
		default: goto yy23;
	}
yy76:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x9E:
		case 0x9F:
		case 0xB0:
		case 0xB1: goto yy3;
		default: goto yy23;
	}
yy77:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xAB: goto yy3;
		default: goto yy23;
	}
yy78:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x90:
		case 0x91:
		case 0x92:
		case 0x93:
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x97:
		case 0x98:
		case 0x99:
		case 0xB0:
		case 0xB1:
		case 0xB2:
		case 0xB3:
		case 0xB4:
		case 0xB5:
		case 0xB6:
		case 0xB7:
		case 0xB8:
		case 0xB9:
		case 0xBA:
		case 0xBB:
		case 0xBC:
		case 0xBD:
		case 0xBE:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy79:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F:
		case 0x90:
		case 0x91:
		case 0x92:
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x97:
		case 0x98:
		case 0x99:
		case 0x9A:
		case 0x9B:
		case 0x9C:
		case 0x9D:
		case 0x9E:
		case 0x9F:
		case 0xA0:
		case 0xA1:
		case 0xA3:
		case 0xA8:
		case 0xAA:
		case 0xAB: goto yy3;
		default: goto yy23;
	}
yy80:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F:
		case 0x9A:
		case 0x9B:
		case 0x9F:
		case 0xA0:
		case 0xBB:
		case 0xBC:
		case 0xBD:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy81:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x9B:
		case 0x9D:
		case 0x9F:
		case 0xA0:
		case 0xA1:
		case 0xA2:
		case 0xA3:
		case 0xA4:
		case 0xA5: goto yy3;
		default: goto yy23;
	}
yy82:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x84: goto yy89;
		case 0x8E: goto yy73;
		case 0x8F:
		case 0xBB: goto yy90;
		case 0x95: goto yy91;
		case 0xA1: goto yy92;
		case 0xA4: goto yy93;
		case 0xA9: goto yy94;
		case 0xAB: goto yy95;
		case 0xAC: goto yy96;
		case 0xAE: goto yy97;
		case 0xB5: goto yy40;
		case 0xBA: goto yy98;
		case 0xBD: goto yy99;
		case 0xBE: goto yy100;
		default: goto yy23;
	}
yy83:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x81: goto yy101;
		case 0x82: goto yy102;
		case 0x83: goto yy103;
		case 0x85: goto yy104;
		case 0x87: goto yy105;
		case 0x88: goto yy106;
		case 0x8A: goto yy107;
		case 0x8F: goto yy108;
		case 0x91: goto yy109;
		case 0x93: goto yy110;
		case 0x97: goto yy111;
		case 0x99: goto yy112;
		case 0x9A: goto yy113;
		case 0x9C: goto yy114;
		case 0xA0: goto yy37;
		case 0xA5: goto yy115;
		case 0xA7: goto yy116;
		case 0xA8:
		case 0xBF: goto yy117;
		case 0xA9: goto yy118;
		case 0xAA: goto yy119;
		case 0xAC: goto yy120;
		case 0xAF: goto yy121;
		case 0xB1: goto yy122;
		case 0xBB: goto yy123;
		case 0xBD: goto yy124;
		default: goto yy23;
	}
yy84:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x91: goto yy125;
		case 0xBF: goto yy126;
		default: goto yy23;
	}
yy85:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xA9: goto yy72;
		case 0xAB: goto yy127;
		case 0xAC: goto yy128;
		case 0xAD: goto yy30;
		case 0xB5: goto yy129;
		case 0xBA: goto yy130;
		case 0xBF: goto yy116;
		default: goto yy23;
	}
yy86:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB2: goto yy73;
		default: goto yy23;
	}
yy87:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xAA: goto yy131;
		default: goto yy23;
	}
yy88:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x97: goto yy117;
		case 0xA5: goto yy47;
		default: goto yy23;
	}
yy89:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82: goto yy3;
		default: goto yy23;
	}
yy90:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x90: goto yy3;
		default: goto yy23;
	}
yy91:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xAF: goto yy3;
		default: goto yy23;
	}
yy92:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x97: goto yy3;
		default: goto yy23;
	}
yy93:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x9F:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy94:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x90:
		case 0x91:
		case 0x92:
		case 0x93:
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x97:
		case 0x98:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy95:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB0:
		case 0xB1:
		case 0xB2:
		case 0xB3:
		case 0xB4:
		case 0xB5:
		case 0xB6: goto yy3;
		default: goto yy23;
	}
yy96:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB9:
		case 0xBA:
		case 0xBB:
		case 0xBC:
		case 0xBD:
		case 0xBE:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy97:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x99:
		case 0x9A:
		case 0x9B:
		case 0x9C: goto yy3;
		default: goto yy23;
	}
yy98:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xAD: goto yy3;
		default: goto yy23;
	}
yy99:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x95:
		case 0x96:
		case 0x97:
		case 0x98:
		case 0x99: goto yy3;
		default: goto yy23;
	}
yy100:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89: goto yy3;
		default: goto yy23;
	}
yy101:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D: goto yy3;
		default: goto yy23;
	}
yy102:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xBB:
		case 0xBC:
		case 0xBE:
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy103:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81: goto yy3;
		default: goto yy23;
	}
yy104:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82:
		case 0x83:
		case 0xB4:
		case 0xB5: goto yy3;
		default: goto yy23;
	}
yy105:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x8D:
		case 0x9B:
		case 0x9D:
		case 0x9E:
		case 0x9F: goto yy3;
		default: goto yy23;
	}
yy106:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB8:
		case 0xB9:
		case 0xBA:
		case 0xBB:
		case 0xBC:
		case 0xBD: goto yy3;
		default: goto yy23;
	}
yy107:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xA9: goto yy3;
		default: goto yy23;
	}
yy108:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x94:
		case 0x95:
		case 0x97:
		case 0x98: goto yy3;
		default: goto yy23;
	}
yy109:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F:
		case 0x9A:
		case 0x9B:
		case 0x9D: goto yy3;
		default: goto yy23;
	}
yy110:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x86: goto yy3;
		default: goto yy23;
	}
yy111:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F:
		case 0x90:
		case 0x91:
		case 0x92:
		case 0x93:
		case 0x94:
		case 0x95:
		case 0x96:
		case 0x97: goto yy3;
		default: goto yy23;
	}
yy112:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x81:
		case 0x82:
		case 0x83:
		case 0xA0:
		case 0xA1:
		case 0xA2:
		case 0xA3:
		case 0xA4:
		case 0xA5:
		case 0xA6:
		case 0xA7:
		case 0xA8:
		case 0xA9:
		case 0xAA:
		case 0xAB:
		case 0xAC: goto yy3;
		default: goto yy23;
	}
yy113:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB9: goto yy3;
		default: goto yy23;
	}
yy114:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xBC:
		case 0xBD:
		case 0xBE: goto yy3;
		default: goto yy23;
	}
yy115:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x84:
		case 0x85:
		case 0x86: goto yy3;
		default: goto yy23;
	}
yy116:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xA2: goto yy3;
		default: goto yy23;
	}
yy117:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xBF: goto yy3;
		default: goto yy23;
	}
yy118:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86: goto yy3;
		default: goto yy23;
	}
yy119:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x9A:
		case 0x9B:
		case 0x9C:
		case 0x9E:
		case 0x9F:
		case 0xA0:
		case 0xA1:
		case 0xA2: goto yy3;
		default: goto yy23;
	}
yy120:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x80:
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89: goto yy3;
		default: goto yy23;
	}
yy121:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xA1: goto yy3;
		default: goto yy23;
	}
yy122:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x81:
		case 0x82:
		case 0x83:
		case 0x84:
		case 0x85:
		case 0xB0:
		case 0xB1: goto yy3;
		default: goto yy23;
	}
yy123:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB7:
		case 0xB8: goto yy3;
		default: goto yy23;
	}
yy124:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x83:
		case 0x84:
		case 0x85:
		case 0x86:
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B:
		case 0x8C:
		case 0x8D:
		case 0x8E:
		case 0x8F: goto yy3;
		default: goto yy23;
	}
yy125:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB0:
		case 0xB1:
		case 0xB2:
		case 0xB3:
		case 0xB4: goto yy3;
		default: goto yy23;
	}
yy126:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB1:
		case 0xB2: goto yy3;
		default: goto yy23;
	}
yy127:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB5: goto yy3;
		default: goto yy23;
	}
yy128:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xB7:
		case 0xB8:
		case 0xB9:
		case 0xBA:
		case 0xBB: goto yy3;
		default: goto yy23;
	}
yy129:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0xAD:
		case 0xAE:
		case 0xAF: goto yy3;
		default: goto yy23;
	}
yy130:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x97:
		case 0x98:
		case 0x99:
		case 0x9A: goto yy3;
		default: goto yy23;
	}
yy131:
	yych = *++YYCURSOR;
	switch (yych) {
		case 0x87:
		case 0x88:
		case 0x89:
		case 0x8A:
		case 0x8B: goto yy3;
		default: goto yy23;
	}
}
#line 16 "encodings/unicode_group_P_8.re"

}

static const uint32_t chars_P[] = {0x21,0x23,0x25,0x2a,0x2c,0x2f,0x3a,0x3b,0x3f,0x40,0x5b,0x5d,0x5f,0x5f,0x7b,0x7b,0x7d,0x7d,0xa1,0xa1,0xa7,0xa7,0xab,0xab,0xb6,0xb7,0xbb,0xbb,0xbf,0xbf,0x37e,0x37e,0x387,0x387,0x55a,0x55f,0x589,0x58a,0x5be,0x5be,0x5c0,0x5c0,0x5c3,0x5c3,0x5c6,0x5c6,0x5f3,0x5f4,0x609,0x60a,0x60c,0x60d,0x61b,0x61b,0x61d,0x61f,0x66a,0x66d,0x6d4,0x6d4,0x700,0x70d,0x7f7,0x7f9,0x830,0x83e,0x85e,0x85e,0x964,0x965,0x970,0x970,0x9fd,0x9fd,0xa76,0xa76,0xaf0,0xaf0,0xc77,0xc77,0xc84,0xc84,0xdf4,0xdf4,0xe4f,0xe4f,0xe5a,0xe5b,0xf04,0xf12,0xf14,0xf14,0xf3a,0xf3d,0xf85,0xf85,0xfd0,0xfd4,0xfd9,0xfda,0x104a,0x104f,0x10fb,0x10fb,0x1360,0x1368,0x1400,0x1400,0x166e,0x166e,0x169b,0x169c,0x16eb,0x16ed,0x1735,0x1736,0x17d4,0x17d6,0x17d8,0x17da,0x1800,0x180a,0x1944,0x1945,0x1a1e,0x1a1f,0x1aa0,0x1aa6,0x1aa8,0x1aad,0x1b4e,0x1b4f,0x1b5a,0x1b60,0x1b7d,0x1b7f,0x1bfc,0x1bff,0x1c3b,0x1c3f,0x1c7e,0x1c7f,0x1cc0,0x1cc7,0x1cd3,0x1cd3,0x2010,0x2027,0x2030,0x2043,0x2045,0x2051,0x2053,0x205e,0x207d,0x207e,0x208d,0x208e,0x2308,0x230b,0x2329,0x232a,0x2768,0x2775,0x27c5,0x27c6,0x27e6,0x27ef,0x2983,0x2998,0x29d8,0x29db,0x29fc,0x29fd,0x2cf9,0x2cfc,0x2cfe,0x2cff,0x2d70,0x2d70,0x2e00,0x2e2e,0x2e30,0x2e4f,0x2e52,0x2e5d,0x3001,0x3003,0x3008,0x3011,0x3014,0x301f,0x3030,0x3030,0x303d,0x303d,0x30a0,0x30a0,0x30fb,0x30fb,0xa4fe,0xa4ff,0xa60d,0xa60f,0xa673,0xa673,0xa67e,0xa67e,0xa6f2,0xa6f7,0xa874,0xa877,0xa8ce,0xa8cf,0xa8f8,0xa8fa,0xa8fc,0xa8fc,0xa92e,0xa92f,0xa95f,0xa95f,0xa9c1,0xa9cd,0xa9de,0xa9df,0xaa5c,0xaa5f,0xaade,0xaadf,0xaaf0,0xaaf1,0xabeb,0xabeb,0xfd3e,0xfd3f,0xfe10,0xfe19,0xfe30,0xfe52,0xfe54,0xfe61,0xfe63,0xfe63,0xfe68,0xfe68,0xfe6a,0xfe6b,0xff01,0xff03,0xff05,0xff0a,0xff0c,0xff0f,0xff1a,0xff1b,0xff1f,0xff20,0xff3b,0xff3d,0xff3f,0xff3f,0xff5b,0xff5b,0xff5d,0xff5d,0xff5f,0xff65,0x10100,0x10102,0x1039f,0x1039f,0x103d0,0x103d0,0x1056f,0x1056f,0x10857,0x10857,0x1091f,0x1091f,0x1093f,0x1093f,0x10a50,0x10a58,0x10a7f,0x10a7f,0x10af0,0x10af6,0x10b39,0x10b3f,0x10b99,0x10b9c,0x10d6e,0x10d6e,0x10ead,0x10ead,0x10ed0,0x10ed0,0x10f55,0x10f59,0x10f86,0x10f89,0x11047,0x1104d,0x110bb,0x110bc,0x110be,0x110c1,0x11140,0x11143,0x11174,0x11175,0x111c5,0x111c8,0x111cd,0x111cd,0x111db,0x111db,0x111dd,0x111df,0x11238,0x1123d,0x112a9,0x112a9,0x113d4,0x113d5,0x113d7,0x113d8,0x1144b,0x1144f,0x1145a,0x1145b,0x1145d,0x1145d,0x114c6,0x114c6,0x115c1,0x115d7,0x11641,0x11643,0x11660,0x1166c,0x116b9,0x116b9,0x1173c,0x1173e,0x1183b,0x1183b,0x11944,0x11946,0x119e2,0x119e2,0x11a3f,0x11a46,0x11a9a,0x11a9c,0x11a9e,0x11aa2,0x11b00,0x11b09,0x11be1,0x11be1,0x11c41,0x11c45,0x11c70,0x11c71,0x11ef7,0x11ef8,0x11f43,0x11f4f,0x11fff,0x11fff,0x12470,0x12474,0x12ff1,0x12ff2,0x16a6e,0x16a6f,0x16af5,0x16af5,0x16b37,0x16b3b,0x16b44,0x16b44,0x16d6d,0x16d6f,0x16e97,0x16e9a,0x16fe2,0x16fe2,0x1bc9f,0x1bc9f,0x1da87,0x1da8b,0x1e5ff,0x1e5ff,0x1e95e,0x1e95f,};

static uint32_t encode_utf8(const uint32_t* ranges, uint32_t ranges_count, uint8_t* s) {
	uint8_t* const s0 = s;
	for (uint32_t i = 0; i < ranges_count; i += 2)
		for (uint32_t j = ranges[i]; j <= ranges[i + 1]; ++j) s += re2c::utf8::rune_to_bytes(s, j);
	for (uint32_t i = 0; i < 6; ++i) s[i] = 0;
	return s - s0;
}

int main() {
	YYCTYPE* buffer_P = new YYCTYPE[5142];
	uint32_t buffer_P_len = encode_utf8(chars_P, sizeof(chars_P) / sizeof(uint32_t), buffer_P);
	if (!scan(buffer_P, buffer_P + buffer_P_len)) printf("test 'P' failed\n");
	delete[] buffer_P;
	return 0;
}
