1<?php
2//============================================================+
3// File name   : unicode_data.php
4// Begin       : 2008-01-01
5// Last Update : 2008-07-21
6// License     : GNU LGPL (http://www.gnu.org/copyleft/lesser.html)
7// 	----------------------------------------------------------------------------
8//  Copyright (C) 2002-2008  Nicola Asuni - Tecnick.com S.r.l.
9//
10// 	This program is free software: you can redistribute it and/or modify
11// 	it under the terms of the GNU Lesser General Public License as published by
12// 	the Free Software Foundation, either version 2.1 of the License, or
13// 	(at your option) any later version.
14//
15// 	This program is distributed in the hope that it will be useful,
16// 	but WITHOUT ANY WARRANTY; without even the implied warranty of
17// 	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18// 	GNU Lesser General Public License for more details.
19//
20// 	You should have received a copy of the GNU Lesser General Public License
21// 	along with this program.  If not, see <http://www.gnu.org/licenses/>.
22//
23// 	See LICENSE.TXT file for more information.
24//  ----------------------------------------------------------------------------
25//
26// Description : Unicode Include file for TCPDF.
27//
28// Author: Nicola Asuni
29//
30// (c) Copyright:
31//               Nicola Asuni
32//               Tecnick.com s.r.l.
33//               Via Della Pace, 11
34//               09044 Quartucciu (CA)
35//               ITALY
36//               www.tecnick.com
37//               info@tecnick.com
38//============================================================+
39// THANKS TO
40// Efthimios Mavrogeorgiadis
41// Saleh AlMatrafe
42
43/**
44 * Unicode Include file for TCPDF.
45 * @author Nicola Asuni
46 * @copyright 2004-2008 Nicola Asuni - Tecnick.com S.r.l (www.tecnick.com) Via Della Pace, 11 - 09044 - Quartucciu (CA) - ITALY - www.tecnick.com - info@tecnick.com
47 * @package com.tecnick.tcpdf
48 * @link http://www.tcpdf.org
49 * @license http://www.gnu.org/copyleft/lesser.html LGPL
50 * @since 2.1.000 (2008-01-08)
51*/
52
53/**
54* Left-to-Right Mark
55*/
56define("K_LRM", 8206);
57/**
58* Right-to-Left Mark
59*/
60define("K_RLM", 8207);
61/**
62* Left-to-Right Embedding
63*/
64define("K_LRE", 8234);
65/**
66* Right-to-Left Embedding
67*/
68define("K_RLE", 8235);
69/**
70* Pop Directional Format
71*/
72define("K_PDF", 8236);
73/**
74* Left-to-Right Override
75*/
76define("K_LRO", 8237);
77/**
78* Right-to-Left Override
79*/
80define("K_RLO", 8238);
81
82/*
83 * Pattern to test RTL (Righ-To-Left) strings using regular expressions.
84 */
85if (!defined("K_RE_PATTERN_RTL"))
86define("K_RE_PATTERN_RTL", "/(
87	  \xD6\xBE																							# R
88	| \xD7[\x80\x83\x86\x90-\xAA\xB0-\xB4]									# R
89	| \xDF[\x80-\xAA\xB4\xB5\xBA]														# R
90	| \xE2\x80\x8F																					# R
91	| \xEF\xAC[\x9D\x9F\xA0-\xA8\xAA-\xB6\xB8-\xBC\xBE]			# R
92	| \xEF\xAD[\x80\x81\x83\x84\x86-\x8F]										# R
93	| \xF0\x90\xA0[\x80-\x85\x88\x8A-\xB5\xB7\xB8\xBC\xBF]	# R
94	| \xF0\x90\xA4[\x80-\x99]																# R
95	| \xF0\x90\xA8[\x80\x90-\x93\x95-\x97\x99-\xB3]					# R
96	| \xF0\x90\xA9[\x80-\x87\x90-\x98]											# R
97	| \xE2\x80[\xAB\xAE]																		# RLE & RLO
98	)/x");
99/*
100 * Pattern to test Arabic strings using regular expressions.
101 * source: http://www.w3.org/International/questions/qa-forms-utf-8
102 */
103if (!defined("K_RE_PATTERN_ARABIC"))
104define("K_RE_PATTERN_ARABIC", "/(
105			  \xD8[\x80-\x83\x8B\x8D\x9B\x9E\x9F\xA1-\xBA]	# AL
106			| \xD9[\x80-\x8A\xAD-\xAF\xB1-\xBF]							# AL
107			| \xDA[\x80-\xBF]																# AL
108			| \xDB[\x80-\x95\x9D\xA5\xA6\xAE\xAF\xBA-\xBF]	# AL
109			| \xDC[\x80-\x8D\x90\x92-\xAF]									# AL
110			| \xDD[\x8D-\xAD]																# AL
111			| \xDE[\x80-\xA5\xB1]														# AL
112			| \xEF\xAD[\x90-\xBF]														# AL
113			| \xEF\xAE[\x80-\xB1]														# AL
114			| \xEF\xAF[\x93-\xBF]														# AL
115			| \xEF[\xB0-\xB3][\x80-\xBF]										# AL
116			| \xEF\xB4[\x80-\xBD]														# AL
117			| \xEF\xB5[\x90-\xBF]														# AL
118			| \xEF\xB6[\x80-\x8F\x92-\xBF]									# AL
119			| \xEF\xB7[\x80-\x87\xB0-\xBC]									# AL
120			| \xEF\xB9[\xB0-\xB4\xB6-\xBF]									# AL
121			| \xEF\xBA[\x80-\xBF]														# AL
122			| \xEF\xBB[\x80-\xBC]														# AL
123			| \xD9[\xA0-\xA9\xAB\xAC]												# AN
124			)/x");
125/**
126 * Array of unicode types
127 */
128$unicode = array(
129	0			=>	'BN',
130	1			=>	'BN',
131	2			=>	'BN',
132	3			=>	'BN',
133	4			=>	'BN',
134	5			=>	'BN',
135	6			=>	'BN',
136	7			=>	'BN',
137	8			=>	'BN',
138	9			=>	'S',
139	10		=>	'B',
140	11		=>	'S',
141	12		=>	'WS',
142	13		=>	'B',
143	14		=>	'BN',
144	15		=>	'BN',
145	16		=>	'BN',
146	17		=>	'BN',
147	18		=>	'BN',
148	19		=>	'BN',
149	20		=>	'BN',
150	21		=>	'BN',
151	22		=>	'BN',
152	23		=>	'BN',
153	24		=>	'BN',
154	25		=>	'BN',
155	26		=>	'BN',
156	27		=>	'BN',
157	28		=>	'B',
158	29		=>	'B',
159	30		=>	'B',
160	31		=>	'S',
161	32		=>	'WS',
162	33		=>	'ON',
163	34		=>	'ON',
164	35		=>	'ET',
165	36		=>	'ET',
166	37		=>	'ET',
167	38		=>	'ON',
168	39		=>	'ON',
169	40		=>	'ON',
170	41		=>	'ON',
171	42		=>	'ON',
172	43		=>	'ES',
173	44		=>	'CS',
174	45		=>	'ES',
175	46		=>	'CS',
176	47		=>	'CS',
177	48		=>	'EN',
178	49		=>	'EN',
179	50		=>	'EN',
180	51		=>	'EN',
181	52		=>	'EN',
182	53		=>	'EN',
183	54		=>	'EN',
184	55		=>	'EN',
185	56		=>	'EN',
186	57		=>	'EN',
187	58		=>	'CS',
188	59		=>	'ON',
189	60		=>	'ON',
190	61		=>	'ON',
191	62		=>	'ON',
192	63		=>	'ON',
193	64		=>	'ON',
194	65		=>	'L',
195	66		=>	'L',
196	67		=>	'L',
197	68		=>	'L',
198	69		=>	'L',
199	70		=>	'L',
200	71		=>	'L',
201	72		=>	'L',
202	73		=>	'L',
203	74		=>	'L',
204	75		=>	'L',
205	76		=>	'L',
206	77		=>	'L',
207	78		=>	'L',
208	79		=>	'L',
209	80		=>	'L',
210	81		=>	'L',
211	82		=>	'L',
212	83		=>	'L',
213	84		=>	'L',
214	85		=>	'L',
215	86		=>	'L',
216	87		=>	'L',
217	88		=>	'L',
218	89		=>	'L',
219	90		=>	'L',
220	91		=>	'ON',
221	92		=>	'ON',
222	93		=>	'ON',
223	94		=>	'ON',
224	95		=>	'ON',
225	96		=>	'ON',
226	97		=>	'L',
227	98		=>	'L',
228	99		=>	'L',
229	100		=>	'L',
230	101		=>	'L',
231	102		=>	'L',
232	103		=>	'L',
233	104		=>	'L',
234	105		=>	'L',
235	106		=>	'L',
236	107		=>	'L',
237	108		=>	'L',
238	109		=>	'L',
239	110		=>	'L',
240	111		=>	'L',
241	112		=>	'L',
242	113		=>	'L',
243	114		=>	'L',
244	115		=>	'L',
245	116		=>	'L',
246	117		=>	'L',
247	118		=>	'L',
248	119		=>	'L',
249	120		=>	'L',
250	121		=>	'L',
251	122		=>	'L',
252	123		=>	'ON',
253	124		=>	'ON',
254	125		=>	'ON',
255	126		=>	'ON',
256	127		=>	'BN',
257	128		=>	'BN',
258	129		=>	'BN',
259	130		=>	'BN',
260	131		=>	'BN',
261	132		=>	'BN',
262	133		=>	'B',
263	134		=>	'BN',
264	135		=>	'BN',
265	136		=>	'BN',
266	137		=>	'BN',
267	138		=>	'BN',
268	139		=>	'BN',
269	140		=>	'BN',
270	141		=>	'BN',
271	142		=>	'BN',
272	143		=>	'BN',
273	144		=>	'BN',
274	145		=>	'BN',
275	146		=>	'BN',
276	147		=>	'BN',
277	148		=>	'BN',
278	149		=>	'BN',
279	150		=>	'BN',
280	151		=>	'BN',
281	152		=>	'BN',
282	153		=>	'BN',
283	154		=>	'BN',
284	155		=>	'BN',
285	156		=>	'BN',
286	157		=>	'BN',
287	158		=>	'BN',
288	159		=>	'BN',
289	160		=>	'CS',
290	161		=>	'ON',
291	162		=>	'ET',
292	163		=>	'ET',
293	164		=>	'ET',
294	165		=>	'ET',
295	166		=>	'ON',
296	167		=>	'ON',
297	168		=>	'ON',
298	169		=>	'ON',
299	170		=>	'L',
300	171		=>	'ON',
301	172		=>	'ON',
302	173		=>	'BN',
303	174		=>	'ON',
304	175		=>	'ON',
305	176		=>	'ET',
306	177		=>	'ET',
307	178		=>	'EN',
308	179		=>	'EN',
309	180		=>	'ON',
310	181		=>	'L',
311	182		=>	'ON',
312	183		=>	'ON',
313	184		=>	'ON',
314	185		=>	'EN',
315	186		=>	'L',
316	187		=>	'ON',
317	188		=>	'ON',
318	189		=>	'ON',
319	190		=>	'ON',
320	191		=>	'ON',
321	192		=>	'L',
322	193		=>	'L',
323	194		=>	'L',
324	195		=>	'L',
325	196		=>	'L',
326	197		=>	'L',
327	198		=>	'L',
328	199		=>	'L',
329	200		=>	'L',
330	201		=>	'L',
331	202		=>	'L',
332	203		=>	'L',
333	204		=>	'L',
334	205		=>	'L',
335	206		=>	'L',
336	207		=>	'L',
337	208		=>	'L',
338	209		=>	'L',
339	210		=>	'L',
340	211		=>	'L',
341	212		=>	'L',
342	213		=>	'L',
343	214		=>	'L',
344	215		=>	'ON',
345	216		=>	'L',
346	217		=>	'L',
347	218		=>	'L',
348	219		=>	'L',
349	220		=>	'L',
350	221		=>	'L',
351	222		=>	'L',
352	223		=>	'L',
353	224		=>	'L',
354	225		=>	'L',
355	226		=>	'L',
356	227		=>	'L',
357	228		=>	'L',
358	229		=>	'L',
359	230		=>	'L',
360	231		=>	'L',
361	232		=>	'L',
362	233		=>	'L',
363	234		=>	'L',
364	235		=>	'L',
365	236		=>	'L',
366	237		=>	'L',
367	238		=>	'L',
368	239		=>	'L',
369	240		=>	'L',
370	241		=>	'L',
371	242		=>	'L',
372	243		=>	'L',
373	244		=>	'L',
374	245		=>	'L',
375	246		=>	'L',
376	247		=>	'ON',
377	248		=>	'L',
378	249		=>	'L',
379	250		=>	'L',
380	251		=>	'L',
381	252		=>	'L',
382	253		=>	'L',
383	254		=>	'L',
384	255		=>	'L',
385	256		=>	'L',
386	257		=>	'L',
387	258		=>	'L',
388	259		=>	'L',
389	260		=>	'L',
390	261		=>	'L',
391	262		=>	'L',
392	263		=>	'L',
393	264		=>	'L',
394	265		=>	'L',
395	266		=>	'L',
396	267		=>	'L',
397	268		=>	'L',
398	269		=>	'L',
399	270		=>	'L',
400	271		=>	'L',
401	272		=>	'L',
402	273		=>	'L',
403	274		=>	'L',
404	275		=>	'L',
405	276		=>	'L',
406	277		=>	'L',
407	278		=>	'L',
408	279		=>	'L',
409	280		=>	'L',
410	281		=>	'L',
411	282		=>	'L',
412	283		=>	'L',
413	284		=>	'L',
414	285		=>	'L',
415	286		=>	'L',
416	287		=>	'L',
417	288		=>	'L',
418	289		=>	'L',
419	290		=>	'L',
420	291		=>	'L',
421	292		=>	'L',
422	293		=>	'L',
423	294		=>	'L',
424	295		=>	'L',
425	296		=>	'L',
426	297		=>	'L',
427	298		=>	'L',
428	299		=>	'L',
429	300		=>	'L',
430	301		=>	'L',
431	302		=>	'L',
432	303		=>	'L',
433	304		=>	'L',
434	305		=>	'L',
435	306		=>	'L',
436	307		=>	'L',
437	308		=>	'L',
438	309		=>	'L',
439	310		=>	'L',
440	311		=>	'L',
441	312		=>	'L',
442	313		=>	'L',
443	314		=>	'L',
444	315		=>	'L',
445	316		=>	'L',
446	317		=>	'L',
447	318		=>	'L',
448	319		=>	'L',
449	320		=>	'L',
450	321		=>	'L',
451	322		=>	'L',
452	323		=>	'L',
453	324		=>	'L',
454	325		=>	'L',
455	326		=>	'L',
456	327		=>	'L',
457	328		=>	'L',
458	329		=>	'L',
459	330		=>	'L',
460	331		=>	'L',
461	332		=>	'L',
462	333		=>	'L',
463	334		=>	'L',
464	335		=>	'L',
465	336		=>	'L',
466	337		=>	'L',
467	338		=>	'L',
468	339		=>	'L',
469	340		=>	'L',
470	341		=>	'L',
471	342		=>	'L',
472	343		=>	'L',
473	344		=>	'L',
474	345		=>	'L',
475	346		=>	'L',
476	347		=>	'L',
477	348		=>	'L',
478	349		=>	'L',
479	350		=>	'L',
480	351		=>	'L',
481	352		=>	'L',
482	353		=>	'L',
483	354		=>	'L',
484	355		=>	'L',
485	356		=>	'L',
486	357		=>	'L',
487	358		=>	'L',
488	359		=>	'L',
489	360		=>	'L',
490	361		=>	'L',
491	362		=>	'L',
492	363		=>	'L',
493	364		=>	'L',
494	365		=>	'L',
495	366		=>	'L',
496	367		=>	'L',
497	368		=>	'L',
498	369		=>	'L',
499	370		=>	'L',
500	371		=>	'L',
501	372		=>	'L',
502	373		=>	'L',
503	374		=>	'L',
504	375		=>	'L',
505	376		=>	'L',
506	377		=>	'L',
507	378		=>	'L',
508	379		=>	'L',
509	380		=>	'L',
510	381		=>	'L',
511	382		=>	'L',
512	383		=>	'L',
513	384		=>	'L',
514	385		=>	'L',
515	386		=>	'L',
516	387		=>	'L',
517	388		=>	'L',
518	389		=>	'L',
519	390		=>	'L',
520	391		=>	'L',
521	392		=>	'L',
522	393		=>	'L',
523	394		=>	'L',
524	395		=>	'L',
525	396		=>	'L',
526	397		=>	'L',
527	398		=>	'L',
528	399		=>	'L',
529	400		=>	'L',
530	401		=>	'L',
531	402		=>	'L',
532	403		=>	'L',
533	404		=>	'L',
534	405		=>	'L',
535	406		=>	'L',
536	407		=>	'L',
537	408		=>	'L',
538	409		=>	'L',
539	410		=>	'L',
540	411		=>	'L',
541	412		=>	'L',
542	413		=>	'L',
543	414		=>	'L',
544	415		=>	'L',
545	416		=>	'L',
546	417		=>	'L',
547	418		=>	'L',
548	419		=>	'L',
549	420		=>	'L',
550	421		=>	'L',
551	422		=>	'L',
552	423		=>	'L',
553	424		=>	'L',
554	425		=>	'L',
555	426		=>	'L',
556	427		=>	'L',
557	428		=>	'L',
558	429		=>	'L',
559	430		=>	'L',
560	431		=>	'L',
561	432		=>	'L',
562	433		=>	'L',
563	434		=>	'L',
564	435		=>	'L',
565	436		=>	'L',
566	437		=>	'L',
567	438		=>	'L',
568	439		=>	'L',
569	440		=>	'L',
570	441		=>	'L',
571	442		=>	'L',
572	443		=>	'L',
573	444		=>	'L',
574	445		=>	'L',
575	446		=>	'L',
576	447		=>	'L',
577	448		=>	'L',
578	449		=>	'L',
579	450		=>	'L',
580	451		=>	'L',
581	452		=>	'L',
582	453		=>	'L',
583	454		=>	'L',
584	455		=>	'L',
585	456		=>	'L',
586	457		=>	'L',
587	458		=>	'L',
588	459		=>	'L',
589	460		=>	'L',
590	461		=>	'L',
591	462		=>	'L',
592	463		=>	'L',
593	464		=>	'L',
594	465		=>	'L',
595	466		=>	'L',
596	467		=>	'L',
597	468		=>	'L',
598	469		=>	'L',
599	470		=>	'L',
600	471		=>	'L',
601	472		=>	'L',
602	473		=>	'L',
603	474		=>	'L',
604	475		=>	'L',
605	476		=>	'L',
606	477		=>	'L',
607	478		=>	'L',
608	479		=>	'L',
609	480		=>	'L',
610	481		=>	'L',
611	482		=>	'L',
612	483		=>	'L',
613	484		=>	'L',
614	485		=>	'L',
615	486		=>	'L',
616	487		=>	'L',
617	488		=>	'L',
618	489		=>	'L',
619	490		=>	'L',
620	491		=>	'L',
621	492		=>	'L',
622	493		=>	'L',
623	494		=>	'L',
624	495		=>	'L',
625	496		=>	'L',
626	497		=>	'L',
627	498		=>	'L',
628	499		=>	'L',
629	500		=>	'L',
630	501		=>	'L',
631	502		=>	'L',
632	503		=>	'L',
633	504		=>	'L',
634	505		=>	'L',
635	506		=>	'L',
636	507		=>	'L',
637	508		=>	'L',
638	509		=>	'L',
639	510		=>	'L',
640	511		=>	'L',
641	512		=>	'L',
642	513		=>	'L',
643	514		=>	'L',
644	515		=>	'L',
645	516		=>	'L',
646	517		=>	'L',
647	518		=>	'L',
648	519		=>	'L',
649	520		=>	'L',
650	521		=>	'L',
651	522		=>	'L',
652	523		=>	'L',
653	524		=>	'L',
654	525		=>	'L',
655	526		=>	'L',
656	527		=>	'L',
657	528		=>	'L',
658	529		=>	'L',
659	530		=>	'L',
660	531		=>	'L',
661	532		=>	'L',
662	533		=>	'L',
663	534		=>	'L',
664	535		=>	'L',
665	536		=>	'L',
666	537		=>	'L',
667	538		=>	'L',
668	539		=>	'L',
669	540		=>	'L',
670	541		=>	'L',
671	542		=>	'L',
672	543		=>	'L',
673	544		=>	'L',
674	545		=>	'L',
675	546		=>	'L',
676	547		=>	'L',
677	548		=>	'L',
678	549		=>	'L',
679	550		=>	'L',
680	551		=>	'L',
681	552		=>	'L',
682	553		=>	'L',
683	554		=>	'L',
684	555		=>	'L',
685	556		=>	'L',
686	557		=>	'L',
687	558		=>	'L',
688	559		=>	'L',
689	560		=>	'L',
690	561		=>	'L',
691	562		=>	'L',
692	563		=>	'L',
693	564		=>	'L',
694	565		=>	'L',
695	566		=>	'L',
696	567		=>	'L',
697	568		=>	'L',
698	569		=>	'L',
699	570		=>	'L',
700	571		=>	'L',
701	572		=>	'L',
702	573		=>	'L',
703	574		=>	'L',
704	575		=>	'L',
705	576		=>	'L',
706	577		=>	'L',
707	578		=>	'L',
708	579		=>	'L',
709	580		=>	'L',
710	581		=>	'L',
711	582		=>	'L',
712	583		=>	'L',
713	584		=>	'L',
714	585		=>	'L',
715	586		=>	'L',
716	587		=>	'L',
717	588		=>	'L',
718	589		=>	'L',
719	590		=>	'L',
720	591		=>	'L',
721	592		=>	'L',
722	593		=>	'L',
723	594		=>	'L',
724	595		=>	'L',
725	596		=>	'L',
726	597		=>	'L',
727	598		=>	'L',
728	599		=>	'L',
729	600		=>	'L',
730	601		=>	'L',
731	602		=>	'L',
732	603		=>	'L',
733	604		=>	'L',
734	605		=>	'L',
735	606		=>	'L',
736	607		=>	'L',
737	608		=>	'L',
738	609		=>	'L',
739	610		=>	'L',
740	611		=>	'L',
741	612		=>	'L',
742	613		=>	'L',
743	614		=>	'L',
744	615		=>	'L',
745	616		=>	'L',
746	617		=>	'L',
747	618		=>	'L',
748	619		=>	'L',
749	620		=>	'L',
750	621		=>	'L',
751	622		=>	'L',
752	623		=>	'L',
753	624		=>	'L',
754	625		=>	'L',
755	626		=>	'L',
756	627		=>	'L',
757	628		=>	'L',
758	629		=>	'L',
759	630		=>	'L',
760	631		=>	'L',
761	632		=>	'L',
762	633		=>	'L',
763	634		=>	'L',
764	635		=>	'L',
765	636		=>	'L',
766	637		=>	'L',
767	638		=>	'L',
768	639		=>	'L',
769	640		=>	'L',
770	641		=>	'L',
771	642		=>	'L',
772	643		=>	'L',
773	644		=>	'L',
774	645		=>	'L',
775	646		=>	'L',
776	647		=>	'L',
777	648		=>	'L',
778	649		=>	'L',
779	650		=>	'L',
780	651		=>	'L',
781	652		=>	'L',
782	653		=>	'L',
783	654		=>	'L',
784	655		=>	'L',
785	656		=>	'L',
786	657		=>	'L',
787	658		=>	'L',
788	659		=>	'L',
789	660		=>	'L',
790	661		=>	'L',
791	662		=>	'L',
792	663		=>	'L',
793	664		=>	'L',
794	665		=>	'L',
795	666		=>	'L',
796	667		=>	'L',
797	668		=>	'L',
798	669		=>	'L',
799	670		=>	'L',
800	671		=>	'L',
801	672		=>	'L',
802	673		=>	'L',
803	674		=>	'L',
804	675		=>	'L',
805	676		=>	'L',
806	677		=>	'L',
807	678		=>	'L',
808	679		=>	'L',
809	680		=>	'L',
810	681		=>	'L',
811	682		=>	'L',
812	683		=>	'L',
813	684		=>	'L',
814	685		=>	'L',
815	686		=>	'L',
816	687		=>	'L',
817	688		=>	'L',
818	689		=>	'L',
819	690		=>	'L',
820	691		=>	'L',
821	692		=>	'L',
822	693		=>	'L',
823	694		=>	'L',
824	695		=>	'L',
825	696		=>	'L',
826	697		=>	'ON',
827	698		=>	'ON',
828	699		=>	'L',
829	700		=>	'L',
830	701		=>	'L',
831	702		=>	'L',
832	703		=>	'L',
833	704		=>	'L',
834	705		=>	'L',
835	706		=>	'ON',
836	707		=>	'ON',
837	708		=>	'ON',
838	709		=>	'ON',
839	710		=>	'ON',
840	711		=>	'ON',
841	712		=>	'ON',
842	713		=>	'ON',
843	714		=>	'ON',
844	715		=>	'ON',
845	716		=>	'ON',
846	717		=>	'ON',
847	718		=>	'ON',
848	719		=>	'ON',
849	720		=>	'L',
850	721		=>	'L',
851	722		=>	'ON',
852	723		=>	'ON',
853	724		=>	'ON',
854	725		=>	'ON',
855	726		=>	'ON',
856	727		=>	'ON',
857	728		=>	'ON',
858	729		=>	'ON',
859	730		=>	'ON',
860	731		=>	'ON',
861	732		=>	'ON',
862	733		=>	'ON',
863	734		=>	'ON',
864	735		=>	'ON',
865	736		=>	'L',
866	737		=>	'L',
867	738		=>	'L',
868	739		=>	'L',
869	740		=>	'L',
870	741		=>	'ON',
871	742		=>	'ON',
872	743		=>	'ON',
873	744		=>	'ON',
874	745		=>	'ON',
875	746		=>	'ON',
876	747		=>	'ON',
877	748		=>	'ON',
878	749		=>	'ON',
879	750		=>	'L',
880	751		=>	'ON',
881	752		=>	'ON',
882	753		=>	'ON',
883	754		=>	'ON',
884	755		=>	'ON',
885	756		=>	'ON',
886	757		=>	'ON',
887	758		=>	'ON',
888	759		=>	'ON',
889	760		=>	'ON',
890	761		=>	'ON',
891	762		=>	'ON',
892	763		=>	'ON',
893	764		=>	'ON',
894	765		=>	'ON',
895	766		=>	'ON',
896	767		=>	'ON',
897	768		=>	'NSM',
898	769		=>	'NSM',
899	770		=>	'NSM',
900	771		=>	'NSM',
901	772		=>	'NSM',
902	773		=>	'NSM',
903	774		=>	'NSM',
904	775		=>	'NSM',
905	776		=>	'NSM',
906	777		=>	'NSM',
907	778		=>	'NSM',
908	779		=>	'NSM',
909	780		=>	'NSM',
910	781		=>	'NSM',
911	782		=>	'NSM',
912	783		=>	'NSM',
913	784		=>	'NSM',
914	785		=>	'NSM',
915	786		=>	'NSM',
916	787		=>	'NSM',
917	788		=>	'NSM',
918	789		=>	'NSM',
919	790		=>	'NSM',
920	791		=>	'NSM',
921	792		=>	'NSM',
922	793		=>	'NSM',
923	794		=>	'NSM',
924	795		=>	'NSM',
925	796		=>	'NSM',
926	797		=>	'NSM',
927	798		=>	'NSM',
928	799		=>	'NSM',
929	800		=>	'NSM',
930	801		=>	'NSM',
931	802		=>	'NSM',
932	803		=>	'NSM',
933	804		=>	'NSM',
934	805		=>	'NSM',
935	806		=>	'NSM',
936	807		=>	'NSM',
937	808		=>	'NSM',
938	809		=>	'NSM',
939	810		=>	'NSM',
940	811		=>	'NSM',
941	812		=>	'NSM',
942	813		=>	'NSM',
943	814		=>	'NSM',
944	815		=>	'NSM',
945	816		=>	'NSM',
946	817		=>	'NSM',
947	818		=>	'NSM',
948	819		=>	'NSM',
949	820		=>	'NSM',
950	821		=>	'NSM',
951	822		=>	'NSM',
952	823		=>	'NSM',
953	824		=>	'NSM',
954	825		=>	'NSM',
955	826		=>	'NSM',
956	827		=>	'NSM',
957	828		=>	'NSM',
958	829		=>	'NSM',
959	830		=>	'NSM',
960	831		=>	'NSM',
961	832		=>	'NSM',
962	833		=>	'NSM',
963	834		=>	'NSM',
964	835		=>	'NSM',
965	836		=>	'NSM',
966	837		=>	'NSM',
967	838		=>	'NSM',
968	839		=>	'NSM',
969	840		=>	'NSM',
970	841		=>	'NSM',
971	842		=>	'NSM',
972	843		=>	'NSM',
973	844		=>	'NSM',
974	845		=>	'NSM',
975	846		=>	'NSM',
976	847		=>	'NSM',
977	848		=>	'NSM',
978	849		=>	'NSM',
979	850		=>	'NSM',
980	851		=>	'NSM',
981	852		=>	'NSM',
982	853		=>	'NSM',
983	854		=>	'NSM',
984	855		=>	'NSM',
985	856		=>	'NSM',
986	857		=>	'NSM',
987	858		=>	'NSM',
988	859		=>	'NSM',
989	860		=>	'NSM',
990	861		=>	'NSM',
991	862		=>	'NSM',
992	863		=>	'NSM',
993	864		=>	'NSM',
994	865		=>	'NSM',
995	866		=>	'NSM',
996	867		=>	'NSM',
997	868		=>	'NSM',
998	869		=>	'NSM',
999	870		=>	'NSM',
1000	871		=>	'NSM',
1001	872		=>	'NSM',
1002	873		=>	'NSM',
1003	874		=>	'NSM',
1004	875		=>	'NSM',
1005	876		=>	'NSM',
1006	877		=>	'NSM',
1007	878		=>	'NSM',
1008	879		=>	'NSM',
1009	884		=>	'ON',
1010	885		=>	'ON',
1011	890		=>	'L',
1012	891		=>	'L',
1013	892		=>	'L',
1014	893		=>	'L',
1015	894		=>	'ON',
1016	900		=>	'ON',
1017	901		=>	'ON',
1018	902		=>	'L',
1019	903		=>	'ON',
1020	904		=>	'L',
1021	905		=>	'L',
1022	906		=>	'L',
1023	908		=>	'L',
1024	910		=>	'L',
1025	911		=>	'L',
1026	912		=>	'L',
1027	913		=>	'L',
1028	914		=>	'L',
1029	915		=>	'L',
1030	916		=>	'L',
1031	917		=>	'L',
1032	918		=>	'L',
1033	919		=>	'L',
1034	920		=>	'L',
1035	921		=>	'L',
1036	922		=>	'L',
1037	923		=>	'L',
1038	924		=>	'L',
1039	925		=>	'L',
1040	926		=>	'L',
1041	927		=>	'L',
1042	928		=>	'L',
1043	929		=>	'L',
1044	931		=>	'L',
1045	932		=>	'L',
1046	933		=>	'L',
1047	934		=>	'L',
1048	935		=>	'L',
1049	936		=>	'L',
1050	937		=>	'L',
1051	938		=>	'L',
1052	939		=>	'L',
1053	940		=>	'L',
1054	941		=>	'L',
1055	942		=>	'L',
1056	943		=>	'L',
1057	944		=>	'L',
1058	945		=>	'L',
1059	946		=>	'L',
1060	947		=>	'L',
1061	948		=>	'L',
1062	949		=>	'L',
1063	950		=>	'L',
1064	951		=>	'L',
1065	952		=>	'L',
1066	953		=>	'L',
1067	954		=>	'L',
1068	955		=>	'L',
1069	956		=>	'L',
1070	957		=>	'L',
1071	958		=>	'L',
1072	959		=>	'L',
1073	960		=>	'L',
1074	961		=>	'L',
1075	962		=>	'L',
1076	963		=>	'L',
1077	964		=>	'L',
1078	965		=>	'L',
1079	966		=>	'L',
1080	967		=>	'L',
1081	968		=>	'L',
1082	969		=>	'L',
1083	970		=>	'L',
1084	971		=>	'L',
1085	972		=>	'L',
1086	973		=>	'L',
1087	974		=>	'L',
1088	976		=>	'L',
1089	977		=>	'L',
1090	978		=>	'L',
1091	979		=>	'L',
1092	980		=>	'L',
1093	981		=>	'L',
1094	982		=>	'L',
1095	983		=>	'L',
1096	984		=>	'L',
1097	985		=>	'L',
1098	986		=>	'L',
1099	987		=>	'L',
1100	988		=>	'L',
1101	989		=>	'L',
1102	990		=>	'L',
1103	991		=>	'L',
1104	992		=>	'L',
1105	993		=>	'L',
1106	994		=>	'L',
1107	995		=>	'L',
1108	996		=>	'L',
1109	997		=>	'L',
1110	998		=>	'L',
1111	999		=>	'L',
1112	1000		=>	'L',
1113	1001		=>	'L',
1114	1002		=>	'L',
1115	1003		=>	'L',
1116	1004		=>	'L',
1117	1005		=>	'L',
1118	1006		=>	'L',
1119	1007		=>	'L',
1120	1008		=>	'L',
1121	1009		=>	'L',
1122	1010		=>	'L',
1123	1011		=>	'L',
1124	1012		=>	'L',
1125	1013		=>	'L',
1126	1014		=>	'ON',
1127	1015		=>	'L',
1128	1016		=>	'L',
1129	1017		=>	'L',
1130	1018		=>	'L',
1131	1019		=>	'L',
1132	1020		=>	'L',
1133	1021		=>	'L',
1134	1022		=>	'L',
1135	1023		=>	'L',
1136	1024		=>	'L',
1137	1025		=>	'L',
1138	1026		=>	'L',
1139	1027		=>	'L',
1140	1028		=>	'L',
1141	1029		=>	'L',
1142	1030		=>	'L',
1143	1031		=>	'L',
1144	1032		=>	'L',
1145	1033		=>	'L',
1146	1034		=>	'L',
1147	1035		=>	'L',
1148	1036		=>	'L',
1149	1037		=>	'L',
1150	1038		=>	'L',
1151	1039		=>	'L',
1152	1040		=>	'L',
1153	1041		=>	'L',
1154	1042		=>	'L',
1155	1043		=>	'L',
1156	1044		=>	'L',
1157	1045		=>	'L',
1158	1046		=>	'L',
1159	1047		=>	'L',
1160	1048		=>	'L',
1161	1049		=>	'L',
1162	1050		=>	'L',
1163	1051		=>	'L',
1164	1052		=>	'L',
1165	1053		=>	'L',
1166	1054		=>	'L',
1167	1055		=>	'L',
1168	1056		=>	'L',
1169	1057		=>	'L',
1170	1058		=>	'L',
1171	1059		=>	'L',
1172	1060		=>	'L',
1173	1061		=>	'L',
1174	1062		=>	'L',
1175	1063		=>	'L',
1176	1064		=>	'L',
1177	1065		=>	'L',
1178	1066		=>	'L',
1179	1067		=>	'L',
1180	1068		=>	'L',
1181	1069		=>	'L',
1182	1070		=>	'L',
1183	1071		=>	'L',
1184	1072		=>	'L',
1185	1073		=>	'L',
1186	1074		=>	'L',
1187	1075		=>	'L',
1188	1076		=>	'L',
1189	1077		=>	'L',
1190	1078		=>	'L',
1191	1079		=>	'L',
1192	1080		=>	'L',
1193	1081		=>	'L',
1194	1082		=>	'L',
1195	1083		=>	'L',
1196	1084		=>	'L',
1197	1085		=>	'L',
1198	1086		=>	'L',
1199	1087		=>	'L',
1200	1088		=>	'L',
1201	1089		=>	'L',
1202	1090		=>	'L',
1203	1091		=>	'L',
1204	1092		=>	'L',
1205	1093		=>	'L',
1206	1094		=>	'L',
1207	1095		=>	'L',
1208	1096		=>	'L',
1209	1097		=>	'L',
1210	1098		=>	'L',
1211	1099		=>	'L',
1212	1100		=>	'L',
1213	1101		=>	'L',
1214	1102		=>	'L',
1215	1103		=>	'L',
1216	1104		=>	'L',
1217	1105		=>	'L',
1218	1106		=>	'L',
1219	1107		=>	'L',
1220	1108		=>	'L',
1221	1109		=>	'L',
1222	1110		=>	'L',
1223	1111		=>	'L',
1224	1112		=>	'L',
1225	1113		=>	'L',
1226	1114		=>	'L',
1227	1115		=>	'L',
1228	1116		=>	'L',
1229	1117		=>	'L',
1230	1118		=>	'L',
1231	1119		=>	'L',
1232	1120		=>	'L',
1233	1121		=>	'L',
1234	1122		=>	'L',
1235	1123		=>	'L',
1236	1124		=>	'L',
1237	1125		=>	'L',
1238	1126		=>	'L',
1239	1127		=>	'L',
1240	1128		=>	'L',
1241	1129		=>	'L',
1242	1130		=>	'L',
1243	1131		=>	'L',
1244	1132		=>	'L',
1245	1133		=>	'L',
1246	1134		=>	'L',
1247	1135		=>	'L',
1248	1136		=>	'L',
1249	1137		=>	'L',
1250	1138		=>	'L',
1251	1139		=>	'L',
1252	1140		=>	'L',
1253	1141		=>	'L',
1254	1142		=>	'L',
1255	1143		=>	'L',
1256	1144		=>	'L',
1257	1145		=>	'L',
1258	1146		=>	'L',
1259	1147		=>	'L',
1260	1148		=>	'L',
1261	1149		=>	'L',
1262	1150		=>	'L',
1263	1151		=>	'L',
1264	1152		=>	'L',
1265	1153		=>	'L',
1266	1154		=>	'L',
1267	1155		=>	'NSM',
1268	1156		=>	'NSM',
1269	1157		=>	'NSM',
1270	1158		=>	'NSM',
1271	1160		=>	'NSM',
1272	1161		=>	'NSM',
1273	1162		=>	'L',
1274	1163		=>	'L',
1275	1164		=>	'L',
1276	1165		=>	'L',
1277	1166		=>	'L',
1278	1167		=>	'L',
1279	1168		=>	'L',
1280	1169		=>	'L',
1281	1170		=>	'L',
1282	1171		=>	'L',
1283	1172		=>	'L',
1284	1173		=>	'L',
1285	1174		=>	'L',
1286	1175		=>	'L',
1287	1176		=>	'L',
1288	1177		=>	'L',
1289	1178		=>	'L',
1290	1179		=>	'L',
1291	1180		=>	'L',
1292	1181		=>	'L',
1293	1182		=>	'L',
1294	1183		=>	'L',
1295	1184		=>	'L',
1296	1185		=>	'L',
1297	1186		=>	'L',
1298	1187		=>	'L',
1299	1188		=>	'L',
1300	1189		=>	'L',
1301	1190		=>	'L',
1302	1191		=>	'L',
1303	1192		=>	'L',
1304	1193		=>	'L',
1305	1194		=>	'L',
1306	1195		=>	'L',
1307	1196		=>	'L',
1308	1197		=>	'L',
1309	1198		=>	'L',
1310	1199		=>	'L',
1311	1200		=>	'L',
1312	1201		=>	'L',
1313	1202		=>	'L',
1314	1203		=>	'L',
1315	1204		=>	'L',
1316	1205		=>	'L',
1317	1206		=>	'L',
1318	1207		=>	'L',
1319	1208		=>	'L',
1320	1209		=>	'L',
1321	1210		=>	'L',
1322	1211		=>	'L',
1323	1212		=>	'L',
1324	1213		=>	'L',
1325	1214		=>	'L',
1326	1215		=>	'L',
1327	1216		=>	'L',
1328	1217		=>	'L',
1329	1218		=>	'L',
1330	1219		=>	'L',
1331	1220		=>	'L',
1332	1221		=>	'L',
1333	1222		=>	'L',
1334	1223		=>	'L',
1335	1224		=>	'L',
1336	1225		=>	'L',
1337	1226		=>	'L',
1338	1227		=>	'L',
1339	1228		=>	'L',
1340	1229		=>	'L',
1341	1230		=>	'L',
1342	1231		=>	'L',
1343	1232		=>	'L',
1344	1233		=>	'L',
1345	1234		=>	'L',
1346	1235		=>	'L',
1347	1236		=>	'L',
1348	1237		=>	'L',
1349	1238		=>	'L',
1350	1239		=>	'L',
1351	1240		=>	'L',
1352	1241		=>	'L',
1353	1242		=>	'L',
1354	1243		=>	'L',
1355	1244		=>	'L',
1356	1245		=>	'L',
1357	1246		=>	'L',
1358	1247		=>	'L',
1359	1248		=>	'L',
1360	1249		=>	'L',
1361	1250		=>	'L',
1362	1251		=>	'L',
1363	1252		=>	'L',
1364	1253		=>	'L',
1365	1254		=>	'L',
1366	1255		=>	'L',
1367	1256		=>	'L',
1368	1257		=>	'L',
1369	1258		=>	'L',
1370	1259		=>	'L',
1371	1260		=>	'L',
1372	1261		=>	'L',
1373	1262		=>	'L',
1374	1263		=>	'L',
1375	1264		=>	'L',
1376	1265		=>	'L',
1377	1266		=>	'L',
1378	1267		=>	'L',
1379	1268		=>	'L',
1380	1269		=>	'L',
1381	1270		=>	'L',
1382	1271		=>	'L',
1383	1272		=>	'L',
1384	1273		=>	'L',
1385	1274		=>	'L',
1386	1275		=>	'L',
1387	1276		=>	'L',
1388	1277		=>	'L',
1389	1278		=>	'L',
1390	1279		=>	'L',
1391	1280		=>	'L',
1392	1281		=>	'L',
1393	1282		=>	'L',
1394	1283		=>	'L',
1395	1284		=>	'L',
1396	1285		=>	'L',
1397	1286		=>	'L',
1398	1287		=>	'L',
1399	1288		=>	'L',
1400	1289		=>	'L',
1401	1290		=>	'L',
1402	1291		=>	'L',
1403	1292		=>	'L',
1404	1293		=>	'L',
1405	1294		=>	'L',
1406	1295		=>	'L',
1407	1296		=>	'L',
1408	1297		=>	'L',
1409	1298		=>	'L',
1410	1299		=>	'L',
1411	1329		=>	'L',
1412	1330		=>	'L',
1413	1331		=>	'L',
1414	1332		=>	'L',
1415	1333		=>	'L',
1416	1334		=>	'L',
1417	1335		=>	'L',
1418	1336		=>	'L',
1419	1337		=>	'L',
1420	1338		=>	'L',
1421	1339		=>	'L',
1422	1340		=>	'L',
1423	1341		=>	'L',
1424	1342		=>	'L',
1425	1343		=>	'L',
1426	1344		=>	'L',
1427	1345		=>	'L',
1428	1346		=>	'L',
1429	1347		=>	'L',
1430	1348		=>	'L',
1431	1349		=>	'L',
1432	1350		=>	'L',
1433	1351		=>	'L',
1434	1352		=>	'L',
1435	1353		=>	'L',
1436	1354		=>	'L',
1437	1355		=>	'L',
1438	1356		=>	'L',
1439	1357		=>	'L',
1440	1358		=>	'L',
1441	1359		=>	'L',
1442	1360		=>	'L',
1443	1361		=>	'L',
1444	1362		=>	'L',
1445	1363		=>	'L',
1446	1364		=>	'L',
1447	1365		=>	'L',
1448	1366		=>	'L',
1449	1369		=>	'L',
1450	1370		=>	'L',
1451	1371		=>	'L',
1452	1372		=>	'L',
1453	1373		=>	'L',
1454	1374		=>	'L',
1455	1375		=>	'L',
1456	1377		=>	'L',
1457	1378		=>	'L',
1458	1379		=>	'L',
1459	1380		=>	'L',
1460	1381		=>	'L',
1461	1382		=>	'L',
1462	1383		=>	'L',
1463	1384		=>	'L',
1464	1385		=>	'L',
1465	1386		=>	'L',
1466	1387		=>	'L',
1467	1388		=>	'L',
1468	1389		=>	'L',
1469	1390		=>	'L',
1470	1391		=>	'L',
1471	1392		=>	'L',
1472	1393		=>	'L',
1473	1394		=>	'L',
1474	1395		=>	'L',
1475	1396		=>	'L',
1476	1397		=>	'L',
1477	1398		=>	'L',
1478	1399		=>	'L',
1479	1400		=>	'L',
1480	1401		=>	'L',
1481	1402		=>	'L',
1482	1403		=>	'L',
1483	1404		=>	'L',
1484	1405		=>	'L',
1485	1406		=>	'L',
1486	1407		=>	'L',
1487	1408		=>	'L',
1488	1409		=>	'L',
1489	1410		=>	'L',
1490	1411		=>	'L',
1491	1412		=>	'L',
1492	1413		=>	'L',
1493	1414		=>	'L',
1494	1415		=>	'L',
1495	1417		=>	'L',
1496	1418		=>	'ON',
1497	1425		=>	'NSM',
1498	1426		=>	'NSM',
1499	1427		=>	'NSM',
1500	1428		=>	'NSM',
1501	1429		=>	'NSM',
1502	1430		=>	'NSM',
1503	1431		=>	'NSM',
1504	1432		=>	'NSM',
1505	1433		=>	'NSM',
1506	1434		=>	'NSM',
1507	1435		=>	'NSM',
1508	1436		=>	'NSM',
1509	1437		=>	'NSM',
1510	1438		=>	'NSM',
1511	1439		=>	'NSM',
1512	1440		=>	'NSM',
1513	1441		=>	'NSM',
1514	1442		=>	'NSM',
1515	1443		=>	'NSM',
1516	1444		=>	'NSM',
1517	1445		=>	'NSM',
1518	1446		=>	'NSM',
1519	1447		=>	'NSM',
1520	1448		=>	'NSM',
1521	1449		=>	'NSM',
1522	1450		=>	'NSM',
1523	1451		=>	'NSM',
1524	1452		=>	'NSM',
1525	1453		=>	'NSM',
1526	1454		=>	'NSM',
1527	1455		=>	'NSM',
1528	1456		=>	'NSM',
1529	1457		=>	'NSM',
1530	1458		=>	'NSM',
1531	1459		=>	'NSM',
1532	1460		=>	'NSM',
1533	1461		=>	'NSM',
1534	1462		=>	'NSM',
1535	1463		=>	'NSM',
1536	1464		=>	'NSM',
1537	1465		=>	'NSM',
1538	1466		=>	'NSM',
1539	1467		=>	'NSM',
1540	1468		=>	'NSM',
1541	1469		=>	'NSM',
1542	1470		=>	'R',
1543	1471		=>	'NSM',
1544	1472		=>	'R',
1545	1473		=>	'NSM',
1546	1474		=>	'NSM',
1547	1475		=>	'R',
1548	1476		=>	'NSM',
1549	1477		=>	'NSM',
1550	1478		=>	'R',
1551	1479		=>	'NSM',
1552	1488		=>	'R',
1553	1489		=>	'R',
1554	1490		=>	'R',
1555	1491		=>	'R',
1556	1492		=>	'R',
1557	1493		=>	'R',
1558	1494		=>	'R',
1559	1495		=>	'R',
1560	1496		=>	'R',
1561	1497		=>	'R',
1562	1498		=>	'R',
1563	1499		=>	'R',
1564	1500		=>	'R',
1565	1501		=>	'R',
1566	1502		=>	'R',
1567	1503		=>	'R',
1568	1504		=>	'R',
1569	1505		=>	'R',
1570	1506		=>	'R',
1571	1507		=>	'R',
1572	1508		=>	'R',
1573	1509		=>	'R',
1574	1510		=>	'R',
1575	1511		=>	'R',
1576	1512		=>	'R',
1577	1513		=>	'R',
1578	1514		=>	'R',
1579	1520		=>	'R',
1580	1521		=>	'R',
1581	1522		=>	'R',
1582	1523		=>	'R',
1583	1524		=>	'R',
1584	1536		=>	'AL',
1585	1537		=>	'AL',
1586	1538		=>	'AL',
1587	1539		=>	'AL',
1588	1547		=>	'AL',
1589	1548		=>	'CS',
1590	1549		=>	'AL',
1591	1550		=>	'ON',
1592	1551		=>	'ON',
1593	1552		=>	'NSM',
1594	1553		=>	'NSM',
1595	1554		=>	'NSM',
1596	1555		=>	'NSM',
1597	1556		=>	'NSM',
1598	1557		=>	'NSM',
1599	1563		=>	'AL',
1600	1566		=>	'AL',
1601	1567		=>	'AL',
1602	1569		=>	'AL',
1603	1570		=>	'AL',
1604	1571		=>	'AL',
1605	1572		=>	'AL',
1606	1573		=>	'AL',
1607	1574		=>	'AL',
1608	1575		=>	'AL',
1609	1576		=>	'AL',
1610	1577		=>	'AL',
1611	1578		=>	'AL',
1612	1579		=>	'AL',
1613	1580		=>	'AL',
1614	1581		=>	'AL',
1615	1582		=>	'AL',
1616	1583		=>	'AL',
1617	1584		=>	'AL',
1618	1585		=>	'AL',
1619	1586		=>	'AL',
1620	1587		=>	'AL',
1621	1588		=>	'AL',
1622	1589		=>	'AL',
1623	1590		=>	'AL',
1624	1591		=>	'AL',
1625	1592		=>	'AL',
1626	1593		=>	'AL',
1627	1594		=>	'AL',
1628	1600		=>	'AL',
1629	1601		=>	'AL',
1630	1602		=>	'AL',
1631	1603		=>	'AL',
1632	1604		=>	'AL',
1633	1605		=>	'AL',
1634	1606		=>	'AL',
1635	1607		=>	'AL',
1636	1608		=>	'AL',
1637	1609		=>	'AL',
1638	1610		=>	'AL',
1639	1611		=>	'NSM',
1640	1612		=>	'NSM',
1641	1613		=>	'NSM',
1642	1614		=>	'NSM',
1643	1615		=>	'NSM',
1644	1616		=>	'NSM',
1645	1617		=>	'NSM',
1646	1618		=>	'NSM',
1647	1619		=>	'NSM',
1648	1620		=>	'NSM',
1649	1621		=>	'NSM',
1650	1622		=>	'NSM',
1651	1623		=>	'NSM',
1652	1624		=>	'NSM',
1653	1625		=>	'NSM',
1654	1626		=>	'NSM',
1655	1627		=>	'NSM',
1656	1628		=>	'NSM',
1657	1629		=>	'NSM',
1658	1630		=>	'NSM',
1659	1632		=>	'AN',
1660	1633		=>	'AN',
1661	1634		=>	'AN',
1662	1635		=>	'AN',
1663	1636		=>	'AN',
1664	1637		=>	'AN',
1665	1638		=>	'AN',
1666	1639		=>	'AN',
1667	1640		=>	'AN',
1668	1641		=>	'AN',
1669	1642		=>	'ET',
1670	1643		=>	'AN',
1671	1644		=>	'AN',
1672	1645		=>	'AL',
1673	1646		=>	'AL',
1674	1647		=>	'AL',
1675	1648		=>	'NSM',
1676	1649		=>	'AL',
1677	1650		=>	'AL',
1678	1651		=>	'AL',
1679	1652		=>	'AL',
1680	1653		=>	'AL',
1681	1654		=>	'AL',
1682	1655		=>	'AL',
1683	1656		=>	'AL',
1684	1657		=>	'AL',
1685	1658		=>	'AL',
1686	1659		=>	'AL',
1687	1660		=>	'AL',
1688	1661		=>	'AL',
1689	1662		=>	'AL',
1690	1663		=>	'AL',
1691	1664		=>	'AL',
1692	1665		=>	'AL',
1693	1666		=>	'AL',
1694	1667		=>	'AL',
1695	1668		=>	'AL',
1696	1669		=>	'AL',
1697	1670		=>	'AL',
1698	1671		=>	'AL',
1699	1672		=>	'AL',
1700	1673		=>	'AL',
1701	1674		=>	'AL',
1702	1675		=>	'AL',
1703	1676		=>	'AL',
1704	1677		=>	'AL',
1705	1678		=>	'AL',
1706	1679		=>	'AL',
1707	1680		=>	'AL',
1708	1681		=>	'AL',
1709	1682		=>	'AL',
1710	1683		=>	'AL',
1711	1684		=>	'AL',
1712	1685		=>	'AL',
1713	1686		=>	'AL',
1714	1687		=>	'AL',
1715	1688		=>	'AL',
1716	1689		=>	'AL',
1717	1690		=>	'AL',
1718	1691		=>	'AL',
1719	1692		=>	'AL',
1720	1693		=>	'AL',
1721	1694		=>	'AL',
1722	1695		=>	'AL',
1723	1696		=>	'AL',
1724	1697		=>	'AL',
1725	1698		=>	'AL',
1726	1699		=>	'AL',
1727	1700		=>	'AL',
1728	1701		=>	'AL',
1729	1702		=>	'AL',
1730	1703		=>	'AL',
1731	1704		=>	'AL',
1732	1705		=>	'AL',
1733	1706		=>	'AL',
1734	1707		=>	'AL',
1735	1708		=>	'AL',
1736	1709		=>	'AL',
1737	1710		=>	'AL',
1738	1711		=>	'AL',
1739	1712		=>	'AL',
1740	1713		=>	'AL',
1741	1714		=>	'AL',
1742	1715		=>	'AL',
1743	1716		=>	'AL',
1744	1717		=>	'AL',
1745	1718		=>	'AL',
1746	1719		=>	'AL',
1747	1720		=>	'AL',
1748	1721		=>	'AL',
1749	1722		=>	'AL',
1750	1723		=>	'AL',
1751	1724		=>	'AL',
1752	1725		=>	'AL',
1753	1726		=>	'AL',
1754	1727		=>	'AL',
1755	1728		=>	'AL',
1756	1729		=>	'AL',
1757	1730		=>	'AL',
1758	1731		=>	'AL',
1759	1732		=>	'AL',
1760	1733		=>	'AL',
1761	1734		=>	'AL',
1762	1735		=>	'AL',
1763	1736		=>	'AL',
1764	1737		=>	'AL',
1765	1738		=>	'AL',
1766	1739		=>	'AL',
1767	1740		=>	'AL',
1768	1741		=>	'AL',
1769	1742		=>	'AL',
1770	1743		=>	'AL',
1771	1744		=>	'AL',
1772	1745		=>	'AL',
1773	1746		=>	'AL',
1774	1747		=>	'AL',
1775	1748		=>	'AL',
1776	1749		=>	'AL',
1777	1750		=>	'NSM',
1778	1751		=>	'NSM',
1779	1752		=>	'NSM',
1780	1753		=>	'NSM',
1781	1754		=>	'NSM',
1782	1755		=>	'NSM',
1783	1756		=>	'NSM',
1784	1757		=>	'AL',
1785	1758		=>	'NSM',
1786	1759		=>	'NSM',
1787	1760		=>	'NSM',
1788	1761		=>	'NSM',
1789	1762		=>	'NSM',
1790	1763		=>	'NSM',
1791	1764		=>	'NSM',
1792	1765		=>	'AL',
1793	1766		=>	'AL',
1794	1767		=>	'NSM',
1795	1768		=>	'NSM',
1796	1769		=>	'ON',
1797	1770		=>	'NSM',
1798	1771		=>	'NSM',
1799	1772		=>	'NSM',
1800	1773		=>	'NSM',
1801	1774		=>	'AL',
1802	1775		=>	'AL',
1803	1776		=>	'EN',
1804	1777		=>	'EN',
1805	1778		=>	'EN',
1806	1779		=>	'EN',
1807	1780		=>	'EN',
1808	1781		=>	'EN',
1809	1782		=>	'EN',
1810	1783		=>	'EN',
1811	1784		=>	'EN',
1812	1785		=>	'EN',
1813	1786		=>	'AL',
1814	1787		=>	'AL',
1815	1788		=>	'AL',
1816	1789		=>	'AL',
1817	1790		=>	'AL',
1818	1791		=>	'AL',
1819	1792		=>	'AL',
1820	1793		=>	'AL',
1821	1794		=>	'AL',
1822	1795		=>	'AL',
1823	1796		=>	'AL',
1824	1797		=>	'AL',
1825	1798		=>	'AL',
1826	1799		=>	'AL',
1827	1800		=>	'AL',
1828	1801		=>	'AL',
1829	1802		=>	'AL',
1830	1803		=>	'AL',
1831	1804		=>	'AL',
1832	1805		=>	'AL',
1833	1807		=>	'BN',
1834	1808		=>	'AL',
1835	1809		=>	'NSM',
1836	1810		=>	'AL',
1837	1811		=>	'AL',
1838	1812		=>	'AL',
1839	1813		=>	'AL',
1840	1814		=>	'AL',
1841	1815		=>	'AL',
1842	1816		=>	'AL',
1843	1817		=>	'AL',
1844	1818		=>	'AL',
1845	1819		=>	'AL',
1846	1820		=>	'AL',
1847	1821		=>	'AL',
1848	1822		=>	'AL',
1849	1823		=>	'AL',
1850	1824		=>	'AL',
1851	1825		=>	'AL',
1852	1826		=>	'AL',
1853	1827		=>	'AL',
1854	1828		=>	'AL',
1855	1829		=>	'AL',
1856	1830		=>	'AL',
1857	1831		=>	'AL',
1858	1832		=>	'AL',
1859	1833		=>	'AL',
1860	1834		=>	'AL',
1861	1835		=>	'AL',
1862	1836		=>	'AL',
1863	1837		=>	'AL',
1864	1838		=>	'AL',
1865	1839		=>	'AL',
1866	1840		=>	'NSM',
1867	1841		=>	'NSM',
1868	1842		=>	'NSM',
1869	1843		=>	'NSM',
1870	1844		=>	'NSM',
1871	1845		=>	'NSM',
1872	1846		=>	'NSM',
1873	1847		=>	'NSM',
1874	1848		=>	'NSM',
1875	1849		=>	'NSM',
1876	1850		=>	'NSM',
1877	1851		=>	'NSM',
1878	1852		=>	'NSM',
1879	1853		=>	'NSM',
1880	1854		=>	'NSM',
1881	1855		=>	'NSM',
1882	1856		=>	'NSM',
1883	1857		=>	'NSM',
1884	1858		=>	'NSM',
1885	1859		=>	'NSM',
1886	1860		=>	'NSM',
1887	1861		=>	'NSM',
1888	1862		=>	'NSM',
1889	1863		=>	'NSM',
1890	1864		=>	'NSM',
1891	1865		=>	'NSM',
1892	1866		=>	'NSM',
1893	1869		=>	'AL',
1894	1870		=>	'AL',
1895	1871		=>	'AL',
1896	1872		=>	'AL',
1897	1873		=>	'AL',
1898	1874		=>	'AL',
1899	1875		=>	'AL',
1900	1876		=>	'AL',
1901	1877		=>	'AL',
1902	1878		=>	'AL',
1903	1879		=>	'AL',
1904	1880		=>	'AL',
1905	1881		=>	'AL',
1906	1882		=>	'AL',
1907	1883		=>	'AL',
1908	1884		=>	'AL',
1909	1885		=>	'AL',
1910	1886		=>	'AL',
1911	1887		=>	'AL',
1912	1888		=>	'AL',
1913	1889		=>	'AL',
1914	1890		=>	'AL',
1915	1891		=>	'AL',
1916	1892		=>	'AL',
1917	1893		=>	'AL',
1918	1894		=>	'AL',
1919	1895		=>	'AL',
1920	1896		=>	'AL',
1921	1897		=>	'AL',
1922	1898		=>	'AL',
1923	1899		=>	'AL',
1924	1900		=>	'AL',
1925	1901		=>	'AL',
1926	1920		=>	'AL',
1927	1921		=>	'AL',
1928	1922		=>	'AL',
1929	1923		=>	'AL',
1930	1924		=>	'AL',
1931	1925		=>	'AL',
1932	1926		=>	'AL',
1933	1927		=>	'AL',
1934	1928		=>	'AL',
1935	1929		=>	'AL',
1936	1930		=>	'AL',
1937	1931		=>	'AL',
1938	1932		=>	'AL',
1939	1933		=>	'AL',
1940	1934		=>	'AL',
1941	1935		=>	'AL',
1942	1936		=>	'AL',
1943	1937		=>	'AL',
1944	1938		=>	'AL',
1945	1939		=>	'AL',
1946	1940		=>	'AL',
1947	1941		=>	'AL',
1948	1942		=>	'AL',
1949	1943		=>	'AL',
1950	1944		=>	'AL',
1951	1945		=>	'AL',
1952	1946		=>	'AL',
1953	1947		=>	'AL',
1954	1948		=>	'AL',
1955	1949		=>	'AL',
1956	1950		=>	'AL',
1957	1951		=>	'AL',
1958	1952		=>	'AL',
1959	1953		=>	'AL',
1960	1954		=>	'AL',
1961	1955		=>	'AL',
1962	1956		=>	'AL',
1963	1957		=>	'AL',
1964	1958		=>	'NSM',
1965	1959		=>	'NSM',
1966	1960		=>	'NSM',
1967	1961		=>	'NSM',
1968	1962		=>	'NSM',
1969	1963		=>	'NSM',
1970	1964		=>	'NSM',
1971	1965		=>	'NSM',
1972	1966		=>	'NSM',
1973	1967		=>	'NSM',
1974	1968		=>	'NSM',
1975	1969		=>	'AL',
1976	1984		=>	'R',
1977	1985		=>	'R',
1978	1986		=>	'R',
1979	1987		=>	'R',
1980	1988		=>	'R',
1981	1989		=>	'R',
1982	1990		=>	'R',
1983	1991		=>	'R',
1984	1992		=>	'R',
1985	1993		=>	'R',
1986	1994		=>	'R',
1987	1995		=>	'R',
1988	1996		=>	'R',
1989	1997		=>	'R',
1990	1998		=>	'R',
1991	1999		=>	'R',
1992	2000		=>	'R',
1993	2001		=>	'R',
1994	2002		=>	'R',
1995	2003		=>	'R',
1996	2004		=>	'R',
1997	2005		=>	'R',
1998	2006		=>	'R',
1999	2007		=>	'R',
2000	2008		=>	'R',
2001	2009		=>	'R',
2002	2010		=>	'R',
2003	2011		=>	'R',
2004	2012		=>	'R',
2005	2013		=>	'R',
2006	2014		=>	'R',
2007	2015		=>	'R',
2008	2016		=>	'R',
2009	2017		=>	'R',
2010	2018		=>	'R',
2011	2019		=>	'R',
2012	2020		=>	'R',
2013	2021		=>	'R',
2014	2022		=>	'R',
2015	2023		=>	'R',
2016	2024		=>	'R',
2017	2025		=>	'R',
2018	2026		=>	'R',
2019	2036		=>	'R',
2020	2037		=>	'R',
2021	2042		=>	'R',
2022	8207		=>	'R',
2023	65136		=>	'AL',
2024	65137		=>	'AL',
2025	65138		=>	'AL',
2026	65139		=>	'AL',
2027	65140		=>	'AL',
2028	65142		=>	'AL',
2029	65143		=>	'AL',
2030	65144		=>	'AL',
2031	65145		=>	'AL',
2032	65146		=>	'AL',
2033	65147		=>	'AL',
2034	65148		=>	'AL',
2035	65149		=>	'AL',
2036	65150		=>	'AL',
2037	65151		=>	'AL',
2038	65152		=>	'AL',
2039	65153		=>	'AL',
2040	65154		=>	'AL',
2041	65155		=>	'AL',
2042	65156		=>	'AL',
2043	65157		=>	'AL',
2044	65158		=>	'AL',
2045	65159		=>	'AL',
2046	65160		=>	'AL',
2047	65161		=>	'AL',
2048	65162		=>	'AL',
2049	65163		=>	'AL',
2050	65164		=>	'AL',
2051	65165		=>	'AL',
2052	65166		=>	'AL',
2053	65167		=>	'AL',
2054	65168		=>	'AL',
2055	65169		=>	'AL',
2056	65170		=>	'AL',
2057	65171		=>	'AL',
2058	65172		=>	'AL',
2059	65173		=>	'AL',
2060	65174		=>	'AL',
2061	65175		=>	'AL',
2062	65176		=>	'AL',
2063	65177		=>	'AL',
2064	65178		=>	'AL',
2065	65179		=>	'AL',
2066	65180		=>	'AL',
2067	65181		=>	'AL',
2068	65182		=>	'AL',
2069	65183		=>	'AL',
2070	65184		=>	'AL',
2071	65185		=>	'AL',
2072	65186		=>	'AL',
2073	65187		=>	'AL',
2074	65188		=>	'AL',
2075	65189		=>	'AL',
2076	65190		=>	'AL',
2077	65191		=>	'AL',
2078	65192		=>	'AL',
2079	65193		=>	'AL',
2080	65194		=>	'AL',
2081	65195		=>	'AL',
2082	65196		=>	'AL',
2083	65197		=>	'AL',
2084	65198		=>	'AL',
2085	65199		=>	'AL',
2086	65200		=>	'AL',
2087	65201		=>	'AL',
2088	65202		=>	'AL',
2089	65203		=>	'AL',
2090	65204		=>	'AL',
2091	65205		=>	'AL',
2092	65206		=>	'AL',
2093	65207		=>	'AL',
2094	65208		=>	'AL',
2095	65209		=>	'AL',
2096	65210		=>	'AL',
2097	65211		=>	'AL',
2098	65212		=>	'AL',
2099	65213		=>	'AL',
2100	65214		=>	'AL',
2101	65215		=>	'AL',
2102	65216		=>	'AL',
2103	65217		=>	'AL',
2104	65218		=>	'AL',
2105	65219		=>	'AL',
2106	65220		=>	'AL',
2107	65221		=>	'AL',
2108	65222		=>	'AL',
2109	65223		=>	'AL',
2110	65224		=>	'AL',
2111	65225		=>	'AL',
2112	65226		=>	'AL',
2113	65227		=>	'AL',
2114	65228		=>	'AL',
2115	65229		=>	'AL',
2116	65230		=>	'AL',
2117	65231		=>	'AL',
2118	65232		=>	'AL',
2119	65233		=>	'AL',
2120	65234		=>	'AL',
2121	65235		=>	'AL',
2122	65236		=>	'AL',
2123	65237		=>	'AL',
2124	65238		=>	'AL',
2125	65239		=>	'AL',
2126	65240		=>	'AL',
2127	65241		=>	'AL',
2128	65242		=>	'AL',
2129	65243		=>	'AL',
2130	65244		=>	'AL',
2131	65245		=>	'AL',
2132	65246		=>	'AL',
2133	65247		=>	'AL',
2134	65248		=>	'AL',
2135	65249		=>	'AL',
2136	65250		=>	'AL',
2137	65251		=>	'AL',
2138	65252		=>	'AL',
2139	65253		=>	'AL',
2140	65254		=>	'AL',
2141	65255		=>	'AL',
2142	65256		=>	'AL',
2143	65257		=>	'AL',
2144	65258		=>	'AL',
2145	65259		=>	'AL',
2146	65260		=>	'AL',
2147	65261		=>	'AL',
2148	65262		=>	'AL',
2149	65263		=>	'AL',
2150	65264		=>	'AL',
2151	65265		=>	'AL',
2152	65266		=>	'AL',
2153	65267		=>	'AL',
2154	65268		=>	'AL',
2155	65269		=>	'AL',
2156	65270		=>	'AL',
2157	65271		=>	'AL',
2158	65272		=>	'AL',
2159	65273		=>	'AL',
2160	65274		=>	'AL',
2161	65275		=>	'AL',
2162	65276		=>	'AL',
2163	67584		=>	'R',
2164	67585		=>	'R',
2165	67586		=>	'R',
2166	67587		=>	'R',
2167	67588		=>	'R',
2168	67589		=>	'R',
2169	67592		=>	'R',
2170	67594		=>	'R',
2171	67595		=>	'R',
2172	67596		=>	'R',
2173	67597		=>	'R',
2174	67598		=>	'R',
2175	67599		=>	'R',
2176	67600		=>	'R',
2177	67601		=>	'R',
2178	67602		=>	'R',
2179	67603		=>	'R',
2180	67604		=>	'R',
2181	67605		=>	'R',
2182	67606		=>	'R',
2183	67607		=>	'R',
2184	67608		=>	'R',
2185	67609		=>	'R',
2186	67610		=>	'R',
2187	67611		=>	'R',
2188	67612		=>	'R',
2189	67613		=>	'R',
2190	67614		=>	'R',
2191	67615		=>	'R',
2192	67616		=>	'R',
2193	67617		=>	'R',
2194	67618		=>	'R',
2195	67619		=>	'R',
2196	67620		=>	'R',
2197	67621		=>	'R',
2198	67622		=>	'R',
2199	67623		=>	'R',
2200	67624		=>	'R',
2201	67625		=>	'R',
2202	67626		=>	'R',
2203	67627		=>	'R',
2204	67628		=>	'R',
2205	67629		=>	'R',
2206	67630		=>	'R',
2207	67631		=>	'R',
2208	67632		=>	'R',
2209	67633		=>	'R',
2210	67634		=>	'R',
2211	67635		=>	'R',
2212	67636		=>	'R',
2213	67637		=>	'R',
2214	67639		=>	'R',
2215	67640		=>	'R',
2216	67644		=>	'R',
2217	67647		=>	'R',
2218	67840		=>	'R',
2219	67841		=>	'R',
2220	67842		=>	'R',
2221	67843		=>	'R',
2222	67844		=>	'R',
2223	67845		=>	'R',
2224	67846		=>	'R',
2225	67847		=>	'R',
2226	67848		=>	'R',
2227	67849		=>	'R',
2228	67850		=>	'R',
2229	67851		=>	'R',
2230	67852		=>	'R',
2231	67853		=>	'R',
2232	67854		=>	'R',
2233	67855		=>	'R',
2234	67856		=>	'R',
2235	67857		=>	'R',
2236	67858		=>	'R',
2237	67859		=>	'R',
2238	67860		=>	'R',
2239	67861		=>	'R',
2240	67862		=>	'R',
2241	67863		=>	'R',
2242	67864		=>	'R',
2243	67865		=>	'R',
2244	68096		=>	'R',
2245	68112		=>	'R',
2246	68113		=>	'R',
2247	68114		=>	'R',
2248	68115		=>	'R',
2249	68117		=>	'R',
2250	68118		=>	'R',
2251	68119		=>	'R',
2252	68121		=>	'R',
2253	68122		=>	'R',
2254	68123		=>	'R',
2255	68124		=>	'R',
2256	68125		=>	'R',
2257	68126		=>	'R',
2258	68127		=>	'R',
2259	68128		=>	'R',
2260	68129		=>	'R',
2261	68130		=>	'R',
2262	68131		=>	'R',
2263	68132		=>	'R',
2264	68133		=>	'R',
2265	68134		=>	'R',
2266	68135		=>	'R',
2267	68136		=>	'R',
2268	68137		=>	'R',
2269	68138		=>	'R',
2270	68139		=>	'R',
2271	68140		=>	'R',
2272	68141		=>	'R',
2273	68142		=>	'R',
2274	68143		=>	'R',
2275	68144		=>	'R',
2276	68145		=>	'R',
2277	68146		=>	'R',
2278	68147		=>	'R',
2279	68160		=>	'R',
2280	68161		=>	'R',
2281	68162		=>	'R',
2282	68163		=>	'R',
2283	68164		=>	'R',
2284	68165		=>	'R',
2285	68166		=>	'R',
2286	68167		=>	'R',
2287	68176		=>	'R',
2288	68177		=>	'R',
2289	68178		=>	'R',
2290	68179		=>	'R',
2291	68180		=>	'R',
2292	68181		=>	'R',
2293	68182		=>	'R',
2294	68183		=>	'R',
2295	68184		=>	'R'
2296);
2297
2298
2299/**
2300 * Mirror unicode characters.
2301 * For information on bidi mirroring, see UAX #9: Bidirectional Algorithm,
2302 * at http://www.unicode.org/unicode/reports/tr9/
2303 */
2304$unicode_mirror = array(
23050x0028 => 0x0029,
23060x0029 => 0x0028,
23070x003C => 0x003E,
23080x003E => 0x003C,
23090x005B => 0x005D,
23100x005D => 0x005B,
23110x007B => 0x007D,
23120x007D => 0x007B,
23130x00AB => 0x00BB,
23140x00BB => 0x00AB,
23150x0F3A => 0x0F3B,
23160x0F3B => 0x0F3A,
23170x0F3C => 0x0F3D,
23180x0F3D => 0x0F3C,
23190x169B => 0x169C,
23200x169C => 0x169B,
23210x2018 => 0x2019,
23220x2019 => 0x2018,
23230x201C => 0x201D,
23240x201D => 0x201C,
23250x2039 => 0x203A,
23260x203A => 0x2039,
23270x2045 => 0x2046,
23280x2046 => 0x2045,
23290x207D => 0x207E,
23300x207E => 0x207D,
23310x208D => 0x208E,
23320x208E => 0x208D,
23330x2208 => 0x220B,
23340x2209 => 0x220C,
23350x220A => 0x220D,
23360x220B => 0x2208,
23370x220C => 0x2209,
23380x220D => 0x220A,
23390x2215 => 0x29F5,
23400x223C => 0x223D,
23410x223D => 0x223C,
23420x2243 => 0x22CD,
23430x2252 => 0x2253,
23440x2253 => 0x2252,
23450x2254 => 0x2255,
23460x2255 => 0x2254,
23470x2264 => 0x2265,
23480x2265 => 0x2264,
23490x2266 => 0x2267,
23500x2267 => 0x2266,
23510x2268 => 0x2269,
23520x2269 => 0x2268,
23530x226A => 0x226B,
23540x226B => 0x226A,
23550x226E => 0x226F,
23560x226F => 0x226E,
23570x2270 => 0x2271,
23580x2271 => 0x2270,
23590x2272 => 0x2273,
23600x2273 => 0x2272,
23610x2274 => 0x2275,
23620x2275 => 0x2274,
23630x2276 => 0x2277,
23640x2277 => 0x2276,
23650x2278 => 0x2279,
23660x2279 => 0x2278,
23670x227A => 0x227B,
23680x227B => 0x227A,
23690x227C => 0x227D,
23700x227D => 0x227C,
23710x227E => 0x227F,
23720x227F => 0x227E,
23730x2280 => 0x2281,
23740x2281 => 0x2280,
23750x2282 => 0x2283,
23760x2283 => 0x2282,
23770x2284 => 0x2285,
23780x2285 => 0x2284,
23790x2286 => 0x2287,
23800x2287 => 0x2286,
23810x2288 => 0x2289,
23820x2289 => 0x2288,
23830x228A => 0x228B,
23840x228B => 0x228A,
23850x228F => 0x2290,
23860x2290 => 0x228F,
23870x2291 => 0x2292,
23880x2292 => 0x2291,
23890x2298 => 0x29B8,
23900x22A2 => 0x22A3,
23910x22A3 => 0x22A2,
23920x22A6 => 0x2ADE,
23930x22A8 => 0x2AE4,
23940x22A9 => 0x2AE3,
23950x22AB => 0x2AE5,
23960x22B0 => 0x22B1,
23970x22B1 => 0x22B0,
23980x22B2 => 0x22B3,
23990x22B3 => 0x22B2,
24000x22B4 => 0x22B5,
24010x22B5 => 0x22B4,
24020x22B6 => 0x22B7,
24030x22B7 => 0x22B6,
24040x22C9 => 0x22CA,
24050x22CA => 0x22C9,
24060x22CB => 0x22CC,
24070x22CC => 0x22CB,
24080x22CD => 0x2243,
24090x22D0 => 0x22D1,
24100x22D1 => 0x22D0,
24110x22D6 => 0x22D7,
24120x22D7 => 0x22D6,
24130x22D8 => 0x22D9,
24140x22D9 => 0x22D8,
24150x22DA => 0x22DB,
24160x22DB => 0x22DA,
24170x22DC => 0x22DD,
24180x22DD => 0x22DC,
24190x22DE => 0x22DF,
24200x22DF => 0x22DE,
24210x22E0 => 0x22E1,
24220x22E1 => 0x22E0,
24230x22E2 => 0x22E3,
24240x22E3 => 0x22E2,
24250x22E4 => 0x22E5,
24260x22E5 => 0x22E4,
24270x22E6 => 0x22E7,
24280x22E7 => 0x22E6,
24290x22E8 => 0x22E9,
24300x22E9 => 0x22E8,
24310x22EA => 0x22EB,
24320x22EB => 0x22EA,
24330x22EC => 0x22ED,
24340x22ED => 0x22EC,
24350x22F0 => 0x22F1,
24360x22F1 => 0x22F0,
24370x22F2 => 0x22FA,
24380x22F3 => 0x22FB,
24390x22F4 => 0x22FC,
24400x22F6 => 0x22FD,
24410x22F7 => 0x22FE,
24420x22FA => 0x22F2,
24430x22FB => 0x22F3,
24440x22FC => 0x22F4,
24450x22FD => 0x22F6,
24460x22FE => 0x22F7,
24470x2308 => 0x2309,
24480x2309 => 0x2308,
24490x230A => 0x230B,
24500x230B => 0x230A,
24510x2329 => 0x232A,
24520x232A => 0x2329,
24530x2768 => 0x2769,
24540x2769 => 0x2768,
24550x276A => 0x276B,
24560x276B => 0x276A,
24570x276C => 0x276D,
24580x276D => 0x276C,
24590x276E => 0x276F,
24600x276F => 0x276E,
24610x2770 => 0x2771,
24620x2771 => 0x2770,
24630x2772 => 0x2773,
24640x2773 => 0x2772,
24650x2774 => 0x2775,
24660x2775 => 0x2774,
24670x27C3 => 0x27C4,
24680x27C4 => 0x27C3,
24690x27C5 => 0x27C6,
24700x27C6 => 0x27C5,
24710x27D5 => 0x27D6,
24720x27D6 => 0x27D5,
24730x27DD => 0x27DE,
24740x27DE => 0x27DD,
24750x27E2 => 0x27E3,
24760x27E3 => 0x27E2,
24770x27E4 => 0x27E5,
24780x27E5 => 0x27E4,
24790x27E6 => 0x27E7,
24800x27E7 => 0x27E6,
24810x27E8 => 0x27E9,
24820x27E9 => 0x27E8,
24830x27EA => 0x27EB,
24840x27EB => 0x27EA,
24850x2983 => 0x2984,
24860x2984 => 0x2983,
24870x2985 => 0x2986,
24880x2986 => 0x2985,
24890x2987 => 0x2988,
24900x2988 => 0x2987,
24910x2989 => 0x298A,
24920x298A => 0x2989,
24930x298B => 0x298C,
24940x298C => 0x298B,
24950x298D => 0x2990,
24960x298E => 0x298F,
24970x298F => 0x298E,
24980x2990 => 0x298D,
24990x2991 => 0x2992,
25000x2992 => 0x2991,
25010x2993 => 0x2994,
25020x2994 => 0x2993,
25030x2995 => 0x2996,
25040x2996 => 0x2995,
25050x2997 => 0x2998,
25060x2998 => 0x2997,
25070x29B8 => 0x2298,
25080x29C0 => 0x29C1,
25090x29C1 => 0x29C0,
25100x29C4 => 0x29C5,
25110x29C5 => 0x29C4,
25120x29CF => 0x29D0,
25130x29D0 => 0x29CF,
25140x29D1 => 0x29D2,
25150x29D2 => 0x29D1,
25160x29D4 => 0x29D5,
25170x29D5 => 0x29D4,
25180x29D8 => 0x29D9,
25190x29D9 => 0x29D8,
25200x29DA => 0x29DB,
25210x29DB => 0x29DA,
25220x29F5 => 0x2215,
25230x29F8 => 0x29F9,
25240x29F9 => 0x29F8,
25250x29FC => 0x29FD,
25260x29FD => 0x29FC,
25270x2A2B => 0x2A2C,
25280x2A2C => 0x2A2B,
25290x2A2D => 0x2A2E,
25300x2A2E => 0x2A2D,
25310x2A34 => 0x2A35,
25320x2A35 => 0x2A34,
25330x2A3C => 0x2A3D,
25340x2A3D => 0x2A3C,
25350x2A64 => 0x2A65,
25360x2A65 => 0x2A64,
25370x2A79 => 0x2A7A,
25380x2A7A => 0x2A79,
25390x2A7D => 0x2A7E,
25400x2A7E => 0x2A7D,
25410x2A7F => 0x2A80,
25420x2A80 => 0x2A7F,
25430x2A81 => 0x2A82,
25440x2A82 => 0x2A81,
25450x2A83 => 0x2A84,
25460x2A84 => 0x2A83,
25470x2A8B => 0x2A8C,
25480x2A8C => 0x2A8B,
25490x2A91 => 0x2A92,
25500x2A92 => 0x2A91,
25510x2A93 => 0x2A94,
25520x2A94 => 0x2A93,
25530x2A95 => 0x2A96,
25540x2A96 => 0x2A95,
25550x2A97 => 0x2A98,
25560x2A98 => 0x2A97,
25570x2A99 => 0x2A9A,
25580x2A9A => 0x2A99,
25590x2A9B => 0x2A9C,
25600x2A9C => 0x2A9B,
25610x2AA1 => 0x2AA2,
25620x2AA2 => 0x2AA1,
25630x2AA6 => 0x2AA7,
25640x2AA7 => 0x2AA6,
25650x2AA8 => 0x2AA9,
25660x2AA9 => 0x2AA8,
25670x2AAA => 0x2AAB,
25680x2AAB => 0x2AAA,
25690x2AAC => 0x2AAD,
25700x2AAD => 0x2AAC,
25710x2AAF => 0x2AB0,
25720x2AB0 => 0x2AAF,
25730x2AB3 => 0x2AB4,
25740x2AB4 => 0x2AB3,
25750x2ABB => 0x2ABC,
25760x2ABC => 0x2ABB,
25770x2ABD => 0x2ABE,
25780x2ABE => 0x2ABD,
25790x2ABF => 0x2AC0,
25800x2AC0 => 0x2ABF,
25810x2AC1 => 0x2AC2,
25820x2AC2 => 0x2AC1,
25830x2AC3 => 0x2AC4,
25840x2AC4 => 0x2AC3,
25850x2AC5 => 0x2AC6,
25860x2AC6 => 0x2AC5,
25870x2ACD => 0x2ACE,
25880x2ACE => 0x2ACD,
25890x2ACF => 0x2AD0,
25900x2AD0 => 0x2ACF,
25910x2AD1 => 0x2AD2,
25920x2AD2 => 0x2AD1,
25930x2AD3 => 0x2AD4,
25940x2AD4 => 0x2AD3,
25950x2AD5 => 0x2AD6,
25960x2AD6 => 0x2AD5,
25970x2ADE => 0x22A6,
25980x2AE3 => 0x22A9,
25990x2AE4 => 0x22A8,
26000x2AE5 => 0x22AB,
26010x2AEC => 0x2AED,
26020x2AED => 0x2AEC,
26030x2AF7 => 0x2AF8,
26040x2AF8 => 0x2AF7,
26050x2AF9 => 0x2AFA,
26060x2AFA => 0x2AF9,
26070x2E02 => 0x2E03,
26080x2E03 => 0x2E02,
26090x2E04 => 0x2E05,
26100x2E05 => 0x2E04,
26110x2E09 => 0x2E0A,
26120x2E0A => 0x2E09,
26130x2E0C => 0x2E0D,
26140x2E0D => 0x2E0C,
26150x2E1C => 0x2E1D,
26160x2E1D => 0x2E1C,
26170x3008 => 0x3009,
26180x3009 => 0x3008,
26190x300A => 0x300B,
26200x300B => 0x300A,
26210x300C => 0x300D,
26220x300D => 0x300C,
26230x300E => 0x300F,
26240x300F => 0x300E,
26250x3010 => 0x3011,
26260x3011 => 0x3010,
26270x3014 => 0x3015,
26280x3015 => 0x3014,
26290x3016 => 0x3017,
26300x3017 => 0x3016,
26310x3018 => 0x3019,
26320x3019 => 0x3018,
26330x301A => 0x301B,
26340x301B => 0x301A,
26350x301D => 0x301E,
26360x301E => 0x301D,
26370xFE59 => 0xFE5A,
26380xFE5A => 0xFE59,
26390xFE5B => 0xFE5C,
26400xFE5C => 0xFE5B,
26410xFE5D => 0xFE5E,
26420xFE5E => 0xFE5D,
26430xFE64 => 0xFE65,
26440xFE65 => 0xFE64,
26450xFF08 => 0xFF09,
26460xFF09 => 0xFF08,
26470xFF1C => 0xFF1E,
26480xFF1E => 0xFF1C,
26490xFF3B => 0xFF3D,
26500xFF3D => 0xFF3B,
26510xFF5B => 0xFF5D,
26520xFF5D => 0xFF5B,
26530xFF5F => 0xFF60,
26540xFF60 => 0xFF5F,
26550xFF62 => 0xFF63,
26560xFF63 => 0xFF62);
2657
2658/**
2659 * Arabic shape subtitutions
2660 * char code => isolated, final, initial, medial
2661 */
2662$unicode_arlet = array(
2663	1569	=>	array(65152),
2664	1570	=>	array(65153, 65154, 65153, 65154),
2665	1571	=>	array(65155, 65156, 65155, 65156),
2666	1572	=>	array(65157, 65158),
2667	1573	=>	array(65159, 65160, 65159, 65160),
2668	1574	=>	array(65161, 65162, 65163, 65164),
2669	1575	=>	array(65165, 65166, 65165, 65166),
2670	1576	=>	array(65167, 65168, 65169, 65170),
2671	1577	=>	array(65171, 65172),
2672	1578	=>	array(65173, 65174, 65175, 65176),
2673	1579	=>	array(65177, 65178, 65179, 65180),
2674	1580	=>	array(65181, 65182, 65183, 65184),
2675	1581	=>	array(65185, 65186, 65187, 65188),
2676	1582	=>	array(65189, 65190, 65191, 65192),
2677	1583	=>	array(65193, 65194, 65193, 65194),
2678	1584	=>	array(65195, 65196, 65195, 65196),
2679	1585	=>	array(65197, 65198, 65197, 65198),
2680	1586	=>	array(65199, 65200, 65199, 65200),
2681	1587	=>	array(65201, 65202, 65203, 65204),
2682	1588	=>	array(65205, 65206, 65207, 65208),
2683	1589	=>	array(65209, 65210, 65211, 65212),
2684	1590	=>	array(65213, 65214, 65215, 65216),
2685	1591	=>	array(65217, 65218, 65219, 65220),
2686	1592	=>	array(65221, 65222, 65223, 65224),
2687	1593	=>	array(65225, 65226, 65227, 65228),
2688	1594	=>	array(65229, 65230, 65231, 65232),
2689	1601	=>	array(65233, 65234, 65235, 65236),
2690	1602	=>	array(65237, 65238, 65239, 65240),
2691	1603	=>	array(65241, 65242, 65243, 65244),
2692	1604	=>	array(65245, 65246, 65247, 65248),
2693	1605	=>	array(65249, 65250, 65251, 65252),
2694	1606	=>	array(65253, 65254, 65255, 65256),
2695	1607	=>	array(65257, 65258, 65259, 65260),
2696	1608	=>	array(65261, 65262, 65261, 65262),
2697	1609	=>	array(65263, 65264, 64488, 64489),
2698	1610	=>	array(65265, 65266, 65267, 65268),
2699	1649	=>	array(64336, 64337),
2700	1655	=>	array(64477),
2701	1657	=>	array(64358, 64359, 64360, 64361),
2702	1658	=>	array(64350, 64351, 64352, 64353),
2703	1659	=>	array(64338, 64339, 64340, 64341),
2704	1662	=>	array(64342, 64343, 64344, 64345),
2705	1663	=>	array(64354, 64355, 64356, 64357),
2706	1664	=>	array(64346, 64347, 64348, 64349),
2707	1667	=>	array(64374, 64375, 64376, 64377),
2708	1668	=>	array(64370, 64371, 64372, 64373),
2709	1670	=>	array(64378, 64379, 64380, 64381),
2710	1671	=>	array(64382, 64383, 64384, 64385),
2711	1672	=>	array(64392, 64393),
2712	1676	=>	array(64388, 64389),
2713	1677	=>	array(64386, 64387),
2714	1678	=>	array(64390, 64391),
2715	1681	=>	array(64396, 64397),
2716	1688	=>	array(64394, 64395, 64394, 64395),
2717	1700	=>	array(64362, 64363, 64364, 64365),
2718	1702	=>	array(64366, 64367, 64368, 64369),
2719	1705	=>	array(64398, 64399, 64400, 64401),
2720	1709	=>	array(64467, 64468, 64469, 64470),
2721	1711	=>	array(64402, 64403, 64404, 64405),
2722	1713	=>	array(64410, 64411, 64412, 64413),
2723	1715	=>	array(64406, 64407, 64408, 64409),
2724	1722	=>	array(64414, 64415),
2725	1723	=>	array(64416, 64417, 64418, 64419),
2726	1726	=>	array(64426, 64427, 64428, 64429),
2727	1728	=>	array(64420, 64421),
2728	1729	=>	array(64422, 64423, 64424, 64425),
2729	1733	=>	array(64480, 64481),
2730	1734	=>	array(64473, 64474),
2731	1735	=>	array(64471, 64472),
2732	1736	=>	array(64475, 64476),
2733	1737	=>	array(64482, 64483),
2734	1739	=>	array(64478, 64479),
2735	1740	=>	array(64508, 64509, 64510, 64511),
2736	1744	=>	array(64484, 64485, 64486, 64487),
2737	1746	=>	array(64430, 64431),
2738	1747	=>	array(64432, 64433)
2739);
2740
2741/**
2742 * Arabic laa letter
2743 * char code => isolated, final, initial, medial
2744 */
2745$laa_array = array (
2746	1570  => array(65269, 65270, 65269, 65270),
2747	1571  => array(65271, 65272, 65271, 65272),
2748	1573  => array(65273, 65274, 65273, 65274),
2749	1575  => array(65275, 65276, 65275, 65276)
2750);
2751
2752/**
2753 * Array of character substitutions for sequences of two diacritics symbols starting with SHADDA (0651 HEX, 1617 DEC).
2754 * Combining characters that can occur with Shadda (U0651) are placed in UE586-UE594.
2755 * Putting the combining mark and shadda in the same glyph allows us to avoid the two marks overlapping each other in an illegible manner.
2756 * second NSM char code => substitution char
2757 */
2758$diacritics = array (
2759	1612 => 64606, // Shadda + Dammatan
2760	1613 => 64607, // Shadda + Kasratan
2761	1614 => 64608, // Shadda + Fatha
2762	1615 => 64609, // Shadda + Damma
2763	1616 => 64610  // Shadda + Kasra
2764);
2765
2766//============================================================+
2767// END OF FILE
2768//============================================================+
2769?>