1413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber/*
2413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * Copyright (C) 2008 The Android Open Source Project
3413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber *
4413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * you may not use this file except in compliance with the License.
6413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * You may obtain a copy of the License at
7413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber *
8413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber *
10413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * Unless required by applicable law or agreed to in writing, software
11413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * See the License for the specific language governing permissions and
14413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber * limitations under the License.
15413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber */
16413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
17413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber#include "autodetect.h"
18413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
19112ab3e11b9992814363e0f9c629ef7fba86950bGlenn Kastenstruct CharRange {
20413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    uint16_t first;
21413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    uint16_t last;
22413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber};
23413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
24413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber#define ARRAY_SIZE(x)   (sizeof(x) / sizeof(*x))
25413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
26413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber// generated from http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP932.TXT
27413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huberstatic const CharRange kShiftJISRanges[] = {
28413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8140, 0x817E },
29413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8180, 0x81AC },
30413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x81B8, 0x81BF },
31413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x81C8, 0x81CE },
32413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x81DA, 0x81E8 },
33413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x81F0, 0x81F7 },
34413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x81FC, 0x81FC },
35413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x824F, 0x8258 },
36413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8260, 0x8279 },
37413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8281, 0x829A },
38413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x829F, 0x82F1 },
39413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8340, 0x837E },
40413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8380, 0x8396 },
41413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x839F, 0x83B6 },
42413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x83BF, 0x83D6 },
43413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8440, 0x8460 },
44413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8470, 0x847E },
45413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8480, 0x8491 },
46413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x849F, 0x84BE },
47413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8740, 0x875D },
48413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x875F, 0x8775 },
49413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x877E, 0x877E },
50413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8780, 0x879C },
51413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x889F, 0x88FC },
52413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8940, 0x897E },
53413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8980, 0x89FC },
54413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8A40, 0x8A7E },
55413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8A80, 0x8AFC },
56413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8B40, 0x8B7E },
57413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8B80, 0x8BFC },
58413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8C40, 0x8C7E },
59413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8C80, 0x8CFC },
60413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8D40, 0x8D7E },
61413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8D80, 0x8DFC },
62413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8E40, 0x8E7E },
63413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8E80, 0x8EFC },
64413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8F40, 0x8F7E },
65413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8F80, 0x8FFC },
66413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9040, 0x907E },
67413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9080, 0x90FC },
68413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9140, 0x917E },
69413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9180, 0x91FC },
70413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9240, 0x927E },
71413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9280, 0x92FC },
72413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9340, 0x937E },
73413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9380, 0x93FC },
74413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9440, 0x947E },
75413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9480, 0x94FC },
76413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9540, 0x957E },
77413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9580, 0x95FC },
78413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9640, 0x967E },
79413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9680, 0x96FC },
80413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9740, 0x977E },
81413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9780, 0x97FC },
82413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9840, 0x9872 },
83413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x989F, 0x98FC },
84413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9940, 0x997E },
85413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9980, 0x99FC },
86413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9A40, 0x9A7E },
87413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9A80, 0x9AFC },
88413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9B40, 0x9B7E },
89413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9B80, 0x9BFC },
90413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9C40, 0x9C7E },
91413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9C80, 0x9CFC },
92413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9D40, 0x9D7E },
93413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9D80, 0x9DFC },
94413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9E40, 0x9E7E },
95413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9E80, 0x9EFC },
96413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9F40, 0x9F7E },
97413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9F80, 0x9FFC },
98413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE040, 0xE07E },
99413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE080, 0xE0FC },
100413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE140, 0xE17E },
101413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE180, 0xE1FC },
102413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE240, 0xE27E },
103413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE280, 0xE2FC },
104413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE340, 0xE37E },
105413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE380, 0xE3FC },
106413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE440, 0xE47E },
107413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE480, 0xE4FC },
108413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE540, 0xE57E },
109413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE580, 0xE5FC },
110413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE640, 0xE67E },
111413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE680, 0xE6FC },
112413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE740, 0xE77E },
113413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE780, 0xE7FC },
114413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE840, 0xE87E },
115413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE880, 0xE8FC },
116413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE940, 0xE97E },
117413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE980, 0xE9FC },
118413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEA40, 0xEA7E },
119413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEA80, 0xEAA4 },
120413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xED40, 0xED7E },
121413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xED80, 0xEDFC },
122413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEE40, 0xEE7E },
123413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEE80, 0xEEEC },
124413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEEEF, 0xEEFC },
125413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFA40, 0xFA7E },
126413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFA80, 0xFAFC },
127413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFB40, 0xFB7E },
128413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFB80, 0xFBFC },
129413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFC40, 0xFC4B },
130413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber};
131413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
132413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber// generated from http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP936.TXT
133413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huberstatic const CharRange kGBKRanges[] = {
134413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8140, 0x817E },
135413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8180, 0x81FE },
136413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8240, 0x827E },
137413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8280, 0x82FE },
138413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8340, 0x837E },
139413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8380, 0x83FE },
140413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8440, 0x847E },
141413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8480, 0x84FE },
142413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8540, 0x857E },
143413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8580, 0x85FE },
144413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8640, 0x867E },
145413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8680, 0x86FE },
146413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8740, 0x877E },
147413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8780, 0x87FE },
148413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8840, 0x887E },
149413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8880, 0x88FE },
150413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8940, 0x897E },
151413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8980, 0x89FE },
152413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8A40, 0x8A7E },
153413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8A80, 0x8AFE },
154413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8B40, 0x8B7E },
155413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8B80, 0x8BFE },
156413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8C40, 0x8C7E },
157413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8C80, 0x8CFE },
158413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8D40, 0x8D7E },
159413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8D80, 0x8DFE },
160413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8E40, 0x8E7E },
161413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8E80, 0x8EFE },
162413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8F40, 0x8F7E },
163413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8F80, 0x8FFE },
164413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9040, 0x907E },
165413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9080, 0x90FE },
166413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9140, 0x917E },
167413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9180, 0x91FE },
168413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9240, 0x927E },
169413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9280, 0x92FE },
170413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9340, 0x937E },
171413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9380, 0x93FE },
172413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9440, 0x947E },
173413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9480, 0x94FE },
174413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9540, 0x957E },
175413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9580, 0x95FE },
176413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9640, 0x967E },
177413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9680, 0x96FE },
178413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9740, 0x977E },
179413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9780, 0x97FE },
180413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9840, 0x987E },
181413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9880, 0x98FE },
182413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9940, 0x997E },
183413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9980, 0x99FE },
184413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9A40, 0x9A7E },
185413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9A80, 0x9AFE },
186413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9B40, 0x9B7E },
187413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9B80, 0x9BFE },
188413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9C40, 0x9C7E },
189413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9C80, 0x9CFE },
190413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9D40, 0x9D7E },
191413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9D80, 0x9DFE },
192413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9E40, 0x9E7E },
193413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9E80, 0x9EFE },
194413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9F40, 0x9F7E },
195413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9F80, 0x9FFE },
196413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA040, 0xA07E },
197413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA080, 0xA0FE },
198413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA1A1, 0xA1FE },
199413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA2A1, 0xA2AA },
200413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA2B1, 0xA2E2 },
201413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA2E5, 0xA2EE },
202413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA2F1, 0xA2FC },
203413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA3A1, 0xA3FE },
204413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA4A1, 0xA4F3 },
205413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA5A1, 0xA5F6 },
206413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA6A1, 0xA6B8 },
207413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA6C1, 0xA6D8 },
208413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA6E0, 0xA6EB },
209413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA6EE, 0xA6F2 },
210413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA6F4, 0xA6F5 },
211413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA7A1, 0xA7C1 },
212413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA7D1, 0xA7F1 },
213413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA840, 0xA87E },
214413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA880, 0xA895 },
215413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA8A1, 0xA8BB },
216413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA8BD, 0xA8BE },
217413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA8C0, 0xA8C0 },
218413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA8C5, 0xA8E9 },
219413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA940, 0xA957 },
220413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA959, 0xA95A },
221413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA95C, 0xA95C },
222413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA960, 0xA97E },
223413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA980, 0xA988 },
224413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA996, 0xA996 },
225413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA9A4, 0xA9EF },
226413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAA40, 0xAA7E },
227413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAA80, 0xAAA0 },
228413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAB40, 0xAB7E },
229413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAB80, 0xABA0 },
230413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAC40, 0xAC7E },
231413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAC80, 0xACA0 },
232413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAD40, 0xAD7E },
233413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAD80, 0xADA0 },
234413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAE40, 0xAE7E },
235413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAE80, 0xAEA0 },
236413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAF40, 0xAF7E },
237413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAF80, 0xAFA0 },
238413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB040, 0xB07E },
239413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB080, 0xB0FE },
240413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB140, 0xB17E },
241413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB180, 0xB1FE },
242413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB240, 0xB27E },
243413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB280, 0xB2FE },
244413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB340, 0xB37E },
245413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB380, 0xB3FE },
246413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB440, 0xB47E },
247413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB480, 0xB4FE },
248413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB540, 0xB57E },
249413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB580, 0xB5FE },
250413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB640, 0xB67E },
251413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB680, 0xB6FE },
252413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB740, 0xB77E },
253413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB780, 0xB7FE },
254413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB840, 0xB87E },
255413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB880, 0xB8FE },
256413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB940, 0xB97E },
257413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB980, 0xB9FE },
258413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBA40, 0xBA7E },
259413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBA80, 0xBAFE },
260413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBB40, 0xBB7E },
261413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBB80, 0xBBFE },
262413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBC40, 0xBC7E },
263413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBC80, 0xBCFE },
264413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBD40, 0xBD7E },
265413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBD80, 0xBDFE },
266413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBE40, 0xBE7E },
267413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBE80, 0xBEFE },
268413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBF40, 0xBF7E },
269413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBF80, 0xBFFE },
270413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC040, 0xC07E },
271413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC080, 0xC0FE },
272413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC140, 0xC17E },
273413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC180, 0xC1FE },
274413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC240, 0xC27E },
275413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC280, 0xC2FE },
276413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC340, 0xC37E },
277413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC380, 0xC3FE },
278413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC440, 0xC47E },
279413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC480, 0xC4FE },
280413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC540, 0xC57E },
281413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC580, 0xC5FE },
282413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC640, 0xC67E },
283413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC680, 0xC6FE },
284413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC740, 0xC77E },
285413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC780, 0xC7FE },
286413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC840, 0xC87E },
287413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC880, 0xC8FE },
288413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC940, 0xC97E },
289413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC980, 0xC9FE },
290413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCA40, 0xCA7E },
291413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCA80, 0xCAFE },
292413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCB40, 0xCB7E },
293413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCB80, 0xCBFE },
294413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCC40, 0xCC7E },
295413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCC80, 0xCCFE },
296413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCD40, 0xCD7E },
297413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCD80, 0xCDFE },
298413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCE40, 0xCE7E },
299413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCE80, 0xCEFE },
300413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCF40, 0xCF7E },
301413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCF80, 0xCFFE },
302413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD040, 0xD07E },
303413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD080, 0xD0FE },
304413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD140, 0xD17E },
305413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD180, 0xD1FE },
306413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD240, 0xD27E },
307413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD280, 0xD2FE },
308413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD340, 0xD37E },
309413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD380, 0xD3FE },
310413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD440, 0xD47E },
311413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD480, 0xD4FE },
312413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD540, 0xD57E },
313413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD580, 0xD5FE },
314413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD640, 0xD67E },
315413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD680, 0xD6FE },
316413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD740, 0xD77E },
317413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD780, 0xD7F9 },
318413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD840, 0xD87E },
319413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD880, 0xD8FE },
320413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD940, 0xD97E },
321413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD980, 0xD9FE },
322413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDA40, 0xDA7E },
323413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDA80, 0xDAFE },
324413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDB40, 0xDB7E },
325413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDB80, 0xDBFE },
326413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDC40, 0xDC7E },
327413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDC80, 0xDCFE },
328413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDD40, 0xDD7E },
329413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDD80, 0xDDFE },
330413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDE40, 0xDE7E },
331413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDE80, 0xDEFE },
332413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDF40, 0xDF7E },
333413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDF80, 0xDFFE },
334413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE040, 0xE07E },
335413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE080, 0xE0FE },
336413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE140, 0xE17E },
337413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE180, 0xE1FE },
338413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE240, 0xE27E },
339413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE280, 0xE2FE },
340413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE340, 0xE37E },
341413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE380, 0xE3FE },
342413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE440, 0xE47E },
343413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE480, 0xE4FE },
344413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE540, 0xE57E },
345413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE580, 0xE5FE },
346413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE640, 0xE67E },
347413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE680, 0xE6FE },
348413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE740, 0xE77E },
349413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE780, 0xE7FE },
350413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE840, 0xE87E },
351413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE880, 0xE8FE },
352413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE940, 0xE97E },
353413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE980, 0xE9FE },
354413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEA40, 0xEA7E },
355413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEA80, 0xEAFE },
356413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEB40, 0xEB7E },
357413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEB80, 0xEBFE },
358413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEC40, 0xEC7E },
359413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEC80, 0xECFE },
360413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xED40, 0xED7E },
361413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xED80, 0xEDFE },
362413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEE40, 0xEE7E },
363413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEE80, 0xEEFE },
364413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEF40, 0xEF7E },
365413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEF80, 0xEFFE },
366413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF040, 0xF07E },
367413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF080, 0xF0FE },
368413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF140, 0xF17E },
369413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF180, 0xF1FE },
370413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF240, 0xF27E },
371413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF280, 0xF2FE },
372413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF340, 0xF37E },
373413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF380, 0xF3FE },
374413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF440, 0xF47E },
375413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF480, 0xF4FE },
376413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF540, 0xF57E },
377413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF580, 0xF5FE },
378413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF640, 0xF67E },
379413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF680, 0xF6FE },
380413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF740, 0xF77E },
381413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF780, 0xF7FE },
382413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF840, 0xF87E },
383413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF880, 0xF8A0 },
384413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF940, 0xF97E },
385413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF980, 0xF9A0 },
386413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFA40, 0xFA7E },
387413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFA80, 0xFAA0 },
388413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFB40, 0xFB7E },
389413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFB80, 0xFBA0 },
390413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFC40, 0xFC7E },
391413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFC80, 0xFCA0 },
392413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFD40, 0xFD7E },
393413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFD80, 0xFDA0 },
394413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFE40, 0xFE4F },
395413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber};
396413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
397413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber// generated from http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP949.TXT
398413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huberstatic const CharRange kEUCKRRanges[] = {
399413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8141, 0x815A },
400413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8161, 0x817A },
401413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8181, 0x81FE },
402413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8241, 0x825A },
403413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8261, 0x827A },
404413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8281, 0x82FE },
405413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8341, 0x835A },
406413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8361, 0x837A },
407413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8381, 0x83FE },
408413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8441, 0x845A },
409413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8461, 0x847A },
410413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8481, 0x84FE },
411413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8541, 0x855A },
412413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8561, 0x857A },
413413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8581, 0x85FE },
414413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8641, 0x865A },
415413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8661, 0x867A },
416413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8681, 0x86FE },
417413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8741, 0x875A },
418413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8761, 0x877A },
419413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8781, 0x87FE },
420413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8841, 0x885A },
421413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8861, 0x887A },
422413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8881, 0x88FE },
423413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8941, 0x895A },
424413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8961, 0x897A },
425413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8981, 0x89FE },
426413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8A41, 0x8A5A },
427413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8A61, 0x8A7A },
428413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8A81, 0x8AFE },
429413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8B41, 0x8B5A },
430413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8B61, 0x8B7A },
431413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8B81, 0x8BFE },
432413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8C41, 0x8C5A },
433413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8C61, 0x8C7A },
434413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8C81, 0x8CFE },
435413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8D41, 0x8D5A },
436413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8D61, 0x8D7A },
437413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8D81, 0x8DFE },
438413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8E41, 0x8E5A },
439413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8E61, 0x8E7A },
440413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8E81, 0x8EFE },
441413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8F41, 0x8F5A },
442413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8F61, 0x8F7A },
443413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x8F81, 0x8FFE },
444413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9041, 0x905A },
445413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9061, 0x907A },
446413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9081, 0x90FE },
447413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9141, 0x915A },
448413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9161, 0x917A },
449413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9181, 0x91FE },
450413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9241, 0x925A },
451413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9261, 0x927A },
452413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9281, 0x92FE },
453413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9341, 0x935A },
454413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9361, 0x937A },
455413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9381, 0x93FE },
456413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9441, 0x945A },
457413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9461, 0x947A },
458413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9481, 0x94FE },
459413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9541, 0x955A },
460413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9561, 0x957A },
461413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9581, 0x95FE },
462413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9641, 0x965A },
463413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9661, 0x967A },
464413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9681, 0x96FE },
465413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9741, 0x975A },
466413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9761, 0x977A },
467413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9781, 0x97FE },
468413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9841, 0x985A },
469413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9861, 0x987A },
470413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9881, 0x98FE },
471413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9941, 0x995A },
472413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9961, 0x997A },
473413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9981, 0x99FE },
474413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9A41, 0x9A5A },
475413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9A61, 0x9A7A },
476413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9A81, 0x9AFE },
477413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9B41, 0x9B5A },
478413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9B61, 0x9B7A },
479413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9B81, 0x9BFE },
480413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9C41, 0x9C5A },
481413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9C61, 0x9C7A },
482413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9C81, 0x9CFE },
483413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9D41, 0x9D5A },
484413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9D61, 0x9D7A },
485413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9D81, 0x9DFE },
486413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9E41, 0x9E5A },
487413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9E61, 0x9E7A },
488413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9E81, 0x9EFE },
489413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9F41, 0x9F5A },
490413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9F61, 0x9F7A },
491413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0x9F81, 0x9FFE },
492413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA041, 0xA05A },
493413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA061, 0xA07A },
494413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA081, 0xA0FE },
495413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA141, 0xA15A },
496413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA161, 0xA17A },
497413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA181, 0xA1FE },
498413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA241, 0xA25A },
499413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA261, 0xA27A },
500413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA281, 0xA2E7 },
501413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA341, 0xA35A },
502413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA361, 0xA37A },
503413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA381, 0xA3FE },
504413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA441, 0xA45A },
505413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA461, 0xA47A },
506413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA481, 0xA4FE },
507413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA541, 0xA55A },
508413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA561, 0xA57A },
509413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA581, 0xA5AA },
510413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA5B0, 0xA5B9 },
511413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA5C1, 0xA5D8 },
512413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA5E1, 0xA5F8 },
513413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA641, 0xA65A },
514413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA661, 0xA67A },
515413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA681, 0xA6E4 },
516413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA741, 0xA75A },
517413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA761, 0xA77A },
518413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA781, 0xA7EF },
519413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA841, 0xA85A },
520413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA861, 0xA87A },
521413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA881, 0xA8A4 },
522413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA8A6, 0xA8A6 },
523413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA8A8, 0xA8AF },
524413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA8B1, 0xA8FE },
525413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA941, 0xA95A },
526413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA961, 0xA97A },
527413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA981, 0xA9FE },
528413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAA41, 0xAA5A },
529413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAA61, 0xAA7A },
530413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAA81, 0xAAF3 },
531413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAB41, 0xAB5A },
532413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAB61, 0xAB7A },
533413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAB81, 0xABF6 },
534413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAC41, 0xAC5A },
535413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAC61, 0xAC7A },
536413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAC81, 0xACC1 },
537413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xACD1, 0xACF1 },
538413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAD41, 0xAD5A },
539413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAD61, 0xAD7A },
540413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAD81, 0xADA0 },
541413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAE41, 0xAE5A },
542413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAE61, 0xAE7A },
543413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAE81, 0xAEA0 },
544413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAF41, 0xAF5A },
545413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAF61, 0xAF7A },
546413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAF81, 0xAFA0 },
547413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB041, 0xB05A },
548413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB061, 0xB07A },
549413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB081, 0xB0FE },
550413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB141, 0xB15A },
551413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB161, 0xB17A },
552413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB181, 0xB1FE },
553413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB241, 0xB25A },
554413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB261, 0xB27A },
555413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB281, 0xB2FE },
556413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB341, 0xB35A },
557413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB361, 0xB37A },
558413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB381, 0xB3FE },
559413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB441, 0xB45A },
560413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB461, 0xB47A },
561413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB481, 0xB4FE },
562413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB541, 0xB55A },
563413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB561, 0xB57A },
564413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB581, 0xB5FE },
565413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB641, 0xB65A },
566413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB661, 0xB67A },
567413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB681, 0xB6FE },
568413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB741, 0xB75A },
569413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB761, 0xB77A },
570413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB781, 0xB7FE },
571413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB841, 0xB85A },
572413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB861, 0xB87A },
573413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB881, 0xB8FE },
574413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB941, 0xB95A },
575413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB961, 0xB97A },
576413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB981, 0xB9FE },
577413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBA41, 0xBA5A },
578413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBA61, 0xBA7A },
579413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBA81, 0xBAFE },
580413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBB41, 0xBB5A },
581413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBB61, 0xBB7A },
582413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBB81, 0xBBFE },
583413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBC41, 0xBC5A },
584413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBC61, 0xBC7A },
585413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBC81, 0xBCFE },
586413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBD41, 0xBD5A },
587413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBD61, 0xBD7A },
588413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBD81, 0xBDFE },
589413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBE41, 0xBE5A },
590413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBE61, 0xBE7A },
591413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBE81, 0xBEFE },
592413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBF41, 0xBF5A },
593413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBF61, 0xBF7A },
594413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBF81, 0xBFFE },
595413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC041, 0xC05A },
596413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC061, 0xC07A },
597413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC081, 0xC0FE },
598413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC141, 0xC15A },
599413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC161, 0xC17A },
600413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC181, 0xC1FE },
601413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC241, 0xC25A },
602413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC261, 0xC27A },
603413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC281, 0xC2FE },
604413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC341, 0xC35A },
605413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC361, 0xC37A },
606413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC381, 0xC3FE },
607413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC441, 0xC45A },
608413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC461, 0xC47A },
609413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC481, 0xC4FE },
610413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC541, 0xC55A },
611413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC561, 0xC57A },
612413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC581, 0xC5FE },
613413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC641, 0xC652 },
614413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC6A1, 0xC6FE },
615413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC7A1, 0xC7FE },
616413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC8A1, 0xC8FE },
617413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCAA1, 0xCAFE },
618413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCBA1, 0xCBFE },
619413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCCA1, 0xCCFE },
620413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCDA1, 0xCDFE },
621413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCEA1, 0xCEFE },
622413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCFA1, 0xCFFE },
623413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD0A1, 0xD0FE },
624413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD1A1, 0xD1FE },
625413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD2A1, 0xD2FE },
626413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD3A1, 0xD3FE },
627413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD4A1, 0xD4FE },
628413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD5A1, 0xD5FE },
629413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD6A1, 0xD6FE },
630413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD7A1, 0xD7FE },
631413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD8A1, 0xD8FE },
632413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD9A1, 0xD9FE },
633413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDAA1, 0xDAFE },
634413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDBA1, 0xDBFE },
635413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDCA1, 0xDCFE },
636413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDDA1, 0xDDFE },
637413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDEA1, 0xDEFE },
638413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDFA1, 0xDFFE },
639413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE0A1, 0xE0FE },
640413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE1A1, 0xE1FE },
641413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE2A1, 0xE2FE },
642413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE3A1, 0xE3FE },
643413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE4A1, 0xE4FE },
644413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE5A1, 0xE5FE },
645413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE6A1, 0xE6FE },
646413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE7A1, 0xE7FE },
647413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE8A1, 0xE8FE },
648413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE9A1, 0xE9FE },
649413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEAA1, 0xEAFE },
650413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEBA1, 0xEBFE },
651413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xECA1, 0xECFE },
652413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEDA1, 0xEDFE },
653413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEEA1, 0xEEFE },
654413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEFA1, 0xEFFE },
655413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF0A1, 0xF0FE },
656413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF1A1, 0xF1FE },
657413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF2A1, 0xF2FE },
658413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF3A1, 0xF3FE },
659413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF4A1, 0xF4FE },
660413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF5A1, 0xF5FE },
661413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF6A1, 0xF6FE },
662413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF7A1, 0xF7FE },
663413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF8A1, 0xF8FE },
664413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF9A1, 0xF9FE },
665413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFAA1, 0xFAFE },
666413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFBA1, 0xFBFE },
667413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFCA1, 0xFCFE },
668413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xFDA1, 0xFDFE },
669413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber};
670413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
671413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber// generated from http://unicode.org/Public/MAPPINGS/VENDORS/MICSFT/WINDOWS/CP950.TXT
672413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huberstatic const CharRange kBig5Ranges[] = {
673413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA140, 0xA17E },
674413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA1A1, 0xA1FE },
675413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA240, 0xA27E },
676413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA2A1, 0xA2FE },
677413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA340, 0xA37E },
678413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA3A1, 0xA3BF },
679413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA3E1, 0xA3E1 },
680413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA440, 0xA47E },
681413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA4A1, 0xA4FE },
682413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA540, 0xA57E },
683413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA5A1, 0xA5FE },
684413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA640, 0xA67E },
685413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA6A1, 0xA6FE },
686413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA740, 0xA77E },
687413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA7A1, 0xA7FE },
688413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA840, 0xA87E },
689413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA8A1, 0xA8FE },
690413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA940, 0xA97E },
691413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xA9A1, 0xA9FE },
692413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAA40, 0xAA7E },
693413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAAA1, 0xAAFE },
694413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAB40, 0xAB7E },
695413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xABA1, 0xABFE },
696413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAC40, 0xAC7E },
697413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xACA1, 0xACFE },
698413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAD40, 0xAD7E },
699413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xADA1, 0xADFE },
700413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAE40, 0xAE7E },
701413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAEA1, 0xAEFE },
702413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAF40, 0xAF7E },
703413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xAFA1, 0xAFFE },
704413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB040, 0xB07E },
705413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB0A1, 0xB0FE },
706413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB140, 0xB17E },
707413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB1A1, 0xB1FE },
708413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB240, 0xB27E },
709413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB2A1, 0xB2FE },
710413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB340, 0xB37E },
711413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB3A1, 0xB3FE },
712413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB440, 0xB47E },
713413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB4A1, 0xB4FE },
714413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB540, 0xB57E },
715413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB5A1, 0xB5FE },
716413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB640, 0xB67E },
717413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB6A1, 0xB6FE },
718413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB740, 0xB77E },
719413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB7A1, 0xB7FE },
720413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB840, 0xB87E },
721413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB8A1, 0xB8FE },
722413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB940, 0xB97E },
723413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xB9A1, 0xB9FE },
724413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBA40, 0xBA7E },
725413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBAA1, 0xBAFE },
726413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBB40, 0xBB7E },
727413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBBA1, 0xBBFE },
728413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBC40, 0xBC7E },
729413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBCA1, 0xBCFE },
730413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBD40, 0xBD7E },
731413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBDA1, 0xBDFE },
732413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBE40, 0xBE7E },
733413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBEA1, 0xBEFE },
734413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBF40, 0xBF7E },
735413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xBFA1, 0xBFFE },
736413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC040, 0xC07E },
737413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC0A1, 0xC0FE },
738413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC140, 0xC17E },
739413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC1A1, 0xC1FE },
740413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC240, 0xC27E },
741413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC2A1, 0xC2FE },
742413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC340, 0xC37E },
743413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC3A1, 0xC3FE },
744413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC440, 0xC47E },
745413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC4A1, 0xC4FE },
746413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC540, 0xC57E },
747413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC5A1, 0xC5FE },
748413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC640, 0xC67E },
749413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC940, 0xC97E },
750413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xC9A1, 0xC9FE },
751413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCA40, 0xCA7E },
752413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCAA1, 0xCAFE },
753413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCB40, 0xCB7E },
754413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCBA1, 0xCBFE },
755413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCC40, 0xCC7E },
756413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCCA1, 0xCCFE },
757413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCD40, 0xCD7E },
758413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCDA1, 0xCDFE },
759413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCE40, 0xCE7E },
760413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCEA1, 0xCEFE },
761413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCF40, 0xCF7E },
762413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xCFA1, 0xCFFE },
763413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD040, 0xD07E },
764413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD0A1, 0xD0FE },
765413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD140, 0xD17E },
766413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD1A1, 0xD1FE },
767413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD240, 0xD27E },
768413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD2A1, 0xD2FE },
769413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD340, 0xD37E },
770413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD3A1, 0xD3FE },
771413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD440, 0xD47E },
772413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD4A1, 0xD4FE },
773413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD540, 0xD57E },
774413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD5A1, 0xD5FE },
775413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD640, 0xD67E },
776413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD6A1, 0xD6FE },
777413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD740, 0xD77E },
778413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD7A1, 0xD7FE },
779413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD840, 0xD87E },
780413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD8A1, 0xD8FE },
781413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD940, 0xD97E },
782413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xD9A1, 0xD9FE },
783413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDA40, 0xDA7E },
784413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDAA1, 0xDAFE },
785413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDB40, 0xDB7E },
786413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDBA1, 0xDBFE },
787413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDC40, 0xDC7E },
788413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDCA1, 0xDCFE },
789413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDD40, 0xDD7E },
790413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDDA1, 0xDDFE },
791413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDE40, 0xDE7E },
792413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDEA1, 0xDEFE },
793413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDF40, 0xDF7E },
794413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xDFA1, 0xDFFE },
795413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE040, 0xE07E },
796413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE0A1, 0xE0FE },
797413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE140, 0xE17E },
798413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE1A1, 0xE1FE },
799413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE240, 0xE27E },
800413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE2A1, 0xE2FE },
801413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE340, 0xE37E },
802413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE3A1, 0xE3FE },
803413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE440, 0xE47E },
804413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE4A1, 0xE4FE },
805413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE540, 0xE57E },
806413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE5A1, 0xE5FE },
807413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE640, 0xE67E },
808413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE6A1, 0xE6FE },
809413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE740, 0xE77E },
810413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE7A1, 0xE7FE },
811413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE840, 0xE87E },
812413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE8A1, 0xE8FE },
813413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE940, 0xE97E },
814413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xE9A1, 0xE9FE },
815413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEA40, 0xEA7E },
816413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEAA1, 0xEAFE },
817413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEB40, 0xEB7E },
818413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEBA1, 0xEBFE },
819413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEC40, 0xEC7E },
820413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xECA1, 0xECFE },
821413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xED40, 0xED7E },
822413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEDA1, 0xEDFE },
823413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEE40, 0xEE7E },
824413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEEA1, 0xEEFE },
825413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEF40, 0xEF7E },
826413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xEFA1, 0xEFFE },
827413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF040, 0xF07E },
828413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF0A1, 0xF0FE },
829413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF140, 0xF17E },
830413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF1A1, 0xF1FE },
831413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF240, 0xF27E },
832413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF2A1, 0xF2FE },
833413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF340, 0xF37E },
834413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF3A1, 0xF3FE },
835413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF440, 0xF47E },
836413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF4A1, 0xF4FE },
837413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF540, 0xF57E },
838413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF5A1, 0xF5FE },
839413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF640, 0xF67E },
840413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF6A1, 0xF6FE },
841413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF740, 0xF77E },
842413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF7A1, 0xF7FE },
843413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF840, 0xF87E },
844413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF8A1, 0xF8FE },
845413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF940, 0xF97E },
846413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    { 0xF9A1, 0xF9FE },
847413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber};
848413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
849413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huberstatic bool charMatchesEncoding(int ch, const CharRange* encodingRanges, int rangeCount) {
850413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    // Use binary search to see if the character is contained in the encoding
851413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    int low = 0;
852413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    int high = rangeCount;
853413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
854413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    while (low < high) {
855413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber        int i = (low + high) / 2;
856413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber        const CharRange* range = &encodingRanges[i];
857413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber        if (ch >= range->first && ch <= range->last)
858413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber            return true;
859413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber        if (ch > range->last)
860413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber            low = i + 1;
861413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber        else
862413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber            high = i;
863413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    }
864413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
865413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    return false;
866413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber}
867413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
868413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huberextern uint32_t findPossibleEncodings(int ch)
869413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber{
870413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    // ASCII matches everything
871413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    if (ch < 256) return kEncodingAll;
872413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
873413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    int result = kEncodingNone;
874413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
875413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    if (charMatchesEncoding(ch, kShiftJISRanges, ARRAY_SIZE(kShiftJISRanges)))
876413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber        result |= kEncodingShiftJIS;
877413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    if (charMatchesEncoding(ch, kGBKRanges, ARRAY_SIZE(kGBKRanges)))
878413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber        result |= kEncodingGBK;
879413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    if (charMatchesEncoding(ch, kBig5Ranges, ARRAY_SIZE(kBig5Ranges)))
880413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber        result |= kEncodingBig5;
881413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    if (charMatchesEncoding(ch, kEUCKRRanges, ARRAY_SIZE(kEUCKRRanges)))
882413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber        result |= kEncodingEUCKR;
883413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber
884413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber    return result;
885413f523afe96aff02d2b0a7459127b8f67b2b43cAndreas Huber}
886