text: /* Generated by re2c */
  #line 1 "unicode_group_Mc.u--encoding-policy(substitute).re"
  #include <stdio.h>
  
  #define YYCTYPE unsigned int
  bool scan(const YYCTYPE * start, const YYCTYPE * const limit)
  {
  	__attribute__((unused)) const YYCTYPE * YYMARKER; // silence compiler warnings when YYMARKER is not used
  #	define YYCURSOR start
  Mc:
  	
  #line 13 "<stdout>"
  {
  	YYCTYPE yych;
  
  	yych = *YYCURSOR;
  	if (yych <= 0x00001099) {
  		if (yych <= 0x00000C03) {
  			if (yych <= 0x00000AC0) {
  				if (yych <= 0x000009C0) {
  					if (yych <= 0x00000948) {
  						if (yych <= 0x0000093A) {
  							if (yych == 0x00000903) goto yy4;
  						} else {
  							if (yych <= 0x0000093B) goto yy4;
  							if (yych <= 0x0000093D) goto yy2;
  							if (yych <= 0x00000940) goto yy4;
  						}
  					} else {
  						if (yych <= 0x0000094F) {
  							if (yych != 0x0000094D) goto yy4;
  						} else {
  							if (yych <= 0x00000981) goto yy2;
  							if (yych <= 0x00000983) goto yy4;
  							if (yych >= 0x000009BE) goto yy4;
  						}
  					}
  				} else {
  					if (yych <= 0x00000A02) {
  						if (yych <= 0x000009CA) {
  							if (yych <= 0x000009C6) goto yy2;
  							if (yych <= 0x000009C8) goto yy4;
  						} else {
  							if (yych <= 0x000009CC) goto yy4;
  							if (yych == 0x000009D7) goto yy4;
  						}
  					} else {
  						if (yych <= 0x00000A40) {
  							if (yych <= 0x00000A03) goto yy4;
  							if (yych >= 0x00000A3E) goto yy4;
  						} else {
  							if (yych == 0x00000A83) goto yy4;
  							if (yych >= 0x00000ABE) goto yy4;
  						}
  					}
  				}
  			} else {
  				if (yych <= 0x00000B4C) {
  					if (yych <= 0x00000B3D) {
  						if (yych <= 0x00000ACA) {
  							if (yych == 0x00000AC9) goto yy4;
  						} else {
  							if (yych <= 0x00000ACC) goto yy4;
  							if (yych <= 0x00000B01) goto yy2;
  							if (yych <= 0x00000B03) goto yy4;
  						}
  					} else {
  						if (yych <= 0x00000B40) {
  							if (yych != 0x00000B3F) goto yy4;
  						} else {
  							if (yych <= 0x00000B46) goto yy2;
  							if (yych <= 0x00000B48) goto yy4;
  							if (yych >= 0x00000B4B) goto yy4;
  						}
  					}
  				} else {
  					if (yych <= 0x00000BC5) {
  						if (yych <= 0x00000BBD) {
  							if (yych == 0x00000B57) goto yy4;
  						} else {
  							if (yych == 0x00000BC0) goto yy2;
  							if (yych <= 0x00000BC2) goto yy4;
  						}
  					} else {
  						if (yych <= 0x00000BCC) {
  							if (yych != 0x00000BC9) goto yy4;
  						} else {
  							if (yych == 0x00000BD7) goto yy4;
  							if (yych >= 0x00000C01) goto yy4;
  						}
  					}
  				}
  			}
  		} else {
  			if (yych <= 0x00000DD1) {
  				if (yych <= 0x00000CD6) {
  					if (yych <= 0x00000CBF) {
  						if (yych <= 0x00000C81) {
  							if (yych <= 0x00000C40) goto yy2;
  							if (yych <= 0x00000C44) goto yy4;
  						} else {
  							if (yych <= 0x00000C83) goto yy4;
  							if (yych == 0x00000CBE) goto yy4;
  						}
  					} else {
  						if (yych <= 0x00000CC8) {
  							if (yych <= 0x00000CC4) goto yy4;
  							if (yych >= 0x00000CC7) goto yy4;
  						} else {
  							if (yych <= 0x00000CC9) goto yy2;
  							if (yych <= 0x00000CCB) goto yy4;
  							if (yych >= 0x00000CD5) goto yy4;
  						}
  					}
  				} else {
  					if (yych <= 0x00000D49) {
  						if (yych <= 0x00000D3D) {
  							if (yych <= 0x00000D01) goto yy2;
  							if (yych <= 0x00000D03) goto yy4;
  						} else {
  							if (yych <= 0x00000D40) goto yy4;
  							if (yych <= 0x00000D45) goto yy2;
  							if (yych <= 0x00000D48) goto yy4;
  						}
  					} else {
  						if (yych <= 0x00000D57) {
  							if (yych <= 0x00000D4C) goto yy4;
  							if (yych >= 0x00000D57) goto yy4;
  						} else {
  							if (yych <= 0x00000D81) goto yy2;
  							if (yych <= 0x00000D83) goto yy4;
  							if (yych >= 0x00000DCF) goto yy4;
  						}
  					}
  				}
  			} else {
  				if (yych <= 0x00001038) {
  					if (yych <= 0x00000F7E) {
  						if (yych <= 0x00000DF1) {
  							if (yych <= 0x00000DD7) goto yy2;
  							if (yych <= 0x00000DDF) goto yy4;
  						} else {
  							if (yych <= 0x00000DF3) goto yy4;
  							if (yych <= 0x00000F3D) goto yy2;
  							if (yych <= 0x00000F3F) goto yy4;
  						}
  					} else {
  						if (yych <= 0x0000102C) {
  							if (yych <= 0x00000F7F) goto yy4;
  							if (yych >= 0x0000102B) goto yy4;
  						} else {
  							if (yych == 0x00001031) goto yy4;
  							if (yych >= 0x00001038) goto yy4;
  						}
  					}
  				} else {
  					if (yych <= 0x00001066) {
  						if (yych <= 0x00001055) {
  							if (yych <= 0x0000103A) goto yy2;
  							if (yych <= 0x0000103C) goto yy4;
  						} else {
  							if (yych <= 0x00001057) goto yy4;
  							if (yych <= 0x00001061) goto yy2;
  							if (yych <= 0x00001064) goto yy4;
  						}
  					} else {
  						if (yych <= 0x00001086) {
  							if (yych <= 0x0000106D) goto yy4;
  							if (yych <= 0x00001082) goto yy2;
  							if (yych <= 0x00001084) goto yy4;
  						} else {
  							if (yych <= 0x0000108C) goto yy4;
  							if (yych == 0x0000108F) goto yy4;
  						}
  					}
  				}
  			}
  		}
  	} else {
  		if (yych <= 0x00001BF3) {
  			if (yych <= 0x00001A62) {
  				if (yych <= 0x00001932) {
  					if (yych <= 0x000017C8) {
  						if (yych <= 0x000017B6) {
  							if (yych <= 0x0000109C) goto yy4;
  							if (yych >= 0x000017B6) goto yy4;
  						} else {
  							if (yych <= 0x000017BD) goto yy2;
  							if (yych != 0x000017C6) goto yy4;
  						}
  					} else {
  						if (yych <= 0x00001928) {
  							if (yych <= 0x00001922) goto yy2;
  							if (yych <= 0x00001926) goto yy4;
  						} else {
  							if (yych <= 0x0000192B) goto yy4;
  							if (yych <= 0x0000192F) goto yy2;
  							if (yych <= 0x00001931) goto yy4;
  						}
  					}
  				} else {
  					if (yych <= 0x00001A1B) {
  						if (yych <= 0x000019C0) {
  							if (yych <= 0x00001938) goto yy4;
  							if (yych >= 0x000019B0) goto yy4;
  						} else {
  							if (yych <= 0x000019C7) goto yy2;
  							if (yych <= 0x000019C9) goto yy4;
  							if (yych >= 0x00001A19) goto yy4;
  						}
  					} else {
  						if (yych <= 0x00001A56) {
  							if (yych == 0x00001A55) goto yy4;
  						} else {
  							if (yych <= 0x00001A57) goto yy4;
  							if (yych == 0x00001A61) goto yy4;
  						}
  					}
  				}
  			} else {
  				if (yych <= 0x00001B81) {
  					if (yych <= 0x00001B35) {
  						if (yych <= 0x00001A72) {
  							if (yych <= 0x00001A64) goto yy4;
  							if (yych >= 0x00001A6D) goto yy4;
  						} else {
  							if (yych == 0x00001B04) goto yy4;
  							if (yych >= 0x00001B35) goto yy4;
  						}
  					} else {
  						if (yych <= 0x00001B3C) {
  							if (yych == 0x00001B3B) goto yy4;
  						} else {
  							if (yych == 0x00001B42) goto yy2;
  							if (yych <= 0x00001B44) goto yy4;
  						}
  					}
  				} else {
  					if (yych <= 0x00001BAA) {
  						if (yych <= 0x00001BA1) {
  							if (yych <= 0x00001B82) goto yy4;
  							if (yych >= 0x00001BA1) goto yy4;
  						} else {
  							if (yych <= 0x00001BA5) goto yy2;
  							if (yych <= 0x00001BA7) goto yy4;
  							if (yych >= 0x00001BAA) goto yy4;
  						}
  					} else {
  						if (yych <= 0x00001BEC) {
  							if (yych == 0x00001BE7) goto yy4;
  							if (yych >= 0x00001BEA) goto yy4;
  						} else {
  							if (yych == 0x00001BEE) goto yy4;
  							if (yych >= 0x00001BF2) goto yy4;
  						}
  					}
  				}
  			}
  		} else {
  			if (yych <= 0x0000AA30) {
  				if (yych <= 0x0000A881) {
  					if (yych <= 0x00001CF1) {
  						if (yych <= 0x00001C33) {
  							if (yych <= 0x00001C23) goto yy2;
  							if (yych <= 0x00001C2B) goto yy4;
  						} else {
  							if (yych <= 0x00001C35) goto yy4;
  							if (yych == 0x00001CE1) goto yy4;
  						}
  					} else {
  						if (yych <= 0x0000A824) {
  							if (yych <= 0x00001CF2) goto yy4;
  							if (yych >= 0x0000A823) goto yy4;
  						} else {
  							if (yych == 0x0000A827) goto yy4;
  							if (yych >= 0x0000A880) goto yy4;
  						}
  					}
  				} else {
  					if (yych <= 0x0000A9B3) {
  						if (yych <= 0x0000A951) {
  							if (yych <= 0x0000A8B3) goto yy2;
  							if (yych <= 0x0000A8C3) goto yy4;
  						} else {
  							if (yych <= 0x0000A953) goto yy4;
  							if (yych == 0x0000A983) goto yy4;
  						}
  					} else {
  						if (yych <= 0x0000A9BB) {
  							if (yych <= 0x0000A9B5) goto yy4;
  							if (yych >= 0x0000A9BA) goto yy4;
  						} else {
  							if (yych <= 0x0000A9BC) goto yy2;
  							if (yych <= 0x0000A9C0) goto yy4;
  							if (yych >= 0x0000AA2F) goto yy4;
  						}
  					}
  				}
  			} else {
  				if (yych <= 0x0000ABEC) {
  					if (yych <= 0x0000ABE2) {
  						if (yych <= 0x0000AA4C) {
  							if (yych <= 0x0000AA32) goto yy2;
  							if (yych <= 0x0000AA34) goto yy4;
  						} else {
  							if (yych <= 0x0000AA4D) goto yy4;
  							if (yych == 0x0000AA7B) goto yy4;
  						}
  					} else {
  						if (yych <= 0x0000ABE7) {
  							if (yych != 0x0000ABE5) goto yy4;
  						} else {
  							if (yych <= 0x0000ABE8) goto yy2;
  							if (yych != 0x0000ABEB) goto yy4;
  						}
  					}
  				} else {
  					if (yych <= 0x000110AF) {
  						if (yych <= 0x00011001) {
  							if (yych == 0x00011000) goto yy4;
  						} else {
  							if (yych <= 0x00011002) goto yy4;
  							if (yych == 0x00011082) goto yy4;
  						}
  					} else {
  						if (yych <= 0x0001D164) {
  							if (yych <= 0x000110B2) goto yy4;
  							if (yych <= 0x000110B6) goto yy2;
  							if (yych <= 0x000110B8) goto yy4;
  						} else {
  							if (yych <= 0x0001D166) goto yy4;
  							if (yych <= 0x0001D16C) goto yy2;
  							if (yych <= 0x0001D172) goto yy4;
  						}
  					}
  				}
  			}
  		}
  	}
  yy2:
  	++YYCURSOR;
  #line 13 "unicode_group_Mc.u--encoding-policy(substitute).re"
  	{ return YYCURSOR == limit; }
  #line 345 "<stdout>"
  yy4:
  	++YYCURSOR;
  #line 12 "unicode_group_Mc.u--encoding-policy(substitute).re"
  	{ goto Mc; }
  #line 350 "<stdout>"
  }
  #line 14 "unicode_group_Mc.u--encoding-policy(substitute).re"
  
  }
  static const unsigned int chars_Mc [] = {0x903,0x903,  0x93b,0x93b,  0x93e,0x940,  0x949,0x94c,  0x94e,0x94f,  0x982,0x983,  0x9be,0x9c0,  0x9c7,0x9c8,  0x9cb,0x9cc,  0x9d7,0x9d7,  0xa03,0xa03,  0xa3e,0xa40,  0xa83,0xa83,  0xabe,0xac0,  0xac9,0xac9,  0xacb,0xacc,  0xb02,0xb03,  0xb3e,0xb3e,  0xb40,0xb40,  0xb47,0xb48,  0xb4b,0xb4c,  0xb57,0xb57,  0xbbe,0xbbf,  0xbc1,0xbc2,  0xbc6,0xbc8,  0xbca,0xbcc,  0xbd7,0xbd7,  0xc01,0xc03,  0xc41,0xc44,  0xc82,0xc83,  0xcbe,0xcbe,  0xcc0,0xcc4,  0xcc7,0xcc8,  0xcca,0xccb,  0xcd5,0xcd6,  0xd02,0xd03,  0xd3e,0xd40,  0xd46,0xd48,  0xd4a,0xd4c,  0xd57,0xd57,  0xd82,0xd83,  0xdcf,0xdd1,  0xdd8,0xddf,  0xdf2,0xdf3,  0xf3e,0xf3f,  0xf7f,0xf7f,  0x102b,0x102c,  0x1031,0x1031,  0x1038,0x1038,  0x103b,0x103c,  0x1056,0x1057,  0x1062,0x1064,  0x1067,0x106d,  0x1083,0x1084,  0x1087,0x108c,  0x108f,0x108f,  0x109a,0x109c,  0x17b6,0x17b6,  0x17be,0x17c5,  0x17c7,0x17c8,  0x1923,0x1926,  0x1929,0x192b,  0x1930,0x1931,  0x1933,0x1938,  0x19b0,0x19c0,  0x19c8,0x19c9,  0x1a19,0x1a1b,  0x1a55,0x1a55,  0x1a57,0x1a57,  0x1a61,0x1a61,  0x1a63,0x1a64,  0x1a6d,0x1a72,  0x1b04,0x1b04,  0x1b35,0x1b35,  0x1b3b,0x1b3b,  0x1b3d,0x1b41,  0x1b43,0x1b44,  0x1b82,0x1b82,  0x1ba1,0x1ba1,  0x1ba6,0x1ba7,  0x1baa,0x1baa,  0x1be7,0x1be7,  0x1bea,0x1bec,  0x1bee,0x1bee,  0x1bf2,0x1bf3,  0x1c24,0x1c2b,  0x1c34,0x1c35,  0x1ce1,0x1ce1,  0x1cf2,0x1cf2,  0xa823,0xa824,  0xa827,0xa827,  0xa880,0xa881,  0xa8b4,0xa8c3,  0xa952,0xa953,  0xa983,0xa983,  0xa9b4,0xa9b5,  0xa9ba,0xa9bb,  0xa9bd,0xa9c0,  0xaa2f,0xaa30,  0xaa33,0xaa34,  0xaa4d,0xaa4d,  0xaa7b,0xaa7b,  0xabe3,0xabe4,  0xabe6,0xabe7,  0xabe9,0xabea,  0xabec,0xabec,  0x11000,0x11000,  0x11002,0x11002,  0x11082,0x11082,  0x110b0,0x110b2,  0x110b7,0x110b8,  0x1d165,0x1d166,  0x1d16d,0x1d172,  0x0,0x0};
  static unsigned int encode_utf32 (const unsigned int * ranges, unsigned int ranges_count, unsigned int * s)
  {
  	unsigned int * const s_start = s;
  	for (unsigned int i = 0; i < ranges_count; i += 2)
  		for (unsigned int j = ranges[i]; j <= ranges[i + 1]; ++j)
  			*s++ = j;
  	return s - s_start;
  }
  
  int main ()
  {
  	YYCTYPE * buffer_Mc = new YYCTYPE [288];
  	unsigned int buffer_len = encode_utf32 (chars_Mc, sizeof (chars_Mc) / sizeof (unsigned int), buffer_Mc);
  	if (!scan (reinterpret_cast<const YYCTYPE *> (buffer_Mc), reinterpret_cast<const YYCTYPE *> (buffer_Mc + buffer_len)))
  		printf("test 'Mc' failed\n");
  	delete [] buffer_Mc;
  	return 0;
  }
  