1191983Sweongyo/*
2191983Sweongyo * linux/fs/nls/mac-iceland.c
3191983Sweongyo *
4191983Sweongyo * Charset maciceland translation tables.
5191983Sweongyo * Generated automatically from the Unicode and charset
6191983Sweongyo * tables from the Unicode Organization (www.unicode.org).
7191983Sweongyo * The Unicode to charset table has only exact mappings.
8191983Sweongyo */
9191983Sweongyo
10191983Sweongyo/*
11191983Sweongyo * COPYRIGHT AND PERMISSION NOTICE
12191983Sweongyo *
13191983Sweongyo * Copyright 1991-2012 Unicode, Inc.  All rights reserved.  Distributed under
14191983Sweongyo * the Terms of Use in http://www.unicode.org/copyright.html.
15191983Sweongyo *
16191983Sweongyo * Permission is hereby granted, free of charge, to any person obtaining a
17191983Sweongyo * copy of the Unicode data files and any associated documentation (the "Data
18191983Sweongyo * Files") or Unicode software and any associated documentation (the
19191983Sweongyo * "Software") to deal in the Data Files or Software without restriction,
20191983Sweongyo * including without limitation the rights to use, copy, modify, merge,
21191983Sweongyo * publish, distribute, and/or sell copies of the Data Files or Software, and
22191983Sweongyo * to permit persons to whom the Data Files or Software are furnished to do
23191983Sweongyo * so, provided that (a) the above copyright notice(s) and this permission
24191983Sweongyo * notice appear with all copies of the Data Files or Software, (b) both the
25191983Sweongyo * above copyright notice(s) and this permission notice appear in associated
26191983Sweongyo * documentation, and (c) there is clear notice in each modified Data File or
27191983Sweongyo * in the Software as well as in the documentation associated with the Data
28191983Sweongyo * File(s) or Software that the data or software has been modified.
29191983Sweongyo *
30191983Sweongyo * THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY
31191983Sweongyo * KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
32191983Sweongyo * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF
33191983Sweongyo * THIRD PARTY RIGHTS.  IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS
34191983Sweongyo * INCLUDED IN THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT
35191983Sweongyo * OR CONSEQUENTIAL DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF
36191983Sweongyo * USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
37191983Sweongyo * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
38191983Sweongyo * PERFORMANCE OF THE DATA FILES OR SOFTWARE.
39191983Sweongyo *
40191983Sweongyo * Except as contained in this notice, the name of a copyright holder shall
41191983Sweongyo * not be used in advertising or otherwise to promote the sale, use or other
42191983Sweongyo * dealings in these Data Files or Software without prior written
43191983Sweongyo * authorization of the copyright holder.
44191983Sweongyo */
45191983Sweongyo
46191983Sweongyo#include <linux/module.h>
47191983Sweongyo#include <linux/kernel.h>
48191983Sweongyo#include <linux/string.h>
49191983Sweongyo#include <linux/nls.h>
50191983Sweongyo#include <linux/errno.h>
51191983Sweongyo
52191983Sweongyostatic const wchar_t charset2uni[256] = {
53191983Sweongyo	/* 0x00 */
54191983Sweongyo	0x0000, 0x0001, 0x0002, 0x0003,
55191983Sweongyo	0x0004, 0x0005, 0x0006, 0x0007,
56191983Sweongyo	0x0008, 0x0009, 0x000a, 0x000b,
57191983Sweongyo	0x000c, 0x000d, 0x000e, 0x000f,
58191983Sweongyo	/* 0x10 */
59191983Sweongyo	0x0010, 0x0011, 0x0012, 0x0013,
60191983Sweongyo	0x0014, 0x0015, 0x0016, 0x0017,
61191983Sweongyo	0x0018, 0x0019, 0x001a, 0x001b,
62191983Sweongyo	0x001c, 0x001d, 0x001e, 0x001f,
63191983Sweongyo	/* 0x20 */
64191983Sweongyo	0x0020, 0x0021, 0x0022, 0x0023,
65191983Sweongyo	0x0024, 0x0025, 0x0026, 0x0027,
66191983Sweongyo	0x0028, 0x0029, 0x002a, 0x002b,
67191983Sweongyo	0x002c, 0x002d, 0x002e, 0x002f,
68191983Sweongyo	/* 0x30 */
69191983Sweongyo	0x0030, 0x0031, 0x0032, 0x0033,
70191983Sweongyo	0x0034, 0x0035, 0x0036, 0x0037,
71191983Sweongyo	0x0038, 0x0039, 0x003a, 0x003b,
72191983Sweongyo	0x003c, 0x003d, 0x003e, 0x003f,
73191983Sweongyo	/* 0x40 */
74191983Sweongyo	0x0040, 0x0041, 0x0042, 0x0043,
75191983Sweongyo	0x0044, 0x0045, 0x0046, 0x0047,
76191983Sweongyo	0x0048, 0x0049, 0x004a, 0x004b,
77191983Sweongyo	0x004c, 0x004d, 0x004e, 0x004f,
78191983Sweongyo	/* 0x50 */
79191983Sweongyo	0x0050, 0x0051, 0x0052, 0x0053,
80191983Sweongyo	0x0054, 0x0055, 0x0056, 0x0057,
81191983Sweongyo	0x0058, 0x0059, 0x005a, 0x005b,
82191983Sweongyo	0x005c, 0x005d, 0x005e, 0x005f,
83191983Sweongyo	/* 0x60 */
84191983Sweongyo	0x0060, 0x0061, 0x0062, 0x0063,
85191983Sweongyo	0x0064, 0x0065, 0x0066, 0x0067,
86191983Sweongyo	0x0068, 0x0069, 0x006a, 0x006b,
87191983Sweongyo	0x006c, 0x006d, 0x006e, 0x006f,
88191983Sweongyo	/* 0x70 */
89191983Sweongyo	0x0070, 0x0071, 0x0072, 0x0073,
90191983Sweongyo	0x0074, 0x0075, 0x0076, 0x0077,
91191983Sweongyo	0x0078, 0x0079, 0x007a, 0x007b,
92191983Sweongyo	0x007c, 0x007d, 0x007e, 0x007f,
93191983Sweongyo	/* 0x80 */
94191983Sweongyo	0x00c4, 0x00c5, 0x00c7, 0x00c9,
95191983Sweongyo	0x00d1, 0x00d6, 0x00dc, 0x00e1,
96191983Sweongyo	0x00e0, 0x00e2, 0x00e4, 0x00e3,
97191983Sweongyo	0x00e5, 0x00e7, 0x00e9, 0x00e8,
98191983Sweongyo	/* 0x90 */
99191983Sweongyo	0x00ea, 0x00eb, 0x00ed, 0x00ec,
100191983Sweongyo	0x00ee, 0x00ef, 0x00f1, 0x00f3,
101191983Sweongyo	0x00f2, 0x00f4, 0x00f6, 0x00f5,
102191983Sweongyo	0x00fa, 0x00f9, 0x00fb, 0x00fc,
103191983Sweongyo	/* 0xa0 */
104191983Sweongyo	0x00dd, 0x00b0, 0x00a2, 0x00a3,
105191983Sweongyo	0x00a7, 0x2022, 0x00b6, 0x00df,
106191983Sweongyo	0x00ae, 0x00a9, 0x2122, 0x00b4,
107191983Sweongyo	0x00a8, 0x2260, 0x00c6, 0x00d8,
108191983Sweongyo	/* 0xb0 */
109191983Sweongyo	0x221e, 0x00b1, 0x2264, 0x2265,
110191983Sweongyo	0x00a5, 0x00b5, 0x2202, 0x2211,
111191983Sweongyo	0x220f, 0x03c0, 0x222b, 0x00aa,
112191983Sweongyo	0x00ba, 0x03a9, 0x00e6, 0x00f8,
113191983Sweongyo	/* 0xc0 */
114191983Sweongyo	0x00bf, 0x00a1, 0x00ac, 0x221a,
115191983Sweongyo	0x0192, 0x2248, 0x2206, 0x00ab,
116191983Sweongyo	0x00bb, 0x2026, 0x00a0, 0x00c0,
117191983Sweongyo	0x00c3, 0x00d5, 0x0152, 0x0153,
118191983Sweongyo	/* 0xd0 */
119191983Sweongyo	0x2013, 0x2014, 0x201c, 0x201d,
120191983Sweongyo	0x2018, 0x2019, 0x00f7, 0x25ca,
121191983Sweongyo	0x00ff, 0x0178, 0x2044, 0x20ac,
122191983Sweongyo	0x00d0, 0x00f0, 0x00de, 0x00fe,
123191983Sweongyo	/* 0xe0 */
124191983Sweongyo	0x00fd, 0x00b7, 0x201a, 0x201e,
125191983Sweongyo	0x2030, 0x00c2, 0x00ca, 0x00c1,
126191983Sweongyo	0x00cb, 0x00c8, 0x00cd, 0x00ce,
127191983Sweongyo	0x00cf, 0x00cc, 0x00d3, 0x00d4,
128191983Sweongyo	/* 0xf0 */
129191983Sweongyo	0xf8ff, 0x00d2, 0x00da, 0x00db,
130191983Sweongyo	0x00d9, 0x0131, 0x02c6, 0x02dc,
131191983Sweongyo	0x00af, 0x02d8, 0x02d9, 0x02da,
132191983Sweongyo	0x00b8, 0x02dd, 0x02db, 0x02c7,
133191983Sweongyo};
134191983Sweongyo
135191983Sweongyostatic const unsigned char page00[256] = {
136191983Sweongyo	0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, /* 0x00-0x07 */
137191983Sweongyo	0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f, /* 0x08-0x0f */
138191983Sweongyo	0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, /* 0x10-0x17 */
139191983Sweongyo	0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f, /* 0x18-0x1f */
140191983Sweongyo	0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, /* 0x20-0x27 */
141191983Sweongyo	0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f, /* 0x28-0x2f */
142191983Sweongyo	0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, /* 0x30-0x37 */
143191983Sweongyo	0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, /* 0x38-0x3f */
144191983Sweongyo	0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, /* 0x40-0x47 */
145191983Sweongyo	0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f, /* 0x48-0x4f */
146191983Sweongyo	0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57, /* 0x50-0x57 */
147191983Sweongyo	0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f, /* 0x58-0x5f */
148191983Sweongyo	0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67, /* 0x60-0x67 */
149191983Sweongyo	0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f, /* 0x68-0x6f */
150191983Sweongyo	0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77, /* 0x70-0x77 */
151191983Sweongyo	0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f, /* 0x78-0x7f */
152191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
153191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
154191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
155191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
156191983Sweongyo	0xca, 0xc1, 0xa2, 0xa3, 0x00, 0xb4, 0x00, 0xa4, /* 0xa0-0xa7 */
157191983Sweongyo	0xac, 0xa9, 0xbb, 0xc7, 0xc2, 0x00, 0xa8, 0xf8, /* 0xa8-0xaf */
158191983Sweongyo	0xa1, 0xb1, 0x00, 0x00, 0xab, 0xb5, 0xa6, 0xe1, /* 0xb0-0xb7 */
159191983Sweongyo	0xfc, 0x00, 0xbc, 0xc8, 0x00, 0x00, 0x00, 0xc0, /* 0xb8-0xbf */
160191983Sweongyo	0xcb, 0xe7, 0xe5, 0xcc, 0x80, 0x81, 0xae, 0x82, /* 0xc0-0xc7 */
161191983Sweongyo	0xe9, 0x83, 0xe6, 0xe8, 0xed, 0xea, 0xeb, 0xec, /* 0xc8-0xcf */
162191983Sweongyo	0xdc, 0x84, 0xf1, 0xee, 0xef, 0xcd, 0x85, 0x00, /* 0xd0-0xd7 */
163191983Sweongyo	0xaf, 0xf4, 0xf2, 0xf3, 0x86, 0xa0, 0xde, 0xa7, /* 0xd8-0xdf */
164191983Sweongyo	0x88, 0x87, 0x89, 0x8b, 0x8a, 0x8c, 0xbe, 0x8d, /* 0xe0-0xe7 */
165191983Sweongyo	0x8f, 0x8e, 0x90, 0x91, 0x93, 0x92, 0x94, 0x95, /* 0xe8-0xef */
166191983Sweongyo	0xdd, 0x96, 0x98, 0x97, 0x99, 0x9b, 0x9a, 0xd6, /* 0xf0-0xf7 */
167191983Sweongyo	0xbf, 0x9d, 0x9c, 0x9e, 0x9f, 0xe0, 0xdf, 0xd8, /* 0xf8-0xff */
168191983Sweongyo};
169191983Sweongyo
170191983Sweongyostatic const unsigned char page01[256] = {
171191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
172191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
173191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
174191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
175191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
176191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
177191983Sweongyo	0x00, 0xf5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
178191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
179191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
180191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
181191983Sweongyo	0x00, 0x00, 0xce, 0xcf, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
182191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
183191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
184191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
185191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
186191983Sweongyo	0xd9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
187191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
188191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
189191983Sweongyo	0x00, 0x00, 0xc4, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
190191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
191191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
192191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
193191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
194191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
195191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
196191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
197191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
198191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
199191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
200191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
201191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
202191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
203191983Sweongyo};
204191983Sweongyo
205191983Sweongyostatic const unsigned char page02[256] = {
206191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
207191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
208191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
209191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
210191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
211191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
212191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
213191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
214191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
215191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
216191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
217191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
218191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
219191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
220191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
221191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
222191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
223191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
224191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
225191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
226191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
227191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
228191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
229191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
230191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf6, 0xff, /* 0xc0-0xc7 */
231191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
232191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
233191983Sweongyo	0xf9, 0xfa, 0xfb, 0xfe, 0xf7, 0xfd, 0x00, 0x00, /* 0xd8-0xdf */
234191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
235191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
236191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
237191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
238191983Sweongyo};
239191983Sweongyo
240191983Sweongyostatic const unsigned char page03[256] = {
241191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
242191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
243191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
244191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
245191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
246191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
247191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
248191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
249191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
250191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
251191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
252191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
253191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
254191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
255191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
256191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
257191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
258191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
259191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
260191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
261191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
262191983Sweongyo	0x00, 0xbd, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
263191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
264191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
265191983Sweongyo	0xb9, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
266191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
267191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
268191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
269191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
270191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
271191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
272191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
273191983Sweongyo};
274191983Sweongyo
275191983Sweongyostatic const unsigned char page20[256] = {
276191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
277191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
278191983Sweongyo	0x00, 0x00, 0x00, 0xd0, 0xd1, 0x00, 0x00, 0x00, /* 0x10-0x17 */
279191983Sweongyo	0xd4, 0xd5, 0xe2, 0x00, 0xd2, 0xd3, 0xe3, 0x00, /* 0x18-0x1f */
280191983Sweongyo	0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xc9, 0x00, /* 0x20-0x27 */
281191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
282191983Sweongyo	0xe4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
283191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
284191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0xda, 0x00, 0x00, 0x00, /* 0x40-0x47 */
285191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
286191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
287191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
288191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
289191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
290191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
291191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
292191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
293191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
294191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
295191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
296191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
297191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0xdb, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
298191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
299191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
300191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
301191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
302191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
303191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
304191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
305191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
306191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
307191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
308191983Sweongyo};
309191983Sweongyo
310191983Sweongyostatic const unsigned char page21[256] = {
311191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
312191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
313191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
314191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
315191983Sweongyo	0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
316191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
317191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
318191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
319191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
320191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
321191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
322191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
323191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
324191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
325191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
326191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
327191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
328191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
329191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
330191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
331191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
332191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
333191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
334191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
335191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
336191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
337191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
338191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
339191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
340191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
341191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
342191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
343191983Sweongyo};
344191983Sweongyo
345191983Sweongyostatic const unsigned char page22[256] = {
346191983Sweongyo	0x00, 0x00, 0xb6, 0x00, 0x00, 0x00, 0xc6, 0x00, /* 0x00-0x07 */
347191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xb8, /* 0x08-0x0f */
348191983Sweongyo	0x00, 0xb7, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
349191983Sweongyo	0x00, 0x00, 0xc3, 0x00, 0x00, 0x00, 0xb0, 0x00, /* 0x18-0x1f */
350191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
351191983Sweongyo	0x00, 0x00, 0x00, 0xba, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
352191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
353191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
354191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
355191983Sweongyo	0xc5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
356191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
357191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
358191983Sweongyo	0xad, 0x00, 0x00, 0x00, 0xb2, 0xb3, 0x00, 0x00, /* 0x60-0x67 */
359191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
360191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
361191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
362191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
363191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
364191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
365191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
366191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
367191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
368191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
369191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
370191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
371191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
372191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
373191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
374191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
375191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
376191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
377191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
378191983Sweongyo};
379191983Sweongyo
380191983Sweongyostatic const unsigned char page25[256] = {
381191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
382191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
383253757Shselasky	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
384191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
385191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
386191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
387191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
388191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
389191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
390191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
391191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
392191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
393191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
394191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
395191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
396191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
397253757Shselasky	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
398191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
399191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
400191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
401191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
402191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
403191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
404191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
405191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
406191983Sweongyo	0x00, 0x00, 0xd7, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
407191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
408191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
409191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
410191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
411191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
412191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf8-0xff */
413191983Sweongyo};
414191983Sweongyo
415191983Sweongyostatic const unsigned char pagef8[256] = {
416191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x00-0x07 */
417191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x08-0x0f */
418191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x10-0x17 */
419191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x18-0x1f */
420191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x20-0x27 */
421191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x28-0x2f */
422191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x30-0x37 */
423192984Sthompsa	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x38-0x3f */
424244503Shselasky	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x40-0x47 */
425244503Shselasky	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x48-0x4f */
426191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x50-0x57 */
427191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x58-0x5f */
428191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x60-0x67 */
429191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x68-0x6f */
430191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x70-0x77 */
431246614Shselasky	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x78-0x7f */
432191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x80-0x87 */
433191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x88-0x8f */
434191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x90-0x97 */
435191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0x98-0x9f */
436191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa0-0xa7 */
437191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xa8-0xaf */
438191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb0-0xb7 */
439191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xb8-0xbf */
440191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc0-0xc7 */
441191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xc8-0xcf */
442191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd0-0xd7 */
443191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xd8-0xdf */
444191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe0-0xe7 */
445191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xe8-0xef */
446191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0xf0-0xf7 */
447191983Sweongyo	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf0, /* 0xf8-0xff */
448191983Sweongyo};
449191983Sweongyo
450191983Sweongyostatic const unsigned char *const page_uni2charset[256] = {
451191983Sweongyo	page00, page01, page02, page03, NULL,   NULL,   NULL,   NULL,
452191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
453191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
454191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
455191983Sweongyo	page20, page21, page22, NULL,   NULL,   page25, NULL,   NULL,
456246944Shselasky	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
457191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
458191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
459191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
460191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
461191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
462191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
463191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
464192984Sthompsa	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
465191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
466191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
467191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
468191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
469191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
470191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
471191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
472191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
473191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
474191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
475191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
476191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
477191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
478191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
479191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
480191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
481191983Sweongyo	NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
482191983Sweongyo	pagef8, NULL,   NULL,   NULL,   NULL,   NULL,   NULL,   NULL,
483191983Sweongyo};
484191983Sweongyo
485static const unsigned char charset2lower[256] = {
486	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x00-0x07 */
487	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x08-0x0f */
488	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x10-0x17 */
489	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x18-0x1f */
490	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x20-0x27 */
491	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x28-0x2f */
492	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x30-0x37 */
493	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x38-0x3f */
494	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x40-0x47 */
495	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x48-0x4f */
496	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x50-0x57 */
497	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x58-0x5f */
498	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x60-0x67 */
499	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x68-0x6f */
500	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x70-0x77 */
501	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x78-0x7f */
502	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x80-0x87 */
503	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x88-0x8f */
504	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x90-0x97 */
505	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x98-0x9f */
506	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xa0-0xa7 */
507	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xa8-0xaf */
508	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xb0-0xb7 */
509	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xb8-0xbf */
510	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xc0-0xc7 */
511	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xc8-0xcf */
512	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xd0-0xd7 */
513	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xd8-0xdf */
514	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xe0-0xe7 */
515	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xe8-0xef */
516	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xf0-0xf7 */
517	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xf8-0xff */
518};
519
520static const unsigned char charset2upper[256] = {
521	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x00-0x07 */
522	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x08-0x0f */
523	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x10-0x17 */
524	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x18-0x1f */
525	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x20-0x27 */
526	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x28-0x2f */
527	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x30-0x37 */
528	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x38-0x3f */
529	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x40-0x47 */
530	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x48-0x4f */
531	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x50-0x57 */
532	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x58-0x5f */
533	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x60-0x67 */
534	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x68-0x6f */
535	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x70-0x77 */
536	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x78-0x7f */
537	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x80-0x87 */
538	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x88-0x8f */
539	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x90-0x97 */
540	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0x98-0x9f */
541	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xa0-0xa7 */
542	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xa8-0xaf */
543	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xb0-0xb7 */
544	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xb8-0xbf */
545	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xc0-0xc7 */
546	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xc8-0xcf */
547	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xd0-0xd7 */
548	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xd8-0xdf */
549	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xe0-0xe7 */
550	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xe8-0xef */
551	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xf0-0xf7 */
552	0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, /* 0xf8-0xff */
553};
554
555static int uni2char(wchar_t uni, unsigned char *out, int boundlen)
556{
557	const unsigned char *uni2charset;
558	unsigned char cl = uni & 0x00ff;
559	unsigned char ch = (uni & 0xff00) >> 8;
560
561	if (boundlen <= 0)
562		return -ENAMETOOLONG;
563
564	uni2charset = page_uni2charset[ch];
565	if (uni2charset && uni2charset[cl])
566		out[0] = uni2charset[cl];
567	else
568		return -EINVAL;
569	return 1;
570}
571
572static int char2uni(const unsigned char *rawstring, int boundlen, wchar_t *uni)
573{
574	*uni = charset2uni[*rawstring];
575	if (*uni == 0x0000)
576		return -EINVAL;
577	return 1;
578}
579
580static struct nls_table table = {
581	.charset	= "maciceland",
582	.uni2char	= uni2char,
583	.char2uni	= char2uni,
584	.charset2lower	= charset2lower,
585	.charset2upper	= charset2upper,
586};
587
588static int __init init_nls_maciceland(void)
589{
590	return register_nls(&table);
591}
592
593static void __exit exit_nls_maciceland(void)
594{
595	unregister_nls(&table);
596}
597
598module_init(init_nls_maciceland)
599module_exit(exit_nls_maciceland)
600
601MODULE_LICENSE("Dual BSD/GPL");
602