/*******************************************************************************
;*******************************************************************************
;**                                                                           **
;**                  COPYRIGHT 2001-2008 TEGIC COMMUNICATIONS                 **
;**                                                                           **
;**                TEGIC COMMUNICATIONS PROPRIETARY INFORMATION               **
;**                                                                           **
;**     This software is supplied under the terms of a license agreement      **
;**     or non-disclosure agreement with Tegic Communications and may not     **
;**     be copied or disclosed except in accordance with the terms of that    **
;**     agreement.                                                            **
;**                                                                           **
;*******************************************************************************
;**                                                                           **
;**     FileName: et9stk.c                                                    **
;**                                                                           **
;**  Description: ET9 Alphabetic case lookup                                  **
;**                                                                           **
;*******************************************************************************
;******************************************************************************/

#include "et9api.h"

/*
 *
 *   interpret bytes in the bXXXXSymToKey array as follows:
 *     -nib2-  -nib1-
 *      0000    ZZZZ  : character with no case variant on key ZZZZ
 *      0XXX    ZZZZ  : lowercase character on key ZZZZ
 *      1000    0000  : unknown entry
 *      1000    YYYY  : punctuation on key YYYY (key range 1..14)
 *      1000    1111  : whitespace (no key assignment)
 *      1XXX    ZZZZ  : uppercase character on key ZZZZ
 *      1111    ZZZZ  : numeric on key ZZZZ (key range 0..15)
 *                      XXX is index into the array of shifts (range 1..6)
 *
 */


/* -------- section Latin1 -------- */

#ifdef _WIN32
#pragma message ("*** Collating sequence: Latin1")
#endif

static const ET9U8 bLatin1SymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
/* 10 */ 0x93, 0x8f, 0x93, 0x94, 0x95, 0x96, 0x97, 0x97, 0x97, 0x98, 0x99, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
/* 20 */ 0x8f, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 30 */ 0xfa, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 40 */ 0x81, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6,
/* 50 */ 0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 60 */ 0x81, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x26, 0x26, 0x26,
/* 70 */ 0x27, 0x27, 0x27, 0x27, 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x29, 0x81, 0x81, 0x81, 0x81, 0x8f,
/* 80 */ 0x81, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
/* 90 */ 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f, 0x8f,
/* a0 */ 0x8f, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* b0 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* c0 */ 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4,
/* d0 */ 0xa3, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0x81, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0x07,
/* e0 */ 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24, 0x24,
/* f0 */ 0x23, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x81, 0x26, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29, 0x39 };

static const ET9S16 wLatin1ShiftIndex[] = {
        0x0001, 0x0000, 0x0020, -0x0079, 0x0000, 0x0000, 0x0000, 0x0000 };

static const ET9U16 bLatin1Offset = 0x0;
static const ET9U8 bLatin1Range = 0xff;

/* -------- section LatinA -------- */

#ifdef ET9COLLATING_SEQUENCE_LATINA

#ifdef _WIN32
#pragma message ("*** Collating sequence: LatinA")
#endif

static const ET9U8 bLatinASymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x93, 0x13,
/* 10 */ 0x93, 0x13, 0x93, 0x13, 0x93, 0x13, 0x93, 0x13, 0x93, 0x13, 0x93, 0x13, 0x94, 0x14, 0x94, 0x14,
/* 20 */ 0x94, 0x14, 0x94, 0x14, 0x94, 0x14, 0x94, 0x14, 0x94, 0x14, 0x94, 0x14, 0x94, 0x14, 0x94, 0x14,
/* 30 */ 0x94, 0x24, 0x94, 0x14, 0x95, 0x15, 0x95, 0x15, 0x05, 0x95, 0x15, 0x95, 0x15, 0x95, 0x15, 0x95,
/* 40 */ 0x15, 0x95, 0x15, 0x96, 0x16, 0x96, 0x16, 0x96, 0x16, 0x06, 0x96, 0x16, 0x96, 0x16, 0x96, 0x16,
/* 50 */ 0x96, 0x16, 0x96, 0x16, 0x97, 0x17, 0x97, 0x17, 0x97, 0x17, 0x97, 0x17, 0x97, 0x17, 0x97, 0x17,
/* 60 */ 0x97, 0x17, 0x98, 0x18, 0x98, 0x18, 0x98, 0x18, 0x98, 0x18, 0x98, 0x18, 0x98, 0x18, 0x98, 0x18,
/* 70 */ 0x98, 0x18, 0x98, 0x18, 0x99, 0x19, 0x99, 0x19, 0xa9, 0x99, 0x19, 0x99, 0x19, 0x99, 0x19, 0x07 };

static const ET9S16 wLatinAShiftIndex[] = {
        0x0000, 0x0001, 0x00E8, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 };

static const ET9U16 bLatinAOffset = 0x100;

static const ET9U8 bLatinARange = 0x7f;

#endif



/* -------- section LatinB -------- */

#ifdef ET9COLLATING_SEQUENCE_LATINB

#ifdef _WIN32
#pragma message ("*** Collating sequence: LatinB")
#endif

static const ET9U8 bLatinBSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 80 */ 0x80, 0x92, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xa0, 0x80, 0x80, 0x80, 0x80, 0xb0,
/* 90 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* a0 */ 0xc0, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xc0,
/* b0 */ 0x40, 0x80, 0x80, 0xc0, 0x40, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* c0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* d0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* e0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* f0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9S16 wLatinBShiftIndex[] = {
        0x0000, 0x00d2, 0x00cd, 0x00ca, 0x0001, 0x0000, 0x0000, 0x0000 };

static const ET9U16 bLatinBOffset = 0x180;

static const ET9U8 bLatinBRange = 0x7f;

#endif

/* -------- section LatinIPA -------- */

#ifdef ET9COLLATING_SEQUENCE_LATINIPA

#ifdef _WIN32
#pragma message ("*** Collating sequence: LatinIPA")
#endif

static const ET9U8 bLatinIPASymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 10 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 20 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 30 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x12, 0x80, 0x80, 0x80, 0x23, 0x80, 0x33, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9S16 wLatinIPAShiftIndex[] = {
        0x0000, 0x00d2, 0x00cd, 0x00ca, 0x0000, 0x0000, 0x0000, 0x0000 };

static const ET9U16 bLatinIPAOffset = 0x200;

static const ET9U8 bLatinIPARange = 0x7f;
#endif

/* -------- section GeneralPunctuation -------- */

#ifdef ET9COLLATING_SEQUENCE_GENERAL_PUNCTUATION

#ifdef _WIN32
#pragma message ("*** Collating sequence: GeneralPunctuation")
#endif

static const ET9U8 bGeneralPunctuationSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x81,
/* 10 */ 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x80, 0x81, 0x81, 0x81, 0x80,
/* 20 */ 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 30 */ 0x81, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bGeneralPunctuationOffset = 0x2000;
static const ET9U8  bGeneralPunctuationRange  = 0x7f;

#endif



/* -------- section Diacritics -------- */

#ifdef ET9COLLATING_SEQUENCE_DIACRITICS

#ifdef _WIN32
#pragma message ("*** Collating sequence: Diacritics")
#endif

static const ET9U8 bDiacriticsSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x03, 0x02, 0x01, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x04, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
/* 10 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
/* 20 */ 0x01, 0x01, 0x01, 0x06, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
/* 30 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
/* 40 */ 0x02, 0x05, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80 };

static const ET9U16 bDiacriticsOffset = 0x300;
static const ET9U8  bDiacriticsRange  = 0x7f;

#endif


/* -------- section CurrencySymbols -------- */

#ifdef ET9COLLATING_SEQUENCE_CURRENCY_SYMBOLS

#ifdef _WIN32
#pragma message ("*** Collating sequence: CurrencySymbols")
#endif

static const ET9U8 bCurrencySymbolsSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 10 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 20 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 30 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bCurrencySymbolsOffset = 0x2080;
static const ET9U8  bCurrencySymbolsRange  = 0x7f;
#endif

/* -------- section MathSymbols -------- */

#ifdef ET9COLLATING_SEQUENCE_MATH_SYMBOLS

#ifdef _WIN32
#pragma message ("*** Collating sequence: MathSymbols")
#endif

static const ET9U8 bMathSymbolsSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 10 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 20 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 30 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 40 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 50 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 60 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81,
/* 70 */ 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81 };

static const ET9U16 bMathSymbolsOffset = 0x2200;
static const ET9U8  bMathSymbolsRange  = 0x7f;
#endif


/* -------- section Greek -------- */

#ifdef ET9COLLATING_SEQUENCE_GREEK

#ifdef _WIN32
#pragma message ("*** Collating sequence: Greek")
#endif

static const ET9U8 bGreekSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x92, 0x80, 0xa3, 0xa4, 0xa4, 0x80, 0xb6, 0x80, 0xc9, 0xc6,
/* 10 */ 0x54, 0xe2, 0xe2, 0xe4, 0xe3, 0xe3, 0xe9, 0xe4, 0xe8, 0xe4, 0xe5, 0xe5, 0xe6, 0xe6, 0xe9, 0xe6,
/* 20 */ 0xe7, 0xe7, 0x80, 0xe7, 0xe8, 0xe9, 0xe3, 0xe9, 0xe7, 0xe6, 0xe4, 0xe9, 0x12, 0x23, 0x24, 0x24,
/* 30 */ 0x19, 0x22, 0x22, 0x24, 0x23, 0x23, 0x29, 0x24, 0x28, 0x24, 0x25, 0x25, 0x26, 0x26, 0x29, 0x26,
/* 40 */ 0x27, 0x27, 0x37, 0x27, 0x28, 0x29, 0x23, 0x29, 0x27, 0x26, 0x24, 0x29, 0x46, 0x59, 0x56, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9S16 wGreekShiftIndex[] = {
        0x0000, 0x0026, 0x0025, 0x0040, 0x003f, -0x001A, 0x0020, 0x03b0,
        0x0000, 0x0005, 0x0020, 0x001f, 0x0040, 0x003f, 0x0000, 0x0000 };

static const ET9U16 bGreekOffset = 0x380;
static const ET9U8  bGreekRange  = 0x7f;
#endif



/* -------- section Cyrillic -------- */

#ifdef ET9COLLATING_SEQUENCE_CYRILLIC

#ifdef _WIN32
#pragma message ("*** Collating sequence: Cyrillic")
#endif

static const ET9U8 bCyrillicSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x80, 0x93, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94, 0x95, 0x97, 0x97, 0x80, 0x97, 0x98,
/* 10 */ 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6,
/* 20 */ 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9,
/* 30 */ 0x22, 0x22, 0x22, 0x22, 0x23, 0x23, 0x23, 0x23, 0x24, 0x24, 0x24, 0x24, 0x25, 0x25, 0x25, 0x26,
/* 40 */ 0x26, 0x26, 0x27, 0x27, 0x27, 0x27, 0x28, 0x28, 0x28, 0x28, 0x28, 0x29, 0x29, 0x29, 0x29, 0x29,
/* 50 */ 0x80, 0x13, 0x13, 0x13, 0x13, 0x13, 0x14, 0x14, 0x14, 0x14, 0x15, 0x17, 0x17, 0x80, 0x17, 0x18,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 80 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 90 */ 0xb2, 0x32, 0xb2, 0x32, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb4, 0x34, 0x80, 0x80, 0x80, 0x80,
/* a0 */ 0x80, 0x80, 0xb5, 0x35, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb7, 0x37,
/* b0 */ 0xb7, 0x37, 0xb7, 0x37, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb8, 0x38, 0x80, 0x80, 0x80, 0x80,
/* c0 */ 0x80, 0x80, 0x80, 0xb0, 0x30, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* d0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb2, 0x32, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* e0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xb5, 0x35, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* f0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9S16 wCyrillicShiftIndex[] = {
        0x0000, 0x0050, 0x0020, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000 };

static const ET9U16 bCyrillicOffset = 0x400;
static const ET9U8 bCyrillicRange = 0xff;

/* -------- section CyrillicSymbols -------- */

#ifdef ET9COLLATING_SEQUENCE_CYRILLIC_SYMBOLS

#ifdef _WIN32
#pragma message ("*** Collating sequence: CyrillicSymbols")
#endif

static const ET9U8 bCyrillicSymbolsSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 10 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 20 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 30 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bCyrillicSymbolsOffset = 0x2100;
static const ET9U8  bCyrillicSymbolsRange  = 0x7f;

#endif
#endif


/* -------- section Devanagari -------- */

#ifdef ET9COLLATING_SEQUENCE_DEVANAGARI

#ifdef _WIN32
#pragma message ("*** Collating sequence: Devanagari")
#endif

static const ET9U8 bDevanagariSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x06, 0x06, 0x04, 0x80, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x07, 0x05, 0x03, 0x03, 0x03,
/* 10 */ 0x02, 0x06, 0x06, 0x06, 0x02, 0x05, 0x05, 0x04, 0x04, 0x06, 0x02, 0x02, 0x05, 0x05, 0x06, 0x08,
/* 20 */ 0x08, 0x03, 0x03, 0x06, 0x08, 0x08, 0x03, 0x03, 0x06, 0x06, 0x07, 0x07, 0x02, 0x02, 0x06, 0x09,
/* 30 */ 0x07, 0x07, 0x05, 0x05, 0x05, 0x08, 0x07, 0x07, 0x07, 0x04, 0x80, 0x80, 0x0a, 0x01, 0x02, 0x04,
/* 40 */ 0x04, 0x08, 0x08, 0x07, 0x07, 0x03, 0x03, 0x03, 0x02, 0x06, 0x06, 0x06, 0x02, 0x0a, 0x80, 0x80,
/* 50 */ 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x80, 0x80, 0x80, 0x05, 0x05, 0x04, 0x05, 0x03, 0x03, 0x07, 0x09,
/* 60 */ 0x07, 0x05, 0x05, 0x05, 0x81, 0x81, 0xfa, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
/* 70 */ 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bDevanagariOffset = 0x900;
static const ET9U8  bDevanagariRange  = 0x7f;

#endif



/* -------- section Bengali -------- */

#ifdef ET9COLLATING_SEQUENCE_BENGALI

#ifdef _WIN32
#pragma message ("*** Collating sequence: Bengali")
#endif

static const ET9U8 bBengaliSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x06, 0x06, 0x04, 0x80, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x07, 0x05, 0x80, 0x80, 0x03,
/* 10 */ 0x06, 0x80, 0x80, 0x06, 0x06, 0x05, 0x05, 0x04, 0x04, 0x06, 0x02, 0x02, 0x05, 0x05, 0x06, 0x08,
/* 20 */ 0x08, 0x03, 0x03, 0x06, 0x08, 0x08, 0x03, 0x03, 0x06, 0x80, 0x07, 0x07, 0x02, 0x02, 0x06, 0x05,
/* 30 */ 0x07, 0x80, 0x05, 0x80, 0x80, 0x80, 0x07, 0x07, 0x07, 0x04, 0x80, 0x80, 0x0a, 0x81, 0x02, 0x04,
/* 40 */ 0x04, 0x08, 0x08, 0x07, 0x07, 0x80, 0x80, 0x03, 0x06, 0x80, 0x80, 0x06, 0x06, 0x0a, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x06, 0x80, 0x80, 0x80, 0x80, 0x07, 0x07, 0x80, 0x09,
/* 60 */ 0x07, 0x05, 0x05, 0x05, 0x81, 0x81, 0xfa, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
/* 70 */ 0x07, 0x07, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x09, 0x08, 0x05, 0x80, 0x80 };

static const ET9U16 bBengaliOffset = 0x980;
static const ET9U8  bBengaliRange  = 0x7f;

#endif

/* -------- section Oriya -------- */

#ifdef ET9COLLATING_SEQUENCE_ORIYA

#ifdef _WIN32
#pragma message ("*** Collating sequence: Oriya")
#endif

static const ET9U8 bOriyaSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00,
/* 10 */ 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 20 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 30 */ 0x00, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00,
/* 40 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x00,
/* 60 */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
/* 70 */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bOriyaOffset = 0xb00;
static const ET9U8  bOriyaRange  = 0x7f;

#endif

/* -------- section GurmukhiAlternate -------- */

#ifdef ET9COLLATING_SEQUENCE_GURMUKHI_ALTERNATE

#ifdef _WIN32
#pragma message ("*** Collating sequence: GurmukhiAlternate")
#endif

static const ET9U8 bGurmukhiAlternateSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x01, 0x01, 0x01, 0x80, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x80, 0x80, 0x80, 0x80, 0x03,
/* 10 */ 0x03, 0x80, 0x80, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06,
/* 20 */ 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x80, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09,
/* 30 */ 0x09, 0x80, 0x09, 0x09, 0x80, 0x09, 0x0a, 0x80, 0x0a, 0x0a, 0x80, 0x80, 0x01, 0x80, 0x02, 0x02,
/* 40 */ 0x02, 0x02, 0x02, 0x80, 0x80, 0x80, 0x80, 0x03, 0x03, 0x80, 0x80, 0x03, 0x03, 0x01, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x04, 0x04, 0x05, 0x09, 0x80, 0x08, 0x80,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xfa, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
/* 70 */ 0x01, 0x01, 0x01, 0x01, 0x01, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };


static const ET9U16 bGurmukhiAlternateOffset = 0xa00;
static const ET9U8  bGurmukhiAlternateRange  = 0x7f;

#endif



/* -------- section GujaratiAlternate -------- */

#ifdef ET9COLLATING_SEQUENCE_GUJARATI_ALTERNATE

#ifdef _WIN32
#pragma message ("*** Collating sequence: GujaratiAlternate")
#endif

static const ET9U8 bGujaratiAlternateSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x01, 0x01, 0x01, 0x80, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x80, 0x03,
/* 10 */ 0x03, 0x03, 0x80, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06,
/* 20 */ 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x80, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09,
/* 30 */ 0x09, 0x80, 0x09, 0x0a, 0x80, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x80, 0x80, 0x01, 0x01, 0x02, 0x02,
/* 40 */ 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x80, 0x03, 0x03, 0x03, 0x80, 0x03, 0x03, 0x01, 0x80, 0x80,
/* 50 */ 0x01, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x02, 0x02, 0x02, 0x02, 0x80, 0x80, 0xfa, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
/* 70 */ 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };


static const ET9U16 bGujaratiAlternateOffset = 0xa80;
static const ET9U8  bGujaratiAlternateRange  = 0x7f;

#endif



/* -------- section Tamil -------- */

#ifdef ET9COLLATING_SEQUENCE_TAMIL

#ifdef _WIN32
#pragma message ("*** Collating sequence: Tamil")
#endif

static const ET9U8 bTamilSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x80, 0x0a, 0x0a, 0x80, 0x02, 0x02, 0x04, 0x04, 0x08, 0x08, 0x80, 0x80, 0x80, 0x03, 0x03,
/* 10 */ 0x02, 0x80, 0x06, 0x06, 0x02, 0x05, 0x80, 0x80, 0x80, 0x06, 0x02, 0x80, 0x05, 0x80, 0x06, 0x08,
/* 20 */ 0x80, 0x80, 0x80, 0x06, 0x08, 0x80, 0x80, 0x80, 0x06, 0x06, 0x07, 0x80, 0x80, 0x80, 0x06, 0x09,
/* 30 */ 0x07, 0x07, 0x05, 0x05, 0x05, 0x08, 0x07, 0x07, 0x07, 0x04, 0x80, 0x80, 0x80, 0x80, 0x02, 0x04,
/* 40 */ 0x04, 0x08, 0x08, 0x80, 0x80, 0x80, 0x03, 0x03, 0x02, 0x80, 0x06, 0x06, 0x02, 0x0a, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x02, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0xfa, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bTamilOffset = 0xb80;
static const ET9U8  bTamilRange  = 0x7f;

#endif



/* -------- section KannadaAlternate -------- */

#ifdef ET9COLLATING_SEQUENCE_KANNADA_ALTERNATE

#ifdef _WIN32
#pragma message ("*** Collating sequence: KannadaAlternate")
#endif

static const ET9U8 bKannadaAlternateSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x80, 0x01, 0x01, 0x80, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x80, 0x80, 0x03, 0x03,
/* 10 */ 0x03, 0x80, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x06,
/* 20 */ 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x07, 0x80, 0x08, 0x08, 0x08, 0x08, 0x08, 0x09,
/* 30 */ 0x09, 0x80, 0x09, 0x0a, 0x80, 0x09, 0x09, 0x0a, 0x0a, 0x0a, 0x80, 0x80, 0x01, 0x80, 0x02, 0x02,
/* 40 */ 0x02, 0x02, 0x02, 0x02, 0x80, 0x80, 0x03, 0x03, 0x03, 0x80, 0x03, 0x03, 0x03, 0x01, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x0a, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bKannadaAlternateOffset = 0xc80;
static const ET9U8  bKannadaAlternateRange  = 0x7f;

#endif



/* -------- section Thai -------- */

#ifdef ET9COLLATING_SEQUENCE_THAI

#ifdef _WIN32
#pragma message ("*** Collating sequence: Thai")
#endif

static const ET9U8 bThaiSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04,
/* 10 */ 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
/* 20 */ 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09, 0x0c,
/* 30 */ 0x0b, 0x0a, 0x0b, 0x0b, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x80, 0x80, 0x80, 0x80, 0x80, 0x0c,
/* 40 */ 0x0b, 0x0b, 0x0b, 0x0b, 0x0b, 0x80, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x80, 0x80, 0x80,
/* 50 */ 0xfa, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bThaiOffset = 0xe00;
static const ET9U8  bThaiRange  = 0x7f;

#endif



/* -------- section Hebrew -------- */

#ifdef ET9COLLATING_SEQUENCE_HEBREW

#ifdef _WIN32
#pragma message ("*** Collating sequence: Hebrew")
#endif

static const ET9U8 bHebrewSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 10 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 20 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 30 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 50 */ 0x03, 0x03, 0x03, 0x02, 0x02, 0x02, 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04,
/* 60 */ 0x04, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bHebrewOffset = 0x580;
static const ET9U8  bHebrewRange  = 0x7f;

#endif



/* -------- section Arabic -------- */

#ifdef ET9COLLATING_SEQUENCE_ARABIC

#ifdef _WIN32
#pragma message ("*** Collating sequence: Arabic")
#endif

static const ET9U8 bArabicSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x80, 0x80,
/* 10 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x81,
/* 20 */ 0x80, 0x07, 0x03, 0x03, 0x07, 0x03, 0x07, 0x03, 0x03, 0x08, 0x03, 0x03, 0x02, 0x02, 0x02, 0x06,
/* 30 */ 0x06, 0x06, 0x06, 0x05, 0x05, 0x05, 0x05, 0x04, 0x04, 0x04, 0x04, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x00, 0x09, 0x09, 0x09, 0x09, 0x08, 0x08, 0x08, 0x07, 0x07, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 50 */ 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0xfa, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x03, 0x80, 0x80, 0x03, 0x80, 0x03, 0x80,
/* 80 */ 0x80, 0x02, 0x80, 0x80, 0x80, 0x02, 0x02, 0x80, 0x06, 0x06, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 90 */ 0x80, 0x06, 0x80, 0x06, 0x80, 0x80, 0x06, 0x80, 0x06, 0x80, 0x05, 0x80, 0x80, 0x80, 0x80, 0x80,
/* a0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x09, 0x80, 0x09, 0x80, 0x80, 0x80, 0x09,
/* b0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x08, 0x80, 0x08, 0x80, 0x07, 0x80,
/* c0 */ 0x80, 0x07, 0x07, 0x03, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x07, 0x07, 0x80, 0x80,
/* d0 */ 0x07, 0x80, 0x07, 0x07, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* e0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* f0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bArabicOffset     = 0x600;
static const ET9U8  bArabicRange      = 0xff;

/* -------- section ArabicExtended -------- */

#ifdef _WIN32
#pragma message ("*** Collating sequence: ArabicExtended")
#endif

static const ET9U8 bArabicExtendedSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/
/* 00 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 10 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 20 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 30 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80 };

static const ET9U16 bArabicExtendedOffset     = 0xFE80;
static const ET9U8  bArabicExtendedRange      = 0x7F;

#endif



/* -------- section Georgian -------- */

#ifdef ET9COLLATING_SEQUENCE_GEORGIAN

#ifdef _WIN32
#pragma message ("*** Collating sequence: Georgian")
#endif

static const ET9U8 bGeorgianSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 10 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 20 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 30 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 50 */ 0x02, 0x02, 0x02, 0x02, 0x03, 0x03, 0x03, 0x03, 0x04, 0x04, 0x04, 0x04, 0x05, 0x05, 0x05, 0x05,
/* 60 */ 0x06, 0x06, 0x06, 0x06, 0x07, 0x07, 0x07, 0x07, 0x08, 0x08, 0x08, 0x08, 0x09, 0x09, 0x09, 0x09,
/* 70 */ 0x09, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x81, 0x80, 0x80, 0x80, 0x80 };


static const ET9U16 bGeorgianOffset = 0x1080;
static const ET9U8 bGeorgianRange = 0x7f;

#endif


/* -------- section Ethiopic1 -------- */

#ifdef ET9COLLATING_SEQUENCE_ETHIOPIC

#ifdef _WIN32
#pragma message ("*** Collating sequence: Ethiopic1")
#endif

static const ET9U8 bEthiopic1SymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 10 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 20 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 30 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 50 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 80 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 90 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* a0 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* b0 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* c0 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* d0 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* e0 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* f0 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };


static const ET9U16 bEthiopic1Offset = 0x1200;
static const ET9U8 bEthiopic1Range = 0xff;



/* -------- section Ethiopic2 -------- */


#ifdef _WIN32
#pragma message ("*** Collating sequence: Ethiopic2")
#endif

static const ET9U8 bEthiopic2SymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 10 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 20 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 30 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 50 */ 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x8f, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 80 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 90 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* a0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* b0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* c0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* d0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* e0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* f0 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };


static const ET9U16 bEthiopic2Offset = 0x1300;
static const ET9U8 bEthiopic2Range = 0xff;

#endif



/* -------- section LatinExtended -------- */

#ifdef ET9COLLATING_SEQUENCE_LATINEXTENDED

#ifdef _WIN32
#pragma message ("*** Collating sequence: LatinExtended")
#endif

static const ET9U8 bLatinExtendedSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 10 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 20 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 30 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 40 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x80, 0x80, 0x97, 0x17, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 80 */ 0x99, 0x19, 0x99, 0x19, 0x99, 0x19, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 90 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* a0 */ 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12,
/* b0 */ 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x92, 0x12, 0x93, 0x13, 0x93, 0x13, 0x93, 0x13, 0x93, 0x13,
/* c0 */ 0x93, 0x13, 0x93, 0x13, 0x93, 0x13, 0x93, 0x13, 0x94, 0x14, 0x94, 0x14, 0x96, 0x16, 0x96, 0x16,
/* d0 */ 0x96, 0x16, 0x96, 0x16, 0x96, 0x16, 0x96, 0x16, 0x96, 0x16, 0x96, 0x16, 0x96, 0x16, 0x96, 0x16,
/* e0 */ 0x96, 0x16, 0x96, 0x16, 0x98, 0x18, 0x98, 0x18, 0x98, 0x18, 0x98, 0x18, 0x98, 0x18, 0x98, 0x18,
/* f0 */ 0x98, 0x18, 0x99, 0x19, 0x99, 0x19, 0x99, 0x19, 0x99, 0x19, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };

static const ET9S16 wLatinExtendedShiftIndex[] = {
        0x0000, 0x0001, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000 };

static const ET9U16 bLatinExtendedOffset = 0x1e00;
static const ET9U8 bLatinExtendedRange = 0xff;
#endif



/* -------- section Telugu -------- */

#ifdef ET9COLLATING_SEQUENCE_TELUGU

#ifdef _WIN32
#pragma message ("*** Collating sequence: Telugu")
#endif

static const ET9U8 bTeluguSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
/* 10 */ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 20 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 30 */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
/* 40 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
/* 70 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };


static const ET9U16 bTeluguOffset = 0xC00;
static const ET9U8 bTeluguRange = 0x7f;

#endif



/* -------- section Khmer -------- */

#ifdef ET9COLLATING_SEQUENCE_KHMER

#ifdef _WIN32
#pragma message ("*** Collating sequence: Khmer")
#endif

static const ET9U8 bKhmerSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 20 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 40 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 50 */ 0x00, 0x00, 0x00, 0x00, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0x00, 0x00, 0x80, 0x80,
/* 60 */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };


static const ET9U16 bKhmerOffset = 0x1780;
static const ET9U8 bKhmerRange = 0x7f;

#endif



/* -------- section Malayalam -------- */

#ifdef ET9COLLATING_SEQUENCE_MALAYALAM

#ifdef _WIN32
#pragma message ("*** Collating sequence: Malayalam")
#endif

static const ET9U8 bMalayalamSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00,
/* 10 */ 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 20 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 30 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00, 0x00,
/* 40 */ 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80,
/* 50 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 60 */ 0x00, 0x00, 0x80, 0x80, 0x80, 0x80, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
/* 70 */ 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0x80, 0x80, 0x80, 0xf0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 };


static const ET9U16 bMalayalamOffset = 0xd00;
static const ET9U8 bMalayalamRange = 0x7f;

#endif



/* -------- section Sinhala -------- */

#ifdef ET9COLLATING_SEQUENCE_SINHALA

#ifdef _WIN32
#pragma message ("*** Collating sequence: Sinhala")
#endif

static const ET9U8 bSinhalaSymToKey[] = {
/*         00    01    02    03    04    05    06    07    08    09    0A    0B    0C    0D    0E    0F*/

/* 00 */ 0x80, 0x80, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 10 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 20 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 30 */ 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x80,
/* 40 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0x00, 0x80, 0x80, 0x80, 0x80, 0x00,
/* 50 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x00, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
/* 60 */ 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80,
/* 70 */ 0x80, 0x80, 0x00, 0x00, 0x81, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80, 0x80 };


static const ET9U16 bSinhalaOffset = 0xD80;
static const ET9U8 bSinhalaRange = 0x7f;

#endif



/* EOF */
