/* Generated by re2c */
#line 1 "encodings/unicode_group_P_x.re"
// re2c $INPUT -o $OUTPUT -x
#include <stdint.h>
#include <stdio.h>
#include "utf16.h"
#define YYCTYPE uint16_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_x.c"
{
	YYCTYPE yych;
	yych = *YYCURSOR;
	if (yych <= 0x1CD3) {
		if (yych <= 0x09FC) {
			if (yych <= 0x055F) {
				if (yych <= '}') {
					if (yych <= '>') {
						if (yych <= '*') {
							if (yych <= ' ') goto yy1;
							if (yych != '$') goto yy3;
						} else {
							if (yych <= '/') {
								if (yych >= ',') goto yy3;
							} else {
								if (yych <= '9') goto yy1;
								if (yych <= ';') goto yy3;
							}
						}
					} else {
						if (yych <= '^') {
							if (yych <= '@') goto yy3;
							if (yych <= 'Z') goto yy1;
							if (yych <= ']') goto yy3;
						} else {
							if (yych <= 'z') {
								if (yych <= '_') goto yy3;
							} else {
								if (yych != '|') goto yy3;
							}
						}
					}
				} else {
					if (yych <= 0x00BA) {
						if (yych <= 0x00A7) {
							if (yych == 0x00A1) goto yy3;
							if (yych >= 0x00A7) goto yy3;
						} else {
							if (yych <= 0x00AB) {
								if (yych >= 0x00AB) goto yy3;
							} else {
								if (yych <= 0x00B5) goto yy1;
								if (yych <= 0x00B7) goto yy3;
							}
						}
					} else {
						if (yych <= 0x037D) {
							if (yych <= 0x00BB) goto yy3;
							if (yych == 0x00BF) goto yy3;
						} else {
							if (yych <= 0x0386) {
								if (yych <= 0x037E) goto yy3;
							} else {
								if (yych <= 0x0387) goto yy3;
								if (yych >= 0x055A) goto yy3;
							}
						}
					}
				}
			} else {
				if (yych <= 0x061B) {
					if (yych <= 0x05C5) {
						if (yych <= 0x05BE) {
							if (yych <= 0x0588) goto yy1;
							if (yych <= 0x058A) goto yy3;
							if (yych >= 0x05BE) goto yy3;
						} else {
							if (yych <= 0x05C0) {
								if (yych >= 0x05C0) goto yy3;
							} else {
								if (yych == 0x05C3) goto yy3;
							}
						}
					} else {
						if (yych <= 0x0608) {
							if (yych <= 0x05C6) goto yy3;
							if (yych <= 0x05F2) goto yy1;
							if (yych <= 0x05F4) goto yy3;
						} else {
							if (yych <= 0x060B) {
								if (yych <= 0x060A) goto yy3;
							} else {
								if (yych <= 0x060D) goto yy3;
								if (yych >= 0x061B) goto yy3;
							}
						}
					}
				} else {
					if (yych <= 0x07F6) {
						if (yych <= 0x066D) {
							if (yych <= 0x061C) goto yy1;
							if (yych <= 0x061F) goto yy3;
							if (yych >= 0x066A) goto yy3;
						} else {
							if (yych <= 0x06D4) {
								if (yych >= 0x06D4) goto yy3;
							} else {
								if (yych <= 0x06FF) goto yy1;
								if (yych <= 0x070D) goto yy3;
							}
						}
					} else {
						if (yych <= 0x085E) {
							if (yych <= 0x082F) {
								if (yych <= 0x07F9) goto yy3;
							} else {
								if (yych <= 0x083E) goto yy3;
								if (yych >= 0x085E) goto yy3;
							}
						} else {
							if (yych <= 0x0965) {
								if (yych >= 0x0964) goto yy3;
							} else {
								if (yych == 0x0970) goto yy3;
							}
						}
					}
				}
			}
		} else {
			if (yych <= 0x166D) {
				if (yych <= 0x0F13) {
					if (yych <= 0x0C84) {
						if (yych <= 0x0AEF) {
							if (yych <= 0x09FD) goto yy3;
							if (yych == 0x0A76) goto yy3;
						} else {
							if (yych <= 0x0C76) {
								if (yych <= 0x0AF0) goto yy3;
							} else {
								if (yych <= 0x0C77) goto yy3;
								if (yych >= 0x0C84) goto yy3;
							}
						}
					} else {
						if (yych <= 0x0E4F) {
							if (yych == 0x0DF4) goto yy3;
							if (yych >= 0x0E4F) goto yy3;
						} else {
							if (yych <= 0x0E5B) {
								if (yych >= 0x0E5A) goto yy3;
							} else {
								if (yych <= 0x0F03) goto yy1;
								if (yych <= 0x0F12) goto yy3;
							}
						}
					}
				} else {
					if (yych <= 0x0FDA) {
						if (yych <= 0x0F84) {
							if (yych <= 0x0F14) goto yy3;
							if (yych <= 0x0F39) goto yy1;
							if (yych <= 0x0F3D) goto yy3;
						} else {
							if (yych <= 0x0FCF) {
								if (yych <= 0x0F85) goto yy3;
							} else {
								if (yych <= 0x0FD4) goto yy3;
								if (yych >= 0x0FD9) goto yy3;
							}
						}
					} else {
						if (yych <= 0x10FB) {
							if (yych <= 0x1049) goto yy1;
							if (yych <= 0x104F) goto yy3;
							if (yych >= 0x10FB) goto yy3;
						} else {
							if (yych <= 0x1368) {
								if (yych >= 0x1360) goto yy3;
							} else {
								if (yych == 0x1400) goto yy3;
							}
						}
					}
				}
			} else {
				if (yych <= 0x1A9F) {
					if (yych <= 0x17D6) {
						if (yych <= 0x16EA) {
							if (yych <= 0x166E) goto yy3;
							if (yych <= 0x169A) goto yy1;
							if (yych <= 0x169C) goto yy3;
						} else {
							if (yych <= 0x1734) {
								if (yych <= 0x16ED) goto yy3;
							} else {
								if (yych <= 0x1736) goto yy3;
								if (yych >= 0x17D4) goto yy3;
							}
						}
					} else {
						if (yych <= 0x180A) {
							if (yych <= 0x17D7) goto yy1;
							if (yych <= 0x17DA) goto yy3;
							if (yych >= 0x1800) goto yy3;
						} else {
							if (yych <= 0x1945) {
								if (yych >= 0x1944) goto yy3;
							} else {
								if (yych <= 0x1A1D) goto yy1;
								if (yych <= 0x1A1F) goto yy3;
							}
						}
					}
				} else {
					if (yych <= 0x1B7F) {
						if (yych <= 0x1B4D) {
							if (yych == 0x1AA7) goto yy1;
							if (yych <= 0x1AAD) goto yy3;
						} else {
							if (yych <= 0x1B59) {
								if (yych <= 0x1B4F) goto yy3;
							} else {
								if (yych <= 0x1B60) goto yy3;
								if (yych >= 0x1B7D) goto yy3;
							}
						}
					} else {
						if (yych <= 0x1C7D) {
							if (yych <= 0x1BFF) {
								if (yych >= 0x1BFC) goto yy3;
							} else {
								if (yych <= 0x1C3A) goto yy1;
								if (yych <= 0x1C3F) goto yy3;
							}
						} else {
							if (yych <= 0x1CBF) {
								if (yych <= 0x1C7F) goto yy3;
							} else {
								if (yych <= 0x1CC7) goto yy3;
								if (yych >= 0x1CD3) goto yy3;
							}
						}
					}
				}
			}
		}
	} else {
		if (yych <= 0xA92D) {
			if (yych <= 0x2E2E) {
				if (yych <= 0x2775) {
					if (yych <= 0x207C) {
						if (yych <= 0x2043) {
							if (yych <= 0x200F) goto yy1;
							if (yych <= 0x2027) goto yy3;
							if (yych >= 0x2030) goto yy3;
						} else {
							if (yych <= 0x2051) {
								if (yych >= 0x2045) goto yy3;
							} else {
								if (yych <= 0x2052) goto yy1;
								if (yych <= 0x205E) goto yy3;
							}
						}
					} else {
						if (yych <= 0x2307) {
							if (yych <= 0x207E) goto yy3;
							if (yych <= 0x208C) goto yy1;
							if (yych <= 0x208E) goto yy3;
						} else {
							if (yych <= 0x2328) {
								if (yych <= 0x230B) goto yy3;
							} else {
								if (yych <= 0x232A) goto yy3;
								if (yych >= 0x2768) goto yy3;
							}
						}
					}
				} else {
					if (yych <= 0x29FB) {
						if (yych <= 0x27EF) {
							if (yych <= 0x27C4) goto yy1;
							if (yych <= 0x27C6) goto yy3;
							if (yych >= 0x27E6) goto yy3;
						} else {
							if (yych <= 0x2998) {
								if (yych >= 0x2983) goto yy3;
							} else {
								if (yych <= 0x29D7) goto yy1;
								if (yych <= 0x29DB) goto yy3;
							}
						}
					} else {
						if (yych <= 0x2CFD) {
							if (yych <= 0x29FD) goto yy3;
							if (yych <= 0x2CF8) goto yy1;
							if (yych <= 0x2CFC) goto yy3;
						} else {
							if (yych <= 0x2D6F) {
								if (yych <= 0x2CFF) goto yy3;
							} else {
								if (yych <= 0x2D70) goto yy3;
								if (yych >= 0x2E00) goto yy3;
							}
						}
					}
				}
			} else {
				if (yych <= 0x30FB) {
					if (yych <= 0x3013) {
						if (yych <= 0x2E5D) {
							if (yych <= 0x2E2F) goto yy1;
							if (yych <= 0x2E4F) goto yy3;
							if (yych >= 0x2E52) goto yy3;
						} else {
							if (yych <= 0x3003) {
								if (yych >= 0x3001) goto yy3;
							} else {
								if (yych <= 0x3007) goto yy1;
								if (yych <= 0x3011) goto yy3;
							}
						}
					} else {
						if (yych <= 0x303C) {
							if (yych <= 0x301F) goto yy3;
							if (yych == 0x3030) goto yy3;
						} else {
							if (yych <= 0x309F) {
								if (yych <= 0x303D) goto yy3;
							} else {
								if (yych <= 0x30A0) goto yy3;
								if (yych >= 0x30FB) goto yy3;
							}
						}
					}
				} else {
					if (yych <= 0xA6F1) {
						if (yych <= 0xA60F) {
							if (yych <= 0xA4FD) goto yy1;
							if (yych <= 0xA4FF) goto yy3;
							if (yych >= 0xA60D) goto yy3;
						} else {
							if (yych <= 0xA673) {
								if (yych >= 0xA673) goto yy3;
							} else {
								if (yych == 0xA67E) goto yy3;
							}
						}
					} else {
						if (yych <= 0xA8CF) {
							if (yych <= 0xA873) {
								if (yych <= 0xA6F7) goto yy3;
							} else {
								if (yych <= 0xA877) goto yy3;
								if (yych >= 0xA8CE) goto yy3;
							}
						} else {
							if (yych <= 0xA8FA) {
								if (yych >= 0xA8F8) goto yy3;
							} else {
								if (yych == 0xA8FC) goto yy3;
							}
						}
					}
				}
			}
		} else {
			if (yych <= 0xD838) {
				if (yych <= 0xD801) {
					if (yych <= 0xAA5F) {
						if (yych <= 0xA9C0) {
							if (yych <= 0xA92F) goto yy3;
							if (yych == 0xA95F) goto yy3;
						} else {
							if (yych <= 0xA9DD) {
								if (yych <= 0xA9CD) goto yy3;
							} else {
								if (yych <= 0xA9DF) goto yy3;
								if (yych >= 0xAA5C) goto yy3;
							}
						}
					} else {
						if (yych <= 0xAAF1) {
							if (yych <= 0xAADD) goto yy1;
							if (yych <= 0xAADF) goto yy3;
							if (yych >= 0xAAF0) goto yy3;
						} else {
							if (yych <= 0xABEB) {
								if (yych >= 0xABEB) goto yy3;
							} else {
								if (yych <= 0xD7FF) goto yy1;
								if (yych <= 0xD800) goto yy4;
								goto yy5;
							}
						}
					}
				} else {
					if (yych <= 0xD80A) {
						if (yych <= 0xD805) {
							if (yych <= 0xD802) goto yy6;
							if (yych <= 0xD803) goto yy7;
							if (yych <= 0xD804) goto yy8;
							goto yy9;
						} else {
							if (yych <= 0xD807) {
								if (yych <= 0xD806) goto yy10;
								goto yy11;
							} else {
								if (yych == 0xD809) goto yy12;
							}
						}
					} else {
						if (yych <= 0xD81B) {
							if (yych <= 0xD80B) goto yy13;
							if (yych <= 0xD819) goto yy1;
							if (yych <= 0xD81A) goto yy14;
							goto yy15;
						} else {
							if (yych <= 0xD82F) {
								if (yych >= 0xD82F) goto yy16;
							} else {
								if (yych == 0xD836) goto yy17;
							}
						}
					}
				}
			} else {
				if (yych <= 0xFF03) {
					if (yych <= 0xFE53) {
						if (yych <= 0xFD3F) {
							if (yych <= 0xD839) goto yy18;
							if (yych <= 0xD83A) goto yy19;
							if (yych >= 0xFD3E) goto yy3;
						} else {
							if (yych <= 0xFE19) {
								if (yych >= 0xFE10) goto yy3;
							} else {
								if (yych <= 0xFE2F) goto yy1;
								if (yych <= 0xFE52) goto yy3;
							}
						}
					} else {
						if (yych <= 0xFE67) {
							if (yych == 0xFE62) goto yy1;
							if (yych <= 0xFE63) goto yy3;
						} else {
							if (yych <= 0xFE69) {
								if (yych <= 0xFE68) goto yy3;
							} else {
								if (yych <= 0xFE6B) goto yy3;
								if (yych >= 0xFF01) goto yy3;
							}
						}
					}
				} else {
					if (yych <= 0xFF3A) {
						if (yych <= 0xFF0F) {
							if (yych <= 0xFF04) goto yy1;
							if (yych != 0xFF0B) goto yy3;
						} else {
							if (yych <= 0xFF1B) {
								if (yych >= 0xFF1A) goto yy3;
							} else {
								if (yych <= 0xFF1E) goto yy1;
								if (yych <= 0xFF20) goto yy3;
							}
						}
					} else {
						if (yych <= 0xFF5B) {
							if (yych <= 0xFF3E) {
								if (yych <= 0xFF3D) goto yy3;
							} else {
								if (yych <= 0xFF3F) goto yy3;
								if (yych >= 0xFF5B) goto yy3;
							}
						} else {
							if (yych <= 0xFF5D) {
								if (yych >= 0xFF5D) goto yy3;
							} else {
								if (yych <= 0xFF5E) goto yy1;
								if (yych <= 0xFF65) goto yy3;
							}
						}
					}
				}
			}
		}
	}
yy1:
	++YYCURSOR;
yy2:
#line 15 "encodings/unicode_group_P_x.re"
	{ return YYCURSOR - 1 == limit; }
#line 499 "encodings/unicode_group_P_x.c"
yy3:
	++YYCURSOR;
#line 14 "encodings/unicode_group_P_x.re"
	{ goto P; }
#line 504 "encodings/unicode_group_P_x.c"
yy4:
	yych = *++YYCURSOR;
	if (yych <= 0xDF9E) {
		if (yych <= 0xDCFF) goto yy2;
		if (yych <= 0xDD02) goto yy3;
		goto yy2;
	} else {
		if (yych <= 0xDF9F) goto yy3;
		if (yych == 0xDFD0) goto yy3;
		goto yy2;
	}
yy5:
	yych = *++YYCURSOR;
	if (yych == 0xDD6F) goto yy3;
	goto yy2;
yy6:
	yych = *++YYCURSOR;
	if (yych <= 0xDE58) {
		if (yych <= 0xDD1F) {
			if (yych == 0xDC57) goto yy3;
			if (yych <= 0xDD1E) goto yy2;
			goto yy3;
		} else {
			if (yych == 0xDD3F) goto yy3;
			if (yych <= 0xDE4F) goto yy2;
			goto yy3;
		}
	} else {
		if (yych <= 0xDEF6) {
			if (yych == 0xDE7F) goto yy3;
			if (yych <= 0xDEEF) goto yy2;
			goto yy3;
		} else {
			if (yych <= 0xDF3F) {
				if (yych <= 0xDF38) goto yy2;
				goto yy3;
			} else {
				if (yych <= 0xDF98) goto yy2;
				if (yych <= 0xDF9C) goto yy3;
				goto yy2;
			}
		}
	}
yy7:
	yych = *++YYCURSOR;
	if (yych <= 0xDECF) {
		if (yych <= 0xDD6E) {
			if (yych <= 0xDD6D) goto yy2;
			goto yy3;
		} else {
			if (yych == 0xDEAD) goto yy3;
			goto yy2;
		}
	} else {
		if (yych <= 0xDF59) {
			if (yych <= 0xDED0) goto yy3;
			if (yych <= 0xDF54) goto yy2;
			goto yy3;
		} else {
			if (yych <= 0xDF85) goto yy2;
			if (yych <= 0xDF89) goto yy3;
			goto yy2;
		}
	}
yy8:
	yych = *++YYCURSOR;
	if (yych <= 0xDDCC) {
		if (yych <= 0xDCC1) {
			if (yych <= 0xDCBA) {
				if (yych <= 0xDC46) goto yy2;
				if (yych <= 0xDC4D) goto yy3;
				goto yy2;
			} else {
				if (yych == 0xDCBD) goto yy2;
				goto yy3;
			}
		} else {
			if (yych <= 0xDD73) {
				if (yych <= 0xDD3F) goto yy2;
				if (yych <= 0xDD43) goto yy3;
				goto yy2;
			} else {
				if (yych <= 0xDD75) goto yy3;
				if (yych <= 0xDDC4) goto yy2;
				if (yych <= 0xDDC8) goto yy3;
				goto yy2;
			}
		}
	} else {
		if (yych <= 0xDE3D) {
			if (yych <= 0xDDDB) {
				if (yych <= 0xDDCD) goto yy3;
				if (yych <= 0xDDDA) goto yy2;
				goto yy3;
			} else {
				if (yych <= 0xDDDC) goto yy2;
				if (yych <= 0xDDDF) goto yy3;
				if (yych <= 0xDE37) goto yy2;
				goto yy3;
			}
		} else {
			if (yych <= 0xDFD3) {
				if (yych == 0xDEA9) goto yy3;
				goto yy2;
			} else {
				if (yych == 0xDFD6) goto yy2;
				if (yych <= 0xDFD8) goto yy3;
				goto yy2;
			}
		}
	}
yy9:
	yych = *++YYCURSOR;
	if (yych <= 0xDDC0) {
		if (yych <= 0xDC5B) {
			if (yych <= 0xDC4A) goto yy2;
			if (yych <= 0xDC4F) goto yy3;
			if (yych <= 0xDC59) goto yy2;
			goto yy3;
		} else {
			if (yych <= 0xDC5D) {
				if (yych <= 0xDC5C) goto yy2;
				goto yy3;
			} else {
				if (yych == 0xDCC6) goto yy3;
				goto yy2;
			}
		}
	} else {
		if (yych <= 0xDE6C) {
			if (yych <= 0xDE40) {
				if (yych <= 0xDDD7) goto yy3;
				goto yy2;
			} else {
				if (yych <= 0xDE43) goto yy3;
				if (yych <= 0xDE5F) goto yy2;
				goto yy3;
			}
		} else {
			if (yych <= 0xDEB9) {
				if (yych <= 0xDEB8) goto yy2;
				goto yy3;
			} else {
				if (yych <= 0xDF3B) goto yy2;
				if (yych <= 0xDF3E) goto yy3;
				goto yy2;
			}
		}
	}
yy10:
	yych = *++YYCURSOR;
	if (yych <= 0xDE46) {
		if (yych <= 0xDD46) {
			if (yych == 0xDC3B) goto yy3;
			if (yych <= 0xDD43) goto yy2;
			goto yy3;
		} else {
			if (yych == 0xDDE2) goto yy3;
			if (yych <= 0xDE3E) goto yy2;
			goto yy3;
		}
	} else {
		if (yych <= 0xDEA2) {
			if (yych <= 0xDE99) goto yy2;
			if (yych == 0xDE9D) goto yy2;
			goto yy3;
		} else {
			if (yych <= 0xDF09) {
				if (yych <= 0xDEFF) goto yy2;
				goto yy3;
			} else {
				if (yych == 0xDFE1) goto yy3;
				goto yy2;
			}
		}
	}
yy11:
	yych = *++YYCURSOR;
	if (yych <= 0xDEF6) {
		if (yych <= 0xDC45) {
			if (yych <= 0xDC40) goto yy2;
			goto yy3;
		} else {
			if (yych <= 0xDC6F) goto yy2;
			if (yych <= 0xDC71) goto yy3;
			goto yy2;
		}
	} else {
		if (yych <= 0xDF4F) {
			if (yych <= 0xDEF8) goto yy3;
			if (yych <= 0xDF42) goto yy2;
			goto yy3;
		} else {
			if (yych == 0xDFFF) goto yy3;
			goto yy2;
		}
	}
yy12:
	yych = *++YYCURSOR;
	if (yych <= 0xDC6F) goto yy2;
	if (yych <= 0xDC74) goto yy3;
	goto yy2;
yy13:
	yych = *++YYCURSOR;
	if (yych <= 0xDFF0) goto yy2;
	if (yych <= 0xDFF2) goto yy3;
	goto yy2;
yy14:
	yych = *++YYCURSOR;
	if (yych <= 0xDEF5) {
		if (yych <= 0xDE6D) goto yy2;
		if (yych <= 0xDE6F) goto yy3;
		if (yych <= 0xDEF4) goto yy2;
		goto yy3;
	} else {
		if (yych <= 0xDF3B) {
			if (yych <= 0xDF36) goto yy2;
			goto yy3;
		} else {
			if (yych == 0xDF44) goto yy3;
			goto yy2;
		}
	}
yy15:
	yych = *++YYCURSOR;
	if (yych <= 0xDE96) {
		if (yych <= 0xDD6C) goto yy2;
		if (yych <= 0xDD6F) goto yy3;
		goto yy2;
	} else {
		if (yych <= 0xDE9A) goto yy3;
		if (yych == 0xDFE2) goto yy3;
		goto yy2;
	}
yy16:
	yych = *++YYCURSOR;
	if (yych == 0xDC9F) goto yy3;
	goto yy2;
yy17:
	yych = *++YYCURSOR;
	if (yych <= 0xDE86) goto yy2;
	if (yych <= 0xDE8B) goto yy3;
	goto yy2;
yy18:
	yych = *++YYCURSOR;
	if (yych == 0xDDFF) goto yy3;
	goto yy2;
yy19:
	yych = *++YYCURSOR;
	if (yych <= 0xDD5D) goto yy2;
	if (yych <= 0xDD5F) goto yy3;
	goto yy2;
}
#line 16 "encodings/unicode_group_P_x.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_utf16(const uint32_t* ranges, uint32_t ranges_count, uint16_t* s) {
	uint16_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)
			if (j <= re2c::utf16::MAX_1WORD_RUNE) {
				*s++ = j;
			} else {
				*s++ = re2c::utf16::lead_surr(j);
				*s++ = re2c::utf16::trail_surr(j);
			}
	for (uint32_t i = 0; i < 2; ++i) s[i] = 0;
	return s - s0;
}

int main() {
	YYCTYPE* buffer_P = new YYCTYPE[1714];
	uint32_t buffer_P_len = encode_utf16(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;
}
