1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * Topro TP6800/6810 webcam driver.
4 *
5 * Copyright (C) 2011 Jean-Fran��ois Moine (http://moinejf.free.fr)
6 * Copyright (C) 2009 Anders Blomdell (anders.blomdell@control.lth.se)
7 * Copyright (C) 2008 Thomas Champagne (lafeuil@gmail.com)
8 */
9
10#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
11
12#include "gspca.h"
13
14MODULE_DESCRIPTION("Topro TP6800/6810 gspca webcam driver");
15MODULE_AUTHOR("Jean-Francois Moine <http://moinejf.free.fr>, Anders Blomdell <anders.blomdell@control.lth.se>");
16MODULE_LICENSE("GPL");
17
18static int force_sensor = -1;
19
20/* JPEG header */
21static const u8 jpeg_head[] = {
22	0xff, 0xd8,			/* jpeg */
23
24/* quantization table quality 50% */
25	0xff, 0xdb, 0x00, 0x84,		/* DQT */
260,
27#define JPEG_QT0_OFFSET 7
28	0x10, 0x0b, 0x0c, 0x0e, 0x0c, 0x0a, 0x10, 0x0e,
29	0x0d, 0x0e, 0x12, 0x11, 0x10, 0x13, 0x18, 0x28,
30	0x1a, 0x18, 0x16, 0x16, 0x18, 0x31, 0x23, 0x25,
31	0x1d, 0x28, 0x3a, 0x33, 0x3d, 0x3c, 0x39, 0x33,
32	0x38, 0x37, 0x40, 0x48, 0x5c, 0x4e, 0x40, 0x44,
33	0x57, 0x45, 0x37, 0x38, 0x50, 0x6d, 0x51, 0x57,
34	0x5f, 0x62, 0x67, 0x68, 0x67, 0x3e, 0x4d, 0x71,
35	0x79, 0x70, 0x64, 0x78, 0x5c, 0x65, 0x67, 0x63,
361,
37#define JPEG_QT1_OFFSET 72
38	0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
39	0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
40	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
41	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
42	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
43	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
44	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
45	0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
46
47	/* Define Huffman table (thanks to Thomas Kaiser) */
48	0xff, 0xc4, 0x01, 0x5e,
49	0x00, 0x00, 0x02, 0x03,
50	0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
51	0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02,
52	0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x10,
53	0x00, 0x02, 0x01, 0x02, 0x04, 0x04, 0x03, 0x04,
54	0x07, 0x05, 0x04, 0x06, 0x01, 0x00, 0x00, 0x57,
55	0x01, 0x02, 0x03, 0x00, 0x11, 0x04, 0x12, 0x21,
56	0x31, 0x13, 0x41, 0x51, 0x61, 0x05, 0x22, 0x32,
57	0x14, 0x71, 0x81, 0x91, 0x15, 0x23, 0x42, 0x52,
58	0x62, 0xa1, 0xb1, 0x06, 0x33, 0x72, 0xc1, 0xd1,
59	0x24, 0x43, 0x53, 0x82, 0x16, 0x34, 0x92, 0xa2,
60	0xe1, 0xf1, 0xf0, 0x07, 0x08, 0x17, 0x18, 0x25,
61	0x26, 0x27, 0x28, 0x35, 0x36, 0x37, 0x38, 0x44,
62	0x45, 0x46, 0x47, 0x48, 0x54, 0x55, 0x56, 0x57,
63	0x58, 0x63, 0x64, 0x65, 0x66, 0x67, 0x68, 0x73,
64	0x74, 0x75, 0x76, 0x77, 0x78, 0x83, 0x84, 0x85,
65	0x86, 0x87, 0x88, 0x93, 0x94, 0x95, 0x96, 0x97,
66	0x98, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2,
67	0xb3, 0xb4, 0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3,
68	0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4,
69	0xd5, 0xd6, 0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5,
70	0xe6, 0xe7, 0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6,
71	0xf7, 0xf8, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,
72	0x01, 0x01, 0x01, 0x01, 0x01, 0x00, 0x00, 0x00,
73	0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04,
74	0x05, 0x06, 0x07, 0x08, 0x09, 0x11, 0x00, 0x02,
75	0x01, 0x02, 0x04, 0x04, 0x03, 0x04, 0x07, 0x05,
76	0x04, 0x06, 0x01, 0x00, 0x00, 0x57, 0x00, 0x01,
77	0x11, 0x02, 0x21, 0x03, 0x12, 0x31, 0x41, 0x13,
78	0x22, 0x51, 0x61, 0x04, 0x32, 0x71, 0x05, 0x14,
79	0x23, 0x42, 0x33, 0x52, 0x81, 0x91, 0xa1, 0xb1,
80	0xf0, 0x06, 0x15, 0xc1, 0xd1, 0xe1, 0x24, 0x43,
81	0x62, 0xf1, 0x16, 0x25, 0x34, 0x53, 0x72, 0x82,
82	0x92, 0x07, 0x08, 0x17, 0x18, 0x26, 0x27, 0x28,
83	0x35, 0x36, 0x37, 0x38, 0x44, 0x45, 0x46, 0x47,
84	0x48, 0x54, 0x55, 0x56, 0x57, 0x58, 0x63, 0x64,
85	0x65, 0x66, 0x67, 0x68, 0x73, 0x74, 0x75, 0x76,
86	0x77, 0x78, 0x83, 0x84, 0x85, 0x86, 0x87, 0x88,
87	0x93, 0x94, 0x95, 0x96, 0x97, 0x98, 0xa2, 0xa3,
88	0xa4, 0xa5, 0xa6, 0xa7, 0xa8, 0xb2, 0xb3, 0xb4,
89	0xb5, 0xb6, 0xb7, 0xb8, 0xc2, 0xc3, 0xc4, 0xc5,
90	0xc6, 0xc7, 0xc8, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6,
91	0xd7, 0xd8, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
92	0xe8, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8,
93	0xff, 0xc0, 0x00, 0x11,		/* SOF0 (start of frame 0 */
94	0x08,				/* data precision */
95#define JPEG_HEIGHT_OFFSET 493
96	0x01, 0xe0,			/* height */
97	0x02, 0x80,			/* width */
98	0x03,				/* component number */
99		0x01,
100			0x21,		/* samples Y = jpeg 422 */
101			0x00,		/* quant Y */
102		0x02, 0x11, 0x01,	/* samples CbCr - quant CbCr */
103		0x03, 0x11, 0x01,
104
105	0xff, 0xda, 0x00, 0x0c,		/* SOS (start of scan) */
106	0x03, 0x01, 0x00, 0x02, 0x11, 0x03, 0x11, 0x00, 0x3f, 0x00
107#define JPEG_HDR_SZ 521
108};
109
110struct sd {
111	struct gspca_dev gspca_dev;	/* !! must be the first item */
112	struct v4l2_ctrl *jpegqual;
113	struct v4l2_ctrl *sharpness;
114	struct v4l2_ctrl *gamma;
115	struct v4l2_ctrl *blue;
116	struct v4l2_ctrl *red;
117
118	u8 framerate;
119	u8 quality;		/* webcam current JPEG quality (0..16) */
120	s8 ag_cnt;		/* autogain / start counter for tp6810 */
121#define AG_CNT_START 13		/* check gain every N frames */
122
123	u8 bridge;
124	u8 sensor;
125
126	u8 jpeg_hdr[JPEG_HDR_SZ];
127};
128
129enum bridges {
130	BRIDGE_TP6800,
131	BRIDGE_TP6810,
132};
133
134enum sensors {
135	SENSOR_CX0342,
136	SENSOR_SOI763A,		/* ~= ov7630 / ov7648 */
137	NSENSORS
138};
139
140static const struct v4l2_pix_format vga_mode[] = {
141	{320, 240, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
142		.bytesperline = 320,
143		.sizeimage = 320 * 240 * 4 / 8 + 590,
144		.colorspace = V4L2_COLORSPACE_JPEG},
145	{640, 480, V4L2_PIX_FMT_JPEG, V4L2_FIELD_NONE,
146		.bytesperline = 640,
147		.sizeimage = 640 * 480 * 3 / 8 + 590,
148		.colorspace = V4L2_COLORSPACE_JPEG}
149};
150
151/*
152 * JPEG quality
153 * index: webcam compression
154 * value: JPEG quality in %
155 */
156static const u8 jpeg_q[17] = {
157	88, 77, 67, 57, 55, 55, 45, 45, 36, 36, 30, 30, 26, 26, 22, 22, 94
158};
159
160#define BULK_OUT_SIZE		0x20
161#if BULK_OUT_SIZE > USB_BUF_SZ
162#error "USB buffer too small"
163#endif
164
165#define DEFAULT_FRAME_RATE 30
166
167static const u8 rates[] = {30, 20, 15, 10, 7, 5};
168static const struct framerates framerates[] = {
169	{
170		.rates = rates,
171		.nrates = ARRAY_SIZE(rates)
172	},
173	{
174		.rates = rates,
175		.nrates = ARRAY_SIZE(rates)
176	}
177};
178static const u8 rates_6810[] = {30, 15, 10, 7, 5};
179static const struct framerates framerates_6810[] = {
180	{
181		.rates = rates_6810,
182		.nrates = ARRAY_SIZE(rates_6810)
183	},
184	{
185		.rates = rates_6810,
186		.nrates = ARRAY_SIZE(rates_6810)
187	}
188};
189
190/*
191 * webcam quality in %
192 * the last value is the ultra fine quality
193 */
194
195/* TP6800 register offsets */
196#define TP6800_R10_SIF_TYPE		0x10
197#define TP6800_R11_SIF_CONTROL		0x11
198#define TP6800_R12_SIF_ADDR_S		0x12
199#define TP6800_R13_SIF_TX_DATA		0x13
200#define TP6800_R14_SIF_RX_DATA		0x14
201#define TP6800_R15_GPIO_PU		0x15
202#define TP6800_R16_GPIO_PD		0x16
203#define TP6800_R17_GPIO_IO		0x17
204#define TP6800_R18_GPIO_DATA		0x18
205#define TP6800_R19_SIF_ADDR_S2		0x19
206#define TP6800_R1A_SIF_TX_DATA2		0x1a
207#define TP6800_R1B_SIF_RX_DATA2		0x1b
208#define TP6800_R21_ENDP_1_CTL		0x21
209#define TP6800_R2F_TIMING_CFG		0x2f
210#define TP6800_R30_SENSOR_CFG		0x30
211#define TP6800_R31_PIXEL_START		0x31
212#define TP6800_R32_PIXEL_END_L		0x32
213#define TP6800_R33_PIXEL_END_H		0x33
214#define TP6800_R34_LINE_START		0x34
215#define TP6800_R35_LINE_END_L		0x35
216#define TP6800_R36_LINE_END_H		0x36
217#define TP6800_R37_FRONT_DARK_ST	0x37
218#define TP6800_R38_FRONT_DARK_END	0x38
219#define TP6800_R39_REAR_DARK_ST_L	0x39
220#define TP6800_R3A_REAR_DARK_ST_H	0x3a
221#define TP6800_R3B_REAR_DARK_END_L	0x3b
222#define TP6800_R3C_REAR_DARK_END_H	0x3c
223#define TP6800_R3D_HORIZ_DARK_LINE_L	0x3d
224#define TP6800_R3E_HORIZ_DARK_LINE_H	0x3e
225#define TP6800_R3F_FRAME_RATE		0x3f
226#define TP6800_R50			0x50
227#define TP6800_R51			0x51
228#define TP6800_R52			0x52
229#define TP6800_R53			0x53
230#define TP6800_R54_DARK_CFG		0x54
231#define TP6800_R55_GAMMA_R		0x55
232#define TP6800_R56_GAMMA_G		0x56
233#define TP6800_R57_GAMMA_B		0x57
234#define TP6800_R5C_EDGE_THRLD		0x5c
235#define TP6800_R5D_DEMOSAIC_CFG		0x5d
236#define TP6800_R78_FORMAT		0x78
237#define TP6800_R79_QUALITY		0x79
238#define TP6800_R7A_BLK_THRLD		0x7a
239
240/* CX0342 register offsets */
241
242#define CX0342_SENSOR_ID		0x00
243#define CX0342_VERSION_NO		0x01
244#define CX0342_ORG_X_L			0x02
245#define CX0342_ORG_X_H			0x03
246#define CX0342_ORG_Y_L			0x04
247#define CX0342_ORG_Y_H			0x05
248#define CX0342_STOP_X_L			0x06
249#define CX0342_STOP_X_H			0x07
250#define CX0342_STOP_Y_L			0x08
251#define CX0342_STOP_Y_H			0x09
252#define CX0342_FRAME_WIDTH_L		0x0a
253#define CX0342_FRAME_WIDTH_H		0x0b
254#define CX0342_FRAME_HEIGH_L		0x0c
255#define CX0342_FRAME_HEIGH_H		0x0d
256#define CX0342_EXPO_LINE_L		0x10
257#define CX0342_EXPO_LINE_H		0x11
258#define CX0342_EXPO_CLK_L		0x12
259#define CX0342_EXPO_CLK_H		0x13
260#define CX0342_RAW_GRGAIN_L		0x14
261#define CX0342_RAW_GRGAIN_H		0x15
262#define CX0342_RAW_GBGAIN_L		0x16
263#define CX0342_RAW_GBGAIN_H		0x17
264#define CX0342_RAW_RGAIN_L		0x18
265#define CX0342_RAW_RGAIN_H		0x19
266#define CX0342_RAW_BGAIN_L		0x1a
267#define CX0342_RAW_BGAIN_H		0x1b
268#define CX0342_GLOBAL_GAIN		0x1c
269#define CX0342_SYS_CTRL_0		0x20
270#define CX0342_SYS_CTRL_1		0x21
271#define CX0342_SYS_CTRL_2		0x22
272#define CX0342_BYPASS_MODE		0x23
273#define CX0342_SYS_CTRL_3		0x24
274#define CX0342_TIMING_EN		0x25
275#define CX0342_OUTPUT_CTRL		0x26
276#define CX0342_AUTO_ADC_CALIB		0x27
277#define CX0342_SYS_CTRL_4		0x28
278#define CX0342_ADCGN			0x30
279#define CX0342_SLPCR			0x31
280#define CX0342_SLPFN_LO			0x32
281#define CX0342_ADC_CTL			0x33
282#define CX0342_LVRST_BLBIAS		0x34
283#define CX0342_VTHSEL			0x35
284#define CX0342_RAMP_RIV			0x36
285#define CX0342_LDOSEL			0x37
286#define CX0342_CLOCK_GEN		0x40
287#define CX0342_SOFT_RESET		0x41
288#define CX0342_PLL			0x42
289#define CX0342_DR_ENH_PULSE_OFFSET_L	0x43
290#define CX0342_DR_ENH_PULSE_OFFSET_H	0x44
291#define CX0342_DR_ENH_PULSE_POS_L	0x45
292#define CX0342_DR_ENH_PULSE_POS_H	0x46
293#define CX0342_DR_ENH_PULSE_WIDTH	0x47
294#define CX0342_AS_CURRENT_CNT_L		0x48
295#define CX0342_AS_CURRENT_CNT_H		0x49
296#define CX0342_AS_PREVIOUS_CNT_L	0x4a
297#define CX0342_AS_PREVIOUS_CNT_H	0x4b
298#define CX0342_SPV_VALUE_L		0x4c
299#define CX0342_SPV_VALUE_H		0x4d
300#define CX0342_GPXLTHD_L		0x50
301#define CX0342_GPXLTHD_H		0x51
302#define CX0342_RBPXLTHD_L		0x52
303#define CX0342_RBPXLTHD_H		0x53
304#define CX0342_PLANETHD_L		0x54
305#define CX0342_PLANETHD_H		0x55
306#define CX0342_ROWDARK_TH		0x56
307#define CX0342_ROWDARK_TOL		0x57
308#define CX0342_RB_GAP_L			0x58
309#define CX0342_RB_GAP_H			0x59
310#define CX0342_G_GAP_L			0x5a
311#define CX0342_G_GAP_H			0x5b
312#define CX0342_AUTO_ROW_DARK		0x60
313#define CX0342_MANUAL_DARK_VALUE	0x61
314#define CX0342_GB_DARK_OFFSET		0x62
315#define CX0342_GR_DARK_OFFSET		0x63
316#define CX0342_RED_DARK_OFFSET		0x64
317#define CX0342_BLUE_DARK_OFFSET		0x65
318#define CX0342_DATA_SCALING_MULTI	0x66
319#define CX0342_AUTOD_Q_FRAME		0x67
320#define CX0342_AUTOD_ALLOW_VARI		0x68
321#define CX0342_AUTO_DARK_VALUE_L	0x69
322#define CX0342_AUTO_DARK_VALUE_H	0x6a
323#define CX0342_IO_CTRL_0		0x70
324#define CX0342_IO_CTRL_1		0x71
325#define CX0342_IO_CTRL_2		0x72
326#define CX0342_IDLE_CTRL		0x73
327#define CX0342_TEST_MODE		0x74
328#define CX0342_FRAME_FIX_DATA_TEST	0x75
329#define CX0342_FRAME_CNT_TEST		0x76
330#define CX0342_RST_OVERFLOW_L		0x80
331#define CX0342_RST_OVERFLOW_H		0x81
332#define CX0342_RST_UNDERFLOW_L		0x82
333#define CX0342_RST_UNDERFLOW_H		0x83
334#define CX0342_DATA_OVERFLOW_L		0x84
335#define CX0342_DATA_OVERFLOW_H		0x85
336#define CX0342_DATA_UNDERFLOW_L		0x86
337#define CX0342_DATA_UNDERFLOW_H		0x87
338#define CX0342_CHANNEL_0_0_L_irst	0x90
339#define CX0342_CHANNEL_0_0_H_irst	0x91
340#define CX0342_CHANNEL_0_1_L_irst	0x92
341#define CX0342_CHANNEL_0_1_H_irst	0x93
342#define CX0342_CHANNEL_0_2_L_irst	0x94
343#define CX0342_CHANNEL_0_2_H_irst	0x95
344#define CX0342_CHANNEL_0_3_L_irst	0x96
345#define CX0342_CHANNEL_0_3_H_irst	0x97
346#define CX0342_CHANNEL_0_4_L_irst	0x98
347#define CX0342_CHANNEL_0_4_H_irst	0x99
348#define CX0342_CHANNEL_0_5_L_irst	0x9a
349#define CX0342_CHANNEL_0_5_H_irst	0x9b
350#define CX0342_CHANNEL_0_6_L_irst	0x9c
351#define CX0342_CHANNEL_0_6_H_irst	0x9d
352#define CX0342_CHANNEL_0_7_L_irst	0x9e
353#define CX0342_CHANNEL_0_7_H_irst	0x9f
354#define CX0342_CHANNEL_1_0_L_itx	0xa0
355#define CX0342_CHANNEL_1_0_H_itx	0xa1
356#define CX0342_CHANNEL_1_1_L_itx	0xa2
357#define CX0342_CHANNEL_1_1_H_itx	0xa3
358#define CX0342_CHANNEL_1_2_L_itx	0xa4
359#define CX0342_CHANNEL_1_2_H_itx	0xa5
360#define CX0342_CHANNEL_1_3_L_itx	0xa6
361#define CX0342_CHANNEL_1_3_H_itx	0xa7
362#define CX0342_CHANNEL_1_4_L_itx	0xa8
363#define CX0342_CHANNEL_1_4_H_itx	0xa9
364#define CX0342_CHANNEL_1_5_L_itx	0xaa
365#define CX0342_CHANNEL_1_5_H_itx	0xab
366#define CX0342_CHANNEL_1_6_L_itx	0xac
367#define CX0342_CHANNEL_1_6_H_itx	0xad
368#define CX0342_CHANNEL_1_7_L_itx	0xae
369#define CX0342_CHANNEL_1_7_H_itx	0xaf
370#define CX0342_CHANNEL_2_0_L_iwl	0xb0
371#define CX0342_CHANNEL_2_0_H_iwl	0xb1
372#define CX0342_CHANNEL_2_1_L_iwl	0xb2
373#define CX0342_CHANNEL_2_1_H_iwl	0xb3
374#define CX0342_CHANNEL_2_2_L_iwl	0xb4
375#define CX0342_CHANNEL_2_2_H_iwl	0xb5
376#define CX0342_CHANNEL_2_3_L_iwl	0xb6
377#define CX0342_CHANNEL_2_3_H_iwl	0xb7
378#define CX0342_CHANNEL_2_4_L_iwl	0xb8
379#define CX0342_CHANNEL_2_4_H_iwl	0xb9
380#define CX0342_CHANNEL_2_5_L_iwl	0xba
381#define CX0342_CHANNEL_2_5_H_iwl	0xbb
382#define CX0342_CHANNEL_2_6_L_iwl	0xbc
383#define CX0342_CHANNEL_2_6_H_iwl	0xbd
384#define CX0342_CHANNEL_2_7_L_iwl	0xbe
385#define CX0342_CHANNEL_2_7_H_iwl	0xbf
386#define CX0342_CHANNEL_3_0_L_ensp	0xc0
387#define CX0342_CHANNEL_3_0_H_ensp	0xc1
388#define CX0342_CHANNEL_3_1_L_ensp	0xc2
389#define CX0342_CHANNEL_3_1_H_ensp	0xc3
390#define CX0342_CHANNEL_3_2_L_ensp	0xc4
391#define CX0342_CHANNEL_3_2_H_ensp	0xc5
392#define CX0342_CHANNEL_3_3_L_ensp	0xc6
393#define CX0342_CHANNEL_3_3_H_ensp	0xc7
394#define CX0342_CHANNEL_3_4_L_ensp	0xc8
395#define CX0342_CHANNEL_3_4_H_ensp	0xc9
396#define CX0342_CHANNEL_3_5_L_ensp	0xca
397#define CX0342_CHANNEL_3_5_H_ensp	0xcb
398#define CX0342_CHANNEL_3_6_L_ensp	0xcc
399#define CX0342_CHANNEL_3_6_H_ensp	0xcd
400#define CX0342_CHANNEL_3_7_L_ensp	0xce
401#define CX0342_CHANNEL_3_7_H_ensp	0xcf
402#define CX0342_CHANNEL_4_0_L_sela	0xd0
403#define CX0342_CHANNEL_4_0_H_sela	0xd1
404#define CX0342_CHANNEL_4_1_L_sela	0xd2
405#define CX0342_CHANNEL_4_1_H_sela	0xd3
406#define CX0342_CHANNEL_5_0_L_intla	0xe0
407#define CX0342_CHANNEL_5_0_H_intla	0xe1
408#define CX0342_CHANNEL_5_1_L_intla	0xe2
409#define CX0342_CHANNEL_5_1_H_intla	0xe3
410#define CX0342_CHANNEL_5_2_L_intla	0xe4
411#define CX0342_CHANNEL_5_2_H_intla	0xe5
412#define CX0342_CHANNEL_5_3_L_intla	0xe6
413#define CX0342_CHANNEL_5_3_H_intla	0xe7
414#define CX0342_CHANNEL_6_0_L_xa_sel_pos 0xf0
415#define CX0342_CHANNEL_6_0_H_xa_sel_pos 0xf1
416#define CX0342_CHANNEL_7_1_L_cds_pos	0xf2
417#define CX0342_CHANNEL_7_1_H_cds_pos	0xf3
418#define CX0342_SENSOR_HEIGHT_L		0xfb
419#define CX0342_SENSOR_HEIGHT_H		0xfc
420#define CX0342_SENSOR_WIDTH_L		0xfd
421#define CX0342_SENSOR_WIDTH_H		0xfe
422#define CX0342_VSYNC_HSYNC_READ		0xff
423
424struct cmd {
425	u8 reg;
426	u8 val;
427};
428
429static const u8 DQT[17][130] = {
430	/* Define quantization table (thanks to Thomas Kaiser) */
431	{			/* Quality 0 */
432	 0x00,
433	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
434	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
435	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
436	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
437	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
438	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
439	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
440	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
441	 0x01,
442	 0x04, 0x04, 0x04, 0x06, 0x05, 0x06, 0x0b, 0x06,
443	 0x06, 0x0b, 0x18, 0x10, 0x0e, 0x10, 0x18, 0x18,
444	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
445	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
446	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
447	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
448	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
449	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
450	 },
451	{			/* Quality 1 */
452	 0x00,
453	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
454	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
455	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
456	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
457	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
458	 0x04, 0x04, 0x04, 0x09, 0x09, 0x09, 0x09, 0x09,
459	 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
460	 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09, 0x09,
461	 0x01,
462	 0x08, 0x09, 0x09, 0x0c, 0x0a, 0x0c, 0x17, 0x0d,
463	 0x0d, 0x17, 0x31, 0x21, 0x1c, 0x21, 0x31, 0x31,
464	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
465	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
466	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
467	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
468	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
469	 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31, 0x31,
470	 },
471	{			/* Quality 2 */
472	 0x00,
473	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
474	 0x04, 0x04, 0x06, 0x06, 0x06, 0x04, 0x04, 0x04,
475	 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
476	 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
477	 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
478	 0x06, 0x06, 0x06, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
479	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
480	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
481	 0x01,
482	 0x0c, 0x0d, 0x0d, 0x12, 0x0f, 0x12, 0x23, 0x13,
483	 0x13, 0x23, 0x4a, 0x31, 0x2a, 0x31, 0x4a, 0x4a,
484	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
485	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
486	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
487	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
488	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
489	 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a, 0x4a,
490	 },
491	{			/* Quality 3 */
492	 0x00,
493	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
494	 0x04, 0x04, 0x08, 0x08, 0x08, 0x04, 0x04, 0x04,
495	 0x04, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
496	 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
497	 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
498	 0x08, 0x08, 0x08, 0x13, 0x13, 0x13, 0x13, 0x13,
499	 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
500	 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13, 0x13,
501	 0x01,
502	 0x11, 0x12, 0x12, 0x18, 0x15, 0x18, 0x2f, 0x1a,
503	 0x1a, 0x2f, 0x63, 0x42, 0x38, 0x42, 0x63, 0x63,
504	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
505	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
506	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
507	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
508	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
509	 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63, 0x63,
510	 },
511	{			/* Quality 4 */
512	 0x00,
513	 0x04, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05, 0x05,
514	 0x05, 0x05, 0x0a, 0x0a, 0x0a, 0x05, 0x05, 0x05,
515	 0x05, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
516	 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
517	 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
518	 0x0a, 0x0a, 0x0a, 0x17, 0x17, 0x17, 0x17, 0x17,
519	 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
520	 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17, 0x17,
521	 0x01,
522	 0x11, 0x16, 0x16, 0x1e, 0x1a, 0x1e, 0x3a, 0x20,
523	 0x20, 0x3a, 0x7b, 0x52, 0x46, 0x52, 0x7b, 0x7b,
524	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
525	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
526	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
527	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
528	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
529	 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b, 0x7b,
530	 },
531	{			/* Quality 5 */
532	 0x00,
533	 0x04, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06,
534	 0x06, 0x06, 0x0c, 0x0c, 0x0c, 0x06, 0x06, 0x06,
535	 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
536	 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
537	 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
538	 0x0c, 0x0c, 0x0c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
539	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
540	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
541	 0x01,
542	 0x11, 0x1b, 0x1b, 0x24, 0x1f, 0x24, 0x46, 0x27,
543	 0x27, 0x46, 0x94, 0x63, 0x54, 0x63, 0x94, 0x94,
544	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
545	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
546	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
547	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
548	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
549	 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94, 0x94,
550	 },
551	{			/* Quality 6 */
552	 0x00,
553	 0x05, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07, 0x07,
554	 0x07, 0x07, 0x0e, 0x0e, 0x0e, 0x07, 0x07, 0x07,
555	 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
556	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
557	 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
558	 0x0e, 0x0e, 0x0e, 0x21, 0x21, 0x21, 0x21, 0x21,
559	 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
560	 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21, 0x21,
561	 0x01,
562	 0x15, 0x1f, 0x1f, 0x2a, 0x24, 0x2a, 0x52, 0x2d,
563	 0x2d, 0x52, 0xad, 0x73, 0x62, 0x73, 0xad, 0xad,
564	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
565	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
566	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
567	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
568	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
569	 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xad,
570	 },
571	{			/* Quality 7 */
572	 0x00,
573	 0x05, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08, 0x08,
574	 0x08, 0x08, 0x10, 0x10, 0x10, 0x08, 0x08, 0x08,
575	 0x08, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
576	 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
577	 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
578	 0x10, 0x10, 0x10, 0x26, 0x26, 0x26, 0x26, 0x26,
579	 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
580	 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26, 0x26,
581	 0x01,
582	 0x15, 0x24, 0x24, 0x30, 0x2a, 0x30, 0x5e, 0x34,
583	 0x34, 0x5e, 0xc6, 0x84, 0x70, 0x84, 0xc6, 0xc6,
584	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
585	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
586	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
587	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
588	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
589	 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
590	 },
591	{			/* Quality 8 */
592	 0x00,
593	 0x06, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a, 0x0a,
594	 0x0a, 0x0a, 0x14, 0x14, 0x14, 0x0a, 0x0a, 0x0a,
595	 0x0a, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
596	 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
597	 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
598	 0x14, 0x14, 0x14, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
599	 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
600	 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f, 0x2f,
601	 0x01,
602	 0x19, 0x2d, 0x2d, 0x3c, 0x34, 0x3c, 0x75, 0x41,
603	 0x41, 0x75, 0xf7, 0xa5, 0x8c, 0xa5, 0xf7, 0xf7,
604	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
605	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
606	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
607	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
608	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
609	 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
610	 },
611	{			/* Quality 9 */
612	 0x00,
613	 0x06, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c,
614	 0x0c, 0x0c, 0x18, 0x18, 0x18, 0x0c, 0x0c, 0x0c,
615	 0x0c, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
616	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
617	 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
618	 0x18, 0x18, 0x18, 0x39, 0x39, 0x39, 0x39, 0x39,
619	 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
620	 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39, 0x39,
621	 0x01,
622	 0x19, 0x36, 0x36, 0x48, 0x3f, 0x48, 0x8d, 0x4e,
623	 0x4e, 0x8d, 0xff, 0xc6, 0xa8, 0xc6, 0xff, 0xff,
624	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
625	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
626	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
627	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
628	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
629	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
630	 },
631	{			/* Quality 10 */
632	 0x00,
633	 0x07, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e, 0x0e,
634	 0x0e, 0x0e, 0x1c, 0x1c, 0x1c, 0x0e, 0x0e, 0x0e,
635	 0x0e, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
636	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
637	 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
638	 0x1c, 0x1c, 0x1c, 0x42, 0x42, 0x42, 0x42, 0x42,
639	 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
640	 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42, 0x42,
641	 0x01,
642	 0x1d, 0x3f, 0x3f, 0x54, 0x49, 0x54, 0xa4, 0x5b,
643	 0x5b, 0xa4, 0xff, 0xe7, 0xc4, 0xe7, 0xff, 0xff,
644	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
645	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
646	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
647	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
648	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
649	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
650	 },
651	{			/* Quality 11 */
652	 0x00,
653	 0x07, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10,
654	 0x10, 0x10, 0x20, 0x20, 0x20, 0x10, 0x10, 0x10,
655	 0x10, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
656	 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
657	 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
658	 0x20, 0x20, 0x20, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
659	 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
660	 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c, 0x4c,
661	 0x01,
662	 0x1d, 0x48, 0x48, 0x60, 0x54, 0x60, 0xbc, 0x68,
663	 0x68, 0xbc, 0xff, 0xff, 0xe0, 0xff, 0xff, 0xff,
664	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
665	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
666	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
667	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
668	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
669	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
670	 },
671	{			/* Quality 12 */
672	 0x00,
673	 0x08, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14, 0x14,
674	 0x14, 0x14, 0x28, 0x28, 0x28, 0x14, 0x14, 0x14,
675	 0x14, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
676	 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
677	 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28, 0x28,
678	 0x28, 0x28, 0x28, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
679	 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
680	 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f, 0x5f,
681	 0x01,
682	 0x22, 0x5a, 0x5a, 0x78, 0x69, 0x78, 0xeb, 0x82,
683	 0x82, 0xeb, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
684	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
685	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
686	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
687	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
688	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
689	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
690	 },
691	{			/* Quality 13 */
692	 0x00,
693	 0x08, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18,
694	 0x18, 0x18, 0x30, 0x30, 0x30, 0x18, 0x18, 0x18,
695	 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
696	 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
697	 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30,
698	 0x30, 0x30, 0x30, 0x72, 0x72, 0x72, 0x72, 0x72,
699	 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
700	 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72, 0x72,
701	 0x01,
702	 0x22, 0x6c, 0x6c, 0x90, 0x7e, 0x90, 0xff, 0x9c,
703	 0x9c, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
704	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
705	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
706	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
707	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
708	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
709	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
710	 },
711	{			/* Quality 14 */
712	 0x00,
713	 0x0a, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c, 0x1c,
714	 0x1c, 0x1c, 0x38, 0x38, 0x38, 0x1c, 0x1c, 0x1c,
715	 0x1c, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
716	 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
717	 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38, 0x38,
718	 0x38, 0x38, 0x38, 0x85, 0x85, 0x85, 0x85, 0x85,
719	 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
720	 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85, 0x85,
721	 0x01,
722	 0x2a, 0x7e, 0x7e, 0xa8, 0x93, 0xa8, 0xff, 0xb6,
723	 0xb6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
724	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
725	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
726	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
727	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
728	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
729	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
730	 },
731	{			/* Quality 15 */
732	 0x00,
733	 0x0a, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20,
734	 0x20, 0x20, 0x40, 0x40, 0x40, 0x20, 0x20, 0x20,
735	 0x20, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
736	 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
737	 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40, 0x40,
738	 0x40, 0x40, 0x40, 0x98, 0x98, 0x98, 0x98, 0x98,
739	 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
740	 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98, 0x98,
741	 0x01,
742	 0x2a, 0x90, 0x90, 0xc0, 0xa8, 0xc0, 0xff, 0xd0,
743	 0xd0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
744	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
745	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
746	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
747	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
748	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
749	 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
750	 },
751	{			/* Quality 16-31 */
752	 0x00,
753	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
754	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
755	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
756	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
757	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
758	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
759	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
760	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
761	 0x01,
762	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
763	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
764	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
765	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
766	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
767	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
768	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
769	 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04,
770	 }
771};
772
773static const struct cmd tp6810_cx_init_common[] = {
774	{0x1c, 0x00},
775	{TP6800_R10_SIF_TYPE, 0x00},
776	{0x4e, 0x00},
777	{0x4f, 0x00},
778	{TP6800_R50, 0xff},
779	{TP6800_R51, 0x03},
780	{0x00, 0x07},
781	{TP6800_R79_QUALITY, 0x03},
782	{TP6800_R2F_TIMING_CFG, 0x37},
783	{TP6800_R30_SENSOR_CFG, 0x10},
784	{TP6800_R21_ENDP_1_CTL, 0x00},
785	{TP6800_R52, 0x40},
786	{TP6800_R53, 0x40},
787	{TP6800_R54_DARK_CFG, 0x40},
788	{TP6800_R30_SENSOR_CFG, 0x18},
789	{0x4b, 0x00},
790	{TP6800_R3F_FRAME_RATE, 0x83},
791	{TP6800_R79_QUALITY, 0x05},
792	{TP6800_R21_ENDP_1_CTL, 0x00},
793	{0x7c, 0x04},
794	{0x25, 0x14},
795	{0x26, 0x0f},
796	{0x7b, 0x10},
797};
798
799static const struct cmd tp6810_ov_init_common[] = {
800	{0x1c, 0x00},
801	{TP6800_R10_SIF_TYPE, 0x00},
802	{0x4e, 0x00},
803	{0x4f, 0x00},
804	{TP6800_R50, 0xff},
805	{TP6800_R51, 0x03},
806	{0x00, 0x07},
807	{TP6800_R52, 0x40},
808	{TP6800_R53, 0x40},
809	{TP6800_R54_DARK_CFG, 0x40},
810	{TP6800_R79_QUALITY, 0x03},
811	{TP6800_R2F_TIMING_CFG, 0x17},
812	{TP6800_R30_SENSOR_CFG, 0x18},
813	{TP6800_R21_ENDP_1_CTL, 0x00},
814	{TP6800_R3F_FRAME_RATE, 0x86},
815	{0x25, 0x18},
816	{0x26, 0x0f},
817	{0x7b, 0x90},
818};
819
820static const struct cmd tp6810_bridge_start[] = {
821	{0x59, 0x88},
822	{0x5a, 0x0f},
823	{0x5b, 0x4e},
824	{TP6800_R5C_EDGE_THRLD, 0x63},
825	{TP6800_R5D_DEMOSAIC_CFG, 0x00},
826	{0x03, 0x7f},
827	{0x04, 0x80},
828	{0x06, 0x00},
829	{0x00, 0x00},
830};
831
832static const struct cmd tp6810_late_start[] = {
833	{0x7d, 0x01},
834	{0xb0, 0x04},
835	{0xb1, 0x04},
836	{0xb2, 0x04},
837	{0xb3, 0x04},
838	{0xb4, 0x04},
839	{0xb5, 0x04},
840	{0xb6, 0x08},
841	{0xb7, 0x08},
842	{0xb8, 0x04},
843	{0xb9, 0x04},
844	{0xba, 0x04},
845	{0xbb, 0x04},
846	{0xbc, 0x04},
847	{0xbd, 0x08},
848	{0xbe, 0x08},
849	{0xbf, 0x08},
850	{0xc0, 0x04},
851	{0xc1, 0x04},
852	{0xc2, 0x08},
853	{0xc3, 0x08},
854	{0xc4, 0x08},
855	{0xc5, 0x08},
856	{0xc6, 0x08},
857	{0xc7, 0x13},
858	{0xc8, 0x04},
859	{0xc9, 0x08},
860	{0xca, 0x08},
861	{0xcb, 0x08},
862	{0xcc, 0x08},
863	{0xcd, 0x08},
864	{0xce, 0x13},
865	{0xcf, 0x13},
866	{0xd0, 0x08},
867	{0xd1, 0x08},
868	{0xd2, 0x08},
869	{0xd3, 0x08},
870	{0xd4, 0x08},
871	{0xd5, 0x13},
872	{0xd6, 0x13},
873	{0xd7, 0x13},
874	{0xd8, 0x08},
875	{0xd9, 0x08},
876	{0xda, 0x08},
877	{0xdb, 0x08},
878	{0xdc, 0x13},
879	{0xdd, 0x13},
880	{0xde, 0x13},
881	{0xdf, 0x13},
882	{0xe0, 0x08},
883	{0xe1, 0x08},
884	{0xe2, 0x08},
885	{0xe3, 0x13},
886	{0xe4, 0x13},
887	{0xe5, 0x13},
888	{0xe6, 0x13},
889	{0xe7, 0x13},
890	{0xe8, 0x08},
891	{0xe9, 0x08},
892	{0xea, 0x13},
893	{0xeb, 0x13},
894	{0xec, 0x13},
895	{0xed, 0x13},
896	{0xee, 0x13},
897	{0xef, 0x13},
898	{0x7d, 0x02},
899
900	/* later after isoc start */
901	{0x7d, 0x08},
902	{0x7d, 0x00},
903};
904
905static const struct cmd cx0342_timing_seq[] = {
906	{CX0342_CHANNEL_0_1_L_irst, 0x20},
907	{CX0342_CHANNEL_0_2_L_irst, 0x24},
908	{CX0342_CHANNEL_0_2_H_irst, 0x00},
909	{CX0342_CHANNEL_0_3_L_irst, 0x2f},
910	{CX0342_CHANNEL_0_3_H_irst, 0x00},
911	{CX0342_CHANNEL_1_0_L_itx, 0x02},
912	{CX0342_CHANNEL_1_0_H_itx, 0x00},
913	{CX0342_CHANNEL_1_1_L_itx, 0x20},
914	{CX0342_CHANNEL_1_1_H_itx, 0x00},
915	{CX0342_CHANNEL_1_2_L_itx, 0xe4},
916	{CX0342_CHANNEL_1_2_H_itx, 0x00},
917	{CX0342_CHANNEL_1_3_L_itx, 0xee},
918	{CX0342_CHANNEL_1_3_H_itx, 0x00},
919	{CX0342_CHANNEL_2_0_L_iwl, 0x30},
920	{CX0342_CHANNEL_2_0_H_iwl, 0x00},
921	{CX0342_CHANNEL_3_0_L_ensp, 0x34},
922	{CX0342_CHANNEL_3_1_L_ensp, 0xe2},
923	{CX0342_CHANNEL_3_1_H_ensp, 0x00},
924	{CX0342_CHANNEL_3_2_L_ensp, 0xf6},
925	{CX0342_CHANNEL_3_2_H_ensp, 0x00},
926	{CX0342_CHANNEL_3_3_L_ensp, 0xf4},
927	{CX0342_CHANNEL_3_3_H_ensp, 0x02},
928	{CX0342_CHANNEL_4_0_L_sela, 0x26},
929	{CX0342_CHANNEL_4_0_H_sela, 0x00},
930	{CX0342_CHANNEL_4_1_L_sela, 0xe2},
931	{CX0342_CHANNEL_4_1_H_sela, 0x00},
932	{CX0342_CHANNEL_5_0_L_intla, 0x26},
933	{CX0342_CHANNEL_5_1_L_intla, 0x29},
934	{CX0342_CHANNEL_5_2_L_intla, 0xf0},
935	{CX0342_CHANNEL_5_2_H_intla, 0x00},
936	{CX0342_CHANNEL_5_3_L_intla, 0xf3},
937	{CX0342_CHANNEL_5_3_H_intla, 0x00},
938	{CX0342_CHANNEL_6_0_L_xa_sel_pos, 0x24},
939	{CX0342_CHANNEL_7_1_L_cds_pos, 0x02},
940	{CX0342_TIMING_EN, 0x01},
941};
942
943/* define the JPEG header */
944static void jpeg_define(u8 *jpeg_hdr,
945			int height,
946			int width)
947{
948	memcpy(jpeg_hdr, jpeg_head, sizeof jpeg_head);
949	jpeg_hdr[JPEG_HEIGHT_OFFSET + 0] = height >> 8;
950	jpeg_hdr[JPEG_HEIGHT_OFFSET + 1] = height;
951	jpeg_hdr[JPEG_HEIGHT_OFFSET + 2] = width >> 8;
952	jpeg_hdr[JPEG_HEIGHT_OFFSET + 3] = width;
953}
954
955/* set the JPEG quality for sensor soi763a */
956static void jpeg_set_qual(u8 *jpeg_hdr,
957			  int quality)
958{
959	int i, sc;
960
961	if (quality <= 0)
962		sc = 5000;
963	else if (quality < 50)
964		sc = 5000 / quality;
965	else
966		sc = 200 - quality * 2;
967	for (i = 0; i < 64; i++) {
968		jpeg_hdr[JPEG_QT0_OFFSET + i] =
969			(jpeg_head[JPEG_QT0_OFFSET + i] * sc + 50) / 100;
970		jpeg_hdr[JPEG_QT1_OFFSET + i] =
971			(jpeg_head[JPEG_QT1_OFFSET + i] * sc + 50) / 100;
972	}
973}
974
975static void reg_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
976{
977	struct usb_device *dev = gspca_dev->dev;
978	int ret;
979
980	if (gspca_dev->usb_err < 0)
981		return;
982	ret = usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
983			0x0e,
984			USB_DIR_OUT | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
985			value, index, NULL, 0, 500);
986	if (ret < 0) {
987		pr_err("reg_w err %d\n", ret);
988		gspca_dev->usb_err = ret;
989	}
990}
991
992/* the returned value is in gspca_dev->usb_buf */
993static void reg_r(struct gspca_dev *gspca_dev, u8 index)
994{
995	struct usb_device *dev = gspca_dev->dev;
996	int ret;
997
998	if (gspca_dev->usb_err < 0)
999		return;
1000	ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
1001			0x0d,
1002			USB_DIR_IN | USB_TYPE_VENDOR | USB_RECIP_DEVICE,
1003			0, index, gspca_dev->usb_buf, 1, 500);
1004	if (ret < 0) {
1005		pr_err("reg_r err %d\n", ret);
1006		gspca_dev->usb_err = ret;
1007	}
1008}
1009
1010static void reg_w_buf(struct gspca_dev *gspca_dev,
1011			const struct cmd *p, int l)
1012{
1013	do {
1014		reg_w(gspca_dev, p->reg, p->val);
1015		p++;
1016	} while (--l > 0);
1017}
1018
1019static int i2c_w(struct gspca_dev *gspca_dev, u8 index, u8 value)
1020{
1021	struct sd *sd = (struct sd *) gspca_dev;
1022
1023	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1024	reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1025	reg_w(gspca_dev, TP6800_R13_SIF_TX_DATA, value);
1026	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x01);
1027	if (sd->bridge == BRIDGE_TP6800)
1028		return 0;
1029	msleep(5);
1030	reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1031	if (gspca_dev->usb_buf[0] == 0)
1032		return 0;
1033	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1034	return -1;				/* error */
1035}
1036
1037static void i2c_w_buf(struct gspca_dev *gspca_dev,
1038			const struct cmd *p, int l)
1039{
1040	do {
1041		i2c_w(gspca_dev, p->reg, p->val);
1042		p++;
1043	} while (--l > 0);
1044}
1045
1046static int i2c_r(struct gspca_dev *gspca_dev, u8 index, int len)
1047{
1048	struct sd *sd = (struct sd *) gspca_dev;
1049	int v;
1050
1051	reg_w(gspca_dev, TP6800_R19_SIF_ADDR_S2, index);
1052	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x02);
1053	msleep(5);
1054	reg_r(gspca_dev, TP6800_R14_SIF_RX_DATA);
1055	v = gspca_dev->usb_buf[0];
1056	if (sd->bridge == BRIDGE_TP6800)
1057		return v;
1058	if (len > 1) {
1059		reg_r(gspca_dev, TP6800_R1B_SIF_RX_DATA2);
1060		v |= (gspca_dev->usb_buf[0] << 8);
1061	}
1062	reg_r(gspca_dev, TP6800_R11_SIF_CONTROL);
1063	if (gspca_dev->usb_buf[0] == 0)
1064		return v;
1065	reg_w(gspca_dev, TP6800_R11_SIF_CONTROL, 0x00);
1066	return -1;
1067}
1068
1069static void bulk_w(struct gspca_dev *gspca_dev,
1070		  u8 tag,
1071		  const u8 *data,
1072		  int length)
1073{
1074	struct usb_device *dev = gspca_dev->dev;
1075	int count, actual_count, ret;
1076
1077	if (gspca_dev->usb_err < 0)
1078		return;
1079	for (;;) {
1080		count = length > BULK_OUT_SIZE - 1
1081				? BULK_OUT_SIZE - 1 : length;
1082		gspca_dev->usb_buf[0] = tag;
1083		memcpy(&gspca_dev->usb_buf[1], data, count);
1084		ret = usb_bulk_msg(dev,
1085				   usb_sndbulkpipe(dev, 3),
1086				   gspca_dev->usb_buf, count + 1,
1087				   &actual_count, 500);
1088		if (ret < 0) {
1089			pr_err("bulk write error %d tag=%02x\n",
1090				ret, tag);
1091			gspca_dev->usb_err = ret;
1092			return;
1093		}
1094		length -= count;
1095		if (length <= 0)
1096			break;
1097		data += count;
1098	}
1099}
1100
1101static int probe_6810(struct gspca_dev *gspca_dev)
1102{
1103	u8 gpio;
1104	int ret;
1105
1106	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
1107	gpio = gspca_dev->usb_buf[0];
1108	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1109	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1110	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1111	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04);	/* i2c 16 bits */
1112	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);	/* ov??? */
1113	reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x00);
1114	if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1115		return SENSOR_SOI763A;
1116
1117	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1118	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1119	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x7f);	/* (unknown i2c) */
1120	if (i2c_w(gspca_dev, 0x00, 0x00) >= 0)
1121		return -2;
1122
1123	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1124	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1125	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1126	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1127	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x11);	/* tas??? / hv??? */
1128	ret = i2c_r(gspca_dev, 0x00, 1);
1129	if (ret > 0)
1130		return -3;
1131
1132	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1133	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1134	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1135	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x6e);	/* po??? */
1136	ret = i2c_r(gspca_dev, 0x00, 1);
1137	if (ret > 0)
1138		return -4;
1139
1140	ret = i2c_r(gspca_dev, 0x01, 1);
1141	if (ret > 0)
1142		return -5;
1143
1144	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1145	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1146	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1147	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x04);	/* i2c 16 bits */
1148	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5d);	/* mi/mt??? */
1149	ret = i2c_r(gspca_dev, 0x00, 2);
1150	if (ret > 0)
1151		return -6;
1152
1153	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1154	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1155	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1156	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x5c);	/* mi/mt??? */
1157	ret = i2c_r(gspca_dev, 0x36, 2);
1158	if (ret > 0)
1159		return -7;
1160
1161	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1162	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1163	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1164	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x61);	/* (unknown i2c) */
1165	reg_w(gspca_dev, TP6800_R1A_SIF_TX_DATA2, 0x10);
1166	if (i2c_w(gspca_dev, 0xff, 0x00) >= 0)
1167		return -8;
1168
1169	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1170	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio);
1171	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, gpio | 0x20);
1172	reg_w(gspca_dev, TP6800_R10_SIF_TYPE, 0x00);	/* i2c 8 bits */
1173	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);	/* cx0342 */
1174	ret = i2c_r(gspca_dev, 0x00, 1);
1175	if (ret > 0)
1176		return SENSOR_CX0342;
1177	return -9;
1178}
1179
1180static void cx0342_6810_init(struct gspca_dev *gspca_dev)
1181{
1182	static const struct cmd reg_init_1[] = {
1183		{TP6800_R2F_TIMING_CFG, 0x2f},
1184		{0x25, 0x02},
1185		{TP6800_R21_ENDP_1_CTL, 0x00},
1186		{TP6800_R3F_FRAME_RATE, 0x80},
1187		{TP6800_R2F_TIMING_CFG, 0x2f},
1188		{TP6800_R18_GPIO_DATA, 0xe1},
1189		{TP6800_R18_GPIO_DATA, 0xc1},
1190		{TP6800_R18_GPIO_DATA, 0xe1},
1191		{TP6800_R11_SIF_CONTROL, 0x00},
1192	};
1193	static const struct cmd reg_init_2[] = {
1194		{TP6800_R78_FORMAT, 0x48},
1195		{TP6800_R11_SIF_CONTROL, 0x00},
1196	};
1197	static const struct cmd sensor_init[] = {
1198		{CX0342_OUTPUT_CTRL, 0x07},
1199		{CX0342_BYPASS_MODE, 0x58},
1200		{CX0342_GPXLTHD_L, 0x28},
1201		{CX0342_RBPXLTHD_L, 0x28},
1202		{CX0342_PLANETHD_L, 0x50},
1203		{CX0342_PLANETHD_H, 0x03},
1204		{CX0342_RB_GAP_L, 0xff},
1205		{CX0342_RB_GAP_H, 0x07},
1206		{CX0342_G_GAP_L, 0xff},
1207		{CX0342_G_GAP_H, 0x07},
1208		{CX0342_RST_OVERFLOW_L, 0x5c},
1209		{CX0342_RST_OVERFLOW_H, 0x01},
1210		{CX0342_DATA_OVERFLOW_L, 0xfc},
1211		{CX0342_DATA_OVERFLOW_H, 0x03},
1212		{CX0342_DATA_UNDERFLOW_L, 0x00},
1213		{CX0342_DATA_UNDERFLOW_H, 0x00},
1214		{CX0342_SYS_CTRL_0, 0x40},
1215		{CX0342_GLOBAL_GAIN, 0x01},
1216		{CX0342_CLOCK_GEN, 0x00},
1217		{CX0342_SYS_CTRL_0, 0x02},
1218		{CX0342_IDLE_CTRL, 0x05},
1219		{CX0342_ADCGN, 0x00},
1220		{CX0342_ADC_CTL, 0x00},
1221		{CX0342_LVRST_BLBIAS, 0x01},
1222		{CX0342_VTHSEL, 0x0b},
1223		{CX0342_RAMP_RIV, 0x0b},
1224		{CX0342_LDOSEL, 0x07},
1225		{CX0342_SPV_VALUE_L, 0x40},
1226		{CX0342_SPV_VALUE_H, 0x02},
1227
1228		{CX0342_AUTO_ADC_CALIB, 0x81},
1229		{CX0342_TIMING_EN, 0x01},
1230	};
1231
1232	reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1233	reg_w_buf(gspca_dev, tp6810_cx_init_common,
1234			ARRAY_SIZE(tp6810_cx_init_common));
1235	reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1236
1237	reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);	/* cx0342 I2C addr */
1238	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1239	i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
1240}
1241
1242static void soi763a_6810_init(struct gspca_dev *gspca_dev)
1243{
1244	static const struct cmd reg_init_1[] = {
1245		{TP6800_R2F_TIMING_CFG, 0x2f},
1246		{TP6800_R18_GPIO_DATA, 0xe1},
1247		{0x25, 0x02},
1248		{TP6800_R21_ENDP_1_CTL, 0x00},
1249		{TP6800_R3F_FRAME_RATE, 0x80},
1250		{TP6800_R2F_TIMING_CFG, 0x2f},
1251		{TP6800_R18_GPIO_DATA, 0xc1},
1252	};
1253	static const struct cmd reg_init_2[] = {
1254		{TP6800_R78_FORMAT, 0x54},
1255	};
1256	static const struct cmd sensor_init[] = {
1257		{0x00, 0x00},
1258		{0x01, 0x80},
1259		{0x02, 0x80},
1260		{0x03, 0x90},
1261		{0x04, 0x20},
1262		{0x05, 0x20},
1263		{0x06, 0x80},
1264		{0x07, 0x00},
1265		{0x08, 0xff},
1266		{0x09, 0xff},
1267		{0x0a, 0x76},		/* 7630 = soi673a */
1268		{0x0b, 0x30},
1269		{0x0c, 0x20},
1270		{0x0d, 0x20},
1271		{0x0e, 0xff},
1272		{0x0f, 0xff},
1273		{0x10, 0x41},
1274		{0x15, 0x14},
1275		{0x11, 0x40},
1276		{0x12, 0x48},
1277		{0x13, 0x80},
1278		{0x14, 0x80},
1279		{0x16, 0x03},
1280		{0x28, 0xb0},
1281		{0x71, 0x20},
1282		{0x75, 0x8e},
1283		{0x17, 0x1b},
1284		{0x18, 0xbd},
1285		{0x19, 0x05},
1286		{0x1a, 0xf6},
1287		{0x1b, 0x04},
1288		{0x1c, 0x7f},		/* omnivision */
1289		{0x1d, 0xa2},
1290		{0x1e, 0x00},
1291		{0x1f, 0x00},
1292		{0x20, 0x45},
1293		{0x21, 0x80},
1294		{0x22, 0x80},
1295		{0x23, 0xee},
1296		{0x24, 0x50},
1297		{0x25, 0x7a},
1298		{0x26, 0xa0},
1299		{0x27, 0x9a},
1300		{0x29, 0x30},
1301		{0x2a, 0x80},
1302		{0x2b, 0x00},
1303		{0x2c, 0xac},
1304		{0x2d, 0x05},
1305		{0x2e, 0x80},
1306		{0x2f, 0x3c},
1307		{0x30, 0x22},
1308		{0x31, 0x00},
1309		{0x32, 0x86},
1310		{0x33, 0x08},
1311		{0x34, 0xff},
1312		{0x35, 0xff},
1313		{0x36, 0xff},
1314		{0x37, 0xff},
1315		{0x38, 0xff},
1316		{0x39, 0xff},
1317		{0x3a, 0xfe},
1318		{0x3b, 0xfe},
1319		{0x3c, 0xfe},
1320		{0x3d, 0xfe},
1321		{0x3e, 0xfe},
1322		{0x3f, 0x71},
1323		{0x40, 0xff},
1324		{0x41, 0xff},
1325		{0x42, 0xff},
1326		{0x43, 0xff},
1327		{0x44, 0xff},
1328		{0x45, 0xff},
1329		{0x46, 0xff},
1330		{0x47, 0xff},
1331		{0x48, 0xff},
1332		{0x49, 0xff},
1333		{0x4a, 0xfe},
1334		{0x4b, 0xff},
1335		{0x4c, 0x00},
1336		{0x4d, 0x00},
1337		{0x4e, 0xff},
1338		{0x4f, 0xff},
1339		{0x50, 0xff},
1340		{0x51, 0xff},
1341		{0x52, 0xff},
1342		{0x53, 0xff},
1343		{0x54, 0xff},
1344		{0x55, 0xff},
1345		{0x56, 0xff},
1346		{0x57, 0xff},
1347		{0x58, 0xff},
1348		{0x59, 0xff},
1349		{0x5a, 0xff},
1350		{0x5b, 0xfe},
1351		{0x5c, 0xff},
1352		{0x5d, 0x8f},
1353		{0x5e, 0xff},
1354		{0x5f, 0x8f},
1355		{0x60, 0xa2},
1356		{0x61, 0x4a},
1357		{0x62, 0xf3},
1358		{0x63, 0x75},
1359		{0x64, 0xf0},
1360		{0x65, 0x00},
1361		{0x66, 0x55},
1362		{0x67, 0x92},
1363		{0x68, 0xa0},
1364		{0x69, 0x4a},
1365		{0x6a, 0x22},
1366		{0x6b, 0x00},
1367		{0x6c, 0x33},
1368		{0x6d, 0x44},
1369		{0x6e, 0x22},
1370		{0x6f, 0x84},
1371		{0x70, 0x0b},
1372		{0x72, 0x10},
1373		{0x73, 0x50},
1374		{0x74, 0x21},
1375		{0x76, 0x00},
1376		{0x77, 0xa5},
1377		{0x78, 0x80},
1378		{0x79, 0x80},
1379		{0x7a, 0x80},
1380		{0x7b, 0xe2},
1381		{0x7c, 0x00},
1382		{0x7d, 0xf7},
1383		{0x7e, 0x00},
1384		{0x7f, 0x00},
1385	};
1386
1387	reg_w_buf(gspca_dev, reg_init_1, ARRAY_SIZE(reg_init_1));
1388	reg_w_buf(gspca_dev, tp6810_ov_init_common,
1389			ARRAY_SIZE(tp6810_ov_init_common));
1390	reg_w_buf(gspca_dev, reg_init_2, ARRAY_SIZE(reg_init_2));
1391
1392	i2c_w(gspca_dev, 0x12, 0x80);		/* sensor reset */
1393	msleep(10);
1394	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
1395}
1396
1397/* set the gain and exposure */
1398static void setexposure(struct gspca_dev *gspca_dev, s32 expo, s32 gain,
1399							s32 blue, s32 red)
1400{
1401	struct sd *sd = (struct sd *) gspca_dev;
1402
1403	if (sd->sensor == SENSOR_CX0342) {
1404		expo = (expo << 2) - 1;
1405		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, expo);
1406		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, expo >> 8);
1407		if (sd->bridge == BRIDGE_TP6800)
1408			i2c_w(gspca_dev, CX0342_RAW_GBGAIN_H,
1409						gain >> 8);
1410		i2c_w(gspca_dev, CX0342_RAW_GBGAIN_L, gain);
1411		if (sd->bridge == BRIDGE_TP6800)
1412			i2c_w(gspca_dev, CX0342_RAW_GRGAIN_H,
1413					gain >> 8);
1414		i2c_w(gspca_dev, CX0342_RAW_GRGAIN_L, gain);
1415		if (sd->sensor == SENSOR_CX0342) {
1416			if (sd->bridge == BRIDGE_TP6800)
1417				i2c_w(gspca_dev, CX0342_RAW_BGAIN_H,
1418						blue >> 8);
1419			i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, blue);
1420			if (sd->bridge == BRIDGE_TP6800)
1421				i2c_w(gspca_dev, CX0342_RAW_RGAIN_H,
1422						red >> 8);
1423			i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, red);
1424		}
1425		i2c_w(gspca_dev, CX0342_SYS_CTRL_0,
1426				sd->bridge == BRIDGE_TP6800 ? 0x80 : 0x81);
1427		return;
1428	}
1429
1430	/* soi763a */
1431	i2c_w(gspca_dev, 0x10,		/* AEC_H (exposure time) */
1432			 expo);
1433/*	i2c_w(gspca_dev, 0x76, 0x02);	 * AEC_L ([1:0] */
1434	i2c_w(gspca_dev, 0x00,		/* gain */
1435			 gain);
1436}
1437
1438/* set the JPEG quantization tables */
1439static void set_dqt(struct gspca_dev *gspca_dev, u8 q)
1440{
1441	struct sd *sd = (struct sd *) gspca_dev;
1442
1443	/* update the jpeg quantization tables */
1444	gspca_dbg(gspca_dev, D_STREAM, "q %d -> %d\n", sd->quality, q);
1445	sd->quality = q;
1446	if (q > 16)
1447		q = 16;
1448	if (sd->sensor == SENSOR_SOI763A)
1449		jpeg_set_qual(sd->jpeg_hdr, jpeg_q[q]);
1450	else
1451		memcpy(&sd->jpeg_hdr[JPEG_QT0_OFFSET - 1],
1452			DQT[q], sizeof DQT[0]);
1453}
1454
1455/* set the JPEG compression quality factor */
1456static void setquality(struct gspca_dev *gspca_dev, s32 q)
1457{
1458	struct sd *sd = (struct sd *) gspca_dev;
1459
1460	if (q != 16)
1461		q = 15 - q;
1462
1463	reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x00);
1464	reg_w(gspca_dev, TP6800_R79_QUALITY, 0x04);
1465	reg_w(gspca_dev, TP6800_R79_QUALITY, q);
1466
1467	/* auto quality */
1468	if (q == 15 && sd->bridge == BRIDGE_TP6810) {
1469		msleep(4);
1470		reg_w(gspca_dev, TP6800_R7A_BLK_THRLD, 0x19);
1471	}
1472}
1473
1474static const u8 color_null[18] = {
1475	0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1476	0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1477	0x00, 0x00, 0x00, 0x00, 0x00, 0x00
1478};
1479static const u8 color_gain[NSENSORS][18] = {
1480[SENSOR_CX0342] =
1481	{0x4c, 0x00, 0xa9, 0x00, 0x31, 0x00,	/* Y R/G/B (LE values) */
1482	 0xb6, 0x03, 0x6c, 0x03, 0xe0, 0x00,	/* U R/G/B */
1483	 0xdf, 0x00, 0x46, 0x03, 0xdc, 0x03},	/* V R/G/B */
1484[SENSOR_SOI763A] =
1485	{0x4c, 0x00, 0x95, 0x00, 0x1d, 0x00,	/* Y R/G/B (LE values) */
1486	 0xb6, 0x03, 0x6c, 0x03, 0xd7, 0x00,	/* U R/G/B */
1487	 0xd5, 0x00, 0x46, 0x03, 0xdc, 0x03},	/* V R/G/B */
1488};
1489
1490static void setgamma(struct gspca_dev *gspca_dev, s32 gamma)
1491{
1492	struct sd *sd = (struct sd *) gspca_dev;
1493#define NGAMMA 6
1494	static const u8 gamma_tb[NGAMMA][3][1024] = {
1495	    {				/* gamma 0 - from tp6800 + soi763a */
1496		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1497		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1498		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1499		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1500		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1501		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1502		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1503		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1504		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1505		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1506		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1507		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1508		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1509		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1510		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1511		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1512		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1513		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1514		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1515		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1516		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1517		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1518		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1519		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1520		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1521		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1522		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1523		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1524		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1525		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1526		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1527		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1528		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1529		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1530		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1531		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1532		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1533		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1534		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1535		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1536		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1537		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1538		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1539		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1540		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1541		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1542		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1543		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1544		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1545		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1546		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1547		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1548		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1549		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1550		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1551		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1552		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1553		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1554		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1555		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1556		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1557		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1558		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1559		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1560		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1561		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1562		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1563		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1564		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1565		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1566		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1567		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1568		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1569		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1570		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1571		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1572		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1573		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1574		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1575		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1576		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1577		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1578		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1579		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1580		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1581		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1582		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1583		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1584		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1585		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1586		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1587		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1588		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1589		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1590		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1591		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1592		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1593		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1594		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1595		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1596		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1597		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1598		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1599		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1600		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1601		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1602		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1603		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1604		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1605		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1606		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1607		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1608		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1609		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1610		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1611		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1612		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1613		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1614		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1615		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1616		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1617		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1618		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1619		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1620		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1621		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1622		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1623		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1624		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1625		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1626		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1627		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1628		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1629		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1630		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1631		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1632		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1633		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1634		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1635		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1636		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1637		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1638		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1639		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1640		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1641		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1642		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1643		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1644		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1645		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1646		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1647		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1648		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1649		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1650		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1651		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1652		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1653		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1654		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1655		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1656		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1657		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1658		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
1659		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1660		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1661		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1662		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1663		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1664		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1665		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1666		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1667		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1668		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1669		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1670		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1671		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1672		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1673		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1674		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1675		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1676		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1677		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1678		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1679		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1680		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1681		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1682		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1683		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1684		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1685		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1686		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1687		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1688		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1689		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1690		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1691		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1692		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1693		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1694		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1695		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1696		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1697		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1698		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1699		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1700		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1701		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1702		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1703		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1704		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1705		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1706		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1707		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1708		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1709		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1710		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1711		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1712		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1713		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1714		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1715		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1716		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1717		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1718		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1719		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1720		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1721		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1722		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1723		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1724		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1725		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1726		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1727		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1728		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1729		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1730		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1731		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1732		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1733		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1734		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1735		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1736		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1737		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1738		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1739		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1740		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1741		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1742		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1743		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1744		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1745		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1746		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1747		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1748		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1749		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1750		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1751		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
1752		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1753		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1754		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1755		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00,
1756		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1757		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1758		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1759		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x02,
1760		 0x02, 0x03, 0x05, 0x07, 0x07, 0x08, 0x09, 0x09,
1761		 0x0a, 0x0c, 0x0c, 0x0d, 0x0e, 0x0e, 0x10, 0x11,
1762		 0x11, 0x12, 0x14, 0x14, 0x15, 0x16, 0x16, 0x17,
1763		 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
1764		 0x1e, 0x1f, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x23,
1765		 0x25, 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x28,
1766		 0x29, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f,
1767		 0x2f, 0x30, 0x30, 0x31, 0x31, 0x33, 0x33, 0x34,
1768		 0x34, 0x34, 0x35, 0x35, 0x37, 0x37, 0x38, 0x38,
1769		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3b, 0x3c,
1770		 0x3c, 0x3d, 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x40,
1771		 0x42, 0x42, 0x43, 0x43, 0x44, 0x44, 0x44, 0x45,
1772		 0x45, 0x47, 0x47, 0x47, 0x48, 0x48, 0x49, 0x49,
1773		 0x4a, 0x4a, 0x4a, 0x4b, 0x4b, 0x4b, 0x4c, 0x4c,
1774		 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50, 0x50,
1775		 0x52, 0x52, 0x52, 0x53, 0x53, 0x54, 0x54, 0x54,
1776		 0x55, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58, 0x58,
1777		 0x59, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
1778		 0x5b, 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5e, 0x5f,
1779		 0x5f, 0x5f, 0x60, 0x60, 0x60, 0x61, 0x61, 0x61,
1780		 0x62, 0x62, 0x62, 0x63, 0x63, 0x63, 0x65, 0x65,
1781		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68,
1782		 0x68, 0x68, 0x69, 0x69, 0x69, 0x69, 0x6a, 0x6a,
1783		 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1784		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
1785		 0x70, 0x71, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73,
1786		 0x74, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x76,
1787		 0x77, 0x77, 0x77, 0x78, 0x78, 0x78, 0x79, 0x79,
1788		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
1789		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
1790		 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x80,
1791		 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
1792		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
1793		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
1794		 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b,
1795		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e,
1796		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90,
1797		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
1798		 0x92, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93,
1799		 0x94, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96,
1800		 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
1801		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
1802		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
1803		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
1804		 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0,
1805		 0xa1, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2,
1806		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
1807		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6,
1808		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1809		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
1810		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
1811		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xae,
1812		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
1813		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1814		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
1815		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
1816		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
1817		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
1818		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
1819		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
1820		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1821		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
1822		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
1823		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
1824		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6,
1825		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
1826		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
1827		 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc,
1828		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1829		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1830		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1,
1831		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
1832		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6,
1833		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
1834		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
1835		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
1836		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
1837		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
1838		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
1839		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
1840		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
1841		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
1842		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7,
1843		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
1844		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
1845		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
1846		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
1847		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
1848		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
1849		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
1850		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
1851		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1852		 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
1853		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1854		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1855		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1856		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1857		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1858		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1859		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1860		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1861		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1862		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1863		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1864		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1865		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1866		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1867		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1868		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1869		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1870		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1871		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1872		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1873		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1874		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1875		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1876		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1877		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1878		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1879		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
1880	    },
1881	    {				/* gamma 1 - from tp6810 + soi763a */
1882		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1883		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1884		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
1885		 0x01, 0x02, 0x03, 0x05, 0x07, 0x08, 0x09, 0x0a,
1886		 0x0c, 0x0d, 0x0e, 0x10, 0x11, 0x12, 0x14, 0x15,
1887		 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
1888		 0x1f, 0x20, 0x22, 0x22, 0x23, 0x25, 0x26, 0x27,
1889		 0x27, 0x28, 0x29, 0x2b, 0x2b, 0x2c, 0x2d, 0x2f,
1890		 0x2f, 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x35,
1891		 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c,
1892		 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
1893		 0x43, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48, 0x49,
1894		 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4d,
1895		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
1896		 0x54, 0x54, 0x55, 0x56, 0x56, 0x58, 0x58, 0x59,
1897		 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5e,
1898		 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61, 0x61,
1899		 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x65, 0x66,
1900		 0x66, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69, 0x69,
1901		 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e,
1902		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
1903		 0x73, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
1904		 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
1905		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c,
1906		 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x80,
1907		 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84, 0x84,
1908		 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
1909		 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
1910		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
1911		 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91,
1912		 0x91, 0x91, 0x92, 0x92, 0x92, 0x92, 0x93, 0x93,
1913		 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x97,
1914		 0x97, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
1915		 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
1916		 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9e,
1917		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
1918		 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
1919		 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
1920		 0xa5, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
1921		 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xab,
1922		 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xae,
1923		 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
1924		 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
1925		 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
1926		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
1927		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
1928		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
1929		 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
1930		 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
1931		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
1932		 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4,
1933		 0xc4, 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
1934		 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
1935		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
1936		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
1937		 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
1938		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
1939		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
1940		 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
1941		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
1942		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
1943		 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
1944		 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
1945		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
1946		 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
1947		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
1948		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
1949		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
1950		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
1951		 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8,
1952		 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
1953		 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
1954		 0xec, 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed,
1955		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
1956		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
1957		 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
1958		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
1959		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
1960		 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
1961		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
1962		 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
1963		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
1964		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
1965		 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe,
1966		 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
1967		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1968		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1969		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1970		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1971		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1972		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1973		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1974		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1975		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1976		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1977		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1978		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1979		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1980		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1981		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1982		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1983		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1984		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1985		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1986		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1987		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1988		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1989		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1990		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1991		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1992		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1993		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1994		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1995		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1996		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1997		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1998		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
1999		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2000		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2001		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2002		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2003		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2004		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2005		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2006		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2007		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2008		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2009		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2010		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2011		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2012		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2013		 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03,
2014		 0x05, 0x07, 0x07, 0x08, 0x09, 0x0a, 0x0c, 0x0d,
2015		 0x0e, 0x10, 0x10, 0x11, 0x12, 0x14, 0x15, 0x15,
2016		 0x16, 0x17, 0x18, 0x1a, 0x1a, 0x1b, 0x1c, 0x1e,
2017		 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x25,
2018		 0x26, 0x27, 0x27, 0x28, 0x29, 0x29, 0x2b, 0x2c,
2019		 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x31,
2020		 0x33, 0x34, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38,
2021		 0x39, 0x39, 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d,
2022		 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x43,
2023		 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x48,
2024		 0x48, 0x49, 0x49, 0x4a, 0x4a, 0x4b, 0x4b, 0x4c,
2025		 0x4c, 0x4d, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x50,
2026		 0x52, 0x52, 0x53, 0x53, 0x53, 0x54, 0x54, 0x55,
2027		 0x55, 0x56, 0x56, 0x56, 0x58, 0x58, 0x59, 0x59,
2028		 0x5a, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2029		 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60, 0x60,
2030		 0x61, 0x61, 0x62, 0x62, 0x62, 0x63, 0x63, 0x65,
2031		 0x65, 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x67,
2032		 0x68, 0x68, 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a,
2033		 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e,
2034		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2035		 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74, 0x74,
2036		 0x75, 0x75, 0x75, 0x77, 0x77, 0x77, 0x78, 0x78,
2037		 0x78, 0x79, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a,
2038		 0x7b, 0x7b, 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d,
2039		 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2040		 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x82,
2041		 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85, 0x86,
2042		 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89, 0x89,
2043		 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b,
2044		 0x8b, 0x8d, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2045		 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2046		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2047		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2048		 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2049		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2050		 0x9a, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b,
2051		 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2052		 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2053		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2054		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2055		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2056		 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2057		 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2058		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
2059		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2060		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
2061		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
2062		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
2063		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6,
2064		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8,
2065		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
2066		 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba, 0xbc, 0xbc,
2067		 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd,
2068		 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2069		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2070		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
2071		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2072		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2073		 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9,
2074		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
2075		 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2076		 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
2077		 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xcf,
2078		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2079		 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
2080		 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4,
2081		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2082		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2083		 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2084		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
2085		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2086		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf,
2087		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2088		 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2,
2089		 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3,
2090		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2091		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2092		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2093		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
2094		 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2095		 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2096		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
2097		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2098		 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
2099		 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2100		 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5,
2101		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7,
2102		 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8,
2103		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2104		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2105		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc,
2106		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2107		 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2108		 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff,
2109		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2110		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2111		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2112		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2113		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2114		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2115		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2116		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2117		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2118		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2119		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2120		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2121		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2122		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2123		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2124		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2125		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2126		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2127		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2128		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2129		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2130		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2131		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2132		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2133		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2134		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2135		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2136		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2137		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2138		{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2139		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2140		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2141		 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
2142		 0x00, 0x00, 0x01, 0x02, 0x03, 0x05, 0x05, 0x07,
2143		 0x08, 0x09, 0x0a, 0x0a, 0x0c, 0x0d, 0x0e, 0x0e,
2144		 0x10, 0x11, 0x12, 0x12, 0x14, 0x15, 0x16, 0x16,
2145		 0x17, 0x18, 0x18, 0x1a, 0x1b, 0x1b, 0x1c, 0x1e,
2146		 0x1e, 0x1f, 0x1f, 0x20, 0x22, 0x22, 0x23, 0x23,
2147		 0x25, 0x26, 0x26, 0x27, 0x27, 0x28, 0x29, 0x29,
2148		 0x2b, 0x2b, 0x2c, 0x2c, 0x2d, 0x2d, 0x2f, 0x30,
2149		 0x30, 0x31, 0x31, 0x33, 0x33, 0x34, 0x34, 0x35,
2150		 0x35, 0x37, 0x37, 0x38, 0x38, 0x39, 0x39, 0x3a,
2151		 0x3a, 0x3b, 0x3b, 0x3b, 0x3c, 0x3c, 0x3d, 0x3d,
2152		 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x42, 0x42, 0x43,
2153		 0x43, 0x44, 0x44, 0x45, 0x45, 0x47, 0x47, 0x47,
2154		 0x48, 0x48, 0x49, 0x49, 0x49, 0x4a, 0x4a, 0x4b,
2155		 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d, 0x4f,
2156		 0x4f, 0x50, 0x50, 0x50, 0x52, 0x52, 0x52, 0x53,
2157		 0x53, 0x54, 0x54, 0x54, 0x55, 0x55, 0x55, 0x56,
2158		 0x56, 0x58, 0x58, 0x58, 0x59, 0x59, 0x59, 0x5a,
2159		 0x5a, 0x5a, 0x5b, 0x5b, 0x5b, 0x5c, 0x5c, 0x5c,
2160		 0x5e, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f, 0x60, 0x60,
2161		 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x62, 0x63,
2162		 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x66,
2163		 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x68, 0x69,
2164		 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2165		 0x6c, 0x6d, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e,
2166		 0x6f, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x70, 0x71,
2167		 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74, 0x74,
2168		 0x74, 0x74, 0x75, 0x75, 0x75, 0x75, 0x77, 0x77,
2169		 0x77, 0x78, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79,
2170		 0x79, 0x7a, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b,
2171		 0x7b, 0x7c, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d,
2172		 0x7d, 0x7f, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80,
2173		 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82,
2174		 0x82, 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2175		 0x85, 0x86, 0x86, 0x86, 0x86, 0x88, 0x88, 0x88,
2176		 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2177		 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2178		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8e,
2179		 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90,
2180		 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2181		 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94, 0x94,
2182		 0x94, 0x94, 0x94, 0x96, 0x96, 0x96, 0x96, 0x96,
2183		 0x97, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98, 0x98,
2184		 0x98, 0x99, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2185		 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9b,
2186		 0x9c, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2187		 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0,
2188		 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2189		 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3,
2190		 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa4,
2191		 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6,
2192		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa8,
2193		 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab,
2194		 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac,
2195		 0xad, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae,
2196		 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf,
2197		 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2198		 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2,
2199		 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4,
2200		 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6,
2201		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2202		 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2203		 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba, 0xba,
2204		 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2205		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2206		 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2207		 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2208		 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3,
2209		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2210		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2211		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2212		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2213		 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2214		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2215		 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2216		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2217		 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2218		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2219		 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
2220		 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7,
2221		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2222		 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9,
2223		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
2224		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
2225		 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde, 0xde,
2226		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0,
2227		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
2228		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3,
2229		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4,
2230		 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
2231		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
2232		 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2233		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
2234		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2235		 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2236		 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef, 0xef,
2237		 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1,
2238		 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2239		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2240		 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2241		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
2242		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2243		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2244		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc,
2245		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd,
2246		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
2247		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2248		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2249		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2250		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2251		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2252		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2253		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2254		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2255		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2256		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2257		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2258		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2259		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2260		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2261		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2262		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2263		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2264		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2265		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
2266	    },
2267	    {							/* gamma 2 */
2268		{0x00, 0x01, 0x02, 0x05, 0x07, 0x08, 0x0a, 0x0c,
2269		 0x0d, 0x0e, 0x10, 0x12, 0x14, 0x15, 0x16, 0x17,
2270		 0x18, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x22,
2271		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
2272		 0x2d, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34,
2273		 0x35, 0x37, 0x38, 0x38, 0x39, 0x3a, 0x3b, 0x3b,
2274		 0x3c, 0x3d, 0x3f, 0x3f, 0x40, 0x42, 0x42, 0x43,
2275		 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x49, 0x49,
2276		 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4f, 0x4f,
2277		 0x50, 0x50, 0x52, 0x53, 0x53, 0x54, 0x54, 0x55,
2278		 0x55, 0x56, 0x56, 0x58, 0x58, 0x59, 0x5a, 0x5a,
2279		 0x5b, 0x5b, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
2280		 0x60, 0x60, 0x61, 0x61, 0x62, 0x62, 0x63, 0x63,
2281		 0x65, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
2282		 0x68, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2283		 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x70,
2284		 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x73, 0x74,
2285		 0x74, 0x75, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78,
2286		 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
2287		 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
2288		 0x7f, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82,
2289		 0x82, 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85,
2290		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x89, 0x89,
2291		 0x89, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8d,
2292		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
2293		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
2294		 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
2295		 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2296		 0x97, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99,
2297		 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2298		 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e,
2299		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2300		 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2, 0xa3,
2301		 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5,
2302		 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8,
2303		 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2304		 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad,
2305		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
2306		 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0,
2307		 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2308		 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4,
2309		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
2310		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
2311		 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba,
2312		 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2313		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
2314		 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0,
2315		 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2316		 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4,
2317		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6,
2318		 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7,
2319		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2320		 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2321		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2322		 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce,
2323		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
2324		 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2325		 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4,
2326		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2327		 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2328		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
2329		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2330		 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2331		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2332		 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
2333		 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
2334		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2335		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
2336		 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2337		 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6,
2338		 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2339		 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9,
2340		 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
2341		 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2342		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2343		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2344		 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1,
2345		 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
2346		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
2347		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
2348		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2349		 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9,
2350		 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa,
2351		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2352		 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2353		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2354		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2355		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2356		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2357		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2358		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2359		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2360		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2361		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2362		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2363		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2364		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2365		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2366		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2367		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2368		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2369		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2370		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2371		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2372		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2373		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2374		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2375		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2376		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2377		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2378		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2379		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2380		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2381		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2382		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2383		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2384		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2385		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2386		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2387		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2388		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2389		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2390		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2391		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2392		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2393		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2394		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2395		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2396		{0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x05,
2397		 0x07, 0x08, 0x09, 0x0a, 0x0d, 0x0e, 0x10, 0x11,
2398		 0x12, 0x14, 0x15, 0x16, 0x16, 0x17, 0x18, 0x1a,
2399		 0x1b, 0x1c, 0x1e, 0x1f, 0x20, 0x20, 0x22, 0x23,
2400		 0x25, 0x26, 0x26, 0x27, 0x28, 0x29, 0x29, 0x2b,
2401		 0x2c, 0x2d, 0x2d, 0x2f, 0x30, 0x30, 0x31, 0x33,
2402		 0x33, 0x34, 0x35, 0x35, 0x37, 0x38, 0x38, 0x39,
2403		 0x3a, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3d, 0x3f,
2404		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x43, 0x44, 0x44,
2405		 0x45, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49, 0x4a,
2406		 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d, 0x4d,
2407		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2408		 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x56, 0x58,
2409		 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5a, 0x5b, 0x5b,
2410		 0x5c, 0x5c, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x5f,
2411		 0x60, 0x60, 0x61, 0x61, 0x61, 0x62, 0x62, 0x63,
2412		 0x63, 0x63, 0x65, 0x65, 0x65, 0x66, 0x66, 0x67,
2413		 0x67, 0x67, 0x68, 0x68, 0x68, 0x69, 0x69, 0x69,
2414		 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6d,
2415		 0x6e, 0x6e, 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70,
2416		 0x70, 0x71, 0x71, 0x71, 0x73, 0x73, 0x73, 0x73,
2417		 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77, 0x77,
2418		 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x79,
2419		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7b, 0x7c,
2420		 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f,
2421		 0x7f, 0x80, 0x80, 0x80, 0x80, 0x81, 0x81, 0x81,
2422		 0x82, 0x82, 0x82, 0x82, 0x84, 0x84, 0x84, 0x84,
2423		 0x85, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86, 0x88,
2424		 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x89, 0x8a,
2425		 0x8a, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8b, 0x8d,
2426		 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f,
2427		 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x90, 0x91,
2428		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2429		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2430		 0x94, 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
2431		 0x97, 0x98, 0x98, 0x98, 0x98, 0x98, 0x99, 0x99,
2432		 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a, 0x9a, 0x9b,
2433		 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9c,
2434		 0x9d, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e,
2435		 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa0, 0xa0, 0xa1,
2436		 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa2,
2437		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2438		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
2439		 0xa6, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2440		 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2441		 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2442		 0xac, 0xac, 0xad, 0xad, 0xad, 0xad, 0xad, 0xae,
2443		 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf,
2444		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2445		 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2,
2446		 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb3,
2447		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
2448		 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb7,
2449		 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2450		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2451		 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2452		 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2453		 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
2454		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0,
2455		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
2456		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2457		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5,
2458		 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
2459		 0xc7, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9,
2460		 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xca,
2461		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
2462		 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2463		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2464		 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf,
2465		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2466		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2467		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2468		 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2469		 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
2470		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2471		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2472		 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
2473		 0xdb, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd,
2474		 0xde, 0xde, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2475		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
2476		 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1,
2477		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2478		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2479		 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
2480		 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
2481		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2482		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2483		 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2484		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2485		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
2486		 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xee, 0xef,
2487		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2488		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2489		 0xf1, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4,
2490		 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5,
2491		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
2492		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2493		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
2494		 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
2495		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb,
2496		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2497		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2498		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2499		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2500		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2501		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2502		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2503		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2504		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2505		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2506		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2507		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2508		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2509		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2510		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2511		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2512		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2513		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2514		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2515		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2516		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2517		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2518		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2519		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2520		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2521		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2522		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2523		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
2524		{0x00, 0x00, 0x00, 0x01, 0x02, 0x05, 0x07, 0x08,
2525		 0x09, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x12, 0x14,
2526		 0x15, 0x16, 0x17, 0x18, 0x1a, 0x1b, 0x1c, 0x1e,
2527		 0x1f, 0x20, 0x20, 0x22, 0x23, 0x25, 0x26, 0x27,
2528		 0x28, 0x28, 0x29, 0x2b, 0x2c, 0x2d, 0x2d, 0x2f,
2529		 0x30, 0x31, 0x31, 0x33, 0x34, 0x35, 0x35, 0x37,
2530		 0x38, 0x38, 0x39, 0x3a, 0x3a, 0x3b, 0x3c, 0x3c,
2531		 0x3d, 0x3f, 0x3f, 0x40, 0x40, 0x42, 0x43, 0x43,
2532		 0x44, 0x44, 0x45, 0x47, 0x47, 0x48, 0x48, 0x49,
2533		 0x4a, 0x4a, 0x4b, 0x4b, 0x4c, 0x4c, 0x4d, 0x4d,
2534		 0x4f, 0x4f, 0x50, 0x50, 0x52, 0x52, 0x53, 0x53,
2535		 0x54, 0x54, 0x55, 0x55, 0x56, 0x56, 0x58, 0x58,
2536		 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c,
2537		 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2538		 0x61, 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65,
2539		 0x65, 0x66, 0x66, 0x67, 0x67, 0x67, 0x68, 0x68,
2540		 0x69, 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6c, 0x6c,
2541		 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6e, 0x6f, 0x6f,
2542		 0x70, 0x70, 0x70, 0x71, 0x71, 0x71, 0x73, 0x73,
2543		 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x75, 0x77,
2544		 0x77, 0x78, 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a,
2545		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2546		 0x7c, 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80,
2547		 0x80, 0x80, 0x81, 0x81, 0x81, 0x81, 0x82, 0x82,
2548		 0x82, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x85,
2549		 0x86, 0x86, 0x86, 0x88, 0x88, 0x88, 0x88, 0x89,
2550		 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8a, 0x8b, 0x8b,
2551		 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e,
2552		 0x8e, 0x8f, 0x8f, 0x8f, 0x8f, 0x90, 0x90, 0x90,
2553		 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92, 0x92,
2554		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x94,
2555		 0x96, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x97,
2556		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x99,
2557		 0x9a, 0x9a, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b,
2558		 0x9b, 0x9c, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d, 0x9d,
2559		 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9e, 0xa0, 0xa0,
2560		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
2561		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
2562		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2563		 0xa5, 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8,
2564		 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
2565		 0xab, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac, 0xac,
2566		 0xad, 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2567		 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0,
2568		 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
2569		 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
2570		 0xb3, 0xb3, 0xb3, 0xb4, 0xb3, 0xb4, 0xb4, 0xb4,
2571		 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2572		 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb8,
2573		 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
2574		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc,
2575		 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe,
2576		 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf, 0xbf,
2577		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2,
2578		 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3,
2579		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5,
2580		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6,
2581		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2582		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2583		 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb,
2584		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc,
2585		 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce,
2586		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
2587		 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd0,
2588		 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3,
2589		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
2590		 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6,
2591		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8,
2592		 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
2593		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xda,
2594		 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2595		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2596		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2597		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
2598		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2599		 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
2600		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
2601		 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6,
2602		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2603		 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8,
2604		 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9,
2605		 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec,
2606		 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed, 0xed,
2607		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2608		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
2609		 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1,
2610		 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3, 0xf3,
2611		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
2612		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2613		 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7,
2614		 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
2615		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
2616		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2617		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2618		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2619		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2620		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2621		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2622		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2623		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2624		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2625		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2626		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2627		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2628		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2629		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2630		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2631		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2632		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2633		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2634		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2635		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2636		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2637		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2638		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2639		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2640		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2641		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2642		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2643		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2644		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2645		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2646		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2647		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2648		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2649		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2650		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
2651		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
2652	    },
2653	    {				/* gamma 3 - from tp6810 + cx0342 */
2654		{0x08, 0x09, 0x0c, 0x0d, 0x10, 0x11, 0x14, 0x15,
2655		 0x17, 0x18, 0x1a, 0x1c, 0x1e, 0x1f, 0x20, 0x23,
2656		 0x25, 0x26, 0x27, 0x28, 0x2b, 0x2c, 0x2d, 0x2f,
2657		 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38, 0x39,
2658		 0x3a, 0x3b, 0x3c, 0x3d, 0x3f, 0x40, 0x42, 0x43,
2659		 0x44, 0x45, 0x47, 0x48, 0x48, 0x49, 0x4a, 0x4b,
2660		 0x4c, 0x4d, 0x4d, 0x4f, 0x50, 0x52, 0x53, 0x53,
2661		 0x54, 0x55, 0x56, 0x56, 0x58, 0x59, 0x5a, 0x5a,
2662		 0x5b, 0x5c, 0x5c, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
2663		 0x61, 0x62, 0x63, 0x63, 0x65, 0x66, 0x66, 0x67,
2664		 0x68, 0x68, 0x69, 0x69, 0x6a, 0x6c, 0x6c, 0x6d,
2665		 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x73,
2666		 0x73, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77, 0x78,
2667		 0x78, 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c,
2668		 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81,
2669		 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2670		 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2671		 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x8f,
2672		 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92, 0x93,
2673		 0x93, 0x93, 0x94, 0x94, 0x96, 0x96, 0x97, 0x97,
2674		 0x97, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
2675		 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
2676		 0x9e, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
2677		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
2678		 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
2679		 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
2680		 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
2681		 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
2682		 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3,
2683		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2684		 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2685		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
2686		 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf,
2687		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
2688		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5,
2689		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
2690		 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2691		 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
2692		 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce,
2693		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
2694		 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3,
2695		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2696		 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2697		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda,
2698		 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd,
2699		 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf,
2700		 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2701		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
2702		 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4,
2703		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2704		 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8,
2705		 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
2706		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
2707		 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
2708		 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0,
2709		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
2710		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2711		 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2712		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2713		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2714		 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2715		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
2716		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2717		 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd,
2718		 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff,
2719		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2720		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2721		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2722		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2723		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2724		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2725		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2726		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2727		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2728		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2729		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2730		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2731		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2732		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2733		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2734		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2735		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2736		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2737		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2738		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2739		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2740		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2741		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2742		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2743		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2744		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2745		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2746		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2747		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2748		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2749		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2750		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2751		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2752		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2753		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2754		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2755		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2756		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2757		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2758		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2759		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2760		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2761		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2762		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2763		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2764		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2765		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2766		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2767		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2768		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2769		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2770		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2771		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2772		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2773		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2774		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2775		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2776		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2777		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2778		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2779		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2780		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2781		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2782		{0x03, 0x05, 0x07, 0x09, 0x0a, 0x0c, 0x0d, 0x10,
2783		 0x11, 0x12, 0x14, 0x15, 0x17, 0x18, 0x1a, 0x1b,
2784		 0x1c, 0x1e, 0x1f, 0x20, 0x22, 0x23, 0x25, 0x26,
2785		 0x27, 0x28, 0x29, 0x2b, 0x2c, 0x2c, 0x2d, 0x2f,
2786		 0x30, 0x31, 0x33, 0x33, 0x34, 0x35, 0x37, 0x38,
2787		 0x38, 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f,
2788		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
2789		 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b,
2790		 0x4c, 0x4d, 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52,
2791		 0x53, 0x53, 0x54, 0x54, 0x55, 0x55, 0x56, 0x58,
2792		 0x58, 0x59, 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c,
2793		 0x5c, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
2794		 0x61, 0x62, 0x62, 0x63, 0x63, 0x65, 0x65, 0x66,
2795		 0x66, 0x67, 0x67, 0x67, 0x68, 0x68, 0x69, 0x69,
2796		 0x6a, 0x6a, 0x6c, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
2797		 0x6e, 0x6f, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71,
2798		 0x71, 0x73, 0x73, 0x74, 0x74, 0x74, 0x75, 0x75,
2799		 0x77, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79, 0x79,
2800		 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7b, 0x7c, 0x7c,
2801		 0x7d, 0x7d, 0x7d, 0x7f, 0x7f, 0x7f, 0x80, 0x80,
2802		 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x82, 0x84,
2803		 0x84, 0x84, 0x85, 0x85, 0x85, 0x86, 0x86, 0x86,
2804		 0x88, 0x88, 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a,
2805		 0x8a, 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e,
2806		 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f, 0x90, 0x90,
2807		 0x90, 0x91, 0x91, 0x91, 0x91, 0x92, 0x92, 0x92,
2808		 0x93, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96,
2809		 0x96, 0x96, 0x96, 0x97, 0x97, 0x97, 0x98, 0x98,
2810		 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a, 0x9a,
2811		 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
2812		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e,
2813		 0xa0, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1,
2814		 0xa2, 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3,
2815		 0xa4, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5,
2816		 0xa6, 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8,
2817		 0xa9, 0xa9, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab,
2818		 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad,
2819		 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2820		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1,
2821		 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb2,
2822		 0xb3, 0xb3, 0xb3, 0xb3, 0xb3, 0xb4, 0xb4, 0xb4,
2823		 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2824		 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8, 0xb9,
2825		 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xba,
2826		 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
2827		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
2828		 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
2829		 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3,
2830		 0xc3, 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4,
2831		 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2832		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
2833		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca,
2834		 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb,
2835		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2836		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
2837		 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0,
2838		 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1,
2839		 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3, 0xd4,
2840		 0xd4, 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6,
2841		 0xd6, 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7,
2842		 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
2843		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
2844		 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2845		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
2846		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
2847		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1,
2848		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2,
2849		 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3,
2850		 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
2851		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
2852		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
2853		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2854		 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb,
2855		 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec,
2856		 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed, 0xee,
2857		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
2858		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
2859		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2860		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
2861		 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
2862		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
2863		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8,
2864		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
2865		 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2866		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb,
2867		 0xfb, 0xfb, 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc,
2868		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2869		 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe,
2870		 0xfe, 0xfe, 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff,
2871		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2872		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2873		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2874		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2875		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2876		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2877		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2878		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2879		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2880		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2881		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2882		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2883		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2884		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2885		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2886		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2887		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2888		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2889		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2890		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2891		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2892		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2893		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2894		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2895		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2896		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2897		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2898		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2899		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2900		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2901		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2902		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2903		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2904		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2905		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2906		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2907		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2908		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2909		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
2910		{0x07, 0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x12, 0x14,
2911		 0x16, 0x17, 0x18, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
2912		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2d,
2913		 0x2f, 0x30, 0x31, 0x33, 0x34, 0x35, 0x37, 0x38,
2914		 0x39, 0x3a, 0x3b, 0x3b, 0x3c, 0x3d, 0x3f, 0x40,
2915		 0x42, 0x43, 0x44, 0x44, 0x45, 0x47, 0x48, 0x49,
2916		 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4f, 0x50,
2917		 0x52, 0x52, 0x53, 0x54, 0x55, 0x55, 0x56, 0x58,
2918		 0x58, 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e,
2919		 0x5f, 0x5f, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63,
2920		 0x65, 0x65, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
2921		 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e, 0x6e,
2922		 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73, 0x73, 0x74,
2923		 0x74, 0x75, 0x75, 0x77, 0x77, 0x78, 0x78, 0x79,
2924		 0x79, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7c, 0x7d,
2925		 0x7d, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81,
2926		 0x82, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
2927		 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b,
2928		 0x8b, 0x8b, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f,
2929		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
2930		 0x92, 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96,
2931		 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
2932		 0x99, 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
2933		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
2934		 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
2935		 0xa3, 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5,
2936		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9,
2937		 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac, 0xac, 0xac,
2938		 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xaf, 0xaf,
2939		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1,
2940		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
2941		 0xb4, 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
2942		 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9,
2943		 0xb9, 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc,
2944		 0xbd, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
2945		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc2,
2946		 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3, 0xc3, 0xc4,
2947		 0xc4, 0xc4, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
2948		 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9,
2949		 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb,
2950		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd,
2951		 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf,
2952		 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1,
2953		 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3, 0xd3,
2954		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
2955		 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8,
2956		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
2957		 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdd,
2958		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xde,
2959		 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0,
2960		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
2961		 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
2962		 0xe4, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5,
2963		 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
2964		 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9,
2965		 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb, 0xeb, 0xeb,
2966		 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
2967		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
2968		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
2969		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
2970		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
2971		 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6,
2972		 0xf6, 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7,
2973		 0xf8, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9,
2974		 0xf9, 0xf9, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
2975		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
2976		 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
2977		 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd, 0xfd,
2978		 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe, 0xff,
2979		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2980		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2981		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2982		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2983		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2984		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2985		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2986		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2987		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2988		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2989		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2990		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2991		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2992		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2993		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2994		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2995		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2996		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2997		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2998		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
2999		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3000		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3001		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3002		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3003		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3004		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3005		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3006		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3007		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3008		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3009		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3010		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3011		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3012		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3013		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3014		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3015		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3016		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3017		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3018		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3019		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3020		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3021		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3022		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3023		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3024		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3025		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3026		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3027		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3028		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3029		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3030		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3031		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3032		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3033		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3034		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3035		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3036		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3037		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
3038	    },
3039	    {				/* gamma 4 - from tp6800 + soi763a */
3040		{0x11, 0x14, 0x15, 0x17, 0x1a, 0x1b, 0x1e, 0x1f,
3041		 0x22, 0x23, 0x25, 0x27, 0x28, 0x2b, 0x2c, 0x2d,
3042		 0x2f, 0x31, 0x33, 0x34, 0x35, 0x38, 0x39, 0x3a,
3043		 0x3b, 0x3c, 0x3d, 0x40, 0x42, 0x43, 0x44, 0x45,
3044		 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4f,
3045		 0x50, 0x52, 0x53, 0x53, 0x54, 0x55, 0x56, 0x58,
3046		 0x59, 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5f, 0x60,
3047		 0x61, 0x61, 0x62, 0x63, 0x65, 0x65, 0x66, 0x67,
3048		 0x68, 0x68, 0x69, 0x6a, 0x6c, 0x6c, 0x6d, 0x6e,
3049		 0x6f, 0x6f, 0x70, 0x71, 0x71, 0x73, 0x74, 0x74,
3050		 0x75, 0x77, 0x77, 0x78, 0x79, 0x79, 0x7a, 0x7a,
3051		 0x7b, 0x7c, 0x7c, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3052		 0x81, 0x81, 0x82, 0x84, 0x84, 0x85, 0x85, 0x86,
3053		 0x86, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8b, 0x8b,
3054		 0x8d, 0x8d, 0x8e, 0x8e, 0x8f, 0x90, 0x90, 0x91,
3055		 0x91, 0x92, 0x92, 0x93, 0x93, 0x94, 0x94, 0x96,
3056		 0x96, 0x97, 0x97, 0x98, 0x98, 0x98, 0x99, 0x99,
3057		 0x9a, 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3058		 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa2,
3059		 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa5, 0xa5,
3060		 0xa6, 0xa6, 0xa6, 0xa8, 0xa8, 0xa9, 0xa9, 0xab,
3061		 0xab, 0xab, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3062		 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb1, 0xb1,
3063		 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb4, 0xb4,
3064		 0xb4, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb8, 0xb8,
3065		 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba, 0xba, 0xbc,
3066		 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbf,
3067		 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2,
3068		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3069		 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc9,
3070		 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3071		 0xcb, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xce,
3072		 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0,
3073		 0xd0, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3074		 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3075		 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9,
3076		 0xd9, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb,
3077		 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf,
3078		 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3079		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3080		 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5,
3081		 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7,
3082		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3083		 0xe9, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3084		 0xec, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3085		 0xee, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3086		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3, 0xf3, 0xf3,
3087		 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3088		 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3089		 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9,
3090		 0xf9, 0xf9, 0xfa, 0xf9, 0xfa, 0xfa, 0xfa, 0xfa,
3091		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3092		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3093		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3094		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3095		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3096		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3097		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3098		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3099		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3100		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3101		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3102		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3103		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3104		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3105		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3106		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3107		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3108		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3109		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3110		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3111		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3112		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3113		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3114		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3115		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3116		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3117		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3118		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3119		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3120		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3121		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3122		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3123		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3124		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3125		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3126		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3127		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3128		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3129		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3130		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3131		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3132		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3133		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3134		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3135		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3136		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3137		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3138		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3139		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3140		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3141		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3142		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3143		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3144		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3145		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3146		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3147		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3148		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3149		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3150		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3151		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3152		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3153		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3154		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3155		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3156		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3157		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3158		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3159		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3160		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3161		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3162		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3163		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3164		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3165		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3166		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3167		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3168		{0x08, 0x0a, 0x0c, 0x0e, 0x10, 0x11, 0x14, 0x15,
3169		 0x16, 0x17, 0x1a, 0x1b, 0x1c, 0x1e, 0x1f, 0x20,
3170		 0x23, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2b, 0x2c,
3171		 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34, 0x34, 0x35,
3172		 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3c, 0x3d,
3173		 0x3f, 0x40, 0x42, 0x42, 0x43, 0x44, 0x45, 0x45,
3174		 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b, 0x4b, 0x4c,
3175		 0x4d, 0x4f, 0x4f, 0x50, 0x52, 0x52, 0x53, 0x54,
3176		 0x54, 0x55, 0x55, 0x56, 0x58, 0x58, 0x59, 0x5a,
3177		 0x5a, 0x5b, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f, 0x5f,
3178		 0x60, 0x60, 0x61, 0x61, 0x62, 0x63, 0x63, 0x65,
3179		 0x65, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68, 0x69,
3180		 0x69, 0x6a, 0x6a, 0x6c, 0x6c, 0x6d, 0x6d, 0x6e,
3181		 0x6e, 0x6f, 0x6f, 0x70, 0x70, 0x71, 0x71, 0x73,
3182		 0x73, 0x74, 0x74, 0x74, 0x75, 0x75, 0x77, 0x77,
3183		 0x78, 0x78, 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7b,
3184		 0x7b, 0x7c, 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f,
3185		 0x7f, 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82,
3186		 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86, 0x86,
3187		 0x88, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a, 0x8a,
3188		 0x8b, 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e,
3189		 0x8e, 0x8f, 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91,
3190		 0x91, 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x94,
3191		 0x94, 0x94, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3192		 0x98, 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a,
3193		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c,
3194		 0x9c, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0xa0,
3195		 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3196		 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4, 0xa4,
3197		 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6, 0xa6,
3198		 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9, 0xa9, 0xab,
3199		 0xaa, 0xab, 0xab, 0xac, 0xac, 0xac, 0xad, 0xad,
3200		 0xad, 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf,
3201		 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3202		 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3,
3203		 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb6, 0xb6,
3204		 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8,
3205		 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3206		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd,
3207		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3208		 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0,
3209		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3210		 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3211		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3212		 0xc7, 0xc7, 0xc7, 0xc7, 0xc9, 0xc9, 0xc9, 0xc9,
3213		 0xca, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3214		 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd,
3215		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3216		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3217		 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1, 0xd3,
3218		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3219		 0xd4, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3220		 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3221		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda,
3222		 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb,
3223		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3224		 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf,
3225		 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1,
3226		 0xe1, 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2,
3227		 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4, 0xe4,
3228		 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3229		 0xe5, 0xe6, 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7,
3230		 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8, 0xe8,
3231		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb,
3232		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3233		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3234		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3235		 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3236		 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3237		 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4,
3238		 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3239		 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3240		 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3241		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3242		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3243		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3244		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3245		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3246		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3247		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3248		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3249		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3250		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3251		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3252		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3253		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3254		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3255		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3256		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3257		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3258		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3259		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3260		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3261		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3262		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3263		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3264		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3265		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3266		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3267		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3268		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3269		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3270		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3271		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3272		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3273		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3274		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3275		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3276		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3277		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3278		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3279		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3280		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3281		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3282		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3283		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3284		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3285		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3286		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3287		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3288		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3289		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3290		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3291		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3292		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3293		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3294		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3295		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb},
3296		{0x0d, 0x10, 0x11, 0x14, 0x15, 0x17, 0x18, 0x1b,
3297		 0x1c, 0x1e, 0x20, 0x22, 0x23, 0x26, 0x27, 0x28,
3298		 0x29, 0x2b, 0x2d, 0x2f, 0x30, 0x31, 0x33, 0x34,
3299		 0x35, 0x37, 0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d,
3300		 0x3f, 0x40, 0x42, 0x43, 0x44, 0x45, 0x47, 0x48,
3301		 0x49, 0x4a, 0x4b, 0x4b, 0x4c, 0x4d, 0x4f, 0x50,
3302		 0x52, 0x52, 0x53, 0x54, 0x55, 0x56, 0x56, 0x58,
3303		 0x59, 0x5a, 0x5a, 0x5b, 0x5c, 0x5e, 0x5e, 0x5f,
3304		 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x65, 0x65,
3305		 0x66, 0x67, 0x67, 0x68, 0x69, 0x69, 0x6a, 0x6c,
3306		 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3307		 0x71, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x77,
3308		 0x78, 0x78, 0x79, 0x79, 0x7a, 0x7a, 0x7b, 0x7b,
3309		 0x7c, 0x7c, 0x7d, 0x7d, 0x7f, 0x7f, 0x80, 0x80,
3310		 0x81, 0x81, 0x82, 0x82, 0x84, 0x84, 0x85, 0x85,
3311		 0x86, 0x86, 0x88, 0x88, 0x89, 0x89, 0x8a, 0x8a,
3312		 0x8b, 0x8b, 0x8d, 0x8d, 0x8d, 0x8e, 0x8e, 0x8f,
3313		 0x8f, 0x90, 0x90, 0x91, 0x91, 0x91, 0x92, 0x92,
3314		 0x93, 0x93, 0x94, 0x94, 0x94, 0x96, 0x96, 0x97,
3315		 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3316		 0x9a, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d, 0x9d,
3317		 0x9d, 0x9e, 0x9e, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1,
3318		 0xa1, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3319		 0xa4, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa8, 0xa8,
3320		 0xa8, 0xa9, 0xa9, 0xa9, 0xab, 0xab, 0xab, 0xac,
3321		 0xac, 0xac, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae,
3322		 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1,
3323		 0xb1, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb4,
3324		 0xb4, 0xb4, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7,
3325		 0xb7, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba,
3326		 0xba, 0xba, 0xba, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3327		 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf,
3328		 0xc0, 0xc0, 0xc0, 0xc0, 0xc2, 0xc2, 0xc2, 0xc3,
3329		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3330		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7,
3331		 0xc7, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3332		 0xca, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc, 0xcc, 0xcc,
3333		 0xcd, 0xcd, 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce,
3334		 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0, 0xd0,
3335		 0xd1, 0xd1, 0xd1, 0xd1, 0xd3, 0xd3, 0xd3, 0xd3,
3336		 0xd4, 0xd4, 0xd4, 0xd4, 0xd6, 0xd6, 0xd6, 0xd6,
3337		 0xd7, 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8,
3338		 0xd9, 0xd9, 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda,
3339		 0xdb, 0xdb, 0xdb, 0xdb, 0xdd, 0xdd, 0xdd, 0xdd,
3340		 0xdd, 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf,
3341		 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1,
3342		 0xe1, 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3343		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3344		 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6, 0xe6,
3345		 0xe7, 0xe7, 0xe7, 0xe7, 0xe7, 0xe8, 0xe8, 0xe8,
3346		 0xe8, 0xe9, 0xe9, 0xe9, 0xe9, 0xe9, 0xeb, 0xeb,
3347		 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed,
3348		 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee,
3349		 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0, 0xf0, 0xf0,
3350		 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf3,
3351		 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4,
3352		 0xf5, 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6,
3353		 0xf6, 0xf6, 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8,
3354		 0xf8, 0xf8, 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9,
3355		 0xf9, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfa,
3356		 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3357		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3358		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3359		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3360		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3361		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3362		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3363		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3364		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3365		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3366		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3367		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3368		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3369		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3370		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3371		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3372		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3373		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3374		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3375		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3376		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3377		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3378		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3379		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3380		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3381		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3382		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3383		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3384		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3385		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3386		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3387		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3388		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3389		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3390		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3391		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3392		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3393		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3394		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3395		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3396		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3397		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3398		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3399		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3400		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3401		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3402		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3403		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3404		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3405		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3406		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3407		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3408		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3409		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3410		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3411		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3412		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3413		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3414		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3415		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3416		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3417		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3418		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3419		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3420		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3421		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3422		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb,
3423		 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb, 0xfb}
3424	    },
3425	    {							/* gamma 5 */
3426		{0x16, 0x18, 0x19, 0x1b, 0x1d, 0x1e, 0x20, 0x21,
3427		 0x23, 0x24, 0x25, 0x27, 0x28, 0x2a, 0x2b, 0x2c,
3428		 0x2d, 0x2f, 0x30, 0x31, 0x32, 0x34, 0x35, 0x36,
3429		 0x37, 0x38, 0x39, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
3430		 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
3431		 0x48, 0x49, 0x4a, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e,
3432		 0x4f, 0x50, 0x51, 0x51, 0x52, 0x53, 0x54, 0x55,
3433		 0x56, 0x56, 0x57, 0x58, 0x59, 0x59, 0x5a, 0x5b,
3434		 0x5c, 0x5c, 0x5d, 0x5e, 0x5f, 0x5f, 0x60, 0x61,
3435		 0x62, 0x62, 0x63, 0x64, 0x64, 0x65, 0x66, 0x66,
3436		 0x67, 0x68, 0x68, 0x69, 0x6a, 0x6a, 0x6b, 0x6b,
3437		 0x6c, 0x6d, 0x6d, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3438		 0x71, 0x71, 0x72, 0x73, 0x73, 0x74, 0x74, 0x75,
3439		 0x75, 0x76, 0x77, 0x77, 0x78, 0x78, 0x79, 0x79,
3440		 0x7a, 0x7a, 0x7b, 0x7b, 0x7c, 0x7d, 0x7d, 0x7e,
3441		 0x7e, 0x7f, 0x7f, 0x80, 0x80, 0x81, 0x81, 0x82,
3442		 0x82, 0x83, 0x83, 0x84, 0x84, 0x84, 0x85, 0x85,
3443		 0x86, 0x86, 0x87, 0x87, 0x88, 0x88, 0x89, 0x89,
3444		 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8d,
3445		 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x90, 0x90,
3446		 0x91, 0x91, 0x91, 0x92, 0x92, 0x93, 0x93, 0x94,
3447		 0x94, 0x94, 0x95, 0x95, 0x96, 0x96, 0x96, 0x97,
3448		 0x97, 0x98, 0x98, 0x98, 0x99, 0x99, 0x9a, 0x9a,
3449		 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9d, 0x9d,
3450		 0x9d, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f, 0xa0, 0xa0,
3451		 0xa0, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2, 0xa2, 0xa3,
3452		 0xa3, 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa6,
3453		 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8,
3454		 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3455		 0xab, 0xac, 0xac, 0xac, 0xad, 0xad, 0xad, 0xae,
3456		 0xae, 0xae, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3457		 0xb0, 0xb1, 0xb1, 0xb1, 0xb2, 0xb2, 0xb2, 0xb3,
3458		 0xb3, 0xb3, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5,
3459		 0xb5, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3460		 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3461		 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbc, 0xbc, 0xbc,
3462		 0xbc, 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe,
3463		 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1,
3464		 0xc1, 0xc1, 0xc1, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3465		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3466		 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7,
3467		 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9, 0xc9,
3468		 0xc9, 0xca, 0xca, 0xca, 0xca, 0xcb, 0xcb, 0xcb,
3469		 0xcb, 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd,
3470		 0xcd, 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf,
3471		 0xcf, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3472		 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3, 0xd3, 0xd3,
3473		 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd5, 0xd5, 0xd5,
3474		 0xd5, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3475		 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9,
3476		 0xd9, 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb,
3477		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdd,
3478		 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde, 0xde,
3479		 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0, 0xe0, 0xe0,
3480		 0xe0, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3481		 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3, 0xe3, 0xe4,
3482		 0xe4, 0xe4, 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5,
3483		 0xe6, 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7,
3484		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3485		 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea, 0xeb,
3486		 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec, 0xec,
3487		 0xed, 0xed, 0xed, 0xed, 0xed, 0xee, 0xee, 0xee,
3488		 0xee, 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3489		 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1, 0xf1,
3490		 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf3, 0xf3, 0xf3,
3491		 0xf3, 0xf3, 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5,
3492		 0xf5, 0xf5, 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6,
3493		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3494		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa,
3495		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3496		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3497		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3498		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3499		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3500		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3501		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3502		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3503		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3504		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3505		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3506		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3507		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3508		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3509		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3510		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3511		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3512		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3513		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3514		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3515		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3516		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3517		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3518		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3519		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3520		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3521		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3522		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3523		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3524		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3525		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3526		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3527		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3528		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3529		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3530		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3531		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3532		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3533		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3534		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3535		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3536		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3537		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3538		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3539		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3540		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3541		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3542		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3543		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3544		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3545		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3546		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3547		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3548		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3549		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3550		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3551		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3552		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3553		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3554		{0x0f, 0x11, 0x12, 0x14, 0x15, 0x16, 0x18, 0x19,
3555		 0x1a, 0x1b, 0x1d, 0x1e, 0x1f, 0x20, 0x21, 0x22,
3556		 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b,
3557		 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31, 0x31, 0x32,
3558		 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x38, 0x39,
3559		 0x3a, 0x3b, 0x3c, 0x3c, 0x3d, 0x3e, 0x3f, 0x3f,
3560		 0x40, 0x41, 0x42, 0x42, 0x43, 0x44, 0x44, 0x45,
3561		 0x46, 0x47, 0x47, 0x48, 0x49, 0x49, 0x4a, 0x4b,
3562		 0x4b, 0x4c, 0x4c, 0x4d, 0x4e, 0x4e, 0x4f, 0x50,
3563		 0x50, 0x51, 0x51, 0x52, 0x53, 0x53, 0x54, 0x54,
3564		 0x55, 0x55, 0x56, 0x56, 0x57, 0x58, 0x58, 0x59,
3565		 0x59, 0x5a, 0x5a, 0x5b, 0x5b, 0x5c, 0x5c, 0x5d,
3566		 0x5d, 0x5e, 0x5e, 0x5f, 0x5f, 0x60, 0x60, 0x61,
3567		 0x61, 0x62, 0x62, 0x63, 0x63, 0x64, 0x64, 0x65,
3568		 0x65, 0x66, 0x66, 0x66, 0x67, 0x67, 0x68, 0x68,
3569		 0x69, 0x69, 0x6a, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c,
3570		 0x6c, 0x6d, 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f,
3571		 0x6f, 0x70, 0x70, 0x71, 0x71, 0x71, 0x72, 0x72,
3572		 0x73, 0x73, 0x73, 0x74, 0x74, 0x75, 0x75, 0x75,
3573		 0x76, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78, 0x78,
3574		 0x79, 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b,
3575		 0x7b, 0x7c, 0x7c, 0x7d, 0x7d, 0x7d, 0x7e, 0x7e,
3576		 0x7e, 0x7f, 0x7f, 0x7f, 0x80, 0x80, 0x80, 0x81,
3577		 0x81, 0x81, 0x82, 0x82, 0x82, 0x83, 0x83, 0x83,
3578		 0x84, 0x84, 0x84, 0x84, 0x85, 0x85, 0x85, 0x86,
3579		 0x86, 0x86, 0x87, 0x87, 0x87, 0x88, 0x88, 0x88,
3580		 0x88, 0x89, 0x89, 0x89, 0x8a, 0x8a, 0x8a, 0x8b,
3581		 0x8b, 0x8b, 0x8b, 0x8c, 0x8c, 0x8c, 0x8d, 0x8d,
3582		 0x8d, 0x8e, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f, 0x8f,
3583		 0x90, 0x90, 0x90, 0x90, 0x91, 0x91, 0x91, 0x91,
3584		 0x92, 0x92, 0x92, 0x93, 0x93, 0x93, 0x93, 0x94,
3585		 0x94, 0x94, 0x94, 0x95, 0x95, 0x95, 0x96, 0x96,
3586		 0x96, 0x96, 0x97, 0x97, 0x97, 0x97, 0x98, 0x98,
3587		 0x98, 0x98, 0x99, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3588		 0x9a, 0x9a, 0x9b, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c,
3589		 0x9c, 0x9c, 0x9d, 0x9d, 0x9d, 0x9d, 0x9e, 0x9e,
3590		 0x9e, 0x9e, 0x9f, 0x9f, 0x9f, 0x9f, 0xa0, 0xa0,
3591		 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa1, 0xa2, 0xa2,
3592		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa3, 0xa4,
3593		 0xa4, 0xa4, 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa5,
3594		 0xa6, 0xa6, 0xa6, 0xa6, 0xa7, 0xa7, 0xa7, 0xa7,
3595		 0xa8, 0xa8, 0xa8, 0xa8, 0xa8, 0xa9, 0xa9, 0xa9,
3596		 0xa9, 0xaa, 0xaa, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3597		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xac, 0xad,
3598		 0xad, 0xad, 0xad, 0xad, 0xae, 0xae, 0xae, 0xae,
3599		 0xaf, 0xaf, 0xaf, 0xaf, 0xaf, 0xb0, 0xb0, 0xb0,
3600		 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1, 0xb1, 0xb2,
3601		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3602		 0xb4, 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5,
3603		 0xb5, 0xb5, 0xb6, 0xb6, 0xb6, 0xb6, 0xb6, 0xb7,
3604		 0xb7, 0xb7, 0xb7, 0xb7, 0xb8, 0xb8, 0xb8, 0xb8,
3605		 0xb8, 0xb9, 0xb9, 0xb9, 0xb9, 0xb9, 0xba, 0xba,
3606		 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb, 0xbb,
3607		 0xbb, 0xbc, 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd,
3608		 0xbd, 0xbd, 0xbd, 0xbe, 0xbe, 0xbe, 0xbe, 0xbe,
3609		 0xbf, 0xbf, 0xbf, 0xbf, 0xbf, 0xc0, 0xc0, 0xc0,
3610		 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1, 0xc1, 0xc1,
3611		 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3, 0xc3,
3612		 0xc3, 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc4,
3613		 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc5, 0xc6, 0xc6,
3614		 0xc6, 0xc6, 0xc6, 0xc7, 0xc7, 0xc7, 0xc7, 0xc7,
3615		 0xc7, 0xc8, 0xc8, 0xc8, 0xc8, 0xc8, 0xc9, 0xc9,
3616		 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca, 0xca,
3617		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc,
3618		 0xcc, 0xcc, 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd,
3619		 0xcd, 0xcd, 0xce, 0xce, 0xce, 0xce, 0xce, 0xce,
3620		 0xcf, 0xcf, 0xcf, 0xcf, 0xcf, 0xd0, 0xd0, 0xd0,
3621		 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1, 0xd1, 0xd1,
3622		 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3623		 0xd3, 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4,
3624		 0xd4, 0xd4, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd5,
3625		 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd6, 0xd7, 0xd7,
3626		 0xd7, 0xd7, 0xd7, 0xd8, 0xd8, 0xd8, 0xd8, 0xd8,
3627		 0xd8, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xd9, 0xda,
3628		 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb, 0xdb,
3629		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3630		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde,
3631		 0xde, 0xde, 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf,
3632		 0xdf, 0xdf, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0, 0xe0,
3633		 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe1, 0xe2, 0xe2,
3634		 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3, 0xe3, 0xe3,
3635		 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4, 0xe5,
3636		 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6, 0xe6,
3637		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3638		 0xe7, 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9,
3639		 0xe9, 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea,
3640		 0xea, 0xea, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xeb,
3641		 0xec, 0xec, 0xec, 0xec, 0xec, 0xec, 0xed, 0xed,
3642		 0xed, 0xed, 0xed, 0xee, 0xee, 0xee, 0xee, 0xee,
3643		 0xee, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xf0,
3644		 0xf0, 0xf0, 0xf0, 0xf0, 0xf1, 0xf1, 0xf1, 0xf1,
3645		 0xf1, 0xf1, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2, 0xf2,
3646		 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf4, 0xf4, 0xf4,
3647		 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5, 0xf5, 0xf5,
3648		 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf7, 0xf7,
3649		 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8, 0xf8, 0xf8,
3650		 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xfa, 0xfa,
3651		 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb, 0xfb,
3652		 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfd, 0xfd,
3653		 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe, 0xfe, 0xfe,
3654		 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3655		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3656		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3657		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3658		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3659		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3660		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3661		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3662		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3663		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3664		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3665		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3666		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3667		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3668		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3669		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3670		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3671		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3672		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3673		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3674		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3675		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3676		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3677		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3678		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3679		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3680		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3681		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3682		{0x13, 0x15, 0x16, 0x18, 0x19, 0x1b, 0x1c, 0x1e,
3683		 0x1f, 0x20, 0x22, 0x23, 0x24, 0x26, 0x27, 0x28,
3684		 0x29, 0x2a, 0x2c, 0x2d, 0x2e, 0x2f, 0x30, 0x31,
3685		 0x32, 0x33, 0x34, 0x35, 0x36, 0x37, 0x38, 0x39,
3686		 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f, 0x40, 0x41,
3687		 0x42, 0x43, 0x44, 0x44, 0x45, 0x46, 0x47, 0x48,
3688		 0x49, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4d, 0x4e,
3689		 0x4f, 0x50, 0x50, 0x51, 0x52, 0x53, 0x53, 0x54,
3690		 0x55, 0x55, 0x56, 0x57, 0x57, 0x58, 0x59, 0x59,
3691		 0x5a, 0x5b, 0x5b, 0x5c, 0x5d, 0x5d, 0x5e, 0x5f,
3692		 0x5f, 0x60, 0x60, 0x61, 0x62, 0x62, 0x63, 0x63,
3693		 0x64, 0x65, 0x65, 0x66, 0x66, 0x67, 0x67, 0x68,
3694		 0x69, 0x69, 0x6a, 0x6a, 0x6b, 0x6b, 0x6c, 0x6c,
3695		 0x6d, 0x6d, 0x6e, 0x6e, 0x6f, 0x6f, 0x70, 0x70,
3696		 0x71, 0x71, 0x72, 0x72, 0x73, 0x73, 0x74, 0x74,
3697		 0x75, 0x75, 0x76, 0x76, 0x77, 0x77, 0x78, 0x78,
3698		 0x79, 0x79, 0x7a, 0x7a, 0x7a, 0x7b, 0x7b, 0x7c,
3699		 0x7c, 0x7d, 0x7d, 0x7e, 0x7e, 0x7e, 0x7f, 0x7f,
3700		 0x80, 0x80, 0x81, 0x81, 0x81, 0x82, 0x82, 0x83,
3701		 0x83, 0x84, 0x84, 0x84, 0x85, 0x85, 0x86, 0x86,
3702		 0x86, 0x87, 0x87, 0x88, 0x88, 0x88, 0x89, 0x89,
3703		 0x89, 0x8a, 0x8a, 0x8b, 0x8b, 0x8b, 0x8c, 0x8c,
3704		 0x8c, 0x8d, 0x8d, 0x8e, 0x8e, 0x8e, 0x8f, 0x8f,
3705		 0x8f, 0x90, 0x90, 0x90, 0x91, 0x91, 0x92, 0x92,
3706		 0x92, 0x93, 0x93, 0x93, 0x94, 0x94, 0x94, 0x95,
3707		 0x95, 0x95, 0x96, 0x96, 0x96, 0x97, 0x97, 0x97,
3708		 0x98, 0x98, 0x98, 0x99, 0x99, 0x99, 0x9a, 0x9a,
3709		 0x9a, 0x9b, 0x9b, 0x9b, 0x9c, 0x9c, 0x9c, 0x9d,
3710		 0x9d, 0x9d, 0x9e, 0x9e, 0x9e, 0x9e, 0x9f, 0x9f,
3711		 0x9f, 0xa0, 0xa0, 0xa0, 0xa1, 0xa1, 0xa1, 0xa2,
3712		 0xa2, 0xa2, 0xa2, 0xa3, 0xa3, 0xa3, 0xa4, 0xa4,
3713		 0xa4, 0xa5, 0xa5, 0xa5, 0xa5, 0xa6, 0xa6, 0xa6,
3714		 0xa7, 0xa7, 0xa7, 0xa7, 0xa8, 0xa8, 0xa8, 0xa9,
3715		 0xa9, 0xa9, 0xa9, 0xaa, 0xaa, 0xaa, 0xab, 0xab,
3716		 0xab, 0xab, 0xac, 0xac, 0xac, 0xac, 0xad, 0xad,
3717		 0xad, 0xae, 0xae, 0xae, 0xae, 0xaf, 0xaf, 0xaf,
3718		 0xaf, 0xb0, 0xb0, 0xb0, 0xb1, 0xb1, 0xb1, 0xb1,
3719		 0xb2, 0xb2, 0xb2, 0xb2, 0xb3, 0xb3, 0xb3, 0xb3,
3720		 0xb4, 0xb4, 0xb4, 0xb4, 0xb5, 0xb5, 0xb5, 0xb5,
3721		 0xb6, 0xb6, 0xb6, 0xb6, 0xb7, 0xb7, 0xb7, 0xb7,
3722		 0xb8, 0xb8, 0xb8, 0xb8, 0xb9, 0xb9, 0xb9, 0xb9,
3723		 0xba, 0xba, 0xba, 0xba, 0xbb, 0xbb, 0xbb, 0xbb,
3724		 0xbc, 0xbc, 0xbc, 0xbc, 0xbd, 0xbd, 0xbd, 0xbd,
3725		 0xbe, 0xbe, 0xbe, 0xbe, 0xbf, 0xbf, 0xbf, 0xbf,
3726		 0xbf, 0xc0, 0xc0, 0xc0, 0xc0, 0xc1, 0xc1, 0xc1,
3727		 0xc1, 0xc2, 0xc2, 0xc2, 0xc2, 0xc2, 0xc3, 0xc3,
3728		 0xc3, 0xc3, 0xc4, 0xc4, 0xc4, 0xc4, 0xc5, 0xc5,
3729		 0xc5, 0xc5, 0xc5, 0xc6, 0xc6, 0xc6, 0xc6, 0xc7,
3730		 0xc7, 0xc7, 0xc7, 0xc7, 0xc8, 0xc8, 0xc8, 0xc8,
3731		 0xc9, 0xc9, 0xc9, 0xc9, 0xc9, 0xca, 0xca, 0xca,
3732		 0xca, 0xcb, 0xcb, 0xcb, 0xcb, 0xcb, 0xcc, 0xcc,
3733		 0xcc, 0xcc, 0xcd, 0xcd, 0xcd, 0xcd, 0xcd, 0xce,
3734		 0xce, 0xce, 0xce, 0xce, 0xcf, 0xcf, 0xcf, 0xcf,
3735		 0xd0, 0xd0, 0xd0, 0xd0, 0xd0, 0xd1, 0xd1, 0xd1,
3736		 0xd1, 0xd1, 0xd2, 0xd2, 0xd2, 0xd2, 0xd2, 0xd3,
3737		 0xd3, 0xd3, 0xd3, 0xd4, 0xd4, 0xd4, 0xd4, 0xd4,
3738		 0xd5, 0xd5, 0xd5, 0xd5, 0xd5, 0xd6, 0xd6, 0xd6,
3739		 0xd6, 0xd6, 0xd7, 0xd7, 0xd7, 0xd7, 0xd7, 0xd8,
3740		 0xd8, 0xd8, 0xd8, 0xd8, 0xd9, 0xd9, 0xd9, 0xd9,
3741		 0xd9, 0xda, 0xda, 0xda, 0xda, 0xda, 0xdb, 0xdb,
3742		 0xdb, 0xdb, 0xdb, 0xdc, 0xdc, 0xdc, 0xdc, 0xdc,
3743		 0xdd, 0xdd, 0xdd, 0xdd, 0xdd, 0xde, 0xde, 0xde,
3744		 0xde, 0xde, 0xdf, 0xdf, 0xdf, 0xdf, 0xdf, 0xe0,
3745		 0xe0, 0xe0, 0xe0, 0xe0, 0xe1, 0xe1, 0xe1, 0xe1,
3746		 0xe1, 0xe2, 0xe2, 0xe2, 0xe2, 0xe2, 0xe3, 0xe3,
3747		 0xe3, 0xe3, 0xe3, 0xe4, 0xe4, 0xe4, 0xe4, 0xe4,
3748		 0xe4, 0xe5, 0xe5, 0xe5, 0xe5, 0xe5, 0xe6, 0xe6,
3749		 0xe6, 0xe6, 0xe6, 0xe7, 0xe7, 0xe7, 0xe7, 0xe7,
3750		 0xe8, 0xe8, 0xe8, 0xe8, 0xe8, 0xe9, 0xe9, 0xe9,
3751		 0xe9, 0xe9, 0xe9, 0xea, 0xea, 0xea, 0xea, 0xea,
3752		 0xeb, 0xeb, 0xeb, 0xeb, 0xeb, 0xec, 0xec, 0xec,
3753		 0xec, 0xec, 0xed, 0xed, 0xed, 0xed, 0xed, 0xed,
3754		 0xee, 0xee, 0xee, 0xee, 0xee, 0xef, 0xef, 0xef,
3755		 0xef, 0xef, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0, 0xf0,
3756		 0xf1, 0xf1, 0xf1, 0xf1, 0xf1, 0xf2, 0xf2, 0xf2,
3757		 0xf2, 0xf2, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3, 0xf3,
3758		 0xf4, 0xf4, 0xf4, 0xf4, 0xf4, 0xf5, 0xf5, 0xf5,
3759		 0xf5, 0xf5, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6, 0xf6,
3760		 0xf7, 0xf7, 0xf7, 0xf7, 0xf7, 0xf8, 0xf8, 0xf8,
3761		 0xf8, 0xf8, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9, 0xf9,
3762		 0xfa, 0xfa, 0xfa, 0xfa, 0xfa, 0xfb, 0xfb, 0xfb,
3763		 0xfb, 0xfb, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc, 0xfc,
3764		 0xfd, 0xfd, 0xfd, 0xfd, 0xfd, 0xfe, 0xfe, 0xfe,
3765		 0xfe, 0xfe, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3766		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3767		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3768		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3769		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3770		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3771		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3772		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3773		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3774		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3775		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3776		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3777		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3778		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3779		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3780		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3781		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3782		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3783		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3784		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3785		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3786		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3787		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3788		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3789		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3790		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3791		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3792		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3793		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3794		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3795		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3796		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3797		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3798		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3799		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3800		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3801		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3802		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3803		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3804		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3805		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3806		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3807		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3808		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
3809		 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff},
3810	    },
3811	};
3812
3813	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3814	if (sd->bridge == BRIDGE_TP6810)
3815		reg_w(gspca_dev, 0x02, 0x28);
3816/*	msleep(50); */
3817	bulk_w(gspca_dev, 0x00, gamma_tb[gamma][0], 1024);
3818	bulk_w(gspca_dev, 0x01, gamma_tb[gamma][1], 1024);
3819	bulk_w(gspca_dev, 0x02, gamma_tb[gamma][2], 1024);
3820	if (sd->bridge == BRIDGE_TP6810) {
3821		int i;
3822
3823		reg_w(gspca_dev, 0x02, 0x2b);
3824		reg_w(gspca_dev, 0x02, 0x28);
3825		for (i = 0; i < 6; i++)
3826			reg_w(gspca_dev, TP6800_R55_GAMMA_R,
3827				gamma_tb[gamma][0][i]);
3828		reg_w(gspca_dev, 0x02, 0x2b);
3829		reg_w(gspca_dev, 0x02, 0x28);
3830		for (i = 0; i < 6; i++)
3831			reg_w(gspca_dev, TP6800_R56_GAMMA_G,
3832				gamma_tb[gamma][1][i]);
3833		reg_w(gspca_dev, 0x02, 0x2b);
3834		reg_w(gspca_dev, 0x02, 0x28);
3835		for (i = 0; i < 6; i++)
3836			reg_w(gspca_dev, TP6800_R57_GAMMA_B,
3837				gamma_tb[gamma][2][i]);
3838		reg_w(gspca_dev, 0x02, 0x28);
3839	}
3840	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3841/*	msleep(50); */
3842}
3843
3844static void setsharpness(struct gspca_dev *gspca_dev, s32 val)
3845{
3846	struct sd *sd = (struct sd *) gspca_dev;
3847
3848	if (sd->bridge == BRIDGE_TP6800) {
3849		val |= 0x08;		/* grid compensation enable */
3850		if (gspca_dev->pixfmt.width == 640)
3851			reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00); /* vga */
3852		else
3853			val |= 0x04;		/* scaling down enable */
3854		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, val);
3855	} else {
3856		val = (val << 5) | 0x08;
3857		reg_w(gspca_dev, 0x59, val);
3858	}
3859}
3860
3861static void setautogain(struct gspca_dev *gspca_dev, s32 val)
3862{
3863	struct sd *sd = (struct sd *) gspca_dev;
3864
3865	sd->ag_cnt = val ? AG_CNT_START : -1;
3866}
3867
3868/* set the resolution for sensor cx0342 */
3869static void set_resolution(struct gspca_dev *gspca_dev)
3870{
3871	struct sd *sd = (struct sd *) gspca_dev;
3872
3873	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
3874	if (gspca_dev->pixfmt.width == 320) {
3875		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x06);
3876		msleep(100);
3877		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3878		msleep(100);
3879		reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3880		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
3881		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x0d);
3882		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0x37);
3883		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x01);
3884	} else {
3885		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x05);
3886		msleep(100);
3887		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3888		msleep(100);
3889		reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x03);
3890		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
3891		reg_w(gspca_dev, TP6800_R5D_DEMOSAIC_CFG, 0x09);
3892		i2c_w(gspca_dev, CX0342_EXPO_LINE_L, 0xcf);
3893		i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
3894	}
3895	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
3896	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
3897				ARRAY_SIZE(color_gain[0]));
3898	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
3899	if (sd->sensor == SENSOR_SOI763A)
3900		setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual));
3901}
3902
3903/* convert the frame rate to a tp68x0 value */
3904static int get_fr_idx(struct gspca_dev *gspca_dev)
3905{
3906	struct sd *sd = (struct sd *) gspca_dev;
3907	int i;
3908
3909	if (sd->bridge == BRIDGE_TP6800) {
3910		for (i = 0; i < ARRAY_SIZE(rates) - 1; i++) {
3911			if (sd->framerate >= rates[i])
3912				break;
3913		}
3914		i = 6 - i;		/* 1 = 5fps .. 6 = 30fps */
3915
3916		/* 640x480 * 30 fps does not work */
3917		if (i == 6			/* if 30 fps */
3918		 && gspca_dev->pixfmt.width == 640)
3919			i = 0x05;		/* 15 fps */
3920	} else {
3921		for (i = 0; i < ARRAY_SIZE(rates_6810) - 1; i++) {
3922			if (sd->framerate >= rates_6810[i])
3923				break;
3924		}
3925		i = 7 - i;		/* 3 = 5fps .. 7 = 30fps */
3926
3927		/* 640x480 * 30 fps does not work */
3928		if (i == 7			/* if 30 fps */
3929		 && gspca_dev->pixfmt.width == 640)
3930			i = 6;			/* 15 fps */
3931		i |= 0x80;			/* clock * 1 */
3932	}
3933	return i;
3934}
3935
3936static void setframerate(struct gspca_dev *gspca_dev, s32 val)
3937{
3938	struct sd *sd = (struct sd *) gspca_dev;
3939	u8 fr_idx;
3940
3941	fr_idx = get_fr_idx(gspca_dev);
3942
3943	if (sd->bridge == BRIDGE_TP6810) {
3944		reg_r(gspca_dev, 0x7b);
3945		reg_w(gspca_dev, 0x7b,
3946			sd->sensor == SENSOR_CX0342 ? 0x10 : 0x90);
3947		if (val >= 128)
3948			fr_idx = 0xf0;		/* lower frame rate */
3949	}
3950
3951	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, fr_idx);
3952
3953	if (sd->sensor == SENSOR_CX0342)
3954		i2c_w(gspca_dev, CX0342_AUTO_ADC_CALIB, 0x01);
3955}
3956
3957static void setrgain(struct gspca_dev *gspca_dev, s32 rgain)
3958{
3959	i2c_w(gspca_dev, CX0342_RAW_RGAIN_H, rgain >> 8);
3960	i2c_w(gspca_dev, CX0342_RAW_RGAIN_L, rgain);
3961	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
3962}
3963
3964static int sd_setgain(struct gspca_dev *gspca_dev)
3965{
3966	struct sd *sd = (struct sd *) gspca_dev;
3967	s32 val = gspca_dev->gain->val;
3968
3969	if (sd->sensor == SENSOR_CX0342) {
3970		s32 old = gspca_dev->gain->cur.val ?
3971					gspca_dev->gain->cur.val : 1;
3972
3973		sd->blue->val = sd->blue->val * val / old;
3974		if (sd->blue->val > 4095)
3975			sd->blue->val = 4095;
3976		sd->red->val = sd->red->val * val / old;
3977		if (sd->red->val > 4095)
3978			sd->red->val = 4095;
3979	}
3980	if (gspca_dev->streaming) {
3981		if (sd->sensor == SENSOR_CX0342)
3982			setexposure(gspca_dev, gspca_dev->exposure->val,
3983					gspca_dev->gain->val,
3984					sd->blue->val, sd->red->val);
3985		else
3986			setexposure(gspca_dev, gspca_dev->exposure->val,
3987					gspca_dev->gain->val, 0, 0);
3988	}
3989	return gspca_dev->usb_err;
3990}
3991
3992static void setbgain(struct gspca_dev *gspca_dev, s32 bgain)
3993{
3994	i2c_w(gspca_dev, CX0342_RAW_BGAIN_H, bgain >> 8);
3995	i2c_w(gspca_dev, CX0342_RAW_BGAIN_L, bgain);
3996	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x80);
3997}
3998
3999/* this function is called at probe time */
4000static int sd_config(struct gspca_dev *gspca_dev,
4001		     const struct usb_device_id *id)
4002{
4003	struct sd *sd = (struct sd *) gspca_dev;
4004
4005	sd->bridge = id->driver_info;
4006
4007	gspca_dev->cam.cam_mode = vga_mode;
4008	gspca_dev->cam.nmodes = ARRAY_SIZE(vga_mode);
4009	gspca_dev->cam.mode_framerates = sd->bridge == BRIDGE_TP6800 ?
4010			framerates : framerates_6810;
4011
4012	sd->framerate = DEFAULT_FRAME_RATE;
4013	return 0;
4014}
4015
4016/* this function is called at probe and resume time */
4017static int sd_init(struct gspca_dev *gspca_dev)
4018{
4019	struct sd *sd = (struct sd *) gspca_dev;
4020	static const struct cmd tp6800_preinit[] = {
4021		{TP6800_R10_SIF_TYPE, 0x01},	/* sif */
4022		{TP6800_R11_SIF_CONTROL, 0x01},
4023		{TP6800_R15_GPIO_PU, 0x9f},
4024		{TP6800_R16_GPIO_PD, 0x9f},
4025		{TP6800_R17_GPIO_IO, 0x80},
4026		{TP6800_R18_GPIO_DATA, 0x40},	/* LED off */
4027	};
4028	static const struct cmd tp6810_preinit[] = {
4029		{TP6800_R2F_TIMING_CFG, 0x2f},
4030		{TP6800_R15_GPIO_PU, 0x6f},
4031		{TP6800_R16_GPIO_PD, 0x40},
4032		{TP6800_R17_GPIO_IO, 0x9f},
4033		{TP6800_R18_GPIO_DATA, 0xc1},	/* LED off */
4034	};
4035
4036	if (sd->bridge == BRIDGE_TP6800)
4037		reg_w_buf(gspca_dev, tp6800_preinit,
4038				ARRAY_SIZE(tp6800_preinit));
4039	else
4040		reg_w_buf(gspca_dev, tp6810_preinit,
4041				ARRAY_SIZE(tp6810_preinit));
4042	msleep(15);
4043	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4044	gspca_dbg(gspca_dev, D_PROBE, "gpio: %02x\n", gspca_dev->usb_buf[0]);
4045/* values:
4046 *	0x80: snapshot button
4047 *	0x40: LED
4048 *	0x20: (bridge / sensor) reset for tp6810 ?
4049 *	0x07: sensor type ?
4050 */
4051
4052	/* guess the sensor type */
4053	if (force_sensor >= 0) {
4054		sd->sensor = force_sensor;
4055	} else {
4056		if (sd->bridge == BRIDGE_TP6800) {
4057/*fixme: not sure this is working*/
4058			switch (gspca_dev->usb_buf[0] & 0x07) {
4059			case 0:
4060				sd->sensor = SENSOR_SOI763A;
4061				break;
4062			case 1:
4063				sd->sensor = SENSOR_CX0342;
4064				break;
4065			}
4066		} else {
4067			int sensor;
4068
4069			sensor = probe_6810(gspca_dev);
4070			if (sensor < 0) {
4071				pr_warn("Unknown sensor %d - forced to soi763a\n",
4072					-sensor);
4073				sensor = SENSOR_SOI763A;
4074			}
4075			sd->sensor = sensor;
4076		}
4077	}
4078	if (sd->sensor == SENSOR_SOI763A) {
4079		pr_info("Sensor soi763a\n");
4080		if (sd->bridge == BRIDGE_TP6810) {
4081			soi763a_6810_init(gspca_dev);
4082		}
4083	} else {
4084		pr_info("Sensor cx0342\n");
4085		if (sd->bridge == BRIDGE_TP6810) {
4086			cx0342_6810_init(gspca_dev);
4087		}
4088	}
4089
4090	set_dqt(gspca_dev, 0);
4091	return 0;
4092}
4093
4094/* This function is called before choosing the alt setting */
4095static int sd_isoc_init(struct gspca_dev *gspca_dev)
4096{
4097	struct sd *sd = (struct sd *) gspca_dev;
4098	static const struct cmd cx_sensor_init[] = {
4099		{CX0342_AUTO_ADC_CALIB, 0x81},
4100		{CX0342_EXPO_LINE_L, 0x37},
4101		{CX0342_EXPO_LINE_H, 0x01},
4102		{CX0342_RAW_GRGAIN_L, 0x00},
4103		{CX0342_RAW_GBGAIN_L, 0x00},
4104		{CX0342_RAW_RGAIN_L, 0x00},
4105		{CX0342_RAW_BGAIN_L, 0x00},
4106		{CX0342_SYS_CTRL_0, 0x81},
4107	};
4108	static const struct cmd cx_bridge_init[] = {
4109		{0x4d, 0x00},
4110		{0x4c, 0xff},
4111		{0x4e, 0xff},
4112		{0x4f, 0x00},
4113	};
4114	static const struct cmd ov_sensor_init[] = {
4115		{0x10, 0x75},		/* exposure */
4116		{0x76, 0x03},
4117		{0x00, 0x00},		/* gain */
4118	};
4119	static const struct cmd ov_bridge_init[] = {
4120		{0x7b, 0x90},
4121		{TP6800_R3F_FRAME_RATE, 0x87},
4122	};
4123
4124	if (sd->bridge == BRIDGE_TP6800)
4125		return 0;
4126	if (sd->sensor == SENSOR_CX0342) {
4127		reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x20);
4128		reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4129		i2c_w_buf(gspca_dev, cx_sensor_init,
4130				ARRAY_SIZE(cx_sensor_init));
4131		reg_w_buf(gspca_dev, cx_bridge_init,
4132				ARRAY_SIZE(cx_bridge_init));
4133		bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4134		reg_w(gspca_dev, 0x59, 0x40);
4135	} else {
4136		reg_w(gspca_dev, TP6800_R12_SIF_ADDR_S, 0x21);
4137		i2c_w_buf(gspca_dev, ov_sensor_init,
4138				ARRAY_SIZE(ov_sensor_init));
4139		reg_r(gspca_dev, 0x7b);
4140		reg_w_buf(gspca_dev, ov_bridge_init,
4141				ARRAY_SIZE(ov_bridge_init));
4142	}
4143	reg_w(gspca_dev, TP6800_R78_FORMAT,
4144			gspca_dev->curr_mode ? 0x00 : 0x01);
4145	return gspca_dev->usb_err;
4146}
4147
4148static void set_led(struct gspca_dev *gspca_dev, int on)
4149{
4150	u8 data;
4151
4152	reg_r(gspca_dev, TP6800_R18_GPIO_DATA);
4153	data = gspca_dev->usb_buf[0];
4154	if (on)
4155		data &= ~0x40;
4156	else
4157		data |= 0x40;
4158	reg_w(gspca_dev, TP6800_R18_GPIO_DATA, data);
4159}
4160
4161static void cx0342_6800_start(struct gspca_dev *gspca_dev)
4162{
4163	struct sd *sd = (struct sd *) gspca_dev;
4164	static const struct cmd reg_init[] = {
4165		/* fixme: is this useful? */
4166		{TP6800_R17_GPIO_IO, 0x9f},
4167		{TP6800_R16_GPIO_PD, 0x40},
4168		{TP6800_R10_SIF_TYPE, 0x00},	/* i2c 8 bits */
4169		{TP6800_R50, 0x00},
4170		{TP6800_R51, 0x00},
4171		{TP6800_R52, 0xff},
4172		{TP6800_R53, 0x03},
4173		{TP6800_R54_DARK_CFG, 0x07},
4174		{TP6800_R5C_EDGE_THRLD, 0x40},
4175		{TP6800_R7A_BLK_THRLD, 0x40},
4176		{TP6800_R2F_TIMING_CFG, 0x17},
4177		{TP6800_R30_SENSOR_CFG, 0x18},	/* G1B..RG0 */
4178		{TP6800_R37_FRONT_DARK_ST, 0x00},
4179		{TP6800_R38_FRONT_DARK_END, 0x00},
4180		{TP6800_R39_REAR_DARK_ST_L, 0x00},
4181		{TP6800_R3A_REAR_DARK_ST_H, 0x00},
4182		{TP6800_R3B_REAR_DARK_END_L, 0x00},
4183		{TP6800_R3C_REAR_DARK_END_H, 0x00},
4184		{TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4185		{TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4186		{TP6800_R21_ENDP_1_CTL, 0x03},
4187
4188		{TP6800_R31_PIXEL_START, 0x0b},
4189		{TP6800_R32_PIXEL_END_L, 0x8a},
4190		{TP6800_R33_PIXEL_END_H, 0x02},
4191		{TP6800_R34_LINE_START, 0x0e},
4192		{TP6800_R35_LINE_END_L, 0xf4},
4193		{TP6800_R36_LINE_END_H, 0x01},
4194		{TP6800_R78_FORMAT, 0x00},
4195		{TP6800_R12_SIF_ADDR_S, 0x20},	/* cx0342 i2c addr */
4196	};
4197	static const struct cmd sensor_init[] = {
4198		{CX0342_OUTPUT_CTRL, 0x07},
4199		{CX0342_BYPASS_MODE, 0x58},
4200		{CX0342_GPXLTHD_L, 0x16},
4201		{CX0342_RBPXLTHD_L, 0x16},
4202		{CX0342_PLANETHD_L, 0xc0},
4203		{CX0342_PLANETHD_H, 0x03},
4204		{CX0342_RB_GAP_L, 0xff},
4205		{CX0342_RB_GAP_H, 0x07},
4206		{CX0342_G_GAP_L, 0xff},
4207		{CX0342_G_GAP_H, 0x07},
4208		{CX0342_RST_OVERFLOW_L, 0x5c},
4209		{CX0342_RST_OVERFLOW_H, 0x01},
4210		{CX0342_DATA_OVERFLOW_L, 0xfc},
4211		{CX0342_DATA_OVERFLOW_H, 0x03},
4212		{CX0342_DATA_UNDERFLOW_L, 0x00},
4213		{CX0342_DATA_UNDERFLOW_H, 0x00},
4214		{CX0342_SYS_CTRL_0, 0x40},
4215		{CX0342_GLOBAL_GAIN, 0x01},
4216		{CX0342_CLOCK_GEN, 0x00},
4217		{CX0342_SYS_CTRL_0, 0x02},
4218		{CX0342_IDLE_CTRL, 0x05},
4219		{CX0342_ADCGN, 0x00},
4220		{CX0342_ADC_CTL, 0x00},
4221		{CX0342_LVRST_BLBIAS, 0x01},
4222		{CX0342_VTHSEL, 0x0b},
4223		{CX0342_RAMP_RIV, 0x0b},
4224		{CX0342_LDOSEL, 0x07},
4225		{CX0342_SPV_VALUE_L, 0x40},
4226		{CX0342_SPV_VALUE_H, 0x02},
4227	};
4228
4229	reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4230	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4231	i2c_w_buf(gspca_dev, cx0342_timing_seq, ARRAY_SIZE(cx0342_timing_seq));
4232	reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4233	reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4234	i2c_w(gspca_dev, CX0342_EXPO_LINE_H, 0x00);
4235	i2c_w(gspca_dev, CX0342_SYS_CTRL_0, 0x01);
4236	if (sd->sensor == SENSOR_CX0342)
4237		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4238			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4239			v4l2_ctrl_g_ctrl(sd->blue),
4240			v4l2_ctrl_g_ctrl(sd->red));
4241	else
4242		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4243			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4244	set_led(gspca_dev, 1);
4245	set_resolution(gspca_dev);
4246}
4247
4248static void cx0342_6810_start(struct gspca_dev *gspca_dev)
4249{
4250	struct sd *sd = (struct sd *) gspca_dev;
4251	static const struct cmd sensor_init_2[] = {
4252		{CX0342_EXPO_LINE_L, 0x6f},
4253		{CX0342_EXPO_LINE_H, 0x02},
4254		{CX0342_RAW_GRGAIN_L, 0x00},
4255		{CX0342_RAW_GBGAIN_L, 0x00},
4256		{CX0342_RAW_RGAIN_L, 0x00},
4257		{CX0342_RAW_BGAIN_L, 0x00},
4258		{CX0342_SYS_CTRL_0, 0x81},
4259	};
4260	static const struct cmd bridge_init_2[] = {
4261		{0x4d, 0x00},
4262		{0x4c, 0xff},
4263		{0x4e, 0xff},
4264		{0x4f, 0x00},
4265		{TP6800_R7A_BLK_THRLD, 0x00},
4266		{TP6800_R79_QUALITY, 0x04},
4267		{TP6800_R79_QUALITY, 0x01},
4268	};
4269	static const struct cmd bridge_init_3[] = {
4270		{TP6800_R31_PIXEL_START, 0x08},
4271		{TP6800_R32_PIXEL_END_L, 0x87},
4272		{TP6800_R33_PIXEL_END_H, 0x02},
4273		{TP6800_R34_LINE_START, 0x0e},
4274		{TP6800_R35_LINE_END_L, 0xf4},
4275		{TP6800_R36_LINE_END_H, 0x01},
4276	};
4277	static const struct cmd sensor_init_3[] = {
4278		{CX0342_AUTO_ADC_CALIB, 0x81},
4279		{CX0342_EXPO_LINE_L, 0x6f},
4280		{CX0342_EXPO_LINE_H, 0x02},
4281		{CX0342_RAW_GRGAIN_L, 0x00},
4282		{CX0342_RAW_GBGAIN_L, 0x00},
4283		{CX0342_RAW_RGAIN_L, 0x00},
4284		{CX0342_RAW_BGAIN_L, 0x00},
4285		{CX0342_SYS_CTRL_0, 0x81},
4286	};
4287	static const struct cmd bridge_init_5[] = {
4288		{0x4d, 0x00},
4289		{0x4c, 0xff},
4290		{0x4e, 0xff},
4291		{0x4f, 0x00},
4292	};
4293	static const struct cmd sensor_init_4[] = {
4294		{CX0342_EXPO_LINE_L, 0xd3},
4295		{CX0342_EXPO_LINE_H, 0x01},
4296/*fixme: gains, but 00..80 only*/
4297		{CX0342_RAW_GRGAIN_L, 0x40},
4298		{CX0342_RAW_GBGAIN_L, 0x40},
4299		{CX0342_RAW_RGAIN_L, 0x40},
4300		{CX0342_RAW_BGAIN_L, 0x40},
4301		{CX0342_SYS_CTRL_0, 0x81},
4302	};
4303	static const struct cmd sensor_init_5[] = {
4304		{CX0342_IDLE_CTRL, 0x05},
4305		{CX0342_ADCGN, 0x00},
4306		{CX0342_ADC_CTL, 0x00},
4307		{CX0342_LVRST_BLBIAS, 0x01},
4308		{CX0342_VTHSEL, 0x0b},
4309		{CX0342_RAMP_RIV, 0x0b},
4310		{CX0342_LDOSEL, 0x07},
4311		{CX0342_SPV_VALUE_L, 0x40},
4312		{CX0342_SPV_VALUE_H, 0x02},
4313		{CX0342_AUTO_ADC_CALIB, 0x81},
4314	};
4315
4316	reg_w(gspca_dev, 0x22, gspca_dev->alt);
4317	i2c_w_buf(gspca_dev, sensor_init_2, ARRAY_SIZE(sensor_init_2));
4318	reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4319	reg_w_buf(gspca_dev, tp6810_cx_init_common,
4320			ARRAY_SIZE(tp6810_cx_init_common));
4321	reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4322	if (gspca_dev->curr_mode) {
4323		reg_w(gspca_dev, 0x4a, 0x7f);
4324		reg_w(gspca_dev, 0x07, 0x05);
4325		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
4326	} else {
4327		reg_w(gspca_dev, 0x4a, 0xff);
4328		reg_w(gspca_dev, 0x07, 0x85);
4329		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
4330	}
4331	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
4332	reg_w_buf(gspca_dev, tp6810_bridge_start,
4333			ARRAY_SIZE(tp6810_bridge_start));
4334	setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
4335	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_CX0342],
4336				ARRAY_SIZE(color_gain[0]));
4337	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0x87);
4338	i2c_w_buf(gspca_dev, sensor_init_3, ARRAY_SIZE(sensor_init_3));
4339	reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4340	i2c_w_buf(gspca_dev, sensor_init_4, ARRAY_SIZE(sensor_init_4));
4341	reg_w_buf(gspca_dev, bridge_init_5, ARRAY_SIZE(bridge_init_5));
4342	i2c_w_buf(gspca_dev, sensor_init_5, ARRAY_SIZE(sensor_init_5));
4343
4344	set_led(gspca_dev, 1);
4345/*	setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual)); */
4346}
4347
4348static void soi763a_6800_start(struct gspca_dev *gspca_dev)
4349{
4350	struct sd *sd = (struct sd *) gspca_dev;
4351	static const struct cmd reg_init[] = {
4352		{TP6800_R79_QUALITY, 0x04},
4353		{TP6800_R79_QUALITY, 0x01},
4354		{TP6800_R10_SIF_TYPE, 0x00},	/* i2c 8 bits */
4355
4356		{TP6800_R50, 0x00},
4357		{TP6800_R51, 0x00},
4358		{TP6800_R52, 0xff},
4359		{TP6800_R53, 0x03},
4360		{TP6800_R54_DARK_CFG, 0x07},
4361		{TP6800_R5C_EDGE_THRLD, 0x40},
4362
4363		{TP6800_R79_QUALITY, 0x03},
4364		{TP6800_R7A_BLK_THRLD, 0x40},
4365
4366		{TP6800_R2F_TIMING_CFG, 0x46},
4367		{TP6800_R30_SENSOR_CFG, 0x10},	/* BG1..G0R */
4368		{TP6800_R37_FRONT_DARK_ST, 0x00},
4369		{TP6800_R38_FRONT_DARK_END, 0x00},
4370		{TP6800_R39_REAR_DARK_ST_L, 0x00},
4371		{TP6800_R3A_REAR_DARK_ST_H, 0x00},
4372		{TP6800_R3B_REAR_DARK_END_L, 0x00},
4373		{TP6800_R3C_REAR_DARK_END_H, 0x00},
4374		{TP6800_R3D_HORIZ_DARK_LINE_L, 0x00},
4375		{TP6800_R3E_HORIZ_DARK_LINE_H, 0x00},
4376		{TP6800_R21_ENDP_1_CTL, 0x03},
4377
4378		{TP6800_R3F_FRAME_RATE, 0x04},	/* 15 fps */
4379		{TP6800_R5D_DEMOSAIC_CFG, 0x0e}, /* scale down - medium edge */
4380
4381		{TP6800_R31_PIXEL_START, 0x1b},
4382		{TP6800_R32_PIXEL_END_L, 0x9a},
4383		{TP6800_R33_PIXEL_END_H, 0x02},
4384		{TP6800_R34_LINE_START, 0x0f},
4385		{TP6800_R35_LINE_END_L, 0xf4},
4386		{TP6800_R36_LINE_END_H, 0x01},
4387		{TP6800_R78_FORMAT, 0x01},	/* qvga */
4388		{TP6800_R12_SIF_ADDR_S, 0x21},	/* soi763a i2c addr */
4389		{TP6800_R1A_SIF_TX_DATA2, 0x00},
4390	};
4391	static const struct cmd sensor_init[] = {
4392		{0x12, 0x48},		/* mirror - RGB */
4393		{0x13, 0xa0},		/* clock - no AGC nor AEC */
4394		{0x03, 0xa4},		/* saturation */
4395		{0x04, 0x30},		/* hue */
4396		{0x05, 0x88},		/* contrast */
4397		{0x06, 0x60},		/* brightness */
4398		{0x10, 0x41},		/* AEC */
4399		{0x11, 0x40},		/* clock rate */
4400		{0x13, 0xa0},
4401		{0x14, 0x00},		/* 640x480 */
4402		{0x15, 0x14},
4403		{0x1f, 0x41},
4404		{0x20, 0x80},
4405		{0x23, 0xee},
4406		{0x24, 0x50},
4407		{0x25, 0x7a},
4408		{0x26, 0x00},
4409		{0x27, 0xe2},
4410		{0x28, 0xb0},
4411		{0x2a, 0x00},
4412		{0x2b, 0x00},
4413		{0x2d, 0x81},
4414		{0x2f, 0x9d},
4415		{0x60, 0x80},
4416		{0x61, 0x00},
4417		{0x62, 0x88},
4418		{0x63, 0x11},
4419		{0x64, 0x89},
4420		{0x65, 0x00},
4421		{0x67, 0x94},
4422		{0x68, 0x7a},
4423		{0x69, 0x0f},
4424		{0x6c, 0x80},
4425		{0x6d, 0x80},
4426		{0x6e, 0x80},
4427		{0x6f, 0xff},
4428		{0x71, 0x20},
4429		{0x74, 0x20},
4430		{0x75, 0x86},
4431		{0x77, 0xb5},
4432		{0x17, 0x18},		/* H href start */
4433		{0x18, 0xbf},		/* H href end */
4434		{0x19, 0x03},		/* V start */
4435		{0x1a, 0xf8},		/* V end */
4436		{0x01, 0x80},		/* blue gain */
4437		{0x02, 0x80},		/* red gain */
4438	};
4439
4440	reg_w_buf(gspca_dev, reg_init, ARRAY_SIZE(reg_init));
4441
4442	i2c_w(gspca_dev, 0x12, 0x80);		/* sensor reset */
4443	msleep(10);
4444
4445	i2c_w_buf(gspca_dev, sensor_init, ARRAY_SIZE(sensor_init));
4446
4447	reg_w(gspca_dev, TP6800_R5C_EDGE_THRLD, 0x10);
4448	reg_w(gspca_dev, TP6800_R54_DARK_CFG, 0x00);
4449
4450	setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
4451
4452	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4453				ARRAY_SIZE(color_gain[0]));
4454
4455	set_led(gspca_dev, 1);
4456	if (sd->sensor == SENSOR_CX0342)
4457		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4458			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4459			v4l2_ctrl_g_ctrl(sd->blue),
4460			v4l2_ctrl_g_ctrl(sd->red));
4461	else
4462		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4463			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4464	if (sd->sensor == SENSOR_SOI763A)
4465		setquality(gspca_dev, v4l2_ctrl_g_ctrl(sd->jpegqual));
4466	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
4467}
4468
4469static void soi763a_6810_start(struct gspca_dev *gspca_dev)
4470{
4471	struct sd *sd = (struct sd *) gspca_dev;
4472	static const struct cmd bridge_init_2[] = {
4473		{TP6800_R7A_BLK_THRLD, 0x00},
4474		{TP6800_R79_QUALITY, 0x04},
4475		{TP6800_R79_QUALITY, 0x01},
4476	};
4477	static const struct cmd bridge_init_3[] = {
4478		{TP6800_R31_PIXEL_START, 0x20},
4479		{TP6800_R32_PIXEL_END_L, 0x9f},
4480		{TP6800_R33_PIXEL_END_H, 0x02},
4481		{TP6800_R34_LINE_START, 0x13},
4482		{TP6800_R35_LINE_END_L, 0xf8},
4483		{TP6800_R36_LINE_END_H, 0x01},
4484	};
4485	static const struct cmd bridge_init_6[] = {
4486		{0x08, 0xff},
4487		{0x09, 0xff},
4488		{0x0a, 0x5f},
4489		{0x0b, 0x80},
4490	};
4491
4492	reg_w(gspca_dev, 0x22, gspca_dev->alt);
4493	bulk_w(gspca_dev, 0x03, color_null, sizeof color_null);
4494	reg_w(gspca_dev, 0x59, 0x40);
4495	if (sd->sensor == SENSOR_CX0342)
4496		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4497			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4498			v4l2_ctrl_g_ctrl(sd->blue),
4499			v4l2_ctrl_g_ctrl(sd->red));
4500	else
4501		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4502			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4503	reg_w_buf(gspca_dev, bridge_init_2, ARRAY_SIZE(bridge_init_2));
4504	reg_w_buf(gspca_dev, tp6810_ov_init_common,
4505			ARRAY_SIZE(tp6810_ov_init_common));
4506	reg_w_buf(gspca_dev, bridge_init_3, ARRAY_SIZE(bridge_init_3));
4507	if (gspca_dev->curr_mode) {
4508		reg_w(gspca_dev, 0x4a, 0x7f);
4509		reg_w(gspca_dev, 0x07, 0x05);
4510		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x00);	/* vga */
4511	} else {
4512		reg_w(gspca_dev, 0x4a, 0xff);
4513		reg_w(gspca_dev, 0x07, 0x85);
4514		reg_w(gspca_dev, TP6800_R78_FORMAT, 0x01);	/* qvga */
4515	}
4516	setgamma(gspca_dev, v4l2_ctrl_g_ctrl(sd->gamma));
4517	reg_w_buf(gspca_dev, tp6810_bridge_start,
4518			ARRAY_SIZE(tp6810_bridge_start));
4519
4520	if (gspca_dev->curr_mode) {
4521		reg_w(gspca_dev, 0x4f, 0x00);
4522		reg_w(gspca_dev, 0x4e, 0x7c);
4523	}
4524
4525	reg_w(gspca_dev, 0x00, 0x00);
4526
4527	setsharpness(gspca_dev, v4l2_ctrl_g_ctrl(sd->sharpness));
4528	bulk_w(gspca_dev, 0x03, color_gain[SENSOR_SOI763A],
4529				ARRAY_SIZE(color_gain[0]));
4530	set_led(gspca_dev, 1);
4531	reg_w(gspca_dev, TP6800_R3F_FRAME_RATE, 0xf0);
4532	if (sd->sensor == SENSOR_CX0342)
4533		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4534			v4l2_ctrl_g_ctrl(gspca_dev->gain),
4535			v4l2_ctrl_g_ctrl(sd->blue),
4536			v4l2_ctrl_g_ctrl(sd->red));
4537	else
4538		setexposure(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4539			v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4540	reg_w_buf(gspca_dev, bridge_init_6, ARRAY_SIZE(bridge_init_6));
4541}
4542
4543/* -- start the camera -- */
4544static int sd_start(struct gspca_dev *gspca_dev)
4545{
4546	struct sd *sd = (struct sd *) gspca_dev;
4547
4548	jpeg_define(sd->jpeg_hdr, gspca_dev->pixfmt.height,
4549			gspca_dev->pixfmt.width);
4550	set_dqt(gspca_dev, sd->quality);
4551	if (sd->bridge == BRIDGE_TP6800) {
4552		if (sd->sensor == SENSOR_CX0342)
4553			cx0342_6800_start(gspca_dev);
4554		else
4555			soi763a_6800_start(gspca_dev);
4556	} else {
4557		if (sd->sensor == SENSOR_CX0342)
4558			cx0342_6810_start(gspca_dev);
4559		else
4560			soi763a_6810_start(gspca_dev);
4561		reg_w_buf(gspca_dev, tp6810_late_start,
4562				ARRAY_SIZE(tp6810_late_start));
4563		reg_w(gspca_dev, 0x80, 0x03);
4564		reg_w(gspca_dev, 0x82, gspca_dev->curr_mode ? 0x0a : 0x0e);
4565
4566		if (sd->sensor == SENSOR_CX0342)
4567			setexposure(gspca_dev,
4568				v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4569				v4l2_ctrl_g_ctrl(gspca_dev->gain),
4570				v4l2_ctrl_g_ctrl(sd->blue),
4571				v4l2_ctrl_g_ctrl(sd->red));
4572		else
4573			setexposure(gspca_dev,
4574				v4l2_ctrl_g_ctrl(gspca_dev->exposure),
4575				v4l2_ctrl_g_ctrl(gspca_dev->gain), 0, 0);
4576		if (sd->sensor == SENSOR_SOI763A)
4577			setquality(gspca_dev,
4578				   v4l2_ctrl_g_ctrl(sd->jpegqual));
4579		if (sd->bridge == BRIDGE_TP6810)
4580			setautogain(gspca_dev,
4581				    v4l2_ctrl_g_ctrl(gspca_dev->autogain));
4582	}
4583
4584	setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure));
4585
4586	return gspca_dev->usb_err;
4587}
4588
4589static void sd_stopN(struct gspca_dev *gspca_dev)
4590{
4591	struct sd *sd = (struct sd *) gspca_dev;
4592
4593	if (sd->bridge == BRIDGE_TP6800)
4594		reg_w(gspca_dev, TP6800_R2F_TIMING_CFG, 0x03);
4595	set_led(gspca_dev, 0);
4596	reg_w(gspca_dev, TP6800_R21_ENDP_1_CTL, 0x00);
4597}
4598
4599static void sd_pkt_scan(struct gspca_dev *gspca_dev,
4600			u8 *data,
4601			int len)
4602{
4603	struct sd *sd = (struct sd *) gspca_dev;
4604
4605	/* the start of frame contains:
4606	 *	ff d8
4607	 *	ff fe
4608	 *	width / 16
4609	 *	height / 8
4610	 *	quality
4611	 */
4612	if (sd->bridge == BRIDGE_TP6810) {
4613		if (*data != 0x5a) {
4614/*fixme: don't discard the whole frame..*/
4615			if (*data == 0xaa || *data == 0x00)
4616				return;
4617			if (*data > 0xc0) {
4618				gspca_dbg(gspca_dev, D_FRAM, "bad frame\n");
4619				gspca_dev->last_packet_type = DISCARD_PACKET;
4620				return;
4621			}
4622		}
4623		data++;
4624		len--;
4625		if (len < 2) {
4626			gspca_dev->last_packet_type = DISCARD_PACKET;
4627			return;
4628		}
4629		if (*data == 0xff && data[1] == 0xd8) {
4630/*fixme: there may be information in the 4 high bits*/
4631			if (len < 7) {
4632				gspca_dev->last_packet_type = DISCARD_PACKET;
4633				return;
4634			}
4635			if ((data[6] & 0x0f) != sd->quality)
4636				set_dqt(gspca_dev, data[6] & 0x0f);
4637			gspca_frame_add(gspca_dev, FIRST_PACKET,
4638					sd->jpeg_hdr, JPEG_HDR_SZ);
4639			gspca_frame_add(gspca_dev, INTER_PACKET,
4640					data + 7, len - 7);
4641		} else if (data[len - 2] == 0xff && data[len - 1] == 0xd9) {
4642			gspca_frame_add(gspca_dev, LAST_PACKET,
4643					data, len);
4644		} else {
4645			gspca_frame_add(gspca_dev, INTER_PACKET,
4646					data, len);
4647		}
4648		return;
4649	}
4650
4651	switch (*data) {
4652	case 0x55:
4653		gspca_frame_add(gspca_dev, LAST_PACKET, data, 0);
4654
4655		if (len < 8
4656		 || data[1] != 0xff || data[2] != 0xd8
4657		 || data[3] != 0xff || data[4] != 0xfe) {
4658
4659			/* Have only seen this with corrupt frames */
4660			gspca_dev->last_packet_type = DISCARD_PACKET;
4661			return;
4662		}
4663		if (data[7] != sd->quality)
4664			set_dqt(gspca_dev, data[7]);
4665		gspca_frame_add(gspca_dev, FIRST_PACKET,
4666				sd->jpeg_hdr, JPEG_HDR_SZ);
4667		gspca_frame_add(gspca_dev, INTER_PACKET,
4668				data + 8, len - 8);
4669		break;
4670	case 0xaa:
4671		gspca_dev->last_packet_type = DISCARD_PACKET;
4672		break;
4673	case 0xcc:
4674		if (len >= 3 && (data[1] != 0xff || data[2] != 0xd8))
4675			gspca_frame_add(gspca_dev, INTER_PACKET,
4676					data + 1, len - 1);
4677		else
4678			gspca_dev->last_packet_type = DISCARD_PACKET;
4679		break;
4680	}
4681}
4682
4683static void sd_dq_callback(struct gspca_dev *gspca_dev)
4684{
4685	struct sd *sd = (struct sd *) gspca_dev;
4686	int ret, alen;
4687	int luma, expo;
4688
4689	if (sd->ag_cnt < 0)
4690		return;
4691	if (--sd->ag_cnt > 5)
4692		return;
4693	switch (sd->ag_cnt) {
4694/*	case 5: */
4695	default:
4696		reg_w(gspca_dev, 0x7d, 0x00);
4697		break;
4698	case 4:
4699		reg_w(gspca_dev, 0x27, 0xb0);
4700		break;
4701	case 3:
4702		reg_w(gspca_dev, 0x0c, 0x01);
4703		break;
4704	case 2:
4705		ret = usb_bulk_msg(gspca_dev->dev,
4706				usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4707				gspca_dev->usb_buf,
4708				32,
4709				&alen,
4710				500);
4711		if (ret < 0) {
4712			pr_err("bulk err %d\n", ret);
4713			break;
4714		}
4715		/* values not used (unknown) */
4716		break;
4717	case 1:
4718		reg_w(gspca_dev, 0x27, 0xd0);
4719		break;
4720	case 0:
4721		ret = usb_bulk_msg(gspca_dev->dev,
4722				usb_rcvbulkpipe(gspca_dev->dev, 0x02),
4723				gspca_dev->usb_buf,
4724				32,
4725				&alen,
4726				500);
4727		if (ret < 0) {
4728			pr_err("bulk err %d\n", ret);
4729			break;
4730		}
4731		luma = ((gspca_dev->usb_buf[8] << 8) + gspca_dev->usb_buf[7] +
4732			(gspca_dev->usb_buf[11] << 8) + gspca_dev->usb_buf[10] +
4733			(gspca_dev->usb_buf[14] << 8) + gspca_dev->usb_buf[13] +
4734			(gspca_dev->usb_buf[17] << 8) + gspca_dev->usb_buf[16] +
4735			(gspca_dev->usb_buf[20] << 8) + gspca_dev->usb_buf[19] +
4736			(gspca_dev->usb_buf[23] << 8) + gspca_dev->usb_buf[22] +
4737			(gspca_dev->usb_buf[26] << 8) + gspca_dev->usb_buf[25] +
4738			(gspca_dev->usb_buf[29] << 8) + gspca_dev->usb_buf[28])
4739				/ 8;
4740		if (gspca_dev->pixfmt.width == 640)
4741			luma /= 4;
4742		reg_w(gspca_dev, 0x7d, 0x00);
4743
4744		expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure);
4745		ret = gspca_expo_autogain(gspca_dev, luma,
4746				60,	/* desired luma */
4747				6,	/* dead zone */
4748				2,	/* gain knee */
4749				70);	/* expo knee */
4750		sd->ag_cnt = AG_CNT_START;
4751		if (sd->bridge == BRIDGE_TP6810) {
4752			int new_expo = v4l2_ctrl_g_ctrl(gspca_dev->exposure);
4753
4754			if ((expo >= 128 && new_expo < 128)
4755			 || (expo < 128 && new_expo >= 128))
4756				setframerate(gspca_dev, new_expo);
4757		}
4758		break;
4759	}
4760}
4761
4762/* get stream parameters (framerate) */
4763static void sd_get_streamparm(struct gspca_dev *gspca_dev,
4764			     struct v4l2_streamparm *parm)
4765{
4766	struct sd *sd = (struct sd *) gspca_dev;
4767	struct v4l2_captureparm *cp = &parm->parm.capture;
4768	struct v4l2_fract *tpf = &cp->timeperframe;
4769	int fr, i;
4770
4771	tpf->numerator = 1;
4772	i = get_fr_idx(gspca_dev);
4773	if (i & 0x80) {
4774		if (sd->bridge == BRIDGE_TP6800)
4775			fr = rates[6 - (i & 0x07)];
4776		else
4777			fr = rates_6810[7 - (i & 0x07)];
4778	} else {
4779		fr = rates[6 - i];
4780	}
4781	tpf->denominator = fr;
4782}
4783
4784/* set stream parameters (framerate) */
4785static void sd_set_streamparm(struct gspca_dev *gspca_dev,
4786			     struct v4l2_streamparm *parm)
4787{
4788	struct sd *sd = (struct sd *) gspca_dev;
4789	struct v4l2_captureparm *cp = &parm->parm.capture;
4790	struct v4l2_fract *tpf = &cp->timeperframe;
4791	int fr, i;
4792
4793	if (tpf->numerator == 0 || tpf->denominator == 0)
4794		sd->framerate = DEFAULT_FRAME_RATE;
4795	else
4796		sd->framerate = tpf->denominator / tpf->numerator;
4797
4798	if (gspca_dev->streaming)
4799		setframerate(gspca_dev, v4l2_ctrl_g_ctrl(gspca_dev->exposure));
4800
4801	/* Return the actual framerate */
4802	i = get_fr_idx(gspca_dev);
4803	if (i & 0x80)
4804		fr = rates_6810[7 - (i & 0x07)];
4805	else
4806		fr = rates[6 - i];
4807	tpf->numerator = 1;
4808	tpf->denominator = fr;
4809}
4810
4811static int sd_set_jcomp(struct gspca_dev *gspca_dev,
4812			const struct v4l2_jpegcompression *jcomp)
4813{
4814	struct sd *sd = (struct sd *) gspca_dev;
4815
4816	if (sd->sensor != SENSOR_SOI763A)
4817		return -ENOTTY;
4818	v4l2_ctrl_s_ctrl(sd->jpegqual, jcomp->quality);
4819	return 0;
4820}
4821
4822static int sd_get_jcomp(struct gspca_dev *gspca_dev,
4823			struct v4l2_jpegcompression *jcomp)
4824{
4825	struct sd *sd = (struct sd *) gspca_dev;
4826
4827	if (sd->sensor != SENSOR_SOI763A)
4828		return -ENOTTY;
4829	memset(jcomp, 0, sizeof *jcomp);
4830	jcomp->quality = v4l2_ctrl_g_ctrl(sd->jpegqual);
4831	jcomp->jpeg_markers = V4L2_JPEG_MARKER_DHT
4832			| V4L2_JPEG_MARKER_DQT;
4833	return 0;
4834}
4835
4836static int sd_s_ctrl(struct v4l2_ctrl *ctrl)
4837{
4838	struct gspca_dev *gspca_dev =
4839		container_of(ctrl->handler, struct gspca_dev, ctrl_handler);
4840	struct sd *sd = (struct sd *)gspca_dev;
4841
4842	gspca_dev->usb_err = 0;
4843
4844	if (!gspca_dev->streaming)
4845		return 0;
4846
4847	switch (ctrl->id) {
4848	case V4L2_CID_SHARPNESS:
4849		setsharpness(gspca_dev, ctrl->val);
4850		break;
4851	case V4L2_CID_GAMMA:
4852		setgamma(gspca_dev, ctrl->val);
4853		break;
4854	case V4L2_CID_BLUE_BALANCE:
4855		setbgain(gspca_dev, ctrl->val);
4856		break;
4857	case V4L2_CID_RED_BALANCE:
4858		setrgain(gspca_dev, ctrl->val);
4859		break;
4860	case V4L2_CID_EXPOSURE:
4861		sd_setgain(gspca_dev);
4862		break;
4863	case V4L2_CID_AUTOGAIN:
4864		if (ctrl->val)
4865			break;
4866		sd_setgain(gspca_dev);
4867		break;
4868	case V4L2_CID_JPEG_COMPRESSION_QUALITY:
4869		jpeg_set_qual(sd->jpeg_hdr, ctrl->val);
4870		break;
4871	}
4872	return gspca_dev->usb_err;
4873}
4874
4875static const struct v4l2_ctrl_ops sd_ctrl_ops = {
4876	.s_ctrl = sd_s_ctrl,
4877};
4878
4879static int sd_init_controls(struct gspca_dev *gspca_dev)
4880{
4881	struct sd *sd = (struct sd *)gspca_dev;
4882	struct v4l2_ctrl_handler *hdl = &gspca_dev->ctrl_handler;
4883
4884	gspca_dev->vdev.ctrl_handler = hdl;
4885	v4l2_ctrl_handler_init(hdl, 4);
4886	gspca_dev->exposure = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4887			V4L2_CID_EXPOSURE, 1, 0xdc, 1, 0x4e);
4888	if (sd->sensor == SENSOR_CX0342) {
4889		sd->red = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4890			V4L2_CID_RED_BALANCE, 0, 4095, 1, 256);
4891		sd->blue = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4892			V4L2_CID_BLUE_BALANCE, 0, 4095, 1, 256);
4893	}
4894	if (sd->sensor == SENSOR_SOI763A)
4895		gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4896			V4L2_CID_GAIN, 0, 15, 1, 3);
4897	else
4898		gspca_dev->gain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4899			V4L2_CID_GAIN, 0, 4095, 1, 256);
4900	sd->sharpness = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4901			V4L2_CID_SHARPNESS, 0, 3, 1, 2);
4902	sd->gamma = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4903			V4L2_CID_GAMMA, 0, NGAMMA - 1, 1,
4904			(sd->sensor == SENSOR_SOI763A &&
4905			 sd->bridge == BRIDGE_TP6800) ? 0 : 1);
4906	if (sd->bridge == BRIDGE_TP6810)
4907		gspca_dev->autogain = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4908			V4L2_CID_AUTOGAIN, 0, 1, 1, 1);
4909	if (sd->sensor == SENSOR_SOI763A)
4910		sd->jpegqual = v4l2_ctrl_new_std(hdl, &sd_ctrl_ops,
4911			V4L2_CID_JPEG_COMPRESSION_QUALITY,
4912			0, 15, 1, (sd->bridge == BRIDGE_TP6810) ? 0 : 13);
4913
4914	if (hdl->error) {
4915		pr_err("Could not initialize controls\n");
4916		return hdl->error;
4917	}
4918	if (gspca_dev->autogain)
4919		v4l2_ctrl_auto_cluster(3, &gspca_dev->autogain, 0, false);
4920	else
4921		v4l2_ctrl_cluster(2, &gspca_dev->exposure);
4922	return 0;
4923}
4924
4925static const struct sd_desc sd_desc = {
4926	.name = KBUILD_MODNAME,
4927	.config = sd_config,
4928	.init = sd_init,
4929	.init_controls = sd_init_controls,
4930	.isoc_init = sd_isoc_init,
4931	.start = sd_start,
4932	.stopN = sd_stopN,
4933	.pkt_scan = sd_pkt_scan,
4934	.dq_callback = sd_dq_callback,
4935	.get_streamparm = sd_get_streamparm,
4936	.set_streamparm = sd_set_streamparm,
4937	.get_jcomp = sd_get_jcomp,
4938	.set_jcomp = sd_set_jcomp,
4939};
4940
4941static const struct usb_device_id device_table[] = {
4942	{USB_DEVICE(0x06a2, 0x0003), .driver_info = BRIDGE_TP6800},
4943	{USB_DEVICE(0x06a2, 0x6810), .driver_info = BRIDGE_TP6810},
4944	{}			/* Terminating entry */
4945};
4946
4947MODULE_DEVICE_TABLE(usb, device_table);
4948
4949static int sd_probe(struct usb_interface *interface,
4950		    const struct usb_device_id *id)
4951{
4952	return gspca_dev_probe(interface, id, &sd_desc, sizeof(struct sd),
4953			       THIS_MODULE);
4954}
4955
4956static struct usb_driver sd_driver = {
4957	.name = KBUILD_MODNAME,
4958	.id_table = device_table,
4959	.probe = sd_probe,
4960	.disconnect = gspca_disconnect,
4961#ifdef CONFIG_PM
4962	.suspend = gspca_suspend,
4963	.resume = gspca_resume,
4964	.reset_resume = gspca_resume,
4965#endif
4966};
4967
4968module_usb_driver(sd_driver);
4969
4970module_param(force_sensor, int, 0644);
4971MODULE_PARM_DESC(force_sensor,
4972	"Force sensor. 0: cx0342, 1: soi763a");
4973