Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/C/MariaDB/storage/mroonga/vendor/groonga/lib/   (MariaDB Server Version 8.1-8.4©)  Datei vom 1.9.2026 mit Größe 2 MB image not shown  

SSL nfkc50.c   Interaktion und
PortierbarkeitC

 

/* -*- c-basic-offset: 2 -*- */
/*
  Copyright(C) 2010-2016 Brazil

  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
  License version 2.1 as published by the Free Software Foundation.

  This library is distributed in the hope that it will be useful,
  but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  Lesser General Public License for more details.

  You should have received a copy of the GNU Lesser General Public
  License along with this library; if not, write to the Free Software
  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1335  USA
*/


/*
  Don't edit this file by hand. it generated automatically by nfkc.rb.
*/


#include "grn.h"
#include "grn_nfkc.h"
#include <groonga/nfkc.h>

#ifdef GRN_WITH_NFKC

static grn_char_type grn_nfkc50_char_type_table_[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_c2[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_c3[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_cb[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_cd[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_ce[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_cf[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_d2[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_d4[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_d5[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_d6[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_d7[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_d8[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_d9[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_db[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_dc[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_de[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_df[] = {
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0a4[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0a5[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0a6[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0a7[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e0a8[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0a9[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0aa[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0ab[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e0ac[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0ad[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0ae[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0af[] = {
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e0b0[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0b1[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_e0b2[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0b3[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e0b4[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0b5[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_e0b6[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0b7[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e0b8[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e0b9[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e0ba[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0bb[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0bc[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e0bd[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e0be[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e0bf[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e180[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e181[] = {
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e183[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e185[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e186[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e189[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e18a[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e18b[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e18c[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e18d[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_e18e[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e199[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e19a[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e19b[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_e19c[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e19d[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e19f[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_e1a0[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e1a5[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e1a7[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e1a8[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e1ad[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e1ba[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e1bc[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e1bd[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e1be[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e1bf[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e280[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e281[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e282[] = {
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e284[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e285[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_e286[] = {
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e291[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_e292[] = {
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e293[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_e29a[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e29c[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e29d[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_e29e[] = {
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e29f[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e2ac[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e2b0[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e2b1[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e2b3[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e2b4[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e2b5[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e2b6[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e2b7[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_e2b8[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e2bf[] = {
  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_e382[] = {
  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
  GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA, GRN_CHAR_HIRAGANA,
  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA,
  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA,
  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA,
  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA
};

static grn_char_type grn_nfkc50_char_type_table_e387[] = {
  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
  GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI, GRN_CHAR_KANJI,
  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA,
  GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA, GRN_CHAR_KATAKANA
};

static grn_char_type grn_nfkc50_char_type_table_ea9c[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_eaa0[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_eaa1[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_efac[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_efad[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_efb4[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_efb6[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_efb7[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_efb8[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_efb9[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_efbc[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_efbd[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_efbf[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_f09080[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09081[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09084[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_f09085[] = {
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_f09086[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_f0908c[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f0908d[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_f0908e[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f0908f[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_SYMBOL, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_f09092[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_f090a0[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f090a4[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_f090a8[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f090a9[] = {
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_f09291[] = {
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_f09d84[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_f09d85[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_f09d86[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_f09d89[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_SYMBOL
};

static grn_char_type grn_nfkc50_char_type_table_f09d8d[] = {
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL,
  GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_SYMBOL, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

static grn_char_type grn_nfkc50_char_type_table_f09d91[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09d92[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09d93[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09d94[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09d95[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS,
  GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09d9a[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09d9b[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09d9c[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09d9d[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09d9e[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA
};

static grn_char_type grn_nfkc50_char_type_table_f09d9f[] = {
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_SYMBOL, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA,
  GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_ALPHA, GRN_CHAR_OTHERS, GRN_CHAR_OTHERS, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT,
  GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT, GRN_CHAR_DIGIT
};

grn_char_type
grn_nfkc50_char_type(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x21 &&
        utf8[0] <= 0x7e) {
      return grn_nfkc50_char_type_table_[utf8[0] - 0x21];
    } else {
      return GRN_CHAR_OTHERS;
    }
  } else {
    switch (utf8[0]) {
    case 0xc2 :
      if (utf8[1] >= 0xa1 &&
          utf8[1] <= 0xbf) {
        return grn_nfkc50_char_type_table_c2[utf8[1] - 0xa1];
      }
      break;
    case 0xc3 :
      return grn_nfkc50_char_type_table_c3[utf8[1] - 0x80];
    case 0xc4 :
      return GRN_CHAR_ALPHA;
    case 0xc5 :
      return GRN_CHAR_ALPHA;
    case 0xc6 :
      return GRN_CHAR_ALPHA;
    case 0xc7 :
      return GRN_CHAR_ALPHA;
    case 0xc8 :
      return GRN_CHAR_ALPHA;
    case 0xc9 :
      return GRN_CHAR_ALPHA;
    case 0xca :
      return GRN_CHAR_ALPHA;
    case 0xcb :
      return grn_nfkc50_char_type_table_cb[utf8[1] - 0x80];
    case 0xcd :
      if (utf8[1] >= 0xb4 &&
          utf8[1] <= 0xbe) {
        return grn_nfkc50_char_type_table_cd[utf8[1] - 0xb4];
      }
      break;
    case 0xce :
      if (utf8[1] >= 0x84 &&
          utf8[1] <= 0xbf) {
        return grn_nfkc50_char_type_table_ce[utf8[1] - 0x84];
      }
      break;
    case 0xcf :
      return grn_nfkc50_char_type_table_cf[utf8[1] - 0x80];
    case 0xd0 :
      return GRN_CHAR_ALPHA;
    case 0xd1 :
      return GRN_CHAR_ALPHA;
    case 0xd2 :
      return grn_nfkc50_char_type_table_d2[utf8[1] - 0x80];
    case 0xd3 :
      return GRN_CHAR_ALPHA;
    case 0xd4 :
      return grn_nfkc50_char_type_table_d4[utf8[1] - 0x80];
    case 0xd5 :
      return grn_nfkc50_char_type_table_d5[utf8[1] - 0x80];
    case 0xd6 :
      if (utf8[1] >= 0x80 &&
          utf8[1] <= 0xbe) {
        return grn_nfkc50_char_type_table_d6[utf8[1] - 0x80];
      }
      break;
    case 0xd7 :
      if (utf8[1] >= 0x80 &&
          utf8[1] <= 0xb4) {
        return grn_nfkc50_char_type_table_d7[utf8[1] - 0x80];
      }
      break;
    case 0xd8 :
      if (utf8[1] >= 0x8b &&
          utf8[1] <= 0xba) {
        return grn_nfkc50_char_type_table_d8[utf8[1] - 0x8b];
      }
      break;
    case 0xd9 :
      return grn_nfkc50_char_type_table_d9[utf8[1] - 0x80];
    case 0xda :
      return GRN_CHAR_ALPHA;
    case 0xdb :
      return grn_nfkc50_char_type_table_db[utf8[1] - 0x80];
    case 0xdc :
      if (utf8[1] >= 0x80 &&
          utf8[1] <= 0xaf) {
        return grn_nfkc50_char_type_table_dc[utf8[1] - 0x80];
      }
      break;
    case 0xdd :
      if (utf8[1] >= 0x8d &&
          utf8[1] <= 0xad) {
        return GRN_CHAR_ALPHA;
      }
      break;
    case 0xde :
      if (utf8[1] >= 0x80 &&
          utf8[1] <= 0xb1) {
        return grn_nfkc50_char_type_table_de[utf8[1] - 0x80];
      }
      break;
    case 0xdf :
      if (utf8[1] >= 0x80 &&
          utf8[1] <= 0xba) {
        return grn_nfkc50_char_type_table_df[utf8[1] - 0x80];
      }
      break;
    case 0xe0 :
      switch (utf8[1]) {
      case 0xa4 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_char_type_table_e0a4[utf8[2] - 0x84];
        }
        break;
      case 0xa5 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_char_type_table_e0a5[utf8[2] - 0x90];
        }
        break;
      case 0xa6 :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_char_type_table_e0a6[utf8[2] - 0x85];
        }
        break;
      case 0xa7 :
        if (utf8[2] >= 0x8e &&
            utf8[2] <= 0xba) {
          return grn_nfkc50_char_type_table_e0a7[utf8[2] - 0x8e];
        }
        break;
      case 0xa8 :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_char_type_table_e0a8[utf8[2] - 0x85];
        }
        break;
      case 0xa9 :
        if (utf8[2] >= 0x99 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_char_type_table_e0a9[utf8[2] - 0x99];
        }
        break;
      case 0xaa :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_char_type_table_e0aa[utf8[2] - 0x85];
        }
        break;
      case 0xab :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xb1) {
          return grn_nfkc50_char_type_table_e0ab[utf8[2] - 0x90];
        }
        break;
      case 0xac :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_char_type_table_e0ac[utf8[2] - 0x85];
        }
        break;
      case 0xad :
        if (utf8[2] >= 0x9c &&
            utf8[2] <= 0xb1) {
          return grn_nfkc50_char_type_table_e0ad[utf8[2] - 0x9c];
        }
        break;
      case 0xae :
        if (utf8[2] >= 0x83 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_char_type_table_e0ae[utf8[2] - 0x83];
        }
        break;
      case 0xaf :
        if (utf8[2] >= 0xa6 &&
            utf8[2] <= 0xba) {
          return grn_nfkc50_char_type_table_e0af[utf8[2] - 0xa6];
        }
        break;
      case 0xb0 :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_char_type_table_e0b0[utf8[2] - 0x85];
        }
        break;
      case 0xb1 :
        if (utf8[2] >= 0xa0 &&
            utf8[2] <= 0xaf) {
          return grn_nfkc50_char_type_table_e0b1[utf8[2] - 0xa0];
        }
        break;
      case 0xb2 :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_char_type_table_e0b2[utf8[2] - 0x85];
        }
        break;
      case 0xb3 :
        if (utf8[2] >= 0x9e &&
            utf8[2] <= 0xb2) {
          return grn_nfkc50_char_type_table_e0b3[utf8[2] - 0x9e];
        }
        break;
      case 0xb4 :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_char_type_table_e0b4[utf8[2] - 0x85];
        }
        break;
      case 0xb5 :
        if (utf8[2] >= 0xa0 &&
            utf8[2] <= 0xaf) {
          return grn_nfkc50_char_type_table_e0b5[utf8[2] - 0xa0];
        }
        break;
      case 0xb6 :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_char_type_table_e0b6[utf8[2] - 0x85];
        }
        break;
      case 0xb7 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_char_type_table_e0b7[utf8[2] - 0x80];
        }
        break;
      case 0xb8 :
        if (utf8[2] >= 0x81 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_char_type_table_e0b8[utf8[2] - 0x81];
        }
        break;
      case 0xb9 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x9b) {
          return grn_nfkc50_char_type_table_e0b9[utf8[2] - 0x80];
        }
        break;
      case 0xba :
        if (utf8[2] >= 0x81 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_char_type_table_e0ba[utf8[2] - 0x81];
        }
        break;
      case 0xbb :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x9d) {
          return grn_nfkc50_char_type_table_e0bb[utf8[2] - 0x80];
        }
        break;
      case 0xbc :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_char_type_table_e0bc[utf8[2] - 0x80];
        }
        break;
      case 0xbd :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xaa) {
          return grn_nfkc50_char_type_table_e0bd[utf8[2] - 0x80];
        }
        break;
      case 0xbe :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_char_type_table_e0be[utf8[2] - 0x85];
        }
        break;
      case 0xbf :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x91) {
          return grn_nfkc50_char_type_table_e0bf[utf8[2] - 0x80];
        }
        break;
      default :
        break;
      }
      break;
    case 0xe1 :
      switch (utf8[1]) {
      case 0x80 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xaa) {
          return grn_nfkc50_char_type_table_e180[utf8[2] - 0x80];
        }
        break;
      case 0x81 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x95) {
          return grn_nfkc50_char_type_table_e181[utf8[2] - 0x80];
        }
        break;
      case 0x82 :
        if (utf8[2] >= 0xa0 &&
            utf8[2] <= 0xbf) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0x83 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_char_type_table_e183[utf8[2] - 0x80];
        }
        break;
      case 0x84 :
        return GRN_CHAR_ALPHA;
      case 0x85 :
        return grn_nfkc50_char_type_table_e185[utf8[2] - 0x80];
      case 0x86 :
        return grn_nfkc50_char_type_table_e186[utf8[2] - 0x80];
      case 0x87 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb9) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0x88 :
        return GRN_CHAR_ALPHA;
      case 0x89 :
        return grn_nfkc50_char_type_table_e189[utf8[2] - 0x80];
      case 0x8a :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_char_type_table_e18a[utf8[2] - 0x80];
        }
        break;
      case 0x8b :
        return grn_nfkc50_char_type_table_e18b[utf8[2] - 0x80];
      case 0x8c :
        return grn_nfkc50_char_type_table_e18c[utf8[2] - 0x80];
      case 0x8d :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_char_type_table_e18d[utf8[2] - 0x80];
        }
        break;
      case 0x8e :
        return grn_nfkc50_char_type_table_e18e[utf8[2] - 0x80];
      case 0x8f :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb4) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0x90 :
        if (utf8[2] >= 0x81 &&
            utf8[2] <= 0xbf) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0x91 :
        return GRN_CHAR_ALPHA;
      case 0x92 :
        return GRN_CHAR_ALPHA;
      case 0x93 :
        return GRN_CHAR_ALPHA;
      case 0x94 :
        return GRN_CHAR_ALPHA;
      case 0x95 :
        return GRN_CHAR_ALPHA;
      case 0x96 :
        return GRN_CHAR_ALPHA;
      case 0x97 :
        return GRN_CHAR_ALPHA;
      case 0x98 :
        return GRN_CHAR_ALPHA;
      case 0x99 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb6) {
          return grn_nfkc50_char_type_table_e199[utf8[2] - 0x80];
        }
        break;
      case 0x9a :
        if (utf8[2] >= 0x81 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_char_type_table_e19a[utf8[2] - 0x81];
        }
        break;
      case 0x9b :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_char_type_table_e19b[utf8[2] - 0x80];
        }
        break;
      case 0x9c :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb6) {
          return grn_nfkc50_char_type_table_e19c[utf8[2] - 0x80];
        }
        break;
      case 0x9d :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_char_type_table_e19d[utf8[2] - 0x80];
        }
        break;
      case 0x9e :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb3) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0x9f :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_char_type_table_e19f[utf8[2] - 0x94];
        }
        break;
      case 0xa0 :
        return grn_nfkc50_char_type_table_e1a0[utf8[2] - 0x80];
      case 0xa1 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb7) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xa2 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xa8) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xa4 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x9c) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xa5 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_char_type_table_e1a5[utf8[2] - 0x80];
        }
        break;
      case 0xa6 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xa9) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xa7 :
        if (utf8[2] >= 0x81 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_char_type_table_e1a7[utf8[2] - 0x81];
        }
        break;
      case 0xa8 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x9f) {
          return grn_nfkc50_char_type_table_e1a8[utf8[2] - 0x80];
        }
        break;
      case 0xac :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xb3) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xad :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_char_type_table_e1ad[utf8[2] - 0x85];
        }
        break;
      case 0xb4 :
        return GRN_CHAR_ALPHA;
      case 0xb5 :
        return GRN_CHAR_ALPHA;
      case 0xb6 :
        return GRN_CHAR_ALPHA;
      case 0xb8 :
        return GRN_CHAR_ALPHA;
      case 0xb9 :
        return GRN_CHAR_ALPHA;
      case 0xba :
        return grn_nfkc50_char_type_table_e1ba[utf8[2] - 0x80];
      case 0xbb :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb9) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xbc :
        return grn_nfkc50_char_type_table_e1bc[utf8[2] - 0x80];
      case 0xbd :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_char_type_table_e1bd[utf8[2] - 0x80];
        }
        break;
      case 0xbe :
        return grn_nfkc50_char_type_table_e1be[utf8[2] - 0x80];
      case 0xbf :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_char_type_table_e1bf[utf8[2] - 0x80];
        }
        break;
      default :
        break;
      }
      break;
    case 0xe2 :
      switch (utf8[1]) {
      case 0x80 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_char_type_table_e280[utf8[2] - 0x90];
        }
        break;
      case 0x81 :
        return grn_nfkc50_char_type_table_e281[utf8[2] - 0x80];
      case 0x82 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb5) {
          return grn_nfkc50_char_type_table_e282[utf8[2] - 0x80];
        }
        break;
      case 0x84 :
        return grn_nfkc50_char_type_table_e284[utf8[2] - 0x80];
      case 0x85 :
        return grn_nfkc50_char_type_table_e285[utf8[2] - 0x80];
      case 0x86 :
        return grn_nfkc50_char_type_table_e286[utf8[2] - 0x80];
      case 0x87 :
        return GRN_CHAR_SYMBOL;
      case 0x88 :
        return GRN_CHAR_SYMBOL;
      case 0x89 :
        return GRN_CHAR_SYMBOL;
      case 0x8a :
        return GRN_CHAR_SYMBOL;
      case 0x8b :
        return GRN_CHAR_SYMBOL;
      case 0x8c :
        return GRN_CHAR_SYMBOL;
      case 0x8d :
        return GRN_CHAR_SYMBOL;
      case 0x8e :
        return GRN_CHAR_SYMBOL;
      case 0x8f :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xa7) {
          return GRN_CHAR_SYMBOL;
        }
        break;
      case 0x90 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xa6) {
          return GRN_CHAR_SYMBOL;
        }
        break;
      case 0x91 :
        return grn_nfkc50_char_type_table_e291[utf8[2] - 0x80];
      case 0x92 :
        return grn_nfkc50_char_type_table_e292[utf8[2] - 0x80];
      case 0x93 :
        return grn_nfkc50_char_type_table_e293[utf8[2] - 0x80];
      case 0x94 :
        return GRN_CHAR_SYMBOL;
      case 0x95 :
        return GRN_CHAR_SYMBOL;
      case 0x96 :
        return GRN_CHAR_SYMBOL;
      case 0x97 :
        return GRN_CHAR_SYMBOL;
      case 0x98 :
        return GRN_CHAR_SYMBOL;
      case 0x99 :
        return GRN_CHAR_SYMBOL;
      case 0x9a :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb2) {
          return grn_nfkc50_char_type_table_e29a[utf8[2] - 0x80];
        }
        break;
      case 0x9c :
        if (utf8[2] >= 0x81 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_char_type_table_e29c[utf8[2] - 0x81];
        }
        break;
      case 0x9d :
        return grn_nfkc50_char_type_table_e29d[utf8[2] - 0x80];
      case 0x9e :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_char_type_table_e29e[utf8[2] - 0x80];
        }
        break;
      case 0x9f :
        return grn_nfkc50_char_type_table_e29f[utf8[2] - 0x80];
      case 0xa0 :
        return GRN_CHAR_SYMBOL;
      case 0xa1 :
        return GRN_CHAR_SYMBOL;
      case 0xa2 :
        return GRN_CHAR_SYMBOL;
      case 0xa3 :
        return GRN_CHAR_SYMBOL;
      case 0xa4 :
        return GRN_CHAR_SYMBOL;
      case 0xa5 :
        return GRN_CHAR_SYMBOL;
      case 0xa6 :
        return GRN_CHAR_SYMBOL;
      case 0xa7 :
        return GRN_CHAR_SYMBOL;
      case 0xa8 :
        return GRN_CHAR_SYMBOL;
      case 0xa9 :
        return GRN_CHAR_SYMBOL;
      case 0xaa :
        return GRN_CHAR_SYMBOL;
      case 0xab :
        return GRN_CHAR_SYMBOL;
      case 0xac :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xa3) {
          return grn_nfkc50_char_type_table_e2ac[utf8[2] - 0x80];
        }
        break;
      case 0xb0 :
        return grn_nfkc50_char_type_table_e2b0[utf8[2] - 0x80];
      case 0xb1 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb7) {
          return grn_nfkc50_char_type_table_e2b1[utf8[2] - 0x80];
        }
        break;
      case 0xb2 :
        return GRN_CHAR_ALPHA;
      case 0xb3 :
        return grn_nfkc50_char_type_table_e2b3[utf8[2] - 0x80];
      case 0xb4 :
        return grn_nfkc50_char_type_table_e2b4[utf8[2] - 0x80];
      case 0xb5 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xaf) {
          return grn_nfkc50_char_type_table_e2b5[utf8[2] - 0x80];
        }
        break;
      case 0xb6 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_char_type_table_e2b6[utf8[2] - 0x80];
        }
        break;
      case 0xb7 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x9e) {
          return grn_nfkc50_char_type_table_e2b7[utf8[2] - 0x80];
        }
        break;
      case 0xb8 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x97) {
          return grn_nfkc50_char_type_table_e2b8[utf8[2] - 0x80];
        }
        break;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbb) {
          return grn_nfkc50_char_type_table_e2bf[utf8[2] - 0x80];
        }
        break;
      default :
        break;
      }
      break;
    case 0xe3 :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_SYMBOL;
      case 0x81 :
        return GRN_CHAR_HIRAGANA;
      case 0x82 :
        return grn_nfkc50_char_type_table_e382[utf8[2] - 0x80];
      case 0x83 :
        return GRN_CHAR_KATAKANA;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return grn_nfkc50_char_type_table_e387[utf8[2] - 0x80];
      case 0x88 :
        return GRN_CHAR_SYMBOL;
      case 0x89 :
        return GRN_CHAR_SYMBOL;
      case 0x8a :
        return GRN_CHAR_SYMBOL;
      case 0x8b :
        return GRN_CHAR_SYMBOL;
      case 0x8c :
        return GRN_CHAR_SYMBOL;
      case 0x8d :
        return GRN_CHAR_SYMBOL;
      case 0x8e :
        return GRN_CHAR_SYMBOL;
      case 0x8f :
        return GRN_CHAR_SYMBOL;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        return GRN_CHAR_KANJI;
      case 0x94 :
        return GRN_CHAR_KANJI;
      case 0x95 :
        return GRN_CHAR_KANJI;
      case 0x96 :
        return GRN_CHAR_KANJI;
      case 0x97 :
        return GRN_CHAR_KANJI;
      case 0x98 :
        return GRN_CHAR_KANJI;
      case 0x99 :
        return GRN_CHAR_KANJI;
      case 0x9a :
        return GRN_CHAR_KANJI;
      case 0x9b :
        return GRN_CHAR_KANJI;
      case 0x9c :
        return GRN_CHAR_KANJI;
      case 0x9d :
        return GRN_CHAR_KANJI;
      case 0x9e :
        return GRN_CHAR_KANJI;
      case 0x9f :
        return GRN_CHAR_KANJI;
      case 0xa0 :
        return GRN_CHAR_KANJI;
      case 0xa1 :
        return GRN_CHAR_KANJI;
      case 0xa2 :
        return GRN_CHAR_KANJI;
      case 0xa3 :
        return GRN_CHAR_KANJI;
      case 0xa4 :
        return GRN_CHAR_KANJI;
      case 0xa5 :
        return GRN_CHAR_KANJI;
      case 0xa6 :
        return GRN_CHAR_KANJI;
      case 0xa7 :
        return GRN_CHAR_KANJI;
      case 0xa8 :
        return GRN_CHAR_KANJI;
      case 0xa9 :
        return GRN_CHAR_KANJI;
      case 0xaa :
        return GRN_CHAR_KANJI;
      case 0xab :
        return GRN_CHAR_KANJI;
      case 0xac :
        return GRN_CHAR_KANJI;
      case 0xad :
        return GRN_CHAR_KANJI;
      case 0xae :
        return GRN_CHAR_KANJI;
      case 0xaf :
        return GRN_CHAR_KANJI;
      case 0xb0 :
        return GRN_CHAR_KANJI;
      case 0xb1 :
        return GRN_CHAR_KANJI;
      case 0xb2 :
        return GRN_CHAR_KANJI;
      case 0xb3 :
        return GRN_CHAR_KANJI;
      case 0xb4 :
        return GRN_CHAR_KANJI;
      case 0xb5 :
        return GRN_CHAR_KANJI;
      case 0xb6 :
        return GRN_CHAR_KANJI;
      case 0xb7 :
        return GRN_CHAR_KANJI;
      case 0xb8 :
        return GRN_CHAR_KANJI;
      case 0xb9 :
        return GRN_CHAR_KANJI;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        return GRN_CHAR_KANJI;
      default :
        break;
      }
      break;
    case 0xe4 :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_KANJI;
      case 0x81 :
        return GRN_CHAR_KANJI;
      case 0x82 :
        return GRN_CHAR_KANJI;
      case 0x83 :
        return GRN_CHAR_KANJI;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return GRN_CHAR_KANJI;
      case 0x88 :
        return GRN_CHAR_KANJI;
      case 0x89 :
        return GRN_CHAR_KANJI;
      case 0x8a :
        return GRN_CHAR_KANJI;
      case 0x8b :
        return GRN_CHAR_KANJI;
      case 0x8c :
        return GRN_CHAR_KANJI;
      case 0x8d :
        return GRN_CHAR_KANJI;
      case 0x8e :
        return GRN_CHAR_KANJI;
      case 0x8f :
        return GRN_CHAR_KANJI;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        return GRN_CHAR_KANJI;
      case 0x94 :
        return GRN_CHAR_KANJI;
      case 0x95 :
        return GRN_CHAR_KANJI;
      case 0x96 :
        return GRN_CHAR_KANJI;
      case 0x97 :
        return GRN_CHAR_KANJI;
      case 0x98 :
        return GRN_CHAR_KANJI;
      case 0x99 :
        return GRN_CHAR_KANJI;
      case 0x9a :
        return GRN_CHAR_KANJI;
      case 0x9b :
        return GRN_CHAR_KANJI;
      case 0x9c :
        return GRN_CHAR_KANJI;
      case 0x9d :
        return GRN_CHAR_KANJI;
      case 0x9e :
        return GRN_CHAR_KANJI;
      case 0x9f :
        return GRN_CHAR_KANJI;
      case 0xa0 :
        return GRN_CHAR_KANJI;
      case 0xa1 :
        return GRN_CHAR_KANJI;
      case 0xa2 :
        return GRN_CHAR_KANJI;
      case 0xa3 :
        return GRN_CHAR_KANJI;
      case 0xa4 :
        return GRN_CHAR_KANJI;
      case 0xa5 :
        return GRN_CHAR_KANJI;
      case 0xa6 :
        return GRN_CHAR_KANJI;
      case 0xa7 :
        return GRN_CHAR_KANJI;
      case 0xa8 :
        return GRN_CHAR_KANJI;
      case 0xa9 :
        return GRN_CHAR_KANJI;
      case 0xaa :
        return GRN_CHAR_KANJI;
      case 0xab :
        return GRN_CHAR_KANJI;
      case 0xac :
        return GRN_CHAR_KANJI;
      case 0xad :
        return GRN_CHAR_KANJI;
      case 0xae :
        return GRN_CHAR_KANJI;
      case 0xaf :
        return GRN_CHAR_KANJI;
      case 0xb0 :
        return GRN_CHAR_KANJI;
      case 0xb1 :
        return GRN_CHAR_KANJI;
      case 0xb2 :
        return GRN_CHAR_KANJI;
      case 0xb3 :
        return GRN_CHAR_KANJI;
      case 0xb4 :
        return GRN_CHAR_KANJI;
      case 0xb5 :
        return GRN_CHAR_KANJI;
      case 0xb6 :
        return GRN_CHAR_KANJI;
      case 0xb7 :
        return GRN_CHAR_SYMBOL;
      case 0xb8 :
        return GRN_CHAR_KANJI;
      case 0xb9 :
        return GRN_CHAR_KANJI;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        return GRN_CHAR_KANJI;
      default :
        break;
      }
      break;
    case 0xe5 :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_KANJI;
      case 0x81 :
        return GRN_CHAR_KANJI;
      case 0x82 :
        return GRN_CHAR_KANJI;
      case 0x83 :
        return GRN_CHAR_KANJI;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return GRN_CHAR_KANJI;
      case 0x88 :
        return GRN_CHAR_KANJI;
      case 0x89 :
        return GRN_CHAR_KANJI;
      case 0x8a :
        return GRN_CHAR_KANJI;
      case 0x8b :
        return GRN_CHAR_KANJI;
      case 0x8c :
        return GRN_CHAR_KANJI;
      case 0x8d :
        return GRN_CHAR_KANJI;
      case 0x8e :
        return GRN_CHAR_KANJI;
      case 0x8f :
        return GRN_CHAR_KANJI;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        return GRN_CHAR_KANJI;
      case 0x94 :
        return GRN_CHAR_KANJI;
      case 0x95 :
        return GRN_CHAR_KANJI;
      case 0x96 :
        return GRN_CHAR_KANJI;
      case 0x97 :
        return GRN_CHAR_KANJI;
      case 0x98 :
        return GRN_CHAR_KANJI;
      case 0x99 :
        return GRN_CHAR_KANJI;
      case 0x9a :
        return GRN_CHAR_KANJI;
      case 0x9b :
        return GRN_CHAR_KANJI;
      case 0x9c :
        return GRN_CHAR_KANJI;
      case 0x9d :
        return GRN_CHAR_KANJI;
      case 0x9e :
        return GRN_CHAR_KANJI;
      case 0x9f :
        return GRN_CHAR_KANJI;
      case 0xa0 :
        return GRN_CHAR_KANJI;
      case 0xa1 :
        return GRN_CHAR_KANJI;
      case 0xa2 :
        return GRN_CHAR_KANJI;
      case 0xa3 :
        return GRN_CHAR_KANJI;
      case 0xa4 :
        return GRN_CHAR_KANJI;
      case 0xa5 :
        return GRN_CHAR_KANJI;
      case 0xa6 :
        return GRN_CHAR_KANJI;
      case 0xa7 :
        return GRN_CHAR_KANJI;
      case 0xa8 :
        return GRN_CHAR_KANJI;
      case 0xa9 :
        return GRN_CHAR_KANJI;
      case 0xaa :
        return GRN_CHAR_KANJI;
      case 0xab :
        return GRN_CHAR_KANJI;
      case 0xac :
        return GRN_CHAR_KANJI;
      case 0xad :
        return GRN_CHAR_KANJI;
      case 0xae :
        return GRN_CHAR_KANJI;
      case 0xaf :
        return GRN_CHAR_KANJI;
      case 0xb0 :
        return GRN_CHAR_KANJI;
      case 0xb1 :
        return GRN_CHAR_KANJI;
      case 0xb2 :
        return GRN_CHAR_KANJI;
      case 0xb3 :
        return GRN_CHAR_KANJI;
      case 0xb4 :
        return GRN_CHAR_KANJI;
      case 0xb5 :
        return GRN_CHAR_KANJI;
      case 0xb6 :
        return GRN_CHAR_KANJI;
      case 0xb7 :
        return GRN_CHAR_KANJI;
      case 0xb8 :
        return GRN_CHAR_KANJI;
      case 0xb9 :
        return GRN_CHAR_KANJI;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        return GRN_CHAR_KANJI;
      default :
        break;
      }
      break;
    case 0xe6 :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_KANJI;
      case 0x81 :
        return GRN_CHAR_KANJI;
      case 0x82 :
        return GRN_CHAR_KANJI;
      case 0x83 :
        return GRN_CHAR_KANJI;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return GRN_CHAR_KANJI;
      case 0x88 :
        return GRN_CHAR_KANJI;
      case 0x89 :
        return GRN_CHAR_KANJI;
      case 0x8a :
        return GRN_CHAR_KANJI;
      case 0x8b :
        return GRN_CHAR_KANJI;
      case 0x8c :
        return GRN_CHAR_KANJI;
      case 0x8d :
        return GRN_CHAR_KANJI;
      case 0x8e :
        return GRN_CHAR_KANJI;
      case 0x8f :
        return GRN_CHAR_KANJI;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        return GRN_CHAR_KANJI;
      case 0x94 :
        return GRN_CHAR_KANJI;
      case 0x95 :
        return GRN_CHAR_KANJI;
      case 0x96 :
        return GRN_CHAR_KANJI;
      case 0x97 :
        return GRN_CHAR_KANJI;
      case 0x98 :
        return GRN_CHAR_KANJI;
      case 0x99 :
        return GRN_CHAR_KANJI;
      case 0x9a :
        return GRN_CHAR_KANJI;
      case 0x9b :
        return GRN_CHAR_KANJI;
      case 0x9c :
        return GRN_CHAR_KANJI;
      case 0x9d :
        return GRN_CHAR_KANJI;
      case 0x9e :
        return GRN_CHAR_KANJI;
      case 0x9f :
        return GRN_CHAR_KANJI;
      case 0xa0 :
        return GRN_CHAR_KANJI;
      case 0xa1 :
        return GRN_CHAR_KANJI;
      case 0xa2 :
        return GRN_CHAR_KANJI;
      case 0xa3 :
        return GRN_CHAR_KANJI;
      case 0xa4 :
        return GRN_CHAR_KANJI;
      case 0xa5 :
        return GRN_CHAR_KANJI;
      case 0xa6 :
        return GRN_CHAR_KANJI;
      case 0xa7 :
        return GRN_CHAR_KANJI;
      case 0xa8 :
        return GRN_CHAR_KANJI;
      case 0xa9 :
        return GRN_CHAR_KANJI;
      case 0xaa :
        return GRN_CHAR_KANJI;
      case 0xab :
        return GRN_CHAR_KANJI;
      case 0xac :
        return GRN_CHAR_KANJI;
      case 0xad :
        return GRN_CHAR_KANJI;
      case 0xae :
        return GRN_CHAR_KANJI;
      case 0xaf :
        return GRN_CHAR_KANJI;
      case 0xb0 :
        return GRN_CHAR_KANJI;
      case 0xb1 :
        return GRN_CHAR_KANJI;
      case 0xb2 :
        return GRN_CHAR_KANJI;
      case 0xb3 :
        return GRN_CHAR_KANJI;
      case 0xb4 :
        return GRN_CHAR_KANJI;
      case 0xb5 :
        return GRN_CHAR_KANJI;
      case 0xb6 :
        return GRN_CHAR_KANJI;
      case 0xb7 :
        return GRN_CHAR_KANJI;
      case 0xb8 :
        return GRN_CHAR_KANJI;
      case 0xb9 :
        return GRN_CHAR_KANJI;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        return GRN_CHAR_KANJI;
      default :
        break;
      }
      break;
    case 0xe7 :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_KANJI;
      case 0x81 :
        return GRN_CHAR_KANJI;
      case 0x82 :
        return GRN_CHAR_KANJI;
      case 0x83 :
        return GRN_CHAR_KANJI;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return GRN_CHAR_KANJI;
      case 0x88 :
        return GRN_CHAR_KANJI;
      case 0x89 :
        return GRN_CHAR_KANJI;
      case 0x8a :
        return GRN_CHAR_KANJI;
      case 0x8b :
        return GRN_CHAR_KANJI;
      case 0x8c :
        return GRN_CHAR_KANJI;
      case 0x8d :
        return GRN_CHAR_KANJI;
      case 0x8e :
        return GRN_CHAR_KANJI;
      case 0x8f :
        return GRN_CHAR_KANJI;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        return GRN_CHAR_KANJI;
      case 0x94 :
        return GRN_CHAR_KANJI;
      case 0x95 :
        return GRN_CHAR_KANJI;
      case 0x96 :
        return GRN_CHAR_KANJI;
      case 0x97 :
        return GRN_CHAR_KANJI;
      case 0x98 :
        return GRN_CHAR_KANJI;
      case 0x99 :
        return GRN_CHAR_KANJI;
      case 0x9a :
        return GRN_CHAR_KANJI;
      case 0x9b :
        return GRN_CHAR_KANJI;
      case 0x9c :
        return GRN_CHAR_KANJI;
      case 0x9d :
        return GRN_CHAR_KANJI;
      case 0x9e :
        return GRN_CHAR_KANJI;
      case 0x9f :
        return GRN_CHAR_KANJI;
      case 0xa0 :
        return GRN_CHAR_KANJI;
      case 0xa1 :
        return GRN_CHAR_KANJI;
      case 0xa2 :
        return GRN_CHAR_KANJI;
      case 0xa3 :
        return GRN_CHAR_KANJI;
      case 0xa4 :
        return GRN_CHAR_KANJI;
      case 0xa5 :
        return GRN_CHAR_KANJI;
      case 0xa6 :
        return GRN_CHAR_KANJI;
      case 0xa7 :
        return GRN_CHAR_KANJI;
      case 0xa8 :
        return GRN_CHAR_KANJI;
      case 0xa9 :
        return GRN_CHAR_KANJI;
      case 0xaa :
        return GRN_CHAR_KANJI;
      case 0xab :
        return GRN_CHAR_KANJI;
      case 0xac :
        return GRN_CHAR_KANJI;
      case 0xad :
        return GRN_CHAR_KANJI;
      case 0xae :
        return GRN_CHAR_KANJI;
      case 0xaf :
        return GRN_CHAR_KANJI;
      case 0xb0 :
        return GRN_CHAR_KANJI;
      case 0xb1 :
        return GRN_CHAR_KANJI;
      case 0xb2 :
        return GRN_CHAR_KANJI;
      case 0xb3 :
        return GRN_CHAR_KANJI;
      case 0xb4 :
        return GRN_CHAR_KANJI;
      case 0xb5 :
        return GRN_CHAR_KANJI;
      case 0xb6 :
        return GRN_CHAR_KANJI;
      case 0xb7 :
        return GRN_CHAR_KANJI;
      case 0xb8 :
        return GRN_CHAR_KANJI;
      case 0xb9 :
        return GRN_CHAR_KANJI;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        return GRN_CHAR_KANJI;
      default :
        break;
      }
      break;
    case 0xe8 :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_KANJI;
      case 0x81 :
        return GRN_CHAR_KANJI;
      case 0x82 :
        return GRN_CHAR_KANJI;
      case 0x83 :
        return GRN_CHAR_KANJI;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return GRN_CHAR_KANJI;
      case 0x88 :
        return GRN_CHAR_KANJI;
      case 0x89 :
        return GRN_CHAR_KANJI;
      case 0x8a :
        return GRN_CHAR_KANJI;
      case 0x8b :
        return GRN_CHAR_KANJI;
      case 0x8c :
        return GRN_CHAR_KANJI;
      case 0x8d :
        return GRN_CHAR_KANJI;
      case 0x8e :
        return GRN_CHAR_KANJI;
      case 0x8f :
        return GRN_CHAR_KANJI;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        return GRN_CHAR_KANJI;
      case 0x94 :
        return GRN_CHAR_KANJI;
      case 0x95 :
        return GRN_CHAR_KANJI;
      case 0x96 :
        return GRN_CHAR_KANJI;
      case 0x97 :
        return GRN_CHAR_KANJI;
      case 0x98 :
        return GRN_CHAR_KANJI;
      case 0x99 :
        return GRN_CHAR_KANJI;
      case 0x9a :
        return GRN_CHAR_KANJI;
      case 0x9b :
        return GRN_CHAR_KANJI;
      case 0x9c :
        return GRN_CHAR_KANJI;
      case 0x9d :
        return GRN_CHAR_KANJI;
      case 0x9e :
        return GRN_CHAR_KANJI;
      case 0x9f :
        return GRN_CHAR_KANJI;
      case 0xa0 :
        return GRN_CHAR_KANJI;
      case 0xa1 :
        return GRN_CHAR_KANJI;
      case 0xa2 :
        return GRN_CHAR_KANJI;
      case 0xa3 :
        return GRN_CHAR_KANJI;
      case 0xa4 :
        return GRN_CHAR_KANJI;
      case 0xa5 :
        return GRN_CHAR_KANJI;
      case 0xa6 :
        return GRN_CHAR_KANJI;
      case 0xa7 :
        return GRN_CHAR_KANJI;
      case 0xa8 :
        return GRN_CHAR_KANJI;
      case 0xa9 :
        return GRN_CHAR_KANJI;
      case 0xaa :
        return GRN_CHAR_KANJI;
      case 0xab :
        return GRN_CHAR_KANJI;
      case 0xac :
        return GRN_CHAR_KANJI;
      case 0xad :
        return GRN_CHAR_KANJI;
      case 0xae :
        return GRN_CHAR_KANJI;
      case 0xaf :
        return GRN_CHAR_KANJI;
      case 0xb0 :
        return GRN_CHAR_KANJI;
      case 0xb1 :
        return GRN_CHAR_KANJI;
      case 0xb2 :
        return GRN_CHAR_KANJI;
      case 0xb3 :
        return GRN_CHAR_KANJI;
      case 0xb4 :
        return GRN_CHAR_KANJI;
      case 0xb5 :
        return GRN_CHAR_KANJI;
      case 0xb6 :
        return GRN_CHAR_KANJI;
      case 0xb7 :
        return GRN_CHAR_KANJI;
      case 0xb8 :
        return GRN_CHAR_KANJI;
      case 0xb9 :
        return GRN_CHAR_KANJI;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        return GRN_CHAR_KANJI;
      default :
        break;
      }
      break;
    case 0xe9 :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_KANJI;
      case 0x81 :
        return GRN_CHAR_KANJI;
      case 0x82 :
        return GRN_CHAR_KANJI;
      case 0x83 :
        return GRN_CHAR_KANJI;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return GRN_CHAR_KANJI;
      case 0x88 :
        return GRN_CHAR_KANJI;
      case 0x89 :
        return GRN_CHAR_KANJI;
      case 0x8a :
        return GRN_CHAR_KANJI;
      case 0x8b :
        return GRN_CHAR_KANJI;
      case 0x8c :
        return GRN_CHAR_KANJI;
      case 0x8d :
        return GRN_CHAR_KANJI;
      case 0x8e :
        return GRN_CHAR_KANJI;
      case 0x8f :
        return GRN_CHAR_KANJI;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        return GRN_CHAR_KANJI;
      case 0x94 :
        return GRN_CHAR_KANJI;
      case 0x95 :
        return GRN_CHAR_KANJI;
      case 0x96 :
        return GRN_CHAR_KANJI;
      case 0x97 :
        return GRN_CHAR_KANJI;
      case 0x98 :
        return GRN_CHAR_KANJI;
      case 0x99 :
        return GRN_CHAR_KANJI;
      case 0x9a :
        return GRN_CHAR_KANJI;
      case 0x9b :
        return GRN_CHAR_KANJI;
      case 0x9c :
        return GRN_CHAR_KANJI;
      case 0x9d :
        return GRN_CHAR_KANJI;
      case 0x9e :
        return GRN_CHAR_KANJI;
      case 0x9f :
        return GRN_CHAR_KANJI;
      case 0xa0 :
        return GRN_CHAR_KANJI;
      case 0xa1 :
        return GRN_CHAR_KANJI;
      case 0xa2 :
        return GRN_CHAR_KANJI;
      case 0xa3 :
        return GRN_CHAR_KANJI;
      case 0xa4 :
        return GRN_CHAR_KANJI;
      case 0xa5 :
        return GRN_CHAR_KANJI;
      case 0xa6 :
        return GRN_CHAR_KANJI;
      case 0xa7 :
        return GRN_CHAR_KANJI;
      case 0xa8 :
        return GRN_CHAR_KANJI;
      case 0xa9 :
        return GRN_CHAR_KANJI;
      case 0xaa :
        return GRN_CHAR_KANJI;
      case 0xab :
        return GRN_CHAR_KANJI;
      case 0xac :
        return GRN_CHAR_KANJI;
      case 0xad :
        return GRN_CHAR_KANJI;
      case 0xae :
        return GRN_CHAR_KANJI;
      case 0xaf :
        return GRN_CHAR_KANJI;
      case 0xb0 :
        return GRN_CHAR_KANJI;
      case 0xb1 :
        return GRN_CHAR_KANJI;
      case 0xb2 :
        return GRN_CHAR_KANJI;
      case 0xb3 :
        return GRN_CHAR_KANJI;
      case 0xb4 :
        return GRN_CHAR_KANJI;
      case 0xb5 :
        return GRN_CHAR_KANJI;
      case 0xb6 :
        return GRN_CHAR_KANJI;
      case 0xb7 :
        return GRN_CHAR_KANJI;
      case 0xb8 :
        return GRN_CHAR_KANJI;
      case 0xb9 :
        return GRN_CHAR_KANJI;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        return GRN_CHAR_KANJI;
      default :
        break;
      }
      break;
    case 0xea :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_KANJI;
      case 0x81 :
        return GRN_CHAR_KANJI;
      case 0x82 :
        return GRN_CHAR_KANJI;
      case 0x83 :
        return GRN_CHAR_KANJI;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return GRN_CHAR_KANJI;
      case 0x88 :
        return GRN_CHAR_KANJI;
      case 0x89 :
        return GRN_CHAR_KANJI;
      case 0x8a :
        return GRN_CHAR_KANJI;
      case 0x8b :
        return GRN_CHAR_KANJI;
      case 0x8c :
        return GRN_CHAR_KANJI;
      case 0x8d :
        return GRN_CHAR_KANJI;
      case 0x8e :
        return GRN_CHAR_KANJI;
      case 0x8f :
        return GRN_CHAR_KANJI;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x8f) {
          return GRN_CHAR_KANJI;
        }
        break;
      case 0x9c :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xa1) {
          return grn_nfkc50_char_type_table_ea9c[utf8[2] - 0x80];
        }
        break;
      case 0xa0 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xab) {
          return grn_nfkc50_char_type_table_eaa0[utf8[2] - 0x80];
        }
        break;
      case 0xa1 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb7) {
          return grn_nfkc50_char_type_table_eaa1[utf8[2] - 0x80];
        }
        break;
      case 0xb0 :
        return GRN_CHAR_KANJI;
      case 0xb1 :
        return GRN_CHAR_KANJI;
      case 0xb2 :
        return GRN_CHAR_KANJI;
      case 0xb3 :
        return GRN_CHAR_KANJI;
      case 0xb4 :
        return GRN_CHAR_KANJI;
      case 0xb5 :
        return GRN_CHAR_KANJI;
      case 0xb6 :
        return GRN_CHAR_KANJI;
      case 0xb7 :
        return GRN_CHAR_KANJI;
      case 0xb8 :
        return GRN_CHAR_KANJI;
      case 0xb9 :
        return GRN_CHAR_KANJI;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        return GRN_CHAR_KANJI;
      default :
        break;
      }
      break;
    case 0xeb :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_KANJI;
      case 0x81 :
        return GRN_CHAR_KANJI;
      case 0x82 :
        return GRN_CHAR_KANJI;
      case 0x83 :
        return GRN_CHAR_KANJI;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return GRN_CHAR_KANJI;
      case 0x88 :
        return GRN_CHAR_KANJI;
      case 0x89 :
        return GRN_CHAR_KANJI;
      case 0x8a :
        return GRN_CHAR_KANJI;
      case 0x8b :
        return GRN_CHAR_KANJI;
      case 0x8c :
        return GRN_CHAR_KANJI;
      case 0x8d :
        return GRN_CHAR_KANJI;
      case 0x8e :
        return GRN_CHAR_KANJI;
      case 0x8f :
        return GRN_CHAR_KANJI;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        return GRN_CHAR_KANJI;
      case 0x94 :
        return GRN_CHAR_KANJI;
      case 0x95 :
        return GRN_CHAR_KANJI;
      case 0x96 :
        return GRN_CHAR_KANJI;
      case 0x97 :
        return GRN_CHAR_KANJI;
      case 0x98 :
        return GRN_CHAR_KANJI;
      case 0x99 :
        return GRN_CHAR_KANJI;
      case 0x9a :
        return GRN_CHAR_KANJI;
      case 0x9b :
        return GRN_CHAR_KANJI;
      case 0x9c :
        return GRN_CHAR_KANJI;
      case 0x9d :
        return GRN_CHAR_KANJI;
      case 0x9e :
        return GRN_CHAR_KANJI;
      case 0x9f :
        return GRN_CHAR_KANJI;
      case 0xa0 :
        return GRN_CHAR_KANJI;
      case 0xa1 :
        return GRN_CHAR_KANJI;
      case 0xa2 :
        return GRN_CHAR_KANJI;
      case 0xa3 :
        return GRN_CHAR_KANJI;
      case 0xa4 :
        return GRN_CHAR_KANJI;
      case 0xa5 :
        return GRN_CHAR_KANJI;
      case 0xa6 :
        return GRN_CHAR_KANJI;
      case 0xa7 :
        return GRN_CHAR_KANJI;
      case 0xa8 :
        return GRN_CHAR_KANJI;
      case 0xa9 :
        return GRN_CHAR_KANJI;
      case 0xaa :
        return GRN_CHAR_KANJI;
      case 0xab :
        return GRN_CHAR_KANJI;
      case 0xac :
        return GRN_CHAR_KANJI;
      case 0xad :
        return GRN_CHAR_KANJI;
      case 0xae :
        return GRN_CHAR_KANJI;
      case 0xaf :
        return GRN_CHAR_KANJI;
      case 0xb0 :
        return GRN_CHAR_KANJI;
      case 0xb1 :
        return GRN_CHAR_KANJI;
      case 0xb2 :
        return GRN_CHAR_KANJI;
      case 0xb3 :
        return GRN_CHAR_KANJI;
      case 0xb4 :
        return GRN_CHAR_KANJI;
      case 0xb5 :
        return GRN_CHAR_KANJI;
      case 0xb6 :
        return GRN_CHAR_KANJI;
      case 0xb7 :
        return GRN_CHAR_KANJI;
      case 0xb8 :
        return GRN_CHAR_KANJI;
      case 0xb9 :
        return GRN_CHAR_KANJI;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        return GRN_CHAR_KANJI;
      default :
        break;
      }
      break;
    case 0xec :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_KANJI;
      case 0x81 :
        return GRN_CHAR_KANJI;
      case 0x82 :
        return GRN_CHAR_KANJI;
      case 0x83 :
        return GRN_CHAR_KANJI;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return GRN_CHAR_KANJI;
      case 0x88 :
        return GRN_CHAR_KANJI;
      case 0x89 :
        return GRN_CHAR_KANJI;
      case 0x8a :
        return GRN_CHAR_KANJI;
      case 0x8b :
        return GRN_CHAR_KANJI;
      case 0x8c :
        return GRN_CHAR_KANJI;
      case 0x8d :
        return GRN_CHAR_KANJI;
      case 0x8e :
        return GRN_CHAR_KANJI;
      case 0x8f :
        return GRN_CHAR_KANJI;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        return GRN_CHAR_KANJI;
      case 0x94 :
        return GRN_CHAR_KANJI;
      case 0x95 :
        return GRN_CHAR_KANJI;
      case 0x96 :
        return GRN_CHAR_KANJI;
      case 0x97 :
        return GRN_CHAR_KANJI;
      case 0x98 :
        return GRN_CHAR_KANJI;
      case 0x99 :
        return GRN_CHAR_KANJI;
      case 0x9a :
        return GRN_CHAR_KANJI;
      case 0x9b :
        return GRN_CHAR_KANJI;
      case 0x9c :
        return GRN_CHAR_KANJI;
      case 0x9d :
        return GRN_CHAR_KANJI;
      case 0x9e :
        return GRN_CHAR_KANJI;
      case 0x9f :
        return GRN_CHAR_KANJI;
      case 0xa0 :
        return GRN_CHAR_KANJI;
      case 0xa1 :
        return GRN_CHAR_KANJI;
      case 0xa2 :
        return GRN_CHAR_KANJI;
      case 0xa3 :
        return GRN_CHAR_KANJI;
      case 0xa4 :
        return GRN_CHAR_KANJI;
      case 0xa5 :
        return GRN_CHAR_KANJI;
      case 0xa6 :
        return GRN_CHAR_KANJI;
      case 0xa7 :
        return GRN_CHAR_KANJI;
      case 0xa8 :
        return GRN_CHAR_KANJI;
      case 0xa9 :
        return GRN_CHAR_KANJI;
      case 0xaa :
        return GRN_CHAR_KANJI;
      case 0xab :
        return GRN_CHAR_KANJI;
      case 0xac :
        return GRN_CHAR_KANJI;
      case 0xad :
        return GRN_CHAR_KANJI;
      case 0xae :
        return GRN_CHAR_KANJI;
      case 0xaf :
        return GRN_CHAR_KANJI;
      case 0xb0 :
        return GRN_CHAR_KANJI;
      case 0xb1 :
        return GRN_CHAR_KANJI;
      case 0xb2 :
        return GRN_CHAR_KANJI;
      case 0xb3 :
        return GRN_CHAR_KANJI;
      case 0xb4 :
        return GRN_CHAR_KANJI;
      case 0xb5 :
        return GRN_CHAR_KANJI;
      case 0xb6 :
        return GRN_CHAR_KANJI;
      case 0xb7 :
        return GRN_CHAR_KANJI;
      case 0xb8 :
        return GRN_CHAR_KANJI;
      case 0xb9 :
        return GRN_CHAR_KANJI;
      case 0xba :
        return GRN_CHAR_KANJI;
      case 0xbb :
        return GRN_CHAR_KANJI;
      case 0xbc :
        return GRN_CHAR_KANJI;
      case 0xbd :
        return GRN_CHAR_KANJI;
      case 0xbe :
        return GRN_CHAR_KANJI;
      case 0xbf :
        return GRN_CHAR_KANJI;
      default :
        break;
      }
      break;
    case 0xed :
      switch (utf8[1]) {
      case 0x80 :
        return GRN_CHAR_KANJI;
      case 0x81 :
        return GRN_CHAR_KANJI;
      case 0x82 :
        return GRN_CHAR_KANJI;
      case 0x83 :
        return GRN_CHAR_KANJI;
      case 0x84 :
        return GRN_CHAR_KANJI;
      case 0x85 :
        return GRN_CHAR_KANJI;
      case 0x86 :
        return GRN_CHAR_KANJI;
      case 0x87 :
        return GRN_CHAR_KANJI;
      case 0x88 :
        return GRN_CHAR_KANJI;
      case 0x89 :
        return GRN_CHAR_KANJI;
      case 0x8a :
        return GRN_CHAR_KANJI;
      case 0x8b :
        return GRN_CHAR_KANJI;
      case 0x8c :
        return GRN_CHAR_KANJI;
      case 0x8d :
        return GRN_CHAR_KANJI;
      case 0x8e :
        return GRN_CHAR_KANJI;
      case 0x8f :
        return GRN_CHAR_KANJI;
      case 0x90 :
        return GRN_CHAR_KANJI;
      case 0x91 :
        return GRN_CHAR_KANJI;
      case 0x92 :
        return GRN_CHAR_KANJI;
      case 0x93 :
        return GRN_CHAR_KANJI;
      case 0x94 :
        return GRN_CHAR_KANJI;
      case 0x95 :
        return GRN_CHAR_KANJI;
      case 0x96 :
        return GRN_CHAR_KANJI;
      case 0x97 :
        return GRN_CHAR_KANJI;
      case 0x98 :
        return GRN_CHAR_KANJI;
      case 0x99 :
        return GRN_CHAR_KANJI;
      case 0x9a :
        return GRN_CHAR_KANJI;
      case 0x9b :
        return GRN_CHAR_KANJI;
      case 0x9c :
        return GRN_CHAR_KANJI;
      case 0x9d :
        return GRN_CHAR_KANJI;
      case 0x9e :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xaf) {
          return GRN_CHAR_KANJI;
        }
        break;
      default :
        break;
      }
      break;
    case 0xef :
      switch (utf8[1]) {
      case 0xa4 :
        return GRN_CHAR_KANJI;
      case 0xa5 :
        return GRN_CHAR_KANJI;
      case 0xa6 :
        return GRN_CHAR_KANJI;
      case 0xa7 :
        return GRN_CHAR_KANJI;
      case 0xa8 :
        return GRN_CHAR_KANJI;
      case 0xa9 :
        return GRN_CHAR_KANJI;
      case 0xaa :
        return GRN_CHAR_KANJI;
      case 0xab :
        return GRN_CHAR_KANJI;
      case 0xac :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_char_type_table_efac[utf8[2] - 0x80];
        }
        break;
      case 0xad :
        return grn_nfkc50_char_type_table_efad[utf8[2] - 0x80];
      case 0xae :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb1) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xaf :
        if (utf8[2] >= 0x93 &&
            utf8[2] <= 0xbf) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xb0 :
        return GRN_CHAR_ALPHA;
      case 0xb1 :
        return GRN_CHAR_ALPHA;
      case 0xb2 :
        return GRN_CHAR_ALPHA;
      case 0xb3 :
        return GRN_CHAR_ALPHA;
      case 0xb4 :
        return grn_nfkc50_char_type_table_efb4[utf8[2] - 0x80];
      case 0xb5 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xbf) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xb6 :
        return grn_nfkc50_char_type_table_efb6[utf8[2] - 0x80];
      case 0xb7 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_char_type_table_efb7[utf8[2] - 0x80];
        }
        break;
      case 0xb8 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_char_type_table_efb8[utf8[2] - 0x90];
        }
        break;
      case 0xb9 :
        return grn_nfkc50_char_type_table_efb9[utf8[2] - 0x80];
      case 0xba :
        return GRN_CHAR_ALPHA;
      case 0xbb :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbc) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xbc :
        if (utf8[2] >= 0x81 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_char_type_table_efbc[utf8[2] - 0x81];
        }
        break;
      case 0xbd :
        return grn_nfkc50_char_type_table_efbd[utf8[2] - 0x80];
      case 0xbe :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return GRN_CHAR_ALPHA;
        }
        break;
      case 0xbf :
        if (utf8[2] >= 0x82 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_char_type_table_efbf[utf8[2] - 0x82];
        }
        break;
      default :
        break;
      }
      break;
    case 0xf0 :
      switch (utf8[1]) {
      case 0x90 :
        switch (utf8[2]) {
        case 0x80 :
          return grn_nfkc50_char_type_table_f09080[utf8[3] - 0x80];
        case 0x81 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x9d) {
            return grn_nfkc50_char_type_table_f09081[utf8[3] - 0x80];
          }
          break;
        case 0x82 :
          return GRN_CHAR_ALPHA;
        case 0x83 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0xba) {
            return GRN_CHAR_ALPHA;
          }
          break;
        case 0x84 :
          return grn_nfkc50_char_type_table_f09084[utf8[3] - 0x80];
        case 0x85 :
          return grn_nfkc50_char_type_table_f09085[utf8[3] - 0x80];
        case 0x86 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x8a) {
            return grn_nfkc50_char_type_table_f09086[utf8[3] - 0x80];
          }
          break;
        case 0x8c :
          return grn_nfkc50_char_type_table_f0908c[utf8[3] - 0x80];
        case 0x8d :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x8a) {
            return grn_nfkc50_char_type_table_f0908d[utf8[3] - 0x80];
          }
          break;
        case 0x8e :
          return grn_nfkc50_char_type_table_f0908e[utf8[3] - 0x80];
        case 0x8f :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x95) {
            return grn_nfkc50_char_type_table_f0908f[utf8[3] - 0x80];
          }
          break;
        case 0x90 :
          return GRN_CHAR_ALPHA;
        case 0x91 :
          return GRN_CHAR_ALPHA;
        case 0x92 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0xa9) {
            return grn_nfkc50_char_type_table_f09092[utf8[3] - 0x80];
          }
          break;
        case 0xa0 :
          return grn_nfkc50_char_type_table_f090a0[utf8[3] - 0x80];
        case 0xa4 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x9f) {
            return grn_nfkc50_char_type_table_f090a4[utf8[3] - 0x80];
          }
          break;
        case 0xa8 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0xb3) {
            return grn_nfkc50_char_type_table_f090a8[utf8[3] - 0x80];
          }
          break;
        case 0xa9 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x98) {
            return grn_nfkc50_char_type_table_f090a9[utf8[3] - 0x80];
          }
          break;
        default :
          break;
        }
        break;
      case 0x92 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_ALPHA;
        case 0x81 :
          return GRN_CHAR_ALPHA;
        case 0x82 :
          return GRN_CHAR_ALPHA;
        case 0x83 :
          return GRN_CHAR_ALPHA;
        case 0x84 :
          return GRN_CHAR_ALPHA;
        case 0x85 :
          return GRN_CHAR_ALPHA;
        case 0x86 :
          return GRN_CHAR_ALPHA;
        case 0x87 :
          return GRN_CHAR_ALPHA;
        case 0x88 :
          return GRN_CHAR_ALPHA;
        case 0x89 :
          return GRN_CHAR_ALPHA;
        case 0x8a :
          return GRN_CHAR_ALPHA;
        case 0x8b :
          return GRN_CHAR_ALPHA;
        case 0x8c :
          return GRN_CHAR_ALPHA;
        case 0x8d :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0xae) {
            return GRN_CHAR_ALPHA;
          }
          break;
        case 0x90 :
          return GRN_CHAR_DIGIT;
        case 0x91 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0xb3) {
            return grn_nfkc50_char_type_table_f09291[utf8[3] - 0x80];
          }
          break;
        default :
          break;
        }
        break;
      case 0x9d :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_SYMBOL;
        case 0x81 :
          return GRN_CHAR_SYMBOL;
        case 0x82 :
          return GRN_CHAR_SYMBOL;
        case 0x83 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0xb5) {
            return GRN_CHAR_SYMBOL;
          }
          break;
        case 0x84 :
          return grn_nfkc50_char_type_table_f09d84[utf8[3] - 0x80];
        case 0x85 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0xac) {
            return grn_nfkc50_char_type_table_f09d85[utf8[3] - 0x80];
          }
          break;
        case 0x86 :
          if (utf8[3] >= 0x83 &&
              utf8[3] <= 0xbf) {
            return grn_nfkc50_char_type_table_f09d86[utf8[3] - 0x83];
          }
          break;
        case 0x87 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x9d) {
            return GRN_CHAR_SYMBOL;
          }
          break;
        case 0x88 :
          return GRN_CHAR_SYMBOL;
        case 0x89 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x85) {
            return grn_nfkc50_char_type_table_f09d89[utf8[3] - 0x80];
          }
          break;
        case 0x8c :
          return GRN_CHAR_SYMBOL;
        case 0x8d :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0xb1) {
            return grn_nfkc50_char_type_table_f09d8d[utf8[3] - 0x80];
          }
          break;
        case 0x90 :
          return GRN_CHAR_ALPHA;
        case 0x91 :
          return grn_nfkc50_char_type_table_f09d91[utf8[3] - 0x80];
        case 0x92 :
          return grn_nfkc50_char_type_table_f09d92[utf8[3] - 0x80];
        case 0x93 :
          return grn_nfkc50_char_type_table_f09d93[utf8[3] - 0x80];
        case 0x94 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0xbe) {
            return grn_nfkc50_char_type_table_f09d94[utf8[3] - 0x80];
          }
          break;
        case 0x95 :
          return grn_nfkc50_char_type_table_f09d95[utf8[3] - 0x80];
        case 0x96 :
          return GRN_CHAR_ALPHA;
        case 0x97 :
          return GRN_CHAR_ALPHA;
        case 0x98 :
          return GRN_CHAR_ALPHA;
        case 0x99 :
          return GRN_CHAR_ALPHA;
        case 0x9a :
          return grn_nfkc50_char_type_table_f09d9a[utf8[3] - 0x80];
        case 0x9b :
          return grn_nfkc50_char_type_table_f09d9b[utf8[3] - 0x80];
        case 0x9c :
          return grn_nfkc50_char_type_table_f09d9c[utf8[3] - 0x80];
        case 0x9d :
          return grn_nfkc50_char_type_table_f09d9d[utf8[3] - 0x80];
        case 0x9e :
          return grn_nfkc50_char_type_table_f09d9e[utf8[3] - 0x80];
        case 0x9f :
          return grn_nfkc50_char_type_table_f09d9f[utf8[3] - 0x80];
        default :
          break;
        }
        break;
      case 0xa0 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          return GRN_CHAR_KANJI;
        case 0x9c :
          return GRN_CHAR_KANJI;
        case 0x9d :
          return GRN_CHAR_KANJI;
        case 0x9e :
          return GRN_CHAR_KANJI;
        case 0x9f :
          return GRN_CHAR_KANJI;
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          return GRN_CHAR_KANJI;
        case 0xa9 :
          return GRN_CHAR_KANJI;
        case 0xaa :
          return GRN_CHAR_KANJI;
        case 0xab :
          return GRN_CHAR_KANJI;
        case 0xac :
          return GRN_CHAR_KANJI;
        case 0xad :
          return GRN_CHAR_KANJI;
        case 0xae :
          return GRN_CHAR_KANJI;
        case 0xaf :
          return GRN_CHAR_KANJI;
        case 0xb0 :
          return GRN_CHAR_KANJI;
        case 0xb1 :
          return GRN_CHAR_KANJI;
        case 0xb2 :
          return GRN_CHAR_KANJI;
        case 0xb3 :
          return GRN_CHAR_KANJI;
        case 0xb4 :
          return GRN_CHAR_KANJI;
        case 0xb5 :
          return GRN_CHAR_KANJI;
        case 0xb6 :
          return GRN_CHAR_KANJI;
        case 0xb7 :
          return GRN_CHAR_KANJI;
        case 0xb8 :
          return GRN_CHAR_KANJI;
        case 0xb9 :
          return GRN_CHAR_KANJI;
        case 0xba :
          return GRN_CHAR_KANJI;
        case 0xbb :
          return GRN_CHAR_KANJI;
        case 0xbc :
          return GRN_CHAR_KANJI;
        case 0xbd :
          return GRN_CHAR_KANJI;
        case 0xbe :
          return GRN_CHAR_KANJI;
        case 0xbf :
          return GRN_CHAR_KANJI;
        default :
          break;
        }
        break;
      case 0xa1 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          return GRN_CHAR_KANJI;
        case 0x9c :
          return GRN_CHAR_KANJI;
        case 0x9d :
          return GRN_CHAR_KANJI;
        case 0x9e :
          return GRN_CHAR_KANJI;
        case 0x9f :
          return GRN_CHAR_KANJI;
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          return GRN_CHAR_KANJI;
        case 0xa9 :
          return GRN_CHAR_KANJI;
        case 0xaa :
          return GRN_CHAR_KANJI;
        case 0xab :
          return GRN_CHAR_KANJI;
        case 0xac :
          return GRN_CHAR_KANJI;
        case 0xad :
          return GRN_CHAR_KANJI;
        case 0xae :
          return GRN_CHAR_KANJI;
        case 0xaf :
          return GRN_CHAR_KANJI;
        case 0xb0 :
          return GRN_CHAR_KANJI;
        case 0xb1 :
          return GRN_CHAR_KANJI;
        case 0xb2 :
          return GRN_CHAR_KANJI;
        case 0xb3 :
          return GRN_CHAR_KANJI;
        case 0xb4 :
          return GRN_CHAR_KANJI;
        case 0xb5 :
          return GRN_CHAR_KANJI;
        case 0xb6 :
          return GRN_CHAR_KANJI;
        case 0xb7 :
          return GRN_CHAR_KANJI;
        case 0xb8 :
          return GRN_CHAR_KANJI;
        case 0xb9 :
          return GRN_CHAR_KANJI;
        case 0xba :
          return GRN_CHAR_KANJI;
        case 0xbb :
          return GRN_CHAR_KANJI;
        case 0xbc :
          return GRN_CHAR_KANJI;
        case 0xbd :
          return GRN_CHAR_KANJI;
        case 0xbe :
          return GRN_CHAR_KANJI;
        case 0xbf :
          return GRN_CHAR_KANJI;
        default :
          break;
        }
        break;
      case 0xa2 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          return GRN_CHAR_KANJI;
        case 0x9c :
          return GRN_CHAR_KANJI;
        case 0x9d :
          return GRN_CHAR_KANJI;
        case 0x9e :
          return GRN_CHAR_KANJI;
        case 0x9f :
          return GRN_CHAR_KANJI;
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          return GRN_CHAR_KANJI;
        case 0xa9 :
          return GRN_CHAR_KANJI;
        case 0xaa :
          return GRN_CHAR_KANJI;
        case 0xab :
          return GRN_CHAR_KANJI;
        case 0xac :
          return GRN_CHAR_KANJI;
        case 0xad :
          return GRN_CHAR_KANJI;
        case 0xae :
          return GRN_CHAR_KANJI;
        case 0xaf :
          return GRN_CHAR_KANJI;
        case 0xb0 :
          return GRN_CHAR_KANJI;
        case 0xb1 :
          return GRN_CHAR_KANJI;
        case 0xb2 :
          return GRN_CHAR_KANJI;
        case 0xb3 :
          return GRN_CHAR_KANJI;
        case 0xb4 :
          return GRN_CHAR_KANJI;
        case 0xb5 :
          return GRN_CHAR_KANJI;
        case 0xb6 :
          return GRN_CHAR_KANJI;
        case 0xb7 :
          return GRN_CHAR_KANJI;
        case 0xb8 :
          return GRN_CHAR_KANJI;
        case 0xb9 :
          return GRN_CHAR_KANJI;
        case 0xba :
          return GRN_CHAR_KANJI;
        case 0xbb :
          return GRN_CHAR_KANJI;
        case 0xbc :
          return GRN_CHAR_KANJI;
        case 0xbd :
          return GRN_CHAR_KANJI;
        case 0xbe :
          return GRN_CHAR_KANJI;
        case 0xbf :
          return GRN_CHAR_KANJI;
        default :
          break;
        }
        break;
      case 0xa3 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          return GRN_CHAR_KANJI;
        case 0x9c :
          return GRN_CHAR_KANJI;
        case 0x9d :
          return GRN_CHAR_KANJI;
        case 0x9e :
          return GRN_CHAR_KANJI;
        case 0x9f :
          return GRN_CHAR_KANJI;
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          return GRN_CHAR_KANJI;
        case 0xa9 :
          return GRN_CHAR_KANJI;
        case 0xaa :
          return GRN_CHAR_KANJI;
        case 0xab :
          return GRN_CHAR_KANJI;
        case 0xac :
          return GRN_CHAR_KANJI;
        case 0xad :
          return GRN_CHAR_KANJI;
        case 0xae :
          return GRN_CHAR_KANJI;
        case 0xaf :
          return GRN_CHAR_KANJI;
        case 0xb0 :
          return GRN_CHAR_KANJI;
        case 0xb1 :
          return GRN_CHAR_KANJI;
        case 0xb2 :
          return GRN_CHAR_KANJI;
        case 0xb3 :
          return GRN_CHAR_KANJI;
        case 0xb4 :
          return GRN_CHAR_KANJI;
        case 0xb5 :
          return GRN_CHAR_KANJI;
        case 0xb6 :
          return GRN_CHAR_KANJI;
        case 0xb7 :
          return GRN_CHAR_KANJI;
        case 0xb8 :
          return GRN_CHAR_KANJI;
        case 0xb9 :
          return GRN_CHAR_KANJI;
        case 0xba :
          return GRN_CHAR_KANJI;
        case 0xbb :
          return GRN_CHAR_KANJI;
        case 0xbc :
          return GRN_CHAR_KANJI;
        case 0xbd :
          return GRN_CHAR_KANJI;
        case 0xbe :
          return GRN_CHAR_KANJI;
        case 0xbf :
          return GRN_CHAR_KANJI;
        default :
          break;
        }
        break;
      case 0xa4 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          return GRN_CHAR_KANJI;
        case 0x9c :
          return GRN_CHAR_KANJI;
        case 0x9d :
          return GRN_CHAR_KANJI;
        case 0x9e :
          return GRN_CHAR_KANJI;
        case 0x9f :
          return GRN_CHAR_KANJI;
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          return GRN_CHAR_KANJI;
        case 0xa9 :
          return GRN_CHAR_KANJI;
        case 0xaa :
          return GRN_CHAR_KANJI;
        case 0xab :
          return GRN_CHAR_KANJI;
        case 0xac :
          return GRN_CHAR_KANJI;
        case 0xad :
          return GRN_CHAR_KANJI;
        case 0xae :
          return GRN_CHAR_KANJI;
        case 0xaf :
          return GRN_CHAR_KANJI;
        case 0xb0 :
          return GRN_CHAR_KANJI;
        case 0xb1 :
          return GRN_CHAR_KANJI;
        case 0xb2 :
          return GRN_CHAR_KANJI;
        case 0xb3 :
          return GRN_CHAR_KANJI;
        case 0xb4 :
          return GRN_CHAR_KANJI;
        case 0xb5 :
          return GRN_CHAR_KANJI;
        case 0xb6 :
          return GRN_CHAR_KANJI;
        case 0xb7 :
          return GRN_CHAR_KANJI;
        case 0xb8 :
          return GRN_CHAR_KANJI;
        case 0xb9 :
          return GRN_CHAR_KANJI;
        case 0xba :
          return GRN_CHAR_KANJI;
        case 0xbb :
          return GRN_CHAR_KANJI;
        case 0xbc :
          return GRN_CHAR_KANJI;
        case 0xbd :
          return GRN_CHAR_KANJI;
        case 0xbe :
          return GRN_CHAR_KANJI;
        case 0xbf :
          return GRN_CHAR_KANJI;
        default :
          break;
        }
        break;
      case 0xa5 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          return GRN_CHAR_KANJI;
        case 0x9c :
          return GRN_CHAR_KANJI;
        case 0x9d :
          return GRN_CHAR_KANJI;
        case 0x9e :
          return GRN_CHAR_KANJI;
        case 0x9f :
          return GRN_CHAR_KANJI;
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          return GRN_CHAR_KANJI;
        case 0xa9 :
          return GRN_CHAR_KANJI;
        case 0xaa :
          return GRN_CHAR_KANJI;
        case 0xab :
          return GRN_CHAR_KANJI;
        case 0xac :
          return GRN_CHAR_KANJI;
        case 0xad :
          return GRN_CHAR_KANJI;
        case 0xae :
          return GRN_CHAR_KANJI;
        case 0xaf :
          return GRN_CHAR_KANJI;
        case 0xb0 :
          return GRN_CHAR_KANJI;
        case 0xb1 :
          return GRN_CHAR_KANJI;
        case 0xb2 :
          return GRN_CHAR_KANJI;
        case 0xb3 :
          return GRN_CHAR_KANJI;
        case 0xb4 :
          return GRN_CHAR_KANJI;
        case 0xb5 :
          return GRN_CHAR_KANJI;
        case 0xb6 :
          return GRN_CHAR_KANJI;
        case 0xb7 :
          return GRN_CHAR_KANJI;
        case 0xb8 :
          return GRN_CHAR_KANJI;
        case 0xb9 :
          return GRN_CHAR_KANJI;
        case 0xba :
          return GRN_CHAR_KANJI;
        case 0xbb :
          return GRN_CHAR_KANJI;
        case 0xbc :
          return GRN_CHAR_KANJI;
        case 0xbd :
          return GRN_CHAR_KANJI;
        case 0xbe :
          return GRN_CHAR_KANJI;
        case 0xbf :
          return GRN_CHAR_KANJI;
        default :
          break;
        }
        break;
      case 0xa6 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          return GRN_CHAR_KANJI;
        case 0x9c :
          return GRN_CHAR_KANJI;
        case 0x9d :
          return GRN_CHAR_KANJI;
        case 0x9e :
          return GRN_CHAR_KANJI;
        case 0x9f :
          return GRN_CHAR_KANJI;
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          return GRN_CHAR_KANJI;
        case 0xa9 :
          return GRN_CHAR_KANJI;
        case 0xaa :
          return GRN_CHAR_KANJI;
        case 0xab :
          return GRN_CHAR_KANJI;
        case 0xac :
          return GRN_CHAR_KANJI;
        case 0xad :
          return GRN_CHAR_KANJI;
        case 0xae :
          return GRN_CHAR_KANJI;
        case 0xaf :
          return GRN_CHAR_KANJI;
        case 0xb0 :
          return GRN_CHAR_KANJI;
        case 0xb1 :
          return GRN_CHAR_KANJI;
        case 0xb2 :
          return GRN_CHAR_KANJI;
        case 0xb3 :
          return GRN_CHAR_KANJI;
        case 0xb4 :
          return GRN_CHAR_KANJI;
        case 0xb5 :
          return GRN_CHAR_KANJI;
        case 0xb6 :
          return GRN_CHAR_KANJI;
        case 0xb7 :
          return GRN_CHAR_KANJI;
        case 0xb8 :
          return GRN_CHAR_KANJI;
        case 0xb9 :
          return GRN_CHAR_KANJI;
        case 0xba :
          return GRN_CHAR_KANJI;
        case 0xbb :
          return GRN_CHAR_KANJI;
        case 0xbc :
          return GRN_CHAR_KANJI;
        case 0xbd :
          return GRN_CHAR_KANJI;
        case 0xbe :
          return GRN_CHAR_KANJI;
        case 0xbf :
          return GRN_CHAR_KANJI;
        default :
          break;
        }
        break;
      case 0xa7 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          return GRN_CHAR_KANJI;
        case 0x9c :
          return GRN_CHAR_KANJI;
        case 0x9d :
          return GRN_CHAR_KANJI;
        case 0x9e :
          return GRN_CHAR_KANJI;
        case 0x9f :
          return GRN_CHAR_KANJI;
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          return GRN_CHAR_KANJI;
        case 0xa9 :
          return GRN_CHAR_KANJI;
        case 0xaa :
          return GRN_CHAR_KANJI;
        case 0xab :
          return GRN_CHAR_KANJI;
        case 0xac :
          return GRN_CHAR_KANJI;
        case 0xad :
          return GRN_CHAR_KANJI;
        case 0xae :
          return GRN_CHAR_KANJI;
        case 0xaf :
          return GRN_CHAR_KANJI;
        case 0xb0 :
          return GRN_CHAR_KANJI;
        case 0xb1 :
          return GRN_CHAR_KANJI;
        case 0xb2 :
          return GRN_CHAR_KANJI;
        case 0xb3 :
          return GRN_CHAR_KANJI;
        case 0xb4 :
          return GRN_CHAR_KANJI;
        case 0xb5 :
          return GRN_CHAR_KANJI;
        case 0xb6 :
          return GRN_CHAR_KANJI;
        case 0xb7 :
          return GRN_CHAR_KANJI;
        case 0xb8 :
          return GRN_CHAR_KANJI;
        case 0xb9 :
          return GRN_CHAR_KANJI;
        case 0xba :
          return GRN_CHAR_KANJI;
        case 0xbb :
          return GRN_CHAR_KANJI;
        case 0xbc :
          return GRN_CHAR_KANJI;
        case 0xbd :
          return GRN_CHAR_KANJI;
        case 0xbe :
          return GRN_CHAR_KANJI;
        case 0xbf :
          return GRN_CHAR_KANJI;
        default :
          break;
        }
        break;
      case 0xa8 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          return GRN_CHAR_KANJI;
        case 0x9c :
          return GRN_CHAR_KANJI;
        case 0x9d :
          return GRN_CHAR_KANJI;
        case 0x9e :
          return GRN_CHAR_KANJI;
        case 0x9f :
          return GRN_CHAR_KANJI;
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          return GRN_CHAR_KANJI;
        case 0xa9 :
          return GRN_CHAR_KANJI;
        case 0xaa :
          return GRN_CHAR_KANJI;
        case 0xab :
          return GRN_CHAR_KANJI;
        case 0xac :
          return GRN_CHAR_KANJI;
        case 0xad :
          return GRN_CHAR_KANJI;
        case 0xae :
          return GRN_CHAR_KANJI;
        case 0xaf :
          return GRN_CHAR_KANJI;
        case 0xb0 :
          return GRN_CHAR_KANJI;
        case 0xb1 :
          return GRN_CHAR_KANJI;
        case 0xb2 :
          return GRN_CHAR_KANJI;
        case 0xb3 :
          return GRN_CHAR_KANJI;
        case 0xb4 :
          return GRN_CHAR_KANJI;
        case 0xb5 :
          return GRN_CHAR_KANJI;
        case 0xb6 :
          return GRN_CHAR_KANJI;
        case 0xb7 :
          return GRN_CHAR_KANJI;
        case 0xb8 :
          return GRN_CHAR_KANJI;
        case 0xb9 :
          return GRN_CHAR_KANJI;
        case 0xba :
          return GRN_CHAR_KANJI;
        case 0xbb :
          return GRN_CHAR_KANJI;
        case 0xbc :
          return GRN_CHAR_KANJI;
        case 0xbd :
          return GRN_CHAR_KANJI;
        case 0xbe :
          return GRN_CHAR_KANJI;
        case 0xbf :
          return GRN_CHAR_KANJI;
        default :
          break;
        }
        break;
      case 0xa9 :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          return GRN_CHAR_KANJI;
        case 0x9c :
          return GRN_CHAR_KANJI;
        case 0x9d :
          return GRN_CHAR_KANJI;
        case 0x9e :
          return GRN_CHAR_KANJI;
        case 0x9f :
          return GRN_CHAR_KANJI;
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          return GRN_CHAR_KANJI;
        case 0xa9 :
          return GRN_CHAR_KANJI;
        case 0xaa :
          return GRN_CHAR_KANJI;
        case 0xab :
          return GRN_CHAR_KANJI;
        case 0xac :
          return GRN_CHAR_KANJI;
        case 0xad :
          return GRN_CHAR_KANJI;
        case 0xae :
          return GRN_CHAR_KANJI;
        case 0xaf :
          return GRN_CHAR_KANJI;
        case 0xb0 :
          return GRN_CHAR_KANJI;
        case 0xb1 :
          return GRN_CHAR_KANJI;
        case 0xb2 :
          return GRN_CHAR_KANJI;
        case 0xb3 :
          return GRN_CHAR_KANJI;
        case 0xb4 :
          return GRN_CHAR_KANJI;
        case 0xb5 :
          return GRN_CHAR_KANJI;
        case 0xb6 :
          return GRN_CHAR_KANJI;
        case 0xb7 :
          return GRN_CHAR_KANJI;
        case 0xb8 :
          return GRN_CHAR_KANJI;
        case 0xb9 :
          return GRN_CHAR_KANJI;
        case 0xba :
          return GRN_CHAR_KANJI;
        case 0xbb :
          return GRN_CHAR_KANJI;
        case 0xbc :
          return GRN_CHAR_KANJI;
        case 0xbd :
          return GRN_CHAR_KANJI;
        case 0xbe :
          return GRN_CHAR_KANJI;
        case 0xbf :
          return GRN_CHAR_KANJI;
        default :
          break;
        }
        break;
      case 0xaa :
        switch (utf8[2]) {
        case 0x80 :
          return GRN_CHAR_KANJI;
        case 0x81 :
          return GRN_CHAR_KANJI;
        case 0x82 :
          return GRN_CHAR_KANJI;
        case 0x83 :
          return GRN_CHAR_KANJI;
        case 0x84 :
          return GRN_CHAR_KANJI;
        case 0x85 :
          return GRN_CHAR_KANJI;
        case 0x86 :
          return GRN_CHAR_KANJI;
        case 0x87 :
          return GRN_CHAR_KANJI;
        case 0x88 :
          return GRN_CHAR_KANJI;
        case 0x89 :
          return GRN_CHAR_KANJI;
        case 0x8a :
          return GRN_CHAR_KANJI;
        case 0x8b :
          return GRN_CHAR_KANJI;
        case 0x8c :
          return GRN_CHAR_KANJI;
        case 0x8d :
          return GRN_CHAR_KANJI;
        case 0x8e :
          return GRN_CHAR_KANJI;
        case 0x8f :
          return GRN_CHAR_KANJI;
        case 0x90 :
          return GRN_CHAR_KANJI;
        case 0x91 :
          return GRN_CHAR_KANJI;
        case 0x92 :
          return GRN_CHAR_KANJI;
        case 0x93 :
          return GRN_CHAR_KANJI;
        case 0x94 :
          return GRN_CHAR_KANJI;
        case 0x95 :
          return GRN_CHAR_KANJI;
        case 0x96 :
          return GRN_CHAR_KANJI;
        case 0x97 :
          return GRN_CHAR_KANJI;
        case 0x98 :
          return GRN_CHAR_KANJI;
        case 0x99 :
          return GRN_CHAR_KANJI;
        case 0x9a :
          return GRN_CHAR_KANJI;
        case 0x9b :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x9f) {
            return GRN_CHAR_KANJI;
          }
          break;
        default :
          break;
        }
        break;
      case 0xaf :
        switch (utf8[2]) {
        case 0xa0 :
          return GRN_CHAR_KANJI;
        case 0xa1 :
          return GRN_CHAR_KANJI;
        case 0xa2 :
          return GRN_CHAR_KANJI;
        case 0xa3 :
          return GRN_CHAR_KANJI;
        case 0xa4 :
          return GRN_CHAR_KANJI;
        case 0xa5 :
          return GRN_CHAR_KANJI;
        case 0xa6 :
          return GRN_CHAR_KANJI;
        case 0xa7 :
          return GRN_CHAR_KANJI;
        case 0xa8 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x9f) {
            return GRN_CHAR_KANJI;
          }
          break;
        default :
          break;
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return GRN_CHAR_OTHERS;
}

static const char *grn_nfkc50_decompose_table_[] = {
  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
  "\x79", "\x7a"
};

static const char *grn_nfkc50_decompose_table_c2[] = {
  "\x20", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xcc\x88", NULL, "\x61", NULL, NULL, NULL, NULL, "\xcc\x84",
  NULL, NULL, "\x32", "\x33", "\xcc\x81", "\xce\xbc", NULL, NULL,
  "\xcc\xa7", "\x31", "\x6f", NULL, "\x31\xe2\x81\x84\x34", "\x31\xe2\x81\x84\x32", "\x33\xe2\x81\x84\x34"
};

static const char *grn_nfkc50_decompose_table_c3[] = {
  "\xc3\xa0", "\xc3\xa1", "\xc3\xa2", "\xc3\xa3", "\xc3\xa4", "\xc3\xa5", NULL, "\xc3\xa7",
  "\xc3\xa8", "\xc3\xa9", "\xc3\xaa", "\xc3\xab", "\xc3\xac", "\xc3\xad", "\xc3\xae", "\xc3\xaf",
  NULL, "\xc3\xb1", "\xc3\xb2", "\xc3\xb3", "\xc3\xb4", "\xc3\xb5", "\xc3\xb6", NULL,
  NULL, "\xc3\xb9", "\xc3\xba", "\xc3\xbb", "\xc3\xbc", "\xc3\xbd"
};

static const char *grn_nfkc50_decompose_table_c4[] = {
  "\xc4\x81", NULL, "\xc4\x83", NULL, "\xc4\x85", NULL, "\xc4\x87", NULL,
  "\xc4\x89", NULL, "\xc4\x8b", NULL, "\xc4\x8d", NULL, "\xc4\x8f", NULL,
  NULL, NULL, "\xc4\x93", NULL, "\xc4\x95", NULL, "\xc4\x97", NULL,
  "\xc4\x99", NULL, "\xc4\x9b", NULL, "\xc4\x9d", NULL, "\xc4\x9f", NULL,
  "\xc4\xa1", NULL, "\xc4\xa3", NULL, "\xc4\xa5", NULL, NULL, NULL,
  "\xc4\xa9", NULL, "\xc4\xab", NULL, "\xc4\xad", NULL, "\xc4\xaf", NULL,
  "\x69\xcc\x87", NULL, "\x69\x6a", "\x69\x6a", "\xc4\xb5", NULL, "\xc4\xb7", NULL,
  NULL, "\xc4\xba", NULL, "\xc4\xbc", NULL, "\xc4\xbe", NULL, "\x6c\xc2\xb7"
};

static const char *grn_nfkc50_decompose_table_c5[] = {
  "\x6c\xc2\xb7", NULL, NULL, "\xc5\x84", NULL, "\xc5\x86", NULL, "\xc5\x88",
  NULL, "\xca\xbc\x6e", NULL, NULL, "\xc5\x8d", NULL, "\xc5\x8f", NULL,
  "\xc5\x91", NULL, NULL, NULL, "\xc5\x95", NULL, "\xc5\x97", NULL,
  "\xc5\x99", NULL, "\xc5\x9b", NULL, "\xc5\x9d", NULL, "\xc5\x9f", NULL,
  "\xc5\xa1", NULL, "\xc5\xa3", NULL, "\xc5\xa5", NULL, NULL, NULL,
  "\xc5\xa9", NULL, "\xc5\xab", NULL, "\xc5\xad", NULL, "\xc5\xaf", NULL,
  "\xc5\xb1", NULL, "\xc5\xb3", NULL, "\xc5\xb5", NULL, "\xc5\xb7", NULL,
  "\xc3\xbf", "\xc5\xba", NULL, "\xc5\xbc", NULL, "\xc5\xbe", NULL, "\x73"
};

static const char *grn_nfkc50_decompose_table_c6[] = {
  "\xc6\xa1", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xc6\xb0"
};

static const char *grn_nfkc50_decompose_table_c7[] = {
  "\x64\xc5\xbe", "\x64\xc5\xbe", "\x64\xc5\xbe", "\x6c\x6a", "\x6c\x6a", "\x6c\x6a", "\x6e\x6a", "\x6e\x6a",
  "\x6e\x6a", "\xc7\x8e", NULL, "\xc7\x90", NULL, "\xc7\x92", NULL, "\xc7\x94",
  NULL, "\xc7\x96", NULL, "\xc7\x98", NULL, "\xc7\x9a", NULL, "\xc7\x9c",
  NULL, NULL, "\xc7\x9f", NULL, "\xc7\xa1", NULL, NULL, NULL,
  NULL, NULL, "\xc7\xa7", NULL, "\xc7\xa9", NULL, "\xc7\xab", NULL,
  "\xc7\xad", NULL, NULL, NULL, NULL, "\x64\x7a", "\x64\x7a", "\x64\x7a",
  "\xc7\xb5", NULL, NULL, NULL, "\xc7\xb9", NULL, "\xc7\xbb"
};

static const char *grn_nfkc50_decompose_table_c8[] = {
  "\xc8\x81", NULL, "\xc8\x83", NULL, "\xc8\x85", NULL, "\xc8\x87", NULL,
  "\xc8\x89", NULL, "\xc8\x8b", NULL, "\xc8\x8d", NULL, "\xc8\x8f", NULL,
  "\xc8\x91", NULL, "\xc8\x93", NULL, "\xc8\x95", NULL, "\xc8\x97", NULL,
  "\xc8\x99", NULL, "\xc8\x9b", NULL, NULL, NULL, "\xc8\x9f", NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, "\xc8\xa7", NULL,
  "\xc8\xa9", NULL, "\xc8\xab", NULL, "\xc8\xad", NULL, "\xc8\xaf", NULL,
  "\xc8\xb1", NULL, "\xc8\xb3"
};

static const char *grn_nfkc50_decompose_table_ca[] = {
  "\x68", "\xc9\xa6", "\x6a", "\x72", "\xc9\xb9", "\xc9\xbb", "\xca\x81", "\x77",
  "\x79"
};

static const char *grn_nfkc50_decompose_table_cb[] = {
  "\xcc\x86", "\xcc\x87", "\xcc\x8a", "\xcc\xa8", "\xcc\x83", "\xcc\x8b", NULL, NULL,
  "\xc9\xa3", "\x6c", "\x73", "\x78", "\xca\x95"
};

static const char *grn_nfkc50_decompose_table_cd[] = {
  "\xcc\x80", "\xcc\x81", NULL, "\xcc\x93", "\xcc\x88\xcc\x81", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xca\xb9", NULL, NULL, NULL,
  NULL, NULL, "\xcd\x85", NULL, NULL, NULL, "\x3b"
};

static const char *grn_nfkc50_decompose_table_ce[] = {
  "\xcc\x81", "\xcc\x88\xcc\x81", NULL, "\xc2\xb7"
};

static const char *grn_nfkc50_decompose_table_cf[] = {
  "\xce\xb2", "\xce\xb8", "\xce\xa5", "\xce\x8e", "\xce\xab", "\xcf\x86", "\xcf\x80", NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xce\xba", "\xcf\x81", "\xcf\x82", NULL, "\xce\x98", "\xce\xb5", NULL, NULL,
  NULL, "\xce\xa3"
};

static const char *grn_nfkc50_decompose_table_d9[] = {
  "\xd8\xa7\xd9\xb4", "\xd9\x88\xd9\xb4", "\xdb\x87\xd9\xb4", "\xd9\x8a\xd9\xb4"
};

static const char *grn_nfkc50_decompose_table_e0a5[] = {
  "\xe0\xa4\x95\xe0\xa4\xbc", "\xe0\xa4\x96\xe0\xa4\xbc", "\xe0\xa4\x97\xe0\xa4\xbc", "\xe0\xa4\x9c\xe0\xa4\xbc", "\xe0\xa4\xa1\xe0\xa4\xbc", "\xe0\xa4\xa2\xe0\xa4\xbc", "\xe0\xa4\xab\xe0\xa4\xbc", "\xe0\xa4\xaf\xe0\xa4\xbc"
};

static const char *grn_nfkc50_decompose_table_e0a7[] = {
  "\xe0\xa6\xa1\xe0\xa6\xbc", "\xe0\xa6\xa2\xe0\xa6\xbc", NULL, "\xe0\xa6\xaf\xe0\xa6\xbc"
};

static const char *grn_nfkc50_decompose_table_e0a8[] = {
  "\xe0\xa8\xb2\xe0\xa8\xbc", NULL, NULL, "\xe0\xa8\xb8\xe0\xa8\xbc"
};

static const char *grn_nfkc50_decompose_table_e0a9[] = {
  "\xe0\xa8\x96\xe0\xa8\xbc", "\xe0\xa8\x97\xe0\xa8\xbc", "\xe0\xa8\x9c\xe0\xa8\xbc", NULL, NULL, "\xe0\xa8\xab\xe0\xa8\xbc"
};

static const char *grn_nfkc50_decompose_table_e0ad[] = {
  "\xe0\xac\xa1\xe0\xac\xbc", "\xe0\xac\xa2\xe0\xac\xbc"
};

static const char *grn_nfkc50_decompose_table_e0bb[] = {
  "\xe0\xba\xab\xe0\xba\x99", "\xe0\xba\xab\xe0\xba\xa1"
};

static const char *grn_nfkc50_decompose_table_e0bd[] = {
  "\xe0\xbd\x82\xe0\xbe\xb7", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, "\xe0\xbd\x8c\xe0\xbe\xb7", NULL, NULL, NULL, NULL, "\xe0\xbd\x91\xe0\xbe\xb7",
  NULL, NULL, NULL, NULL, "\xe0\xbd\x96\xe0\xbe\xb7", NULL, NULL, NULL,
  NULL, "\xe0\xbd\x9b\xe0\xbe\xb7", NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, "\xe0\xbd\x80\xe0\xbe\xb5", NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe0\xbd\xb1\xe0\xbd\xb2", NULL, "\xe0\xbd\xb1\xe0\xbd\xb4", "\xe0\xbe\xb2\xe0\xbe\x80", "\xe0\xbe\xb2\xe0\xbd\xb1\xe0\xbe\x80", "\xe0\xbe\xb3\xe0\xbe\x80", "\xe0\xbe\xb3\xe0\xbd\xb1\xe0\xbe\x80"
};

static const char *grn_nfkc50_decompose_table_e0be[] = {
  "\xe0\xbd\xb1\xe0\xbe\x80", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, "\xe0\xbe\x92\xe0\xbe\xb7", NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xe0\xbe\x9c\xe0\xbe\xb7", NULL, NULL, NULL,
  NULL, "\xe0\xbe\xa1\xe0\xbe\xb7", NULL, NULL, NULL, NULL, "\xe0\xbe\xa6\xe0\xbe\xb7", NULL,
  NULL, NULL, NULL, "\xe0\xbe\xab\xe0\xbe\xb7", NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe0\xbe\x90\xe0\xbe\xb5"
};

static const char *grn_nfkc50_decompose_table_e1b4[] = {
  "\x61", "\xc3\x86", "\x62", NULL, "\x64", "\x65", "\xc6\x8e", "\x67",
  "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", NULL,
  "\x6f", "\xc8\xa2", "\x70", "\x72"
};

static const char *grn_nfkc50_decompose_table_e1b5[] = {
  "\x74", "\x75", "\x77", "\x61", "\xc9\x90", "\xc9\x91", "\xe1\xb4\x82", "\x62",
  "\x64", "\x65", "\xc9\x99", "\xc9\x9b", "\xc9\x9c", "\x67", NULL, "\x6b",
  "\x6d", "\xc5\x8b", "\x6f", "\xc9\x94", "\xe1\xb4\x96", "\xe1\xb4\x97", "\x70", "\x74",
  "\x75", "\xe1\xb4\x9d", "\xc9\xaf", "\x76", "\xe1\xb4\xa5", "\xce\xb2", "\xce\xb3", "\xce\xb4",
  "\xcf\x86", "\xcf\x87", "\x69", "\x72", "\x75", "\x76", "\xce\xb2", "\xce\xb3",
  "\xcf\x81", "\xcf\x86", "\xcf\x87", NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xd0\xbd"
};

static const char *grn_nfkc50_decompose_table_e1b6[] = {
  "\xc9\x92", "\x63", "\xc9\x95", "\xc3\xb0", "\xc9\x9c", "\x66", "\xc9\x9f", "\xc9\xa1",
  "\xc9\xa5", "\xc9\xa8", "\xc9\xa9", "\xc9\xaa", "\xe1\xb5\xbb", "\xca\x9d", "\xc9\xad", "\xe1\xb6\x85",
  "\xca\x9f", "\xc9\xb1", "\xc9\xb0", "\xc9\xb2", "\xc9\xb3", "\xc9\xb4", "\xc9\xb5", "\xc9\xb8",
  "\xca\x82", "\xca\x83", "\xc6\xab", "\xca\x89", "\xca\x8a", "\xe1\xb4\x9c", "\xca\x8b", "\xca\x8c",
  "\x7a", "\xca\x90", "\xca\x91", "\xca\x92", "\xce\xb8"
};

static const char *grn_nfkc50_decompose_table_e1b8[] = {
  "\xe1\xb8\x81", NULL, "\xe1\xb8\x83", NULL, "\xe1\xb8\x85", NULL, "\xe1\xb8\x87", NULL,
  "\xe1\xb8\x89", NULL, "\xe1\xb8\x8b", NULL, "\xe1\xb8\x8d", NULL, "\xe1\xb8\x8f", NULL,
  "\xe1\xb8\x91", NULL, "\xe1\xb8\x93", NULL, "\xe1\xb8\x95", NULL, "\xe1\xb8\x97", NULL,
  "\xe1\xb8\x99", NULL, "\xe1\xb8\x9b", NULL, "\xe1\xb8\x9d", NULL, "\xe1\xb8\x9f", NULL,
  "\xe1\xb8\xa1", NULL, "\xe1\xb8\xa3", NULL, "\xe1\xb8\xa5", NULL, "\xe1\xb8\xa7", NULL,
  "\xe1\xb8\xa9", NULL, "\xe1\xb8\xab", NULL, "\xe1\xb8\xad", NULL, "\xe1\xb8\xaf", NULL,
  "\xe1\xb8\xb1", NULL, "\xe1\xb8\xb3", NULL, "\xe1\xb8\xb5", NULL, "\xe1\xb8\xb7", NULL,
  "\xe1\xb8\xb9", NULL, "\xe1\xb8\xbb", NULL, "\xe1\xb8\xbd", NULL, "\xe1\xb8\xbf"
};

static const char *grn_nfkc50_decompose_table_e1b9[] = {
  "\xe1\xb9\x81", NULL, "\xe1\xb9\x83", NULL, "\xe1\xb9\x85", NULL, "\xe1\xb9\x87", NULL,
  "\xe1\xb9\x89", NULL, "\xe1\xb9\x8b", NULL, "\xe1\xb9\x8d", NULL, "\xe1\xb9\x8f", NULL,
  "\xe1\xb9\x91", NULL, "\xe1\xb9\x93", NULL, "\xe1\xb9\x95", NULL, "\xe1\xb9\x97", NULL,
  "\xe1\xb9\x99", NULL, "\xe1\xb9\x9b", NULL, "\xe1\xb9\x9d", NULL, "\xe1\xb9\x9f", NULL,
  "\xe1\xb9\xa1", NULL, "\xe1\xb9\xa3", NULL, "\xe1\xb9\xa5", NULL, "\xe1\xb9\xa7", NULL,
  "\xe1\xb9\xa9", NULL, "\xe1\xb9\xab", NULL, "\xe1\xb9\xad", NULL, "\xe1\xb9\xaf", NULL,
  "\xe1\xb9\xb1", NULL, "\xe1\xb9\xb3", NULL, "\xe1\xb9\xb5", NULL, "\xe1\xb9\xb7", NULL,
  "\xe1\xb9\xb9", NULL, "\xe1\xb9\xbb", NULL, "\xe1\xb9\xbd", NULL, "\xe1\xb9\xbf"
};

static const char *grn_nfkc50_decompose_table_e1ba[] = {
  "\xe1\xba\x81", NULL, "\xe1\xba\x83", NULL, "\xe1\xba\x85", NULL, "\xe1\xba\x87", NULL,
  "\xe1\xba\x89", NULL, "\xe1\xba\x8b", NULL, "\xe1\xba\x8d", NULL, "\xe1\xba\x8f", NULL,
  "\xe1\xba\x91", NULL, "\xe1\xba\x93", NULL, "\xe1\xba\x95", NULL, NULL, NULL,
  NULL, NULL, "\x61\xca\xbe", "\xe1\xb9\xa1", NULL, NULL, NULL, NULL,
  "\xe1\xba\xa1", NULL, "\xe1\xba\xa3", NULL, "\xe1\xba\xa5", NULL, "\xe1\xba\xa7", NULL,
  "\xe1\xba\xa9", NULL, "\xe1\xba\xab", NULL, "\xe1\xba\xad", NULL, "\xe1\xba\xaf", NULL,
  "\xe1\xba\xb1", NULL, "\xe1\xba\xb3", NULL, "\xe1\xba\xb5", NULL, "\xe1\xba\xb7", NULL,
  "\xe1\xba\xb9", NULL, "\xe1\xba\xbb", NULL, "\xe1\xba\xbd", NULL, "\xe1\xba\xbf"
};

static const char *grn_nfkc50_decompose_table_e1bb[] = {
  "\xe1\xbb\x81", NULL, "\xe1\xbb\x83", NULL, "\xe1\xbb\x85", NULL, "\xe1\xbb\x87", NULL,
  "\xe1\xbb\x89", NULL, "\xe1\xbb\x8b", NULL, "\xe1\xbb\x8d", NULL, "\xe1\xbb\x8f", NULL,
  "\xe1\xbb\x91", NULL, "\xe1\xbb\x93", NULL, "\xe1\xbb\x95", NULL, "\xe1\xbb\x97", NULL,
  "\xe1\xbb\x99", NULL, "\xe1\xbb\x9b", NULL, "\xe1\xbb\x9d", NULL, "\xe1\xbb\x9f", NULL,
  "\xe1\xbb\xa1", NULL, "\xe1\xbb\xa3", NULL, "\xe1\xbb\xa5", NULL, "\xe1\xbb\xa7", NULL,
  "\xe1\xbb\xa9", NULL, "\xe1\xbb\xab", NULL, "\xe1\xbb\xad", NULL, "\xe1\xbb\xaf", NULL,
  "\xe1\xbb\xb1", NULL, "\xe1\xbb\xb3", NULL, "\xe1\xbb\xb5", NULL, "\xe1\xbb\xb7", NULL,
  "\xe1\xbb\xb9"
};

static const char *grn_nfkc50_decompose_table_e1bd[] = {
  "\xce\xac", NULL, "\xce\xad", NULL, "\xce\xae", NULL, "\xce\xaf", NULL,
  "\xcf\x8c", NULL, "\xcf\x8d", NULL, "\xcf\x8e"
};

static const char *grn_nfkc50_decompose_table_e1be[] = {
  "\xce\x86", NULL, "\xcc\x93", "\xce\xb9", "\xcc\x93"
};

static const char *grn_nfkc50_decompose_table_e1bf[] = {
  "\xcd\x82", "\xcc\x88\xcd\x82", NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, "\xce\x88", NULL, "\xce\x89", NULL, "\xcc\x93\xcc\x80", "\xcc\x93\xcc\x81", "\xcc\x93\xcd\x82",
  NULL, NULL, NULL, "\xce\x90", NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, "\xce\x8a", NULL, "\xcc\x94\xcc\x80", "\xcc\x94\xcc\x81", "\xcc\x94\xcd\x82",
  NULL, NULL, NULL, "\xce\xb0", NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, "\xce\x8e", NULL, "\xcc\x88\xcc\x80", "\xcc\x88\xcc\x81", "\x60",
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, "\xce\x8c", NULL, "\xce\x8f", NULL, "\xcc\x81", "\xcc\x94"
};

static const char *grn_nfkc50_decompose_table_e280[] = {
  "\x20", "\x20", "\x20", "\x20", "\x20", "\x20", "\x20", "\x20",
  "\x20", "\x20", "\x20", NULL, NULL, NULL, NULL, NULL,
  NULL, "\xe2\x80\x90", NULL, NULL, NULL, NULL, NULL, "\xcc\xb3",
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\x2e", "\x2e\x2e", "\x2e\x2e\x2e", NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\x20",
  NULL, NULL, NULL, "\xe2\x80\xb2\xe2\x80\xb2", "\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2", NULL, "\xe2\x80\xb5\xe2\x80\xb5", "\xe2\x80\xb5\xe2\x80\xb5\xe2\x80\xb5",
  NULL, NULL, NULL, NULL, "\x21\x21", NULL, "\xcc\x85"
};

static const char *grn_nfkc50_decompose_table_e281[] = {
  "\x3f\x3f", "\x3f\x21", "\x21\x3f", NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2\xe2\x80\xb2", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\x20", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, "\x30", "\x69", NULL, NULL, "\x34", "\x35", "\x36",
  "\x37", "\x38", "\x39", "\x2b", "\xe2\x88\x92", "\x3d", "\x28", "\x29",
  "\x6e"
};

static const char *grn_nfkc50_decompose_table_e282[] = {
  "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37",
  "\x38", "\x39", "\x2b", "\xe2\x88\x92", "\x3d", "\x28", "\x29", NULL,
  "\x61", "\x65", "\x6f", "\x78", "\xc9\x99", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\x72\x73"
};

static const char *grn_nfkc50_decompose_table_e284[] = {
  "\x61\x2f\x63", "\x61\x2f\x73", "\x63", "\xc2\xb0\x63", NULL, "\x63\x2f\x6f", "\x63\x2f\x75", "\xc6\x90",
  NULL, "\xc2\xb0\x66", "\x67", "\x68", "\x68", "\x68", "\x68", "\xc4\xa7",
  "\x69", "\x69", "\x6c", "\x6c", NULL, "\x6e", "\x6e\x6f", NULL,
  NULL, "\x70", "\x71", "\x72", "\x72", "\x72", NULL, NULL,
  "\x73\x6d", "\x74\x65\x6c", "\x74\x6d", NULL, "\x7a", NULL, "\xce\xa9", NULL,
  "\x7a", NULL, "\x6b", "\xc3\xa5", "\x62", "\x63", NULL, "\x65",
  "\x65", "\x66", NULL, "\x6d", "\x6f", "\xd7\x90", "\xd7\x91", "\xd7\x92",
  "\xd7\x93", "\x69", NULL, "\x66\x61\x78", "\xcf\x80", "\xce\xb3", "\xce\x93", "\xce\xa0"
};

static const char *grn_nfkc50_decompose_table_e285[] = {
  "\xe2\x88\x91", NULL, NULL, NULL, NULL, "\x64", "\x64", "\x65",
  "\x69", "\x6a", NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, "\x31\xe2\x81\x84\x33", "\x32\xe2\x81\x84\x33", "\x31\xe2\x81\x84\x35", "\x32\xe2\x81\x84\x35", "\x33\xe2\x81\x84\x35",
  "\x34\xe2\x81\x84\x35", "\x31\xe2\x81\x84\x36", "\x35\xe2\x81\x84\x36", "\x31\xe2\x81\x84\x38", "\x33\xe2\x81\x84\x38", "\x35\xe2\x81\x84\x38", "\x37\xe2\x81\x84\x38", "\x31\xe2\x81\x84",
  "\x69", "\x69\x69", "\x69\x69\x69", "\x69\x76", "\x76", "\x76\x69", "\x76\x69\x69", "\x76\x69\x69\x69",
  "\x69\x78", "\x78", "\x78\x69", "\x78\x69\x69", "\x6c", "\x63", "\x64", "\x6d",
  "\x69", "\x69\x69", "\x69\x69\x69", "\x69\x76", "\x76", "\x76\x69", "\x76\x69\x69", "\x76\x69\x69\x69",
  "\x69\x78", "\x78", "\x78\x69", "\x78\x69\x69", "\x6c", "\x63", "\x64", "\x6d"
};

static const char *grn_nfkc50_decompose_table_e288[] = {
  "\xe2\x88\xab\xe2\x88\xab", "\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab", NULL, "\xe2\x88\xae\xe2\x88\xae", "\xe2\x88\xae\xe2\x88\xae\xe2\x88\xae"
};

static const char *grn_nfkc50_decompose_table_e28c[] = {
  "\xe3\x80\x88", "\xe3\x80\x89"
};

static const char *grn_nfkc50_decompose_table_e291[] = {
  "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38",
  "\x39", "\x31\x30", "\x31\x31", "\x31\x32", "\x31\x33", "\x31\x34", "\x31\x35", "\x31\x36",
  "\x31\x37", "\x31\x38", "\x31\x39", "\x32\x30", "\x28\x31\x29", "\x28\x32\x29", "\x28\x33\x29", "\x28\x34\x29",
  "\x28\x35\x29", "\x28\x36\x29", "\x28\x37\x29", "\x28\x38\x29", "\x28\x39\x29", "\x28\x31\x30\x29", "\x28\x31\x31\x29", "\x28\x31\x32\x29"
};

static const char *grn_nfkc50_decompose_table_e292[] = {
  "\x28\x31\x33\x29", "\x28\x31\x34\x29", "\x28\x31\x35\x29", "\x28\x31\x36\x29", "\x28\x31\x37\x29", "\x28\x31\x38\x29", "\x28\x31\x39\x29", "\x28\x32\x30\x29",
  "\x31\x2e", "\x32\x2e", "\x33\x2e", "\x34\x2e", "\x35\x2e", "\x36\x2e", "\x37\x2e", "\x38\x2e",
  "\x39\x2e", "\x31\x30\x2e", "\x31\x31\x2e", "\x31\x32\x2e", "\x31\x33\x2e", "\x31\x34\x2e", "\x31\x35\x2e", "\x31\x36\x2e",
  "\x31\x37\x2e", "\x31\x38\x2e", "\x31\x39\x2e", "\x32\x30\x2e", "\x28\x61\x29", "\x28\x62\x29", "\x28\x63\x29", "\x28\x64\x29",
  "\x28\x65\x29", "\x28\x66\x29", "\x28\x67\x29", "\x28\x68\x29", "\x28\x69\x29", "\x28\x6a\x29", "\x28\x6b\x29", "\x28\x6c\x29",
  "\x28\x6d\x29", "\x28\x6e\x29", "\x28\x6f\x29", "\x28\x70\x29", "\x28\x71\x29", "\x28\x72\x29", "\x28\x73\x29", "\x28\x74\x29",
  "\x28\x75\x29", "\x28\x76\x29", "\x28\x77\x29", "\x28\x78\x29", "\x28\x79\x29", "\x28\x7a\x29", "\x61", "\x62",
  "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a"
};

static const char *grn_nfkc50_decompose_table_e293[] = {
  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72",
  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
  "\x79", "\x7a", "\x30"
};

static const char *grn_nfkc50_decompose_table_e2a9[] = {
  "\x3a\x3a\x3d", "\x3d\x3d", "\x3d\x3d\x3d"
};

static const char *grn_nfkc50_decompose_table_e2bc[] = {
  "\xe4\xb8\x80", "\xe4\xb8\xa8", "\xe4\xb8\xb6", "\xe4\xb8\xbf", "\xe4\xb9\x99", "\xe4\xba\x85", "\xe4\xba\x8c", "\xe4\xba\xa0",
  "\xe4\xba\xba", "\xe5\x84\xbf", "\xe5\x85\xa5", "\xe5\x85\xab", "\xe5\x86\x82", "\xe5\x86\x96", "\xe5\x86\xab", "\xe5\x87\xa0",
  "\xe5\x87\xb5", "\xe5\x88\x80", "\xe5\x8a\x9b", "\xe5\x8b\xb9", "\xe5\x8c\x95", "\xe5\x8c\x9a", "\xe5\x8c\xb8", "\xe5\x8d\x81",
  "\xe5\x8d\x9c", "\xe5\x8d\xa9", "\xe5\x8e\x82", "\xe5\x8e\xb6", "\xe5\x8f\x88", "\xe5\x8f\xa3", "\xe5\x9b\x97", "\xe5\x9c\x9f",
  "\xe5\xa3\xab", "\xe5\xa4\x82", "\xe5\xa4\x8a", "\xe5\xa4\x95", "\xe5\xa4\xa7", "\xe5\xa5\xb3", "\xe5\xad\x90", "\xe5\xae\x80",
  "\xe5\xaf\xb8", "\xe5\xb0\x8f", "\xe5\xb0\xa2", "\xe5\xb0\xb8", "\xe5\xb1\xae", "\xe5\xb1\xb1", "\xe5\xb7\x9b", "\xe5\xb7\xa5",
  "\xe5\xb7\xb1", "\xe5\xb7\xbe", "\xe5\xb9\xb2", "\xe5\xb9\xba", "\xe5\xb9\xbf", "\xe5\xbb\xb4", "\xe5\xbb\xbe", "\xe5\xbc\x8b",
  "\xe5\xbc\x93", "\xe5\xbd\x90", "\xe5\xbd\xa1", "\xe5\xbd\xb3", "\xe5\xbf\x83", "\xe6\x88\x88", "\xe6\x88\xb6", "\xe6\x89\x8b"
};

static const char *grn_nfkc50_decompose_table_e2bd[] = {
  "\xe6\x94\xaf", "\xe6\x94\xb4", "\xe6\x96\x87", "\xe6\x96\x97", "\xe6\x96\xa4", "\xe6\x96\xb9", "\xe6\x97\xa0", "\xe6\x97\xa5",
  "\xe6\x9b\xb0", "\xe6\x9c\x88", "\xe6\x9c\xa8", "\xe6\xac\xa0", "\xe6\xad\xa2", "\xe6\xad\xb9", "\xe6\xae\xb3", "\xe6\xaf\x8b",
  "\xe6\xaf\x94", "\xe6\xaf\x9b", "\xe6\xb0\x8f", "\xe6\xb0\x94", "\xe6\xb0\xb4", "\xe7\x81\xab", "\xe7\x88\xaa", "\xe7\x88\xb6",
  "\xe7\x88\xbb", "\xe7\x88\xbf", "\xe7\x89\x87", "\xe7\x89\x99", "\xe7\x89\x9b", "\xe7\x8a\xac", "\xe7\x8e\x84", "\xe7\x8e\x89",
  "\xe7\x93\x9c", "\xe7\x93\xa6", "\xe7\x94\x98", "\xe7\x94\x9f", "\xe7\x94\xa8", "\xe7\x94\xb0", "\xe7\x96\x8b", "\xe7\x96\x92",
  "\xe7\x99\xb6", "\xe7\x99\xbd", "\xe7\x9a\xae", "\xe7\x9a\xbf", "\xe7\x9b\xae", "\xe7\x9f\x9b", "\xe7\x9f\xa2", "\xe7\x9f\xb3",
  "\xe7\xa4\xba", "\xe7\xa6\xb8", "\xe7\xa6\xbe", "\xe7\xa9\xb4", "\xe7\xab\x8b", "\xe7\xab\xb9", "\xe7\xb1\xb3", "\xe7\xb3\xb8",
  "\xe7\xbc\xb6", "\xe7\xbd\x91", "\xe7\xbe\x8a", "\xe7\xbe\xbd", "\xe8\x80\x81", "\xe8\x80\x8c", "\xe8\x80\x92", "\xe8\x80\xb3"
};

static const char *grn_nfkc50_decompose_table_e2be[] = {
  "\xe8\x81\xbf", "\xe8\x82\x89", "\xe8\x87\xa3", "\xe8\x87\xaa", "\xe8\x87\xb3", "\xe8\x87\xbc", "\xe8\x88\x8c", "\xe8\x88\x9b",
  "\xe8\x88\x9f", "\xe8\x89\xae", "\xe8\x89\xb2", "\xe8\x89\xb8", "\xe8\x99\x8d", "\xe8\x99\xab", "\xe8\xa1\x80", "\xe8\xa1\x8c",
  "\xe8\xa1\xa3", "\xe8\xa5\xbe", "\xe8\xa6\x8b", "\xe8\xa7\x92", "\xe8\xa8\x80", "\xe8\xb0\xb7", "\xe8\xb1\x86", "\xe8\xb1\x95",
  "\xe8\xb1\xb8", "\xe8\xb2\x9d", "\xe8\xb5\xa4", "\xe8\xb5\xb0", "\xe8\xb6\xb3", "\xe8\xba\xab", "\xe8\xbb\x8a", "\xe8\xbe\x9b",
  "\xe8\xbe\xb0", "\xe8\xbe\xb5", "\xe9\x82\x91", "\xe9\x85\x89", "\xe9\x87\x86", "\xe9\x87\x8c", "\xe9\x87\x91", "\xe9\x95\xb7",
  "\xe9\x96\x80", "\xe9\x98\x9c", "\xe9\x9a\xb6", "\xe9\x9a\xb9", "\xe9\x9b\xa8", "\xe9\x9d\x91", "\xe9\x9d\x9e", "\xe9\x9d\xa2",
  "\xe9\x9d\xa9", "\xe9\x9f\x8b", "\xe9\x9f\xad", "\xe9\x9f\xb3", "\xe9\xa0\x81", "\xe9\xa2\xa8", "\xe9\xa3\x9b", "\xe9\xa3\x9f",
  "\xe9\xa6\x96", "\xe9\xa6\x99", "\xe9\xa6\xac", "\xe9\xaa\xa8", "\xe9\xab\x98", "\xe9\xab\x9f", "\xe9\xac\xa5", "\xe9\xac\xaf"
};

static const char *grn_nfkc50_decompose_table_e2bf[] = {
  "\xe9\xac\xb2", "\xe9\xac\xbc", "\xe9\xad\x9a", "\xe9\xb3\xa5", "\xe9\xb9\xb5", "\xe9\xb9\xbf", "\xe9\xba\xa5", "\xe9\xba\xbb",
  "\xe9\xbb\x83", "\xe9\xbb\x8d", "\xe9\xbb\x91", "\xe9\xbb\xb9", "\xe9\xbb\xbd", "\xe9\xbc\x8e", "\xe9\xbc\x93", "\xe9\xbc\xa0",
  "\xe9\xbc\xbb", "\xe9\xbd\x8a", "\xe9\xbd\x92", "\xe9\xbe\x8d", "\xe9\xbe\x9c", "\xe9\xbe\xa0"
};

static const char *grn_nfkc50_decompose_table_e380[] = {
  "\x20", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\x7e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, "\xe3\x80\x92", NULL,
  "\xe5\x8d\x81", "\xe5\x8d\x84", "\xe5\x8d\x85"
};

static const char *grn_nfkc50_decompose_table_e382[] = {
  "\xe3\x82\x99", "\xe3\x82\x9a", NULL, NULL, "\xe3\x82\x88\xe3\x82\x8a"
};

static const char *grn_nfkc50_decompose_table_e384[] = {
  "\xe1\x84\x80", "\xe1\x84\x81", "\xe1\x86\xaa", "\xe1\x84\x82", "\xe1\x86\xac", "\xe1\x86\xad", "\xe1\x84\x83", "\xe1\x84\x84",
  "\xe1\x84\x85", "\xe1\x86\xb0", "\xe1\x86\xb1", "\xe1\x86\xb2", "\xe1\x86\xb3", "\xe1\x86\xb4", "\xe1\x86\xb5"
};

static const char *grn_nfkc50_decompose_table_e385[] = {
  "\xe1\x84\x9a", "\xe1\x84\x86", "\xe1\x84\x87", "\xe1\x84\x88", "\xe1\x84\xa1", "\xe1\x84\x89", "\xe1\x84\x8a", "\xe1\x84\x8b",
  "\xe1\x84\x8c", "\xe1\x84\x8d", "\xe1\x84\x8e", "\xe1\x84\x8f", "\xe1\x84\x90", "\xe1\x84\x91", "\xe1\x84\x92", "\xe1\x85\xa1",
  "\xe1\x85\xa2", "\xe1\x85\xa3", "\xe1\x85\xa4", "\xe1\x85\xa5", "\xe1\x85\xa6", "\xe1\x85\xa7", "\xe1\x85\xa8", "\xe1\x85\xa9",
  "\xe1\x85\xaa", "\xe1\x85\xab", "\xe1\x85\xac", "\xe1\x85\xad", "\xe1\x85\xae", "\xe1\x85\xaf", "\xe1\x85\xb0", "\xe1\x85\xb1",
  "\xe1\x85\xb2", "\xe1\x85\xb3", "\xe1\x85\xb4", "\xe1\x85\xb5", "\xe1\x85\xa0", "\xe1\x84\x94", "\xe1\x84\x95", "\xe1\x87\x87",
  "\xe1\x87\x88", "\xe1\x87\x8c", "\xe1\x87\x8e", "\xe1\x87\x93", "\xe1\x87\x97", "\xe1\x87\x99", "\xe1\x84\x9c", "\xe1\x87\x9d",
  "\xe1\x87\x9f", "\xe1\x84\x9d", "\xe1\x84\x9e", "\xe1\x84\xa0", "\xe1\x84\xa2", "\xe1\x84\xa3", "\xe1\x84\xa7", "\xe1\x84\xa9",
  "\xe1\x84\xab", "\xe1\x84\xac", "\xe1\x84\xad", "\xe1\x84\xae", "\xe1\x84\xaf", "\xe1\x84\xb2", "\xe1\x84\xb6", "\xe1\x85\x80"
};

static const char *grn_nfkc50_decompose_table_e386[] = {
  "\xe1\x85\x87", "\xe1\x85\x8c", "\xe1\x87\xb1", "\xe1\x87\xb2", "\xe1\x85\x97", "\xe1\x85\x98", "\xe1\x85\x99", "\xe1\x86\x84",
  "\xe1\x86\x85", "\xe1\x86\x88", "\xe1\x86\x91", "\xe1\x86\x92", "\xe1\x86\x94", "\xe1\x86\x9e", "\xe1\x86\xa1", NULL,
  NULL, NULL, "\xe4\xb8\x80", "\xe4\xba\x8c", "\xe4\xb8\x89", "\xe5\x9b\x9b", "\xe4\xb8\x8a", "\xe4\xb8\xad",
  "\xe4\xb8\x8b", "\xe7\x94\xb2", "\xe4\xb9\x99", "\xe4\xb8\x99", "\xe4\xb8\x81", "\xe5\xa4\xa9", "\xe5\x9c\xb0", "\xe4\xba\xba"
};

static const char *grn_nfkc50_decompose_table_e388[] = {
  "\x28\xe1\x84\x80\x29", "\x28\xe1\x84\x82\x29", "\x28\xe1\x84\x83\x29", "\x28\xe1\x84\x85\x29", "\x28\xe1\x84\x86\x29", "\x28\xe1\x84\x87\x29", "\x28\xe1\x84\x89\x29", "\x28\xe1\x84\x8b\x29",
  "\x28\xe1\x84\x8c\x29", "\x28\xe1\x84\x8e\x29", "\x28\xe1\x84\x8f\x29", "\x28\xe1\x84\x90\x29", "\x28\xe1\x84\x91\x29", "\x28\xe1\x84\x92\x29", "\x28\xea\xb0\x80\x29", "\x28\xeb\x82\x98\x29",
  "\x28\xeb\x8b\xa4\x29", "\x28\xeb\x9d\xbc\x29", "\x28\xeb\xa7\x88\x29", "\x28\xeb\xb0\x94\x29", "\x28\xec\x82\xac\x29", "\x28\xec\x95\x84\x29", "\x28\xec\x9e\x90\x29", "\x28\xec\xb0\xa8\x29",
  "\x28\xec\xb9\xb4\x29", "\x28\xed\x83\x80\x29", "\x28\xed\x8c\x8c\x29", "\x28\xed\x95\x98\x29", "\x28\xec\xa3\xbc\x29", "\x28\xec\x98\xa4\xec\xa0\x84\x29", "\x28\xec\x98\xa4\xed\x9b\x84\x29", NULL,
  "\x28\xe4\xb8\x80\x29", "\x28\xe4\xba\x8c\x29", "\x28\xe4\xb8\x89\x29", "\x28\xe5\x9b\x9b\x29", "\x28\xe4\xba\x94\x29", "\x28\xe5\x85\xad\x29", "\x28\xe4\xb8\x83\x29", "\x28\xe5\x85\xab\x29",
  "\x28\xe4\xb9\x9d\x29", "\x28\xe5\x8d\x81\x29", "\x28\xe6\x9c\x88\x29", "\x28\xe7\x81\xab\x29", "\x28\xe6\xb0\xb4\x29", "\x28\xe6\x9c\xa8\x29", "\x28\xe9\x87\x91\x29", "\x28\xe5\x9c\x9f\x29",
  "\x28\xe6\x97\xa5\x29", "\x28\xe6\xa0\xaa\x29", "\x28\xe6\x9c\x89\x29", "\x28\xe7\xa4\xbe\x29", "\x28\xe5\x90\x8d\x29", "\x28\xe7\x89\xb9\x29", "\x28\xe8\xb2\xa1\x29", "\x28\xe7\xa5\x9d\x29",
  "\x28\xe5\x8a\xb4\x29", "\x28\xe4\xbb\xa3\x29", "\x28\xe5\x91\xbc\x29", "\x28\xe5\xad\xa6\x29", "\x28\xe7\x9b\xa3\x29", "\x28\xe4\xbc\x81\x29", "\x28\xe8\xb3\x87\x29", "\x28\xe5\x8d\x94\x29"
};

static const char *grn_nfkc50_decompose_table_e389[] = {
  "\x28\xe7\xa5\xad\x29", "\x28\xe4\xbc\x91\x29", "\x28\xe8\x87\xaa\x29", "\x28\xe8\x87\xb3\x29", NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\x70\x74\x65", "\x32\x31", "\x32\x32", "\x32\x33", "\x32\x34", "\x32\x35", "\x32\x36", "\x32\x37",
  "\x32\x38", "\x32\x39", "\x33\x30", "\x33\x31", "\x33\x32", "\x33\x33", "\x33\x34", "\x33\x35",
  "\xe1\x84\x80", "\xe1\x84\x82", "\xe1\x84\x83", "\xe1\x84\x85", "\xe1\x84\x86", "\xe1\x84\x87", "\xe1\x84\x89", "\xe1\x84\x8b",
  "\xe1\x84\x8c", "\xe1\x84\x8e", "\xe1\x84\x8f", "\xe1\x84\x90", "\xe1\x84\x91", "\xe1\x84\x92", "\xea\xb0\x80", "\xeb\x82\x98",
  "\xeb\x8b\xa4", "\xeb\x9d\xbc", "\xeb\xa7\x88", "\xeb\xb0\x94", "\xec\x82\xac", "\xec\x95\x84", "\xec\x9e\x90", "\xec\xb0\xa8",
  "\xec\xb9\xb4", "\xed\x83\x80", "\xed\x8c\x8c", "\xed\x95\x98", "\xec\xb0\xb8\xea\xb3\xa0", "\xec\xa3\xbc\xec\x9d\x98", "\xec\x9a\xb0"
};

static const char *grn_nfkc50_decompose_table_e38a[] = {
  "\xe4\xb8\x80", "\xe4\xba\x8c", "\xe4\xb8\x89", "\xe5\x9b\x9b", "\xe4\xba\x94", "\xe5\x85\xad", "\xe4\xb8\x83", "\xe5\x85\xab",
  "\xe4\xb9\x9d", "\xe5\x8d\x81", "\xe6\x9c\x88", "\xe7\x81\xab", "\xe6\xb0\xb4", "\xe6\x9c\xa8", "\xe9\x87\x91", "\xe5\x9c\x9f",
  "\xe6\x97\xa5", "\xe6\xa0\xaa", "\xe6\x9c\x89", "\xe7\xa4\xbe", "\xe5\x90\x8d", "\xe7\x89\xb9", "\xe8\xb2\xa1", "\xe7\xa5\x9d",
  "\xe5\x8a\xb4", "\xe7\xa7\x98", "\xe7\x94\xb7", "\xe5\xa5\xb3", "\xe9\x81\xa9", "\xe5\x84\xaa", "\xe5\x8d\xb0", "\xe6\xb3\xa8",
  "\xe9\xa0\x85", "\xe4\xbc\x91", "\xe5\x86\x99", "\xe6\xad\xa3", "\xe4\xb8\x8a", "\xe4\xb8\xad", "\xe4\xb8\x8b", "\xe5\xb7\xa6",
  "\xe5\x8f\xb3", "\xe5\x8c\xbb", "\xe5\xae\x97", "\xe5\xad\xa6", "\xe7\x9b\xa3", "\xe4\xbc\x81", "\xe8\xb3\x87", "\xe5\x8d\x94",
  "\xe5\xa4\x9c", "\x33\x36", "\x33\x37", "\x33\x38", "\x33\x39", "\x34\x30", "\x34\x31", "\x34\x32",
  "\x34\x33", "\x34\x34", "\x34\x35", "\x34\x36", "\x34\x37", "\x34\x38", "\x34\x39", "\x35\x30"
};

static const char *grn_nfkc50_decompose_table_e38b[] = {
  "\x31\xe6\x9c\x88", "\x32\xe6\x9c\x88", "\x33\xe6\x9c\x88", "\x34\xe6\x9c\x88", "\x35\xe6\x9c\x88", "\x36\xe6\x9c\x88", "\x37\xe6\x9c\x88", "\x38\xe6\x9c\x88",
  "\x39\xe6\x9c\x88", "\x31\x30\xe6\x9c\x88", "\x31\x31\xe6\x9c\x88", "\x31\x32\xe6\x9c\x88", "\x68\x67", "\x65\x72\x67", "\x65\x76", "\x6c\x74\x64",
  "\xe3\x82\xa2", "\xe3\x82\xa4", "\xe3\x82\xa6", "\xe3\x82\xa8", "\xe3\x82\xaa", "\xe3\x82\xab", "\xe3\x82\xad", "\xe3\x82\xaf",
  "\xe3\x82\xb1", "\xe3\x82\xb3", "\xe3\x82\xb5", "\xe3\x82\xb7", "\xe3\x82\xb9", "\xe3\x82\xbb", "\xe3\x82\xbd", "\xe3\x82\xbf",
  "\xe3\x83\x81", "\xe3\x83\x84", "\xe3\x83\x86", "\xe3\x83\x88", "\xe3\x83\x8a", "\xe3\x83\x8b", "\xe3\x83\x8c", "\xe3\x83\x8d",
  "\xe3\x83\x8e", "\xe3\x83\x8f", "\xe3\x83\x92", "\xe3\x83\x95", "\xe3\x83\x98", "\xe3\x83\x9b", "\xe3\x83\x9e", "\xe3\x83\x9f",
  "\xe3\x83\xa0", "\xe3\x83\xa1", "\xe3\x83\xa2", "\xe3\x83\xa4", "\xe3\x83\xa6", "\xe3\x83\xa8", "\xe3\x83\xa9", "\xe3\x83\xaa",
  "\xe3\x83\xab", "\xe3\x83\xac", "\xe3\x83\xad", "\xe3\x83\xaf", "\xe3\x83\xb0", "\xe3\x83\xb1", "\xe3\x83\xb2"
};

static const char *grn_nfkc50_decompose_table_e38c[] = {
  "\xe3\x82\xa2\xe3\x83\x91\xe3\x83\xbc\xe3\x83\x88", "\xe3\x82\xa2\xe3\x83\xab\xe3\x83\x95\xe3\x82\xa1", "\xe3\x82\xa2\xe3\x83\xb3\xe3\x83\x9a\xe3\x82\xa2", "\xe3\x82\xa2\xe3\x83\xbc\xe3\x83\xab", "\xe3\x82\xa4\xe3\x83\x8b\xe3\x83\xb3\xe3\x82\xb0", "\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x81", "\xe3\x82\xa6\xe3\x82\xa9\xe3\x83\xb3", "\xe3\x82\xa8\xe3\x82\xb9\xe3\x82\xaf\xe3\x83\xbc\xe3\x83\x89",
  "\xe3\x82\xa8\xe3\x83\xbc\xe3\x82\xab\xe3\x83\xbc", "\xe3\x82\xaa\xe3\x83\xb3\xe3\x82\xb9", "\xe3\x82\xaa\xe3\x83\xbc\xe3\x83\xa0", "\xe3\x82\xab\xe3\x82\xa4\xe3\x83\xaa", "\xe3\x82\xab\xe3\x83\xa9\xe3\x83\x83\xe3\x83\x88", "\xe3\x82\xab\xe3\x83\xad\xe3\x83\xaa\xe3\x83\xbc", "\xe3\x82\xac\xe3\x83\xad\xe3\x83\xb3", "\xe3\x82\xac\xe3\x83\xb3\xe3\x83\x9e",
  "\xe3\x82\xae\xe3\x82\xac", "\xe3\x82\xae\xe3\x83\x8b\xe3\x83\xbc", "\xe3\x82\xad\xe3\x83\xa5\xe3\x83\xaa\xe3\x83\xbc", "\xe3\x82\xae\xe3\x83\xab\xe3\x83\x80\xe3\x83\xbc", "\xe3\x82\xad\xe3\x83\xad", "\xe3\x82\xad\xe3\x83\xad\xe3\x82\xb0\xe3\x83\xa9\xe3\x83\xa0", "\xe3\x82\xad\xe3\x83\xad\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab", "\xe3\x82\xad\xe3\x83\xad\xe3\x83\xaf\xe3\x83\x83\xe3\x83\x88",
  "\xe3\x82\xb0\xe3\x83\xa9\xe3\x83\xa0", "\xe3\x82\xb0\xe3\x83\xa9\xe3\x83\xa0\xe3\x83\x88\xe3\x83\xb3", "\xe3\x82\xaf\xe3\x83\xab\xe3\x82\xbc\xe3\x82\xa4\xe3\x83\xad", "\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xbc\xe3\x83\x8d", "\xe3\x82\xb1\xe3\x83\xbc\xe3\x82\xb9", "\xe3\x82\xb3\xe3\x83\xab\xe3\x83\x8a", "\xe3\x82\xb3\xe3\x83\xbc\xe3\x83\x9d", "\xe3\x82\xb5\xe3\x82\xa4\xe3\x82\xaf\xe3\x83\xab",
  "\xe3\x82\xb5\xe3\x83\xb3\xe3\x83\x81\xe3\x83\xbc\xe3\x83\xa0", "\xe3\x82\xb7\xe3\x83\xaa\xe3\x83\xb3\xe3\x82\xb0", "\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x81", "\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88", "\xe3\x83\x80\xe3\x83\xbc\xe3\x82\xb9", "\xe3\x83\x87\xe3\x82\xb7", "\xe3\x83\x89\xe3\x83\xab", "\xe3\x83\x88\xe3\x83\xb3",
  "\xe3\x83\x8a\xe3\x83\x8e", "\xe3\x83\x8e\xe3\x83\x83\xe3\x83\x88", "\xe3\x83\x8f\xe3\x82\xa4\xe3\x83\x84", "\xe3\x83\x91\xe3\x83\xbc\xe3\x82\xbb\xe3\x83\xb3\xe3\x83\x88", "\xe3\x83\x91\xe3\x83\xbc\xe3\x83\x84", "\xe3\x83\x90\xe3\x83\xbc\xe3\x83\xac\xe3\x83\xab", "\xe3\x83\x94\xe3\x82\xa2\xe3\x82\xb9\xe3\x83\x88\xe3\x83\xab", "\xe3\x83\x94\xe3\x82\xaf\xe3\x83\xab",
  "\xe3\x83\x94\xe3\x82\xb3", "\xe3\x83\x93\xe3\x83\xab", "\xe3\x83\x95\xe3\x82\xa1\xe3\x83\xa9\xe3\x83\x83\xe3\x83\x89", "\xe3\x83\x95\xe3\x82\xa3\xe3\x83\xbc\xe3\x83\x88", "\xe3\x83\x96\xe3\x83\x83\xe3\x82\xb7\xe3\x82\xa7\xe3\x83\xab", "\xe3\x83\x95\xe3\x83\xa9\xe3\x83\xb3", "\xe3\x83\x98\xe3\x82\xaf\xe3\x82\xbf\xe3\x83\xbc\xe3\x83\xab", "\xe3\x83\x9a\xe3\x82\xbd",
  "\xe3\x83\x9a\xe3\x83\x8b\xe3\x83\x92", "\xe3\x83\x98\xe3\x83\xab\xe3\x83\x84", "\xe3\x83\x9a\xe3\x83\xb3\xe3\x82\xb9", "\xe3\x83\x9a\xe3\x83\xbc\xe3\x82\xb8", "\xe3\x83\x99\xe3\x83\xbc\xe3\x82\xbf", "\xe3\x83\x9d\xe3\x82\xa4\xe3\x83\xb3\xe3\x83\x88", "\xe3\x83\x9c\xe3\x83\xab\xe3\x83\x88", "\xe3\x83\x9b\xe3\x83\xb3"
};

static const char *grn_nfkc50_decompose_table_e38d[] = {
  "\xe3\x83\x9d\xe3\x83\xb3\xe3\x83\x89", "\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xab", "\xe3\x83\x9b\xe3\x83\xbc\xe3\x83\xb3", "\xe3\x83\x9e\xe3\x82\xa4\xe3\x82\xaf\xe3\x83\xad", "\xe3\x83\x9e\xe3\x82\xa4\xe3\x83\xab", "\xe3\x83\x9e\xe3\x83\x83\xe3\x83\x8f", "\xe3\x83\x9e\xe3\x83\xab\xe3\x82\xaf", "\xe3\x83\x9e\xe3\x83\xb3\xe3\x82\xb7\xe3\x83\xa7\xe3\x83\xb3",
  "\xe3\x83\x9f\xe3\x82\xaf\xe3\x83\xad\xe3\x83\xb3", "\xe3\x83\x9f\xe3\x83\xaa", "\xe3\x83\x9f\xe3\x83\xaa\xe3\x83\x90\xe3\x83\xbc\xe3\x83\xab", "\xe3\x83\xa1\xe3\x82\xac", "\xe3\x83\xa1\xe3\x82\xac\xe3\x83\x88\xe3\x83\xb3", "\xe3\x83\xa1\xe3\x83\xbc\xe3\x83\x88\xe3\x83\xab", "\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\x89", "\xe3\x83\xa4\xe3\x83\xbc\xe3\x83\xab",
  "\xe3\x83\xa6\xe3\x82\xa2\xe3\x83\xb3", "\xe3\x83\xaa\xe3\x83\x83\xe3\x83\x88\xe3\x83\xab", "\xe3\x83\xaa\xe3\x83\xa9", "\xe3\x83\xab\xe3\x83\x94\xe3\x83\xbc", "\xe3\x83\xab\xe3\x83\xbc\xe3\x83\x96\xe3\x83\xab", "\xe3\x83\xac\xe3\x83\xa0", "\xe3\x83\xac\xe3\x83\xb3\xe3\x83\x88\xe3\x82\xb2\xe3\x83\xb3", "\xe3\x83\xaf\xe3\x83\x83\xe3\x83\x88",
  "\x30\xe7\x82\xb9", "\x31\xe7\x82\xb9", "\x32\xe7\x82\xb9", "\x33\xe7\x82\xb9", "\x34\xe7\x82\xb9", "\x35\xe7\x82\xb9", "\x36\xe7\x82\xb9", "\x37\xe7\x82\xb9",
  "\x38\xe7\x82\xb9", "\x39\xe7\x82\xb9", "\x31\x30\xe7\x82\xb9", "\x31\x31\xe7\x82\xb9", "\x31\x32\xe7\x82\xb9", "\x31\x33\xe7\x82\xb9", "\x31\x34\xe7\x82\xb9", "\x31\x35\xe7\x82\xb9",
  "\x31\x36\xe7\x82\xb9", "\x31\x37\xe7\x82\xb9", "\x31\x38\xe7\x82\xb9", "\x31\x39\xe7\x82\xb9", "\x32\x30\xe7\x82\xb9", "\x32\x31\xe7\x82\xb9", "\x32\x32\xe7\x82\xb9", "\x32\x33\xe7\x82\xb9",
  "\x32\x34\xe7\x82\xb9", "\x68\x70\x61", "\x64\x61", "\x61\x75", "\x62\x61\x72", "\x6f\x76", "\x70\x63", "\x64\x6d",
  "\x64\x6d\x32", "\x64\x6d\x33", "\x69\x75", "\xe5\xb9\xb3\xe6\x88\x90", "\xe6\x98\xad\xe5\x92\x8c", "\xe5\xa4\xa7\xe6\xad\xa3", "\xe6\x98\x8e\xe6\xb2\xbb", "\xe6\xa0\xaa\xe5\xbc\x8f\xe4\xbc\x9a\xe7\xa4\xbe"
};

static const char *grn_nfkc50_decompose_table_e38e[] = {
  "\x70\x61", "\x6e\x61", "\xce\xbc\x61", "\x6d\x61", "\x6b\x61", "\x6b\x62", "\x6d\x62", "\x67\x62",
  "\x63\x61\x6c", "\x6b\x63\x61\x6c", "\x70\x66", "\x6e\x66", "\xce\xbc\x66", "\xce\xbc\x67", "\x6d\x67", "\x6b\x67",
  "\x68\x7a", "\x6b\x68\x7a", "\x6d\x68\x7a", "\x67\x68\x7a", "\x74\x68\x7a", "\xce\xbc\x6c", "\x6d\x6c", "\x64\x6c",
  "\x6b\x6c", "\x66\x6d", "\x6e\x6d", "\xce\xbc\x6d", "\x6d\x6d", "\x63\x6d", "\x6b\x6d", "\x6d\x6d\x32",
  "\x63\x6d\x32", "\x6d\x32", "\x6b\x6d\x32", "\x6d\x6d\x33", "\x63\x6d\x33", "\x6d\x33", "\x6b\x6d\x33", "\x6d\xe2\x88\x95\x73",
  "\x6d\xe2\x88\x95\x73\x32", "\x70\x61", "\x6b\x70\x61", "\x6d\x70\x61", "\x67\x70\x61", "\x72\x61\x64", "\x72\x61\x64\xe2\x88\x95\x73", "\x72\x61\x64\xe2\x88\x95\x73\x32",
  "\x70\x73", "\x6e\x73", "\xce\xbc\x73", "\x6d\x73", "\x70\x76", "\x6e\x76", "\xce\xbc\x76", "\x6d\x76",
  "\x6b\x76", "\x6d\x76", "\x70\x77", "\x6e\x77", "\xce\xbc\x77", "\x6d\x77", "\x6b\x77", "\x6d\x77"
};

static const char *grn_nfkc50_decompose_table_e38f[] = {
  "\x6b\xce\xa9", "\x6d\xce\xa9", "\x61\x2e\x6d\x2e", "\x62\x71", "\x63\x63", "\x63\x64", "\x63\xe2\x88\x95\x6b\x67", "\x63\x6f\x2e",
  "\x64\x62", "\x67\x79", "\x68\x61", "\x68\x70", "\x69\x6e", "\x6b\x6b", "\x6b\x6d", "\x6b\x74",
  "\x6c\x6d", "\x6c\x6e", "\x6c\x6f\x67", "\x6c\x78", "\x6d\x62", "\x6d\x69\x6c", "\x6d\x6f\x6c", "\x70\x68",
  "\x70\x2e\x6d\x2e", "\x70\x70\x6d", "\x70\x72", "\x73\x72", "\x73\x76", "\x77\x62", "\x76\xe2\x88\x95\x6d", "\x61\xe2\x88\x95\x6d",
  "\x31\xe6\x97\xa5", "\x32\xe6\x97\xa5", "\x33\xe6\x97\xa5", "\x34\xe6\x97\xa5", "\x35\xe6\x97\xa5", "\x36\xe6\x97\xa5", "\x37\xe6\x97\xa5", "\x38\xe6\x97\xa5",
  "\x39\xe6\x97\xa5", "\x31\x30\xe6\x97\xa5", "\x31\x31\xe6\x97\xa5", "\x31\x32\xe6\x97\xa5", "\x31\x33\xe6\x97\xa5", "\x31\x34\xe6\x97\xa5", "\x31\x35\xe6\x97\xa5", "\x31\x36\xe6\x97\xa5",
  "\x31\x37\xe6\x97\xa5", "\x31\x38\xe6\x97\xa5", "\x31\x39\xe6\x97\xa5", "\x32\x30\xe6\x97\xa5", "\x32\x31\xe6\x97\xa5", "\x32\x32\xe6\x97\xa5", "\x32\x33\xe6\x97\xa5", "\x32\x34\xe6\x97\xa5",
  "\x32\x35\xe6\x97\xa5", "\x32\x36\xe6\x97\xa5", "\x32\x37\xe6\x97\xa5", "\x32\x38\xe6\x97\xa5", "\x32\x39\xe6\x97\xa5", "\x33\x30\xe6\x97\xa5", "\x33\x31\xe6\x97\xa5", "\x67\x61\x6c"
};

static const char *grn_nfkc50_decompose_table_efa4[] = {
  "\xe8\xb1\x88", "\xe6\x9b\xb4", "\xe8\xbb\x8a", "\xe8\xb3\x88", "\xe6\xbb\x91", "\xe4\xb8\xb2", "\xe5\x8f\xa5", "\xe9\xbe\x9c",
  "\xe9\xbe\x9c", "\xe5\xa5\x91", "\xe9\x87\x91", "\xe5\x96\x87", "\xe5\xa5\x88", "\xe6\x87\xb6", "\xe7\x99\xa9", "\xe7\xbe\x85",
  "\xe8\x98\xbf", "\xe8\x9e\xba", "\xe8\xa3\xb8", "\xe9\x82\x8f", "\xe6\xa8\x82", "\xe6\xb4\x9b", "\xe7\x83\x99", "\xe7\x8f\x9e",
  "\xe8\x90\xbd", "\xe9\x85\xaa", "\xe9\xa7\xb1", "\xe4\xba\x82", "\xe5\x8d\xb5", "\xe6\xac\x84", "\xe7\x88\x9b", "\xe8\x98\xad",
  "\xe9\xb8\x9e", "\xe5\xb5\x90", "\xe6\xbf\xab", "\xe8\x97\x8d", "\xe8\xa5\xa4", "\xe6\x8b\x89", "\xe8\x87\x98", "\xe8\xa0\x9f",
  "\xe5\xbb\x8a", "\xe6\x9c\x97", "\xe6\xb5\xaa", "\xe7\x8b\xbc", "\xe9\x83\x8e", "\xe4\xbe\x86", "\xe5\x86\xb7", "\xe5\x8b\x9e",
  "\xe6\x93\x84", "\xe6\xab\x93", "\xe7\x88\x90", "\xe7\x9b\xa7", "\xe8\x80\x81", "\xe8\x98\x86", "\xe8\x99\x9c", "\xe8\xb7\xaf",
  "\xe9\x9c\xb2", "\xe9\xad\xaf", "\xe9\xb7\xba", "\xe7\xa2\x8c", "\xe7\xa5\xbf", "\xe7\xb6\xa0", "\xe8\x8f\x89", "\xe9\x8c\x84"
};

static const char *grn_nfkc50_decompose_table_efa5[] = {
  "\xe9\xb9\xbf", "\xe8\xab\x96", "\xe5\xa3\x9f", "\xe5\xbc\x84", "\xe7\xb1\xa0", "\xe8\x81\xbe", "\xe7\x89\xa2", "\xe7\xa3\x8a",
  "\xe8\xb3\x82", "\xe9\x9b\xb7", "\xe5\xa3\x98", "\xe5\xb1\xa2", "\xe6\xa8\x93", "\xe6\xb7\x9a", "\xe6\xbc\x8f", "\xe7\xb4\xaf",
  "\xe7\xb8\xb7", "\xe9\x99\x8b", "\xe5\x8b\x92", "\xe8\x82\x8b", "\xe5\x87\x9c", "\xe5\x87\x8c", "\xe7\xa8\x9c", "\xe7\xb6\xbe",
  "\xe8\x8f\xb1", "\xe9\x99\xb5", "\xe8\xae\x80", "\xe6\x8b\x8f", "\xe6\xa8\x82", "\xe8\xab\xbe", "\xe4\xb8\xb9", "\xe5\xaf\xa7",
  "\xe6\x80\x92", "\xe7\x8e\x87", "\xe7\x95\xb0", "\xe5\x8c\x97", "\xe7\xa3\xbb", "\xe4\xbe\xbf", "\xe5\xbe\xa9", "\xe4\xb8\x8d",
  "\xe6\xb3\x8c", "\xe6\x95\xb8", "\xe7\xb4\xa2", "\xe5\x8f\x83", "\xe5\xa1\x9e", "\xe7\x9c\x81", "\xe8\x91\x89", "\xe8\xaa\xaa",
  "\xe6\xae\xba", "\xe8\xbe\xb0", "\xe6\xb2\x88", "\xe6\x8b\xbe", "\xe8\x8b\xa5", "\xe6\x8e\xa0", "\xe7\x95\xa5", "\xe4\xba\xae",
  "\xe5\x85\xa9", "\xe5\x87\x89", "\xe6\xa2\x81", "\xe7\xb3\xa7", "\xe8\x89\xaf", "\xe8\xab\x92", "\xe9\x87\x8f", "\xe5\x8b\xb5"
};

static const char *grn_nfkc50_decompose_table_efa6[] = {
  "\xe5\x91\x82", "\xe5\xa5\xb3", "\xe5\xbb\xac", "\xe6\x97\x85", "\xe6\xbf\xbe", "\xe7\xa4\xaa", "\xe9\x96\xad", "\xe9\xa9\xaa",
  "\xe9\xba\x97", "\xe9\xbb\x8e", "\xe5\x8a\x9b", "\xe6\x9b\x86", "\xe6\xad\xb7", "\xe8\xbd\xa2", "\xe5\xb9\xb4", "\xe6\x86\x90",
  "\xe6\x88\x80", "\xe6\x92\x9a", "\xe6\xbc\xa3", "\xe7\x85\x89", "\xe7\x92\x89", "\xe7\xa7\x8a", "\xe7\xb7\xb4", "\xe8\x81\xaf",
  "\xe8\xbc\xa6", "\xe8\x93\xae", "\xe9\x80\xa3", "\xe9\x8d\x8a", "\xe5\x88\x97", "\xe5\x8a\xa3", "\xe5\x92\xbd", "\xe7\x83\x88",
  "\xe8\xa3\x82", "\xe8\xaa\xaa", "\xe5\xbb\x89", "\xe5\xbf\xb5", "\xe6\x8d\xbb", "\xe6\xae\xae", "\xe7\xb0\xbe", "\xe7\x8d\xb5",
  "\xe4\xbb\xa4", "\xe5\x9b\xb9", "\xe5\xaf\xa7", "\xe5\xb6\xba", "\xe6\x80\x9c", "\xe7\x8e\xb2", "\xe7\x91\xa9", "\xe7\xbe\x9a",
  "\xe8\x81\x86", "\xe9\x88\xb4", "\xe9\x9b\xb6", "\xe9\x9d\x88", "\xe9\xa0\x98", "\xe4\xbe\x8b", "\xe7\xa6\xae", "\xe9\x86\xb4",
  "\xe9\x9a\xb8", "\xe6\x83\xa1", "\xe4\xba\x86", "\xe5\x83\x9a", "\xe5\xaf\xae", "\xe5\xb0\xbf", "\xe6\x96\x99", "\xe6\xa8\x82"
};

static const char *grn_nfkc50_decompose_table_efa7[] = {
  "\xe7\x87\x8e", "\xe7\x99\x82", "\xe8\x93\xbc", "\xe9\x81\xbc", "\xe9\xbe\x8d", "\xe6\x9a\x88", "\xe9\x98\xae", "\xe5\x8a\x89",
  "\xe6\x9d\xbb", "\xe6\x9f\xb3", "\xe6\xb5\x81", "\xe6\xba\x9c", "\xe7\x90\x89", "\xe7\x95\x99", "\xe7\xa1\xab", "\xe7\xb4\x90",
  "\xe9\xa1\x9e", "\xe5\x85\xad", "\xe6\x88\xae", "\xe9\x99\xb8", "\xe5\x80\xab", "\xe5\xb4\x99", "\xe6\xb7\xaa", "\xe8\xbc\xaa",
  "\xe5\xbe\x8b", "\xe6\x85\x84", "\xe6\xa0\x97", "\xe7\x8e\x87", "\xe9\x9a\x86", "\xe5\x88\xa9", "\xe5\x90\x8f", "\xe5\xb1\xa5",
  "\xe6\x98\x93", "\xe6\x9d\x8e", "\xe6\xa2\xa8", "\xe6\xb3\xa5", "\xe7\x90\x86", "\xe7\x97\xa2", "\xe7\xbd\xb9", "\xe8\xa3\x8f",
  "\xe8\xa3\xa1", "\xe9\x87\x8c", "\xe9\x9b\xa2", "\xe5\x8c\xbf", "\xe6\xba\xba", "\xe5\x90\x9d", "\xe7\x87\x90", "\xe7\x92\x98",
  "\xe8\x97\xba", "\xe9\x9a\xa3", "\xe9\xb1\x97", "\xe9\xba\x9f", "\xe6\x9e\x97", "\xe6\xb7\x8b", "\xe8\x87\xa8", "\xe7\xab\x8b",
  "\xe7\xac\xa0", "\xe7\xb2\x92", "\xe7\x8b\x80", "\xe7\x82\x99", "\xe8\xad\x98", "\xe4\xbb\x80", "\xe8\x8c\xb6", "\xe5\x88\xba"
};

static const char *grn_nfkc50_decompose_table_efa8[] = {
  "\xe5\x88\x87", "\xe5\xba\xa6", "\xe6\x8b\x93", "\xe7\xb3\x96", "\xe5\xae\x85", "\xe6\xb4\x9e", "\xe6\x9a\xb4", "\xe8\xbc\xbb",
  "\xe8\xa1\x8c", "\xe9\x99\x8d", "\xe8\xa6\x8b", "\xe5\xbb\x93", "\xe5\x85\x80", "\xe5\x97\x80", NULL, NULL,
  "\xe5\xa1\x9a", NULL, "\xe6\x99\xb4", NULL, NULL, "\xe5\x87\x9e", "\xe7\x8c\xaa", "\xe7\x9b\x8a",
  "\xe7\xa4\xbc", "\xe7\xa5\x9e", "\xe7\xa5\xa5", "\xe7\xa6\x8f", "\xe9\x9d\x96", "\xe7\xb2\xbe", "\xe7\xbe\xbd", NULL,
  "\xe8\x98\x92", NULL, "\xe8\xab\xb8", NULL, NULL, "\xe9\x80\xb8", "\xe9\x83\xbd", NULL,
  NULL, NULL, "\xe9\xa3\xaf", "\xe9\xa3\xbc", "\xe9\xa4\xa8", "\xe9\xb6\xb4", NULL, NULL,
  "\xe4\xbe\xae", "\xe5\x83\xa7", "\xe5\x85\x8d", "\xe5\x8b\x89", "\xe5\x8b\xa4", "\xe5\x8d\x91", "\xe5\x96\x9d", "\xe5\x98\x86",
  "\xe5\x99\xa8", "\xe5\xa1\x80", "\xe5\xa2\xa8", "\xe5\xb1\xa4", "\xe5\xb1\xae", "\xe6\x82\x94", "\xe6\x85\xa8", "\xe6\x86\x8e"
};

static const char *grn_nfkc50_decompose_table_efa9[] = {
  "\xe6\x87\xb2", "\xe6\x95\x8f", "\xe6\x97\xa2", "\xe6\x9a\x91", "\xe6\xa2\x85", "\xe6\xb5\xb7", "\xe6\xb8\x9a", "\xe6\xbc\xa2",
  "\xe7\x85\xae", "\xe7\x88\xab", "\xe7\x90\xa2", "\xe7\xa2\x91", "\xe7\xa4\xbe", "\xe7\xa5\x89", "\xe7\xa5\x88", "\xe7\xa5\x90",
  "\xe7\xa5\x96", "\xe7\xa5\x9d", "\xe7\xa6\x8d", "\xe7\xa6\x8e", "\xe7\xa9\x80", "\xe7\xaa\x81", "\xe7\xaf\x80", "\xe7\xb7\xb4",
  "\xe7\xb8\x89", "\xe7\xb9\x81", "\xe7\xbd\xb2", "\xe8\x80\x85", "\xe8\x87\xad", "\xe8\x89\xb9", "\xe8\x89\xb9", "\xe8\x91\x97",
  "\xe8\xa4\x90", "\xe8\xa6\x96", "\xe8\xac\x81", "\xe8\xac\xb9", "\xe8\xb3\x93", "\xe8\xb4\x88", "\xe8\xbe\xb6", "\xe9\x80\xb8",
  "\xe9\x9b\xa3", "\xe9\x9f\xbf", "\xe9\xa0\xbb", NULL, NULL, NULL, NULL, NULL,
  "\xe4\xb8\xa6", "\xe5\x86\xb5", "\xe5\x85\xa8", "\xe4\xbe\x80", "\xe5\x85\x85", "\xe5\x86\x80", "\xe5\x8b\x87", "\xe5\x8b\xba",
  "\xe5\x96\x9d", "\xe5\x95\x95", "\xe5\x96\x99", "\xe5\x97\xa2", "\xe5\xa1\x9a", "\xe5\xa2\xb3", "\xe5\xa5\x84", "\xe5\xa5\x94"
};

static const char *grn_nfkc50_decompose_table_efaa[] = {
  "\xe5\xa9\xa2", "\xe5\xac\xa8", "\xe5\xbb\x92", "\xe5\xbb\x99", "\xe5\xbd\xa9", "\xe5\xbe\xad", "\xe6\x83\x98", "\xe6\x85\x8e",
  "\xe6\x84\x88", "\xe6\x86\x8e", "\xe6\x85\xa0", "\xe6\x87\xb2", "\xe6\x88\xb4", "\xe6\x8f\x84", "\xe6\x90\x9c", "\xe6\x91\x92",
  "\xe6\x95\x96", "\xe6\x99\xb4", "\xe6\x9c\x97", "\xe6\x9c\x9b", "\xe6\x9d\x96", "\xe6\xad\xb9", "\xe6\xae\xba", "\xe6\xb5\x81",
  "\xe6\xbb\x9b", "\xe6\xbb\x8b", "\xe6\xbc\xa2", "\xe7\x80\x9e", "\xe7\x85\xae", "\xe7\x9e\xa7", "\xe7\x88\xb5", "\xe7\x8a\xaf",
  "\xe7\x8c\xaa", "\xe7\x91\xb1", "\xe7\x94\x86", "\xe7\x94\xbb", "\xe7\x98\x9d", "\xe7\x98\x9f", "\xe7\x9b\x8a", "\xe7\x9b\x9b",
  "\xe7\x9b\xb4", "\xe7\x9d\x8a", "\xe7\x9d\x80", "\xe7\xa3\x8c", "\xe7\xaa\xb1", "\xe7\xaf\x80", "\xe7\xb1\xbb", "\xe7\xb5\x9b",
  "\xe7\xb7\xb4", "\xe7\xbc\xbe", "\xe8\x80\x85", "\xe8\x8d\x92", "\xe8\x8f\xaf", "\xe8\x9d\xb9", "\xe8\xa5\x81", "\xe8\xa6\x86",
  "\xe8\xa6\x96", "\xe8\xaa\xbf", "\xe8\xab\xb8", "\xe8\xab\x8b", "\xe8\xac\x81", "\xe8\xab\xbe", "\xe8\xab\xad", "\xe8\xac\xb9"
};

static const char *grn_nfkc50_decompose_table_efab[] = {
  "\xe8\xae\x8a", "\xe8\xb4\x88", "\xe8\xbc\xb8", "\xe9\x81\xb2", "\xe9\x86\x99", "\xe9\x89\xb6", "\xe9\x99\xbc", "\xe9\x9b\xa3",
  "\xe9\x9d\x96", "\xe9\x9f\x9b", "\xe9\x9f\xbf", "\xe9\xa0\x8b", "\xe9\xa0\xbb", "\xe9\xac\x92", "\xe9\xbe\x9c", "\xf0\xa2\xa1\x8a",
  "\xf0\xa2\xa1\x84", "\xf0\xa3\x8f\x95", "\xe3\xae\x9d", "\xe4\x80\x98", "\xe4\x80\xb9", "\xf0\xa5\x89\x89", "\xf0\xa5\xb3\x90", "\xf0\xa7\xbb\x93",
  "\xe9\xbd\x83", "\xe9\xbe\x8e"
};

static const char *grn_nfkc50_decompose_table_efac[] = {
  "\x66\x66", "\x66\x69", "\x66\x6c", "\x66\x66\x69", "\x66\x66\x6c", "\x73\x74", "\x73\x74", NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, "\xd5\xb4\xd5\xb6", "\xd5\xb4\xd5\xa5", "\xd5\xb4\xd5\xab", "\xd5\xbe\xd5\xb6", "\xd5\xb4\xd5\xad",
  NULL, NULL, NULL, NULL, NULL, "\xd7\x99\xd6\xb4", NULL, "\xd7\xb2\xd6\xb7",
  "\xd7\xa2", "\xd7\x90", "\xd7\x93", "\xd7\x94", "\xd7\x9b", "\xd7\x9c", "\xd7\x9d", "\xd7\xa8",
  "\xd7\xaa", "\x2b", "\xd7\xa9\xd7\x81", "\xd7\xa9\xd7\x82", "\xd7\xa9\xd6\xbc\xd7\x81", "\xd7\xa9\xd6\xbc\xd7\x82", "\xd7\x90\xd6\xb7", "\xd7\x90\xd6\xb8",
  "\xd7\x90\xd6\xbc", "\xd7\x91\xd6\xbc", "\xd7\x92\xd6\xbc", "\xd7\x93\xd6\xbc", "\xd7\x94\xd6\xbc", "\xd7\x95\xd6\xbc", "\xd7\x96\xd6\xbc", NULL,
  "\xd7\x98\xd6\xbc", "\xd7\x99\xd6\xbc", "\xd7\x9a\xd6\xbc", "\xd7\x9b\xd6\xbc", "\xd7\x9c\xd6\xbc", NULL, "\xd7\x9e\xd6\xbc"
};

static const char *grn_nfkc50_decompose_table_efad[] = {
  "\xd7\xa0\xd6\xbc", "\xd7\xa1\xd6\xbc", NULL, "\xd7\xa3\xd6\xbc", "\xd7\xa4\xd6\xbc", NULL, "\xd7\xa6\xd6\xbc", "\xd7\xa7\xd6\xbc",
  "\xd7\xa8\xd6\xbc", "\xd7\xa9\xd6\xbc", "\xd7\xaa\xd6\xbc", "\xd7\x95\xd6\xb9", "\xd7\x91\xd6\xbf", "\xd7\x9b\xd6\xbf", "\xd7\xa4\xd6\xbf", "\xd7\x90\xd7\x9c",
  "\xd9\xb1", "\xd9\xb1", "\xd9\xbb", "\xd9\xbb", "\xd9\xbb", "\xd9\xbb", "\xd9\xbe", "\xd9\xbe",
  "\xd9\xbe", "\xd9\xbe", "\xda\x80", "\xda\x80", "\xda\x80", "\xda\x80", "\xd9\xba", "\xd9\xba",
  "\xd9\xba", "\xd9\xba", "\xd9\xbf", "\xd9\xbf", "\xd9\xbf", "\xd9\xbf", "\xd9\xb9", "\xd9\xb9",
  "\xd9\xb9", "\xd9\xb9", "\xda\xa4", "\xda\xa4", "\xda\xa4", "\xda\xa4", "\xda\xa6", "\xda\xa6",
  "\xda\xa6", "\xda\xa6", "\xda\x84", "\xda\x84", "\xda\x84", "\xda\x84", "\xda\x83", "\xda\x83",
  "\xda\x83", "\xda\x83", "\xda\x86", "\xda\x86", "\xda\x86", "\xda\x86", "\xda\x87", "\xda\x87"
};

static const char *grn_nfkc50_decompose_table_efae[] = {
  "\xda\x87", "\xda\x87", "\xda\x8d", "\xda\x8d", "\xda\x8c", "\xda\x8c", "\xda\x8e", "\xda\x8e",
  "\xda\x88", "\xda\x88", "\xda\x98", "\xda\x98", "\xda\x91", "\xda\x91", "\xda\xa9", "\xda\xa9",
  "\xda\xa9", "\xda\xa9", "\xda\xaf", "\xda\xaf", "\xda\xaf", "\xda\xaf", "\xda\xb3", "\xda\xb3",
  "\xda\xb3", "\xda\xb3", "\xda\xb1", "\xda\xb1", "\xda\xb1", "\xda\xb1", "\xda\xba", "\xda\xba",
  "\xda\xbb", "\xda\xbb", "\xda\xbb", "\xda\xbb", "\xdb\x80", "\xdb\x80", "\xdb\x81", "\xdb\x81",
  "\xdb\x81", "\xdb\x81", "\xda\xbe", "\xda\xbe", "\xda\xbe", "\xda\xbe", "\xdb\x92", "\xdb\x92",
  "\xdb\x93", "\xdb\x93"
};

static const char *grn_nfkc50_decompose_table_efaf[] = {
  "\xda\xad", "\xda\xad", "\xda\xad", "\xda\xad", "\xdb\x87", "\xdb\x87", "\xdb\x86", "\xdb\x86",
  "\xdb\x88", "\xdb\x88", "\xdb\x87\xd9\xb4", "\xdb\x8b", "\xdb\x8b", "\xdb\x85", "\xdb\x85", "\xdb\x89",
  "\xdb\x89", "\xdb\x90", "\xdb\x90", "\xdb\x90", "\xdb\x90", "\xd9\x89", "\xd9\x89", "\xd8\xa6\xd8\xa7",
  "\xd8\xa6\xd8\xa7", "\xd8\xa6\xdb\x95", "\xd8\xa6\xdb\x95", "\xd8\xa6\xd9\x88", "\xd8\xa6\xd9\x88", "\xd8\xa6\xdb\x87", "\xd8\xa6\xdb\x87", "\xd8\xa6\xdb\x86",
  "\xd8\xa6\xdb\x86", "\xd8\xa6\xdb\x88", "\xd8\xa6\xdb\x88", "\xd8\xa6\xdb\x90", "\xd8\xa6\xdb\x90", "\xd8\xa6\xdb\x90", "\xd8\xa6\xd9\x89", "\xd8\xa6\xd9\x89",
  "\xd8\xa6\xd9\x89", "\xdb\x8c", "\xdb\x8c", "\xdb\x8c", "\xdb\x8c"
};

static const char *grn_nfkc50_decompose_table_efb0[] = {
  "\xd8\xa6\xd8\xac", "\xd8\xa6\xd8\xad", "\xd8\xa6\xd9\x85", "\xd8\xa6\xd9\x89", "\xd8\xa6\xd9\x8a", "\xd8\xa8\xd8\xac", "\xd8\xa8\xd8\xad", "\xd8\xa8\xd8\xae",
  "\xd8\xa8\xd9\x85", "\xd8\xa8\xd9\x89", "\xd8\xa8\xd9\x8a", "\xd8\xaa\xd8\xac", "\xd8\xaa\xd8\xad", "\xd8\xaa\xd8\xae", "\xd8\xaa\xd9\x85", "\xd8\xaa\xd9\x89",
  "\xd8\xaa\xd9\x8a", "\xd8\xab\xd8\xac", "\xd8\xab\xd9\x85", "\xd8\xab\xd9\x89", "\xd8\xab\xd9\x8a", "\xd8\xac\xd8\xad", "\xd8\xac\xd9\x85", "\xd8\xad\xd8\xac",
  "\xd8\xad\xd9\x85", "\xd8\xae\xd8\xac", "\xd8\xae\xd8\xad", "\xd8\xae\xd9\x85", "\xd8\xb3\xd8\xac", "\xd8\xb3\xd8\xad", "\xd8\xb3\xd8\xae", "\xd8\xb3\xd9\x85",
  "\xd8\xb5\xd8\xad", "\xd8\xb5\xd9\x85", "\xd8\xb6\xd8\xac", "\xd8\xb6\xd8\xad", "\xd8\xb6\xd8\xae", "\xd8\xb6\xd9\x85", "\xd8\xb7\xd8\xad", "\xd8\xb7\xd9\x85",
  "\xd8\xb8\xd9\x85", "\xd8\xb9\xd8\xac", "\xd8\xb9\xd9\x85", "\xd8\xba\xd8\xac", "\xd8\xba\xd9\x85", "\xd9\x81\xd8\xac", "\xd9\x81\xd8\xad", "\xd9\x81\xd8\xae",
  "\xd9\x81\xd9\x85", "\xd9\x81\xd9\x89", "\xd9\x81\xd9\x8a", "\xd9\x82\xd8\xad", "\xd9\x82\xd9\x85", "\xd9\x82\xd9\x89", "\xd9\x82\xd9\x8a", "\xd9\x83\xd8\xa7",
  "\xd9\x83\xd8\xac", "\xd9\x83\xd8\xad", "\xd9\x83\xd8\xae", "\xd9\x83\xd9\x84", "\xd9\x83\xd9\x85", "\xd9\x83\xd9\x89", "\xd9\x83\xd9\x8a", "\xd9\x84\xd8\xac"
};

static const char *grn_nfkc50_decompose_table_efb1[] = {
  "\xd9\x84\xd8\xad", "\xd9\x84\xd8\xae", "\xd9\x84\xd9\x85", "\xd9\x84\xd9\x89", "\xd9\x84\xd9\x8a", "\xd9\x85\xd8\xac", "\xd9\x85\xd8\xad", "\xd9\x85\xd8\xae",
  "\xd9\x85\xd9\x85", "\xd9\x85\xd9\x89", "\xd9\x85\xd9\x8a", "\xd9\x86\xd8\xac", "\xd9\x86\xd8\xad", "\xd9\x86\xd8\xae", "\xd9\x86\xd9\x85", "\xd9\x86\xd9\x89",
  "\xd9\x86\xd9\x8a", "\xd9\x87\xd8\xac", "\xd9\x87\xd9\x85", "\xd9\x87\xd9\x89", "\xd9\x87\xd9\x8a", "\xd9\x8a\xd8\xac", "\xd9\x8a\xd8\xad", "\xd9\x8a\xd8\xae",
  "\xd9\x8a\xd9\x85", "\xd9\x8a\xd9\x89", "\xd9\x8a\xd9\x8a", "\xd8\xb0\xd9\xb0", "\xd8\xb1\xd9\xb0", "\xd9\x89\xd9\xb0", "\xd9\x8c\xd9\x91", "\xd9\x8d\xd9\x91",
  "\xd9\x8e\xd9\x91", "\xd9\x8f\xd9\x91", "\xd9\x90\xd9\x91", "\xd9\x91\xd9\xb0", "\xd8\xa6\xd8\xb1", "\xd8\xa6\xd8\xb2", "\xd8\xa6\xd9\x85", "\xd8\xa6\xd9\x86",
  "\xd8\xa6\xd9\x89", "\xd8\xa6\xd9\x8a", "\xd8\xa8\xd8\xb1", "\xd8\xa8\xd8\xb2", "\xd8\xa8\xd9\x85", "\xd8\xa8\xd9\x86", "\xd8\xa8\xd9\x89", "\xd8\xa8\xd9\x8a",
  "\xd8\xaa\xd8\xb1", "\xd8\xaa\xd8\xb2", "\xd8\xaa\xd9\x85", "\xd8\xaa\xd9\x86", "\xd8\xaa\xd9\x89", "\xd8\xaa\xd9\x8a", "\xd8\xab\xd8\xb1", "\xd8\xab\xd8\xb2",
  "\xd8\xab\xd9\x85", "\xd8\xab\xd9\x86", "\xd8\xab\xd9\x89", "\xd8\xab\xd9\x8a", "\xd9\x81\xd9\x89", "\xd9\x81\xd9\x8a", "\xd9\x82\xd9\x89", "\xd9\x82\xd9\x8a"
};

static const char *grn_nfkc50_decompose_table_efb2[] = {
  "\xd9\x83\xd8\xa7", "\xd9\x83\xd9\x84", "\xd9\x83\xd9\x85", "\xd9\x83\xd9\x89", "\xd9\x83\xd9\x8a", "\xd9\x84\xd9\x85", "\xd9\x84\xd9\x89", "\xd9\x84\xd9\x8a",
  "\xd9\x85\xd8\xa7", "\xd9\x85\xd9\x85", "\xd9\x86\xd8\xb1", "\xd9\x86\xd8\xb2", "\xd9\x86\xd9\x85", "\xd9\x86\xd9\x86", "\xd9\x86\xd9\x89", "\xd9\x86\xd9\x8a",
  "\xd9\x89\xd9\xb0", "\xd9\x8a\xd8\xb1", "\xd9\x8a\xd8\xb2", "\xd9\x8a\xd9\x85", "\xd9\x8a\xd9\x86", "\xd9\x8a\xd9\x89", "\xd9\x8a\xd9\x8a", "\xd8\xa6\xd8\xac",
  "\xd8\xa6\xd8\xad", "\xd8\xa6\xd8\xae", "\xd8\xa6\xd9\x85", "\xd8\xa6\xd9\x87", "\xd8\xa8\xd8\xac", "\xd8\xa8\xd8\xad", "\xd8\xa8\xd8\xae", "\xd8\xa8\xd9\x85",
  "\xd8\xa8\xd9\x87", "\xd8\xaa\xd8\xac", "\xd8\xaa\xd8\xad", "\xd8\xaa\xd8\xae", "\xd8\xaa\xd9\x85", "\xd8\xaa\xd9\x87", "\xd8\xab\xd9\x85", "\xd8\xac\xd8\xad",
  "\xd8\xac\xd9\x85", "\xd8\xad\xd8\xac", "\xd8\xad\xd9\x85", "\xd8\xae\xd8\xac", "\xd8\xae\xd9\x85", "\xd8\xb3\xd8\xac", "\xd8\xb3\xd8\xad", "\xd8\xb3\xd8\xae",
  "\xd8\xb3\xd9\x85", "\xd8\xb5\xd8\xad", "\xd8\xb5\xd8\xae", "\xd8\xb5\xd9\x85", "\xd8\xb6\xd8\xac", "\xd8\xb6\xd8\xad", "\xd8\xb6\xd8\xae", "\xd8\xb6\xd9\x85",
  "\xd8\xb7\xd8\xad", "\xd8\xb8\xd9\x85", "\xd8\xb9\xd8\xac", "\xd8\xb9\xd9\x85", "\xd8\xba\xd8\xac", "\xd8\xba\xd9\x85", "\xd9\x81\xd8\xac", "\xd9\x81\xd8\xad"
};

static const char *grn_nfkc50_decompose_table_efb3[] = {
  "\xd9\x81\xd8\xae", "\xd9\x81\xd9\x85", "\xd9\x82\xd8\xad", "\xd9\x82\xd9\x85", "\xd9\x83\xd8\xac", "\xd9\x83\xd8\xad", "\xd9\x83\xd8\xae", "\xd9\x83\xd9\x84",
  "\xd9\x83\xd9\x85", "\xd9\x84\xd8\xac", "\xd9\x84\xd8\xad", "\xd9\x84\xd8\xae", "\xd9\x84\xd9\x85", "\xd9\x84\xd9\x87", "\xd9\x85\xd8\xac", "\xd9\x85\xd8\xad",
  "\xd9\x85\xd8\xae", "\xd9\x85\xd9\x85", "\xd9\x86\xd8\xac", "\xd9\x86\xd8\xad", "\xd9\x86\xd8\xae", "\xd9\x86\xd9\x85", "\xd9\x86\xd9\x87", "\xd9\x87\xd8\xac",
  "\xd9\x87\xd9\x85", "\xd9\x87\xd9\xb0", "\xd9\x8a\xd8\xac", "\xd9\x8a\xd8\xad", "\xd9\x8a\xd8\xae", "\xd9\x8a\xd9\x85", "\xd9\x8a\xd9\x87", "\xd8\xa6\xd9\x85",
  "\xd8\xa6\xd9\x87", "\xd8\xa8\xd9\x85", "\xd8\xa8\xd9\x87", "\xd8\xaa\xd9\x85", "\xd8\xaa\xd9\x87", "\xd8\xab\xd9\x85", "\xd8\xab\xd9\x87", "\xd8\xb3\xd9\x85",
  "\xd8\xb3\xd9\x87", "\xd8\xb4\xd9\x85", "\xd8\xb4\xd9\x87", "\xd9\x83\xd9\x84", "\xd9\x83\xd9\x85", "\xd9\x84\xd9\x85", "\xd9\x86\xd9\x85", "\xd9\x86\xd9\x87",
  "\xd9\x8a\xd9\x85", "\xd9\x8a\xd9\x87", "\xd9\x80\xd9\x8e\xd9\x91", "\xd9\x80\xd9\x8f\xd9\x91", "\xd9\x80\xd9\x90\xd9\x91", "\xd8\xb7\xd9\x89", "\xd8\xb7\xd9\x8a", "\xd8\xb9\xd9\x89",
  "\xd8\xb9\xd9\x8a", "\xd8\xba\xd9\x89", "\xd8\xba\xd9\x8a", "\xd8\xb3\xd9\x89", "\xd8\xb3\xd9\x8a", "\xd8\xb4\xd9\x89", "\xd8\xb4\xd9\x8a", "\xd8\xad\xd9\x89"
};

static const char *grn_nfkc50_decompose_table_efb4[] = {
  "\xd8\xad\xd9\x8a", "\xd8\xac\xd9\x89", "\xd8\xac\xd9\x8a", "\xd8\xae\xd9\x89", "\xd8\xae\xd9\x8a", "\xd8\xb5\xd9\x89", "\xd8\xb5\xd9\x8a", "\xd8\xb6\xd9\x89",
  "\xd8\xb6\xd9\x8a", "\xd8\xb4\xd8\xac", "\xd8\xb4\xd8\xad", "\xd8\xb4\xd8\xae", "\xd8\xb4\xd9\x85", "\xd8\xb4\xd8\xb1", "\xd8\xb3\xd8\xb1", "\xd8\xb5\xd8\xb1",
  "\xd8\xb6\xd8\xb1", "\xd8\xb7\xd9\x89", "\xd8\xb7\xd9\x8a", "\xd8\xb9\xd9\x89", "\xd8\xb9\xd9\x8a", "\xd8\xba\xd9\x89", "\xd8\xba\xd9\x8a", "\xd8\xb3\xd9\x89",
  "\xd8\xb3\xd9\x8a", "\xd8\xb4\xd9\x89", "\xd8\xb4\xd9\x8a", "\xd8\xad\xd9\x89", "\xd8\xad\xd9\x8a", "\xd8\xac\xd9\x89", "\xd8\xac\xd9\x8a", "\xd8\xae\xd9\x89",
  "\xd8\xae\xd9\x8a", "\xd8\xb5\xd9\x89", "\xd8\xb5\xd9\x8a", "\xd8\xb6\xd9\x89", "\xd8\xb6\xd9\x8a", "\xd8\xb4\xd8\xac", "\xd8\xb4\xd8\xad", "\xd8\xb4\xd8\xae",
  "\xd8\xb4\xd9\x85", "\xd8\xb4\xd8\xb1", "\xd8\xb3\xd8\xb1", "\xd8\xb5\xd8\xb1", "\xd8\xb6\xd8\xb1", "\xd8\xb4\xd8\xac", "\xd8\xb4\xd8\xad", "\xd8\xb4\xd8\xae",
  "\xd8\xb4\xd9\x85", "\xd8\xb3\xd9\x87", "\xd8\xb4\xd9\x87", "\xd8\xb7\xd9\x85", "\xd8\xb3\xd8\xac", "\xd8\xb3\xd8\xad", "\xd8\xb3\xd8\xae", "\xd8\xb4\xd8\xac",
  "\xd8\xb4\xd8\xad", "\xd8\xb4\xd8\xae", "\xd8\xb7\xd9\x85", "\xd8\xb8\xd9\x85", "\xd8\xa7\xd9\x8b", "\xd8\xa7\xd9\x8b"
};

static const char *grn_nfkc50_decompose_table_efb5[] = {
  "\xd8\xaa\xd8\xac\xd9\x85", "\xd8\xaa\xd8\xad\xd8\xac", "\xd8\xaa\xd8\xad\xd8\xac", "\xd8\xaa\xd8\xad\xd9\x85", "\xd8\xaa\xd8\xae\xd9\x85", "\xd8\xaa\xd9\x85\xd8\xac", "\xd8\xaa\xd9\x85\xd8\xad", "\xd8\xaa\xd9\x85\xd8\xae",
  "\xd8\xac\xd9\x85\xd8\xad", "\xd8\xac\xd9\x85\xd8\xad", "\xd8\xad\xd9\x85\xd9\x8a", "\xd8\xad\xd9\x85\xd9\x89", "\xd8\xb3\xd8\xad\xd8\xac", "\xd8\xb3\xd8\xac\xd8\xad", "\xd8\xb3\xd8\xac\xd9\x89", "\xd8\xb3\xd9\x85\xd8\xad",
  "\xd8\xb3\xd9\x85\xd8\xad", "\xd8\xb3\xd9\x85\xd8\xac", "\xd8\xb3\xd9\x85\xd9\x85", "\xd8\xb3\xd9\x85\xd9\x85", "\xd8\xb5\xd8\xad\xd8\xad", "\xd8\xb5\xd8\xad\xd8\xad", "\xd8\xb5\xd9\x85\xd9\x85", "\xd8\xb4\xd8\xad\xd9\x85",
  "\xd8\xb4\xd8\xad\xd9\x85", "\xd8\xb4\xd8\xac\xd9\x8a", "\xd8\xb4\xd9\x85\xd8\xae", "\xd8\xb4\xd9\x85\xd8\xae", "\xd8\xb4\xd9\x85\xd9\x85", "\xd8\xb4\xd9\x85\xd9\x85", "\xd8\xb6\xd8\xad\xd9\x89", "\xd8\xb6\xd8\xae\xd9\x85",
  "\xd8\xb6\xd8\xae\xd9\x85", "\xd8\xb7\xd9\x85\xd8\xad", "\xd8\xb7\xd9\x85\xd8\xad", "\xd8\xb7\xd9\x85\xd9\x85", "\xd8\xb7\xd9\x85\xd9\x8a", "\xd8\xb9\xd8\xac\xd9\x85", "\xd8\xb9\xd9\x85\xd9\x85", "\xd8\xb9\xd9\x85\xd9\x85",
  "\xd8\xb9\xd9\x85\xd9\x89", "\xd8\xba\xd9\x85\xd9\x85", "\xd8\xba\xd9\x85\xd9\x8a", "\xd8\xba\xd9\x85\xd9\x89", "\xd9\x81\xd8\xae\xd9\x85", "\xd9\x81\xd8\xae\xd9\x85", "\xd9\x82\xd9\x85\xd8\xad", "\xd9\x82\xd9\x85\xd9\x85"
};

static const char *grn_nfkc50_decompose_table_efb6[] = {
  "\xd9\x84\xd8\xad\xd9\x85", "\xd9\x84\xd8\xad\xd9\x8a", "\xd9\x84\xd8\xad\xd9\x89", "\xd9\x84\xd8\xac\xd8\xac", "\xd9\x84\xd8\xac\xd8\xac", "\xd9\x84\xd8\xae\xd9\x85", "\xd9\x84\xd8\xae\xd9\x85", "\xd9\x84\xd9\x85\xd8\xad",
  "\xd9\x84\xd9\x85\xd8\xad", "\xd9\x85\xd8\xad\xd8\xac", "\xd9\x85\xd8\xad\xd9\x85", "\xd9\x85\xd8\xad\xd9\x8a", "\xd9\x85\xd8\xac\xd8\xad", "\xd9\x85\xd8\xac\xd9\x85", "\xd9\x85\xd8\xae\xd8\xac", "\xd9\x85\xd8\xae\xd9\x85",
  NULL, NULL, "\xd9\x85\xd8\xac\xd8\xae", "\xd9\x87\xd9\x85\xd8\xac", "\xd9\x87\xd9\x85\xd9\x85", "\xd9\x86\xd8\xad\xd9\x85", "\xd9\x86\xd8\xad\xd9\x89", "\xd9\x86\xd8\xac\xd9\x85",
  "\xd9\x86\xd8\xac\xd9\x85", "\xd9\x86\xd8\xac\xd9\x89", "\xd9\x86\xd9\x85\xd9\x8a", "\xd9\x86\xd9\x85\xd9\x89", "\xd9\x8a\xd9\x85\xd9\x85", "\xd9\x8a\xd9\x85\xd9\x85", "\xd8\xa8\xd8\xae\xd9\x8a", "\xd8\xaa\xd8\xac\xd9\x8a",
  "\xd8\xaa\xd8\xac\xd9\x89", "\xd8\xaa\xd8\xae\xd9\x8a", "\xd8\xaa\xd8\xae\xd9\x89", "\xd8\xaa\xd9\x85\xd9\x8a", "\xd8\xaa\xd9\x85\xd9\x89", "\xd8\xac\xd9\x85\xd9\x8a", "\xd8\xac\xd8\xad\xd9\x89", "\xd8\xac\xd9\x85\xd9\x89",
  "\xd8\xb3\xd8\xae\xd9\x89", "\xd8\xb5\xd8\xad\xd9\x8a", "\xd8\xb4\xd8\xad\xd9\x8a", "\xd8\xb6\xd8\xad\xd9\x8a", "\xd9\x84\xd8\xac\xd9\x8a", "\xd9\x84\xd9\x85\xd9\x8a", "\xd9\x8a\xd8\xad\xd9\x8a", "\xd9\x8a\xd8\xac\xd9\x8a",
  "\xd9\x8a\xd9\x85\xd9\x8a", "\xd9\x85\xd9\x85\xd9\x8a", "\xd9\x82\xd9\x85\xd9\x8a", "\xd9\x86\xd8\xad\xd9\x8a", "\xd9\x82\xd9\x85\xd8\xad", "\xd9\x84\xd8\xad\xd9\x85", "\xd8\xb9\xd9\x85\xd9\x8a", "\xd9\x83\xd9\x85\xd9\x8a",
  "\xd9\x86\xd8\xac\xd8\xad", "\xd9\x85\xd8\xae\xd9\x8a", "\xd9\x84\xd8\xac\xd9\x85", "\xd9\x83\xd9\x85\xd9\x85", "\xd9\x84\xd8\xac\xd9\x85", "\xd9\x86\xd8\xac\xd8\xad", "\xd8\xac\xd8\xad\xd9\x8a", "\xd8\xad\xd8\xac\xd9\x8a"
};

static const char *grn_nfkc50_decompose_table_efb7[] = {
  "\xd9\x85\xd8\xac\xd9\x8a", "\xd9\x81\xd9\x85\xd9\x8a", "\xd8\xa8\xd8\xad\xd9\x8a", "\xd9\x83\xd9\x85\xd9\x85", "\xd8\xb9\xd8\xac\xd9\x85", "\xd8\xb5\xd9\x85\xd9\x85", "\xd8\xb3\xd8\xae\xd9\x8a", "\xd9\x86\xd8\xac\xd9\x8a",
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xd8\xb5\xd9\x84\xdb\x92", "\xd9\x82\xd9\x84\xdb\x92", "\xd8\xa7\xd9\x84\xd9\x84\xd9\x87", "\xd8\xa7\xd9\x83\xd8\xa8\xd8\xb1", "\xd9\x85\xd8\xad\xd9\x85\xd8\xaf", "\xd8\xb5\xd9\x84\xd8\xb9\xd9\x85", "\xd8\xb1\xd8\xb3\xd9\x88\xd9\x84", "\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87",
  "\xd9\x88\xd8\xb3\xd9\x84\xd9\x85", "\xd8\xb5\xd9\x84\xd9\x89", "\xd8\xb5\xd9\x84\xd9\x89\x20\xd8\xa7\xd9\x84\xd9\x84\xd9\x87\x20\xd8\xb9\xd9\x84\xd9\x8a\xd9\x87\x20\xd9\x88\xd8\xb3\xd9\x84\xd9\x85", "\xd8\xac\xd9\x84\x20\xd8\xac\xd9\x84\xd8\xa7\xd9\x84\xd9\x87", "\xd8\xb1\xdb\x8c\xd8\xa7\xd9\x84"
};

static const char *grn_nfkc50_decompose_table_efb8[] = {
  "\x2c", "\xe3\x80\x81", "\xe3\x80\x82", "\x3a", "\x3b", "\x21", "\x3f", "\xe3\x80\x96",
  "\xe3\x80\x97", "\x2e\x2e\x2e", NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\x2e\x2e", "\xe2\x80\x94", "\xe2\x80\x93", "\x5f", "\x5f", "\x28", "\x29", "\x7b",
  "\x7d", "\xe3\x80\x94", "\xe3\x80\x95", "\xe3\x80\x90", "\xe3\x80\x91", "\xe3\x80\x8a", "\xe3\x80\x8b", "\xe3\x80\x88"
};

static const char *grn_nfkc50_decompose_table_efb9[] = {
  "\xe3\x80\x89", "\xe3\x80\x8c", "\xe3\x80\x8d", "\xe3\x80\x8e", "\xe3\x80\x8f", NULL, NULL, "\x5b",
  "\x5d", "\xcc\x85", "\xcc\x85", "\xcc\x85", "\xcc\x85", "\x5f", "\x5f", "\x5f",
  "\x2c", "\xe3\x80\x81", "\x2e", NULL, "\x3b", "\x3a", "\x3f", "\x21",
  "\xe2\x80\x94", "\x28", "\x29", "\x7b", "\x7d", "\xe3\x80\x94", "\xe3\x80\x95", "\x23",
  "\x26", "\x2a", "\x2b", "\x2d", "\x3c", "\x3e", "\x3d", NULL,
  "\x5c", "\x24", "\x25", "\x40", NULL, NULL, NULL, NULL,
  "\xd9\x8b", "\xd9\x80\xd9\x8b", "\xd9\x8c", NULL, "\xd9\x8d", NULL, "\xd9\x8e", "\xd9\x80\xd9\x8e",
  "\xd9\x8f", "\xd9\x80\xd9\x8f", "\xd9\x90", "\xd9\x80\xd9\x90", "\xd9\x91", "\xd9\x80\xd9\x91", "\xd9\x92", "\xd9\x80\xd9\x92"
};

static const char *grn_nfkc50_decompose_table_efba[] = {
  "\xd8\xa1", "\xd8\xa2", "\xd8\xa2", "\xd8\xa3", "\xd8\xa3", "\xd8\xa4", "\xd8\xa4", "\xd8\xa5",
  "\xd8\xa5", "\xd8\xa6", "\xd8\xa6", "\xd8\xa6", "\xd8\xa6", "\xd8\xa7", "\xd8\xa7", "\xd8\xa8",
  "\xd8\xa8", "\xd8\xa8", "\xd8\xa8", "\xd8\xa9", "\xd8\xa9", "\xd8\xaa", "\xd8\xaa", "\xd8\xaa",
  "\xd8\xaa", "\xd8\xab", "\xd8\xab", "\xd8\xab", "\xd8\xab", "\xd8\xac", "\xd8\xac", "\xd8\xac",
  "\xd8\xac", "\xd8\xad", "\xd8\xad", "\xd8\xad", "\xd8\xad", "\xd8\xae", "\xd8\xae", "\xd8\xae",
  "\xd8\xae", "\xd8\xaf", "\xd8\xaf", "\xd8\xb0", "\xd8\xb0", "\xd8\xb1", "\xd8\xb1", "\xd8\xb2",
  "\xd8\xb2", "\xd8\xb3", "\xd8\xb3", "\xd8\xb3", "\xd8\xb3", "\xd8\xb4", "\xd8\xb4", "\xd8\xb4",
  "\xd8\xb4", "\xd8\xb5", "\xd8\xb5", "\xd8\xb5", "\xd8\xb5", "\xd8\xb6", "\xd8\xb6", "\xd8\xb6"
};

static const char *grn_nfkc50_decompose_table_efbb[] = {
  "\xd8\xb6", "\xd8\xb7", "\xd8\xb7", "\xd8\xb7", "\xd8\xb7", "\xd8\xb8", "\xd8\xb8", "\xd8\xb8",
  "\xd8\xb8", "\xd8\xb9", "\xd8\xb9", "\xd8\xb9", "\xd8\xb9", "\xd8\xba", "\xd8\xba", "\xd8\xba",
  "\xd8\xba", "\xd9\x81", "\xd9\x81", "\xd9\x81", "\xd9\x81", "\xd9\x82", "\xd9\x82", "\xd9\x82",
  "\xd9\x82", "\xd9\x83", "\xd9\x83", "\xd9\x83", "\xd9\x83", "\xd9\x84", "\xd9\x84", "\xd9\x84",
  "\xd9\x84", "\xd9\x85", "\xd9\x85", "\xd9\x85", "\xd9\x85", "\xd9\x86", "\xd9\x86", "\xd9\x86",
  "\xd9\x86", "\xd9\x87", "\xd9\x87", "\xd9\x87", "\xd9\x87", "\xd9\x88", "\xd9\x88", "\xd9\x89",
  "\xd9\x89", "\xd9\x8a", "\xd9\x8a", "\xd9\x8a", "\xd9\x8a", "\xd9\x84\xd8\xa2", "\xd9\x84\xd8\xa2", "\xd9\x84\xd8\xa3",
  "\xd9\x84\xd8\xa3", "\xd9\x84\xd8\xa5", "\xd9\x84\xd8\xa5", "\xd9\x84\xd8\xa7", "\xd9\x84\xd8\xa7"
};

static const char *grn_nfkc50_decompose_table_efbc[] = {
  "\x21", "\x22", "\x23", "\x24", "\x25", "\x26", "\x27", "\x28",
  "\x29", "\x2a", "\x2b", "\x2c", "\x2d", "\x2e", "\x2f", "\x30",
  "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38",
  "\x39", "\x3a", "\x3b", "\x3c", "\x3d", "\x3e", "\x3f", "\x40",
  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
  "\x79", "\x7a", "\x5b", "\x5c", "\x5d", "\x5e", "\x5f"
};

static const char *grn_nfkc50_decompose_table_efbd[] = {
  "\x60", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67",
  "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f",
  "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77",
  "\x78", "\x79", "\x7a", "\x7b", "\x7c", "\x7d", "\x7e", "\xe2\xa6\x85",
  "\xe2\xa6\x86", "\xe3\x80\x82", "\xe3\x80\x8c", "\xe3\x80\x8d", "\xe3\x80\x81", "\xe3\x83\xbb", "\xe3\x83\xb2", "\xe3\x82\xa1",
  "\xe3\x82\xa3", "\xe3\x82\xa5", "\xe3\x82\xa7", "\xe3\x82\xa9", "\xe3\x83\xa3", "\xe3\x83\xa5", "\xe3\x83\xa7", "\xe3\x83\x83",
  "\xe3\x83\xbc", "\xe3\x82\xa2", "\xe3\x82\xa4", "\xe3\x82\xa6", "\xe3\x82\xa8", "\xe3\x82\xaa", "\xe3\x82\xab", "\xe3\x82\xad",
  "\xe3\x82\xaf", "\xe3\x82\xb1", "\xe3\x82\xb3", "\xe3\x82\xb5", "\xe3\x82\xb7", "\xe3\x82\xb9", "\xe3\x82\xbb", "\xe3\x82\xbd"
};

static const char *grn_nfkc50_decompose_table_efbe[] = {
  "\xe3\x82\xbf", "\xe3\x83\x81", "\xe3\x83\x84", "\xe3\x83\x86", "\xe3\x83\x88", "\xe3\x83\x8a", "\xe3\x83\x8b", "\xe3\x83\x8c",
  "\xe3\x83\x8d", "\xe3\x83\x8e", "\xe3\x83\x8f", "\xe3\x83\x92", "\xe3\x83\x95", "\xe3\x83\x98", "\xe3\x83\x9b", "\xe3\x83\x9e",
  "\xe3\x83\x9f", "\xe3\x83\xa0", "\xe3\x83\xa1", "\xe3\x83\xa2", "\xe3\x83\xa4", "\xe3\x83\xa6", "\xe3\x83\xa8", "\xe3\x83\xa9",
  "\xe3\x83\xaa", "\xe3\x83\xab", "\xe3\x83\xac", "\xe3\x83\xad", "\xe3\x83\xaf", "\xe3\x83\xb3", "\xe3\x82\x99", "\xe3\x82\x9a",
  "\xe1\x85\xa0", "\xe1\x84\x80", "\xe1\x84\x81", "\xe1\x86\xaa", "\xe1\x84\x82", "\xe1\x86\xac", "\xe1\x86\xad", "\xe1\x84\x83",
  "\xe1\x84\x84", "\xe1\x84\x85", "\xe1\x86\xb0", "\xe1\x86\xb1", "\xe1\x86\xb2", "\xe1\x86\xb3", "\xe1\x86\xb4", "\xe1\x86\xb5",
  "\xe1\x84\x9a", "\xe1\x84\x86", "\xe1\x84\x87", "\xe1\x84\x88", "\xe1\x84\xa1", "\xe1\x84\x89", "\xe1\x84\x8a", "\xe1\x84\x8b",
  "\xe1\x84\x8c", "\xe1\x84\x8d", "\xe1\x84\x8e", "\xe1\x84\x8f", "\xe1\x84\x90", "\xe1\x84\x91", "\xe1\x84\x92"
};

static const char *grn_nfkc50_decompose_table_efbf[] = {
  "\xe1\x85\xa1", "\xe1\x85\xa2", "\xe1\x85\xa3", "\xe1\x85\xa4", "\xe1\x85\xa5", "\xe1\x85\xa6", NULL, NULL,
  "\xe1\x85\xa7", "\xe1\x85\xa8", "\xe1\x85\xa9", "\xe1\x85\xaa", "\xe1\x85\xab", "\xe1\x85\xac", NULL, NULL,
  "\xe1\x85\xad", "\xe1\x85\xae", "\xe1\x85\xaf", "\xe1\x85\xb0", "\xe1\x85\xb1", "\xe1\x85\xb2", NULL, NULL,
  "\xe1\x85\xb3", "\xe1\x85\xb4", "\xe1\x85\xb5", NULL, NULL, NULL, "\xc2\xa2", "\xc2\xa3",
  "\xc2\xac", "\xcc\x84", "\xc2\xa6", "\xc2\xa5", "\xe2\x82\xa9", NULL, "\xe2\x94\x82", "\xe2\x86\x90",
  "\xe2\x86\x91", "\xe2\x86\x92", "\xe2\x86\x93", "\xe2\x96\xa0", "\xe2\x97\x8b"
};

static const char *grn_nfkc50_decompose_table_f09d85[] = {
  "\xf0\x9d\x85\x97\xf0\x9d\x85\xa5", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xae", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb0", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb1", "\xf0\x9d\x85\x98\xf0\x9d\x85\xa5\xf0\x9d\x85\xb2"
};

static const char *grn_nfkc50_decompose_table_f09d86[] = {
  "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5", "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5", "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xae", "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xae", "\xf0\x9d\x86\xb9\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf"
};

static const char *grn_nfkc50_decompose_table_f09d90[] = {
  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
  "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64",
  "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c"
};

static const char *grn_nfkc50_decompose_table_f09d91[] = {
  "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74",
  "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62",
  "\x63", "\x64", "\x65", "\x66", "\x67", NULL, "\x69", "\x6a",
  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72",
  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78"
};

static const char *grn_nfkc50_decompose_table_f09d92[] = {
  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
  "\x77", "\x78", "\x79", "\x7a", "\x61", NULL, "\x63", "\x64",
  NULL, NULL, "\x67", NULL, NULL, "\x6a", "\x6b", NULL,
  NULL, "\x6e", "\x6f", "\x70", "\x71", NULL, "\x73", "\x74",
  "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62",
  "\x63", "\x64", NULL, "\x66", NULL, "\x68", "\x69", "\x6a"
};

static const char *grn_nfkc50_decompose_table_f09d93[] = {
  "\x6b", "\x6c", "\x6d", "\x6e", NULL, "\x70", "\x71", "\x72",
  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76"
};

static const char *grn_nfkc50_decompose_table_f09d94[] = {
  "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62", NULL, "\x64",
  "\x65", "\x66", "\x67", NULL, NULL, "\x6a", "\x6b", "\x6c",
  "\x6d", "\x6e", "\x6f", "\x70", "\x71", NULL, "\x73", "\x74",
  "\x75", "\x76", "\x77", "\x78", "\x79", NULL, "\x61", "\x62",
  "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a",
  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72",
  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
  "\x61", "\x62", NULL, "\x64", "\x65", "\x66", "\x67"
};

static const char *grn_nfkc50_decompose_table_f09d95[] = {
  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", NULL, "\x6f", NULL,
  NULL, NULL, "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
  "\x79", NULL, "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
  "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64",
  "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c",
  "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74"
};

static const char *grn_nfkc50_decompose_table_f09d96[] = {
  "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62",
  "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a",
  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72",
  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66"
};

static const char *grn_nfkc50_decompose_table_f09d97[] = {
  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
  "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64",
  "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c",
  "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74",
  "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62",
  "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a",
  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72"
};

static const char *grn_nfkc50_decompose_table_f09d98[] = {
  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70",
  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
  "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64"
};

static const char *grn_nfkc50_decompose_table_f09d99[] = {
  "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c",
  "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74",
  "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a", "\x61", "\x62",
  "\x63", "\x64", "\x65", "\x66", "\x67", "\x68", "\x69", "\x6a",
  "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70", "\x71", "\x72",
  "\x73", "\x74", "\x75", "\x76", "\x77", "\x78", "\x79", "\x7a",
  "\x61", "\x62", "\x63", "\x64", "\x65", "\x66", "\x67", "\x68",
  "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e", "\x6f", "\x70"
};

static const char *grn_nfkc50_decompose_table_f09d9a[] = {
  "\x71", "\x72", "\x73", "\x74", "\x75", "\x76", "\x77", "\x78",
  "\x79", "\x7a", "\x61", "\x62", "\x63", "\x64", "\x65", "\x66",
  "\x67", "\x68", "\x69", "\x6a", "\x6b", "\x6c", "\x6d", "\x6e",
  "\x6f", "\x70", "\x71", "\x72", "\x73", "\x74", "\x75", "\x76",
  "\x77", "\x78", "\x79", "\x7a", "\xc4\xb1", "\xc8\xb7", NULL, NULL,
  "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x98",
  "\xce\x99", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0",
  "\xce\xa1", "\xce\x98", "\xce\xa3", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8"
};

static const char *grn_nfkc50_decompose_table_f09d9b[] = {
  "\xce\xa9", "\xe2\x88\x87", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6",
  "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe",
  "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86",
  "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x82", "\xce\xb5", "\xce\xb8", "\xce\xba", "\xcf\x86",
  "\xcf\x81", "\xcf\x80", "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96",
  "\xce\x97", "\xce\x98", "\xce\x99", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e",
  "\xce\x9f", "\xce\xa0", "\xce\xa1", "\xce\x98", "\xce\xa3", "\xce\xa4", "\xce\xa5", "\xce\xa6",
  "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xe2\x88\x87", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4"
};

static const char *grn_nfkc50_decompose_table_f09d9c[] = {
  "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc",
  "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84",
  "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x82", "\xce\xb5", "\xce\xb8",
  "\xce\xba", "\xcf\x86", "\xcf\x81", "\xcf\x80", "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94",
  "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x98", "\xce\x99", "\xce\x9a", "\xce\x9b", "\xce\x9c",
  "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0", "\xce\xa1", "\xce\x98", "\xce\xa3", "\xce\xa4",
  "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xe2\x88\x87", "\xce\xb1", "\xce\xb2",
  "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba"
};

static const char *grn_nfkc50_decompose_table_f09d9d[] = {
  "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82",
  "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x82",
  "\xce\xb5", "\xce\xb8", "\xce\xba", "\xcf\x86", "\xcf\x81", "\xcf\x80", "\xce\x91", "\xce\x92",
  "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x98", "\xce\x99", "\xce\x9a",
  "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0", "\xce\xa1", "\xce\x98",
  "\xce\xa3", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8", "\xce\xa9", "\xe2\x88\x87",
  "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6", "\xce\xb7", "\xce\xb8",
  "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe", "\xce\xbf", "\xcf\x80"
};

static const char *grn_nfkc50_decompose_table_f09d9e[] = {
  "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86", "\xcf\x87", "\xcf\x88",
  "\xcf\x89", "\xe2\x88\x82", "\xce\xb5", "\xce\xb8", "\xce\xba", "\xcf\x86", "\xcf\x81", "\xcf\x80",
  "\xce\x91", "\xce\x92", "\xce\x93", "\xce\x94", "\xce\x95", "\xce\x96", "\xce\x97", "\xce\x98",
  "\xce\x99", "\xce\x9a", "\xce\x9b", "\xce\x9c", "\xce\x9d", "\xce\x9e", "\xce\x9f", "\xce\xa0",
  "\xce\xa1", "\xce\x98", "\xce\xa3", "\xce\xa4", "\xce\xa5", "\xce\xa6", "\xce\xa7", "\xce\xa8",
  "\xce\xa9", "\xe2\x88\x87", "\xce\xb1", "\xce\xb2", "\xce\xb3", "\xce\xb4", "\xce\xb5", "\xce\xb6",
  "\xce\xb7", "\xce\xb8", "\xce\xb9", "\xce\xba", "\xce\xbb", "\xce\xbc", "\xce\xbd", "\xce\xbe",
  "\xce\xbf", "\xcf\x80", "\xcf\x81", "\xcf\x82", "\xcf\x83", "\xcf\x84", "\xcf\x85", "\xcf\x86"
};

static const char *grn_nfkc50_decompose_table_f09d9f[] = {
  "\xcf\x87", "\xcf\x88", "\xcf\x89", "\xe2\x88\x82", "\xce\xb5", "\xce\xb8", "\xce\xba", "\xcf\x86",
  "\xcf\x81", "\xcf\x80", "\xcf\x9c", "\xcf\x9d", NULL, NULL, "\x30", "\x31",
  "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39",
  "\x30", "\x31", "\x32", "\x33", "\x34", "\x35", "\x36", "\x37",
  "\x38", "\x39", "\x30", "\x31", "\x32", "\x33", "\x34", "\x35",
  "\x36", "\x37", "\x38", "\x39", "\x30", "\x31", "\x32", "\x33",
  "\x34", "\x35", "\x36", "\x37", "\x38", "\x39", "\x30", "\x31",
  "\x32", "\x33", "\x34", "\x35", "\x36", "\x37", "\x38", "\x39"
};

static const char *grn_nfkc50_decompose_table_f0afa0[] = {
  "\xe4\xb8\xbd", "\xe4\xb8\xb8", "\xe4\xb9\x81", "\xf0\xa0\x84\xa2", "\xe4\xbd\xa0", "\xe4\xbe\xae", "\xe4\xbe\xbb", "\xe5\x80\x82",
  "\xe5\x81\xba", "\xe5\x82\x99", "\xe5\x83\xa7", "\xe5\x83\x8f", "\xe3\x92\x9e", "\xf0\xa0\x98\xba", "\xe5\x85\x8d", "\xe5\x85\x94",
  "\xe5\x85\xa4", "\xe5\x85\xb7", "\xf0\xa0\x94\x9c", "\xe3\x92\xb9", "\xe5\x85\xa7", "\xe5\x86\x8d", "\xf0\xa0\x95\x8b", "\xe5\x86\x97",
  "\xe5\x86\xa4", "\xe4\xbb\x8c", "\xe5\x86\xac", "\xe5\x86\xb5", "\xf0\xa9\x87\x9f", "\xe5\x87\xb5", "\xe5\x88\x83", "\xe3\x93\x9f",
  "\xe5\x88\xbb", "\xe5\x89\x86", "\xe5\x89\xb2", "\xe5\x89\xb7", "\xe3\x94\x95", "\xe5\x8b\x87", "\xe5\x8b\x89", "\xe5\x8b\xa4",
  "\xe5\x8b\xba", "\xe5\x8c\x85", "\xe5\x8c\x86", "\xe5\x8c\x97", "\xe5\x8d\x89", "\xe5\x8d\x91", "\xe5\x8d\x9a", "\xe5\x8d\xb3",
  "\xe5\x8d\xbd", "\xe5\x8d\xbf", "\xe5\x8d\xbf", "\xe5\x8d\xbf", "\xf0\xa0\xa8\xac", "\xe7\x81\xb0", "\xe5\x8f\x8a", "\xe5\x8f\x9f",
  "\xf0\xa0\xad\xa3", "\xe5\x8f\xab", "\xe5\x8f\xb1", "\xe5\x90\x86", "\xe5\x92\x9e", "\xe5\x90\xb8", "\xe5\x91\x88", "\xe5\x91\xa8"
};

static const char *grn_nfkc50_decompose_table_f0afa1[] = {
  "\xe5\x92\xa2", "\xe5\x93\xb6", "\xe5\x94\x90", "\xe5\x95\x93", "\xe5\x95\xa3", "\xe5\x96\x84", "\xe5\x96\x84", "\xe5\x96\x99",
  "\xe5\x96\xab", "\xe5\x96\xb3", "\xe5\x97\x82", "\xe5\x9c\x96", "\xe5\x98\x86", "\xe5\x9c\x97", "\xe5\x99\x91", "\xe5\x99\xb4",
  "\xe5\x88\x87", "\xe5\xa3\xae", "\xe5\x9f\x8e", "\xe5\x9f\xb4", "\xe5\xa0\x8d", "\xe5\x9e\x8b", "\xe5\xa0\xb2", "\xe5\xa0\xb1",
  "\xe5\xa2\xac", "\xf0\xa1\x93\xa4", "\xe5\xa3\xb2", "\xe5\xa3\xb7", "\xe5\xa4\x86", "\xe5\xa4\x9a", "\xe5\xa4\xa2", "\xe5\xa5\xa2",
  "\xf0\xa1\x9a\xa8", "\xf0\xa1\x9b\xaa", "\xe5\xa7\xac", "\xe5\xa8\x9b", "\xe5\xa8\xa7", "\xe5\xa7\x98", "\xe5\xa9\xa6", "\xe3\x9b\xae",
  "\xe3\x9b\xbc", "\xe5\xac\x88", "\xe5\xac\xbe", "\xe5\xac\xbe", "\xf0\xa1\xa7\x88", "\xe5\xaf\x83", "\xe5\xaf\x98", "\xe5\xaf\xa7",
  "\xe5\xaf\xb3", "\xf0\xa1\xac\x98", "\xe5\xaf\xbf", "\xe5\xb0\x86", "\xe5\xbd\x93", "\xe5\xb0\xa2", "\xe3\x9e\x81", "\xe5\xb1\xa0",
  "\xe5\xb1\xae", "\xe5\xb3\x80", "\xe5\xb2\x8d", "\xf0\xa1\xb7\xa4", "\xe5\xb5\x83", "\xf0\xa1\xb7\xa6", "\xe5\xb5\xae", "\xe5\xb5\xab"
};

static const char *grn_nfkc50_decompose_table_f0afa2[] = {
  "\xe5\xb5\xbc", "\xe5\xb7\xa1", "\xe5\xb7\xa2", "\xe3\xa0\xaf", "\xe5\xb7\xbd", "\xe5\xb8\xa8", "\xe5\xb8\xbd", "\xe5\xb9\xa9",
  "\xe3\xa1\xa2", "\xf0\xa2\x86\x83", "\xe3\xa1\xbc", "\xe5\xba\xb0", "\xe5\xba\xb3", "\xe5\xba\xb6", "\xe5\xbb\x8a", "\xf0\xaa\x8e\x92",
  "\xe5\xbb\xbe", "\xf0\xa2\x8c\xb1", "\xf0\xa2\x8c\xb1", "\xe8\x88\x81", "\xe5\xbc\xa2", "\xe5\xbc\xa2", "\xe3\xa3\x87", "\xf0\xa3\x8a\xb8",
  "\xf0\xa6\x87\x9a", "\xe5\xbd\xa2", "\xe5\xbd\xab", "\xe3\xa3\xa3", "\xe5\xbe\x9a", "\xe5\xbf\x8d", "\xe5\xbf\x97", "\xe5\xbf\xb9",
  "\xe6\x82\x81", "\xe3\xa4\xba", "\xe3\xa4\x9c", "\xe6\x82\x94", "\xf0\xa2\x9b\x94", "\xe6\x83\x87", "\xe6\x85\x88", "\xe6\x85\x8c",
  "\xe6\x85\x8e", "\xe6\x85\x8c", "\xe6\x85\xba", "\xe6\x86\x8e", "\xe6\x86\xb2", "\xe6\x86\xa4", "\xe6\x86\xaf", "\xe6\x87\x9e",
  "\xe6\x87\xb2", "\xe6\x87\xb6", "\xe6\x88\x90", "\xe6\x88\x9b", "\xe6\x89\x9d", "\xe6\x8a\xb1", "\xe6\x8b\x94", "\xe6\x8d\x90",
  "\xf0\xa2\xac\x8c", "\xe6\x8c\xbd", "\xe6\x8b\xbc", "\xe6\x8d\xa8", "\xe6\x8e\x83", "\xe6\x8f\xa4", "\xf0\xa2\xaf\xb1", "\xe6\x90\xa2"
};

static const char *grn_nfkc50_decompose_table_f0afa3[] = {
  "\xe6\x8f\x85", "\xe6\x8e\xa9", "\xe3\xa8\xae", "\xe6\x91\xa9", "\xe6\x91\xbe", "\xe6\x92\x9d", "\xe6\x91\xb7", "\xe3\xa9\xac",
  "\xe6\x95\x8f", "\xe6\x95\xac", "\xf0\xa3\x80\x8a", "\xe6\x97\xa3", "\xe6\x9b\xb8", "\xe6\x99\x89", "\xe3\xac\x99", "\xe6\x9a\x91",
  "\xe3\xac\x88", "\xe3\xab\xa4", "\xe5\x86\x92", "\xe5\x86\x95", "\xe6\x9c\x80", "\xe6\x9a\x9c", "\xe8\x82\xad", "\xe4\x8f\x99",
  "\xe6\x9c\x97", "\xe6\x9c\x9b", "\xe6\x9c\xa1", "\xe6\x9d\x9e", "\xe6\x9d\x93", "\xf0\xa3\x8f\x83", "\xe3\xad\x89", "\xe6\x9f\xba",
  "\xe6\x9e\x85", "\xe6\xa1\x92", "\xe6\xa2\x85", "\xf0\xa3\x91\xad", "\xe6\xa2\x8e", "\xe6\xa0\x9f", "\xe6\xa4\x94", "\xe3\xae\x9d",
  "\xe6\xa5\x82", "\xe6\xa6\xa3", "\xe6\xa7\xaa", "\xe6\xaa\xa8", "\xf0\xa3\x9a\xa3", "\xe6\xab\x9b", "\xe3\xb0\x98", "\xe6\xac\xa1",
  "\xf0\xa3\xa2\xa7", "\xe6\xad\x94", "\xe3\xb1\x8e", "\xe6\xad\xb2", "\xe6\xae\x9f", "\xe6\xae\xba", "\xe6\xae\xbb", "\xf0\xa3\xaa\x8d",
  "\xf0\xa1\xb4\x8b", "\xf0\xa3\xab\xba", "\xe6\xb1\x8e", "\xf0\xa3\xb2\xbc", "\xe6\xb2\xbf", "\xe6\xb3\x8d", "\xe6\xb1\xa7", "\xe6\xb4\x96"
};

static const char *grn_nfkc50_decompose_table_f0afa4[] = {
  "\xe6\xb4\xbe", "\xe6\xb5\xb7", "\xe6\xb5\x81", "\xe6\xb5\xa9", "\xe6\xb5\xb8", "\xe6\xb6\x85", "\xf0\xa3\xb4\x9e", "\xe6\xb4\xb4",
  "\xe6\xb8\xaf", "\xe6\xb9\xae", "\xe3\xb4\xb3", "\xe6\xbb\x8b", "\xe6\xbb\x87", "\xf0\xa3\xbb\x91", "\xe6\xb7\xb9", "\xe6\xbd\xae",
  "\xf0\xa3\xbd\x9e", "\xf0\xa3\xbe\x8e", "\xe6\xbf\x86", "\xe7\x80\xb9", "\xe7\x80\x9e", "\xe7\x80\x9b", "\xe3\xb6\x96", "\xe7\x81\x8a",
  "\xe7\x81\xbd", "\xe7\x81\xb7", "\xe7\x82\xad", "\xf0\xa0\x94\xa5", "\xe7\x85\x85", "\xf0\xa4\x89\xa3", "\xe7\x86\x9c", "\xf0\xa4\x8e\xab",
  "\xe7\x88\xa8", "\xe7\x88\xb5", "\xe7\x89\x90", "\xf0\xa4\x98\x88", "\xe7\x8a\x80", "\xe7\x8a\x95", "\xf0\xa4\x9c\xb5", "\xf0\xa4\xa0\x94",
  "\xe7\x8d\xba", "\xe7\x8e\x8b", "\xe3\xba\xac", "\xe7\x8e\xa5", "\xe3\xba\xb8", "\xe3\xba\xb8", "\xe7\x91\x87", "\xe7\x91\x9c",
  "\xe7\x91\xb1", "\xe7\x92\x85", "\xe7\x93\x8a", "\xe3\xbc\x9b", "\xe7\x94\xa4", "\xf0\xa4\xb0\xb6", "\xe7\x94\xbe", "\xf0\xa4\xb2\x92",
  "\xe7\x95\xb0", "\xf0\xa2\x86\x9f", "\xe7\x98\x90", "\xf0\xa4\xbe\xa1", "\xf0\xa4\xbe\xb8", "\xf0\xa5\x81\x84", "\xe3\xbf\xbc", "\xe4\x80\x88"
};

static const char *grn_nfkc50_decompose_table_f0afa5[] = {
  "\xe7\x9b\xb4", "\xf0\xa5\x83\xb3", "\xf0\xa5\x83\xb2", "\xf0\xa5\x84\x99", "\xf0\xa5\x84\xb3", "\xe7\x9c\x9e", "\xe7\x9c\x9f", "\xe7\x9c\x9f",
  "\xe7\x9d\x8a", "\xe4\x80\xb9", "\xe7\x9e\x8b", "\xe4\x81\x86", "\xe4\x82\x96", "\xf0\xa5\x90\x9d", "\xe7\xa1\x8e", "\xe7\xa2\x8c",
  "\xe7\xa3\x8c", "\xe4\x83\xa3", "\xf0\xa5\x98\xa6", "\xe7\xa5\x96", "\xf0\xa5\x9a\x9a", "\xf0\xa5\x9b\x85", "\xe7\xa6\x8f", "\xe7\xa7\xab",
  "\xe4\x84\xaf", "\xe7\xa9\x80", "\xe7\xa9\x8a", "\xe7\xa9\x8f", "\xf0\xa5\xa5\xbc", "\xf0\xa5\xaa\xa7", "\xf0\xa5\xaa\xa7", "\xe7\xab\xae",
  "\xe4\x88\x82", "\xf0\xa5\xae\xab", "\xe7\xaf\x86", "\xe7\xaf\x89", "\xe4\x88\xa7", "\xf0\xa5\xb2\x80", "\xe7\xb3\x92", "\xe4\x8a\xa0",
  "\xe7\xb3\xa8", "\xe7\xb3\xa3", "\xe7\xb4\x80", "\xf0\xa5\xbe\x86", "\xe7\xb5\xa3", "\xe4\x8c\x81", "\xe7\xb7\x87", "\xe7\xb8\x82",
  "\xe7\xb9\x85", "\xe4\x8c\xb4", "\xf0\xa6\x88\xa8", "\xf0\xa6\x89\x87", "\xe4\x8d\x99", "\xf0\xa6\x8b\x99", "\xe7\xbd\xba", "\xf0\xa6\x8c\xbe",
  "\xe7\xbe\x95", "\xe7\xbf\xba", "\xe8\x80\x85", "\xf0\xa6\x93\x9a", "\xf0\xa6\x94\xa3", "\xe8\x81\xa0", "\xf0\xa6\x96\xa8", "\xe8\x81\xb0"
};

static const char *grn_nfkc50_decompose_table_f0afa6[] = {
  "\xf0\xa3\x8d\x9f", "\xe4\x8f\x95", "\xe8\x82\xb2", "\xe8\x84\x83", "\xe4\x90\x8b", "\xe8\x84\xbe", "\xe5\xaa\xb5", "\xf0\xa6\x9e\xa7",
  "\xf0\xa6\x9e\xb5", "\xf0\xa3\x8e\x93", "\xf0\xa3\x8e\x9c", "\xe8\x88\x81", "\xe8\x88\x84", "\xe8\xbe\x9e", "\xe4\x91\xab", "\xe8\x8a\x91",
  "\xe8\x8a\x8b", "\xe8\x8a\x9d", "\xe5\x8a\xb3", "\xe8\x8a\xb1", "\xe8\x8a\xb3", "\xe8\x8a\xbd", "\xe8\x8b\xa6", "\xf0\xa6\xac\xbc",
  "\xe8\x8b\xa5", "\xe8\x8c\x9d", "\xe8\x8d\xa3", "\xe8\x8e\xad", "\xe8\x8c\xa3", "\xe8\x8e\xbd", "\xe8\x8f\xa7", "\xe8\x91\x97",
  "\xe8\x8d\x93", "\xe8\x8f\x8a", "\xe8\x8f\x8c", "\xe8\x8f\x9c", "\xf0\xa6\xb0\xb6", "\xf0\xa6\xb5\xab", "\xf0\xa6\xb3\x95", "\xe4\x94\xab",
  "\xe8\x93\xb1", "\xe8\x93\xb3", "\xe8\x94\x96", "\xf0\xa7\x8f\x8a", "\xe8\x95\xa4", "\xf0\xa6\xbc\xac", "\xe4\x95\x9d", "\xe4\x95\xa1",
  "\xf0\xa6\xbe\xb1", "\xf0\xa7\x83\x92", "\xe4\x95\xab", "\xe8\x99\x90", "\xe8\x99\x9c", "\xe8\x99\xa7", "\xe8\x99\xa9", "\xe8\x9a\xa9",
  "\xe8\x9a\x88", "\xe8\x9c\x8e", "\xe8\x9b\xa2", "\xe8\x9d\xb9", "\xe8\x9c\xa8", "\xe8\x9d\xab", "\xe8\x9e\x86", "\xe4\x97\x97"
};

static const char *grn_nfkc50_decompose_table_f0afa7[] = {
  "\xe8\x9f\xa1", "\xe8\xa0\x81", "\xe4\x97\xb9", "\xe8\xa1\xa0", "\xe8\xa1\xa3", "\xf0\xa7\x99\xa7", "\xe8\xa3\x97", "\xe8\xa3\x9e",
  "\xe4\x98\xb5", "\xe8\xa3\xba", "\xe3\x92\xbb", "\xf0\xa7\xa2\xae", "\xf0\xa7\xa5\xa6", "\xe4\x9a\xbe", "\xe4\x9b\x87", "\xe8\xaa\xa0",
  "\xe8\xab\xad", "\xe8\xae\x8a", "\xe8\xb1\x95", "\xf0\xa7\xb2\xa8", "\xe8\xb2\xab", "\xe8\xb3\x81", "\xe8\xb4\x9b", "\xe8\xb5\xb7",
  "\xf0\xa7\xbc\xaf", "\xf0\xa0\xa0\x84", "\xe8\xb7\x8b", "\xe8\xb6\xbc", "\xe8\xb7\xb0", "\xf0\xa0\xa3\x9e", "\xe8\xbb\x94", "\xe8\xbc\xb8",
  "\xf0\xa8\x97\x92", "\xf0\xa8\x97\xad", "\xe9\x82\x94", "\xe9\x83\xb1", "\xe9\x84\x91", "\xf0\xa8\x9c\xae", "\xe9\x84\x9b", "\xe9\x88\xb8",
  "\xe9\x8b\x97", "\xe9\x8b\x98", "\xe9\x89\xbc", "\xe9\x8f\xb9", "\xe9\x90\x95", "\xf0\xa8\xaf\xba", "\xe9\x96\x8b", "\xe4\xa6\x95",
  "\xe9\x96\xb7", "\xf0\xa8\xb5\xb7", "\xe4\xa7\xa6", "\xe9\x9b\x83", "\xe5\xb6\xb2", "\xe9\x9c\xa3", "\xf0\xa9\x85\x85", "\xf0\xa9\x88\x9a",
  "\xe4\xa9\xae", "\xe4\xa9\xb6", "\xe9\x9f\xa0", "\xf0\xa9\x90\x8a", "\xe4\xaa\xb2", "\xf0\xa9\x92\x96", "\xe9\xa0\x8b", "\xe9\xa0\x8b"
};

static const char *grn_nfkc50_decompose_table_f0afa8[] = {
  "\xe9\xa0\xa9", "\xf0\xa9\x96\xb6", "\xe9\xa3\xa2", "\xe4\xac\xb3", "\xe9\xa4\xa9", "\xe9\xa6\xa7", "\xe9\xa7\x82", "\xe9\xa7\xbe",
  "\xe4\xaf\x8e", "\xf0\xa9\xac\xb0", "\xe9\xac\x92", "\xe9\xb1\x80", "\xe9\xb3\xbd", "\xe4\xb3\x8e", "\xe4\xb3\xad", "\xe9\xb5\xa7",
  "\xf0\xaa\x83\x8e", "\xe4\xb3\xb8", "\xf0\xaa\x84\x85", "\xf0\xaa\x88\x8e", "\xf0\xaa\x8a\x91", "\xe9\xba\xbb", "\xe4\xb5\x96", "\xe9\xbb\xb9",
  "\xe9\xbb\xbe", "\xe9\xbc\x85", "\xe9\xbc\x8f", "\xe9\xbc\x96", "\xe9\xbc\xbb", "\xf0\xaa\x98\x80"
};

const char *
grn_nfkc50_decompose(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x41 &&
        utf8[0] <= 0x5a) {
      return grn_nfkc50_decompose_table_[utf8[0] - 0x41];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc2 :
      if (utf8[1] >= 0xa0 &&
          utf8[1] <= 0xbe) {
        return grn_nfkc50_decompose_table_c2[utf8[1] - 0xa0];
      }
      break;
    case 0xc3 :
      if (utf8[1] >= 0x80 &&
          utf8[1] <= 0x9d) {
        return grn_nfkc50_decompose_table_c3[utf8[1] - 0x80];
      }
      break;
    case 0xc4 :
      return grn_nfkc50_decompose_table_c4[utf8[1] - 0x80];
    case 0xc5 :
      return grn_nfkc50_decompose_table_c5[utf8[1] - 0x80];
    case 0xc6 :
      if (utf8[1] >= 0xa0 &&
          utf8[1] <= 0xaf) {
        return grn_nfkc50_decompose_table_c6[utf8[1] - 0xa0];
      }
      break;
    case 0xc7 :
      if (utf8[1] >= 0x84 &&
          utf8[1] <= 0xba) {
        return grn_nfkc50_decompose_table_c7[utf8[1] - 0x84];
      }
      break;
    case 0xc8 :
      if (utf8[1] >= 0x80 &&
          utf8[1] <= 0xb2) {
        return grn_nfkc50_decompose_table_c8[utf8[1] - 0x80];
      }
      break;
    case 0xca :
      if (utf8[1] >= 0xb0 &&
          utf8[1] <= 0xb8) {
        return grn_nfkc50_decompose_table_ca[utf8[1] - 0xb0];
      }
      break;
    case 0xcb :
      if (utf8[1] >= 0x98 &&
          utf8[1] <= 0xa4) {
        return grn_nfkc50_decompose_table_cb[utf8[1] - 0x98];
      }
      break;
    case 0xcd :
      if (utf8[1] >= 0x80 &&
          utf8[1] <= 0xbe) {
        return grn_nfkc50_decompose_table_cd[utf8[1] - 0x80];
      }
      break;
    case 0xce :
      if (utf8[1] >= 0x84 &&
          utf8[1] <= 0x87) {
        return grn_nfkc50_decompose_table_ce[utf8[1] - 0x84];
      }
      break;
    case 0xcf :
      if (utf8[1] >= 0x90 &&
          utf8[1] <= 0xb9) {
        return grn_nfkc50_decompose_table_cf[utf8[1] - 0x90];
      }
      break;
    case 0xd6 :
      if (utf8[1] == 0x87) {
        return "\xd5\xa5\xd6\x82";
      }
      break;
    case 0xd9 :
      if (utf8[1] >= 0xb5 &&
          utf8[1] <= 0xb8) {
        return grn_nfkc50_decompose_table_d9[utf8[1] - 0xb5];
      }
      break;
    case 0xe0 :
      switch (utf8[1]) {
      case 0xa5 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0x9f) {
          return grn_nfkc50_decompose_table_e0a5[utf8[2] - 0x98];
        }
        break;
      case 0xa7 :
        if (utf8[2] >= 0x9c &&
            utf8[2] <= 0x9f) {
          return grn_nfkc50_decompose_table_e0a7[utf8[2] - 0x9c];
        }
        break;
      case 0xa8 :
        if (utf8[2] >= 0xb3 &&
            utf8[2] <= 0xb6) {
          return grn_nfkc50_decompose_table_e0a8[utf8[2] - 0xb3];
        }
        break;
      case 0xa9 :
        if (utf8[2] >= 0x99 &&
            utf8[2] <= 0x9e) {
          return grn_nfkc50_decompose_table_e0a9[utf8[2] - 0x99];
        }
        break;
      case 0xad :
        if (utf8[2] >= 0x9c &&
            utf8[2] <= 0x9d) {
          return grn_nfkc50_decompose_table_e0ad[utf8[2] - 0x9c];
        }
        break;
      case 0xb8 :
        if (utf8[2] == 0xb3) {
          return "\xe0\xb9\x8d\xe0\xb8\xb2";
        }
        break;
      case 0xba :
        if (utf8[2] == 0xb3) {
          return "\xe0\xbb\x8d\xe0\xba\xb2";
        }
        break;
      case 0xbb :
        if (utf8[2] >= 0x9c &&
            utf8[2] <= 0x9d) {
          return grn_nfkc50_decompose_table_e0bb[utf8[2] - 0x9c];
        }
        break;
      case 0xbc :
        if (utf8[2] == 0x8c) {
          return "\xe0\xbc\x8b";
        }
        break;
      case 0xbd :
        if (utf8[2] >= 0x83 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_decompose_table_e0bd[utf8[2] - 0x83];
        }
        break;
      case 0xbe :
        if (utf8[2] >= 0x81 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_decompose_table_e0be[utf8[2] - 0x81];
        }
        break;
      default :
        break;
      }
      break;
    case 0xe1 :
      switch (utf8[1]) {
      case 0x83 :
        if (utf8[2] == 0xbc) {
          return "\xe1\x83\x9c";
        }
        break;
      case 0xb4 :
        if (utf8[2] >= 0xac &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_decompose_table_e1b4[utf8[2] - 0xac];
        }
        break;
      case 0xb5 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_decompose_table_e1b5[utf8[2] - 0x80];
        }
        break;
      case 0xb6 :
        if (utf8[2] >= 0x9b &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_decompose_table_e1b6[utf8[2] - 0x9b];
        }
        break;
      case 0xb8 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_decompose_table_e1b8[utf8[2] - 0x80];
        }
        break;
      case 0xb9 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_decompose_table_e1b9[utf8[2] - 0x80];
        }
        break;
      case 0xba :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_decompose_table_e1ba[utf8[2] - 0x80];
        }
        break;
      case 0xbb :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_decompose_table_e1bb[utf8[2] - 0x80];
        }
        break;
      case 0xbd :
        if (utf8[2] >= 0xb1 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_decompose_table_e1bd[utf8[2] - 0xb1];
        }
        break;
      case 0xbe :
        if (utf8[2] >= 0xbb &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_decompose_table_e1be[utf8[2] - 0xbb];
        }
        break;
      case 0xbf :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_decompose_table_e1bf[utf8[2] - 0x80];
        }
        break;
      default :
        break;
      }
      break;
    case 0xe2 :
      switch (utf8[1]) {
      case 0x80 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_decompose_table_e280[utf8[2] - 0x80];
        }
        break;
      case 0x81 :
        if (utf8[2] >= 0x87 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_decompose_table_e281[utf8[2] - 0x87];
        }
        break;
      case 0x82 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_decompose_table_e282[utf8[2] - 0x80];
        }
        break;
      case 0x84 :
        return grn_nfkc50_decompose_table_e284[utf8[2] - 0x80];
      case 0x85 :
        return grn_nfkc50_decompose_table_e285[utf8[2] - 0x80];
      case 0x88 :
        if (utf8[2] >= 0xac &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_decompose_table_e288[utf8[2] - 0xac];
        }
        break;
      case 0x8c :
        if (utf8[2] >= 0xa9 &&
            utf8[2] <= 0xaa) {
          return grn_nfkc50_decompose_table_e28c[utf8[2] - 0xa9];
        }
        break;
      case 0x91 :
        if (utf8[2] >= 0xa0 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_decompose_table_e291[utf8[2] - 0xa0];
        }
        break;
      case 0x92 :
        return grn_nfkc50_decompose_table_e292[utf8[2] - 0x80];
      case 0x93 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xaa) {
          return grn_nfkc50_decompose_table_e293[utf8[2] - 0x80];
        }
        break;
      case 0xa8 :
        if (utf8[2] == 0x8c) {
          return "\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab\xe2\x88\xab";
        }
        break;
      case 0xa9 :
        if (utf8[2] >= 0xb4 &&
            utf8[2] <= 0xb6) {
          return grn_nfkc50_decompose_table_e2a9[utf8[2] - 0xb4];
        }
        break;
      case 0xab :
        if (utf8[2] == 0x9c) {
          return "\xe2\xab\x9d\xcc\xb8";
        }
        break;
      case 0xb5 :
        if (utf8[2] == 0xaf) {
          return "\xe2\xb5\xa1";
        }
        break;
      case 0xba :
        if (utf8[2] == 0x9f) {
          return "\xe6\xaf\x8d";
        }
        break;
      case 0xbb :
        if (utf8[2] == 0xb3) {
          return "\xe9\xbe\x9f";
        }
        break;
      case 0xbc :
        return grn_nfkc50_decompose_table_e2bc[utf8[2] - 0x80];
      case 0xbd :
        return grn_nfkc50_decompose_table_e2bd[utf8[2] - 0x80];
      case 0xbe :
        return grn_nfkc50_decompose_table_e2be[utf8[2] - 0x80];
      case 0xbf :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x95) {
          return grn_nfkc50_decompose_table_e2bf[utf8[2] - 0x80];
        }
        break;
      default :
        break;
      }
      break;
    case 0xe3 :
      switch (utf8[1]) {
      case 0x80 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xba) {
          return grn_nfkc50_decompose_table_e380[utf8[2] - 0x80];
        }
        break;
      case 0x82 :
        if (utf8[2] >= 0x9b &&
            utf8[2] <= 0x9f) {
          return grn_nfkc50_decompose_table_e382[utf8[2] - 0x9b];
        }
        break;
      case 0x83 :
        if (utf8[2] == 0xbf) {
          return "\xe3\x82\xb3\xe3\x83\x88";
        }
        break;
      case 0x84 :
        if (utf8[2] >= 0xb1 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_decompose_table_e384[utf8[2] - 0xb1];
        }
        break;
      case 0x85 :
        return grn_nfkc50_decompose_table_e385[utf8[2] - 0x80];
      case 0x86 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x9f) {
          return grn_nfkc50_decompose_table_e386[utf8[2] - 0x80];
        }
        break;
      case 0x88 :
        return grn_nfkc50_decompose_table_e388[utf8[2] - 0x80];
      case 0x89 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_decompose_table_e389[utf8[2] - 0x80];
        }
        break;
      case 0x8a :
        return grn_nfkc50_decompose_table_e38a[utf8[2] - 0x80];
      case 0x8b :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_decompose_table_e38b[utf8[2] - 0x80];
        }
        break;
      case 0x8c :
        return grn_nfkc50_decompose_table_e38c[utf8[2] - 0x80];
      case 0x8d :
        return grn_nfkc50_decompose_table_e38d[utf8[2] - 0x80];
      case 0x8e :
        return grn_nfkc50_decompose_table_e38e[utf8[2] - 0x80];
      case 0x8f :
        return grn_nfkc50_decompose_table_e38f[utf8[2] - 0x80];
      default :
        break;
      }
      break;
    case 0xef :
      switch (utf8[1]) {
      case 0xa4 :
        return grn_nfkc50_decompose_table_efa4[utf8[2] - 0x80];
      case 0xa5 :
        return grn_nfkc50_decompose_table_efa5[utf8[2] - 0x80];
      case 0xa6 :
        return grn_nfkc50_decompose_table_efa6[utf8[2] - 0x80];
      case 0xa7 :
        return grn_nfkc50_decompose_table_efa7[utf8[2] - 0x80];
      case 0xa8 :
        return grn_nfkc50_decompose_table_efa8[utf8[2] - 0x80];
      case 0xa9 :
        return grn_nfkc50_decompose_table_efa9[utf8[2] - 0x80];
      case 0xaa :
        return grn_nfkc50_decompose_table_efaa[utf8[2] - 0x80];
      case 0xab :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x99) {
          return grn_nfkc50_decompose_table_efab[utf8[2] - 0x80];
        }
        break;
      case 0xac :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_decompose_table_efac[utf8[2] - 0x80];
        }
        break;
      case 0xad :
        return grn_nfkc50_decompose_table_efad[utf8[2] - 0x80];
      case 0xae :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb1) {
          return grn_nfkc50_decompose_table_efae[utf8[2] - 0x80];
        }
        break;
      case 0xaf :
        if (utf8[2] >= 0x93 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_decompose_table_efaf[utf8[2] - 0x93];
        }
        break;
      case 0xb0 :
        return grn_nfkc50_decompose_table_efb0[utf8[2] - 0x80];
      case 0xb1 :
        return grn_nfkc50_decompose_table_efb1[utf8[2] - 0x80];
      case 0xb2 :
        return grn_nfkc50_decompose_table_efb2[utf8[2] - 0x80];
      case 0xb3 :
        return grn_nfkc50_decompose_table_efb3[utf8[2] - 0x80];
      case 0xb4 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_decompose_table_efb4[utf8[2] - 0x80];
        }
        break;
      case 0xb5 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_decompose_table_efb5[utf8[2] - 0x90];
        }
        break;
      case 0xb6 :
        return grn_nfkc50_decompose_table_efb6[utf8[2] - 0x80];
      case 0xb7 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_decompose_table_efb7[utf8[2] - 0x80];
        }
        break;
      case 0xb8 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_decompose_table_efb8[utf8[2] - 0x90];
        }
        break;
      case 0xb9 :
        return grn_nfkc50_decompose_table_efb9[utf8[2] - 0x80];
      case 0xba :
        return grn_nfkc50_decompose_table_efba[utf8[2] - 0x80];
      case 0xbb :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_decompose_table_efbb[utf8[2] - 0x80];
        }
        break;
      case 0xbc :
        if (utf8[2] >= 0x81 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_decompose_table_efbc[utf8[2] - 0x81];
        }
        break;
      case 0xbd :
        return grn_nfkc50_decompose_table_efbd[utf8[2] - 0x80];
      case 0xbe :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xbe) {
          return grn_nfkc50_decompose_table_efbe[utf8[2] - 0x80];
        }
        break;
      case 0xbf :
        if (utf8[2] >= 0x82 &&
            utf8[2] <= 0xae) {
          return grn_nfkc50_decompose_table_efbf[utf8[2] - 0x82];
        }
        break;
      default :
        break;
      }
      break;
    case 0xf0 :
      switch (utf8[1]) {
      case 0x9d :
        switch (utf8[2]) {
        case 0x85 :
          if (utf8[3] >= 0x9e &&
              utf8[3] <= 0xa4) {
            return grn_nfkc50_decompose_table_f09d85[utf8[3] - 0x9e];
          }
          break;
        case 0x86 :
          if (utf8[3] >= 0xbb &&
              utf8[3] <= 0xbf) {
            return grn_nfkc50_decompose_table_f09d86[utf8[3] - 0xbb];
          }
          break;
        case 0x87 :
          if (utf8[3] == 0x80) {
            return "\xf0\x9d\x86\xba\xf0\x9d\x85\xa5\xf0\x9d\x85\xaf";
          }
          break;
        case 0x90 :
          return grn_nfkc50_decompose_table_f09d90[utf8[3] - 0x80];
        case 0x91 :
          return grn_nfkc50_decompose_table_f09d91[utf8[3] - 0x80];
        case 0x92 :
          return grn_nfkc50_decompose_table_f09d92[utf8[3] - 0x80];
        case 0x93 :
          return grn_nfkc50_decompose_table_f09d93[utf8[3] - 0x80];
        case 0x94 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0xbe) {
            return grn_nfkc50_decompose_table_f09d94[utf8[3] - 0x80];
          }
          break;
        case 0x95 :
          return grn_nfkc50_decompose_table_f09d95[utf8[3] - 0x80];
        case 0x96 :
          return grn_nfkc50_decompose_table_f09d96[utf8[3] - 0x80];
        case 0x97 :
          return grn_nfkc50_decompose_table_f09d97[utf8[3] - 0x80];
        case 0x98 :
          return grn_nfkc50_decompose_table_f09d98[utf8[3] - 0x80];
        case 0x99 :
          return grn_nfkc50_decompose_table_f09d99[utf8[3] - 0x80];
        case 0x9a :
          return grn_nfkc50_decompose_table_f09d9a[utf8[3] - 0x80];
        case 0x9b :
          return grn_nfkc50_decompose_table_f09d9b[utf8[3] - 0x80];
        case 0x9c :
          return grn_nfkc50_decompose_table_f09d9c[utf8[3] - 0x80];
        case 0x9d :
          return grn_nfkc50_decompose_table_f09d9d[utf8[3] - 0x80];
        case 0x9e :
          return grn_nfkc50_decompose_table_f09d9e[utf8[3] - 0x80];
        case 0x9f :
          return grn_nfkc50_decompose_table_f09d9f[utf8[3] - 0x80];
        default :
          break;
        }
        break;
      case 0xaf :
        switch (utf8[2]) {
        case 0xa0 :
          return grn_nfkc50_decompose_table_f0afa0[utf8[3] - 0x80];
        case 0xa1 :
          return grn_nfkc50_decompose_table_f0afa1[utf8[3] - 0x80];
        case 0xa2 :
          return grn_nfkc50_decompose_table_f0afa2[utf8[3] - 0x80];
        case 0xa3 :
          return grn_nfkc50_decompose_table_f0afa3[utf8[3] - 0x80];
        case 0xa4 :
          return grn_nfkc50_decompose_table_f0afa4[utf8[3] - 0x80];
        case 0xa5 :
          return grn_nfkc50_decompose_table_f0afa5[utf8[3] - 0x80];
        case 0xa6 :
          return grn_nfkc50_decompose_table_f0afa6[utf8[3] - 0x80];
        case 0xa7 :
          return grn_nfkc50_decompose_table_f0afa7[utf8[3] - 0x80];
        case 0xa8 :
          if (utf8[3] >= 0x80 &&
              utf8[3] <= 0x9d) {
            return grn_nfkc50_decompose_table_f0afa8[utf8[3] - 0x80];
          }
          break;
        default :
          break;
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc80_table_[] = {
  "\xc3\xa0", NULL, NULL, NULL, "\xc3\xa8", NULL, NULL, NULL,
  "\xc3\xac", NULL, NULL, NULL, NULL, "\xc7\xb9", "\xc3\xb2", NULL,
  NULL, NULL, NULL, NULL, "\xc3\xb9", NULL, "\xe1\xba\x81", NULL,
  "\xe1\xbb\xb3"
};

static const char *grn_nfkc50_compose_prefix_cc80_table_c3[] = {
  "\xe1\xba\xa7", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbb\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, "\xe1\xbb\x93", NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, "\xc7\x9c"
};

static const char *grn_nfkc50_compose_prefix_cc80_table_c4[] = {
  "\xe1\xba\xb1", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xb8\x95"
};

static const char *grn_nfkc50_compose_prefix_cc80_table_c6[] = {
  "\xe1\xbb\x9d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\xab"
};

static const char *grn_nfkc50_compose_prefix_cc80_table_ce[] = {
  "\xe1\xbe\xba", NULL, NULL, NULL, "\xe1\xbf\x88", NULL, "\xe1\xbf\x8a", NULL,
  "\xe1\xbf\x9a", NULL, NULL, NULL, NULL, NULL, "\xe1\xbf\xb8", NULL,
  NULL, NULL, NULL, NULL, "\xe1\xbf\xaa", NULL, NULL, NULL,
  "\xe1\xbf\xba", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\xb0", NULL, NULL, NULL, "\xe1\xbd\xb2", NULL, "\xe1\xbd\xb4", NULL,
  "\xe1\xbd\xb6", NULL, NULL, NULL, NULL, NULL, "\xe1\xbd\xb8"
};

static const char *grn_nfkc50_compose_prefix_cc80_table_cf[] = {
  "\xe1\xbd\xba", NULL, NULL, NULL, "\xe1\xbd\xbc", "\xe1\xbf\x92", "\xe1\xbf\xa2"
};

static const char *grn_nfkc50_compose_prefix_cc80_table_d0[] = {
  "\xd0\x80", NULL, NULL, "\xd0\x8d", NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xd1\x90", NULL, NULL, "\xd1\x9d"
};

static const char *grn_nfkc50_compose_prefix_cc80_table_e1bc[] = {
  "\xe1\xbc\x82", "\xe1\xbc\x83", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\x8a", "\xe1\xbc\x8b", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\x92", "\xe1\xbc\x93", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\x9a", "\xe1\xbc\x9b", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xa2", "\xe1\xbc\xa3", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xaa", "\xe1\xbc\xab", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xb2", "\xe1\xbc\xb3", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xba", "\xe1\xbc\xbb"
};

static const char *grn_nfkc50_compose_prefix_cc80_table_e1bd[] = {
  "\xe1\xbd\x82", "\xe1\xbd\x83", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\x8a", "\xe1\xbd\x8b", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\x92", "\xe1\xbd\x93", NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, "\xe1\xbd\x9b", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\xa2", "\xe1\xbd\xa3", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\xaa", "\xe1\xbd\xab"
};

static inline const char *
grn_nfkc50_compose_prefix_cc80(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x79) {
      return grn_nfkc50_compose_prefix_cc80_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc3 :
      if (utf8[1] >= 0xa2 &&
          utf8[1] <= 0xbc) {
        return grn_nfkc50_compose_prefix_cc80_table_c3[utf8[1] - 0xa2];
      }
      break;
    case 0xc4 :
      if (utf8[1] >= 0x83 &&
          utf8[1] <= 0x93) {
        return grn_nfkc50_compose_prefix_cc80_table_c4[utf8[1] - 0x83];
      }
      break;
    case 0xc5 :
      if (utf8[1] == 0x8d) {
        return "\xe1\xb9\x91";
      }
      break;
    case 0xc6 :
      if (utf8[1] >= 0xa1 &&
          utf8[1] <= 0xb0) {
        return grn_nfkc50_compose_prefix_cc80_table_c6[utf8[1] - 0xa1];
      }
      break;
    case 0xce :
      if (utf8[1] >= 0x91 &&
          utf8[1] <= 0xbf) {
        return grn_nfkc50_compose_prefix_cc80_table_ce[utf8[1] - 0x91];
      }
      break;
    case 0xcf :
      if (utf8[1] >= 0x85 &&
          utf8[1] <= 0x8b) {
        return grn_nfkc50_compose_prefix_cc80_table_cf[utf8[1] - 0x85];
      }
      break;
    case 0xd0 :
      if (utf8[1] >= 0x95 &&
          utf8[1] <= 0xb8) {
        return grn_nfkc50_compose_prefix_cc80_table_d0[utf8[1] - 0x95];
      }
      break;
    case 0xe1 :
      switch (utf8[1]) {
      case 0xbc :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_compose_prefix_cc80_table_e1bc[utf8[2] - 0x80];
        }
        break;
      case 0xbd :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xa9) {
          return grn_nfkc50_compose_prefix_cc80_table_e1bd[utf8[2] - 0x80];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc81_table_[] = {
  "\xc3\xa1", NULL, "\xc4\x87", NULL, "\xc3\xa9", NULL, "\xc7\xb5", NULL,
  "\xc3\xad", NULL, "\xe1\xb8\xb1", "\xc4\xba", "\xe1\xb8\xbf", "\xc5\x84", "\xc3\xb3", "\xe1\xb9\x95",
  NULL, "\xc5\x95", "\xc5\x9b", NULL, "\xc3\xba", NULL, "\xe1\xba\x83", NULL,
  "\xc3\xbd", "\xc5\xba"
};

static const char *grn_nfkc50_compose_prefix_cc81_table_c3[] = {
  "\xc7\xbc", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, "\xc7\xbe", NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xe1\xba\xa5", NULL, NULL, "\xc7\xbb",
  "\xc7\xbd", "\xe1\xb8\x89", NULL, NULL, "\xe1\xba\xbf", NULL, NULL, NULL,
  NULL, "\xe1\xb8\xaf", NULL, NULL, NULL, NULL, "\xe1\xbb\x91", "\xe1\xb9\x8d",
  NULL, NULL, "\xc7\xbf", NULL, NULL, NULL, "\xc7\x98"
};

static const char *grn_nfkc50_compose_prefix_cc81_table_c4[] = {
  "\xe1\xba\xaf", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xb8\x97"
};

static const char *grn_nfkc50_compose_prefix_cc81_table_c5[] = {
  "\xe1\xb9\x93", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xe1\xb9\xb9"
};

static const char *grn_nfkc50_compose_prefix_cc81_table_c6[] = {
  "\xe1\xbb\x9b", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\xa9"
};

static const char *grn_nfkc50_compose_prefix_cc81_table_ce[] = {
  "\xce\x86", NULL, NULL, NULL, "\xce\x88", NULL, "\xce\x89", NULL,
  "\xce\x8a", NULL, NULL, NULL, NULL, NULL, "\xce\x8c", NULL,
  NULL, NULL, NULL, NULL, "\xce\x8e", NULL, NULL, NULL,
  "\xce\x8f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xce\xac", NULL, NULL, NULL, "\xce\xad", NULL, "\xce\xae", NULL,
  "\xce\xaf", NULL, NULL, NULL, NULL, NULL, "\xcf\x8c"
};

static const char *grn_nfkc50_compose_prefix_cc81_table_cf[] = {
  "\xcf\x8d", NULL, NULL, NULL, "\xcf\x8e", "\xce\x90", "\xce\xb0"
};

static const char *grn_nfkc50_compose_prefix_cc81_table_d0[] = {
  "\xd0\x83", NULL, NULL, NULL, NULL, NULL, NULL, "\xd0\x8c",
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xd1\x93", NULL, NULL, NULL, NULL, NULL, NULL, "\xd1\x9c"
};

static const char *grn_nfkc50_compose_prefix_cc81_table_e1bc[] = {
  "\xe1\xbc\x84", "\xe1\xbc\x85", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\x8c", "\xe1\xbc\x8d", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\x94", "\xe1\xbc\x95", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\x9c", "\xe1\xbc\x9d", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xa4", "\xe1\xbc\xa5", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xac", "\xe1\xbc\xad", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xb4", "\xe1\xbc\xb5", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xbc", "\xe1\xbc\xbd"
};

static const char *grn_nfkc50_compose_prefix_cc81_table_e1bd[] = {
  "\xe1\xbd\x84", "\xe1\xbd\x85", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\x8c", "\xe1\xbd\x8d", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\x94", "\xe1\xbd\x95", NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, "\xe1\xbd\x9d", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\xa4", "\xe1\xbd\xa5", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\xac", "\xe1\xbd\xad"
};

static inline const char *
grn_nfkc50_compose_prefix_cc81(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x7a) {
      return grn_nfkc50_compose_prefix_cc81_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc3 :
      if (utf8[1] >= 0x86 &&
          utf8[1] <= 0xbc) {
        return grn_nfkc50_compose_prefix_cc81_table_c3[utf8[1] - 0x86];
      }
      break;
    case 0xc4 :
      if (utf8[1] >= 0x83 &&
          utf8[1] <= 0x93) {
        return grn_nfkc50_compose_prefix_cc81_table_c4[utf8[1] - 0x83];
      }
      break;
    case 0xc5 :
      if (utf8[1] >= 0x8d &&
          utf8[1] <= 0xa9) {
        return grn_nfkc50_compose_prefix_cc81_table_c5[utf8[1] - 0x8d];
      }
      break;
    case 0xc6 :
      if (utf8[1] >= 0xa1 &&
          utf8[1] <= 0xb0) {
        return grn_nfkc50_compose_prefix_cc81_table_c6[utf8[1] - 0xa1];
      }
      break;
    case 0xce :
      if (utf8[1] >= 0x91 &&
          utf8[1] <= 0xbf) {
        return grn_nfkc50_compose_prefix_cc81_table_ce[utf8[1] - 0x91];
      }
      break;
    case 0xcf :
      if (utf8[1] >= 0x85 &&
          utf8[1] <= 0x8b) {
        return grn_nfkc50_compose_prefix_cc81_table_cf[utf8[1] - 0x85];
      }
      break;
    case 0xd0 :
      if (utf8[1] >= 0x93 &&
          utf8[1] <= 0xba) {
        return grn_nfkc50_compose_prefix_cc81_table_d0[utf8[1] - 0x93];
      }
      break;
    case 0xe1 :
      switch (utf8[1]) {
      case 0xbc :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_compose_prefix_cc81_table_e1bc[utf8[2] - 0x80];
        }
        break;
      case 0xbd :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xa9) {
          return grn_nfkc50_compose_prefix_cc81_table_e1bd[utf8[2] - 0x80];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc82_table_[] = {
  "\xc3\xa2", NULL, "\xc4\x89", NULL, "\xc3\xaa", NULL, "\xc4\x9d", "\xc4\xa5",
  "\xc3\xae", "\xc4\xb5", NULL, NULL, NULL, NULL, "\xc3\xb4", NULL,
  NULL, NULL, "\xc5\x9d", NULL, "\xc3\xbb", NULL, "\xc5\xb5", NULL,
  "\xc5\xb7", "\xe1\xba\x91"
};

static const char *grn_nfkc50_compose_prefix_cc82_table_e1ba[] = {
  "\xe1\xba\xad", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbb\x87"
};

static inline const char *
grn_nfkc50_compose_prefix_cc82(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x7a) {
      return grn_nfkc50_compose_prefix_cc82_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xe1 :
      switch (utf8[1]) {
      case 0xba :
        if (utf8[2] >= 0xa1 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_compose_prefix_cc82_table_e1ba[utf8[2] - 0xa1];
        }
        break;
      case 0xbb :
        if (utf8[2] == 0x8d) {
          return "\xe1\xbb\x99";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc83_table_[] = {
  "\xc3\xa3", NULL, NULL, NULL, "\xe1\xba\xbd", NULL, NULL, NULL,
  "\xc4\xa9", NULL, NULL, NULL, NULL, "\xc3\xb1", "\xc3\xb5", NULL,
  NULL, NULL, NULL, NULL, "\xc5\xa9", "\xe1\xb9\xbd", NULL, NULL,
  "\xe1\xbb\xb9"
};

static const char *grn_nfkc50_compose_prefix_cc83_table_c3[] = {
  "\xe1\xba\xab", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbb\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, "\xe1\xbb\x97"
};

static const char *grn_nfkc50_compose_prefix_cc83_table_c6[] = {
  "\xe1\xbb\xa1", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\xaf"
};

static inline const char *
grn_nfkc50_compose_prefix_cc83(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x79) {
      return grn_nfkc50_compose_prefix_cc83_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc3 :
      if (utf8[1] >= 0xa2 &&
          utf8[1] <= 0xb4) {
        return grn_nfkc50_compose_prefix_cc83_table_c3[utf8[1] - 0xa2];
      }
      break;
    case 0xc4 :
      if (utf8[1] == 0x83) {
        return "\xe1\xba\xb5";
      }
      break;
    case 0xc6 :
      if (utf8[1] >= 0xa1 &&
          utf8[1] <= 0xb0) {
        return grn_nfkc50_compose_prefix_cc83_table_c6[utf8[1] - 0xa1];
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc88_table_[] = {
  "\xc3\xa4", NULL, NULL, NULL, "\xc3\xab", NULL, NULL, "\xe1\xb8\xa7",
  "\xc3\xaf", NULL, NULL, NULL, NULL, NULL, "\xc3\xb6", NULL,
  NULL, NULL, NULL, "\xe1\xba\x97", "\xc3\xbc", NULL, "\xe1\xba\x85", "\xe1\xba\x8d",
  "\xc3\xbf"
};

static const char *grn_nfkc50_compose_prefix_cc88_table_ce[] = {
  "\xce\xaa", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xce\xab", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xcf\x8a"
};

static const char *grn_nfkc50_compose_prefix_cc88_table_d0[] = {
  "\xd0\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, "\xd3\x92", NULL, NULL, NULL, NULL, "\xd0\x81",
  "\xd3\x9c", "\xd3\x9e", "\xd3\xa4", NULL, NULL, NULL, NULL, NULL,
  "\xd3\xa6", NULL, NULL, NULL, NULL, "\xd3\xb0", NULL, NULL,
  NULL, "\xd3\xb4", NULL, NULL, NULL, "\xd3\xb8", NULL, "\xd3\xac",
  NULL, NULL, "\xd3\x93", NULL, NULL, NULL, NULL, "\xd1\x91",
  "\xd3\x9d", "\xd3\x9f", "\xd3\xa5", NULL, NULL, NULL, NULL, NULL,
  "\xd3\xa7"
};

static const char *grn_nfkc50_compose_prefix_cc88_table_d1[] = {
  "\xd3\xb1", NULL, NULL, NULL, "\xd3\xb5", NULL, NULL, NULL,
  "\xd3\xb9", NULL, "\xd3\xad", NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, "\xd1\x97"
};

static const char *grn_nfkc50_compose_prefix_cc88_table_d3[] = {
  "\xd3\x9a", "\xd3\x9b", NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xd3\xaa", "\xd3\xab"
};

static inline const char *
grn_nfkc50_compose_prefix_cc88(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x79) {
      return grn_nfkc50_compose_prefix_cc88_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc3 :
      if (utf8[1] == 0xb5) {
        return "\xe1\xb9\x8f";
      }
      break;
    case 0xc5 :
      if (utf8[1] == 0xab) {
        return "\xe1\xb9\xbb";
      }
      break;
    case 0xce :
      if (utf8[1] >= 0x99 &&
          utf8[1] <= 0xb9) {
        return grn_nfkc50_compose_prefix_cc88_table_ce[utf8[1] - 0x99];
      }
      break;
    case 0xcf :
      if (utf8[1] == 0x85) {
        return "\xcf\x8b";
      }
      break;
    case 0xd0 :
      if (utf8[1] >= 0x86 &&
          utf8[1] <= 0xbe) {
        return grn_nfkc50_compose_prefix_cc88_table_d0[utf8[1] - 0x86];
      }
      break;
    case 0xd1 :
      if (utf8[1] >= 0x83 &&
          utf8[1] <= 0x96) {
        return grn_nfkc50_compose_prefix_cc88_table_d1[utf8[1] - 0x83];
      }
      break;
    case 0xd3 :
      if (utf8[1] >= 0x98 &&
          utf8[1] <= 0xa9) {
        return grn_nfkc50_compose_prefix_cc88_table_d3[utf8[1] - 0x98];
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc8a_table_[] = {
  "\xc3\xa5", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xc5\xaf", NULL, "\xe1\xba\x98", NULL,
  "\xe1\xba\x99"
};

static inline const char *
grn_nfkc50_compose_prefix_cc8a(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x79) {
      return grn_nfkc50_compose_prefix_cc8a_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cca7_table_[] = {
  "\xc3\xa7", "\xe1\xb8\x91", "\xc8\xa9", NULL, "\xc4\xa3", "\xe1\xb8\xa9", NULL, NULL,
  "\xc4\xb7", "\xc4\xbc", NULL, "\xc5\x86", NULL, NULL, NULL, "\xc5\x97",
  "\xc5\x9f", "\xc5\xa3"
};

static inline const char *
grn_nfkc50_compose_prefix_cca7(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x63 &&
        utf8[0] <= 0x74) {
      return grn_nfkc50_compose_prefix_cca7_table_[utf8[0] - 0x63];
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc84_table_[] = {
  "\xc4\x81", NULL, NULL, NULL, "\xc4\x93", NULL, "\xe1\xb8\xa1", NULL,
  "\xc4\xab", NULL, NULL, NULL, NULL, NULL, "\xc5\x8d", NULL,
  NULL, NULL, NULL, NULL, "\xc5\xab", NULL, NULL, NULL,
  "\xc8\xb3"
};

static const char *grn_nfkc50_compose_prefix_cc84_table_c3[] = {
  "\xc7\xa2", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, "\xc7\x9f", NULL,
  "\xc7\xa3", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xc8\xad",
  "\xc8\xab", NULL, NULL, NULL, NULL, NULL, "\xc7\x96"
};

static const char *grn_nfkc50_compose_prefix_cc84_table_c8[] = {
  "\xc7\xa1", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xc8\xb1"
};

static const char *grn_nfkc50_compose_prefix_cc84_table_ce[] = {
  "\xe1\xbe\xb9", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbf\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xe1\xbf\xa9", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbe\xb1", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbf\x91"
};

static const char *grn_nfkc50_compose_prefix_cc84_table_d0[] = {
  "\xd3\xa2", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, "\xd3\xae", NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xd3\xa3"
};

static inline const char *
grn_nfkc50_compose_prefix_cc84(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x79) {
      return grn_nfkc50_compose_prefix_cc84_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc3 :
      if (utf8[1] >= 0x86 &&
          utf8[1] <= 0xbc) {
        return grn_nfkc50_compose_prefix_cc84_table_c3[utf8[1] - 0x86];
      }
      break;
    case 0xc7 :
      if (utf8[1] == 0xab) {
        return "\xc7\xad";
      }
      break;
    case 0xc8 :
      if (utf8[1] >= 0xa7 &&
          utf8[1] <= 0xaf) {
        return grn_nfkc50_compose_prefix_cc84_table_c8[utf8[1] - 0xa7];
      }
      break;
    case 0xce :
      if (utf8[1] >= 0x91 &&
          utf8[1] <= 0xb9) {
        return grn_nfkc50_compose_prefix_cc84_table_ce[utf8[1] - 0x91];
      }
      break;
    case 0xcf :
      if (utf8[1] == 0x85) {
        return "\xe1\xbf\xa1";
      }
      break;
    case 0xd0 :
      if (utf8[1] >= 0x98 &&
          utf8[1] <= 0xb8) {
        return grn_nfkc50_compose_prefix_cc84_table_d0[utf8[1] - 0x98];
      }
      break;
    case 0xd1 :
      if (utf8[1] == 0x83) {
        return "\xd3\xaf";
      }
      break;
    case 0xe1 :
      switch (utf8[1]) {
      case 0xb8 :
        if (utf8[2] == 0xb7) {
          return "\xe1\xb8\xb9";
        }
        break;
      case 0xb9 :
        if (utf8[2] == 0x9b) {
          return "\xe1\xb9\x9d";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc86_table_[] = {
  "\xc4\x83", NULL, NULL, NULL, "\xc4\x95", NULL, "\xc4\x9f", NULL,
  "\xc4\xad", NULL, NULL, NULL, NULL, NULL, "\xc5\x8f", NULL,
  NULL, NULL, NULL, NULL, "\xc5\xad"
};

static const char *grn_nfkc50_compose_prefix_cc86_table_ce[] = {
  "\xe1\xbe\xb8", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbf\x98", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xe1\xbf\xa8", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbe\xb0", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbf\x90"
};

static const char *grn_nfkc50_compose_prefix_cc86_table_d0[] = {
  "\xd3\x90", NULL, NULL, NULL, NULL, "\xd3\x96", "\xd3\x81", NULL,
  "\xd0\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, "\xd0\x8e", NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xd3\x91", NULL, NULL, NULL, NULL, "\xd3\x97", "\xd3\x82", NULL,
  "\xd0\xb9"
};

static inline const char *
grn_nfkc50_compose_prefix_cc86(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x75) {
      return grn_nfkc50_compose_prefix_cc86_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc8 :
      if (utf8[1] == 0xa9) {
        return "\xe1\xb8\x9d";
      }
      break;
    case 0xce :
      if (utf8[1] >= 0x91 &&
          utf8[1] <= 0xb9) {
        return grn_nfkc50_compose_prefix_cc86_table_ce[utf8[1] - 0x91];
      }
      break;
    case 0xcf :
      if (utf8[1] == 0x85) {
        return "\xe1\xbf\xa0";
      }
      break;
    case 0xd0 :
      if (utf8[1] >= 0x90 &&
          utf8[1] <= 0xb8) {
        return grn_nfkc50_compose_prefix_cc86_table_d0[utf8[1] - 0x90];
      }
      break;
    case 0xd1 :
      if (utf8[1] == 0x83) {
        return "\xd1\x9e";
      }
      break;
    case 0xe1 :
      switch (utf8[1]) {
      case 0xba :
        if (utf8[2] == 0xa1) {
          return "\xe1\xba\xb7";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cca8_table_[] = {
  "\xc4\x85", NULL, NULL, NULL, "\xc4\x99", NULL, NULL, NULL,
  "\xc4\xaf", NULL, NULL, NULL, NULL, NULL, "\xc7\xab", NULL,
  NULL, NULL, NULL, NULL, "\xc5\xb3"
};

static inline const char *
grn_nfkc50_compose_prefix_cca8(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x75) {
      return grn_nfkc50_compose_prefix_cca8_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc87_table_[] = {
  "\xc8\xa7", "\xe1\xb8\x83", "\xc4\x8b", "\xe1\xb8\x8b", "\xc4\x97", "\xe1\xb8\x9f", "\xc4\xa1", "\xe1\xb8\xa3",
  NULL, NULL, NULL, NULL, "\xe1\xb9\x81", "\xe1\xb9\x85", "\xc8\xaf", "\xe1\xb9\x97",
  NULL, "\xe1\xb9\x99", "\xe1\xb9\xa1", "\xe1\xb9\xab", NULL, NULL, "\xe1\xba\x87", "\xe1\xba\x8b",
  "\xe1\xba\x8f", "\xc5\xbc"
};

static const char *grn_nfkc50_compose_prefix_cc87_table_c5[] = {
  "\xe1\xb9\xa5", NULL, NULL, NULL, NULL, NULL, "\xe1\xb9\xa7"
};

static inline const char *
grn_nfkc50_compose_prefix_cc87(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x7a) {
      return grn_nfkc50_compose_prefix_cc87_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc5 :
      if (utf8[1] >= 0x9b &&
          utf8[1] <= 0xa1) {
        return grn_nfkc50_compose_prefix_cc87_table_c5[utf8[1] - 0x9b];
      }
      break;
    case 0xe1 :
      switch (utf8[1]) {
      case 0xb9 :
        if (utf8[2] == 0xa3) {
          return "\xe1\xb9\xa9";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc8c_table_[] = {
  "\xc7\x8e", NULL, "\xc4\x8d", "\xc4\x8f", "\xc4\x9b", NULL, "\xc7\xa7", "\xc8\x9f",
  "\xc7\x90", "\xc7\xb0", "\xc7\xa9", "\xc4\xbe", NULL, "\xc5\x88", "\xc7\x92", NULL,
  NULL, "\xc5\x99", "\xc5\xa1", "\xc5\xa5", "\xc7\x94", NULL, NULL, NULL,
  NULL, "\xc5\xbe"
};

static inline const char *
grn_nfkc50_compose_prefix_cc8c(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x7a) {
      return grn_nfkc50_compose_prefix_cc8c_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc3 :
      if (utf8[1] == 0xbc) {
        return "\xc7\x9a";
      }
      break;
    case 0xc6 :
      if (utf8[1] == 0xb7) {
        return "\xc7\xae";
      }
      break;
    case 0xca :
      if (utf8[1] == 0x92) {
        return "\xc7\xaf";
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc8b_table_[] = {
  "\xc5\x91", NULL, NULL, NULL, NULL, NULL, "\xc5\xb1"
};

static inline const char *
grn_nfkc50_compose_prefix_cc8b(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x6f &&
        utf8[0] <= 0x75) {
      return grn_nfkc50_compose_prefix_cc8b_table_[utf8[0] - 0x6f];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xd0 :
      if (utf8[1] == 0xa3) {
        return "\xd3\xb2";
      }
      break;
    case 0xd1 :
      if (utf8[1] == 0x83) {
        return "\xd3\xb3";
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc9b_table_[] = {
  "\xc6\xa1", NULL, NULL, NULL, NULL, NULL, "\xc6\xb0"
};

static inline const char *
grn_nfkc50_compose_prefix_cc9b(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x6f &&
        utf8[0] <= 0x75) {
      return grn_nfkc50_compose_prefix_cc9b_table_[utf8[0] - 0x6f];
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc8f_table_[] = {
  "\xc8\x81", NULL, NULL, NULL, "\xc8\x85", NULL, NULL, NULL,
  "\xc8\x89", NULL, NULL, NULL, NULL, NULL, "\xc8\x8d", NULL,
  NULL, "\xc8\x91", NULL, NULL, "\xc8\x95"
};

static const char *grn_nfkc50_compose_prefix_cc8f_table_d1[] = {
  "\xd1\xb6", "\xd1\xb7"
};

static inline const char *
grn_nfkc50_compose_prefix_cc8f(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x75) {
      return grn_nfkc50_compose_prefix_cc8f_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xd1 :
      if (utf8[1] >= 0xb4 &&
          utf8[1] <= 0xb5) {
        return grn_nfkc50_compose_prefix_cc8f_table_d1[utf8[1] - 0xb4];
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc91_table_[] = {
  "\xc8\x83", NULL, NULL, NULL, "\xc8\x87", NULL, NULL, NULL,
  "\xc8\x8b", NULL, NULL, NULL, NULL, NULL, "\xc8\x8f", NULL,
  NULL, "\xc8\x93", NULL, NULL, "\xc8\x97"
};

static inline const char *
grn_nfkc50_compose_prefix_cc91(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x75) {
      return grn_nfkc50_compose_prefix_cc91_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cca6_table_[] = {
  "\xc8\x99", "\xc8\x9b"
};

static inline const char *
grn_nfkc50_compose_prefix_cca6(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x73 &&
        utf8[0] <= 0x74) {
      return grn_nfkc50_compose_prefix_cca6_table_[utf8[0] - 0x73];
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_d993(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xd8 :
      if (utf8[1] == 0xa7) {
        return "\xd8\xa2";
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_d994_table_d9[] = {
  "\xd8\xa4", NULL, "\xd8\xa6"
};

static const char *grn_nfkc50_compose_prefix_d994_table_db[] = {
  "\xdb\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, "\xdb\x93", NULL, NULL, "\xdb\x80"
};

static inline const char *
grn_nfkc50_compose_prefix_d994(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xd8 :
      if (utf8[1] == 0xa7) {
        return "\xd8\xa3";
      }
      break;
    case 0xd9 :
      if (utf8[1] >= 0x88 &&
          utf8[1] <= 0x8a) {
        return grn_nfkc50_compose_prefix_d994_table_d9[utf8[1] - 0x88];
      }
      break;
    case 0xdb :
      if (utf8[1] >= 0x81 &&
          utf8[1] <= 0x95) {
        return grn_nfkc50_compose_prefix_d994_table_db[utf8[1] - 0x81];
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_d995(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xd8 :
      if (utf8[1] == 0xa7) {
        return "\xd8\xa5";
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e0a4bc_table_e0a4[] = {
  "\xe0\xa4\xa9", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe0\xa4\xb1", NULL, NULL, "\xe0\xa4\xb4"
};

static inline const char *
grn_nfkc50_compose_prefix_e0a4bc(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xa4 :
        if (utf8[2] >= 0xa8 &&
            utf8[2] <= 0xb3) {
          return grn_nfkc50_compose_prefix_e0a4bc_table_e0a4[utf8[2] - 0xa8];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0a6be(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xa7 :
        if (utf8[2] == 0x87) {
          return "\xe0\xa7\x8b";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0a797(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xa7 :
        if (utf8[2] == 0x87) {
          return "\xe0\xa7\x8c";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0ad96(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xad :
        if (utf8[2] == 0x87) {
          return "\xe0\xad\x88";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0acbe(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xad :
        if (utf8[2] == 0x87) {
          return "\xe0\xad\x8b";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0ad97(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xad :
        if (utf8[2] == 0x87) {
          return "\xe0\xad\x8c";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0af97(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xae :
        if (utf8[2] == 0x92) {
          return "\xe0\xae\x94";
        }
        break;
      case 0xaf :
        if (utf8[2] == 0x86) {
          return "\xe0\xaf\x8c";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e0aebe_table_e0af[] = {
  "\xe0\xaf\x8a", "\xe0\xaf\x8b"
};

static inline const char *
grn_nfkc50_compose_prefix_e0aebe(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xaf :
        if (utf8[2] >= 0x86 &&
            utf8[2] <= 0x87) {
          return grn_nfkc50_compose_prefix_e0aebe_table_e0af[utf8[2] - 0x86];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0b196(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xb1 :
        if (utf8[2] == 0x86) {
          return "\xe0\xb1\x88";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e0b395_table_e0b3[] = {
  "\xe0\xb3\x87", NULL, NULL, NULL, "\xe0\xb3\x8b"
};

static inline const char *
grn_nfkc50_compose_prefix_e0b395(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xb2 :
        if (utf8[2] == 0xbf) {
          return "\xe0\xb3\x80";
        }
        break;
      case 0xb3 :
        if (utf8[2] >= 0x86 &&
            utf8[2] <= 0x8a) {
          return grn_nfkc50_compose_prefix_e0b395_table_e0b3[utf8[2] - 0x86];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0b396(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xb3 :
        if (utf8[2] == 0x86) {
          return "\xe0\xb3\x88";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0b382(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xb3 :
        if (utf8[2] == 0x86) {
          return "\xe0\xb3\x8a";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e0b4be_table_e0b5[] = {
  "\xe0\xb5\x8a", "\xe0\xb5\x8b"
};

static inline const char *
grn_nfkc50_compose_prefix_e0b4be(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xb5 :
        if (utf8[2] >= 0x86 &&
            utf8[2] <= 0x87) {
          return grn_nfkc50_compose_prefix_e0b4be_table_e0b5[utf8[2] - 0x86];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0b597(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xb5 :
        if (utf8[2] == 0x86) {
          return "\xe0\xb5\x8c";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e0b78a_table_e0b7[] = {
  "\xe0\xb7\x9a", NULL, NULL, "\xe0\xb7\x9d"
};

static inline const char *
grn_nfkc50_compose_prefix_e0b78a(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xb7 :
        if (utf8[2] >= 0x99 &&
            utf8[2] <= 0x9c) {
          return grn_nfkc50_compose_prefix_e0b78a_table_e0b7[utf8[2] - 0x99];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0b78f(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xb7 :
        if (utf8[2] == 0x99) {
          return "\xe0\xb7\x9c";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e0b79f(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe0 :
      switch (utf8[1]) {
      case 0xb7 :
        if (utf8[2] == 0x99) {
          return "\xe0\xb7\x9e";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_e180ae(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe1 :
      switch (utf8[1]) {
      case 0x80 :
        if (utf8[2] == 0xa5) {
          return "\xe1\x80\xa6";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e1acb5_table_e1ac[] = {
  "\xe1\xac\x86", NULL, "\xe1\xac\x88", NULL, "\xe1\xac\x8a", NULL, "\xe1\xac\x8c", NULL,
  "\xe1\xac\x8e", NULL, NULL, NULL, "\xe1\xac\x92", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, "\xe1\xac\xbb", NULL, "\xe1\xac\xbd",
  NULL, "\xe1\xad\x80", "\xe1\xad\x81"
};

static inline const char *
grn_nfkc50_compose_prefix_e1acb5(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe1 :
      switch (utf8[1]) {
      case 0xac :
        if (utf8[2] >= 0x85 &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_compose_prefix_e1acb5_table_e1ac[utf8[2] - 0x85];
        }
        break;
      case 0xad :
        if (utf8[2] == 0x82) {
          return "\xe1\xad\x83";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_cca5(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] == 0x61) {
      return "\xe1\xb8\x81";
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cca3_table_[] = {
  "\xe1\xba\xa1", "\xe1\xb8\x85", NULL, "\xe1\xb8\x8d", "\xe1\xba\xb9", NULL, NULL, "\xe1\xb8\xa5",
  "\xe1\xbb\x8b", NULL, "\xe1\xb8\xb3", "\xe1\xb8\xb7", "\xe1\xb9\x83", "\xe1\xb9\x87", "\xe1\xbb\x8d", NULL,
  NULL, "\xe1\xb9\x9b", "\xe1\xb9\xa3", "\xe1\xb9\xad", "\xe1\xbb\xa5", "\xe1\xb9\xbf", "\xe1\xba\x89", NULL,
  "\xe1\xbb\xb5", "\xe1\xba\x93"
};

static const char *grn_nfkc50_compose_prefix_cca3_table_c6[] = {
  "\xe1\xbb\xa3", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\xb1"
};

static inline const char *
grn_nfkc50_compose_prefix_cca3(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x7a) {
      return grn_nfkc50_compose_prefix_cca3_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc6 :
      if (utf8[1] >= 0xa1 &&
          utf8[1] <= 0xb0) {
        return grn_nfkc50_compose_prefix_cca3_table_c6[utf8[1] - 0xa1];
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_ccb1_table_[] = {
  "\xe1\xb8\x87", NULL, "\xe1\xb8\x8f", NULL, NULL, NULL, "\xe1\xba\x96", NULL,
  NULL, "\xe1\xb8\xb5", "\xe1\xb8\xbb", NULL, "\xe1\xb9\x89", NULL, NULL, NULL,
  "\xe1\xb9\x9f", NULL, "\xe1\xb9\xaf", NULL, NULL, NULL, NULL, NULL,
  "\xe1\xba\x95"
};

static inline const char *
grn_nfkc50_compose_prefix_ccb1(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x62 &&
        utf8[0] <= 0x7a) {
      return grn_nfkc50_compose_prefix_ccb1_table_[utf8[0] - 0x62];
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_ccad_table_[] = {
  "\xe1\xb8\x93", "\xe1\xb8\x99", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xb8\xbd", NULL, "\xe1\xb9\x8b", NULL, NULL, NULL, NULL, NULL,
  "\xe1\xb9\xb1", "\xe1\xb9\xb7"
};

static inline const char *
grn_nfkc50_compose_prefix_ccad(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x64 &&
        utf8[0] <= 0x75) {
      return grn_nfkc50_compose_prefix_ccad_table_[utf8[0] - 0x64];
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_ccb0_table_[] = {
  "\xe1\xb8\x9b", NULL, NULL, NULL, "\xe1\xb8\xad", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xb9\xb5"
};

static inline const char *
grn_nfkc50_compose_prefix_ccb0(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x65 &&
        utf8[0] <= 0x75) {
      return grn_nfkc50_compose_prefix_ccb0_table_[utf8[0] - 0x65];
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_ccae(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] == 0x68) {
      return "\xe1\xb8\xab";
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static inline const char *
grn_nfkc50_compose_prefix_cca4(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] == 0x75) {
      return "\xe1\xb9\xb3";
    } else {
      return NULL;
    }
  } else {
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc89_table_[] = {
  "\xe1\xba\xa3", NULL, NULL, NULL, "\xe1\xba\xbb", NULL, NULL, NULL,
  "\xe1\xbb\x89", NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\x8f", NULL,
  NULL, NULL, NULL, NULL, "\xe1\xbb\xa7", NULL, NULL, NULL,
  "\xe1\xbb\xb7"
};

static const char *grn_nfkc50_compose_prefix_cc89_table_c3[] = {
  "\xe1\xba\xa9", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbb\x83", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, "\xe1\xbb\x95"
};

static const char *grn_nfkc50_compose_prefix_cc89_table_c6[] = {
  "\xe1\xbb\x9f", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe1\xbb\xad"
};

static inline const char *
grn_nfkc50_compose_prefix_cc89(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x61 &&
        utf8[0] <= 0x79) {
      return grn_nfkc50_compose_prefix_cc89_table_[utf8[0] - 0x61];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xc3 :
      if (utf8[1] >= 0xa2 &&
          utf8[1] <= 0xb4) {
        return grn_nfkc50_compose_prefix_cc89_table_c3[utf8[1] - 0xa2];
      }
      break;
    case 0xc4 :
      if (utf8[1] == 0x83) {
        return "\xe1\xba\xb3";
      }
      break;
    case 0xc6 :
      if (utf8[1] >= 0xa1 &&
          utf8[1] <= 0xb0) {
        return grn_nfkc50_compose_prefix_cc89_table_c6[utf8[1] - 0xa1];
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc93_table_ce[] = {
  "\xe1\xbc\x88", NULL, NULL, NULL, "\xe1\xbc\x98", NULL, "\xe1\xbc\xa8", NULL,
  "\xe1\xbc\xb8", NULL, NULL, NULL, NULL, NULL, "\xe1\xbd\x88", NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\xa8", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\x80", NULL, NULL, NULL, "\xe1\xbc\x90", NULL, "\xe1\xbc\xa0", NULL,
  "\xe1\xbc\xb0", NULL, NULL, NULL, NULL, NULL, "\xe1\xbd\x80"
};

static const char *grn_nfkc50_compose_prefix_cc93_table_cf[] = {
  "\xe1\xbf\xa4", NULL, NULL, NULL, "\xe1\xbd\x90", NULL, NULL, NULL,
  "\xe1\xbd\xa0"
};

static inline const char *
grn_nfkc50_compose_prefix_cc93(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xce :
      if (utf8[1] >= 0x91 &&
          utf8[1] <= 0xbf) {
        return grn_nfkc50_compose_prefix_cc93_table_ce[utf8[1] - 0x91];
      }
      break;
    case 0xcf :
      if (utf8[1] >= 0x81 &&
          utf8[1] <= 0x89) {
        return grn_nfkc50_compose_prefix_cc93_table_cf[utf8[1] - 0x81];
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cc94_table_ce[] = {
  "\xe1\xbc\x89", NULL, NULL, NULL, "\xe1\xbc\x99", NULL, "\xe1\xbc\xa9", NULL,
  "\xe1\xbc\xb9", NULL, NULL, NULL, NULL, NULL, "\xe1\xbd\x89", NULL,
  "\xe1\xbf\xac", NULL, NULL, NULL, "\xe1\xbd\x99", NULL, NULL, NULL,
  "\xe1\xbd\xa9", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\x81", NULL, NULL, NULL, "\xe1\xbc\x91", NULL, "\xe1\xbc\xa1", NULL,
  "\xe1\xbc\xb1", NULL, NULL, NULL, NULL, NULL, "\xe1\xbd\x81"
};

static const char *grn_nfkc50_compose_prefix_cc94_table_cf[] = {
  "\xe1\xbf\xa5", NULL, NULL, NULL, "\xe1\xbd\x91", NULL, NULL, NULL,
  "\xe1\xbd\xa1"
};

static inline const char *
grn_nfkc50_compose_prefix_cc94(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xce :
      if (utf8[1] >= 0x91 &&
          utf8[1] <= 0xbf) {
        return grn_nfkc50_compose_prefix_cc94_table_ce[utf8[1] - 0x91];
      }
      break;
    case 0xcf :
      if (utf8[1] >= 0x81 &&
          utf8[1] <= 0x89) {
        return grn_nfkc50_compose_prefix_cc94_table_cf[utf8[1] - 0x81];
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cd82_table_ce[] = {
  "\xe1\xbe\xb6", NULL, NULL, NULL, NULL, NULL, "\xe1\xbf\x86", NULL,
  "\xe1\xbf\x96"
};

static const char *grn_nfkc50_compose_prefix_cd82_table_cf[] = {
  "\xe1\xbf\xa6", NULL, NULL, NULL, "\xe1\xbf\xb6", "\xe1\xbf\x97", "\xe1\xbf\xa7"
};

static const char *grn_nfkc50_compose_prefix_cd82_table_e1bc[] = {
  "\xe1\xbc\x86", "\xe1\xbc\x87", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\x8e", "\xe1\xbc\x8f", NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xa6", "\xe1\xbc\xa7", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xae", "\xe1\xbc\xaf", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xb6", "\xe1\xbc\xb7", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbc\xbe", "\xe1\xbc\xbf"
};

static const char *grn_nfkc50_compose_prefix_cd82_table_e1bd[] = {
  "\xe1\xbd\x96", "\xe1\xbd\x97", NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, "\xe1\xbd\x9f", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\xa6", "\xe1\xbd\xa7", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbd\xae", "\xe1\xbd\xaf"
};

static inline const char *
grn_nfkc50_compose_prefix_cd82(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xce :
      if (utf8[1] >= 0xb1 &&
          utf8[1] <= 0xb9) {
        return grn_nfkc50_compose_prefix_cd82_table_ce[utf8[1] - 0xb1];
      }
      break;
    case 0xcf :
      if (utf8[1] >= 0x85 &&
          utf8[1] <= 0x8b) {
        return grn_nfkc50_compose_prefix_cd82_table_cf[utf8[1] - 0x85];
      }
      break;
    case 0xe1 :
      switch (utf8[1]) {
      case 0xbc :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb9) {
          return grn_nfkc50_compose_prefix_cd82_table_e1bc[utf8[2] - 0x80];
        }
        break;
      case 0xbd :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xa9) {
          return grn_nfkc50_compose_prefix_cd82_table_e1bd[utf8[2] - 0x90];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_cd85_table_ce[] = {
  "\xe1\xbe\xbc", NULL, NULL, NULL, NULL, NULL, "\xe1\xbf\x8c", NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbf\xbc", NULL, NULL, "\xe1\xbe\xb4", NULL, "\xe1\xbf\x84", NULL, NULL,
  "\xe1\xbe\xb3", NULL, NULL, NULL, NULL, NULL, "\xe1\xbf\x83"
};

static const char *grn_nfkc50_compose_prefix_cd85_table_cf[] = {
  "\xe1\xbf\xb3", NULL, NULL, NULL, NULL, "\xe1\xbf\xb4"
};

static const char *grn_nfkc50_compose_prefix_cd85_table_e1bc[] = {
  "\xe1\xbe\x80", "\xe1\xbe\x81", "\xe1\xbe\x82", "\xe1\xbe\x83", "\xe1\xbe\x84", "\xe1\xbe\x85", "\xe1\xbe\x86", "\xe1\xbe\x87",
  "\xe1\xbe\x88", "\xe1\xbe\x89", "\xe1\xbe\x8a", "\xe1\xbe\x8b", "\xe1\xbe\x8c", "\xe1\xbe\x8d", "\xe1\xbe\x8e", "\xe1\xbe\x8f",
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbe\x90", "\xe1\xbe\x91", "\xe1\xbe\x92", "\xe1\xbe\x93", "\xe1\xbe\x94", "\xe1\xbe\x95", "\xe1\xbe\x96", "\xe1\xbe\x97",
  "\xe1\xbe\x98", "\xe1\xbe\x99", "\xe1\xbe\x9a", "\xe1\xbe\x9b", "\xe1\xbe\x9c", "\xe1\xbe\x9d", "\xe1\xbe\x9e", "\xe1\xbe\x9f"
};

static const char *grn_nfkc50_compose_prefix_cd85_table_e1bd[] = {
  "\xe1\xbe\xa0", "\xe1\xbe\xa1", "\xe1\xbe\xa2", "\xe1\xbe\xa3", "\xe1\xbe\xa4", "\xe1\xbe\xa5", "\xe1\xbe\xa6", "\xe1\xbe\xa7",
  "\xe1\xbe\xa8", "\xe1\xbe\xa9", "\xe1\xbe\xaa", "\xe1\xbe\xab", "\xe1\xbe\xac", "\xe1\xbe\xad", "\xe1\xbe\xae", "\xe1\xbe\xaf",
  "\xe1\xbe\xb2", NULL, NULL, NULL, "\xe1\xbf\x82", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xe1\xbf\xb2"
};

static const char *grn_nfkc50_compose_prefix_cd85_table_e1bf[] = {
  "\xe1\xbf\x87", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe1\xbf\xb7"
};

static inline const char *
grn_nfkc50_compose_prefix_cd85(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xce :
      if (utf8[1] >= 0x91 &&
          utf8[1] <= 0xb7) {
        return grn_nfkc50_compose_prefix_cd85_table_ce[utf8[1] - 0x91];
      }
      break;
    case 0xcf :
      if (utf8[1] >= 0x89 &&
          utf8[1] <= 0x8e) {
        return grn_nfkc50_compose_prefix_cd85_table_cf[utf8[1] - 0x89];
      }
      break;
    case 0xe1 :
      switch (utf8[1]) {
      case 0xbc :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xaf) {
          return grn_nfkc50_compose_prefix_cd85_table_e1bc[utf8[2] - 0x80];
        }
        break;
      case 0xbd :
        if (utf8[2] >= 0xa0 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_cd85_table_e1bd[utf8[2] - 0xa0];
        }
        break;
      case 0xbe :
        if (utf8[2] == 0xb6) {
          return "\xe1\xbe\xb7";
        }
        break;
      case 0xbf :
        if (utf8[2] >= 0x86 &&
            utf8[2] <= 0xb6) {
          return grn_nfkc50_compose_prefix_cd85_table_e1bf[utf8[2] - 0x86];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_ccb8_table_[] = {
  "\xe2\x89\xae", "\xe2\x89\xa0", "\xe2\x89\xaf"
};

static const char *grn_nfkc50_compose_prefix_ccb8_table_e286[] = {
  "\xe2\x86\x9a", NULL, "\xe2\x86\x9b", NULL, "\xe2\x86\xae"
};

static const char *grn_nfkc50_compose_prefix_ccb8_table_e287[] = {
  "\xe2\x87\x8d", NULL, "\xe2\x87\x8f", NULL, "\xe2\x87\x8e"
};

static const char *grn_nfkc50_compose_prefix_ccb8_table_e288[] = {
  "\xe2\x88\x84", NULL, NULL, NULL, NULL, "\xe2\x88\x89", NULL, NULL,
  "\xe2\x88\x8c", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe2\x88\xa4", NULL, "\xe2\x88\xa6", NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, "\xe2\x89\x81"
};

static const char *grn_nfkc50_compose_prefix_ccb8_table_e289[] = {
  "\xe2\x89\x84", NULL, "\xe2\x89\x87", NULL, NULL, "\xe2\x89\x89", NULL, NULL,
  NULL, NULL, "\xe2\x89\xad", NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, "\xe2\x89\xa2", NULL,
  NULL, "\xe2\x89\xb0", "\xe2\x89\xb1", NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe2\x89\xb4",
  "\xe2\x89\xb5", NULL, NULL, "\xe2\x89\xb8", "\xe2\x89\xb9", NULL, NULL, "\xe2\x8a\x80",
  "\xe2\x8a\x81", "\xe2\x8b\xa0", "\xe2\x8b\xa1"
};

static const char *grn_nfkc50_compose_prefix_ccb8_table_e28a[] = {
  "\xe2\x8a\x84", "\xe2\x8a\x85", NULL, NULL, "\xe2\x8a\x88", "\xe2\x8a\x89", NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, "\xe2\x8b\xa2",
  "\xe2\x8b\xa3", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe2\x8a\xac", NULL, NULL, NULL, NULL, NULL, "\xe2\x8a\xad", "\xe2\x8a\xae",
  NULL, "\xe2\x8a\xaf", NULL, NULL, NULL, NULL, NULL, NULL,
  "\xe2\x8b\xaa", "\xe2\x8b\xab", "\xe2\x8b\xac", "\xe2\x8b\xad"
};

static inline const char *
grn_nfkc50_compose_prefix_ccb8(const unsigned char *utf8)
{
  if (utf8[0] < 0x80) {
    if (utf8[0] >= 0x3c &&
        utf8[0] <= 0x3e) {
      return grn_nfkc50_compose_prefix_ccb8_table_[utf8[0] - 0x3c];
    } else {
      return NULL;
    }
  } else {
    switch (utf8[0]) {
    case 0xe2 :
      switch (utf8[1]) {
      case 0x86 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0x94) {
          return grn_nfkc50_compose_prefix_ccb8_table_e286[utf8[2] - 0x90];
        }
        break;
      case 0x87 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0x94) {
          return grn_nfkc50_compose_prefix_ccb8_table_e287[utf8[2] - 0x90];
        }
        break;
      case 0x88 :
        if (utf8[2] >= 0x83 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_ccb8_table_e288[utf8[2] - 0x83];
        }
        break;
      case 0x89 :
        if (utf8[2] >= 0x83 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_compose_prefix_ccb8_table_e289[utf8[2] - 0x83];
        }
        break;
      case 0x8a :
        if (utf8[2] >= 0x82 &&
            utf8[2] <= 0xb5) {
          return grn_nfkc50_compose_prefix_ccb8_table_e28a[utf8[2] - 0x82];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e38299_table_e381[] = {
  "\xe3\x82\x94", NULL, NULL, NULL, NULL, "\xe3\x81\x8c", NULL, "\xe3\x81\x8e",
  NULL, "\xe3\x81\x90", NULL, "\xe3\x81\x92", NULL, "\xe3\x81\x94", NULL, "\xe3\x81\x96",
  NULL, "\xe3\x81\x98", NULL, "\xe3\x81\x9a", NULL, "\xe3\x81\x9c", NULL, "\xe3\x81\x9e",
  NULL, "\xe3\x81\xa0", NULL, "\xe3\x81\xa2", NULL, NULL, "\xe3\x81\xa5", NULL,
  "\xe3\x81\xa7", NULL, "\xe3\x81\xa9", NULL, NULL, NULL, NULL, NULL,
  NULL, "\xe3\x81\xb0", NULL, NULL, "\xe3\x81\xb3", NULL, NULL, "\xe3\x81\xb6",
  NULL, NULL, "\xe3\x81\xb9", NULL, NULL, "\xe3\x81\xbc"
};

static const char *grn_nfkc50_compose_prefix_e38299_table_e382[] = {
  "\xe3\x82\x9e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, "\xe3\x83\xb4", NULL, NULL, NULL, NULL, "\xe3\x82\xac", NULL,
  "\xe3\x82\xae", NULL, "\xe3\x82\xb0", NULL, "\xe3\x82\xb2", NULL, "\xe3\x82\xb4", NULL,
  "\xe3\x82\xb6", NULL, "\xe3\x82\xb8", NULL, "\xe3\x82\xba", NULL, "\xe3\x82\xbc", NULL,
  "\xe3\x82\xbe", NULL, "\xe3\x83\x80"
};

static const char *grn_nfkc50_compose_prefix_e38299_table_e383[] = {
  "\xe3\x83\x82", NULL, NULL, "\xe3\x83\x85", NULL, "\xe3\x83\x87", NULL, "\xe3\x83\x89",
  NULL, NULL, NULL, NULL, NULL, NULL, "\xe3\x83\x90", NULL,
  NULL, "\xe3\x83\x93", NULL, NULL, "\xe3\x83\x96", NULL, NULL, "\xe3\x83\x99",
  NULL, NULL, "\xe3\x83\x9c", NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, "\xe3\x83\xb7", "\xe3\x83\xb8",
  "\xe3\x83\xb9", "\xe3\x83\xba", NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xe3\x83\xbe"
};

static inline const char *
grn_nfkc50_compose_prefix_e38299(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe3 :
      switch (utf8[1]) {
      case 0x81 :
        if (utf8[2] >= 0x86 &&
            utf8[2] <= 0xbb) {
          return grn_nfkc50_compose_prefix_e38299_table_e381[utf8[2] - 0x86];
        }
        break;
      case 0x82 :
        if (utf8[2] >= 0x9d &&
            utf8[2] <= 0xbf) {
          return grn_nfkc50_compose_prefix_e38299_table_e382[utf8[2] - 0x9d];
        }
        break;
      case 0x83 :
        if (utf8[2] >= 0x81 &&
            utf8[2] <= 0xbd) {
          return grn_nfkc50_compose_prefix_e38299_table_e383[utf8[2] - 0x81];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e3829a_table_e381[] = {
  "\xe3\x81\xb1", NULL, NULL, "\xe3\x81\xb4", NULL, NULL, "\xe3\x81\xb7", NULL,
  NULL, "\xe3\x81\xba", NULL, NULL, "\xe3\x81\xbd"
};

static const char *grn_nfkc50_compose_prefix_e3829a_table_e383[] = {
  "\xe3\x83\x91", NULL, NULL, "\xe3\x83\x94", NULL, NULL, "\xe3\x83\x97", NULL,
  NULL, "\xe3\x83\x9a", NULL, NULL, "\xe3\x83\x9d"
};

static inline const char *
grn_nfkc50_compose_prefix_e3829a(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe3 :
      switch (utf8[1]) {
      case 0x81 :
        if (utf8[2] >= 0xaf &&
            utf8[2] <= 0xbb) {
          return grn_nfkc50_compose_prefix_e3829a_table_e381[utf8[2] - 0xaf];
        }
        break;
      case 0x83 :
        if (utf8[2] >= 0x8f &&
            utf8[2] <= 0x9b) {
          return grn_nfkc50_compose_prefix_e3829a_table_e383[utf8[2] - 0x8f];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e185a1_table_e184[] = {
  "\xea\xb0\x80", "\xea\xb9\x8c", "\xeb\x82\x98", "\xeb\x8b\xa4", "\xeb\x94\xb0", "\xeb\x9d\xbc", "\xeb\xa7\x88", "\xeb\xb0\x94",
  "\xeb\xb9\xa0", "\xec\x82\xac", "\xec\x8b\xb8", "\xec\x95\x84", "\xec\x9e\x90", "\xec\xa7\x9c", "\xec\xb0\xa8", "\xec\xb9\xb4",
  "\xed\x83\x80", "\xed\x8c\x8c", "\xed\x95\x98"
};

static inline const char *
grn_nfkc50_compose_prefix_e185a1(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xe1 :
      switch (utf8[1]) {
      case 0x84 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0x92) {
          return grn_nfkc50_compose_prefix_e185a1_table_e184[utf8[2] - 0x80];
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e186a8_table_eab0[] = {
  "\xea\xb0\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb0\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xea\xb0\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eab1[] = {
  "\xea\xb1\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb1\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eab2[] = {
  "\xea\xb2\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb2\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eab3[] = {
  "\xea\xb3\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb3\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xea\xb3\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eab4[] = {
  "\xea\xb4\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb4\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eab5[] = {
  "\xea\xb5\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb5\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eab6[] = {
  "\xea\xb6\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb6\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eab7[] = {
  "\xea\xb7\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb7\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xea\xb7\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eab8[] = {
  "\xea\xb8\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb8\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eab9[] = {
  "\xea\xb9\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb9\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eaba[] = {
  "\xea\xba\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xba\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xea\xba\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eabb[] = {
  "\xea\xbb\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xbb\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eabc[] = {
  "\xea\xbc\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xbc\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eabd[] = {
  "\xea\xbd\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xbd\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eabe[] = {
  "\xea\xbe\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xbe\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xea\xbe\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eabf[] = {
  "\xea\xbf\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xbf\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb80[] = {
  "\xeb\x80\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x80\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb81[] = {
  "\xeb\x81\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x81\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x81\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb82[] = {
  "\xeb\x82\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x82\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb83[] = {
  "\xeb\x83\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x83\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb84[] = {
  "\xeb\x84\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x84\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb85[] = {
  "\xeb\x85\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x85\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x85\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb86[] = {
  "\xeb\x86\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x86\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb87[] = {
  "\xeb\x87\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x87\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb88[] = {
  "\xeb\x88\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x88\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x88\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb89[] = {
  "\xeb\x89\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x89\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb8a[] = {
  "\xeb\x8a\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8a\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb8b[] = {
  "\xeb\x8b\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8b\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb8c[] = {
  "\xeb\x8c\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8c\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x8c\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb8d[] = {
  "\xeb\x8d\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8d\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb8e[] = {
  "\xeb\x8e\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8e\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb8f[] = {
  "\xeb\x8f\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8f\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x8f\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb90[] = {
  "\xeb\x90\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x90\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb91[] = {
  "\xeb\x91\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x91\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb92[] = {
  "\xeb\x92\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x92\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb93[] = {
  "\xeb\x93\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x93\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x93\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb94[] = {
  "\xeb\x94\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x94\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb95[] = {
  "\xeb\x95\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x95\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb96[] = {
  "\xeb\x96\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x96\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x96\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb97[] = {
  "\xeb\x97\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x97\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb98[] = {
  "\xeb\x98\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x98\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb99[] = {
  "\xeb\x99\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x99\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb9a[] = {
  "\xeb\x9a\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9a\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x9a\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb9b[] = {
  "\xeb\x9b\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9b\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb9c[] = {
  "\xeb\x9c\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9c\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb9d[] = {
  "\xeb\x9d\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9d\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x9d\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb9e[] = {
  "\xeb\x9e\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9e\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eb9f[] = {
  "\xeb\x9f\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9f\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eba0[] = {
  "\xeb\xa0\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa0\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eba1[] = {
  "\xeb\xa1\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa1\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xa1\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eba2[] = {
  "\xeb\xa2\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa2\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eba3[] = {
  "\xeb\xa3\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa3\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eba4[] = {
  "\xeb\xa4\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa4\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xa4\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eba5[] = {
  "\xeb\xa5\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa5\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eba6[] = {
  "\xeb\xa6\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa6\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eba7[] = {
  "\xeb\xa7\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa7\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eba8[] = {
  "\xeb\xa8\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa8\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xa8\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eba9[] = {
  "\xeb\xa9\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa9\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebaa[] = {
  "\xeb\xaa\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xaa\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebab[] = {
  "\xeb\xab\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xab\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xab\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebac[] = {
  "\xeb\xac\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xac\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebad[] = {
  "\xeb\xad\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xad\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebae[] = {
  "\xeb\xae\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xae\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebaf[] = {
  "\xeb\xaf\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xaf\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xaf\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebb0[] = {
  "\xeb\xb0\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb0\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebb1[] = {
  "\xeb\xb1\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb1\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebb2[] = {
  "\xeb\xb2\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb2\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xb2\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebb3[] = {
  "\xeb\xb3\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb3\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebb4[] = {
  "\xeb\xb4\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb4\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebb5[] = {
  "\xeb\xb5\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb5\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebb6[] = {
  "\xeb\xb6\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb6\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xb6\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebb7[] = {
  "\xeb\xb7\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb7\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebb8[] = {
  "\xeb\xb8\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb8\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebb9[] = {
  "\xeb\xb9\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb9\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xb9\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebba[] = {
  "\xeb\xba\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xba\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebbb[] = {
  "\xeb\xbb\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xbb\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebbc[] = {
  "\xeb\xbc\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xbc\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebbd[] = {
  "\xeb\xbd\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xbd\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xbd\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebbe[] = {
  "\xeb\xbe\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xbe\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ebbf[] = {
  "\xeb\xbf\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xbf\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec80[] = {
  "\xec\x80\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x80\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x80\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec81[] = {
  "\xec\x81\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x81\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec82[] = {
  "\xec\x82\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x82\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec83[] = {
  "\xec\x83\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x83\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec84[] = {
  "\xec\x84\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x84\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x84\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec85[] = {
  "\xec\x85\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x85\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec86[] = {
  "\xec\x86\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x86\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec87[] = {
  "\xec\x87\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x87\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x87\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec88[] = {
  "\xec\x88\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x88\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec89[] = {
  "\xec\x89\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x89\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec8a[] = {
  "\xec\x8a\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8a\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec8b[] = {
  "\xec\x8b\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8b\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x8b\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec8c[] = {
  "\xec\x8c\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8c\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec8d[] = {
  "\xec\x8d\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8d\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec8e[] = {
  "\xec\x8e\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8e\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x8e\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec8f[] = {
  "\xec\x8f\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8f\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec90[] = {
  "\xec\x90\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x90\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec91[] = {
  "\xec\x91\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x91\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec92[] = {
  "\xec\x92\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x92\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x92\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec93[] = {
  "\xec\x93\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x93\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec94[] = {
  "\xec\x94\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x94\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec95[] = {
  "\xec\x95\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x95\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x95\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec96[] = {
  "\xec\x96\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x96\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec97[] = {
  "\xec\x97\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x97\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec98[] = {
  "\xec\x98\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x98\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec99[] = {
  "\xec\x99\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x99\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x99\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec9a[] = {
  "\xec\x9a\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9a\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec9b[] = {
  "\xec\x9b\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9b\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec9c[] = {
  "\xec\x9c\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9c\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x9c\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec9d[] = {
  "\xec\x9d\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9d\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec9e[] = {
  "\xec\x9e\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9e\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ec9f[] = {
  "\xec\x9f\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9f\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eca0[] = {
  "\xec\xa0\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa0\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xa0\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eca1[] = {
  "\xec\xa1\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa1\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eca2[] = {
  "\xec\xa2\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa2\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eca3[] = {
  "\xec\xa3\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa3\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xa3\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eca4[] = {
  "\xec\xa4\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa4\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eca5[] = {
  "\xec\xa5\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa5\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eca6[] = {
  "\xec\xa6\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa6\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eca7[] = {
  "\xec\xa7\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa7\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xa7\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eca8[] = {
  "\xec\xa8\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa8\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_eca9[] = {
  "\xec\xa9\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa9\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecaa[] = {
  "\xec\xaa\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xaa\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xaa\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecab[] = {
  "\xec\xab\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xab\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecac[] = {
  "\xec\xac\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xac\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecad[] = {
  "\xec\xad\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xad\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecae[] = {
  "\xec\xae\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xae\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xae\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecaf[] = {
  "\xec\xaf\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xaf\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecb0[] = {
  "\xec\xb0\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xb0\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecb1[] = {
  "\xec\xb1\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xb1\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xb1\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecb2[] = {
  "\xec\xb2\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xb2\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecb3[] = {
  "\xec\xb3\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xb3\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecb4[] = {
  "\xec\xb4\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xb4\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecb5[] = {
  "\xec\xb5\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xb5\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xb5\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecb6[] = {
  "\xec\xb6\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xb6\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecb7[] = {
  "\xec\xb7\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xb7\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecb8[] = {
  "\xec\xb8\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xb8\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xb8\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecb9[] = {
  "\xec\xb9\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xb9\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecba[] = {
  "\xec\xba\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xba\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecbb[] = {
  "\xec\xbb\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xbb\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecbc[] = {
  "\xec\xbc\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xbc\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xbc\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecbd[] = {
  "\xec\xbd\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xbd\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecbe[] = {
  "\xec\xbe\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xbe\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ecbf[] = {
  "\xec\xbf\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xbf\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xbf\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed80[] = {
  "\xed\x80\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x80\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed81[] = {
  "\xed\x81\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x81\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed82[] = {
  "\xed\x82\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x82\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed83[] = {
  "\xed\x83\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x83\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xed\x83\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed84[] = {
  "\xed\x84\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x84\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed85[] = {
  "\xed\x85\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x85\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed86[] = {
  "\xed\x86\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x86\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xed\x86\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed87[] = {
  "\xed\x87\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x87\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed88[] = {
  "\xed\x88\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x88\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed89[] = {
  "\xed\x89\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x89\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed8a[] = {
  "\xed\x8a\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x8a\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xed\x8a\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed8b[] = {
  "\xed\x8b\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x8b\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed8c[] = {
  "\xed\x8c\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x8c\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed8d[] = {
  "\xed\x8d\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x8d\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xed\x8d\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed8e[] = {
  "\xed\x8e\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x8e\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed8f[] = {
  "\xed\x8f\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x8f\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed90[] = {
  "\xed\x90\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x90\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed91[] = {
  "\xed\x91\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x91\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xed\x91\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed92[] = {
  "\xed\x92\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x92\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed93[] = {
  "\xed\x93\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x93\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed94[] = {
  "\xed\x94\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x94\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xed\x94\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed95[] = {
  "\xed\x95\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x95\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed96[] = {
  "\xed\x96\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x96\xad"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed97[] = {
  "\xed\x97\x89", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x97\xa5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed98[] = {
  "\xed\x98\x81", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x98\x9d", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xed\x98\xb9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed99[] = {
  "\xed\x99\x95", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x99\xb1"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed9a[] = {
  "\xed\x9a\x8d", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x9a\xa9"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed9b[] = {
  "\xed\x9b\x85", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x9b\xa1", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xed\x9b\xbd"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed9c[] = {
  "\xed\x9c\x99", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x9c\xb5"
};

static const char *grn_nfkc50_compose_prefix_e186a8_table_ed9d[] = {
  "\xed\x9d\x91", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xed\x9d\xad"
};

static inline const char *
grn_nfkc50_compose_prefix_e186a8(const unsigned char *utf8)
{
  {
    switch (utf8[0]) {
    case 0xea :
      switch (utf8[1]) {
      case 0xb0 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eab0[utf8[2] - 0x80];
        }
        break;
      case 0xb1 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eab1[utf8[2] - 0x94];
        }
        break;
      case 0xb2 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eab2[utf8[2] - 0x8c];
        }
        break;
      case 0xb3 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_eab3[utf8[2] - 0x84];
        }
        break;
      case 0xb4 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eab4[utf8[2] - 0x98];
        }
        break;
      case 0xb5 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_eab5[utf8[2] - 0x90];
        }
        break;
      case 0xb6 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eab6[utf8[2] - 0x88];
        }
        break;
      case 0xb7 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eab7[utf8[2] - 0x80];
        }
        break;
      case 0xb8 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eab8[utf8[2] - 0x94];
        }
        break;
      case 0xb9 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eab9[utf8[2] - 0x8c];
        }
        break;
      case 0xba :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_eaba[utf8[2] - 0x84];
        }
        break;
      case 0xbb :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eabb[utf8[2] - 0x98];
        }
        break;
      case 0xbc :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_eabc[utf8[2] - 0x90];
        }
        break;
      case 0xbd :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eabd[utf8[2] - 0x88];
        }
        break;
      case 0xbe :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eabe[utf8[2] - 0x80];
        }
        break;
      case 0xbf :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eabf[utf8[2] - 0x94];
        }
        break;
      default :
        break;
      }
      break;
    case 0xeb :
      switch (utf8[1]) {
      case 0x80 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb80[utf8[2] - 0x8c];
        }
        break;
      case 0x81 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb81[utf8[2] - 0x84];
        }
        break;
      case 0x82 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb82[utf8[2] - 0x98];
        }
        break;
      case 0x83 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb83[utf8[2] - 0x90];
        }
        break;
      case 0x84 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb84[utf8[2] - 0x88];
        }
        break;
      case 0x85 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb85[utf8[2] - 0x80];
        }
        break;
      case 0x86 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb86[utf8[2] - 0x94];
        }
        break;
      case 0x87 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb87[utf8[2] - 0x8c];
        }
        break;
      case 0x88 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb88[utf8[2] - 0x84];
        }
        break;
      case 0x89 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb89[utf8[2] - 0x98];
        }
        break;
      case 0x8a :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb8a[utf8[2] - 0x90];
        }
        break;
      case 0x8b :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb8b[utf8[2] - 0x88];
        }
        break;
      case 0x8c :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb8c[utf8[2] - 0x80];
        }
        break;
      case 0x8d :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb8d[utf8[2] - 0x94];
        }
        break;
      case 0x8e :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb8e[utf8[2] - 0x8c];
        }
        break;
      case 0x8f :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb8f[utf8[2] - 0x84];
        }
        break;
      case 0x90 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb90[utf8[2] - 0x98];
        }
        break;
      case 0x91 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb91[utf8[2] - 0x90];
        }
        break;
      case 0x92 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb92[utf8[2] - 0x88];
        }
        break;
      case 0x93 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb93[utf8[2] - 0x80];
        }
        break;
      case 0x94 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb94[utf8[2] - 0x94];
        }
        break;
      case 0x95 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb95[utf8[2] - 0x8c];
        }
        break;
      case 0x96 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb96[utf8[2] - 0x84];
        }
        break;
      case 0x97 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb97[utf8[2] - 0x98];
        }
        break;
      case 0x98 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb98[utf8[2] - 0x90];
        }
        break;
      case 0x99 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb99[utf8[2] - 0x88];
        }
        break;
      case 0x9a :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb9a[utf8[2] - 0x80];
        }
        break;
      case 0x9b :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb9b[utf8[2] - 0x94];
        }
        break;
      case 0x9c :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb9c[utf8[2] - 0x8c];
        }
        break;
      case 0x9d :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb9d[utf8[2] - 0x84];
        }
        break;
      case 0x9e :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb9e[utf8[2] - 0x98];
        }
        break;
      case 0x9f :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_eb9f[utf8[2] - 0x90];
        }
        break;
      case 0xa0 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eba0[utf8[2] - 0x88];
        }
        break;
      case 0xa1 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eba1[utf8[2] - 0x80];
        }
        break;
      case 0xa2 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eba2[utf8[2] - 0x94];
        }
        break;
      case 0xa3 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eba3[utf8[2] - 0x8c];
        }
        break;
      case 0xa4 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_eba4[utf8[2] - 0x84];
        }
        break;
      case 0xa5 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eba5[utf8[2] - 0x98];
        }
        break;
      case 0xa6 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_eba6[utf8[2] - 0x90];
        }
        break;
      case 0xa7 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eba7[utf8[2] - 0x88];
        }
        break;
      case 0xa8 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eba8[utf8[2] - 0x80];
        }
        break;
      case 0xa9 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eba9[utf8[2] - 0x94];
        }
        break;
      case 0xaa :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebaa[utf8[2] - 0x8c];
        }
        break;
      case 0xab :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebab[utf8[2] - 0x84];
        }
        break;
      case 0xac :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebac[utf8[2] - 0x98];
        }
        break;
      case 0xad :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebad[utf8[2] - 0x90];
        }
        break;
      case 0xae :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebae[utf8[2] - 0x88];
        }
        break;
      case 0xaf :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebaf[utf8[2] - 0x80];
        }
        break;
      case 0xb0 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebb0[utf8[2] - 0x94];
        }
        break;
      case 0xb1 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebb1[utf8[2] - 0x8c];
        }
        break;
      case 0xb2 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebb2[utf8[2] - 0x84];
        }
        break;
      case 0xb3 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebb3[utf8[2] - 0x98];
        }
        break;
      case 0xb4 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebb4[utf8[2] - 0x90];
        }
        break;
      case 0xb5 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebb5[utf8[2] - 0x88];
        }
        break;
      case 0xb6 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebb6[utf8[2] - 0x80];
        }
        break;
      case 0xb7 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebb7[utf8[2] - 0x94];
        }
        break;
      case 0xb8 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebb8[utf8[2] - 0x8c];
        }
        break;
      case 0xb9 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebb9[utf8[2] - 0x84];
        }
        break;
      case 0xba :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebba[utf8[2] - 0x98];
        }
        break;
      case 0xbb :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebbb[utf8[2] - 0x90];
        }
        break;
      case 0xbc :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebbc[utf8[2] - 0x88];
        }
        break;
      case 0xbd :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebbd[utf8[2] - 0x80];
        }
        break;
      case 0xbe :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebbe[utf8[2] - 0x94];
        }
        break;
      case 0xbf :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ebbf[utf8[2] - 0x8c];
        }
        break;
      default :
        break;
      }
      break;
    case 0xec :
      switch (utf8[1]) {
      case 0x80 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec80[utf8[2] - 0x84];
        }
        break;
      case 0x81 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec81[utf8[2] - 0x98];
        }
        break;
      case 0x82 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec82[utf8[2] - 0x90];
        }
        break;
      case 0x83 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec83[utf8[2] - 0x88];
        }
        break;
      case 0x84 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec84[utf8[2] - 0x80];
        }
        break;
      case 0x85 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec85[utf8[2] - 0x94];
        }
        break;
      case 0x86 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec86[utf8[2] - 0x8c];
        }
        break;
      case 0x87 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec87[utf8[2] - 0x84];
        }
        break;
      case 0x88 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec88[utf8[2] - 0x98];
        }
        break;
      case 0x89 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec89[utf8[2] - 0x90];
        }
        break;
      case 0x8a :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec8a[utf8[2] - 0x88];
        }
        break;
      case 0x8b :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec8b[utf8[2] - 0x80];
        }
        break;
      case 0x8c :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec8c[utf8[2] - 0x94];
        }
        break;
      case 0x8d :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec8d[utf8[2] - 0x8c];
        }
        break;
      case 0x8e :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec8e[utf8[2] - 0x84];
        }
        break;
      case 0x8f :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec8f[utf8[2] - 0x98];
        }
        break;
      case 0x90 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec90[utf8[2] - 0x90];
        }
        break;
      case 0x91 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec91[utf8[2] - 0x88];
        }
        break;
      case 0x92 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec92[utf8[2] - 0x80];
        }
        break;
      case 0x93 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec93[utf8[2] - 0x94];
        }
        break;
      case 0x94 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec94[utf8[2] - 0x8c];
        }
        break;
      case 0x95 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec95[utf8[2] - 0x84];
        }
        break;
      case 0x96 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec96[utf8[2] - 0x98];
        }
        break;
      case 0x97 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec97[utf8[2] - 0x90];
        }
        break;
      case 0x98 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec98[utf8[2] - 0x88];
        }
        break;
      case 0x99 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec99[utf8[2] - 0x80];
        }
        break;
      case 0x9a :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec9a[utf8[2] - 0x94];
        }
        break;
      case 0x9b :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec9b[utf8[2] - 0x8c];
        }
        break;
      case 0x9c :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec9c[utf8[2] - 0x84];
        }
        break;
      case 0x9d :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec9d[utf8[2] - 0x98];
        }
        break;
      case 0x9e :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec9e[utf8[2] - 0x90];
        }
        break;
      case 0x9f :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ec9f[utf8[2] - 0x88];
        }
        break;
      case 0xa0 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eca0[utf8[2] - 0x80];
        }
        break;
      case 0xa1 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eca1[utf8[2] - 0x94];
        }
        break;
      case 0xa2 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eca2[utf8[2] - 0x8c];
        }
        break;
      case 0xa3 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_eca3[utf8[2] - 0x84];
        }
        break;
      case 0xa4 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eca4[utf8[2] - 0x98];
        }
        break;
      case 0xa5 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_eca5[utf8[2] - 0x90];
        }
        break;
      case 0xa6 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_eca6[utf8[2] - 0x88];
        }
        break;
      case 0xa7 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eca7[utf8[2] - 0x80];
        }
        break;
      case 0xa8 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_eca8[utf8[2] - 0x94];
        }
        break;
      case 0xa9 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_eca9[utf8[2] - 0x8c];
        }
        break;
      case 0xaa :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecaa[utf8[2] - 0x84];
        }
        break;
      case 0xab :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecab[utf8[2] - 0x98];
        }
        break;
      case 0xac :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecac[utf8[2] - 0x90];
        }
        break;
      case 0xad :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecad[utf8[2] - 0x88];
        }
        break;
      case 0xae :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecae[utf8[2] - 0x80];
        }
        break;
      case 0xaf :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecaf[utf8[2] - 0x94];
        }
        break;
      case 0xb0 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecb0[utf8[2] - 0x8c];
        }
        break;
      case 0xb1 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecb1[utf8[2] - 0x84];
        }
        break;
      case 0xb2 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecb2[utf8[2] - 0x98];
        }
        break;
      case 0xb3 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecb3[utf8[2] - 0x90];
        }
        break;
      case 0xb4 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecb4[utf8[2] - 0x88];
        }
        break;
      case 0xb5 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecb5[utf8[2] - 0x80];
        }
        break;
      case 0xb6 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecb6[utf8[2] - 0x94];
        }
        break;
      case 0xb7 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecb7[utf8[2] - 0x8c];
        }
        break;
      case 0xb8 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecb8[utf8[2] - 0x84];
        }
        break;
      case 0xb9 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecb9[utf8[2] - 0x98];
        }
        break;
      case 0xba :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecba[utf8[2] - 0x90];
        }
        break;
      case 0xbb :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecbb[utf8[2] - 0x88];
        }
        break;
      case 0xbc :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecbc[utf8[2] - 0x80];
        }
        break;
      case 0xbd :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecbd[utf8[2] - 0x94];
        }
        break;
      case 0xbe :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecbe[utf8[2] - 0x8c];
        }
        break;
      case 0xbf :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ecbf[utf8[2] - 0x84];
        }
        break;
      default :
        break;
      }
      break;
    case 0xed :
      switch (utf8[1]) {
      case 0x80 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed80[utf8[2] - 0x98];
        }
        break;
      case 0x81 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed81[utf8[2] - 0x90];
        }
        break;
      case 0x82 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed82[utf8[2] - 0x88];
        }
        break;
      case 0x83 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed83[utf8[2] - 0x80];
        }
        break;
      case 0x84 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed84[utf8[2] - 0x94];
        }
        break;
      case 0x85 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed85[utf8[2] - 0x8c];
        }
        break;
      case 0x86 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed86[utf8[2] - 0x84];
        }
        break;
      case 0x87 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed87[utf8[2] - 0x98];
        }
        break;
      case 0x88 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed88[utf8[2] - 0x90];
        }
        break;
      case 0x89 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed89[utf8[2] - 0x88];
        }
        break;
      case 0x8a :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed8a[utf8[2] - 0x80];
        }
        break;
      case 0x8b :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed8b[utf8[2] - 0x94];
        }
        break;
      case 0x8c :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed8c[utf8[2] - 0x8c];
        }
        break;
      case 0x8d :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed8d[utf8[2] - 0x84];
        }
        break;
      case 0x8e :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed8e[utf8[2] - 0x98];
        }
        break;
      case 0x8f :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed8f[utf8[2] - 0x90];
        }
        break;
      case 0x90 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed90[utf8[2] - 0x88];
        }
        break;
      case 0x91 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed91[utf8[2] - 0x80];
        }
        break;
      case 0x92 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed92[utf8[2] - 0x94];
        }
        break;
      case 0x93 :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed93[utf8[2] - 0x8c];
        }
        break;
      case 0x94 :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed94[utf8[2] - 0x84];
        }
        break;
      case 0x95 :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed95[utf8[2] - 0x98];
        }
        break;
      case 0x96 :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed96[utf8[2] - 0x90];
        }
        break;
      case 0x97 :
        if (utf8[2] >= 0x88 &&
            utf8[2] <= 0xa4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed97[utf8[2] - 0x88];
        }
        break;
      case 0x98 :
        if (utf8[2] >= 0x80 &&
            utf8[2] <= 0xb8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed98[utf8[2] - 0x80];
        }
        break;
      case 0x99 :
        if (utf8[2] >= 0x94 &&
            utf8[2] <= 0xb0) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed99[utf8[2] - 0x94];
        }
        break;
      case 0x9a :
        if (utf8[2] >= 0x8c &&
            utf8[2] <= 0xa8) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed9a[utf8[2] - 0x8c];
        }
        break;
      case 0x9b :
        if (utf8[2] >= 0x84 &&
            utf8[2] <= 0xbc) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed9b[utf8[2] - 0x84];
        }
        break;
      case 0x9c :
        if (utf8[2] >= 0x98 &&
            utf8[2] <= 0xb4) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed9c[utf8[2] - 0x98];
        }
        break;
      case 0x9d :
        if (utf8[2] >= 0x90 &&
            utf8[2] <= 0xac) {
          return grn_nfkc50_compose_prefix_e186a8_table_ed9d[utf8[2] - 0x90];
        }
        break;
      case 0x9e :
        if (utf8[2] == 0x88) {
          return "\xed\x9e\x89";
        }
        break;
      default :
        break;
      }
      break;
    default :
      break;
    }
  }

  return NULL;
}

static const char *grn_nfkc50_compose_prefix_e186a9_table_eab0[] = {
  "\xea\xb0\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb0\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xea\xb0\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eab1[] = {
  "\xea\xb1\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb1\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eab2[] = {
  "\xea\xb2\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb2\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eab3[] = {
  "\xea\xb3\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb3\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xea\xb3\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eab4[] = {
  "\xea\xb4\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb4\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eab5[] = {
  "\xea\xb5\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb5\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eab6[] = {
  "\xea\xb6\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb6\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eab7[] = {
  "\xea\xb7\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb7\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xea\xb7\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eab8[] = {
  "\xea\xb8\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb8\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eab9[] = {
  "\xea\xb9\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xb9\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eaba[] = {
  "\xea\xba\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xba\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xea\xba\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eabb[] = {
  "\xea\xbb\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xbb\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eabc[] = {
  "\xea\xbc\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xbc\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eabd[] = {
  "\xea\xbd\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xbd\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eabe[] = {
  "\xea\xbe\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xbe\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xea\xbe\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eabf[] = {
  "\xea\xbf\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xea\xbf\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb80[] = {
  "\xeb\x80\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x80\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb81[] = {
  "\xeb\x81\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x81\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x81\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb82[] = {
  "\xeb\x82\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x82\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb83[] = {
  "\xeb\x83\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x83\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb84[] = {
  "\xeb\x84\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x84\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb85[] = {
  "\xeb\x85\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x85\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x85\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb86[] = {
  "\xeb\x86\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x86\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb87[] = {
  "\xeb\x87\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x87\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb88[] = {
  "\xeb\x88\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x88\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x88\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb89[] = {
  "\xeb\x89\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x89\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb8a[] = {
  "\xeb\x8a\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8a\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb8b[] = {
  "\xeb\x8b\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8b\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb8c[] = {
  "\xeb\x8c\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8c\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x8c\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb8d[] = {
  "\xeb\x8d\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8d\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb8e[] = {
  "\xeb\x8e\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8e\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb8f[] = {
  "\xeb\x8f\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x8f\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x8f\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb90[] = {
  "\xeb\x90\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x90\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb91[] = {
  "\xeb\x91\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x91\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb92[] = {
  "\xeb\x92\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x92\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb93[] = {
  "\xeb\x93\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x93\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x93\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb94[] = {
  "\xeb\x94\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x94\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb95[] = {
  "\xeb\x95\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x95\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb96[] = {
  "\xeb\x96\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x96\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x96\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb97[] = {
  "\xeb\x97\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x97\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb98[] = {
  "\xeb\x98\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x98\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb99[] = {
  "\xeb\x99\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x99\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb9a[] = {
  "\xeb\x9a\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9a\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x9a\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb9b[] = {
  "\xeb\x9b\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9b\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb9c[] = {
  "\xeb\x9c\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9c\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb9d[] = {
  "\xeb\x9d\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9d\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\x9d\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb9e[] = {
  "\xeb\x9e\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9e\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eb9f[] = {
  "\xeb\x9f\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\x9f\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eba0[] = {
  "\xeb\xa0\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa0\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eba1[] = {
  "\xeb\xa1\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa1\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xa1\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eba2[] = {
  "\xeb\xa2\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa2\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eba3[] = {
  "\xeb\xa3\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa3\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eba4[] = {
  "\xeb\xa4\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa4\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xa4\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eba5[] = {
  "\xeb\xa5\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa5\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eba6[] = {
  "\xeb\xa6\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa6\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eba7[] = {
  "\xeb\xa7\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa7\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eba8[] = {
  "\xeb\xa8\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa8\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xa8\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eba9[] = {
  "\xeb\xa9\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xa9\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebaa[] = {
  "\xeb\xaa\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xaa\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebab[] = {
  "\xeb\xab\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xab\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xab\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebac[] = {
  "\xeb\xac\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xac\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebad[] = {
  "\xeb\xad\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xad\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebae[] = {
  "\xeb\xae\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xae\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebaf[] = {
  "\xeb\xaf\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xaf\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xaf\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebb0[] = {
  "\xeb\xb0\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb0\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebb1[] = {
  "\xeb\xb1\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb1\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebb2[] = {
  "\xeb\xb2\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb2\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xb2\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebb3[] = {
  "\xeb\xb3\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb3\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebb4[] = {
  "\xeb\xb4\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb4\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebb5[] = {
  "\xeb\xb5\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb5\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebb6[] = {
  "\xeb\xb6\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb6\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xb6\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebb7[] = {
  "\xeb\xb7\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb7\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebb8[] = {
  "\xeb\xb8\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb8\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebb9[] = {
  "\xeb\xb9\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xb9\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xb9\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebba[] = {
  "\xeb\xba\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xba\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebbb[] = {
  "\xeb\xbb\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xbb\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebbc[] = {
  "\xeb\xbc\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xbc\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebbd[] = {
  "\xeb\xbd\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xbd\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xeb\xbd\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebbe[] = {
  "\xeb\xbe\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xbe\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ebbf[] = {
  "\xeb\xbf\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xeb\xbf\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec80[] = {
  "\xec\x80\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x80\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x80\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec81[] = {
  "\xec\x81\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x81\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec82[] = {
  "\xec\x82\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x82\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec83[] = {
  "\xec\x83\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x83\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec84[] = {
  "\xec\x84\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x84\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x84\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec85[] = {
  "\xec\x85\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x85\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec86[] = {
  "\xec\x86\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x86\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec87[] = {
  "\xec\x87\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x87\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x87\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec88[] = {
  "\xec\x88\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x88\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec89[] = {
  "\xec\x89\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x89\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec8a[] = {
  "\xec\x8a\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8a\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec8b[] = {
  "\xec\x8b\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8b\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x8b\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec8c[] = {
  "\xec\x8c\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8c\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec8d[] = {
  "\xec\x8d\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8d\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec8e[] = {
  "\xec\x8e\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8e\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x8e\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec8f[] = {
  "\xec\x8f\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x8f\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec90[] = {
  "\xec\x90\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x90\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec91[] = {
  "\xec\x91\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x91\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec92[] = {
  "\xec\x92\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x92\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x92\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec93[] = {
  "\xec\x93\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x93\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec94[] = {
  "\xec\x94\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x94\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec95[] = {
  "\xec\x95\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x95\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x95\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec96[] = {
  "\xec\x96\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x96\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec97[] = {
  "\xec\x97\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x97\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec98[] = {
  "\xec\x98\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x98\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec99[] = {
  "\xec\x99\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x99\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x99\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec9a[] = {
  "\xec\x9a\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9a\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec9b[] = {
  "\xec\x9b\x8e", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9b\xaa"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec9c[] = {
  "\xec\x9c\x86", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9c\xa2", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\x9c\xbe"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec9d[] = {
  "\xec\x9d\x9a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9d\xb6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec9e[] = {
  "\xec\x9e\x92", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9e\xae"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_ec9f[] = {
  "\xec\x9f\x8a", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\x9f\xa6"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eca0[] = {
  "\xec\xa0\x82", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa0\x9e", NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  "\xec\xa0\xba"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eca1[] = {
  "\xec\xa1\x96", NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
  NULL, NULL, NULL, NULL, "\xec\xa1\xb2"
};

static const char *grn_nfkc50_compose_prefix_e186a9_table_eca2[] = {
--> --------------------

--> maximum size reached

--> --------------------

Messung V0.5 in Prozent
C=100 H=100 G=100

¤ Dauer der Verarbeitung: 2.495 Sekunden  (vorverarbeitet am  2026-10-08) ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

PVS Prover

Isabelle Prover

NIST Cobol Testsuite

Cephes Mathematical Library

Vienna Development Method

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.