devendor-hunspell.patch 1.1 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214162151621616217162181621916220162211622216223162241622516226162271622816229162301623116232162331623416235162361623716238162391624016241162421624316244162451624616247162481624916250162511625216253162541625516256162571625816259162601626116262162631626416265162661626716268162691627016271162721627316274162751627616277162781627916280162811628216283162841628516286162871628816289162901629116292162931629416295162961629716298162991630016301163021630316304163051630616307163081630916310163111631216313163141631516316163171631816319163201632116322163231632416325163261632716328163291633016331163321633316334163351633616337163381633916340163411634216343163441634516346163471634816349163501635116352163531635416355163561635716358163591636016361163621636316364163651636616367163681636916370163711637216373163741637516376163771637816379163801638116382163831638416385163861638716388163891639016391163921639316394163951639616397163981639916400164011640216403164041640516406164071640816409164101641116412164131641416415164161641716418164191642016421164221642316424164251642616427164281642916430164311643216433164341643516436164371643816439164401644116442164431644416445164461644716448164491645016451164521645316454164551645616457164581645916460164611646216463164641646516466164671646816469164701647116472164731647416475164761647716478164791648016481164821648316484164851648616487164881648916490164911649216493164941649516496164971649816499165001650116502165031650416505165061650716508165091651016511165121651316514165151651616517165181651916520165211652216523165241652516526165271652816529165301653116532165331653416535165361653716538165391654016541165421654316544165451654616547165481654916550165511655216553165541655516556165571655816559165601656116562165631656416565165661656716568165691657016571165721657316574165751657616577165781657916580165811658216583165841658516586165871658816589165901659116592165931659416595165961659716598165991660016601166021660316604166051660616607166081660916610166111661216613166141661516616166171661816619166201662116622166231662416625166261662716628166291663016631166321663316634166351663616637166381663916640166411664216643166441664516646166471664816649166501665116652166531665416655166561665716658166591666016661166621666316664166651666616667166681666916670166711667216673166741667516676166771667816679166801668116682166831668416685166861668716688166891669016691166921669316694166951669616697166981669916700167011670216703167041670516706167071670816709167101671116712167131671416715167161671716718167191672016721167221672316724167251672616727167281672916730167311673216733167341673516736167371673816739167401674116742167431674416745167461674716748167491675016751167521675316754167551675616757167581675916760167611676216763167641676516766167671676816769167701677116772167731677416775167761677716778167791678016781167821678316784167851678616787167881678916790167911679216793167941679516796167971679816799168001680116802168031680416805168061680716808168091681016811168121681316814168151681616817168181681916820168211682216823168241682516826168271682816829168301683116832168331683416835168361683716838168391684016841168421684316844168451684616847168481684916850168511685216853168541685516856168571685816859168601686116862168631686416865168661686716868168691687016871168721687316874168751687616877168781687916880168811688216883168841688516886168871688816889168901689116892168931689416895168961689716898168991690016901169021690316904169051690616907169081690916910169111691216913169141691516916169171691816919169201692116922169231692416925169261692716928169291693016931169321693316934169351693616937169381693916940169411694216943169441694516946169471694816949169501695116952169531695416955169561695716958169591696016961169621696316964169651696616967169681696916970169711697216973169741697516976169771697816979169801698116982169831698416985169861698716988169891699016991169921699316994169951699616997169981699917000170011700217003170041700517006170071700817009170101701117012170131701417015170161701717018170191702017021170221702317024170251702617027170281702917030170311703217033170341703517036170371703817039170401704117042170431704417045170461704717048170491705017051170521705317054170551705617057170581705917060170611706217063170641706517066170671706817069170701707117072170731707417075170761707717078170791708017081170821708317084170851708617087170881708917090170911709217093170941709517096170971709817099171001710117102171031710417105171061710717108171091711017111171121711317114171151711617117171181711917120171211712217123171241712517126171271712817129171301713117132171331713417135171361713717138171391714017141171421714317144171451714617147171481714917150171511715217153171541715517156171571715817159171601716117162171631716417165171661716717168171691717017171171721717317174171751717617177171781717917180171811718217183171841718517186171871718817189171901719117192171931719417195171961719717198171991720017201172021720317204172051720617207172081720917210172111721217213172141721517216172171721817219172201722117222172231722417225172261722717228172291723017231172321723317234172351723617237172381723917240172411724217243172441724517246172471724817249172501725117252172531725417255172561725717258172591726017261172621726317264172651726617267172681726917270172711727217273172741727517276172771727817279172801728117282172831728417285172861728717288172891729017291172921729317294172951729617297172981729917300173011730217303173041730517306173071730817309173101731117312173131731417315173161731717318173191732017321173221732317324173251732617327173281732917330173311733217333173341733517336173371733817339173401734117342173431734417345173461734717348173491735017351173521735317354173551735617357173581735917360173611736217363173641736517366173671736817369173701737117372173731737417375173761737717378173791738017381173821738317384173851738617387173881738917390173911739217393173941739517396173971739817399174001740117402174031740417405174061740717408174091741017411174121741317414174151741617417174181741917420174211742217423174241742517426174271742817429174301743117432174331743417435174361743717438174391744017441174421744317444174451744617447174481744917450174511745217453174541745517456174571745817459174601746117462174631746417465174661746717468174691747017471174721747317474174751747617477174781747917480174811748217483174841748517486174871748817489174901749117492174931749417495174961749717498174991750017501175021750317504175051750617507175081750917510175111751217513175141751517516175171751817519175201752117522175231752417525175261752717528175291753017531175321753317534175351753617537175381753917540175411754217543175441754517546175471754817549175501755117552175531755417555175561755717558175591756017561175621756317564175651756617567175681756917570175711757217573175741757517576175771757817579175801758117582175831758417585175861758717588175891759017591175921759317594175951759617597175981759917600176011760217603176041760517606176071760817609176101761117612176131761417615176161761717618176191762017621176221762317624176251762617627176281762917630176311763217633176341763517636176371763817639176401764117642176431764417645176461764717648176491765017651176521765317654176551765617657176581765917660176611766217663176641766517666176671766817669176701767117672176731767417675176761767717678176791768017681176821768317684176851768617687176881768917690176911769217693176941769517696176971769817699177001770117702177031770417705177061770717708177091771017711177121771317714177151771617717177181771917720177211772217723177241772517726177271772817729177301773117732177331773417735177361773717738177391774017741177421774317744177451774617747177481774917750177511775217753177541775517756177571775817759177601776117762177631776417765177661776717768177691777017771177721777317774177751777617777177781777917780177811778217783177841778517786177871778817789177901779117792177931779417795177961779717798177991780017801178021780317804178051780617807178081780917810178111781217813178141781517816178171781817819178201782117822178231782417825178261782717828178291783017831178321783317834178351783617837178381783917840178411784217843178441784517846178471784817849178501785117852178531785417855178561785717858178591786017861178621786317864178651786617867178681786917870178711787217873178741787517876178771787817879178801788117882178831788417885178861788717888178891789017891178921789317894178951789617897178981789917900179011790217903179041790517906179071790817909179101791117912179131791417915179161791717918179191792017921179221792317924179251792617927179281792917930179311793217933179341793517936179371793817939179401794117942179431794417945179461794717948179491795017951179521795317954179551795617957179581795917960179611796217963179641796517966179671796817969179701797117972179731797417975179761797717978179791798017981179821798317984179851798617987179881798917990179911799217993179941799517996179971799817999180001800118002180031800418005180061800718008180091801018011180121801318014180151801618017180181801918020180211802218023180241802518026180271802818029180301803118032180331803418035180361803718038180391804018041180421804318044180451804618047180481804918050180511805218053180541805518056180571805818059180601806118062180631806418065180661806718068180691807018071180721807318074180751807618077180781807918080180811808218083180841808518086180871808818089180901809118092180931809418095180961809718098180991810018101181021810318104181051810618107181081810918110181111811218113181141811518116181171811818119181201812118122181231812418125181261812718128181291813018131181321813318134181351813618137181381813918140181411814218143181441814518146181471814818149181501815118152181531815418155181561815718158181591816018161181621816318164181651816618167181681816918170181711817218173181741817518176181771817818179181801818118182181831818418185181861818718188181891819018191181921819318194181951819618197181981819918200182011820218203182041820518206182071820818209182101821118212182131821418215182161821718218182191822018221182221822318224182251822618227182281822918230182311823218233182341823518236182371823818239182401824118242182431824418245182461824718248182491825018251182521825318254182551825618257182581825918260182611826218263182641826518266182671826818269182701827118272182731827418275182761827718278182791828018281182821828318284182851828618287182881828918290182911829218293182941829518296182971829818299183001830118302183031830418305183061830718308183091831018311183121831318314183151831618317183181831918320183211832218323183241832518326183271832818329183301833118332183331833418335183361833718338183391834018341183421834318344183451834618347183481834918350183511835218353183541835518356183571835818359183601836118362183631836418365183661836718368183691837018371183721837318374183751837618377183781837918380183811838218383183841838518386183871838818389183901839118392183931839418395183961839718398183991840018401184021840318404184051840618407184081840918410184111841218413184141841518416184171841818419184201842118422184231842418425184261842718428184291843018431184321843318434184351843618437184381843918440184411844218443184441844518446184471844818449184501845118452184531845418455184561845718458184591846018461184621846318464184651846618467184681846918470184711847218473184741847518476184771847818479184801848118482184831848418485184861848718488184891849018491184921849318494184951849618497184981849918500185011850218503185041850518506185071850818509185101851118512185131851418515185161851718518185191852018521185221852318524185251852618527185281852918530185311853218533185341853518536185371853818539185401854118542185431854418545185461854718548185491855018551185521855318554185551855618557185581855918560185611856218563185641856518566185671856818569185701857118572185731857418575185761857718578185791858018581185821858318584185851858618587185881858918590185911859218593185941859518596185971859818599186001860118602186031860418605186061860718608186091861018611186121861318614186151861618617186181861918620186211862218623186241862518626186271862818629186301863118632186331863418635186361863718638186391864018641186421864318644186451864618647186481864918650186511865218653186541865518656186571865818659186601866118662186631866418665186661866718668186691867018671186721867318674186751867618677186781867918680186811868218683186841868518686186871868818689186901869118692186931869418695186961869718698186991870018701187021870318704187051870618707187081870918710187111871218713187141871518716187171871818719187201872118722187231872418725187261872718728187291873018731187321873318734187351873618737187381873918740187411874218743187441874518746187471874818749187501875118752187531875418755187561875718758187591876018761187621876318764187651876618767187681876918770187711877218773187741877518776187771877818779187801878118782187831878418785187861878718788187891879018791187921879318794187951879618797187981879918800188011880218803188041880518806188071880818809188101881118812188131881418815188161881718818188191882018821188221882318824188251882618827188281882918830188311883218833188341883518836188371883818839188401884118842188431884418845188461884718848188491885018851188521885318854188551885618857188581885918860188611886218863188641886518866188671886818869188701887118872188731887418875188761887718878188791888018881188821888318884188851888618887188881888918890188911889218893188941889518896188971889818899189001890118902189031890418905189061890718908189091891018911189121891318914189151891618917189181891918920189211892218923189241892518926189271892818929189301893118932189331893418935189361893718938189391894018941189421894318944189451894618947189481894918950189511895218953189541895518956189571895818959189601896118962189631896418965189661896718968189691897018971189721897318974189751897618977189781897918980189811898218983189841898518986189871898818989189901899118992189931899418995189961899718998189991900019001190021900319004190051900619007190081900919010190111901219013190141901519016190171901819019190201902119022190231902419025190261902719028190291903019031190321903319034190351903619037190381903919040190411904219043190441904519046190471904819049190501905119052190531905419055190561905719058190591906019061190621906319064190651906619067190681906919070190711907219073190741907519076190771907819079190801908119082190831908419085190861908719088190891909019091190921909319094190951909619097190981909919100191011910219103191041910519106191071910819109191101911119112191131911419115191161911719118191191912019121191221912319124191251912619127191281912919130191311913219133191341913519136191371913819139191401914119142191431914419145191461914719148191491915019151191521915319154191551915619157191581915919160191611916219163191641916519166191671916819169191701917119172191731917419175191761917719178191791918019181191821918319184191851918619187191881918919190191911919219193191941919519196191971919819199192001920119202192031920419205192061920719208192091921019211192121921319214192151921619217192181921919220192211922219223192241922519226192271922819229192301923119232192331923419235192361923719238192391924019241192421924319244192451924619247192481924919250192511925219253192541925519256192571925819259192601926119262192631926419265192661926719268192691927019271192721927319274192751927619277192781927919280192811928219283192841928519286192871928819289192901929119292192931929419295192961929719298192991930019301193021930319304193051930619307193081930919310193111931219313193141931519316193171931819319193201932119322193231932419325193261932719328193291933019331193321933319334193351933619337193381933919340193411934219343193441934519346193471934819349193501935119352193531935419355193561935719358193591936019361193621936319364193651936619367193681936919370193711937219373193741937519376193771937819379193801938119382193831938419385193861938719388193891939019391193921939319394193951939619397193981939919400194011940219403194041940519406194071940819409194101941119412194131941419415194161941719418194191942019421194221942319424194251942619427194281942919430194311943219433194341943519436194371943819439194401944119442194431944419445194461944719448194491945019451194521945319454194551945619457194581945919460194611946219463194641946519466194671946819469194701947119472194731947419475194761947719478194791948019481194821948319484194851948619487194881948919490194911949219493194941949519496194971949819499195001950119502195031950419505195061950719508195091951019511195121951319514195151951619517195181951919520195211952219523195241952519526195271952819529195301953119532195331953419535195361953719538195391954019541195421954319544195451954619547195481954919550195511955219553195541955519556195571955819559195601956119562195631956419565195661956719568195691957019571195721957319574195751957619577195781957919580195811958219583195841958519586195871958819589195901959119592195931959419595195961959719598195991960019601196021960319604196051960619607196081960919610196111961219613196141961519616196171961819619196201962119622196231962419625196261962719628196291963019631196321963319634196351963619637196381963919640196411964219643196441964519646196471964819649196501965119652196531965419655196561965719658196591966019661196621966319664196651966619667196681966919670196711967219673196741967519676196771967819679196801968119682196831968419685196861968719688196891969019691196921969319694196951969619697196981969919700197011970219703197041970519706197071970819709197101971119712197131971419715197161971719718197191972019721197221972319724197251972619727197281972919730197311973219733197341973519736197371973819739197401974119742197431974419745197461974719748197491975019751197521975319754197551975619757197581975919760197611976219763197641976519766197671976819769197701977119772197731977419775197761977719778197791978019781197821978319784197851978619787197881978919790197911979219793197941979519796197971979819799198001980119802198031980419805198061980719808198091981019811198121981319814198151981619817198181981919820198211982219823198241982519826198271982819829198301983119832198331983419835198361983719838198391984019841198421984319844198451984619847198481984919850198511985219853198541985519856198571985819859198601986119862198631986419865198661986719868198691987019871198721987319874198751987619877198781987919880198811988219883198841988519886198871988819889198901989119892198931989419895198961989719898198991990019901199021990319904199051990619907199081990919910199111991219913199141991519916199171991819919199201992119922199231992419925199261992719928199291993019931199321993319934199351993619937199381993919940199411994219943199441994519946199471994819949199501995119952199531995419955199561995719958199591996019961199621996319964199651996619967199681996919970199711997219973199741997519976199771997819979199801998119982199831998419985199861998719988199891999019991199921999319994199951999619997199981999920000200012000220003200042000520006200072000820009200102001120012200132001420015200162001720018200192002020021200222002320024200252002620027200282002920030200312003220033200342003520036200372003820039200402004120042200432004420045200462004720048200492005020051200522005320054200552005620057200582005920060200612006220063200642006520066200672006820069200702007120072200732007420075200762007720078200792008020081200822008320084200852008620087200882008920090200912009220093200942009520096200972009820099201002010120102201032010420105201062010720108201092011020111201122011320114201152011620117201182011920120201212012220123201242012520126201272012820129201302013120132201332013420135201362013720138201392014020141201422014320144201452014620147201482014920150201512015220153201542015520156201572015820159201602016120162201632016420165201662016720168201692017020171201722017320174201752017620177201782017920180201812018220183201842018520186201872018820189201902019120192201932019420195201962019720198201992020020201202022020320204202052020620207202082020920210202112021220213202142021520216202172021820219202202022120222202232022420225202262022720228202292023020231202322023320234202352023620237202382023920240202412024220243202442024520246202472024820249202502025120252202532025420255202562025720258202592026020261202622026320264202652026620267202682026920270202712027220273202742027520276202772027820279202802028120282202832028420285202862028720288202892029020291202922029320294202952029620297202982029920300203012030220303203042030520306203072030820309203102031120312203132031420315203162031720318203192032020321203222032320324203252032620327203282032920330203312033220333203342033520336203372033820339203402034120342203432034420345203462034720348203492035020351203522035320354203552035620357203582035920360203612036220363203642036520366203672036820369203702037120372203732037420375203762037720378203792038020381203822038320384203852038620387203882038920390203912039220393203942039520396203972039820399204002040120402204032040420405204062040720408204092041020411204122041320414204152041620417204182041920420204212042220423204242042520426204272042820429204302043120432204332043420435204362043720438204392044020441204422044320444204452044620447204482044920450204512045220453204542045520456204572045820459204602046120462204632046420465204662046720468204692047020471204722047320474204752047620477204782047920480204812048220483204842048520486204872048820489204902049120492204932049420495204962049720498204992050020501205022050320504205052050620507205082050920510205112051220513205142051520516205172051820519205202052120522205232052420525205262052720528205292053020531205322053320534205352053620537205382053920540205412054220543205442054520546205472054820549205502055120552205532055420555205562055720558205592056020561205622056320564205652056620567205682056920570205712057220573205742057520576205772057820579205802058120582205832058420585205862058720588205892059020591205922059320594205952059620597205982059920600206012060220603206042060520606206072060820609206102061120612206132061420615206162061720618206192062020621206222062320624206252062620627206282062920630206312063220633206342063520636206372063820639206402064120642206432064420645206462064720648206492065020651206522065320654206552065620657206582065920660206612066220663206642066520666206672066820669206702067120672206732067420675206762067720678206792068020681206822068320684206852068620687206882068920690206912069220693206942069520696206972069820699207002070120702207032070420705207062070720708207092071020711207122071320714207152071620717207182071920720207212072220723207242072520726207272072820729207302073120732207332073420735207362073720738207392074020741207422074320744207452074620747207482074920750207512075220753207542075520756207572075820759207602076120762207632076420765207662076720768207692077020771207722077320774207752077620777207782077920780207812078220783207842078520786207872078820789207902079120792207932079420795207962079720798207992080020801208022080320804208052080620807208082080920810208112081220813208142081520816208172081820819208202082120822208232082420825208262082720828208292083020831208322083320834208352083620837208382083920840208412084220843208442084520846208472084820849208502085120852208532085420855208562085720858208592086020861208622086320864208652086620867208682086920870208712087220873208742087520876208772087820879208802088120882208832088420885208862088720888208892089020891208922089320894208952089620897208982089920900209012090220903209042090520906209072090820909209102091120912209132091420915209162091720918209192092020921209222092320924209252092620927209282092920930209312093220933209342093520936209372093820939209402094120942209432094420945209462094720948209492095020951209522095320954209552095620957209582095920960209612096220963209642096520966209672096820969209702097120972209732097420975209762097720978209792098020981209822098320984209852098620987209882098920990209912099220993209942099520996209972099820999210002100121002210032100421005210062100721008210092101021011210122101321014210152101621017210182101921020210212102221023210242102521026210272102821029210302103121032210332103421035210362103721038210392104021041210422104321044210452104621047210482104921050210512105221053210542105521056210572105821059210602106121062210632106421065210662106721068210692107021071210722107321074210752107621077210782107921080210812108221083210842108521086210872108821089210902109121092210932109421095210962109721098210992110021101211022110321104211052110621107211082110921110211112111221113211142111521116211172111821119211202112121122211232112421125211262112721128211292113021131211322113321134211352113621137211382113921140211412114221143211442114521146211472114821149211502115121152211532115421155211562115721158211592116021161211622116321164211652116621167211682116921170211712117221173211742117521176211772117821179211802118121182211832118421185211862118721188211892119021191211922119321194211952119621197211982119921200212012120221203212042120521206212072120821209212102121121212212132121421215212162121721218212192122021221212222122321224212252122621227212282122921230212312123221233212342123521236212372123821239212402124121242212432124421245212462124721248212492125021251212522125321254212552125621257212582125921260212612126221263212642126521266212672126821269212702127121272212732127421275212762127721278212792128021281212822128321284212852128621287212882128921290212912129221293212942129521296212972129821299213002130121302213032130421305213062130721308213092131021311213122131321314213152131621317213182131921320213212132221323213242132521326213272132821329213302133121332213332133421335213362133721338213392134021341213422134321344213452134621347213482134921350213512135221353213542135521356213572135821359213602136121362213632136421365213662136721368213692137021371213722137321374213752137621377213782137921380213812138221383213842138521386213872138821389213902139121392213932139421395213962139721398213992140021401214022140321404214052140621407214082140921410214112141221413214142141521416214172141821419214202142121422214232142421425214262142721428214292143021431214322143321434214352143621437214382143921440214412144221443214442144521446214472144821449214502145121452214532145421455214562145721458214592146021461214622146321464214652146621467214682146921470214712147221473214742147521476214772147821479214802148121482214832148421485214862148721488214892149021491214922149321494214952149621497214982149921500215012150221503215042150521506215072150821509215102151121512215132151421515215162151721518215192152021521215222152321524215252152621527215282152921530215312153221533215342153521536215372153821539215402154121542215432154421545215462154721548215492155021551215522155321554215552155621557215582155921560215612156221563215642156521566215672156821569215702157121572215732157421575215762157721578215792158021581215822158321584215852158621587215882158921590215912159221593215942159521596215972159821599216002160121602216032160421605216062160721608216092161021611216122161321614216152161621617216182161921620216212162221623216242162521626216272162821629216302163121632216332163421635216362163721638216392164021641216422164321644216452164621647216482164921650216512165221653216542165521656216572165821659216602166121662216632166421665216662166721668216692167021671216722167321674216752167621677216782167921680216812168221683216842168521686216872168821689216902169121692216932169421695216962169721698216992170021701217022170321704217052170621707217082170921710217112171221713217142171521716217172171821719217202172121722217232172421725217262172721728217292173021731217322173321734217352173621737217382173921740217412174221743217442174521746217472174821749217502175121752217532175421755217562175721758217592176021761217622176321764217652176621767217682176921770217712177221773217742177521776217772177821779217802178121782217832178421785217862178721788217892179021791217922179321794217952179621797217982179921800218012180221803218042180521806218072180821809218102181121812218132181421815218162181721818218192182021821218222182321824218252182621827218282182921830218312183221833218342183521836218372183821839218402184121842218432184421845218462184721848218492185021851218522185321854218552185621857218582185921860218612186221863218642186521866218672186821869218702187121872218732187421875218762187721878218792188021881218822188321884218852188621887218882188921890218912189221893218942189521896218972189821899219002190121902219032190421905219062190721908219092191021911219122191321914219152191621917219182191921920219212192221923219242192521926219272192821929219302193121932219332193421935219362193721938219392194021941219422194321944219452194621947219482194921950219512195221953219542195521956219572195821959219602196121962219632196421965219662196721968219692197021971219722197321974219752197621977219782197921980219812198221983219842198521986219872198821989219902199121992219932199421995219962199721998219992200022001220022200322004220052200622007220082200922010220112201222013220142201522016220172201822019220202202122022220232202422025220262202722028220292203022031220322203322034220352203622037220382203922040220412204222043220442204522046220472204822049220502205122052220532205422055220562205722058220592206022061220622206322064220652206622067220682206922070220712207222073220742207522076220772207822079220802208122082220832208422085220862208722088220892209022091220922209322094220952209622097220982209922100221012210222103221042210522106221072210822109221102211122112221132211422115221162211722118221192212022121221222212322124221252212622127221282212922130221312213222133221342213522136221372213822139221402214122142221432214422145221462214722148221492215022151221522215322154221552215622157221582215922160221612216222163221642216522166221672216822169221702217122172221732217422175221762217722178221792218022181221822218322184221852218622187221882218922190221912219222193221942219522196221972219822199222002220122202222032220422205222062220722208222092221022211222122221322214222152221622217222182221922220222212222222223222242222522226222272222822229222302223122232222332223422235222362223722238222392224022241222422224322244222452224622247222482224922250222512225222253222542225522256222572225822259222602226122262222632226422265222662226722268222692227022271222722227322274222752227622277222782227922280222812228222283222842228522286222872228822289222902229122292222932229422295222962229722298222992230022301223022230322304223052230622307223082230922310223112231222313223142231522316223172231822319223202232122322223232232422325223262232722328223292233022331223322233322334223352233622337223382233922340223412234222343223442234522346223472234822349223502235122352223532235422355223562235722358223592236022361223622236322364223652236622367223682236922370223712237222373223742237522376223772237822379223802238122382223832238422385223862238722388223892239022391223922239322394223952239622397223982239922400224012240222403224042240522406224072240822409224102241122412224132241422415224162241722418224192242022421224222242322424224252242622427224282242922430224312243222433224342243522436224372243822439224402244122442224432244422445224462244722448224492245022451224522245322454224552245622457224582245922460224612246222463224642246522466224672246822469224702247122472224732247422475224762247722478224792248022481224822248322484224852248622487224882248922490224912249222493224942249522496224972249822499225002250122502225032250422505225062250722508225092251022511225122251322514225152251622517225182251922520225212252222523225242252522526225272252822529225302253122532225332253422535225362253722538225392254022541225422254322544225452254622547225482254922550225512255222553225542255522556225572255822559225602256122562225632256422565225662256722568225692257022571225722257322574225752257622577225782257922580225812258222583225842258522586225872258822589225902259122592225932259422595225962259722598225992260022601226022260322604226052260622607226082260922610226112261222613226142261522616226172261822619226202262122622226232262422625226262262722628226292263022631226322263322634226352263622637226382263922640226412264222643226442264522646226472264822649226502265122652226532265422655226562265722658226592266022661226622266322664226652266622667226682266922670226712267222673226742267522676226772267822679226802268122682226832268422685226862268722688226892269022691226922269322694226952269622697226982269922700227012270222703227042270522706227072270822709227102271122712227132271422715227162271722718227192272022721227222272322724227252272622727227282272922730227312273222733227342273522736227372273822739227402274122742227432274422745227462274722748227492275022751227522275322754227552275622757227582275922760227612276222763227642276522766227672276822769227702277122772227732277422775227762277722778227792278022781227822278322784227852278622787227882278922790227912279222793227942279522796227972279822799228002280122802228032280422805228062280722808228092281022811228122281322814228152281622817228182281922820228212282222823228242282522826228272282822829228302283122832228332283422835228362283722838228392284022841228422284322844228452284622847228482284922850228512285222853228542285522856228572285822859228602286122862228632286422865228662286722868228692287022871228722287322874228752287622877228782287922880228812288222883228842288522886228872288822889228902289122892228932289422895228962289722898228992290022901229022290322904229052290622907229082290922910229112291222913229142291522916229172291822919229202292122922229232292422925229262292722928229292293022931229322293322934229352293622937229382293922940229412294222943229442294522946229472294822949229502295122952229532295422955229562295722958229592296022961229622296322964229652296622967229682296922970229712297222973229742297522976229772297822979229802298122982229832298422985229862298722988229892299022991229922299322994229952299622997229982299923000230012300223003230042300523006230072300823009230102301123012230132301423015230162301723018230192302023021230222302323024230252302623027230282302923030230312303223033230342303523036230372303823039230402304123042230432304423045230462304723048230492305023051230522305323054230552305623057230582305923060230612306223063230642306523066230672306823069230702307123072230732307423075230762307723078230792308023081230822308323084230852308623087230882308923090230912309223093230942309523096230972309823099231002310123102231032310423105231062310723108231092311023111231122311323114231152311623117231182311923120231212312223123231242312523126231272312823129231302313123132231332313423135231362313723138231392314023141231422314323144231452314623147231482314923150231512315223153231542315523156231572315823159231602316123162231632316423165231662316723168231692317023171231722317323174231752317623177231782317923180231812318223183231842318523186231872318823189231902319123192231932319423195231962319723198231992320023201232022320323204232052320623207232082320923210232112321223213232142321523216232172321823219232202322123222232232322423225232262322723228232292323023231232322323323234232352323623237232382323923240232412324223243232442324523246232472324823249232502325123252232532325423255232562325723258232592326023261232622326323264232652326623267232682326923270232712327223273232742327523276232772327823279232802328123282232832328423285232862328723288232892329023291232922329323294232952329623297232982329923300233012330223303233042330523306233072330823309233102331123312233132331423315233162331723318233192332023321233222332323324233252332623327233282332923330233312333223333233342333523336233372333823339233402334123342233432334423345233462334723348233492335023351233522335323354233552335623357233582335923360233612336223363233642336523366233672336823369233702337123372233732337423375233762337723378233792338023381233822338323384233852338623387233882338923390233912339223393233942339523396233972339823399234002340123402234032340423405234062340723408234092341023411234122341323414234152341623417234182341923420234212342223423234242342523426234272342823429234302343123432234332343423435234362343723438234392344023441234422344323444234452344623447234482344923450234512345223453234542345523456234572345823459234602346123462234632346423465234662346723468234692347023471234722347323474234752347623477234782347923480234812348223483234842348523486234872348823489234902349123492234932349423495234962349723498234992350023501235022350323504235052350623507235082350923510235112351223513235142351523516235172351823519235202352123522235232352423525235262352723528235292353023531235322353323534235352353623537235382353923540235412354223543235442354523546235472354823549235502355123552235532355423555235562355723558235592356023561235622356323564235652356623567235682356923570235712357223573235742357523576235772357823579235802358123582235832358423585235862358723588235892359023591235922359323594235952359623597235982359923600236012360223603236042360523606236072360823609236102361123612236132361423615236162361723618236192362023621236222362323624236252362623627236282362923630236312363223633236342363523636236372363823639236402364123642236432364423645236462364723648236492365023651236522365323654236552365623657236582365923660236612366223663236642366523666236672366823669236702367123672236732367423675236762367723678236792368023681236822368323684236852368623687236882368923690236912369223693236942369523696236972369823699237002370123702237032370423705237062370723708237092371023711237122371323714237152371623717237182371923720237212372223723237242372523726237272372823729237302373123732237332373423735237362373723738237392374023741237422374323744237452374623747237482374923750237512375223753237542375523756237572375823759237602376123762237632376423765237662376723768237692377023771237722377323774237752377623777237782377923780237812378223783237842378523786237872378823789237902379123792237932379423795237962379723798237992380023801238022380323804238052380623807238082380923810238112381223813238142381523816238172381823819238202382123822238232382423825238262382723828238292383023831238322383323834238352383623837238382383923840238412384223843238442384523846238472384823849238502385123852238532385423855238562385723858238592386023861238622386323864238652386623867238682386923870238712387223873238742387523876238772387823879238802388123882238832388423885238862388723888238892389023891238922389323894238952389623897238982389923900239012390223903239042390523906239072390823909239102391123912239132391423915239162391723918239192392023921239222392323924239252392623927239282392923930239312393223933239342393523936239372393823939239402394123942239432394423945239462394723948239492395023951239522395323954239552395623957239582395923960239612396223963239642396523966239672396823969239702397123972239732397423975239762397723978239792398023981239822398323984239852398623987239882398923990239912399223993239942399523996239972399823999240002400124002240032400424005240062400724008240092401024011240122401324014240152401624017240182401924020240212402224023240242402524026240272402824029240302403124032240332403424035240362403724038240392404024041240422404324044240452404624047240482404924050240512405224053240542405524056240572405824059240602406124062240632406424065240662406724068240692407024071240722407324074240752407624077240782407924080240812408224083240842408524086240872408824089240902409124092240932409424095240962409724098240992410024101241022410324104241052410624107241082410924110241112411224113241142411524116241172411824119241202412124122241232412424125241262412724128241292413024131241322413324134241352413624137241382413924140241412414224143241442414524146241472414824149241502415124152241532415424155241562415724158241592416024161241622416324164241652416624167241682416924170241712417224173241742417524176241772417824179241802418124182241832418424185241862418724188241892419024191241922419324194241952419624197241982419924200242012420224203242042420524206242072420824209242102421124212242132421424215242162421724218242192422024221242222422324224242252422624227242282422924230242312423224233242342423524236242372423824239242402424124242242432424424245242462424724248242492425024251242522425324254242552425624257242582425924260242612426224263242642426524266242672426824269242702427124272242732427424275242762427724278242792428024281242822428324284242852428624287242882428924290242912429224293242942429524296242972429824299243002430124302243032430424305243062430724308243092431024311243122431324314243152431624317243182431924320243212432224323243242432524326243272432824329243302433124332243332433424335243362433724338243392434024341243422434324344243452434624347243482434924350243512435224353243542435524356243572435824359243602436124362243632436424365243662436724368243692437024371243722437324374243752437624377243782437924380243812438224383243842438524386243872438824389243902439124392243932439424395243962439724398243992440024401244022440324404244052440624407244082440924410244112441224413244142441524416244172441824419244202442124422244232442424425244262442724428244292443024431244322443324434244352443624437244382443924440244412444224443244442444524446244472444824449244502445124452244532445424455244562445724458244592446024461244622446324464244652446624467244682446924470244712447224473244742447524476244772447824479244802448124482244832448424485244862448724488244892449024491244922449324494244952449624497244982449924500245012450224503245042450524506245072450824509245102451124512245132451424515245162451724518245192452024521245222452324524245252452624527245282452924530245312453224533245342453524536245372453824539245402454124542245432454424545245462454724548245492455024551245522455324554245552455624557245582455924560245612456224563245642456524566245672456824569245702457124572245732457424575245762457724578245792458024581245822458324584245852458624587245882458924590245912459224593245942459524596245972459824599246002460124602246032460424605246062460724608246092461024611246122461324614246152461624617246182461924620246212462224623246242462524626246272462824629246302463124632246332463424635246362463724638246392464024641246422464324644246452464624647246482464924650246512465224653246542465524656246572465824659246602466124662246632466424665246662466724668246692467024671246722467324674246752467624677246782467924680246812468224683246842468524686246872468824689246902469124692246932469424695246962469724698246992470024701247022470324704247052470624707247082470924710247112471224713247142471524716247172471824719247202472124722247232472424725247262472724728247292473024731247322473324734247352473624737247382473924740247412474224743247442474524746247472474824749247502475124752247532475424755247562475724758247592476024761247622476324764247652476624767247682476924770247712477224773247742477524776247772477824779247802478124782247832478424785247862478724788247892479024791247922479324794247952479624797247982479924800248012480224803248042480524806248072480824809248102481124812248132481424815248162481724818248192482024821248222482324824248252482624827248282482924830248312483224833248342483524836248372483824839248402484124842248432484424845248462484724848248492485024851248522485324854248552485624857248582485924860248612486224863248642486524866248672486824869248702487124872248732487424875248762487724878248792488024881248822488324884248852488624887248882488924890248912489224893248942489524896248972489824899249002490124902249032490424905249062490724908249092491024911249122491324914249152491624917249182491924920249212492224923249242492524926249272492824929249302493124932249332493424935249362493724938249392494024941249422494324944249452494624947249482494924950249512495224953249542495524956249572495824959249602496124962249632496424965249662496724968249692497024971249722497324974249752497624977249782497924980249812498224983249842498524986249872498824989249902499124992249932499424995249962499724998249992500025001250022500325004250052500625007250082500925010250112501225013250142501525016250172501825019250202502125022250232502425025250262502725028250292503025031250322503325034250352503625037250382503925040250412504225043250442504525046250472504825049250502505125052250532505425055250562505725058250592506025061250622506325064250652506625067250682506925070250712507225073250742507525076250772507825079250802508125082250832508425085250862508725088250892509025091250922509325094250952509625097250982509925100251012510225103251042510525106251072510825109251102511125112251132511425115251162511725118251192512025121251222512325124251252512625127251282512925130251312513225133251342513525136251372513825139251402514125142251432514425145251462514725148251492515025151251522515325154251552515625157251582515925160251612516225163251642516525166251672516825169251702517125172251732517425175251762517725178251792518025181251822518325184251852518625187251882518925190251912519225193251942519525196251972519825199252002520125202252032520425205252062520725208252092521025211252122521325214252152521625217252182521925220252212522225223252242522525226252272522825229252302523125232252332523425235252362523725238252392524025241252422524325244252452524625247252482524925250252512525225253252542525525256252572525825259252602526125262252632526425265252662526725268252692527025271252722527325274252752527625277252782527925280252812528225283252842528525286252872528825289252902529125292252932529425295252962529725298252992530025301253022530325304253052530625307253082530925310253112531225313253142531525316253172531825319253202532125322253232532425325253262532725328253292533025331253322533325334253352533625337253382533925340253412534225343253442534525346253472534825349253502535125352253532535425355253562535725358253592536025361253622536325364253652536625367253682536925370253712537225373253742537525376253772537825379253802538125382253832538425385253862538725388253892539025391253922539325394253952539625397253982539925400254012540225403254042540525406254072540825409254102541125412254132541425415254162541725418254192542025421254222542325424254252542625427254282542925430254312543225433254342543525436254372543825439254402544125442254432544425445254462544725448254492545025451254522545325454254552545625457254582545925460254612546225463254642546525466254672546825469254702547125472254732547425475254762547725478254792548025481254822548325484254852548625487254882548925490254912549225493254942549525496254972549825499255002550125502255032550425505255062550725508255092551025511255122551325514255152551625517255182551925520255212552225523255242552525526255272552825529255302553125532255332553425535255362553725538255392554025541255422554325544255452554625547255482554925550255512555225553255542555525556255572555825559255602556125562255632556425565255662556725568255692557025571255722557325574255752557625577255782557925580255812558225583255842558525586255872558825589255902559125592255932559425595255962559725598255992560025601256022560325604256052560625607256082560925610256112561225613256142561525616256172561825619256202562125622256232562425625256262562725628256292563025631256322563325634256352563625637256382563925640256412564225643256442564525646256472564825649256502565125652256532565425655256562565725658256592566025661256622566325664256652566625667256682566925670256712567225673256742567525676256772567825679256802568125682256832568425685256862568725688256892569025691256922569325694256952569625697256982569925700257012570225703257042570525706257072570825709257102571125712257132571425715257162571725718257192572025721257222572325724257252572625727257282572925730257312573225733257342573525736257372573825739257402574125742257432574425745257462574725748257492575025751257522575325754257552575625757257582575925760257612576225763257642576525766257672576825769257702577125772257732577425775257762577725778257792578025781257822578325784257852578625787257882578925790257912579225793257942579525796257972579825799258002580125802258032580425805258062580725808258092581025811258122581325814258152581625817258182581925820258212582225823258242582525826258272582825829258302583125832258332583425835258362583725838258392584025841258422584325844258452584625847258482584925850258512585225853258542585525856258572585825859258602586125862258632586425865258662586725868258692587025871258722587325874258752587625877258782587925880258812588225883258842588525886258872588825889258902589125892258932589425895258962589725898258992590025901259022590325904259052590625907259082590925910259112591225913259142591525916259172591825919259202592125922259232592425925259262592725928259292593025931259322593325934259352593625937259382593925940259412594225943259442594525946259472594825949259502595125952259532595425955259562595725958259592596025961259622596325964259652596625967259682596925970259712597225973259742597525976259772597825979259802598125982259832598425985259862598725988259892599025991259922599325994259952599625997259982599926000260012600226003260042600526006260072600826009260102601126012260132601426015260162601726018260192602026021260222602326024260252602626027260282602926030260312603226033260342603526036260372603826039260402604126042260432604426045260462604726048260492605026051260522605326054260552605626057260582605926060260612606226063260642606526066260672606826069260702607126072260732607426075260762607726078260792608026081260822608326084260852608626087260882608926090260912609226093260942609526096260972609826099261002610126102261032610426105261062610726108261092611026111261122611326114261152611626117261182611926120261212612226123261242612526126261272612826129261302613126132261332613426135261362613726138261392614026141261422614326144261452614626147261482614926150261512615226153261542615526156261572615826159261602616126162261632616426165261662616726168261692617026171261722617326174261752617626177261782617926180261812618226183261842618526186261872618826189261902619126192261932619426195261962619726198261992620026201262022620326204262052620626207262082620926210262112621226213262142621526216262172621826219262202622126222262232622426225262262622726228262292623026231262322623326234262352623626237262382623926240262412624226243262442624526246262472624826249262502625126252262532625426255262562625726258262592626026261262622626326264262652626626267262682626926270262712627226273262742627526276262772627826279262802628126282262832628426285262862628726288262892629026291262922629326294262952629626297262982629926300263012630226303263042630526306263072630826309263102631126312263132631426315263162631726318263192632026321263222632326324263252632626327263282632926330263312633226333263342633526336263372633826339263402634126342263432634426345263462634726348263492635026351263522635326354263552635626357263582635926360263612636226363263642636526366263672636826369263702637126372263732637426375263762637726378263792638026381263822638326384263852638626387263882638926390263912639226393263942639526396263972639826399264002640126402264032640426405264062640726408264092641026411264122641326414264152641626417264182641926420264212642226423264242642526426264272642826429264302643126432264332643426435264362643726438264392644026441264422644326444264452644626447264482644926450264512645226453264542645526456264572645826459264602646126462264632646426465264662646726468264692647026471264722647326474264752647626477264782647926480264812648226483264842648526486264872648826489264902649126492264932649426495264962649726498264992650026501265022650326504265052650626507265082650926510265112651226513265142651526516265172651826519265202652126522265232652426525265262652726528265292653026531265322653326534265352653626537265382653926540265412654226543265442654526546265472654826549265502655126552265532655426555265562655726558265592656026561265622656326564265652656626567265682656926570265712657226573265742657526576265772657826579265802658126582265832658426585265862658726588265892659026591265922659326594265952659626597265982659926600266012660226603266042660526606266072660826609266102661126612266132661426615266162661726618266192662026621266222662326624266252662626627266282662926630266312663226633266342663526636266372663826639266402664126642266432664426645266462664726648266492665026651266522665326654266552665626657266582665926660266612666226663266642666526666266672666826669266702667126672266732667426675266762667726678266792668026681266822668326684266852668626687266882668926690266912669226693266942669526696266972669826699267002670126702267032670426705267062670726708267092671026711267122671326714267152671626717267182671926720267212672226723267242672526726267272672826729267302673126732267332673426735267362673726738267392674026741267422674326744267452674626747267482674926750267512675226753267542675526756267572675826759267602676126762267632676426765267662676726768267692677026771267722677326774267752677626777267782677926780267812678226783267842678526786267872678826789267902679126792267932679426795267962679726798267992680026801268022680326804268052680626807268082680926810268112681226813268142681526816268172681826819268202682126822268232682426825268262682726828268292683026831268322683326834268352683626837268382683926840268412684226843268442684526846268472684826849268502685126852268532685426855268562685726858268592686026861268622686326864268652686626867268682686926870268712687226873268742687526876268772687826879268802688126882268832688426885268862688726888268892689026891268922689326894268952689626897268982689926900269012690226903269042690526906269072690826909269102691126912269132691426915269162691726918269192692026921269222692326924269252692626927269282692926930269312693226933269342693526936269372693826939269402694126942269432694426945269462694726948269492695026951269522695326954269552695626957269582695926960269612696226963269642696526966269672696826969269702697126972269732697426975269762697726978269792698026981269822698326984269852698626987269882698926990269912699226993269942699526996269972699826999270002700127002270032700427005270062700727008270092701027011270122701327014270152701627017270182701927020270212702227023270242702527026270272702827029270302703127032270332703427035270362703727038270392704027041270422704327044270452704627047270482704927050270512705227053270542705527056270572705827059270602706127062270632706427065270662706727068270692707027071270722707327074270752707627077270782707927080270812708227083270842708527086270872708827089270902709127092270932709427095270962709727098270992710027101271022710327104271052710627107271082710927110271112711227113271142711527116271172711827119271202712127122271232712427125271262712727128271292713027131271322713327134271352713627137271382713927140271412714227143271442714527146271472714827149271502715127152271532715427155271562715727158271592716027161271622716327164271652716627167271682716927170271712717227173271742717527176271772717827179271802718127182271832718427185271862718727188271892719027191271922719327194271952719627197271982719927200272012720227203272042720527206272072720827209272102721127212272132721427215272162721727218272192722027221272222722327224272252722627227272282722927230272312723227233272342723527236272372723827239272402724127242272432724427245272462724727248272492725027251272522725327254272552725627257272582725927260272612726227263272642726527266272672726827269272702727127272272732727427275272762727727278272792728027281272822728327284272852728627287272882728927290272912729227293272942729527296272972729827299273002730127302273032730427305273062730727308273092731027311273122731327314273152731627317273182731927320273212732227323273242732527326273272732827329273302733127332273332733427335273362733727338273392734027341273422734327344273452734627347273482734927350273512735227353273542735527356273572735827359273602736127362273632736427365273662736727368273692737027371273722737327374273752737627377273782737927380273812738227383273842738527386273872738827389273902739127392273932739427395273962739727398273992740027401274022740327404274052740627407274082740927410274112741227413274142741527416274172741827419274202742127422274232742427425274262742727428274292743027431274322743327434274352743627437274382743927440274412744227443274442744527446274472744827449274502745127452274532745427455274562745727458274592746027461274622746327464274652746627467274682746927470274712747227473274742747527476274772747827479274802748127482274832748427485274862748727488274892749027491274922749327494274952749627497274982749927500275012750227503275042750527506275072750827509275102751127512275132751427515275162751727518275192752027521275222752327524275252752627527275282752927530275312753227533275342753527536275372753827539275402754127542275432754427545275462754727548275492755027551275522755327554275552755627557275582755927560275612756227563275642756527566275672756827569275702757127572275732757427575275762757727578275792758027581275822758327584275852758627587275882758927590275912759227593275942759527596275972759827599276002760127602276032760427605276062760727608276092761027611276122761327614276152761627617276182761927620276212762227623276242762527626276272762827629276302763127632276332763427635276362763727638276392764027641276422764327644276452764627647276482764927650276512765227653276542765527656276572765827659276602766127662276632766427665276662766727668276692767027671276722767327674276752767627677276782767927680276812768227683276842768527686276872768827689276902769127692276932769427695276962769727698276992770027701277022770327704277052770627707277082770927710277112771227713277142771527716277172771827719277202772127722277232772427725277262772727728277292773027731277322773327734277352773627737277382773927740277412774227743277442774527746277472774827749277502775127752277532775427755277562775727758277592776027761277622776327764277652776627767277682776927770277712777227773277742777527776277772777827779277802778127782277832778427785277862778727788277892779027791277922779327794277952779627797277982779927800278012780227803278042780527806278072780827809278102781127812278132781427815278162781727818278192782027821278222782327824278252782627827278282782927830278312783227833278342783527836278372783827839278402784127842278432784427845278462784727848278492785027851278522785327854278552785627857278582785927860278612786227863278642786527866278672786827869278702787127872278732787427875278762787727878278792788027881278822788327884278852788627887278882788927890278912789227893278942789527896278972789827899279002790127902279032790427905279062790727908279092791027911279122791327914279152791627917279182791927920279212792227923279242792527926279272792827929279302793127932279332793427935279362793727938279392794027941279422794327944279452794627947279482794927950279512795227953279542795527956279572795827959279602796127962279632796427965279662796727968279692797027971279722797327974279752797627977279782797927980279812798227983279842798527986279872798827989279902799127992279932799427995279962799727998279992800028001280022800328004280052800628007280082800928010280112801228013280142801528016280172801828019280202802128022280232802428025280262802728028280292803028031280322803328034280352803628037280382803928040280412804228043280442804528046280472804828049280502805128052280532805428055280562805728058280592806028061280622806328064280652806628067280682806928070280712807228073280742807528076280772807828079280802808128082280832808428085280862808728088280892809028091280922809328094280952809628097280982809928100281012810228103281042810528106281072810828109281102811128112281132811428115281162811728118281192812028121281222812328124281252812628127281282812928130281312813228133281342813528136281372813828139281402814128142281432814428145281462814728148281492815028151281522815328154281552815628157281582815928160281612816228163281642816528166281672816828169281702817128172281732817428175281762817728178281792818028181281822818328184281852818628187281882818928190281912819228193281942819528196281972819828199282002820128202282032820428205282062820728208282092821028211282122821328214282152821628217282182821928220282212822228223282242822528226282272822828229282302823128232282332823428235282362823728238282392824028241282422824328244282452824628247282482824928250282512825228253282542825528256282572825828259282602826128262282632826428265282662826728268282692827028271282722827328274282752827628277282782827928280282812828228283282842828528286282872828828289282902829128292282932829428295282962829728298282992830028301283022830328304283052830628307283082830928310283112831228313283142831528316283172831828319283202832128322283232832428325283262832728328283292833028331283322833328334283352833628337283382833928340283412834228343283442834528346283472834828349283502835128352283532835428355283562835728358283592836028361283622836328364283652836628367283682836928370283712837228373283742837528376283772837828379283802838128382283832838428385283862838728388283892839028391283922839328394283952839628397283982839928400284012840228403284042840528406284072840828409284102841128412284132841428415284162841728418284192842028421284222842328424284252842628427284282842928430284312843228433284342843528436284372843828439284402844128442284432844428445284462844728448284492845028451284522845328454284552845628457284582845928460284612846228463284642846528466284672846828469284702847128472284732847428475284762847728478284792848028481284822848328484284852848628487284882848928490284912849228493284942849528496284972849828499285002850128502285032850428505285062850728508285092851028511285122851328514285152851628517285182851928520285212852228523285242852528526285272852828529285302853128532285332853428535285362853728538285392854028541285422854328544285452854628547285482854928550285512855228553285542855528556285572855828559285602856128562285632856428565285662856728568285692857028571285722857328574285752857628577285782857928580285812858228583285842858528586285872858828589285902859128592285932859428595285962859728598285992860028601286022860328604286052860628607286082860928610286112861228613286142861528616286172861828619286202862128622286232862428625286262862728628286292863028631286322863328634286352863628637286382863928640286412864228643286442864528646286472864828649286502865128652286532865428655286562865728658286592866028661286622866328664286652866628667286682866928670286712867228673286742867528676286772867828679286802868128682286832868428685286862868728688286892869028691286922869328694286952869628697286982869928700287012870228703287042870528706287072870828709287102871128712287132871428715287162871728718287192872028721287222872328724287252872628727287282872928730287312873228733287342873528736287372873828739287402874128742287432874428745287462874728748287492875028751287522875328754287552875628757287582875928760287612876228763287642876528766287672876828769287702877128772287732877428775287762877728778287792878028781287822878328784287852878628787287882878928790287912879228793287942879528796287972879828799288002880128802288032880428805288062880728808288092881028811288122881328814288152881628817288182881928820288212882228823288242882528826288272882828829288302883128832288332883428835288362883728838288392884028841288422884328844288452884628847288482884928850288512885228853288542885528856288572885828859288602886128862288632886428865288662886728868288692887028871288722887328874288752887628877288782887928880288812888228883288842888528886288872888828889288902889128892288932889428895288962889728898288992890028901289022890328904289052890628907289082890928910289112891228913289142891528916289172891828919289202892128922289232892428925289262892728928289292893028931289322893328934289352893628937289382893928940289412894228943289442894528946289472894828949289502895128952289532895428955289562895728958289592896028961289622896328964289652896628967289682896928970289712897228973289742897528976289772897828979289802898128982289832898428985289862898728988289892899028991289922899328994289952899628997289982899929000290012900229003290042900529006290072900829009290102901129012290132901429015290162901729018290192902029021290222902329024290252902629027290282902929030290312903229033290342903529036290372903829039290402904129042290432904429045290462904729048290492905029051290522905329054290552905629057290582905929060290612906229063290642906529066290672906829069290702907129072290732907429075290762907729078290792908029081290822908329084290852908629087290882908929090290912909229093290942909529096290972909829099291002910129102291032910429105291062910729108291092911029111291122911329114291152911629117291182911929120291212912229123291242912529126291272912829129291302913129132291332913429135291362913729138291392914029141291422914329144291452914629147291482914929150291512915229153291542915529156291572915829159291602916129162291632916429165291662916729168291692917029171291722917329174291752917629177291782917929180291812918229183291842918529186291872918829189291902919129192291932919429195291962919729198291992920029201292022920329204292052920629207292082920929210292112921229213292142921529216292172921829219292202922129222292232922429225292262922729228292292923029231292322923329234292352923629237292382923929240292412924229243292442924529246292472924829249292502925129252292532925429255292562925729258292592926029261292622926329264292652926629267292682926929270292712927229273292742927529276292772927829279292802928129282292832928429285292862928729288292892929029291292922929329294292952929629297292982929929300293012930229303293042930529306293072930829309293102931129312293132931429315293162931729318293192932029321293222932329324293252932629327293282932929330293312933229333293342933529336293372933829339293402934129342293432934429345293462934729348293492935029351293522935329354293552935629357293582935929360293612936229363293642936529366293672936829369293702937129372293732937429375293762937729378293792938029381293822938329384293852938629387293882938929390293912939229393293942939529396293972939829399294002940129402294032940429405294062940729408294092941029411294122941329414294152941629417294182941929420294212942229423294242942529426294272942829429294302943129432294332943429435294362943729438294392944029441294422944329444294452944629447294482944929450294512945229453294542945529456294572945829459294602946129462294632946429465294662946729468294692947029471294722947329474294752947629477294782947929480294812948229483294842948529486294872948829489294902949129492294932949429495294962949729498294992950029501295022950329504295052950629507295082950929510295112951229513295142951529516295172951829519295202952129522295232952429525295262952729528295292953029531295322953329534295352953629537295382953929540295412954229543295442954529546295472954829549295502955129552295532955429555295562955729558295592956029561295622956329564295652956629567295682956929570295712957229573295742957529576295772957829579295802958129582295832958429585295862958729588295892959029591295922959329594295952959629597295982959929600296012960229603296042960529606296072960829609296102961129612296132961429615296162961729618296192962029621296222962329624296252962629627296282962929630296312963229633296342963529636296372963829639296402964129642296432964429645296462964729648296492965029651296522965329654296552965629657296582965929660296612966229663296642966529666296672966829669296702967129672296732967429675296762967729678296792968029681296822968329684296852968629687296882968929690296912969229693296942969529696296972969829699297002970129702297032970429705297062970729708297092971029711297122971329714297152971629717297182971929720297212972229723297242972529726297272972829729297302973129732297332973429735297362973729738297392974029741297422974329744297452974629747297482974929750297512975229753297542975529756297572975829759297602976129762297632976429765297662976729768297692977029771297722977329774297752977629777297782977929780297812978229783297842978529786297872978829789297902979129792297932979429795297962979729798297992980029801298022980329804298052980629807298082980929810298112981229813298142981529816298172981829819298202982129822298232982429825298262982729828298292983029831298322983329834298352983629837298382983929840298412984229843298442984529846298472984829849298502985129852298532985429855298562985729858298592986029861298622986329864298652986629867298682986929870298712987229873298742987529876298772987829879298802988129882298832988429885298862988729888298892989029891298922989329894298952989629897298982989929900299012990229903299042990529906299072990829909299102991129912299132991429915299162991729918299192992029921299222992329924299252992629927299282992929930299312993229933299342993529936299372993829939299402994129942299432994429945299462994729948299492995029951299522995329954299552995629957299582995929960299612996229963299642996529966299672996829969299702997129972299732997429975299762997729978299792998029981299822998329984299852998629987299882998929990299912999229993299942999529996299972999829999300003000130002300033000430005300063000730008300093001030011300123001330014300153001630017300183001930020300213002230023300243002530026300273002830029300303003130032300333003430035300363003730038300393004030041300423004330044300453004630047300483004930050300513005230053300543005530056300573005830059300603006130062300633006430065300663006730068300693007030071300723007330074300753007630077300783007930080300813008230083300843008530086300873008830089300903009130092300933009430095300963009730098300993010030101301023010330104301053010630107301083010930110301113011230113301143011530116301173011830119301203012130122301233012430125301263012730128301293013030131301323013330134301353013630137301383013930140301413014230143301443014530146301473014830149301503015130152301533015430155301563015730158301593016030161301623016330164301653016630167301683016930170301713017230173301743017530176301773017830179301803018130182301833018430185301863018730188301893019030191301923019330194301953019630197301983019930200302013020230203302043020530206302073020830209302103021130212302133021430215302163021730218302193022030221302223022330224302253022630227302283022930230302313023230233302343023530236302373023830239302403024130242302433024430245302463024730248302493025030251302523025330254302553025630257302583025930260302613026230263302643026530266302673026830269302703027130272302733027430275302763027730278302793028030281302823028330284302853028630287302883028930290302913029230293302943029530296302973029830299303003030130302303033030430305303063030730308303093031030311303123031330314303153031630317303183031930320303213032230323303243032530326303273032830329303303033130332303333033430335303363033730338303393034030341303423034330344303453034630347303483034930350303513035230353303543035530356303573035830359303603036130362303633036430365303663036730368303693037030371303723037330374303753037630377303783037930380303813038230383303843038530386303873038830389303903039130392303933039430395303963039730398303993040030401304023040330404304053040630407304083040930410304113041230413304143041530416304173041830419304203042130422304233042430425304263042730428304293043030431304323043330434304353043630437304383043930440304413044230443304443044530446304473044830449304503045130452304533045430455304563045730458304593046030461304623046330464304653046630467304683046930470304713047230473304743047530476304773047830479304803048130482304833048430485304863048730488304893049030491304923049330494304953049630497304983049930500305013050230503305043050530506305073050830509305103051130512305133051430515305163051730518305193052030521305223052330524305253052630527305283052930530305313053230533305343053530536305373053830539305403054130542305433054430545305463054730548305493055030551305523055330554305553055630557305583055930560305613056230563305643056530566305673056830569305703057130572305733057430575305763057730578305793058030581305823058330584305853058630587305883058930590305913059230593305943059530596305973059830599306003060130602306033060430605306063060730608306093061030611306123061330614306153061630617306183061930620306213062230623306243062530626306273062830629306303063130632306333063430635306363063730638306393064030641306423064330644306453064630647306483064930650306513065230653306543065530656306573065830659306603066130662306633066430665306663066730668306693067030671306723067330674306753067630677306783067930680306813068230683306843068530686306873068830689306903069130692306933069430695306963069730698306993070030701307023070330704307053070630707307083070930710307113071230713307143071530716307173071830719307203072130722307233072430725307263072730728307293073030731307323073330734307353073630737307383073930740307413074230743307443074530746307473074830749307503075130752307533075430755307563075730758307593076030761307623076330764307653076630767307683076930770307713077230773307743077530776307773077830779307803078130782307833078430785307863078730788307893079030791307923079330794307953079630797307983079930800308013080230803308043080530806308073080830809308103081130812308133081430815308163081730818308193082030821308223082330824308253082630827308283082930830308313083230833308343083530836308373083830839308403084130842308433084430845308463084730848308493085030851308523085330854308553085630857308583085930860308613086230863308643086530866308673086830869308703087130872308733087430875308763087730878308793088030881308823088330884308853088630887308883088930890308913089230893308943089530896308973089830899309003090130902309033090430905309063090730908309093091030911309123091330914309153091630917309183091930920309213092230923309243092530926309273092830929309303093130932309333093430935309363093730938309393094030941309423094330944309453094630947309483094930950309513095230953309543095530956309573095830959309603096130962309633096430965309663096730968309693097030971309723097330974309753097630977309783097930980309813098230983309843098530986309873098830989309903099130992309933099430995309963099730998309993100031001310023100331004310053100631007310083100931010310113101231013310143101531016310173101831019310203102131022310233102431025310263102731028310293103031031310323103331034310353103631037310383103931040310413104231043310443104531046310473104831049310503105131052310533105431055310563105731058310593106031061310623106331064310653106631067310683106931070310713107231073310743107531076310773107831079310803108131082310833108431085310863108731088310893109031091310923109331094310953109631097310983109931100311013110231103311043110531106311073110831109311103111131112311133111431115311163111731118311193112031121311223112331124311253112631127311283112931130311313113231133311343113531136311373113831139311403114131142311433114431145311463114731148311493115031151311523115331154311553115631157311583115931160311613116231163311643116531166311673116831169311703117131172311733117431175311763117731178311793118031181311823118331184311853118631187311883118931190311913119231193311943119531196311973119831199312003120131202312033120431205312063120731208312093121031211312123121331214312153121631217312183121931220312213122231223312243122531226312273122831229312303123131232312333123431235312363123731238312393124031241312423124331244312453124631247312483124931250312513125231253312543125531256312573125831259312603126131262312633126431265312663126731268312693127031271312723127331274312753127631277312783127931280312813128231283312843128531286312873128831289312903129131292312933129431295312963129731298312993130031301313023130331304313053130631307313083130931310313113131231313313143131531316313173131831319313203132131322313233132431325313263132731328313293133031331313323133331334313353133631337313383133931340313413134231343313443134531346313473134831349313503135131352313533135431355313563135731358313593136031361313623136331364313653136631367313683136931370313713137231373313743137531376313773137831379313803138131382313833138431385313863138731388313893139031391313923139331394313953139631397313983139931400314013140231403314043140531406314073140831409314103141131412314133141431415314163141731418314193142031421314223142331424314253142631427314283142931430314313143231433314343143531436314373143831439314403144131442314433144431445314463144731448314493145031451314523145331454314553145631457314583145931460314613146231463314643146531466314673146831469314703147131472314733147431475314763147731478314793148031481314823148331484314853148631487314883148931490314913149231493314943149531496314973149831499315003150131502315033150431505315063150731508315093151031511315123151331514315153151631517315183151931520315213152231523315243152531526315273152831529315303153131532315333153431535315363153731538315393154031541315423154331544315453154631547315483154931550315513155231553315543155531556315573155831559315603156131562315633156431565315663156731568315693157031571315723157331574315753157631577315783157931580315813158231583315843158531586315873158831589315903159131592315933159431595315963159731598315993160031601316023160331604316053160631607316083160931610316113161231613316143161531616316173161831619316203162131622316233162431625316263162731628316293163031631316323163331634316353163631637316383163931640316413164231643316443164531646316473164831649316503165131652316533165431655316563165731658316593166031661316623166331664316653166631667316683166931670316713167231673316743167531676316773167831679316803168131682316833168431685316863168731688316893169031691316923169331694316953169631697316983169931700317013170231703317043170531706317073170831709317103171131712317133171431715317163171731718317193172031721317223172331724317253172631727317283172931730317313173231733317343173531736317373173831739317403174131742317433174431745317463174731748317493175031751317523175331754317553175631757317583175931760317613176231763317643176531766317673176831769317703177131772317733177431775317763177731778317793178031781317823178331784317853178631787317883178931790317913179231793317943179531796317973179831799318003180131802318033180431805318063180731808318093181031811318123181331814318153181631817318183181931820318213182231823318243182531826318273182831829318303183131832318333183431835318363183731838318393184031841318423184331844318453184631847318483184931850318513185231853318543185531856318573185831859318603186131862318633186431865318663186731868318693187031871318723187331874318753187631877318783187931880318813188231883318843188531886318873188831889318903189131892318933189431895318963189731898318993190031901319023190331904319053190631907319083190931910319113191231913319143191531916319173191831919319203192131922319233192431925319263192731928319293193031931319323193331934319353193631937319383193931940319413194231943319443194531946319473194831949319503195131952319533195431955319563195731958319593196031961319623196331964319653196631967319683196931970319713197231973319743197531976319773197831979319803198131982319833198431985319863198731988319893199031991319923199331994319953199631997319983199932000320013200232003320043200532006320073200832009320103201132012320133201432015320163201732018320193202032021320223202332024320253202632027320283202932030320313203232033320343203532036320373203832039320403204132042320433204432045320463204732048320493205032051320523205332054320553205632057320583205932060320613206232063320643206532066320673206832069320703207132072320733207432075320763207732078320793208032081320823208332084320853208632087320883208932090320913209232093320943209532096320973209832099321003210132102321033210432105321063210732108321093211032111321123211332114321153211632117321183211932120321213212232123321243212532126321273212832129321303213132132321333213432135321363213732138321393214032141321423214332144321453214632147321483214932150321513215232153321543215532156321573215832159321603216132162321633216432165321663216732168321693217032171321723217332174321753217632177321783217932180321813218232183321843218532186321873218832189321903219132192321933219432195321963219732198321993220032201322023220332204322053220632207322083220932210322113221232213322143221532216322173221832219322203222132222322233222432225322263222732228322293223032231322323223332234322353223632237322383223932240322413224232243322443224532246322473224832249322503225132252322533225432255322563225732258322593226032261322623226332264322653226632267322683226932270322713227232273322743227532276322773227832279322803228132282322833228432285322863228732288322893229032291322923229332294322953229632297322983229932300323013230232303323043230532306323073230832309323103231132312323133231432315323163231732318323193232032321323223232332324323253232632327323283232932330323313233232333323343233532336323373233832339323403234132342323433234432345323463234732348323493235032351323523235332354323553235632357323583235932360323613236232363323643236532366323673236832369323703237132372323733237432375323763237732378323793238032381323823238332384323853238632387323883238932390323913239232393323943239532396323973239832399324003240132402324033240432405324063240732408324093241032411324123241332414324153241632417324183241932420324213242232423324243242532426324273242832429324303243132432324333243432435324363243732438324393244032441324423244332444324453244632447324483244932450324513245232453324543245532456324573245832459324603246132462324633246432465324663246732468324693247032471324723247332474324753247632477324783247932480324813248232483324843248532486324873248832489324903249132492324933249432495324963249732498324993250032501325023250332504325053250632507325083250932510325113251232513325143251532516325173251832519325203252132522325233252432525325263252732528325293253032531325323253332534325353253632537325383253932540325413254232543325443254532546325473254832549325503255132552325533255432555325563255732558325593256032561325623256332564325653256632567325683256932570325713257232573325743257532576325773257832579325803258132582325833258432585325863258732588325893259032591325923259332594325953259632597325983259932600326013260232603326043260532606326073260832609326103261132612326133261432615326163261732618326193262032621326223262332624326253262632627326283262932630326313263232633326343263532636326373263832639326403264132642326433264432645326463264732648326493265032651326523265332654326553265632657326583265932660326613266232663326643266532666326673266832669326703267132672326733267432675326763267732678326793268032681326823268332684326853268632687326883268932690326913269232693326943269532696326973269832699327003270132702327033270432705327063270732708327093271032711327123271332714327153271632717327183271932720327213272232723327243272532726327273272832729327303273132732327333273432735327363273732738327393274032741327423274332744327453274632747327483274932750327513275232753327543275532756327573275832759327603276132762327633276432765327663276732768327693277032771327723277332774327753277632777327783277932780327813278232783327843278532786327873278832789327903279132792327933279432795327963279732798327993280032801328023280332804328053280632807328083280932810328113281232813328143281532816328173281832819328203282132822328233282432825328263282732828328293283032831328323283332834328353283632837328383283932840328413284232843328443284532846328473284832849328503285132852328533285432855328563285732858328593286032861328623286332864328653286632867328683286932870328713287232873328743287532876328773287832879328803288132882328833288432885328863288732888328893289032891328923289332894328953289632897328983289932900329013290232903329043290532906329073290832909329103291132912329133291432915329163291732918329193292032921329223292332924329253292632927329283292932930329313293232933329343293532936329373293832939329403294132942329433294432945329463294732948329493295032951329523295332954329553295632957329583295932960329613296232963329643296532966329673296832969329703297132972329733297432975329763297732978329793298032981329823298332984329853298632987329883298932990329913299232993329943299532996329973299832999330003300133002330033300433005330063300733008330093301033011330123301333014330153301633017330183301933020330213302233023330243302533026330273302833029330303303133032330333303433035330363303733038330393304033041330423304333044330453304633047330483304933050330513305233053330543305533056330573305833059330603306133062330633306433065330663306733068330693307033071330723307333074330753307633077330783307933080330813308233083330843308533086330873308833089330903309133092330933309433095330963309733098330993310033101331023310333104331053310633107331083310933110331113311233113331143311533116331173311833119331203312133122331233312433125331263312733128331293313033131331323313333134331353313633137331383313933140331413314233143331443314533146331473314833149331503315133152331533315433155331563315733158331593316033161331623316333164331653316633167331683316933170331713317233173331743317533176331773317833179331803318133182331833318433185331863318733188331893319033191331923319333194331953319633197331983319933200332013320233203332043320533206332073320833209332103321133212332133321433215332163321733218332193322033221332223322333224332253322633227332283322933230332313323233233332343323533236332373323833239332403324133242332433324433245332463324733248332493325033251332523325333254332553325633257332583325933260332613326233263332643326533266332673326833269332703327133272332733327433275332763327733278332793328033281332823328333284332853328633287332883328933290332913329233293332943329533296332973329833299333003330133302333033330433305333063330733308333093331033311333123331333314333153331633317333183331933320333213332233323333243332533326333273332833329333303333133332333333333433335333363333733338333393334033341333423334333344333453334633347333483334933350333513335233353333543335533356333573335833359333603336133362333633336433365333663336733368333693337033371333723337333374333753337633377333783337933380333813338233383333843338533386333873338833389333903339133392333933339433395333963339733398333993340033401334023340333404334053340633407334083340933410334113341233413334143341533416334173341833419334203342133422334233342433425334263342733428334293343033431334323343333434334353343633437334383343933440334413344233443334443344533446334473344833449334503345133452334533345433455334563345733458334593346033461334623346333464334653346633467334683346933470334713347233473334743347533476334773347833479334803348133482334833348433485334863348733488334893349033491334923349333494334953349633497334983349933500335013350233503335043350533506335073350833509335103351133512335133351433515335163351733518335193352033521335223352333524335253352633527335283352933530335313353233533335343353533536335373353833539335403354133542335433354433545335463354733548335493355033551335523355333554335553355633557335583355933560335613356233563335643356533566335673356833569335703357133572335733357433575335763357733578335793358033581335823358333584335853358633587335883358933590335913359233593335943359533596335973359833599336003360133602336033360433605336063360733608336093361033611336123361333614336153361633617336183361933620336213362233623336243362533626336273362833629336303363133632336333363433635336363363733638336393364033641336423364333644336453364633647336483364933650336513365233653336543365533656336573365833659336603366133662336633366433665336663366733668336693367033671336723367333674336753367633677336783367933680336813368233683336843368533686336873368833689336903369133692336933369433695336963369733698336993370033701337023370333704337053370633707337083370933710337113371233713337143371533716337173371833719337203372133722337233372433725337263372733728337293373033731337323373333734337353373633737337383373933740337413374233743337443374533746337473374833749337503375133752337533375433755337563375733758337593376033761337623376333764337653376633767337683376933770337713377233773337743377533776337773377833779337803378133782337833378433785337863378733788337893379033791337923379333794337953379633797337983379933800338013380233803338043380533806338073380833809338103381133812338133381433815338163381733818338193382033821338223382333824338253382633827338283382933830338313383233833338343383533836338373383833839338403384133842338433384433845338463384733848338493385033851338523385333854338553385633857338583385933860338613386233863338643386533866338673386833869338703387133872338733387433875338763387733878338793388033881338823388333884338853388633887338883388933890338913389233893338943389533896338973389833899339003390133902339033390433905339063390733908339093391033911339123391333914339153391633917339183391933920339213392233923339243392533926339273392833929339303393133932339333393433935339363393733938339393394033941339423394333944339453394633947339483394933950339513395233953339543395533956339573395833959339603396133962339633396433965339663396733968339693397033971339723397333974339753397633977339783397933980339813398233983339843398533986339873398833989339903399133992339933399433995339963399733998339993400034001340023400334004340053400634007340083400934010340113401234013340143401534016340173401834019340203402134022340233402434025340263402734028340293403034031340323403334034340353403634037340383403934040340413404234043340443404534046340473404834049340503405134052340533405434055340563405734058340593406034061340623406334064340653406634067340683406934070340713407234073340743407534076340773407834079340803408134082340833408434085340863408734088340893409034091340923409334094340953409634097340983409934100341013410234103341043410534106341073410834109341103411134112341133411434115341163411734118341193412034121341223412334124341253412634127341283412934130341313413234133341343413534136341373413834139341403414134142341433414434145341463414734148341493415034151341523415334154341553415634157341583415934160341613416234163341643416534166341673416834169341703417134172341733417434175341763417734178341793418034181341823418334184341853418634187341883418934190341913419234193341943419534196341973419834199342003420134202342033420434205342063420734208342093421034211342123421334214342153421634217342183421934220342213422234223342243422534226342273422834229342303423134232342333423434235342363423734238342393424034241342423424334244342453424634247342483424934250342513425234253342543425534256342573425834259342603426134262342633426434265342663426734268342693427034271342723427334274342753427634277342783427934280342813428234283342843428534286342873428834289342903429134292342933429434295342963429734298342993430034301343023430334304343053430634307343083430934310343113431234313343143431534316343173431834319343203432134322343233432434325343263432734328343293433034331343323433334334343353433634337343383433934340343413434234343343443434534346343473434834349343503435134352343533435434355343563435734358343593436034361343623436334364343653436634367343683436934370343713437234373343743437534376343773437834379343803438134382343833438434385343863438734388343893439034391343923439334394343953439634397343983439934400344013440234403344043440534406344073440834409344103441134412344133441434415344163441734418344193442034421344223442334424344253442634427344283442934430344313443234433344343443534436344373443834439344403444134442344433444434445344463444734448344493445034451344523445334454344553445634457344583445934460344613446234463344643446534466344673446834469344703447134472344733447434475344763447734478344793448034481344823448334484344853448634487344883448934490344913449234493344943449534496344973449834499345003450134502345033450434505345063450734508345093451034511345123451334514345153451634517345183451934520345213452234523345243452534526345273452834529345303453134532345333453434535345363453734538345393454034541345423454334544345453454634547345483454934550345513455234553345543455534556345573455834559345603456134562345633456434565345663456734568345693457034571345723457334574345753457634577345783457934580345813458234583345843458534586345873458834589345903459134592345933459434595345963459734598345993460034601346023460334604346053460634607346083460934610346113461234613346143461534616346173461834619346203462134622346233462434625346263462734628346293463034631346323463334634346353463634637346383463934640346413464234643346443464534646346473464834649346503465134652346533465434655346563465734658346593466034661346623466334664346653466634667346683466934670346713467234673346743467534676346773467834679346803468134682346833468434685346863468734688346893469034691346923469334694346953469634697346983469934700347013470234703347043470534706347073470834709347103471134712347133471434715347163471734718347193472034721347223472334724347253472634727347283472934730347313473234733347343473534736347373473834739347403474134742347433474434745347463474734748347493475034751347523475334754347553475634757347583475934760347613476234763347643476534766347673476834769347703477134772347733477434775347763477734778347793478034781347823478334784347853478634787347883478934790347913479234793347943479534796347973479834799348003480134802348033480434805348063480734808348093481034811348123481334814348153481634817348183481934820348213482234823348243482534826348273482834829348303483134832348333483434835348363483734838348393484034841348423484334844348453484634847348483484934850348513485234853348543485534856348573485834859348603486134862348633486434865348663486734868348693487034871348723487334874348753487634877348783487934880348813488234883348843488534886348873488834889348903489134892348933489434895348963489734898348993490034901349023490334904349053490634907349083490934910349113491234913349143491534916349173491834919349203492134922349233492434925349263492734928349293493034931349323493334934349353493634937349383493934940349413494234943349443494534946349473494834949349503495134952349533495434955349563495734958349593496034961349623496334964349653496634967349683496934970349713497234973349743497534976349773497834979349803498134982349833498434985349863498734988349893499034991349923499334994349953499634997349983499935000350013500235003350043500535006350073500835009350103501135012350133501435015350163501735018350193502035021350223502335024350253502635027350283502935030350313503235033350343503535036350373503835039350403504135042350433504435045350463504735048350493505035051350523505335054350553505635057350583505935060350613506235063350643506535066350673506835069350703507135072350733507435075350763507735078350793508035081350823508335084350853508635087350883508935090350913509235093350943509535096350973509835099351003510135102351033510435105351063510735108351093511035111351123511335114351153511635117351183511935120351213512235123351243512535126351273512835129351303513135132351333513435135351363513735138351393514035141351423514335144351453514635147351483514935150351513515235153351543515535156351573515835159351603516135162351633516435165351663516735168351693517035171351723517335174351753517635177351783517935180351813518235183351843518535186351873518835189351903519135192351933519435195351963519735198351993520035201352023520335204352053520635207352083520935210352113521235213352143521535216352173521835219352203522135222352233522435225352263522735228352293523035231352323523335234352353523635237352383523935240352413524235243352443524535246352473524835249352503525135252352533525435255352563525735258352593526035261352623526335264352653526635267352683526935270352713527235273352743527535276352773527835279352803528135282352833528435285352863528735288352893529035291352923529335294352953529635297352983529935300353013530235303353043530535306353073530835309353103531135312353133531435315353163531735318353193532035321353223532335324353253532635327353283532935330353313533235333353343533535336353373533835339353403534135342353433534435345353463534735348353493535035351353523535335354353553535635357353583535935360353613536235363353643536535366353673536835369353703537135372353733537435375353763537735378353793538035381353823538335384353853538635387353883538935390353913539235393353943539535396353973539835399354003540135402354033540435405354063540735408354093541035411354123541335414354153541635417354183541935420354213542235423354243542535426354273542835429354303543135432354333543435435354363543735438354393544035441354423544335444354453544635447354483544935450354513545235453354543545535456354573545835459354603546135462354633546435465354663546735468354693547035471354723547335474354753547635477354783547935480354813548235483354843548535486354873548835489354903549135492354933549435495354963549735498354993550035501355023550335504355053550635507355083550935510355113551235513355143551535516355173551835519355203552135522355233552435525355263552735528355293553035531355323553335534355353553635537355383553935540355413554235543355443554535546355473554835549355503555135552355533555435555355563555735558355593556035561355623556335564355653556635567355683556935570355713557235573355743557535576355773557835579355803558135582355833558435585355863558735588355893559035591355923559335594355953559635597355983559935600356013560235603356043560535606356073560835609356103561135612356133561435615356163561735618356193562035621356223562335624356253562635627356283562935630356313563235633356343563535636356373563835639356403564135642356433564435645356463564735648356493565035651356523565335654356553565635657356583565935660356613566235663356643566535666356673566835669356703567135672356733567435675356763567735678356793568035681356823568335684356853568635687356883568935690356913569235693356943569535696356973569835699357003570135702357033570435705357063570735708357093571035711357123571335714357153571635717357183571935720357213572235723357243572535726357273572835729357303573135732357333573435735357363573735738357393574035741357423574335744357453574635747357483574935750357513575235753357543575535756357573575835759357603576135762357633576435765357663576735768357693577035771357723577335774357753577635777357783577935780357813578235783357843578535786357873578835789357903579135792357933579435795357963579735798357993580035801358023580335804358053580635807358083580935810358113581235813358143581535816358173581835819358203582135822358233582435825358263582735828358293583035831358323583335834358353583635837358383583935840358413584235843358443584535846358473584835849358503585135852358533585435855358563585735858358593586035861358623586335864358653586635867358683586935870358713587235873358743587535876358773587835879358803588135882358833588435885358863588735888358893589035891358923589335894358953589635897358983589935900359013590235903359043590535906359073590835909359103591135912359133591435915359163591735918359193592035921359223592335924359253592635927359283592935930359313593235933359343593535936359373593835939359403594135942359433594435945359463594735948359493595035951359523595335954359553595635957359583595935960359613596235963359643596535966359673596835969359703597135972359733597435975359763597735978359793598035981359823598335984359853598635987359883598935990359913599235993359943599535996359973599835999360003600136002360033600436005360063600736008360093601036011360123601336014360153601636017360183601936020360213602236023360243602536026360273602836029360303603136032360333603436035360363603736038360393604036041360423604336044360453604636047360483604936050360513605236053360543605536056360573605836059360603606136062360633606436065360663606736068360693607036071360723607336074360753607636077360783607936080360813608236083360843608536086360873608836089360903609136092360933609436095360963609736098360993610036101361023610336104361053610636107361083610936110361113611236113361143611536116361173611836119361203612136122361233612436125361263612736128361293613036131361323613336134361353613636137361383613936140361413614236143361443614536146361473614836149361503615136152361533615436155361563615736158361593616036161361623616336164361653616636167361683616936170361713617236173361743617536176361773617836179361803618136182361833618436185361863618736188361893619036191361923619336194361953619636197361983619936200362013620236203362043620536206362073620836209362103621136212362133621436215362163621736218362193622036221362223622336224362253622636227362283622936230362313623236233362343623536236362373623836239362403624136242362433624436245362463624736248362493625036251362523625336254362553625636257362583625936260362613626236263362643626536266362673626836269362703627136272362733627436275362763627736278362793628036281362823628336284362853628636287362883628936290362913629236293362943629536296362973629836299363003630136302363033630436305363063630736308363093631036311363123631336314363153631636317363183631936320363213632236323363243632536326363273632836329363303633136332363333633436335363363633736338363393634036341363423634336344363453634636347363483634936350363513635236353363543635536356363573635836359363603636136362363633636436365363663636736368363693637036371363723637336374363753637636377363783637936380363813638236383363843638536386363873638836389363903639136392363933639436395363963639736398363993640036401364023640336404364053640636407364083640936410364113641236413364143641536416364173641836419364203642136422364233642436425364263642736428364293643036431364323643336434364353643636437364383643936440364413644236443364443644536446364473644836449364503645136452364533645436455364563645736458364593646036461364623646336464364653646636467364683646936470364713647236473364743647536476364773647836479364803648136482364833648436485364863648736488364893649036491364923649336494364953649636497364983649936500365013650236503365043650536506365073650836509365103651136512365133651436515365163651736518365193652036521365223652336524365253652636527365283652936530365313653236533365343653536536365373653836539365403654136542365433654436545365463654736548365493655036551365523655336554365553655636557365583655936560365613656236563365643656536566365673656836569365703657136572365733657436575365763657736578365793658036581365823658336584365853658636587365883658936590365913659236593365943659536596365973659836599366003660136602366033660436605366063660736608366093661036611366123661336614366153661636617366183661936620366213662236623366243662536626366273662836629366303663136632366333663436635366363663736638366393664036641366423664336644366453664636647366483664936650366513665236653366543665536656366573665836659366603666136662366633666436665366663666736668366693667036671366723667336674366753667636677366783667936680366813668236683366843668536686366873668836689366903669136692366933669436695366963669736698366993670036701367023670336704367053670636707367083670936710367113671236713367143671536716367173671836719367203672136722367233672436725367263672736728367293673036731367323673336734367353673636737367383673936740367413674236743367443674536746367473674836749367503675136752367533675436755367563675736758367593676036761367623676336764367653676636767367683676936770367713677236773367743677536776367773677836779367803678136782367833678436785367863678736788367893679036791367923679336794367953679636797367983679936800368013680236803368043680536806368073680836809368103681136812368133681436815368163681736818368193682036821368223682336824368253682636827368283682936830368313683236833368343683536836368373683836839368403684136842368433684436845368463684736848368493685036851368523685336854368553685636857368583685936860368613686236863368643686536866368673686836869368703687136872368733687436875368763687736878368793688036881368823688336884368853688636887368883688936890368913689236893368943689536896368973689836899369003690136902369033690436905369063690736908369093691036911369123691336914369153691636917369183691936920369213692236923369243692536926369273692836929369303693136932369333693436935369363693736938369393694036941369423694336944369453694636947369483694936950369513695236953369543695536956369573695836959369603696136962369633696436965369663696736968369693697036971369723697336974369753697636977369783697936980369813698236983369843698536986369873698836989369903699136992369933699436995369963699736998369993700037001370023700337004370053700637007370083700937010370113701237013370143701537016370173701837019370203702137022370233702437025370263702737028370293703037031370323703337034370353703637037370383703937040370413704237043370443704537046370473704837049370503705137052370533705437055370563705737058370593706037061370623706337064370653706637067370683706937070370713707237073370743707537076370773707837079370803708137082370833708437085370863708737088370893709037091370923709337094370953709637097370983709937100371013710237103371043710537106371073710837109371103711137112371133711437115371163711737118371193712037121371223712337124371253712637127371283712937130371313713237133371343713537136371373713837139371403714137142371433714437145371463714737148371493715037151371523715337154371553715637157371583715937160371613716237163371643716537166371673716837169371703717137172371733717437175371763717737178371793718037181371823718337184371853718637187371883718937190371913719237193371943719537196371973719837199372003720137202372033720437205372063720737208372093721037211372123721337214372153721637217372183721937220372213722237223372243722537226372273722837229372303723137232372333723437235372363723737238372393724037241372423724337244372453724637247372483724937250372513725237253372543725537256372573725837259372603726137262372633726437265372663726737268372693727037271372723727337274372753727637277372783727937280372813728237283372843728537286372873728837289372903729137292372933729437295372963729737298372993730037301373023730337304373053730637307373083730937310373113731237313373143731537316373173731837319373203732137322373233732437325373263732737328373293733037331373323733337334373353733637337373383733937340373413734237343373443734537346373473734837349373503735137352373533735437355373563735737358373593736037361373623736337364373653736637367373683736937370373713737237373373743737537376373773737837379373803738137382373833738437385373863738737388373893739037391373923739337394373953739637397373983739937400374013740237403374043740537406374073740837409374103741137412374133741437415374163741737418374193742037421374223742337424374253742637427374283742937430374313743237433374343743537436374373743837439374403744137442374433744437445374463744737448374493745037451374523745337454374553745637457374583745937460374613746237463374643746537466374673746837469374703747137472374733747437475374763747737478374793748037481374823748337484374853748637487374883748937490374913749237493374943749537496374973749837499375003750137502375033750437505375063750737508375093751037511375123751337514375153751637517375183751937520375213752237523375243752537526375273752837529375303753137532375333753437535375363753737538375393754037541375423754337544375453754637547375483754937550375513755237553375543755537556375573755837559375603756137562375633756437565375663756737568375693757037571375723757337574375753757637577375783757937580375813758237583375843758537586375873758837589375903759137592375933759437595375963759737598375993760037601376023760337604376053760637607376083760937610376113761237613376143761537616376173761837619376203762137622376233762437625376263762737628376293763037631376323763337634376353763637637376383763937640376413764237643376443764537646376473764837649376503765137652376533765437655376563765737658376593766037661376623766337664376653766637667376683766937670376713767237673376743767537676376773767837679376803768137682376833768437685376863768737688376893769037691376923769337694376953769637697376983769937700377013770237703377043770537706377073770837709377103771137712377133771437715377163771737718377193772037721377223772337724377253772637727377283772937730377313773237733377343773537736377373773837739377403774137742377433774437745377463774737748377493775037751377523775337754377553775637757377583775937760377613776237763377643776537766377673776837769377703777137772377733777437775377763777737778377793778037781377823778337784377853778637787377883778937790377913779237793377943779537796377973779837799378003780137802378033780437805378063780737808378093781037811378123781337814378153781637817378183781937820378213782237823378243782537826378273782837829378303783137832378333783437835378363783737838378393784037841378423784337844378453784637847378483784937850378513785237853378543785537856378573785837859378603786137862378633786437865378663786737868378693787037871378723787337874378753787637877378783787937880378813788237883378843788537886378873788837889378903789137892378933789437895378963789737898378993790037901379023790337904379053790637907379083790937910379113791237913379143791537916379173791837919379203792137922379233792437925379263792737928379293793037931379323793337934379353793637937379383793937940379413794237943379443794537946379473794837949379503795137952379533795437955379563795737958379593796037961379623796337964379653796637967379683796937970379713797237973379743797537976379773797837979379803798137982379833798437985379863798737988379893799037991379923799337994379953799637997379983799938000380013800238003380043800538006380073800838009380103801138012380133801438015380163801738018380193802038021380223802338024380253802638027380283802938030380313803238033380343803538036380373803838039380403804138042380433804438045380463804738048380493805038051380523805338054380553805638057380583805938060380613806238063380643806538066380673806838069380703807138072380733807438075380763807738078380793808038081380823808338084380853808638087380883808938090380913809238093380943809538096380973809838099381003810138102381033810438105381063810738108381093811038111381123811338114381153811638117381183811938120381213812238123381243812538126381273812838129381303813138132381333813438135381363813738138381393814038141381423814338144381453814638147381483814938150381513815238153381543815538156381573815838159381603816138162381633816438165381663816738168381693817038171381723817338174381753817638177381783817938180381813818238183381843818538186381873818838189381903819138192381933819438195381963819738198381993820038201382023820338204382053820638207382083820938210382113821238213382143821538216382173821838219382203822138222382233822438225382263822738228382293823038231382323823338234382353823638237382383823938240382413824238243382443824538246382473824838249382503825138252382533825438255382563825738258382593826038261382623826338264382653826638267382683826938270382713827238273382743827538276382773827838279382803828138282382833828438285382863828738288382893829038291382923829338294382953829638297382983829938300383013830238303383043830538306383073830838309383103831138312383133831438315383163831738318383193832038321383223832338324383253832638327383283832938330383313833238333383343833538336383373833838339383403834138342383433834438345383463834738348383493835038351383523835338354383553835638357383583835938360383613836238363383643836538366383673836838369383703837138372383733837438375383763837738378383793838038381383823838338384383853838638387383883838938390383913839238393383943839538396383973839838399384003840138402384033840438405384063840738408384093841038411384123841338414384153841638417384183841938420384213842238423384243842538426384273842838429384303843138432384333843438435384363843738438384393844038441384423844338444384453844638447384483844938450384513845238453384543845538456384573845838459384603846138462384633846438465384663846738468384693847038471384723847338474384753847638477384783847938480384813848238483384843848538486384873848838489384903849138492384933849438495384963849738498384993850038501385023850338504385053850638507385083850938510385113851238513385143851538516385173851838519385203852138522385233852438525385263852738528385293853038531385323853338534385353853638537385383853938540385413854238543385443854538546385473854838549385503855138552385533855438555385563855738558385593856038561385623856338564385653856638567385683856938570385713857238573385743857538576385773857838579385803858138582385833858438585385863858738588385893859038591385923859338594385953859638597385983859938600386013860238603386043860538606386073860838609386103861138612386133861438615386163861738618386193862038621386223862338624386253862638627386283862938630386313863238633386343863538636386373863838639386403864138642386433864438645386463864738648386493865038651386523865338654386553865638657386583865938660386613866238663386643866538666386673866838669386703867138672386733867438675386763867738678386793868038681386823868338684386853868638687386883868938690386913869238693386943869538696386973869838699387003870138702387033870438705387063870738708387093871038711387123871338714387153871638717387183871938720387213872238723387243872538726387273872838729387303873138732387333873438735387363873738738387393874038741387423874338744387453874638747387483874938750387513875238753387543875538756387573875838759387603876138762387633876438765387663876738768387693877038771387723877338774387753877638777387783877938780387813878238783387843878538786387873878838789387903879138792387933879438795387963879738798387993880038801388023880338804388053880638807388083880938810388113881238813388143881538816388173881838819388203882138822388233882438825388263882738828388293883038831388323883338834388353883638837388383883938840388413884238843388443884538846388473884838849388503885138852388533885438855388563885738858388593886038861388623886338864388653886638867388683886938870388713887238873388743887538876388773887838879388803888138882388833888438885388863888738888388893889038891388923889338894388953889638897388983889938900389013890238903389043890538906389073890838909389103891138912389133891438915389163891738918389193892038921389223892338924389253892638927389283892938930389313893238933389343893538936389373893838939389403894138942389433894438945389463894738948389493895038951389523895338954389553895638957389583895938960389613896238963389643896538966389673896838969389703897138972389733897438975389763897738978389793898038981389823898338984389853898638987389883898938990389913899238993389943899538996389973899838999390003900139002390033900439005390063900739008390093901039011390123901339014390153901639017390183901939020390213902239023390243902539026390273902839029390303903139032390333903439035390363903739038390393904039041390423904339044390453904639047390483904939050390513905239053390543905539056390573905839059390603906139062390633906439065390663906739068390693907039071390723907339074390753907639077390783907939080390813908239083390843908539086390873908839089390903909139092390933909439095390963909739098390993910039101391023910339104391053910639107391083910939110391113911239113391143911539116391173911839119391203912139122391233912439125391263912739128391293913039131391323913339134391353913639137391383913939140391413914239143391443914539146391473914839149391503915139152391533915439155391563915739158391593916039161391623916339164391653916639167391683916939170391713917239173391743917539176391773917839179391803918139182391833918439185391863918739188391893919039191391923919339194391953919639197391983919939200392013920239203392043920539206392073920839209392103921139212392133921439215392163921739218392193922039221392223922339224392253922639227392283922939230392313923239233392343923539236392373923839239392403924139242392433924439245392463924739248392493925039251392523925339254392553925639257392583925939260392613926239263392643926539266392673926839269392703927139272392733927439275392763927739278392793928039281392823928339284392853928639287392883928939290392913929239293392943929539296392973929839299393003930139302393033930439305393063930739308393093931039311393123931339314393153931639317393183931939320393213932239323393243932539326393273932839329393303933139332393333933439335393363933739338393393934039341393423934339344393453934639347393483934939350393513935239353393543935539356393573935839359393603936139362393633936439365393663936739368393693937039371393723937339374393753937639377393783937939380393813938239383393843938539386393873938839389393903939139392393933939439395393963939739398393993940039401394023940339404394053940639407394083940939410394113941239413394143941539416394173941839419394203942139422394233942439425394263942739428394293943039431394323943339434394353943639437394383943939440394413944239443394443944539446394473944839449394503945139452394533945439455394563945739458394593946039461394623946339464394653946639467394683946939470394713947239473394743947539476394773947839479394803948139482394833948439485394863948739488394893949039491394923949339494394953949639497394983949939500395013950239503395043950539506395073950839509395103951139512395133951439515395163951739518395193952039521395223952339524395253952639527395283952939530395313953239533395343953539536395373953839539395403954139542395433954439545395463954739548395493955039551395523955339554395553955639557395583955939560395613956239563395643956539566395673956839569395703957139572395733957439575395763957739578395793958039581395823958339584395853958639587395883958939590395913959239593395943959539596395973959839599396003960139602396033960439605396063960739608396093961039611396123961339614396153961639617396183961939620396213962239623396243962539626396273962839629396303963139632396333963439635396363963739638396393964039641
  1. From 420e9e121b67db197e0c5d0bf23b92c174f2678f Mon Sep 17 00:00:00 2001
  2. From: Kovid Goyal <kovid@kovidgoyal.net>
  3. Date: Mon, 2 Sep 2019 10:36:26 +0530
  4. Subject: [PATCH] De-vendor hunspell
  5. ---
  6. COPYRIGHT | 4 -
  7. bypy/sources.json | 9 +
  8. setup/build_environment.py | 5 +
  9. setup/extensions.json | 10 +-
  10. src/calibre/spell/dictionary.py | 47 +-
  11. src/calibre/test_build.py | 4 +
  12. src/calibre/utils/spell/hunspell_wrapper.cpp | 39 +-
  13. src/hunspell/Makefile.am | 19 -
  14. src/hunspell/Makefile.in | 661 -
  15. src/hunspell/README | 21 -
  16. src/hunspell/affentry.cxx | 1003 -
  17. src/hunspell/affentry.hxx | 144 -
  18. src/hunspell/affixmgr.cxx | 4538 ----
  19. src/hunspell/affixmgr.hxx | 251 -
  20. src/hunspell/atypes.hxx | 107 -
  21. src/hunspell/baseaffix.hxx | 32 -
  22. src/hunspell/config.h | 36 -
  23. src/hunspell/csutil.cxx | 5863 -----
  24. src/hunspell/csutil.hxx | 223 -
  25. src/hunspell/dictmgr.cxx | 182 -
  26. src/hunspell/dictmgr.hxx | 39 -
  27. src/hunspell/filemgr.cxx | 46 -
  28. src/hunspell/filemgr.hxx | 22 -
  29. src/hunspell/hashmgr.cxx | 938 -
  30. src/hunspell/hashmgr.hxx | 69 -
  31. src/hunspell/htypes.hxx | 32 -
  32. src/hunspell/hunspell.cxx | 1944 --
  33. src/hunspell/hunspell.dsp | 164 -
  34. src/hunspell/hunspell.hxx | 180 -
  35. src/hunspell/hunvisapi.h | 18 -
  36. src/hunspell/hunvisapi.h.in | 18 -
  37. src/hunspell/langnum.hxx | 38 -
  38. src/hunspell/license.hunspell | 59 -
  39. src/hunspell/license.myspell | 61 -
  40. src/hunspell/makefile.mk | 65 -
  41. src/hunspell/phonet.cxx | 293 -
  42. src/hunspell/phonet.hxx | 52 -
  43. src/hunspell/replist.cxx | 87 -
  44. src/hunspell/replist.hxx | 30 -
  45. src/hunspell/suggestmgr.cxx | 2029 --
  46. src/hunspell/suggestmgr.hxx | 115 -
  47. src/hunspell/utf_info.cxx | 19676 -----------------
  48. src/hunspell/w_char.hxx | 21 -
  49. 43 files changed, 75 insertions(+), 39119 deletions(-)
  50. delete mode 100644 src/hunspell/Makefile.am
  51. delete mode 100644 src/hunspell/Makefile.in
  52. delete mode 100644 src/hunspell/README
  53. delete mode 100644 src/hunspell/affentry.cxx
  54. delete mode 100644 src/hunspell/affentry.hxx
  55. delete mode 100644 src/hunspell/affixmgr.cxx
  56. delete mode 100644 src/hunspell/affixmgr.hxx
  57. delete mode 100644 src/hunspell/atypes.hxx
  58. delete mode 100644 src/hunspell/baseaffix.hxx
  59. delete mode 100644 src/hunspell/config.h
  60. delete mode 100644 src/hunspell/csutil.cxx
  61. delete mode 100644 src/hunspell/csutil.hxx
  62. delete mode 100644 src/hunspell/dictmgr.cxx
  63. delete mode 100644 src/hunspell/dictmgr.hxx
  64. delete mode 100644 src/hunspell/filemgr.cxx
  65. delete mode 100644 src/hunspell/filemgr.hxx
  66. delete mode 100644 src/hunspell/hashmgr.cxx
  67. delete mode 100644 src/hunspell/hashmgr.hxx
  68. delete mode 100644 src/hunspell/htypes.hxx
  69. delete mode 100644 src/hunspell/hunspell.cxx
  70. delete mode 100644 src/hunspell/hunspell.dsp
  71. delete mode 100644 src/hunspell/hunspell.hxx
  72. delete mode 100644 src/hunspell/hunvisapi.h
  73. delete mode 100644 src/hunspell/hunvisapi.h.in
  74. delete mode 100644 src/hunspell/langnum.hxx
  75. delete mode 100644 src/hunspell/license.hunspell
  76. delete mode 100644 src/hunspell/license.myspell
  77. delete mode 100644 src/hunspell/makefile.mk
  78. delete mode 100644 src/hunspell/phonet.cxx
  79. delete mode 100644 src/hunspell/phonet.hxx
  80. delete mode 100644 src/hunspell/replist.cxx
  81. delete mode 100644 src/hunspell/replist.hxx
  82. delete mode 100644 src/hunspell/suggestmgr.cxx
  83. delete mode 100644 src/hunspell/suggestmgr.hxx
  84. delete mode 100644 src/hunspell/utf_info.cxx
  85. delete mode 100644 src/hunspell/w_char.hxx
  86. diff --git a/COPYRIGHT b/COPYRIGHT
  87. index dd5c53bec0..02afa12d7f 100644
  88. --- a/COPYRIGHT
  89. +++ b/COPYRIGHT
  90. @@ -254,10 +254,6 @@ License: BSD
  91. The full text of the BSD license is distributed as in
  92. /usr/share/common-licenses/BSD on Debian systems.
  93. -Files: src/hunspell/*
  94. -Copyright: Various
  95. -License: GPL-2+
  96. -
  97. Files: src/calibre/gui2/tweak_book/diff/_patiencediff_c.c
  98. Copyright: Canonical
  99. License: GPL-2+
  100. diff --git a/bypy/sources.json b/bypy/sources.json
  101. index c7e3ea85e6..8b07ddf40e 100644
  102. --- a/bypy/sources.json
  103. +++ b/bypy/sources.json
  104. @@ -384,6 +384,15 @@
  105. }
  106. },
  107. + {
  108. + "name": "hunspell",
  109. + "unix": {
  110. + "filename": "hunspell-1.7.0.tar.gz",
  111. + "hash": "sha256:57be4e03ae9dd62c3471f667a0d81a14513e314d4d92081292b90435944ff951",
  112. + "urls": ["https://github.com/hunspell/hunspell/files/2573619/{filename}"]
  113. + }
  114. + },
  115. +
  116. {
  117. "name": "qt-base",
  118. "version": "5.13.0",
  119. diff --git a/setup/build_environment.py b/setup/build_environment.py
  120. index ca9573a8f1..de4ea9644b 100644
  121. --- a/setup/build_environment.py
  122. +++ b/setup/build_environment.py
  123. @@ -126,6 +126,8 @@ def get_sip_dir():
  124. icu_lib_dirs = []
  125. zlib_inc_dirs = []
  126. zlib_lib_dirs = []
  127. +hunspell_inc_dirs = []
  128. +hunspell_lib_dirs = []
  129. openssl_inc_dirs, openssl_lib_dirs = [], []
  130. ICU = sw = ''
  131. @@ -152,6 +154,7 @@ def get_sip_dir():
  132. sw_inc_dir = os.path.join(sw, 'include')
  133. sw_lib_dir = os.path.join(sw, 'lib')
  134. podofo_inc = os.path.join(sw_inc_dir, 'podofo')
  135. + hunspell_inc_dirs = [os.path.join(sw_inc_dir, 'hunspell')]
  136. podofo_lib = sw_lib_dir
  137. ft_libs = ['freetype']
  138. ft_inc_dirs = [sw + '/include/freetype2']
  139. @@ -163,6 +166,8 @@ def get_sip_dir():
  140. '/usr/include/freetype2')
  141. ft_lib_dirs = pkgconfig_lib_dirs('freetype2', 'FT_LIB_DIR', '/usr/lib')
  142. ft_libs = pkgconfig_libs('freetype2', '', '')
  143. + hunspell_inc_dirs = pkgconfig_include_dirs('hunspell', 'HUNSPELL_INC_DIR', '/usr/include/hunspell')
  144. + hunspell_lib_dirs = pkgconfig_lib_dirs('hunspell', 'HUNSPELL_LIB_DIR', '/usr/lib')
  145. sw = os.environ.get('SW', os.path.expanduser('~/sw'))
  146. podofo_inc = '/usr/include/podofo'
  147. podofo_lib = '/usr/lib'
  148. diff --git a/setup/extensions.json b/setup/extensions.json
  149. index 191ae693ad..0720cb3976 100644
  150. --- a/setup/extensions.json
  151. +++ b/setup/extensions.json
  152. @@ -1,11 +1,11 @@
  153. [
  154. {
  155. "name": "hunspell",
  156. - "sources": "hunspell/affentry.cxx hunspell/affixmgr.cxx hunspell/csutil.cxx hunspell/dictmgr.cxx hunspell/filemgr.cxx hunspell/hashmgr.cxx hunspell/hunspell.cxx hunspell/phonet.cxx hunspell/replist.cxx hunspell/suggestmgr.cxx calibre/utils/spell/hunspell_wrapper.cpp",
  157. - "inc_dirs": "hunspell",
  158. - "defines": "HUNSPELL_STATIC",
  159. - "windows_defines": "HUNSPELL_STATIC _CRT_SECURE_NO_WARNINGS UNICODE _UNICODE",
  160. - "optimize_level": 2
  161. + "sources": "calibre/utils/spell/hunspell_wrapper.cpp",
  162. + "inc_dirs": "!hunspell_inc_dirs",
  163. + "lib_dirs": "!hunspell_lib_dirs",
  164. + "libraries": "hunspell",
  165. + "needs_c++11": true
  166. },
  167. {
  168. "name": "monotonic",
  169. diff --git a/src/calibre/spell/dictionary.py b/src/calibre/spell/dictionary.py
  170. index c4bdaea35a..402dc9667b 100644
  171. --- a/src/calibre/spell/dictionary.py
  172. +++ b/src/calibre/spell/dictionary.py
  173. @@ -1,22 +1,27 @@
  174. #!/usr/bin/env python2
  175. # vim:fileencoding=utf-8
  176. +# License: GPLv3 Copyright: 2014, Kovid Goyal <kovid at kovidgoyal.net>
  177. from __future__ import absolute_import, division, print_function, unicode_literals
  178. -__license__ = 'GPL v3'
  179. -__copyright__ = '2014, Kovid Goyal <kovid at kovidgoyal.net>'
  180. -
  181. -import os, glob, shutil, re, sys
  182. -from collections import namedtuple, defaultdict
  183. -from itertools import chain
  184. +import glob
  185. +import os
  186. +import re
  187. +import shutil
  188. +import sys
  189. +from collections import defaultdict, namedtuple
  190. from functools import partial
  191. +from itertools import chain
  192. from calibre import prints
  193. -from calibre.constants import plugins, config_dir
  194. +from calibre.constants import (
  195. + config_dir, filesystem_encoding, ispy3, iswindows, plugins
  196. +)
  197. from calibre.spell import parse_lang_code
  198. from calibre.utils.config import JSONConfig
  199. from calibre.utils.icu import capitalize
  200. from calibre.utils.localization import get_lang, get_system_locale
  201. -from polyglot.builtins import iteritems, itervalues, unicode_type, filter
  202. +from polyglot.builtins import filter, iteritems, itervalues, unicode_type
  203. +
  204. Dictionary = namedtuple('Dictionary', 'primary_locale locales dicpath affpath builtin name id')
  205. LoadedDictionary = namedtuple('Dictionary', 'primary_locale locales obj builtin name id')
  206. @@ -163,11 +168,18 @@ def get_dictionary(locale, exact_match=False):
  207. def load_dictionary(dictionary):
  208. - from calibre.spell.import_from import convert_to_utf8
  209. - with open(dictionary.dicpath, 'rb') as dic, open(dictionary.affpath, 'rb') as aff:
  210. - dic_data, aff_data = dic.read(), aff.read()
  211. - dic_data, aff_data = convert_to_utf8(dic_data, aff_data)
  212. - obj = hunspell.Dictionary(dic_data, aff_data)
  213. +
  214. + def fix_path(path):
  215. + if isinstance(path, bytes):
  216. + path = path.decode(filesystem_encoding)
  217. + path = os.path.abspath(path)
  218. + if iswindows:
  219. + path = r'\\?\{}'.format(path)
  220. + if not ispy3:
  221. + path = path.encode('utf-8')
  222. + return path
  223. +
  224. + obj = hunspell.Dictionary(fix_path(dictionary.dicpath), fix_path(dictionary.affpath))
  225. return LoadedDictionary(dictionary.primary_locale, dictionary.locales, obj, dictionary.builtin, dictionary.name, dictionary.id)
  226. @@ -414,6 +426,14 @@ def add_suggestion(w, ans):
  227. return ans
  228. +def build_test():
  229. + dictionaries = Dictionaries()
  230. + dictionaries.initialize()
  231. + eng = parse_lang_code('en')
  232. + if not dictionaries.recognized('recognized', locale=eng):
  233. + raise AssertionError('The word recognized was not recognized')
  234. +
  235. +
  236. def find_tests():
  237. import unittest
  238. @@ -438,5 +458,6 @@ def test_dictionaries(self):
  239. self.assertIn('one\u2010half', self.suggestions('oone\u2010half'))
  240. self.assertIn('adequately', self.suggestions('ade-quately'))
  241. self.assertIn('magic. Wand', self.suggestions('magic.wand'))
  242. + self.assertIn('List', self.suggestions('Lis𝑘t'))
  243. return unittest.TestLoader().loadTestsFromTestCase(TestDictionaries)
  244. diff --git a/src/calibre/test_build.py b/src/calibre/test_build.py
  245. index e7991b65ae..ec8ebce75e 100644
  246. --- a/src/calibre/test_build.py
  247. +++ b/src/calibre/test_build.py
  248. @@ -46,6 +46,10 @@ def test_regex(self):
  249. self.assertEqual(regex.findall(r'(?i)(a)(b)', 'ab cd AB 1a1b'), [('a', 'b'), ('A', 'B')])
  250. self.assertEqual(regex.escape('a b', literal_spaces=True), 'a b')
  251. + def test_hunspell(self):
  252. + from calibre.spell.dictionary import build_test
  253. + build_test()
  254. +
  255. def test_chardet(self):
  256. from chardet import detect
  257. raw = 'mūsi Füße'.encode('utf-8')
  258. diff --git a/src/calibre/utils/spell/hunspell_wrapper.cpp b/src/calibre/utils/spell/hunspell_wrapper.cpp
  259. index 3d3f28f646..210f1d3fd0 100644
  260. --- a/src/calibre/utils/spell/hunspell_wrapper.cpp
  261. +++ b/src/calibre/utils/spell/hunspell_wrapper.cpp
  262. @@ -23,15 +23,14 @@ static PyObject *HunspellError = NULL;
  263. static int
  264. init_type(Dictionary *self, PyObject *args, PyObject *kwds) {
  265. char *dic = NULL, *aff = NULL;
  266. - Py_ssize_t diclen, afflen;
  267. self->handle = NULL;
  268. self->encoding = NULL;
  269. - if (!PyArg_ParseTuple(args, "s#s#", &dic, &diclen, &aff, &afflen)) return 1;
  270. + if (!PyArg_ParseTuple(args, "ss", &dic, &aff)) return 1;
  271. try {
  272. - self->handle = new (std::nothrow) Hunspell(aff, afflen, dic, diclen);
  273. + self->handle = new (std::nothrow) Hunspell(aff, dic);
  274. } catch (const std::exception &ex) {
  275. PyErr_SetString(HunspellError, ex.what());
  276. return 1;
  277. @@ -58,35 +57,33 @@ dealloc(Dictionary *self) {
  278. static PyObject *
  279. recognized(Dictionary *self, PyObject *args) {
  280. - char *word = NULL;
  281. - if (!PyArg_ParseTuple(args, "es", self->encoding, &word)) return NULL;
  282. + char *w = NULL;
  283. + if (!PyArg_ParseTuple(args, "es", self->encoding, &w)) return NULL;
  284. + std::string word(w);
  285. + PyMem_Free(w);
  286. - if (self->handle->spell(word) == 0) { PyMem_Free(word); Py_RETURN_FALSE;}
  287. - PyMem_Free(word);
  288. + if (!self->handle->spell(word)) { Py_RETURN_FALSE;}
  289. Py_RETURN_TRUE;
  290. }
  291. static PyObject *
  292. suggest(Dictionary *self, PyObject *args) {
  293. - char *word = NULL, **slist = NULL;
  294. - int i, num_slist;
  295. + char *w = NULL;
  296. PyObject *ans, *temp;
  297. - if (!PyArg_ParseTuple(args, "es", self->encoding, &word)) return NULL;
  298. + if (!PyArg_ParseTuple(args, "es", self->encoding, &w)) return NULL;
  299. + const std::string word(w);
  300. + PyMem_Free(w);
  301. - num_slist = self->handle->suggest(&slist, word);
  302. - ans = PyTuple_New(num_slist);
  303. + const std::vector<std::string>& word_list = self->handle->suggest(word);
  304. + ans = PyTuple_New(word_list.size());
  305. if (ans == NULL) PyErr_NoMemory();
  306. - else {
  307. - for (i = 0; i < num_slist; i++) {
  308. - temp = PyUnicode_Decode(slist[i], strlen(slist[i]), self->encoding, "strict");
  309. - if (temp == NULL) { Py_DECREF(ans); ans = NULL; break; }
  310. - PyTuple_SET_ITEM(ans, i, temp);
  311. - }
  312. + Py_ssize_t i = 0;
  313. + for(auto const& s: word_list) {
  314. + temp = PyUnicode_Decode(s.c_str(), s.size(), self->encoding, "strict");
  315. + if (temp == NULL) { Py_DECREF(ans); ans = NULL; break; }
  316. + PyTuple_SET_ITEM(ans, i++, temp);
  317. }
  318. -
  319. - if (slist != NULL) self->handle->free_list(&slist, num_slist);
  320. - PyMem_Free(word);
  321. return ans;
  322. }
  323. diff --git a/src/hunspell/Makefile.am b/src/hunspell/Makefile.am
  324. deleted file mode 100644
  325. index 642218ba05..0000000000
  326. --- a/src/hunspell/Makefile.am
  327. +++ /dev/null
  328. @@ -1,19 +0,0 @@
  329. -lib_LTLIBRARIES = libhunspell-1.3.la
  330. -libhunspell_1_3_includedir = $(includedir)/hunspell
  331. -libhunspell_1_3_la_SOURCES=affentry.cxx affixmgr.cxx csutil.cxx \
  332. - dictmgr.cxx hashmgr.cxx hunspell.cxx \
  333. - suggestmgr.cxx license.myspell license.hunspell \
  334. - phonet.cxx filemgr.cxx hunzip.cxx replist.cxx
  335. -
  336. -libhunspell_1_3_include_HEADERS=affentry.hxx htypes.hxx affixmgr.hxx \
  337. - csutil.hxx hunspell.hxx atypes.hxx dictmgr.hxx hunspell.h \
  338. - suggestmgr.hxx baseaffix.hxx hashmgr.hxx langnum.hxx \
  339. - phonet.hxx filemgr.hxx hunzip.hxx w_char.hxx replist.hxx \
  340. - hunvisapi.h
  341. -
  342. -libhunspell_1_3_la_DEPENDENCIES=utf_info.cxx
  343. -libhunspell_1_3_la_LDFLAGS=-no-undefined
  344. -
  345. -AM_CXXFLAGS=$(CFLAG_VISIBILITY) -DBUILDING_LIBHUNSPELL
  346. -
  347. -EXTRA_DIST=hunspell.dsp makefile.mk README utf_info.cxx
  348. diff --git a/src/hunspell/Makefile.in b/src/hunspell/Makefile.in
  349. deleted file mode 100644
  350. index 86b70c2ca6..0000000000
  351. --- a/src/hunspell/Makefile.in
  352. +++ /dev/null
  353. @@ -1,661 +0,0 @@
  354. -# Makefile.in generated by automake 1.11.3 from Makefile.am.
  355. -# @configure_input@
  356. -
  357. -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
  358. -# 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software
  359. -# Foundation, Inc.
  360. -# This Makefile.in is free software; the Free Software Foundation
  361. -# gives unlimited permission to copy and/or distribute it,
  362. -# with or without modifications, as long as this notice is preserved.
  363. -
  364. -# This program is distributed in the hope that it will be useful,
  365. -# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
  366. -# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
  367. -# PARTICULAR PURPOSE.
  368. -
  369. -@SET_MAKE@
  370. -
  371. -
  372. -VPATH = @srcdir@
  373. -pkgdatadir = $(datadir)/@PACKAGE@
  374. -pkgincludedir = $(includedir)/@PACKAGE@
  375. -pkglibdir = $(libdir)/@PACKAGE@
  376. -pkglibexecdir = $(libexecdir)/@PACKAGE@
  377. -am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
  378. -install_sh_DATA = $(install_sh) -c -m 644
  379. -install_sh_PROGRAM = $(install_sh) -c
  380. -install_sh_SCRIPT = $(install_sh) -c
  381. -INSTALL_HEADER = $(INSTALL_DATA)
  382. -transform = $(program_transform_name)
  383. -NORMAL_INSTALL = :
  384. -PRE_INSTALL = :
  385. -POST_INSTALL = :
  386. -NORMAL_UNINSTALL = :
  387. -PRE_UNINSTALL = :
  388. -POST_UNINSTALL = :
  389. -build_triplet = @build@
  390. -host_triplet = @host@
  391. -target_triplet = @target@
  392. -subdir = src/hunspell
  393. -DIST_COMMON = README $(libhunspell_1_3_include_HEADERS) \
  394. - $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
  395. - $(srcdir)/hunvisapi.h.in
  396. -ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
  397. -am__aclocal_m4_deps = $(top_srcdir)/m4/codeset.m4 \
  398. - $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc2.m4 \
  399. - $(top_srcdir)/m4/glibc21.m4 $(top_srcdir)/m4/iconv.m4 \
  400. - $(top_srcdir)/m4/intdiv0.m4 $(top_srcdir)/m4/intl.m4 \
  401. - $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax.m4 \
  402. - $(top_srcdir)/m4/inttypes-pri.m4 \
  403. - $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/lcmessage.m4 \
  404. - $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
  405. - $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/libtool.m4 \
  406. - $(top_srcdir)/m4/lock.m4 $(top_srcdir)/m4/longlong.m4 \
  407. - $(top_srcdir)/m4/ltoptions.m4 $(top_srcdir)/m4/ltsugar.m4 \
  408. - $(top_srcdir)/m4/ltversion.m4 $(top_srcdir)/m4/lt~obsolete.m4 \
  409. - $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
  410. - $(top_srcdir)/m4/printf-posix.m4 $(top_srcdir)/m4/progtest.m4 \
  411. - $(top_srcdir)/m4/size_max.m4 $(top_srcdir)/m4/stdint_h.m4 \
  412. - $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/visibility.m4 \
  413. - $(top_srcdir)/m4/wchar_t.m4 $(top_srcdir)/m4/wint_t.m4 \
  414. - $(top_srcdir)/m4/xsize.m4 $(top_srcdir)/configure.ac
  415. -am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
  416. - $(ACLOCAL_M4)
  417. -mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
  418. -CONFIG_HEADER = $(top_builddir)/config.h
  419. -CONFIG_CLEAN_FILES = hunvisapi.h
  420. -CONFIG_CLEAN_VPATH_FILES =
  421. -am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
  422. -am__vpath_adj = case $$p in \
  423. - $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
  424. - *) f=$$p;; \
  425. - esac;
  426. -am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
  427. -am__install_max = 40
  428. -am__nobase_strip_setup = \
  429. - srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
  430. -am__nobase_strip = \
  431. - for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
  432. -am__nobase_list = $(am__nobase_strip_setup); \
  433. - for p in $$list; do echo "$$p $$p"; done | \
  434. - sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
  435. - $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
  436. - if (++n[$$2] == $(am__install_max)) \
  437. - { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
  438. - END { for (dir in files) print dir, files[dir] }'
  439. -am__base_list = \
  440. - sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
  441. - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
  442. -am__uninstall_files_from_dir = { \
  443. - test -z "$$files" \
  444. - || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
  445. - || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
  446. - $(am__cd) "$$dir" && rm -f $$files; }; \
  447. - }
  448. -am__installdirs = "$(DESTDIR)$(libdir)" \
  449. - "$(DESTDIR)$(libhunspell_1_3_includedir)"
  450. -LTLIBRARIES = $(lib_LTLIBRARIES)
  451. -libhunspell_1_3_la_LIBADD =
  452. -am_libhunspell_1_3_la_OBJECTS = affentry.lo affixmgr.lo csutil.lo \
  453. - dictmgr.lo hashmgr.lo hunspell.lo suggestmgr.lo phonet.lo \
  454. - filemgr.lo hunzip.lo replist.lo
  455. -libhunspell_1_3_la_OBJECTS = $(am_libhunspell_1_3_la_OBJECTS)
  456. -libhunspell_1_3_la_LINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) \
  457. - $(LIBTOOLFLAGS) --mode=link $(CXXLD) $(AM_CXXFLAGS) \
  458. - $(CXXFLAGS) $(libhunspell_1_3_la_LDFLAGS) $(LDFLAGS) -o $@
  459. -DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)
  460. -depcomp = $(SHELL) $(top_srcdir)/depcomp
  461. -am__depfiles_maybe = depfiles
  462. -am__mv = mv -f
  463. -CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
  464. - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
  465. -LTCXXCOMPILE = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
  466. - --mode=compile $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
  467. - $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS)
  468. -CXXLD = $(CXX)
  469. -CXXLINK = $(LIBTOOL) --tag=CXX $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
  470. - --mode=link $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) \
  471. - $(LDFLAGS) -o $@
  472. -SOURCES = $(libhunspell_1_3_la_SOURCES)
  473. -DIST_SOURCES = $(libhunspell_1_3_la_SOURCES)
  474. -HEADERS = $(libhunspell_1_3_include_HEADERS)
  475. -ETAGS = etags
  476. -CTAGS = ctags
  477. -DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
  478. -ACLOCAL = @ACLOCAL@
  479. -ALLOCA = @ALLOCA@
  480. -AMTAR = @AMTAR@
  481. -AR = @AR@
  482. -AS = @AS@
  483. -AUTOCONF = @AUTOCONF@
  484. -AUTOHEADER = @AUTOHEADER@
  485. -AUTOMAKE = @AUTOMAKE@
  486. -AWK = @AWK@
  487. -BUILD_INCLUDED_LIBINTL = @BUILD_INCLUDED_LIBINTL@
  488. -CATOBJEXT = @CATOBJEXT@
  489. -CC = @CC@
  490. -CCDEPMODE = @CCDEPMODE@
  491. -CFLAGS = @CFLAGS@
  492. -CFLAG_VISIBILITY = @CFLAG_VISIBILITY@
  493. -CPP = @CPP@
  494. -CPPFLAGS = @CPPFLAGS@
  495. -CURSESLIB = @CURSESLIB@
  496. -CXX = @CXX@
  497. -CXXCPP = @CXXCPP@
  498. -CXXDEPMODE = @CXXDEPMODE@
  499. -CXXFLAGS = @CXXFLAGS@
  500. -CYGPATH_W = @CYGPATH_W@
  501. -DATADIRNAME = @DATADIRNAME@
  502. -DEFS = @DEFS@
  503. -DEPDIR = @DEPDIR@
  504. -DLLTOOL = @DLLTOOL@
  505. -DSYMUTIL = @DSYMUTIL@
  506. -DUMPBIN = @DUMPBIN@
  507. -ECHO_C = @ECHO_C@
  508. -ECHO_N = @ECHO_N@
  509. -ECHO_T = @ECHO_T@
  510. -EGREP = @EGREP@
  511. -EXEEXT = @EXEEXT@
  512. -FGREP = @FGREP@
  513. -GENCAT = @GENCAT@
  514. -GETTEXT_MACRO_VERSION = @GETTEXT_MACRO_VERSION@
  515. -GLIBC2 = @GLIBC2@
  516. -GLIBC21 = @GLIBC21@
  517. -GMSGFMT = @GMSGFMT@
  518. -GMSGFMT_015 = @GMSGFMT_015@
  519. -GREP = @GREP@
  520. -HAVE_ASPRINTF = @HAVE_ASPRINTF@
  521. -HAVE_POSIX_PRINTF = @HAVE_POSIX_PRINTF@
  522. -HAVE_SNPRINTF = @HAVE_SNPRINTF@
  523. -HAVE_VISIBILITY = @HAVE_VISIBILITY@
  524. -HAVE_WPRINTF = @HAVE_WPRINTF@
  525. -HUNSPELL_VERSION_MAJOR = @HUNSPELL_VERSION_MAJOR@
  526. -HUNSPELL_VERSION_MINOR = @HUNSPELL_VERSION_MINOR@
  527. -INSTALL = @INSTALL@
  528. -INSTALL_DATA = @INSTALL_DATA@
  529. -INSTALL_PROGRAM = @INSTALL_PROGRAM@
  530. -INSTALL_SCRIPT = @INSTALL_SCRIPT@
  531. -INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
  532. -INSTOBJEXT = @INSTOBJEXT@
  533. -INTLBISON = @INTLBISON@
  534. -INTLLIBS = @INTLLIBS@
  535. -INTLOBJS = @INTLOBJS@
  536. -INTL_LIBTOOL_SUFFIX_PREFIX = @INTL_LIBTOOL_SUFFIX_PREFIX@
  537. -INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
  538. -LD = @LD@
  539. -LDFLAGS = @LDFLAGS@
  540. -LIBICONV = @LIBICONV@
  541. -LIBINTL = @LIBINTL@
  542. -LIBMULTITHREAD = @LIBMULTITHREAD@
  543. -LIBOBJS = @LIBOBJS@
  544. -LIBPTH = @LIBPTH@
  545. -LIBPTH_PREFIX = @LIBPTH_PREFIX@
  546. -LIBS = @LIBS@
  547. -LIBTHREAD = @LIBTHREAD@
  548. -LIBTOOL = @LIBTOOL@
  549. -LIPO = @LIPO@
  550. -LN_S = @LN_S@
  551. -LTLIBC = @LTLIBC@
  552. -LTLIBICONV = @LTLIBICONV@
  553. -LTLIBINTL = @LTLIBINTL@
  554. -LTLIBMULTITHREAD = @LTLIBMULTITHREAD@
  555. -LTLIBOBJS = @LTLIBOBJS@
  556. -LTLIBPTH = @LTLIBPTH@
  557. -LTLIBTHREAD = @LTLIBTHREAD@
  558. -MAKEINFO = @MAKEINFO@
  559. -MKDIR_P = @MKDIR_P@
  560. -MSGFMT = @MSGFMT@
  561. -MSGFMT_015 = @MSGFMT_015@
  562. -MSGMERGE = @MSGMERGE@
  563. -NM = @NM@
  564. -NMEDIT = @NMEDIT@
  565. -OBJDUMP = @OBJDUMP@
  566. -OBJEXT = @OBJEXT@
  567. -OTOOL = @OTOOL@
  568. -OTOOL64 = @OTOOL64@
  569. -PACKAGE = @PACKAGE@
  570. -PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
  571. -PACKAGE_NAME = @PACKAGE_NAME@
  572. -PACKAGE_STRING = @PACKAGE_STRING@
  573. -PACKAGE_TARNAME = @PACKAGE_TARNAME@
  574. -PACKAGE_URL = @PACKAGE_URL@
  575. -PACKAGE_VERSION = @PACKAGE_VERSION@
  576. -PATH_SEPARATOR = @PATH_SEPARATOR@
  577. -POSUB = @POSUB@
  578. -PRI_MACROS_BROKEN = @PRI_MACROS_BROKEN@
  579. -RANLIB = @RANLIB@
  580. -READLINELIB = @READLINELIB@
  581. -SED = @SED@
  582. -SET_MAKE = @SET_MAKE@
  583. -SHELL = @SHELL@
  584. -STRIP = @STRIP@
  585. -USE_INCLUDED_LIBINTL = @USE_INCLUDED_LIBINTL@
  586. -USE_NLS = @USE_NLS@
  587. -VERSION = @VERSION@
  588. -WINDRES = @WINDRES@
  589. -WOE32 = @WOE32@
  590. -WOE32DLL = @WOE32DLL@
  591. -XFAILED = @XFAILED@
  592. -XGETTEXT = @XGETTEXT@
  593. -XGETTEXT_015 = @XGETTEXT_015@
  594. -XGETTEXT_EXTRA_OPTIONS = @XGETTEXT_EXTRA_OPTIONS@
  595. -abs_builddir = @abs_builddir@
  596. -abs_srcdir = @abs_srcdir@
  597. -abs_top_builddir = @abs_top_builddir@
  598. -abs_top_srcdir = @abs_top_srcdir@
  599. -ac_ct_CC = @ac_ct_CC@
  600. -ac_ct_CXX = @ac_ct_CXX@
  601. -ac_ct_DUMPBIN = @ac_ct_DUMPBIN@
  602. -am__include = @am__include@
  603. -am__leading_dot = @am__leading_dot@
  604. -am__quote = @am__quote@
  605. -am__tar = @am__tar@
  606. -am__untar = @am__untar@
  607. -bindir = @bindir@
  608. -build = @build@
  609. -build_alias = @build_alias@
  610. -build_cpu = @build_cpu@
  611. -build_os = @build_os@
  612. -build_vendor = @build_vendor@
  613. -builddir = @builddir@
  614. -datadir = @datadir@
  615. -datarootdir = @datarootdir@
  616. -docdir = @docdir@
  617. -dvidir = @dvidir@
  618. -exec_prefix = @exec_prefix@
  619. -host = @host@
  620. -host_alias = @host_alias@
  621. -host_cpu = @host_cpu@
  622. -host_os = @host_os@
  623. -host_vendor = @host_vendor@
  624. -htmldir = @htmldir@
  625. -includedir = @includedir@
  626. -infodir = @infodir@
  627. -install_sh = @install_sh@
  628. -libdir = @libdir@
  629. -libexecdir = @libexecdir@
  630. -localedir = @localedir@
  631. -localstatedir = @localstatedir@
  632. -lt_ECHO = @lt_ECHO@
  633. -mandir = @mandir@
  634. -mkdir_p = @mkdir_p@
  635. -oldincludedir = @oldincludedir@
  636. -pdfdir = @pdfdir@
  637. -prefix = @prefix@
  638. -program_transform_name = @program_transform_name@
  639. -psdir = @psdir@
  640. -sbindir = @sbindir@
  641. -sharedstatedir = @sharedstatedir@
  642. -srcdir = @srcdir@
  643. -sysconfdir = @sysconfdir@
  644. -target = @target@
  645. -target_alias = @target_alias@
  646. -target_cpu = @target_cpu@
  647. -target_os = @target_os@
  648. -target_vendor = @target_vendor@
  649. -top_build_prefix = @top_build_prefix@
  650. -top_builddir = @top_builddir@
  651. -top_srcdir = @top_srcdir@
  652. -lib_LTLIBRARIES = libhunspell-1.3.la
  653. -libhunspell_1_3_includedir = $(includedir)/hunspell
  654. -libhunspell_1_3_la_SOURCES = affentry.cxx affixmgr.cxx csutil.cxx \
  655. - dictmgr.cxx hashmgr.cxx hunspell.cxx \
  656. - suggestmgr.cxx license.myspell license.hunspell \
  657. - phonet.cxx filemgr.cxx hunzip.cxx replist.cxx
  658. -
  659. -libhunspell_1_3_include_HEADERS = affentry.hxx htypes.hxx affixmgr.hxx \
  660. - csutil.hxx hunspell.hxx atypes.hxx dictmgr.hxx hunspell.h \
  661. - suggestmgr.hxx baseaffix.hxx hashmgr.hxx langnum.hxx \
  662. - phonet.hxx filemgr.hxx hunzip.hxx w_char.hxx replist.hxx \
  663. - hunvisapi.h
  664. -
  665. -libhunspell_1_3_la_DEPENDENCIES = utf_info.cxx
  666. -libhunspell_1_3_la_LDFLAGS = -no-undefined
  667. -AM_CXXFLAGS = $(CFLAG_VISIBILITY) -DBUILDING_LIBHUNSPELL
  668. -EXTRA_DIST = hunspell.dsp makefile.mk README utf_info.cxx
  669. -all: all-am
  670. -
  671. -.SUFFIXES:
  672. -.SUFFIXES: .cxx .lo .o .obj
  673. -$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps)
  674. - @for dep in $?; do \
  675. - case '$(am__configure_deps)' in \
  676. - *$$dep*) \
  677. - ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \
  678. - && { if test -f $@; then exit 0; else break; fi; }; \
  679. - exit 1;; \
  680. - esac; \
  681. - done; \
  682. - echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/hunspell/Makefile'; \
  683. - $(am__cd) $(top_srcdir) && \
  684. - $(AUTOMAKE) --gnu src/hunspell/Makefile
  685. -.PRECIOUS: Makefile
  686. -Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
  687. - @case '$?' in \
  688. - *config.status*) \
  689. - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
  690. - *) \
  691. - echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
  692. - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
  693. - esac;
  694. -
  695. -$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
  696. - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
  697. -
  698. -$(top_srcdir)/configure: $(am__configure_deps)
  699. - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
  700. -$(ACLOCAL_M4): $(am__aclocal_m4_deps)
  701. - cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
  702. -$(am__aclocal_m4_deps):
  703. -hunvisapi.h: $(top_builddir)/config.status $(srcdir)/hunvisapi.h.in
  704. - cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
  705. -install-libLTLIBRARIES: $(lib_LTLIBRARIES)
  706. - @$(NORMAL_INSTALL)
  707. - test -z "$(libdir)" || $(MKDIR_P) "$(DESTDIR)$(libdir)"
  708. - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
  709. - list2=; for p in $$list; do \
  710. - if test -f $$p; then \
  711. - list2="$$list2 $$p"; \
  712. - else :; fi; \
  713. - done; \
  714. - test -z "$$list2" || { \
  715. - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(libdir)'"; \
  716. - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(libdir)"; \
  717. - }
  718. -
  719. -uninstall-libLTLIBRARIES:
  720. - @$(NORMAL_UNINSTALL)
  721. - @list='$(lib_LTLIBRARIES)'; test -n "$(libdir)" || list=; \
  722. - for p in $$list; do \
  723. - $(am__strip_dir) \
  724. - echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(libdir)/$$f'"; \
  725. - $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(libdir)/$$f"; \
  726. - done
  727. -
  728. -clean-libLTLIBRARIES:
  729. - -test -z "$(lib_LTLIBRARIES)" || rm -f $(lib_LTLIBRARIES)
  730. - @list='$(lib_LTLIBRARIES)'; for p in $$list; do \
  731. - dir="`echo $$p | sed -e 's|/[^/]*$$||'`"; \
  732. - test "$$dir" != "$$p" || dir=.; \
  733. - echo "rm -f \"$${dir}/so_locations\""; \
  734. - rm -f "$${dir}/so_locations"; \
  735. - done
  736. -libhunspell-1.3.la: $(libhunspell_1_3_la_OBJECTS) $(libhunspell_1_3_la_DEPENDENCIES) $(EXTRA_libhunspell_1_3_la_DEPENDENCIES)
  737. - $(libhunspell_1_3_la_LINK) -rpath $(libdir) $(libhunspell_1_3_la_OBJECTS) $(libhunspell_1_3_la_LIBADD) $(LIBS)
  738. -
  739. -mostlyclean-compile:
  740. - -rm -f *.$(OBJEXT)
  741. -
  742. -distclean-compile:
  743. - -rm -f *.tab.c
  744. -
  745. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/affentry.Plo@am__quote@
  746. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/affixmgr.Plo@am__quote@
  747. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/csutil.Plo@am__quote@
  748. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/dictmgr.Plo@am__quote@
  749. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/filemgr.Plo@am__quote@
  750. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hashmgr.Plo@am__quote@
  751. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hunspell.Plo@am__quote@
  752. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hunzip.Plo@am__quote@
  753. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/phonet.Plo@am__quote@
  754. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/replist.Plo@am__quote@
  755. -@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/suggestmgr.Plo@am__quote@
  756. -
  757. -.cxx.o:
  758. -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
  759. -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
  760. -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
  761. -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
  762. -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $<
  763. -
  764. -.cxx.obj:
  765. -@am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
  766. -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
  767. -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
  768. -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
  769. -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
  770. -
  771. -.cxx.lo:
  772. -@am__fastdepCXX_TRUE@ $(LTCXXCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
  773. -@am__fastdepCXX_TRUE@ $(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
  774. -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
  775. -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@
  776. -@am__fastdepCXX_FALSE@ $(LTCXXCOMPILE) -c -o $@ $<
  777. -
  778. -mostlyclean-libtool:
  779. - -rm -f *.lo
  780. -
  781. -clean-libtool:
  782. - -rm -rf .libs _libs
  783. -install-libhunspell_1_3_includeHEADERS: $(libhunspell_1_3_include_HEADERS)
  784. - @$(NORMAL_INSTALL)
  785. - test -z "$(libhunspell_1_3_includedir)" || $(MKDIR_P) "$(DESTDIR)$(libhunspell_1_3_includedir)"
  786. - @list='$(libhunspell_1_3_include_HEADERS)'; test -n "$(libhunspell_1_3_includedir)" || list=; \
  787. - for p in $$list; do \
  788. - if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
  789. - echo "$$d$$p"; \
  790. - done | $(am__base_list) | \
  791. - while read files; do \
  792. - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(libhunspell_1_3_includedir)'"; \
  793. - $(INSTALL_HEADER) $$files "$(DESTDIR)$(libhunspell_1_3_includedir)" || exit $$?; \
  794. - done
  795. -
  796. -uninstall-libhunspell_1_3_includeHEADERS:
  797. - @$(NORMAL_UNINSTALL)
  798. - @list='$(libhunspell_1_3_include_HEADERS)'; test -n "$(libhunspell_1_3_includedir)" || list=; \
  799. - files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
  800. - dir='$(DESTDIR)$(libhunspell_1_3_includedir)'; $(am__uninstall_files_from_dir)
  801. -
  802. -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
  803. - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
  804. - unique=`for i in $$list; do \
  805. - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
  806. - done | \
  807. - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
  808. - END { if (nonempty) { for (i in files) print i; }; }'`; \
  809. - mkid -fID $$unique
  810. -tags: TAGS
  811. -
  812. -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
  813. - $(TAGS_FILES) $(LISP)
  814. - set x; \
  815. - here=`pwd`; \
  816. - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
  817. - unique=`for i in $$list; do \
  818. - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
  819. - done | \
  820. - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
  821. - END { if (nonempty) { for (i in files) print i; }; }'`; \
  822. - shift; \
  823. - if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
  824. - test -n "$$unique" || unique=$$empty_fix; \
  825. - if test $$# -gt 0; then \
  826. - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
  827. - "$$@" $$unique; \
  828. - else \
  829. - $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
  830. - $$unique; \
  831. - fi; \
  832. - fi
  833. -ctags: CTAGS
  834. -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
  835. - $(TAGS_FILES) $(LISP)
  836. - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
  837. - unique=`for i in $$list; do \
  838. - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
  839. - done | \
  840. - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
  841. - END { if (nonempty) { for (i in files) print i; }; }'`; \
  842. - test -z "$(CTAGS_ARGS)$$unique" \
  843. - || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
  844. - $$unique
  845. -
  846. -GTAGS:
  847. - here=`$(am__cd) $(top_builddir) && pwd` \
  848. - && $(am__cd) $(top_srcdir) \
  849. - && gtags -i $(GTAGS_ARGS) "$$here"
  850. -
  851. -distclean-tags:
  852. - -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
  853. -
  854. -distdir: $(DISTFILES)
  855. - @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
  856. - topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
  857. - list='$(DISTFILES)'; \
  858. - dist_files=`for file in $$list; do echo $$file; done | \
  859. - sed -e "s|^$$srcdirstrip/||;t" \
  860. - -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
  861. - case $$dist_files in \
  862. - */*) $(MKDIR_P) `echo "$$dist_files" | \
  863. - sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
  864. - sort -u` ;; \
  865. - esac; \
  866. - for file in $$dist_files; do \
  867. - if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
  868. - if test -d $$d/$$file; then \
  869. - dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
  870. - if test -d "$(distdir)/$$file"; then \
  871. - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
  872. - fi; \
  873. - if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
  874. - cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \
  875. - find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \
  876. - fi; \
  877. - cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \
  878. - else \
  879. - test -f "$(distdir)/$$file" \
  880. - || cp -p $$d/$$file "$(distdir)/$$file" \
  881. - || exit 1; \
  882. - fi; \
  883. - done
  884. -check-am: all-am
  885. -check: check-am
  886. -all-am: Makefile $(LTLIBRARIES) $(HEADERS)
  887. -installdirs:
  888. - for dir in "$(DESTDIR)$(libdir)" "$(DESTDIR)$(libhunspell_1_3_includedir)"; do \
  889. - test -z "$$dir" || $(MKDIR_P) "$$dir"; \
  890. - done
  891. -install: install-am
  892. -install-exec: install-exec-am
  893. -install-data: install-data-am
  894. -uninstall: uninstall-am
  895. -
  896. -install-am: all-am
  897. - @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
  898. -
  899. -installcheck: installcheck-am
  900. -install-strip:
  901. - if test -z '$(STRIP)'; then \
  902. - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
  903. - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
  904. - install; \
  905. - else \
  906. - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
  907. - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
  908. - "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
  909. - fi
  910. -mostlyclean-generic:
  911. -
  912. -clean-generic:
  913. -
  914. -distclean-generic:
  915. - -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
  916. - -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES)
  917. -
  918. -maintainer-clean-generic:
  919. - @echo "This command is intended for maintainers to use"
  920. - @echo "it deletes files that may require special tools to rebuild."
  921. -clean: clean-am
  922. -
  923. -clean-am: clean-generic clean-libLTLIBRARIES clean-libtool \
  924. - mostlyclean-am
  925. -
  926. -distclean: distclean-am
  927. - -rm -rf ./$(DEPDIR)
  928. - -rm -f Makefile
  929. -distclean-am: clean-am distclean-compile distclean-generic \
  930. - distclean-tags
  931. -
  932. -dvi: dvi-am
  933. -
  934. -dvi-am:
  935. -
  936. -html: html-am
  937. -
  938. -html-am:
  939. -
  940. -info: info-am
  941. -
  942. -info-am:
  943. -
  944. -install-data-am: install-libhunspell_1_3_includeHEADERS
  945. -
  946. -install-dvi: install-dvi-am
  947. -
  948. -install-dvi-am:
  949. -
  950. -install-exec-am: install-libLTLIBRARIES
  951. -
  952. -install-html: install-html-am
  953. -
  954. -install-html-am:
  955. -
  956. -install-info: install-info-am
  957. -
  958. -install-info-am:
  959. -
  960. -install-man:
  961. -
  962. -install-pdf: install-pdf-am
  963. -
  964. -install-pdf-am:
  965. -
  966. -install-ps: install-ps-am
  967. -
  968. -install-ps-am:
  969. -
  970. -installcheck-am:
  971. -
  972. -maintainer-clean: maintainer-clean-am
  973. - -rm -rf ./$(DEPDIR)
  974. - -rm -f Makefile
  975. -maintainer-clean-am: distclean-am maintainer-clean-generic
  976. -
  977. -mostlyclean: mostlyclean-am
  978. -
  979. -mostlyclean-am: mostlyclean-compile mostlyclean-generic \
  980. - mostlyclean-libtool
  981. -
  982. -pdf: pdf-am
  983. -
  984. -pdf-am:
  985. -
  986. -ps: ps-am
  987. -
  988. -ps-am:
  989. -
  990. -uninstall-am: uninstall-libLTLIBRARIES \
  991. - uninstall-libhunspell_1_3_includeHEADERS
  992. -
  993. -.MAKE: install-am install-strip
  994. -
  995. -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-generic \
  996. - clean-libLTLIBRARIES clean-libtool ctags distclean \
  997. - distclean-compile distclean-generic distclean-libtool \
  998. - distclean-tags distdir dvi dvi-am html html-am info info-am \
  999. - install install-am install-data install-data-am install-dvi \
  1000. - install-dvi-am install-exec install-exec-am install-html \
  1001. - install-html-am install-info install-info-am \
  1002. - install-libLTLIBRARIES install-libhunspell_1_3_includeHEADERS \
  1003. - install-man install-pdf install-pdf-am install-ps \
  1004. - install-ps-am install-strip installcheck installcheck-am \
  1005. - installdirs maintainer-clean maintainer-clean-generic \
  1006. - mostlyclean mostlyclean-compile mostlyclean-generic \
  1007. - mostlyclean-libtool pdf pdf-am ps ps-am tags uninstall \
  1008. - uninstall-am uninstall-libLTLIBRARIES \
  1009. - uninstall-libhunspell_1_3_includeHEADERS
  1010. -
  1011. -
  1012. -# Tell versions [3.59,3.63) of GNU make to not export all variables.
  1013. -# Otherwise a system limit (for SysV at least) may be exceeded.
  1014. -.NOEXPORT:
  1015. diff --git a/src/hunspell/README b/src/hunspell/README
  1016. deleted file mode 100644
  1017. index b452096282..0000000000
  1018. --- a/src/hunspell/README
  1019. +++ /dev/null
  1020. @@ -1,21 +0,0 @@
  1021. -Hunspell spell checker and morphological analyser library
  1022. -
  1023. -Documentation, tests, examples: http://hunspell.sourceforge.net
  1024. -
  1025. -Author of Hunspell:
  1026. -László Németh (nemethl (at) gyorsposta.hu)
  1027. -
  1028. -Hunspell based on OpenOffice.org's Myspell. MySpell's author:
  1029. -Kevin Hendricks (kevin.hendricks (at) sympatico.ca)
  1030. -
  1031. -License: GPL 2.0/LGPL 2.1/MPL 1.1 tri-license
  1032. -
  1033. -The contents of this library may be used under the terms of
  1034. -the GNU General Public License Version 2 or later (the "GPL"), or
  1035. -the GNU Lesser General Public License Version 2.1 or later (the "LGPL",
  1036. -see http://gnu.org/copyleft/lesser.html) or the Mozilla Public License
  1037. -Version 1.1 or later (the "MPL", see http://mozilla.org/MPL/MPL-1.1.html).
  1038. -
  1039. -Software distributed under these licenses is distributed on an "AS IS" basis,
  1040. -WITHOUT WARRANTY OF ANY KIND, either express or implied. See the licences
  1041. -for the specific language governing rights and limitations under the licenses.
  1042. diff --git a/src/hunspell/affentry.cxx b/src/hunspell/affentry.cxx
  1043. deleted file mode 100644
  1044. index 45c9ef58e2..0000000000
  1045. --- a/src/hunspell/affentry.cxx
  1046. +++ /dev/null
  1047. @@ -1,1003 +0,0 @@
  1048. -#include "license.hunspell"
  1049. -#include "license.myspell"
  1050. -
  1051. -#include <stdlib.h>
  1052. -#include <string.h>
  1053. -#include <stdio.h>
  1054. -#include <ctype.h>
  1055. -
  1056. -#include "affentry.hxx"
  1057. -#include "csutil.hxx"
  1058. -
  1059. -#define MAXTEMPWORDLEN (MAXWORDUTF8LEN + 4)
  1060. -
  1061. -PfxEntry::PfxEntry(AffixMgr* pmgr, affentry* dp)
  1062. - // register affix manager
  1063. - : pmyMgr(pmgr)
  1064. - , next(NULL)
  1065. - , nexteq(NULL)
  1066. - , nextne(NULL)
  1067. - , flgnxt(NULL)
  1068. -{
  1069. - // set up its initial values
  1070. - aflag = dp->aflag; // flag
  1071. - strip = dp->strip; // string to strip
  1072. - appnd = dp->appnd; // string to append
  1073. - stripl = dp->stripl; // length of strip string
  1074. - appndl = dp->appndl; // length of append string
  1075. - numconds = dp->numconds; // length of the condition
  1076. - opts = dp->opts; // cross product flag
  1077. - // then copy over all of the conditions
  1078. - if (opts & aeLONGCOND) {
  1079. - memcpy(c.conds, dp->c.l.conds1, MAXCONDLEN_1);
  1080. - c.l.conds2 = dp->c.l.conds2;
  1081. - } else memcpy(c.conds, dp->c.conds, MAXCONDLEN);
  1082. - morphcode = dp->morphcode;
  1083. - contclass = dp->contclass;
  1084. - contclasslen = dp->contclasslen;
  1085. -}
  1086. -
  1087. -
  1088. -PfxEntry::~PfxEntry()
  1089. -{
  1090. - aflag = 0;
  1091. - if (appnd) free(appnd);
  1092. - if (strip) free(strip);
  1093. - pmyMgr = NULL;
  1094. - appnd = NULL;
  1095. - strip = NULL;
  1096. - if (opts & aeLONGCOND) free(c.l.conds2);
  1097. - if (morphcode && !(opts & aeALIASM)) free(morphcode);
  1098. - if (contclass && !(opts & aeALIASF)) free(contclass);
  1099. -}
  1100. -
  1101. -// add prefix to this word assuming conditions hold
  1102. -char * PfxEntry::add(const char * word, int len)
  1103. -{
  1104. - char tword[MAXTEMPWORDLEN];
  1105. -
  1106. - if ((len > stripl || (len == 0 && pmyMgr->get_fullstrip())) &&
  1107. - (len >= numconds) && test_condition(word) &&
  1108. - (!stripl || (strncmp(word, strip, stripl) == 0)) &&
  1109. - ((MAXTEMPWORDLEN) > (len + appndl - stripl))) {
  1110. - /* we have a match so add prefix */
  1111. - char * pp = tword;
  1112. - if (appndl) {
  1113. - strncpy(tword, appnd, MAXTEMPWORDLEN-1);
  1114. - tword[MAXTEMPWORDLEN-1] = '\0';
  1115. - pp += appndl;
  1116. - }
  1117. - strcpy(pp, (word + stripl));
  1118. - return mystrdup(tword);
  1119. - }
  1120. - return NULL;
  1121. -}
  1122. -
  1123. -inline char * PfxEntry::nextchar(char * p) {
  1124. - if (p) {
  1125. - p++;
  1126. - if (opts & aeLONGCOND) {
  1127. - // jump to the 2nd part of the condition
  1128. - if (p == c.conds + MAXCONDLEN_1) return c.l.conds2;
  1129. - // end of the MAXCONDLEN length condition
  1130. - } else if (p == c.conds + MAXCONDLEN) return NULL;
  1131. - return *p ? p : NULL;
  1132. - }
  1133. - return NULL;
  1134. -}
  1135. -
  1136. -inline int PfxEntry::test_condition(const char * st)
  1137. -{
  1138. - const char * pos = NULL; // group with pos input position
  1139. - bool neg = false; // complementer
  1140. - bool ingroup = false; // character in the group
  1141. - if (numconds == 0) return 1;
  1142. - char * p = c.conds;
  1143. - while (1) {
  1144. - switch (*p) {
  1145. - case '\0': return 1;
  1146. - case '[': {
  1147. - neg = false;
  1148. - ingroup = false;
  1149. - p = nextchar(p);
  1150. - pos = st; break;
  1151. - }
  1152. - case '^': { p = nextchar(p); neg = true; break; }
  1153. - case ']': {
  1154. - if ((neg && ingroup) || (!neg && !ingroup)) return 0;
  1155. - pos = NULL;
  1156. - p = nextchar(p);
  1157. - // skip the next character
  1158. - if (!ingroup && *st) for (st++; (opts & aeUTF8) && (*st & 0xc0) == 0x80; st++);
  1159. - if (*st == '\0' && p) return 0; // word <= condition
  1160. - break;
  1161. - }
  1162. - case '.':
  1163. - if (!pos) { // dots are not metacharacters in groups: [.]
  1164. - p = nextchar(p);
  1165. - // skip the next character
  1166. - for (st++; (opts & aeUTF8) && (*st & 0xc0) == 0x80; st++);
  1167. - if (*st == '\0' && p) return 0; // word <= condition
  1168. - break;
  1169. - }
  1170. - /* FALLTHROUGH */
  1171. - default: {
  1172. - if (*st == *p) {
  1173. - st++;
  1174. - p = nextchar(p);
  1175. - if ((opts & aeUTF8) && (*(st - 1) & 0x80)) { // multibyte
  1176. - while (p && (*p & 0xc0) == 0x80) { // character
  1177. - if (*p != *st) {
  1178. - if (!pos) return 0;
  1179. - st = pos;
  1180. - break;
  1181. - }
  1182. - p = nextchar(p);
  1183. - st++;
  1184. - }
  1185. - if (pos && st != pos) {
  1186. - ingroup = true;
  1187. - while (p && *p != ']' && ((p = nextchar(p)) != NULL));
  1188. - }
  1189. - } else if (pos) {
  1190. - ingroup = true;
  1191. - while (p && *p != ']' && ((p = nextchar(p)) != NULL));
  1192. - }
  1193. - } else if (pos) { // group
  1194. - p = nextchar(p);
  1195. - } else return 0;
  1196. - }
  1197. - }
  1198. - if (!p) return 1;
  1199. - }
  1200. -}
  1201. -
  1202. -// check if this prefix entry matches
  1203. -struct hentry * PfxEntry::checkword(const char * word, int len, char in_compound, const FLAG needflag)
  1204. -{
  1205. - int tmpl; // length of tmpword
  1206. - struct hentry * he; // hash entry of root word or NULL
  1207. - char tmpword[MAXTEMPWORDLEN];
  1208. -
  1209. - // on entry prefix is 0 length or already matches the beginning of the word.
  1210. - // So if the remaining root word has positive length
  1211. - // and if there are enough chars in root word and added back strip chars
  1212. - // to meet the number of characters conditions, then test it
  1213. -
  1214. - tmpl = len - appndl;
  1215. -
  1216. - if (tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) {
  1217. -
  1218. - // generate new root word by removing prefix and adding
  1219. - // back any characters that would have been stripped
  1220. -
  1221. - if (stripl) {
  1222. - strncpy(tmpword, strip, MAXTEMPWORDLEN-1);
  1223. - tmpword[MAXTEMPWORDLEN-1] = '\0';
  1224. - }
  1225. - strcpy ((tmpword + stripl), (word + appndl));
  1226. -
  1227. - // now make sure all of the conditions on characters
  1228. - // are met. Please see the appendix at the end of
  1229. - // this file for more info on exactly what is being
  1230. - // tested
  1231. -
  1232. - // if all conditions are met then check if resulting
  1233. - // root word in the dictionary
  1234. -
  1235. - if (test_condition(tmpword)) {
  1236. - tmpl += stripl;
  1237. - if ((he = pmyMgr->lookup(tmpword)) != NULL) {
  1238. - do {
  1239. - if (TESTAFF(he->astr, aflag, he->alen) &&
  1240. - // forbid single prefixes with needaffix flag
  1241. - ! TESTAFF(contclass, pmyMgr->get_needaffix(), contclasslen) &&
  1242. - // needflag
  1243. - ((!needflag) || TESTAFF(he->astr, needflag, he->alen) ||
  1244. - (contclass && TESTAFF(contclass, needflag, contclasslen))))
  1245. - return he;
  1246. - he = he->next_homonym; // check homonyms
  1247. - } while (he);
  1248. - }
  1249. -
  1250. - // prefix matched but no root word was found
  1251. - // if aeXPRODUCT is allowed, try again but now
  1252. - // ross checked combined with a suffix
  1253. -
  1254. - //if ((opts & aeXPRODUCT) && in_compound) {
  1255. - if ((opts & aeXPRODUCT)) {
  1256. - he = pmyMgr->suffix_check(tmpword, tmpl, aeXPRODUCT, this, NULL,
  1257. - 0, NULL, FLAG_NULL, needflag, in_compound);
  1258. - if (he) return he;
  1259. - }
  1260. - }
  1261. - }
  1262. - return NULL;
  1263. -}
  1264. -
  1265. -// check if this prefix entry matches
  1266. -struct hentry * PfxEntry::check_twosfx(const char * word, int len,
  1267. - char in_compound, const FLAG needflag)
  1268. -{
  1269. - int tmpl; // length of tmpword
  1270. - struct hentry * he; // hash entry of root word or NULL
  1271. - char tmpword[MAXTEMPWORDLEN];
  1272. -
  1273. - // on entry prefix is 0 length or already matches the beginning of the word.
  1274. - // So if the remaining root word has positive length
  1275. - // and if there are enough chars in root word and added back strip chars
  1276. - // to meet the number of characters conditions, then test it
  1277. -
  1278. - tmpl = len - appndl;
  1279. -
  1280. - if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) &&
  1281. - (tmpl + stripl >= numconds)) {
  1282. -
  1283. - // generate new root word by removing prefix and adding
  1284. - // back any characters that would have been stripped
  1285. -
  1286. - if (stripl) {
  1287. - strncpy(tmpword, strip, MAXTEMPWORDLEN-1);
  1288. - tmpword[MAXTEMPWORDLEN-1] = '\0';
  1289. - }
  1290. - strcpy ((tmpword + stripl), (word + appndl));
  1291. -
  1292. - // now make sure all of the conditions on characters
  1293. - // are met. Please see the appendix at the end of
  1294. - // this file for more info on exactly what is being
  1295. - // tested
  1296. -
  1297. - // if all conditions are met then check if resulting
  1298. - // root word in the dictionary
  1299. -
  1300. - if (test_condition(tmpword)) {
  1301. - tmpl += stripl;
  1302. -
  1303. - // prefix matched but no root word was found
  1304. - // if aeXPRODUCT is allowed, try again but now
  1305. - // cross checked combined with a suffix
  1306. -
  1307. - if ((opts & aeXPRODUCT) && (in_compound != IN_CPD_BEGIN)) {
  1308. - he = pmyMgr->suffix_check_twosfx(tmpword, tmpl, aeXPRODUCT, this, needflag);
  1309. - if (he) return he;
  1310. - }
  1311. - }
  1312. - }
  1313. - return NULL;
  1314. -}
  1315. -
  1316. -// check if this prefix entry matches
  1317. -char * PfxEntry::check_twosfx_morph(const char * word, int len,
  1318. - char in_compound, const FLAG needflag)
  1319. -{
  1320. - int tmpl; // length of tmpword
  1321. - char tmpword[MAXTEMPWORDLEN];
  1322. -
  1323. - // on entry prefix is 0 length or already matches the beginning of the word.
  1324. - // So if the remaining root word has positive length
  1325. - // and if there are enough chars in root word and added back strip chars
  1326. - // to meet the number of characters conditions, then test it
  1327. -
  1328. - tmpl = len - appndl;
  1329. -
  1330. - if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) &&
  1331. - (tmpl + stripl >= numconds)) {
  1332. -
  1333. - // generate new root word by removing prefix and adding
  1334. - // back any characters that would have been stripped
  1335. -
  1336. - if (stripl) {
  1337. - strncpy(tmpword, strip, MAXTEMPWORDLEN-1);
  1338. - tmpword[MAXTEMPWORDLEN-1] = '\0';
  1339. - }
  1340. - strcpy ((tmpword + stripl), (word + appndl));
  1341. -
  1342. - // now make sure all of the conditions on characters
  1343. - // are met. Please see the appendix at the end of
  1344. - // this file for more info on exactly what is being
  1345. - // tested
  1346. -
  1347. - // if all conditions are met then check if resulting
  1348. - // root word in the dictionary
  1349. -
  1350. - if (test_condition(tmpword)) {
  1351. - tmpl += stripl;
  1352. -
  1353. - // prefix matched but no root word was found
  1354. - // if aeXPRODUCT is allowed, try again but now
  1355. - // ross checked combined with a suffix
  1356. -
  1357. - if ((opts & aeXPRODUCT) && (in_compound != IN_CPD_BEGIN)) {
  1358. - return pmyMgr->suffix_check_twosfx_morph(tmpword, tmpl,
  1359. - aeXPRODUCT, this, needflag);
  1360. - }
  1361. - }
  1362. - }
  1363. - return NULL;
  1364. -}
  1365. -
  1366. -// check if this prefix entry matches
  1367. -char * PfxEntry::check_morph(const char * word, int len, char in_compound, const FLAG needflag)
  1368. -{
  1369. - int tmpl; // length of tmpword
  1370. - struct hentry * he; // hash entry of root word or NULL
  1371. - char tmpword[MAXTEMPWORDLEN];
  1372. - char result[MAXLNLEN];
  1373. - char * st;
  1374. -
  1375. - *result = '\0';
  1376. -
  1377. - // on entry prefix is 0 length or already matches the beginning of the word.
  1378. - // So if the remaining root word has positive length
  1379. - // and if there are enough chars in root word and added back strip chars
  1380. - // to meet the number of characters conditions, then test it
  1381. -
  1382. - tmpl = len - appndl;
  1383. -
  1384. - if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) &&
  1385. - (tmpl + stripl >= numconds)) {
  1386. -
  1387. - // generate new root word by removing prefix and adding
  1388. - // back any characters that would have been stripped
  1389. -
  1390. - if (stripl) {
  1391. - strncpy(tmpword, strip, MAXTEMPWORDLEN-1);
  1392. - tmpword[MAXTEMPWORDLEN-1] = '\0';
  1393. - }
  1394. - strcpy ((tmpword + stripl), (word + appndl));
  1395. -
  1396. - // now make sure all of the conditions on characters
  1397. - // are met. Please see the appendix at the end of
  1398. - // this file for more info on exactly what is being
  1399. - // tested
  1400. -
  1401. - // if all conditions are met then check if resulting
  1402. - // root word in the dictionary
  1403. -
  1404. - if (test_condition(tmpword)) {
  1405. - tmpl += stripl;
  1406. - if ((he = pmyMgr->lookup(tmpword)) != NULL) {
  1407. - do {
  1408. - if (TESTAFF(he->astr, aflag, he->alen) &&
  1409. - // forbid single prefixes with needaffix flag
  1410. - ! TESTAFF(contclass, pmyMgr->get_needaffix(), contclasslen) &&
  1411. - // needflag
  1412. - ((!needflag) || TESTAFF(he->astr, needflag, he->alen) ||
  1413. - (contclass && TESTAFF(contclass, needflag, contclasslen)))) {
  1414. - if (morphcode) {
  1415. - mystrcat(result, " ", MAXLNLEN);
  1416. - mystrcat(result, morphcode, MAXLNLEN);
  1417. - } else mystrcat(result,getKey(), MAXLNLEN);
  1418. - if (!HENTRY_FIND(he, MORPH_STEM)) {
  1419. - mystrcat(result, " ", MAXLNLEN);
  1420. - mystrcat(result, MORPH_STEM, MAXLNLEN);
  1421. - mystrcat(result, HENTRY_WORD(he), MAXLNLEN);
  1422. - }
  1423. - // store the pointer of the hash entry
  1424. - if (HENTRY_DATA(he)) {
  1425. - mystrcat(result, " ", MAXLNLEN);
  1426. - mystrcat(result, HENTRY_DATA2(he), MAXLNLEN);
  1427. - } else {
  1428. - // return with debug information
  1429. - char * flag = pmyMgr->encode_flag(getFlag());
  1430. - mystrcat(result, " ", MAXLNLEN);
  1431. - mystrcat(result, MORPH_FLAG, MAXLNLEN);
  1432. - mystrcat(result, flag, MAXLNLEN);
  1433. - free(flag);
  1434. - }
  1435. - mystrcat(result, "\n", MAXLNLEN);
  1436. - }
  1437. - he = he->next_homonym;
  1438. - } while (he);
  1439. - }
  1440. -
  1441. - // prefix matched but no root word was found
  1442. - // if aeXPRODUCT is allowed, try again but now
  1443. - // ross checked combined with a suffix
  1444. -
  1445. - if ((opts & aeXPRODUCT) && (in_compound != IN_CPD_BEGIN)) {
  1446. - st = pmyMgr->suffix_check_morph(tmpword, tmpl, aeXPRODUCT, this,
  1447. - FLAG_NULL, needflag);
  1448. - if (st) {
  1449. - mystrcat(result, st, MAXLNLEN);
  1450. - free(st);
  1451. - }
  1452. - }
  1453. - }
  1454. - }
  1455. -
  1456. - if (*result) return mystrdup(result);
  1457. - return NULL;
  1458. -}
  1459. -
  1460. -SfxEntry::SfxEntry(AffixMgr * pmgr, affentry* dp)
  1461. - : pmyMgr(pmgr) // register affix manager
  1462. - , next(NULL)
  1463. - , nexteq(NULL)
  1464. - , nextne(NULL)
  1465. - , flgnxt(NULL)
  1466. - , l_morph(NULL)
  1467. - , r_morph(NULL)
  1468. - , eq_morph(NULL)
  1469. -{
  1470. - // set up its initial values
  1471. - aflag = dp->aflag; // char flag
  1472. - strip = dp->strip; // string to strip
  1473. - appnd = dp->appnd; // string to append
  1474. - stripl = dp->stripl; // length of strip string
  1475. - appndl = dp->appndl; // length of append string
  1476. - numconds = dp->numconds; // length of the condition
  1477. - opts = dp->opts; // cross product flag
  1478. -
  1479. - // then copy over all of the conditions
  1480. - if (opts & aeLONGCOND) {
  1481. - memcpy(c.l.conds1, dp->c.l.conds1, MAXCONDLEN_1);
  1482. - c.l.conds2 = dp->c.l.conds2;
  1483. - } else memcpy(c.conds, dp->c.conds, MAXCONDLEN);
  1484. - rappnd = myrevstrdup(appnd);
  1485. - morphcode = dp->morphcode;
  1486. - contclass = dp->contclass;
  1487. - contclasslen = dp->contclasslen;
  1488. -}
  1489. -
  1490. -
  1491. -SfxEntry::~SfxEntry()
  1492. -{
  1493. - aflag = 0;
  1494. - if (appnd) free(appnd);
  1495. - if (rappnd) free(rappnd);
  1496. - if (strip) free(strip);
  1497. - pmyMgr = NULL;
  1498. - appnd = NULL;
  1499. - strip = NULL;
  1500. - if (opts & aeLONGCOND) free(c.l.conds2);
  1501. - if (morphcode && !(opts & aeALIASM)) free(morphcode);
  1502. - if (contclass && !(opts & aeALIASF)) free(contclass);
  1503. -}
  1504. -
  1505. -// add suffix to this word assuming conditions hold
  1506. -char * SfxEntry::add(const char * word, int len)
  1507. -{
  1508. - char tword[MAXTEMPWORDLEN];
  1509. -
  1510. - /* make sure all conditions match */
  1511. - if ((len > stripl || (len == 0 && pmyMgr->get_fullstrip())) &&
  1512. - (len >= numconds) && test_condition(word + len, word) &&
  1513. - (!stripl || (strcmp(word + len - stripl, strip) == 0)) &&
  1514. - ((MAXTEMPWORDLEN) > (len + appndl - stripl))) {
  1515. - /* we have a match so add suffix */
  1516. - strncpy(tword, word, MAXTEMPWORDLEN-1);
  1517. - tword[MAXTEMPWORDLEN-1] = '\0';
  1518. - if (appndl) {
  1519. - strcpy(tword + len - stripl, appnd);
  1520. - } else {
  1521. - *(tword + len - stripl) = '\0';
  1522. - }
  1523. - return mystrdup(tword);
  1524. - }
  1525. - return NULL;
  1526. -}
  1527. -
  1528. -inline char * SfxEntry::nextchar(char * p) {
  1529. - if (p) {
  1530. - p++;
  1531. - if (opts & aeLONGCOND) {
  1532. - // jump to the 2nd part of the condition
  1533. - if (p == c.l.conds1 + MAXCONDLEN_1) return c.l.conds2;
  1534. - // end of the MAXCONDLEN length condition
  1535. - } else if (p == c.conds + MAXCONDLEN) return NULL;
  1536. - return *p ? p : NULL;
  1537. - }
  1538. - return NULL;
  1539. -}
  1540. -
  1541. -inline int SfxEntry::test_condition(const char * st, const char * beg)
  1542. -{
  1543. - const char * pos = NULL; // group with pos input position
  1544. - bool neg = false; // complementer
  1545. - bool ingroup = false; // character in the group
  1546. - if (numconds == 0) return 1;
  1547. - char * p = c.conds;
  1548. - st--;
  1549. - int i = 1;
  1550. - while (1) {
  1551. - switch (*p) {
  1552. - case '\0':
  1553. - return 1;
  1554. - case '[':
  1555. - p = nextchar(p);
  1556. - pos = st;
  1557. - break;
  1558. - case '^':
  1559. - p = nextchar(p);
  1560. - neg = true;
  1561. - break;
  1562. - case ']':
  1563. - if (!neg && !ingroup)
  1564. - return 0;
  1565. - i++;
  1566. - // skip the next character
  1567. - if (!ingroup)
  1568. - {
  1569. - for (; (opts & aeUTF8) && (st >= beg) && (*st & 0xc0) == 0x80; st--);
  1570. - st--;
  1571. - }
  1572. - pos = NULL;
  1573. - neg = false;
  1574. - ingroup = false;
  1575. - p = nextchar(p);
  1576. - if (st < beg && p)
  1577. - return 0; // word <= condition
  1578. - break;
  1579. - case '.':
  1580. - if (!pos)
  1581. - {
  1582. - // dots are not metacharacters in groups: [.]
  1583. - p = nextchar(p);
  1584. - // skip the next character
  1585. - for (st--; (opts & aeUTF8) && (st >= beg) && (*st & 0xc0) == 0x80; st--);
  1586. - if (st < beg) { // word <= condition
  1587. - if (p) return 0; else return 1;
  1588. - }
  1589. - if ((opts & aeUTF8) && (*st & 0x80)) { // head of the UTF-8 character
  1590. - st--;
  1591. - if (st < beg) { // word <= condition
  1592. - if (p) return 0; else return 1;
  1593. - }
  1594. - }
  1595. - break;
  1596. - }
  1597. - /* FALLTHROUGH */
  1598. - default: {
  1599. - if (*st == *p) {
  1600. - p = nextchar(p);
  1601. - if ((opts & aeUTF8) && (*st & 0x80)) {
  1602. - st--;
  1603. - while (p && (st >= beg)) {
  1604. - if (*p != *st) {
  1605. - if (!pos) return 0;
  1606. - st = pos;
  1607. - break;
  1608. - }
  1609. - // first byte of the UTF-8 multibyte character
  1610. - if ((*p & 0xc0) != 0x80) break;
  1611. - p = nextchar(p);
  1612. - st--;
  1613. - }
  1614. - if (pos && st != pos) {
  1615. - if (neg) return 0;
  1616. - else if (i == numconds) return 1;
  1617. - ingroup = true;
  1618. - while (p && *p != ']' && ((p = nextchar(p)) != NULL));
  1619. - st--;
  1620. - }
  1621. - if (p && *p != ']') p = nextchar(p);
  1622. - } else if (pos) {
  1623. - if (neg) return 0;
  1624. - else if (i == numconds) return 1;
  1625. - ingroup = true;
  1626. - while (p && *p != ']' && ((p = nextchar(p)) != NULL));
  1627. -// if (p && *p != ']') p = nextchar(p);
  1628. - st--;
  1629. - }
  1630. - if (!pos) {
  1631. - i++;
  1632. - st--;
  1633. - }
  1634. - if (st < beg && p && *p != ']') return 0; // word <= condition
  1635. - } else if (pos) { // group
  1636. - p = nextchar(p);
  1637. - } else return 0;
  1638. - }
  1639. - }
  1640. - if (!p) return 1;
  1641. - }
  1642. -}
  1643. -
  1644. -// see if this suffix is present in the word
  1645. -struct hentry * SfxEntry::checkword(const char * word, int len, int optflags,
  1646. - PfxEntry* ppfx, char ** wlst, int maxSug, int * ns, const FLAG cclass, const FLAG needflag,
  1647. - const FLAG badflag)
  1648. -{
  1649. - int tmpl; // length of tmpword
  1650. - struct hentry * he; // hash entry pointer
  1651. - unsigned char * cp;
  1652. - char tmpword[MAXTEMPWORDLEN];
  1653. - PfxEntry* ep = ppfx;
  1654. -
  1655. - // if this suffix is being cross checked with a prefix
  1656. - // but it does not support cross products skip it
  1657. -
  1658. - if (((optflags & aeXPRODUCT) != 0) && ((opts & aeXPRODUCT) == 0))
  1659. - return NULL;
  1660. -
  1661. - // upon entry suffix is 0 length or already matches the end of the word.
  1662. - // So if the remaining root word has positive length
  1663. - // and if there are enough chars in root word and added back strip chars
  1664. - // to meet the number of characters conditions, then test it
  1665. -
  1666. - tmpl = len - appndl;
  1667. - // the second condition is not enough for UTF-8 strings
  1668. - // it checked in test_condition()
  1669. -
  1670. - if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) &&
  1671. - (tmpl + stripl >= numconds)) {
  1672. -
  1673. - // generate new root word by removing suffix and adding
  1674. - // back any characters that would have been stripped or
  1675. - // or null terminating the shorter string
  1676. -
  1677. - strncpy (tmpword, word, MAXTEMPWORDLEN-1);
  1678. - tmpword[MAXTEMPWORDLEN-1] = '\0';
  1679. - cp = (unsigned char *)(tmpword + tmpl);
  1680. - if (stripl) {
  1681. - strcpy ((char *)cp, strip);
  1682. - tmpl += stripl;
  1683. - cp = (unsigned char *)(tmpword + tmpl);
  1684. - } else *cp = '\0';
  1685. -
  1686. - // now make sure all of the conditions on characters
  1687. - // are met. Please see the appendix at the end of
  1688. - // this file for more info on exactly what is being
  1689. - // tested
  1690. -
  1691. - // if all conditions are met then check if resulting
  1692. - // root word in the dictionary
  1693. -
  1694. - if (test_condition((char *) cp, (char *) tmpword)) {
  1695. -
  1696. -#ifdef SZOSZABLYA_POSSIBLE_ROOTS
  1697. - fprintf(stdout,"%s %s %c\n", word, tmpword, aflag);
  1698. -#endif
  1699. - if ((he = pmyMgr->lookup(tmpword)) != NULL) {
  1700. - do {
  1701. - // check conditional suffix (enabled by prefix)
  1702. - if ((TESTAFF(he->astr, aflag, he->alen) || (ep && ep->getCont() &&
  1703. - TESTAFF(ep->getCont(), aflag, ep->getContLen()))) &&
  1704. - (((optflags & aeXPRODUCT) == 0) ||
  1705. - (ep && TESTAFF(he->astr, ep->getFlag(), he->alen)) ||
  1706. - // enabled by prefix
  1707. - ((contclass) && (ep && TESTAFF(contclass, ep->getFlag(), contclasslen)))
  1708. - ) &&
  1709. - // handle cont. class
  1710. - ((!cclass) ||
  1711. - ((contclass) && TESTAFF(contclass, cclass, contclasslen))
  1712. - ) &&
  1713. - // check only in compound homonyms (bad flags)
  1714. - (!badflag || !TESTAFF(he->astr, badflag, he->alen)
  1715. - ) &&
  1716. - // handle required flag
  1717. - ((!needflag) ||
  1718. - (TESTAFF(he->astr, needflag, he->alen) ||
  1719. - ((contclass) && TESTAFF(contclass, needflag, contclasslen)))
  1720. - )
  1721. - ) return he;
  1722. - he = he->next_homonym; // check homonyms
  1723. - } while (he);
  1724. -
  1725. - // obsolote stemming code (used only by the
  1726. - // experimental SuffixMgr:suggest_pos_stems)
  1727. - // store resulting root in wlst
  1728. - } else if (wlst && (*ns < maxSug)) {
  1729. - int cwrd = 1;
  1730. - for (int k=0; k < *ns; k++)
  1731. - if (strcmp(tmpword, wlst[k]) == 0) {
  1732. - cwrd = 0;
  1733. - break;
  1734. - }
  1735. - if (cwrd) {
  1736. - wlst[*ns] = mystrdup(tmpword);
  1737. - if (wlst[*ns] == NULL) {
  1738. - for (int j=0; j<*ns; j++) free(wlst[j]);
  1739. - *ns = -1;
  1740. - return NULL;
  1741. - }
  1742. - (*ns)++;
  1743. - }
  1744. - }
  1745. - }
  1746. - }
  1747. - return NULL;
  1748. -}
  1749. -
  1750. -// see if two-level suffix is present in the word
  1751. -struct hentry * SfxEntry::check_twosfx(const char * word, int len, int optflags,
  1752. - PfxEntry* ppfx, const FLAG needflag)
  1753. -{
  1754. - int tmpl; // length of tmpword
  1755. - struct hentry * he; // hash entry pointer
  1756. - unsigned char * cp;
  1757. - char tmpword[MAXTEMPWORDLEN];
  1758. - PfxEntry* ep = ppfx;
  1759. -
  1760. -
  1761. - // if this suffix is being cross checked with a prefix
  1762. - // but it does not support cross products skip it
  1763. -
  1764. - if ((optflags & aeXPRODUCT) != 0 && (opts & aeXPRODUCT) == 0)
  1765. - return NULL;
  1766. -
  1767. - // upon entry suffix is 0 length or already matches the end of the word.
  1768. - // So if the remaining root word has positive length
  1769. - // and if there are enough chars in root word and added back strip chars
  1770. - // to meet the number of characters conditions, then test it
  1771. -
  1772. - tmpl = len - appndl;
  1773. -
  1774. - if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) &&
  1775. - (tmpl + stripl >= numconds)) {
  1776. -
  1777. - // generate new root word by removing suffix and adding
  1778. - // back any characters that would have been stripped or
  1779. - // or null terminating the shorter string
  1780. -
  1781. - strncpy(tmpword, word, MAXTEMPWORDLEN-1);
  1782. - tmpword[MAXTEMPWORDLEN-1] = '\0';
  1783. - cp = (unsigned char *)(tmpword + tmpl);
  1784. - if (stripl) {
  1785. - strcpy ((char *)cp, strip);
  1786. - tmpl += stripl;
  1787. - cp = (unsigned char *)(tmpword + tmpl);
  1788. - } else *cp = '\0';
  1789. -
  1790. - // now make sure all of the conditions on characters
  1791. - // are met. Please see the appendix at the end of
  1792. - // this file for more info on exactly what is being
  1793. - // tested
  1794. -
  1795. - // if all conditions are met then recall suffix_check
  1796. -
  1797. - if (test_condition((char *) cp, (char *) tmpword)) {
  1798. - if (ppfx) {
  1799. - // handle conditional suffix
  1800. - if ((contclass) && TESTAFF(contclass, ep->getFlag(), contclasslen))
  1801. - he = pmyMgr->suffix_check(tmpword, tmpl, 0, NULL, NULL, 0, NULL, (FLAG) aflag, needflag);
  1802. - else
  1803. - he = pmyMgr->suffix_check(tmpword, tmpl, optflags, ppfx, NULL, 0, NULL, (FLAG) aflag, needflag);
  1804. - } else {
  1805. - he = pmyMgr->suffix_check(tmpword, tmpl, 0, NULL, NULL, 0, NULL, (FLAG) aflag, needflag);
  1806. - }
  1807. - if (he) return he;
  1808. - }
  1809. - }
  1810. - return NULL;
  1811. -}
  1812. -
  1813. -// see if two-level suffix is present in the word
  1814. -char * SfxEntry::check_twosfx_morph(const char * word, int len, int optflags,
  1815. - PfxEntry* ppfx, const FLAG needflag)
  1816. -{
  1817. - int tmpl; // length of tmpword
  1818. - unsigned char * cp;
  1819. - char tmpword[MAXTEMPWORDLEN];
  1820. - PfxEntry* ep = ppfx;
  1821. - char * st;
  1822. -
  1823. - char result[MAXLNLEN];
  1824. -
  1825. - *result = '\0';
  1826. -
  1827. - // if this suffix is being cross checked with a prefix
  1828. - // but it does not support cross products skip it
  1829. -
  1830. - if ((optflags & aeXPRODUCT) != 0 && (opts & aeXPRODUCT) == 0)
  1831. - return NULL;
  1832. -
  1833. - // upon entry suffix is 0 length or already matches the end of the word.
  1834. - // So if the remaining root word has positive length
  1835. - // and if there are enough chars in root word and added back strip chars
  1836. - // to meet the number of characters conditions, then test it
  1837. -
  1838. - tmpl = len - appndl;
  1839. -
  1840. - if ((tmpl > 0 || (tmpl == 0 && pmyMgr->get_fullstrip())) &&
  1841. - (tmpl + stripl >= numconds)) {
  1842. -
  1843. - // generate new root word by removing suffix and adding
  1844. - // back any characters that would have been stripped or
  1845. - // or null terminating the shorter string
  1846. -
  1847. - strncpy(tmpword, word, MAXTEMPWORDLEN-1);
  1848. - tmpword[MAXTEMPWORDLEN-1] = '\0';
  1849. - cp = (unsigned char *)(tmpword + tmpl);
  1850. - if (stripl) {
  1851. - strcpy ((char *)cp, strip);
  1852. - tmpl += stripl;
  1853. - cp = (unsigned char *)(tmpword + tmpl);
  1854. - } else *cp = '\0';
  1855. -
  1856. - // now make sure all of the conditions on characters
  1857. - // are met. Please see the appendix at the end of
  1858. - // this file for more info on exactly what is being
  1859. - // tested
  1860. -
  1861. - // if all conditions are met then recall suffix_check
  1862. -
  1863. - if (test_condition((char *) cp, (char *) tmpword)) {
  1864. - if (ppfx) {
  1865. - // handle conditional suffix
  1866. - if ((contclass) && TESTAFF(contclass, ep->getFlag(), contclasslen)) {
  1867. - st = pmyMgr->suffix_check_morph(tmpword, tmpl, 0, NULL, aflag, needflag);
  1868. - if (st) {
  1869. - if (ppfx->getMorph()) {
  1870. - mystrcat(result, ppfx->getMorph(), MAXLNLEN);
  1871. - mystrcat(result, " ", MAXLNLEN);
  1872. - }
  1873. - mystrcat(result,st, MAXLNLEN);
  1874. - free(st);
  1875. - mychomp(result);
  1876. - }
  1877. - } else {
  1878. - st = pmyMgr->suffix_check_morph(tmpword, tmpl, optflags, ppfx, aflag, needflag);
  1879. - if (st) {
  1880. - mystrcat(result, st, MAXLNLEN);
  1881. - free(st);
  1882. - mychomp(result);
  1883. - }
  1884. - }
  1885. - } else {
  1886. - st = pmyMgr->suffix_check_morph(tmpword, tmpl, 0, NULL, aflag, needflag);
  1887. - if (st) {
  1888. - mystrcat(result, st, MAXLNLEN);
  1889. - free(st);
  1890. - mychomp(result);
  1891. - }
  1892. - }
  1893. - if (*result) return mystrdup(result);
  1894. - }
  1895. - }
  1896. - return NULL;
  1897. -}
  1898. -
  1899. -// get next homonym with same affix
  1900. -struct hentry * SfxEntry::get_next_homonym(struct hentry * he, int optflags, PfxEntry* ppfx,
  1901. - const FLAG cclass, const FLAG needflag)
  1902. -{
  1903. - PfxEntry* ep = ppfx;
  1904. - FLAG eFlag = ep ? ep->getFlag() : FLAG_NULL;
  1905. -
  1906. - while (he->next_homonym) {
  1907. - he = he->next_homonym;
  1908. - if ((TESTAFF(he->astr, aflag, he->alen) || (ep && ep->getCont() && TESTAFF(ep->getCont(), aflag, ep->getContLen()))) &&
  1909. - ((optflags & aeXPRODUCT) == 0 ||
  1910. - TESTAFF(he->astr, eFlag, he->alen) ||
  1911. - // handle conditional suffix
  1912. - ((contclass) && TESTAFF(contclass, eFlag, contclasslen))
  1913. - ) &&
  1914. - // handle cont. class
  1915. - ((!cclass) ||
  1916. - ((contclass) && TESTAFF(contclass, cclass, contclasslen))
  1917. - ) &&
  1918. - // handle required flag
  1919. - ((!needflag) ||
  1920. - (TESTAFF(he->astr, needflag, he->alen) ||
  1921. - ((contclass) && TESTAFF(contclass, needflag, contclasslen)))
  1922. - )
  1923. - ) return he;
  1924. - }
  1925. - return NULL;
  1926. -}
  1927. -
  1928. -
  1929. -#if 0
  1930. -
  1931. -Appendix: Understanding Affix Code
  1932. -
  1933. -
  1934. -An affix is either a prefix or a suffix attached to root words to make
  1935. -other words.
  1936. -
  1937. -Basically a Prefix or a Suffix is set of AffEntry objects
  1938. -which store information about the prefix or suffix along
  1939. -with supporting routines to check if a word has a particular
  1940. -prefix or suffix or a combination.
  1941. -
  1942. -The structure affentry is defined as follows:
  1943. -
  1944. -struct affentry
  1945. -{
  1946. - unsigned short aflag; // ID used to represent the affix
  1947. - char * strip; // string to strip before adding affix
  1948. - char * appnd; // the affix string to add
  1949. - unsigned char stripl; // length of the strip string
  1950. - unsigned char appndl; // length of the affix string
  1951. - char numconds; // the number of conditions that must be met
  1952. - char opts; // flag: aeXPRODUCT- combine both prefix and suffix
  1953. - char conds[SETSIZE]; // array which encodes the conditions to be met
  1954. -};
  1955. -
  1956. -
  1957. -Here is a suffix borrowed from the en_US.aff file. This file
  1958. -is whitespace delimited.
  1959. -
  1960. -SFX D Y 4
  1961. -SFX D 0 e d
  1962. -SFX D y ied [^aeiou]y
  1963. -SFX D 0 ed [^ey]
  1964. -SFX D 0 ed [aeiou]y
  1965. -
  1966. -This information can be interpreted as follows:
  1967. -
  1968. -In the first line has 4 fields
  1969. -
  1970. -Field
  1971. ------
  1972. -1 SFX - indicates this is a suffix
  1973. -2 D - is the name of the character flag which represents this suffix
  1974. -3 Y - indicates it can be combined with prefixes (cross product)
  1975. -4 4 - indicates that sequence of 4 affentry structures are needed to
  1976. - properly store the affix information
  1977. -
  1978. -The remaining lines describe the unique information for the 4 SfxEntry
  1979. -objects that make up this affix. Each line can be interpreted
  1980. -as follows: (note fields 1 and 2 are as a check against line 1 info)
  1981. -
  1982. -Field
  1983. ------
  1984. -1 SFX - indicates this is a suffix
  1985. -2 D - is the name of the character flag for this affix
  1986. -3 y - the string of chars to strip off before adding affix
  1987. - (a 0 here indicates the NULL string)
  1988. -4 ied - the string of affix characters to add
  1989. -5 [^aeiou]y - the conditions which must be met before the affix
  1990. - can be applied
  1991. -
  1992. -Field 5 is interesting. Since this is a suffix, field 5 tells us that
  1993. -there are 2 conditions that must be met. The first condition is that
  1994. -the next to the last character in the word must *NOT* be any of the
  1995. -following "a", "e", "i", "o" or "u". The second condition is that
  1996. -the last character of the word must end in "y".
  1997. -
  1998. -So how can we encode this information concisely and be able to
  1999. -test for both conditions in a fast manner? The answer is found
  2000. -but studying the wonderful ispell code of Geoff Kuenning, et.al.
  2001. -(now available under a normal BSD license).
  2002. -
  2003. -If we set up a conds array of 256 bytes indexed (0 to 255) and access it
  2004. -using a character (cast to an unsigned char) of a string, we have 8 bits
  2005. -of information we can store about that character. Specifically we
  2006. -could use each bit to say if that character is allowed in any of the
  2007. -last (or first for prefixes) 8 characters of the word.
  2008. -
  2009. -Basically, each character at one end of the word (up to the number
  2010. -of conditions) is used to index into the conds array and the resulting
  2011. -value found there says whether the that character is valid for a
  2012. -specific character position in the word.
  2013. -
  2014. -For prefixes, it does this by setting bit 0 if that char is valid
  2015. -in the first position, bit 1 if valid in the second position, and so on.
  2016. -
  2017. -If a bit is not set, then that char is not valid for that postion in the
  2018. -word.
  2019. -
  2020. -If working with suffixes bit 0 is used for the character closest
  2021. -to the front, bit 1 for the next character towards the end, ...,
  2022. -with bit numconds-1 representing the last char at the end of the string.
  2023. -
  2024. -Note: since entries in the conds[] are 8 bits, only 8 conditions
  2025. -(read that only 8 character positions) can be examined at one
  2026. -end of a word (the beginning for prefixes and the end for suffixes.
  2027. -
  2028. -So to make this clearer, lets encode the conds array values for the
  2029. -first two affentries for the suffix D described earlier.
  2030. -
  2031. -
  2032. - For the first affentry:
  2033. - numconds = 1 (only examine the last character)
  2034. -
  2035. - conds['e'] = (1 << 0) (the word must end in an E)
  2036. - all others are all 0
  2037. -
  2038. - For the second affentry:
  2039. - numconds = 2 (only examine the last two characters)
  2040. -
  2041. - conds[X] = conds[X] | (1 << 0) (aeiou are not allowed)
  2042. - where X is all characters *but* a, e, i, o, or u
  2043. -
  2044. -
  2045. - conds['y'] = (1 << 1) (the last char must be a y)
  2046. - all other bits for all other entries in the conds array are zero
  2047. -
  2048. -
  2049. -#endif
  2050. -
  2051. diff --git a/src/hunspell/affentry.hxx b/src/hunspell/affentry.hxx
  2052. deleted file mode 100644
  2053. index c67c09825c..0000000000
  2054. --- a/src/hunspell/affentry.hxx
  2055. +++ /dev/null
  2056. @@ -1,144 +0,0 @@
  2057. -#ifndef _AFFIX_HXX_
  2058. -#define _AFFIX_HXX_
  2059. -
  2060. -#include "hunvisapi.h"
  2061. -
  2062. -#include "atypes.hxx"
  2063. -#include "baseaffix.hxx"
  2064. -#include "affixmgr.hxx"
  2065. -
  2066. -/* A Prefix Entry */
  2067. -
  2068. -class LIBHUNSPELL_DLL_EXPORTED PfxEntry : protected AffEntry
  2069. -{
  2070. -private:
  2071. - PfxEntry(const PfxEntry&);
  2072. - PfxEntry& operator = (const PfxEntry&);
  2073. -private:
  2074. - AffixMgr* pmyMgr;
  2075. -
  2076. - PfxEntry * next;
  2077. - PfxEntry * nexteq;
  2078. - PfxEntry * nextne;
  2079. - PfxEntry * flgnxt;
  2080. -
  2081. -public:
  2082. -
  2083. - PfxEntry(AffixMgr* pmgr, affentry* dp );
  2084. - ~PfxEntry();
  2085. -
  2086. - inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); }
  2087. - struct hentry * checkword(const char * word, int len, char in_compound,
  2088. - const FLAG needflag = FLAG_NULL);
  2089. -
  2090. - struct hentry * check_twosfx(const char * word, int len, char in_compound, const FLAG needflag = FLAG_NULL);
  2091. -
  2092. - char * check_morph(const char * word, int len, char in_compound,
  2093. - const FLAG needflag = FLAG_NULL);
  2094. -
  2095. - char * check_twosfx_morph(const char * word, int len,
  2096. - char in_compound, const FLAG needflag = FLAG_NULL);
  2097. -
  2098. - inline FLAG getFlag() { return aflag; }
  2099. - inline const char * getKey() { return appnd; }
  2100. - char * add(const char * word, int len);
  2101. -
  2102. - inline short getKeyLen() { return appndl; }
  2103. -
  2104. - inline const char * getMorph() { return morphcode; }
  2105. -
  2106. - inline const unsigned short * getCont() { return contclass; }
  2107. - inline short getContLen() { return contclasslen; }
  2108. -
  2109. - inline PfxEntry * getNext() { return next; }
  2110. - inline PfxEntry * getNextNE() { return nextne; }
  2111. - inline PfxEntry * getNextEQ() { return nexteq; }
  2112. - inline PfxEntry * getFlgNxt() { return flgnxt; }
  2113. -
  2114. - inline void setNext(PfxEntry * ptr) { next = ptr; }
  2115. - inline void setNextNE(PfxEntry * ptr) { nextne = ptr; }
  2116. - inline void setNextEQ(PfxEntry * ptr) { nexteq = ptr; }
  2117. - inline void setFlgNxt(PfxEntry * ptr) { flgnxt = ptr; }
  2118. -
  2119. - inline char * nextchar(char * p);
  2120. - inline int test_condition(const char * st);
  2121. -};
  2122. -
  2123. -
  2124. -
  2125. -
  2126. -/* A Suffix Entry */
  2127. -
  2128. -class LIBHUNSPELL_DLL_EXPORTED SfxEntry : protected AffEntry
  2129. -{
  2130. -private:
  2131. - SfxEntry(const SfxEntry&);
  2132. - SfxEntry& operator = (const SfxEntry&);
  2133. -private:
  2134. - AffixMgr* pmyMgr;
  2135. - char * rappnd;
  2136. -
  2137. - SfxEntry * next;
  2138. - SfxEntry * nexteq;
  2139. - SfxEntry * nextne;
  2140. - SfxEntry * flgnxt;
  2141. -
  2142. - SfxEntry * l_morph;
  2143. - SfxEntry * r_morph;
  2144. - SfxEntry * eq_morph;
  2145. -
  2146. -public:
  2147. -
  2148. - SfxEntry(AffixMgr* pmgr, affentry* dp );
  2149. - ~SfxEntry();
  2150. -
  2151. - inline bool allowCross() { return ((opts & aeXPRODUCT) != 0); }
  2152. - struct hentry * checkword(const char * word, int len, int optflags,
  2153. - PfxEntry* ppfx, char ** wlst, int maxSug, int * ns,
  2154. -// const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, char in_compound=IN_CPD_NOT);
  2155. - const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL, const FLAG badflag = 0);
  2156. -
  2157. - struct hentry * check_twosfx(const char * word, int len, int optflags, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL);
  2158. -
  2159. - char * check_twosfx_morph(const char * word, int len, int optflags,
  2160. - PfxEntry* ppfx, const FLAG needflag = FLAG_NULL);
  2161. - struct hentry * get_next_homonym(struct hentry * he);
  2162. - struct hentry * get_next_homonym(struct hentry * word, int optflags, PfxEntry* ppfx,
  2163. - const FLAG cclass, const FLAG needflag);
  2164. -
  2165. -
  2166. - inline FLAG getFlag() { return aflag; }
  2167. - inline const char * getKey() { return rappnd; }
  2168. - char * add(const char * word, int len);
  2169. -
  2170. -
  2171. - inline const char * getMorph() { return morphcode; }
  2172. -
  2173. - inline const unsigned short * getCont() { return contclass; }
  2174. - inline short getContLen() { return contclasslen; }
  2175. - inline const char * getAffix() { return appnd; }
  2176. -
  2177. - inline short getKeyLen() { return appndl; }
  2178. -
  2179. - inline SfxEntry * getNext() { return next; }
  2180. - inline SfxEntry * getNextNE() { return nextne; }
  2181. - inline SfxEntry * getNextEQ() { return nexteq; }
  2182. -
  2183. - inline SfxEntry * getLM() { return l_morph; }
  2184. - inline SfxEntry * getRM() { return r_morph; }
  2185. - inline SfxEntry * getEQM() { return eq_morph; }
  2186. - inline SfxEntry * getFlgNxt() { return flgnxt; }
  2187. -
  2188. - inline void setNext(SfxEntry * ptr) { next = ptr; }
  2189. - inline void setNextNE(SfxEntry * ptr) { nextne = ptr; }
  2190. - inline void setNextEQ(SfxEntry * ptr) { nexteq = ptr; }
  2191. - inline void setFlgNxt(SfxEntry * ptr) { flgnxt = ptr; }
  2192. -
  2193. - inline char * nextchar(char * p);
  2194. - inline int test_condition(const char * st, const char * begin);
  2195. -
  2196. -};
  2197. -
  2198. -#endif
  2199. -
  2200. -
  2201. diff --git a/src/hunspell/affixmgr.cxx b/src/hunspell/affixmgr.cxx
  2202. deleted file mode 100644
  2203. index 7aad320472..0000000000
  2204. --- a/src/hunspell/affixmgr.cxx
  2205. +++ /dev/null
  2206. @@ -1,4538 +0,0 @@
  2207. -#include "license.hunspell"
  2208. -#include "license.myspell"
  2209. -
  2210. -#include <stdlib.h>
  2211. -#include <string.h>
  2212. -#include <stdio.h>
  2213. -#include <ctype.h>
  2214. -
  2215. -#include <vector>
  2216. -
  2217. -#include "affixmgr.hxx"
  2218. -#include "affentry.hxx"
  2219. -#include "langnum.hxx"
  2220. -
  2221. -#include "csutil.hxx"
  2222. -
  2223. -AffixMgr::AffixMgr(const char *aff_data, const size_t aff_len, HashMgr** ptr, int * md)
  2224. -{
  2225. - // register hash manager and load affix data from aff file
  2226. - pHMgr = ptr[0];
  2227. - alldic = ptr;
  2228. - maxdic = md;
  2229. - keystring = NULL;
  2230. - trystring = NULL;
  2231. - encoding=NULL;
  2232. - csconv=NULL;
  2233. - utf8 = 0;
  2234. - complexprefixes = 0;
  2235. - maptable = NULL;
  2236. - nummap = 0;
  2237. - breaktable = NULL;
  2238. - numbreak = -1;
  2239. - reptable = NULL;
  2240. - numrep = 0;
  2241. - iconvtable = NULL;
  2242. - oconvtable = NULL;
  2243. - checkcpdtable = NULL;
  2244. - // allow simplified compound forms (see 3rd field of CHECKCOMPOUNDPATTERN)
  2245. - simplifiedcpd = 0;
  2246. - numcheckcpd = 0;
  2247. - defcpdtable = NULL;
  2248. - numdefcpd = 0;
  2249. - phone = NULL;
  2250. - compoundflag = FLAG_NULL; // permits word in compound forms
  2251. - compoundbegin = FLAG_NULL; // may be first word in compound forms
  2252. - compoundmiddle = FLAG_NULL; // may be middle word in compound forms
  2253. - compoundend = FLAG_NULL; // may be last word in compound forms
  2254. - compoundroot = FLAG_NULL; // compound word signing flag
  2255. - compoundpermitflag = FLAG_NULL; // compound permitting flag for suffixed word
  2256. - compoundforbidflag = FLAG_NULL; // compound fordidden flag for suffixed word
  2257. - compoundmoresuffixes = 0; // allow more suffixes within compound words
  2258. - checkcompounddup = 0; // forbid double words in compounds
  2259. - checkcompoundrep = 0; // forbid bad compounds (may be non compound word with a REP substitution)
  2260. - checkcompoundcase = 0; // forbid upper and lowercase combinations at word bounds
  2261. - checkcompoundtriple = 0; // forbid compounds with triple letters
  2262. - simplifiedtriple = 0; // allow simplified triple letters in compounds (Schiff+fahrt -> Schiffahrt)
  2263. - forbiddenword = FORBIDDENWORD; // forbidden word signing flag
  2264. - nosuggest = FLAG_NULL; // don't suggest words signed with NOSUGGEST flag
  2265. - nongramsuggest = FLAG_NULL;
  2266. - lang = NULL; // language
  2267. - langnum = 0; // language code (see http://l10n.openoffice.org/languages.html)
  2268. - needaffix = FLAG_NULL; // forbidden root, allowed only with suffixes
  2269. - cpdwordmax = -1; // default: unlimited wordcount in compound words
  2270. - cpdmin = -1; // undefined
  2271. - cpdmaxsyllable = 0; // default: unlimited syllablecount in compound words
  2272. - cpdvowels=NULL; // vowels (for calculating of Hungarian compounding limit, O(n) search! XXX)
  2273. - cpdvowels_utf16=NULL; // vowels for UTF-8 encoding (bsearch instead of O(n) search)
  2274. - cpdvowels_utf16_len=0; // vowels
  2275. - pfxappnd=NULL; // previous prefix for counting the syllables of prefix BUG
  2276. - sfxappnd=NULL; // previous suffix for counting a special syllables BUG
  2277. - cpdsyllablenum=NULL; // syllable count incrementing flag
  2278. - checknum=0; // checking numbers, and word with numbers
  2279. - wordchars=NULL; // letters + spec. word characters
  2280. - wordchars_utf16=NULL; // letters + spec. word characters
  2281. - wordchars_utf16_len=0; // letters + spec. word characters
  2282. - ignorechars=NULL; // letters + spec. word characters
  2283. - ignorechars_utf16=NULL; // letters + spec. word characters
  2284. - ignorechars_utf16_len=0; // letters + spec. word characters
  2285. - version=NULL; // affix and dictionary file version string
  2286. - havecontclass=0; // flags of possible continuing classes (double affix)
  2287. - // LEMMA_PRESENT: not put root into the morphological output. Lemma presents
  2288. - // in morhological description in dictionary file. It's often combined with PSEUDOROOT.
  2289. - lemma_present = FLAG_NULL;
  2290. - circumfix = FLAG_NULL;
  2291. - onlyincompound = FLAG_NULL;
  2292. - maxngramsugs = -1; // undefined
  2293. - maxdiff = -1; // undefined
  2294. - onlymaxdiff = 0;
  2295. - maxcpdsugs = -1; // undefined
  2296. - nosplitsugs = 0;
  2297. - sugswithdots = 0;
  2298. - keepcase = 0;
  2299. - forceucase = 0;
  2300. - warn = 0;
  2301. - forbidwarn = 0;
  2302. - checksharps = 0;
  2303. - substandard = FLAG_NULL;
  2304. - fullstrip = 0;
  2305. -
  2306. - sfx = NULL;
  2307. - pfx = NULL;
  2308. -
  2309. - for (int i=0; i < SETSIZE; i++) {
  2310. - pStart[i] = NULL;
  2311. - sStart[i] = NULL;
  2312. - pFlag[i] = NULL;
  2313. - sFlag[i] = NULL;
  2314. - }
  2315. -
  2316. - for (int j=0; j < CONTSIZE; j++) {
  2317. - contclasses[j] = 0;
  2318. - }
  2319. -
  2320. - if (parse_file(aff_data, aff_len)) {
  2321. - HUNSPELL_WARNING(stderr, "Failure loading aff file \n");
  2322. - }
  2323. -
  2324. - if (cpdmin == -1) cpdmin = MINCPDLEN;
  2325. -
  2326. -}
  2327. -
  2328. -
  2329. -AffixMgr::~AffixMgr()
  2330. -{
  2331. - // pass through linked prefix entries and clean up
  2332. - for (int i=0; i < SETSIZE ;i++) {
  2333. - pFlag[i] = NULL;
  2334. - PfxEntry * ptr = pStart[i];
  2335. - PfxEntry * nptr = NULL;
  2336. - while (ptr) {
  2337. - nptr = ptr->getNext();
  2338. - delete(ptr);
  2339. - ptr = nptr;
  2340. - nptr = NULL;
  2341. - }
  2342. - }
  2343. -
  2344. - // pass through linked suffix entries and clean up
  2345. - for (int j=0; j < SETSIZE ; j++) {
  2346. - sFlag[j] = NULL;
  2347. - SfxEntry * ptr = sStart[j];
  2348. - SfxEntry * nptr = NULL;
  2349. - while (ptr) {
  2350. - nptr = ptr->getNext();
  2351. - delete(ptr);
  2352. - ptr = nptr;
  2353. - nptr = NULL;
  2354. - }
  2355. - sStart[j] = NULL;
  2356. - }
  2357. -
  2358. - if (keystring) free(keystring);
  2359. - keystring=NULL;
  2360. - if (trystring) free(trystring);
  2361. - trystring=NULL;
  2362. - if (encoding) free(encoding);
  2363. - encoding=NULL;
  2364. - if (maptable) {
  2365. - for (int j=0; j < nummap; j++) {
  2366. - for (int k=0; k < maptable[j].len; k++) {
  2367. - if (maptable[j].set[k]) free(maptable[j].set[k]);
  2368. - }
  2369. - free(maptable[j].set);
  2370. - maptable[j].set = NULL;
  2371. - maptable[j].len = 0;
  2372. - }
  2373. - free(maptable);
  2374. - maptable = NULL;
  2375. - }
  2376. - nummap = 0;
  2377. - if (breaktable) {
  2378. - for (int j=0; j < numbreak; j++) {
  2379. - if (breaktable[j]) free(breaktable[j]);
  2380. - breaktable[j] = NULL;
  2381. - }
  2382. - free(breaktable);
  2383. - breaktable = NULL;
  2384. - }
  2385. - numbreak = 0;
  2386. - if (reptable) {
  2387. - for (int j=0; j < numrep; j++) {
  2388. - free(reptable[j].pattern);
  2389. - free(reptable[j].pattern2);
  2390. - }
  2391. - free(reptable);
  2392. - reptable = NULL;
  2393. - }
  2394. - if (iconvtable) delete iconvtable;
  2395. - if (oconvtable) delete oconvtable;
  2396. - if (phone && phone->rules) {
  2397. - for (int j=0; j < phone->num + 1; j++) {
  2398. - free(phone->rules[j * 2]);
  2399. - free(phone->rules[j * 2 + 1]);
  2400. - }
  2401. - free(phone->rules);
  2402. - free(phone);
  2403. - phone = NULL;
  2404. - }
  2405. -
  2406. - if (defcpdtable) {
  2407. - for (int j=0; j < numdefcpd; j++) {
  2408. - free(defcpdtable[j].def);
  2409. - defcpdtable[j].def = NULL;
  2410. - }
  2411. - free(defcpdtable);
  2412. - defcpdtable = NULL;
  2413. - }
  2414. - numrep = 0;
  2415. - if (checkcpdtable) {
  2416. - for (int j=0; j < numcheckcpd; j++) {
  2417. - free(checkcpdtable[j].pattern);
  2418. - free(checkcpdtable[j].pattern2);
  2419. - free(checkcpdtable[j].pattern3);
  2420. - checkcpdtable[j].pattern = NULL;
  2421. - checkcpdtable[j].pattern2 = NULL;
  2422. - checkcpdtable[j].pattern3 = NULL;
  2423. - }
  2424. - free(checkcpdtable);
  2425. - checkcpdtable = NULL;
  2426. - }
  2427. - numcheckcpd = 0;
  2428. - FREE_FLAG(compoundflag);
  2429. - FREE_FLAG(compoundbegin);
  2430. - FREE_FLAG(compoundmiddle);
  2431. - FREE_FLAG(compoundend);
  2432. - FREE_FLAG(compoundpermitflag);
  2433. - FREE_FLAG(compoundforbidflag);
  2434. - FREE_FLAG(compoundroot);
  2435. - FREE_FLAG(forbiddenword);
  2436. - FREE_FLAG(nosuggest);
  2437. - FREE_FLAG(nongramsuggest);
  2438. - FREE_FLAG(needaffix);
  2439. - FREE_FLAG(lemma_present);
  2440. - FREE_FLAG(circumfix);
  2441. - FREE_FLAG(onlyincompound);
  2442. -
  2443. - cpdwordmax = 0;
  2444. - pHMgr = NULL;
  2445. - cpdmin = 0;
  2446. - cpdmaxsyllable = 0;
  2447. - if (cpdvowels) free(cpdvowels);
  2448. - if (cpdvowels_utf16) free(cpdvowels_utf16);
  2449. - if (cpdsyllablenum) free(cpdsyllablenum);
  2450. - free_utf_tbl();
  2451. - if (lang) free(lang);
  2452. - if (wordchars) free(wordchars);
  2453. - if (wordchars_utf16) free(wordchars_utf16);
  2454. - if (ignorechars) free(ignorechars);
  2455. - if (ignorechars_utf16) free(ignorechars_utf16);
  2456. - if (version) free(version);
  2457. - checknum=0;
  2458. -#ifdef MOZILLA_CLIENT
  2459. - delete [] csconv;
  2460. -#endif
  2461. -}
  2462. -
  2463. -void AffixMgr::finishFileMgr(FileMgr *afflst)
  2464. -{
  2465. - delete afflst;
  2466. -
  2467. - // convert affix trees to sorted list
  2468. - process_pfx_tree_to_list();
  2469. - process_sfx_tree_to_list();
  2470. -}
  2471. -
  2472. -// read in aff file and build up prefix and suffix entry objects
  2473. -int AffixMgr::parse_file(const char *aff_data, const size_t aff_len)
  2474. -{
  2475. - char * line; // io buffers
  2476. - char ft; // affix type
  2477. -
  2478. - // checking flag duplication
  2479. - char dupflags[CONTSIZE];
  2480. - char dupflags_ini = 1;
  2481. -
  2482. - // first line indicator for removing byte order mark
  2483. - int firstline = 1;
  2484. -
  2485. - // open the affix file
  2486. - FileMgr * afflst = new FileMgr(aff_data, aff_len);
  2487. - if (!afflst) {
  2488. - HUNSPELL_WARNING(stderr, "error: could not open affix description file \n");
  2489. - return 1;
  2490. - }
  2491. -
  2492. - // step one is to parse the affix file building up the internal
  2493. - // affix data structures
  2494. -
  2495. - // read in each line ignoring any that do not
  2496. - // start with a known line type indicator
  2497. - while ((line = afflst->getline()) != NULL) {
  2498. - mychomp(line);
  2499. -
  2500. - /* remove byte order mark */
  2501. - if (firstline) {
  2502. - firstline = 0;
  2503. - // Affix file begins with byte order mark: possible incompatibility with old Hunspell versions
  2504. - if (strncmp(line,"\xEF\xBB\xBF",3) == 0) {
  2505. - memmove(line, line+3, strlen(line+3)+1);
  2506. - }
  2507. - }
  2508. -
  2509. - /* parse in the keyboard string */
  2510. - if (strncmp(line,"KEY",3) == 0) {
  2511. - if (parse_string(line, &keystring, afflst->getlinenum())) {
  2512. - finishFileMgr(afflst);
  2513. - return 1;
  2514. - }
  2515. - }
  2516. -
  2517. - /* parse in the try string */
  2518. - if (strncmp(line,"TRY",3) == 0) {
  2519. - if (parse_string(line, &trystring, afflst->getlinenum())) {
  2520. - finishFileMgr(afflst);
  2521. - return 1;
  2522. - }
  2523. - }
  2524. -
  2525. - /* parse in the name of the character set used by the .dict and .aff */
  2526. - if (strncmp(line,"SET",3) == 0) {
  2527. - if (parse_string(line, &encoding, afflst->getlinenum())) {
  2528. - finishFileMgr(afflst);
  2529. - return 1;
  2530. - }
  2531. - if (strcmp(encoding, "UTF-8") == 0) {
  2532. - utf8 = 1;
  2533. -#ifndef OPENOFFICEORG
  2534. -#ifndef MOZILLA_CLIENT
  2535. - if (initialize_utf_tbl()) return 1;
  2536. -#endif
  2537. -#endif
  2538. - }
  2539. - }
  2540. -
  2541. - /* parse COMPLEXPREFIXES for agglutinative languages with right-to-left writing system */
  2542. - if (strncmp(line,"COMPLEXPREFIXES",15) == 0)
  2543. - complexprefixes = 1;
  2544. -
  2545. - /* parse in the flag used by the controlled compound words */
  2546. - if (strncmp(line,"COMPOUNDFLAG",12) == 0) {
  2547. - if (parse_flag(line, &compoundflag, afflst)) {
  2548. - finishFileMgr(afflst);
  2549. - return 1;
  2550. - }
  2551. - }
  2552. -
  2553. - /* parse in the flag used by compound words */
  2554. - if (strncmp(line,"COMPOUNDBEGIN",13) == 0) {
  2555. - if (complexprefixes) {
  2556. - if (parse_flag(line, &compoundend, afflst)) {
  2557. - finishFileMgr(afflst);
  2558. - return 1;
  2559. - }
  2560. - } else {
  2561. - if (parse_flag(line, &compoundbegin, afflst)) {
  2562. - finishFileMgr(afflst);
  2563. - return 1;
  2564. - }
  2565. - }
  2566. - }
  2567. -
  2568. - /* parse in the flag used by compound words */
  2569. - if (strncmp(line,"COMPOUNDMIDDLE",14) == 0) {
  2570. - if (parse_flag(line, &compoundmiddle, afflst)) {
  2571. - finishFileMgr(afflst);
  2572. - return 1;
  2573. - }
  2574. - }
  2575. - /* parse in the flag used by compound words */
  2576. - if (strncmp(line,"COMPOUNDEND",11) == 0) {
  2577. - if (complexprefixes) {
  2578. - if (parse_flag(line, &compoundbegin, afflst)) {
  2579. - finishFileMgr(afflst);
  2580. - return 1;
  2581. - }
  2582. - } else {
  2583. - if (parse_flag(line, &compoundend, afflst)) {
  2584. - finishFileMgr(afflst);
  2585. - return 1;
  2586. - }
  2587. - }
  2588. - }
  2589. -
  2590. - /* parse in the data used by compound_check() method */
  2591. - if (strncmp(line,"COMPOUNDWORDMAX",15) == 0) {
  2592. - if (parse_num(line, &cpdwordmax, afflst)) {
  2593. - finishFileMgr(afflst);
  2594. - return 1;
  2595. - }
  2596. - }
  2597. -
  2598. - /* parse in the flag sign compounds in dictionary */
  2599. - if (strncmp(line,"COMPOUNDROOT",12) == 0) {
  2600. - if (parse_flag(line, &compoundroot, afflst)) {
  2601. - finishFileMgr(afflst);
  2602. - return 1;
  2603. - }
  2604. - }
  2605. -
  2606. - /* parse in the flag used by compound_check() method */
  2607. - if (strncmp(line,"COMPOUNDPERMITFLAG",18) == 0) {
  2608. - if (parse_flag(line, &compoundpermitflag, afflst)) {
  2609. - finishFileMgr(afflst);
  2610. - return 1;
  2611. - }
  2612. - }
  2613. -
  2614. - /* parse in the flag used by compound_check() method */
  2615. - if (strncmp(line,"COMPOUNDFORBIDFLAG",18) == 0) {
  2616. - if (parse_flag(line, &compoundforbidflag, afflst)) {
  2617. - finishFileMgr(afflst);
  2618. - return 1;
  2619. - }
  2620. - }
  2621. -
  2622. - if (strncmp(line,"COMPOUNDMORESUFFIXES",20) == 0) {
  2623. - compoundmoresuffixes = 1;
  2624. - }
  2625. -
  2626. - if (strncmp(line,"CHECKCOMPOUNDDUP",16) == 0) {
  2627. - checkcompounddup = 1;
  2628. - }
  2629. -
  2630. - if (strncmp(line,"CHECKCOMPOUNDREP",16) == 0) {
  2631. - checkcompoundrep = 1;
  2632. - }
  2633. -
  2634. - if (strncmp(line,"CHECKCOMPOUNDTRIPLE",19) == 0) {
  2635. - checkcompoundtriple = 1;
  2636. - }
  2637. -
  2638. - if (strncmp(line,"SIMPLIFIEDTRIPLE",16) == 0) {
  2639. - simplifiedtriple = 1;
  2640. - }
  2641. -
  2642. - if (strncmp(line,"CHECKCOMPOUNDCASE",17) == 0) {
  2643. - checkcompoundcase = 1;
  2644. - }
  2645. -
  2646. - if (strncmp(line,"NOSUGGEST",9) == 0) {
  2647. - if (parse_flag(line, &nosuggest, afflst)) {
  2648. - finishFileMgr(afflst);
  2649. - return 1;
  2650. - }
  2651. - }
  2652. -
  2653. - if (strncmp(line,"NONGRAMSUGGEST",14) == 0) {
  2654. - if (parse_flag(line, &nongramsuggest, afflst)) {
  2655. - finishFileMgr(afflst);
  2656. - return 1;
  2657. - }
  2658. - }
  2659. -
  2660. - /* parse in the flag used by forbidden words */
  2661. - if (strncmp(line,"FORBIDDENWORD",13) == 0) {
  2662. - if (parse_flag(line, &forbiddenword, afflst)) {
  2663. - finishFileMgr(afflst);
  2664. - return 1;
  2665. - }
  2666. - }
  2667. -
  2668. - /* parse in the flag used by forbidden words */
  2669. - if (strncmp(line,"LEMMA_PRESENT",13) == 0) {
  2670. - if (parse_flag(line, &lemma_present, afflst)) {
  2671. - finishFileMgr(afflst);
  2672. - return 1;
  2673. - }
  2674. - }
  2675. -
  2676. - /* parse in the flag used by circumfixes */
  2677. - if (strncmp(line,"CIRCUMFIX",9) == 0) {
  2678. - if (parse_flag(line, &circumfix, afflst)) {
  2679. - finishFileMgr(afflst);
  2680. - return 1;
  2681. - }
  2682. - }
  2683. -
  2684. - /* parse in the flag used by fogemorphemes */
  2685. - if (strncmp(line,"ONLYINCOMPOUND",14) == 0) {
  2686. - if (parse_flag(line, &onlyincompound, afflst)) {
  2687. - finishFileMgr(afflst);
  2688. - return 1;
  2689. - }
  2690. - }
  2691. -
  2692. - /* parse in the flag used by `needaffixs' */
  2693. - if (strncmp(line,"PSEUDOROOT",10) == 0) {
  2694. - if (parse_flag(line, &needaffix, afflst)) {
  2695. - finishFileMgr(afflst);
  2696. - return 1;
  2697. - }
  2698. - }
  2699. -
  2700. - /* parse in the flag used by `needaffixs' */
  2701. - if (strncmp(line,"NEEDAFFIX",9) == 0) {
  2702. - if (parse_flag(line, &needaffix, afflst)) {
  2703. - finishFileMgr(afflst);
  2704. - return 1;
  2705. - }
  2706. - }
  2707. -
  2708. - /* parse in the minimal length for words in compounds */
  2709. - if (strncmp(line,"COMPOUNDMIN",11) == 0) {
  2710. - if (parse_num(line, &cpdmin, afflst)) {
  2711. - finishFileMgr(afflst);
  2712. - return 1;
  2713. - }
  2714. - if (cpdmin < 1) cpdmin = 1;
  2715. - }
  2716. -
  2717. - /* parse in the max. words and syllables in compounds */
  2718. - if (strncmp(line,"COMPOUNDSYLLABLE",16) == 0) {
  2719. - if (parse_cpdsyllable(line, afflst)) {
  2720. - finishFileMgr(afflst);
  2721. - return 1;
  2722. - }
  2723. - }
  2724. -
  2725. - /* parse in the flag used by compound_check() method */
  2726. - if (strncmp(line,"SYLLABLENUM",11) == 0) {
  2727. - if (parse_string(line, &cpdsyllablenum, afflst->getlinenum())) {
  2728. - finishFileMgr(afflst);
  2729. - return 1;
  2730. - }
  2731. - }
  2732. -
  2733. - /* parse in the flag used by the controlled compound words */
  2734. - if (strncmp(line,"CHECKNUM",8) == 0) {
  2735. - checknum=1;
  2736. - }
  2737. -
  2738. - /* parse in the extra word characters */
  2739. - if (strncmp(line,"WORDCHARS",9) == 0) {
  2740. - if (parse_array(line, &wordchars, &wordchars_utf16, &wordchars_utf16_len, utf8, afflst->getlinenum())) {
  2741. - finishFileMgr(afflst);
  2742. - return 1;
  2743. - }
  2744. - }
  2745. -
  2746. - /* parse in the ignored characters (for example, Arabic optional diacretics charachters */
  2747. - if (strncmp(line,"IGNORE",6) == 0) {
  2748. - if (parse_array(line, &ignorechars, &ignorechars_utf16, &ignorechars_utf16_len, utf8, afflst->getlinenum())) {
  2749. - finishFileMgr(afflst);
  2750. - return 1;
  2751. - }
  2752. - }
  2753. -
  2754. - /* parse in the typical fault correcting table */
  2755. - if (strncmp(line,"REP",3) == 0) {
  2756. - if (parse_reptable(line, afflst)) {
  2757. - finishFileMgr(afflst);
  2758. - return 1;
  2759. - }
  2760. - }
  2761. -
  2762. - /* parse in the input conversion table */
  2763. - if (strncmp(line,"ICONV",5) == 0) {
  2764. - if (parse_convtable(line, afflst, &iconvtable, "ICONV")) {
  2765. - finishFileMgr(afflst);
  2766. - return 1;
  2767. - }
  2768. - }
  2769. -
  2770. - /* parse in the input conversion table */
  2771. - if (strncmp(line,"OCONV",5) == 0) {
  2772. - if (parse_convtable(line, afflst, &oconvtable, "OCONV")) {
  2773. - finishFileMgr(afflst);
  2774. - return 1;
  2775. - }
  2776. - }
  2777. -
  2778. - /* parse in the phonetic translation table */
  2779. - if (strncmp(line,"PHONE",5) == 0) {
  2780. - if (parse_phonetable(line, afflst)) {
  2781. - finishFileMgr(afflst);
  2782. - return 1;
  2783. - }
  2784. - }
  2785. -
  2786. - /* parse in the checkcompoundpattern table */
  2787. - if (strncmp(line,"CHECKCOMPOUNDPATTERN",20) == 0) {
  2788. - if (parse_checkcpdtable(line, afflst)) {
  2789. - finishFileMgr(afflst);
  2790. - return 1;
  2791. - }
  2792. - }
  2793. -
  2794. - /* parse in the defcompound table */
  2795. - if (strncmp(line,"COMPOUNDRULE",12) == 0) {
  2796. - if (parse_defcpdtable(line, afflst)) {
  2797. - finishFileMgr(afflst);
  2798. - return 1;
  2799. - }
  2800. - }
  2801. -
  2802. - /* parse in the related character map table */
  2803. - if (strncmp(line,"MAP",3) == 0) {
  2804. - if (parse_maptable(line, afflst)) {
  2805. - finishFileMgr(afflst);
  2806. - return 1;
  2807. - }
  2808. - }
  2809. -
  2810. - /* parse in the word breakpoints table */
  2811. - if (strncmp(line,"BREAK",5) == 0) {
  2812. - if (parse_breaktable(line, afflst)) {
  2813. - finishFileMgr(afflst);
  2814. - return 1;
  2815. - }
  2816. - }
  2817. -
  2818. - /* parse in the language for language specific codes */
  2819. - if (strncmp(line,"LANG",4) == 0) {
  2820. - if (parse_string(line, &lang, afflst->getlinenum())) {
  2821. - finishFileMgr(afflst);
  2822. - return 1;
  2823. - }
  2824. - langnum = get_lang_num(lang);
  2825. - }
  2826. -
  2827. - if (strncmp(line,"VERSION",7) == 0) {
  2828. - for(line = line + 7; *line == ' ' || *line == '\t'; line++);
  2829. - version = mystrdup(line);
  2830. - }
  2831. -
  2832. - if (strncmp(line,"MAXNGRAMSUGS",12) == 0) {
  2833. - if (parse_num(line, &maxngramsugs, afflst)) {
  2834. - finishFileMgr(afflst);
  2835. - return 1;
  2836. - }
  2837. - }
  2838. -
  2839. - if (strncmp(line,"ONLYMAXDIFF", 11) == 0)
  2840. - onlymaxdiff = 1;
  2841. -
  2842. - if (strncmp(line,"MAXDIFF",7) == 0) {
  2843. - if (parse_num(line, &maxdiff, afflst)) {
  2844. - finishFileMgr(afflst);
  2845. - return 1;
  2846. - }
  2847. - }
  2848. -
  2849. - if (strncmp(line,"MAXCPDSUGS",10) == 0) {
  2850. - if (parse_num(line, &maxcpdsugs, afflst)) {
  2851. - finishFileMgr(afflst);
  2852. - return 1;
  2853. - }
  2854. - }
  2855. -
  2856. - if (strncmp(line,"NOSPLITSUGS",11) == 0) {
  2857. - nosplitsugs=1;
  2858. - }
  2859. -
  2860. - if (strncmp(line,"FULLSTRIP",9) == 0) {
  2861. - fullstrip=1;
  2862. - }
  2863. -
  2864. - if (strncmp(line,"SUGSWITHDOTS",12) == 0) {
  2865. - sugswithdots=1;
  2866. - }
  2867. -
  2868. - /* parse in the flag used by forbidden words */
  2869. - if (strncmp(line,"KEEPCASE",8) == 0) {
  2870. - if (parse_flag(line, &keepcase, afflst)) {
  2871. - finishFileMgr(afflst);
  2872. - return 1;
  2873. - }
  2874. - }
  2875. -
  2876. - /* parse in the flag used by `forceucase' */
  2877. - if (strncmp(line,"FORCEUCASE",10) == 0) {
  2878. - if (parse_flag(line, &forceucase, afflst)) {
  2879. - finishFileMgr(afflst);
  2880. - return 1;
  2881. - }
  2882. - }
  2883. -
  2884. - /* parse in the flag used by `warn' */
  2885. - if (strncmp(line,"WARN",4) == 0) {
  2886. - if (parse_flag(line, &warn, afflst)) {
  2887. - finishFileMgr(afflst);
  2888. - return 1;
  2889. - }
  2890. - }
  2891. -
  2892. - if (strncmp(line,"FORBIDWARN",10) == 0) {
  2893. - forbidwarn=1;
  2894. - }
  2895. -
  2896. - /* parse in the flag used by the affix generator */
  2897. - if (strncmp(line,"SUBSTANDARD",11) == 0) {
  2898. - if (parse_flag(line, &substandard, afflst)) {
  2899. - finishFileMgr(afflst);
  2900. - return 1;
  2901. - }
  2902. - }
  2903. -
  2904. - if (strncmp(line,"CHECKSHARPS",11) == 0) {
  2905. - checksharps=1;
  2906. - }
  2907. -
  2908. - /* parse this affix: P - prefix, S - suffix */
  2909. - ft = ' ';
  2910. - if (strncmp(line,"PFX",3) == 0) ft = complexprefixes ? 'S' : 'P';
  2911. - if (strncmp(line,"SFX",3) == 0) ft = complexprefixes ? 'P' : 'S';
  2912. - if (ft != ' ') {
  2913. - if (dupflags_ini) {
  2914. - memset(dupflags, 0, sizeof(dupflags));
  2915. - dupflags_ini = 0;
  2916. - }
  2917. - if (parse_affix(line, ft, afflst, dupflags)) {
  2918. - finishFileMgr(afflst);
  2919. - return 1;
  2920. - }
  2921. - }
  2922. - }
  2923. -
  2924. - finishFileMgr(afflst);
  2925. - // affix trees are sorted now
  2926. -
  2927. - // now we can speed up performance greatly taking advantage of the
  2928. - // relationship between the affixes and the idea of "subsets".
  2929. -
  2930. - // View each prefix as a potential leading subset of another and view
  2931. - // each suffix (reversed) as a potential trailing subset of another.
  2932. -
  2933. - // To illustrate this relationship if we know the prefix "ab" is found in the
  2934. - // word to examine, only prefixes that "ab" is a leading subset of need be examined.
  2935. - // Furthermore is "ab" is not present then none of the prefixes that "ab" is
  2936. - // is a subset need be examined.
  2937. - // The same argument goes for suffix string that are reversed.
  2938. -
  2939. - // Then to top this off why not examine the first char of the word to quickly
  2940. - // limit the set of prefixes to examine (i.e. the prefixes to examine must
  2941. - // be leading supersets of the first character of the word (if they exist)
  2942. -
  2943. - // To take advantage of this "subset" relationship, we need to add two links
  2944. - // from entry. One to take next if the current prefix is found (call it nexteq)
  2945. - // and one to take next if the current prefix is not found (call it nextne).
  2946. -
  2947. - // Since we have built ordered lists, all that remains is to properly initialize
  2948. - // the nextne and nexteq pointers that relate them
  2949. -
  2950. - process_pfx_order();
  2951. - process_sfx_order();
  2952. -
  2953. - /* get encoding for CHECKCOMPOUNDCASE */
  2954. - if (!utf8) {
  2955. - char * enc = get_encoding();
  2956. - csconv = get_current_cs(enc);
  2957. - free(enc);
  2958. - enc = NULL;
  2959. -
  2960. - char expw[MAXLNLEN];
  2961. - if (wordchars) {
  2962. - strcpy(expw, wordchars);
  2963. - free(wordchars);
  2964. - } else *expw = '\0';
  2965. -
  2966. - for (int i = 0; i <= 255; i++) {
  2967. - if ( (csconv[i].cupper != csconv[i].clower) &&
  2968. - (! strchr(expw, (char) i))) {
  2969. - *(expw + strlen(expw) + 1) = '\0';
  2970. - *(expw + strlen(expw)) = (char) i;
  2971. - }
  2972. - }
  2973. -
  2974. - wordchars = mystrdup(expw);
  2975. - }
  2976. -
  2977. - // default BREAK definition
  2978. - if (numbreak == -1) {
  2979. - breaktable = (char **) malloc(sizeof(char *) * 3);
  2980. - if (!breaktable) return 1;
  2981. - breaktable[0] = mystrdup("-");
  2982. - breaktable[1] = mystrdup("^-");
  2983. - breaktable[2] = mystrdup("-$");
  2984. - if (breaktable[0] && breaktable[1] && breaktable[2]) numbreak = 3;
  2985. - }
  2986. - return 0;
  2987. -}
  2988. -
  2989. -
  2990. -// we want to be able to quickly access prefix information
  2991. -// both by prefix flag, and sorted by prefix string itself
  2992. -// so we need to set up two indexes
  2993. -
  2994. -int AffixMgr::build_pfxtree(PfxEntry* pfxptr)
  2995. -{
  2996. - PfxEntry * ptr;
  2997. - PfxEntry * pptr;
  2998. - PfxEntry * ep = pfxptr;
  2999. -
  3000. - // get the right starting points
  3001. - const char * key = ep->getKey();
  3002. - const unsigned char flg = (unsigned char) (ep->getFlag() & 0x00FF);
  3003. -
  3004. - // first index by flag which must exist
  3005. - ptr = pFlag[flg];
  3006. - ep->setFlgNxt(ptr);
  3007. - pFlag[flg] = ep;
  3008. -
  3009. -
  3010. - // handle the special case of null affix string
  3011. - if (strlen(key) == 0) {
  3012. - // always inset them at head of list at element 0
  3013. - ptr = pStart[0];
  3014. - ep->setNext(ptr);
  3015. - pStart[0] = ep;
  3016. - return 0;
  3017. - }
  3018. -
  3019. - // now handle the normal case
  3020. - ep->setNextEQ(NULL);
  3021. - ep->setNextNE(NULL);
  3022. -
  3023. - unsigned char sp = *((const unsigned char *)key);
  3024. - ptr = pStart[sp];
  3025. -
  3026. - // handle the first insert
  3027. - if (!ptr) {
  3028. - pStart[sp] = ep;
  3029. - return 0;
  3030. - }
  3031. -
  3032. -
  3033. - // otherwise use binary tree insertion so that a sorted
  3034. - // list can easily be generated later
  3035. - pptr = NULL;
  3036. - for (;;) {
  3037. - pptr = ptr;
  3038. - if (strcmp(ep->getKey(), ptr->getKey() ) <= 0) {
  3039. - ptr = ptr->getNextEQ();
  3040. - if (!ptr) {
  3041. - pptr->setNextEQ(ep);
  3042. - break;
  3043. - }
  3044. - } else {
  3045. - ptr = ptr->getNextNE();
  3046. - if (!ptr) {
  3047. - pptr->setNextNE(ep);
  3048. - break;
  3049. - }
  3050. - }
  3051. - }
  3052. - return 0;
  3053. -}
  3054. -
  3055. -// we want to be able to quickly access suffix information
  3056. -// both by suffix flag, and sorted by the reverse of the
  3057. -// suffix string itself; so we need to set up two indexes
  3058. -int AffixMgr::build_sfxtree(SfxEntry* sfxptr)
  3059. -{
  3060. - SfxEntry * ptr;
  3061. - SfxEntry * pptr;
  3062. - SfxEntry * ep = sfxptr;
  3063. -
  3064. - /* get the right starting point */
  3065. - const char * key = ep->getKey();
  3066. - const unsigned char flg = (unsigned char) (ep->getFlag() & 0x00FF);
  3067. -
  3068. - // first index by flag which must exist
  3069. - ptr = sFlag[flg];
  3070. - ep->setFlgNxt(ptr);
  3071. - sFlag[flg] = ep;
  3072. -
  3073. - // next index by affix string
  3074. -
  3075. - // handle the special case of null affix string
  3076. - if (strlen(key) == 0) {
  3077. - // always inset them at head of list at element 0
  3078. - ptr = sStart[0];
  3079. - ep->setNext(ptr);
  3080. - sStart[0] = ep;
  3081. - return 0;
  3082. - }
  3083. -
  3084. - // now handle the normal case
  3085. - ep->setNextEQ(NULL);
  3086. - ep->setNextNE(NULL);
  3087. -
  3088. - unsigned char sp = *((const unsigned char *)key);
  3089. - ptr = sStart[sp];
  3090. -
  3091. - // handle the first insert
  3092. - if (!ptr) {
  3093. - sStart[sp] = ep;
  3094. - return 0;
  3095. - }
  3096. -
  3097. - // otherwise use binary tree insertion so that a sorted
  3098. - // list can easily be generated later
  3099. - pptr = NULL;
  3100. - for (;;) {
  3101. - pptr = ptr;
  3102. - if (strcmp(ep->getKey(), ptr->getKey() ) <= 0) {
  3103. - ptr = ptr->getNextEQ();
  3104. - if (!ptr) {
  3105. - pptr->setNextEQ(ep);
  3106. - break;
  3107. - }
  3108. - } else {
  3109. - ptr = ptr->getNextNE();
  3110. - if (!ptr) {
  3111. - pptr->setNextNE(ep);
  3112. - break;
  3113. - }
  3114. - }
  3115. - }
  3116. - return 0;
  3117. -}
  3118. -
  3119. -// convert from binary tree to sorted list
  3120. -int AffixMgr::process_pfx_tree_to_list()
  3121. -{
  3122. - for (int i=1; i< SETSIZE; i++) {
  3123. - pStart[i] = process_pfx_in_order(pStart[i],NULL);
  3124. - }
  3125. - return 0;
  3126. -}
  3127. -
  3128. -
  3129. -PfxEntry* AffixMgr::process_pfx_in_order(PfxEntry* ptr, PfxEntry* nptr)
  3130. -{
  3131. - if (ptr) {
  3132. - nptr = process_pfx_in_order(ptr->getNextNE(), nptr);
  3133. - ptr->setNext(nptr);
  3134. - nptr = process_pfx_in_order(ptr->getNextEQ(), ptr);
  3135. - }
  3136. - return nptr;
  3137. -}
  3138. -
  3139. -
  3140. -// convert from binary tree to sorted list
  3141. -int AffixMgr:: process_sfx_tree_to_list()
  3142. -{
  3143. - for (int i=1; i< SETSIZE; i++) {
  3144. - sStart[i] = process_sfx_in_order(sStart[i],NULL);
  3145. - }
  3146. - return 0;
  3147. -}
  3148. -
  3149. -SfxEntry* AffixMgr::process_sfx_in_order(SfxEntry* ptr, SfxEntry* nptr)
  3150. -{
  3151. - if (ptr) {
  3152. - nptr = process_sfx_in_order(ptr->getNextNE(), nptr);
  3153. - ptr->setNext(nptr);
  3154. - nptr = process_sfx_in_order(ptr->getNextEQ(), ptr);
  3155. - }
  3156. - return nptr;
  3157. -}
  3158. -
  3159. -
  3160. -// reinitialize the PfxEntry links NextEQ and NextNE to speed searching
  3161. -// using the idea of leading subsets this time
  3162. -int AffixMgr::process_pfx_order()
  3163. -{
  3164. - PfxEntry* ptr;
  3165. -
  3166. - // loop through each prefix list starting point
  3167. - for (int i=1; i < SETSIZE; i++) {
  3168. -
  3169. - ptr = pStart[i];
  3170. -
  3171. - // look through the remainder of the list
  3172. - // and find next entry with affix that
  3173. - // the current one is not a subset of
  3174. - // mark that as destination for NextNE
  3175. - // use next in list that you are a subset
  3176. - // of as NextEQ
  3177. -
  3178. - for (; ptr != NULL; ptr = ptr->getNext()) {
  3179. -
  3180. - PfxEntry * nptr = ptr->getNext();
  3181. - for (; nptr != NULL; nptr = nptr->getNext()) {
  3182. - if (! isSubset( ptr->getKey() , nptr->getKey() )) break;
  3183. - }
  3184. - ptr->setNextNE(nptr);
  3185. - ptr->setNextEQ(NULL);
  3186. - if ((ptr->getNext()) && isSubset(ptr->getKey() , (ptr->getNext())->getKey()))
  3187. - ptr->setNextEQ(ptr->getNext());
  3188. - }
  3189. -
  3190. - // now clean up by adding smart search termination strings:
  3191. - // if you are already a superset of the previous prefix
  3192. - // but not a subset of the next, search can end here
  3193. - // so set NextNE properly
  3194. -
  3195. - ptr = pStart[i];
  3196. - for (; ptr != NULL; ptr = ptr->getNext()) {
  3197. - PfxEntry * nptr = ptr->getNext();
  3198. - PfxEntry * mptr = NULL;
  3199. - for (; nptr != NULL; nptr = nptr->getNext()) {
  3200. - if (! isSubset(ptr->getKey(),nptr->getKey())) break;
  3201. - mptr = nptr;
  3202. - }
  3203. - if (mptr) mptr->setNextNE(NULL);
  3204. - }
  3205. - }
  3206. - return 0;
  3207. -}
  3208. -
  3209. -// initialize the SfxEntry links NextEQ and NextNE to speed searching
  3210. -// using the idea of leading subsets this time
  3211. -int AffixMgr::process_sfx_order()
  3212. -{
  3213. - SfxEntry* ptr;
  3214. -
  3215. - // loop through each prefix list starting point
  3216. - for (int i=1; i < SETSIZE; i++) {
  3217. -
  3218. - ptr = sStart[i];
  3219. -
  3220. - // look through the remainder of the list
  3221. - // and find next entry with affix that
  3222. - // the current one is not a subset of
  3223. - // mark that as destination for NextNE
  3224. - // use next in list that you are a subset
  3225. - // of as NextEQ
  3226. -
  3227. - for (; ptr != NULL; ptr = ptr->getNext()) {
  3228. - SfxEntry * nptr = ptr->getNext();
  3229. - for (; nptr != NULL; nptr = nptr->getNext()) {
  3230. - if (! isSubset(ptr->getKey(),nptr->getKey())) break;
  3231. - }
  3232. - ptr->setNextNE(nptr);
  3233. - ptr->setNextEQ(NULL);
  3234. - if ((ptr->getNext()) && isSubset(ptr->getKey(),(ptr->getNext())->getKey()))
  3235. - ptr->setNextEQ(ptr->getNext());
  3236. - }
  3237. -
  3238. -
  3239. - // now clean up by adding smart search termination strings:
  3240. - // if you are already a superset of the previous suffix
  3241. - // but not a subset of the next, search can end here
  3242. - // so set NextNE properly
  3243. -
  3244. - ptr = sStart[i];
  3245. - for (; ptr != NULL; ptr = ptr->getNext()) {
  3246. - SfxEntry * nptr = ptr->getNext();
  3247. - SfxEntry * mptr = NULL;
  3248. - for (; nptr != NULL; nptr = nptr->getNext()) {
  3249. - if (! isSubset(ptr->getKey(),nptr->getKey())) break;
  3250. - mptr = nptr;
  3251. - }
  3252. - if (mptr) mptr->setNextNE(NULL);
  3253. - }
  3254. - }
  3255. - return 0;
  3256. -}
  3257. -
  3258. -// add flags to the result for dictionary debugging
  3259. -void AffixMgr::debugflag(char * result, unsigned short flag) {
  3260. - char * st = encode_flag(flag);
  3261. - mystrcat(result, " ", MAXLNLEN);
  3262. - mystrcat(result, MORPH_FLAG, MAXLNLEN);
  3263. - if (st) {
  3264. - mystrcat(result, st, MAXLNLEN);
  3265. - free(st);
  3266. - }
  3267. -}
  3268. -
  3269. -// calculate the character length of the condition
  3270. -int AffixMgr::condlen(char * st)
  3271. -{
  3272. - int l = 0;
  3273. - bool group = false;
  3274. - for(; *st; st++) {
  3275. - if (*st == '[') {
  3276. - group = true;
  3277. - l++;
  3278. - } else if (*st == ']') group = false;
  3279. - else if (!group && (!utf8 ||
  3280. - (!(*st & 0x80) || ((*st & 0xc0) == 0x80)))) l++;
  3281. - }
  3282. - return l;
  3283. -}
  3284. -
  3285. -int AffixMgr::encodeit(affentry &entry, char * cs)
  3286. -{
  3287. - if (strcmp(cs,".") != 0) {
  3288. - entry.numconds = (char) condlen(cs);
  3289. - strncpy(entry.c.conds, cs, MAXCONDLEN);
  3290. - // long condition (end of conds padded by strncpy)
  3291. - if (entry.c.conds[MAXCONDLEN - 1] && cs[MAXCONDLEN]) {
  3292. - entry.opts += aeLONGCOND;
  3293. - entry.c.l.conds2 = mystrdup(cs + MAXCONDLEN_1);
  3294. - if (!entry.c.l.conds2) return 1;
  3295. - }
  3296. - } else {
  3297. - entry.numconds = 0;
  3298. - entry.c.conds[0] = '\0';
  3299. - }
  3300. - return 0;
  3301. -}
  3302. -
  3303. -// return 1 if s1 is a leading subset of s2 (dots are for infixes)
  3304. -inline int AffixMgr::isSubset(const char * s1, const char * s2)
  3305. - {
  3306. - while (((*s1 == *s2) || (*s1 == '.')) && (*s1 != '\0')) {
  3307. - s1++;
  3308. - s2++;
  3309. - }
  3310. - return (*s1 == '\0');
  3311. - }
  3312. -
  3313. -
  3314. -// check word for prefixes
  3315. -struct hentry * AffixMgr::prefix_check(const char * word, int len, char in_compound,
  3316. - const FLAG needflag)
  3317. -{
  3318. - struct hentry * rv= NULL;
  3319. -
  3320. - pfx = NULL;
  3321. - pfxappnd = NULL;
  3322. - sfxappnd = NULL;
  3323. -
  3324. - // first handle the special case of 0 length prefixes
  3325. - PfxEntry * pe = pStart[0];
  3326. - while (pe) {
  3327. - if (
  3328. - // fogemorpheme
  3329. - ((in_compound != IN_CPD_NOT) || !(pe->getCont() &&
  3330. - (TESTAFF(pe->getCont(), onlyincompound, pe->getContLen())))) &&
  3331. - // permit prefixes in compounds
  3332. - ((in_compound != IN_CPD_END) || (pe->getCont() &&
  3333. - (TESTAFF(pe->getCont(), compoundpermitflag, pe->getContLen()))))
  3334. - ) {
  3335. - // check prefix
  3336. - rv = pe->checkword(word, len, in_compound, needflag);
  3337. - if (rv) {
  3338. - pfx=pe; // BUG: pfx not stateless
  3339. - return rv;
  3340. - }
  3341. - }
  3342. - pe = pe->getNext();
  3343. - }
  3344. -
  3345. - // now handle the general case
  3346. - unsigned char sp = *((const unsigned char *)word);
  3347. - PfxEntry * pptr = pStart[sp];
  3348. -
  3349. - while (pptr) {
  3350. - if (isSubset(pptr->getKey(),word)) {
  3351. - if (
  3352. - // fogemorpheme
  3353. - ((in_compound != IN_CPD_NOT) || !(pptr->getCont() &&
  3354. - (TESTAFF(pptr->getCont(), onlyincompound, pptr->getContLen())))) &&
  3355. - // permit prefixes in compounds
  3356. - ((in_compound != IN_CPD_END) || (pptr->getCont() &&
  3357. - (TESTAFF(pptr->getCont(), compoundpermitflag, pptr->getContLen()))))
  3358. - ) {
  3359. - // check prefix
  3360. - rv = pptr->checkword(word, len, in_compound, needflag);
  3361. - if (rv) {
  3362. - pfx=pptr; // BUG: pfx not stateless
  3363. - return rv;
  3364. - }
  3365. - }
  3366. - pptr = pptr->getNextEQ();
  3367. - } else {
  3368. - pptr = pptr->getNextNE();
  3369. - }
  3370. - }
  3371. -
  3372. - return NULL;
  3373. -}
  3374. -
  3375. -// check word for prefixes
  3376. -struct hentry * AffixMgr::prefix_check_twosfx(const char * word, int len,
  3377. - char in_compound, const FLAG needflag)
  3378. -{
  3379. - struct hentry * rv= NULL;
  3380. -
  3381. - pfx = NULL;
  3382. - sfxappnd = NULL;
  3383. -
  3384. - // first handle the special case of 0 length prefixes
  3385. - PfxEntry * pe = pStart[0];
  3386. -
  3387. - while (pe) {
  3388. - rv = pe->check_twosfx(word, len, in_compound, needflag);
  3389. - if (rv) return rv;
  3390. - pe = pe->getNext();
  3391. - }
  3392. -
  3393. - // now handle the general case
  3394. - unsigned char sp = *((const unsigned char *)word);
  3395. - PfxEntry * pptr = pStart[sp];
  3396. -
  3397. - while (pptr) {
  3398. - if (isSubset(pptr->getKey(),word)) {
  3399. - rv = pptr->check_twosfx(word, len, in_compound, needflag);
  3400. - if (rv) {
  3401. - pfx = pptr;
  3402. - return rv;
  3403. - }
  3404. - pptr = pptr->getNextEQ();
  3405. - } else {
  3406. - pptr = pptr->getNextNE();
  3407. - }
  3408. - }
  3409. -
  3410. - return NULL;
  3411. -}
  3412. -
  3413. -// check word for prefixes
  3414. -char * AffixMgr::prefix_check_morph(const char * word, int len, char in_compound,
  3415. - const FLAG needflag)
  3416. -{
  3417. - char * st;
  3418. -
  3419. - char result[MAXLNLEN];
  3420. - result[0] = '\0';
  3421. -
  3422. - pfx = NULL;
  3423. - sfxappnd = NULL;
  3424. -
  3425. - // first handle the special case of 0 length prefixes
  3426. - PfxEntry * pe = pStart[0];
  3427. - while (pe) {
  3428. - st = pe->check_morph(word,len,in_compound, needflag);
  3429. - if (st) {
  3430. - mystrcat(result, st, MAXLNLEN);
  3431. - free(st);
  3432. - }
  3433. - // if (rv) return rv;
  3434. - pe = pe->getNext();
  3435. - }
  3436. -
  3437. - // now handle the general case
  3438. - unsigned char sp = *((const unsigned char *)word);
  3439. - PfxEntry * pptr = pStart[sp];
  3440. -
  3441. - while (pptr) {
  3442. - if (isSubset(pptr->getKey(),word)) {
  3443. - st = pptr->check_morph(word,len,in_compound, needflag);
  3444. - if (st) {
  3445. - // fogemorpheme
  3446. - if ((in_compound != IN_CPD_NOT) || !((pptr->getCont() &&
  3447. - (TESTAFF(pptr->getCont(), onlyincompound, pptr->getContLen()))))) {
  3448. - mystrcat(result, st, MAXLNLEN);
  3449. - pfx = pptr;
  3450. - }
  3451. - free(st);
  3452. - }
  3453. - pptr = pptr->getNextEQ();
  3454. - } else {
  3455. - pptr = pptr->getNextNE();
  3456. - }
  3457. - }
  3458. -
  3459. - if (*result) return mystrdup(result);
  3460. - return NULL;
  3461. -}
  3462. -
  3463. -
  3464. -// check word for prefixes
  3465. -char * AffixMgr::prefix_check_twosfx_morph(const char * word, int len,
  3466. - char in_compound, const FLAG needflag)
  3467. -{
  3468. - char * st;
  3469. -
  3470. - char result[MAXLNLEN];
  3471. - result[0] = '\0';
  3472. -
  3473. - pfx = NULL;
  3474. - sfxappnd = NULL;
  3475. -
  3476. - // first handle the special case of 0 length prefixes
  3477. - PfxEntry * pe = pStart[0];
  3478. - while (pe) {
  3479. - st = pe->check_twosfx_morph(word,len,in_compound, needflag);
  3480. - if (st) {
  3481. - mystrcat(result, st, MAXLNLEN);
  3482. - free(st);
  3483. - }
  3484. - pe = pe->getNext();
  3485. - }
  3486. -
  3487. - // now handle the general case
  3488. - unsigned char sp = *((const unsigned char *)word);
  3489. - PfxEntry * pptr = pStart[sp];
  3490. -
  3491. - while (pptr) {
  3492. - if (isSubset(pptr->getKey(),word)) {
  3493. - st = pptr->check_twosfx_morph(word, len, in_compound, needflag);
  3494. - if (st) {
  3495. - mystrcat(result, st, MAXLNLEN);
  3496. - free(st);
  3497. - pfx = pptr;
  3498. - }
  3499. - pptr = pptr->getNextEQ();
  3500. - } else {
  3501. - pptr = pptr->getNextNE();
  3502. - }
  3503. - }
  3504. -
  3505. - if (*result) return mystrdup(result);
  3506. - return NULL;
  3507. -}
  3508. -
  3509. -// Is word a non compound with a REP substitution (see checkcompoundrep)?
  3510. -int AffixMgr::cpdrep_check(const char * word, int wl)
  3511. -{
  3512. - char candidate[MAXLNLEN];
  3513. - const char * r;
  3514. - int lenr, lenp;
  3515. -
  3516. - if ((wl < 2) || !numrep) return 0;
  3517. -
  3518. - for (int i=0; i < numrep; i++ ) {
  3519. - r = word;
  3520. - lenr = strlen(reptable[i].pattern2);
  3521. - lenp = strlen(reptable[i].pattern);
  3522. - // search every occurence of the pattern in the word
  3523. - while ((r=strstr(r, reptable[i].pattern)) != NULL) {
  3524. - strcpy(candidate, word);
  3525. - if (r-word + lenr + strlen(r+lenp) >= MAXLNLEN) break;
  3526. - strcpy(candidate+(r-word),reptable[i].pattern2);
  3527. - strcpy(candidate+(r-word)+lenr, r+lenp);
  3528. - if (candidate_check(candidate,strlen(candidate))) return 1;
  3529. - r++; // search for the next letter
  3530. - }
  3531. - }
  3532. - return 0;
  3533. -}
  3534. -
  3535. -// forbid compoundings when there are special patterns at word bound
  3536. -int AffixMgr::cpdpat_check(const char * word, int pos, hentry * r1, hentry * r2, const char /*affixed*/)
  3537. -{
  3538. - int len;
  3539. - for (int i = 0; i < numcheckcpd; i++) {
  3540. - if (isSubset(checkcpdtable[i].pattern2, word + pos) &&
  3541. - (!r1 || !checkcpdtable[i].cond ||
  3542. - (r1->astr && TESTAFF(r1->astr, checkcpdtable[i].cond, r1->alen))) &&
  3543. - (!r2 || !checkcpdtable[i].cond2 ||
  3544. - (r2->astr && TESTAFF(r2->astr, checkcpdtable[i].cond2, r2->alen))) &&
  3545. - // zero length pattern => only TESTAFF
  3546. - // zero pattern (0/flag) => unmodified stem (zero affixes allowed)
  3547. - (!*(checkcpdtable[i].pattern) || (
  3548. - (*(checkcpdtable[i].pattern)=='0' && r1->blen <= pos && strncmp(word + pos - r1->blen, r1->word, r1->blen) == 0) ||
  3549. - (*(checkcpdtable[i].pattern)!='0' && ((len = strlen(checkcpdtable[i].pattern)) != 0) &&
  3550. - strncmp(word + pos - len, checkcpdtable[i].pattern, len) == 0)))) {
  3551. - return 1;
  3552. - }
  3553. - }
  3554. - return 0;
  3555. -}
  3556. -
  3557. -// forbid compounding with neighbouring upper and lower case characters at word bounds
  3558. -int AffixMgr::cpdcase_check(const char * word, int pos)
  3559. -{
  3560. - if (utf8) {
  3561. - w_char u, w;
  3562. - const char * p;
  3563. - u8_u16(&u, 1, word + pos);
  3564. - for (p = word + pos - 1; (*p & 0xc0) == 0x80; p--);
  3565. - u8_u16(&w, 1, p);
  3566. - unsigned short a = (u.h << 8) + u.l;
  3567. - unsigned short b = (w.h << 8) + w.l;
  3568. - if (((unicodetoupper(a, langnum) == a) || (unicodetoupper(b, langnum) == b)) &&
  3569. - (a != '-') && (b != '-')) return 1;
  3570. - } else {
  3571. - unsigned char a = *(word + pos - 1);
  3572. - unsigned char b = *(word + pos);
  3573. - if ((csconv[a].ccase || csconv[b].ccase) && (a != '-') && (b != '-')) return 1;
  3574. - }
  3575. - return 0;
  3576. -}
  3577. -
  3578. -// check compound patterns
  3579. -int AffixMgr::defcpd_check(hentry *** words, short wnum, hentry * rv, hentry ** def, char all)
  3580. -{
  3581. - signed short btpp[MAXWORDLEN]; // metacharacter (*, ?) positions for backtracking
  3582. - signed short btwp[MAXWORDLEN]; // word positions for metacharacters
  3583. - int btnum[MAXWORDLEN]; // number of matched characters in metacharacter positions
  3584. - short bt = 0;
  3585. - int i, j;
  3586. - int ok;
  3587. - int w = 0;
  3588. -
  3589. - if (!*words) {
  3590. - w = 1;
  3591. - *words = def;
  3592. - }
  3593. -
  3594. - if (!*words) {
  3595. - return 0;
  3596. - }
  3597. -
  3598. - (*words)[wnum] = rv;
  3599. -
  3600. - // has the last word COMPOUNDRULE flag?
  3601. - if (rv->alen == 0) {
  3602. - (*words)[wnum] = NULL;
  3603. - if (w) *words = NULL;
  3604. - return 0;
  3605. - }
  3606. - ok = 0;
  3607. - for (i = 0; i < numdefcpd; i++) {
  3608. - for (j = 0; j < defcpdtable[i].len; j++) {
  3609. - if (defcpdtable[i].def[j] != '*' && defcpdtable[i].def[j] != '?' &&
  3610. - TESTAFF(rv->astr, defcpdtable[i].def[j], rv->alen)) {
  3611. - ok = 1;
  3612. - break;
  3613. - }
  3614. - }
  3615. - }
  3616. - if (ok == 0) {
  3617. - (*words)[wnum] = NULL;
  3618. - if (w) *words = NULL;
  3619. - return 0;
  3620. - }
  3621. -
  3622. - for (i = 0; i < numdefcpd; i++) {
  3623. - signed short pp = 0; // pattern position
  3624. - signed short wp = 0; // "words" position
  3625. - int ok2;
  3626. - ok = 1;
  3627. - ok2 = 1;
  3628. - do {
  3629. - while ((pp < defcpdtable[i].len) && (wp <= wnum)) {
  3630. - if (((pp+1) < defcpdtable[i].len) &&
  3631. - ((defcpdtable[i].def[pp+1] == '*') || (defcpdtable[i].def[pp+1] == '?'))) {
  3632. - int wend = (defcpdtable[i].def[pp+1] == '?') ? wp : wnum;
  3633. - ok2 = 1;
  3634. - pp+=2;
  3635. - btpp[bt] = pp;
  3636. - btwp[bt] = wp;
  3637. - while (wp <= wend) {
  3638. - if (!(*words)[wp]->alen ||
  3639. - !TESTAFF((*words)[wp]->astr, defcpdtable[i].def[pp-2], (*words)[wp]->alen)) {
  3640. - ok2 = 0;
  3641. - break;
  3642. - }
  3643. - wp++;
  3644. - }
  3645. - if (wp <= wnum) ok2 = 0;
  3646. - btnum[bt] = wp - btwp[bt];
  3647. - if (btnum[bt] > 0) bt++;
  3648. - if (ok2) break;
  3649. - } else {
  3650. - ok2 = 1;
  3651. - if (!(*words)[wp] || !(*words)[wp]->alen ||
  3652. - !TESTAFF((*words)[wp]->astr, defcpdtable[i].def[pp], (*words)[wp]->alen)) {
  3653. - ok = 0;
  3654. - break;
  3655. - }
  3656. - pp++;
  3657. - wp++;
  3658. - if ((defcpdtable[i].len == pp) && !(wp > wnum)) ok = 0;
  3659. - }
  3660. - }
  3661. - if (ok && ok2) {
  3662. - int r = pp;
  3663. - while ((defcpdtable[i].len > r) && ((r+1) < defcpdtable[i].len) &&
  3664. - ((defcpdtable[i].def[r+1] == '*') || (defcpdtable[i].def[r+1] == '?'))) r+=2;
  3665. - if (defcpdtable[i].len <= r) return 1;
  3666. - }
  3667. - // backtrack
  3668. - if (bt) do {
  3669. - ok = 1;
  3670. - btnum[bt - 1]--;
  3671. - pp = btpp[bt - 1];
  3672. - wp = btwp[bt - 1] + (signed short) btnum[bt - 1];
  3673. - } while ((btnum[bt - 1] < 0) && --bt);
  3674. - } while (bt);
  3675. -
  3676. - if (ok && ok2 && (!all || (defcpdtable[i].len <= pp))) return 1;
  3677. -
  3678. - // check zero ending
  3679. - while (ok && ok2 && (defcpdtable[i].len > pp) && ((pp+1) < defcpdtable[i].len) &&
  3680. - ((defcpdtable[i].def[pp+1] == '*') || (defcpdtable[i].def[pp+1] == '?'))) pp+=2;
  3681. - if (ok && ok2 && (defcpdtable[i].len <= pp)) return 1;
  3682. - }
  3683. - (*words)[wnum] = NULL;
  3684. - if (w) *words = NULL;
  3685. - return 0;
  3686. -}
  3687. -
  3688. -inline int AffixMgr::candidate_check(const char * word, int len)
  3689. -{
  3690. - struct hentry * rv=NULL;
  3691. -
  3692. - rv = lookup(word);
  3693. - if (rv) return 1;
  3694. -
  3695. -// rv = prefix_check(word,len,1);
  3696. -// if (rv) return 1;
  3697. -
  3698. - rv = affix_check(word,len);
  3699. - if (rv) return 1;
  3700. - return 0;
  3701. -}
  3702. -
  3703. -// calculate number of syllable for compound-checking
  3704. -short AffixMgr::get_syllable(const char * word, int wlen)
  3705. -{
  3706. - if (cpdmaxsyllable==0) return 0;
  3707. -
  3708. - short num=0;
  3709. -
  3710. - if (!utf8) {
  3711. - for (int i=0; i<wlen; i++) {
  3712. - if (strchr(cpdvowels, word[i])) num++;
  3713. - }
  3714. - } else if (cpdvowels_utf16) {
  3715. - w_char w[MAXWORDUTF8LEN];
  3716. - int i = u8_u16(w, MAXWORDUTF8LEN, word);
  3717. - for (; i > 0; i--) {
  3718. - if (flag_bsearch((unsigned short *) cpdvowels_utf16,
  3719. - ((unsigned short *) w)[i - 1], cpdvowels_utf16_len)) num++;
  3720. - }
  3721. - }
  3722. - return num;
  3723. -}
  3724. -
  3725. -void AffixMgr::setcminmax(int * cmin, int * cmax, const char * word, int len) {
  3726. - if (utf8) {
  3727. - int i;
  3728. - for (*cmin = 0, i = 0; (i < cpdmin) && word[*cmin]; i++) {
  3729. - for ((*cmin)++; (word[*cmin] & 0xc0) == 0x80; (*cmin)++);
  3730. - }
  3731. - for (*cmax = len, i = 0; (i < (cpdmin - 1)) && *cmax; i++) {
  3732. - for ((*cmax)--; (word[*cmax] & 0xc0) == 0x80; (*cmax)--);
  3733. - }
  3734. - } else {
  3735. - *cmin = cpdmin;
  3736. - *cmax = len - cpdmin + 1;
  3737. - }
  3738. -}
  3739. -
  3740. -
  3741. -// check if compound word is correctly spelled
  3742. -// hu_mov_rule = spec. Hungarian rule (XXX)
  3743. -struct hentry * AffixMgr::compound_check(const char * word, int len,
  3744. - short wordnum, short numsyllable, short maxwordnum, short wnum, hentry ** words = NULL,
  3745. - char hu_mov_rule = 0, char is_sug = 0, int * info = NULL)
  3746. -{
  3747. - int i;
  3748. - short oldnumsyllable, oldnumsyllable2, oldwordnum, oldwordnum2;
  3749. - struct hentry * rv = NULL;
  3750. - struct hentry * rv_first;
  3751. - struct hentry * rwords[MAXWORDLEN]; // buffer for COMPOUND pattern checking
  3752. - char st [MAXWORDUTF8LEN + 4];
  3753. - char ch = '\0';
  3754. - int cmin;
  3755. - int cmax;
  3756. - int striple = 0;
  3757. - int scpd = 0;
  3758. - int soldi = 0;
  3759. - int oldcmin = 0;
  3760. - int oldcmax = 0;
  3761. - int oldlen = 0;
  3762. - int checkedstriple = 0;
  3763. - int onlycpdrule;
  3764. - char affixed = 0;
  3765. - hentry ** oldwords = words;
  3766. -
  3767. - int checked_prefix;
  3768. -
  3769. - setcminmax(&cmin, &cmax, word, len);
  3770. -
  3771. - strcpy(st, word);
  3772. -
  3773. - for (i = cmin; i < cmax; i++) {
  3774. - // go to end of the UTF-8 character
  3775. - if (utf8) {
  3776. - for (; (st[i] & 0xc0) == 0x80; i++);
  3777. - if (i >= cmax) return NULL;
  3778. - }
  3779. -
  3780. - words = oldwords;
  3781. - onlycpdrule = (words) ? 1 : 0;
  3782. -
  3783. - do { // onlycpdrule loop
  3784. -
  3785. - oldnumsyllable = numsyllable;
  3786. - oldwordnum = wordnum;
  3787. - checked_prefix = 0;
  3788. -
  3789. -
  3790. - do { // simplified checkcompoundpattern loop
  3791. -
  3792. - if (scpd > 0) {
  3793. - for (; scpd <= numcheckcpd && (!checkcpdtable[scpd-1].pattern3 ||
  3794. - strncmp(word + i, checkcpdtable[scpd-1].pattern3, strlen(checkcpdtable[scpd-1].pattern3)) != 0); scpd++);
  3795. -
  3796. - if (scpd > numcheckcpd) break; // break simplified checkcompoundpattern loop
  3797. - strcpy(st + i, checkcpdtable[scpd-1].pattern);
  3798. - soldi = i;
  3799. - i += strlen(checkcpdtable[scpd-1].pattern);
  3800. - strcpy(st + i, checkcpdtable[scpd-1].pattern2);
  3801. - strcpy(st + i + strlen(checkcpdtable[scpd-1].pattern2), word + soldi + strlen(checkcpdtable[scpd-1].pattern3));
  3802. -
  3803. - oldlen = len;
  3804. - len += strlen(checkcpdtable[scpd-1].pattern) + strlen(checkcpdtable[scpd-1].pattern2) - strlen(checkcpdtable[scpd-1].pattern3);
  3805. - oldcmin = cmin;
  3806. - oldcmax = cmax;
  3807. - setcminmax(&cmin, &cmax, st, len);
  3808. -
  3809. - cmax = len - cpdmin + 1;
  3810. - }
  3811. -
  3812. - ch = st[i];
  3813. - st[i] = '\0';
  3814. -
  3815. - sfx = NULL;
  3816. - pfx = NULL;
  3817. -
  3818. - // FIRST WORD
  3819. -
  3820. - affixed = 1;
  3821. - rv = lookup(st); // perhaps without prefix
  3822. -
  3823. - // search homonym with compound flag
  3824. - while ((rv) && !hu_mov_rule &&
  3825. - ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) ||
  3826. - !((compoundflag && !words && !onlycpdrule && TESTAFF(rv->astr, compoundflag, rv->alen)) ||
  3827. - (compoundbegin && !wordnum && !onlycpdrule &&
  3828. - TESTAFF(rv->astr, compoundbegin, rv->alen)) ||
  3829. - (compoundmiddle && wordnum && !words && !onlycpdrule &&
  3830. - TESTAFF(rv->astr, compoundmiddle, rv->alen)) ||
  3831. - (numdefcpd && onlycpdrule &&
  3832. - ((!words && !wordnum && defcpd_check(&words, wnum, rv, (hentry **) &rwords, 0)) ||
  3833. - (words && defcpd_check(&words, wnum, rv, (hentry **) &rwords, 0))))) ||
  3834. - (scpd != 0 && checkcpdtable[scpd-1].cond != FLAG_NULL &&
  3835. - !TESTAFF(rv->astr, checkcpdtable[scpd-1].cond, rv->alen)))
  3836. - ) {
  3837. - rv = rv->next_homonym;
  3838. - }
  3839. -
  3840. - if (rv) affixed = 0;
  3841. -
  3842. - if (!rv) {
  3843. - if (onlycpdrule) break;
  3844. - if (compoundflag &&
  3845. - !(rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundflag))) {
  3846. - if (((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL,
  3847. - FLAG_NULL, compoundflag, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) ||
  3848. - (compoundmoresuffixes && (rv = suffix_check_twosfx(st, i, 0, NULL, compoundflag)))) && !hu_mov_rule &&
  3849. - sfx->getCont() &&
  3850. - ((compoundforbidflag && TESTAFF(sfx->getCont(), compoundforbidflag,
  3851. - sfx->getContLen())) || (compoundend &&
  3852. - TESTAFF(sfx->getCont(), compoundend,
  3853. - sfx->getContLen())))) {
  3854. - rv = NULL;
  3855. - }
  3856. - }
  3857. -
  3858. - if (rv ||
  3859. - (((wordnum == 0) && compoundbegin &&
  3860. - ((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL, FLAG_NULL, compoundbegin, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) ||
  3861. - (compoundmoresuffixes && (rv = suffix_check_twosfx(st, i, 0, NULL, compoundbegin))) || // twofold suffixes + compound
  3862. - (rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundbegin)))) ||
  3863. - ((wordnum > 0) && compoundmiddle &&
  3864. - ((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL, FLAG_NULL, compoundmiddle, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) ||
  3865. - (compoundmoresuffixes && (rv = suffix_check_twosfx(st, i, 0, NULL, compoundmiddle))) || // twofold suffixes + compound
  3866. - (rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundmiddle)))))
  3867. - ) checked_prefix = 1;
  3868. - // else check forbiddenwords and needaffix
  3869. - } else if (rv->astr && (TESTAFF(rv->astr, forbiddenword, rv->alen) ||
  3870. - TESTAFF(rv->astr, needaffix, rv->alen) ||
  3871. - TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) ||
  3872. - (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen))
  3873. - )) {
  3874. - st[i] = ch;
  3875. - //continue;
  3876. - break;
  3877. - }
  3878. -
  3879. - // check non_compound flag in suffix and prefix
  3880. - if ((rv) && !hu_mov_rule &&
  3881. - ((pfx && pfx->getCont() &&
  3882. - TESTAFF(pfx->getCont(), compoundforbidflag,
  3883. - pfx->getContLen())) ||
  3884. - (sfx && sfx->getCont() &&
  3885. - TESTAFF(sfx->getCont(), compoundforbidflag,
  3886. - sfx->getContLen())))) {
  3887. - rv = NULL;
  3888. - }
  3889. -
  3890. - // check compoundend flag in suffix and prefix
  3891. - if ((rv) && !checked_prefix && compoundend && !hu_mov_rule &&
  3892. - ((pfx && pfx->getCont() &&
  3893. - TESTAFF(pfx->getCont(), compoundend,
  3894. - pfx->getContLen())) ||
  3895. - (sfx && sfx->getCont() &&
  3896. - TESTAFF(sfx->getCont(), compoundend,
  3897. - sfx->getContLen())))) {
  3898. - rv = NULL;
  3899. - }
  3900. -
  3901. - // check compoundmiddle flag in suffix and prefix
  3902. - if ((rv) && !checked_prefix && (wordnum==0) && compoundmiddle && !hu_mov_rule &&
  3903. - ((pfx && pfx->getCont() &&
  3904. - TESTAFF(pfx->getCont(), compoundmiddle,
  3905. - pfx->getContLen())) ||
  3906. - (sfx && sfx->getCont() &&
  3907. - TESTAFF(sfx->getCont(), compoundmiddle,
  3908. - sfx->getContLen())))) {
  3909. - rv = NULL;
  3910. - }
  3911. -
  3912. - // check forbiddenwords
  3913. - if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) ||
  3914. - TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) ||
  3915. - (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)))) {
  3916. - return NULL;
  3917. - }
  3918. -
  3919. - // increment word number, if the second root has a compoundroot flag
  3920. - if ((rv) && compoundroot &&
  3921. - (TESTAFF(rv->astr, compoundroot, rv->alen))) {
  3922. - wordnum++;
  3923. - }
  3924. -
  3925. - // first word is acceptable in compound words?
  3926. - if (((rv) &&
  3927. - ( checked_prefix || (words && words[wnum]) ||
  3928. - (compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) ||
  3929. - ((oldwordnum == 0) && compoundbegin && TESTAFF(rv->astr, compoundbegin, rv->alen)) ||
  3930. - ((oldwordnum > 0) && compoundmiddle && TESTAFF(rv->astr, compoundmiddle, rv->alen))// ||
  3931. -// (numdefcpd && )
  3932. -
  3933. -// LANG_hu section: spec. Hungarian rule
  3934. - || ((langnum == LANG_hu) && hu_mov_rule && (
  3935. - TESTAFF(rv->astr, 'F', rv->alen) || // XXX hardwired Hungarian dictionary codes
  3936. - TESTAFF(rv->astr, 'G', rv->alen) ||
  3937. - TESTAFF(rv->astr, 'H', rv->alen)
  3938. - )
  3939. - )
  3940. -// END of LANG_hu section
  3941. - ) &&
  3942. - (
  3943. - // test CHECKCOMPOUNDPATTERN conditions
  3944. - scpd == 0 || checkcpdtable[scpd-1].cond == FLAG_NULL ||
  3945. - TESTAFF(rv->astr, checkcpdtable[scpd-1].cond, rv->alen)
  3946. - )
  3947. - && ! (( checkcompoundtriple && scpd == 0 && !words && // test triple letters
  3948. - (word[i-1]==word[i]) && (
  3949. - ((i>1) && (word[i-1]==word[i-2])) ||
  3950. - ((word[i-1]==word[i+1])) // may be word[i+1] == '\0'
  3951. - )
  3952. - ) ||
  3953. - (
  3954. - checkcompoundcase && scpd == 0 && !words && cpdcase_check(word, i)
  3955. - ))
  3956. - )
  3957. -// LANG_hu section: spec. Hungarian rule
  3958. - || ((!rv) && (langnum == LANG_hu) && hu_mov_rule && (rv = affix_check(st,i)) &&
  3959. - (sfx && sfx->getCont() && ( // XXX hardwired Hungarian dic. codes
  3960. - TESTAFF(sfx->getCont(), (unsigned short) 'x', sfx->getContLen()) ||
  3961. - TESTAFF(sfx->getCont(), (unsigned short) '%', sfx->getContLen())
  3962. - )
  3963. - )
  3964. - )
  3965. - ) { // first word is ok condition
  3966. -
  3967. -// LANG_hu section: spec. Hungarian rule
  3968. - if (langnum == LANG_hu) {
  3969. - // calculate syllable number of the word
  3970. - numsyllable += get_syllable(st, i);
  3971. - // + 1 word, if syllable number of the prefix > 1 (hungarian convention)
  3972. - if (pfx && (get_syllable(pfx->getKey(),strlen(pfx->getKey())) > 1)) wordnum++;
  3973. - }
  3974. -// END of LANG_hu section
  3975. -
  3976. - // NEXT WORD(S)
  3977. - rv_first = rv;
  3978. - st[i] = ch;
  3979. -
  3980. - do { // striple loop
  3981. -
  3982. - // check simplifiedtriple
  3983. - if (simplifiedtriple) {
  3984. - if (striple) {
  3985. - checkedstriple = 1;
  3986. - i--; // check "fahrt" instead of "ahrt" in "Schiffahrt"
  3987. - } else if (i > 2 && *(word+i - 1) == *(word + i - 2)) striple = 1;
  3988. - }
  3989. -
  3990. - rv = lookup((st+i)); // perhaps without prefix
  3991. -
  3992. - // search homonym with compound flag
  3993. - while ((rv) && ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) ||
  3994. - !((compoundflag && !words && TESTAFF(rv->astr, compoundflag, rv->alen)) ||
  3995. - (compoundend && !words && TESTAFF(rv->astr, compoundend, rv->alen)) ||
  3996. - (numdefcpd && words && defcpd_check(&words, wnum + 1, rv, NULL,1))) ||
  3997. - (scpd != 0 && checkcpdtable[scpd-1].cond2 != FLAG_NULL &&
  3998. - !TESTAFF(rv->astr, checkcpdtable[scpd-1].cond2, rv->alen))
  3999. - )) {
  4000. - rv = rv->next_homonym;
  4001. - }
  4002. -
  4003. - // check FORCEUCASE
  4004. - if (rv && forceucase && (rv) &&
  4005. - (TESTAFF(rv->astr, forceucase, rv->alen)) && !(info && *info & SPELL_ORIGCAP)) rv = NULL;
  4006. -
  4007. - if (rv && words && words[wnum + 1]) return rv_first;
  4008. -
  4009. - oldnumsyllable2 = numsyllable;
  4010. - oldwordnum2 = wordnum;
  4011. -
  4012. -
  4013. -// LANG_hu section: spec. Hungarian rule, XXX hardwired dictionary code
  4014. - if ((rv) && (langnum == LANG_hu) && (TESTAFF(rv->astr, 'I', rv->alen)) && !(TESTAFF(rv->astr, 'J', rv->alen))) {
  4015. - numsyllable--;
  4016. - }
  4017. -// END of LANG_hu section
  4018. -
  4019. - // increment word number, if the second root has a compoundroot flag
  4020. - if ((rv) && (compoundroot) &&
  4021. - (TESTAFF(rv->astr, compoundroot, rv->alen))) {
  4022. - wordnum++;
  4023. - }
  4024. -
  4025. - // check forbiddenwords
  4026. - if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) ||
  4027. - TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) ||
  4028. - (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)))) return NULL;
  4029. -
  4030. - // second word is acceptable, as a root?
  4031. - // hungarian conventions: compounding is acceptable,
  4032. - // when compound forms consist of 2 words, or if more,
  4033. - // then the syllable number of root words must be 6, or lesser.
  4034. -
  4035. - if ((rv) && (
  4036. - (compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) ||
  4037. - (compoundend && TESTAFF(rv->astr, compoundend, rv->alen))
  4038. - )
  4039. - && (
  4040. - ((cpdwordmax==-1) || (wordnum+1<cpdwordmax)) ||
  4041. - ((cpdmaxsyllable!=0) &&
  4042. - (numsyllable + get_syllable(HENTRY_WORD(rv), rv->clen)<=cpdmaxsyllable))
  4043. - ) &&
  4044. - (
  4045. - // test CHECKCOMPOUNDPATTERN
  4046. - !numcheckcpd || scpd != 0 || !cpdpat_check(word, i, rv_first, rv, 0)
  4047. - ) &&
  4048. - (
  4049. - (!checkcompounddup || (rv != rv_first))
  4050. - )
  4051. - // test CHECKCOMPOUNDPATTERN conditions
  4052. - && (scpd == 0 || checkcpdtable[scpd-1].cond2 == FLAG_NULL ||
  4053. - TESTAFF(rv->astr, checkcpdtable[scpd-1].cond2, rv->alen))
  4054. - )
  4055. - {
  4056. - // forbid compound word, if it is a non compound word with typical fault
  4057. - if (checkcompoundrep && cpdrep_check(word,len)) return NULL;
  4058. - return rv_first;
  4059. - }
  4060. -
  4061. - numsyllable = oldnumsyllable2;
  4062. - wordnum = oldwordnum2;
  4063. -
  4064. - // perhaps second word has prefix or/and suffix
  4065. - sfx = NULL;
  4066. - sfxflag = FLAG_NULL;
  4067. - rv = (compoundflag && !onlycpdrule) ? affix_check((word+i),strlen(word+i), compoundflag, IN_CPD_END) : NULL;
  4068. - if (!rv && compoundend && !onlycpdrule) {
  4069. - sfx = NULL;
  4070. - pfx = NULL;
  4071. - rv = affix_check((word+i),strlen(word+i), compoundend, IN_CPD_END);
  4072. - }
  4073. -
  4074. - if (!rv && numdefcpd && words) {
  4075. - rv = affix_check((word+i),strlen(word+i), 0, IN_CPD_END);
  4076. - if (rv && defcpd_check(&words, wnum + 1, rv, NULL, 1)) return rv_first;
  4077. - rv = NULL;
  4078. - }
  4079. -
  4080. - // test CHECKCOMPOUNDPATTERN conditions (allowed forms)
  4081. - if (rv && !(scpd == 0 || checkcpdtable[scpd-1].cond2 == FLAG_NULL ||
  4082. - TESTAFF(rv->astr, checkcpdtable[scpd-1].cond2, rv->alen))) rv = NULL;
  4083. -
  4084. - // test CHECKCOMPOUNDPATTERN conditions (forbidden compounds)
  4085. - if (rv && numcheckcpd && scpd == 0 && cpdpat_check(word, i, rv_first, rv, affixed)) rv = NULL;
  4086. -
  4087. - // check non_compound flag in suffix and prefix
  4088. - if ((rv) &&
  4089. - ((pfx && pfx->getCont() &&
  4090. - TESTAFF(pfx->getCont(), compoundforbidflag,
  4091. - pfx->getContLen())) ||
  4092. - (sfx && sfx->getCont() &&
  4093. - TESTAFF(sfx->getCont(), compoundforbidflag,
  4094. - sfx->getContLen())))) {
  4095. - rv = NULL;
  4096. - }
  4097. -
  4098. - // check FORCEUCASE
  4099. - if (rv && forceucase && (rv) &&
  4100. - (TESTAFF(rv->astr, forceucase, rv->alen)) && !(info && *info & SPELL_ORIGCAP)) rv = NULL;
  4101. -
  4102. - // check forbiddenwords
  4103. - if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) ||
  4104. - TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) ||
  4105. - (is_sug && nosuggest && TESTAFF(rv->astr, nosuggest, rv->alen)))) return NULL;
  4106. -
  4107. - // pfxappnd = prefix of word+i, or NULL
  4108. - // calculate syllable number of prefix.
  4109. - // hungarian convention: when syllable number of prefix is more,
  4110. - // than 1, the prefix+word counts as two words.
  4111. -
  4112. - if (langnum == LANG_hu) {
  4113. - // calculate syllable number of the word
  4114. - numsyllable += get_syllable(word + i, strlen(word + i));
  4115. -
  4116. - // - affix syllable num.
  4117. - // XXX only second suffix (inflections, not derivations)
  4118. - if (sfxappnd) {
  4119. - char * tmp = myrevstrdup(sfxappnd);
  4120. - numsyllable -= get_syllable(tmp, strlen(tmp));
  4121. - free(tmp);
  4122. - }
  4123. -
  4124. - // + 1 word, if syllable number of the prefix > 1 (hungarian convention)
  4125. - if (pfx && (get_syllable(pfx->getKey(),strlen(pfx->getKey())) > 1)) wordnum++;
  4126. -
  4127. - // increment syllable num, if last word has a SYLLABLENUM flag
  4128. - // and the suffix is beginning `s'
  4129. -
  4130. - if (cpdsyllablenum) {
  4131. - switch (sfxflag) {
  4132. - case 'c': { numsyllable+=2; break; }
  4133. - case 'J': { numsyllable += 1; break; }
  4134. - case 'I': { if (rv && TESTAFF(rv->astr, 'J', rv->alen)) numsyllable += 1; break; }
  4135. - }
  4136. - }
  4137. - }
  4138. -
  4139. - // increment word number, if the second word has a compoundroot flag
  4140. - if ((rv) && (compoundroot) &&
  4141. - (TESTAFF(rv->astr, compoundroot, rv->alen))) {
  4142. - wordnum++;
  4143. - }
  4144. -
  4145. - // second word is acceptable, as a word with prefix or/and suffix?
  4146. - // hungarian conventions: compounding is acceptable,
  4147. - // when compound forms consist 2 word, otherwise
  4148. - // the syllable number of root words is 6, or lesser.
  4149. - if ((rv) &&
  4150. - (
  4151. - ((cpdwordmax == -1) || (wordnum + 1 < cpdwordmax)) ||
  4152. - ((cpdmaxsyllable != 0) &&
  4153. - (numsyllable <= cpdmaxsyllable))
  4154. - )
  4155. - && (
  4156. - (!checkcompounddup || (rv != rv_first))
  4157. - )) {
  4158. - // forbid compound word, if it is a non compound word with typical fault
  4159. - if (checkcompoundrep && cpdrep_check(word, len)) return NULL;
  4160. - return rv_first;
  4161. - }
  4162. -
  4163. - numsyllable = oldnumsyllable2;
  4164. - wordnum = oldwordnum2;
  4165. -
  4166. - // perhaps second word is a compound word (recursive call)
  4167. - if (wordnum < maxwordnum) {
  4168. - rv = compound_check((st+i),strlen(st+i), wordnum+1,
  4169. - numsyllable, maxwordnum, wnum + 1, words, 0, is_sug, info);
  4170. -
  4171. - if (rv && numcheckcpd && ((scpd == 0 && cpdpat_check(word, i, rv_first, rv, affixed)) ||
  4172. - (scpd != 0 && !cpdpat_check(word, i, rv_first, rv, affixed)))) rv = NULL;
  4173. - } else {
  4174. - rv=NULL;
  4175. - }
  4176. - if (rv) {
  4177. - // forbid compound word, if it is a non compound word with typical fault
  4178. - if (checkcompoundrep || forbiddenword) {
  4179. - struct hentry * rv2 = NULL;
  4180. -
  4181. - if (checkcompoundrep && cpdrep_check(word, len)) return NULL;
  4182. -
  4183. - // check first part
  4184. - if (strncmp(rv->word, word + i, rv->blen) == 0) {
  4185. - char r = *(st + i + rv->blen);
  4186. - *(st + i + rv->blen) = '\0';
  4187. -
  4188. - if (checkcompoundrep && cpdrep_check(st, i + rv->blen)) {
  4189. - *(st + i + rv->blen) = r;
  4190. - continue;
  4191. - }
  4192. -
  4193. - if (forbiddenword) {
  4194. - rv2 = lookup(word);
  4195. - if (!rv2) rv2 = affix_check(word, len);
  4196. - if (rv2 && rv2->astr && TESTAFF(rv2->astr, forbiddenword, rv2->alen) &&
  4197. - (strncmp(rv2->word, st, i + rv->blen) == 0)) {
  4198. - return NULL;
  4199. - }
  4200. - }
  4201. - *(st + i + rv->blen) = r;
  4202. - }
  4203. - }
  4204. - return rv_first;
  4205. - }
  4206. - } while (striple && !checkedstriple); // end of striple loop
  4207. -
  4208. - if (checkedstriple) {
  4209. - i++;
  4210. - checkedstriple = 0;
  4211. - striple = 0;
  4212. - }
  4213. -
  4214. - } // first word is ok condition
  4215. -
  4216. - if (soldi != 0) {
  4217. - i = soldi;
  4218. - soldi = 0;
  4219. - len = oldlen;
  4220. - cmin = oldcmin;
  4221. - cmax = oldcmax;
  4222. - }
  4223. - scpd++;
  4224. -
  4225. -
  4226. - } while (!onlycpdrule && simplifiedcpd && scpd <= numcheckcpd); // end of simplifiedcpd loop
  4227. -
  4228. - scpd = 0;
  4229. - wordnum = oldwordnum;
  4230. - numsyllable = oldnumsyllable;
  4231. -
  4232. - if (soldi != 0) {
  4233. - i = soldi;
  4234. - strcpy(st, word); // XXX add more optim.
  4235. - soldi = 0;
  4236. - } else st[i] = ch;
  4237. -
  4238. - } while (numdefcpd && oldwordnum == 0 && !onlycpdrule && (onlycpdrule = 1)); // end of onlycpd loop
  4239. -
  4240. - }
  4241. -
  4242. - return NULL;
  4243. -}
  4244. -
  4245. -// check if compound word is correctly spelled
  4246. -// hu_mov_rule = spec. Hungarian rule (XXX)
  4247. -int AffixMgr::compound_check_morph(const char * word, int len,
  4248. - short wordnum, short numsyllable, short maxwordnum, short wnum, hentry ** words,
  4249. - char hu_mov_rule = 0, char ** result = NULL, char * partresult = NULL)
  4250. -{
  4251. - int i;
  4252. - short oldnumsyllable, oldnumsyllable2, oldwordnum, oldwordnum2;
  4253. - int ok = 0;
  4254. -
  4255. - struct hentry * rv = NULL;
  4256. - struct hentry * rv_first;
  4257. - struct hentry * rwords[MAXWORDLEN]; // buffer for COMPOUND pattern checking
  4258. - char st [MAXWORDUTF8LEN + 4];
  4259. - char ch;
  4260. -
  4261. - int checked_prefix;
  4262. - char presult[MAXLNLEN];
  4263. -
  4264. - int cmin;
  4265. - int cmax;
  4266. -
  4267. - int onlycpdrule;
  4268. - char affixed = 0;
  4269. - hentry ** oldwords = words;
  4270. -
  4271. - setcminmax(&cmin, &cmax, word, len);
  4272. -
  4273. - strcpy(st, word);
  4274. -
  4275. - for (i = cmin; i < cmax; i++) {
  4276. - oldnumsyllable = numsyllable;
  4277. - oldwordnum = wordnum;
  4278. - checked_prefix = 0;
  4279. -
  4280. - // go to end of the UTF-8 character
  4281. - if (utf8) {
  4282. - for (; (st[i] & 0xc0) == 0x80; i++);
  4283. - if (i >= cmax) return 0;
  4284. - }
  4285. -
  4286. - words = oldwords;
  4287. - onlycpdrule = (words) ? 1 : 0;
  4288. -
  4289. - do { // onlycpdrule loop
  4290. -
  4291. - oldnumsyllable = numsyllable;
  4292. - oldwordnum = wordnum;
  4293. - checked_prefix = 0;
  4294. -
  4295. - ch = st[i];
  4296. - st[i] = '\0';
  4297. - sfx = NULL;
  4298. -
  4299. - // FIRST WORD
  4300. -
  4301. - affixed = 1;
  4302. -
  4303. - *presult = '\0';
  4304. - if (partresult) mystrcat(presult, partresult, MAXLNLEN);
  4305. -
  4306. - rv = lookup(st); // perhaps without prefix
  4307. -
  4308. - // search homonym with compound flag
  4309. - while ((rv) && !hu_mov_rule &&
  4310. - ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) ||
  4311. - !((compoundflag && !words && !onlycpdrule && TESTAFF(rv->astr, compoundflag, rv->alen)) ||
  4312. - (compoundbegin && !wordnum && !onlycpdrule &&
  4313. - TESTAFF(rv->astr, compoundbegin, rv->alen)) ||
  4314. - (compoundmiddle && wordnum && !words && !onlycpdrule &&
  4315. - TESTAFF(rv->astr, compoundmiddle, rv->alen)) ||
  4316. - (numdefcpd && onlycpdrule &&
  4317. - ((!words && !wordnum && defcpd_check(&words, wnum, rv, (hentry **) &rwords, 0)) ||
  4318. - (words && defcpd_check(&words, wnum, rv, (hentry **) &rwords, 0))))
  4319. - ))) {
  4320. - rv = rv->next_homonym;
  4321. - }
  4322. -
  4323. - if (rv) affixed = 0;
  4324. -
  4325. - if (rv) {
  4326. - sprintf(presult + strlen(presult), "%c%s%s", MSEP_FLD, MORPH_PART, st);
  4327. - if (!HENTRY_FIND(rv, MORPH_STEM)) {
  4328. - sprintf(presult + strlen(presult), "%c%s%s", MSEP_FLD, MORPH_STEM, st);
  4329. - }
  4330. - // store the pointer of the hash entry
  4331. -// sprintf(presult + strlen(presult), "%c%s%p", MSEP_FLD, MORPH_HENTRY, rv);
  4332. - if (HENTRY_DATA(rv)) {
  4333. - sprintf(presult + strlen(presult), "%c%s", MSEP_FLD, HENTRY_DATA2(rv));
  4334. - }
  4335. - }
  4336. -
  4337. - if (!rv) {
  4338. - if (onlycpdrule && strlen(*result) > MAXLNLEN/10) break;
  4339. - if (compoundflag &&
  4340. - !(rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundflag))) {
  4341. - if (((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL,
  4342. - FLAG_NULL, compoundflag, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) ||
  4343. - (compoundmoresuffixes && (rv = suffix_check_twosfx(st, i, 0, NULL, compoundflag)))) && !hu_mov_rule &&
  4344. - sfx->getCont() &&
  4345. - ((compoundforbidflag && TESTAFF(sfx->getCont(), compoundforbidflag,
  4346. - sfx->getContLen())) || (compoundend &&
  4347. - TESTAFF(sfx->getCont(), compoundend,
  4348. - sfx->getContLen())))) {
  4349. - rv = NULL;
  4350. - }
  4351. - }
  4352. -
  4353. - if (rv ||
  4354. - (((wordnum == 0) && compoundbegin &&
  4355. - ((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL, FLAG_NULL, compoundbegin, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) ||
  4356. - (compoundmoresuffixes && (rv = suffix_check_twosfx(st, i, 0, NULL, compoundbegin))) || // twofold suffix+compound
  4357. - (rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundbegin)))) ||
  4358. - ((wordnum > 0) && compoundmiddle &&
  4359. - ((rv = suffix_check(st, i, 0, NULL, NULL, 0, NULL, FLAG_NULL, compoundmiddle, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN)) ||
  4360. - (compoundmoresuffixes && (rv = suffix_check_twosfx(st, i, 0, NULL, compoundmiddle))) || // twofold suffix+compound
  4361. - (rv = prefix_check(st, i, hu_mov_rule ? IN_CPD_OTHER : IN_CPD_BEGIN, compoundmiddle)))))
  4362. - ) {
  4363. - // char * p = prefix_check_morph(st, i, 0, compound);
  4364. - char * p = NULL;
  4365. - if (compoundflag) p = affix_check_morph(st, i, compoundflag);
  4366. - if (!p || (*p == '\0')) {
  4367. - if (p) free(p);
  4368. - p = NULL;
  4369. - if ((wordnum == 0) && compoundbegin) {
  4370. - p = affix_check_morph(st, i, compoundbegin);
  4371. - } else if ((wordnum > 0) && compoundmiddle) {
  4372. - p = affix_check_morph(st, i, compoundmiddle);
  4373. - }
  4374. - }
  4375. - if (p && (*p != '\0')) {
  4376. - sprintf(presult + strlen(presult), "%c%s%s%s", MSEP_FLD,
  4377. - MORPH_PART, st, line_uniq_app(&p, MSEP_REC));
  4378. - }
  4379. - if (p) free(p);
  4380. - checked_prefix = 1;
  4381. - }
  4382. - // else check forbiddenwords
  4383. - } else if (rv->astr && (TESTAFF(rv->astr, forbiddenword, rv->alen) ||
  4384. - TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) ||
  4385. - TESTAFF(rv->astr, needaffix, rv->alen))) {
  4386. - st[i] = ch;
  4387. - continue;
  4388. - }
  4389. -
  4390. - // check non_compound flag in suffix and prefix
  4391. - if ((rv) && !hu_mov_rule &&
  4392. - ((pfx && pfx->getCont() &&
  4393. - TESTAFF(pfx->getCont(), compoundforbidflag,
  4394. - pfx->getContLen())) ||
  4395. - (sfx && sfx->getCont() &&
  4396. - TESTAFF(sfx->getCont(), compoundforbidflag,
  4397. - sfx->getContLen())))) {
  4398. - continue;
  4399. - }
  4400. -
  4401. - // check compoundend flag in suffix and prefix
  4402. - if ((rv) && !checked_prefix && compoundend && !hu_mov_rule &&
  4403. - ((pfx && pfx->getCont() &&
  4404. - TESTAFF(pfx->getCont(), compoundend,
  4405. - pfx->getContLen())) ||
  4406. - (sfx && sfx->getCont() &&
  4407. - TESTAFF(sfx->getCont(), compoundend,
  4408. - sfx->getContLen())))) {
  4409. - continue;
  4410. - }
  4411. -
  4412. - // check compoundmiddle flag in suffix and prefix
  4413. - if ((rv) && !checked_prefix && (wordnum==0) && compoundmiddle && !hu_mov_rule &&
  4414. - ((pfx && pfx->getCont() &&
  4415. - TESTAFF(pfx->getCont(), compoundmiddle,
  4416. - pfx->getContLen())) ||
  4417. - (sfx && sfx->getCont() &&
  4418. - TESTAFF(sfx->getCont(), compoundmiddle,
  4419. - sfx->getContLen())))) {
  4420. - rv = NULL;
  4421. - }
  4422. -
  4423. - // check forbiddenwords
  4424. - if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen)
  4425. - || TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen))) continue;
  4426. -
  4427. - // increment word number, if the second root has a compoundroot flag
  4428. - if ((rv) && (compoundroot) &&
  4429. - (TESTAFF(rv->astr, compoundroot, rv->alen))) {
  4430. - wordnum++;
  4431. - }
  4432. -
  4433. - // first word is acceptable in compound words?
  4434. - if (((rv) &&
  4435. - ( checked_prefix || (words && words[wnum]) ||
  4436. - (compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) ||
  4437. - ((oldwordnum == 0) && compoundbegin && TESTAFF(rv->astr, compoundbegin, rv->alen)) ||
  4438. - ((oldwordnum > 0) && compoundmiddle && TESTAFF(rv->astr, compoundmiddle, rv->alen))
  4439. -// LANG_hu section: spec. Hungarian rule
  4440. - || ((langnum == LANG_hu) && // hu_mov_rule
  4441. - hu_mov_rule && (
  4442. - TESTAFF(rv->astr, 'F', rv->alen) ||
  4443. - TESTAFF(rv->astr, 'G', rv->alen) ||
  4444. - TESTAFF(rv->astr, 'H', rv->alen)
  4445. - )
  4446. - )
  4447. -// END of LANG_hu section
  4448. - )
  4449. - && ! (( checkcompoundtriple && !words && // test triple letters
  4450. - (word[i-1]==word[i]) && (
  4451. - ((i>1) && (word[i-1]==word[i-2])) ||
  4452. - ((word[i-1]==word[i+1])) // may be word[i+1] == '\0'
  4453. - )
  4454. - ) ||
  4455. - (
  4456. - // test CHECKCOMPOUNDPATTERN
  4457. - numcheckcpd && !words && cpdpat_check(word, i, rv, NULL, affixed)
  4458. - ) ||
  4459. - (
  4460. - checkcompoundcase && !words && cpdcase_check(word, i)
  4461. - ))
  4462. - )
  4463. -// LANG_hu section: spec. Hungarian rule
  4464. - || ((!rv) && (langnum == LANG_hu) && hu_mov_rule && (rv = affix_check(st,i)) &&
  4465. - (sfx && sfx->getCont() && (
  4466. - TESTAFF(sfx->getCont(), (unsigned short) 'x', sfx->getContLen()) ||
  4467. - TESTAFF(sfx->getCont(), (unsigned short) '%', sfx->getContLen())
  4468. - )
  4469. - )
  4470. - )
  4471. -// END of LANG_hu section
  4472. - ) {
  4473. -
  4474. -// LANG_hu section: spec. Hungarian rule
  4475. - if (langnum == LANG_hu) {
  4476. - // calculate syllable number of the word
  4477. - numsyllable += get_syllable(st, i);
  4478. -
  4479. - // + 1 word, if syllable number of the prefix > 1 (hungarian convention)
  4480. - if (pfx && (get_syllable(pfx->getKey(),strlen(pfx->getKey())) > 1)) wordnum++;
  4481. - }
  4482. -// END of LANG_hu section
  4483. -
  4484. - // NEXT WORD(S)
  4485. - rv_first = rv;
  4486. - rv = lookup((word+i)); // perhaps without prefix
  4487. -
  4488. - // search homonym with compound flag
  4489. - while ((rv) && ((needaffix && TESTAFF(rv->astr, needaffix, rv->alen)) ||
  4490. - !((compoundflag && !words && TESTAFF(rv->astr, compoundflag, rv->alen)) ||
  4491. - (compoundend && !words && TESTAFF(rv->astr, compoundend, rv->alen)) ||
  4492. - (numdefcpd && words && defcpd_check(&words, wnum + 1, rv, NULL,1))))) {
  4493. - rv = rv->next_homonym;
  4494. - }
  4495. -
  4496. - if (rv && words && words[wnum + 1]) {
  4497. - mystrcat(*result, presult, MAXLNLEN);
  4498. - mystrcat(*result, " ", MAXLNLEN);
  4499. - mystrcat(*result, MORPH_PART, MAXLNLEN);
  4500. - mystrcat(*result, word+i, MAXLNLEN);
  4501. - if (complexprefixes && HENTRY_DATA(rv)) mystrcat(*result, HENTRY_DATA2(rv), MAXLNLEN);
  4502. - if (!HENTRY_FIND(rv, MORPH_STEM)) {
  4503. - mystrcat(*result, " ", MAXLNLEN);
  4504. - mystrcat(*result, MORPH_STEM, MAXLNLEN);
  4505. - mystrcat(*result, HENTRY_WORD(rv), MAXLNLEN);
  4506. - }
  4507. - // store the pointer of the hash entry
  4508. -// sprintf(*result + strlen(*result), " %s%p", MORPH_HENTRY, rv);
  4509. - if (!complexprefixes && HENTRY_DATA(rv)) {
  4510. - mystrcat(*result, " ", MAXLNLEN);
  4511. - mystrcat(*result, HENTRY_DATA2(rv), MAXLNLEN);
  4512. - }
  4513. - mystrcat(*result, "\n", MAXLNLEN);
  4514. - ok = 1;
  4515. - return 0;
  4516. - }
  4517. -
  4518. - oldnumsyllable2 = numsyllable;
  4519. - oldwordnum2 = wordnum;
  4520. -
  4521. -// LANG_hu section: spec. Hungarian rule
  4522. - if ((rv) && (langnum == LANG_hu) && (TESTAFF(rv->astr, 'I', rv->alen)) && !(TESTAFF(rv->astr, 'J', rv->alen))) {
  4523. - numsyllable--;
  4524. - }
  4525. -// END of LANG_hu section
  4526. - // increment word number, if the second root has a compoundroot flag
  4527. - if ((rv) && (compoundroot) &&
  4528. - (TESTAFF(rv->astr, compoundroot, rv->alen))) {
  4529. - wordnum++;
  4530. - }
  4531. -
  4532. - // check forbiddenwords
  4533. - if ((rv) && (rv->astr) && (TESTAFF(rv->astr, forbiddenword, rv->alen) ||
  4534. - TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen))) {
  4535. - st[i] = ch;
  4536. - continue;
  4537. - }
  4538. -
  4539. - // second word is acceptable, as a root?
  4540. - // hungarian conventions: compounding is acceptable,
  4541. - // when compound forms consist of 2 words, or if more,
  4542. - // then the syllable number of root words must be 6, or lesser.
  4543. - if ((rv) && (
  4544. - (compoundflag && TESTAFF(rv->astr, compoundflag, rv->alen)) ||
  4545. - (compoundend && TESTAFF(rv->astr, compoundend, rv->alen))
  4546. - )
  4547. - && (
  4548. - ((cpdwordmax==-1) || (wordnum+1<cpdwordmax)) ||
  4549. - ((cpdmaxsyllable!=0) &&
  4550. - (numsyllable+get_syllable(HENTRY_WORD(rv),rv->blen)<=cpdmaxsyllable))
  4551. - )
  4552. - && (
  4553. - (!checkcompounddup || (rv != rv_first))
  4554. - )
  4555. - )
  4556. - {
  4557. - // bad compound word
  4558. - mystrcat(*result, presult, MAXLNLEN);
  4559. - mystrcat(*result, " ", MAXLNLEN);
  4560. - mystrcat(*result, MORPH_PART, MAXLNLEN);
  4561. - mystrcat(*result, word+i, MAXLNLEN);
  4562. -
  4563. - if (HENTRY_DATA(rv)) {
  4564. - if (complexprefixes) mystrcat(*result, HENTRY_DATA2(rv), MAXLNLEN);
  4565. - if (! HENTRY_FIND(rv, MORPH_STEM)) {
  4566. - mystrcat(*result, " ", MAXLNLEN);
  4567. - mystrcat(*result, MORPH_STEM, MAXLNLEN);
  4568. - mystrcat(*result, HENTRY_WORD(rv), MAXLNLEN);
  4569. - }
  4570. - // store the pointer of the hash entry
  4571. -// sprintf(*result + strlen(*result), " %s%p", MORPH_HENTRY, rv);
  4572. - if (!complexprefixes) {
  4573. - mystrcat(*result, " ", MAXLNLEN);
  4574. - mystrcat(*result, HENTRY_DATA2(rv), MAXLNLEN);
  4575. - }
  4576. - }
  4577. - mystrcat(*result, "\n", MAXLNLEN);
  4578. - ok = 1;
  4579. - }
  4580. -
  4581. - numsyllable = oldnumsyllable2 ;
  4582. - wordnum = oldwordnum2;
  4583. -
  4584. - // perhaps second word has prefix or/and suffix
  4585. - sfx = NULL;
  4586. - sfxflag = FLAG_NULL;
  4587. -
  4588. - if (compoundflag && !onlycpdrule) rv = affix_check((word+i),strlen(word+i), compoundflag); else rv = NULL;
  4589. -
  4590. - if (!rv && compoundend && !onlycpdrule) {
  4591. - sfx = NULL;
  4592. - pfx = NULL;
  4593. - rv = affix_check((word+i),strlen(word+i), compoundend);
  4594. - }
  4595. -
  4596. - if (!rv && numdefcpd && words) {
  4597. - rv = affix_check((word+i),strlen(word+i), 0, IN_CPD_END);
  4598. - if (rv && words && defcpd_check(&words, wnum + 1, rv, NULL, 1)) {
  4599. - char * m = NULL;
  4600. - if (compoundflag) m = affix_check_morph((word+i),strlen(word+i), compoundflag);
  4601. - if ((!m || *m == '\0') && compoundend) {
  4602. - if (m) free(m);
  4603. - m = affix_check_morph((word+i),strlen(word+i), compoundend);
  4604. - }
  4605. - mystrcat(*result, presult, MAXLNLEN);
  4606. - if (m || (*m != '\0')) {
  4607. - sprintf(*result + strlen(*result), "%c%s%s%s", MSEP_FLD,
  4608. - MORPH_PART, word + i, line_uniq_app(&m, MSEP_REC));
  4609. - }
  4610. - if (m) free(m);
  4611. - mystrcat(*result, "\n", MAXLNLEN);
  4612. - ok = 1;
  4613. - }
  4614. - }
  4615. -
  4616. - // check non_compound flag in suffix and prefix
  4617. - if ((rv) &&
  4618. - ((pfx && pfx->getCont() &&
  4619. - TESTAFF(pfx->getCont(), compoundforbidflag,
  4620. - pfx->getContLen())) ||
  4621. - (sfx && sfx->getCont() &&
  4622. - TESTAFF(sfx->getCont(), compoundforbidflag,
  4623. - sfx->getContLen())))) {
  4624. - rv = NULL;
  4625. - }
  4626. -
  4627. - // check forbiddenwords
  4628. - if ((rv) && (rv->astr) && (TESTAFF(rv->astr,forbiddenword,rv->alen) ||
  4629. - TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen))
  4630. - && (! TESTAFF(rv->astr, needaffix, rv->alen))) {
  4631. - st[i] = ch;
  4632. - continue;
  4633. - }
  4634. -
  4635. - if (langnum == LANG_hu) {
  4636. - // calculate syllable number of the word
  4637. - numsyllable += get_syllable(word + i, strlen(word + i));
  4638. -
  4639. - // - affix syllable num.
  4640. - // XXX only second suffix (inflections, not derivations)
  4641. - if (sfxappnd) {
  4642. - char * tmp = myrevstrdup(sfxappnd);
  4643. - numsyllable -= get_syllable(tmp, strlen(tmp));
  4644. - free(tmp);
  4645. - }
  4646. -
  4647. - // + 1 word, if syllable number of the prefix > 1 (hungarian convention)
  4648. - if (pfx && (get_syllable(pfx->getKey(),strlen(pfx->getKey())) > 1)) wordnum++;
  4649. -
  4650. - // increment syllable num, if last word has a SYLLABLENUM flag
  4651. - // and the suffix is beginning `s'
  4652. -
  4653. - if (cpdsyllablenum) {
  4654. - switch (sfxflag) {
  4655. - case 'c': { numsyllable+=2; break; }
  4656. - case 'J': { numsyllable += 1; break; }
  4657. - case 'I': { if (rv && TESTAFF(rv->astr, 'J', rv->alen)) numsyllable += 1; break; }
  4658. - }
  4659. - }
  4660. - }
  4661. -
  4662. - // increment word number, if the second word has a compoundroot flag
  4663. - if ((rv) && (compoundroot) &&
  4664. - (TESTAFF(rv->astr, compoundroot, rv->alen))) {
  4665. - wordnum++;
  4666. - }
  4667. - // second word is acceptable, as a word with prefix or/and suffix?
  4668. - // hungarian conventions: compounding is acceptable,
  4669. - // when compound forms consist 2 word, otherwise
  4670. - // the syllable number of root words is 6, or lesser.
  4671. - if ((rv) &&
  4672. - (
  4673. - ((cpdwordmax==-1) || (wordnum+1<cpdwordmax)) ||
  4674. - ((cpdmaxsyllable!=0) &&
  4675. - (numsyllable <= cpdmaxsyllable))
  4676. - )
  4677. - && (
  4678. - (!checkcompounddup || (rv != rv_first))
  4679. - )) {
  4680. - char * m = NULL;
  4681. - if (compoundflag) m = affix_check_morph((word+i),strlen(word+i), compoundflag);
  4682. - if ((!m || *m == '\0') && compoundend) {
  4683. - if (m) free(m);
  4684. - m = affix_check_morph((word+i),strlen(word+i), compoundend);
  4685. - }
  4686. - mystrcat(*result, presult, MAXLNLEN);
  4687. - if (m && (*m != '\0')) {
  4688. - sprintf(*result + strlen(*result), "%c%s%s%s", MSEP_FLD,
  4689. - MORPH_PART, word + i, line_uniq_app(&m, MSEP_REC));
  4690. - }
  4691. - if (m) free(m);
  4692. - sprintf(*result + strlen(*result), "%c", MSEP_REC);
  4693. - ok = 1;
  4694. - }
  4695. -
  4696. - numsyllable = oldnumsyllable2;
  4697. - wordnum = oldwordnum2;
  4698. -
  4699. - // perhaps second word is a compound word (recursive call)
  4700. - if ((wordnum < maxwordnum) && (ok == 0)) {
  4701. - compound_check_morph((word+i),strlen(word+i), wordnum+1,
  4702. - numsyllable, maxwordnum, wnum + 1, words, 0, result, presult);
  4703. - } else {
  4704. - rv=NULL;
  4705. - }
  4706. - }
  4707. - st[i] = ch;
  4708. - wordnum = oldwordnum;
  4709. - numsyllable = oldnumsyllable;
  4710. -
  4711. - } while (numdefcpd && oldwordnum == 0 && !onlycpdrule && (onlycpdrule = 1)); // end of onlycpd loop
  4712. -
  4713. - }
  4714. - return 0;
  4715. -}
  4716. -
  4717. - // return 1 if s1 (reversed) is a leading subset of end of s2
  4718. -/* inline int AffixMgr::isRevSubset(const char * s1, const char * end_of_s2, int len)
  4719. - {
  4720. - while ((len > 0) && *s1 && (*s1 == *end_of_s2)) {
  4721. - s1++;
  4722. - end_of_s2--;
  4723. - len--;
  4724. - }
  4725. - return (*s1 == '\0');
  4726. - }
  4727. - */
  4728. -
  4729. -inline int AffixMgr::isRevSubset(const char * s1, const char * end_of_s2, int len)
  4730. - {
  4731. - while ((len > 0) && (*s1 != '\0') && ((*s1 == *end_of_s2) || (*s1 == '.'))) {
  4732. - s1++;
  4733. - end_of_s2--;
  4734. - len--;
  4735. - }
  4736. - return (*s1 == '\0');
  4737. - }
  4738. -
  4739. -// check word for suffixes
  4740. -
  4741. -struct hentry * AffixMgr::suffix_check (const char * word, int len,
  4742. - int sfxopts, PfxEntry * ppfx, char ** wlst, int maxSug, int * ns,
  4743. - const FLAG cclass, const FLAG needflag, char in_compound)
  4744. -{
  4745. - struct hentry * rv = NULL;
  4746. - PfxEntry* ep = ppfx;
  4747. -
  4748. - // first handle the special case of 0 length suffixes
  4749. - SfxEntry * se = sStart[0];
  4750. -
  4751. - while (se) {
  4752. - if (!cclass || se->getCont()) {
  4753. - // suffixes are not allowed in beginning of compounds
  4754. - if ((((in_compound != IN_CPD_BEGIN)) || // && !cclass
  4755. - // except when signed with compoundpermitflag flag
  4756. - (se->getCont() && compoundpermitflag &&
  4757. - TESTAFF(se->getCont(),compoundpermitflag,se->getContLen()))) && (!circumfix ||
  4758. - // no circumfix flag in prefix and suffix
  4759. - ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(),
  4760. - circumfix, ep->getContLen())) &&
  4761. - (!se->getCont() || !(TESTAFF(se->getCont(),circumfix,se->getContLen())))) ||
  4762. - // circumfix flag in prefix AND suffix
  4763. - ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(),
  4764. - circumfix, ep->getContLen())) &&
  4765. - (se->getCont() && (TESTAFF(se->getCont(),circumfix,se->getContLen()))))) &&
  4766. - // fogemorpheme
  4767. - (in_compound ||
  4768. - !(se->getCont() && (TESTAFF(se->getCont(), onlyincompound, se->getContLen())))) &&
  4769. - // needaffix on prefix or first suffix
  4770. - (cclass ||
  4771. - !(se->getCont() && TESTAFF(se->getCont(), needaffix, se->getContLen())) ||
  4772. - (ppfx && !((ep->getCont()) &&
  4773. - TESTAFF(ep->getCont(), needaffix,
  4774. - ep->getContLen())))
  4775. - )) {
  4776. - rv = se->checkword(word,len, sfxopts, ppfx, wlst, maxSug, ns, (FLAG) cclass,
  4777. - needflag, (in_compound ? 0 : onlyincompound));
  4778. - if (rv) {
  4779. - sfx=se; // BUG: sfx not stateless
  4780. - return rv;
  4781. - }
  4782. - }
  4783. - }
  4784. - se = se->getNext();
  4785. - }
  4786. -
  4787. - // now handle the general case
  4788. - if (len == 0) return NULL; // FULLSTRIP
  4789. - unsigned char sp= *((const unsigned char *)(word + len - 1));
  4790. - SfxEntry * sptr = sStart[sp];
  4791. -
  4792. - while (sptr) {
  4793. - if (isRevSubset(sptr->getKey(), word + len - 1, len)
  4794. - ) {
  4795. - // suffixes are not allowed in beginning of compounds
  4796. - if ((((in_compound != IN_CPD_BEGIN)) || // && !cclass
  4797. - // except when signed with compoundpermitflag flag
  4798. - (sptr->getCont() && compoundpermitflag &&
  4799. - TESTAFF(sptr->getCont(),compoundpermitflag,sptr->getContLen()))) && (!circumfix ||
  4800. - // no circumfix flag in prefix and suffix
  4801. - ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(),
  4802. - circumfix, ep->getContLen())) &&
  4803. - (!sptr->getCont() || !(TESTAFF(sptr->getCont(),circumfix,sptr->getContLen())))) ||
  4804. - // circumfix flag in prefix AND suffix
  4805. - ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(),
  4806. - circumfix, ep->getContLen())) &&
  4807. - (sptr->getCont() && (TESTAFF(sptr->getCont(),circumfix,sptr->getContLen()))))) &&
  4808. - // fogemorpheme
  4809. - (in_compound ||
  4810. - !((sptr->getCont() && (TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))))) &&
  4811. - // needaffix on prefix or first suffix
  4812. - (cclass ||
  4813. - !(sptr->getCont() && TESTAFF(sptr->getCont(), needaffix, sptr->getContLen())) ||
  4814. - (ppfx && !((ep->getCont()) &&
  4815. - TESTAFF(ep->getCont(), needaffix,
  4816. - ep->getContLen())))
  4817. - )
  4818. - ) if (in_compound != IN_CPD_END || ppfx || !(sptr->getCont() && TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))) {
  4819. - rv = sptr->checkword(word,len, sfxopts, ppfx, wlst,
  4820. - maxSug, ns, cclass, needflag, (in_compound ? 0 : onlyincompound));
  4821. - if (rv) {
  4822. - sfx=sptr; // BUG: sfx not stateless
  4823. - sfxflag = sptr->getFlag(); // BUG: sfxflag not stateless
  4824. - if (!sptr->getCont()) sfxappnd=sptr->getKey(); // BUG: sfxappnd not stateless
  4825. - return rv;
  4826. - }
  4827. - }
  4828. - sptr = sptr->getNextEQ();
  4829. - } else {
  4830. - sptr = sptr->getNextNE();
  4831. - }
  4832. - }
  4833. -
  4834. - return NULL;
  4835. -}
  4836. -
  4837. -// check word for two-level suffixes
  4838. -
  4839. -struct hentry * AffixMgr::suffix_check_twosfx(const char * word, int len,
  4840. - int sfxopts, PfxEntry * ppfx, const FLAG needflag)
  4841. -{
  4842. - struct hentry * rv = NULL;
  4843. -
  4844. - // first handle the special case of 0 length suffixes
  4845. - SfxEntry * se = sStart[0];
  4846. - while (se) {
  4847. - if (contclasses[se->getFlag()])
  4848. - {
  4849. - rv = se->check_twosfx(word,len, sfxopts, ppfx, needflag);
  4850. - if (rv) return rv;
  4851. - }
  4852. - se = se->getNext();
  4853. - }
  4854. -
  4855. - // now handle the general case
  4856. - if (len == 0) return NULL; // FULLSTRIP
  4857. - unsigned char sp = *((const unsigned char *)(word + len - 1));
  4858. - SfxEntry * sptr = sStart[sp];
  4859. -
  4860. - while (sptr) {
  4861. - if (isRevSubset(sptr->getKey(), word + len - 1, len)) {
  4862. - if (contclasses[sptr->getFlag()])
  4863. - {
  4864. - rv = sptr->check_twosfx(word,len, sfxopts, ppfx, needflag);
  4865. - if (rv) {
  4866. - sfxflag = sptr->getFlag(); // BUG: sfxflag not stateless
  4867. - if (!sptr->getCont()) sfxappnd=sptr->getKey(); // BUG: sfxappnd not stateless
  4868. - return rv;
  4869. - }
  4870. - }
  4871. - sptr = sptr->getNextEQ();
  4872. - } else {
  4873. - sptr = sptr->getNextNE();
  4874. - }
  4875. - }
  4876. -
  4877. - return NULL;
  4878. -}
  4879. -
  4880. -char * AffixMgr::suffix_check_twosfx_morph(const char * word, int len,
  4881. - int sfxopts, PfxEntry * ppfx, const FLAG needflag)
  4882. -{
  4883. - char result[MAXLNLEN];
  4884. - char result2[MAXLNLEN];
  4885. - char result3[MAXLNLEN];
  4886. -
  4887. - char * st;
  4888. -
  4889. - result[0] = '\0';
  4890. - result2[0] = '\0';
  4891. - result3[0] = '\0';
  4892. -
  4893. - // first handle the special case of 0 length suffixes
  4894. - SfxEntry * se = sStart[0];
  4895. - while (se) {
  4896. - if (contclasses[se->getFlag()])
  4897. - {
  4898. - st = se->check_twosfx_morph(word,len, sfxopts, ppfx, needflag);
  4899. - if (st) {
  4900. - if (ppfx) {
  4901. - if (ppfx->getMorph()) {
  4902. - mystrcat(result, ppfx->getMorph(), MAXLNLEN);
  4903. - mystrcat(result, " ", MAXLNLEN);
  4904. - } else debugflag(result, ppfx->getFlag());
  4905. - }
  4906. - mystrcat(result, st, MAXLNLEN);
  4907. - free(st);
  4908. - if (se->getMorph()) {
  4909. - mystrcat(result, " ", MAXLNLEN);
  4910. - mystrcat(result, se->getMorph(), MAXLNLEN);
  4911. - } else debugflag(result, se->getFlag());
  4912. - mystrcat(result, "\n", MAXLNLEN);
  4913. - }
  4914. - }
  4915. - se = se->getNext();
  4916. - }
  4917. -
  4918. - // now handle the general case
  4919. - if (len == 0) return NULL; // FULLSTRIP
  4920. - unsigned char sp = *((const unsigned char *)(word + len - 1));
  4921. - SfxEntry * sptr = sStart[sp];
  4922. -
  4923. - while (sptr) {
  4924. - if (isRevSubset(sptr->getKey(), word + len - 1, len)) {
  4925. - if (contclasses[sptr->getFlag()])
  4926. - {
  4927. - st = sptr->check_twosfx_morph(word,len, sfxopts, ppfx, needflag);
  4928. - if (st) {
  4929. - sfxflag = sptr->getFlag(); // BUG: sfxflag not stateless
  4930. - if (!sptr->getCont()) sfxappnd=sptr->getKey(); // BUG: sfxappnd not stateless
  4931. - strcpy(result2, st);
  4932. - free(st);
  4933. -
  4934. - result3[0] = '\0';
  4935. -
  4936. - if (sptr->getMorph()) {
  4937. - mystrcat(result3, " ", MAXLNLEN);
  4938. - mystrcat(result3, sptr->getMorph(), MAXLNLEN);
  4939. - } else debugflag(result3, sptr->getFlag());
  4940. - strlinecat(result2, result3);
  4941. - mystrcat(result2, "\n", MAXLNLEN);
  4942. - mystrcat(result, result2, MAXLNLEN);
  4943. - }
  4944. - }
  4945. - sptr = sptr->getNextEQ();
  4946. - } else {
  4947. - sptr = sptr->getNextNE();
  4948. - }
  4949. - }
  4950. - if (*result) return mystrdup(result);
  4951. - return NULL;
  4952. -}
  4953. -
  4954. -char * AffixMgr::suffix_check_morph(const char * word, int len,
  4955. - int sfxopts, PfxEntry * ppfx, const FLAG cclass, const FLAG needflag, char in_compound)
  4956. -{
  4957. - char result[MAXLNLEN];
  4958. -
  4959. - struct hentry * rv = NULL;
  4960. -
  4961. - result[0] = '\0';
  4962. -
  4963. - PfxEntry* ep = ppfx;
  4964. -
  4965. - // first handle the special case of 0 length suffixes
  4966. - SfxEntry * se = sStart[0];
  4967. - while (se) {
  4968. - if (!cclass || se->getCont()) {
  4969. - // suffixes are not allowed in beginning of compounds
  4970. - if (((((in_compound != IN_CPD_BEGIN)) || // && !cclass
  4971. - // except when signed with compoundpermitflag flag
  4972. - (se->getCont() && compoundpermitflag &&
  4973. - TESTAFF(se->getCont(),compoundpermitflag,se->getContLen()))) && (!circumfix ||
  4974. - // no circumfix flag in prefix and suffix
  4975. - ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(),
  4976. - circumfix, ep->getContLen())) &&
  4977. - (!se->getCont() || !(TESTAFF(se->getCont(),circumfix,se->getContLen())))) ||
  4978. - // circumfix flag in prefix AND suffix
  4979. - ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(),
  4980. - circumfix, ep->getContLen())) &&
  4981. - (se->getCont() && (TESTAFF(se->getCont(),circumfix,se->getContLen()))))) &&
  4982. - // fogemorpheme
  4983. - (in_compound ||
  4984. - !((se->getCont() && (TESTAFF(se->getCont(), onlyincompound, se->getContLen()))))) &&
  4985. - // needaffix on prefix or first suffix
  4986. - (cclass ||
  4987. - !(se->getCont() && TESTAFF(se->getCont(), needaffix, se->getContLen())) ||
  4988. - (ppfx && !((ep->getCont()) &&
  4989. - TESTAFF(ep->getCont(), needaffix,
  4990. - ep->getContLen())))
  4991. - )
  4992. - ))
  4993. - rv = se->checkword(word, len, sfxopts, ppfx, NULL, 0, 0, cclass, needflag);
  4994. - while (rv) {
  4995. - if (ppfx) {
  4996. - if (ppfx->getMorph()) {
  4997. - mystrcat(result, ppfx->getMorph(), MAXLNLEN);
  4998. - mystrcat(result, " ", MAXLNLEN);
  4999. - } else debugflag(result, ppfx->getFlag());
  5000. - }
  5001. - if (complexprefixes && HENTRY_DATA(rv)) mystrcat(result, HENTRY_DATA2(rv), MAXLNLEN);
  5002. - if (! HENTRY_FIND(rv, MORPH_STEM)) {
  5003. - mystrcat(result, " ", MAXLNLEN);
  5004. - mystrcat(result, MORPH_STEM, MAXLNLEN);
  5005. - mystrcat(result, HENTRY_WORD(rv), MAXLNLEN);
  5006. - }
  5007. - // store the pointer of the hash entry
  5008. -// sprintf(result + strlen(result), " %s%p", MORPH_HENTRY, rv);
  5009. -
  5010. - if (!complexprefixes && HENTRY_DATA(rv)) {
  5011. - mystrcat(result, " ", MAXLNLEN);
  5012. - mystrcat(result, HENTRY_DATA2(rv), MAXLNLEN);
  5013. - }
  5014. - if (se->getMorph()) {
  5015. - mystrcat(result, " ", MAXLNLEN);
  5016. - mystrcat(result, se->getMorph(), MAXLNLEN);
  5017. - } else debugflag(result, se->getFlag());
  5018. - mystrcat(result, "\n", MAXLNLEN);
  5019. - rv = se->get_next_homonym(rv, sfxopts, ppfx, cclass, needflag);
  5020. - }
  5021. - }
  5022. - se = se->getNext();
  5023. - }
  5024. -
  5025. - // now handle the general case
  5026. - if (len == 0) return NULL; // FULLSTRIP
  5027. - unsigned char sp = *((const unsigned char *)(word + len - 1));
  5028. - SfxEntry * sptr = sStart[sp];
  5029. -
  5030. - while (sptr) {
  5031. - if (isRevSubset(sptr->getKey(), word + len - 1, len)
  5032. - ) {
  5033. - // suffixes are not allowed in beginning of compounds
  5034. - if (((((in_compound != IN_CPD_BEGIN)) || // && !cclass
  5035. - // except when signed with compoundpermitflag flag
  5036. - (sptr->getCont() && compoundpermitflag &&
  5037. - TESTAFF(sptr->getCont(),compoundpermitflag,sptr->getContLen()))) && (!circumfix ||
  5038. - // no circumfix flag in prefix and suffix
  5039. - ((!ppfx || !(ep->getCont()) || !TESTAFF(ep->getCont(),
  5040. - circumfix, ep->getContLen())) &&
  5041. - (!sptr->getCont() || !(TESTAFF(sptr->getCont(),circumfix,sptr->getContLen())))) ||
  5042. - // circumfix flag in prefix AND suffix
  5043. - ((ppfx && (ep->getCont()) && TESTAFF(ep->getCont(),
  5044. - circumfix, ep->getContLen())) &&
  5045. - (sptr->getCont() && (TESTAFF(sptr->getCont(),circumfix,sptr->getContLen()))))) &&
  5046. - // fogemorpheme
  5047. - (in_compound ||
  5048. - !((sptr->getCont() && (TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))))) &&
  5049. - // needaffix on first suffix
  5050. - (cclass || !(sptr->getCont() &&
  5051. - TESTAFF(sptr->getCont(), needaffix, sptr->getContLen())))
  5052. - )) rv = sptr->checkword(word,len, sfxopts, ppfx, NULL, 0, 0, cclass, needflag);
  5053. - while (rv) {
  5054. - if (ppfx) {
  5055. - if (ppfx->getMorph()) {
  5056. - mystrcat(result, ppfx->getMorph(), MAXLNLEN);
  5057. - mystrcat(result, " ", MAXLNLEN);
  5058. - } else debugflag(result, ppfx->getFlag());
  5059. - }
  5060. - if (complexprefixes && HENTRY_DATA(rv)) mystrcat(result, HENTRY_DATA2(rv), MAXLNLEN);
  5061. - if (! HENTRY_FIND(rv, MORPH_STEM)) {
  5062. - mystrcat(result, " ", MAXLNLEN);
  5063. - mystrcat(result, MORPH_STEM, MAXLNLEN);
  5064. - mystrcat(result, HENTRY_WORD(rv), MAXLNLEN);
  5065. - }
  5066. - // store the pointer of the hash entry
  5067. -// sprintf(result + strlen(result), " %s%p", MORPH_HENTRY, rv);
  5068. -
  5069. - if (!complexprefixes && HENTRY_DATA(rv)) {
  5070. - mystrcat(result, " ", MAXLNLEN);
  5071. - mystrcat(result, HENTRY_DATA2(rv), MAXLNLEN);
  5072. - }
  5073. -
  5074. - if (sptr->getMorph()) {
  5075. - mystrcat(result, " ", MAXLNLEN);
  5076. - mystrcat(result, sptr->getMorph(), MAXLNLEN);
  5077. - } else debugflag(result, sptr->getFlag());
  5078. - mystrcat(result, "\n", MAXLNLEN);
  5079. - rv = sptr->get_next_homonym(rv, sfxopts, ppfx, cclass, needflag);
  5080. - }
  5081. - sptr = sptr->getNextEQ();
  5082. - } else {
  5083. - sptr = sptr->getNextNE();
  5084. - }
  5085. - }
  5086. -
  5087. - if (*result) return mystrdup(result);
  5088. - return NULL;
  5089. -}
  5090. -
  5091. -// check if word with affixes is correctly spelled
  5092. -struct hentry * AffixMgr::affix_check (const char * word, int len, const FLAG needflag, char in_compound)
  5093. -{
  5094. - struct hentry * rv= NULL;
  5095. -
  5096. - // check all prefixes (also crossed with suffixes if allowed)
  5097. - rv = prefix_check(word, len, in_compound, needflag);
  5098. - if (rv) return rv;
  5099. -
  5100. - // if still not found check all suffixes
  5101. - rv = suffix_check(word, len, 0, NULL, NULL, 0, NULL, FLAG_NULL, needflag, in_compound);
  5102. -
  5103. - if (havecontclass) {
  5104. - sfx = NULL;
  5105. - pfx = NULL;
  5106. -
  5107. - if (rv) return rv;
  5108. - // if still not found check all two-level suffixes
  5109. - rv = suffix_check_twosfx(word, len, 0, NULL, needflag);
  5110. -
  5111. - if (rv) return rv;
  5112. - // if still not found check all two-level suffixes
  5113. - rv = prefix_check_twosfx(word, len, IN_CPD_NOT, needflag);
  5114. - }
  5115. -
  5116. - return rv;
  5117. -}
  5118. -
  5119. -// check if word with affixes is correctly spelled
  5120. -char * AffixMgr::affix_check_morph(const char * word, int len, const FLAG needflag, char in_compound)
  5121. -{
  5122. - char result[MAXLNLEN];
  5123. - char * st = NULL;
  5124. -
  5125. - *result = '\0';
  5126. -
  5127. - // check all prefixes (also crossed with suffixes if allowed)
  5128. - st = prefix_check_morph(word, len, in_compound);
  5129. - if (st) {
  5130. - mystrcat(result, st, MAXLNLEN);
  5131. - free(st);
  5132. - }
  5133. -
  5134. - // if still not found check all suffixes
  5135. - st = suffix_check_morph(word, len, 0, NULL, '\0', needflag, in_compound);
  5136. - if (st) {
  5137. - mystrcat(result, st, MAXLNLEN);
  5138. - free(st);
  5139. - }
  5140. -
  5141. - if (havecontclass) {
  5142. - sfx = NULL;
  5143. - pfx = NULL;
  5144. - // if still not found check all two-level suffixes
  5145. - st = suffix_check_twosfx_morph(word, len, 0, NULL, needflag);
  5146. - if (st) {
  5147. - mystrcat(result, st, MAXLNLEN);
  5148. - free(st);
  5149. - }
  5150. -
  5151. - // if still not found check all two-level suffixes
  5152. - st = prefix_check_twosfx_morph(word, len, IN_CPD_NOT, needflag);
  5153. - if (st) {
  5154. - mystrcat(result, st, MAXLNLEN);
  5155. - free(st);
  5156. - }
  5157. - }
  5158. -
  5159. - return mystrdup(result);
  5160. -}
  5161. -
  5162. -char * AffixMgr::morphgen(char * ts, int wl, const unsigned short * ap,
  5163. - unsigned short al, char * morph, char * targetmorph, int level)
  5164. -{
  5165. - // handle suffixes
  5166. - char * stemmorph;
  5167. - char * stemmorphcatpos;
  5168. - char mymorph[MAXLNLEN];
  5169. -
  5170. - if (!morph) return NULL;
  5171. -
  5172. - // check substandard flag
  5173. - if (TESTAFF(ap, substandard, al)) return NULL;
  5174. -
  5175. - if (morphcmp(morph, targetmorph) == 0) return mystrdup(ts);
  5176. -
  5177. -// int targetcount = get_sfxcount(targetmorph);
  5178. -
  5179. - // use input suffix fields, if exist
  5180. - if (strstr(morph, MORPH_INFL_SFX) || strstr(morph, MORPH_DERI_SFX)) {
  5181. - stemmorph = mymorph;
  5182. - strcpy(stemmorph, morph);
  5183. - mystrcat(stemmorph, " ", MAXLNLEN);
  5184. - stemmorphcatpos = stemmorph + strlen(stemmorph);
  5185. - } else {
  5186. - stemmorph = morph;
  5187. - stemmorphcatpos = NULL;
  5188. - }
  5189. -
  5190. - for (int i = 0; i < al; i++) {
  5191. - const unsigned char c = (unsigned char) (ap[i] & 0x00FF);
  5192. - SfxEntry * sptr = sFlag[c];
  5193. - while (sptr) {
  5194. - if (sptr->getFlag() == ap[i] && sptr->getMorph() && ((sptr->getContLen() == 0) ||
  5195. - // don't generate forms with substandard affixes
  5196. - !TESTAFF(sptr->getCont(), substandard, sptr->getContLen()))) {
  5197. -
  5198. - if (stemmorphcatpos) strcpy(stemmorphcatpos, sptr->getMorph());
  5199. - else stemmorph = (char *) sptr->getMorph();
  5200. -
  5201. - int cmp = morphcmp(stemmorph, targetmorph);
  5202. -
  5203. - if (cmp == 0) {
  5204. - char * newword = sptr->add(ts, wl);
  5205. - if (newword) {
  5206. - hentry * check = pHMgr->lookup(newword); // XXX extra dic
  5207. - if (!check || !check->astr ||
  5208. - !(TESTAFF(check->astr, forbiddenword, check->alen) ||
  5209. - TESTAFF(check->astr, ONLYUPCASEFLAG, check->alen))) {
  5210. - return newword;
  5211. - }
  5212. - free(newword);
  5213. - }
  5214. - }
  5215. -
  5216. - // recursive call for secondary suffixes
  5217. - if ((level == 0) && (cmp == 1) && (sptr->getContLen() > 0) &&
  5218. -// (get_sfxcount(stemmorph) < targetcount) &&
  5219. - !TESTAFF(sptr->getCont(), substandard, sptr->getContLen())) {
  5220. - char * newword = sptr->add(ts, wl);
  5221. - if (newword) {
  5222. - char * newword2 = morphgen(newword, strlen(newword), sptr->getCont(),
  5223. - sptr->getContLen(), stemmorph, targetmorph, 1);
  5224. -
  5225. - if (newword2) {
  5226. - free(newword);
  5227. - return newword2;
  5228. - }
  5229. - free(newword);
  5230. - newword = NULL;
  5231. - }
  5232. - }
  5233. - }
  5234. - sptr = sptr->getFlgNxt();
  5235. - }
  5236. - }
  5237. - return NULL;
  5238. -}
  5239. -
  5240. -
  5241. -int AffixMgr::expand_rootword(struct guessword * wlst, int maxn, const char * ts,
  5242. - int wl, const unsigned short * ap, unsigned short al, char * bad, int badl,
  5243. - char * phon)
  5244. -{
  5245. - int nh=0;
  5246. - // first add root word to list
  5247. - if ((nh < maxn) && !(al && ((needaffix && TESTAFF(ap, needaffix, al)) ||
  5248. - (onlyincompound && TESTAFF(ap, onlyincompound, al))))) {
  5249. - wlst[nh].word = mystrdup(ts);
  5250. - if (!wlst[nh].word) return 0;
  5251. - wlst[nh].allow = (1 == 0);
  5252. - wlst[nh].orig = NULL;
  5253. - nh++;
  5254. - // add special phonetic version
  5255. - if (phon && (nh < maxn)) {
  5256. - wlst[nh].word = mystrdup(phon);
  5257. - if (!wlst[nh].word) return nh - 1;
  5258. - wlst[nh].allow = (1 == 0);
  5259. - wlst[nh].orig = mystrdup(ts);
  5260. - if (!wlst[nh].orig) return nh - 1;
  5261. - nh++;
  5262. - }
  5263. - }
  5264. -
  5265. - // handle suffixes
  5266. - for (int i = 0; i < al; i++) {
  5267. - const unsigned char c = (unsigned char) (ap[i] & 0x00FF);
  5268. - SfxEntry * sptr = sFlag[c];
  5269. - while (sptr) {
  5270. - if ((sptr->getFlag() == ap[i]) && (!sptr->getKeyLen() || ((badl > sptr->getKeyLen()) &&
  5271. - (strcmp(sptr->getAffix(), bad + badl - sptr->getKeyLen()) == 0))) &&
  5272. - // check needaffix flag
  5273. - !(sptr->getCont() && ((needaffix &&
  5274. - TESTAFF(sptr->getCont(), needaffix, sptr->getContLen())) ||
  5275. - (circumfix &&
  5276. - TESTAFF(sptr->getCont(), circumfix, sptr->getContLen())) ||
  5277. - (onlyincompound &&
  5278. - TESTAFF(sptr->getCont(), onlyincompound, sptr->getContLen()))))
  5279. - ) {
  5280. - char * newword = sptr->add(ts, wl);
  5281. - if (newword) {
  5282. - if (nh < maxn) {
  5283. - wlst[nh].word = newword;
  5284. - wlst[nh].allow = sptr->allowCross();
  5285. - wlst[nh].orig = NULL;
  5286. - nh++;
  5287. - // add special phonetic version
  5288. - if (phon && (nh < maxn)) {
  5289. - char st[MAXWORDUTF8LEN];
  5290. - strcpy(st, phon);
  5291. - strcat(st, sptr->getKey());
  5292. - reverseword(st + strlen(phon));
  5293. - wlst[nh].word = mystrdup(st);
  5294. - if (!wlst[nh].word) return nh - 1;
  5295. - wlst[nh].allow = (1 == 0);
  5296. - wlst[nh].orig = mystrdup(newword);
  5297. - if (!wlst[nh].orig) return nh - 1;
  5298. - nh++;
  5299. - }
  5300. - } else {
  5301. - free(newword);
  5302. - }
  5303. - }
  5304. - }
  5305. - sptr = sptr->getFlgNxt();
  5306. - }
  5307. - }
  5308. -
  5309. - int n = nh;
  5310. -
  5311. - // handle cross products of prefixes and suffixes
  5312. - for (int j=1;j<n ;j++)
  5313. - if (wlst[j].allow) {
  5314. - for (int k = 0; k < al; k++) {
  5315. - const unsigned char c = (unsigned char) (ap[k] & 0x00FF);
  5316. - PfxEntry * cptr = pFlag[c];
  5317. - while (cptr) {
  5318. - if ((cptr->getFlag() == ap[k]) && cptr->allowCross() && (!cptr->getKeyLen() || ((badl > cptr->getKeyLen()) &&
  5319. - (strncmp(cptr->getKey(), bad, cptr->getKeyLen()) == 0)))) {
  5320. - int l1 = strlen(wlst[j].word);
  5321. - char * newword = cptr->add(wlst[j].word, l1);
  5322. - if (newword) {
  5323. - if (nh < maxn) {
  5324. - wlst[nh].word = newword;
  5325. - wlst[nh].allow = cptr->allowCross();
  5326. - wlst[nh].orig = NULL;
  5327. - nh++;
  5328. - } else {
  5329. - free(newword);
  5330. - }
  5331. - }
  5332. - }
  5333. - cptr = cptr->getFlgNxt();
  5334. - }
  5335. - }
  5336. - }
  5337. -
  5338. -
  5339. - // now handle pure prefixes
  5340. - for (int m = 0; m < al; m ++) {
  5341. - const unsigned char c = (unsigned char) (ap[m] & 0x00FF);
  5342. - PfxEntry * ptr = pFlag[c];
  5343. - while (ptr) {
  5344. - if ((ptr->getFlag() == ap[m]) && (!ptr->getKeyLen() || ((badl > ptr->getKeyLen()) &&
  5345. - (strncmp(ptr->getKey(), bad, ptr->getKeyLen()) == 0))) &&
  5346. - // check needaffix flag
  5347. - !(ptr->getCont() && ((needaffix &&
  5348. - TESTAFF(ptr->getCont(), needaffix, ptr->getContLen())) ||
  5349. - (circumfix &&
  5350. - TESTAFF(ptr->getCont(), circumfix, ptr->getContLen())) ||
  5351. - (onlyincompound &&
  5352. - TESTAFF(ptr->getCont(), onlyincompound, ptr->getContLen()))))
  5353. - ) {
  5354. - char * newword = ptr->add(ts, wl);
  5355. - if (newword) {
  5356. - if (nh < maxn) {
  5357. - wlst[nh].word = newword;
  5358. - wlst[nh].allow = ptr->allowCross();
  5359. - wlst[nh].orig = NULL;
  5360. - nh++;
  5361. - } else {
  5362. - free(newword);
  5363. - }
  5364. - }
  5365. - }
  5366. - ptr = ptr->getFlgNxt();
  5367. - }
  5368. - }
  5369. -
  5370. - return nh;
  5371. -}
  5372. -
  5373. -// return length of replacing table
  5374. -int AffixMgr::get_numrep() const
  5375. -{
  5376. - return numrep;
  5377. -}
  5378. -
  5379. -// return replacing table
  5380. -struct replentry * AffixMgr::get_reptable() const
  5381. -{
  5382. - if (! reptable ) return NULL;
  5383. - return reptable;
  5384. -}
  5385. -
  5386. -// return iconv table
  5387. -RepList * AffixMgr::get_iconvtable() const
  5388. -{
  5389. - if (! iconvtable ) return NULL;
  5390. - return iconvtable;
  5391. -}
  5392. -
  5393. -// return oconv table
  5394. -RepList * AffixMgr::get_oconvtable() const
  5395. -{
  5396. - if (! oconvtable ) return NULL;
  5397. - return oconvtable;
  5398. -}
  5399. -
  5400. -// return replacing table
  5401. -struct phonetable * AffixMgr::get_phonetable() const
  5402. -{
  5403. - if (! phone ) return NULL;
  5404. - return phone;
  5405. -}
  5406. -
  5407. -// return length of character map table
  5408. -int AffixMgr::get_nummap() const
  5409. -{
  5410. - return nummap;
  5411. -}
  5412. -
  5413. -// return character map table
  5414. -struct mapentry * AffixMgr::get_maptable() const
  5415. -{
  5416. - if (! maptable ) return NULL;
  5417. - return maptable;
  5418. -}
  5419. -
  5420. -// return length of word break table
  5421. -int AffixMgr::get_numbreak() const
  5422. -{
  5423. - return numbreak;
  5424. -}
  5425. -
  5426. -// return character map table
  5427. -char ** AffixMgr::get_breaktable() const
  5428. -{
  5429. - if (! breaktable ) return NULL;
  5430. - return breaktable;
  5431. -}
  5432. -
  5433. -// return text encoding of dictionary
  5434. -char * AffixMgr::get_encoding()
  5435. -{
  5436. - if (! encoding ) encoding = mystrdup(SPELL_ENCODING);
  5437. - return mystrdup(encoding);
  5438. -}
  5439. -
  5440. -// return text encoding of dictionary
  5441. -int AffixMgr::get_langnum() const
  5442. -{
  5443. - return langnum;
  5444. -}
  5445. -
  5446. -// return double prefix option
  5447. -int AffixMgr::get_complexprefixes() const
  5448. -{
  5449. - return complexprefixes;
  5450. -}
  5451. -
  5452. -// return FULLSTRIP option
  5453. -int AffixMgr::get_fullstrip() const
  5454. -{
  5455. - return fullstrip;
  5456. -}
  5457. -
  5458. -FLAG AffixMgr::get_keepcase() const
  5459. -{
  5460. - return keepcase;
  5461. -}
  5462. -
  5463. -FLAG AffixMgr::get_forceucase() const
  5464. -{
  5465. - return forceucase;
  5466. -}
  5467. -
  5468. -FLAG AffixMgr::get_warn() const
  5469. -{
  5470. - return warn;
  5471. -}
  5472. -
  5473. -int AffixMgr::get_forbidwarn() const
  5474. -{
  5475. - return forbidwarn;
  5476. -}
  5477. -
  5478. -int AffixMgr::get_checksharps() const
  5479. -{
  5480. - return checksharps;
  5481. -}
  5482. -
  5483. -char * AffixMgr::encode_flag(unsigned short aflag) const
  5484. -{
  5485. - return pHMgr->encode_flag(aflag);
  5486. -}
  5487. -
  5488. -
  5489. -// return the preferred ignore string for suggestions
  5490. -char * AffixMgr::get_ignore() const
  5491. -{
  5492. - if (!ignorechars) return NULL;
  5493. - return ignorechars;
  5494. -}
  5495. -
  5496. -// return the preferred ignore string for suggestions
  5497. -unsigned short * AffixMgr::get_ignore_utf16(int * len) const
  5498. -{
  5499. - *len = ignorechars_utf16_len;
  5500. - return ignorechars_utf16;
  5501. -}
  5502. -
  5503. -// return the keyboard string for suggestions
  5504. -char * AffixMgr::get_key_string()
  5505. -{
  5506. - if (! keystring ) keystring = mystrdup(SPELL_KEYSTRING);
  5507. - return mystrdup(keystring);
  5508. -}
  5509. -
  5510. -// return the preferred try string for suggestions
  5511. -char * AffixMgr::get_try_string() const
  5512. -{
  5513. - if (! trystring ) return NULL;
  5514. - return mystrdup(trystring);
  5515. -}
  5516. -
  5517. -// return the preferred try string for suggestions
  5518. -const char * AffixMgr::get_wordchars() const
  5519. -{
  5520. - return wordchars;
  5521. -}
  5522. -
  5523. -unsigned short * AffixMgr::get_wordchars_utf16(int * len) const
  5524. -{
  5525. - *len = wordchars_utf16_len;
  5526. - return wordchars_utf16;
  5527. -}
  5528. -
  5529. -// is there compounding?
  5530. -int AffixMgr::get_compound() const
  5531. -{
  5532. - return compoundflag || compoundbegin || numdefcpd;
  5533. -}
  5534. -
  5535. -// return the compound words control flag
  5536. -FLAG AffixMgr::get_compoundflag() const
  5537. -{
  5538. - return compoundflag;
  5539. -}
  5540. -
  5541. -// return the forbidden words control flag
  5542. -FLAG AffixMgr::get_forbiddenword() const
  5543. -{
  5544. - return forbiddenword;
  5545. -}
  5546. -
  5547. -// return the forbidden words control flag
  5548. -FLAG AffixMgr::get_nosuggest() const
  5549. -{
  5550. - return nosuggest;
  5551. -}
  5552. -
  5553. -// return the forbidden words control flag
  5554. -FLAG AffixMgr::get_nongramsuggest() const
  5555. -{
  5556. - return nongramsuggest;
  5557. -}
  5558. -
  5559. -// return the forbidden words flag modify flag
  5560. -FLAG AffixMgr::get_needaffix() const
  5561. -{
  5562. - return needaffix;
  5563. -}
  5564. -
  5565. -// return the onlyincompound flag
  5566. -FLAG AffixMgr::get_onlyincompound() const
  5567. -{
  5568. - return onlyincompound;
  5569. -}
  5570. -
  5571. -// return the compound word signal flag
  5572. -FLAG AffixMgr::get_compoundroot() const
  5573. -{
  5574. - return compoundroot;
  5575. -}
  5576. -
  5577. -// return the compound begin signal flag
  5578. -FLAG AffixMgr::get_compoundbegin() const
  5579. -{
  5580. - return compoundbegin;
  5581. -}
  5582. -
  5583. -// return the value of checknum
  5584. -int AffixMgr::get_checknum() const
  5585. -{
  5586. - return checknum;
  5587. -}
  5588. -
  5589. -// return the value of prefix
  5590. -const char * AffixMgr::get_prefix() const
  5591. -{
  5592. - if (pfx) return pfx->getKey();
  5593. - return NULL;
  5594. -}
  5595. -
  5596. -// return the value of suffix
  5597. -const char * AffixMgr::get_suffix() const
  5598. -{
  5599. - return sfxappnd;
  5600. -}
  5601. -
  5602. -// return the value of suffix
  5603. -const char * AffixMgr::get_version() const
  5604. -{
  5605. - return version;
  5606. -}
  5607. -
  5608. -// return lemma_present flag
  5609. -FLAG AffixMgr::get_lemma_present() const
  5610. -{
  5611. - return lemma_present;
  5612. -}
  5613. -
  5614. -// utility method to look up root words in hash table
  5615. -struct hentry * AffixMgr::lookup(const char * word)
  5616. -{
  5617. - int i;
  5618. - struct hentry * he = NULL;
  5619. - for (i = 0; i < *maxdic && !he; i++) {
  5620. - he = (alldic[i])->lookup(word);
  5621. - }
  5622. - return he;
  5623. -}
  5624. -
  5625. -// return the value of suffix
  5626. -int AffixMgr::have_contclass() const
  5627. -{
  5628. - return havecontclass;
  5629. -}
  5630. -
  5631. -// return utf8
  5632. -int AffixMgr::get_utf8() const
  5633. -{
  5634. - return utf8;
  5635. -}
  5636. -
  5637. -int AffixMgr::get_maxngramsugs(void) const
  5638. -{
  5639. - return maxngramsugs;
  5640. -}
  5641. -
  5642. -int AffixMgr::get_maxcpdsugs(void) const
  5643. -{
  5644. - return maxcpdsugs;
  5645. -}
  5646. -
  5647. -int AffixMgr::get_maxdiff(void) const
  5648. -{
  5649. - return maxdiff;
  5650. -}
  5651. -
  5652. -int AffixMgr::get_onlymaxdiff(void) const
  5653. -{
  5654. - return onlymaxdiff;
  5655. -}
  5656. -
  5657. -// return nosplitsugs
  5658. -int AffixMgr::get_nosplitsugs(void) const
  5659. -{
  5660. - return nosplitsugs;
  5661. -}
  5662. -
  5663. -// return sugswithdots
  5664. -int AffixMgr::get_sugswithdots(void) const
  5665. -{
  5666. - return sugswithdots;
  5667. -}
  5668. -
  5669. -/* parse flag */
  5670. -int AffixMgr::parse_flag(char * line, unsigned short * out, FileMgr * af) {
  5671. - char * s = NULL;
  5672. - if (*out != FLAG_NULL && !(*out >= DEFAULTFLAGS)) {
  5673. - HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions of an affix file parameter\n", af->getlinenum());
  5674. - return 1;
  5675. - }
  5676. - if (parse_string(line, &s, af->getlinenum())) return 1;
  5677. - *out = pHMgr->decode_flag(s);
  5678. - free(s);
  5679. - return 0;
  5680. -}
  5681. -
  5682. -/* parse num */
  5683. -int AffixMgr::parse_num(char * line, int * out, FileMgr * af) {
  5684. - char * s = NULL;
  5685. - if (*out != -1) {
  5686. - HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions of an affix file parameter\n", af->getlinenum());
  5687. - return 1;
  5688. - }
  5689. - if (parse_string(line, &s, af->getlinenum())) return 1;
  5690. - *out = atoi(s);
  5691. - free(s);
  5692. - return 0;
  5693. -}
  5694. -
  5695. -/* parse in the max syllablecount of compound words and */
  5696. -int AffixMgr::parse_cpdsyllable(char * line, FileMgr * af)
  5697. -{
  5698. - char * tp = line;
  5699. - char * piece;
  5700. - int i = 0;
  5701. - int np = 0;
  5702. - w_char w[MAXWORDLEN];
  5703. - piece = mystrsep(&tp, 0);
  5704. - while (piece) {
  5705. - if (*piece != '\0') {
  5706. - switch(i) {
  5707. - case 0: { np++; break; }
  5708. - case 1: { cpdmaxsyllable = atoi(piece); np++; break; }
  5709. - case 2: {
  5710. - if (!utf8) {
  5711. - cpdvowels = mystrdup(piece);
  5712. - } else {
  5713. - int n = u8_u16(w, MAXWORDLEN, piece);
  5714. - if (n > 0) {
  5715. - flag_qsort((unsigned short *) w, 0, n);
  5716. - cpdvowels_utf16 = (w_char *) malloc(n * sizeof(w_char));
  5717. - if (!cpdvowels_utf16) return 1;
  5718. - memcpy(cpdvowels_utf16, w, n * sizeof(w_char));
  5719. - }
  5720. - cpdvowels_utf16_len = n;
  5721. - }
  5722. - np++;
  5723. - break;
  5724. - }
  5725. - default: break;
  5726. - }
  5727. - i++;
  5728. - }
  5729. - piece = mystrsep(&tp, 0);
  5730. - }
  5731. - if (np < 2) {
  5732. - HUNSPELL_WARNING(stderr, "error: line %d: missing compoundsyllable information\n", af->getlinenum());
  5733. - return 1;
  5734. - }
  5735. - if (np == 2) cpdvowels = mystrdup("aeiouAEIOU");
  5736. - return 0;
  5737. -}
  5738. -
  5739. -/* parse in the typical fault correcting table */
  5740. -int AffixMgr::parse_reptable(char * line, FileMgr * af)
  5741. -{
  5742. - if (numrep != 0) {
  5743. - HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum());
  5744. - return 1;
  5745. - }
  5746. - char * tp = line;
  5747. - char * piece;
  5748. - int i = 0;
  5749. - int np = 0;
  5750. - piece = mystrsep(&tp, 0);
  5751. - while (piece) {
  5752. - if (*piece != '\0') {
  5753. - switch(i) {
  5754. - case 0: { np++; break; }
  5755. - case 1: {
  5756. - numrep = atoi(piece);
  5757. - if (numrep < 1) {
  5758. - HUNSPELL_WARNING(stderr, "error: line %d: incorrect entry number\n", af->getlinenum());
  5759. - return 1;
  5760. - }
  5761. - reptable = (replentry *) malloc(numrep * sizeof(struct replentry));
  5762. - if (!reptable) return 1;
  5763. - np++;
  5764. - break;
  5765. - }
  5766. - default: break;
  5767. - }
  5768. - i++;
  5769. - }
  5770. - piece = mystrsep(&tp, 0);
  5771. - }
  5772. - if (np != 2) {
  5773. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum());
  5774. - return 1;
  5775. - }
  5776. -
  5777. - /* now parse the numrep lines to read in the remainder of the table */
  5778. - char * nl;
  5779. - for (int j=0; j < numrep; j++) {
  5780. - if ((nl = af->getline()) == NULL) return 1;
  5781. - mychomp(nl);
  5782. - tp = nl;
  5783. - i = 0;
  5784. - reptable[j].pattern = NULL;
  5785. - reptable[j].pattern2 = NULL;
  5786. - piece = mystrsep(&tp, 0);
  5787. - while (piece) {
  5788. - if (*piece != '\0') {
  5789. - switch(i) {
  5790. - case 0: {
  5791. - if (strncmp(piece,"REP",3) != 0) {
  5792. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  5793. - numrep = 0;
  5794. - return 1;
  5795. - }
  5796. - break;
  5797. - }
  5798. - case 1: {
  5799. - if (*piece == '^') reptable[j].start = true; else reptable[j].start = false;
  5800. - reptable[j].pattern = mystrrep(mystrdup(piece + int(reptable[j].start)),"_"," ");
  5801. - int lr = strlen(reptable[j].pattern) - 1;
  5802. - if (reptable[j].pattern[lr] == '$') {
  5803. - reptable[j].end = true;
  5804. - reptable[j].pattern[lr] = '\0';
  5805. - } else reptable[j].end = false;
  5806. - break;
  5807. - }
  5808. - case 2: { reptable[j].pattern2 = mystrrep(mystrdup(piece),"_"," "); break; }
  5809. - default: break;
  5810. - }
  5811. - i++;
  5812. - }
  5813. - piece = mystrsep(&tp, 0);
  5814. - }
  5815. - if ((!(reptable[j].pattern)) || (!(reptable[j].pattern2))) {
  5816. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  5817. - numrep = 0;
  5818. - return 1;
  5819. - }
  5820. - }
  5821. - return 0;
  5822. -}
  5823. -
  5824. -/* parse in the typical fault correcting table */
  5825. -int AffixMgr::parse_convtable(char * line, FileMgr * af, RepList ** rl, const char * keyword)
  5826. -{
  5827. - if (*rl) {
  5828. - HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum());
  5829. - return 1;
  5830. - }
  5831. - char * tp = line;
  5832. - char * piece;
  5833. - int i = 0;
  5834. - int np = 0;
  5835. - int numrl = 0;
  5836. - piece = mystrsep(&tp, 0);
  5837. - while (piece) {
  5838. - if (*piece != '\0') {
  5839. - switch(i) {
  5840. - case 0: { np++; break; }
  5841. - case 1: {
  5842. - numrl = atoi(piece);
  5843. - if (numrl < 1) {
  5844. - HUNSPELL_WARNING(stderr, "error: line %d: incorrect entry number\n", af->getlinenum());
  5845. - return 1;
  5846. - }
  5847. - *rl = new RepList(numrl);
  5848. - if (!*rl) return 1;
  5849. - np++;
  5850. - break;
  5851. - }
  5852. - default: break;
  5853. - }
  5854. - i++;
  5855. - }
  5856. - piece = mystrsep(&tp, 0);
  5857. - }
  5858. - if (np != 2) {
  5859. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum());
  5860. - return 1;
  5861. - }
  5862. -
  5863. - /* now parse the num lines to read in the remainder of the table */
  5864. - char * nl;
  5865. - for (int j=0; j < numrl; j++) {
  5866. - if (!(nl = af->getline())) return 1;
  5867. - mychomp(nl);
  5868. - tp = nl;
  5869. - i = 0;
  5870. - char * pattern = NULL;
  5871. - char * pattern2 = NULL;
  5872. - piece = mystrsep(&tp, 0);
  5873. - while (piece) {
  5874. - if (*piece != '\0') {
  5875. - switch(i) {
  5876. - case 0: {
  5877. - if (strncmp(piece, keyword, strlen(keyword)) != 0) {
  5878. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  5879. - delete *rl;
  5880. - *rl = NULL;
  5881. - return 1;
  5882. - }
  5883. - break;
  5884. - }
  5885. - case 1: { pattern = mystrrep(mystrdup(piece),"_"," "); break; }
  5886. - case 2: {
  5887. - pattern2 = mystrrep(mystrdup(piece),"_"," ");
  5888. - break;
  5889. - }
  5890. - default: break;
  5891. - }
  5892. - i++;
  5893. - }
  5894. - piece = mystrsep(&tp, 0);
  5895. - }
  5896. - if (!pattern || !pattern2) {
  5897. - if (pattern)
  5898. - free(pattern);
  5899. - if (pattern2)
  5900. - free(pattern2);
  5901. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  5902. - return 1;
  5903. - }
  5904. - (*rl)->add(pattern, pattern2);
  5905. - }
  5906. - return 0;
  5907. -}
  5908. -
  5909. -
  5910. -/* parse in the typical fault correcting table */
  5911. -int AffixMgr::parse_phonetable(char * line, FileMgr * af)
  5912. -{
  5913. - if (phone) {
  5914. - HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum());
  5915. - return 1;
  5916. - }
  5917. - char * tp = line;
  5918. - char * piece;
  5919. - int i = 0;
  5920. - int np = 0;
  5921. - piece = mystrsep(&tp, 0);
  5922. - while (piece) {
  5923. - if (*piece != '\0') {
  5924. - switch(i) {
  5925. - case 0: { np++; break; }
  5926. - case 1: {
  5927. - phone = (phonetable *) malloc(sizeof(struct phonetable));
  5928. - if (!phone) return 1;
  5929. - phone->num = atoi(piece);
  5930. - phone->rules = NULL;
  5931. - phone->utf8 = (char) utf8;
  5932. - if (phone->num < 1) {
  5933. - HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum());
  5934. - return 1;
  5935. - }
  5936. - phone->rules = (char * *) malloc(2 * (phone->num + 1) * sizeof(char *));
  5937. - if (!phone->rules) {
  5938. - free(phone);
  5939. - phone = NULL;
  5940. - return 1;
  5941. - }
  5942. - np++;
  5943. - break;
  5944. - }
  5945. - default: break;
  5946. - }
  5947. - i++;
  5948. - }
  5949. - piece = mystrsep(&tp, 0);
  5950. - }
  5951. - if (np != 2) {
  5952. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum());
  5953. - return 1;
  5954. - }
  5955. -
  5956. - /* now parse the phone->num lines to read in the remainder of the table */
  5957. - char * nl;
  5958. - for (int j=0; j < phone->num; j++) {
  5959. - if (!(nl = af->getline())) return 1;
  5960. - mychomp(nl);
  5961. - tp = nl;
  5962. - i = 0;
  5963. - phone->rules[j * 2] = NULL;
  5964. - phone->rules[j * 2 + 1] = NULL;
  5965. - piece = mystrsep(&tp, 0);
  5966. - while (piece) {
  5967. - if (*piece != '\0') {
  5968. - switch(i) {
  5969. - case 0: {
  5970. - if (strncmp(piece,"PHONE",5) != 0) {
  5971. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  5972. - phone->num = 0;
  5973. - return 1;
  5974. - }
  5975. - break;
  5976. - }
  5977. - case 1: { phone->rules[j * 2] = mystrrep(mystrdup(piece),"_",""); break; }
  5978. - case 2: { phone->rules[j * 2 + 1] = mystrrep(mystrdup(piece),"_",""); break; }
  5979. - default: break;
  5980. - }
  5981. - i++;
  5982. - }
  5983. - piece = mystrsep(&tp, 0);
  5984. - }
  5985. - if ((!(phone->rules[j * 2])) || (!(phone->rules[j * 2 + 1]))) {
  5986. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  5987. - phone->num = 0;
  5988. - return 1;
  5989. - }
  5990. - }
  5991. - phone->rules[phone->num * 2] = mystrdup("");
  5992. - phone->rules[phone->num * 2 + 1] = mystrdup("");
  5993. - init_phonet_hash(*phone);
  5994. - return 0;
  5995. -}
  5996. -
  5997. -/* parse in the checkcompoundpattern table */
  5998. -int AffixMgr::parse_checkcpdtable(char * line, FileMgr * af)
  5999. -{
  6000. - if (numcheckcpd != 0) {
  6001. - HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum());
  6002. - return 1;
  6003. - }
  6004. - char * tp = line;
  6005. - char * piece;
  6006. - int i = 0;
  6007. - int np = 0;
  6008. - piece = mystrsep(&tp, 0);
  6009. - while (piece) {
  6010. - if (*piece != '\0') {
  6011. - switch(i) {
  6012. - case 0: { np++; break; }
  6013. - case 1: {
  6014. - numcheckcpd = atoi(piece);
  6015. - if (numcheckcpd < 1) {
  6016. - HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum());
  6017. - return 1;
  6018. - }
  6019. - checkcpdtable = (patentry *) malloc(numcheckcpd * sizeof(struct patentry));
  6020. - if (!checkcpdtable) return 1;
  6021. - np++;
  6022. - break;
  6023. - }
  6024. - default: break;
  6025. - }
  6026. - i++;
  6027. - }
  6028. - piece = mystrsep(&tp, 0);
  6029. - }
  6030. - if (np != 2) {
  6031. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum());
  6032. - return 1;
  6033. - }
  6034. -
  6035. - /* now parse the numcheckcpd lines to read in the remainder of the table */
  6036. - char * nl;
  6037. - for (int j=0; j < numcheckcpd; j++) {
  6038. - if (!(nl = af->getline())) return 1;
  6039. - mychomp(nl);
  6040. - tp = nl;
  6041. - i = 0;
  6042. - checkcpdtable[j].pattern = NULL;
  6043. - checkcpdtable[j].pattern2 = NULL;
  6044. - checkcpdtable[j].pattern3 = NULL;
  6045. - checkcpdtable[j].cond = FLAG_NULL;
  6046. - checkcpdtable[j].cond2 = FLAG_NULL;
  6047. - piece = mystrsep(&tp, 0);
  6048. - while (piece) {
  6049. - if (*piece != '\0') {
  6050. - switch(i) {
  6051. - case 0: {
  6052. - if (strncmp(piece,"CHECKCOMPOUNDPATTERN",20) != 0) {
  6053. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  6054. - numcheckcpd = 0;
  6055. - return 1;
  6056. - }
  6057. - break;
  6058. - }
  6059. - case 1: {
  6060. - checkcpdtable[j].pattern = mystrdup(piece);
  6061. - char * p = strchr(checkcpdtable[j].pattern, '/');
  6062. - if (p) {
  6063. - *p = '\0';
  6064. - checkcpdtable[j].cond = pHMgr->decode_flag(p + 1);
  6065. - }
  6066. - break; }
  6067. - case 2: {
  6068. - checkcpdtable[j].pattern2 = mystrdup(piece);
  6069. - char * p = strchr(checkcpdtable[j].pattern2, '/');
  6070. - if (p) {
  6071. - *p = '\0';
  6072. - checkcpdtable[j].cond2 = pHMgr->decode_flag(p + 1);
  6073. - }
  6074. - break;
  6075. - }
  6076. - case 3: { checkcpdtable[j].pattern3 = mystrdup(piece); simplifiedcpd = 1; break; }
  6077. - default: break;
  6078. - }
  6079. - i++;
  6080. - }
  6081. - piece = mystrsep(&tp, 0);
  6082. - }
  6083. - if ((!(checkcpdtable[j].pattern)) || (!(checkcpdtable[j].pattern2))) {
  6084. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  6085. - numcheckcpd = 0;
  6086. - return 1;
  6087. - }
  6088. - }
  6089. - return 0;
  6090. -}
  6091. -
  6092. -/* parse in the compound rule table */
  6093. -int AffixMgr::parse_defcpdtable(char * line, FileMgr * af)
  6094. -{
  6095. - if (numdefcpd != 0) {
  6096. - HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum());
  6097. - return 1;
  6098. - }
  6099. - char * tp = line;
  6100. - char * piece;
  6101. - int i = 0;
  6102. - int np = 0;
  6103. - piece = mystrsep(&tp, 0);
  6104. - while (piece) {
  6105. - if (*piece != '\0') {
  6106. - switch(i) {
  6107. - case 0: { np++; break; }
  6108. - case 1: {
  6109. - numdefcpd = atoi(piece);
  6110. - if (numdefcpd < 1) {
  6111. - HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum());
  6112. - return 1;
  6113. - }
  6114. - defcpdtable = (flagentry *) malloc(numdefcpd * sizeof(flagentry));
  6115. - if (!defcpdtable) return 1;
  6116. - np++;
  6117. - break;
  6118. - }
  6119. - default: break;
  6120. - }
  6121. - i++;
  6122. - }
  6123. - piece = mystrsep(&tp, 0);
  6124. - }
  6125. - if (np != 2) {
  6126. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum());
  6127. - return 1;
  6128. - }
  6129. -
  6130. - /* now parse the numdefcpd lines to read in the remainder of the table */
  6131. - char * nl;
  6132. - for (int j=0; j < numdefcpd; j++) {
  6133. - if (!(nl = af->getline())) return 1;
  6134. - mychomp(nl);
  6135. - tp = nl;
  6136. - i = 0;
  6137. - defcpdtable[j].def = NULL;
  6138. - piece = mystrsep(&tp, 0);
  6139. - while (piece) {
  6140. - if (*piece != '\0') {
  6141. - switch(i) {
  6142. - case 0: {
  6143. - if (strncmp(piece, "COMPOUNDRULE", 12) != 0) {
  6144. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  6145. - numdefcpd = 0;
  6146. - return 1;
  6147. - }
  6148. - break;
  6149. - }
  6150. - case 1: { // handle parenthesized flags
  6151. - if (strchr(piece, '(')) {
  6152. - defcpdtable[j].def = (FLAG *) malloc(strlen(piece) * sizeof(FLAG));
  6153. - defcpdtable[j].len = 0;
  6154. - int end = 0;
  6155. - FLAG * conv;
  6156. - while (!end) {
  6157. - char * par = piece + 1;
  6158. - while (*par != '(' && *par != ')' && *par != '\0') par++;
  6159. - if (*par == '\0') end = 1; else *par = '\0';
  6160. - if (*piece == '(') piece++;
  6161. - if (*piece == '*' || *piece == '?') {
  6162. - defcpdtable[j].def[defcpdtable[j].len++] = (FLAG) *piece;
  6163. - } else if (*piece != '\0') {
  6164. - int l = pHMgr->decode_flags(&conv, piece, af);
  6165. - for (int k = 0; k < l; k++) defcpdtable[j].def[defcpdtable[j].len++] = conv[k];
  6166. - free(conv);
  6167. - }
  6168. - piece = par + 1;
  6169. - }
  6170. - } else {
  6171. - defcpdtable[j].len = pHMgr->decode_flags(&(defcpdtable[j].def), piece, af);
  6172. - }
  6173. - break;
  6174. - }
  6175. - default: break;
  6176. - }
  6177. - i++;
  6178. - }
  6179. - piece = mystrsep(&tp, 0);
  6180. - }
  6181. - if (!defcpdtable[j].len) {
  6182. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  6183. - numdefcpd = 0;
  6184. - return 1;
  6185. - }
  6186. - }
  6187. - return 0;
  6188. -}
  6189. -
  6190. -
  6191. -/* parse in the character map table */
  6192. -int AffixMgr::parse_maptable(char * line, FileMgr * af)
  6193. -{
  6194. - if (nummap != 0) {
  6195. - HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum());
  6196. - return 1;
  6197. - }
  6198. - char * tp = line;
  6199. - char * piece;
  6200. - int i = 0;
  6201. - int np = 0;
  6202. - piece = mystrsep(&tp, 0);
  6203. - while (piece) {
  6204. - if (*piece != '\0') {
  6205. - switch(i) {
  6206. - case 0: { np++; break; }
  6207. - case 1: {
  6208. - nummap = atoi(piece);
  6209. - if (nummap < 1) {
  6210. - HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum());
  6211. - return 1;
  6212. - }
  6213. - maptable = (mapentry *) malloc(nummap * sizeof(struct mapentry));
  6214. - if (!maptable) return 1;
  6215. - np++;
  6216. - break;
  6217. - }
  6218. - default: break;
  6219. - }
  6220. - i++;
  6221. - }
  6222. - piece = mystrsep(&tp, 0);
  6223. - }
  6224. - if (np != 2) {
  6225. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum());
  6226. - return 1;
  6227. - }
  6228. -
  6229. - /* now parse the nummap lines to read in the remainder of the table */
  6230. - char * nl;
  6231. - for (int j=0; j < nummap; j++) {
  6232. - if (!(nl = af->getline())) return 1;
  6233. - mychomp(nl);
  6234. - tp = nl;
  6235. - i = 0;
  6236. - maptable[j].set = NULL;
  6237. - maptable[j].len = 0;
  6238. - piece = mystrsep(&tp, 0);
  6239. - while (piece) {
  6240. - if (*piece != '\0') {
  6241. - switch(i) {
  6242. - case 0: {
  6243. - if (strncmp(piece,"MAP",3) != 0) {
  6244. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  6245. - nummap = 0;
  6246. - return 1;
  6247. - }
  6248. - break;
  6249. - }
  6250. - case 1: {
  6251. - int setn = 0;
  6252. - maptable[j].len = strlen(piece);
  6253. - maptable[j].set = (char **) malloc(maptable[j].len * sizeof(char*));
  6254. - if (!maptable[j].set) return 1;
  6255. - for (int k = 0; k < maptable[j].len; k++) {
  6256. - int chl = 1;
  6257. - int chb = k;
  6258. - if (piece[k] == '(') {
  6259. - char * parpos = strchr(piece + k, ')');
  6260. - if (parpos != NULL) {
  6261. - chb = k + 1;
  6262. - chl = (int)(parpos - piece) - k - 1;
  6263. - k = k + chl + 1;
  6264. - }
  6265. - } else {
  6266. - if (utf8 && (piece[k] & 0xc0) == 0xc0) {
  6267. - for (k++; utf8 && (piece[k] & 0xc0) == 0x80; k++);
  6268. - chl = k - chb;
  6269. - k--;
  6270. - }
  6271. - }
  6272. - maptable[j].set[setn] = (char *) malloc(chl + 1);
  6273. - if (!maptable[j].set[setn]) return 1;
  6274. - strncpy(maptable[j].set[setn], piece + chb, chl);
  6275. - maptable[j].set[setn][chl] = '\0';
  6276. - setn++;
  6277. - }
  6278. - maptable[j].len = setn;
  6279. - break; }
  6280. - default: break;
  6281. - }
  6282. - i++;
  6283. - }
  6284. - piece = mystrsep(&tp, 0);
  6285. - }
  6286. - if (!maptable[j].set || !maptable[j].len) {
  6287. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  6288. - nummap = 0;
  6289. - return 1;
  6290. - }
  6291. - }
  6292. - return 0;
  6293. -}
  6294. -
  6295. -/* parse in the word breakpoint table */
  6296. -int AffixMgr::parse_breaktable(char * line, FileMgr * af)
  6297. -{
  6298. - if (numbreak > -1) {
  6299. - HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum());
  6300. - return 1;
  6301. - }
  6302. - char * tp = line;
  6303. - char * piece;
  6304. - int i = 0;
  6305. - int np = 0;
  6306. - piece = mystrsep(&tp, 0);
  6307. - while (piece) {
  6308. - if (*piece != '\0') {
  6309. - switch(i) {
  6310. - case 0: { np++; break; }
  6311. - case 1: {
  6312. - numbreak = atoi(piece);
  6313. - if (numbreak < 0) {
  6314. - HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum());
  6315. - return 1;
  6316. - }
  6317. - if (numbreak == 0) return 0;
  6318. - breaktable = (char **) malloc(numbreak * sizeof(char *));
  6319. - if (!breaktable) return 1;
  6320. - np++;
  6321. - break;
  6322. - }
  6323. - default: break;
  6324. - }
  6325. - i++;
  6326. - }
  6327. - piece = mystrsep(&tp, 0);
  6328. - }
  6329. - if (np != 2) {
  6330. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum());
  6331. - return 1;
  6332. - }
  6333. -
  6334. - /* now parse the numbreak lines to read in the remainder of the table */
  6335. - char * nl;
  6336. - for (int j=0; j < numbreak; j++) {
  6337. - if (!(nl = af->getline())) return 1;
  6338. - mychomp(nl);
  6339. - tp = nl;
  6340. - i = 0;
  6341. - piece = mystrsep(&tp, 0);
  6342. - while (piece) {
  6343. - if (*piece != '\0') {
  6344. - switch(i) {
  6345. - case 0: {
  6346. - if (strncmp(piece,"BREAK",5) != 0) {
  6347. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  6348. - numbreak = 0;
  6349. - return 1;
  6350. - }
  6351. - break;
  6352. - }
  6353. - case 1: {
  6354. - breaktable[j] = mystrdup(piece);
  6355. - break;
  6356. - }
  6357. - default: break;
  6358. - }
  6359. - i++;
  6360. - }
  6361. - piece = mystrsep(&tp, 0);
  6362. - }
  6363. - if (!breaktable) {
  6364. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  6365. - numbreak = 0;
  6366. - return 1;
  6367. - }
  6368. - }
  6369. - return 0;
  6370. -}
  6371. -
  6372. -void AffixMgr::reverse_condition(char * piece) {
  6373. - int neg = 0;
  6374. - for (char * k = piece + strlen(piece) - 1; k >= piece; k--) {
  6375. - switch(*k) {
  6376. - case '[': {
  6377. - if (neg) *(k+1) = '['; else *k = ']';
  6378. - break;
  6379. - }
  6380. - case ']': {
  6381. - *k = '[';
  6382. - if (neg) *(k+1) = '^';
  6383. - neg = 0;
  6384. - break;
  6385. - }
  6386. - case '^': {
  6387. - if (*(k+1) == ']') neg = 1; else *(k+1) = *k;
  6388. - break;
  6389. - }
  6390. - default: {
  6391. - if (neg) *(k+1) = *k;
  6392. - }
  6393. - }
  6394. - }
  6395. -}
  6396. -
  6397. -int AffixMgr::parse_affix(char * line, const char at, FileMgr * af, char * dupflags)
  6398. -{
  6399. - int numents = 0; // number of affentry structures to parse
  6400. -
  6401. - unsigned short aflag = 0; // affix char identifier
  6402. -
  6403. - char ff=0;
  6404. - std::vector<affentry> affentries;
  6405. -
  6406. - char * tp = line;
  6407. - char * nl = line;
  6408. - char * piece;
  6409. - int i = 0;
  6410. -
  6411. - // checking lines with bad syntax
  6412. -#ifdef DEBUG
  6413. - int basefieldnum = 0;
  6414. -#endif
  6415. -
  6416. - // split affix header line into pieces
  6417. -
  6418. - int np = 0;
  6419. -
  6420. - piece = mystrsep(&tp, 0);
  6421. - while (piece) {
  6422. - if (*piece != '\0') {
  6423. - switch(i) {
  6424. - // piece 1 - is type of affix
  6425. - case 0: { np++; break; }
  6426. -
  6427. - // piece 2 - is affix char
  6428. - case 1: {
  6429. - np++;
  6430. - aflag = pHMgr->decode_flag(piece);
  6431. - if (((at == 'S') && (dupflags[aflag] & dupSFX)) ||
  6432. - ((at == 'P') && (dupflags[aflag] & dupPFX))) {
  6433. - HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions of an affix flag\n",
  6434. - af->getlinenum());
  6435. - // return 1; XXX permissive mode for bad dictionaries
  6436. - }
  6437. - dupflags[aflag] += (char) ((at == 'S') ? dupSFX : dupPFX);
  6438. - break;
  6439. - }
  6440. - // piece 3 - is cross product indicator
  6441. - case 2: { np++; if (*piece == 'Y') ff = aeXPRODUCT; break; }
  6442. -
  6443. - // piece 4 - is number of affentries
  6444. - case 3: {
  6445. - np++;
  6446. - numents = atoi(piece);
  6447. - if (numents == 0) {
  6448. - char * err = pHMgr->encode_flag(aflag);
  6449. - if (err) {
  6450. - HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n",
  6451. - af->getlinenum());
  6452. - free(err);
  6453. - }
  6454. - return 1;
  6455. - }
  6456. - affentries.resize(numents);
  6457. - affentries[0].opts = ff;
  6458. - if (utf8) affentries[0].opts += aeUTF8;
  6459. - if (pHMgr->is_aliasf()) affentries[0].opts += aeALIASF;
  6460. - if (pHMgr->is_aliasm()) affentries[0].opts += aeALIASM;
  6461. - affentries[0].aflag = aflag;
  6462. - }
  6463. -
  6464. - default: break;
  6465. - }
  6466. - i++;
  6467. - }
  6468. - piece = mystrsep(&tp, 0);
  6469. - }
  6470. - // check to make sure we parsed enough pieces
  6471. - if (np != 4) {
  6472. - char * err = pHMgr->encode_flag(aflag);
  6473. - if (err) {
  6474. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum());
  6475. - free(err);
  6476. - }
  6477. - return 1;
  6478. - }
  6479. -
  6480. - // now parse numents affentries for this affix
  6481. - std::vector<affentry>::iterator start = affentries.begin();
  6482. - std::vector<affentry>::iterator end = affentries.end();
  6483. - for (std::vector<affentry>::iterator entry = start; entry != end; ++entry) {
  6484. - if ((nl = af->getline()) == NULL) return 1;
  6485. - mychomp(nl);
  6486. - tp = nl;
  6487. - i = 0;
  6488. - np = 0;
  6489. -
  6490. - // split line into pieces
  6491. - piece = mystrsep(&tp, 0);
  6492. - while (piece) {
  6493. - if (*piece != '\0') {
  6494. - switch(i) {
  6495. - // piece 1 - is type
  6496. - case 0: {
  6497. - np++;
  6498. - if (entry != start) entry->opts = start->opts &
  6499. - (char) (aeXPRODUCT + aeUTF8 + aeALIASF + aeALIASM);
  6500. - break;
  6501. - }
  6502. -
  6503. - // piece 2 - is affix char
  6504. - case 1: {
  6505. - np++;
  6506. - if (pHMgr->decode_flag(piece) != aflag) {
  6507. - char * err = pHMgr->encode_flag(aflag);
  6508. - if (err) {
  6509. - HUNSPELL_WARNING(stderr, "error: line %d: affix %s is corrupt\n",
  6510. - af->getlinenum(), err);
  6511. - free(err);
  6512. - }
  6513. - return 1;
  6514. - }
  6515. -
  6516. - if (entry != start) entry->aflag = start->aflag;
  6517. - break;
  6518. - }
  6519. -
  6520. - // piece 3 - is string to strip or 0 for null
  6521. - case 2: {
  6522. - np++;
  6523. - if (complexprefixes) {
  6524. - if (utf8) reverseword_utf(piece); else reverseword(piece);
  6525. - }
  6526. - entry->strip = mystrdup(piece);
  6527. - entry->stripl = (unsigned char) strlen(entry->strip);
  6528. - if (strcmp(entry->strip,"0") == 0) {
  6529. - free(entry->strip);
  6530. - entry->strip=mystrdup("");
  6531. - entry->stripl = 0;
  6532. - }
  6533. - break;
  6534. - }
  6535. -
  6536. - // piece 4 - is affix string or 0 for null
  6537. - case 3: {
  6538. - char * dash;
  6539. - entry->morphcode = NULL;
  6540. - entry->contclass = NULL;
  6541. - entry->contclasslen = 0;
  6542. - np++;
  6543. - dash = strchr(piece, '/');
  6544. - if (dash) {
  6545. - *dash = '\0';
  6546. -
  6547. - if (ignorechars) {
  6548. - if (utf8) {
  6549. - remove_ignored_chars_utf(piece, ignorechars_utf16, ignorechars_utf16_len);
  6550. - } else {
  6551. - remove_ignored_chars(piece,ignorechars);
  6552. - }
  6553. - }
  6554. -
  6555. - if (complexprefixes) {
  6556. - if (utf8) reverseword_utf(piece); else reverseword(piece);
  6557. - }
  6558. - entry->appnd = mystrdup(piece);
  6559. -
  6560. - if (pHMgr->is_aliasf()) {
  6561. - int index = atoi(dash + 1);
  6562. - entry->contclasslen = (unsigned short) pHMgr->get_aliasf(index, &(entry->contclass), af);
  6563. - if (!entry->contclasslen) HUNSPELL_WARNING(stderr, "error: bad affix flag alias: \"%s\"\n", dash+1);
  6564. - } else {
  6565. - entry->contclasslen = (unsigned short) pHMgr->decode_flags(&(entry->contclass), dash + 1, af);
  6566. - flag_qsort(entry->contclass, 0, entry->contclasslen);
  6567. - }
  6568. - *dash = '/';
  6569. -
  6570. - havecontclass = 1;
  6571. - for (unsigned short _i = 0; _i < entry->contclasslen; _i++) {
  6572. - contclasses[(entry->contclass)[_i]] = 1;
  6573. - }
  6574. - } else {
  6575. - if (ignorechars) {
  6576. - if (utf8) {
  6577. - remove_ignored_chars_utf(piece, ignorechars_utf16, ignorechars_utf16_len);
  6578. - } else {
  6579. - remove_ignored_chars(piece,ignorechars);
  6580. - }
  6581. - }
  6582. -
  6583. - if (complexprefixes) {
  6584. - if (utf8) reverseword_utf(piece); else reverseword(piece);
  6585. - }
  6586. - entry->appnd = mystrdup(piece);
  6587. - }
  6588. -
  6589. - entry->appndl = (unsigned char) strlen(entry->appnd);
  6590. - if (strcmp(entry->appnd,"0") == 0) {
  6591. - free(entry->appnd);
  6592. - entry->appnd=mystrdup("");
  6593. - entry->appndl = 0;
  6594. - }
  6595. - break;
  6596. - }
  6597. -
  6598. - // piece 5 - is the conditions descriptions
  6599. - case 4: {
  6600. - np++;
  6601. - if (complexprefixes) {
  6602. - if (utf8) reverseword_utf(piece); else reverseword(piece);
  6603. - reverse_condition(piece);
  6604. - }
  6605. - if (entry->stripl && (strcmp(piece, ".") != 0) &&
  6606. - redundant_condition(at, entry->strip, entry->stripl, piece, af->getlinenum()))
  6607. - strcpy(piece, ".");
  6608. - if (at == 'S') {
  6609. - reverseword(piece);
  6610. - reverse_condition(piece);
  6611. - }
  6612. - if (encodeit(*entry, piece)) return 1;
  6613. - break;
  6614. - }
  6615. -
  6616. - case 5: {
  6617. - np++;
  6618. - if (pHMgr->is_aliasm()) {
  6619. - int index = atoi(piece);
  6620. - entry->morphcode = pHMgr->get_aliasm(index);
  6621. - } else {
  6622. - if (complexprefixes) { // XXX - fix me for morph. gen.
  6623. - if (utf8) reverseword_utf(piece); else reverseword(piece);
  6624. - }
  6625. - // add the remaining of the line
  6626. - if (*tp) {
  6627. - *(tp - 1) = ' ';
  6628. - tp = tp + strlen(tp);
  6629. - }
  6630. - entry->morphcode = mystrdup(piece);
  6631. - if (!entry->morphcode) return 1;
  6632. - }
  6633. - break;
  6634. - }
  6635. - default: break;
  6636. - }
  6637. - i++;
  6638. - }
  6639. - piece = mystrsep(&tp, 0);
  6640. - }
  6641. - // check to make sure we parsed enough pieces
  6642. - if (np < 4) {
  6643. - char * err = pHMgr->encode_flag(aflag);
  6644. - if (err) {
  6645. - HUNSPELL_WARNING(stderr, "error: line %d: affix %s is corrupt\n",
  6646. - af->getlinenum(), err);
  6647. - free(err);
  6648. - }
  6649. - return 1;
  6650. - }
  6651. -
  6652. -#ifdef DEBUG
  6653. - // detect unnecessary fields, excepting comments
  6654. - if (basefieldnum) {
  6655. - int fieldnum = !(entry->morphcode) ? 5 : ((*(entry->morphcode)=='#') ? 5 : 6);
  6656. - if (fieldnum != basefieldnum)
  6657. - HUNSPELL_WARNING(stderr, "warning: line %d: bad field number\n", af->getlinenum());
  6658. - } else {
  6659. - basefieldnum = !(entry->morphcode) ? 5 : ((*(entry->morphcode)=='#') ? 5 : 6);
  6660. - }
  6661. -#endif
  6662. - }
  6663. -
  6664. - // now create SfxEntry or PfxEntry objects and use links to
  6665. - // build an ordered (sorted by affix string) list
  6666. - for (std::vector<affentry>::iterator entry = start; entry != end; ++entry) {
  6667. - if (at == 'P') {
  6668. - PfxEntry * pfxptr = new PfxEntry(this,&(*entry));
  6669. - build_pfxtree(pfxptr);
  6670. - } else {
  6671. - SfxEntry * sfxptr = new SfxEntry(this,&(*entry));
  6672. - build_sfxtree(sfxptr);
  6673. - }
  6674. - }
  6675. - return 0;
  6676. -}
  6677. -
  6678. -int AffixMgr::redundant_condition(char ft, char * strip, int stripl, const char * cond, int linenum) {
  6679. - int condl = strlen(cond);
  6680. - int i;
  6681. - int j;
  6682. - int neg;
  6683. - int in;
  6684. - if (ft == 'P') { // prefix
  6685. - if (strncmp(strip, cond, condl) == 0) return 1;
  6686. - if (utf8) {
  6687. - } else {
  6688. - for (i = 0, j = 0; (i < stripl) && (j < condl); i++, j++) {
  6689. - if (cond[j] != '[') {
  6690. - if (cond[j] != strip[i]) {
  6691. - HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping characters and condition\n", linenum);
  6692. - return 0;
  6693. - }
  6694. - } else {
  6695. - neg = (cond[j+1] == '^') ? 1 : 0;
  6696. - in = 0;
  6697. - do {
  6698. - j++;
  6699. - if (strip[i] == cond[j]) in = 1;
  6700. - } while ((j < (condl - 1)) && (cond[j] != ']'));
  6701. - if (j == (condl - 1) && (cond[j] != ']')) {
  6702. - HUNSPELL_WARNING(stderr, "error: line %d: missing ] in condition:\n%s\n", linenum, cond);
  6703. - return 0;
  6704. - }
  6705. - if ((!neg && !in) || (neg && in)) {
  6706. - HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping characters and condition\n", linenum);
  6707. - return 0;
  6708. - }
  6709. - }
  6710. - }
  6711. - if (j >= condl) return 1;
  6712. - }
  6713. - } else { // suffix
  6714. - if ((stripl >= condl) && strcmp(strip + stripl - condl, cond) == 0) return 1;
  6715. - if (utf8) {
  6716. - } else {
  6717. - for (i = stripl - 1, j = condl - 1; (i >= 0) && (j >= 0); i--, j--) {
  6718. - if (cond[j] != ']') {
  6719. - if (cond[j] != strip[i]) {
  6720. - HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping characters and condition\n", linenum);
  6721. - return 0;
  6722. - }
  6723. - } else {
  6724. - in = 0;
  6725. - do {
  6726. - j--;
  6727. - if (strip[i] == cond[j]) in = 1;
  6728. - } while ((j > 0) && (cond[j] != '['));
  6729. - if ((j == 0) && (cond[j] != '[')) {
  6730. - HUNSPELL_WARNING(stderr, "error: line: %d: missing ] in condition:\n%s\n", linenum, cond);
  6731. - return 0;
  6732. - }
  6733. - neg = (cond[j+1] == '^') ? 1 : 0;
  6734. - if ((!neg && !in) || (neg && in)) {
  6735. - HUNSPELL_WARNING(stderr, "warning: line %d: incompatible stripping characters and condition\n", linenum);
  6736. - return 0;
  6737. - }
  6738. - }
  6739. - }
  6740. - if (j < 0) return 1;
  6741. - }
  6742. - }
  6743. - return 0;
  6744. -}
  6745. diff --git a/src/hunspell/affixmgr.hxx b/src/hunspell/affixmgr.hxx
  6746. deleted file mode 100644
  6747. index 8676ad2c8a..0000000000
  6748. --- a/src/hunspell/affixmgr.hxx
  6749. +++ /dev/null
  6750. @@ -1,251 +0,0 @@
  6751. -#ifndef _AFFIXMGR_HXX_
  6752. -#define _AFFIXMGR_HXX_
  6753. -
  6754. -#include "hunvisapi.h"
  6755. -
  6756. -#include <stdio.h>
  6757. -
  6758. -#include "atypes.hxx"
  6759. -#include "baseaffix.hxx"
  6760. -#include "hashmgr.hxx"
  6761. -#include "phonet.hxx"
  6762. -#include "replist.hxx"
  6763. -
  6764. -// check flag duplication
  6765. -#define dupSFX (1 << 0)
  6766. -#define dupPFX (1 << 1)
  6767. -
  6768. -class PfxEntry;
  6769. -class SfxEntry;
  6770. -
  6771. -class LIBHUNSPELL_DLL_EXPORTED AffixMgr
  6772. -{
  6773. -
  6774. - PfxEntry * pStart[SETSIZE];
  6775. - SfxEntry * sStart[SETSIZE];
  6776. - PfxEntry * pFlag[SETSIZE];
  6777. - SfxEntry * sFlag[SETSIZE];
  6778. - HashMgr * pHMgr;
  6779. - HashMgr ** alldic;
  6780. - int * maxdic;
  6781. - char * keystring;
  6782. - char * trystring;
  6783. - char * encoding;
  6784. - struct cs_info * csconv;
  6785. - int utf8;
  6786. - int complexprefixes;
  6787. - FLAG compoundflag;
  6788. - FLAG compoundbegin;
  6789. - FLAG compoundmiddle;
  6790. - FLAG compoundend;
  6791. - FLAG compoundroot;
  6792. - FLAG compoundforbidflag;
  6793. - FLAG compoundpermitflag;
  6794. - int compoundmoresuffixes;
  6795. - int checkcompounddup;
  6796. - int checkcompoundrep;
  6797. - int checkcompoundcase;
  6798. - int checkcompoundtriple;
  6799. - int simplifiedtriple;
  6800. - FLAG forbiddenword;
  6801. - FLAG nosuggest;
  6802. - FLAG nongramsuggest;
  6803. - FLAG needaffix;
  6804. - int cpdmin;
  6805. - int numrep;
  6806. - replentry * reptable;
  6807. - RepList * iconvtable;
  6808. - RepList * oconvtable;
  6809. - int nummap;
  6810. - mapentry * maptable;
  6811. - int numbreak;
  6812. - char ** breaktable;
  6813. - int numcheckcpd;
  6814. - patentry * checkcpdtable;
  6815. - int simplifiedcpd;
  6816. - int numdefcpd;
  6817. - flagentry * defcpdtable;
  6818. - phonetable * phone;
  6819. - int maxngramsugs;
  6820. - int maxcpdsugs;
  6821. - int maxdiff;
  6822. - int onlymaxdiff;
  6823. - int nosplitsugs;
  6824. - int sugswithdots;
  6825. - int cpdwordmax;
  6826. - int cpdmaxsyllable;
  6827. - char * cpdvowels;
  6828. - w_char * cpdvowels_utf16;
  6829. - int cpdvowels_utf16_len;
  6830. - char * cpdsyllablenum;
  6831. - const char * pfxappnd; // BUG: not stateless
  6832. - const char * sfxappnd; // BUG: not stateless
  6833. - FLAG sfxflag; // BUG: not stateless
  6834. - char * derived; // BUG: not stateless
  6835. - SfxEntry * sfx; // BUG: not stateless
  6836. - PfxEntry * pfx; // BUG: not stateless
  6837. - int checknum;
  6838. - char * wordchars;
  6839. - unsigned short * wordchars_utf16;
  6840. - int wordchars_utf16_len;
  6841. - char * ignorechars;
  6842. - unsigned short * ignorechars_utf16;
  6843. - int ignorechars_utf16_len;
  6844. - char * version;
  6845. - char * lang;
  6846. - int langnum;
  6847. - FLAG lemma_present;
  6848. - FLAG circumfix;
  6849. - FLAG onlyincompound;
  6850. - FLAG keepcase;
  6851. - FLAG forceucase;
  6852. - FLAG warn;
  6853. - int forbidwarn;
  6854. - FLAG substandard;
  6855. - int checksharps;
  6856. - int fullstrip;
  6857. -
  6858. - int havecontclass; // boolean variable
  6859. - char contclasses[CONTSIZE]; // flags of possible continuing classes (twofold affix)
  6860. -
  6861. -public:
  6862. -
  6863. - AffixMgr(const char *aff_data, const size_t aff_len, HashMgr** ptr, int * md);
  6864. - ~AffixMgr();
  6865. - struct hentry * affix_check(const char * word, int len,
  6866. - const unsigned short needflag = (unsigned short) 0,
  6867. - char in_compound = IN_CPD_NOT);
  6868. - struct hentry * prefix_check(const char * word, int len,
  6869. - char in_compound, const FLAG needflag = FLAG_NULL);
  6870. - inline int isSubset(const char * s1, const char * s2);
  6871. - struct hentry * prefix_check_twosfx(const char * word, int len,
  6872. - char in_compound, const FLAG needflag = FLAG_NULL);
  6873. - inline int isRevSubset(const char * s1, const char * end_of_s2, int len);
  6874. - struct hentry * suffix_check(const char * word, int len, int sfxopts,
  6875. - PfxEntry* ppfx, char ** wlst, int maxSug, int * ns,
  6876. - const FLAG cclass = FLAG_NULL, const FLAG needflag = FLAG_NULL,
  6877. - char in_compound = IN_CPD_NOT);
  6878. - struct hentry * suffix_check_twosfx(const char * word, int len,
  6879. - int sfxopts, PfxEntry* ppfx, const FLAG needflag = FLAG_NULL);
  6880. -
  6881. - char * affix_check_morph(const char * word, int len,
  6882. - const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT);
  6883. - char * prefix_check_morph(const char * word, int len,
  6884. - char in_compound, const FLAG needflag = FLAG_NULL);
  6885. - char * suffix_check_morph (const char * word, int len, int sfxopts,
  6886. - PfxEntry * ppfx, const FLAG cclass = FLAG_NULL,
  6887. - const FLAG needflag = FLAG_NULL, char in_compound = IN_CPD_NOT);
  6888. -
  6889. - char * prefix_check_twosfx_morph(const char * word, int len,
  6890. - char in_compound, const FLAG needflag = FLAG_NULL);
  6891. - char * suffix_check_twosfx_morph(const char * word, int len,
  6892. - int sfxopts, PfxEntry * ppfx, const FLAG needflag = FLAG_NULL);
  6893. -
  6894. - char * morphgen(char * ts, int wl, const unsigned short * ap,
  6895. - unsigned short al, char * morph, char * targetmorph, int level);
  6896. -
  6897. - int expand_rootword(struct guessword * wlst, int maxn, const char * ts,
  6898. - int wl, const unsigned short * ap, unsigned short al, char * bad,
  6899. - int, char *);
  6900. -
  6901. - short get_syllable (const char * word, int wlen);
  6902. - int cpdrep_check(const char * word, int len);
  6903. - int cpdpat_check(const char * word, int len, hentry * r1, hentry * r2,
  6904. - const char affixed);
  6905. - int defcpd_check(hentry *** words, short wnum, hentry * rv,
  6906. - hentry ** rwords, char all);
  6907. - int cpdcase_check(const char * word, int len);
  6908. - inline int candidate_check(const char * word, int len);
  6909. - void setcminmax(int * cmin, int * cmax, const char * word, int len);
  6910. - struct hentry * compound_check(const char * word, int len, short wordnum,
  6911. - short numsyllable, short maxwordnum, short wnum, hentry ** words,
  6912. - char hu_mov_rule, char is_sug, int * info);
  6913. -
  6914. - int compound_check_morph(const char * word, int len, short wordnum,
  6915. - short numsyllable, short maxwordnum, short wnum, hentry ** words,
  6916. - char hu_mov_rule, char ** result, char * partresult);
  6917. -
  6918. - struct hentry * lookup(const char * word);
  6919. - int get_numrep() const;
  6920. - struct replentry * get_reptable() const;
  6921. - RepList * get_iconvtable() const;
  6922. - RepList * get_oconvtable() const;
  6923. - struct phonetable * get_phonetable() const;
  6924. - int get_nummap() const;
  6925. - struct mapentry * get_maptable() const;
  6926. - int get_numbreak() const;
  6927. - char ** get_breaktable() const;
  6928. - char * get_encoding();
  6929. - int get_langnum() const;
  6930. - char * get_key_string();
  6931. - char * get_try_string() const;
  6932. - const char * get_wordchars() const;
  6933. - unsigned short * get_wordchars_utf16(int * len) const;
  6934. - char * get_ignore() const;
  6935. - unsigned short * get_ignore_utf16(int * len) const;
  6936. - int get_compound() const;
  6937. - FLAG get_compoundflag() const;
  6938. - FLAG get_compoundbegin() const;
  6939. - FLAG get_forbiddenword() const;
  6940. - FLAG get_nosuggest() const;
  6941. - FLAG get_nongramsuggest() const;
  6942. - FLAG get_needaffix() const;
  6943. - FLAG get_onlyincompound() const;
  6944. - FLAG get_compoundroot() const;
  6945. - FLAG get_lemma_present() const;
  6946. - int get_checknum() const;
  6947. - const char * get_prefix() const;
  6948. - const char * get_suffix() const;
  6949. - const char * get_derived() const;
  6950. - const char * get_version() const;
  6951. - int have_contclass() const;
  6952. - int get_utf8() const;
  6953. - int get_complexprefixes() const;
  6954. - char * get_suffixed(char ) const;
  6955. - int get_maxngramsugs() const;
  6956. - int get_maxcpdsugs() const;
  6957. - int get_maxdiff() const;
  6958. - int get_onlymaxdiff() const;
  6959. - int get_nosplitsugs() const;
  6960. - int get_sugswithdots(void) const;
  6961. - FLAG get_keepcase(void) const;
  6962. - FLAG get_forceucase(void) const;
  6963. - FLAG get_warn(void) const;
  6964. - int get_forbidwarn(void) const;
  6965. - int get_checksharps(void) const;
  6966. - char * encode_flag(unsigned short aflag) const;
  6967. - int get_fullstrip() const;
  6968. -
  6969. -private:
  6970. - int parse_file(const char *aff_data, const size_t aff_len);
  6971. - int parse_flag(char * line, unsigned short * out, FileMgr * af);
  6972. - int parse_num(char * line, int * out, FileMgr * af);
  6973. - int parse_cpdsyllable(char * line, FileMgr * af);
  6974. - int parse_reptable(char * line, FileMgr * af);
  6975. - int parse_convtable(char * line, FileMgr * af, RepList ** rl, const char * keyword);
  6976. - int parse_phonetable(char * line, FileMgr * af);
  6977. - int parse_maptable(char * line, FileMgr * af);
  6978. - int parse_breaktable(char * line, FileMgr * af);
  6979. - int parse_checkcpdtable(char * line, FileMgr * af);
  6980. - int parse_defcpdtable(char * line, FileMgr * af);
  6981. - int parse_affix(char * line, const char at, FileMgr * af, char * dupflags);
  6982. -
  6983. - void reverse_condition(char *);
  6984. - void debugflag(char * result, unsigned short flag);
  6985. - int condlen(char *);
  6986. - int encodeit(affentry &entry, char * cs);
  6987. - int build_pfxtree(PfxEntry* pfxptr);
  6988. - int build_sfxtree(SfxEntry* sfxptr);
  6989. - int process_pfx_order();
  6990. - int process_sfx_order();
  6991. - PfxEntry * process_pfx_in_order(PfxEntry * ptr, PfxEntry * nptr);
  6992. - SfxEntry * process_sfx_in_order(SfxEntry * ptr, SfxEntry * nptr);
  6993. - int process_pfx_tree_to_list();
  6994. - int process_sfx_tree_to_list();
  6995. - int redundant_condition(char, char * strip, int stripl,
  6996. - const char * cond, int);
  6997. - void finishFileMgr(FileMgr *afflst);
  6998. -};
  6999. -
  7000. -#endif
  7001. -
  7002. diff --git a/src/hunspell/atypes.hxx b/src/hunspell/atypes.hxx
  7003. deleted file mode 100644
  7004. index 61c59d5ff9..0000000000
  7005. --- a/src/hunspell/atypes.hxx
  7006. +++ /dev/null
  7007. @@ -1,107 +0,0 @@
  7008. -#ifndef _ATYPES_HXX_
  7009. -#define _ATYPES_HXX_
  7010. -
  7011. -#ifndef HUNSPELL_WARNING
  7012. -#include <stdio.h>
  7013. -#ifdef HUNSPELL_WARNING_ON
  7014. -#define HUNSPELL_WARNING fprintf
  7015. -#else
  7016. -// empty inline function to switch off warnings (instead of the C99 standard variadic macros)
  7017. -static inline void HUNSPELL_WARNING(FILE *, const char *, ...) {}
  7018. -#endif
  7019. -#endif
  7020. -
  7021. -// HUNSTEM def.
  7022. -#define HUNSTEM
  7023. -
  7024. -#include "hashmgr.hxx"
  7025. -#include "w_char.hxx"
  7026. -
  7027. -#define SETSIZE 256
  7028. -#define CONTSIZE 65536
  7029. -#define MAXWORDLEN 100
  7030. -#define MAXWORDUTF8LEN 256
  7031. -
  7032. -// affentry options
  7033. -#define aeXPRODUCT (1 << 0)
  7034. -#define aeUTF8 (1 << 1)
  7035. -#define aeALIASF (1 << 2)
  7036. -#define aeALIASM (1 << 3)
  7037. -#define aeLONGCOND (1 << 4)
  7038. -
  7039. -// compound options
  7040. -#define IN_CPD_NOT 0
  7041. -#define IN_CPD_BEGIN 1
  7042. -#define IN_CPD_END 2
  7043. -#define IN_CPD_OTHER 3
  7044. -
  7045. -// info options
  7046. -#define SPELL_COMPOUND (1 << 0)
  7047. -#define SPELL_FORBIDDEN (1 << 1)
  7048. -#define SPELL_ALLCAP (1 << 2)
  7049. -#define SPELL_NOCAP (1 << 3)
  7050. -#define SPELL_INITCAP (1 << 4)
  7051. -#define SPELL_ORIGCAP (1 << 5)
  7052. -#define SPELL_WARN (1 << 6)
  7053. -
  7054. -#define MAXLNLEN 8192
  7055. -
  7056. -#define MINCPDLEN 3
  7057. -#define MAXCOMPOUND 10
  7058. -#define MAXCONDLEN 20
  7059. -#define MAXCONDLEN_1 (MAXCONDLEN - sizeof(char *))
  7060. -
  7061. -#define MAXACC 1000
  7062. -
  7063. -#define FLAG unsigned short
  7064. -#define FLAG_NULL 0x00
  7065. -#define FREE_FLAG(a) a = 0
  7066. -
  7067. -#define TESTAFF( a, b , c ) (flag_bsearch((unsigned short *) a, (unsigned short) b, c))
  7068. -
  7069. -struct affentry
  7070. -{
  7071. - char * strip;
  7072. - char * appnd;
  7073. - unsigned char stripl;
  7074. - unsigned char appndl;
  7075. - char numconds;
  7076. - char opts;
  7077. - unsigned short aflag;
  7078. - unsigned short * contclass;
  7079. - short contclasslen;
  7080. - union {
  7081. - char conds[MAXCONDLEN];
  7082. - struct {
  7083. - char conds1[MAXCONDLEN_1];
  7084. - char * conds2;
  7085. - } l;
  7086. - } c;
  7087. - char * morphcode;
  7088. -};
  7089. -
  7090. -struct guessword {
  7091. - char * word;
  7092. - bool allow;
  7093. - char * orig;
  7094. -};
  7095. -
  7096. -struct mapentry {
  7097. - char ** set;
  7098. - int len;
  7099. -};
  7100. -
  7101. -struct flagentry {
  7102. - FLAG * def;
  7103. - int len;
  7104. -};
  7105. -
  7106. -struct patentry {
  7107. - char * pattern;
  7108. - char * pattern2;
  7109. - char * pattern3;
  7110. - FLAG cond;
  7111. - FLAG cond2;
  7112. -};
  7113. -
  7114. -#endif
  7115. diff --git a/src/hunspell/baseaffix.hxx b/src/hunspell/baseaffix.hxx
  7116. deleted file mode 100644
  7117. index f417acaa44..0000000000
  7118. --- a/src/hunspell/baseaffix.hxx
  7119. +++ /dev/null
  7120. @@ -1,32 +0,0 @@
  7121. -#ifndef _BASEAFF_HXX_
  7122. -#define _BASEAFF_HXX_
  7123. -
  7124. -#include "hunvisapi.h"
  7125. -
  7126. -class LIBHUNSPELL_DLL_EXPORTED AffEntry
  7127. -{
  7128. -private:
  7129. - AffEntry(const AffEntry&);
  7130. - AffEntry& operator = (const AffEntry&);
  7131. -protected:
  7132. - AffEntry() {}
  7133. - char * appnd;
  7134. - char * strip;
  7135. - unsigned char appndl;
  7136. - unsigned char stripl;
  7137. - char numconds;
  7138. - char opts;
  7139. - unsigned short aflag;
  7140. - union {
  7141. - char conds[MAXCONDLEN];
  7142. - struct {
  7143. - char conds1[MAXCONDLEN_1];
  7144. - char * conds2;
  7145. - } l;
  7146. - } c;
  7147. - char * morphcode;
  7148. - unsigned short * contclass;
  7149. - short contclasslen;
  7150. -};
  7151. -
  7152. -#endif
  7153. diff --git a/src/hunspell/config.h b/src/hunspell/config.h
  7154. deleted file mode 100644
  7155. index f38ae5835a..0000000000
  7156. --- a/src/hunspell/config.h
  7157. +++ /dev/null
  7158. @@ -1,36 +0,0 @@
  7159. -/*
  7160. - * config.h
  7161. - * Copyright (C) 2013 Kovid Goyal <kovid at kovidgoyal.net>
  7162. - *
  7163. - * Distributed under terms of the GPL3 license.
  7164. - */
  7165. -
  7166. -#ifndef __config_h__
  7167. -#define __config_h__
  7168. -
  7169. -/* Name of package */
  7170. -#define PACKAGE "hunspell"
  7171. -
  7172. -/* Define to the address where bug reports for this package should be sent. */
  7173. -#define PACKAGE_BUGREPORT "nemeth@openoffice.org"
  7174. -
  7175. -/* Define to the full name of this package. */
  7176. -#define PACKAGE_NAME "hunspell"
  7177. -
  7178. -/* Define to the full name and version of this package. */
  7179. -#define PACKAGE_STRING "hunspell 1.3.3"
  7180. -
  7181. -/* Define to the one symbol short name of this package. */
  7182. -#define PACKAGE_TARNAME "hunspell"
  7183. -
  7184. -/* Define to the home page for this package. */
  7185. -#define PACKAGE_URL ""
  7186. -
  7187. -/* Define to the version of this package. */
  7188. -#define PACKAGE_VERSION "1.3.3"
  7189. -
  7190. -/* Version number of package */
  7191. -#define VERSION "1.3.3"
  7192. -
  7193. -#endif /* !__config_h__ */
  7194. -
  7195. diff --git a/src/hunspell/csutil.cxx b/src/hunspell/csutil.cxx
  7196. deleted file mode 100644
  7197. index f877f28155..0000000000
  7198. --- a/src/hunspell/csutil.cxx
  7199. +++ /dev/null
  7200. @@ -1,5863 +0,0 @@
  7201. -#include "license.hunspell"
  7202. -#include "license.myspell"
  7203. -
  7204. -#include <stdlib.h>
  7205. -#include <string.h>
  7206. -#include <stdio.h>
  7207. -#include <ctype.h>
  7208. -
  7209. -#include "csutil.hxx"
  7210. -#include "atypes.hxx"
  7211. -#include "langnum.hxx"
  7212. -
  7213. -// Unicode character encoding information
  7214. -struct unicode_info {
  7215. - unsigned short c;
  7216. - unsigned short cupper;
  7217. - unsigned short clower;
  7218. -};
  7219. -
  7220. -#ifdef _WIN32
  7221. -#include <windows.h>
  7222. -#include <wchar.h>
  7223. -#endif
  7224. -
  7225. -#ifdef OPENOFFICEORG
  7226. -# include <unicode/uchar.h>
  7227. -#else
  7228. -# ifndef MOZILLA_CLIENT
  7229. -# include "utf_info.cxx"
  7230. -# define UTF_LST_LEN (sizeof(utf_lst) / (sizeof(unicode_info)))
  7231. -# endif
  7232. -#endif
  7233. -
  7234. -#ifdef MOZILLA_CLIENT
  7235. -#include "nsCOMPtr.h"
  7236. -#include "nsServiceManagerUtils.h"
  7237. -#include "nsIUnicodeEncoder.h"
  7238. -#include "nsIUnicodeDecoder.h"
  7239. -#include "nsUnicharUtils.h"
  7240. -#include "nsICharsetConverterManager.h"
  7241. -
  7242. -static NS_DEFINE_CID(kCharsetConverterManagerCID, NS_ICHARSETCONVERTERMANAGER_CID);
  7243. -#endif
  7244. -
  7245. -struct unicode_info2 {
  7246. - char cletter;
  7247. - unsigned short cupper;
  7248. - unsigned short clower;
  7249. -};
  7250. -
  7251. -static struct unicode_info2 * utf_tbl = NULL;
  7252. -static int utf_tbl_count = 0; // utf_tbl can be used by multiple Hunspell instances
  7253. -
  7254. -FILE * myfopen(const char * path, const char * mode) {
  7255. -#ifdef _WIN32
  7256. -#define WIN32_LONG_PATH_PREFIX "\\\\?\\"
  7257. - if (strncmp(path, WIN32_LONG_PATH_PREFIX, 4) == 0) {
  7258. - int len = MultiByteToWideChar(CP_UTF8, 0, path, -1, NULL, 0);
  7259. - wchar_t *buff = (wchar_t *) malloc(len * sizeof(wchar_t));
  7260. - MultiByteToWideChar(CP_UTF8, 0, path, -1, buff, len);
  7261. - FILE * f = _wfopen(buff, (strcmp(mode, "r") == 0) ? L"r" : L"rb");
  7262. - free(buff);
  7263. - return f;
  7264. - }
  7265. -#endif
  7266. - return fopen(path, mode);
  7267. -}
  7268. -
  7269. -/* only UTF-16 (BMP) implementation */
  7270. -char * u16_u8(char * dest, int size, const w_char * src, int srclen) {
  7271. - signed char * u8 = (signed char *)dest;
  7272. - signed char * u8_max = (signed char *)(u8 + size);
  7273. - const w_char * u2 = src;
  7274. - const w_char * u2_max = src + srclen;
  7275. - while ((u2 < u2_max) && (u8 < u8_max)) {
  7276. - if (u2->h) { // > 0xFF
  7277. - // XXX 4-byte haven't implemented yet.
  7278. - if (u2->h >= 0x08) { // >= 0x800 (3-byte UTF-8 character)
  7279. - *u8 = 0xe0 + (u2->h >> 4);
  7280. - u8++;
  7281. - if (u8 < u8_max) {
  7282. - *u8 = 0x80 + ((u2->h & 0xf) << 2) + (u2->l >> 6);
  7283. - u8++;
  7284. - if (u8 < u8_max) {
  7285. - *u8 = 0x80 + (u2->l & 0x3f);
  7286. - u8++;
  7287. - }
  7288. - }
  7289. - } else { // < 0x800 (2-byte UTF-8 character)
  7290. - *u8 = 0xc0 + (u2->h << 2) + (u2->l >> 6);
  7291. - u8++;
  7292. - if (u8 < u8_max) {
  7293. - *u8 = 0x80 + (u2->l & 0x3f);
  7294. - u8++;
  7295. - }
  7296. - }
  7297. - } else { // <= 0xFF
  7298. - if (u2->l & 0x80) { // >0x80 (2-byte UTF-8 character)
  7299. - *u8 = 0xc0 + (u2->l >> 6);
  7300. - u8++;
  7301. - if (u8 < u8_max) {
  7302. - *u8 = 0x80 + (u2->l & 0x3f);
  7303. - u8++;
  7304. - }
  7305. - } else { // < 0x80 (1-byte UTF-8 character)
  7306. - *u8 = u2->l;
  7307. - u8++;
  7308. - }
  7309. - }
  7310. - u2++;
  7311. - }
  7312. - *u8 = '\0';
  7313. - return dest;
  7314. -}
  7315. -
  7316. -
  7317. -/* only UTF-16 (BMP) implementation */
  7318. -int u8_u16(w_char * dest, int size, const char * src) {
  7319. - const signed char * u8 = (const signed char *)src;
  7320. - w_char * u2 = dest;
  7321. - w_char * u2_max = u2 + size;
  7322. -
  7323. - while ((u2 < u2_max) && *u8) {
  7324. - switch ((*u8) & 0xf0) {
  7325. - case 0x00:
  7326. - case 0x10:
  7327. - case 0x20:
  7328. - case 0x30:
  7329. - case 0x40:
  7330. - case 0x50:
  7331. - case 0x60:
  7332. - case 0x70: {
  7333. - u2->h = 0;
  7334. - u2->l = *u8;
  7335. - break;
  7336. - }
  7337. - case 0x80:
  7338. - case 0x90:
  7339. - case 0xa0:
  7340. - case 0xb0: {
  7341. - HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Unexpected continuation bytes in %ld. character position\n%s\n", static_cast<long>(u8 - (signed char *)src), src);
  7342. - u2->h = 0xff;
  7343. - u2->l = 0xfd;
  7344. - break;
  7345. - }
  7346. - case 0xc0:
  7347. - case 0xd0: { // 2-byte UTF-8 codes
  7348. - if ((*(u8+1) & 0xc0) == 0x80) {
  7349. - u2->h = (*u8 & 0x1f) >> 2;
  7350. - u2->l = (*u8 << 6) + (*(u8+1) & 0x3f);
  7351. - u8++;
  7352. - } else {
  7353. - HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte in %ld. character position:\n%s\n", static_cast<long>(u8 - (signed char *)src), src);
  7354. - u2->h = 0xff;
  7355. - u2->l = 0xfd;
  7356. - }
  7357. - break;
  7358. - }
  7359. - case 0xe0: { // 3-byte UTF-8 codes
  7360. - if ((*(u8+1) & 0xc0) == 0x80) {
  7361. - u2->h = ((*u8 & 0x0f) << 4) + ((*(u8+1) & 0x3f) >> 2);
  7362. - u8++;
  7363. - if ((*(u8+1) & 0xc0) == 0x80) {
  7364. - u2->l = (*u8 << 6) + (*(u8+1) & 0x3f);
  7365. - u8++;
  7366. - } else {
  7367. - HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte in %ld. character position:\n%s\n", static_cast<long>(u8 - (signed char *)src), src);
  7368. - u2->h = 0xff;
  7369. - u2->l = 0xfd;
  7370. - }
  7371. - } else {
  7372. - HUNSPELL_WARNING(stderr, "UTF-8 encoding error. Missing continuation byte in %ld. character position:\n%s\n", static_cast<long>(u8 - (signed char *)src), src);
  7373. - u2->h = 0xff;
  7374. - u2->l = 0xfd;
  7375. - }
  7376. - break;
  7377. - }
  7378. - case 0xf0: { // 4 or more byte UTF-8 codes
  7379. - HUNSPELL_WARNING(stderr, "This UTF-8 encoding can't convert to UTF-16:\n%s\n", src);
  7380. - u2->h = 0xff;
  7381. - u2->l = 0xfd;
  7382. - return -1;
  7383. - }
  7384. - }
  7385. - u8++;
  7386. - u2++;
  7387. - }
  7388. - return (int)(u2 - dest);
  7389. -}
  7390. -
  7391. -void flag_qsort(unsigned short flags[], int begin, int end) {
  7392. - unsigned short reg;
  7393. - if (end > begin) {
  7394. - unsigned short pivot = flags[begin];
  7395. - int l = begin + 1;
  7396. - int r = end;
  7397. - while(l < r) {
  7398. - if (flags[l] <= pivot) {
  7399. - l++;
  7400. - } else {
  7401. - r--;
  7402. - reg = flags[l];
  7403. - flags[l] = flags[r];
  7404. - flags[r] = reg;
  7405. - }
  7406. - }
  7407. - l--;
  7408. - reg = flags[begin];
  7409. - flags[begin] = flags[l];
  7410. - flags[l] = reg;
  7411. -
  7412. - flag_qsort(flags, begin, l);
  7413. - flag_qsort(flags, r, end);
  7414. - }
  7415. - }
  7416. -
  7417. -int flag_bsearch(unsigned short flags[], unsigned short flag, int length) {
  7418. - int mid;
  7419. - int left = 0;
  7420. - int right = length - 1;
  7421. - while (left <= right) {
  7422. - mid = (left + right) / 2;
  7423. - if (flags[mid] == flag) return 1;
  7424. - if (flag < flags[mid]) right = mid - 1;
  7425. - else left = mid + 1;
  7426. - }
  7427. - return 0;
  7428. -}
  7429. -
  7430. - // strip strings into token based on single char delimiter
  7431. - // acts like strsep() but only uses a delim char and not
  7432. - // a delim string
  7433. - // default delimiter: white space characters
  7434. -
  7435. - char * mystrsep(char ** stringp, const char delim)
  7436. - {
  7437. - char * mp = *stringp;
  7438. - if (*mp != '\0') {
  7439. - char * dp;
  7440. - if (delim) {
  7441. - dp = strchr(mp, delim);
  7442. - } else {
  7443. - // don't use isspace() here, the string can be in some random charset
  7444. - // that's way different than the locale's
  7445. - for (dp = mp; (*dp && *dp != ' ' && *dp != '\t'); dp++);
  7446. - if (!*dp) dp = NULL;
  7447. - }
  7448. - if (dp) {
  7449. - *stringp = dp+1;
  7450. - *dp = '\0';
  7451. - } else {
  7452. - *stringp = mp + strlen(mp);
  7453. - }
  7454. - return mp;
  7455. - }
  7456. - return NULL;
  7457. - }
  7458. -
  7459. - // replaces strdup with ansi version
  7460. - char * mystrdup(const char * s)
  7461. - {
  7462. - char * d = NULL;
  7463. - if (s) {
  7464. - size_t sl = strlen(s)+1;
  7465. - d = (char *) malloc(sl);
  7466. - if (d) {
  7467. - memcpy(d,s,sl);
  7468. - } else {
  7469. - HUNSPELL_WARNING(stderr, "Can't allocate memory.\n");
  7470. - }
  7471. - }
  7472. - return d;
  7473. - }
  7474. -
  7475. - // strcat for limited length destination string
  7476. - char * mystrcat(char * dest, const char * st, int max) {
  7477. - int len;
  7478. - int len2;
  7479. - if (dest == NULL || st == NULL) return dest;
  7480. - len = strlen(dest);
  7481. - len2 = strlen(st);
  7482. - if (len + len2 + 1 > max) return dest;
  7483. - strcpy(dest + len, st);
  7484. - return dest;
  7485. - }
  7486. -
  7487. - // remove cross-platform text line end characters
  7488. - void mychomp(char * s)
  7489. - {
  7490. - size_t k = strlen(s);
  7491. - if ((k > 0) && ((*(s+k-1)=='\r') || (*(s+k-1)=='\n'))) *(s+k-1) = '\0';
  7492. - if ((k > 1) && (*(s+k-2) == '\r')) *(s+k-2) = '\0';
  7493. - }
  7494. -
  7495. -
  7496. - // does an ansi strdup of the reverse of a string
  7497. - char * myrevstrdup(const char * s)
  7498. - {
  7499. - char * d = NULL;
  7500. - if (s) {
  7501. - size_t sl = strlen(s);
  7502. - d = (char *) malloc(sl+1);
  7503. - if (d) {
  7504. - const char * p = s + sl - 1;
  7505. - char * q = d;
  7506. - while (p >= s) *q++ = *p--;
  7507. - *q = '\0';
  7508. - } else {
  7509. - HUNSPELL_WARNING(stderr, "Can't allocate memory.\n");
  7510. - }
  7511. - }
  7512. - return d;
  7513. - }
  7514. -
  7515. -// break text to lines
  7516. -// return number of lines
  7517. -int line_tok(const char * text, char *** lines, char breakchar) {
  7518. - int linenum = 0;
  7519. - if (!text) {
  7520. - return linenum;
  7521. - }
  7522. - char * dup = mystrdup(text);
  7523. - char * p = strchr(dup, breakchar);
  7524. - while (p) {
  7525. - linenum++;
  7526. - *p = '\0';
  7527. - p++;
  7528. - p = strchr(p, breakchar);
  7529. - }
  7530. - linenum++;
  7531. - *lines = (char **) malloc(linenum * sizeof(char *));
  7532. - if (!(*lines)) {
  7533. - free(dup);
  7534. - return 0;
  7535. - }
  7536. -
  7537. - p = dup;
  7538. - int l = 0;
  7539. - for (int i = 0; i < linenum; i++) {
  7540. - if (*p != '\0') {
  7541. - (*lines)[l] = mystrdup(p);
  7542. - if (!(*lines)[l]) {
  7543. - for (i = 0; i < l; i++) free((*lines)[i]);
  7544. - free(dup);
  7545. - return 0;
  7546. - }
  7547. - l++;
  7548. - }
  7549. - p += strlen(p) + 1;
  7550. - }
  7551. - free(dup);
  7552. - if (!l) free(*lines);
  7553. - return l;
  7554. -}
  7555. -
  7556. -// uniq line in place
  7557. -char * line_uniq(char * text, char breakchar) {
  7558. - char ** lines;
  7559. - int linenum = line_tok(text, &lines, breakchar);
  7560. - int i;
  7561. - strcpy(text, lines[0]);
  7562. - for ( i = 1; i < linenum; i++ ) {
  7563. - int dup = 0;
  7564. - for (int j = 0; j < i; j++) {
  7565. - if (strcmp(lines[i], lines[j]) == 0) {
  7566. - dup = 1;
  7567. - break;
  7568. - }
  7569. - }
  7570. - if (!dup) {
  7571. - if ((i > 1) || (*(lines[0]) != '\0')) {
  7572. - sprintf(text + strlen(text), "%c", breakchar);
  7573. - }
  7574. - strcat(text, lines[i]);
  7575. - }
  7576. - }
  7577. - for ( i = 0; i < linenum; i++ ) {
  7578. - if (lines[i]) free(lines[i]);
  7579. - }
  7580. - if (lines) free(lines);
  7581. - return text;
  7582. -}
  7583. -
  7584. -// uniq and boundary for compound analysis: "1\n\2\n\1" -> " ( \1 | \2 ) "
  7585. -char * line_uniq_app(char ** text, char breakchar) {
  7586. - if (!strchr(*text, breakchar)) {
  7587. - return *text;
  7588. - }
  7589. -
  7590. - char ** lines;
  7591. - int i;
  7592. - int linenum = line_tok(*text, &lines, breakchar);
  7593. - int dup = 0;
  7594. - for (i = 0; i < linenum; i++) {
  7595. - for (int j = 0; j < (i - 1); j++) {
  7596. - if (strcmp(lines[i], lines[j]) == 0) {
  7597. - *(lines[i]) = '\0';
  7598. - dup++;
  7599. - break;
  7600. - }
  7601. - }
  7602. - }
  7603. - if ((linenum - dup) == 1) {
  7604. - strcpy(*text, lines[0]);
  7605. - freelist(&lines, linenum);
  7606. - return *text;
  7607. - }
  7608. - char * newtext = (char *) malloc(strlen(*text) + 2 * linenum + 3 + 1);
  7609. - if (newtext) {
  7610. - free(*text);
  7611. - *text = newtext;
  7612. - } else {
  7613. - freelist(&lines, linenum);
  7614. - return *text;
  7615. - }
  7616. - strcpy(*text," ( ");
  7617. - for (i = 0; i < linenum; i++) if (*(lines[i])) {
  7618. - sprintf(*text + strlen(*text), "%s%s", lines[i], " | ");
  7619. - }
  7620. - (*text)[strlen(*text) - 2] = ')'; // " ) "
  7621. - freelist(&lines, linenum);
  7622. - return *text;
  7623. -}
  7624. -
  7625. - // append s to ends of every lines in text
  7626. - void strlinecat(char * dest, const char * s)
  7627. - {
  7628. - char * dup = mystrdup(dest);
  7629. - char * source = dup;
  7630. - int len = strlen(s);
  7631. - if (dup) {
  7632. - while (*source) {
  7633. - if (*source == '\n') {
  7634. - strncpy(dest, s, len);
  7635. - dest += len;
  7636. - }
  7637. - *dest = *source;
  7638. - source++; dest++;
  7639. - }
  7640. - strcpy(dest, s);
  7641. - free(dup);
  7642. - }
  7643. - }
  7644. -
  7645. -// change \n to char c
  7646. -char * tr(char * text, char oldc, char newc) {
  7647. - char * p;
  7648. - for (p = text; *p; p++) if (*p == oldc) *p = newc;
  7649. - return text;
  7650. -}
  7651. -
  7652. -// morphcmp(): compare MORPH_DERI_SFX, MORPH_INFL_SFX and MORPH_TERM_SFX fields
  7653. -// in the first line of the inputs
  7654. -// return 0, if inputs equal
  7655. -// return 1, if inputs may equal with a secondary suffix
  7656. -// otherwise return -1
  7657. -int morphcmp(const char * s, const char * t)
  7658. -{
  7659. - int se = 0;
  7660. - int te = 0;
  7661. - const char * sl;
  7662. - const char * tl;
  7663. - const char * olds;
  7664. - const char * oldt;
  7665. - if (!s || !t) return 1;
  7666. - olds = s;
  7667. - sl = strchr(s, '\n');
  7668. - s = strstr(s, MORPH_DERI_SFX);
  7669. - if (!s || (sl && sl < s)) s = strstr(olds, MORPH_INFL_SFX);
  7670. - if (!s || (sl && sl < s)) {
  7671. - s= strstr(olds, MORPH_TERM_SFX);
  7672. - olds = NULL;
  7673. - }
  7674. - oldt = t;
  7675. - tl = strchr(t, '\n');
  7676. - t = strstr(t, MORPH_DERI_SFX);
  7677. - if (!t || (tl && tl < t)) t = strstr(oldt, MORPH_INFL_SFX);
  7678. - if (!t || (tl && tl < t)) {
  7679. - t = strstr(oldt, MORPH_TERM_SFX);
  7680. - oldt = NULL;
  7681. - }
  7682. - while (s && t && (!sl || sl > s) && (!tl || tl > t)) {
  7683. - s += MORPH_TAG_LEN;
  7684. - t += MORPH_TAG_LEN;
  7685. - se = 0;
  7686. - te = 0;
  7687. - while ((*s == *t) && !se && !te) {
  7688. - s++;
  7689. - t++;
  7690. - switch(*s) {
  7691. - case ' ':
  7692. - case '\n':
  7693. - case '\t':
  7694. - case '\0': se = 1;
  7695. - }
  7696. - switch(*t) {
  7697. - case ' ':
  7698. - case '\n':
  7699. - case '\t':
  7700. - case '\0': te = 1;
  7701. - }
  7702. - }
  7703. - if (!se || !te) {
  7704. - // not terminal suffix difference
  7705. - if (olds) return -1;
  7706. - return 1;
  7707. - }
  7708. - olds = s;
  7709. - s = strstr(s, MORPH_DERI_SFX);
  7710. - if (!s || (sl && sl < s)) s = strstr(olds, MORPH_INFL_SFX);
  7711. - if (!s || (sl && sl < s)) {
  7712. - s = strstr(olds, MORPH_TERM_SFX);
  7713. - olds = NULL;
  7714. - }
  7715. - oldt = t;
  7716. - t = strstr(t, MORPH_DERI_SFX);
  7717. - if (!t || (tl && tl < t)) t = strstr(oldt, MORPH_INFL_SFX);
  7718. - if (!t || (tl && tl < t)) {
  7719. - t = strstr(oldt, MORPH_TERM_SFX);
  7720. - oldt = NULL;
  7721. - }
  7722. - }
  7723. - if (!s && !t && se && te) return 0;
  7724. - return 1;
  7725. -}
  7726. -
  7727. -int get_sfxcount(const char * morph)
  7728. -{
  7729. - if (!morph || !*morph) return 0;
  7730. - int n = 0;
  7731. - const char * old = morph;
  7732. - morph = strstr(morph, MORPH_DERI_SFX);
  7733. - if (!morph) morph = strstr(old, MORPH_INFL_SFX);
  7734. - if (!morph) morph = strstr(old, MORPH_TERM_SFX);
  7735. - while (morph) {
  7736. - n++;
  7737. - old = morph;
  7738. - morph = strstr(morph + 1, MORPH_DERI_SFX);
  7739. - if (!morph) morph = strstr(old + 1, MORPH_INFL_SFX);
  7740. - if (!morph) morph = strstr(old + 1, MORPH_TERM_SFX);
  7741. - }
  7742. - return n;
  7743. -}
  7744. -
  7745. -
  7746. -int fieldlen(const char * r)
  7747. -{
  7748. - int n = 0;
  7749. - while (r && *r != ' ' && *r != '\t' && *r != '\0' && *r != '\n') {
  7750. - r++;
  7751. - n++;
  7752. - }
  7753. - return n;
  7754. -}
  7755. -
  7756. -char * copy_field(char * dest, const char * morph, const char * var)
  7757. -{
  7758. - if (!morph) return NULL;
  7759. - const char * beg = strstr(morph, var);
  7760. - if (beg) {
  7761. - char * d = dest;
  7762. - for (beg += MORPH_TAG_LEN; *beg != ' ' && *beg != '\t' &&
  7763. - *beg != '\n' && *beg != '\0'; d++, beg++) {
  7764. - *d = *beg;
  7765. - }
  7766. - *d = '\0';
  7767. - return dest;
  7768. - }
  7769. - return NULL;
  7770. -}
  7771. -
  7772. -char * mystrrep(char * word, const char * pat, const char * rep) {
  7773. - char * pos = strstr(word, pat);
  7774. - if (pos) {
  7775. - int replen = strlen(rep);
  7776. - int patlen = strlen(pat);
  7777. - while (pos) {
  7778. - if (replen < patlen) {
  7779. - char * end = word + strlen(word);
  7780. - char * next = pos + replen;
  7781. - char * prev = pos + strlen(pat);
  7782. - for (; prev < end; *next = *prev, prev++, next++);
  7783. - *next = '\0';
  7784. - } else if (replen > patlen) {
  7785. - char * end = pos + patlen;
  7786. - char * next = word + strlen(word) + replen - patlen;
  7787. - char * prev = next - replen + patlen;
  7788. - for (; prev >= end; *next = *prev, prev--, next--);
  7789. - }
  7790. - strncpy(pos, rep, replen);
  7791. - pos = strstr(word, pat);
  7792. - }
  7793. - }
  7794. - return word;
  7795. -}
  7796. -
  7797. - // reverse word
  7798. - int reverseword(char * word) {
  7799. - char r;
  7800. - for (char * dest = word + strlen(word) - 1; word < dest; word++, dest--) {
  7801. - r=*word;
  7802. - *word = *dest;
  7803. - *dest = r;
  7804. - }
  7805. - return 0;
  7806. - }
  7807. -
  7808. - // reverse word (error: 1)
  7809. - int reverseword_utf(char * word) {
  7810. - w_char w[MAXWORDLEN];
  7811. - w_char * p;
  7812. - w_char r;
  7813. - int l = u8_u16(w, MAXWORDLEN, word);
  7814. - if (l == -1) return 1;
  7815. - p = w;
  7816. - for (w_char * dest = w + l - 1; p < dest; p++, dest--) {
  7817. - r=*p;
  7818. - *p = *dest;
  7819. - *dest = r;
  7820. - }
  7821. - u16_u8(word, MAXWORDUTF8LEN, w, l);
  7822. - return 0;
  7823. - }
  7824. -
  7825. - int uniqlist(char ** list, int n) {
  7826. - int i;
  7827. - if (n < 2) return n;
  7828. - for (i = 0; i < n; i++) {
  7829. - for (int j = 0; j < i; j++) {
  7830. - if (list[j] && list[i] && (strcmp(list[j], list[i]) == 0)) {
  7831. - free(list[i]);
  7832. - list[i] = NULL;
  7833. - break;
  7834. - }
  7835. - }
  7836. - }
  7837. - int m = 1;
  7838. - for (i = 1; i < n; i++) if (list[i]) {
  7839. - list[m] = list[i];
  7840. - m++;
  7841. - }
  7842. - return m;
  7843. - }
  7844. -
  7845. - void freelist(char *** list, int n) {
  7846. - if (list && *list && n > 0) {
  7847. - for (int i = 0; i < n; i++) if ((*list)[i]) free((*list)[i]);
  7848. - free(*list);
  7849. - *list = NULL;
  7850. - }
  7851. - }
  7852. -
  7853. - // convert null terminated string to all caps
  7854. - void mkallcap(char * p, const struct cs_info * csconv)
  7855. - {
  7856. - while (*p != '\0') {
  7857. - *p = csconv[((unsigned char) *p)].cupper;
  7858. - p++;
  7859. - }
  7860. - }
  7861. -
  7862. - // convert null terminated string to all little
  7863. - void mkallsmall(char * p, const struct cs_info * csconv)
  7864. - {
  7865. - while (*p != '\0') {
  7866. - *p = csconv[((unsigned char) *p)].clower;
  7867. - p++;
  7868. - }
  7869. - }
  7870. -
  7871. -void mkallsmall_utf(w_char * u, int nc, int langnum) {
  7872. - for (int i = 0; i < nc; i++) {
  7873. - unsigned short idx = (u[i].h << 8) + u[i].l;
  7874. - if (idx != unicodetolower(idx, langnum)) {
  7875. - u[i].h = (unsigned char) (unicodetolower(idx, langnum) >> 8);
  7876. - u[i].l = (unsigned char) (unicodetolower(idx, langnum) & 0x00FF);
  7877. - }
  7878. - }
  7879. -}
  7880. -
  7881. -void mkallcap_utf(w_char * u, int nc, int langnum) {
  7882. - for (int i = 0; i < nc; i++) {
  7883. - unsigned short idx = (u[i].h << 8) + u[i].l;
  7884. - if (idx != unicodetoupper(idx, langnum)) {
  7885. - u[i].h = (unsigned char) (unicodetoupper(idx, langnum) >> 8);
  7886. - u[i].l = (unsigned char) (unicodetoupper(idx, langnum) & 0x00FF);
  7887. - }
  7888. - }
  7889. -}
  7890. -
  7891. - // convert null terminated string to have initial capital
  7892. - void mkinitcap(char * p, const struct cs_info * csconv)
  7893. - {
  7894. - if (*p != '\0') *p = csconv[((unsigned char)*p)].cupper;
  7895. - }
  7896. -
  7897. - // conversion function for protected memory
  7898. - void store_pointer(char * dest, char * source)
  7899. - {
  7900. - memcpy(dest, &source, sizeof(char *));
  7901. - }
  7902. -
  7903. - // conversion function for protected memory
  7904. - char * get_stored_pointer(const char * s)
  7905. - {
  7906. - char * p;
  7907. - memcpy(&p, s, sizeof(char *));
  7908. - return p;
  7909. - }
  7910. -
  7911. -#ifndef MOZILLA_CLIENT
  7912. - // convert null terminated string to all caps using encoding
  7913. - void enmkallcap(char * d, const char * p, const char * encoding)
  7914. -
  7915. - {
  7916. - struct cs_info * csconv = get_current_cs(encoding);
  7917. - while (*p != '\0') {
  7918. - *d++ = csconv[((unsigned char) *p)].cupper;
  7919. - p++;
  7920. - }
  7921. - *d = '\0';
  7922. - }
  7923. -
  7924. - // convert null terminated string to all little using encoding
  7925. - void enmkallsmall(char * d, const char * p, const char * encoding)
  7926. - {
  7927. - struct cs_info * csconv = get_current_cs(encoding);
  7928. - while (*p != '\0') {
  7929. - *d++ = csconv[((unsigned char) *p)].clower;
  7930. - p++;
  7931. - }
  7932. - *d = '\0';
  7933. - }
  7934. -
  7935. - // convert null terminated string to have initial capital using encoding
  7936. - void enmkinitcap(char * d, const char * p, const char * encoding)
  7937. - {
  7938. - struct cs_info * csconv = get_current_cs(encoding);
  7939. - memcpy(d,p,(strlen(p)+1));
  7940. - if (*p != '\0') *d= csconv[((unsigned char)*p)].cupper;
  7941. - }
  7942. -
  7943. -// these are simple character mappings for the
  7944. -// encodings supported
  7945. -// supplying isupper, tolower, and toupper
  7946. -
  7947. -static struct cs_info iso1_tbl[] = {
  7948. -{ 0x00, 0x00, 0x00 },
  7949. -{ 0x00, 0x01, 0x01 },
  7950. -{ 0x00, 0x02, 0x02 },
  7951. -{ 0x00, 0x03, 0x03 },
  7952. -{ 0x00, 0x04, 0x04 },
  7953. -{ 0x00, 0x05, 0x05 },
  7954. -{ 0x00, 0x06, 0x06 },
  7955. -{ 0x00, 0x07, 0x07 },
  7956. -{ 0x00, 0x08, 0x08 },
  7957. -{ 0x00, 0x09, 0x09 },
  7958. -{ 0x00, 0x0a, 0x0a },
  7959. -{ 0x00, 0x0b, 0x0b },
  7960. -{ 0x00, 0x0c, 0x0c },
  7961. -{ 0x00, 0x0d, 0x0d },
  7962. -{ 0x00, 0x0e, 0x0e },
  7963. -{ 0x00, 0x0f, 0x0f },
  7964. -{ 0x00, 0x10, 0x10 },
  7965. -{ 0x00, 0x11, 0x11 },
  7966. -{ 0x00, 0x12, 0x12 },
  7967. -{ 0x00, 0x13, 0x13 },
  7968. -{ 0x00, 0x14, 0x14 },
  7969. -{ 0x00, 0x15, 0x15 },
  7970. -{ 0x00, 0x16, 0x16 },
  7971. -{ 0x00, 0x17, 0x17 },
  7972. -{ 0x00, 0x18, 0x18 },
  7973. -{ 0x00, 0x19, 0x19 },
  7974. -{ 0x00, 0x1a, 0x1a },
  7975. -{ 0x00, 0x1b, 0x1b },
  7976. -{ 0x00, 0x1c, 0x1c },
  7977. -{ 0x00, 0x1d, 0x1d },
  7978. -{ 0x00, 0x1e, 0x1e },
  7979. -{ 0x00, 0x1f, 0x1f },
  7980. -{ 0x00, 0x20, 0x20 },
  7981. -{ 0x00, 0x21, 0x21 },
  7982. -{ 0x00, 0x22, 0x22 },
  7983. -{ 0x00, 0x23, 0x23 },
  7984. -{ 0x00, 0x24, 0x24 },
  7985. -{ 0x00, 0x25, 0x25 },
  7986. -{ 0x00, 0x26, 0x26 },
  7987. -{ 0x00, 0x27, 0x27 },
  7988. -{ 0x00, 0x28, 0x28 },
  7989. -{ 0x00, 0x29, 0x29 },
  7990. -{ 0x00, 0x2a, 0x2a },
  7991. -{ 0x00, 0x2b, 0x2b },
  7992. -{ 0x00, 0x2c, 0x2c },
  7993. -{ 0x00, 0x2d, 0x2d },
  7994. -{ 0x00, 0x2e, 0x2e },
  7995. -{ 0x00, 0x2f, 0x2f },
  7996. -{ 0x00, 0x30, 0x30 },
  7997. -{ 0x00, 0x31, 0x31 },
  7998. -{ 0x00, 0x32, 0x32 },
  7999. -{ 0x00, 0x33, 0x33 },
  8000. -{ 0x00, 0x34, 0x34 },
  8001. -{ 0x00, 0x35, 0x35 },
  8002. -{ 0x00, 0x36, 0x36 },
  8003. -{ 0x00, 0x37, 0x37 },
  8004. -{ 0x00, 0x38, 0x38 },
  8005. -{ 0x00, 0x39, 0x39 },
  8006. -{ 0x00, 0x3a, 0x3a },
  8007. -{ 0x00, 0x3b, 0x3b },
  8008. -{ 0x00, 0x3c, 0x3c },
  8009. -{ 0x00, 0x3d, 0x3d },
  8010. -{ 0x00, 0x3e, 0x3e },
  8011. -{ 0x00, 0x3f, 0x3f },
  8012. -{ 0x00, 0x40, 0x40 },
  8013. -{ 0x01, 0x61, 0x41 },
  8014. -{ 0x01, 0x62, 0x42 },
  8015. -{ 0x01, 0x63, 0x43 },
  8016. -{ 0x01, 0x64, 0x44 },
  8017. -{ 0x01, 0x65, 0x45 },
  8018. -{ 0x01, 0x66, 0x46 },
  8019. -{ 0x01, 0x67, 0x47 },
  8020. -{ 0x01, 0x68, 0x48 },
  8021. -{ 0x01, 0x69, 0x49 },
  8022. -{ 0x01, 0x6a, 0x4a },
  8023. -{ 0x01, 0x6b, 0x4b },
  8024. -{ 0x01, 0x6c, 0x4c },
  8025. -{ 0x01, 0x6d, 0x4d },
  8026. -{ 0x01, 0x6e, 0x4e },
  8027. -{ 0x01, 0x6f, 0x4f },
  8028. -{ 0x01, 0x70, 0x50 },
  8029. -{ 0x01, 0x71, 0x51 },
  8030. -{ 0x01, 0x72, 0x52 },
  8031. -{ 0x01, 0x73, 0x53 },
  8032. -{ 0x01, 0x74, 0x54 },
  8033. -{ 0x01, 0x75, 0x55 },
  8034. -{ 0x01, 0x76, 0x56 },
  8035. -{ 0x01, 0x77, 0x57 },
  8036. -{ 0x01, 0x78, 0x58 },
  8037. -{ 0x01, 0x79, 0x59 },
  8038. -{ 0x01, 0x7a, 0x5a },
  8039. -{ 0x00, 0x5b, 0x5b },
  8040. -{ 0x00, 0x5c, 0x5c },
  8041. -{ 0x00, 0x5d, 0x5d },
  8042. -{ 0x00, 0x5e, 0x5e },
  8043. -{ 0x00, 0x5f, 0x5f },
  8044. -{ 0x00, 0x60, 0x60 },
  8045. -{ 0x00, 0x61, 0x41 },
  8046. -{ 0x00, 0x62, 0x42 },
  8047. -{ 0x00, 0x63, 0x43 },
  8048. -{ 0x00, 0x64, 0x44 },
  8049. -{ 0x00, 0x65, 0x45 },
  8050. -{ 0x00, 0x66, 0x46 },
  8051. -{ 0x00, 0x67, 0x47 },
  8052. -{ 0x00, 0x68, 0x48 },
  8053. -{ 0x00, 0x69, 0x49 },
  8054. -{ 0x00, 0x6a, 0x4a },
  8055. -{ 0x00, 0x6b, 0x4b },
  8056. -{ 0x00, 0x6c, 0x4c },
  8057. -{ 0x00, 0x6d, 0x4d },
  8058. -{ 0x00, 0x6e, 0x4e },
  8059. -{ 0x00, 0x6f, 0x4f },
  8060. -{ 0x00, 0x70, 0x50 },
  8061. -{ 0x00, 0x71, 0x51 },
  8062. -{ 0x00, 0x72, 0x52 },
  8063. -{ 0x00, 0x73, 0x53 },
  8064. -{ 0x00, 0x74, 0x54 },
  8065. -{ 0x00, 0x75, 0x55 },
  8066. -{ 0x00, 0x76, 0x56 },
  8067. -{ 0x00, 0x77, 0x57 },
  8068. -{ 0x00, 0x78, 0x58 },
  8069. -{ 0x00, 0x79, 0x59 },
  8070. -{ 0x00, 0x7a, 0x5a },
  8071. -{ 0x00, 0x7b, 0x7b },
  8072. -{ 0x00, 0x7c, 0x7c },
  8073. -{ 0x00, 0x7d, 0x7d },
  8074. -{ 0x00, 0x7e, 0x7e },
  8075. -{ 0x00, 0x7f, 0x7f },
  8076. -{ 0x00, 0x80, 0x80 },
  8077. -{ 0x00, 0x81, 0x81 },
  8078. -{ 0x00, 0x82, 0x82 },
  8079. -{ 0x00, 0x83, 0x83 },
  8080. -{ 0x00, 0x84, 0x84 },
  8081. -{ 0x00, 0x85, 0x85 },
  8082. -{ 0x00, 0x86, 0x86 },
  8083. -{ 0x00, 0x87, 0x87 },
  8084. -{ 0x00, 0x88, 0x88 },
  8085. -{ 0x00, 0x89, 0x89 },
  8086. -{ 0x00, 0x8a, 0x8a },
  8087. -{ 0x00, 0x8b, 0x8b },
  8088. -{ 0x00, 0x8c, 0x8c },
  8089. -{ 0x00, 0x8d, 0x8d },
  8090. -{ 0x00, 0x8e, 0x8e },
  8091. -{ 0x00, 0x8f, 0x8f },
  8092. -{ 0x00, 0x90, 0x90 },
  8093. -{ 0x00, 0x91, 0x91 },
  8094. -{ 0x00, 0x92, 0x92 },
  8095. -{ 0x00, 0x93, 0x93 },
  8096. -{ 0x00, 0x94, 0x94 },
  8097. -{ 0x00, 0x95, 0x95 },
  8098. -{ 0x00, 0x96, 0x96 },
  8099. -{ 0x00, 0x97, 0x97 },
  8100. -{ 0x00, 0x98, 0x98 },
  8101. -{ 0x00, 0x99, 0x99 },
  8102. -{ 0x00, 0x9a, 0x9a },
  8103. -{ 0x00, 0x9b, 0x9b },
  8104. -{ 0x00, 0x9c, 0x9c },
  8105. -{ 0x00, 0x9d, 0x9d },
  8106. -{ 0x00, 0x9e, 0x9e },
  8107. -{ 0x00, 0x9f, 0x9f },
  8108. -{ 0x00, 0xa0, 0xa0 },
  8109. -{ 0x00, 0xa1, 0xa1 },
  8110. -{ 0x00, 0xa2, 0xa2 },
  8111. -{ 0x00, 0xa3, 0xa3 },
  8112. -{ 0x00, 0xa4, 0xa4 },
  8113. -{ 0x00, 0xa5, 0xa5 },
  8114. -{ 0x00, 0xa6, 0xa6 },
  8115. -{ 0x00, 0xa7, 0xa7 },
  8116. -{ 0x00, 0xa8, 0xa8 },
  8117. -{ 0x00, 0xa9, 0xa9 },
  8118. -{ 0x00, 0xaa, 0xaa },
  8119. -{ 0x00, 0xab, 0xab },
  8120. -{ 0x00, 0xac, 0xac },
  8121. -{ 0x00, 0xad, 0xad },
  8122. -{ 0x00, 0xae, 0xae },
  8123. -{ 0x00, 0xaf, 0xaf },
  8124. -{ 0x00, 0xb0, 0xb0 },
  8125. -{ 0x00, 0xb1, 0xb1 },
  8126. -{ 0x00, 0xb2, 0xb2 },
  8127. -{ 0x00, 0xb3, 0xb3 },
  8128. -{ 0x00, 0xb4, 0xb4 },
  8129. -{ 0x00, 0xb5, 0xb5 },
  8130. -{ 0x00, 0xb6, 0xb6 },
  8131. -{ 0x00, 0xb7, 0xb7 },
  8132. -{ 0x00, 0xb8, 0xb8 },
  8133. -{ 0x00, 0xb9, 0xb9 },
  8134. -{ 0x00, 0xba, 0xba },
  8135. -{ 0x00, 0xbb, 0xbb },
  8136. -{ 0x00, 0xbc, 0xbc },
  8137. -{ 0x00, 0xbd, 0xbd },
  8138. -{ 0x00, 0xbe, 0xbe },
  8139. -{ 0x00, 0xbf, 0xbf },
  8140. -{ 0x01, 0xe0, 0xc0 },
  8141. -{ 0x01, 0xe1, 0xc1 },
  8142. -{ 0x01, 0xe2, 0xc2 },
  8143. -{ 0x01, 0xe3, 0xc3 },
  8144. -{ 0x01, 0xe4, 0xc4 },
  8145. -{ 0x01, 0xe5, 0xc5 },
  8146. -{ 0x01, 0xe6, 0xc6 },
  8147. -{ 0x01, 0xe7, 0xc7 },
  8148. -{ 0x01, 0xe8, 0xc8 },
  8149. -{ 0x01, 0xe9, 0xc9 },
  8150. -{ 0x01, 0xea, 0xca },
  8151. -{ 0x01, 0xeb, 0xcb },
  8152. -{ 0x01, 0xec, 0xcc },
  8153. -{ 0x01, 0xed, 0xcd },
  8154. -{ 0x01, 0xee, 0xce },
  8155. -{ 0x01, 0xef, 0xcf },
  8156. -{ 0x01, 0xf0, 0xd0 },
  8157. -{ 0x01, 0xf1, 0xd1 },
  8158. -{ 0x01, 0xf2, 0xd2 },
  8159. -{ 0x01, 0xf3, 0xd3 },
  8160. -{ 0x01, 0xf4, 0xd4 },
  8161. -{ 0x01, 0xf5, 0xd5 },
  8162. -{ 0x01, 0xf6, 0xd6 },
  8163. -{ 0x00, 0xd7, 0xd7 },
  8164. -{ 0x01, 0xf8, 0xd8 },
  8165. -{ 0x01, 0xf9, 0xd9 },
  8166. -{ 0x01, 0xfa, 0xda },
  8167. -{ 0x01, 0xfb, 0xdb },
  8168. -{ 0x01, 0xfc, 0xdc },
  8169. -{ 0x01, 0xfd, 0xdd },
  8170. -{ 0x01, 0xfe, 0xde },
  8171. -{ 0x00, 0xdf, 0xdf },
  8172. -{ 0x00, 0xe0, 0xc0 },
  8173. -{ 0x00, 0xe1, 0xc1 },
  8174. -{ 0x00, 0xe2, 0xc2 },
  8175. -{ 0x00, 0xe3, 0xc3 },
  8176. -{ 0x00, 0xe4, 0xc4 },
  8177. -{ 0x00, 0xe5, 0xc5 },
  8178. -{ 0x00, 0xe6, 0xc6 },
  8179. -{ 0x00, 0xe7, 0xc7 },
  8180. -{ 0x00, 0xe8, 0xc8 },
  8181. -{ 0x00, 0xe9, 0xc9 },
  8182. -{ 0x00, 0xea, 0xca },
  8183. -{ 0x00, 0xeb, 0xcb },
  8184. -{ 0x00, 0xec, 0xcc },
  8185. -{ 0x00, 0xed, 0xcd },
  8186. -{ 0x00, 0xee, 0xce },
  8187. -{ 0x00, 0xef, 0xcf },
  8188. -{ 0x00, 0xf0, 0xd0 },
  8189. -{ 0x00, 0xf1, 0xd1 },
  8190. -{ 0x00, 0xf2, 0xd2 },
  8191. -{ 0x00, 0xf3, 0xd3 },
  8192. -{ 0x00, 0xf4, 0xd4 },
  8193. -{ 0x00, 0xf5, 0xd5 },
  8194. -{ 0x00, 0xf6, 0xd6 },
  8195. -{ 0x00, 0xf7, 0xf7 },
  8196. -{ 0x00, 0xf8, 0xd8 },
  8197. -{ 0x00, 0xf9, 0xd9 },
  8198. -{ 0x00, 0xfa, 0xda },
  8199. -{ 0x00, 0xfb, 0xdb },
  8200. -{ 0x00, 0xfc, 0xdc },
  8201. -{ 0x00, 0xfd, 0xdd },
  8202. -{ 0x00, 0xfe, 0xde },
  8203. -{ 0x00, 0xff, 0xff }
  8204. -};
  8205. -
  8206. -
  8207. -static struct cs_info iso2_tbl[] = {
  8208. -{ 0x00, 0x00, 0x00 },
  8209. -{ 0x00, 0x01, 0x01 },
  8210. -{ 0x00, 0x02, 0x02 },
  8211. -{ 0x00, 0x03, 0x03 },
  8212. -{ 0x00, 0x04, 0x04 },
  8213. -{ 0x00, 0x05, 0x05 },
  8214. -{ 0x00, 0x06, 0x06 },
  8215. -{ 0x00, 0x07, 0x07 },
  8216. -{ 0x00, 0x08, 0x08 },
  8217. -{ 0x00, 0x09, 0x09 },
  8218. -{ 0x00, 0x0a, 0x0a },
  8219. -{ 0x00, 0x0b, 0x0b },
  8220. -{ 0x00, 0x0c, 0x0c },
  8221. -{ 0x00, 0x0d, 0x0d },
  8222. -{ 0x00, 0x0e, 0x0e },
  8223. -{ 0x00, 0x0f, 0x0f },
  8224. -{ 0x00, 0x10, 0x10 },
  8225. -{ 0x00, 0x11, 0x11 },
  8226. -{ 0x00, 0x12, 0x12 },
  8227. -{ 0x00, 0x13, 0x13 },
  8228. -{ 0x00, 0x14, 0x14 },
  8229. -{ 0x00, 0x15, 0x15 },
  8230. -{ 0x00, 0x16, 0x16 },
  8231. -{ 0x00, 0x17, 0x17 },
  8232. -{ 0x00, 0x18, 0x18 },
  8233. -{ 0x00, 0x19, 0x19 },
  8234. -{ 0x00, 0x1a, 0x1a },
  8235. -{ 0x00, 0x1b, 0x1b },
  8236. -{ 0x00, 0x1c, 0x1c },
  8237. -{ 0x00, 0x1d, 0x1d },
  8238. -{ 0x00, 0x1e, 0x1e },
  8239. -{ 0x00, 0x1f, 0x1f },
  8240. -{ 0x00, 0x20, 0x20 },
  8241. -{ 0x00, 0x21, 0x21 },
  8242. -{ 0x00, 0x22, 0x22 },
  8243. -{ 0x00, 0x23, 0x23 },
  8244. -{ 0x00, 0x24, 0x24 },
  8245. -{ 0x00, 0x25, 0x25 },
  8246. -{ 0x00, 0x26, 0x26 },
  8247. -{ 0x00, 0x27, 0x27 },
  8248. -{ 0x00, 0x28, 0x28 },
  8249. -{ 0x00, 0x29, 0x29 },
  8250. -{ 0x00, 0x2a, 0x2a },
  8251. -{ 0x00, 0x2b, 0x2b },
  8252. -{ 0x00, 0x2c, 0x2c },
  8253. -{ 0x00, 0x2d, 0x2d },
  8254. -{ 0x00, 0x2e, 0x2e },
  8255. -{ 0x00, 0x2f, 0x2f },
  8256. -{ 0x00, 0x30, 0x30 },
  8257. -{ 0x00, 0x31, 0x31 },
  8258. -{ 0x00, 0x32, 0x32 },
  8259. -{ 0x00, 0x33, 0x33 },
  8260. -{ 0x00, 0x34, 0x34 },
  8261. -{ 0x00, 0x35, 0x35 },
  8262. -{ 0x00, 0x36, 0x36 },
  8263. -{ 0x00, 0x37, 0x37 },
  8264. -{ 0x00, 0x38, 0x38 },
  8265. -{ 0x00, 0x39, 0x39 },
  8266. -{ 0x00, 0x3a, 0x3a },
  8267. -{ 0x00, 0x3b, 0x3b },
  8268. -{ 0x00, 0x3c, 0x3c },
  8269. -{ 0x00, 0x3d, 0x3d },
  8270. -{ 0x00, 0x3e, 0x3e },
  8271. -{ 0x00, 0x3f, 0x3f },
  8272. -{ 0x00, 0x40, 0x40 },
  8273. -{ 0x01, 0x61, 0x41 },
  8274. -{ 0x01, 0x62, 0x42 },
  8275. -{ 0x01, 0x63, 0x43 },
  8276. -{ 0x01, 0x64, 0x44 },
  8277. -{ 0x01, 0x65, 0x45 },
  8278. -{ 0x01, 0x66, 0x46 },
  8279. -{ 0x01, 0x67, 0x47 },
  8280. -{ 0x01, 0x68, 0x48 },
  8281. -{ 0x01, 0x69, 0x49 },
  8282. -{ 0x01, 0x6a, 0x4a },
  8283. -{ 0x01, 0x6b, 0x4b },
  8284. -{ 0x01, 0x6c, 0x4c },
  8285. -{ 0x01, 0x6d, 0x4d },
  8286. -{ 0x01, 0x6e, 0x4e },
  8287. -{ 0x01, 0x6f, 0x4f },
  8288. -{ 0x01, 0x70, 0x50 },
  8289. -{ 0x01, 0x71, 0x51 },
  8290. -{ 0x01, 0x72, 0x52 },
  8291. -{ 0x01, 0x73, 0x53 },
  8292. -{ 0x01, 0x74, 0x54 },
  8293. -{ 0x01, 0x75, 0x55 },
  8294. -{ 0x01, 0x76, 0x56 },
  8295. -{ 0x01, 0x77, 0x57 },
  8296. -{ 0x01, 0x78, 0x58 },
  8297. -{ 0x01, 0x79, 0x59 },
  8298. -{ 0x01, 0x7a, 0x5a },
  8299. -{ 0x00, 0x5b, 0x5b },
  8300. -{ 0x00, 0x5c, 0x5c },
  8301. -{ 0x00, 0x5d, 0x5d },
  8302. -{ 0x00, 0x5e, 0x5e },
  8303. -{ 0x00, 0x5f, 0x5f },
  8304. -{ 0x00, 0x60, 0x60 },
  8305. -{ 0x00, 0x61, 0x41 },
  8306. -{ 0x00, 0x62, 0x42 },
  8307. -{ 0x00, 0x63, 0x43 },
  8308. -{ 0x00, 0x64, 0x44 },
  8309. -{ 0x00, 0x65, 0x45 },
  8310. -{ 0x00, 0x66, 0x46 },
  8311. -{ 0x00, 0x67, 0x47 },
  8312. -{ 0x00, 0x68, 0x48 },
  8313. -{ 0x00, 0x69, 0x49 },
  8314. -{ 0x00, 0x6a, 0x4a },
  8315. -{ 0x00, 0x6b, 0x4b },
  8316. -{ 0x00, 0x6c, 0x4c },
  8317. -{ 0x00, 0x6d, 0x4d },
  8318. -{ 0x00, 0x6e, 0x4e },
  8319. -{ 0x00, 0x6f, 0x4f },
  8320. -{ 0x00, 0x70, 0x50 },
  8321. -{ 0x00, 0x71, 0x51 },
  8322. -{ 0x00, 0x72, 0x52 },
  8323. -{ 0x00, 0x73, 0x53 },
  8324. -{ 0x00, 0x74, 0x54 },
  8325. -{ 0x00, 0x75, 0x55 },
  8326. -{ 0x00, 0x76, 0x56 },
  8327. -{ 0x00, 0x77, 0x57 },
  8328. -{ 0x00, 0x78, 0x58 },
  8329. -{ 0x00, 0x79, 0x59 },
  8330. -{ 0x00, 0x7a, 0x5a },
  8331. -{ 0x00, 0x7b, 0x7b },
  8332. -{ 0x00, 0x7c, 0x7c },
  8333. -{ 0x00, 0x7d, 0x7d },
  8334. -{ 0x00, 0x7e, 0x7e },
  8335. -{ 0x00, 0x7f, 0x7f },
  8336. -{ 0x00, 0x80, 0x80 },
  8337. -{ 0x00, 0x81, 0x81 },
  8338. -{ 0x00, 0x82, 0x82 },
  8339. -{ 0x00, 0x83, 0x83 },
  8340. -{ 0x00, 0x84, 0x84 },
  8341. -{ 0x00, 0x85, 0x85 },
  8342. -{ 0x00, 0x86, 0x86 },
  8343. -{ 0x00, 0x87, 0x87 },
  8344. -{ 0x00, 0x88, 0x88 },
  8345. -{ 0x00, 0x89, 0x89 },
  8346. -{ 0x00, 0x8a, 0x8a },
  8347. -{ 0x00, 0x8b, 0x8b },
  8348. -{ 0x00, 0x8c, 0x8c },
  8349. -{ 0x00, 0x8d, 0x8d },
  8350. -{ 0x00, 0x8e, 0x8e },
  8351. -{ 0x00, 0x8f, 0x8f },
  8352. -{ 0x00, 0x90, 0x90 },
  8353. -{ 0x00, 0x91, 0x91 },
  8354. -{ 0x00, 0x92, 0x92 },
  8355. -{ 0x00, 0x93, 0x93 },
  8356. -{ 0x00, 0x94, 0x94 },
  8357. -{ 0x00, 0x95, 0x95 },
  8358. -{ 0x00, 0x96, 0x96 },
  8359. -{ 0x00, 0x97, 0x97 },
  8360. -{ 0x00, 0x98, 0x98 },
  8361. -{ 0x00, 0x99, 0x99 },
  8362. -{ 0x00, 0x9a, 0x9a },
  8363. -{ 0x00, 0x9b, 0x9b },
  8364. -{ 0x00, 0x9c, 0x9c },
  8365. -{ 0x00, 0x9d, 0x9d },
  8366. -{ 0x00, 0x9e, 0x9e },
  8367. -{ 0x00, 0x9f, 0x9f },
  8368. -{ 0x00, 0xa0, 0xa0 },
  8369. -{ 0x01, 0xb1, 0xa1 },
  8370. -{ 0x00, 0xa2, 0xa2 },
  8371. -{ 0x01, 0xb3, 0xa3 },
  8372. -{ 0x00, 0xa4, 0xa4 },
  8373. -{ 0x01, 0xb5, 0xa5 },
  8374. -{ 0x01, 0xb6, 0xa6 },
  8375. -{ 0x00, 0xa7, 0xa7 },
  8376. -{ 0x00, 0xa8, 0xa8 },
  8377. -{ 0x01, 0xb9, 0xa9 },
  8378. -{ 0x01, 0xba, 0xaa },
  8379. -{ 0x01, 0xbb, 0xab },
  8380. -{ 0x01, 0xbc, 0xac },
  8381. -{ 0x00, 0xad, 0xad },
  8382. -{ 0x01, 0xbe, 0xae },
  8383. -{ 0x01, 0xbf, 0xaf },
  8384. -{ 0x00, 0xb0, 0xb0 },
  8385. -{ 0x00, 0xb1, 0xa1 },
  8386. -{ 0x00, 0xb2, 0xb2 },
  8387. -{ 0x00, 0xb3, 0xa3 },
  8388. -{ 0x00, 0xb4, 0xb4 },
  8389. -{ 0x00, 0xb5, 0xa5 },
  8390. -{ 0x00, 0xb6, 0xa6 },
  8391. -{ 0x00, 0xb7, 0xb7 },
  8392. -{ 0x00, 0xb8, 0xb8 },
  8393. -{ 0x00, 0xb9, 0xa9 },
  8394. -{ 0x00, 0xba, 0xaa },
  8395. -{ 0x00, 0xbb, 0xab },
  8396. -{ 0x00, 0xbc, 0xac },
  8397. -{ 0x00, 0xbd, 0xbd },
  8398. -{ 0x00, 0xbe, 0xae },
  8399. -{ 0x00, 0xbf, 0xaf },
  8400. -{ 0x01, 0xe0, 0xc0 },
  8401. -{ 0x01, 0xe1, 0xc1 },
  8402. -{ 0x01, 0xe2, 0xc2 },
  8403. -{ 0x01, 0xe3, 0xc3 },
  8404. -{ 0x01, 0xe4, 0xc4 },
  8405. -{ 0x01, 0xe5, 0xc5 },
  8406. -{ 0x01, 0xe6, 0xc6 },
  8407. -{ 0x01, 0xe7, 0xc7 },
  8408. -{ 0x01, 0xe8, 0xc8 },
  8409. -{ 0x01, 0xe9, 0xc9 },
  8410. -{ 0x01, 0xea, 0xca },
  8411. -{ 0x01, 0xeb, 0xcb },
  8412. -{ 0x01, 0xec, 0xcc },
  8413. -{ 0x01, 0xed, 0xcd },
  8414. -{ 0x01, 0xee, 0xce },
  8415. -{ 0x01, 0xef, 0xcf },
  8416. -{ 0x01, 0xf0, 0xd0 },
  8417. -{ 0x01, 0xf1, 0xd1 },
  8418. -{ 0x01, 0xf2, 0xd2 },
  8419. -{ 0x01, 0xf3, 0xd3 },
  8420. -{ 0x01, 0xf4, 0xd4 },
  8421. -{ 0x01, 0xf5, 0xd5 },
  8422. -{ 0x01, 0xf6, 0xd6 },
  8423. -{ 0x00, 0xd7, 0xd7 },
  8424. -{ 0x01, 0xf8, 0xd8 },
  8425. -{ 0x01, 0xf9, 0xd9 },
  8426. -{ 0x01, 0xfa, 0xda },
  8427. -{ 0x01, 0xfb, 0xdb },
  8428. -{ 0x01, 0xfc, 0xdc },
  8429. -{ 0x01, 0xfd, 0xdd },
  8430. -{ 0x01, 0xfe, 0xde },
  8431. -{ 0x00, 0xdf, 0xdf },
  8432. -{ 0x00, 0xe0, 0xc0 },
  8433. -{ 0x00, 0xe1, 0xc1 },
  8434. -{ 0x00, 0xe2, 0xc2 },
  8435. -{ 0x00, 0xe3, 0xc3 },
  8436. -{ 0x00, 0xe4, 0xc4 },
  8437. -{ 0x00, 0xe5, 0xc5 },
  8438. -{ 0x00, 0xe6, 0xc6 },
  8439. -{ 0x00, 0xe7, 0xc7 },
  8440. -{ 0x00, 0xe8, 0xc8 },
  8441. -{ 0x00, 0xe9, 0xc9 },
  8442. -{ 0x00, 0xea, 0xca },
  8443. -{ 0x00, 0xeb, 0xcb },
  8444. -{ 0x00, 0xec, 0xcc },
  8445. -{ 0x00, 0xed, 0xcd },
  8446. -{ 0x00, 0xee, 0xce },
  8447. -{ 0x00, 0xef, 0xcf },
  8448. -{ 0x00, 0xf0, 0xd0 },
  8449. -{ 0x00, 0xf1, 0xd1 },
  8450. -{ 0x00, 0xf2, 0xd2 },
  8451. -{ 0x00, 0xf3, 0xd3 },
  8452. -{ 0x00, 0xf4, 0xd4 },
  8453. -{ 0x00, 0xf5, 0xd5 },
  8454. -{ 0x00, 0xf6, 0xd6 },
  8455. -{ 0x00, 0xf7, 0xf7 },
  8456. -{ 0x00, 0xf8, 0xd8 },
  8457. -{ 0x00, 0xf9, 0xd9 },
  8458. -{ 0x00, 0xfa, 0xda },
  8459. -{ 0x00, 0xfb, 0xdb },
  8460. -{ 0x00, 0xfc, 0xdc },
  8461. -{ 0x00, 0xfd, 0xdd },
  8462. -{ 0x00, 0xfe, 0xde },
  8463. -{ 0x00, 0xff, 0xff }
  8464. -};
  8465. -
  8466. -
  8467. -static struct cs_info iso3_tbl[] = {
  8468. -{ 0x00, 0x00, 0x00 },
  8469. -{ 0x00, 0x01, 0x01 },
  8470. -{ 0x00, 0x02, 0x02 },
  8471. -{ 0x00, 0x03, 0x03 },
  8472. -{ 0x00, 0x04, 0x04 },
  8473. -{ 0x00, 0x05, 0x05 },
  8474. -{ 0x00, 0x06, 0x06 },
  8475. -{ 0x00, 0x07, 0x07 },
  8476. -{ 0x00, 0x08, 0x08 },
  8477. -{ 0x00, 0x09, 0x09 },
  8478. -{ 0x00, 0x0a, 0x0a },
  8479. -{ 0x00, 0x0b, 0x0b },
  8480. -{ 0x00, 0x0c, 0x0c },
  8481. -{ 0x00, 0x0d, 0x0d },
  8482. -{ 0x00, 0x0e, 0x0e },
  8483. -{ 0x00, 0x0f, 0x0f },
  8484. -{ 0x00, 0x10, 0x10 },
  8485. -{ 0x00, 0x11, 0x11 },
  8486. -{ 0x00, 0x12, 0x12 },
  8487. -{ 0x00, 0x13, 0x13 },
  8488. -{ 0x00, 0x14, 0x14 },
  8489. -{ 0x00, 0x15, 0x15 },
  8490. -{ 0x00, 0x16, 0x16 },
  8491. -{ 0x00, 0x17, 0x17 },
  8492. -{ 0x00, 0x18, 0x18 },
  8493. -{ 0x00, 0x19, 0x19 },
  8494. -{ 0x00, 0x1a, 0x1a },
  8495. -{ 0x00, 0x1b, 0x1b },
  8496. -{ 0x00, 0x1c, 0x1c },
  8497. -{ 0x00, 0x1d, 0x1d },
  8498. -{ 0x00, 0x1e, 0x1e },
  8499. -{ 0x00, 0x1f, 0x1f },
  8500. -{ 0x00, 0x20, 0x20 },
  8501. -{ 0x00, 0x21, 0x21 },
  8502. -{ 0x00, 0x22, 0x22 },
  8503. -{ 0x00, 0x23, 0x23 },
  8504. -{ 0x00, 0x24, 0x24 },
  8505. -{ 0x00, 0x25, 0x25 },
  8506. -{ 0x00, 0x26, 0x26 },
  8507. -{ 0x00, 0x27, 0x27 },
  8508. -{ 0x00, 0x28, 0x28 },
  8509. -{ 0x00, 0x29, 0x29 },
  8510. -{ 0x00, 0x2a, 0x2a },
  8511. -{ 0x00, 0x2b, 0x2b },
  8512. -{ 0x00, 0x2c, 0x2c },
  8513. -{ 0x00, 0x2d, 0x2d },
  8514. -{ 0x00, 0x2e, 0x2e },
  8515. -{ 0x00, 0x2f, 0x2f },
  8516. -{ 0x00, 0x30, 0x30 },
  8517. -{ 0x00, 0x31, 0x31 },
  8518. -{ 0x00, 0x32, 0x32 },
  8519. -{ 0x00, 0x33, 0x33 },
  8520. -{ 0x00, 0x34, 0x34 },
  8521. -{ 0x00, 0x35, 0x35 },
  8522. -{ 0x00, 0x36, 0x36 },
  8523. -{ 0x00, 0x37, 0x37 },
  8524. -{ 0x00, 0x38, 0x38 },
  8525. -{ 0x00, 0x39, 0x39 },
  8526. -{ 0x00, 0x3a, 0x3a },
  8527. -{ 0x00, 0x3b, 0x3b },
  8528. -{ 0x00, 0x3c, 0x3c },
  8529. -{ 0x00, 0x3d, 0x3d },
  8530. -{ 0x00, 0x3e, 0x3e },
  8531. -{ 0x00, 0x3f, 0x3f },
  8532. -{ 0x00, 0x40, 0x40 },
  8533. -{ 0x01, 0x61, 0x41 },
  8534. -{ 0x01, 0x62, 0x42 },
  8535. -{ 0x01, 0x63, 0x43 },
  8536. -{ 0x01, 0x64, 0x44 },
  8537. -{ 0x01, 0x65, 0x45 },
  8538. -{ 0x01, 0x66, 0x46 },
  8539. -{ 0x01, 0x67, 0x47 },
  8540. -{ 0x01, 0x68, 0x48 },
  8541. -{ 0x01, 0x69, 0x49 },
  8542. -{ 0x01, 0x6a, 0x4a },
  8543. -{ 0x01, 0x6b, 0x4b },
  8544. -{ 0x01, 0x6c, 0x4c },
  8545. -{ 0x01, 0x6d, 0x4d },
  8546. -{ 0x01, 0x6e, 0x4e },
  8547. -{ 0x01, 0x6f, 0x4f },
  8548. -{ 0x01, 0x70, 0x50 },
  8549. -{ 0x01, 0x71, 0x51 },
  8550. -{ 0x01, 0x72, 0x52 },
  8551. -{ 0x01, 0x73, 0x53 },
  8552. -{ 0x01, 0x74, 0x54 },
  8553. -{ 0x01, 0x75, 0x55 },
  8554. -{ 0x01, 0x76, 0x56 },
  8555. -{ 0x01, 0x77, 0x57 },
  8556. -{ 0x01, 0x78, 0x58 },
  8557. -{ 0x01, 0x79, 0x59 },
  8558. -{ 0x01, 0x7a, 0x5a },
  8559. -{ 0x00, 0x5b, 0x5b },
  8560. -{ 0x00, 0x5c, 0x5c },
  8561. -{ 0x00, 0x5d, 0x5d },
  8562. -{ 0x00, 0x5e, 0x5e },
  8563. -{ 0x00, 0x5f, 0x5f },
  8564. -{ 0x00, 0x60, 0x60 },
  8565. -{ 0x00, 0x61, 0x41 },
  8566. -{ 0x00, 0x62, 0x42 },
  8567. -{ 0x00, 0x63, 0x43 },
  8568. -{ 0x00, 0x64, 0x44 },
  8569. -{ 0x00, 0x65, 0x45 },
  8570. -{ 0x00, 0x66, 0x46 },
  8571. -{ 0x00, 0x67, 0x47 },
  8572. -{ 0x00, 0x68, 0x48 },
  8573. -{ 0x00, 0x69, 0x49 },
  8574. -{ 0x00, 0x6a, 0x4a },
  8575. -{ 0x00, 0x6b, 0x4b },
  8576. -{ 0x00, 0x6c, 0x4c },
  8577. -{ 0x00, 0x6d, 0x4d },
  8578. -{ 0x00, 0x6e, 0x4e },
  8579. -{ 0x00, 0x6f, 0x4f },
  8580. -{ 0x00, 0x70, 0x50 },
  8581. -{ 0x00, 0x71, 0x51 },
  8582. -{ 0x00, 0x72, 0x52 },
  8583. -{ 0x00, 0x73, 0x53 },
  8584. -{ 0x00, 0x74, 0x54 },
  8585. -{ 0x00, 0x75, 0x55 },
  8586. -{ 0x00, 0x76, 0x56 },
  8587. -{ 0x00, 0x77, 0x57 },
  8588. -{ 0x00, 0x78, 0x58 },
  8589. -{ 0x00, 0x79, 0x59 },
  8590. -{ 0x00, 0x7a, 0x5a },
  8591. -{ 0x00, 0x7b, 0x7b },
  8592. -{ 0x00, 0x7c, 0x7c },
  8593. -{ 0x00, 0x7d, 0x7d },
  8594. -{ 0x00, 0x7e, 0x7e },
  8595. -{ 0x00, 0x7f, 0x7f },
  8596. -{ 0x00, 0x80, 0x80 },
  8597. -{ 0x00, 0x81, 0x81 },
  8598. -{ 0x00, 0x82, 0x82 },
  8599. -{ 0x00, 0x83, 0x83 },
  8600. -{ 0x00, 0x84, 0x84 },
  8601. -{ 0x00, 0x85, 0x85 },
  8602. -{ 0x00, 0x86, 0x86 },
  8603. -{ 0x00, 0x87, 0x87 },
  8604. -{ 0x00, 0x88, 0x88 },
  8605. -{ 0x00, 0x89, 0x89 },
  8606. -{ 0x00, 0x8a, 0x8a },
  8607. -{ 0x00, 0x8b, 0x8b },
  8608. -{ 0x00, 0x8c, 0x8c },
  8609. -{ 0x00, 0x8d, 0x8d },
  8610. -{ 0x00, 0x8e, 0x8e },
  8611. -{ 0x00, 0x8f, 0x8f },
  8612. -{ 0x00, 0x90, 0x90 },
  8613. -{ 0x00, 0x91, 0x91 },
  8614. -{ 0x00, 0x92, 0x92 },
  8615. -{ 0x00, 0x93, 0x93 },
  8616. -{ 0x00, 0x94, 0x94 },
  8617. -{ 0x00, 0x95, 0x95 },
  8618. -{ 0x00, 0x96, 0x96 },
  8619. -{ 0x00, 0x97, 0x97 },
  8620. -{ 0x00, 0x98, 0x98 },
  8621. -{ 0x00, 0x99, 0x99 },
  8622. -{ 0x00, 0x9a, 0x9a },
  8623. -{ 0x00, 0x9b, 0x9b },
  8624. -{ 0x00, 0x9c, 0x9c },
  8625. -{ 0x00, 0x9d, 0x9d },
  8626. -{ 0x00, 0x9e, 0x9e },
  8627. -{ 0x00, 0x9f, 0x9f },
  8628. -{ 0x00, 0xa0, 0xa0 },
  8629. -{ 0x01, 0xb1, 0xa1 },
  8630. -{ 0x00, 0xa2, 0xa2 },
  8631. -{ 0x00, 0xa3, 0xa3 },
  8632. -{ 0x00, 0xa4, 0xa4 },
  8633. -{ 0x00, 0xa5, 0xa5 },
  8634. -{ 0x01, 0xb6, 0xa6 },
  8635. -{ 0x00, 0xa7, 0xa7 },
  8636. -{ 0x00, 0xa8, 0xa8 },
  8637. -{ 0x01, 0x69, 0xa9 },
  8638. -{ 0x01, 0xba, 0xaa },
  8639. -{ 0x01, 0xbb, 0xab },
  8640. -{ 0x01, 0xbc, 0xac },
  8641. -{ 0x00, 0xad, 0xad },
  8642. -{ 0x00, 0xae, 0xae },
  8643. -{ 0x01, 0xbf, 0xaf },
  8644. -{ 0x00, 0xb0, 0xb0 },
  8645. -{ 0x00, 0xb1, 0xa1 },
  8646. -{ 0x00, 0xb2, 0xb2 },
  8647. -{ 0x00, 0xb3, 0xb3 },
  8648. -{ 0x00, 0xb4, 0xb4 },
  8649. -{ 0x00, 0xb5, 0xb5 },
  8650. -{ 0x00, 0xb6, 0xa6 },
  8651. -{ 0x00, 0xb7, 0xb7 },
  8652. -{ 0x00, 0xb8, 0xb8 },
  8653. -{ 0x00, 0xb9, 0x49 },
  8654. -{ 0x00, 0xba, 0xaa },
  8655. -{ 0x00, 0xbb, 0xab },
  8656. -{ 0x00, 0xbc, 0xac },
  8657. -{ 0x00, 0xbd, 0xbd },
  8658. -{ 0x00, 0xbe, 0xbe },
  8659. -{ 0x00, 0xbf, 0xaf },
  8660. -{ 0x01, 0xe0, 0xc0 },
  8661. -{ 0x01, 0xe1, 0xc1 },
  8662. -{ 0x01, 0xe2, 0xc2 },
  8663. -{ 0x00, 0xc3, 0xc3 },
  8664. -{ 0x01, 0xe4, 0xc4 },
  8665. -{ 0x01, 0xe5, 0xc5 },
  8666. -{ 0x01, 0xe6, 0xc6 },
  8667. -{ 0x01, 0xe7, 0xc7 },
  8668. -{ 0x01, 0xe8, 0xc8 },
  8669. -{ 0x01, 0xe9, 0xc9 },
  8670. -{ 0x01, 0xea, 0xca },
  8671. -{ 0x01, 0xeb, 0xcb },
  8672. -{ 0x01, 0xec, 0xcc },
  8673. -{ 0x01, 0xed, 0xcd },
  8674. -{ 0x01, 0xee, 0xce },
  8675. -{ 0x01, 0xef, 0xcf },
  8676. -{ 0x00, 0xd0, 0xd0 },
  8677. -{ 0x01, 0xf1, 0xd1 },
  8678. -{ 0x01, 0xf2, 0xd2 },
  8679. -{ 0x01, 0xf3, 0xd3 },
  8680. -{ 0x01, 0xf4, 0xd4 },
  8681. -{ 0x01, 0xf5, 0xd5 },
  8682. -{ 0x01, 0xf6, 0xd6 },
  8683. -{ 0x00, 0xd7, 0xd7 },
  8684. -{ 0x01, 0xf8, 0xd8 },
  8685. -{ 0x01, 0xf9, 0xd9 },
  8686. -{ 0x01, 0xfa, 0xda },
  8687. -{ 0x01, 0xfb, 0xdb },
  8688. -{ 0x01, 0xfc, 0xdc },
  8689. -{ 0x01, 0xfd, 0xdd },
  8690. -{ 0x01, 0xfe, 0xde },
  8691. -{ 0x00, 0xdf, 0xdf },
  8692. -{ 0x00, 0xe0, 0xc0 },
  8693. -{ 0x00, 0xe1, 0xc1 },
  8694. -{ 0x00, 0xe2, 0xc2 },
  8695. -{ 0x00, 0xe3, 0xe3 },
  8696. -{ 0x00, 0xe4, 0xc4 },
  8697. -{ 0x00, 0xe5, 0xc5 },
  8698. -{ 0x00, 0xe6, 0xc6 },
  8699. -{ 0x00, 0xe7, 0xc7 },
  8700. -{ 0x00, 0xe8, 0xc8 },
  8701. -{ 0x00, 0xe9, 0xc9 },
  8702. -{ 0x00, 0xea, 0xca },
  8703. -{ 0x00, 0xeb, 0xcb },
  8704. -{ 0x00, 0xec, 0xcc },
  8705. -{ 0x00, 0xed, 0xcd },
  8706. -{ 0x00, 0xee, 0xce },
  8707. -{ 0x00, 0xef, 0xcf },
  8708. -{ 0x00, 0xf0, 0xf0 },
  8709. -{ 0x00, 0xf1, 0xd1 },
  8710. -{ 0x00, 0xf2, 0xd2 },
  8711. -{ 0x00, 0xf3, 0xd3 },
  8712. -{ 0x00, 0xf4, 0xd4 },
  8713. -{ 0x00, 0xf5, 0xd5 },
  8714. -{ 0x00, 0xf6, 0xd6 },
  8715. -{ 0x00, 0xf7, 0xf7 },
  8716. -{ 0x00, 0xf8, 0xd8 },
  8717. -{ 0x00, 0xf9, 0xd9 },
  8718. -{ 0x00, 0xfa, 0xda },
  8719. -{ 0x00, 0xfb, 0xdb },
  8720. -{ 0x00, 0xfc, 0xdc },
  8721. -{ 0x00, 0xfd, 0xdd },
  8722. -{ 0x00, 0xfe, 0xde },
  8723. -{ 0x00, 0xff, 0xff }
  8724. -};
  8725. -
  8726. -static struct cs_info iso4_tbl[] = {
  8727. -{ 0x00, 0x00, 0x00 },
  8728. -{ 0x00, 0x01, 0x01 },
  8729. -{ 0x00, 0x02, 0x02 },
  8730. -{ 0x00, 0x03, 0x03 },
  8731. -{ 0x00, 0x04, 0x04 },
  8732. -{ 0x00, 0x05, 0x05 },
  8733. -{ 0x00, 0x06, 0x06 },
  8734. -{ 0x00, 0x07, 0x07 },
  8735. -{ 0x00, 0x08, 0x08 },
  8736. -{ 0x00, 0x09, 0x09 },
  8737. -{ 0x00, 0x0a, 0x0a },
  8738. -{ 0x00, 0x0b, 0x0b },
  8739. -{ 0x00, 0x0c, 0x0c },
  8740. -{ 0x00, 0x0d, 0x0d },
  8741. -{ 0x00, 0x0e, 0x0e },
  8742. -{ 0x00, 0x0f, 0x0f },
  8743. -{ 0x00, 0x10, 0x10 },
  8744. -{ 0x00, 0x11, 0x11 },
  8745. -{ 0x00, 0x12, 0x12 },
  8746. -{ 0x00, 0x13, 0x13 },
  8747. -{ 0x00, 0x14, 0x14 },
  8748. -{ 0x00, 0x15, 0x15 },
  8749. -{ 0x00, 0x16, 0x16 },
  8750. -{ 0x00, 0x17, 0x17 },
  8751. -{ 0x00, 0x18, 0x18 },
  8752. -{ 0x00, 0x19, 0x19 },
  8753. -{ 0x00, 0x1a, 0x1a },
  8754. -{ 0x00, 0x1b, 0x1b },
  8755. -{ 0x00, 0x1c, 0x1c },
  8756. -{ 0x00, 0x1d, 0x1d },
  8757. -{ 0x00, 0x1e, 0x1e },
  8758. -{ 0x00, 0x1f, 0x1f },
  8759. -{ 0x00, 0x20, 0x20 },
  8760. -{ 0x00, 0x21, 0x21 },
  8761. -{ 0x00, 0x22, 0x22 },
  8762. -{ 0x00, 0x23, 0x23 },
  8763. -{ 0x00, 0x24, 0x24 },
  8764. -{ 0x00, 0x25, 0x25 },
  8765. -{ 0x00, 0x26, 0x26 },
  8766. -{ 0x00, 0x27, 0x27 },
  8767. -{ 0x00, 0x28, 0x28 },
  8768. -{ 0x00, 0x29, 0x29 },
  8769. -{ 0x00, 0x2a, 0x2a },
  8770. -{ 0x00, 0x2b, 0x2b },
  8771. -{ 0x00, 0x2c, 0x2c },
  8772. -{ 0x00, 0x2d, 0x2d },
  8773. -{ 0x00, 0x2e, 0x2e },
  8774. -{ 0x00, 0x2f, 0x2f },
  8775. -{ 0x00, 0x30, 0x30 },
  8776. -{ 0x00, 0x31, 0x31 },
  8777. -{ 0x00, 0x32, 0x32 },
  8778. -{ 0x00, 0x33, 0x33 },
  8779. -{ 0x00, 0x34, 0x34 },
  8780. -{ 0x00, 0x35, 0x35 },
  8781. -{ 0x00, 0x36, 0x36 },
  8782. -{ 0x00, 0x37, 0x37 },
  8783. -{ 0x00, 0x38, 0x38 },
  8784. -{ 0x00, 0x39, 0x39 },
  8785. -{ 0x00, 0x3a, 0x3a },
  8786. -{ 0x00, 0x3b, 0x3b },
  8787. -{ 0x00, 0x3c, 0x3c },
  8788. -{ 0x00, 0x3d, 0x3d },
  8789. -{ 0x00, 0x3e, 0x3e },
  8790. -{ 0x00, 0x3f, 0x3f },
  8791. -{ 0x00, 0x40, 0x40 },
  8792. -{ 0x01, 0x61, 0x41 },
  8793. -{ 0x01, 0x62, 0x42 },
  8794. -{ 0x01, 0x63, 0x43 },
  8795. -{ 0x01, 0x64, 0x44 },
  8796. -{ 0x01, 0x65, 0x45 },
  8797. -{ 0x01, 0x66, 0x46 },
  8798. -{ 0x01, 0x67, 0x47 },
  8799. -{ 0x01, 0x68, 0x48 },
  8800. -{ 0x01, 0x69, 0x49 },
  8801. -{ 0x01, 0x6a, 0x4a },
  8802. -{ 0x01, 0x6b, 0x4b },
  8803. -{ 0x01, 0x6c, 0x4c },
  8804. -{ 0x01, 0x6d, 0x4d },
  8805. -{ 0x01, 0x6e, 0x4e },
  8806. -{ 0x01, 0x6f, 0x4f },
  8807. -{ 0x01, 0x70, 0x50 },
  8808. -{ 0x01, 0x71, 0x51 },
  8809. -{ 0x01, 0x72, 0x52 },
  8810. -{ 0x01, 0x73, 0x53 },
  8811. -{ 0x01, 0x74, 0x54 },
  8812. -{ 0x01, 0x75, 0x55 },
  8813. -{ 0x01, 0x76, 0x56 },
  8814. -{ 0x01, 0x77, 0x57 },
  8815. -{ 0x01, 0x78, 0x58 },
  8816. -{ 0x01, 0x79, 0x59 },
  8817. -{ 0x01, 0x7a, 0x5a },
  8818. -{ 0x00, 0x5b, 0x5b },
  8819. -{ 0x00, 0x5c, 0x5c },
  8820. -{ 0x00, 0x5d, 0x5d },
  8821. -{ 0x00, 0x5e, 0x5e },
  8822. -{ 0x00, 0x5f, 0x5f },
  8823. -{ 0x00, 0x60, 0x60 },
  8824. -{ 0x00, 0x61, 0x41 },
  8825. -{ 0x00, 0x62, 0x42 },
  8826. -{ 0x00, 0x63, 0x43 },
  8827. -{ 0x00, 0x64, 0x44 },
  8828. -{ 0x00, 0x65, 0x45 },
  8829. -{ 0x00, 0x66, 0x46 },
  8830. -{ 0x00, 0x67, 0x47 },
  8831. -{ 0x00, 0x68, 0x48 },
  8832. -{ 0x00, 0x69, 0x49 },
  8833. -{ 0x00, 0x6a, 0x4a },
  8834. -{ 0x00, 0x6b, 0x4b },
  8835. -{ 0x00, 0x6c, 0x4c },
  8836. -{ 0x00, 0x6d, 0x4d },
  8837. -{ 0x00, 0x6e, 0x4e },
  8838. -{ 0x00, 0x6f, 0x4f },
  8839. -{ 0x00, 0x70, 0x50 },
  8840. -{ 0x00, 0x71, 0x51 },
  8841. -{ 0x00, 0x72, 0x52 },
  8842. -{ 0x00, 0x73, 0x53 },
  8843. -{ 0x00, 0x74, 0x54 },
  8844. -{ 0x00, 0x75, 0x55 },
  8845. -{ 0x00, 0x76, 0x56 },
  8846. -{ 0x00, 0x77, 0x57 },
  8847. -{ 0x00, 0x78, 0x58 },
  8848. -{ 0x00, 0x79, 0x59 },
  8849. -{ 0x00, 0x7a, 0x5a },
  8850. -{ 0x00, 0x7b, 0x7b },
  8851. -{ 0x00, 0x7c, 0x7c },
  8852. -{ 0x00, 0x7d, 0x7d },
  8853. -{ 0x00, 0x7e, 0x7e },
  8854. -{ 0x00, 0x7f, 0x7f },
  8855. -{ 0x00, 0x80, 0x80 },
  8856. -{ 0x00, 0x81, 0x81 },
  8857. -{ 0x00, 0x82, 0x82 },
  8858. -{ 0x00, 0x83, 0x83 },
  8859. -{ 0x00, 0x84, 0x84 },
  8860. -{ 0x00, 0x85, 0x85 },
  8861. -{ 0x00, 0x86, 0x86 },
  8862. -{ 0x00, 0x87, 0x87 },
  8863. -{ 0x00, 0x88, 0x88 },
  8864. -{ 0x00, 0x89, 0x89 },
  8865. -{ 0x00, 0x8a, 0x8a },
  8866. -{ 0x00, 0x8b, 0x8b },
  8867. -{ 0x00, 0x8c, 0x8c },
  8868. -{ 0x00, 0x8d, 0x8d },
  8869. -{ 0x00, 0x8e, 0x8e },
  8870. -{ 0x00, 0x8f, 0x8f },
  8871. -{ 0x00, 0x90, 0x90 },
  8872. -{ 0x00, 0x91, 0x91 },
  8873. -{ 0x00, 0x92, 0x92 },
  8874. -{ 0x00, 0x93, 0x93 },
  8875. -{ 0x00, 0x94, 0x94 },
  8876. -{ 0x00, 0x95, 0x95 },
  8877. -{ 0x00, 0x96, 0x96 },
  8878. -{ 0x00, 0x97, 0x97 },
  8879. -{ 0x00, 0x98, 0x98 },
  8880. -{ 0x00, 0x99, 0x99 },
  8881. -{ 0x00, 0x9a, 0x9a },
  8882. -{ 0x00, 0x9b, 0x9b },
  8883. -{ 0x00, 0x9c, 0x9c },
  8884. -{ 0x00, 0x9d, 0x9d },
  8885. -{ 0x00, 0x9e, 0x9e },
  8886. -{ 0x00, 0x9f, 0x9f },
  8887. -{ 0x00, 0xa0, 0xa0 },
  8888. -{ 0x01, 0xb1, 0xa1 },
  8889. -{ 0x00, 0xa2, 0xa2 },
  8890. -{ 0x01, 0xb3, 0xa3 },
  8891. -{ 0x00, 0xa4, 0xa4 },
  8892. -{ 0x01, 0xb5, 0xa5 },
  8893. -{ 0x01, 0xb6, 0xa6 },
  8894. -{ 0x00, 0xa7, 0xa7 },
  8895. -{ 0x00, 0xa8, 0xa8 },
  8896. -{ 0x01, 0xb9, 0xa9 },
  8897. -{ 0x01, 0xba, 0xaa },
  8898. -{ 0x01, 0xbb, 0xab },
  8899. -{ 0x01, 0xbc, 0xac },
  8900. -{ 0x00, 0xad, 0xad },
  8901. -{ 0x01, 0xbe, 0xae },
  8902. -{ 0x00, 0xaf, 0xaf },
  8903. -{ 0x00, 0xb0, 0xb0 },
  8904. -{ 0x00, 0xb1, 0xa1 },
  8905. -{ 0x00, 0xb2, 0xb2 },
  8906. -{ 0x00, 0xb3, 0xa3 },
  8907. -{ 0x00, 0xb4, 0xb4 },
  8908. -{ 0x00, 0xb5, 0xa5 },
  8909. -{ 0x00, 0xb6, 0xa6 },
  8910. -{ 0x00, 0xb7, 0xb7 },
  8911. -{ 0x00, 0xb8, 0xb8 },
  8912. -{ 0x00, 0xb9, 0xa9 },
  8913. -{ 0x00, 0xba, 0xaa },
  8914. -{ 0x00, 0xbb, 0xab },
  8915. -{ 0x00, 0xbc, 0xac },
  8916. -{ 0x00, 0xbd, 0xbd },
  8917. -{ 0x00, 0xbe, 0xae },
  8918. -{ 0x00, 0xbf, 0xbf },
  8919. -{ 0x01, 0xe0, 0xc0 },
  8920. -{ 0x01, 0xe1, 0xc1 },
  8921. -{ 0x01, 0xe2, 0xc2 },
  8922. -{ 0x01, 0xe3, 0xc3 },
  8923. -{ 0x01, 0xe4, 0xc4 },
  8924. -{ 0x01, 0xe5, 0xc5 },
  8925. -{ 0x01, 0xe6, 0xc6 },
  8926. -{ 0x01, 0xe7, 0xc7 },
  8927. -{ 0x01, 0xe8, 0xc8 },
  8928. -{ 0x01, 0xe9, 0xc9 },
  8929. -{ 0x01, 0xea, 0xca },
  8930. -{ 0x01, 0xeb, 0xcb },
  8931. -{ 0x01, 0xec, 0xcc },
  8932. -{ 0x01, 0xed, 0xcd },
  8933. -{ 0x01, 0xee, 0xce },
  8934. -{ 0x01, 0xef, 0xcf },
  8935. -{ 0x01, 0xf0, 0xd0 },
  8936. -{ 0x01, 0xf1, 0xd1 },
  8937. -{ 0x01, 0xf2, 0xd2 },
  8938. -{ 0x01, 0xf3, 0xd3 },
  8939. -{ 0x01, 0xf4, 0xd4 },
  8940. -{ 0x01, 0xf5, 0xd5 },
  8941. -{ 0x01, 0xf6, 0xd6 },
  8942. -{ 0x00, 0xd7, 0xd7 },
  8943. -{ 0x01, 0xf8, 0xd8 },
  8944. -{ 0x01, 0xf9, 0xd9 },
  8945. -{ 0x01, 0xfa, 0xda },
  8946. -{ 0x01, 0xfb, 0xdb },
  8947. -{ 0x01, 0xfc, 0xdc },
  8948. -{ 0x01, 0xfd, 0xdd },
  8949. -{ 0x01, 0xfe, 0xde },
  8950. -{ 0x00, 0xdf, 0xdf },
  8951. -{ 0x00, 0xe0, 0xc0 },
  8952. -{ 0x00, 0xe1, 0xc1 },
  8953. -{ 0x00, 0xe2, 0xc2 },
  8954. -{ 0x00, 0xe3, 0xc3 },
  8955. -{ 0x00, 0xe4, 0xc4 },
  8956. -{ 0x00, 0xe5, 0xc5 },
  8957. -{ 0x00, 0xe6, 0xc6 },
  8958. -{ 0x00, 0xe7, 0xc7 },
  8959. -{ 0x00, 0xe8, 0xc8 },
  8960. -{ 0x00, 0xe9, 0xc9 },
  8961. -{ 0x00, 0xea, 0xca },
  8962. -{ 0x00, 0xeb, 0xcb },
  8963. -{ 0x00, 0xec, 0xcc },
  8964. -{ 0x00, 0xed, 0xcd },
  8965. -{ 0x00, 0xee, 0xce },
  8966. -{ 0x00, 0xef, 0xcf },
  8967. -{ 0x00, 0xf0, 0xd0 },
  8968. -{ 0x00, 0xf1, 0xd1 },
  8969. -{ 0x00, 0xf2, 0xd2 },
  8970. -{ 0x00, 0xf3, 0xd3 },
  8971. -{ 0x00, 0xf4, 0xd4 },
  8972. -{ 0x00, 0xf5, 0xd5 },
  8973. -{ 0x00, 0xf6, 0xd6 },
  8974. -{ 0x00, 0xf7, 0xf7 },
  8975. -{ 0x00, 0xf8, 0xd8 },
  8976. -{ 0x00, 0xf9, 0xd9 },
  8977. -{ 0x00, 0xfa, 0xda },
  8978. -{ 0x00, 0xfb, 0xdb },
  8979. -{ 0x00, 0xfc, 0xdc },
  8980. -{ 0x00, 0xfd, 0xdd },
  8981. -{ 0x00, 0xfe, 0xde },
  8982. -{ 0x00, 0xff, 0xff }
  8983. -};
  8984. -
  8985. -static struct cs_info iso5_tbl[] = {
  8986. -{ 0x00, 0x00, 0x00 },
  8987. -{ 0x00, 0x01, 0x01 },
  8988. -{ 0x00, 0x02, 0x02 },
  8989. -{ 0x00, 0x03, 0x03 },
  8990. -{ 0x00, 0x04, 0x04 },
  8991. -{ 0x00, 0x05, 0x05 },
  8992. -{ 0x00, 0x06, 0x06 },
  8993. -{ 0x00, 0x07, 0x07 },
  8994. -{ 0x00, 0x08, 0x08 },
  8995. -{ 0x00, 0x09, 0x09 },
  8996. -{ 0x00, 0x0a, 0x0a },
  8997. -{ 0x00, 0x0b, 0x0b },
  8998. -{ 0x00, 0x0c, 0x0c },
  8999. -{ 0x00, 0x0d, 0x0d },
  9000. -{ 0x00, 0x0e, 0x0e },
  9001. -{ 0x00, 0x0f, 0x0f },
  9002. -{ 0x00, 0x10, 0x10 },
  9003. -{ 0x00, 0x11, 0x11 },
  9004. -{ 0x00, 0x12, 0x12 },
  9005. -{ 0x00, 0x13, 0x13 },
  9006. -{ 0x00, 0x14, 0x14 },
  9007. -{ 0x00, 0x15, 0x15 },
  9008. -{ 0x00, 0x16, 0x16 },
  9009. -{ 0x00, 0x17, 0x17 },
  9010. -{ 0x00, 0x18, 0x18 },
  9011. -{ 0x00, 0x19, 0x19 },
  9012. -{ 0x00, 0x1a, 0x1a },
  9013. -{ 0x00, 0x1b, 0x1b },
  9014. -{ 0x00, 0x1c, 0x1c },
  9015. -{ 0x00, 0x1d, 0x1d },
  9016. -{ 0x00, 0x1e, 0x1e },
  9017. -{ 0x00, 0x1f, 0x1f },
  9018. -{ 0x00, 0x20, 0x20 },
  9019. -{ 0x00, 0x21, 0x21 },
  9020. -{ 0x00, 0x22, 0x22 },
  9021. -{ 0x00, 0x23, 0x23 },
  9022. -{ 0x00, 0x24, 0x24 },
  9023. -{ 0x00, 0x25, 0x25 },
  9024. -{ 0x00, 0x26, 0x26 },
  9025. -{ 0x00, 0x27, 0x27 },
  9026. -{ 0x00, 0x28, 0x28 },
  9027. -{ 0x00, 0x29, 0x29 },
  9028. -{ 0x00, 0x2a, 0x2a },
  9029. -{ 0x00, 0x2b, 0x2b },
  9030. -{ 0x00, 0x2c, 0x2c },
  9031. -{ 0x00, 0x2d, 0x2d },
  9032. -{ 0x00, 0x2e, 0x2e },
  9033. -{ 0x00, 0x2f, 0x2f },
  9034. -{ 0x00, 0x30, 0x30 },
  9035. -{ 0x00, 0x31, 0x31 },
  9036. -{ 0x00, 0x32, 0x32 },
  9037. -{ 0x00, 0x33, 0x33 },
  9038. -{ 0x00, 0x34, 0x34 },
  9039. -{ 0x00, 0x35, 0x35 },
  9040. -{ 0x00, 0x36, 0x36 },
  9041. -{ 0x00, 0x37, 0x37 },
  9042. -{ 0x00, 0x38, 0x38 },
  9043. -{ 0x00, 0x39, 0x39 },
  9044. -{ 0x00, 0x3a, 0x3a },
  9045. -{ 0x00, 0x3b, 0x3b },
  9046. -{ 0x00, 0x3c, 0x3c },
  9047. -{ 0x00, 0x3d, 0x3d },
  9048. -{ 0x00, 0x3e, 0x3e },
  9049. -{ 0x00, 0x3f, 0x3f },
  9050. -{ 0x00, 0x40, 0x40 },
  9051. -{ 0x01, 0x61, 0x41 },
  9052. -{ 0x01, 0x62, 0x42 },
  9053. -{ 0x01, 0x63, 0x43 },
  9054. -{ 0x01, 0x64, 0x44 },
  9055. -{ 0x01, 0x65, 0x45 },
  9056. -{ 0x01, 0x66, 0x46 },
  9057. -{ 0x01, 0x67, 0x47 },
  9058. -{ 0x01, 0x68, 0x48 },
  9059. -{ 0x01, 0x69, 0x49 },
  9060. -{ 0x01, 0x6a, 0x4a },
  9061. -{ 0x01, 0x6b, 0x4b },
  9062. -{ 0x01, 0x6c, 0x4c },
  9063. -{ 0x01, 0x6d, 0x4d },
  9064. -{ 0x01, 0x6e, 0x4e },
  9065. -{ 0x01, 0x6f, 0x4f },
  9066. -{ 0x01, 0x70, 0x50 },
  9067. -{ 0x01, 0x71, 0x51 },
  9068. -{ 0x01, 0x72, 0x52 },
  9069. -{ 0x01, 0x73, 0x53 },
  9070. -{ 0x01, 0x74, 0x54 },
  9071. -{ 0x01, 0x75, 0x55 },
  9072. -{ 0x01, 0x76, 0x56 },
  9073. -{ 0x01, 0x77, 0x57 },
  9074. -{ 0x01, 0x78, 0x58 },
  9075. -{ 0x01, 0x79, 0x59 },
  9076. -{ 0x01, 0x7a, 0x5a },
  9077. -{ 0x00, 0x5b, 0x5b },
  9078. -{ 0x00, 0x5c, 0x5c },
  9079. -{ 0x00, 0x5d, 0x5d },
  9080. -{ 0x00, 0x5e, 0x5e },
  9081. -{ 0x00, 0x5f, 0x5f },
  9082. -{ 0x00, 0x60, 0x60 },
  9083. -{ 0x00, 0x61, 0x41 },
  9084. -{ 0x00, 0x62, 0x42 },
  9085. -{ 0x00, 0x63, 0x43 },
  9086. -{ 0x00, 0x64, 0x44 },
  9087. -{ 0x00, 0x65, 0x45 },
  9088. -{ 0x00, 0x66, 0x46 },
  9089. -{ 0x00, 0x67, 0x47 },
  9090. -{ 0x00, 0x68, 0x48 },
  9091. -{ 0x00, 0x69, 0x49 },
  9092. -{ 0x00, 0x6a, 0x4a },
  9093. -{ 0x00, 0x6b, 0x4b },
  9094. -{ 0x00, 0x6c, 0x4c },
  9095. -{ 0x00, 0x6d, 0x4d },
  9096. -{ 0x00, 0x6e, 0x4e },
  9097. -{ 0x00, 0x6f, 0x4f },
  9098. -{ 0x00, 0x70, 0x50 },
  9099. -{ 0x00, 0x71, 0x51 },
  9100. -{ 0x00, 0x72, 0x52 },
  9101. -{ 0x00, 0x73, 0x53 },
  9102. -{ 0x00, 0x74, 0x54 },
  9103. -{ 0x00, 0x75, 0x55 },
  9104. -{ 0x00, 0x76, 0x56 },
  9105. -{ 0x00, 0x77, 0x57 },
  9106. -{ 0x00, 0x78, 0x58 },
  9107. -{ 0x00, 0x79, 0x59 },
  9108. -{ 0x00, 0x7a, 0x5a },
  9109. -{ 0x00, 0x7b, 0x7b },
  9110. -{ 0x00, 0x7c, 0x7c },
  9111. -{ 0x00, 0x7d, 0x7d },
  9112. -{ 0x00, 0x7e, 0x7e },
  9113. -{ 0x00, 0x7f, 0x7f },
  9114. -{ 0x00, 0x80, 0x80 },
  9115. -{ 0x00, 0x81, 0x81 },
  9116. -{ 0x00, 0x82, 0x82 },
  9117. -{ 0x00, 0x83, 0x83 },
  9118. -{ 0x00, 0x84, 0x84 },
  9119. -{ 0x00, 0x85, 0x85 },
  9120. -{ 0x00, 0x86, 0x86 },
  9121. -{ 0x00, 0x87, 0x87 },
  9122. -{ 0x00, 0x88, 0x88 },
  9123. -{ 0x00, 0x89, 0x89 },
  9124. -{ 0x00, 0x8a, 0x8a },
  9125. -{ 0x00, 0x8b, 0x8b },
  9126. -{ 0x00, 0x8c, 0x8c },
  9127. -{ 0x00, 0x8d, 0x8d },
  9128. -{ 0x00, 0x8e, 0x8e },
  9129. -{ 0x00, 0x8f, 0x8f },
  9130. -{ 0x00, 0x90, 0x90 },
  9131. -{ 0x00, 0x91, 0x91 },
  9132. -{ 0x00, 0x92, 0x92 },
  9133. -{ 0x00, 0x93, 0x93 },
  9134. -{ 0x00, 0x94, 0x94 },
  9135. -{ 0x00, 0x95, 0x95 },
  9136. -{ 0x00, 0x96, 0x96 },
  9137. -{ 0x00, 0x97, 0x97 },
  9138. -{ 0x00, 0x98, 0x98 },
  9139. -{ 0x00, 0x99, 0x99 },
  9140. -{ 0x00, 0x9a, 0x9a },
  9141. -{ 0x00, 0x9b, 0x9b },
  9142. -{ 0x00, 0x9c, 0x9c },
  9143. -{ 0x00, 0x9d, 0x9d },
  9144. -{ 0x00, 0x9e, 0x9e },
  9145. -{ 0x00, 0x9f, 0x9f },
  9146. -{ 0x00, 0xa0, 0xa0 },
  9147. -{ 0x01, 0xf1, 0xa1 },
  9148. -{ 0x01, 0xf2, 0xa2 },
  9149. -{ 0x01, 0xf3, 0xa3 },
  9150. -{ 0x01, 0xf4, 0xa4 },
  9151. -{ 0x01, 0xf5, 0xa5 },
  9152. -{ 0x01, 0xf6, 0xa6 },
  9153. -{ 0x01, 0xf7, 0xa7 },
  9154. -{ 0x01, 0xf8, 0xa8 },
  9155. -{ 0x01, 0xf9, 0xa9 },
  9156. -{ 0x01, 0xfa, 0xaa },
  9157. -{ 0x01, 0xfb, 0xab },
  9158. -{ 0x01, 0xfc, 0xac },
  9159. -{ 0x00, 0xad, 0xad },
  9160. -{ 0x01, 0xfe, 0xae },
  9161. -{ 0x01, 0xff, 0xaf },
  9162. -{ 0x01, 0xd0, 0xb0 },
  9163. -{ 0x01, 0xd1, 0xb1 },
  9164. -{ 0x01, 0xd2, 0xb2 },
  9165. -{ 0x01, 0xd3, 0xb3 },
  9166. -{ 0x01, 0xd4, 0xb4 },
  9167. -{ 0x01, 0xd5, 0xb5 },
  9168. -{ 0x01, 0xd6, 0xb6 },
  9169. -{ 0x01, 0xd7, 0xb7 },
  9170. -{ 0x01, 0xd8, 0xb8 },
  9171. -{ 0x01, 0xd9, 0xb9 },
  9172. -{ 0x01, 0xda, 0xba },
  9173. -{ 0x01, 0xdb, 0xbb },
  9174. -{ 0x01, 0xdc, 0xbc },
  9175. -{ 0x01, 0xdd, 0xbd },
  9176. -{ 0x01, 0xde, 0xbe },
  9177. -{ 0x01, 0xdf, 0xbf },
  9178. -{ 0x01, 0xe0, 0xc0 },
  9179. -{ 0x01, 0xe1, 0xc1 },
  9180. -{ 0x01, 0xe2, 0xc2 },
  9181. -{ 0x01, 0xe3, 0xc3 },
  9182. -{ 0x01, 0xe4, 0xc4 },
  9183. -{ 0x01, 0xe5, 0xc5 },
  9184. -{ 0x01, 0xe6, 0xc6 },
  9185. -{ 0x01, 0xe7, 0xc7 },
  9186. -{ 0x01, 0xe8, 0xc8 },
  9187. -{ 0x01, 0xe9, 0xc9 },
  9188. -{ 0x01, 0xea, 0xca },
  9189. -{ 0x01, 0xeb, 0xcb },
  9190. -{ 0x01, 0xec, 0xcc },
  9191. -{ 0x01, 0xed, 0xcd },
  9192. -{ 0x01, 0xee, 0xce },
  9193. -{ 0x01, 0xef, 0xcf },
  9194. -{ 0x00, 0xd0, 0xb0 },
  9195. -{ 0x00, 0xd1, 0xb1 },
  9196. -{ 0x00, 0xd2, 0xb2 },
  9197. -{ 0x00, 0xd3, 0xb3 },
  9198. -{ 0x00, 0xd4, 0xb4 },
  9199. -{ 0x00, 0xd5, 0xb5 },
  9200. -{ 0x00, 0xd6, 0xb6 },
  9201. -{ 0x00, 0xd7, 0xb7 },
  9202. -{ 0x00, 0xd8, 0xb8 },
  9203. -{ 0x00, 0xd9, 0xb9 },
  9204. -{ 0x00, 0xda, 0xba },
  9205. -{ 0x00, 0xdb, 0xbb },
  9206. -{ 0x00, 0xdc, 0xbc },
  9207. -{ 0x00, 0xdd, 0xbd },
  9208. -{ 0x00, 0xde, 0xbe },
  9209. -{ 0x00, 0xdf, 0xbf },
  9210. -{ 0x00, 0xe0, 0xc0 },
  9211. -{ 0x00, 0xe1, 0xc1 },
  9212. -{ 0x00, 0xe2, 0xc2 },
  9213. -{ 0x00, 0xe3, 0xc3 },
  9214. -{ 0x00, 0xe4, 0xc4 },
  9215. -{ 0x00, 0xe5, 0xc5 },
  9216. -{ 0x00, 0xe6, 0xc6 },
  9217. -{ 0x00, 0xe7, 0xc7 },
  9218. -{ 0x00, 0xe8, 0xc8 },
  9219. -{ 0x00, 0xe9, 0xc9 },
  9220. -{ 0x00, 0xea, 0xca },
  9221. -{ 0x00, 0xeb, 0xcb },
  9222. -{ 0x00, 0xec, 0xcc },
  9223. -{ 0x00, 0xed, 0xcd },
  9224. -{ 0x00, 0xee, 0xce },
  9225. -{ 0x00, 0xef, 0xcf },
  9226. -{ 0x00, 0xf0, 0xf0 },
  9227. -{ 0x00, 0xf1, 0xa1 },
  9228. -{ 0x00, 0xf2, 0xa2 },
  9229. -{ 0x00, 0xf3, 0xa3 },
  9230. -{ 0x00, 0xf4, 0xa4 },
  9231. -{ 0x00, 0xf5, 0xa5 },
  9232. -{ 0x00, 0xf6, 0xa6 },
  9233. -{ 0x00, 0xf7, 0xa7 },
  9234. -{ 0x00, 0xf8, 0xa8 },
  9235. -{ 0x00, 0xf9, 0xa9 },
  9236. -{ 0x00, 0xfa, 0xaa },
  9237. -{ 0x00, 0xfb, 0xab },
  9238. -{ 0x00, 0xfc, 0xac },
  9239. -{ 0x00, 0xfd, 0xfd },
  9240. -{ 0x00, 0xfe, 0xae },
  9241. -{ 0x00, 0xff, 0xaf }
  9242. -};
  9243. -
  9244. -static struct cs_info iso6_tbl[] = {
  9245. -{ 0x00, 0x00, 0x00 },
  9246. -{ 0x00, 0x01, 0x01 },
  9247. -{ 0x00, 0x02, 0x02 },
  9248. -{ 0x00, 0x03, 0x03 },
  9249. -{ 0x00, 0x04, 0x04 },
  9250. -{ 0x00, 0x05, 0x05 },
  9251. -{ 0x00, 0x06, 0x06 },
  9252. -{ 0x00, 0x07, 0x07 },
  9253. -{ 0x00, 0x08, 0x08 },
  9254. -{ 0x00, 0x09, 0x09 },
  9255. -{ 0x00, 0x0a, 0x0a },
  9256. -{ 0x00, 0x0b, 0x0b },
  9257. -{ 0x00, 0x0c, 0x0c },
  9258. -{ 0x00, 0x0d, 0x0d },
  9259. -{ 0x00, 0x0e, 0x0e },
  9260. -{ 0x00, 0x0f, 0x0f },
  9261. -{ 0x00, 0x10, 0x10 },
  9262. -{ 0x00, 0x11, 0x11 },
  9263. -{ 0x00, 0x12, 0x12 },
  9264. -{ 0x00, 0x13, 0x13 },
  9265. -{ 0x00, 0x14, 0x14 },
  9266. -{ 0x00, 0x15, 0x15 },
  9267. -{ 0x00, 0x16, 0x16 },
  9268. -{ 0x00, 0x17, 0x17 },
  9269. -{ 0x00, 0x18, 0x18 },
  9270. -{ 0x00, 0x19, 0x19 },
  9271. -{ 0x00, 0x1a, 0x1a },
  9272. -{ 0x00, 0x1b, 0x1b },
  9273. -{ 0x00, 0x1c, 0x1c },
  9274. -{ 0x00, 0x1d, 0x1d },
  9275. -{ 0x00, 0x1e, 0x1e },
  9276. -{ 0x00, 0x1f, 0x1f },
  9277. -{ 0x00, 0x20, 0x20 },
  9278. -{ 0x00, 0x21, 0x21 },
  9279. -{ 0x00, 0x22, 0x22 },
  9280. -{ 0x00, 0x23, 0x23 },
  9281. -{ 0x00, 0x24, 0x24 },
  9282. -{ 0x00, 0x25, 0x25 },
  9283. -{ 0x00, 0x26, 0x26 },
  9284. -{ 0x00, 0x27, 0x27 },
  9285. -{ 0x00, 0x28, 0x28 },
  9286. -{ 0x00, 0x29, 0x29 },
  9287. -{ 0x00, 0x2a, 0x2a },
  9288. -{ 0x00, 0x2b, 0x2b },
  9289. -{ 0x00, 0x2c, 0x2c },
  9290. -{ 0x00, 0x2d, 0x2d },
  9291. -{ 0x00, 0x2e, 0x2e },
  9292. -{ 0x00, 0x2f, 0x2f },
  9293. -{ 0x00, 0x30, 0x30 },
  9294. -{ 0x00, 0x31, 0x31 },
  9295. -{ 0x00, 0x32, 0x32 },
  9296. -{ 0x00, 0x33, 0x33 },
  9297. -{ 0x00, 0x34, 0x34 },
  9298. -{ 0x00, 0x35, 0x35 },
  9299. -{ 0x00, 0x36, 0x36 },
  9300. -{ 0x00, 0x37, 0x37 },
  9301. -{ 0x00, 0x38, 0x38 },
  9302. -{ 0x00, 0x39, 0x39 },
  9303. -{ 0x00, 0x3a, 0x3a },
  9304. -{ 0x00, 0x3b, 0x3b },
  9305. -{ 0x00, 0x3c, 0x3c },
  9306. -{ 0x00, 0x3d, 0x3d },
  9307. -{ 0x00, 0x3e, 0x3e },
  9308. -{ 0x00, 0x3f, 0x3f },
  9309. -{ 0x00, 0x40, 0x40 },
  9310. -{ 0x01, 0x61, 0x41 },
  9311. -{ 0x01, 0x62, 0x42 },
  9312. -{ 0x01, 0x63, 0x43 },
  9313. -{ 0x01, 0x64, 0x44 },
  9314. -{ 0x01, 0x65, 0x45 },
  9315. -{ 0x01, 0x66, 0x46 },
  9316. -{ 0x01, 0x67, 0x47 },
  9317. -{ 0x01, 0x68, 0x48 },
  9318. -{ 0x01, 0x69, 0x49 },
  9319. -{ 0x01, 0x6a, 0x4a },
  9320. -{ 0x01, 0x6b, 0x4b },
  9321. -{ 0x01, 0x6c, 0x4c },
  9322. -{ 0x01, 0x6d, 0x4d },
  9323. -{ 0x01, 0x6e, 0x4e },
  9324. -{ 0x01, 0x6f, 0x4f },
  9325. -{ 0x01, 0x70, 0x50 },
  9326. -{ 0x01, 0x71, 0x51 },
  9327. -{ 0x01, 0x72, 0x52 },
  9328. -{ 0x01, 0x73, 0x53 },
  9329. -{ 0x01, 0x74, 0x54 },
  9330. -{ 0x01, 0x75, 0x55 },
  9331. -{ 0x01, 0x76, 0x56 },
  9332. -{ 0x01, 0x77, 0x57 },
  9333. -{ 0x01, 0x78, 0x58 },
  9334. -{ 0x01, 0x79, 0x59 },
  9335. -{ 0x01, 0x7a, 0x5a },
  9336. -{ 0x00, 0x5b, 0x5b },
  9337. -{ 0x00, 0x5c, 0x5c },
  9338. -{ 0x00, 0x5d, 0x5d },
  9339. -{ 0x00, 0x5e, 0x5e },
  9340. -{ 0x00, 0x5f, 0x5f },
  9341. -{ 0x00, 0x60, 0x60 },
  9342. -{ 0x00, 0x61, 0x41 },
  9343. -{ 0x00, 0x62, 0x42 },
  9344. -{ 0x00, 0x63, 0x43 },
  9345. -{ 0x00, 0x64, 0x44 },
  9346. -{ 0x00, 0x65, 0x45 },
  9347. -{ 0x00, 0x66, 0x46 },
  9348. -{ 0x00, 0x67, 0x47 },
  9349. -{ 0x00, 0x68, 0x48 },
  9350. -{ 0x00, 0x69, 0x49 },
  9351. -{ 0x00, 0x6a, 0x4a },
  9352. -{ 0x00, 0x6b, 0x4b },
  9353. -{ 0x00, 0x6c, 0x4c },
  9354. -{ 0x00, 0x6d, 0x4d },
  9355. -{ 0x00, 0x6e, 0x4e },
  9356. -{ 0x00, 0x6f, 0x4f },
  9357. -{ 0x00, 0x70, 0x50 },
  9358. -{ 0x00, 0x71, 0x51 },
  9359. -{ 0x00, 0x72, 0x52 },
  9360. -{ 0x00, 0x73, 0x53 },
  9361. -{ 0x00, 0x74, 0x54 },
  9362. -{ 0x00, 0x75, 0x55 },
  9363. -{ 0x00, 0x76, 0x56 },
  9364. -{ 0x00, 0x77, 0x57 },
  9365. -{ 0x00, 0x78, 0x58 },
  9366. -{ 0x00, 0x79, 0x59 },
  9367. -{ 0x00, 0x7a, 0x5a },
  9368. -{ 0x00, 0x7b, 0x7b },
  9369. -{ 0x00, 0x7c, 0x7c },
  9370. -{ 0x00, 0x7d, 0x7d },
  9371. -{ 0x00, 0x7e, 0x7e },
  9372. -{ 0x00, 0x7f, 0x7f },
  9373. -{ 0x00, 0x80, 0x80 },
  9374. -{ 0x00, 0x81, 0x81 },
  9375. -{ 0x00, 0x82, 0x82 },
  9376. -{ 0x00, 0x83, 0x83 },
  9377. -{ 0x00, 0x84, 0x84 },
  9378. -{ 0x00, 0x85, 0x85 },
  9379. -{ 0x00, 0x86, 0x86 },
  9380. -{ 0x00, 0x87, 0x87 },
  9381. -{ 0x00, 0x88, 0x88 },
  9382. -{ 0x00, 0x89, 0x89 },
  9383. -{ 0x00, 0x8a, 0x8a },
  9384. -{ 0x00, 0x8b, 0x8b },
  9385. -{ 0x00, 0x8c, 0x8c },
  9386. -{ 0x00, 0x8d, 0x8d },
  9387. -{ 0x00, 0x8e, 0x8e },
  9388. -{ 0x00, 0x8f, 0x8f },
  9389. -{ 0x00, 0x90, 0x90 },
  9390. -{ 0x00, 0x91, 0x91 },
  9391. -{ 0x00, 0x92, 0x92 },
  9392. -{ 0x00, 0x93, 0x93 },
  9393. -{ 0x00, 0x94, 0x94 },
  9394. -{ 0x00, 0x95, 0x95 },
  9395. -{ 0x00, 0x96, 0x96 },
  9396. -{ 0x00, 0x97, 0x97 },
  9397. -{ 0x00, 0x98, 0x98 },
  9398. -{ 0x00, 0x99, 0x99 },
  9399. -{ 0x00, 0x9a, 0x9a },
  9400. -{ 0x00, 0x9b, 0x9b },
  9401. -{ 0x00, 0x9c, 0x9c },
  9402. -{ 0x00, 0x9d, 0x9d },
  9403. -{ 0x00, 0x9e, 0x9e },
  9404. -{ 0x00, 0x9f, 0x9f },
  9405. -{ 0x00, 0xa0, 0xa0 },
  9406. -{ 0x00, 0xa1, 0xa1 },
  9407. -{ 0x00, 0xa2, 0xa2 },
  9408. -{ 0x00, 0xa3, 0xa3 },
  9409. -{ 0x00, 0xa4, 0xa4 },
  9410. -{ 0x00, 0xa5, 0xa5 },
  9411. -{ 0x00, 0xa6, 0xa6 },
  9412. -{ 0x00, 0xa7, 0xa7 },
  9413. -{ 0x00, 0xa8, 0xa8 },
  9414. -{ 0x00, 0xa9, 0xa9 },
  9415. -{ 0x00, 0xaa, 0xaa },
  9416. -{ 0x00, 0xab, 0xab },
  9417. -{ 0x00, 0xac, 0xac },
  9418. -{ 0x00, 0xad, 0xad },
  9419. -{ 0x00, 0xae, 0xae },
  9420. -{ 0x00, 0xaf, 0xaf },
  9421. -{ 0x00, 0xb0, 0xb0 },
  9422. -{ 0x00, 0xb1, 0xb1 },
  9423. -{ 0x00, 0xb2, 0xb2 },
  9424. -{ 0x00, 0xb3, 0xb3 },
  9425. -{ 0x00, 0xb4, 0xb4 },
  9426. -{ 0x00, 0xb5, 0xb5 },
  9427. -{ 0x00, 0xb6, 0xb6 },
  9428. -{ 0x00, 0xb7, 0xb7 },
  9429. -{ 0x00, 0xb8, 0xb8 },
  9430. -{ 0x00, 0xb9, 0xb9 },
  9431. -{ 0x00, 0xba, 0xba },
  9432. -{ 0x00, 0xbb, 0xbb },
  9433. -{ 0x00, 0xbc, 0xbc },
  9434. -{ 0x00, 0xbd, 0xbd },
  9435. -{ 0x00, 0xbe, 0xbe },
  9436. -{ 0x00, 0xbf, 0xbf },
  9437. -{ 0x00, 0xc0, 0xc0 },
  9438. -{ 0x00, 0xc1, 0xc1 },
  9439. -{ 0x00, 0xc2, 0xc2 },
  9440. -{ 0x00, 0xc3, 0xc3 },
  9441. -{ 0x00, 0xc4, 0xc4 },
  9442. -{ 0x00, 0xc5, 0xc5 },
  9443. -{ 0x00, 0xc6, 0xc6 },
  9444. -{ 0x00, 0xc7, 0xc7 },
  9445. -{ 0x00, 0xc8, 0xc8 },
  9446. -{ 0x00, 0xc9, 0xc9 },
  9447. -{ 0x00, 0xca, 0xca },
  9448. -{ 0x00, 0xcb, 0xcb },
  9449. -{ 0x00, 0xcc, 0xcc },
  9450. -{ 0x00, 0xcd, 0xcd },
  9451. -{ 0x00, 0xce, 0xce },
  9452. -{ 0x00, 0xcf, 0xcf },
  9453. -{ 0x00, 0xd0, 0xd0 },
  9454. -{ 0x00, 0xd1, 0xd1 },
  9455. -{ 0x00, 0xd2, 0xd2 },
  9456. -{ 0x00, 0xd3, 0xd3 },
  9457. -{ 0x00, 0xd4, 0xd4 },
  9458. -{ 0x00, 0xd5, 0xd5 },
  9459. -{ 0x00, 0xd6, 0xd6 },
  9460. -{ 0x00, 0xd7, 0xd7 },
  9461. -{ 0x00, 0xd8, 0xd8 },
  9462. -{ 0x00, 0xd9, 0xd9 },
  9463. -{ 0x00, 0xda, 0xda },
  9464. -{ 0x00, 0xdb, 0xdb },
  9465. -{ 0x00, 0xdc, 0xdc },
  9466. -{ 0x00, 0xdd, 0xdd },
  9467. -{ 0x00, 0xde, 0xde },
  9468. -{ 0x00, 0xdf, 0xdf },
  9469. -{ 0x00, 0xe0, 0xe0 },
  9470. -{ 0x00, 0xe1, 0xe1 },
  9471. -{ 0x00, 0xe2, 0xe2 },
  9472. -{ 0x00, 0xe3, 0xe3 },
  9473. -{ 0x00, 0xe4, 0xe4 },
  9474. -{ 0x00, 0xe5, 0xe5 },
  9475. -{ 0x00, 0xe6, 0xe6 },
  9476. -{ 0x00, 0xe7, 0xe7 },
  9477. -{ 0x00, 0xe8, 0xe8 },
  9478. -{ 0x00, 0xe9, 0xe9 },
  9479. -{ 0x00, 0xea, 0xea },
  9480. -{ 0x00, 0xeb, 0xeb },
  9481. -{ 0x00, 0xec, 0xec },
  9482. -{ 0x00, 0xed, 0xed },
  9483. -{ 0x00, 0xee, 0xee },
  9484. -{ 0x00, 0xef, 0xef },
  9485. -{ 0x00, 0xf0, 0xf0 },
  9486. -{ 0x00, 0xf1, 0xf1 },
  9487. -{ 0x00, 0xf2, 0xf2 },
  9488. -{ 0x00, 0xf3, 0xf3 },
  9489. -{ 0x00, 0xf4, 0xf4 },
  9490. -{ 0x00, 0xf5, 0xf5 },
  9491. -{ 0x00, 0xf6, 0xf6 },
  9492. -{ 0x00, 0xf7, 0xf7 },
  9493. -{ 0x00, 0xf8, 0xf8 },
  9494. -{ 0x00, 0xf9, 0xf9 },
  9495. -{ 0x00, 0xfa, 0xfa },
  9496. -{ 0x00, 0xfb, 0xfb },
  9497. -{ 0x00, 0xfc, 0xfc },
  9498. -{ 0x00, 0xfd, 0xfd },
  9499. -{ 0x00, 0xfe, 0xfe },
  9500. -{ 0x00, 0xff, 0xff }
  9501. -};
  9502. -
  9503. -static struct cs_info iso7_tbl[] = {
  9504. -{ 0x00, 0x00, 0x00 },
  9505. -{ 0x00, 0x01, 0x01 },
  9506. -{ 0x00, 0x02, 0x02 },
  9507. -{ 0x00, 0x03, 0x03 },
  9508. -{ 0x00, 0x04, 0x04 },
  9509. -{ 0x00, 0x05, 0x05 },
  9510. -{ 0x00, 0x06, 0x06 },
  9511. -{ 0x00, 0x07, 0x07 },
  9512. -{ 0x00, 0x08, 0x08 },
  9513. -{ 0x00, 0x09, 0x09 },
  9514. -{ 0x00, 0x0a, 0x0a },
  9515. -{ 0x00, 0x0b, 0x0b },
  9516. -{ 0x00, 0x0c, 0x0c },
  9517. -{ 0x00, 0x0d, 0x0d },
  9518. -{ 0x00, 0x0e, 0x0e },
  9519. -{ 0x00, 0x0f, 0x0f },
  9520. -{ 0x00, 0x10, 0x10 },
  9521. -{ 0x00, 0x11, 0x11 },
  9522. -{ 0x00, 0x12, 0x12 },
  9523. -{ 0x00, 0x13, 0x13 },
  9524. -{ 0x00, 0x14, 0x14 },
  9525. -{ 0x00, 0x15, 0x15 },
  9526. -{ 0x00, 0x16, 0x16 },
  9527. -{ 0x00, 0x17, 0x17 },
  9528. -{ 0x00, 0x18, 0x18 },
  9529. -{ 0x00, 0x19, 0x19 },
  9530. -{ 0x00, 0x1a, 0x1a },
  9531. -{ 0x00, 0x1b, 0x1b },
  9532. -{ 0x00, 0x1c, 0x1c },
  9533. -{ 0x00, 0x1d, 0x1d },
  9534. -{ 0x00, 0x1e, 0x1e },
  9535. -{ 0x00, 0x1f, 0x1f },
  9536. -{ 0x00, 0x20, 0x20 },
  9537. -{ 0x00, 0x21, 0x21 },
  9538. -{ 0x00, 0x22, 0x22 },
  9539. -{ 0x00, 0x23, 0x23 },
  9540. -{ 0x00, 0x24, 0x24 },
  9541. -{ 0x00, 0x25, 0x25 },
  9542. -{ 0x00, 0x26, 0x26 },
  9543. -{ 0x00, 0x27, 0x27 },
  9544. -{ 0x00, 0x28, 0x28 },
  9545. -{ 0x00, 0x29, 0x29 },
  9546. -{ 0x00, 0x2a, 0x2a },
  9547. -{ 0x00, 0x2b, 0x2b },
  9548. -{ 0x00, 0x2c, 0x2c },
  9549. -{ 0x00, 0x2d, 0x2d },
  9550. -{ 0x00, 0x2e, 0x2e },
  9551. -{ 0x00, 0x2f, 0x2f },
  9552. -{ 0x00, 0x30, 0x30 },
  9553. -{ 0x00, 0x31, 0x31 },
  9554. -{ 0x00, 0x32, 0x32 },
  9555. -{ 0x00, 0x33, 0x33 },
  9556. -{ 0x00, 0x34, 0x34 },
  9557. -{ 0x00, 0x35, 0x35 },
  9558. -{ 0x00, 0x36, 0x36 },
  9559. -{ 0x00, 0x37, 0x37 },
  9560. -{ 0x00, 0x38, 0x38 },
  9561. -{ 0x00, 0x39, 0x39 },
  9562. -{ 0x00, 0x3a, 0x3a },
  9563. -{ 0x00, 0x3b, 0x3b },
  9564. -{ 0x00, 0x3c, 0x3c },
  9565. -{ 0x00, 0x3d, 0x3d },
  9566. -{ 0x00, 0x3e, 0x3e },
  9567. -{ 0x00, 0x3f, 0x3f },
  9568. -{ 0x00, 0x40, 0x40 },
  9569. -{ 0x01, 0x61, 0x41 },
  9570. -{ 0x01, 0x62, 0x42 },
  9571. -{ 0x01, 0x63, 0x43 },
  9572. -{ 0x01, 0x64, 0x44 },
  9573. -{ 0x01, 0x65, 0x45 },
  9574. -{ 0x01, 0x66, 0x46 },
  9575. -{ 0x01, 0x67, 0x47 },
  9576. -{ 0x01, 0x68, 0x48 },
  9577. -{ 0x01, 0x69, 0x49 },
  9578. -{ 0x01, 0x6a, 0x4a },
  9579. -{ 0x01, 0x6b, 0x4b },
  9580. -{ 0x01, 0x6c, 0x4c },
  9581. -{ 0x01, 0x6d, 0x4d },
  9582. -{ 0x01, 0x6e, 0x4e },
  9583. -{ 0x01, 0x6f, 0x4f },
  9584. -{ 0x01, 0x70, 0x50 },
  9585. -{ 0x01, 0x71, 0x51 },
  9586. -{ 0x01, 0x72, 0x52 },
  9587. -{ 0x01, 0x73, 0x53 },
  9588. -{ 0x01, 0x74, 0x54 },
  9589. -{ 0x01, 0x75, 0x55 },
  9590. -{ 0x01, 0x76, 0x56 },
  9591. -{ 0x01, 0x77, 0x57 },
  9592. -{ 0x01, 0x78, 0x58 },
  9593. -{ 0x01, 0x79, 0x59 },
  9594. -{ 0x01, 0x7a, 0x5a },
  9595. -{ 0x00, 0x5b, 0x5b },
  9596. -{ 0x00, 0x5c, 0x5c },
  9597. -{ 0x00, 0x5d, 0x5d },
  9598. -{ 0x00, 0x5e, 0x5e },
  9599. -{ 0x00, 0x5f, 0x5f },
  9600. -{ 0x00, 0x60, 0x60 },
  9601. -{ 0x00, 0x61, 0x41 },
  9602. -{ 0x00, 0x62, 0x42 },
  9603. -{ 0x00, 0x63, 0x43 },
  9604. -{ 0x00, 0x64, 0x44 },
  9605. -{ 0x00, 0x65, 0x45 },
  9606. -{ 0x00, 0x66, 0x46 },
  9607. -{ 0x00, 0x67, 0x47 },
  9608. -{ 0x00, 0x68, 0x48 },
  9609. -{ 0x00, 0x69, 0x49 },
  9610. -{ 0x00, 0x6a, 0x4a },
  9611. -{ 0x00, 0x6b, 0x4b },
  9612. -{ 0x00, 0x6c, 0x4c },
  9613. -{ 0x00, 0x6d, 0x4d },
  9614. -{ 0x00, 0x6e, 0x4e },
  9615. -{ 0x00, 0x6f, 0x4f },
  9616. -{ 0x00, 0x70, 0x50 },
  9617. -{ 0x00, 0x71, 0x51 },
  9618. -{ 0x00, 0x72, 0x52 },
  9619. -{ 0x00, 0x73, 0x53 },
  9620. -{ 0x00, 0x74, 0x54 },
  9621. -{ 0x00, 0x75, 0x55 },
  9622. -{ 0x00, 0x76, 0x56 },
  9623. -{ 0x00, 0x77, 0x57 },
  9624. -{ 0x00, 0x78, 0x58 },
  9625. -{ 0x00, 0x79, 0x59 },
  9626. -{ 0x00, 0x7a, 0x5a },
  9627. -{ 0x00, 0x7b, 0x7b },
  9628. -{ 0x00, 0x7c, 0x7c },
  9629. -{ 0x00, 0x7d, 0x7d },
  9630. -{ 0x00, 0x7e, 0x7e },
  9631. -{ 0x00, 0x7f, 0x7f },
  9632. -{ 0x00, 0x80, 0x80 },
  9633. -{ 0x00, 0x81, 0x81 },
  9634. -{ 0x00, 0x82, 0x82 },
  9635. -{ 0x00, 0x83, 0x83 },
  9636. -{ 0x00, 0x84, 0x84 },
  9637. -{ 0x00, 0x85, 0x85 },
  9638. -{ 0x00, 0x86, 0x86 },
  9639. -{ 0x00, 0x87, 0x87 },
  9640. -{ 0x00, 0x88, 0x88 },
  9641. -{ 0x00, 0x89, 0x89 },
  9642. -{ 0x00, 0x8a, 0x8a },
  9643. -{ 0x00, 0x8b, 0x8b },
  9644. -{ 0x00, 0x8c, 0x8c },
  9645. -{ 0x00, 0x8d, 0x8d },
  9646. -{ 0x00, 0x8e, 0x8e },
  9647. -{ 0x00, 0x8f, 0x8f },
  9648. -{ 0x00, 0x90, 0x90 },
  9649. -{ 0x00, 0x91, 0x91 },
  9650. -{ 0x00, 0x92, 0x92 },
  9651. -{ 0x00, 0x93, 0x93 },
  9652. -{ 0x00, 0x94, 0x94 },
  9653. -{ 0x00, 0x95, 0x95 },
  9654. -{ 0x00, 0x96, 0x96 },
  9655. -{ 0x00, 0x97, 0x97 },
  9656. -{ 0x00, 0x98, 0x98 },
  9657. -{ 0x00, 0x99, 0x99 },
  9658. -{ 0x00, 0x9a, 0x9a },
  9659. -{ 0x00, 0x9b, 0x9b },
  9660. -{ 0x00, 0x9c, 0x9c },
  9661. -{ 0x00, 0x9d, 0x9d },
  9662. -{ 0x00, 0x9e, 0x9e },
  9663. -{ 0x00, 0x9f, 0x9f },
  9664. -{ 0x00, 0xa0, 0xa0 },
  9665. -{ 0x00, 0xa1, 0xa1 },
  9666. -{ 0x00, 0xa2, 0xa2 },
  9667. -{ 0x00, 0xa3, 0xa3 },
  9668. -{ 0x00, 0xa4, 0xa4 },
  9669. -{ 0x00, 0xa5, 0xa5 },
  9670. -{ 0x00, 0xa6, 0xa6 },
  9671. -{ 0x00, 0xa7, 0xa7 },
  9672. -{ 0x00, 0xa8, 0xa8 },
  9673. -{ 0x00, 0xa9, 0xa9 },
  9674. -{ 0x00, 0xaa, 0xaa },
  9675. -{ 0x00, 0xab, 0xab },
  9676. -{ 0x00, 0xac, 0xac },
  9677. -{ 0x00, 0xad, 0xad },
  9678. -{ 0x00, 0xae, 0xae },
  9679. -{ 0x00, 0xaf, 0xaf },
  9680. -{ 0x00, 0xb0, 0xb0 },
  9681. -{ 0x00, 0xb1, 0xb1 },
  9682. -{ 0x00, 0xb2, 0xb2 },
  9683. -{ 0x00, 0xb3, 0xb3 },
  9684. -{ 0x00, 0xb4, 0xb4 },
  9685. -{ 0x00, 0xb5, 0xb5 },
  9686. -{ 0x01, 0xdc, 0xb6 },
  9687. -{ 0x00, 0xb7, 0xb7 },
  9688. -{ 0x01, 0xdd, 0xb8 },
  9689. -{ 0x01, 0xde, 0xb9 },
  9690. -{ 0x01, 0xdf, 0xba },
  9691. -{ 0x00, 0xbb, 0xbb },
  9692. -{ 0x01, 0xfc, 0xbc },
  9693. -{ 0x00, 0xbd, 0xbd },
  9694. -{ 0x01, 0xfd, 0xbe },
  9695. -{ 0x01, 0xfe, 0xbf },
  9696. -{ 0x00, 0xc0, 0xc0 },
  9697. -{ 0x01, 0xe1, 0xc1 },
  9698. -{ 0x01, 0xe2, 0xc2 },
  9699. -{ 0x01, 0xe3, 0xc3 },
  9700. -{ 0x01, 0xe4, 0xc4 },
  9701. -{ 0x01, 0xe5, 0xc5 },
  9702. -{ 0x01, 0xe6, 0xc6 },
  9703. -{ 0x01, 0xe7, 0xc7 },
  9704. -{ 0x01, 0xe8, 0xc8 },
  9705. -{ 0x01, 0xe9, 0xc9 },
  9706. -{ 0x01, 0xea, 0xca },
  9707. -{ 0x01, 0xeb, 0xcb },
  9708. -{ 0x01, 0xec, 0xcc },
  9709. -{ 0x01, 0xed, 0xcd },
  9710. -{ 0x01, 0xee, 0xce },
  9711. -{ 0x01, 0xef, 0xcf },
  9712. -{ 0x01, 0xf0, 0xd0 },
  9713. -{ 0x01, 0xf1, 0xd1 },
  9714. -{ 0x00, 0xd2, 0xd2 },
  9715. -{ 0x01, 0xf3, 0xd3 },
  9716. -{ 0x01, 0xf4, 0xd4 },
  9717. -{ 0x01, 0xf5, 0xd5 },
  9718. -{ 0x01, 0xf6, 0xd6 },
  9719. -{ 0x01, 0xf7, 0xd7 },
  9720. -{ 0x01, 0xf8, 0xd8 },
  9721. -{ 0x01, 0xf9, 0xd9 },
  9722. -{ 0x01, 0xfa, 0xda },
  9723. -{ 0x01, 0xfb, 0xdb },
  9724. -{ 0x00, 0xdc, 0xb6 },
  9725. -{ 0x00, 0xdd, 0xb8 },
  9726. -{ 0x00, 0xde, 0xb9 },
  9727. -{ 0x00, 0xdf, 0xba },
  9728. -{ 0x00, 0xe0, 0xe0 },
  9729. -{ 0x00, 0xe1, 0xc1 },
  9730. -{ 0x00, 0xe2, 0xc2 },
  9731. -{ 0x00, 0xe3, 0xc3 },
  9732. -{ 0x00, 0xe4, 0xc4 },
  9733. -{ 0x00, 0xe5, 0xc5 },
  9734. -{ 0x00, 0xe6, 0xc6 },
  9735. -{ 0x00, 0xe7, 0xc7 },
  9736. -{ 0x00, 0xe8, 0xc8 },
  9737. -{ 0x00, 0xe9, 0xc9 },
  9738. -{ 0x00, 0xea, 0xca },
  9739. -{ 0x00, 0xeb, 0xcb },
  9740. -{ 0x00, 0xec, 0xcc },
  9741. -{ 0x00, 0xed, 0xcd },
  9742. -{ 0x00, 0xee, 0xce },
  9743. -{ 0x00, 0xef, 0xcf },
  9744. -{ 0x00, 0xf0, 0xd0 },
  9745. -{ 0x00, 0xf1, 0xd1 },
  9746. -{ 0x00, 0xf2, 0xd3 },
  9747. -{ 0x00, 0xf3, 0xd3 },
  9748. -{ 0x00, 0xf4, 0xd4 },
  9749. -{ 0x00, 0xf5, 0xd5 },
  9750. -{ 0x00, 0xf6, 0xd6 },
  9751. -{ 0x00, 0xf7, 0xd7 },
  9752. -{ 0x00, 0xf8, 0xd8 },
  9753. -{ 0x00, 0xf9, 0xd9 },
  9754. -{ 0x00, 0xfa, 0xda },
  9755. -{ 0x00, 0xfb, 0xdb },
  9756. -{ 0x00, 0xfc, 0xbc },
  9757. -{ 0x00, 0xfd, 0xbe },
  9758. -{ 0x00, 0xfe, 0xbf },
  9759. -{ 0x00, 0xff, 0xff }
  9760. -};
  9761. -
  9762. -static struct cs_info iso8_tbl[] = {
  9763. -{ 0x00, 0x00, 0x00 },
  9764. -{ 0x00, 0x01, 0x01 },
  9765. -{ 0x00, 0x02, 0x02 },
  9766. -{ 0x00, 0x03, 0x03 },
  9767. -{ 0x00, 0x04, 0x04 },
  9768. -{ 0x00, 0x05, 0x05 },
  9769. -{ 0x00, 0x06, 0x06 },
  9770. -{ 0x00, 0x07, 0x07 },
  9771. -{ 0x00, 0x08, 0x08 },
  9772. -{ 0x00, 0x09, 0x09 },
  9773. -{ 0x00, 0x0a, 0x0a },
  9774. -{ 0x00, 0x0b, 0x0b },
  9775. -{ 0x00, 0x0c, 0x0c },
  9776. -{ 0x00, 0x0d, 0x0d },
  9777. -{ 0x00, 0x0e, 0x0e },
  9778. -{ 0x00, 0x0f, 0x0f },
  9779. -{ 0x00, 0x10, 0x10 },
  9780. -{ 0x00, 0x11, 0x11 },
  9781. -{ 0x00, 0x12, 0x12 },
  9782. -{ 0x00, 0x13, 0x13 },
  9783. -{ 0x00, 0x14, 0x14 },
  9784. -{ 0x00, 0x15, 0x15 },
  9785. -{ 0x00, 0x16, 0x16 },
  9786. -{ 0x00, 0x17, 0x17 },
  9787. -{ 0x00, 0x18, 0x18 },
  9788. -{ 0x00, 0x19, 0x19 },
  9789. -{ 0x00, 0x1a, 0x1a },
  9790. -{ 0x00, 0x1b, 0x1b },
  9791. -{ 0x00, 0x1c, 0x1c },
  9792. -{ 0x00, 0x1d, 0x1d },
  9793. -{ 0x00, 0x1e, 0x1e },
  9794. -{ 0x00, 0x1f, 0x1f },
  9795. -{ 0x00, 0x20, 0x20 },
  9796. -{ 0x00, 0x21, 0x21 },
  9797. -{ 0x00, 0x22, 0x22 },
  9798. -{ 0x00, 0x23, 0x23 },
  9799. -{ 0x00, 0x24, 0x24 },
  9800. -{ 0x00, 0x25, 0x25 },
  9801. -{ 0x00, 0x26, 0x26 },
  9802. -{ 0x00, 0x27, 0x27 },
  9803. -{ 0x00, 0x28, 0x28 },
  9804. -{ 0x00, 0x29, 0x29 },
  9805. -{ 0x00, 0x2a, 0x2a },
  9806. -{ 0x00, 0x2b, 0x2b },
  9807. -{ 0x00, 0x2c, 0x2c },
  9808. -{ 0x00, 0x2d, 0x2d },
  9809. -{ 0x00, 0x2e, 0x2e },
  9810. -{ 0x00, 0x2f, 0x2f },
  9811. -{ 0x00, 0x30, 0x30 },
  9812. -{ 0x00, 0x31, 0x31 },
  9813. -{ 0x00, 0x32, 0x32 },
  9814. -{ 0x00, 0x33, 0x33 },
  9815. -{ 0x00, 0x34, 0x34 },
  9816. -{ 0x00, 0x35, 0x35 },
  9817. -{ 0x00, 0x36, 0x36 },
  9818. -{ 0x00, 0x37, 0x37 },
  9819. -{ 0x00, 0x38, 0x38 },
  9820. -{ 0x00, 0x39, 0x39 },
  9821. -{ 0x00, 0x3a, 0x3a },
  9822. -{ 0x00, 0x3b, 0x3b },
  9823. -{ 0x00, 0x3c, 0x3c },
  9824. -{ 0x00, 0x3d, 0x3d },
  9825. -{ 0x00, 0x3e, 0x3e },
  9826. -{ 0x00, 0x3f, 0x3f },
  9827. -{ 0x00, 0x40, 0x40 },
  9828. -{ 0x01, 0x61, 0x41 },
  9829. -{ 0x01, 0x62, 0x42 },
  9830. -{ 0x01, 0x63, 0x43 },
  9831. -{ 0x01, 0x64, 0x44 },
  9832. -{ 0x01, 0x65, 0x45 },
  9833. -{ 0x01, 0x66, 0x46 },
  9834. -{ 0x01, 0x67, 0x47 },
  9835. -{ 0x01, 0x68, 0x48 },
  9836. -{ 0x01, 0x69, 0x49 },
  9837. -{ 0x01, 0x6a, 0x4a },
  9838. -{ 0x01, 0x6b, 0x4b },
  9839. -{ 0x01, 0x6c, 0x4c },
  9840. -{ 0x01, 0x6d, 0x4d },
  9841. -{ 0x01, 0x6e, 0x4e },
  9842. -{ 0x01, 0x6f, 0x4f },
  9843. -{ 0x01, 0x70, 0x50 },
  9844. -{ 0x01, 0x71, 0x51 },
  9845. -{ 0x01, 0x72, 0x52 },
  9846. -{ 0x01, 0x73, 0x53 },
  9847. -{ 0x01, 0x74, 0x54 },
  9848. -{ 0x01, 0x75, 0x55 },
  9849. -{ 0x01, 0x76, 0x56 },
  9850. -{ 0x01, 0x77, 0x57 },
  9851. -{ 0x01, 0x78, 0x58 },
  9852. -{ 0x01, 0x79, 0x59 },
  9853. -{ 0x01, 0x7a, 0x5a },
  9854. -{ 0x00, 0x5b, 0x5b },
  9855. -{ 0x00, 0x5c, 0x5c },
  9856. -{ 0x00, 0x5d, 0x5d },
  9857. -{ 0x00, 0x5e, 0x5e },
  9858. -{ 0x00, 0x5f, 0x5f },
  9859. -{ 0x00, 0x60, 0x60 },
  9860. -{ 0x00, 0x61, 0x41 },
  9861. -{ 0x00, 0x62, 0x42 },
  9862. -{ 0x00, 0x63, 0x43 },
  9863. -{ 0x00, 0x64, 0x44 },
  9864. -{ 0x00, 0x65, 0x45 },
  9865. -{ 0x00, 0x66, 0x46 },
  9866. -{ 0x00, 0x67, 0x47 },
  9867. -{ 0x00, 0x68, 0x48 },
  9868. -{ 0x00, 0x69, 0x49 },
  9869. -{ 0x00, 0x6a, 0x4a },
  9870. -{ 0x00, 0x6b, 0x4b },
  9871. -{ 0x00, 0x6c, 0x4c },
  9872. -{ 0x00, 0x6d, 0x4d },
  9873. -{ 0x00, 0x6e, 0x4e },
  9874. -{ 0x00, 0x6f, 0x4f },
  9875. -{ 0x00, 0x70, 0x50 },
  9876. -{ 0x00, 0x71, 0x51 },
  9877. -{ 0x00, 0x72, 0x52 },
  9878. -{ 0x00, 0x73, 0x53 },
  9879. -{ 0x00, 0x74, 0x54 },
  9880. -{ 0x00, 0x75, 0x55 },
  9881. -{ 0x00, 0x76, 0x56 },
  9882. -{ 0x00, 0x77, 0x57 },
  9883. -{ 0x00, 0x78, 0x58 },
  9884. -{ 0x00, 0x79, 0x59 },
  9885. -{ 0x00, 0x7a, 0x5a },
  9886. -{ 0x00, 0x7b, 0x7b },
  9887. -{ 0x00, 0x7c, 0x7c },
  9888. -{ 0x00, 0x7d, 0x7d },
  9889. -{ 0x00, 0x7e, 0x7e },
  9890. -{ 0x00, 0x7f, 0x7f },
  9891. -{ 0x00, 0x80, 0x80 },
  9892. -{ 0x00, 0x81, 0x81 },
  9893. -{ 0x00, 0x82, 0x82 },
  9894. -{ 0x00, 0x83, 0x83 },
  9895. -{ 0x00, 0x84, 0x84 },
  9896. -{ 0x00, 0x85, 0x85 },
  9897. -{ 0x00, 0x86, 0x86 },
  9898. -{ 0x00, 0x87, 0x87 },
  9899. -{ 0x00, 0x88, 0x88 },
  9900. -{ 0x00, 0x89, 0x89 },
  9901. -{ 0x00, 0x8a, 0x8a },
  9902. -{ 0x00, 0x8b, 0x8b },
  9903. -{ 0x00, 0x8c, 0x8c },
  9904. -{ 0x00, 0x8d, 0x8d },
  9905. -{ 0x00, 0x8e, 0x8e },
  9906. -{ 0x00, 0x8f, 0x8f },
  9907. -{ 0x00, 0x90, 0x90 },
  9908. -{ 0x00, 0x91, 0x91 },
  9909. -{ 0x00, 0x92, 0x92 },
  9910. -{ 0x00, 0x93, 0x93 },
  9911. -{ 0x00, 0x94, 0x94 },
  9912. -{ 0x00, 0x95, 0x95 },
  9913. -{ 0x00, 0x96, 0x96 },
  9914. -{ 0x00, 0x97, 0x97 },
  9915. -{ 0x00, 0x98, 0x98 },
  9916. -{ 0x00, 0x99, 0x99 },
  9917. -{ 0x00, 0x9a, 0x9a },
  9918. -{ 0x00, 0x9b, 0x9b },
  9919. -{ 0x00, 0x9c, 0x9c },
  9920. -{ 0x00, 0x9d, 0x9d },
  9921. -{ 0x00, 0x9e, 0x9e },
  9922. -{ 0x00, 0x9f, 0x9f },
  9923. -{ 0x00, 0xa0, 0xa0 },
  9924. -{ 0x00, 0xa1, 0xa1 },
  9925. -{ 0x00, 0xa2, 0xa2 },
  9926. -{ 0x00, 0xa3, 0xa3 },
  9927. -{ 0x00, 0xa4, 0xa4 },
  9928. -{ 0x00, 0xa5, 0xa5 },
  9929. -{ 0x00, 0xa6, 0xa6 },
  9930. -{ 0x00, 0xa7, 0xa7 },
  9931. -{ 0x00, 0xa8, 0xa8 },
  9932. -{ 0x00, 0xa9, 0xa9 },
  9933. -{ 0x00, 0xaa, 0xaa },
  9934. -{ 0x00, 0xab, 0xab },
  9935. -{ 0x00, 0xac, 0xac },
  9936. -{ 0x00, 0xad, 0xad },
  9937. -{ 0x00, 0xae, 0xae },
  9938. -{ 0x00, 0xaf, 0xaf },
  9939. -{ 0x00, 0xb0, 0xb0 },
  9940. -{ 0x00, 0xb1, 0xb1 },
  9941. -{ 0x00, 0xb2, 0xb2 },
  9942. -{ 0x00, 0xb3, 0xb3 },
  9943. -{ 0x00, 0xb4, 0xb4 },
  9944. -{ 0x00, 0xb5, 0xb5 },
  9945. -{ 0x00, 0xb6, 0xb6 },
  9946. -{ 0x00, 0xb7, 0xb7 },
  9947. -{ 0x00, 0xb8, 0xb8 },
  9948. -{ 0x00, 0xb9, 0xb9 },
  9949. -{ 0x00, 0xba, 0xba },
  9950. -{ 0x00, 0xbb, 0xbb },
  9951. -{ 0x00, 0xbc, 0xbc },
  9952. -{ 0x00, 0xbd, 0xbd },
  9953. -{ 0x00, 0xbe, 0xbe },
  9954. -{ 0x00, 0xbf, 0xbf },
  9955. -{ 0x00, 0xc0, 0xc0 },
  9956. -{ 0x00, 0xc1, 0xc1 },
  9957. -{ 0x00, 0xc2, 0xc2 },
  9958. -{ 0x00, 0xc3, 0xc3 },
  9959. -{ 0x00, 0xc4, 0xc4 },
  9960. -{ 0x00, 0xc5, 0xc5 },
  9961. -{ 0x00, 0xc6, 0xc6 },
  9962. -{ 0x00, 0xc7, 0xc7 },
  9963. -{ 0x00, 0xc8, 0xc8 },
  9964. -{ 0x00, 0xc9, 0xc9 },
  9965. -{ 0x00, 0xca, 0xca },
  9966. -{ 0x00, 0xcb, 0xcb },
  9967. -{ 0x00, 0xcc, 0xcc },
  9968. -{ 0x00, 0xcd, 0xcd },
  9969. -{ 0x00, 0xce, 0xce },
  9970. -{ 0x00, 0xcf, 0xcf },
  9971. -{ 0x00, 0xd0, 0xd0 },
  9972. -{ 0x00, 0xd1, 0xd1 },
  9973. -{ 0x00, 0xd2, 0xd2 },
  9974. -{ 0x00, 0xd3, 0xd3 },
  9975. -{ 0x00, 0xd4, 0xd4 },
  9976. -{ 0x00, 0xd5, 0xd5 },
  9977. -{ 0x00, 0xd6, 0xd6 },
  9978. -{ 0x00, 0xd7, 0xd7 },
  9979. -{ 0x00, 0xd8, 0xd8 },
  9980. -{ 0x00, 0xd9, 0xd9 },
  9981. -{ 0x00, 0xda, 0xda },
  9982. -{ 0x00, 0xdb, 0xdb },
  9983. -{ 0x00, 0xdc, 0xdc },
  9984. -{ 0x00, 0xdd, 0xdd },
  9985. -{ 0x00, 0xde, 0xde },
  9986. -{ 0x00, 0xdf, 0xdf },
  9987. -{ 0x00, 0xe0, 0xe0 },
  9988. -{ 0x00, 0xe1, 0xe1 },
  9989. -{ 0x00, 0xe2, 0xe2 },
  9990. -{ 0x00, 0xe3, 0xe3 },
  9991. -{ 0x00, 0xe4, 0xe4 },
  9992. -{ 0x00, 0xe5, 0xe5 },
  9993. -{ 0x00, 0xe6, 0xe6 },
  9994. -{ 0x00, 0xe7, 0xe7 },
  9995. -{ 0x00, 0xe8, 0xe8 },
  9996. -{ 0x00, 0xe9, 0xe9 },
  9997. -{ 0x00, 0xea, 0xea },
  9998. -{ 0x00, 0xeb, 0xeb },
  9999. -{ 0x00, 0xec, 0xec },
  10000. -{ 0x00, 0xed, 0xed },
  10001. -{ 0x00, 0xee, 0xee },
  10002. -{ 0x00, 0xef, 0xef },
  10003. -{ 0x00, 0xf0, 0xf0 },
  10004. -{ 0x00, 0xf1, 0xf1 },
  10005. -{ 0x00, 0xf2, 0xf2 },
  10006. -{ 0x00, 0xf3, 0xf3 },
  10007. -{ 0x00, 0xf4, 0xf4 },
  10008. -{ 0x00, 0xf5, 0xf5 },
  10009. -{ 0x00, 0xf6, 0xf6 },
  10010. -{ 0x00, 0xf7, 0xf7 },
  10011. -{ 0x00, 0xf8, 0xf8 },
  10012. -{ 0x00, 0xf9, 0xf9 },
  10013. -{ 0x00, 0xfa, 0xfa },
  10014. -{ 0x00, 0xfb, 0xfb },
  10015. -{ 0x00, 0xfc, 0xfc },
  10016. -{ 0x00, 0xfd, 0xfd },
  10017. -{ 0x00, 0xfe, 0xfe },
  10018. -{ 0x00, 0xff, 0xff }
  10019. -};
  10020. -
  10021. -static struct cs_info iso9_tbl[] = {
  10022. -{ 0x00, 0x00, 0x00 },
  10023. -{ 0x00, 0x01, 0x01 },
  10024. -{ 0x00, 0x02, 0x02 },
  10025. -{ 0x00, 0x03, 0x03 },
  10026. -{ 0x00, 0x04, 0x04 },
  10027. -{ 0x00, 0x05, 0x05 },
  10028. -{ 0x00, 0x06, 0x06 },
  10029. -{ 0x00, 0x07, 0x07 },
  10030. -{ 0x00, 0x08, 0x08 },
  10031. -{ 0x00, 0x09, 0x09 },
  10032. -{ 0x00, 0x0a, 0x0a },
  10033. -{ 0x00, 0x0b, 0x0b },
  10034. -{ 0x00, 0x0c, 0x0c },
  10035. -{ 0x00, 0x0d, 0x0d },
  10036. -{ 0x00, 0x0e, 0x0e },
  10037. -{ 0x00, 0x0f, 0x0f },
  10038. -{ 0x00, 0x10, 0x10 },
  10039. -{ 0x00, 0x11, 0x11 },
  10040. -{ 0x00, 0x12, 0x12 },
  10041. -{ 0x00, 0x13, 0x13 },
  10042. -{ 0x00, 0x14, 0x14 },
  10043. -{ 0x00, 0x15, 0x15 },
  10044. -{ 0x00, 0x16, 0x16 },
  10045. -{ 0x00, 0x17, 0x17 },
  10046. -{ 0x00, 0x18, 0x18 },
  10047. -{ 0x00, 0x19, 0x19 },
  10048. -{ 0x00, 0x1a, 0x1a },
  10049. -{ 0x00, 0x1b, 0x1b },
  10050. -{ 0x00, 0x1c, 0x1c },
  10051. -{ 0x00, 0x1d, 0x1d },
  10052. -{ 0x00, 0x1e, 0x1e },
  10053. -{ 0x00, 0x1f, 0x1f },
  10054. -{ 0x00, 0x20, 0x20 },
  10055. -{ 0x00, 0x21, 0x21 },
  10056. -{ 0x00, 0x22, 0x22 },
  10057. -{ 0x00, 0x23, 0x23 },
  10058. -{ 0x00, 0x24, 0x24 },
  10059. -{ 0x00, 0x25, 0x25 },
  10060. -{ 0x00, 0x26, 0x26 },
  10061. -{ 0x00, 0x27, 0x27 },
  10062. -{ 0x00, 0x28, 0x28 },
  10063. -{ 0x00, 0x29, 0x29 },
  10064. -{ 0x00, 0x2a, 0x2a },
  10065. -{ 0x00, 0x2b, 0x2b },
  10066. -{ 0x00, 0x2c, 0x2c },
  10067. -{ 0x00, 0x2d, 0x2d },
  10068. -{ 0x00, 0x2e, 0x2e },
  10069. -{ 0x00, 0x2f, 0x2f },
  10070. -{ 0x00, 0x30, 0x30 },
  10071. -{ 0x00, 0x31, 0x31 },
  10072. -{ 0x00, 0x32, 0x32 },
  10073. -{ 0x00, 0x33, 0x33 },
  10074. -{ 0x00, 0x34, 0x34 },
  10075. -{ 0x00, 0x35, 0x35 },
  10076. -{ 0x00, 0x36, 0x36 },
  10077. -{ 0x00, 0x37, 0x37 },
  10078. -{ 0x00, 0x38, 0x38 },
  10079. -{ 0x00, 0x39, 0x39 },
  10080. -{ 0x00, 0x3a, 0x3a },
  10081. -{ 0x00, 0x3b, 0x3b },
  10082. -{ 0x00, 0x3c, 0x3c },
  10083. -{ 0x00, 0x3d, 0x3d },
  10084. -{ 0x00, 0x3e, 0x3e },
  10085. -{ 0x00, 0x3f, 0x3f },
  10086. -{ 0x00, 0x40, 0x40 },
  10087. -{ 0x01, 0x61, 0x41 },
  10088. -{ 0x01, 0x62, 0x42 },
  10089. -{ 0x01, 0x63, 0x43 },
  10090. -{ 0x01, 0x64, 0x44 },
  10091. -{ 0x01, 0x65, 0x45 },
  10092. -{ 0x01, 0x66, 0x46 },
  10093. -{ 0x01, 0x67, 0x47 },
  10094. -{ 0x01, 0x68, 0x48 },
  10095. -{ 0x01, 0xfd, 0x49 },
  10096. -{ 0x01, 0x6a, 0x4a },
  10097. -{ 0x01, 0x6b, 0x4b },
  10098. -{ 0x01, 0x6c, 0x4c },
  10099. -{ 0x01, 0x6d, 0x4d },
  10100. -{ 0x01, 0x6e, 0x4e },
  10101. -{ 0x01, 0x6f, 0x4f },
  10102. -{ 0x01, 0x70, 0x50 },
  10103. -{ 0x01, 0x71, 0x51 },
  10104. -{ 0x01, 0x72, 0x52 },
  10105. -{ 0x01, 0x73, 0x53 },
  10106. -{ 0x01, 0x74, 0x54 },
  10107. -{ 0x01, 0x75, 0x55 },
  10108. -{ 0x01, 0x76, 0x56 },
  10109. -{ 0x01, 0x77, 0x57 },
  10110. -{ 0x01, 0x78, 0x58 },
  10111. -{ 0x01, 0x79, 0x59 },
  10112. -{ 0x01, 0x7a, 0x5a },
  10113. -{ 0x00, 0x5b, 0x5b },
  10114. -{ 0x00, 0x5c, 0x5c },
  10115. -{ 0x00, 0x5d, 0x5d },
  10116. -{ 0x00, 0x5e, 0x5e },
  10117. -{ 0x00, 0x5f, 0x5f },
  10118. -{ 0x00, 0x60, 0x60 },
  10119. -{ 0x00, 0x61, 0x41 },
  10120. -{ 0x00, 0x62, 0x42 },
  10121. -{ 0x00, 0x63, 0x43 },
  10122. -{ 0x00, 0x64, 0x44 },
  10123. -{ 0x00, 0x65, 0x45 },
  10124. -{ 0x00, 0x66, 0x46 },
  10125. -{ 0x00, 0x67, 0x47 },
  10126. -{ 0x00, 0x68, 0x48 },
  10127. -{ 0x00, 0x69, 0xdd },
  10128. -{ 0x00, 0x6a, 0x4a },
  10129. -{ 0x00, 0x6b, 0x4b },
  10130. -{ 0x00, 0x6c, 0x4c },
  10131. -{ 0x00, 0x6d, 0x4d },
  10132. -{ 0x00, 0x6e, 0x4e },
  10133. -{ 0x00, 0x6f, 0x4f },
  10134. -{ 0x00, 0x70, 0x50 },
  10135. -{ 0x00, 0x71, 0x51 },
  10136. -{ 0x00, 0x72, 0x52 },
  10137. -{ 0x00, 0x73, 0x53 },
  10138. -{ 0x00, 0x74, 0x54 },
  10139. -{ 0x00, 0x75, 0x55 },
  10140. -{ 0x00, 0x76, 0x56 },
  10141. -{ 0x00, 0x77, 0x57 },
  10142. -{ 0x00, 0x78, 0x58 },
  10143. -{ 0x00, 0x79, 0x59 },
  10144. -{ 0x00, 0x7a, 0x5a },
  10145. -{ 0x00, 0x7b, 0x7b },
  10146. -{ 0x00, 0x7c, 0x7c },
  10147. -{ 0x00, 0x7d, 0x7d },
  10148. -{ 0x00, 0x7e, 0x7e },
  10149. -{ 0x00, 0x7f, 0x7f },
  10150. -{ 0x00, 0x80, 0x80 },
  10151. -{ 0x00, 0x81, 0x81 },
  10152. -{ 0x00, 0x82, 0x82 },
  10153. -{ 0x00, 0x83, 0x83 },
  10154. -{ 0x00, 0x84, 0x84 },
  10155. -{ 0x00, 0x85, 0x85 },
  10156. -{ 0x00, 0x86, 0x86 },
  10157. -{ 0x00, 0x87, 0x87 },
  10158. -{ 0x00, 0x88, 0x88 },
  10159. -{ 0x00, 0x89, 0x89 },
  10160. -{ 0x00, 0x8a, 0x8a },
  10161. -{ 0x00, 0x8b, 0x8b },
  10162. -{ 0x00, 0x8c, 0x8c },
  10163. -{ 0x00, 0x8d, 0x8d },
  10164. -{ 0x00, 0x8e, 0x8e },
  10165. -{ 0x00, 0x8f, 0x8f },
  10166. -{ 0x00, 0x90, 0x90 },
  10167. -{ 0x00, 0x91, 0x91 },
  10168. -{ 0x00, 0x92, 0x92 },
  10169. -{ 0x00, 0x93, 0x93 },
  10170. -{ 0x00, 0x94, 0x94 },
  10171. -{ 0x00, 0x95, 0x95 },
  10172. -{ 0x00, 0x96, 0x96 },
  10173. -{ 0x00, 0x97, 0x97 },
  10174. -{ 0x00, 0x98, 0x98 },
  10175. -{ 0x00, 0x99, 0x99 },
  10176. -{ 0x00, 0x9a, 0x9a },
  10177. -{ 0x00, 0x9b, 0x9b },
  10178. -{ 0x00, 0x9c, 0x9c },
  10179. -{ 0x00, 0x9d, 0x9d },
  10180. -{ 0x00, 0x9e, 0x9e },
  10181. -{ 0x00, 0x9f, 0x9f },
  10182. -{ 0x00, 0xa0, 0xa0 },
  10183. -{ 0x00, 0xa1, 0xa1 },
  10184. -{ 0x00, 0xa2, 0xa2 },
  10185. -{ 0x00, 0xa3, 0xa3 },
  10186. -{ 0x00, 0xa4, 0xa4 },
  10187. -{ 0x00, 0xa5, 0xa5 },
  10188. -{ 0x00, 0xa6, 0xa6 },
  10189. -{ 0x00, 0xa7, 0xa7 },
  10190. -{ 0x00, 0xa8, 0xa8 },
  10191. -{ 0x00, 0xa9, 0xa9 },
  10192. -{ 0x00, 0xaa, 0xaa },
  10193. -{ 0x00, 0xab, 0xab },
  10194. -{ 0x00, 0xac, 0xac },
  10195. -{ 0x00, 0xad, 0xad },
  10196. -{ 0x00, 0xae, 0xae },
  10197. -{ 0x00, 0xaf, 0xaf },
  10198. -{ 0x00, 0xb0, 0xb0 },
  10199. -{ 0x00, 0xb1, 0xb1 },
  10200. -{ 0x00, 0xb2, 0xb2 },
  10201. -{ 0x00, 0xb3, 0xb3 },
  10202. -{ 0x00, 0xb4, 0xb4 },
  10203. -{ 0x00, 0xb5, 0xb5 },
  10204. -{ 0x00, 0xb6, 0xb6 },
  10205. -{ 0x00, 0xb7, 0xb7 },
  10206. -{ 0x00, 0xb8, 0xb8 },
  10207. -{ 0x00, 0xb9, 0xb9 },
  10208. -{ 0x00, 0xba, 0xba },
  10209. -{ 0x00, 0xbb, 0xbb },
  10210. -{ 0x00, 0xbc, 0xbc },
  10211. -{ 0x00, 0xbd, 0xbd },
  10212. -{ 0x00, 0xbe, 0xbe },
  10213. -{ 0x00, 0xbf, 0xbf },
  10214. -{ 0x01, 0xe0, 0xc0 },
  10215. -{ 0x01, 0xe1, 0xc1 },
  10216. -{ 0x01, 0xe2, 0xc2 },
  10217. -{ 0x01, 0xe3, 0xc3 },
  10218. -{ 0x01, 0xe4, 0xc4 },
  10219. -{ 0x01, 0xe5, 0xc5 },
  10220. -{ 0x01, 0xe6, 0xc6 },
  10221. -{ 0x01, 0xe7, 0xc7 },
  10222. -{ 0x01, 0xe8, 0xc8 },
  10223. -{ 0x01, 0xe9, 0xc9 },
  10224. -{ 0x01, 0xea, 0xca },
  10225. -{ 0x01, 0xeb, 0xcb },
  10226. -{ 0x01, 0xec, 0xcc },
  10227. -{ 0x01, 0xed, 0xcd },
  10228. -{ 0x01, 0xee, 0xce },
  10229. -{ 0x01, 0xef, 0xcf },
  10230. -{ 0x01, 0xf0, 0xd0 },
  10231. -{ 0x01, 0xf1, 0xd1 },
  10232. -{ 0x01, 0xf2, 0xd2 },
  10233. -{ 0x01, 0xf3, 0xd3 },
  10234. -{ 0x01, 0xf4, 0xd4 },
  10235. -{ 0x01, 0xf5, 0xd5 },
  10236. -{ 0x01, 0xf6, 0xd6 },
  10237. -{ 0x00, 0xd7, 0xd7 },
  10238. -{ 0x01, 0xf8, 0xd8 },
  10239. -{ 0x01, 0xf9, 0xd9 },
  10240. -{ 0x01, 0xfa, 0xda },
  10241. -{ 0x01, 0xfb, 0xdb },
  10242. -{ 0x01, 0xfc, 0xdc },
  10243. -{ 0x01, 0x69, 0xdd },
  10244. -{ 0x01, 0xfe, 0xde },
  10245. -{ 0x00, 0xdf, 0xdf },
  10246. -{ 0x00, 0xe0, 0xc0 },
  10247. -{ 0x00, 0xe1, 0xc1 },
  10248. -{ 0x00, 0xe2, 0xc2 },
  10249. -{ 0x00, 0xe3, 0xc3 },
  10250. -{ 0x00, 0xe4, 0xc4 },
  10251. -{ 0x00, 0xe5, 0xc5 },
  10252. -{ 0x00, 0xe6, 0xc6 },
  10253. -{ 0x00, 0xe7, 0xc7 },
  10254. -{ 0x00, 0xe8, 0xc8 },
  10255. -{ 0x00, 0xe9, 0xc9 },
  10256. -{ 0x00, 0xea, 0xca },
  10257. -{ 0x00, 0xeb, 0xcb },
  10258. -{ 0x00, 0xec, 0xcc },
  10259. -{ 0x00, 0xed, 0xcd },
  10260. -{ 0x00, 0xee, 0xce },
  10261. -{ 0x00, 0xef, 0xcf },
  10262. -{ 0x00, 0xf0, 0xd0 },
  10263. -{ 0x00, 0xf1, 0xd1 },
  10264. -{ 0x00, 0xf2, 0xd2 },
  10265. -{ 0x00, 0xf3, 0xd3 },
  10266. -{ 0x00, 0xf4, 0xd4 },
  10267. -{ 0x00, 0xf5, 0xd5 },
  10268. -{ 0x00, 0xf6, 0xd6 },
  10269. -{ 0x00, 0xf7, 0xf7 },
  10270. -{ 0x00, 0xf8, 0xd8 },
  10271. -{ 0x00, 0xf9, 0xd9 },
  10272. -{ 0x00, 0xfa, 0xda },
  10273. -{ 0x00, 0xfb, 0xdb },
  10274. -{ 0x00, 0xfc, 0xdc },
  10275. -{ 0x00, 0xfd, 0x49 },
  10276. -{ 0x00, 0xfe, 0xde },
  10277. -{ 0x00, 0xff, 0xff }
  10278. -};
  10279. -
  10280. -static struct cs_info iso10_tbl[] = {
  10281. -{ 0x00, 0x00, 0x00 },
  10282. -{ 0x00, 0x01, 0x01 },
  10283. -{ 0x00, 0x02, 0x02 },
  10284. -{ 0x00, 0x03, 0x03 },
  10285. -{ 0x00, 0x04, 0x04 },
  10286. -{ 0x00, 0x05, 0x05 },
  10287. -{ 0x00, 0x06, 0x06 },
  10288. -{ 0x00, 0x07, 0x07 },
  10289. -{ 0x00, 0x08, 0x08 },
  10290. -{ 0x00, 0x09, 0x09 },
  10291. -{ 0x00, 0x0a, 0x0a },
  10292. -{ 0x00, 0x0b, 0x0b },
  10293. -{ 0x00, 0x0c, 0x0c },
  10294. -{ 0x00, 0x0d, 0x0d },
  10295. -{ 0x00, 0x0e, 0x0e },
  10296. -{ 0x00, 0x0f, 0x0f },
  10297. -{ 0x00, 0x10, 0x10 },
  10298. -{ 0x00, 0x11, 0x11 },
  10299. -{ 0x00, 0x12, 0x12 },
  10300. -{ 0x00, 0x13, 0x13 },
  10301. -{ 0x00, 0x14, 0x14 },
  10302. -{ 0x00, 0x15, 0x15 },
  10303. -{ 0x00, 0x16, 0x16 },
  10304. -{ 0x00, 0x17, 0x17 },
  10305. -{ 0x00, 0x18, 0x18 },
  10306. -{ 0x00, 0x19, 0x19 },
  10307. -{ 0x00, 0x1a, 0x1a },
  10308. -{ 0x00, 0x1b, 0x1b },
  10309. -{ 0x00, 0x1c, 0x1c },
  10310. -{ 0x00, 0x1d, 0x1d },
  10311. -{ 0x00, 0x1e, 0x1e },
  10312. -{ 0x00, 0x1f, 0x1f },
  10313. -{ 0x00, 0x20, 0x20 },
  10314. -{ 0x00, 0x21, 0x21 },
  10315. -{ 0x00, 0x22, 0x22 },
  10316. -{ 0x00, 0x23, 0x23 },
  10317. -{ 0x00, 0x24, 0x24 },
  10318. -{ 0x00, 0x25, 0x25 },
  10319. -{ 0x00, 0x26, 0x26 },
  10320. -{ 0x00, 0x27, 0x27 },
  10321. -{ 0x00, 0x28, 0x28 },
  10322. -{ 0x00, 0x29, 0x29 },
  10323. -{ 0x00, 0x2a, 0x2a },
  10324. -{ 0x00, 0x2b, 0x2b },
  10325. -{ 0x00, 0x2c, 0x2c },
  10326. -{ 0x00, 0x2d, 0x2d },
  10327. -{ 0x00, 0x2e, 0x2e },
  10328. -{ 0x00, 0x2f, 0x2f },
  10329. -{ 0x00, 0x30, 0x30 },
  10330. -{ 0x00, 0x31, 0x31 },
  10331. -{ 0x00, 0x32, 0x32 },
  10332. -{ 0x00, 0x33, 0x33 },
  10333. -{ 0x00, 0x34, 0x34 },
  10334. -{ 0x00, 0x35, 0x35 },
  10335. -{ 0x00, 0x36, 0x36 },
  10336. -{ 0x00, 0x37, 0x37 },
  10337. -{ 0x00, 0x38, 0x38 },
  10338. -{ 0x00, 0x39, 0x39 },
  10339. -{ 0x00, 0x3a, 0x3a },
  10340. -{ 0x00, 0x3b, 0x3b },
  10341. -{ 0x00, 0x3c, 0x3c },
  10342. -{ 0x00, 0x3d, 0x3d },
  10343. -{ 0x00, 0x3e, 0x3e },
  10344. -{ 0x00, 0x3f, 0x3f },
  10345. -{ 0x00, 0x40, 0x40 },
  10346. -{ 0x01, 0x61, 0x41 },
  10347. -{ 0x01, 0x62, 0x42 },
  10348. -{ 0x01, 0x63, 0x43 },
  10349. -{ 0x01, 0x64, 0x44 },
  10350. -{ 0x01, 0x65, 0x45 },
  10351. -{ 0x01, 0x66, 0x46 },
  10352. -{ 0x01, 0x67, 0x47 },
  10353. -{ 0x01, 0x68, 0x48 },
  10354. -{ 0x01, 0x69, 0x49 },
  10355. -{ 0x01, 0x6a, 0x4a },
  10356. -{ 0x01, 0x6b, 0x4b },
  10357. -{ 0x01, 0x6c, 0x4c },
  10358. -{ 0x01, 0x6d, 0x4d },
  10359. -{ 0x01, 0x6e, 0x4e },
  10360. -{ 0x01, 0x6f, 0x4f },
  10361. -{ 0x01, 0x70, 0x50 },
  10362. -{ 0x01, 0x71, 0x51 },
  10363. -{ 0x01, 0x72, 0x52 },
  10364. -{ 0x01, 0x73, 0x53 },
  10365. -{ 0x01, 0x74, 0x54 },
  10366. -{ 0x01, 0x75, 0x55 },
  10367. -{ 0x01, 0x76, 0x56 },
  10368. -{ 0x01, 0x77, 0x57 },
  10369. -{ 0x01, 0x78, 0x58 },
  10370. -{ 0x01, 0x79, 0x59 },
  10371. -{ 0x01, 0x7a, 0x5a },
  10372. -{ 0x00, 0x5b, 0x5b },
  10373. -{ 0x00, 0x5c, 0x5c },
  10374. -{ 0x00, 0x5d, 0x5d },
  10375. -{ 0x00, 0x5e, 0x5e },
  10376. -{ 0x00, 0x5f, 0x5f },
  10377. -{ 0x00, 0x60, 0x60 },
  10378. -{ 0x00, 0x61, 0x41 },
  10379. -{ 0x00, 0x62, 0x42 },
  10380. -{ 0x00, 0x63, 0x43 },
  10381. -{ 0x00, 0x64, 0x44 },
  10382. -{ 0x00, 0x65, 0x45 },
  10383. -{ 0x00, 0x66, 0x46 },
  10384. -{ 0x00, 0x67, 0x47 },
  10385. -{ 0x00, 0x68, 0x48 },
  10386. -{ 0x00, 0x69, 0x49 },
  10387. -{ 0x00, 0x6a, 0x4a },
  10388. -{ 0x00, 0x6b, 0x4b },
  10389. -{ 0x00, 0x6c, 0x4c },
  10390. -{ 0x00, 0x6d, 0x4d },
  10391. -{ 0x00, 0x6e, 0x4e },
  10392. -{ 0x00, 0x6f, 0x4f },
  10393. -{ 0x00, 0x70, 0x50 },
  10394. -{ 0x00, 0x71, 0x51 },
  10395. -{ 0x00, 0x72, 0x52 },
  10396. -{ 0x00, 0x73, 0x53 },
  10397. -{ 0x00, 0x74, 0x54 },
  10398. -{ 0x00, 0x75, 0x55 },
  10399. -{ 0x00, 0x76, 0x56 },
  10400. -{ 0x00, 0x77, 0x57 },
  10401. -{ 0x00, 0x78, 0x58 },
  10402. -{ 0x00, 0x79, 0x59 },
  10403. -{ 0x00, 0x7a, 0x5a },
  10404. -{ 0x00, 0x7b, 0x7b },
  10405. -{ 0x00, 0x7c, 0x7c },
  10406. -{ 0x00, 0x7d, 0x7d },
  10407. -{ 0x00, 0x7e, 0x7e },
  10408. -{ 0x00, 0x7f, 0x7f },
  10409. -{ 0x00, 0x80, 0x80 },
  10410. -{ 0x00, 0x81, 0x81 },
  10411. -{ 0x00, 0x82, 0x82 },
  10412. -{ 0x00, 0x83, 0x83 },
  10413. -{ 0x00, 0x84, 0x84 },
  10414. -{ 0x00, 0x85, 0x85 },
  10415. -{ 0x00, 0x86, 0x86 },
  10416. -{ 0x00, 0x87, 0x87 },
  10417. -{ 0x00, 0x88, 0x88 },
  10418. -{ 0x00, 0x89, 0x89 },
  10419. -{ 0x00, 0x8a, 0x8a },
  10420. -{ 0x00, 0x8b, 0x8b },
  10421. -{ 0x00, 0x8c, 0x8c },
  10422. -{ 0x00, 0x8d, 0x8d },
  10423. -{ 0x00, 0x8e, 0x8e },
  10424. -{ 0x00, 0x8f, 0x8f },
  10425. -{ 0x00, 0x90, 0x90 },
  10426. -{ 0x00, 0x91, 0x91 },
  10427. -{ 0x00, 0x92, 0x92 },
  10428. -{ 0x00, 0x93, 0x93 },
  10429. -{ 0x00, 0x94, 0x94 },
  10430. -{ 0x00, 0x95, 0x95 },
  10431. -{ 0x00, 0x96, 0x96 },
  10432. -{ 0x00, 0x97, 0x97 },
  10433. -{ 0x00, 0x98, 0x98 },
  10434. -{ 0x00, 0x99, 0x99 },
  10435. -{ 0x00, 0x9a, 0x9a },
  10436. -{ 0x00, 0x9b, 0x9b },
  10437. -{ 0x00, 0x9c, 0x9c },
  10438. -{ 0x00, 0x9d, 0x9d },
  10439. -{ 0x00, 0x9e, 0x9e },
  10440. -{ 0x00, 0x9f, 0x9f },
  10441. -{ 0x00, 0xa0, 0xa0 },
  10442. -{ 0x00, 0xa1, 0xa1 },
  10443. -{ 0x00, 0xa2, 0xa2 },
  10444. -{ 0x00, 0xa3, 0xa3 },
  10445. -{ 0x00, 0xa4, 0xa4 },
  10446. -{ 0x00, 0xa5, 0xa5 },
  10447. -{ 0x00, 0xa6, 0xa6 },
  10448. -{ 0x00, 0xa7, 0xa7 },
  10449. -{ 0x00, 0xa8, 0xa8 },
  10450. -{ 0x00, 0xa9, 0xa9 },
  10451. -{ 0x00, 0xaa, 0xaa },
  10452. -{ 0x00, 0xab, 0xab },
  10453. -{ 0x00, 0xac, 0xac },
  10454. -{ 0x00, 0xad, 0xad },
  10455. -{ 0x00, 0xae, 0xae },
  10456. -{ 0x00, 0xaf, 0xaf },
  10457. -{ 0x00, 0xb0, 0xb0 },
  10458. -{ 0x00, 0xb1, 0xb1 },
  10459. -{ 0x00, 0xb2, 0xb2 },
  10460. -{ 0x00, 0xb3, 0xb3 },
  10461. -{ 0x00, 0xb4, 0xb4 },
  10462. -{ 0x00, 0xb5, 0xb5 },
  10463. -{ 0x00, 0xb6, 0xb6 },
  10464. -{ 0x00, 0xb7, 0xb7 },
  10465. -{ 0x00, 0xb8, 0xb8 },
  10466. -{ 0x00, 0xb9, 0xb9 },
  10467. -{ 0x00, 0xba, 0xba },
  10468. -{ 0x00, 0xbb, 0xbb },
  10469. -{ 0x00, 0xbc, 0xbc },
  10470. -{ 0x00, 0xbd, 0xbd },
  10471. -{ 0x00, 0xbe, 0xbe },
  10472. -{ 0x00, 0xbf, 0xbf },
  10473. -{ 0x00, 0xc0, 0xc0 },
  10474. -{ 0x00, 0xc1, 0xc1 },
  10475. -{ 0x00, 0xc2, 0xc2 },
  10476. -{ 0x00, 0xc3, 0xc3 },
  10477. -{ 0x00, 0xc4, 0xc4 },
  10478. -{ 0x00, 0xc5, 0xc5 },
  10479. -{ 0x00, 0xc6, 0xc6 },
  10480. -{ 0x00, 0xc7, 0xc7 },
  10481. -{ 0x00, 0xc8, 0xc8 },
  10482. -{ 0x00, 0xc9, 0xc9 },
  10483. -{ 0x00, 0xca, 0xca },
  10484. -{ 0x00, 0xcb, 0xcb },
  10485. -{ 0x00, 0xcc, 0xcc },
  10486. -{ 0x00, 0xcd, 0xcd },
  10487. -{ 0x00, 0xce, 0xce },
  10488. -{ 0x00, 0xcf, 0xcf },
  10489. -{ 0x00, 0xd0, 0xd0 },
  10490. -{ 0x00, 0xd1, 0xd1 },
  10491. -{ 0x00, 0xd2, 0xd2 },
  10492. -{ 0x00, 0xd3, 0xd3 },
  10493. -{ 0x00, 0xd4, 0xd4 },
  10494. -{ 0x00, 0xd5, 0xd5 },
  10495. -{ 0x00, 0xd6, 0xd6 },
  10496. -{ 0x00, 0xd7, 0xd7 },
  10497. -{ 0x00, 0xd8, 0xd8 },
  10498. -{ 0x00, 0xd9, 0xd9 },
  10499. -{ 0x00, 0xda, 0xda },
  10500. -{ 0x00, 0xdb, 0xdb },
  10501. -{ 0x00, 0xdc, 0xdc },
  10502. -{ 0x00, 0xdd, 0xdd },
  10503. -{ 0x00, 0xde, 0xde },
  10504. -{ 0x00, 0xdf, 0xdf },
  10505. -{ 0x00, 0xe0, 0xe0 },
  10506. -{ 0x00, 0xe1, 0xe1 },
  10507. -{ 0x00, 0xe2, 0xe2 },
  10508. -{ 0x00, 0xe3, 0xe3 },
  10509. -{ 0x00, 0xe4, 0xe4 },
  10510. -{ 0x00, 0xe5, 0xe5 },
  10511. -{ 0x00, 0xe6, 0xe6 },
  10512. -{ 0x00, 0xe7, 0xe7 },
  10513. -{ 0x00, 0xe8, 0xe8 },
  10514. -{ 0x00, 0xe9, 0xe9 },
  10515. -{ 0x00, 0xea, 0xea },
  10516. -{ 0x00, 0xeb, 0xeb },
  10517. -{ 0x00, 0xec, 0xec },
  10518. -{ 0x00, 0xed, 0xed },
  10519. -{ 0x00, 0xee, 0xee },
  10520. -{ 0x00, 0xef, 0xef },
  10521. -{ 0x00, 0xf0, 0xf0 },
  10522. -{ 0x00, 0xf1, 0xf1 },
  10523. -{ 0x00, 0xf2, 0xf2 },
  10524. -{ 0x00, 0xf3, 0xf3 },
  10525. -{ 0x00, 0xf4, 0xf4 },
  10526. -{ 0x00, 0xf5, 0xf5 },
  10527. -{ 0x00, 0xf6, 0xf6 },
  10528. -{ 0x00, 0xf7, 0xf7 },
  10529. -{ 0x00, 0xf8, 0xf8 },
  10530. -{ 0x00, 0xf9, 0xf9 },
  10531. -{ 0x00, 0xfa, 0xfa },
  10532. -{ 0x00, 0xfb, 0xfb },
  10533. -{ 0x00, 0xfc, 0xfc },
  10534. -{ 0x00, 0xfd, 0xfd },
  10535. -{ 0x00, 0xfe, 0xfe },
  10536. -{ 0x00, 0xff, 0xff }
  10537. -};
  10538. -
  10539. -static struct cs_info koi8r_tbl[] = {
  10540. -{ 0x00, 0x00, 0x00 },
  10541. -{ 0x00, 0x01, 0x01 },
  10542. -{ 0x00, 0x02, 0x02 },
  10543. -{ 0x00, 0x03, 0x03 },
  10544. -{ 0x00, 0x04, 0x04 },
  10545. -{ 0x00, 0x05, 0x05 },
  10546. -{ 0x00, 0x06, 0x06 },
  10547. -{ 0x00, 0x07, 0x07 },
  10548. -{ 0x00, 0x08, 0x08 },
  10549. -{ 0x00, 0x09, 0x09 },
  10550. -{ 0x00, 0x0a, 0x0a },
  10551. -{ 0x00, 0x0b, 0x0b },
  10552. -{ 0x00, 0x0c, 0x0c },
  10553. -{ 0x00, 0x0d, 0x0d },
  10554. -{ 0x00, 0x0e, 0x0e },
  10555. -{ 0x00, 0x0f, 0x0f },
  10556. -{ 0x00, 0x10, 0x10 },
  10557. -{ 0x00, 0x11, 0x11 },
  10558. -{ 0x00, 0x12, 0x12 },
  10559. -{ 0x00, 0x13, 0x13 },
  10560. -{ 0x00, 0x14, 0x14 },
  10561. -{ 0x00, 0x15, 0x15 },
  10562. -{ 0x00, 0x16, 0x16 },
  10563. -{ 0x00, 0x17, 0x17 },
  10564. -{ 0x00, 0x18, 0x18 },
  10565. -{ 0x00, 0x19, 0x19 },
  10566. -{ 0x00, 0x1a, 0x1a },
  10567. -{ 0x00, 0x1b, 0x1b },
  10568. -{ 0x00, 0x1c, 0x1c },
  10569. -{ 0x00, 0x1d, 0x1d },
  10570. -{ 0x00, 0x1e, 0x1e },
  10571. -{ 0x00, 0x1f, 0x1f },
  10572. -{ 0x00, 0x20, 0x20 },
  10573. -{ 0x00, 0x21, 0x21 },
  10574. -{ 0x00, 0x22, 0x22 },
  10575. -{ 0x00, 0x23, 0x23 },
  10576. -{ 0x00, 0x24, 0x24 },
  10577. -{ 0x00, 0x25, 0x25 },
  10578. -{ 0x00, 0x26, 0x26 },
  10579. -{ 0x00, 0x27, 0x27 },
  10580. -{ 0x00, 0x28, 0x28 },
  10581. -{ 0x00, 0x29, 0x29 },
  10582. -{ 0x00, 0x2a, 0x2a },
  10583. -{ 0x00, 0x2b, 0x2b },
  10584. -{ 0x00, 0x2c, 0x2c },
  10585. -{ 0x00, 0x2d, 0x2d },
  10586. -{ 0x00, 0x2e, 0x2e },
  10587. -{ 0x00, 0x2f, 0x2f },
  10588. -{ 0x00, 0x30, 0x30 },
  10589. -{ 0x00, 0x31, 0x31 },
  10590. -{ 0x00, 0x32, 0x32 },
  10591. -{ 0x00, 0x33, 0x33 },
  10592. -{ 0x00, 0x34, 0x34 },
  10593. -{ 0x00, 0x35, 0x35 },
  10594. -{ 0x00, 0x36, 0x36 },
  10595. -{ 0x00, 0x37, 0x37 },
  10596. -{ 0x00, 0x38, 0x38 },
  10597. -{ 0x00, 0x39, 0x39 },
  10598. -{ 0x00, 0x3a, 0x3a },
  10599. -{ 0x00, 0x3b, 0x3b },
  10600. -{ 0x00, 0x3c, 0x3c },
  10601. -{ 0x00, 0x3d, 0x3d },
  10602. -{ 0x00, 0x3e, 0x3e },
  10603. -{ 0x00, 0x3f, 0x3f },
  10604. -{ 0x00, 0x40, 0x40 },
  10605. -{ 0x01, 0x61, 0x41 },
  10606. -{ 0x01, 0x62, 0x42 },
  10607. -{ 0x01, 0x63, 0x43 },
  10608. -{ 0x01, 0x64, 0x44 },
  10609. -{ 0x01, 0x65, 0x45 },
  10610. -{ 0x01, 0x66, 0x46 },
  10611. -{ 0x01, 0x67, 0x47 },
  10612. -{ 0x01, 0x68, 0x48 },
  10613. -{ 0x01, 0x69, 0x49 },
  10614. -{ 0x01, 0x6a, 0x4a },
  10615. -{ 0x01, 0x6b, 0x4b },
  10616. -{ 0x01, 0x6c, 0x4c },
  10617. -{ 0x01, 0x6d, 0x4d },
  10618. -{ 0x01, 0x6e, 0x4e },
  10619. -{ 0x01, 0x6f, 0x4f },
  10620. -{ 0x01, 0x70, 0x50 },
  10621. -{ 0x01, 0x71, 0x51 },
  10622. -{ 0x01, 0x72, 0x52 },
  10623. -{ 0x01, 0x73, 0x53 },
  10624. -{ 0x01, 0x74, 0x54 },
  10625. -{ 0x01, 0x75, 0x55 },
  10626. -{ 0x01, 0x76, 0x56 },
  10627. -{ 0x01, 0x77, 0x57 },
  10628. -{ 0x01, 0x78, 0x58 },
  10629. -{ 0x01, 0x79, 0x59 },
  10630. -{ 0x01, 0x7a, 0x5a },
  10631. -{ 0x00, 0x5b, 0x5b },
  10632. -{ 0x00, 0x5c, 0x5c },
  10633. -{ 0x00, 0x5d, 0x5d },
  10634. -{ 0x00, 0x5e, 0x5e },
  10635. -{ 0x00, 0x5f, 0x5f },
  10636. -{ 0x00, 0x60, 0x60 },
  10637. -{ 0x00, 0x61, 0x41 },
  10638. -{ 0x00, 0x62, 0x42 },
  10639. -{ 0x00, 0x63, 0x43 },
  10640. -{ 0x00, 0x64, 0x44 },
  10641. -{ 0x00, 0x65, 0x45 },
  10642. -{ 0x00, 0x66, 0x46 },
  10643. -{ 0x00, 0x67, 0x47 },
  10644. -{ 0x00, 0x68, 0x48 },
  10645. -{ 0x00, 0x69, 0x49 },
  10646. -{ 0x00, 0x6a, 0x4a },
  10647. -{ 0x00, 0x6b, 0x4b },
  10648. -{ 0x00, 0x6c, 0x4c },
  10649. -{ 0x00, 0x6d, 0x4d },
  10650. -{ 0x00, 0x6e, 0x4e },
  10651. -{ 0x00, 0x6f, 0x4f },
  10652. -{ 0x00, 0x70, 0x50 },
  10653. -{ 0x00, 0x71, 0x51 },
  10654. -{ 0x00, 0x72, 0x52 },
  10655. -{ 0x00, 0x73, 0x53 },
  10656. -{ 0x00, 0x74, 0x54 },
  10657. -{ 0x00, 0x75, 0x55 },
  10658. -{ 0x00, 0x76, 0x56 },
  10659. -{ 0x00, 0x77, 0x57 },
  10660. -{ 0x00, 0x78, 0x58 },
  10661. -{ 0x00, 0x79, 0x59 },
  10662. -{ 0x00, 0x7a, 0x5a },
  10663. -{ 0x00, 0x7b, 0x7b },
  10664. -{ 0x00, 0x7c, 0x7c },
  10665. -{ 0x00, 0x7d, 0x7d },
  10666. -{ 0x00, 0x7e, 0x7e },
  10667. -{ 0x00, 0x7f, 0x7f },
  10668. -{ 0x00, 0x80, 0x80 },
  10669. -{ 0x00, 0x81, 0x81 },
  10670. -{ 0x00, 0x82, 0x82 },
  10671. -{ 0x00, 0x83, 0x83 },
  10672. -{ 0x00, 0x84, 0x84 },
  10673. -{ 0x00, 0x85, 0x85 },
  10674. -{ 0x00, 0x86, 0x86 },
  10675. -{ 0x00, 0x87, 0x87 },
  10676. -{ 0x00, 0x88, 0x88 },
  10677. -{ 0x00, 0x89, 0x89 },
  10678. -{ 0x00, 0x8a, 0x8a },
  10679. -{ 0x00, 0x8b, 0x8b },
  10680. -{ 0x00, 0x8c, 0x8c },
  10681. -{ 0x00, 0x8d, 0x8d },
  10682. -{ 0x00, 0x8e, 0x8e },
  10683. -{ 0x00, 0x8f, 0x8f },
  10684. -{ 0x00, 0x90, 0x90 },
  10685. -{ 0x00, 0x91, 0x91 },
  10686. -{ 0x00, 0x92, 0x92 },
  10687. -{ 0x00, 0x93, 0x93 },
  10688. -{ 0x00, 0x94, 0x94 },
  10689. -{ 0x00, 0x95, 0x95 },
  10690. -{ 0x00, 0x96, 0x96 },
  10691. -{ 0x00, 0x97, 0x97 },
  10692. -{ 0x00, 0x98, 0x98 },
  10693. -{ 0x00, 0x99, 0x99 },
  10694. -{ 0x00, 0x9a, 0x9a },
  10695. -{ 0x00, 0x9b, 0x9b },
  10696. -{ 0x00, 0x9c, 0x9c },
  10697. -{ 0x00, 0x9d, 0x9d },
  10698. -{ 0x00, 0x9e, 0x9e },
  10699. -{ 0x00, 0x9f, 0x9f },
  10700. -{ 0x00, 0xa0, 0xa0 },
  10701. -{ 0x00, 0xa1, 0xa1 },
  10702. -{ 0x00, 0xa2, 0xa2 },
  10703. -{ 0x00, 0xa3, 0xb3 },
  10704. -{ 0x00, 0xa4, 0xa4 },
  10705. -{ 0x00, 0xa5, 0xa5 },
  10706. -{ 0x00, 0xa6, 0xa6 },
  10707. -{ 0x00, 0xa7, 0xa7 },
  10708. -{ 0x00, 0xa8, 0xa8 },
  10709. -{ 0x00, 0xa9, 0xa9 },
  10710. -{ 0x00, 0xaa, 0xaa },
  10711. -{ 0x00, 0xab, 0xab },
  10712. -{ 0x00, 0xac, 0xac },
  10713. -{ 0x00, 0xad, 0xad },
  10714. -{ 0x00, 0xae, 0xae },
  10715. -{ 0x00, 0xaf, 0xaf },
  10716. -{ 0x00, 0xb0, 0xb0 },
  10717. -{ 0x00, 0xb1, 0xb1 },
  10718. -{ 0x00, 0xb2, 0xb2 },
  10719. -{ 0x01, 0xa3, 0xb3 },
  10720. -{ 0x00, 0xb4, 0xb4 },
  10721. -{ 0x00, 0xb5, 0xb5 },
  10722. -{ 0x00, 0xb6, 0xb6 },
  10723. -{ 0x00, 0xb7, 0xb7 },
  10724. -{ 0x00, 0xb8, 0xb8 },
  10725. -{ 0x00, 0xb9, 0xb9 },
  10726. -{ 0x00, 0xba, 0xba },
  10727. -{ 0x00, 0xbb, 0xbb },
  10728. -{ 0x00, 0xbc, 0xbc },
  10729. -{ 0x00, 0xbd, 0xbd },
  10730. -{ 0x00, 0xbe, 0xbe },
  10731. -{ 0x00, 0xbf, 0xbf },
  10732. -{ 0x00, 0xc0, 0xe0 },
  10733. -{ 0x00, 0xc1, 0xe1 },
  10734. -{ 0x00, 0xc2, 0xe2 },
  10735. -{ 0x00, 0xc3, 0xe3 },
  10736. -{ 0x00, 0xc4, 0xe4 },
  10737. -{ 0x00, 0xc5, 0xe5 },
  10738. -{ 0x00, 0xc6, 0xe6 },
  10739. -{ 0x00, 0xc7, 0xe7 },
  10740. -{ 0x00, 0xc8, 0xe8 },
  10741. -{ 0x00, 0xc9, 0xe9 },
  10742. -{ 0x00, 0xca, 0xea },
  10743. -{ 0x00, 0xcb, 0xeb },
  10744. -{ 0x00, 0xcc, 0xec },
  10745. -{ 0x00, 0xcd, 0xed },
  10746. -{ 0x00, 0xce, 0xee },
  10747. -{ 0x00, 0xcf, 0xef },
  10748. -{ 0x00, 0xd0, 0xf0 },
  10749. -{ 0x00, 0xd1, 0xf1 },
  10750. -{ 0x00, 0xd2, 0xf2 },
  10751. -{ 0x00, 0xd3, 0xf3 },
  10752. -{ 0x00, 0xd4, 0xf4 },
  10753. -{ 0x00, 0xd5, 0xf5 },
  10754. -{ 0x00, 0xd6, 0xf6 },
  10755. -{ 0x00, 0xd7, 0xf7 },
  10756. -{ 0x00, 0xd8, 0xf8 },
  10757. -{ 0x00, 0xd9, 0xf9 },
  10758. -{ 0x00, 0xda, 0xfa },
  10759. -{ 0x00, 0xdb, 0xfb },
  10760. -{ 0x00, 0xdc, 0xfc },
  10761. -{ 0x00, 0xdd, 0xfd },
  10762. -{ 0x00, 0xde, 0xfe },
  10763. -{ 0x00, 0xdf, 0xff },
  10764. -{ 0x01, 0xc0, 0xe0 },
  10765. -{ 0x01, 0xc1, 0xe1 },
  10766. -{ 0x01, 0xc2, 0xe2 },
  10767. -{ 0x01, 0xc3, 0xe3 },
  10768. -{ 0x01, 0xc4, 0xe4 },
  10769. -{ 0x01, 0xc5, 0xe5 },
  10770. -{ 0x01, 0xc6, 0xe6 },
  10771. -{ 0x01, 0xc7, 0xe7 },
  10772. -{ 0x01, 0xc8, 0xe8 },
  10773. -{ 0x01, 0xc9, 0xe9 },
  10774. -{ 0x01, 0xca, 0xea },
  10775. -{ 0x01, 0xcb, 0xeb },
  10776. -{ 0x01, 0xcc, 0xec },
  10777. -{ 0x01, 0xcd, 0xed },
  10778. -{ 0x01, 0xce, 0xee },
  10779. -{ 0x01, 0xcf, 0xef },
  10780. -{ 0x01, 0xd0, 0xf0 },
  10781. -{ 0x01, 0xd1, 0xf1 },
  10782. -{ 0x01, 0xd2, 0xf2 },
  10783. -{ 0x01, 0xd3, 0xf3 },
  10784. -{ 0x01, 0xd4, 0xf4 },
  10785. -{ 0x01, 0xd5, 0xf5 },
  10786. -{ 0x01, 0xd6, 0xf6 },
  10787. -{ 0x01, 0xd7, 0xf7 },
  10788. -{ 0x01, 0xd8, 0xf8 },
  10789. -{ 0x01, 0xd9, 0xf9 },
  10790. -{ 0x01, 0xda, 0xfa },
  10791. -{ 0x01, 0xdb, 0xfb },
  10792. -{ 0x01, 0xdc, 0xfc },
  10793. -{ 0x01, 0xdd, 0xfd },
  10794. -{ 0x01, 0xde, 0xfe },
  10795. -{ 0x01, 0xdf, 0xff }
  10796. -};
  10797. -
  10798. -static struct cs_info koi8u_tbl[] = {
  10799. -{ 0x00, 0x00, 0x00 },
  10800. -{ 0x00, 0x01, 0x01 },
  10801. -{ 0x00, 0x02, 0x02 },
  10802. -{ 0x00, 0x03, 0x03 },
  10803. -{ 0x00, 0x04, 0x04 },
  10804. -{ 0x00, 0x05, 0x05 },
  10805. -{ 0x00, 0x06, 0x06 },
  10806. -{ 0x00, 0x07, 0x07 },
  10807. -{ 0x00, 0x08, 0x08 },
  10808. -{ 0x00, 0x09, 0x09 },
  10809. -{ 0x00, 0x0a, 0x0a },
  10810. -{ 0x00, 0x0b, 0x0b },
  10811. -{ 0x00, 0x0c, 0x0c },
  10812. -{ 0x00, 0x0d, 0x0d },
  10813. -{ 0x00, 0x0e, 0x0e },
  10814. -{ 0x00, 0x0f, 0x0f },
  10815. -{ 0x00, 0x10, 0x10 },
  10816. -{ 0x00, 0x11, 0x11 },
  10817. -{ 0x00, 0x12, 0x12 },
  10818. -{ 0x00, 0x13, 0x13 },
  10819. -{ 0x00, 0x14, 0x14 },
  10820. -{ 0x00, 0x15, 0x15 },
  10821. -{ 0x00, 0x16, 0x16 },
  10822. -{ 0x00, 0x17, 0x17 },
  10823. -{ 0x00, 0x18, 0x18 },
  10824. -{ 0x00, 0x19, 0x19 },
  10825. -{ 0x00, 0x1a, 0x1a },
  10826. -{ 0x00, 0x1b, 0x1b },
  10827. -{ 0x00, 0x1c, 0x1c },
  10828. -{ 0x00, 0x1d, 0x1d },
  10829. -{ 0x00, 0x1e, 0x1e },
  10830. -{ 0x00, 0x1f, 0x1f },
  10831. -{ 0x00, 0x20, 0x20 },
  10832. -{ 0x00, 0x21, 0x21 },
  10833. -{ 0x00, 0x22, 0x22 },
  10834. -{ 0x00, 0x23, 0x23 },
  10835. -{ 0x00, 0x24, 0x24 },
  10836. -{ 0x00, 0x25, 0x25 },
  10837. -{ 0x00, 0x26, 0x26 },
  10838. -{ 0x00, 0x27, 0x27 },
  10839. -{ 0x00, 0x28, 0x28 },
  10840. -{ 0x00, 0x29, 0x29 },
  10841. -{ 0x00, 0x2a, 0x2a },
  10842. -{ 0x00, 0x2b, 0x2b },
  10843. -{ 0x00, 0x2c, 0x2c },
  10844. -{ 0x00, 0x2d, 0x2d },
  10845. -{ 0x00, 0x2e, 0x2e },
  10846. -{ 0x00, 0x2f, 0x2f },
  10847. -{ 0x00, 0x30, 0x30 },
  10848. -{ 0x00, 0x31, 0x31 },
  10849. -{ 0x00, 0x32, 0x32 },
  10850. -{ 0x00, 0x33, 0x33 },
  10851. -{ 0x00, 0x34, 0x34 },
  10852. -{ 0x00, 0x35, 0x35 },
  10853. -{ 0x00, 0x36, 0x36 },
  10854. -{ 0x00, 0x37, 0x37 },
  10855. -{ 0x00, 0x38, 0x38 },
  10856. -{ 0x00, 0x39, 0x39 },
  10857. -{ 0x00, 0x3a, 0x3a },
  10858. -{ 0x00, 0x3b, 0x3b },
  10859. -{ 0x00, 0x3c, 0x3c },
  10860. -{ 0x00, 0x3d, 0x3d },
  10861. -{ 0x00, 0x3e, 0x3e },
  10862. -{ 0x00, 0x3f, 0x3f },
  10863. -{ 0x00, 0x40, 0x40 },
  10864. -{ 0x01, 0x61, 0x41 },
  10865. -{ 0x01, 0x62, 0x42 },
  10866. -{ 0x01, 0x63, 0x43 },
  10867. -{ 0x01, 0x64, 0x44 },
  10868. -{ 0x01, 0x65, 0x45 },
  10869. -{ 0x01, 0x66, 0x46 },
  10870. -{ 0x01, 0x67, 0x47 },
  10871. -{ 0x01, 0x68, 0x48 },
  10872. -{ 0x01, 0x69, 0x49 },
  10873. -{ 0x01, 0x6a, 0x4a },
  10874. -{ 0x01, 0x6b, 0x4b },
  10875. -{ 0x01, 0x6c, 0x4c },
  10876. -{ 0x01, 0x6d, 0x4d },
  10877. -{ 0x01, 0x6e, 0x4e },
  10878. -{ 0x01, 0x6f, 0x4f },
  10879. -{ 0x01, 0x70, 0x50 },
  10880. -{ 0x01, 0x71, 0x51 },
  10881. -{ 0x01, 0x72, 0x52 },
  10882. -{ 0x01, 0x73, 0x53 },
  10883. -{ 0x01, 0x74, 0x54 },
  10884. -{ 0x01, 0x75, 0x55 },
  10885. -{ 0x01, 0x76, 0x56 },
  10886. -{ 0x01, 0x77, 0x57 },
  10887. -{ 0x01, 0x78, 0x58 },
  10888. -{ 0x01, 0x79, 0x59 },
  10889. -{ 0x01, 0x7a, 0x5a },
  10890. -{ 0x00, 0x5b, 0x5b },
  10891. -{ 0x00, 0x5c, 0x5c },
  10892. -{ 0x00, 0x5d, 0x5d },
  10893. -{ 0x00, 0x5e, 0x5e },
  10894. -{ 0x00, 0x5f, 0x5f },
  10895. -{ 0x00, 0x60, 0x60 },
  10896. -{ 0x00, 0x61, 0x41 },
  10897. -{ 0x00, 0x62, 0x42 },
  10898. -{ 0x00, 0x63, 0x43 },
  10899. -{ 0x00, 0x64, 0x44 },
  10900. -{ 0x00, 0x65, 0x45 },
  10901. -{ 0x00, 0x66, 0x46 },
  10902. -{ 0x00, 0x67, 0x47 },
  10903. -{ 0x00, 0x68, 0x48 },
  10904. -{ 0x00, 0x69, 0x49 },
  10905. -{ 0x00, 0x6a, 0x4a },
  10906. -{ 0x00, 0x6b, 0x4b },
  10907. -{ 0x00, 0x6c, 0x4c },
  10908. -{ 0x00, 0x6d, 0x4d },
  10909. -{ 0x00, 0x6e, 0x4e },
  10910. -{ 0x00, 0x6f, 0x4f },
  10911. -{ 0x00, 0x70, 0x50 },
  10912. -{ 0x00, 0x71, 0x51 },
  10913. -{ 0x00, 0x72, 0x52 },
  10914. -{ 0x00, 0x73, 0x53 },
  10915. -{ 0x00, 0x74, 0x54 },
  10916. -{ 0x00, 0x75, 0x55 },
  10917. -{ 0x00, 0x76, 0x56 },
  10918. -{ 0x00, 0x77, 0x57 },
  10919. -{ 0x00, 0x78, 0x58 },
  10920. -{ 0x00, 0x79, 0x59 },
  10921. -{ 0x00, 0x7a, 0x5a },
  10922. -{ 0x00, 0x7b, 0x7b },
  10923. -{ 0x00, 0x7c, 0x7c },
  10924. -{ 0x00, 0x7d, 0x7d },
  10925. -{ 0x00, 0x7e, 0x7e },
  10926. -{ 0x00, 0x7f, 0x7f },
  10927. -{ 0x00, 0x80, 0x80 },
  10928. -{ 0x00, 0x81, 0x81 },
  10929. -{ 0x00, 0x82, 0x82 },
  10930. -{ 0x00, 0x83, 0x83 },
  10931. -{ 0x00, 0x84, 0x84 },
  10932. -{ 0x00, 0x85, 0x85 },
  10933. -{ 0x00, 0x86, 0x86 },
  10934. -{ 0x00, 0x87, 0x87 },
  10935. -{ 0x00, 0x88, 0x88 },
  10936. -{ 0x00, 0x89, 0x89 },
  10937. -{ 0x00, 0x8a, 0x8a },
  10938. -{ 0x00, 0x8b, 0x8b },
  10939. -{ 0x00, 0x8c, 0x8c },
  10940. -{ 0x00, 0x8d, 0x8d },
  10941. -{ 0x00, 0x8e, 0x8e },
  10942. -{ 0x00, 0x8f, 0x8f },
  10943. -{ 0x00, 0x90, 0x90 },
  10944. -{ 0x00, 0x91, 0x91 },
  10945. -{ 0x00, 0x92, 0x92 },
  10946. -{ 0x00, 0x93, 0x93 },
  10947. -{ 0x00, 0x94, 0x94 },
  10948. -{ 0x00, 0x95, 0x95 },
  10949. -{ 0x00, 0x96, 0x96 },
  10950. -{ 0x00, 0x97, 0x97 },
  10951. -{ 0x00, 0x98, 0x98 },
  10952. -{ 0x00, 0x99, 0x99 },
  10953. -{ 0x00, 0x9a, 0x9a },
  10954. -{ 0x00, 0x9b, 0x9b },
  10955. -{ 0x00, 0x9c, 0x9c },
  10956. -{ 0x00, 0x9d, 0x9d },
  10957. -{ 0x00, 0x9e, 0x9e },
  10958. -{ 0x00, 0x9f, 0x9f },
  10959. -{ 0x00, 0xa0, 0xa0 },
  10960. -{ 0x00, 0xa1, 0xa1 },
  10961. -{ 0x00, 0xa2, 0xa2 },
  10962. -{ 0x00, 0xa3, 0xb3 },
  10963. -{ 0x00, 0xa4, 0xb4 }, /* ie */
  10964. -{ 0x00, 0xa5, 0xa5 },
  10965. -{ 0x00, 0xa6, 0xb6 }, /* i */
  10966. -{ 0x00, 0xa7, 0xb7 }, /* ii */
  10967. -{ 0x00, 0xa8, 0xa8 },
  10968. -{ 0x00, 0xa9, 0xa9 },
  10969. -{ 0x00, 0xaa, 0xaa },
  10970. -{ 0x00, 0xab, 0xab },
  10971. -{ 0x00, 0xac, 0xac },
  10972. -{ 0x00, 0xad, 0xbd }, /* g'' */
  10973. -{ 0x00, 0xae, 0xae },
  10974. -{ 0x00, 0xaf, 0xaf },
  10975. -{ 0x00, 0xb0, 0xb0 },
  10976. -{ 0x00, 0xb1, 0xb1 },
  10977. -{ 0x00, 0xb2, 0xb2 },
  10978. -{ 0x01, 0xa3, 0xb3 },
  10979. -{ 0x00, 0xb4, 0xb4 }, /* IE */
  10980. -{ 0x00, 0xb5, 0xb5 },
  10981. -{ 0x00, 0xb6, 0xb6 }, /* I */
  10982. -{ 0x00, 0xb7, 0xb7 }, /* II */
  10983. -{ 0x00, 0xb8, 0xb8 },
  10984. -{ 0x00, 0xb9, 0xb9 },
  10985. -{ 0x00, 0xba, 0xba },
  10986. -{ 0x00, 0xbb, 0xbb },
  10987. -{ 0x00, 0xbc, 0xbc },
  10988. -{ 0x00, 0xbd, 0xbd },
  10989. -{ 0x00, 0xbe, 0xbe },
  10990. -{ 0x00, 0xbf, 0xbf },
  10991. -{ 0x00, 0xc0, 0xe0 },
  10992. -{ 0x00, 0xc1, 0xe1 },
  10993. -{ 0x00, 0xc2, 0xe2 },
  10994. -{ 0x00, 0xc3, 0xe3 },
  10995. -{ 0x00, 0xc4, 0xe4 },
  10996. -{ 0x00, 0xc5, 0xe5 },
  10997. -{ 0x00, 0xc6, 0xe6 },
  10998. -{ 0x00, 0xc7, 0xe7 },
  10999. -{ 0x00, 0xc8, 0xe8 },
  11000. -{ 0x00, 0xc9, 0xe9 },
  11001. -{ 0x00, 0xca, 0xea },
  11002. -{ 0x00, 0xcb, 0xeb },
  11003. -{ 0x00, 0xcc, 0xec },
  11004. -{ 0x00, 0xcd, 0xed },
  11005. -{ 0x00, 0xce, 0xee },
  11006. -{ 0x00, 0xcf, 0xef },
  11007. -{ 0x00, 0xd0, 0xf0 },
  11008. -{ 0x00, 0xd1, 0xf1 },
  11009. -{ 0x00, 0xd2, 0xf2 },
  11010. -{ 0x00, 0xd3, 0xf3 },
  11011. -{ 0x00, 0xd4, 0xf4 },
  11012. -{ 0x00, 0xd5, 0xf5 },
  11013. -{ 0x00, 0xd6, 0xf6 },
  11014. -{ 0x00, 0xd7, 0xf7 },
  11015. -{ 0x00, 0xd8, 0xf8 },
  11016. -{ 0x00, 0xd9, 0xf9 },
  11017. -{ 0x00, 0xda, 0xfa },
  11018. -{ 0x00, 0xdb, 0xfb },
  11019. -{ 0x00, 0xdc, 0xfc },
  11020. -{ 0x00, 0xdd, 0xfd },
  11021. -{ 0x00, 0xde, 0xfe },
  11022. -{ 0x00, 0xdf, 0xff },
  11023. -{ 0x01, 0xc0, 0xe0 },
  11024. -{ 0x01, 0xc1, 0xe1 },
  11025. -{ 0x01, 0xc2, 0xe2 },
  11026. -{ 0x01, 0xc3, 0xe3 },
  11027. -{ 0x01, 0xc4, 0xe4 },
  11028. -{ 0x01, 0xc5, 0xe5 },
  11029. -{ 0x01, 0xc6, 0xe6 },
  11030. -{ 0x01, 0xc7, 0xe7 },
  11031. -{ 0x01, 0xc8, 0xe8 },
  11032. -{ 0x01, 0xc9, 0xe9 },
  11033. -{ 0x01, 0xca, 0xea },
  11034. -{ 0x01, 0xcb, 0xeb },
  11035. -{ 0x01, 0xcc, 0xec },
  11036. -{ 0x01, 0xcd, 0xed },
  11037. -{ 0x01, 0xce, 0xee },
  11038. -{ 0x01, 0xcf, 0xef },
  11039. -{ 0x01, 0xd0, 0xf0 },
  11040. -{ 0x01, 0xd1, 0xf1 },
  11041. -{ 0x01, 0xd2, 0xf2 },
  11042. -{ 0x01, 0xd3, 0xf3 },
  11043. -{ 0x01, 0xd4, 0xf4 },
  11044. -{ 0x01, 0xd5, 0xf5 },
  11045. -{ 0x01, 0xd6, 0xf6 },
  11046. -{ 0x01, 0xd7, 0xf7 },
  11047. -{ 0x01, 0xd8, 0xf8 },
  11048. -{ 0x01, 0xd9, 0xf9 },
  11049. -{ 0x01, 0xda, 0xfa },
  11050. -{ 0x01, 0xdb, 0xfb },
  11051. -{ 0x01, 0xdc, 0xfc },
  11052. -{ 0x01, 0xdd, 0xfd },
  11053. -{ 0x01, 0xde, 0xfe },
  11054. -{ 0x01, 0xdf, 0xff }
  11055. -};
  11056. -
  11057. -static struct cs_info cp1251_tbl[] = {
  11058. -{ 0x00, 0x00, 0x00 },
  11059. -{ 0x00, 0x01, 0x01 },
  11060. -{ 0x00, 0x02, 0x02 },
  11061. -{ 0x00, 0x03, 0x03 },
  11062. -{ 0x00, 0x04, 0x04 },
  11063. -{ 0x00, 0x05, 0x05 },
  11064. -{ 0x00, 0x06, 0x06 },
  11065. -{ 0x00, 0x07, 0x07 },
  11066. -{ 0x00, 0x08, 0x08 },
  11067. -{ 0x00, 0x09, 0x09 },
  11068. -{ 0x00, 0x0a, 0x0a },
  11069. -{ 0x00, 0x0b, 0x0b },
  11070. -{ 0x00, 0x0c, 0x0c },
  11071. -{ 0x00, 0x0d, 0x0d },
  11072. -{ 0x00, 0x0e, 0x0e },
  11073. -{ 0x00, 0x0f, 0x0f },
  11074. -{ 0x00, 0x10, 0x10 },
  11075. -{ 0x00, 0x11, 0x11 },
  11076. -{ 0x00, 0x12, 0x12 },
  11077. -{ 0x00, 0x13, 0x13 },
  11078. -{ 0x00, 0x14, 0x14 },
  11079. -{ 0x00, 0x15, 0x15 },
  11080. -{ 0x00, 0x16, 0x16 },
  11081. -{ 0x00, 0x17, 0x17 },
  11082. -{ 0x00, 0x18, 0x18 },
  11083. -{ 0x00, 0x19, 0x19 },
  11084. -{ 0x00, 0x1a, 0x1a },
  11085. -{ 0x00, 0x1b, 0x1b },
  11086. -{ 0x00, 0x1c, 0x1c },
  11087. -{ 0x00, 0x1d, 0x1d },
  11088. -{ 0x00, 0x1e, 0x1e },
  11089. -{ 0x00, 0x1f, 0x1f },
  11090. -{ 0x00, 0x20, 0x20 },
  11091. -{ 0x00, 0x21, 0x21 },
  11092. -{ 0x00, 0x22, 0x22 },
  11093. -{ 0x00, 0x23, 0x23 },
  11094. -{ 0x00, 0x24, 0x24 },
  11095. -{ 0x00, 0x25, 0x25 },
  11096. -{ 0x00, 0x26, 0x26 },
  11097. -{ 0x00, 0x27, 0x27 },
  11098. -{ 0x00, 0x28, 0x28 },
  11099. -{ 0x00, 0x29, 0x29 },
  11100. -{ 0x00, 0x2a, 0x2a },
  11101. -{ 0x00, 0x2b, 0x2b },
  11102. -{ 0x00, 0x2c, 0x2c },
  11103. -{ 0x00, 0x2d, 0x2d },
  11104. -{ 0x00, 0x2e, 0x2e },
  11105. -{ 0x00, 0x2f, 0x2f },
  11106. -{ 0x00, 0x30, 0x30 },
  11107. -{ 0x00, 0x31, 0x31 },
  11108. -{ 0x00, 0x32, 0x32 },
  11109. -{ 0x00, 0x33, 0x33 },
  11110. -{ 0x00, 0x34, 0x34 },
  11111. -{ 0x00, 0x35, 0x35 },
  11112. -{ 0x00, 0x36, 0x36 },
  11113. -{ 0x00, 0x37, 0x37 },
  11114. -{ 0x00, 0x38, 0x38 },
  11115. -{ 0x00, 0x39, 0x39 },
  11116. -{ 0x00, 0x3a, 0x3a },
  11117. -{ 0x00, 0x3b, 0x3b },
  11118. -{ 0x00, 0x3c, 0x3c },
  11119. -{ 0x00, 0x3d, 0x3d },
  11120. -{ 0x00, 0x3e, 0x3e },
  11121. -{ 0x00, 0x3f, 0x3f },
  11122. -{ 0x00, 0x40, 0x40 },
  11123. -{ 0x01, 0x61, 0x41 },
  11124. -{ 0x01, 0x62, 0x42 },
  11125. -{ 0x01, 0x63, 0x43 },
  11126. -{ 0x01, 0x64, 0x44 },
  11127. -{ 0x01, 0x65, 0x45 },
  11128. -{ 0x01, 0x66, 0x46 },
  11129. -{ 0x01, 0x67, 0x47 },
  11130. -{ 0x01, 0x68, 0x48 },
  11131. -{ 0x01, 0x69, 0x49 },
  11132. -{ 0x01, 0x6a, 0x4a },
  11133. -{ 0x01, 0x6b, 0x4b },
  11134. -{ 0x01, 0x6c, 0x4c },
  11135. -{ 0x01, 0x6d, 0x4d },
  11136. -{ 0x01, 0x6e, 0x4e },
  11137. -{ 0x01, 0x6f, 0x4f },
  11138. -{ 0x01, 0x70, 0x50 },
  11139. -{ 0x01, 0x71, 0x51 },
  11140. -{ 0x01, 0x72, 0x52 },
  11141. -{ 0x01, 0x73, 0x53 },
  11142. -{ 0x01, 0x74, 0x54 },
  11143. -{ 0x01, 0x75, 0x55 },
  11144. -{ 0x01, 0x76, 0x56 },
  11145. -{ 0x01, 0x77, 0x57 },
  11146. -{ 0x01, 0x78, 0x58 },
  11147. -{ 0x01, 0x79, 0x59 },
  11148. -{ 0x01, 0x7a, 0x5a },
  11149. -{ 0x00, 0x5b, 0x5b },
  11150. -{ 0x00, 0x5c, 0x5c },
  11151. -{ 0x00, 0x5d, 0x5d },
  11152. -{ 0x00, 0x5e, 0x5e },
  11153. -{ 0x00, 0x5f, 0x5f },
  11154. -{ 0x00, 0x60, 0x60 },
  11155. -{ 0x00, 0x61, 0x41 },
  11156. -{ 0x00, 0x62, 0x42 },
  11157. -{ 0x00, 0x63, 0x43 },
  11158. -{ 0x00, 0x64, 0x44 },
  11159. -{ 0x00, 0x65, 0x45 },
  11160. -{ 0x00, 0x66, 0x46 },
  11161. -{ 0x00, 0x67, 0x47 },
  11162. -{ 0x00, 0x68, 0x48 },
  11163. -{ 0x00, 0x69, 0x49 },
  11164. -{ 0x00, 0x6a, 0x4a },
  11165. -{ 0x00, 0x6b, 0x4b },
  11166. -{ 0x00, 0x6c, 0x4c },
  11167. -{ 0x00, 0x6d, 0x4d },
  11168. -{ 0x00, 0x6e, 0x4e },
  11169. -{ 0x00, 0x6f, 0x4f },
  11170. -{ 0x00, 0x70, 0x50 },
  11171. -{ 0x00, 0x71, 0x51 },
  11172. -{ 0x00, 0x72, 0x52 },
  11173. -{ 0x00, 0x73, 0x53 },
  11174. -{ 0x00, 0x74, 0x54 },
  11175. -{ 0x00, 0x75, 0x55 },
  11176. -{ 0x00, 0x76, 0x56 },
  11177. -{ 0x00, 0x77, 0x57 },
  11178. -{ 0x00, 0x78, 0x58 },
  11179. -{ 0x00, 0x79, 0x59 },
  11180. -{ 0x00, 0x7a, 0x5a },
  11181. -{ 0x00, 0x7b, 0x7b },
  11182. -{ 0x00, 0x7c, 0x7c },
  11183. -{ 0x00, 0x7d, 0x7d },
  11184. -{ 0x00, 0x7e, 0x7e },
  11185. -{ 0x00, 0x7f, 0x7f },
  11186. -{ 0x01, 0x90, 0x80 },
  11187. -{ 0x01, 0x83, 0x81 },
  11188. -{ 0x00, 0x82, 0x82 },
  11189. -{ 0x00, 0x83, 0x81 },
  11190. -{ 0x00, 0x84, 0x84 },
  11191. -{ 0x00, 0x85, 0x85 },
  11192. -{ 0x00, 0x86, 0x86 },
  11193. -{ 0x00, 0x87, 0x87 },
  11194. -{ 0x00, 0x88, 0x88 },
  11195. -{ 0x00, 0x89, 0x89 },
  11196. -{ 0x01, 0x9a, 0x8a },
  11197. -{ 0x00, 0x8b, 0x8b },
  11198. -{ 0x01, 0x9c, 0x8c },
  11199. -{ 0x01, 0x9d, 0x8d },
  11200. -{ 0x01, 0x9e, 0x8e },
  11201. -{ 0x01, 0x9f, 0x8f },
  11202. -{ 0x00, 0x90, 0x80 },
  11203. -{ 0x00, 0x91, 0x91 },
  11204. -{ 0x00, 0x92, 0x92 },
  11205. -{ 0x00, 0x93, 0x93 },
  11206. -{ 0x00, 0x94, 0x94 },
  11207. -{ 0x00, 0x95, 0x95 },
  11208. -{ 0x00, 0x96, 0x96 },
  11209. -{ 0x00, 0x97, 0x97 },
  11210. -{ 0x00, 0x98, 0x98 },
  11211. -{ 0x00, 0x99, 0x99 },
  11212. -{ 0x00, 0x9a, 0x8a },
  11213. -{ 0x00, 0x9b, 0x9b },
  11214. -{ 0x00, 0x9c, 0x8c },
  11215. -{ 0x00, 0x9d, 0x8d },
  11216. -{ 0x00, 0x9e, 0x8e },
  11217. -{ 0x00, 0x9f, 0x8f },
  11218. -{ 0x00, 0xa0, 0xa0 },
  11219. -{ 0x01, 0xa2, 0xa1 },
  11220. -{ 0x00, 0xa2, 0xa1 },
  11221. -{ 0x01, 0xbc, 0xa3 },
  11222. -{ 0x00, 0xa4, 0xa4 },
  11223. -{ 0x01, 0xb4, 0xa5 },
  11224. -{ 0x00, 0xa6, 0xa6 },
  11225. -{ 0x00, 0xa7, 0xa7 },
  11226. -{ 0x01, 0xb8, 0xa8 },
  11227. -{ 0x00, 0xa9, 0xa9 },
  11228. -{ 0x01, 0xba, 0xaa },
  11229. -{ 0x00, 0xab, 0xab },
  11230. -{ 0x00, 0xac, 0xac },
  11231. -{ 0x00, 0xad, 0xad },
  11232. -{ 0x00, 0xae, 0xae },
  11233. -{ 0x01, 0xbf, 0xaf },
  11234. -{ 0x00, 0xb0, 0xb0 },
  11235. -{ 0x00, 0xb1, 0xb1 },
  11236. -{ 0x01, 0xb3, 0xb2 },
  11237. -{ 0x00, 0xb3, 0xb2 },
  11238. -{ 0x00, 0xb4, 0xa5 },
  11239. -{ 0x00, 0xb5, 0xb5 },
  11240. -{ 0x00, 0xb6, 0xb6 },
  11241. -{ 0x00, 0xb7, 0xb7 },
  11242. -{ 0x00, 0xb8, 0xa8 },
  11243. -{ 0x00, 0xb9, 0xb9 },
  11244. -{ 0x00, 0xba, 0xaa },
  11245. -{ 0x00, 0xbb, 0xbb },
  11246. -{ 0x00, 0xbc, 0xa3 },
  11247. -{ 0x01, 0xbe, 0xbd },
  11248. -{ 0x00, 0xbe, 0xbd },
  11249. -{ 0x00, 0xbf, 0xaf },
  11250. -{ 0x01, 0xe0, 0xc0 },
  11251. -{ 0x01, 0xe1, 0xc1 },
  11252. -{ 0x01, 0xe2, 0xc2 },
  11253. -{ 0x01, 0xe3, 0xc3 },
  11254. -{ 0x01, 0xe4, 0xc4 },
  11255. -{ 0x01, 0xe5, 0xc5 },
  11256. -{ 0x01, 0xe6, 0xc6 },
  11257. -{ 0x01, 0xe7, 0xc7 },
  11258. -{ 0x01, 0xe8, 0xc8 },
  11259. -{ 0x01, 0xe9, 0xc9 },
  11260. -{ 0x01, 0xea, 0xca },
  11261. -{ 0x01, 0xeb, 0xcb },
  11262. -{ 0x01, 0xec, 0xcc },
  11263. -{ 0x01, 0xed, 0xcd },
  11264. -{ 0x01, 0xee, 0xce },
  11265. -{ 0x01, 0xef, 0xcf },
  11266. -{ 0x01, 0xf0, 0xd0 },
  11267. -{ 0x01, 0xf1, 0xd1 },
  11268. -{ 0x01, 0xf2, 0xd2 },
  11269. -{ 0x01, 0xf3, 0xd3 },
  11270. -{ 0x01, 0xf4, 0xd4 },
  11271. -{ 0x01, 0xf5, 0xd5 },
  11272. -{ 0x01, 0xf6, 0xd6 },
  11273. -{ 0x01, 0xf7, 0xd7 },
  11274. -{ 0x01, 0xf8, 0xd8 },
  11275. -{ 0x01, 0xf9, 0xd9 },
  11276. -{ 0x01, 0xfa, 0xda },
  11277. -{ 0x01, 0xfb, 0xdb },
  11278. -{ 0x01, 0xfc, 0xdc },
  11279. -{ 0x01, 0xfd, 0xdd },
  11280. -{ 0x01, 0xfe, 0xde },
  11281. -{ 0x01, 0xff, 0xdf },
  11282. -{ 0x00, 0xe0, 0xc0 },
  11283. -{ 0x00, 0xe1, 0xc1 },
  11284. -{ 0x00, 0xe2, 0xc2 },
  11285. -{ 0x00, 0xe3, 0xc3 },
  11286. -{ 0x00, 0xe4, 0xc4 },
  11287. -{ 0x00, 0xe5, 0xc5 },
  11288. -{ 0x00, 0xe6, 0xc6 },
  11289. -{ 0x00, 0xe7, 0xc7 },
  11290. -{ 0x00, 0xe8, 0xc8 },
  11291. -{ 0x00, 0xe9, 0xc9 },
  11292. -{ 0x00, 0xea, 0xca },
  11293. -{ 0x00, 0xeb, 0xcb },
  11294. -{ 0x00, 0xec, 0xcc },
  11295. -{ 0x00, 0xed, 0xcd },
  11296. -{ 0x00, 0xee, 0xce },
  11297. -{ 0x00, 0xef, 0xcf },
  11298. -{ 0x00, 0xf0, 0xd0 },
  11299. -{ 0x00, 0xf1, 0xd1 },
  11300. -{ 0x00, 0xf2, 0xd2 },
  11301. -{ 0x00, 0xf3, 0xd3 },
  11302. -{ 0x00, 0xf4, 0xd4 },
  11303. -{ 0x00, 0xf5, 0xd5 },
  11304. -{ 0x00, 0xf6, 0xd6 },
  11305. -{ 0x00, 0xf7, 0xd7 },
  11306. -{ 0x00, 0xf8, 0xd8 },
  11307. -{ 0x00, 0xf9, 0xd9 },
  11308. -{ 0x00, 0xfa, 0xda },
  11309. -{ 0x00, 0xfb, 0xdb },
  11310. -{ 0x00, 0xfc, 0xdc },
  11311. -{ 0x00, 0xfd, 0xdd },
  11312. -{ 0x00, 0xfe, 0xde },
  11313. -{ 0x00, 0xff, 0xdf }
  11314. -};
  11315. -
  11316. -static struct cs_info iso13_tbl[] = {
  11317. -{ 0x00, 0x00, 0x00 },
  11318. -{ 0x00, 0x01, 0x01 },
  11319. -{ 0x00, 0x02, 0x02 },
  11320. -{ 0x00, 0x03, 0x03 },
  11321. -{ 0x00, 0x04, 0x04 },
  11322. -{ 0x00, 0x05, 0x05 },
  11323. -{ 0x00, 0x06, 0x06 },
  11324. -{ 0x00, 0x07, 0x07 },
  11325. -{ 0x00, 0x08, 0x08 },
  11326. -{ 0x00, 0x09, 0x09 },
  11327. -{ 0x00, 0x0A, 0x0A },
  11328. -{ 0x00, 0x0B, 0x0B },
  11329. -{ 0x00, 0x0C, 0x0C },
  11330. -{ 0x00, 0x0D, 0x0D },
  11331. -{ 0x00, 0x0E, 0x0E },
  11332. -{ 0x00, 0x0F, 0x0F },
  11333. -{ 0x00, 0x10, 0x10 },
  11334. -{ 0x00, 0x11, 0x11 },
  11335. -{ 0x00, 0x12, 0x12 },
  11336. -{ 0x00, 0x13, 0x13 },
  11337. -{ 0x00, 0x14, 0x14 },
  11338. -{ 0x00, 0x15, 0x15 },
  11339. -{ 0x00, 0x16, 0x16 },
  11340. -{ 0x00, 0x17, 0x17 },
  11341. -{ 0x00, 0x18, 0x18 },
  11342. -{ 0x00, 0x19, 0x19 },
  11343. -{ 0x00, 0x1A, 0x1A },
  11344. -{ 0x00, 0x1B, 0x1B },
  11345. -{ 0x00, 0x1C, 0x1C },
  11346. -{ 0x00, 0x1D, 0x1D },
  11347. -{ 0x00, 0x1E, 0x1E },
  11348. -{ 0x00, 0x1F, 0x1F },
  11349. -{ 0x00, 0x20, 0x20 },
  11350. -{ 0x00, 0x21, 0x21 },
  11351. -{ 0x00, 0x22, 0x22 },
  11352. -{ 0x00, 0x23, 0x23 },
  11353. -{ 0x00, 0x24, 0x24 },
  11354. -{ 0x00, 0x25, 0x25 },
  11355. -{ 0x00, 0x26, 0x26 },
  11356. -{ 0x00, 0x27, 0x27 },
  11357. -{ 0x00, 0x28, 0x28 },
  11358. -{ 0x00, 0x29, 0x29 },
  11359. -{ 0x00, 0x2A, 0x2A },
  11360. -{ 0x00, 0x2B, 0x2B },
  11361. -{ 0x00, 0x2C, 0x2C },
  11362. -{ 0x00, 0x2D, 0x2D },
  11363. -{ 0x00, 0x2E, 0x2E },
  11364. -{ 0x00, 0x2F, 0x2F },
  11365. -{ 0x00, 0x30, 0x30 },
  11366. -{ 0x00, 0x31, 0x31 },
  11367. -{ 0x00, 0x32, 0x32 },
  11368. -{ 0x00, 0x33, 0x33 },
  11369. -{ 0x00, 0x34, 0x34 },
  11370. -{ 0x00, 0x35, 0x35 },
  11371. -{ 0x00, 0x36, 0x36 },
  11372. -{ 0x00, 0x37, 0x37 },
  11373. -{ 0x00, 0x38, 0x38 },
  11374. -{ 0x00, 0x39, 0x39 },
  11375. -{ 0x00, 0x3A, 0x3A },
  11376. -{ 0x00, 0x3B, 0x3B },
  11377. -{ 0x00, 0x3C, 0x3C },
  11378. -{ 0x00, 0x3D, 0x3D },
  11379. -{ 0x00, 0x3E, 0x3E },
  11380. -{ 0x00, 0x3F, 0x3F },
  11381. -{ 0x00, 0x40, 0x40 },
  11382. -{ 0x01, 0x61, 0x41 },
  11383. -{ 0x01, 0x62, 0x42 },
  11384. -{ 0x01, 0x63, 0x43 },
  11385. -{ 0x01, 0x64, 0x44 },
  11386. -{ 0x01, 0x65, 0x45 },
  11387. -{ 0x01, 0x66, 0x46 },
  11388. -{ 0x01, 0x67, 0x47 },
  11389. -{ 0x01, 0x68, 0x48 },
  11390. -{ 0x01, 0x69, 0x49 },
  11391. -{ 0x01, 0x6A, 0x4A },
  11392. -{ 0x01, 0x6B, 0x4B },
  11393. -{ 0x01, 0x6C, 0x4C },
  11394. -{ 0x01, 0x6D, 0x4D },
  11395. -{ 0x01, 0x6E, 0x4E },
  11396. -{ 0x01, 0x6F, 0x4F },
  11397. -{ 0x01, 0x70, 0x50 },
  11398. -{ 0x01, 0x71, 0x51 },
  11399. -{ 0x01, 0x72, 0x52 },
  11400. -{ 0x01, 0x73, 0x53 },
  11401. -{ 0x01, 0x74, 0x54 },
  11402. -{ 0x01, 0x75, 0x55 },
  11403. -{ 0x01, 0x76, 0x56 },
  11404. -{ 0x01, 0x77, 0x57 },
  11405. -{ 0x01, 0x78, 0x58 },
  11406. -{ 0x01, 0x79, 0x59 },
  11407. -{ 0x01, 0x7A, 0x5A },
  11408. -{ 0x00, 0x5B, 0x5B },
  11409. -{ 0x00, 0x5C, 0x5C },
  11410. -{ 0x00, 0x5D, 0x5D },
  11411. -{ 0x00, 0x5E, 0x5E },
  11412. -{ 0x00, 0x5F, 0x5F },
  11413. -{ 0x00, 0x60, 0x60 },
  11414. -{ 0x00, 0x61, 0x41 },
  11415. -{ 0x00, 0x62, 0x42 },
  11416. -{ 0x00, 0x63, 0x43 },
  11417. -{ 0x00, 0x64, 0x44 },
  11418. -{ 0x00, 0x65, 0x45 },
  11419. -{ 0x00, 0x66, 0x46 },
  11420. -{ 0x00, 0x67, 0x47 },
  11421. -{ 0x00, 0x68, 0x48 },
  11422. -{ 0x00, 0x69, 0x49 },
  11423. -{ 0x00, 0x6A, 0x4A },
  11424. -{ 0x00, 0x6B, 0x4B },
  11425. -{ 0x00, 0x6C, 0x4C },
  11426. -{ 0x00, 0x6D, 0x4D },
  11427. -{ 0x00, 0x6E, 0x4E },
  11428. -{ 0x00, 0x6F, 0x4F },
  11429. -{ 0x00, 0x70, 0x50 },
  11430. -{ 0x00, 0x71, 0x51 },
  11431. -{ 0x00, 0x72, 0x52 },
  11432. -{ 0x00, 0x73, 0x53 },
  11433. -{ 0x00, 0x74, 0x54 },
  11434. -{ 0x00, 0x75, 0x55 },
  11435. -{ 0x00, 0x76, 0x56 },
  11436. -{ 0x00, 0x77, 0x57 },
  11437. -{ 0x00, 0x78, 0x58 },
  11438. -{ 0x00, 0x79, 0x59 },
  11439. -{ 0x00, 0x7A, 0x5A },
  11440. -{ 0x00, 0x7B, 0x7B },
  11441. -{ 0x00, 0x7C, 0x7C },
  11442. -{ 0x00, 0x7D, 0x7D },
  11443. -{ 0x00, 0x7E, 0x7E },
  11444. -{ 0x00, 0x7F, 0x7F },
  11445. -{ 0x00, 0x80, 0x80 },
  11446. -{ 0x00, 0x81, 0x81 },
  11447. -{ 0x00, 0x82, 0x82 },
  11448. -{ 0x00, 0x83, 0x83 },
  11449. -{ 0x00, 0x84, 0x84 },
  11450. -{ 0x00, 0x85, 0x85 },
  11451. -{ 0x00, 0x86, 0x86 },
  11452. -{ 0x00, 0x87, 0x87 },
  11453. -{ 0x00, 0x88, 0x88 },
  11454. -{ 0x00, 0x89, 0x89 },
  11455. -{ 0x00, 0x8A, 0x8A },
  11456. -{ 0x00, 0x8B, 0x8B },
  11457. -{ 0x00, 0x8C, 0x8C },
  11458. -{ 0x00, 0x8D, 0x8D },
  11459. -{ 0x00, 0x8E, 0x8E },
  11460. -{ 0x00, 0x8F, 0x8F },
  11461. -{ 0x00, 0x90, 0x90 },
  11462. -{ 0x00, 0x91, 0x91 },
  11463. -{ 0x00, 0x92, 0x92 },
  11464. -{ 0x00, 0x93, 0x93 },
  11465. -{ 0x00, 0x94, 0x94 },
  11466. -{ 0x00, 0x95, 0x95 },
  11467. -{ 0x00, 0x96, 0x96 },
  11468. -{ 0x00, 0x97, 0x97 },
  11469. -{ 0x00, 0x98, 0x98 },
  11470. -{ 0x00, 0x99, 0x99 },
  11471. -{ 0x00, 0x9A, 0x9A },
  11472. -{ 0x00, 0x9B, 0x9B },
  11473. -{ 0x00, 0x9C, 0x9C },
  11474. -{ 0x00, 0x9D, 0x9D },
  11475. -{ 0x00, 0x9E, 0x9E },
  11476. -{ 0x00, 0x9F, 0x9F },
  11477. -{ 0x00, 0xA0, 0xA0 },
  11478. -{ 0x00, 0xA1, 0xA1 },
  11479. -{ 0x00, 0xA2, 0xA2 },
  11480. -{ 0x00, 0xA3, 0xA3 },
  11481. -{ 0x00, 0xA4, 0xA4 },
  11482. -{ 0x00, 0xA5, 0xA5 },
  11483. -{ 0x00, 0xA6, 0xA6 },
  11484. -{ 0x00, 0xA7, 0xA7 },
  11485. -{ 0x01, 0xB8, 0xA8 },
  11486. -{ 0x00, 0xA9, 0xA9 },
  11487. -{ 0x01, 0xBA, 0xAA },
  11488. -{ 0x00, 0xAB, 0xAB },
  11489. -{ 0x00, 0xAC, 0xAC },
  11490. -{ 0x00, 0xAD, 0xAD },
  11491. -{ 0x00, 0xAE, 0xAE },
  11492. -{ 0x01, 0xBF, 0xAF },
  11493. -{ 0x00, 0xB0, 0xB0 },
  11494. -{ 0x00, 0xB1, 0xB1 },
  11495. -{ 0x00, 0xB2, 0xB2 },
  11496. -{ 0x00, 0xB3, 0xB3 },
  11497. -{ 0x00, 0xB4, 0xB4 },
  11498. -{ 0x00, 0xB5, 0xB5 },
  11499. -{ 0x00, 0xB6, 0xB6 },
  11500. -{ 0x00, 0xB7, 0xB7 },
  11501. -{ 0x00, 0xB8, 0xA8 },
  11502. -{ 0x00, 0xB9, 0xB9 },
  11503. -{ 0x00, 0xBA, 0xAA },
  11504. -{ 0x00, 0xBB, 0xBB },
  11505. -{ 0x00, 0xBC, 0xBC },
  11506. -{ 0x00, 0xBD, 0xBD },
  11507. -{ 0x00, 0xBE, 0xBE },
  11508. -{ 0x00, 0xBF, 0xAF },
  11509. -{ 0x01, 0xE0, 0xC0 },
  11510. -{ 0x01, 0xE1, 0xC1 },
  11511. -{ 0x01, 0xE2, 0xC2 },
  11512. -{ 0x01, 0xE3, 0xC3 },
  11513. -{ 0x01, 0xE4, 0xC4 },
  11514. -{ 0x01, 0xE5, 0xC5 },
  11515. -{ 0x01, 0xE6, 0xC6 },
  11516. -{ 0x01, 0xE7, 0xC7 },
  11517. -{ 0x01, 0xE8, 0xC8 },
  11518. -{ 0x01, 0xE9, 0xC9 },
  11519. -{ 0x01, 0xEA, 0xCA },
  11520. -{ 0x01, 0xEB, 0xCB },
  11521. -{ 0x01, 0xEC, 0xCC },
  11522. -{ 0x01, 0xED, 0xCD },
  11523. -{ 0x01, 0xEE, 0xCE },
  11524. -{ 0x01, 0xEF, 0xCF },
  11525. -{ 0x01, 0xF0, 0xD0 },
  11526. -{ 0x01, 0xF1, 0xD1 },
  11527. -{ 0x01, 0xF2, 0xD2 },
  11528. -{ 0x01, 0xF3, 0xD3 },
  11529. -{ 0x01, 0xF4, 0xD4 },
  11530. -{ 0x01, 0xF5, 0xD5 },
  11531. -{ 0x01, 0xF6, 0xD6 },
  11532. -{ 0x00, 0xD7, 0xD7 },
  11533. -{ 0x01, 0xF8, 0xD8 },
  11534. -{ 0x01, 0xF9, 0xD9 },
  11535. -{ 0x01, 0xFA, 0xDA },
  11536. -{ 0x01, 0xFB, 0xDB },
  11537. -{ 0x01, 0xFC, 0xDC },
  11538. -{ 0x01, 0xFD, 0xDD },
  11539. -{ 0x01, 0xFE, 0xDE },
  11540. -{ 0x00, 0xDF, 0xDF },
  11541. -{ 0x00, 0xE0, 0xC0 },
  11542. -{ 0x00, 0xE1, 0xC1 },
  11543. -{ 0x00, 0xE2, 0xC2 },
  11544. -{ 0x00, 0xE3, 0xC3 },
  11545. -{ 0x00, 0xE4, 0xC4 },
  11546. -{ 0x00, 0xE5, 0xC5 },
  11547. -{ 0x00, 0xE6, 0xC6 },
  11548. -{ 0x00, 0xE7, 0xC7 },
  11549. -{ 0x00, 0xE8, 0xC8 },
  11550. -{ 0x00, 0xE9, 0xC9 },
  11551. -{ 0x00, 0xEA, 0xCA },
  11552. -{ 0x00, 0xEB, 0xCB },
  11553. -{ 0x00, 0xEC, 0xCC },
  11554. -{ 0x00, 0xED, 0xCD },
  11555. -{ 0x00, 0xEE, 0xCE },
  11556. -{ 0x00, 0xEF, 0xCF },
  11557. -{ 0x00, 0xF0, 0xD0 },
  11558. -{ 0x00, 0xF1, 0xD1 },
  11559. -{ 0x00, 0xF2, 0xD2 },
  11560. -{ 0x00, 0xF3, 0xD3 },
  11561. -{ 0x00, 0xF4, 0xD4 },
  11562. -{ 0x00, 0xF5, 0xD5 },
  11563. -{ 0x00, 0xF6, 0xD6 },
  11564. -{ 0x00, 0xF7, 0xF7 },
  11565. -{ 0x00, 0xF8, 0xD8 },
  11566. -{ 0x00, 0xF9, 0xD9 },
  11567. -{ 0x00, 0xFA, 0xDA },
  11568. -{ 0x00, 0xFB, 0xDB },
  11569. -{ 0x00, 0xFC, 0xDC },
  11570. -{ 0x00, 0xFD, 0xDD },
  11571. -{ 0x00, 0xFE, 0xDE },
  11572. -{ 0x00, 0xFF, 0xFF }
  11573. -};
  11574. -
  11575. -
  11576. -static struct cs_info iso14_tbl[] = {
  11577. -{ 0x00, 0x00, 0x00 },
  11578. -{ 0x00, 0x01, 0x01 },
  11579. -{ 0x00, 0x02, 0x02 },
  11580. -{ 0x00, 0x03, 0x03 },
  11581. -{ 0x00, 0x04, 0x04 },
  11582. -{ 0x00, 0x05, 0x05 },
  11583. -{ 0x00, 0x06, 0x06 },
  11584. -{ 0x00, 0x07, 0x07 },
  11585. -{ 0x00, 0x08, 0x08 },
  11586. -{ 0x00, 0x09, 0x09 },
  11587. -{ 0x00, 0x0a, 0x0a },
  11588. -{ 0x00, 0x0b, 0x0b },
  11589. -{ 0x00, 0x0c, 0x0c },
  11590. -{ 0x00, 0x0d, 0x0d },
  11591. -{ 0x00, 0x0e, 0x0e },
  11592. -{ 0x00, 0x0f, 0x0f },
  11593. -{ 0x00, 0x10, 0x10 },
  11594. -{ 0x00, 0x11, 0x11 },
  11595. -{ 0x00, 0x12, 0x12 },
  11596. -{ 0x00, 0x13, 0x13 },
  11597. -{ 0x00, 0x14, 0x14 },
  11598. -{ 0x00, 0x15, 0x15 },
  11599. -{ 0x00, 0x16, 0x16 },
  11600. -{ 0x00, 0x17, 0x17 },
  11601. -{ 0x00, 0x18, 0x18 },
  11602. -{ 0x00, 0x19, 0x19 },
  11603. -{ 0x00, 0x1a, 0x1a },
  11604. -{ 0x00, 0x1b, 0x1b },
  11605. -{ 0x00, 0x1c, 0x1c },
  11606. -{ 0x00, 0x1d, 0x1d },
  11607. -{ 0x00, 0x1e, 0x1e },
  11608. -{ 0x00, 0x1f, 0x1f },
  11609. -{ 0x00, 0x20, 0x20 },
  11610. -{ 0x00, 0x21, 0x21 },
  11611. -{ 0x00, 0x22, 0x22 },
  11612. -{ 0x00, 0x23, 0x23 },
  11613. -{ 0x00, 0x24, 0x24 },
  11614. -{ 0x00, 0x25, 0x25 },
  11615. -{ 0x00, 0x26, 0x26 },
  11616. -{ 0x00, 0x27, 0x27 },
  11617. -{ 0x00, 0x28, 0x28 },
  11618. -{ 0x00, 0x29, 0x29 },
  11619. -{ 0x00, 0x2a, 0x2a },
  11620. -{ 0x00, 0x2b, 0x2b },
  11621. -{ 0x00, 0x2c, 0x2c },
  11622. -{ 0x00, 0x2d, 0x2d },
  11623. -{ 0x00, 0x2e, 0x2e },
  11624. -{ 0x00, 0x2f, 0x2f },
  11625. -{ 0x00, 0x30, 0x30 },
  11626. -{ 0x00, 0x31, 0x31 },
  11627. -{ 0x00, 0x32, 0x32 },
  11628. -{ 0x00, 0x33, 0x33 },
  11629. -{ 0x00, 0x34, 0x34 },
  11630. -{ 0x00, 0x35, 0x35 },
  11631. -{ 0x00, 0x36, 0x36 },
  11632. -{ 0x00, 0x37, 0x37 },
  11633. -{ 0x00, 0x38, 0x38 },
  11634. -{ 0x00, 0x39, 0x39 },
  11635. -{ 0x00, 0x3a, 0x3a },
  11636. -{ 0x00, 0x3b, 0x3b },
  11637. -{ 0x00, 0x3c, 0x3c },
  11638. -{ 0x00, 0x3d, 0x3d },
  11639. -{ 0x00, 0x3e, 0x3e },
  11640. -{ 0x00, 0x3f, 0x3f },
  11641. -{ 0x00, 0x40, 0x40 },
  11642. -{ 0x01, 0x61, 0x41 },
  11643. -{ 0x01, 0x62, 0x42 },
  11644. -{ 0x01, 0x63, 0x43 },
  11645. -{ 0x01, 0x64, 0x44 },
  11646. -{ 0x01, 0x65, 0x45 },
  11647. -{ 0x01, 0x66, 0x46 },
  11648. -{ 0x01, 0x67, 0x47 },
  11649. -{ 0x01, 0x68, 0x48 },
  11650. -{ 0x01, 0x69, 0x49 },
  11651. -{ 0x01, 0x6a, 0x4a },
  11652. -{ 0x01, 0x6b, 0x4b },
  11653. -{ 0x01, 0x6c, 0x4c },
  11654. -{ 0x01, 0x6d, 0x4d },
  11655. -{ 0x01, 0x6e, 0x4e },
  11656. -{ 0x01, 0x6f, 0x4f },
  11657. -{ 0x01, 0x70, 0x50 },
  11658. -{ 0x01, 0x71, 0x51 },
  11659. -{ 0x01, 0x72, 0x52 },
  11660. -{ 0x01, 0x73, 0x53 },
  11661. -{ 0x01, 0x74, 0x54 },
  11662. -{ 0x01, 0x75, 0x55 },
  11663. -{ 0x01, 0x76, 0x56 },
  11664. -{ 0x01, 0x77, 0x57 },
  11665. -{ 0x01, 0x78, 0x58 },
  11666. -{ 0x01, 0x79, 0x59 },
  11667. -{ 0x01, 0x7a, 0x5a },
  11668. -{ 0x00, 0x5b, 0x5b },
  11669. -{ 0x00, 0x5c, 0x5c },
  11670. -{ 0x00, 0x5d, 0x5d },
  11671. -{ 0x00, 0x5e, 0x5e },
  11672. -{ 0x00, 0x5f, 0x5f },
  11673. -{ 0x00, 0x60, 0x60 },
  11674. -{ 0x00, 0x61, 0x41 },
  11675. -{ 0x00, 0x62, 0x42 },
  11676. -{ 0x00, 0x63, 0x43 },
  11677. -{ 0x00, 0x64, 0x44 },
  11678. -{ 0x00, 0x65, 0x45 },
  11679. -{ 0x00, 0x66, 0x46 },
  11680. -{ 0x00, 0x67, 0x47 },
  11681. -{ 0x00, 0x68, 0x48 },
  11682. -{ 0x00, 0x69, 0x49 },
  11683. -{ 0x00, 0x6a, 0x4a },
  11684. -{ 0x00, 0x6b, 0x4b },
  11685. -{ 0x00, 0x6c, 0x4c },
  11686. -{ 0x00, 0x6d, 0x4d },
  11687. -{ 0x00, 0x6e, 0x4e },
  11688. -{ 0x00, 0x6f, 0x4f },
  11689. -{ 0x00, 0x70, 0x50 },
  11690. -{ 0x00, 0x71, 0x51 },
  11691. -{ 0x00, 0x72, 0x52 },
  11692. -{ 0x00, 0x73, 0x53 },
  11693. -{ 0x00, 0x74, 0x54 },
  11694. -{ 0x00, 0x75, 0x55 },
  11695. -{ 0x00, 0x76, 0x56 },
  11696. -{ 0x00, 0x77, 0x57 },
  11697. -{ 0x00, 0x78, 0x58 },
  11698. -{ 0x00, 0x79, 0x59 },
  11699. -{ 0x00, 0x7a, 0x5a },
  11700. -{ 0x00, 0x7b, 0x7b },
  11701. -{ 0x00, 0x7c, 0x7c },
  11702. -{ 0x00, 0x7d, 0x7d },
  11703. -{ 0x00, 0x7e, 0x7e },
  11704. -{ 0x00, 0x7f, 0x7f },
  11705. -{ 0x00, 0x80, 0x80 },
  11706. -{ 0x00, 0x81, 0x81 },
  11707. -{ 0x00, 0x82, 0x82 },
  11708. -{ 0x00, 0x83, 0x83 },
  11709. -{ 0x00, 0x84, 0x84 },
  11710. -{ 0x00, 0x85, 0x85 },
  11711. -{ 0x00, 0x86, 0x86 },
  11712. -{ 0x00, 0x87, 0x87 },
  11713. -{ 0x00, 0x88, 0x88 },
  11714. -{ 0x00, 0x89, 0x89 },
  11715. -{ 0x00, 0x8a, 0x8a },
  11716. -{ 0x00, 0x8b, 0x8b },
  11717. -{ 0x00, 0x8c, 0x8c },
  11718. -{ 0x00, 0x8d, 0x8d },
  11719. -{ 0x00, 0x8e, 0x8e },
  11720. -{ 0x00, 0x8f, 0x8f },
  11721. -{ 0x00, 0x90, 0x90 },
  11722. -{ 0x00, 0x91, 0x91 },
  11723. -{ 0x00, 0x92, 0x92 },
  11724. -{ 0x00, 0x93, 0x93 },
  11725. -{ 0x00, 0x94, 0x94 },
  11726. -{ 0x00, 0x95, 0x95 },
  11727. -{ 0x00, 0x96, 0x96 },
  11728. -{ 0x00, 0x97, 0x97 },
  11729. -{ 0x00, 0x98, 0x98 },
  11730. -{ 0x00, 0x99, 0x99 },
  11731. -{ 0x00, 0x9a, 0x9a },
  11732. -{ 0x00, 0x9b, 0x9b },
  11733. -{ 0x00, 0x9c, 0x9c },
  11734. -{ 0x00, 0x9d, 0x9d },
  11735. -{ 0x00, 0x9e, 0x9e },
  11736. -{ 0x00, 0x9f, 0x9f },
  11737. -{ 0x00, 0xa0, 0xa0 },
  11738. -{ 0x01, 0xa2, 0xa1 },
  11739. -{ 0x00, 0xa2, 0xa1 },
  11740. -{ 0x00, 0xa3, 0xa3 },
  11741. -{ 0x01, 0xa5, 0xa4 },
  11742. -{ 0x00, 0xa5, 0xa4 },
  11743. -{ 0x01, 0xa6, 0xab },
  11744. -{ 0x00, 0xa7, 0xa7 },
  11745. -{ 0x01, 0xb8, 0xa8 },
  11746. -{ 0x00, 0xa9, 0xa9 },
  11747. -{ 0x01, 0xba, 0xaa },
  11748. -{ 0x00, 0xab, 0xa6 },
  11749. -{ 0x01, 0xbc, 0xac },
  11750. -{ 0x00, 0xad, 0xad },
  11751. -{ 0x00, 0xae, 0xae },
  11752. -{ 0x01, 0xff, 0xaf },
  11753. -{ 0x01, 0xb1, 0xb0 },
  11754. -{ 0x00, 0xb1, 0xb0 },
  11755. -{ 0x01, 0xb3, 0xb2 },
  11756. -{ 0x00, 0xb3, 0xb2 },
  11757. -{ 0x01, 0xb5, 0xb4 },
  11758. -{ 0x00, 0xb5, 0xb4 },
  11759. -{ 0x00, 0xb6, 0xb6 },
  11760. -{ 0x01, 0xb9, 0xb7 },
  11761. -{ 0x00, 0xb8, 0xa8 },
  11762. -{ 0x00, 0xb9, 0xb6 },
  11763. -{ 0x00, 0xba, 0xaa },
  11764. -{ 0x01, 0xbf, 0xbb },
  11765. -{ 0x00, 0xbc, 0xac },
  11766. -{ 0x01, 0xbe, 0xbd },
  11767. -{ 0x00, 0xbe, 0xbd },
  11768. -{ 0x00, 0xbf, 0xbb },
  11769. -{ 0x01, 0xe0, 0xc0 },
  11770. -{ 0x01, 0xe1, 0xc1 },
  11771. -{ 0x01, 0xe2, 0xc2 },
  11772. -{ 0x01, 0xe3, 0xc3 },
  11773. -{ 0x01, 0xe4, 0xc4 },
  11774. -{ 0x01, 0xe5, 0xc5 },
  11775. -{ 0x01, 0xe6, 0xc6 },
  11776. -{ 0x01, 0xe7, 0xc7 },
  11777. -{ 0x01, 0xe8, 0xc8 },
  11778. -{ 0x01, 0xe9, 0xc9 },
  11779. -{ 0x01, 0xea, 0xca },
  11780. -{ 0x01, 0xeb, 0xcb },
  11781. -{ 0x01, 0xec, 0xcc },
  11782. -{ 0x01, 0xed, 0xcd },
  11783. -{ 0x01, 0xee, 0xce },
  11784. -{ 0x01, 0xef, 0xcf },
  11785. -{ 0x01, 0xf0, 0xd0 },
  11786. -{ 0x01, 0xf1, 0xd1 },
  11787. -{ 0x01, 0xf2, 0xd2 },
  11788. -{ 0x01, 0xf3, 0xd3 },
  11789. -{ 0x01, 0xf4, 0xd4 },
  11790. -{ 0x01, 0xf5, 0xd5 },
  11791. -{ 0x01, 0xf6, 0xd6 },
  11792. -{ 0x01, 0xf7, 0xd7 },
  11793. -{ 0x01, 0xf8, 0xd8 },
  11794. -{ 0x01, 0xf9, 0xd9 },
  11795. -{ 0x01, 0xfa, 0xda },
  11796. -{ 0x01, 0xfb, 0xdb },
  11797. -{ 0x01, 0xfc, 0xdc },
  11798. -{ 0x01, 0xfd, 0xdd },
  11799. -{ 0x01, 0xfe, 0xde },
  11800. -{ 0x00, 0xdf, 0xdf },
  11801. -{ 0x00, 0xe0, 0xc0 },
  11802. -{ 0x00, 0xe1, 0xc1 },
  11803. -{ 0x00, 0xe2, 0xc2 },
  11804. -{ 0x00, 0xe3, 0xc3 },
  11805. -{ 0x00, 0xe4, 0xc4 },
  11806. -{ 0x00, 0xe5, 0xc5 },
  11807. -{ 0x00, 0xe6, 0xc6 },
  11808. -{ 0x00, 0xe7, 0xc7 },
  11809. -{ 0x00, 0xe8, 0xc8 },
  11810. -{ 0x00, 0xe9, 0xc9 },
  11811. -{ 0x00, 0xea, 0xca },
  11812. -{ 0x00, 0xeb, 0xcb },
  11813. -{ 0x00, 0xec, 0xcc },
  11814. -{ 0x00, 0xed, 0xcd },
  11815. -{ 0x00, 0xee, 0xce },
  11816. -{ 0x00, 0xef, 0xcf },
  11817. -{ 0x00, 0xf0, 0xd0 },
  11818. -{ 0x00, 0xf1, 0xd1 },
  11819. -{ 0x00, 0xf2, 0xd2 },
  11820. -{ 0x00, 0xf3, 0xd3 },
  11821. -{ 0x00, 0xf4, 0xd4 },
  11822. -{ 0x00, 0xf5, 0xd5 },
  11823. -{ 0x00, 0xf6, 0xd6 },
  11824. -{ 0x00, 0xf7, 0xd7 },
  11825. -{ 0x00, 0xf8, 0xd8 },
  11826. -{ 0x00, 0xf9, 0xd9 },
  11827. -{ 0x00, 0xfa, 0xda },
  11828. -{ 0x00, 0xfb, 0xdb },
  11829. -{ 0x00, 0xfc, 0xdc },
  11830. -{ 0x00, 0xfd, 0xdd },
  11831. -{ 0x00, 0xfe, 0xde },
  11832. -{ 0x00, 0xff, 0xff }
  11833. -};
  11834. -
  11835. -static struct cs_info iso15_tbl[] = {
  11836. -{ 0x00, 0x00, 0x00 },
  11837. -{ 0x00, 0x01, 0x01 },
  11838. -{ 0x00, 0x02, 0x02 },
  11839. -{ 0x00, 0x03, 0x03 },
  11840. -{ 0x00, 0x04, 0x04 },
  11841. -{ 0x00, 0x05, 0x05 },
  11842. -{ 0x00, 0x06, 0x06 },
  11843. -{ 0x00, 0x07, 0x07 },
  11844. -{ 0x00, 0x08, 0x08 },
  11845. -{ 0x00, 0x09, 0x09 },
  11846. -{ 0x00, 0x0a, 0x0a },
  11847. -{ 0x00, 0x0b, 0x0b },
  11848. -{ 0x00, 0x0c, 0x0c },
  11849. -{ 0x00, 0x0d, 0x0d },
  11850. -{ 0x00, 0x0e, 0x0e },
  11851. -{ 0x00, 0x0f, 0x0f },
  11852. -{ 0x00, 0x10, 0x10 },
  11853. -{ 0x00, 0x11, 0x11 },
  11854. -{ 0x00, 0x12, 0x12 },
  11855. -{ 0x00, 0x13, 0x13 },
  11856. -{ 0x00, 0x14, 0x14 },
  11857. -{ 0x00, 0x15, 0x15 },
  11858. -{ 0x00, 0x16, 0x16 },
  11859. -{ 0x00, 0x17, 0x17 },
  11860. -{ 0x00, 0x18, 0x18 },
  11861. -{ 0x00, 0x19, 0x19 },
  11862. -{ 0x00, 0x1a, 0x1a },
  11863. -{ 0x00, 0x1b, 0x1b },
  11864. -{ 0x00, 0x1c, 0x1c },
  11865. -{ 0x00, 0x1d, 0x1d },
  11866. -{ 0x00, 0x1e, 0x1e },
  11867. -{ 0x00, 0x1f, 0x1f },
  11868. -{ 0x00, 0x20, 0x20 },
  11869. -{ 0x00, 0x21, 0x21 },
  11870. -{ 0x00, 0x22, 0x22 },
  11871. -{ 0x00, 0x23, 0x23 },
  11872. -{ 0x00, 0x24, 0x24 },
  11873. -{ 0x00, 0x25, 0x25 },
  11874. -{ 0x00, 0x26, 0x26 },
  11875. -{ 0x00, 0x27, 0x27 },
  11876. -{ 0x00, 0x28, 0x28 },
  11877. -{ 0x00, 0x29, 0x29 },
  11878. -{ 0x00, 0x2a, 0x2a },
  11879. -{ 0x00, 0x2b, 0x2b },
  11880. -{ 0x00, 0x2c, 0x2c },
  11881. -{ 0x00, 0x2d, 0x2d },
  11882. -{ 0x00, 0x2e, 0x2e },
  11883. -{ 0x00, 0x2f, 0x2f },
  11884. -{ 0x00, 0x30, 0x30 },
  11885. -{ 0x00, 0x31, 0x31 },
  11886. -{ 0x00, 0x32, 0x32 },
  11887. -{ 0x00, 0x33, 0x33 },
  11888. -{ 0x00, 0x34, 0x34 },
  11889. -{ 0x00, 0x35, 0x35 },
  11890. -{ 0x00, 0x36, 0x36 },
  11891. -{ 0x00, 0x37, 0x37 },
  11892. -{ 0x00, 0x38, 0x38 },
  11893. -{ 0x00, 0x39, 0x39 },
  11894. -{ 0x00, 0x3a, 0x3a },
  11895. -{ 0x00, 0x3b, 0x3b },
  11896. -{ 0x00, 0x3c, 0x3c },
  11897. -{ 0x00, 0x3d, 0x3d },
  11898. -{ 0x00, 0x3e, 0x3e },
  11899. -{ 0x00, 0x3f, 0x3f },
  11900. -{ 0x00, 0x40, 0x40 },
  11901. -{ 0x01, 0x61, 0x41 },
  11902. -{ 0x01, 0x62, 0x42 },
  11903. -{ 0x01, 0x63, 0x43 },
  11904. -{ 0x01, 0x64, 0x44 },
  11905. -{ 0x01, 0x65, 0x45 },
  11906. -{ 0x01, 0x66, 0x46 },
  11907. -{ 0x01, 0x67, 0x47 },
  11908. -{ 0x01, 0x68, 0x48 },
  11909. -{ 0x01, 0x69, 0x49 },
  11910. -{ 0x01, 0x6a, 0x4a },
  11911. -{ 0x01, 0x6b, 0x4b },
  11912. -{ 0x01, 0x6c, 0x4c },
  11913. -{ 0x01, 0x6d, 0x4d },
  11914. -{ 0x01, 0x6e, 0x4e },
  11915. -{ 0x01, 0x6f, 0x4f },
  11916. -{ 0x01, 0x70, 0x50 },
  11917. -{ 0x01, 0x71, 0x51 },
  11918. -{ 0x01, 0x72, 0x52 },
  11919. -{ 0x01, 0x73, 0x53 },
  11920. -{ 0x01, 0x74, 0x54 },
  11921. -{ 0x01, 0x75, 0x55 },
  11922. -{ 0x01, 0x76, 0x56 },
  11923. -{ 0x01, 0x77, 0x57 },
  11924. -{ 0x01, 0x78, 0x58 },
  11925. -{ 0x01, 0x79, 0x59 },
  11926. -{ 0x01, 0x7a, 0x5a },
  11927. -{ 0x00, 0x5b, 0x5b },
  11928. -{ 0x00, 0x5c, 0x5c },
  11929. -{ 0x00, 0x5d, 0x5d },
  11930. -{ 0x00, 0x5e, 0x5e },
  11931. -{ 0x00, 0x5f, 0x5f },
  11932. -{ 0x00, 0x60, 0x60 },
  11933. -{ 0x00, 0x61, 0x41 },
  11934. -{ 0x00, 0x62, 0x42 },
  11935. -{ 0x00, 0x63, 0x43 },
  11936. -{ 0x00, 0x64, 0x44 },
  11937. -{ 0x00, 0x65, 0x45 },
  11938. -{ 0x00, 0x66, 0x46 },
  11939. -{ 0x00, 0x67, 0x47 },
  11940. -{ 0x00, 0x68, 0x48 },
  11941. -{ 0x00, 0x69, 0x49 },
  11942. -{ 0x00, 0x6a, 0x4a },
  11943. -{ 0x00, 0x6b, 0x4b },
  11944. -{ 0x00, 0x6c, 0x4c },
  11945. -{ 0x00, 0x6d, 0x4d },
  11946. -{ 0x00, 0x6e, 0x4e },
  11947. -{ 0x00, 0x6f, 0x4f },
  11948. -{ 0x00, 0x70, 0x50 },
  11949. -{ 0x00, 0x71, 0x51 },
  11950. -{ 0x00, 0x72, 0x52 },
  11951. -{ 0x00, 0x73, 0x53 },
  11952. -{ 0x00, 0x74, 0x54 },
  11953. -{ 0x00, 0x75, 0x55 },
  11954. -{ 0x00, 0x76, 0x56 },
  11955. -{ 0x00, 0x77, 0x57 },
  11956. -{ 0x00, 0x78, 0x58 },
  11957. -{ 0x00, 0x79, 0x59 },
  11958. -{ 0x00, 0x7a, 0x5a },
  11959. -{ 0x00, 0x7b, 0x7b },
  11960. -{ 0x00, 0x7c, 0x7c },
  11961. -{ 0x00, 0x7d, 0x7d },
  11962. -{ 0x00, 0x7e, 0x7e },
  11963. -{ 0x00, 0x7f, 0x7f },
  11964. -{ 0x00, 0x80, 0x80 },
  11965. -{ 0x00, 0x81, 0x81 },
  11966. -{ 0x00, 0x82, 0x82 },
  11967. -{ 0x00, 0x83, 0x83 },
  11968. -{ 0x00, 0x84, 0x84 },
  11969. -{ 0x00, 0x85, 0x85 },
  11970. -{ 0x00, 0x86, 0x86 },
  11971. -{ 0x00, 0x87, 0x87 },
  11972. -{ 0x00, 0x88, 0x88 },
  11973. -{ 0x00, 0x89, 0x89 },
  11974. -{ 0x00, 0x8a, 0x8a },
  11975. -{ 0x00, 0x8b, 0x8b },
  11976. -{ 0x00, 0x8c, 0x8c },
  11977. -{ 0x00, 0x8d, 0x8d },
  11978. -{ 0x00, 0x8e, 0x8e },
  11979. -{ 0x00, 0x8f, 0x8f },
  11980. -{ 0x00, 0x90, 0x90 },
  11981. -{ 0x00, 0x91, 0x91 },
  11982. -{ 0x00, 0x92, 0x92 },
  11983. -{ 0x00, 0x93, 0x93 },
  11984. -{ 0x00, 0x94, 0x94 },
  11985. -{ 0x00, 0x95, 0x95 },
  11986. -{ 0x00, 0x96, 0x96 },
  11987. -{ 0x00, 0x97, 0x97 },
  11988. -{ 0x00, 0x98, 0x98 },
  11989. -{ 0x00, 0x99, 0x99 },
  11990. -{ 0x00, 0x9a, 0x9a },
  11991. -{ 0x00, 0x9b, 0x9b },
  11992. -{ 0x00, 0x9c, 0x9c },
  11993. -{ 0x00, 0x9d, 0x9d },
  11994. -{ 0x00, 0x9e, 0x9e },
  11995. -{ 0x00, 0x9f, 0x9f },
  11996. -{ 0x00, 0xa0, 0xa0 },
  11997. -{ 0x00, 0xa1, 0xa1 },
  11998. -{ 0x00, 0xa2, 0xa2 },
  11999. -{ 0x00, 0xa3, 0xa3 },
  12000. -{ 0x00, 0xa4, 0xa4 },
  12001. -{ 0x00, 0xa5, 0xa5 },
  12002. -{ 0x01, 0xa8, 0xa6 },
  12003. -{ 0x00, 0xa7, 0xa7 },
  12004. -{ 0x00, 0xa8, 0xa6 },
  12005. -{ 0x00, 0xa9, 0xa9 },
  12006. -{ 0x00, 0xaa, 0xaa },
  12007. -{ 0x00, 0xab, 0xab },
  12008. -{ 0x00, 0xac, 0xac },
  12009. -{ 0x00, 0xad, 0xad },
  12010. -{ 0x00, 0xae, 0xae },
  12011. -{ 0x00, 0xaf, 0xaf },
  12012. -{ 0x00, 0xb0, 0xb0 },
  12013. -{ 0x00, 0xb1, 0xb1 },
  12014. -{ 0x00, 0xb2, 0xb2 },
  12015. -{ 0x00, 0xb3, 0xb3 },
  12016. -{ 0x01, 0xb8, 0xb4 },
  12017. -{ 0x00, 0xb5, 0xb5 },
  12018. -{ 0x00, 0xb6, 0xb6 },
  12019. -{ 0x00, 0xb7, 0xb7 },
  12020. -{ 0x00, 0xb8, 0xb4 },
  12021. -{ 0x00, 0xb9, 0xb9 },
  12022. -{ 0x00, 0xba, 0xba },
  12023. -{ 0x00, 0xbb, 0xbb },
  12024. -{ 0x01, 0xbd, 0xbc },
  12025. -{ 0x00, 0xbd, 0xbc },
  12026. -{ 0x01, 0xff, 0xbe },
  12027. -{ 0x00, 0xbf, 0xbf },
  12028. -{ 0x01, 0xe0, 0xc0 },
  12029. -{ 0x01, 0xe1, 0xc1 },
  12030. -{ 0x01, 0xe2, 0xc2 },
  12031. -{ 0x01, 0xe3, 0xc3 },
  12032. -{ 0x01, 0xe4, 0xc4 },
  12033. -{ 0x01, 0xe5, 0xc5 },
  12034. -{ 0x01, 0xe6, 0xc6 },
  12035. -{ 0x01, 0xe7, 0xc7 },
  12036. -{ 0x01, 0xe8, 0xc8 },
  12037. -{ 0x01, 0xe9, 0xc9 },
  12038. -{ 0x01, 0xea, 0xca },
  12039. -{ 0x01, 0xeb, 0xcb },
  12040. -{ 0x01, 0xec, 0xcc },
  12041. -{ 0x01, 0xed, 0xcd },
  12042. -{ 0x01, 0xee, 0xce },
  12043. -{ 0x01, 0xef, 0xcf },
  12044. -{ 0x01, 0xf0, 0xd0 },
  12045. -{ 0x01, 0xf1, 0xd1 },
  12046. -{ 0x01, 0xf2, 0xd2 },
  12047. -{ 0x01, 0xf3, 0xd3 },
  12048. -{ 0x01, 0xf4, 0xd4 },
  12049. -{ 0x01, 0xf5, 0xd5 },
  12050. -{ 0x01, 0xf6, 0xd6 },
  12051. -{ 0x00, 0xd7, 0xd7 },
  12052. -{ 0x01, 0xf8, 0xd8 },
  12053. -{ 0x01, 0xf9, 0xd9 },
  12054. -{ 0x01, 0xfa, 0xda },
  12055. -{ 0x01, 0xfb, 0xdb },
  12056. -{ 0x01, 0xfc, 0xdc },
  12057. -{ 0x01, 0xfd, 0xdd },
  12058. -{ 0x01, 0xfe, 0xde },
  12059. -{ 0x00, 0xdf, 0xdf },
  12060. -{ 0x00, 0xe0, 0xc0 },
  12061. -{ 0x00, 0xe1, 0xc1 },
  12062. -{ 0x00, 0xe2, 0xc2 },
  12063. -{ 0x00, 0xe3, 0xc3 },
  12064. -{ 0x00, 0xe4, 0xc4 },
  12065. -{ 0x00, 0xe5, 0xc5 },
  12066. -{ 0x00, 0xe6, 0xc6 },
  12067. -{ 0x00, 0xe7, 0xc7 },
  12068. -{ 0x00, 0xe8, 0xc8 },
  12069. -{ 0x00, 0xe9, 0xc9 },
  12070. -{ 0x00, 0xea, 0xca },
  12071. -{ 0x00, 0xeb, 0xcb },
  12072. -{ 0x00, 0xec, 0xcc },
  12073. -{ 0x00, 0xed, 0xcd },
  12074. -{ 0x00, 0xee, 0xce },
  12075. -{ 0x00, 0xef, 0xcf },
  12076. -{ 0x00, 0xf0, 0xd0 },
  12077. -{ 0x00, 0xf1, 0xd1 },
  12078. -{ 0x00, 0xf2, 0xd2 },
  12079. -{ 0x00, 0xf3, 0xd3 },
  12080. -{ 0x00, 0xf4, 0xd4 },
  12081. -{ 0x00, 0xf5, 0xd5 },
  12082. -{ 0x00, 0xf6, 0xd6 },
  12083. -{ 0x00, 0xf7, 0xf7 },
  12084. -{ 0x00, 0xf8, 0xd8 },
  12085. -{ 0x00, 0xf9, 0xd9 },
  12086. -{ 0x00, 0xfa, 0xda },
  12087. -{ 0x00, 0xfb, 0xdb },
  12088. -{ 0x00, 0xfc, 0xdc },
  12089. -{ 0x00, 0xfd, 0xdd },
  12090. -{ 0x00, 0xfe, 0xde },
  12091. -{ 0x00, 0xff, 0xbe }
  12092. -};
  12093. -
  12094. -static struct cs_info iscii_devanagari_tbl[] = {
  12095. -{ 0x00, 0x00, 0x00 },
  12096. -{ 0x00, 0x01, 0x01 },
  12097. -{ 0x00, 0x02, 0x02 },
  12098. -{ 0x00, 0x03, 0x03 },
  12099. -{ 0x00, 0x04, 0x04 },
  12100. -{ 0x00, 0x05, 0x05 },
  12101. -{ 0x00, 0x06, 0x06 },
  12102. -{ 0x00, 0x07, 0x07 },
  12103. -{ 0x00, 0x08, 0x08 },
  12104. -{ 0x00, 0x09, 0x09 },
  12105. -{ 0x00, 0x0a, 0x0a },
  12106. -{ 0x00, 0x0b, 0x0b },
  12107. -{ 0x00, 0x0c, 0x0c },
  12108. -{ 0x00, 0x0d, 0x0d },
  12109. -{ 0x00, 0x0e, 0x0e },
  12110. -{ 0x00, 0x0f, 0x0f },
  12111. -{ 0x00, 0x10, 0x10 },
  12112. -{ 0x00, 0x11, 0x11 },
  12113. -{ 0x00, 0x12, 0x12 },
  12114. -{ 0x00, 0x13, 0x13 },
  12115. -{ 0x00, 0x14, 0x14 },
  12116. -{ 0x00, 0x15, 0x15 },
  12117. -{ 0x00, 0x16, 0x16 },
  12118. -{ 0x00, 0x17, 0x17 },
  12119. -{ 0x00, 0x18, 0x18 },
  12120. -{ 0x00, 0x19, 0x19 },
  12121. -{ 0x00, 0x1a, 0x1a },
  12122. -{ 0x00, 0x1b, 0x1b },
  12123. -{ 0x00, 0x1c, 0x1c },
  12124. -{ 0x00, 0x1d, 0x1d },
  12125. -{ 0x00, 0x1e, 0x1e },
  12126. -{ 0x00, 0x1f, 0x1f },
  12127. -{ 0x00, 0x20, 0x20 },
  12128. -{ 0x00, 0x21, 0x21 },
  12129. -{ 0x00, 0x22, 0x22 },
  12130. -{ 0x00, 0x23, 0x23 },
  12131. -{ 0x00, 0x24, 0x24 },
  12132. -{ 0x00, 0x25, 0x25 },
  12133. -{ 0x00, 0x26, 0x26 },
  12134. -{ 0x00, 0x27, 0x27 },
  12135. -{ 0x00, 0x28, 0x28 },
  12136. -{ 0x00, 0x29, 0x29 },
  12137. -{ 0x00, 0x2a, 0x2a },
  12138. -{ 0x00, 0x2b, 0x2b },
  12139. -{ 0x00, 0x2c, 0x2c },
  12140. -{ 0x00, 0x2d, 0x2d },
  12141. -{ 0x00, 0x2e, 0x2e },
  12142. -{ 0x00, 0x2f, 0x2f },
  12143. -{ 0x00, 0x30, 0x30 },
  12144. -{ 0x00, 0x31, 0x31 },
  12145. -{ 0x00, 0x32, 0x32 },
  12146. -{ 0x00, 0x33, 0x33 },
  12147. -{ 0x00, 0x34, 0x34 },
  12148. -{ 0x00, 0x35, 0x35 },
  12149. -{ 0x00, 0x36, 0x36 },
  12150. -{ 0x00, 0x37, 0x37 },
  12151. -{ 0x00, 0x38, 0x38 },
  12152. -{ 0x00, 0x39, 0x39 },
  12153. -{ 0x00, 0x3a, 0x3a },
  12154. -{ 0x00, 0x3b, 0x3b },
  12155. -{ 0x00, 0x3c, 0x3c },
  12156. -{ 0x00, 0x3d, 0x3d },
  12157. -{ 0x00, 0x3e, 0x3e },
  12158. -{ 0x00, 0x3f, 0x3f },
  12159. -{ 0x00, 0x40, 0x40 },
  12160. -{ 0x01, 0x61, 0x41 },
  12161. -{ 0x01, 0x62, 0x42 },
  12162. -{ 0x01, 0x63, 0x43 },
  12163. -{ 0x01, 0x64, 0x44 },
  12164. -{ 0x01, 0x65, 0x45 },
  12165. -{ 0x01, 0x66, 0x46 },
  12166. -{ 0x01, 0x67, 0x47 },
  12167. -{ 0x01, 0x68, 0x48 },
  12168. -{ 0x01, 0x69, 0x49 },
  12169. -{ 0x01, 0x6a, 0x4a },
  12170. -{ 0x01, 0x6b, 0x4b },
  12171. -{ 0x01, 0x6c, 0x4c },
  12172. -{ 0x01, 0x6d, 0x4d },
  12173. -{ 0x01, 0x6e, 0x4e },
  12174. -{ 0x01, 0x6f, 0x4f },
  12175. -{ 0x01, 0x70, 0x50 },
  12176. -{ 0x01, 0x71, 0x51 },
  12177. -{ 0x01, 0x72, 0x52 },
  12178. -{ 0x01, 0x73, 0x53 },
  12179. -{ 0x01, 0x74, 0x54 },
  12180. -{ 0x01, 0x75, 0x55 },
  12181. -{ 0x01, 0x76, 0x56 },
  12182. -{ 0x01, 0x77, 0x57 },
  12183. -{ 0x01, 0x78, 0x58 },
  12184. -{ 0x01, 0x79, 0x59 },
  12185. -{ 0x01, 0x7a, 0x5a },
  12186. -{ 0x00, 0x5b, 0x5b },
  12187. -{ 0x00, 0x5c, 0x5c },
  12188. -{ 0x00, 0x5d, 0x5d },
  12189. -{ 0x00, 0x5e, 0x5e },
  12190. -{ 0x00, 0x5f, 0x5f },
  12191. -{ 0x00, 0x60, 0x60 },
  12192. -{ 0x00, 0x61, 0x41 },
  12193. -{ 0x00, 0x62, 0x42 },
  12194. -{ 0x00, 0x63, 0x43 },
  12195. -{ 0x00, 0x64, 0x44 },
  12196. -{ 0x00, 0x65, 0x45 },
  12197. -{ 0x00, 0x66, 0x46 },
  12198. -{ 0x00, 0x67, 0x47 },
  12199. -{ 0x00, 0x68, 0x48 },
  12200. -{ 0x00, 0x69, 0x49 },
  12201. -{ 0x00, 0x6a, 0x4a },
  12202. -{ 0x00, 0x6b, 0x4b },
  12203. -{ 0x00, 0x6c, 0x4c },
  12204. -{ 0x00, 0x6d, 0x4d },
  12205. -{ 0x00, 0x6e, 0x4e },
  12206. -{ 0x00, 0x6f, 0x4f },
  12207. -{ 0x00, 0x70, 0x50 },
  12208. -{ 0x00, 0x71, 0x51 },
  12209. -{ 0x00, 0x72, 0x52 },
  12210. -{ 0x00, 0x73, 0x53 },
  12211. -{ 0x00, 0x74, 0x54 },
  12212. -{ 0x00, 0x75, 0x55 },
  12213. -{ 0x00, 0x76, 0x56 },
  12214. -{ 0x00, 0x77, 0x57 },
  12215. -{ 0x00, 0x78, 0x58 },
  12216. -{ 0x00, 0x79, 0x59 },
  12217. -{ 0x00, 0x7a, 0x5a },
  12218. -{ 0x00, 0x7b, 0x7b },
  12219. -{ 0x00, 0x7c, 0x7c },
  12220. -{ 0x00, 0x7d, 0x7d },
  12221. -{ 0x00, 0x7e, 0x7e },
  12222. -{ 0x00, 0x7f, 0x7f },
  12223. -{ 0x00, 0x80, 0x80 },
  12224. -{ 0x00, 0x81, 0x81 },
  12225. -{ 0x00, 0x82, 0x82 },
  12226. -{ 0x00, 0x83, 0x83 },
  12227. -{ 0x00, 0x84, 0x84 },
  12228. -{ 0x00, 0x85, 0x85 },
  12229. -{ 0x00, 0x86, 0x86 },
  12230. -{ 0x00, 0x87, 0x87 },
  12231. -{ 0x00, 0x88, 0x88 },
  12232. -{ 0x00, 0x89, 0x89 },
  12233. -{ 0x00, 0x8a, 0x8a },
  12234. -{ 0x00, 0x8b, 0x8b },
  12235. -{ 0x00, 0x8c, 0x8c },
  12236. -{ 0x00, 0x8d, 0x8d },
  12237. -{ 0x00, 0x8e, 0x8e },
  12238. -{ 0x00, 0x8f, 0x8f },
  12239. -{ 0x00, 0x90, 0x90 },
  12240. -{ 0x00, 0x91, 0x91 },
  12241. -{ 0x00, 0x92, 0x92 },
  12242. -{ 0x00, 0x93, 0x93 },
  12243. -{ 0x00, 0x94, 0x94 },
  12244. -{ 0x00, 0x95, 0x95 },
  12245. -{ 0x00, 0x96, 0x96 },
  12246. -{ 0x00, 0x97, 0x97 },
  12247. -{ 0x00, 0x98, 0x98 },
  12248. -{ 0x00, 0x99, 0x99 },
  12249. -{ 0x00, 0x9a, 0x9a },
  12250. -{ 0x00, 0x9b, 0x9b },
  12251. -{ 0x00, 0x9c, 0x9c },
  12252. -{ 0x00, 0x9d, 0x9d },
  12253. -{ 0x00, 0x9e, 0x9e },
  12254. -{ 0x00, 0x9f, 0x9f },
  12255. -{ 0x00, 0xa0, 0xa0 },
  12256. -{ 0x00, 0xa1, 0xa1 },
  12257. -{ 0x00, 0xa2, 0xa2 },
  12258. -{ 0x00, 0xa3, 0xa3 },
  12259. -{ 0x00, 0xa4, 0xa4 },
  12260. -{ 0x00, 0xa5, 0xa5 },
  12261. -{ 0x00, 0xa6, 0xa6 },
  12262. -{ 0x00, 0xa7, 0xa7 },
  12263. -{ 0x00, 0xa8, 0xa8 },
  12264. -{ 0x00, 0xa9, 0xa9 },
  12265. -{ 0x00, 0xaa, 0xaa },
  12266. -{ 0x00, 0xab, 0xab },
  12267. -{ 0x00, 0xac, 0xac },
  12268. -{ 0x00, 0xad, 0xad },
  12269. -{ 0x00, 0xae, 0xae },
  12270. -{ 0x00, 0xaf, 0xaf },
  12271. -{ 0x00, 0xb0, 0xb0 },
  12272. -{ 0x00, 0xb1, 0xb1 },
  12273. -{ 0x00, 0xb2, 0xb2 },
  12274. -{ 0x00, 0xb3, 0xb3 },
  12275. -{ 0x00, 0xb4, 0xb4 },
  12276. -{ 0x00, 0xb5, 0xb5 },
  12277. -{ 0x00, 0xb6, 0xb6 },
  12278. -{ 0x00, 0xb7, 0xb7 },
  12279. -{ 0x00, 0xb8, 0xb8 },
  12280. -{ 0x00, 0xb9, 0xb9 },
  12281. -{ 0x00, 0xba, 0xba },
  12282. -{ 0x00, 0xbb, 0xbb },
  12283. -{ 0x00, 0xbc, 0xbc },
  12284. -{ 0x00, 0xbd, 0xbd },
  12285. -{ 0x00, 0xbe, 0xbe },
  12286. -{ 0x00, 0xbf, 0xbf },
  12287. -{ 0x00, 0xc0, 0xc0 },
  12288. -{ 0x00, 0xc1, 0xc1 },
  12289. -{ 0x00, 0xc2, 0xc2 },
  12290. -{ 0x00, 0xc3, 0xc3 },
  12291. -{ 0x00, 0xc4, 0xc4 },
  12292. -{ 0x00, 0xc5, 0xc5 },
  12293. -{ 0x00, 0xc6, 0xc6 },
  12294. -{ 0x00, 0xc7, 0xc7 },
  12295. -{ 0x00, 0xc8, 0xc8 },
  12296. -{ 0x00, 0xc9, 0xc9 },
  12297. -{ 0x00, 0xca, 0xca },
  12298. -{ 0x00, 0xcb, 0xcb },
  12299. -{ 0x00, 0xcc, 0xcc },
  12300. -{ 0x00, 0xcd, 0xcd },
  12301. -{ 0x00, 0xce, 0xce },
  12302. -{ 0x00, 0xcf, 0xcf },
  12303. -{ 0x00, 0xd0, 0xd0 },
  12304. -{ 0x00, 0xd1, 0xd1 },
  12305. -{ 0x00, 0xd2, 0xd2 },
  12306. -{ 0x00, 0xd3, 0xd3 },
  12307. -{ 0x00, 0xd4, 0xd4 },
  12308. -{ 0x00, 0xd5, 0xd5 },
  12309. -{ 0x00, 0xd6, 0xd6 },
  12310. -{ 0x00, 0xd7, 0xd7 },
  12311. -{ 0x00, 0xd8, 0xd8 },
  12312. -{ 0x00, 0xd9, 0xd9 },
  12313. -{ 0x00, 0xda, 0xda },
  12314. -{ 0x00, 0xdb, 0xdb },
  12315. -{ 0x00, 0xdc, 0xdc },
  12316. -{ 0x00, 0xdd, 0xdd },
  12317. -{ 0x00, 0xde, 0xde },
  12318. -{ 0x00, 0xdf, 0xdf },
  12319. -{ 0x00, 0xe0, 0xe0 },
  12320. -{ 0x00, 0xe1, 0xe1 },
  12321. -{ 0x00, 0xe2, 0xe2 },
  12322. -{ 0x00, 0xe3, 0xe3 },
  12323. -{ 0x00, 0xe4, 0xe4 },
  12324. -{ 0x00, 0xe5, 0xe5 },
  12325. -{ 0x00, 0xe6, 0xe6 },
  12326. -{ 0x00, 0xe7, 0xe7 },
  12327. -{ 0x00, 0xe8, 0xe8 },
  12328. -{ 0x00, 0xe9, 0xe9 },
  12329. -{ 0x00, 0xea, 0xea },
  12330. -{ 0x00, 0xeb, 0xeb },
  12331. -{ 0x00, 0xec, 0xec },
  12332. -{ 0x00, 0xed, 0xed },
  12333. -{ 0x00, 0xee, 0xee },
  12334. -{ 0x00, 0xef, 0xef },
  12335. -{ 0x00, 0xf0, 0xf0 },
  12336. -{ 0x00, 0xf1, 0xf1 },
  12337. -{ 0x00, 0xf2, 0xf2 },
  12338. -{ 0x00, 0xf3, 0xf3 },
  12339. -{ 0x00, 0xf4, 0xf4 },
  12340. -{ 0x00, 0xf5, 0xf5 },
  12341. -{ 0x00, 0xf6, 0xf6 },
  12342. -{ 0x00, 0xf7, 0xf7 },
  12343. -{ 0x00, 0xf8, 0xf8 },
  12344. -{ 0x00, 0xf9, 0xf9 },
  12345. -{ 0x00, 0xfa, 0xfa },
  12346. -{ 0x00, 0xfb, 0xfb },
  12347. -{ 0x00, 0xfc, 0xfc },
  12348. -{ 0x00, 0xfd, 0xfd },
  12349. -{ 0x00, 0xfe, 0xfe },
  12350. -{ 0x00, 0xff, 0xff }
  12351. -};
  12352. -
  12353. -static struct cs_info tis620_tbl[] = {
  12354. -{ 0x00, 0x00, 0x00 },
  12355. -{ 0x00, 0x01, 0x01 },
  12356. -{ 0x00, 0x02, 0x02 },
  12357. -{ 0x00, 0x03, 0x03 },
  12358. -{ 0x00, 0x04, 0x04 },
  12359. -{ 0x00, 0x05, 0x05 },
  12360. -{ 0x00, 0x06, 0x06 },
  12361. -{ 0x00, 0x07, 0x07 },
  12362. -{ 0x00, 0x08, 0x08 },
  12363. -{ 0x00, 0x09, 0x09 },
  12364. -{ 0x00, 0x0a, 0x0a },
  12365. -{ 0x00, 0x0b, 0x0b },
  12366. -{ 0x00, 0x0c, 0x0c },
  12367. -{ 0x00, 0x0d, 0x0d },
  12368. -{ 0x00, 0x0e, 0x0e },
  12369. -{ 0x00, 0x0f, 0x0f },
  12370. -{ 0x00, 0x10, 0x10 },
  12371. -{ 0x00, 0x11, 0x11 },
  12372. -{ 0x00, 0x12, 0x12 },
  12373. -{ 0x00, 0x13, 0x13 },
  12374. -{ 0x00, 0x14, 0x14 },
  12375. -{ 0x00, 0x15, 0x15 },
  12376. -{ 0x00, 0x16, 0x16 },
  12377. -{ 0x00, 0x17, 0x17 },
  12378. -{ 0x00, 0x18, 0x18 },
  12379. -{ 0x00, 0x19, 0x19 },
  12380. -{ 0x00, 0x1a, 0x1a },
  12381. -{ 0x00, 0x1b, 0x1b },
  12382. -{ 0x00, 0x1c, 0x1c },
  12383. -{ 0x00, 0x1d, 0x1d },
  12384. -{ 0x00, 0x1e, 0x1e },
  12385. -{ 0x00, 0x1f, 0x1f },
  12386. -{ 0x00, 0x20, 0x20 },
  12387. -{ 0x00, 0x21, 0x21 },
  12388. -{ 0x00, 0x22, 0x22 },
  12389. -{ 0x00, 0x23, 0x23 },
  12390. -{ 0x00, 0x24, 0x24 },
  12391. -{ 0x00, 0x25, 0x25 },
  12392. -{ 0x00, 0x26, 0x26 },
  12393. -{ 0x00, 0x27, 0x27 },
  12394. -{ 0x00, 0x28, 0x28 },
  12395. -{ 0x00, 0x29, 0x29 },
  12396. -{ 0x00, 0x2a, 0x2a },
  12397. -{ 0x00, 0x2b, 0x2b },
  12398. -{ 0x00, 0x2c, 0x2c },
  12399. -{ 0x00, 0x2d, 0x2d },
  12400. -{ 0x00, 0x2e, 0x2e },
  12401. -{ 0x00, 0x2f, 0x2f },
  12402. -{ 0x00, 0x30, 0x30 },
  12403. -{ 0x00, 0x31, 0x31 },
  12404. -{ 0x00, 0x32, 0x32 },
  12405. -{ 0x00, 0x33, 0x33 },
  12406. -{ 0x00, 0x34, 0x34 },
  12407. -{ 0x00, 0x35, 0x35 },
  12408. -{ 0x00, 0x36, 0x36 },
  12409. -{ 0x00, 0x37, 0x37 },
  12410. -{ 0x00, 0x38, 0x38 },
  12411. -{ 0x00, 0x39, 0x39 },
  12412. -{ 0x00, 0x3a, 0x3a },
  12413. -{ 0x00, 0x3b, 0x3b },
  12414. -{ 0x00, 0x3c, 0x3c },
  12415. -{ 0x00, 0x3d, 0x3d },
  12416. -{ 0x00, 0x3e, 0x3e },
  12417. -{ 0x00, 0x3f, 0x3f },
  12418. -{ 0x00, 0x40, 0x40 },
  12419. -{ 0x01, 0x61, 0x41 },
  12420. -{ 0x01, 0x62, 0x42 },
  12421. -{ 0x01, 0x63, 0x43 },
  12422. -{ 0x01, 0x64, 0x44 },
  12423. -{ 0x01, 0x65, 0x45 },
  12424. -{ 0x01, 0x66, 0x46 },
  12425. -{ 0x01, 0x67, 0x47 },
  12426. -{ 0x01, 0x68, 0x48 },
  12427. -{ 0x01, 0x69, 0x49 },
  12428. -{ 0x01, 0x6a, 0x4a },
  12429. -{ 0x01, 0x6b, 0x4b },
  12430. -{ 0x01, 0x6c, 0x4c },
  12431. -{ 0x01, 0x6d, 0x4d },
  12432. -{ 0x01, 0x6e, 0x4e },
  12433. -{ 0x01, 0x6f, 0x4f },
  12434. -{ 0x01, 0x70, 0x50 },
  12435. -{ 0x01, 0x71, 0x51 },
  12436. -{ 0x01, 0x72, 0x52 },
  12437. -{ 0x01, 0x73, 0x53 },
  12438. -{ 0x01, 0x74, 0x54 },
  12439. -{ 0x01, 0x75, 0x55 },
  12440. -{ 0x01, 0x76, 0x56 },
  12441. -{ 0x01, 0x77, 0x57 },
  12442. -{ 0x01, 0x78, 0x58 },
  12443. -{ 0x01, 0x79, 0x59 },
  12444. -{ 0x01, 0x7a, 0x5a },
  12445. -{ 0x00, 0x5b, 0x5b },
  12446. -{ 0x00, 0x5c, 0x5c },
  12447. -{ 0x00, 0x5d, 0x5d },
  12448. -{ 0x00, 0x5e, 0x5e },
  12449. -{ 0x00, 0x5f, 0x5f },
  12450. -{ 0x00, 0x60, 0x60 },
  12451. -{ 0x00, 0x61, 0x41 },
  12452. -{ 0x00, 0x62, 0x42 },
  12453. -{ 0x00, 0x63, 0x43 },
  12454. -{ 0x00, 0x64, 0x44 },
  12455. -{ 0x00, 0x65, 0x45 },
  12456. -{ 0x00, 0x66, 0x46 },
  12457. -{ 0x00, 0x67, 0x47 },
  12458. -{ 0x00, 0x68, 0x48 },
  12459. -{ 0x00, 0x69, 0x49 },
  12460. -{ 0x00, 0x6a, 0x4a },
  12461. -{ 0x00, 0x6b, 0x4b },
  12462. -{ 0x00, 0x6c, 0x4c },
  12463. -{ 0x00, 0x6d, 0x4d },
  12464. -{ 0x00, 0x6e, 0x4e },
  12465. -{ 0x00, 0x6f, 0x4f },
  12466. -{ 0x00, 0x70, 0x50 },
  12467. -{ 0x00, 0x71, 0x51 },
  12468. -{ 0x00, 0x72, 0x52 },
  12469. -{ 0x00, 0x73, 0x53 },
  12470. -{ 0x00, 0x74, 0x54 },
  12471. -{ 0x00, 0x75, 0x55 },
  12472. -{ 0x00, 0x76, 0x56 },
  12473. -{ 0x00, 0x77, 0x57 },
  12474. -{ 0x00, 0x78, 0x58 },
  12475. -{ 0x00, 0x79, 0x59 },
  12476. -{ 0x00, 0x7a, 0x5a },
  12477. -{ 0x00, 0x7b, 0x7b },
  12478. -{ 0x00, 0x7c, 0x7c },
  12479. -{ 0x00, 0x7d, 0x7d },
  12480. -{ 0x00, 0x7e, 0x7e },
  12481. -{ 0x00, 0x7f, 0x7f },
  12482. -{ 0x00, 0x80, 0x80 },
  12483. -{ 0x00, 0x81, 0x81 },
  12484. -{ 0x00, 0x82, 0x82 },
  12485. -{ 0x00, 0x83, 0x83 },
  12486. -{ 0x00, 0x84, 0x84 },
  12487. -{ 0x00, 0x85, 0x85 },
  12488. -{ 0x00, 0x86, 0x86 },
  12489. -{ 0x00, 0x87, 0x87 },
  12490. -{ 0x00, 0x88, 0x88 },
  12491. -{ 0x00, 0x89, 0x89 },
  12492. -{ 0x00, 0x8a, 0x8a },
  12493. -{ 0x00, 0x8b, 0x8b },
  12494. -{ 0x00, 0x8c, 0x8c },
  12495. -{ 0x00, 0x8d, 0x8d },
  12496. -{ 0x00, 0x8e, 0x8e },
  12497. -{ 0x00, 0x8f, 0x8f },
  12498. -{ 0x00, 0x90, 0x90 },
  12499. -{ 0x00, 0x91, 0x91 },
  12500. -{ 0x00, 0x92, 0x92 },
  12501. -{ 0x00, 0x93, 0x93 },
  12502. -{ 0x00, 0x94, 0x94 },
  12503. -{ 0x00, 0x95, 0x95 },
  12504. -{ 0x00, 0x96, 0x96 },
  12505. -{ 0x00, 0x97, 0x97 },
  12506. -{ 0x00, 0x98, 0x98 },
  12507. -{ 0x00, 0x99, 0x99 },
  12508. -{ 0x00, 0x9a, 0x9a },
  12509. -{ 0x00, 0x9b, 0x9b },
  12510. -{ 0x00, 0x9c, 0x9c },
  12511. -{ 0x00, 0x9d, 0x9d },
  12512. -{ 0x00, 0x9e, 0x9e },
  12513. -{ 0x00, 0x9f, 0x9f },
  12514. -{ 0x00, 0xa0, 0xa0 },
  12515. -{ 0x00, 0xa1, 0xa1 },
  12516. -{ 0x00, 0xa2, 0xa2 },
  12517. -{ 0x00, 0xa3, 0xa3 },
  12518. -{ 0x00, 0xa4, 0xa4 },
  12519. -{ 0x00, 0xa5, 0xa5 },
  12520. -{ 0x00, 0xa6, 0xa6 },
  12521. -{ 0x00, 0xa7, 0xa7 },
  12522. -{ 0x00, 0xa8, 0xa8 },
  12523. -{ 0x00, 0xa9, 0xa9 },
  12524. -{ 0x00, 0xaa, 0xaa },
  12525. -{ 0x00, 0xab, 0xab },
  12526. -{ 0x00, 0xac, 0xac },
  12527. -{ 0x00, 0xad, 0xad },
  12528. -{ 0x00, 0xae, 0xae },
  12529. -{ 0x00, 0xaf, 0xaf },
  12530. -{ 0x00, 0xb0, 0xb0 },
  12531. -{ 0x00, 0xb1, 0xb1 },
  12532. -{ 0x00, 0xb2, 0xb2 },
  12533. -{ 0x00, 0xb3, 0xb3 },
  12534. -{ 0x00, 0xb4, 0xb4 },
  12535. -{ 0x00, 0xb5, 0xb5 },
  12536. -{ 0x00, 0xb6, 0xb6 },
  12537. -{ 0x00, 0xb7, 0xb7 },
  12538. -{ 0x00, 0xb8, 0xb8 },
  12539. -{ 0x00, 0xb9, 0xb9 },
  12540. -{ 0x00, 0xba, 0xba },
  12541. -{ 0x00, 0xbb, 0xbb },
  12542. -{ 0x00, 0xbc, 0xbc },
  12543. -{ 0x00, 0xbd, 0xbd },
  12544. -{ 0x00, 0xbe, 0xbe },
  12545. -{ 0x00, 0xbf, 0xbf },
  12546. -{ 0x00, 0xc0, 0xc0 },
  12547. -{ 0x00, 0xc1, 0xc1 },
  12548. -{ 0x00, 0xc2, 0xc2 },
  12549. -{ 0x00, 0xc3, 0xc3 },
  12550. -{ 0x00, 0xc4, 0xc4 },
  12551. -{ 0x00, 0xc5, 0xc5 },
  12552. -{ 0x00, 0xc6, 0xc6 },
  12553. -{ 0x00, 0xc7, 0xc7 },
  12554. -{ 0x00, 0xc8, 0xc8 },
  12555. -{ 0x00, 0xc9, 0xc9 },
  12556. -{ 0x00, 0xca, 0xca },
  12557. -{ 0x00, 0xcb, 0xcb },
  12558. -{ 0x00, 0xcc, 0xcc },
  12559. -{ 0x00, 0xcd, 0xcd },
  12560. -{ 0x00, 0xce, 0xce },
  12561. -{ 0x00, 0xcf, 0xcf },
  12562. -{ 0x00, 0xd0, 0xd0 },
  12563. -{ 0x00, 0xd1, 0xd1 },
  12564. -{ 0x00, 0xd2, 0xd2 },
  12565. -{ 0x00, 0xd3, 0xd3 },
  12566. -{ 0x00, 0xd4, 0xd4 },
  12567. -{ 0x00, 0xd5, 0xd5 },
  12568. -{ 0x00, 0xd6, 0xd6 },
  12569. -{ 0x00, 0xd7, 0xd7 },
  12570. -{ 0x00, 0xd8, 0xd8 },
  12571. -{ 0x00, 0xd9, 0xd9 },
  12572. -{ 0x00, 0xda, 0xda },
  12573. -{ 0x00, 0xdb, 0xdb },
  12574. -{ 0x00, 0xdc, 0xdc },
  12575. -{ 0x00, 0xdd, 0xdd },
  12576. -{ 0x00, 0xde, 0xde },
  12577. -{ 0x00, 0xdf, 0xdf },
  12578. -{ 0x00, 0xe0, 0xe0 },
  12579. -{ 0x00, 0xe1, 0xe1 },
  12580. -{ 0x00, 0xe2, 0xe2 },
  12581. -{ 0x00, 0xe3, 0xe3 },
  12582. -{ 0x00, 0xe4, 0xe4 },
  12583. -{ 0x00, 0xe5, 0xe5 },
  12584. -{ 0x00, 0xe6, 0xe6 },
  12585. -{ 0x00, 0xe7, 0xe7 },
  12586. -{ 0x00, 0xe8, 0xe8 },
  12587. -{ 0x00, 0xe9, 0xe9 },
  12588. -{ 0x00, 0xea, 0xea },
  12589. -{ 0x00, 0xeb, 0xeb },
  12590. -{ 0x00, 0xec, 0xec },
  12591. -{ 0x00, 0xed, 0xed },
  12592. -{ 0x00, 0xee, 0xee },
  12593. -{ 0x00, 0xef, 0xef },
  12594. -{ 0x00, 0xf0, 0xf0 },
  12595. -{ 0x00, 0xf1, 0xf1 },
  12596. -{ 0x00, 0xf2, 0xf2 },
  12597. -{ 0x00, 0xf3, 0xf3 },
  12598. -{ 0x00, 0xf4, 0xf4 },
  12599. -{ 0x00, 0xf5, 0xf5 },
  12600. -{ 0x00, 0xf6, 0xf6 },
  12601. -{ 0x00, 0xf7, 0xf7 },
  12602. -{ 0x00, 0xf8, 0xf8 },
  12603. -{ 0x00, 0xf9, 0xf9 },
  12604. -{ 0x00, 0xfa, 0xfa },
  12605. -{ 0x00, 0xfb, 0xfb },
  12606. -{ 0x00, 0xfc, 0xfc },
  12607. -{ 0x00, 0xfd, 0xfd },
  12608. -{ 0x00, 0xfe, 0xfe },
  12609. -{ 0x00, 0xff, 0xff }
  12610. -};
  12611. -
  12612. -struct enc_entry {
  12613. - const char * enc_name;
  12614. - struct cs_info * cs_table;
  12615. -};
  12616. -
  12617. -static struct enc_entry encds[] = {
  12618. - {"iso88591",iso1_tbl}, //ISO-8859-1
  12619. - {"iso88592",iso2_tbl}, //ISO-8859-2
  12620. - {"iso88593",iso3_tbl}, //ISO-8859-3
  12621. - {"iso88594",iso4_tbl}, //ISO-8859-4
  12622. - {"iso88595",iso5_tbl}, //ISO-8859-5
  12623. - {"iso88596",iso6_tbl}, //ISO-8859-6
  12624. - {"iso88597",iso7_tbl}, //ISO-8859-7
  12625. - {"iso88598",iso8_tbl}, //ISO-8859-8
  12626. - {"iso88599",iso9_tbl}, //ISO-8859-9
  12627. - {"iso885910",iso10_tbl}, //ISO-8859-10
  12628. - {"tis620",tis620_tbl}, //TIS-620/ISO-8859-11
  12629. - {"tis6202533",tis620_tbl}, //TIS-620/ISO-8859-11
  12630. - {"iso885911",tis620_tbl}, //TIS-620/ISO-8859-11
  12631. - {"iso885913", iso13_tbl}, //ISO-8859-13
  12632. - {"iso885914", iso14_tbl}, //ISO-8859-14
  12633. - {"iso885915", iso15_tbl}, //ISO-8859-15
  12634. - {"koi8r",koi8r_tbl}, //KOI8-R
  12635. - {"koi8u",koi8u_tbl}, //KOI8-U
  12636. - {"cp1251",cp1251_tbl}, //CP-1251
  12637. - {"microsoftcp1251",cp1251_tbl}, //microsoft-cp1251
  12638. - {"xisciias", iscii_devanagari_tbl}, //x-iscii-as
  12639. - {"isciidevanagari", iscii_devanagari_tbl} //ISCII-DEVANAGARI
  12640. -};
  12641. -
  12642. -/* map to lower case and remove non alphanumeric chars */
  12643. -static void toAsciiLowerAndRemoveNonAlphanumeric( const char* pName, char* pBuf )
  12644. -{
  12645. - while ( *pName )
  12646. - {
  12647. - /* A-Z */
  12648. - if ( (*pName >= 0x41) && (*pName <= 0x5A) )
  12649. - {
  12650. - *pBuf = (*pName)+0x20; /* toAsciiLower */
  12651. - pBuf++;
  12652. - }
  12653. - /* a-z, 0-9 */
  12654. - else if ( ((*pName >= 0x61) && (*pName <= 0x7A)) ||
  12655. - ((*pName >= 0x30) && (*pName <= 0x39)) )
  12656. - {
  12657. - *pBuf = *pName;
  12658. - pBuf++;
  12659. - }
  12660. -
  12661. - pName++;
  12662. - }
  12663. -
  12664. - *pBuf = '\0';
  12665. -}
  12666. -
  12667. -struct cs_info * get_current_cs(const char * es) {
  12668. - char *normalized_encoding = new char[strlen(es)+1];
  12669. - toAsciiLowerAndRemoveNonAlphanumeric(es, normalized_encoding);
  12670. -
  12671. - struct cs_info * ccs = NULL;
  12672. - int n = sizeof(encds) / sizeof(encds[0]);
  12673. - for (int i = 0; i < n; i++) {
  12674. - if (strcmp(normalized_encoding,encds[i].enc_name) == 0) {
  12675. - ccs = encds[i].cs_table;
  12676. - break;
  12677. - }
  12678. - }
  12679. -
  12680. - delete[] normalized_encoding;
  12681. -
  12682. - if (!ccs) {
  12683. - HUNSPELL_WARNING(stderr, "error: unknown encoding %s: using %s as fallback\n", es, encds[0].enc_name);
  12684. - ccs = encds[0].cs_table;
  12685. - }
  12686. -
  12687. - return ccs;
  12688. -}
  12689. -#else
  12690. -// XXX This function was rewritten for mozilla. Instead of storing the
  12691. -// conversion tables static in this file, create them when needed
  12692. -// with help the mozilla backend.
  12693. -struct cs_info * get_current_cs(const char * es) {
  12694. - struct cs_info *ccs = new cs_info[256];
  12695. - // Initialze the array with dummy data so that we wouldn't need
  12696. - // to return null in case of failures.
  12697. - for (int i = 0; i <= 0xff; ++i) {
  12698. - ccs[i].ccase = false;
  12699. - ccs[i].clower = i;
  12700. - ccs[i].cupper = i;
  12701. - }
  12702. -
  12703. -
  12704. - nsCOMPtr<nsIUnicodeEncoder> encoder;
  12705. - nsCOMPtr<nsIUnicodeDecoder> decoder;
  12706. -
  12707. - nsresult rv;
  12708. - nsCOMPtr<nsICharsetConverterManager> ccm = do_GetService(kCharsetConverterManagerCID, &rv);
  12709. - if (NS_FAILED(rv))
  12710. - return ccs;
  12711. -
  12712. - rv = ccm->GetUnicodeEncoder(es, getter_AddRefs(encoder));
  12713. - if (NS_FAILED(rv))
  12714. - return ccs;
  12715. - encoder->SetOutputErrorBehavior(encoder->kOnError_Signal, nsnull, '?');
  12716. - rv = ccm->GetUnicodeDecoder(es, getter_AddRefs(decoder));
  12717. - if (NS_FAILED(rv))
  12718. - return ccs;
  12719. - decoder->SetInputErrorBehavior(decoder->kOnError_Signal);
  12720. -
  12721. - if (NS_FAILED(rv))
  12722. - return ccs;
  12723. -
  12724. - for (unsigned int i = 0; i <= 0xff; ++i) {
  12725. - PRBool success = PR_FALSE;
  12726. - // We want to find the upper/lowercase equivalents of each byte
  12727. - // in this 1-byte character encoding. Call our encoding/decoding
  12728. - // APIs separately for each byte since they may reject some of the
  12729. - // bytes, and we want to handle errors separately for each byte.
  12730. - char lower, upper;
  12731. - do {
  12732. - if (i == 0)
  12733. - break;
  12734. - const char source = char(i);
  12735. - PRUnichar uni, uniCased;
  12736. - PRInt32 charLength = 1, uniLength = 1;
  12737. -
  12738. - rv = decoder->Convert(&source, &charLength, &uni, &uniLength);
  12739. - // Explicitly check NS_OK because we don't want to allow
  12740. - // NS_OK_UDEC_MOREOUTPUT or NS_OK_UDEC_MOREINPUT.
  12741. - if (rv != NS_OK || charLength != 1 || uniLength != 1)
  12742. - break;
  12743. - uniCased = ToLowerCase(uni);
  12744. - rv = encoder->Convert(&uniCased, &uniLength, &lower, &charLength);
  12745. - // Explicitly check NS_OK because we don't want to allow
  12746. - // NS_OK_UDEC_MOREOUTPUT or NS_OK_UDEC_MOREINPUT.
  12747. - if (rv != NS_OK || charLength != 1 || uniLength != 1)
  12748. - break;
  12749. -
  12750. - uniCased = ToUpperCase(uni);
  12751. - rv = encoder->Convert(&uniCased, &uniLength, &upper, &charLength);
  12752. - // Explicitly check NS_OK because we don't want to allow
  12753. - // NS_OK_UDEC_MOREOUTPUT or NS_OK_UDEC_MOREINPUT.
  12754. - if (rv != NS_OK || charLength != 1 || uniLength != 1)
  12755. - break;
  12756. -
  12757. - success = PR_TRUE;
  12758. - } while (0);
  12759. -
  12760. - if (success) {
  12761. - ccs[i].cupper = upper;
  12762. - ccs[i].clower = lower;
  12763. - } else {
  12764. - ccs[i].cupper = i;
  12765. - ccs[i].clower = i;
  12766. - }
  12767. -
  12768. - if (ccs[i].clower != (unsigned char)i)
  12769. - ccs[i].ccase = true;
  12770. - else
  12771. - ccs[i].ccase = false;
  12772. - }
  12773. -
  12774. - return ccs;
  12775. -}
  12776. -#endif
  12777. -
  12778. -// primitive isalpha() replacement for tokenization
  12779. -char * get_casechars(const char * enc) {
  12780. - struct cs_info * csconv = get_current_cs(enc);
  12781. - char expw[MAXLNLEN];
  12782. - char * p = expw;
  12783. - for (int i = 0; i <= 255; i++) {
  12784. - if ((csconv[i].cupper != csconv[i].clower)) {
  12785. - *p = (char) i;
  12786. - p++;
  12787. - }
  12788. - }
  12789. - *p = '\0';
  12790. -#ifdef MOZILLA_CLIENT
  12791. - delete [] csconv;
  12792. -#endif
  12793. - return mystrdup(expw);
  12794. -}
  12795. -
  12796. -// language to encoding default map
  12797. -
  12798. -struct lang_map {
  12799. - const char * lang;
  12800. - int num;
  12801. -};
  12802. -
  12803. -static struct lang_map lang2enc[] = {
  12804. -{"ar", LANG_ar},
  12805. -{"az", LANG_az},
  12806. -{"az_AZ", LANG_az}, // for back-compatibility
  12807. -{"bg", LANG_bg},
  12808. -{"ca", LANG_ca},
  12809. -{"cs", LANG_cs},
  12810. -{"da", LANG_da},
  12811. -{"de", LANG_de},
  12812. -{"el", LANG_el},
  12813. -{"en", LANG_en},
  12814. -{"es", LANG_es},
  12815. -{"eu", LANG_eu},
  12816. -{"gl", LANG_gl},
  12817. -{"fr", LANG_fr},
  12818. -{"hr", LANG_hr},
  12819. -{"hu", LANG_hu},
  12820. -{"hu_HU", LANG_hu}, // for back-compatibility
  12821. -{"it", LANG_it},
  12822. -{"la", LANG_la},
  12823. -{"lv", LANG_lv},
  12824. -{"nl", LANG_nl},
  12825. -{"pl", LANG_pl},
  12826. -{"pt", LANG_pt},
  12827. -{"sv", LANG_sv},
  12828. -{"tr", LANG_tr},
  12829. -{"tr_TR", LANG_tr}, // for back-compatibility
  12830. -{"ru", LANG_ru},
  12831. -{"uk", LANG_uk}
  12832. -};
  12833. -
  12834. -
  12835. -int get_lang_num(const char * lang) {
  12836. - int n = sizeof(lang2enc) / sizeof(lang2enc[0]);
  12837. - for (int i = 0; i < n; i++) {
  12838. - if (strcmp(lang, lang2enc[i].lang) == 0) {
  12839. - return lang2enc[i].num;
  12840. - }
  12841. - }
  12842. - return LANG_xx;
  12843. -}
  12844. -
  12845. -#ifndef OPENOFFICEORG
  12846. -#ifndef MOZILLA_CLIENT
  12847. -int initialize_utf_tbl() {
  12848. - utf_tbl_count++;
  12849. - if (utf_tbl) return 0;
  12850. - utf_tbl = (unicode_info2 *) malloc(CONTSIZE * sizeof(unicode_info2));
  12851. - if (utf_tbl) {
  12852. - size_t j;
  12853. - for (j = 0; j < CONTSIZE; j++) {
  12854. - utf_tbl[j].cletter = 0;
  12855. - utf_tbl[j].clower = (unsigned short) j;
  12856. - utf_tbl[j].cupper = (unsigned short) j;
  12857. - }
  12858. - for (j = 0; j < UTF_LST_LEN; j++) {
  12859. - utf_tbl[utf_lst[j].c].cletter = 1;
  12860. - utf_tbl[utf_lst[j].c].clower = utf_lst[j].clower;
  12861. - utf_tbl[utf_lst[j].c].cupper = utf_lst[j].cupper;
  12862. - }
  12863. - } else return 1;
  12864. - return 0;
  12865. -}
  12866. -#endif
  12867. -#endif
  12868. -
  12869. -void free_utf_tbl() {
  12870. - if (utf_tbl_count > 0) utf_tbl_count--;
  12871. - if (utf_tbl && (utf_tbl_count == 0)) {
  12872. - free(utf_tbl);
  12873. - utf_tbl = NULL;
  12874. - }
  12875. -}
  12876. -
  12877. -unsigned short unicodetoupper(unsigned short c, int langnum)
  12878. -{
  12879. - // In Azeri and Turkish, I and i dictinct letters:
  12880. - // There are a dotless lower case i pair of upper `I',
  12881. - // and an upper I with dot pair of lower `i'.
  12882. - if (c == 0x0069 && ((langnum == LANG_az) || (langnum == LANG_tr)))
  12883. - return 0x0130;
  12884. -#ifdef OPENOFFICEORG
  12885. - return static_cast<unsigned short>(u_toupper(c));
  12886. -#else
  12887. -#ifdef MOZILLA_CLIENT
  12888. - return ToUpperCase((PRUnichar) c);
  12889. -#else
  12890. - return (utf_tbl) ? utf_tbl[c].cupper : c;
  12891. -#endif
  12892. -#endif
  12893. -}
  12894. -
  12895. -unsigned short unicodetolower(unsigned short c, int langnum)
  12896. -{
  12897. - // In Azeri and Turkish, I and i dictinct letters:
  12898. - // There are a dotless lower case i pair of upper `I',
  12899. - // and an upper I with dot pair of lower `i'.
  12900. - if (c == 0x0049 && ((langnum == LANG_az) || (langnum == LANG_tr)))
  12901. - return 0x0131;
  12902. -#ifdef OPENOFFICEORG
  12903. - return static_cast<unsigned short>(u_tolower(c));
  12904. -#else
  12905. -#ifdef MOZILLA_CLIENT
  12906. - return ToLowerCase((PRUnichar) c);
  12907. -#else
  12908. - return (utf_tbl) ? utf_tbl[c].clower : c;
  12909. -#endif
  12910. -#endif
  12911. -}
  12912. -
  12913. -int unicodeisalpha(unsigned short c)
  12914. -{
  12915. -#ifdef OPENOFFICEORG
  12916. - return u_isalpha(c);
  12917. -#else
  12918. - return (utf_tbl) ? utf_tbl[c].cletter : 0;
  12919. -#endif
  12920. -}
  12921. -
  12922. -/* get type of capitalization */
  12923. -int get_captype(char * word, int nl, cs_info * csconv) {
  12924. - // now determine the capitalization type of the first nl letters
  12925. - int ncap = 0;
  12926. - int nneutral = 0;
  12927. - int firstcap = 0;
  12928. - if (csconv == NULL) return NOCAP;
  12929. - for (char * q = word; *q != '\0'; q++) {
  12930. - if (csconv[*((unsigned char *)q)].ccase) ncap++;
  12931. - if (csconv[*((unsigned char *)q)].cupper == csconv[*((unsigned char *)q)].clower) nneutral++;
  12932. - }
  12933. - if (ncap) {
  12934. - firstcap = csconv[*((unsigned char *) word)].ccase;
  12935. - }
  12936. -
  12937. - // now finally set the captype
  12938. - if (ncap == 0) {
  12939. - return NOCAP;
  12940. - } else if ((ncap == 1) && firstcap) {
  12941. - return INITCAP;
  12942. - } else if ((ncap == nl) || ((ncap + nneutral) == nl)) {
  12943. - return ALLCAP;
  12944. - } else if ((ncap > 1) && firstcap) {
  12945. - return HUHINITCAP;
  12946. - }
  12947. - return HUHCAP;
  12948. -}
  12949. -
  12950. -int get_captype_utf8(w_char * word, int nl, int langnum) {
  12951. - // now determine the capitalization type of the first nl letters
  12952. - int ncap = 0;
  12953. - int nneutral = 0;
  12954. - int firstcap = 0;
  12955. - unsigned short idx;
  12956. - // don't check too long words
  12957. - if (nl >= MAXWORDLEN) return 0;
  12958. - // big Unicode character (non BMP area)
  12959. - if (nl == -1) return NOCAP;
  12960. - for (int i = 0; i < nl; i++) {
  12961. - idx = (word[i].h << 8) + word[i].l;
  12962. - if (idx != unicodetolower(idx, langnum)) ncap++;
  12963. - if (unicodetoupper(idx, langnum) == unicodetolower(idx, langnum)) nneutral++;
  12964. - }
  12965. - if (ncap) {
  12966. - idx = (word[0].h << 8) + word[0].l;
  12967. - firstcap = (idx != unicodetolower(idx, langnum));
  12968. - }
  12969. -
  12970. - // now finally set the captype
  12971. - if (ncap == 0) {
  12972. - return NOCAP;
  12973. - } else if ((ncap == 1) && firstcap) {
  12974. - return INITCAP;
  12975. - } else if ((ncap == nl) || ((ncap + nneutral) == nl)) {
  12976. - return ALLCAP;
  12977. - } else if ((ncap > 1) && firstcap) {
  12978. - return HUHINITCAP;
  12979. - }
  12980. - return HUHCAP;
  12981. -}
  12982. -
  12983. -
  12984. -// strip all ignored characters in the string
  12985. -void remove_ignored_chars_utf(char * word, unsigned short ignored_chars[], int ignored_len)
  12986. -{
  12987. - w_char w[MAXWORDLEN];
  12988. - w_char w2[MAXWORDLEN];
  12989. - int i;
  12990. - int j;
  12991. - int len = u8_u16(w, MAXWORDLEN, word);
  12992. - for (i = 0, j = 0; i < len; i++) {
  12993. - if (!flag_bsearch(ignored_chars, ((unsigned short *) w)[i], ignored_len)) {
  12994. - w2[j] = w[i];
  12995. - j++;
  12996. - }
  12997. - }
  12998. - if (j < i) u16_u8(word, MAXWORDUTF8LEN, w2, j);
  12999. -}
  13000. -
  13001. -// strip all ignored characters in the string
  13002. -void remove_ignored_chars(char * word, char * ignored_chars)
  13003. -{
  13004. - for (char * p = word; *p != '\0'; p++) {
  13005. - if (!strchr(ignored_chars, *p)) {
  13006. - *word = *p;
  13007. - word++;
  13008. - }
  13009. - }
  13010. - *word = '\0';
  13011. -}
  13012. -
  13013. -int parse_string(char * line, char ** out, int ln)
  13014. -{
  13015. - char * tp = line;
  13016. - char * piece;
  13017. - int i = 0;
  13018. - int np = 0;
  13019. - if (*out) {
  13020. - HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions\n", ln);
  13021. - return 1;
  13022. - }
  13023. - piece = mystrsep(&tp, 0);
  13024. - while (piece) {
  13025. - if (*piece != '\0') {
  13026. - switch(i) {
  13027. - case 0: { np++; break; }
  13028. - case 1: {
  13029. - *out = mystrdup(piece);
  13030. - if (!*out) return 1;
  13031. - np++;
  13032. - break;
  13033. - }
  13034. - default: break;
  13035. - }
  13036. - i++;
  13037. - }
  13038. - // free(piece);
  13039. - piece = mystrsep(&tp, 0);
  13040. - }
  13041. - if (np != 2) {
  13042. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", ln);
  13043. - return 1;
  13044. - }
  13045. - return 0;
  13046. -}
  13047. -
  13048. -int parse_array(char * line, char ** out, unsigned short ** out_utf16,
  13049. - int * out_utf16_len, int utf8, int ln) {
  13050. - if (parse_string(line, out, ln)) return 1;
  13051. - if (utf8) {
  13052. - w_char w[MAXWORDLEN];
  13053. - int n = u8_u16(w, MAXWORDLEN, *out);
  13054. - if (n > 0) {
  13055. - flag_qsort((unsigned short *) w, 0, n);
  13056. - *out_utf16 = (unsigned short *) malloc(n * sizeof(unsigned short));
  13057. - if (!*out_utf16) return 1;
  13058. - memcpy(*out_utf16, w, n * sizeof(unsigned short));
  13059. - }
  13060. - *out_utf16_len = n;
  13061. - }
  13062. - return 0;
  13063. -}
  13064. diff --git a/src/hunspell/csutil.hxx b/src/hunspell/csutil.hxx
  13065. deleted file mode 100644
  13066. index e034b53fd2..0000000000
  13067. --- a/src/hunspell/csutil.hxx
  13068. +++ /dev/null
  13069. @@ -1,223 +0,0 @@
  13070. -#ifndef __CSUTILHXX__
  13071. -#define __CSUTILHXX__
  13072. -
  13073. -#include "hunvisapi.h"
  13074. -
  13075. -// First some base level utility routines
  13076. -
  13077. -#include <string.h>
  13078. -#include "w_char.hxx"
  13079. -#include "htypes.hxx"
  13080. -
  13081. -#ifdef MOZILLA_CLIENT
  13082. -#include "nscore.h" // for mozalloc headers
  13083. -#endif
  13084. -
  13085. -// casing
  13086. -#define NOCAP 0
  13087. -#define INITCAP 1
  13088. -#define ALLCAP 2
  13089. -#define HUHCAP 3
  13090. -#define HUHINITCAP 4
  13091. -
  13092. -// default encoding and keystring
  13093. -#define SPELL_ENCODING "ISO8859-1"
  13094. -#define SPELL_KEYSTRING "qwertyuiop|asdfghjkl|zxcvbnm"
  13095. -
  13096. -// default morphological fields
  13097. -#define MORPH_STEM "st:"
  13098. -#define MORPH_ALLOMORPH "al:"
  13099. -#define MORPH_POS "po:"
  13100. -#define MORPH_DERI_PFX "dp:"
  13101. -#define MORPH_INFL_PFX "ip:"
  13102. -#define MORPH_TERM_PFX "tp:"
  13103. -#define MORPH_DERI_SFX "ds:"
  13104. -#define MORPH_INFL_SFX "is:"
  13105. -#define MORPH_TERM_SFX "ts:"
  13106. -#define MORPH_SURF_PFX "sp:"
  13107. -#define MORPH_FREQ "fr:"
  13108. -#define MORPH_PHON "ph:"
  13109. -#define MORPH_HYPH "hy:"
  13110. -#define MORPH_PART "pa:"
  13111. -#define MORPH_FLAG "fl:"
  13112. -#define MORPH_HENTRY "_H:"
  13113. -#define MORPH_TAG_LEN strlen(MORPH_STEM)
  13114. -
  13115. -#define MSEP_FLD ' '
  13116. -#define MSEP_REC '\n'
  13117. -#define MSEP_ALT '\v'
  13118. -
  13119. -// default flags
  13120. -#define DEFAULTFLAGS 65510
  13121. -#define FORBIDDENWORD 65510
  13122. -#define ONLYUPCASEFLAG 65511
  13123. -
  13124. -// fopen or optional _wfopen to fix long pathname problem of WIN32
  13125. -LIBHUNSPELL_DLL_EXPORTED FILE * myfopen(const char * path, const char * mode);
  13126. -
  13127. -// convert UTF-16 characters to UTF-8
  13128. -LIBHUNSPELL_DLL_EXPORTED char * u16_u8(char * dest, int size, const w_char * src, int srclen);
  13129. -
  13130. -// convert UTF-8 characters to UTF-16
  13131. -LIBHUNSPELL_DLL_EXPORTED int u8_u16(w_char * dest, int size, const char * src);
  13132. -
  13133. -// sort 2-byte vector
  13134. -LIBHUNSPELL_DLL_EXPORTED void flag_qsort(unsigned short flags[], int begin, int end);
  13135. -
  13136. -// binary search in 2-byte vector
  13137. -LIBHUNSPELL_DLL_EXPORTED int flag_bsearch(unsigned short flags[], unsigned short flag, int right);
  13138. -
  13139. -// remove end of line char(s)
  13140. -LIBHUNSPELL_DLL_EXPORTED void mychomp(char * s);
  13141. -
  13142. -// duplicate string
  13143. -LIBHUNSPELL_DLL_EXPORTED char * mystrdup(const char * s);
  13144. -
  13145. -// strcat for limited length destination string
  13146. -LIBHUNSPELL_DLL_EXPORTED char * mystrcat(char * dest, const char * st, int max);
  13147. -
  13148. -// duplicate reverse of string
  13149. -LIBHUNSPELL_DLL_EXPORTED char * myrevstrdup(const char * s);
  13150. -
  13151. -// parse into tokens with char delimiter
  13152. -LIBHUNSPELL_DLL_EXPORTED char * mystrsep(char ** sptr, const char delim);
  13153. -// parse into tokens with char delimiter
  13154. -LIBHUNSPELL_DLL_EXPORTED char * mystrsep2(char ** sptr, const char delim);
  13155. -
  13156. -// parse into tokens with char delimiter
  13157. -LIBHUNSPELL_DLL_EXPORTED char * mystrrep(char *, const char *, const char *);
  13158. -
  13159. -// append s to ends of every lines in text
  13160. -LIBHUNSPELL_DLL_EXPORTED void strlinecat(char * lines, const char * s);
  13161. -
  13162. -// tokenize into lines with new line
  13163. -LIBHUNSPELL_DLL_EXPORTED int line_tok(const char * text, char *** lines, char breakchar);
  13164. -
  13165. -// tokenize into lines with new line and uniq in place
  13166. -LIBHUNSPELL_DLL_EXPORTED char * line_uniq(char * text, char breakchar);
  13167. -LIBHUNSPELL_DLL_EXPORTED char * line_uniq_app(char ** text, char breakchar);
  13168. -
  13169. -// change oldchar to newchar in place
  13170. -LIBHUNSPELL_DLL_EXPORTED char * tr(char * text, char oldc, char newc);
  13171. -
  13172. -// reverse word
  13173. -LIBHUNSPELL_DLL_EXPORTED int reverseword(char *);
  13174. -
  13175. -// reverse word
  13176. -LIBHUNSPELL_DLL_EXPORTED int reverseword_utf(char *);
  13177. -
  13178. -// remove duplicates
  13179. -LIBHUNSPELL_DLL_EXPORTED int uniqlist(char ** list, int n);
  13180. -
  13181. -// free character array list
  13182. -LIBHUNSPELL_DLL_EXPORTED void freelist(char *** list, int n);
  13183. -
  13184. -// character encoding information
  13185. -struct cs_info {
  13186. - unsigned char ccase;
  13187. - unsigned char clower;
  13188. - unsigned char cupper;
  13189. -};
  13190. -
  13191. -LIBHUNSPELL_DLL_EXPORTED int initialize_utf_tbl();
  13192. -LIBHUNSPELL_DLL_EXPORTED void free_utf_tbl();
  13193. -LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetoupper(unsigned short c, int langnum);
  13194. -LIBHUNSPELL_DLL_EXPORTED unsigned short unicodetolower(unsigned short c, int langnum);
  13195. -LIBHUNSPELL_DLL_EXPORTED int unicodeisalpha(unsigned short c);
  13196. -
  13197. -LIBHUNSPELL_DLL_EXPORTED struct cs_info * get_current_cs(const char * es);
  13198. -
  13199. -// get language identifiers of language codes
  13200. -LIBHUNSPELL_DLL_EXPORTED int get_lang_num(const char * lang);
  13201. -
  13202. -// get characters of the given 8bit encoding with lower- and uppercase forms
  13203. -LIBHUNSPELL_DLL_EXPORTED char * get_casechars(const char * enc);
  13204. -
  13205. -// convert null terminated string to all caps using encoding
  13206. -LIBHUNSPELL_DLL_EXPORTED void enmkallcap(char * d, const char * p, const char * encoding);
  13207. -
  13208. -// convert null terminated string to all little using encoding
  13209. -LIBHUNSPELL_DLL_EXPORTED void enmkallsmall(char * d, const char * p, const char * encoding);
  13210. -
  13211. -// convert null terminated string to have initial capital using encoding
  13212. -LIBHUNSPELL_DLL_EXPORTED void enmkinitcap(char * d, const char * p, const char * encoding);
  13213. -
  13214. -// convert null terminated string to all caps
  13215. -LIBHUNSPELL_DLL_EXPORTED void mkallcap(char * p, const struct cs_info * csconv);
  13216. -
  13217. -// convert null terminated string to all little
  13218. -LIBHUNSPELL_DLL_EXPORTED void mkallsmall(char * p, const struct cs_info * csconv);
  13219. -
  13220. -// convert null terminated string to have initial capital
  13221. -LIBHUNSPELL_DLL_EXPORTED void mkinitcap(char * p, const struct cs_info * csconv);
  13222. -
  13223. -// convert first nc characters of UTF-8 string to little
  13224. -LIBHUNSPELL_DLL_EXPORTED void mkallsmall_utf(w_char * u, int nc, int langnum);
  13225. -
  13226. -// convert first nc characters of UTF-8 string to capital
  13227. -LIBHUNSPELL_DLL_EXPORTED void mkallcap_utf(w_char * u, int nc, int langnum);
  13228. -
  13229. -// get type of capitalization
  13230. -LIBHUNSPELL_DLL_EXPORTED int get_captype(char * q, int nl, cs_info *);
  13231. -
  13232. -// get type of capitalization (UTF-8)
  13233. -LIBHUNSPELL_DLL_EXPORTED int get_captype_utf8(w_char * q, int nl, int langnum);
  13234. -
  13235. -// strip all ignored characters in the string
  13236. -LIBHUNSPELL_DLL_EXPORTED void remove_ignored_chars_utf(char * word, unsigned short ignored_chars[], int ignored_len);
  13237. -
  13238. -// strip all ignored characters in the string
  13239. -LIBHUNSPELL_DLL_EXPORTED void remove_ignored_chars(char * word, char * ignored_chars);
  13240. -
  13241. -LIBHUNSPELL_DLL_EXPORTED int parse_string(char * line, char ** out, int ln);
  13242. -
  13243. -LIBHUNSPELL_DLL_EXPORTED int parse_array(char * line, char ** out, unsigned short ** out_utf16,
  13244. - int * out_utf16_len, int utf8, int ln);
  13245. -
  13246. -LIBHUNSPELL_DLL_EXPORTED int fieldlen(const char * r);
  13247. -LIBHUNSPELL_DLL_EXPORTED char * copy_field(char * dest, const char * morph, const char * var);
  13248. -
  13249. -LIBHUNSPELL_DLL_EXPORTED int morphcmp(const char * s, const char * t);
  13250. -
  13251. -LIBHUNSPELL_DLL_EXPORTED int get_sfxcount(const char * morph);
  13252. -
  13253. -// conversion function for protected memory
  13254. -LIBHUNSPELL_DLL_EXPORTED void store_pointer(char * dest, char * source);
  13255. -
  13256. -// conversion function for protected memory
  13257. -LIBHUNSPELL_DLL_EXPORTED char * get_stored_pointer(const char * s);
  13258. -
  13259. -// hash entry macros
  13260. -LIBHUNSPELL_DLL_EXPORTED inline char* HENTRY_DATA(struct hentry *h)
  13261. -{
  13262. - char *ret;
  13263. - if (!h->var)
  13264. - ret = NULL;
  13265. - else if (h->var & H_OPT_ALIASM)
  13266. - ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1);
  13267. - else
  13268. - ret = HENTRY_WORD(h) + h->blen + 1;
  13269. - return ret;
  13270. -}
  13271. -
  13272. -// NULL-free version for warning-free OOo build
  13273. -LIBHUNSPELL_DLL_EXPORTED inline const char* HENTRY_DATA2(const struct hentry *h)
  13274. -{
  13275. - const char *ret;
  13276. - if (!h->var)
  13277. - ret = "";
  13278. - else if (h->var & H_OPT_ALIASM)
  13279. - ret = get_stored_pointer(HENTRY_WORD(h) + h->blen + 1);
  13280. - else
  13281. - ret = HENTRY_WORD(h) + h->blen + 1;
  13282. - return ret;
  13283. -}
  13284. -
  13285. -LIBHUNSPELL_DLL_EXPORTED inline char* HENTRY_FIND(struct hentry *h, const char *p)
  13286. -{
  13287. - return (HENTRY_DATA(h) ? strstr(HENTRY_DATA(h), p) : NULL);
  13288. -}
  13289. -
  13290. -#define w_char_eq(a,b) (((a).l == (b).l) && ((a).h == (b).h))
  13291. -
  13292. -#endif
  13293. diff --git a/src/hunspell/dictmgr.cxx b/src/hunspell/dictmgr.cxx
  13294. deleted file mode 100644
  13295. index a94429e593..0000000000
  13296. --- a/src/hunspell/dictmgr.cxx
  13297. +++ /dev/null
  13298. @@ -1,182 +0,0 @@
  13299. -
  13300. -#include <stdlib.h>
  13301. -#include <string.h>
  13302. -#include <ctype.h>
  13303. -#include <stdio.h>
  13304. -
  13305. -#include "dictmgr.hxx"
  13306. -#include "csutil.hxx"
  13307. -
  13308. -DictMgr::DictMgr(const char * dictpath, const char * etype) : numdict(0)
  13309. -{
  13310. - // load list of etype entries
  13311. - pdentry = (dictentry *)malloc(MAXDICTIONARIES*sizeof(struct dictentry));
  13312. - if (pdentry) {
  13313. - if (parse_file(dictpath, etype)) {
  13314. - numdict = 0;
  13315. - // no dictionary.lst found is okay
  13316. - }
  13317. - }
  13318. -}
  13319. -
  13320. -
  13321. -DictMgr::~DictMgr()
  13322. -{
  13323. - dictentry * pdict = NULL;
  13324. - if (pdentry) {
  13325. - pdict = pdentry;
  13326. - for (int i=0;i<numdict;i++) {
  13327. - if (pdict->lang) {
  13328. - free(pdict->lang);
  13329. - pdict->lang = NULL;
  13330. - }
  13331. - if (pdict->region) {
  13332. - free(pdict->region);
  13333. - pdict->region=NULL;
  13334. - }
  13335. - if (pdict->filename) {
  13336. - free(pdict->filename);
  13337. - pdict->filename = NULL;
  13338. - }
  13339. - pdict++;
  13340. - }
  13341. - free(pdentry);
  13342. - pdentry = NULL;
  13343. - pdict = NULL;
  13344. - }
  13345. - numdict = 0;
  13346. -}
  13347. -
  13348. -
  13349. -// read in list of etype entries and build up structure to describe them
  13350. -int DictMgr::parse_file(const char * dictpath, const char * etype)
  13351. -{
  13352. -
  13353. - int i;
  13354. - char line[MAXDICTENTRYLEN+1];
  13355. - dictentry * pdict = pdentry;
  13356. -
  13357. - // open the dictionary list file
  13358. - FILE * dictlst;
  13359. - dictlst = myfopen(dictpath,"r");
  13360. - if (!dictlst) {
  13361. - return 1;
  13362. - }
  13363. -
  13364. - // step one is to parse the dictionary list building up the
  13365. - // descriptive structures
  13366. -
  13367. - // read in each line ignoring any that dont start with etype
  13368. - while (fgets(line,MAXDICTENTRYLEN,dictlst)) {
  13369. - mychomp(line);
  13370. -
  13371. - /* parse in a dictionary entry */
  13372. - if (strncmp(line,etype,4) == 0) {
  13373. - if (numdict < MAXDICTIONARIES) {
  13374. - char * tp = line;
  13375. - char * piece;
  13376. - i = 0;
  13377. - while ((piece=mystrsep(&tp,' '))) {
  13378. - if (*piece != '\0') {
  13379. - switch(i) {
  13380. - case 0: break;
  13381. - case 1: pdict->lang = mystrdup(piece); break;
  13382. - case 2: if (strcmp (piece, "ANY") == 0)
  13383. - pdict->region = mystrdup("");
  13384. - else
  13385. - pdict->region = mystrdup(piece);
  13386. - break;
  13387. - case 3: pdict->filename = mystrdup(piece); break;
  13388. - default: break;
  13389. - }
  13390. - i++;
  13391. - }
  13392. - free(piece);
  13393. - }
  13394. - if (i == 4) {
  13395. - numdict++;
  13396. - pdict++;
  13397. - } else {
  13398. - switch (i) {
  13399. - case 3:
  13400. - free(pdict->region);
  13401. - pdict->region=NULL;
  13402. - /* FALLTHROUGH */
  13403. - case 2:
  13404. - free(pdict->lang);
  13405. - pdict->lang=NULL;
  13406. - default:
  13407. - break;
  13408. - }
  13409. - fprintf(stderr,"dictionary list corruption in line \"%s\"\n",line);
  13410. - fflush(stderr);
  13411. - }
  13412. - }
  13413. - }
  13414. - }
  13415. - fclose(dictlst);
  13416. - return 0;
  13417. -}
  13418. -
  13419. -// return text encoding of dictionary
  13420. -int DictMgr::get_list(dictentry ** ppentry)
  13421. -{
  13422. - *ppentry = pdentry;
  13423. - return numdict;
  13424. -}
  13425. -
  13426. -
  13427. -
  13428. -// strip strings into token based on single char delimiter
  13429. -// acts like strsep() but only uses a delim char and not
  13430. -// a delim string
  13431. -
  13432. -char * DictMgr::mystrsep(char ** stringp, const char delim)
  13433. -{
  13434. - char * rv = NULL;
  13435. - char * mp = *stringp;
  13436. - size_t n = strlen(mp);
  13437. - if (n > 0) {
  13438. - char * dp = (char *)memchr(mp,(int)((unsigned char)delim),n);
  13439. - if (dp) {
  13440. - *stringp = dp+1;
  13441. - size_t nc = dp - mp;
  13442. - rv = (char *) malloc(nc+1);
  13443. - if (rv) {
  13444. - memcpy(rv,mp,nc);
  13445. - *(rv+nc) = '\0';
  13446. - }
  13447. - } else {
  13448. - rv = (char *) malloc(n+1);
  13449. - if (rv) {
  13450. - memcpy(rv, mp, n);
  13451. - *(rv+n) = '\0';
  13452. - *stringp = mp + n;
  13453. - }
  13454. - }
  13455. - }
  13456. - return rv;
  13457. -}
  13458. -
  13459. -
  13460. -// replaces strdup with ansi version
  13461. -char * DictMgr::mystrdup(const char * s)
  13462. -{
  13463. - char * d = NULL;
  13464. - if (s) {
  13465. - int sl = strlen(s)+1;
  13466. - d = (char *) malloc(sl);
  13467. - if (d) memcpy(d,s,sl);
  13468. - }
  13469. - return d;
  13470. -}
  13471. -
  13472. -
  13473. -// remove cross-platform text line end characters
  13474. -void DictMgr:: mychomp(char * s)
  13475. -{
  13476. - int k = strlen(s);
  13477. - if ((k > 0) && ((*(s+k-1)=='\r') || (*(s+k-1)=='\n'))) *(s+k-1) = '\0';
  13478. - if ((k > 1) && (*(s+k-2) == '\r')) *(s+k-2) = '\0';
  13479. -}
  13480. -
  13481. diff --git a/src/hunspell/dictmgr.hxx b/src/hunspell/dictmgr.hxx
  13482. deleted file mode 100644
  13483. index 692ed964c3..0000000000
  13484. --- a/src/hunspell/dictmgr.hxx
  13485. +++ /dev/null
  13486. @@ -1,39 +0,0 @@
  13487. -#ifndef _DICTMGR_HXX_
  13488. -#define _DICTMGR_HXX_
  13489. -
  13490. -#include "hunvisapi.h"
  13491. -
  13492. -#define MAXDICTIONARIES 100
  13493. -#define MAXDICTENTRYLEN 1024
  13494. -
  13495. -struct dictentry {
  13496. - char * filename;
  13497. - char * lang;
  13498. - char * region;
  13499. -};
  13500. -
  13501. -
  13502. -class LIBHUNSPELL_DLL_EXPORTED DictMgr
  13503. -{
  13504. -private:
  13505. - DictMgr(const DictMgr&);
  13506. - DictMgr& operator = (const DictMgr&);
  13507. -private:
  13508. - int numdict;
  13509. - dictentry * pdentry;
  13510. -
  13511. -public:
  13512. -
  13513. - DictMgr(const char * dictpath, const char * etype);
  13514. - ~DictMgr();
  13515. - int get_list(dictentry** ppentry);
  13516. -
  13517. -private:
  13518. - int parse_file(const char * dictpath, const char * etype);
  13519. - char * mystrsep(char ** stringp, const char delim);
  13520. - char * mystrdup(const char * s);
  13521. - void mychomp(char * s);
  13522. -
  13523. -};
  13524. -
  13525. -#endif
  13526. diff --git a/src/hunspell/filemgr.cxx b/src/hunspell/filemgr.cxx
  13527. deleted file mode 100644
  13528. index c3854588d8..0000000000
  13529. --- a/src/hunspell/filemgr.cxx
  13530. +++ /dev/null
  13531. @@ -1,46 +0,0 @@
  13532. -#include "license.hunspell"
  13533. -#include "license.myspell"
  13534. -
  13535. -#include <stdlib.h>
  13536. -#include <string.h>
  13537. -
  13538. -#include "filemgr.hxx"
  13539. -
  13540. -FileMgr::FileMgr(const char *data, const size_t dlen) {
  13541. - linenum = 0;
  13542. - last = 0;
  13543. - buf = new char[dlen+1];
  13544. - memcpy(buf, data, dlen);
  13545. - buf[dlen] = 0;
  13546. - pos = buf;
  13547. - buflen = dlen;
  13548. -}
  13549. -
  13550. -FileMgr::~FileMgr()
  13551. -{
  13552. - if (buf != NULL) { delete[] buf; buf = NULL; }
  13553. - pos = NULL;
  13554. -}
  13555. -
  13556. -char * FileMgr::getline() {
  13557. - if (buf == NULL) return NULL;
  13558. - if (((size_t)(pos - buf)) >= buflen) {
  13559. - // free up the memory as it will not be needed anymore
  13560. - delete[] buf; buf = NULL; pos = NULL; return NULL;
  13561. - }
  13562. - if (pos != buf) *pos = last; // Restore the character that was previously replaced by null
  13563. - char *ans = pos;
  13564. - // Move pos to the start of the next line
  13565. - pos = (char *)memchr(pos, 10, buflen - (pos - buf));
  13566. - if (pos == NULL) pos = buf + buflen + 1;
  13567. - else pos++;
  13568. - // Ensure the current line is null terminated
  13569. - last = *pos;
  13570. - *pos = 0;
  13571. - linenum++;
  13572. - return ans;
  13573. -}
  13574. -
  13575. -int FileMgr::getlinenum() {
  13576. - return linenum;
  13577. -}
  13578. diff --git a/src/hunspell/filemgr.hxx b/src/hunspell/filemgr.hxx
  13579. deleted file mode 100644
  13580. index 99edd8f758..0000000000
  13581. --- a/src/hunspell/filemgr.hxx
  13582. +++ /dev/null
  13583. @@ -1,22 +0,0 @@
  13584. -/* file manager class - read lines of files [filename] OR [filename.hz] */
  13585. -#ifndef _FILEMGR_HXX_
  13586. -#define _FILEMGR_HXX_
  13587. -
  13588. -#include "hunvisapi.h"
  13589. -
  13590. -class LIBHUNSPELL_DLL_EXPORTED FileMgr
  13591. -{
  13592. -protected:
  13593. - char *buf;
  13594. - char *pos;
  13595. - size_t buflen;
  13596. - char last;
  13597. - int linenum;
  13598. -
  13599. -public:
  13600. - FileMgr(const char *data, const size_t dlen);
  13601. - ~FileMgr();
  13602. - char * getline();
  13603. - int getlinenum();
  13604. -};
  13605. -#endif
  13606. diff --git a/src/hunspell/hashmgr.cxx b/src/hunspell/hashmgr.cxx
  13607. deleted file mode 100644
  13608. index ae5a0a3782..0000000000
  13609. --- a/src/hunspell/hashmgr.cxx
  13610. +++ /dev/null
  13611. @@ -1,938 +0,0 @@
  13612. -#include "license.hunspell"
  13613. -#include "license.myspell"
  13614. -
  13615. -#include <stdlib.h>
  13616. -#include <string.h>
  13617. -#include <stdio.h>
  13618. -#include <ctype.h>
  13619. -#include <limits>
  13620. -
  13621. -#include "hashmgr.hxx"
  13622. -#include "csutil.hxx"
  13623. -#include "atypes.hxx"
  13624. -
  13625. -#define BUFSIZE 65536
  13626. -
  13627. -// build a hash table from a munched word list
  13628. -
  13629. -HashMgr::HashMgr(const char *aff_data, const size_t aff_len, const char *dic_data, const size_t dic_len)
  13630. - : tablesize(0)
  13631. - , tableptr(NULL)
  13632. - , userword(0)
  13633. - , flag_mode(FLAG_CHAR)
  13634. - , complexprefixes(0)
  13635. - , utf8(0)
  13636. - , forbiddenword(FORBIDDENWORD) // forbidden word signing flag
  13637. - , numaliasf(0)
  13638. - , aliasf(NULL)
  13639. - , aliasflen(0)
  13640. - , numaliasm(0)
  13641. - , aliasm(NULL)
  13642. -{
  13643. - langnum = 0;
  13644. - lang = NULL;
  13645. - enc = NULL;
  13646. - csconv = 0;
  13647. - ignorechars = NULL;
  13648. - ignorechars_utf16 = NULL;
  13649. - ignorechars_utf16_len = 0;
  13650. - load_config(aff_data, aff_len);
  13651. - int ec = load_tables(dic_data, dic_len);
  13652. - if (ec) {
  13653. - /* error condition - what should we do here */
  13654. - HUNSPELL_WARNING(stderr, "Hash Manager Error : %d\n",ec);
  13655. - if (tableptr) {
  13656. - free(tableptr);
  13657. - tableptr = NULL;
  13658. - }
  13659. - tablesize = 0;
  13660. - }
  13661. -}
  13662. -
  13663. -
  13664. -HashMgr::~HashMgr()
  13665. -{
  13666. - if (tableptr) {
  13667. - // now pass through hash table freeing up everything
  13668. - // go through column by column of the table
  13669. - for (int i=0; i < tablesize; i++) {
  13670. - struct hentry * pt = tableptr[i];
  13671. - struct hentry * nt = NULL;
  13672. - while(pt) {
  13673. - nt = pt->next;
  13674. - if (pt->astr && (!aliasf || TESTAFF(pt->astr, ONLYUPCASEFLAG, pt->alen))) free(pt->astr);
  13675. - free(pt);
  13676. - pt = nt;
  13677. - }
  13678. - }
  13679. - free(tableptr);
  13680. - }
  13681. - tablesize = 0;
  13682. -
  13683. - if (aliasf) {
  13684. - for (int j = 0; j < (numaliasf); j++) free(aliasf[j]);
  13685. - free(aliasf);
  13686. - aliasf = NULL;
  13687. - if (aliasflen) {
  13688. - free(aliasflen);
  13689. - aliasflen = NULL;
  13690. - }
  13691. - }
  13692. - if (aliasm) {
  13693. - for (int j = 0; j < (numaliasm); j++) free(aliasm[j]);
  13694. - free(aliasm);
  13695. - aliasm = NULL;
  13696. - }
  13697. -
  13698. -#ifndef OPENOFFICEORG
  13699. -#ifndef MOZILLA_CLIENT
  13700. - if (utf8) free_utf_tbl();
  13701. -#endif
  13702. -#endif
  13703. -
  13704. - if (enc) free(enc);
  13705. - if (lang) free(lang);
  13706. -
  13707. - if (ignorechars) free(ignorechars);
  13708. - if (ignorechars_utf16) free(ignorechars_utf16);
  13709. -
  13710. -#ifdef MOZILLA_CLIENT
  13711. - delete [] csconv;
  13712. -#endif
  13713. -}
  13714. -
  13715. -// lookup a root word in the hashtable
  13716. -
  13717. -struct hentry * HashMgr::lookup(const char *word) const
  13718. -{
  13719. - struct hentry * dp;
  13720. - if (tableptr) {
  13721. - dp = tableptr[hash(word)];
  13722. - if (!dp) return NULL;
  13723. - for ( ; dp != NULL; dp = dp->next) {
  13724. - if (strcmp(word, dp->word) == 0) return dp;
  13725. - }
  13726. - }
  13727. - return NULL;
  13728. -}
  13729. -
  13730. -// add a word to the hash table (private)
  13731. -int HashMgr::add_word(const char * word, int wbl, int wcl, unsigned short * aff,
  13732. - int al, const char * desc, bool onlyupcase)
  13733. -{
  13734. - bool upcasehomonym = false;
  13735. - int descl = desc ? (aliasm ? sizeof(char *) : strlen(desc) + 1) : 0;
  13736. - // variable-length hash record with word and optional fields
  13737. - struct hentry* hp =
  13738. - (struct hentry *) malloc (sizeof(struct hentry) + wbl + descl);
  13739. - if (!hp) return 1;
  13740. - char * hpw = hp->word;
  13741. - strcpy(hpw, word);
  13742. - if (ignorechars != NULL) {
  13743. - if (utf8) {
  13744. - remove_ignored_chars_utf(hpw, ignorechars_utf16, ignorechars_utf16_len);
  13745. - } else {
  13746. - remove_ignored_chars(hpw, ignorechars);
  13747. - }
  13748. - }
  13749. - if (complexprefixes) {
  13750. - if (utf8) reverseword_utf(hpw); else reverseword(hpw);
  13751. - }
  13752. -
  13753. - int i = hash(hpw);
  13754. -
  13755. - hp->blen = (unsigned char) wbl;
  13756. - hp->clen = (unsigned char) wcl;
  13757. - hp->alen = (short) al;
  13758. - hp->astr = aff;
  13759. - hp->next = NULL;
  13760. - hp->next_homonym = NULL;
  13761. -
  13762. - // store the description string or its pointer
  13763. - if (desc) {
  13764. - hp->var = H_OPT;
  13765. - if (aliasm) {
  13766. - hp->var += H_OPT_ALIASM;
  13767. - store_pointer(hpw + wbl + 1, get_aliasm(atoi(desc)));
  13768. - } else {
  13769. - strcpy(hpw + wbl + 1, desc);
  13770. - if (complexprefixes) {
  13771. - if (utf8) reverseword_utf(HENTRY_DATA(hp));
  13772. - else reverseword(HENTRY_DATA(hp));
  13773. - }
  13774. - }
  13775. - if (strstr(HENTRY_DATA(hp), MORPH_PHON)) hp->var += H_OPT_PHON;
  13776. - } else hp->var = 0;
  13777. -
  13778. - struct hentry * dp = tableptr[i];
  13779. - if (!dp) {
  13780. - tableptr[i] = hp;
  13781. - return 0;
  13782. - }
  13783. - while (dp->next != NULL) {
  13784. - if ((!dp->next_homonym) && (strcmp(hp->word, dp->word) == 0)) {
  13785. - // remove hidden onlyupcase homonym
  13786. - if (!onlyupcase) {
  13787. - if ((dp->astr) && TESTAFF(dp->astr, ONLYUPCASEFLAG, dp->alen)) {
  13788. - free(dp->astr);
  13789. - dp->astr = hp->astr;
  13790. - dp->alen = hp->alen;
  13791. - free(hp);
  13792. - return 0;
  13793. - } else {
  13794. - dp->next_homonym = hp;
  13795. - }
  13796. - } else {
  13797. - upcasehomonym = true;
  13798. - }
  13799. - }
  13800. - dp=dp->next;
  13801. - }
  13802. - if (strcmp(hp->word, dp->word) == 0) {
  13803. - // remove hidden onlyupcase homonym
  13804. - if (!onlyupcase) {
  13805. - if ((dp->astr) && TESTAFF(dp->astr, ONLYUPCASEFLAG, dp->alen)) {
  13806. - free(dp->astr);
  13807. - dp->astr = hp->astr;
  13808. - dp->alen = hp->alen;
  13809. - free(hp);
  13810. - return 0;
  13811. - } else {
  13812. - dp->next_homonym = hp;
  13813. - }
  13814. - } else {
  13815. - upcasehomonym = true;
  13816. - }
  13817. - }
  13818. - if (!upcasehomonym) {
  13819. - dp->next = hp;
  13820. - } else {
  13821. - // remove hidden onlyupcase homonym
  13822. - if (hp->astr) free(hp->astr);
  13823. - free(hp);
  13824. - }
  13825. - return 0;
  13826. -}
  13827. -
  13828. -int HashMgr::add_hidden_capitalized_word(char * word, int wbl, int wcl,
  13829. - unsigned short * flags, int flagslen, char * dp, int captype)
  13830. -{
  13831. - if (flags == NULL)
  13832. - flagslen = 0;
  13833. -
  13834. - // add inner capitalized forms to handle the following allcap forms:
  13835. - // Mixed caps: OpenOffice.org -> OPENOFFICE.ORG
  13836. - // Allcaps with suffixes: CIA's -> CIA'S
  13837. - if (((captype == HUHCAP) || (captype == HUHINITCAP) ||
  13838. - ((captype == ALLCAP) && (flagslen != 0))) &&
  13839. - !((flagslen != 0) && TESTAFF(flags, forbiddenword, flagslen))) {
  13840. - unsigned short * flags2 = (unsigned short *) malloc (sizeof(unsigned short) * (flagslen+1));
  13841. - if (!flags2) return 1;
  13842. - if (flagslen) memcpy(flags2, flags, flagslen * sizeof(unsigned short));
  13843. - flags2[flagslen] = ONLYUPCASEFLAG;
  13844. - if (utf8) {
  13845. - char st[BUFSIZE];
  13846. - w_char w[BUFSIZE];
  13847. - int wlen = u8_u16(w, BUFSIZE, word);
  13848. - mkallsmall_utf(w, wlen, langnum);
  13849. - mkallcap_utf(w, 1, langnum);
  13850. - u16_u8(st, BUFSIZE, w, wlen);
  13851. - return add_word(st,wbl,wcl,flags2,flagslen+1,dp, true);
  13852. - } else {
  13853. - mkallsmall(word, csconv);
  13854. - mkinitcap(word, csconv);
  13855. - return add_word(word,wbl,wcl,flags2,flagslen+1,dp, true);
  13856. - }
  13857. - }
  13858. - return 0;
  13859. -}
  13860. -
  13861. -// detect captype and modify word length for UTF-8 encoding
  13862. -int HashMgr::get_clen_and_captype(const char * word, int wbl, int * captype) {
  13863. - int len;
  13864. - if (utf8) {
  13865. - w_char dest_utf[BUFSIZE];
  13866. - len = u8_u16(dest_utf, BUFSIZE, word);
  13867. - *captype = get_captype_utf8(dest_utf, len, langnum);
  13868. - } else {
  13869. - len = wbl;
  13870. - *captype = get_captype((char *) word, len, csconv);
  13871. - }
  13872. - return len;
  13873. -}
  13874. -
  13875. -// remove word (personal dictionary function for standalone applications)
  13876. -int HashMgr::remove(const char * word)
  13877. -{
  13878. - struct hentry * dp = lookup(word);
  13879. - while (dp) {
  13880. - if (dp->alen == 0 || !TESTAFF(dp->astr, forbiddenword, dp->alen)) {
  13881. - unsigned short * flags =
  13882. - (unsigned short *) malloc(sizeof(short) * (dp->alen + 1));
  13883. - if (!flags) return 1;
  13884. - for (int i = 0; i < dp->alen; i++) flags[i] = dp->astr[i];
  13885. - flags[dp->alen] = forbiddenword;
  13886. - dp->astr = flags;
  13887. - dp->alen++;
  13888. - flag_qsort(flags, 0, dp->alen);
  13889. - }
  13890. - dp = dp->next_homonym;
  13891. - }
  13892. - return 0;
  13893. -}
  13894. -
  13895. -/* remove forbidden flag to add a personal word to the hash */
  13896. -int HashMgr::remove_forbidden_flag(const char * word) {
  13897. - struct hentry * dp = lookup(word);
  13898. - if (!dp) return 1;
  13899. - while (dp) {
  13900. - if (dp->astr && TESTAFF(dp->astr, forbiddenword, dp->alen)) {
  13901. - if (dp->alen == 1) dp->alen = 0; // XXX forbidden words of personal dic.
  13902. - else {
  13903. - unsigned short * flags2 =
  13904. - (unsigned short *) malloc(sizeof(short) * (dp->alen - 1));
  13905. - if (!flags2) return 1;
  13906. - int i, j = 0;
  13907. - for (i = 0; i < dp->alen; i++) {
  13908. - if (dp->astr[i] != forbiddenword) flags2[j++] = dp->astr[i];
  13909. - }
  13910. - dp->alen--;
  13911. - dp->astr = flags2; // XXX allowed forbidden words
  13912. - }
  13913. - }
  13914. - dp = dp->next_homonym;
  13915. - }
  13916. - return 0;
  13917. -}
  13918. -
  13919. -// add a custom dic. word to the hash table (public)
  13920. -int HashMgr::add(const char * word)
  13921. -{
  13922. - unsigned short * flags = NULL;
  13923. - int al = 0;
  13924. - if (remove_forbidden_flag(word)) {
  13925. - int captype;
  13926. - int wbl = strlen(word);
  13927. - int wcl = get_clen_and_captype(word, wbl, &captype);
  13928. - add_word(word, wbl, wcl, flags, al, NULL, false);
  13929. - return add_hidden_capitalized_word((char *) word, wbl, wcl, flags, al, NULL, captype);
  13930. - }
  13931. - return 0;
  13932. -}
  13933. -
  13934. -int HashMgr::add_with_affix(const char * word, const char * example)
  13935. -{
  13936. - // detect captype and modify word length for UTF-8 encoding
  13937. - struct hentry * dp = lookup(example);
  13938. - remove_forbidden_flag(word);
  13939. - if (dp && dp->astr) {
  13940. - int captype;
  13941. - int wbl = strlen(word);
  13942. - int wcl = get_clen_and_captype(word, wbl, &captype);
  13943. - if (aliasf) {
  13944. - add_word(word, wbl, wcl, dp->astr, dp->alen, NULL, false);
  13945. - } else {
  13946. - unsigned short * flags = (unsigned short *) malloc (dp->alen * sizeof(short));
  13947. - if (flags) {
  13948. - memcpy((void *) flags, (void *) dp->astr, dp->alen * sizeof(short));
  13949. - add_word(word, wbl, wcl, flags, dp->alen, NULL, false);
  13950. - } else return 1;
  13951. - }
  13952. - return add_hidden_capitalized_word((char *) word, wbl, wcl, dp->astr, dp->alen, NULL, captype);
  13953. - }
  13954. - return 1;
  13955. -}
  13956. -
  13957. -// walk the hash table entry by entry - null at end
  13958. -// initialize: col=-1; hp = NULL; hp = walk_hashtable(&col, hp);
  13959. -struct hentry * HashMgr::walk_hashtable(int &col, struct hentry * hp) const
  13960. -{
  13961. - if (hp && hp->next != NULL) return hp->next;
  13962. - for (col++; col < tablesize; col++) {
  13963. - if (tableptr[col]) return tableptr[col];
  13964. - }
  13965. - // null at end and reset to start
  13966. - col = -1;
  13967. - return NULL;
  13968. -}
  13969. -
  13970. -// load a munched word list and build a hash table on the fly
  13971. -int HashMgr::load_tables(const char *dic_data, const size_t dic_len)
  13972. -{
  13973. - int al;
  13974. - char * ap;
  13975. - char * dp;
  13976. - char * dp2;
  13977. - unsigned short * flags;
  13978. - char * ts;
  13979. -
  13980. - // open dictionary file
  13981. - FileMgr * dict = new FileMgr(dic_data, dic_len);
  13982. - if (dict == NULL) return 1;
  13983. -
  13984. - // first read the first line of file to get hash table size */
  13985. - if ((ts = dict->getline()) == NULL) {
  13986. - HUNSPELL_WARNING(stderr, "error: empty dic file \n");
  13987. - delete dict;
  13988. - return 2;
  13989. - }
  13990. - mychomp(ts);
  13991. -
  13992. - /* remove byte order mark */
  13993. - if (strncmp(ts,"\xEF\xBB\xBF",3) == 0) {
  13994. - memmove(ts, ts+3, strlen(ts+3)+1);
  13995. - // warning: dic file begins with byte order mark: possible incompatibility with old Hunspell versions
  13996. - }
  13997. -
  13998. - tablesize = atoi(ts);
  13999. -
  14000. - int nExtra = 5 + USERWORD;
  14001. -
  14002. - if (tablesize <= 0 || (tablesize >= (std::numeric_limits<int>::max() - 1 - nExtra) / int(sizeof(struct hentry *)))) {
  14003. - HUNSPELL_WARNING(stderr, "error: line 1: missing or bad word count in the dic file\n");
  14004. - delete dict;
  14005. - return 4;
  14006. - }
  14007. - tablesize += nExtra;
  14008. - if ((tablesize % 2) == 0) tablesize++;
  14009. -
  14010. - // allocate the hash table
  14011. - tableptr = (struct hentry **) calloc(tablesize, sizeof(struct hentry *));
  14012. - if (! tableptr) {
  14013. - delete dict;
  14014. - return 3;
  14015. - }
  14016. -
  14017. - // loop through all words on much list and add to hash
  14018. - // table and create word and affix strings
  14019. -
  14020. - while ((ts = dict->getline()) != NULL) {
  14021. - mychomp(ts);
  14022. - // split each line into word and morphological description
  14023. - dp = ts;
  14024. - while ((dp = strchr(dp, ':')) != NULL) {
  14025. - if ((dp > ts + 3) && (*(dp - 3) == ' ' || *(dp - 3) == '\t')) {
  14026. - for (dp -= 4; dp >= ts && (*dp == ' ' || *dp == '\t'); dp--);
  14027. - if (dp < ts) { // missing word
  14028. - dp = NULL;
  14029. - } else {
  14030. - *(dp + 1) = '\0';
  14031. - dp = dp + 2;
  14032. - }
  14033. - break;
  14034. - }
  14035. - dp++;
  14036. - }
  14037. -
  14038. - // tabulator is the old morphological field separator
  14039. - dp2 = strchr(ts, '\t');
  14040. - if (dp2 && (!dp || dp2 < dp)) {
  14041. - *dp2 = '\0';
  14042. - dp = dp2 + 1;
  14043. - }
  14044. -
  14045. - // split each line into word and affix char strings
  14046. - // "\/" signs slash in words (not affix separator)
  14047. - // "/" at beginning of the line is word character (not affix separator)
  14048. - ap = strchr(ts,'/');
  14049. - while (ap) {
  14050. - if (ap == ts) {
  14051. - ap++;
  14052. - continue;
  14053. - } else if (*(ap - 1) != '\\') break;
  14054. - // replace "\/" with "/"
  14055. - for (char * sp = ap - 1; *sp; *sp = *(sp + 1), sp++);
  14056. - ap = strchr(ap,'/');
  14057. - }
  14058. -
  14059. - if (ap) {
  14060. - *ap = '\0';
  14061. - if (aliasf) {
  14062. - int index = atoi(ap + 1);
  14063. - al = get_aliasf(index, &flags, dict);
  14064. - if (!al) {
  14065. - HUNSPELL_WARNING(stderr, "error: line %d: bad flag vector alias\n", dict->getlinenum());
  14066. - *ap = '\0';
  14067. - }
  14068. - } else {
  14069. - al = decode_flags(&flags, ap + 1, dict);
  14070. - if (al == -1) {
  14071. - HUNSPELL_WARNING(stderr, "Can't allocate memory.\n");
  14072. - delete dict;
  14073. - return 6;
  14074. - }
  14075. - flag_qsort(flags, 0, al);
  14076. - }
  14077. - } else {
  14078. - al = 0;
  14079. - ap = NULL;
  14080. - flags = NULL;
  14081. - }
  14082. -
  14083. - int captype;
  14084. - int wbl = strlen(ts);
  14085. - int wcl = get_clen_and_captype(ts, wbl, &captype);
  14086. - // add the word and its index plus its capitalized form optionally
  14087. - if (add_word(ts,wbl,wcl,flags,al,dp, false) ||
  14088. - add_hidden_capitalized_word(ts, wbl, wcl, flags, al, dp, captype)) {
  14089. - delete dict;
  14090. - return 5;
  14091. - }
  14092. - }
  14093. -
  14094. - delete dict;
  14095. - return 0;
  14096. -}
  14097. -
  14098. -// the hash function is a simple load and rotate
  14099. -// algorithm borrowed
  14100. -
  14101. -int HashMgr::hash(const char * word) const
  14102. -{
  14103. - long hv = 0;
  14104. - for (int i=0; i < 4 && *word != 0; i++)
  14105. - hv = (hv << 8) | (*word++);
  14106. - while (*word != 0) {
  14107. - ROTATE(hv,ROTATE_LEN);
  14108. - hv ^= (*word++);
  14109. - }
  14110. - return (unsigned long) hv % tablesize;
  14111. -}
  14112. -
  14113. -int HashMgr::decode_flags(unsigned short ** result, char * flags, FileMgr * af) {
  14114. - int len;
  14115. - if (*flags == '\0') {
  14116. - *result = NULL;
  14117. - return 0;
  14118. - }
  14119. - switch (flag_mode) {
  14120. - case FLAG_LONG: { // two-character flags (1x2yZz -> 1x 2y Zz)
  14121. - len = strlen(flags);
  14122. - if (len%2 == 1) HUNSPELL_WARNING(stderr, "error: line %d: bad flagvector\n", af->getlinenum());
  14123. - len /= 2;
  14124. - *result = (unsigned short *) malloc(len * sizeof(short));
  14125. - if (!*result) return -1;
  14126. - for (int i = 0; i < len; i++) {
  14127. - (*result)[i] = (((unsigned short) flags[i * 2]) << 8) + (unsigned short) flags[i * 2 + 1];
  14128. - }
  14129. - break;
  14130. - }
  14131. - case FLAG_NUM: { // decimal numbers separated by comma (4521,23,233 -> 4521 23 233)
  14132. - int i;
  14133. - len = 1;
  14134. - char * src = flags;
  14135. - unsigned short * dest;
  14136. - char * p;
  14137. - for (p = flags; *p; p++) {
  14138. - if (*p == ',') len++;
  14139. - }
  14140. - *result = (unsigned short *) malloc(len * sizeof(short));
  14141. - if (!*result) return -1;
  14142. - dest = *result;
  14143. - for (p = flags; *p; p++) {
  14144. - if (*p == ',') {
  14145. - i = atoi(src);
  14146. - if (i >= DEFAULTFLAGS) HUNSPELL_WARNING(stderr, "error: line %d: flag id %d is too large (max: %d)\n",
  14147. - af->getlinenum(), i, DEFAULTFLAGS - 1);
  14148. - *dest = (unsigned short) i;
  14149. - if (*dest == 0) HUNSPELL_WARNING(stderr, "error: line %d: 0 is wrong flag id\n", af->getlinenum());
  14150. - src = p + 1;
  14151. - dest++;
  14152. - }
  14153. - }
  14154. - i = atoi(src);
  14155. - if (i >= DEFAULTFLAGS) HUNSPELL_WARNING(stderr, "error: line %d: flag id %d is too large (max: %d)\n",
  14156. - af->getlinenum(), i, DEFAULTFLAGS - 1);
  14157. - *dest = (unsigned short) i;
  14158. - if (*dest == 0) HUNSPELL_WARNING(stderr, "error: line %d: 0 is wrong flag id\n", af->getlinenum());
  14159. - break;
  14160. - }
  14161. - case FLAG_UNI: { // UTF-8 characters
  14162. - w_char w[BUFSIZE/2];
  14163. - len = u8_u16(w, BUFSIZE/2, flags);
  14164. - *result = (unsigned short *) malloc(len * sizeof(short));
  14165. - if (!*result) return -1;
  14166. - memcpy(*result, w, len * sizeof(short));
  14167. - break;
  14168. - }
  14169. - default: { // Ispell's one-character flags (erfg -> e r f g)
  14170. - unsigned short * dest;
  14171. - len = strlen(flags);
  14172. - *result = (unsigned short *) malloc(len * sizeof(short));
  14173. - if (!*result) return -1;
  14174. - dest = *result;
  14175. - for (unsigned char * p = (unsigned char *) flags; *p; p++) {
  14176. - *dest = (unsigned short) *p;
  14177. - dest++;
  14178. - }
  14179. - }
  14180. - }
  14181. - return len;
  14182. -}
  14183. -
  14184. -unsigned short HashMgr::decode_flag(const char * f) {
  14185. - unsigned short s = 0;
  14186. - int i;
  14187. - switch (flag_mode) {
  14188. - case FLAG_LONG:
  14189. - s = ((unsigned short) f[0] << 8) + (unsigned short) f[1];
  14190. - break;
  14191. - case FLAG_NUM:
  14192. - i = atoi(f);
  14193. - if (i >= DEFAULTFLAGS) HUNSPELL_WARNING(stderr, "error: flag id %d is too large (max: %d)\n", i, DEFAULTFLAGS - 1);
  14194. - s = (unsigned short) i;
  14195. - break;
  14196. - case FLAG_UNI:
  14197. - u8_u16((w_char *) &s, 1, f);
  14198. - break;
  14199. - default:
  14200. - s = (unsigned short) *((unsigned char *)f);
  14201. - }
  14202. - if (s == 0) HUNSPELL_WARNING(stderr, "error: 0 is wrong flag id\n");
  14203. - return s;
  14204. -}
  14205. -
  14206. -char * HashMgr::encode_flag(unsigned short f) {
  14207. - unsigned char ch[10];
  14208. - if (f==0) return mystrdup("(NULL)");
  14209. - if (flag_mode == FLAG_LONG) {
  14210. - ch[0] = (unsigned char) (f >> 8);
  14211. - ch[1] = (unsigned char) (f - ((f >> 8) << 8));
  14212. - ch[2] = '\0';
  14213. - } else if (flag_mode == FLAG_NUM) {
  14214. - sprintf((char *) ch, "%d", f);
  14215. - } else if (flag_mode == FLAG_UNI) {
  14216. - u16_u8((char *) &ch, 10, (w_char *) &f, 1);
  14217. - } else {
  14218. - ch[0] = (unsigned char) (f);
  14219. - ch[1] = '\0';
  14220. - }
  14221. - return mystrdup((char *) ch);
  14222. -}
  14223. -
  14224. -// read in aff file and set flag mode
  14225. -int HashMgr::load_config(const char *aff_data, const size_t aff_len)
  14226. -{
  14227. - char * line; // io buffers
  14228. - int firstline = 1;
  14229. -
  14230. - // open the affix file
  14231. - FileMgr * afflst = new FileMgr(aff_data, aff_len);
  14232. - if (!afflst) {
  14233. - HUNSPELL_WARNING(stderr, "Error - could not open affix description file\n");
  14234. - return 1;
  14235. - }
  14236. -
  14237. - // read in each line ignoring any that do not
  14238. - // start with a known line type indicator
  14239. -
  14240. - while ((line = afflst->getline()) != NULL) {
  14241. - mychomp(line);
  14242. -
  14243. - /* remove byte order mark */
  14244. - if (firstline) {
  14245. - firstline = 0;
  14246. - if (strncmp(line,"\xEF\xBB\xBF",3) == 0) memmove(line, line+3, strlen(line+3)+1);
  14247. - }
  14248. -
  14249. - /* parse in the try string */
  14250. - if ((strncmp(line,"FLAG",4) == 0) && isspace(line[4])) {
  14251. - if (flag_mode != FLAG_CHAR) {
  14252. - HUNSPELL_WARNING(stderr, "error: line %d: multiple definitions of the FLAG affix file parameter\n", afflst->getlinenum());
  14253. - }
  14254. - if (strstr(line, "long")) flag_mode = FLAG_LONG;
  14255. - if (strstr(line, "num")) flag_mode = FLAG_NUM;
  14256. - if (strstr(line, "UTF-8")) flag_mode = FLAG_UNI;
  14257. - if (flag_mode == FLAG_CHAR) {
  14258. - HUNSPELL_WARNING(stderr, "error: line %d: FLAG needs `num', `long' or `UTF-8' parameter\n", afflst->getlinenum());
  14259. - }
  14260. - }
  14261. - if (strncmp(line,"FORBIDDENWORD",13) == 0) {
  14262. - char * st = NULL;
  14263. - if (parse_string(line, &st, afflst->getlinenum())) {
  14264. - delete afflst;
  14265. - return 1;
  14266. - }
  14267. - forbiddenword = decode_flag(st);
  14268. - free(st);
  14269. - }
  14270. - if (strncmp(line, "SET", 3) == 0) {
  14271. - if (parse_string(line, &enc, afflst->getlinenum())) {
  14272. - delete afflst;
  14273. - return 1;
  14274. - }
  14275. - if (strcmp(enc, "UTF-8") == 0) {
  14276. - utf8 = 1;
  14277. -#ifndef OPENOFFICEORG
  14278. -#ifndef MOZILLA_CLIENT
  14279. - initialize_utf_tbl();
  14280. -#endif
  14281. -#endif
  14282. - } else csconv = get_current_cs(enc);
  14283. - }
  14284. - if (strncmp(line, "LANG", 4) == 0) {
  14285. - if (parse_string(line, &lang, afflst->getlinenum())) {
  14286. - delete afflst;
  14287. - return 1;
  14288. - }
  14289. - langnum = get_lang_num(lang);
  14290. - }
  14291. -
  14292. - /* parse in the ignored characters (for example, Arabic optional diacritics characters */
  14293. - if (strncmp(line,"IGNORE",6) == 0) {
  14294. - if (parse_array(line, &ignorechars, &ignorechars_utf16,
  14295. - &ignorechars_utf16_len, utf8, afflst->getlinenum())) {
  14296. - delete afflst;
  14297. - return 1;
  14298. - }
  14299. - }
  14300. -
  14301. - if ((strncmp(line,"AF",2) == 0) && isspace(line[2])) {
  14302. - if (parse_aliasf(line, afflst)) {
  14303. - delete afflst;
  14304. - return 1;
  14305. - }
  14306. - }
  14307. -
  14308. - if ((strncmp(line,"AM",2) == 0) && isspace(line[2])) {
  14309. - if (parse_aliasm(line, afflst)) {
  14310. - delete afflst;
  14311. - return 1;
  14312. - }
  14313. - }
  14314. -
  14315. - if (strncmp(line,"COMPLEXPREFIXES",15) == 0) complexprefixes = 1;
  14316. - if (((strncmp(line,"SFX",3) == 0) || (strncmp(line,"PFX",3) == 0)) && isspace(line[3])) break;
  14317. - }
  14318. - if (csconv == NULL) csconv = get_current_cs(SPELL_ENCODING);
  14319. - delete afflst;
  14320. - return 0;
  14321. -}
  14322. -
  14323. -/* parse in the ALIAS table */
  14324. -int HashMgr::parse_aliasf(char * line, FileMgr * af)
  14325. -{
  14326. - if (numaliasf != 0) {
  14327. - HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum());
  14328. - return 1;
  14329. - }
  14330. - char * tp = line;
  14331. - char * piece;
  14332. - int i = 0;
  14333. - int np = 0;
  14334. - piece = mystrsep(&tp, 0);
  14335. - while (piece) {
  14336. - if (*piece != '\0') {
  14337. - switch(i) {
  14338. - case 0: { np++; break; }
  14339. - case 1: {
  14340. - numaliasf = atoi(piece);
  14341. - if (numaliasf < 1) {
  14342. - numaliasf = 0;
  14343. - aliasf = NULL;
  14344. - aliasflen = NULL;
  14345. - HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum());
  14346. - return 1;
  14347. - }
  14348. - aliasf = (unsigned short **) malloc(numaliasf * sizeof(unsigned short *));
  14349. - aliasflen = (unsigned short *) malloc(numaliasf * sizeof(short));
  14350. - if (!aliasf || !aliasflen) {
  14351. - numaliasf = 0;
  14352. - if (aliasf) free(aliasf);
  14353. - if (aliasflen) free(aliasflen);
  14354. - aliasf = NULL;
  14355. - aliasflen = NULL;
  14356. - return 1;
  14357. - }
  14358. - np++;
  14359. - break;
  14360. - }
  14361. - default: break;
  14362. - }
  14363. - i++;
  14364. - }
  14365. - piece = mystrsep(&tp, 0);
  14366. - }
  14367. - if (np != 2) {
  14368. - numaliasf = 0;
  14369. - free(aliasf);
  14370. - free(aliasflen);
  14371. - aliasf = NULL;
  14372. - aliasflen = NULL;
  14373. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum());
  14374. - return 1;
  14375. - }
  14376. -
  14377. - /* now parse the numaliasf lines to read in the remainder of the table */
  14378. - char * nl;
  14379. - for (int j=0; j < numaliasf; j++) {
  14380. - if ((nl = af->getline()) == NULL) return 1;
  14381. - mychomp(nl);
  14382. - tp = nl;
  14383. - i = 0;
  14384. - aliasf[j] = NULL;
  14385. - aliasflen[j] = 0;
  14386. - piece = mystrsep(&tp, 0);
  14387. - while (piece) {
  14388. - if (*piece != '\0') {
  14389. - switch(i) {
  14390. - case 0: {
  14391. - if (strncmp(piece,"AF",2) != 0) {
  14392. - numaliasf = 0;
  14393. - free(aliasf);
  14394. - free(aliasflen);
  14395. - aliasf = NULL;
  14396. - aliasflen = NULL;
  14397. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  14398. - return 1;
  14399. - }
  14400. - break;
  14401. - }
  14402. - case 1: {
  14403. - aliasflen[j] = (unsigned short) decode_flags(&(aliasf[j]), piece, af);
  14404. - flag_qsort(aliasf[j], 0, aliasflen[j]);
  14405. - break;
  14406. - }
  14407. - default: break;
  14408. - }
  14409. - i++;
  14410. - }
  14411. - piece = mystrsep(&tp, 0);
  14412. - }
  14413. - if (!aliasf[j]) {
  14414. - free(aliasf);
  14415. - free(aliasflen);
  14416. - aliasf = NULL;
  14417. - aliasflen = NULL;
  14418. - numaliasf = 0;
  14419. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  14420. - return 1;
  14421. - }
  14422. - }
  14423. - return 0;
  14424. -}
  14425. -
  14426. -int HashMgr::is_aliasf() {
  14427. - return (aliasf != NULL);
  14428. -}
  14429. -
  14430. -int HashMgr::get_aliasf(int index, unsigned short ** fvec, FileMgr * af) {
  14431. - if ((index > 0) && (index <= numaliasf)) {
  14432. - *fvec = aliasf[index - 1];
  14433. - return aliasflen[index - 1];
  14434. - }
  14435. - HUNSPELL_WARNING(stderr, "error: line %d: bad flag alias index: %d\n", af->getlinenum(), index);
  14436. - *fvec = NULL;
  14437. - return 0;
  14438. -}
  14439. -
  14440. -/* parse morph alias definitions */
  14441. -int HashMgr::parse_aliasm(char * line, FileMgr * af)
  14442. -{
  14443. - if (numaliasm != 0) {
  14444. - HUNSPELL_WARNING(stderr, "error: line %d: multiple table definitions\n", af->getlinenum());
  14445. - return 1;
  14446. - }
  14447. - char * tp = line;
  14448. - char * piece;
  14449. - int i = 0;
  14450. - int np = 0;
  14451. - piece = mystrsep(&tp, 0);
  14452. - while (piece) {
  14453. - if (*piece != '\0') {
  14454. - switch(i) {
  14455. - case 0: { np++; break; }
  14456. - case 1: {
  14457. - numaliasm = atoi(piece);
  14458. - if (numaliasm < 1) {
  14459. - HUNSPELL_WARNING(stderr, "error: line %d: bad entry number\n", af->getlinenum());
  14460. - return 1;
  14461. - }
  14462. - aliasm = (char **) malloc(numaliasm * sizeof(char *));
  14463. - if (!aliasm) {
  14464. - numaliasm = 0;
  14465. - return 1;
  14466. - }
  14467. - np++;
  14468. - break;
  14469. - }
  14470. - default: break;
  14471. - }
  14472. - i++;
  14473. - }
  14474. - piece = mystrsep(&tp, 0);
  14475. - }
  14476. - if (np != 2) {
  14477. - numaliasm = 0;
  14478. - free(aliasm);
  14479. - aliasm = NULL;
  14480. - HUNSPELL_WARNING(stderr, "error: line %d: missing data\n", af->getlinenum());
  14481. - return 1;
  14482. - }
  14483. -
  14484. - /* now parse the numaliasm lines to read in the remainder of the table */
  14485. - char * nl = line;
  14486. - for (int j=0; j < numaliasm; j++) {
  14487. - if ((nl = af->getline()) == NULL) return 1;
  14488. - mychomp(nl);
  14489. - tp = nl;
  14490. - i = 0;
  14491. - aliasm[j] = NULL;
  14492. - piece = mystrsep(&tp, ' ');
  14493. - while (piece) {
  14494. - if (*piece != '\0') {
  14495. - switch(i) {
  14496. - case 0: {
  14497. - if (strncmp(piece,"AM",2) != 0) {
  14498. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  14499. - numaliasm = 0;
  14500. - free(aliasm);
  14501. - aliasm = NULL;
  14502. - return 1;
  14503. - }
  14504. - break;
  14505. - }
  14506. - case 1: {
  14507. - // add the remaining of the line
  14508. - if (*tp) {
  14509. - *(tp - 1) = ' ';
  14510. - tp = tp + strlen(tp);
  14511. - }
  14512. - if (complexprefixes) {
  14513. - if (utf8) reverseword_utf(piece);
  14514. - else reverseword(piece);
  14515. - }
  14516. - aliasm[j] = mystrdup(piece);
  14517. - if (!aliasm[j]) {
  14518. - numaliasm = 0;
  14519. - free(aliasm);
  14520. - aliasm = NULL;
  14521. - return 1;
  14522. - }
  14523. - break; }
  14524. - default: break;
  14525. - }
  14526. - i++;
  14527. - }
  14528. - piece = mystrsep(&tp, ' ');
  14529. - }
  14530. - if (!aliasm[j]) {
  14531. - numaliasm = 0;
  14532. - free(aliasm);
  14533. - aliasm = NULL;
  14534. - HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum());
  14535. - return 1;
  14536. - }
  14537. - }
  14538. - return 0;
  14539. -}
  14540. -
  14541. -int HashMgr::is_aliasm() {
  14542. - return (aliasm != NULL);
  14543. -}
  14544. -
  14545. -char * HashMgr::get_aliasm(int index) {
  14546. - if ((index > 0) && (index <= numaliasm)) return aliasm[index - 1];
  14547. - HUNSPELL_WARNING(stderr, "error: bad morph. alias index: %d\n", index);
  14548. - return NULL;
  14549. -}
  14550. diff --git a/src/hunspell/hashmgr.hxx b/src/hunspell/hashmgr.hxx
  14551. deleted file mode 100644
  14552. index 0f7b2ab090..0000000000
  14553. --- a/src/hunspell/hashmgr.hxx
  14554. +++ /dev/null
  14555. @@ -1,69 +0,0 @@
  14556. -#ifndef _HASHMGR_HXX_
  14557. -#define _HASHMGR_HXX_
  14558. -
  14559. -#include "hunvisapi.h"
  14560. -
  14561. -#include <stdio.h>
  14562. -
  14563. -#include "htypes.hxx"
  14564. -#include "filemgr.hxx"
  14565. -
  14566. -enum flag { FLAG_CHAR, FLAG_LONG, FLAG_NUM, FLAG_UNI };
  14567. -
  14568. -class LIBHUNSPELL_DLL_EXPORTED HashMgr
  14569. -{
  14570. - int tablesize;
  14571. - struct hentry ** tableptr;
  14572. - int userword;
  14573. - flag flag_mode;
  14574. - int complexprefixes;
  14575. - int utf8;
  14576. - unsigned short forbiddenword;
  14577. - int langnum;
  14578. - char * enc;
  14579. - char * lang;
  14580. - struct cs_info * csconv;
  14581. - char * ignorechars;
  14582. - unsigned short * ignorechars_utf16;
  14583. - int ignorechars_utf16_len;
  14584. - int numaliasf; // flag vector `compression' with aliases
  14585. - unsigned short ** aliasf;
  14586. - unsigned short * aliasflen;
  14587. - int numaliasm; // morphological desciption `compression' with aliases
  14588. - char ** aliasm;
  14589. -
  14590. -
  14591. -public:
  14592. - HashMgr(const char *aff_data, const size_t aff_len, const char *dic_data, const size_t dic_len);
  14593. - ~HashMgr();
  14594. -
  14595. - struct hentry * lookup(const char *) const;
  14596. - int hash(const char *) const;
  14597. - struct hentry * walk_hashtable(int & col, struct hentry * hp) const;
  14598. -
  14599. - int add(const char * word);
  14600. - int add_with_affix(const char * word, const char * pattern);
  14601. - int remove(const char * word);
  14602. - int decode_flags(unsigned short ** result, char * flags, FileMgr * af);
  14603. - unsigned short decode_flag(const char * flag);
  14604. - char * encode_flag(unsigned short flag);
  14605. - int is_aliasf();
  14606. - int get_aliasf(int index, unsigned short ** fvec, FileMgr * af);
  14607. - int is_aliasm();
  14608. - char * get_aliasm(int index);
  14609. -
  14610. -private:
  14611. - int get_clen_and_captype(const char * word, int wbl, int * captype);
  14612. - int load_tables(const char *dic_data, const size_t dic_len);
  14613. - int add_word(const char * word, int wbl, int wcl, unsigned short * ap,
  14614. - int al, const char * desc, bool onlyupcase);
  14615. - int load_config(const char *aff_data, const size_t aff_len);
  14616. - int parse_aliasf(char * line, FileMgr * af);
  14617. - int add_hidden_capitalized_word(char * word, int wbl, int wcl,
  14618. - unsigned short * flags, int al, char * dp, int captype);
  14619. - int parse_aliasm(char * line, FileMgr * af);
  14620. - int remove_forbidden_flag(const char * word);
  14621. -
  14622. -};
  14623. -
  14624. -#endif
  14625. diff --git a/src/hunspell/htypes.hxx b/src/hunspell/htypes.hxx
  14626. deleted file mode 100644
  14627. index 5b6c90966b..0000000000
  14628. --- a/src/hunspell/htypes.hxx
  14629. +++ /dev/null
  14630. @@ -1,32 +0,0 @@
  14631. -#ifndef _HTYPES_HXX_
  14632. -#define _HTYPES_HXX_
  14633. -
  14634. -#define ROTATE_LEN 5
  14635. -
  14636. -#define ROTATE(v,q) \
  14637. - (v) = ((v) << (q)) | (((v) >> (32 - q)) & ((1 << (q))-1));
  14638. -
  14639. -// hentry options
  14640. -#define H_OPT (1 << 0)
  14641. -#define H_OPT_ALIASM (1 << 1)
  14642. -#define H_OPT_PHON (1 << 2)
  14643. -
  14644. -// see also csutil.hxx
  14645. -#define HENTRY_WORD(h) &(h->word[0])
  14646. -
  14647. -// approx. number of user defined words
  14648. -#define USERWORD 1000
  14649. -
  14650. -struct hentry
  14651. -{
  14652. - unsigned char blen; // word length in bytes
  14653. - unsigned char clen; // word length in characters (different for UTF-8 enc.)
  14654. - short alen; // length of affix flag vector
  14655. - unsigned short * astr; // affix flag vector
  14656. - struct hentry * next; // next word with same hash code
  14657. - struct hentry * next_homonym; // next homonym word (with same hash code)
  14658. - char var; // variable fields (only for special pronounciation yet)
  14659. - char word[1]; // variable-length word (8-bit or UTF-8 encoding)
  14660. -};
  14661. -
  14662. -#endif
  14663. diff --git a/src/hunspell/hunspell.cxx b/src/hunspell/hunspell.cxx
  14664. deleted file mode 100644
  14665. index 7f0c0343aa..0000000000
  14666. --- a/src/hunspell/hunspell.cxx
  14667. +++ /dev/null
  14668. @@ -1,1944 +0,0 @@
  14669. -#include "license.hunspell"
  14670. -#include "license.myspell"
  14671. -
  14672. -#include <stdlib.h>
  14673. -#include <string.h>
  14674. -#include <stdio.h>
  14675. -
  14676. -#include "hunspell.hxx"
  14677. -#ifndef MOZILLA_CLIENT
  14678. -# include "config.h"
  14679. -#endif
  14680. -#include "csutil.hxx"
  14681. -
  14682. -#include <string>
  14683. -
  14684. -Hunspell::Hunspell(const char *affix_data, const size_t aff_len, const char *dic_data, const size_t dic_len)
  14685. -{
  14686. - encoding = NULL;
  14687. - csconv = NULL;
  14688. - utf8 = 0;
  14689. - complexprefixes = 0;
  14690. - maxdic = 0;
  14691. -
  14692. - /* first set up the hash manager */
  14693. - pHMgr[0] = new HashMgr(affix_data, aff_len, dic_data, dic_len);
  14694. - if (pHMgr[0]) maxdic = 1;
  14695. -
  14696. - /* next set up the affix manager */
  14697. - /* it needs access to the hash manager lookup methods */
  14698. - pAMgr = new AffixMgr(affix_data, aff_len, pHMgr, &maxdic);
  14699. -
  14700. - /* get the preferred try string and the dictionary */
  14701. - /* encoding from the Affix Manager for that dictionary */
  14702. - char * try_string = pAMgr->get_try_string();
  14703. - encoding = pAMgr->get_encoding();
  14704. - langnum = pAMgr->get_langnum();
  14705. - utf8 = pAMgr->get_utf8();
  14706. - if (!utf8)
  14707. - csconv = get_current_cs(encoding);
  14708. - complexprefixes = pAMgr->get_complexprefixes();
  14709. - wordbreak = pAMgr->get_breaktable();
  14710. -
  14711. - /* and finally set up the suggestion manager */
  14712. - pSMgr = new SuggestMgr(try_string, MAXSUGGESTION, pAMgr);
  14713. - if (try_string) free(try_string);
  14714. -}
  14715. -
  14716. -Hunspell::~Hunspell()
  14717. -{
  14718. - if (pSMgr) delete pSMgr;
  14719. - if (pAMgr) delete pAMgr;
  14720. - for (int i = 0; i < maxdic; i++) delete pHMgr[i];
  14721. - maxdic = 0;
  14722. - pSMgr = NULL;
  14723. - pAMgr = NULL;
  14724. -#ifdef MOZILLA_CLIENT
  14725. - delete [] csconv;
  14726. -#endif
  14727. - csconv= NULL;
  14728. - if (encoding) free(encoding);
  14729. - encoding = NULL;
  14730. -}
  14731. -
  14732. -// make a copy of src at destination while removing all leading
  14733. -// blanks and removing any trailing periods after recording
  14734. -// their presence with the abbreviation flag
  14735. -// also since already going through character by character,
  14736. -// set the capitalization type
  14737. -// return the length of the "cleaned" (and UTF-8 encoded) word
  14738. -
  14739. -int Hunspell::cleanword2(char * dest, const char * src,
  14740. - w_char * dest_utf, int * nc, int * pcaptype, int * pabbrev)
  14741. -{
  14742. - unsigned char * p = (unsigned char *) dest;
  14743. - const unsigned char * q = (const unsigned char * ) src;
  14744. -
  14745. - // first skip over any leading blanks
  14746. - while ((*q != '\0') && (*q == ' ')) q++;
  14747. -
  14748. - // now strip off any trailing periods (recording their presence)
  14749. - *pabbrev = 0;
  14750. - int nl = strlen((const char *)q);
  14751. - while ((nl > 0) && (*(q+nl-1)=='.')) {
  14752. - nl--;
  14753. - (*pabbrev)++;
  14754. - }
  14755. -
  14756. - // if no characters are left it can't be capitalized
  14757. - if (nl <= 0) {
  14758. - *pcaptype = NOCAP;
  14759. - *p = '\0';
  14760. - return 0;
  14761. - }
  14762. -
  14763. - strncpy(dest, (char *) q, nl);
  14764. - *(dest + nl) = '\0';
  14765. - nl = strlen(dest);
  14766. - if (utf8) {
  14767. - *nc = u8_u16(dest_utf, MAXWORDLEN, dest);
  14768. - // don't check too long words
  14769. - if (*nc >= MAXWORDLEN) return 0;
  14770. - if (*nc == -1) { // big Unicode character (non BMP area)
  14771. - *pcaptype = NOCAP;
  14772. - return nl;
  14773. - }
  14774. - *pcaptype = get_captype_utf8(dest_utf, *nc, langnum);
  14775. - } else {
  14776. - *pcaptype = get_captype(dest, nl, csconv);
  14777. - *nc = nl;
  14778. - }
  14779. - return nl;
  14780. -}
  14781. -
  14782. -int Hunspell::cleanword(char * dest, const char * src,
  14783. - int * pcaptype, int * pabbrev)
  14784. -{
  14785. - unsigned char * p = (unsigned char *) dest;
  14786. - const unsigned char * q = (const unsigned char * ) src;
  14787. - int firstcap = 0;
  14788. -
  14789. - // first skip over any leading blanks
  14790. - while ((*q != '\0') && (*q == ' ')) q++;
  14791. -
  14792. - // now strip off any trailing periods (recording their presence)
  14793. - *pabbrev = 0;
  14794. - int nl = strlen((const char *)q);
  14795. - while ((nl > 0) && (*(q+nl-1)=='.')) {
  14796. - nl--;
  14797. - (*pabbrev)++;
  14798. - }
  14799. -
  14800. - // if no characters are left it can't be capitalized
  14801. - if (nl <= 0) {
  14802. - *pcaptype = NOCAP;
  14803. - *p = '\0';
  14804. - return 0;
  14805. - }
  14806. -
  14807. - // now determine the capitalization type of the first nl letters
  14808. - int ncap = 0;
  14809. - int nneutral = 0;
  14810. - int nc = 0;
  14811. -
  14812. - if (!utf8) {
  14813. - while (nl > 0) {
  14814. - nc++;
  14815. - if (csconv[(*q)].ccase) ncap++;
  14816. - if (csconv[(*q)].cupper == csconv[(*q)].clower) nneutral++;
  14817. - *p++ = *q++;
  14818. - nl--;
  14819. - }
  14820. - // remember to terminate the destination string
  14821. - *p = '\0';
  14822. - firstcap = csconv[(unsigned char)(*dest)].ccase;
  14823. - } else {
  14824. - unsigned short idx;
  14825. - w_char t[MAXWORDLEN];
  14826. - nc = u8_u16(t, MAXWORDLEN, src);
  14827. - for (int i = 0; i < nc; i++) {
  14828. - idx = (t[i].h << 8) + t[i].l;
  14829. - unsigned short low = unicodetolower(idx, langnum);
  14830. - if (idx != low) ncap++;
  14831. - if (unicodetoupper(idx, langnum) == low) nneutral++;
  14832. - }
  14833. - u16_u8(dest, MAXWORDUTF8LEN, t, nc);
  14834. - if (ncap) {
  14835. - idx = (t[0].h << 8) + t[0].l;
  14836. - firstcap = (idx != unicodetolower(idx, langnum));
  14837. - }
  14838. - }
  14839. -
  14840. - // now finally set the captype
  14841. - if (ncap == 0) {
  14842. - *pcaptype = NOCAP;
  14843. - } else if ((ncap == 1) && firstcap) {
  14844. - *pcaptype = INITCAP;
  14845. - } else if ((ncap == nc) || ((ncap + nneutral) == nc)){
  14846. - *pcaptype = ALLCAP;
  14847. - } else if ((ncap > 1) && firstcap) {
  14848. - *pcaptype = HUHINITCAP;
  14849. - } else {
  14850. - *pcaptype = HUHCAP;
  14851. - }
  14852. - return strlen(dest);
  14853. -}
  14854. -
  14855. -void Hunspell::mkallcap(char * p)
  14856. -{
  14857. - if (utf8) {
  14858. - w_char u[MAXWORDLEN];
  14859. - int nc = u8_u16(u, MAXWORDLEN, p);
  14860. - unsigned short idx;
  14861. - for (int i = 0; i < nc; i++) {
  14862. - idx = (u[i].h << 8) + u[i].l;
  14863. - if (idx != unicodetoupper(idx, langnum)) {
  14864. - u[i].h = (unsigned char) (unicodetoupper(idx, langnum) >> 8);
  14865. - u[i].l = (unsigned char) (unicodetoupper(idx, langnum) & 0x00FF);
  14866. - }
  14867. - }
  14868. - u16_u8(p, MAXWORDUTF8LEN, u, nc);
  14869. - } else {
  14870. - while (*p != '\0') {
  14871. - *p = csconv[((unsigned char) *p)].cupper;
  14872. - p++;
  14873. - }
  14874. - }
  14875. -}
  14876. -
  14877. -int Hunspell::mkallcap2(char * p, w_char * u, int nc)
  14878. -{
  14879. - if (utf8) {
  14880. - unsigned short idx;
  14881. - for (int i = 0; i < nc; i++) {
  14882. - idx = (u[i].h << 8) + u[i].l;
  14883. - unsigned short up = unicodetoupper(idx, langnum);
  14884. - if (idx != up) {
  14885. - u[i].h = (unsigned char) (up >> 8);
  14886. - u[i].l = (unsigned char) (up & 0x00FF);
  14887. - }
  14888. - }
  14889. - u16_u8(p, MAXWORDUTF8LEN, u, nc);
  14890. - return strlen(p);
  14891. - } else {
  14892. - while (*p != '\0') {
  14893. - *p = csconv[((unsigned char) *p)].cupper;
  14894. - p++;
  14895. - }
  14896. - }
  14897. - return nc;
  14898. -}
  14899. -
  14900. -
  14901. -void Hunspell::mkallsmall(char * p)
  14902. -{
  14903. - while (*p != '\0') {
  14904. - *p = csconv[((unsigned char) *p)].clower;
  14905. - p++;
  14906. - }
  14907. -}
  14908. -
  14909. -int Hunspell::mkallsmall2(char * p, w_char * u, int nc)
  14910. -{
  14911. - if (utf8) {
  14912. - unsigned short idx;
  14913. - for (int i = 0; i < nc; i++) {
  14914. - idx = (u[i].h << 8) + u[i].l;
  14915. - unsigned short low = unicodetolower(idx, langnum);
  14916. - if (idx != low) {
  14917. - u[i].h = (unsigned char) (low >> 8);
  14918. - u[i].l = (unsigned char) (low & 0x00FF);
  14919. - }
  14920. - }
  14921. - u16_u8(p, MAXWORDUTF8LEN, u, nc);
  14922. - return strlen(p);
  14923. - } else {
  14924. - while (*p != '\0') {
  14925. - *p = csconv[((unsigned char) *p)].clower;
  14926. - p++;
  14927. - }
  14928. - }
  14929. - return nc;
  14930. -}
  14931. -
  14932. -// convert UTF-8 sharp S codes to latin 1
  14933. -char * Hunspell::sharps_u8_l1(char * dest, char * source) {
  14934. - char * p = dest;
  14935. - *p = *source;
  14936. - for (p++, source++; *(source - 1); p++, source++) {
  14937. - *p = *source;
  14938. - if (*source == '\x9F') *--p = '\xDF';
  14939. - }
  14940. - return dest;
  14941. -}
  14942. -
  14943. -// recursive search for right ss - sharp s permutations
  14944. -hentry * Hunspell::spellsharps(char * base, char * pos, int n,
  14945. - int repnum, char * tmp, int * info, char **root) {
  14946. - pos = strstr(pos, "ss");
  14947. - if (pos && (n < MAXSHARPS)) {
  14948. - *pos = '\xC3';
  14949. - *(pos + 1) = '\x9F';
  14950. - hentry * h = spellsharps(base, pos + 2, n + 1, repnum + 1, tmp, info, root);
  14951. - if (h) return h;
  14952. - *pos = 's';
  14953. - *(pos + 1) = 's';
  14954. - h = spellsharps(base, pos + 2, n + 1, repnum, tmp, info, root);
  14955. - if (h) return h;
  14956. - } else if (repnum > 0) {
  14957. - if (utf8) return checkword(base, info, root);
  14958. - return checkword(sharps_u8_l1(tmp, base), info, root);
  14959. - }
  14960. - return NULL;
  14961. -}
  14962. -
  14963. -int Hunspell::is_keepcase(const hentry * rv) {
  14964. - return pAMgr && rv->astr && pAMgr->get_keepcase() &&
  14965. - TESTAFF(rv->astr, pAMgr->get_keepcase(), rv->alen);
  14966. -}
  14967. -
  14968. -/* insert a word to the beginning of the suggestion array and return ns */
  14969. -int Hunspell::insert_sug(char ***slst, char * word, int ns) {
  14970. - char * dup = mystrdup(word);
  14971. - if (!dup) return ns;
  14972. - if (ns == MAXSUGGESTION) {
  14973. - ns--;
  14974. - free((*slst)[ns]);
  14975. - }
  14976. - for (int k = ns; k > 0; k--) (*slst)[k] = (*slst)[k - 1];
  14977. - (*slst)[0] = dup;
  14978. - return ns + 1;
  14979. -}
  14980. -
  14981. -int Hunspell::spell(const char * word, int * info, char ** root)
  14982. -{
  14983. - struct hentry * rv=NULL;
  14984. - // need larger vector. For example, Turkish capital letter I converted a
  14985. - // 2-byte UTF-8 character (dotless i) by mkallsmall.
  14986. - char cw[MAXWORDUTF8LEN];
  14987. - char wspace[MAXWORDUTF8LEN];
  14988. - w_char unicw[MAXWORDLEN];
  14989. -
  14990. - int info2 = 0;
  14991. - if (!info) info = &info2; else *info = 0;
  14992. -
  14993. - // Hunspell supports XML input of the simplified API (see manual)
  14994. - if (strcmp(word, SPELL_XML) == 0) return 1;
  14995. - int nc = strlen(word);
  14996. - int wl2 = 0;
  14997. - if (utf8) {
  14998. - if (nc >= MAXWORDUTF8LEN) return 0;
  14999. - } else {
  15000. - if (nc >= MAXWORDLEN) return 0;
  15001. - }
  15002. - int captype = 0;
  15003. - int abbv = 0;
  15004. - int wl = 0;
  15005. -
  15006. - // input conversion
  15007. - RepList * rl = (pAMgr) ? pAMgr->get_iconvtable() : NULL;
  15008. - if (rl && rl->conv(word, wspace)) wl = cleanword2(cw, wspace, unicw, &nc, &captype, &abbv);
  15009. - else wl = cleanword2(cw, word, unicw, &nc, &captype, &abbv);
  15010. -
  15011. - if (wl == 0 || maxdic == 0) return 1;
  15012. - if (root) *root = NULL;
  15013. -
  15014. - // allow numbers with dots, dashes and commas (but forbid double separators: "..", "--" etc.)
  15015. - enum { NBEGIN, NNUM, NSEP };
  15016. - int nstate = NBEGIN;
  15017. - int i;
  15018. -
  15019. - for (i = 0; (i < wl); i++) {
  15020. - if ((cw[i] <= '9') && (cw[i] >= '0')) {
  15021. - nstate = NNUM;
  15022. - } else if ((cw[i] == ',') || (cw[i] == '.') || (cw[i] == '-')) {
  15023. - if ((nstate == NSEP) || (i == 0)) break;
  15024. - nstate = NSEP;
  15025. - } else break;
  15026. - }
  15027. - if ((i == wl) && (nstate == NNUM)) return 1;
  15028. -
  15029. - switch(captype) {
  15030. - case HUHCAP:
  15031. - /* FALLTHROUGH */
  15032. - case HUHINITCAP:
  15033. - *info += SPELL_ORIGCAP;
  15034. - /* FALLTHROUGH */
  15035. - case NOCAP:
  15036. - rv = checkword(cw, info, root);
  15037. - if ((abbv) && !(rv)) {
  15038. - memcpy(wspace,cw,wl);
  15039. - *(wspace+wl) = '.';
  15040. - *(wspace+wl+1) = '\0';
  15041. - rv = checkword(wspace, info, root);
  15042. - }
  15043. - break;
  15044. - case ALLCAP: {
  15045. - *info += SPELL_ORIGCAP;
  15046. - rv = checkword(cw, info, root);
  15047. - if (rv) break;
  15048. - if (abbv) {
  15049. - memcpy(wspace,cw,wl);
  15050. - *(wspace+wl) = '.';
  15051. - *(wspace+wl+1) = '\0';
  15052. - rv = checkword(wspace, info, root);
  15053. - if (rv) break;
  15054. - }
  15055. - // Spec. prefix handling for Catalan, French, Italian:
  15056. - // prefixes separated by apostrophe (SANT'ELIA -> Sant'+Elia).
  15057. - if (pAMgr && strchr(cw, '\'')) {
  15058. - wl = mkallsmall2(cw, unicw, nc);
  15059. - //There are no really sane circumstances where this could fail,
  15060. - //but anyway...
  15061. - if (char * apostrophe = strchr(cw, '\'')) {
  15062. - if (utf8) {
  15063. - w_char tmpword[MAXWORDLEN];
  15064. - *apostrophe = '\0';
  15065. - wl2 = u8_u16(tmpword, MAXWORDLEN, cw);
  15066. - *apostrophe = '\'';
  15067. - if (wl2 >= 0 && wl2 < nc) {
  15068. - mkinitcap2(apostrophe + 1, unicw + wl2 + 1, nc - wl2 - 1);
  15069. - rv = checkword(cw, info, root);
  15070. - if (rv) break;
  15071. - }
  15072. - } else {
  15073. - mkinitcap2(apostrophe + 1, unicw, nc);
  15074. - rv = checkword(cw, info, root);
  15075. - if (rv) break;
  15076. - }
  15077. - }
  15078. - mkinitcap2(cw, unicw, nc);
  15079. - rv = checkword(cw, info, root);
  15080. - if (rv) break;
  15081. - }
  15082. - if (pAMgr && pAMgr->get_checksharps() && strstr(cw, "SS")) {
  15083. - char tmpword[MAXWORDUTF8LEN];
  15084. - wl = mkallsmall2(cw, unicw, nc);
  15085. - memcpy(wspace,cw,(wl+1));
  15086. - rv = spellsharps(wspace, wspace, 0, 0, tmpword, info, root);
  15087. - if (!rv) {
  15088. - wl2 = mkinitcap2(cw, unicw, nc);
  15089. - rv = spellsharps(cw, cw, 0, 0, tmpword, info, root);
  15090. - }
  15091. - if ((abbv) && !(rv)) {
  15092. - *(wspace+wl) = '.';
  15093. - *(wspace+wl+1) = '\0';
  15094. - rv = spellsharps(wspace, wspace, 0, 0, tmpword, info, root);
  15095. - if (!rv) {
  15096. - memcpy(wspace, cw, wl2);
  15097. - *(wspace+wl2) = '.';
  15098. - *(wspace+wl2+1) = '\0';
  15099. - rv = spellsharps(wspace, wspace, 0, 0, tmpword, info, root);
  15100. - }
  15101. - }
  15102. - if (rv) break;
  15103. - }
  15104. - }
  15105. - case INITCAP: {
  15106. - *info += SPELL_ORIGCAP;
  15107. - wl = mkallsmall2(cw, unicw, nc);
  15108. - memcpy(wspace,cw,(wl+1));
  15109. - wl2 = mkinitcap2(cw, unicw, nc);
  15110. - if (captype == INITCAP) *info += SPELL_INITCAP;
  15111. - rv = checkword(cw, info, root);
  15112. - if (captype == INITCAP) *info -= SPELL_INITCAP;
  15113. - // forbid bad capitalization
  15114. - // (for example, ijs -> Ijs instead of IJs in Dutch)
  15115. - // use explicit forms in dic: Ijs/F (F = FORBIDDENWORD flag)
  15116. - if (*info & SPELL_FORBIDDEN) {
  15117. - rv = NULL;
  15118. - break;
  15119. - }
  15120. - if (rv && is_keepcase(rv) && (captype == ALLCAP)) rv = NULL;
  15121. - if (rv) break;
  15122. -
  15123. - rv = checkword(wspace, info, root);
  15124. - if (abbv && !rv) {
  15125. -
  15126. - *(wspace+wl) = '.';
  15127. - *(wspace+wl+1) = '\0';
  15128. - rv = checkword(wspace, info, root);
  15129. - if (!rv) {
  15130. - memcpy(wspace, cw, wl2);
  15131. - *(wspace+wl2) = '.';
  15132. - *(wspace+wl2+1) = '\0';
  15133. - if (captype == INITCAP) *info += SPELL_INITCAP;
  15134. - rv = checkword(wspace, info, root);
  15135. - if (captype == INITCAP) *info -= SPELL_INITCAP;
  15136. - if (rv && is_keepcase(rv) && (captype == ALLCAP)) rv = NULL;
  15137. - break;
  15138. - }
  15139. - }
  15140. - if (rv && is_keepcase(rv) &&
  15141. - ((captype == ALLCAP) ||
  15142. - // if CHECKSHARPS: KEEPCASE words with \xDF are allowed
  15143. - // in INITCAP form, too.
  15144. - !(pAMgr->get_checksharps() &&
  15145. - ((utf8 && strstr(wspace, "\xC3\x9F")) ||
  15146. - (!utf8 && strchr(wspace, '\xDF')))))) rv = NULL;
  15147. - break;
  15148. - }
  15149. - }
  15150. -
  15151. - if (rv) {
  15152. - if (pAMgr && pAMgr->get_warn() && rv->astr &&
  15153. - TESTAFF(rv->astr, pAMgr->get_warn(), rv->alen)) {
  15154. - *info += SPELL_WARN;
  15155. - if (pAMgr->get_forbidwarn()) return 0;
  15156. - return HUNSPELL_OK_WARN;
  15157. - }
  15158. - return HUNSPELL_OK;
  15159. - }
  15160. -
  15161. - // recursive breaking at break points
  15162. - if (wordbreak) {
  15163. - char * s;
  15164. - char r;
  15165. - int nbr = 0;
  15166. - wl = strlen(cw);
  15167. - int numbreak = pAMgr ? pAMgr->get_numbreak() : 0;
  15168. -
  15169. - // calculate break points for recursion limit
  15170. - for (int j = 0; j < numbreak; j++) {
  15171. - s = cw;
  15172. - do {
  15173. - s = (char *) strstr(s, wordbreak[j]);
  15174. - if (s) {
  15175. - nbr++;
  15176. - s++;
  15177. - }
  15178. - } while (s);
  15179. - }
  15180. - if (nbr >= 10) return 0;
  15181. -
  15182. - // check boundary patterns (^begin and end$)
  15183. - for (int j = 0; j < numbreak; j++) {
  15184. - int plen = strlen(wordbreak[j]);
  15185. - if (plen == 1 || plen > wl) continue;
  15186. - if (wordbreak[j][0] == '^' && strncmp(cw, wordbreak[j] + 1, plen - 1) == 0
  15187. - && spell(cw + plen - 1)) return 1;
  15188. - if (wordbreak[j][plen - 1] == '$' &&
  15189. - strncmp(cw + wl - plen + 1, wordbreak[j], plen - 1) == 0) {
  15190. - r = cw[wl - plen + 1];
  15191. - cw[wl - plen + 1] = '\0';
  15192. - if (spell(cw)) return 1;
  15193. - cw[wl - plen + 1] = r;
  15194. - }
  15195. - }
  15196. -
  15197. - // other patterns
  15198. - for (int j = 0; j < numbreak; j++) {
  15199. - int plen = strlen(wordbreak[j]);
  15200. - s=(char *) strstr(cw, wordbreak[j]);
  15201. - if (s && (s > cw) && (s < cw + wl - plen)) {
  15202. - if (!spell(s + plen)) continue;
  15203. - r = *s;
  15204. - *s = '\0';
  15205. - // examine 2 sides of the break point
  15206. - if (spell(cw)) return 1;
  15207. - *s = r;
  15208. -
  15209. - // LANG_hu: spec. dash rule
  15210. - if (langnum == LANG_hu && strcmp(wordbreak[j], "-") == 0) {
  15211. - r = s[1];
  15212. - s[1] = '\0';
  15213. - if (spell(cw)) return 1; // check the first part with dash
  15214. - s[1] = r;
  15215. - }
  15216. - // end of LANG speficic region
  15217. -
  15218. - }
  15219. - }
  15220. - }
  15221. -
  15222. - return 0;
  15223. -}
  15224. -
  15225. -struct hentry * Hunspell::checkword(const char * w, int * info, char ** root)
  15226. -{
  15227. - struct hentry * he = NULL;
  15228. - int len, i;
  15229. - char w2[MAXWORDUTF8LEN];
  15230. - const char * word;
  15231. -
  15232. - char * ignoredchars = pAMgr->get_ignore();
  15233. - if (ignoredchars != NULL) {
  15234. - strcpy(w2, w);
  15235. - if (utf8) {
  15236. - int ignoredchars_utf16_len;
  15237. - unsigned short * ignoredchars_utf16 = pAMgr->get_ignore_utf16(&ignoredchars_utf16_len);
  15238. - remove_ignored_chars_utf(w2, ignoredchars_utf16, ignoredchars_utf16_len);
  15239. - } else {
  15240. - remove_ignored_chars(w2,ignoredchars);
  15241. - }
  15242. - word = w2;
  15243. - } else word = w;
  15244. -
  15245. - len = strlen(word);
  15246. -
  15247. - if (!len)
  15248. - return NULL;
  15249. -
  15250. - // word reversing wrapper for complex prefixes
  15251. - if (complexprefixes) {
  15252. - if (word != w2) {
  15253. - strcpy(w2, word);
  15254. - word = w2;
  15255. - }
  15256. - if (utf8) reverseword_utf(w2); else reverseword(w2);
  15257. - }
  15258. -
  15259. - // look word in hash table
  15260. - for (i = 0; (i < maxdic) && !he; i ++) {
  15261. - he = (pHMgr[i])->lookup(word);
  15262. -
  15263. - // check forbidden and onlyincompound words
  15264. - if ((he) && (he->astr) && (pAMgr) && TESTAFF(he->astr, pAMgr->get_forbiddenword(), he->alen)) {
  15265. - if (info) *info += SPELL_FORBIDDEN;
  15266. - // LANG_hu section: set dash information for suggestions
  15267. - if (langnum == LANG_hu) {
  15268. - if (pAMgr->get_compoundflag() &&
  15269. - TESTAFF(he->astr, pAMgr->get_compoundflag(), he->alen)) {
  15270. - if (info) *info += SPELL_COMPOUND;
  15271. - }
  15272. - }
  15273. - return NULL;
  15274. - }
  15275. -
  15276. - // he = next not needaffix, onlyincompound homonym or onlyupcase word
  15277. - while (he && (he->astr) &&
  15278. - ((pAMgr->get_needaffix() && TESTAFF(he->astr, pAMgr->get_needaffix(), he->alen)) ||
  15279. - (pAMgr->get_onlyincompound() && TESTAFF(he->astr, pAMgr->get_onlyincompound(), he->alen)) ||
  15280. - (info && (*info & SPELL_INITCAP) && TESTAFF(he->astr, ONLYUPCASEFLAG, he->alen))
  15281. - )) he = he->next_homonym;
  15282. - }
  15283. -
  15284. - // check with affixes
  15285. - if (!he && pAMgr) {
  15286. - // try stripping off affixes */
  15287. - he = pAMgr->affix_check(word, len, 0);
  15288. -
  15289. - // check compound restriction and onlyupcase
  15290. - if (he && he->astr && (
  15291. - (pAMgr->get_onlyincompound() &&
  15292. - TESTAFF(he->astr, pAMgr->get_onlyincompound(), he->alen)) ||
  15293. - (info && (*info & SPELL_INITCAP) &&
  15294. - TESTAFF(he->astr, ONLYUPCASEFLAG, he->alen)))) {
  15295. - he = NULL;
  15296. - }
  15297. -
  15298. - if (he) {
  15299. - if ((he->astr) && (pAMgr) && TESTAFF(he->astr, pAMgr->get_forbiddenword(), he->alen)) {
  15300. - if (info) *info += SPELL_FORBIDDEN;
  15301. - return NULL;
  15302. - }
  15303. - if (root) {
  15304. - *root = mystrdup(he->word);
  15305. - if (*root && complexprefixes) {
  15306. - if (utf8) reverseword_utf(*root); else reverseword(*root);
  15307. - }
  15308. - }
  15309. - // try check compound word
  15310. - } else if (pAMgr->get_compound()) {
  15311. - he = pAMgr->compound_check(word, len, 0, 0, 100, 0, NULL, 0, 0, info);
  15312. - // LANG_hu section: `moving rule' with last dash
  15313. - if ((!he) && (langnum == LANG_hu) && (word[len-1] == '-')) {
  15314. - char * dup = mystrdup(word);
  15315. - if (!dup) return NULL;
  15316. - dup[len-1] = '\0';
  15317. - he = pAMgr->compound_check(dup, len-1, -5, 0, 100, 0, NULL, 1, 0, info);
  15318. - free(dup);
  15319. - }
  15320. - // end of LANG speficic region
  15321. - if (he) {
  15322. - if (root) {
  15323. - *root = mystrdup(he->word);
  15324. - if (*root && complexprefixes) {
  15325. - if (utf8) reverseword_utf(*root); else reverseword(*root);
  15326. - }
  15327. - }
  15328. - if (info) *info += SPELL_COMPOUND;
  15329. - }
  15330. - }
  15331. -
  15332. - }
  15333. -
  15334. - return he;
  15335. -}
  15336. -
  15337. -int Hunspell::suggest(char*** slst, const char * word)
  15338. -{
  15339. - int onlycmpdsug = 0;
  15340. - char cw[MAXWORDUTF8LEN];
  15341. - char wspace[MAXWORDUTF8LEN];
  15342. - if (!pSMgr || maxdic == 0) return 0;
  15343. - w_char unicw[MAXWORDLEN];
  15344. - *slst = NULL;
  15345. - // process XML input of the simplified API (see manual)
  15346. - if (strncmp(word, SPELL_XML, sizeof(SPELL_XML) - 3) == 0) {
  15347. - return spellml(slst, word);
  15348. - }
  15349. - int nc = strlen(word);
  15350. - if (utf8) {
  15351. - if (nc >= MAXWORDUTF8LEN) return 0;
  15352. - } else {
  15353. - if (nc >= MAXWORDLEN) return 0;
  15354. - }
  15355. - int captype = 0;
  15356. - int abbv = 0;
  15357. - int wl = 0;
  15358. -
  15359. - // input conversion
  15360. - RepList * rl = (pAMgr) ? pAMgr->get_iconvtable() : NULL;
  15361. - if (rl && rl->conv(word, wspace)) wl = cleanword2(cw, wspace, unicw, &nc, &captype, &abbv);
  15362. - else wl = cleanword2(cw, word, unicw, &nc, &captype, &abbv);
  15363. -
  15364. - if (wl == 0) return 0;
  15365. - int ns = 0;
  15366. - int capwords = 0;
  15367. -
  15368. - // check capitalized form for FORCEUCASE
  15369. - if (pAMgr && captype == NOCAP && pAMgr->get_forceucase()) {
  15370. - int info = SPELL_ORIGCAP;
  15371. - char ** wlst;
  15372. - if (checkword(cw, &info, NULL)) {
  15373. - if (*slst) {
  15374. - wlst = *slst;
  15375. - } else {
  15376. - wlst = (char **) malloc(MAXSUGGESTION * sizeof(char *));
  15377. - if (wlst == NULL) return -1;
  15378. - *slst = wlst;
  15379. - for (int i = 0; i < MAXSUGGESTION; i++) {
  15380. - wlst[i] = NULL;
  15381. - }
  15382. - }
  15383. - wlst[0] = mystrdup(cw);
  15384. - mkinitcap(wlst[0]);
  15385. - return 1;
  15386. - }
  15387. - }
  15388. -
  15389. - switch(captype) {
  15390. - case NOCAP: {
  15391. - ns = pSMgr->suggest(slst, cw, ns, &onlycmpdsug);
  15392. - break;
  15393. - }
  15394. -
  15395. - case INITCAP: {
  15396. - capwords = 1;
  15397. - ns = pSMgr->suggest(slst, cw, ns, &onlycmpdsug);
  15398. - if (ns == -1) break;
  15399. - memcpy(wspace,cw,(wl+1));
  15400. - mkallsmall2(wspace, unicw, nc);
  15401. - ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug);
  15402. - break;
  15403. - }
  15404. - case HUHINITCAP:
  15405. - capwords = 1;
  15406. - case HUHCAP: {
  15407. - ns = pSMgr->suggest(slst, cw, ns, &onlycmpdsug);
  15408. - if (ns != -1) {
  15409. - int prevns;
  15410. - // something.The -> something. The
  15411. - char * dot = strchr(cw, '.');
  15412. - if (dot && (dot > cw)) {
  15413. - int captype_;
  15414. - if (utf8)
  15415. - {
  15416. - w_char w_[MAXWORDLEN];
  15417. - int wl_ = u8_u16(w_, MAXWORDLEN, dot + 1);
  15418. - captype_ = get_captype_utf8(w_, wl_, langnum);
  15419. - } else captype_ = get_captype(dot+1, strlen(dot+1), csconv);
  15420. - if (captype_ == INITCAP)
  15421. - {
  15422. - char * st = mystrdup(cw);
  15423. - if (st)
  15424. - {
  15425. - char *newst = (char *) realloc(st, wl + 2);
  15426. - if (newst == NULL)
  15427. - free(st);
  15428. - st = newst;
  15429. - }
  15430. - if (st)
  15431. - {
  15432. - st[(dot - cw) + 1] = ' ';
  15433. - strcpy(st + (dot - cw) + 2, dot + 1);
  15434. - ns = insert_sug(slst, st, ns);
  15435. - free(st);
  15436. - }
  15437. - }
  15438. - }
  15439. - if (captype == HUHINITCAP) {
  15440. - // TheOpenOffice.org -> The OpenOffice.org
  15441. - memcpy(wspace,cw,(wl+1));
  15442. - mkinitsmall2(wspace, unicw, nc);
  15443. - ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug);
  15444. - }
  15445. - memcpy(wspace,cw,(wl+1));
  15446. - mkallsmall2(wspace, unicw, nc);
  15447. - if (spell(wspace)) ns = insert_sug(slst, wspace, ns);
  15448. - prevns = ns;
  15449. - ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug);
  15450. - if (captype == HUHINITCAP) {
  15451. - mkinitcap2(wspace, unicw, nc);
  15452. - if (spell(wspace)) ns = insert_sug(slst, wspace, ns);
  15453. - ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug);
  15454. - }
  15455. - // aNew -> "a New" (instead of "a new")
  15456. - for (int j = prevns; j < ns; j++) {
  15457. - char * space = strchr((*slst)[j],' ');
  15458. - if (space) {
  15459. - int slen = strlen(space + 1);
  15460. - // different case after space (need capitalisation)
  15461. - if ((slen < wl) && strcmp(cw + wl - slen, space + 1)) {
  15462. - w_char w[MAXWORDLEN];
  15463. - int wc = 0;
  15464. - char * r = (*slst)[j];
  15465. - if (utf8) wc = u8_u16(w, MAXWORDLEN, space + 1);
  15466. - mkinitcap2(space + 1, w, wc);
  15467. - // set as first suggestion
  15468. - for (int k = j; k > 0; k--) (*slst)[k] = (*slst)[k - 1];
  15469. - (*slst)[0] = r;
  15470. - }
  15471. - }
  15472. - }
  15473. - }
  15474. - break;
  15475. - }
  15476. -
  15477. - case ALLCAP: {
  15478. - memcpy(wspace, cw, (wl+1));
  15479. - mkallsmall2(wspace, unicw, nc);
  15480. - ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug);
  15481. - if (ns == -1) break;
  15482. - if (pAMgr && pAMgr->get_keepcase() && spell(wspace))
  15483. - ns = insert_sug(slst, wspace, ns);
  15484. - mkinitcap2(wspace, unicw, nc);
  15485. - ns = pSMgr->suggest(slst, wspace, ns, &onlycmpdsug);
  15486. - for (int j=0; j < ns; j++) {
  15487. - mkallcap((*slst)[j]);
  15488. - if (pAMgr && pAMgr->get_checksharps()) {
  15489. - char * pos;
  15490. - if (utf8) {
  15491. - pos = strstr((*slst)[j], "\xC3\x9F");
  15492. - while (pos) {
  15493. - *pos = 'S';
  15494. - *(pos+1) = 'S';
  15495. - pos = strstr(pos+2, "\xC3\x9F");
  15496. - }
  15497. - } else {
  15498. - pos = strchr((*slst)[j], '\xDF');
  15499. - while (pos) {
  15500. - (*slst)[j] = (char *) realloc((*slst)[j], strlen((*slst)[j]) + 2);
  15501. - mystrrep((*slst)[j], "\xDF", "SS");
  15502. - pos = strchr((*slst)[j], '\xDF');
  15503. - }
  15504. - }
  15505. - }
  15506. - }
  15507. - break;
  15508. - }
  15509. - }
  15510. -
  15511. - // LANG_hu section: replace '-' with ' ' in Hungarian
  15512. - if (langnum == LANG_hu) {
  15513. - for (int j=0; j < ns; j++) {
  15514. - char * pos = strchr((*slst)[j],'-');
  15515. - if (pos) {
  15516. - int info;
  15517. - char w[MAXWORDUTF8LEN];
  15518. - *pos = '\0';
  15519. - strcpy(w, (*slst)[j]);
  15520. - strcat(w, pos + 1);
  15521. - (void)spell(w, &info, NULL);
  15522. - if ((info & SPELL_COMPOUND) && (info & SPELL_FORBIDDEN)) {
  15523. - *pos = ' ';
  15524. - } else *pos = '-';
  15525. - }
  15526. - }
  15527. - }
  15528. - // END OF LANG_hu section
  15529. -
  15530. - // try ngram approach since found nothing or only compound words
  15531. - if (pAMgr && (ns == 0 || onlycmpdsug) && (pAMgr->get_maxngramsugs() != 0) && (*slst)) {
  15532. - switch(captype) {
  15533. - case NOCAP: {
  15534. - ns = pSMgr->ngsuggest(*slst, cw, ns, pHMgr, maxdic);
  15535. - break;
  15536. - }
  15537. - case HUHINITCAP:
  15538. - capwords = 1;
  15539. - case HUHCAP: {
  15540. - memcpy(wspace,cw,(wl+1));
  15541. - mkallsmall2(wspace, unicw, nc);
  15542. - ns = pSMgr->ngsuggest(*slst, wspace, ns, pHMgr, maxdic);
  15543. - break;
  15544. - }
  15545. - case INITCAP: {
  15546. - capwords = 1;
  15547. - memcpy(wspace,cw,(wl+1));
  15548. - mkallsmall2(wspace, unicw, nc);
  15549. - ns = pSMgr->ngsuggest(*slst, wspace, ns, pHMgr, maxdic);
  15550. - break;
  15551. - }
  15552. - case ALLCAP: {
  15553. - memcpy(wspace,cw,(wl+1));
  15554. - mkallsmall2(wspace, unicw, nc);
  15555. - int oldns = ns;
  15556. - ns = pSMgr->ngsuggest(*slst, wspace, ns, pHMgr, maxdic);
  15557. - for (int j = oldns; j < ns; j++)
  15558. - mkallcap((*slst)[j]);
  15559. - break;
  15560. - }
  15561. - }
  15562. - }
  15563. -
  15564. - // try dash suggestion (Afo-American -> Afro-American)
  15565. - if (char * pos = strchr(cw, '-')) {
  15566. - char * ppos = cw;
  15567. - int nodashsug = 1;
  15568. - char ** nlst = NULL;
  15569. - int nn = 0;
  15570. - int last = 0;
  15571. - if (*slst) {
  15572. - for (int j = 0; j < ns && nodashsug == 1; j++) {
  15573. - if (strchr((*slst)[j], '-')) nodashsug = 0;
  15574. - }
  15575. - }
  15576. - while (nodashsug && !last) {
  15577. - if (*pos == '\0') last = 1; else *pos = '\0';
  15578. - if (!spell(ppos)) {
  15579. - nn = suggest(&nlst, ppos);
  15580. - for (int j = nn - 1; j >= 0; j--) {
  15581. - strncpy(wspace, cw, ppos - cw);
  15582. - strcpy(wspace + (ppos - cw), nlst[j]);
  15583. - if (!last) {
  15584. - strcat(wspace, "-");
  15585. - strcat(wspace, pos + 1);
  15586. - }
  15587. - ns = insert_sug(slst, wspace, ns);
  15588. - free(nlst[j]);
  15589. - }
  15590. - if (nlst != NULL) free(nlst);
  15591. - nodashsug = 0;
  15592. - }
  15593. - if (!last) {
  15594. - *pos = '-';
  15595. - ppos = pos + 1;
  15596. - pos = strchr(ppos, '-');
  15597. - }
  15598. - if (!pos) pos = cw + strlen(cw);
  15599. - }
  15600. - }
  15601. -
  15602. - // word reversing wrapper for complex prefixes
  15603. - if (complexprefixes) {
  15604. - for (int j = 0; j < ns; j++) {
  15605. - if (utf8) reverseword_utf((*slst)[j]); else reverseword((*slst)[j]);
  15606. - }
  15607. - }
  15608. -
  15609. - // capitalize
  15610. - if (capwords) for (int j=0; j < ns; j++) {
  15611. - mkinitcap((*slst)[j]);
  15612. - }
  15613. -
  15614. - // expand suggestions with dot(s)
  15615. - if (abbv && pAMgr && pAMgr->get_sugswithdots()) {
  15616. - for (int j = 0; j < ns; j++) {
  15617. - (*slst)[j] = (char *) realloc((*slst)[j], strlen((*slst)[j]) + 1 + abbv);
  15618. - strcat((*slst)[j], word + strlen(word) - abbv);
  15619. - }
  15620. - }
  15621. -
  15622. - // remove bad capitalized and forbidden forms
  15623. - if (pAMgr && (pAMgr->get_keepcase() || pAMgr->get_forbiddenword())) {
  15624. - switch (captype) {
  15625. - case INITCAP:
  15626. - case ALLCAP: {
  15627. - int l = 0;
  15628. - for (int j=0; j < ns; j++) {
  15629. - if (!strchr((*slst)[j],' ') && !spell((*slst)[j])) {
  15630. - char s[MAXSWUTF8L];
  15631. - w_char w[MAXSWL];
  15632. - int len;
  15633. - if (utf8) {
  15634. - len = u8_u16(w, MAXSWL, (*slst)[j]);
  15635. - } else {
  15636. - strcpy(s, (*slst)[j]);
  15637. - len = strlen(s);
  15638. - }
  15639. - mkallsmall2(s, w, len);
  15640. - free((*slst)[j]);
  15641. - if (spell(s)) {
  15642. - (*slst)[l] = mystrdup(s);
  15643. - if ((*slst)[l]) l++;
  15644. - } else {
  15645. - mkinitcap2(s, w, len);
  15646. - if (spell(s)) {
  15647. - (*slst)[l] = mystrdup(s);
  15648. - if ((*slst)[l]) l++;
  15649. - }
  15650. - }
  15651. - } else {
  15652. - (*slst)[l] = (*slst)[j];
  15653. - l++;
  15654. - }
  15655. - }
  15656. - ns = l;
  15657. - }
  15658. - }
  15659. - }
  15660. -
  15661. - // remove duplications
  15662. - int l = 0;
  15663. - for (int j = 0; j < ns; j++) {
  15664. - (*slst)[l] = (*slst)[j];
  15665. - for (int k = 0; k < l; k++) {
  15666. - if (strcmp((*slst)[k], (*slst)[j]) == 0) {
  15667. - free((*slst)[j]);
  15668. - l--;
  15669. - break;
  15670. - }
  15671. - }
  15672. - l++;
  15673. - }
  15674. - ns = l;
  15675. -
  15676. - // output conversion
  15677. - rl = (pAMgr) ? pAMgr->get_oconvtable() : NULL;
  15678. - for (int j = 0; rl && j < ns; j++) {
  15679. - if (rl->conv((*slst)[j], wspace)) {
  15680. - free((*slst)[j]);
  15681. - (*slst)[j] = mystrdup(wspace);
  15682. - }
  15683. - }
  15684. -
  15685. - // if suggestions removed by nosuggest, onlyincompound parameters
  15686. - if (l == 0 && *slst) {
  15687. - free(*slst);
  15688. - *slst = NULL;
  15689. - }
  15690. - return l;
  15691. -}
  15692. -
  15693. -void Hunspell::free_list(char *** slst, int n) {
  15694. - freelist(slst, n);
  15695. -}
  15696. -
  15697. -char * Hunspell::get_dic_encoding()
  15698. -{
  15699. - return encoding;
  15700. -}
  15701. -
  15702. -#ifdef HUNSPELL_EXPERIMENTAL
  15703. -// XXX need UTF-8 support
  15704. -int Hunspell::suggest_auto(char*** slst, const char * word)
  15705. -{
  15706. - char cw[MAXWORDUTF8LEN];
  15707. - char wspace[MAXWORDUTF8LEN];
  15708. - if (!pSMgr || maxdic == 0) return 0;
  15709. - int wl = strlen(word);
  15710. - if (utf8) {
  15711. - if (wl >= MAXWORDUTF8LEN) return 0;
  15712. - } else {
  15713. - if (wl >= MAXWORDLEN) return 0;
  15714. - }
  15715. - int captype = 0;
  15716. - int abbv = 0;
  15717. - wl = cleanword(cw, word, &captype, &abbv);
  15718. - if (wl == 0) return 0;
  15719. - int ns = 0;
  15720. - *slst = NULL; // HU, nsug in pSMgr->suggest
  15721. -
  15722. - switch(captype) {
  15723. - case NOCAP: {
  15724. - ns = pSMgr->suggest_auto(slst, cw, ns);
  15725. - if (ns>0) break;
  15726. - break;
  15727. - }
  15728. -
  15729. - case INITCAP: {
  15730. - memcpy(wspace,cw,(wl+1));
  15731. - mkallsmall(wspace);
  15732. - ns = pSMgr->suggest_auto(slst, wspace, ns);
  15733. - for (int j=0; j < ns; j++)
  15734. - mkinitcap((*slst)[j]);
  15735. - ns = pSMgr->suggest_auto(slst, cw, ns);
  15736. - break;
  15737. -
  15738. - }
  15739. -
  15740. - case HUHINITCAP:
  15741. - case HUHCAP: {
  15742. - ns = pSMgr->suggest_auto(slst, cw, ns);
  15743. - if (ns == 0) {
  15744. - memcpy(wspace,cw,(wl+1));
  15745. - mkallsmall(wspace);
  15746. - ns = pSMgr->suggest_auto(slst, wspace, ns);
  15747. - }
  15748. - break;
  15749. - }
  15750. -
  15751. - case ALLCAP: {
  15752. - memcpy(wspace,cw,(wl+1));
  15753. - mkallsmall(wspace);
  15754. - ns = pSMgr->suggest_auto(slst, wspace, ns);
  15755. -
  15756. - mkinitcap(wspace);
  15757. - ns = pSMgr->suggest_auto(slst, wspace, ns);
  15758. -
  15759. - for (int j=0; j < ns; j++)
  15760. - mkallcap((*slst)[j]);
  15761. - break;
  15762. - }
  15763. - }
  15764. -
  15765. - // word reversing wrapper for complex prefixes
  15766. - if (complexprefixes) {
  15767. - for (int j = 0; j < ns; j++) {
  15768. - if (utf8) reverseword_utf((*slst)[j]); else reverseword((*slst)[j]);
  15769. - }
  15770. - }
  15771. -
  15772. - // expand suggestions with dot(s)
  15773. - if (abbv && pAMgr && pAMgr->get_sugswithdots()) {
  15774. - for (int j = 0; j < ns; j++) {
  15775. - (*slst)[j] = (char *) realloc((*slst)[j], strlen((*slst)[j]) + 1 + abbv);
  15776. - strcat((*slst)[j], word + strlen(word) - abbv);
  15777. - }
  15778. - }
  15779. -
  15780. - // LANG_hu section: replace '-' with ' ' in Hungarian
  15781. - if (langnum == LANG_hu) {
  15782. - for (int j=0; j < ns; j++) {
  15783. - char * pos = strchr((*slst)[j],'-');
  15784. - if (pos) {
  15785. - int info;
  15786. - char w[MAXWORDUTF8LEN];
  15787. - *pos = '\0';
  15788. - strcpy(w, (*slst)[j]);
  15789. - strcat(w, pos + 1);
  15790. - spell(w, &info, NULL);
  15791. - if ((info & SPELL_COMPOUND) && (info & SPELL_FORBIDDEN)) {
  15792. - *pos = ' ';
  15793. - } else *pos = '-';
  15794. - }
  15795. - }
  15796. - }
  15797. - // END OF LANG_hu section
  15798. - return ns;
  15799. -}
  15800. -#endif
  15801. -
  15802. -int Hunspell::stem(char*** slst, char ** desc, int n)
  15803. -{
  15804. - char result[MAXLNLEN];
  15805. - char result2[MAXLNLEN];
  15806. - *slst = NULL;
  15807. - if (n == 0) return 0;
  15808. - *result2 = '\0';
  15809. - for (int i = 0; i < n; i++) {
  15810. - *result = '\0';
  15811. - // add compound word parts (except the last one)
  15812. - char * s = (char *) desc[i];
  15813. - char * part = strstr(s, MORPH_PART);
  15814. - if (part) {
  15815. - char * nextpart = strstr(part + 1, MORPH_PART);
  15816. - while (nextpart) {
  15817. - copy_field(result + strlen(result), part, MORPH_PART);
  15818. - part = nextpart;
  15819. - nextpart = strstr(part + 1, MORPH_PART);
  15820. - }
  15821. - s = part;
  15822. - }
  15823. -
  15824. - char **pl;
  15825. - char tok[MAXLNLEN];
  15826. - strcpy(tok, s);
  15827. - char * alt = strstr(tok, " | ");
  15828. - while (alt) {
  15829. - alt[1] = MSEP_ALT;
  15830. - alt = strstr(alt, " | ");
  15831. - }
  15832. - int pln = line_tok(tok, &pl, MSEP_ALT);
  15833. - for (int k = 0; k < pln; k++) {
  15834. - // add derivational suffixes
  15835. - if (strstr(pl[k], MORPH_DERI_SFX)) {
  15836. - // remove inflectional suffixes
  15837. - char * is = strstr(pl[k], MORPH_INFL_SFX);
  15838. - if (is) *is = '\0';
  15839. - char * sg = pSMgr->suggest_gen(&(pl[k]), 1, pl[k]);
  15840. - if (sg) {
  15841. - char ** gen;
  15842. - int genl = line_tok(sg, &gen, MSEP_REC);
  15843. - free(sg);
  15844. - for (int j = 0; j < genl; j++) {
  15845. - sprintf(result2 + strlen(result2), "%c%s%s",
  15846. - MSEP_REC, result, gen[j]);
  15847. - }
  15848. - freelist(&gen, genl);
  15849. - }
  15850. - } else {
  15851. - sprintf(result2 + strlen(result2), "%c%s", MSEP_REC, result);
  15852. - if (strstr(pl[k], MORPH_SURF_PFX)) {
  15853. - copy_field(result2 + strlen(result2), pl[k], MORPH_SURF_PFX);
  15854. - }
  15855. - copy_field(result2 + strlen(result2), pl[k], MORPH_STEM);
  15856. - }
  15857. - }
  15858. - freelist(&pl, pln);
  15859. - }
  15860. - int sln = line_tok(result2, slst, MSEP_REC);
  15861. - return uniqlist(*slst, sln);
  15862. -
  15863. -}
  15864. -
  15865. -int Hunspell::stem(char*** slst, const char * word)
  15866. -{
  15867. - char ** pl;
  15868. - int pln = analyze(&pl, word);
  15869. - int pln2 = stem(slst, pl, pln);
  15870. - freelist(&pl, pln);
  15871. - return pln2;
  15872. -}
  15873. -
  15874. -#ifdef HUNSPELL_EXPERIMENTAL
  15875. -int Hunspell::suggest_pos_stems(char*** slst, const char * word)
  15876. -{
  15877. - char cw[MAXWORDUTF8LEN];
  15878. - char wspace[MAXWORDUTF8LEN];
  15879. - if (! pSMgr || maxdic == 0) return 0;
  15880. - int wl = strlen(word);
  15881. - if (utf8) {
  15882. - if (wl >= MAXWORDUTF8LEN) return 0;
  15883. - } else {
  15884. - if (wl >= MAXWORDLEN) return 0;
  15885. - }
  15886. - int captype = 0;
  15887. - int abbv = 0;
  15888. - wl = cleanword(cw, word, &captype, &abbv);
  15889. - if (wl == 0) return 0;
  15890. -
  15891. - int ns = 0; // ns=0 = normalized input
  15892. -
  15893. - *slst = NULL; // HU, nsug in pSMgr->suggest
  15894. -
  15895. - switch(captype) {
  15896. - case HUHCAP:
  15897. - case NOCAP: {
  15898. - ns = pSMgr->suggest_pos_stems(slst, cw, ns);
  15899. -
  15900. - if ((abbv) && (ns == 0)) {
  15901. - memcpy(wspace,cw,wl);
  15902. - *(wspace+wl) = '.';
  15903. - *(wspace+wl+1) = '\0';
  15904. - ns = pSMgr->suggest_pos_stems(slst, wspace, ns);
  15905. - }
  15906. -
  15907. - break;
  15908. - }
  15909. -
  15910. - case INITCAP: {
  15911. -
  15912. - ns = pSMgr->suggest_pos_stems(slst, cw, ns);
  15913. -
  15914. - if (ns == 0 || ((*slst)[0][0] == '#')) {
  15915. - memcpy(wspace,cw,(wl+1));
  15916. - mkallsmall(wspace);
  15917. - ns = pSMgr->suggest_pos_stems(slst, wspace, ns);
  15918. - }
  15919. -
  15920. - break;
  15921. -
  15922. - }
  15923. -
  15924. - case ALLCAP: {
  15925. - ns = pSMgr->suggest_pos_stems(slst, cw, ns);
  15926. - if (ns != 0) break;
  15927. -
  15928. - memcpy(wspace,cw,(wl+1));
  15929. - mkallsmall(wspace);
  15930. - ns = pSMgr->suggest_pos_stems(slst, wspace, ns);
  15931. -
  15932. - if (ns == 0) {
  15933. - mkinitcap(wspace);
  15934. - ns = pSMgr->suggest_pos_stems(slst, wspace, ns);
  15935. - }
  15936. - break;
  15937. - }
  15938. - }
  15939. -
  15940. - return ns;
  15941. -}
  15942. -#endif // END OF HUNSPELL_EXPERIMENTAL CODE
  15943. -
  15944. -const char * Hunspell::get_wordchars()
  15945. -{
  15946. - return pAMgr->get_wordchars();
  15947. -}
  15948. -
  15949. -unsigned short * Hunspell::get_wordchars_utf16(int * len)
  15950. -{
  15951. - return pAMgr->get_wordchars_utf16(len);
  15952. -}
  15953. -
  15954. -void Hunspell::mkinitcap(char * p)
  15955. -{
  15956. - if (!utf8) {
  15957. - if (*p != '\0') *p = csconv[((unsigned char)*p)].cupper;
  15958. - } else {
  15959. - int len;
  15960. - w_char u[MAXWORDLEN];
  15961. - len = u8_u16(u, MAXWORDLEN, p);
  15962. - unsigned short i = unicodetoupper((u[0].h << 8) + u[0].l, langnum);
  15963. - u[0].h = (unsigned char) (i >> 8);
  15964. - u[0].l = (unsigned char) (i & 0x00FF);
  15965. - u16_u8(p, MAXWORDUTF8LEN, u, len);
  15966. - }
  15967. -}
  15968. -
  15969. -int Hunspell::mkinitcap2(char * p, w_char * u, int nc)
  15970. -{
  15971. - if (!utf8) {
  15972. - if (*p != '\0') *p = csconv[((unsigned char)*p)].cupper;
  15973. - } else if (nc > 0) {
  15974. - unsigned short i = unicodetoupper((u[0].h << 8) + u[0].l, langnum);
  15975. - u[0].h = (unsigned char) (i >> 8);
  15976. - u[0].l = (unsigned char) (i & 0x00FF);
  15977. - u16_u8(p, MAXWORDUTF8LEN, u, nc);
  15978. - return strlen(p);
  15979. - }
  15980. - return nc;
  15981. -}
  15982. -
  15983. -int Hunspell::mkinitsmall2(char * p, w_char * u, int nc)
  15984. -{
  15985. - if (!utf8) {
  15986. - if (*p != '\0') *p = csconv[((unsigned char)*p)].clower;
  15987. - } else if (nc > 0) {
  15988. - unsigned short i = unicodetolower((u[0].h << 8) + u[0].l, langnum);
  15989. - u[0].h = (unsigned char) (i >> 8);
  15990. - u[0].l = (unsigned char) (i & 0x00FF);
  15991. - u16_u8(p, MAXWORDUTF8LEN, u, nc);
  15992. - return strlen(p);
  15993. - }
  15994. - return nc;
  15995. -}
  15996. -
  15997. -int Hunspell::add(const char * word)
  15998. -{
  15999. - if (pHMgr[0]) return (pHMgr[0])->add(word);
  16000. - return 0;
  16001. -}
  16002. -
  16003. -int Hunspell::add_with_affix(const char * word, const char * example)
  16004. -{
  16005. - if (pHMgr[0]) return (pHMgr[0])->add_with_affix(word, example);
  16006. - return 0;
  16007. -}
  16008. -
  16009. -int Hunspell::remove(const char * word)
  16010. -{
  16011. - if (pHMgr[0]) return (pHMgr[0])->remove(word);
  16012. - return 0;
  16013. -}
  16014. -
  16015. -const char * Hunspell::get_version()
  16016. -{
  16017. - return pAMgr->get_version();
  16018. -}
  16019. -
  16020. -struct cs_info * Hunspell::get_csconv()
  16021. -{
  16022. - return csconv;
  16023. -}
  16024. -
  16025. -void Hunspell::cat_result(char * result, char * st)
  16026. -{
  16027. - if (st) {
  16028. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16029. - mystrcat(result, st, MAXLNLEN);
  16030. - free(st);
  16031. - }
  16032. -}
  16033. -
  16034. -int Hunspell::analyze(char*** slst, const char * word)
  16035. -{
  16036. - char cw[MAXWORDUTF8LEN];
  16037. - char wspace[MAXWORDUTF8LEN];
  16038. - w_char unicw[MAXWORDLEN];
  16039. - int wl2 = 0;
  16040. - *slst = NULL;
  16041. - if (! pSMgr || maxdic == 0) return 0;
  16042. - int nc = strlen(word);
  16043. - if (utf8) {
  16044. - if (nc >= MAXWORDUTF8LEN) return 0;
  16045. - } else {
  16046. - if (nc >= MAXWORDLEN) return 0;
  16047. - }
  16048. - int captype = 0;
  16049. - int abbv = 0;
  16050. - int wl = 0;
  16051. -
  16052. - // input conversion
  16053. - RepList * rl = (pAMgr) ? pAMgr->get_iconvtable() : NULL;
  16054. - if (rl && rl->conv(word, wspace)) wl = cleanword2(cw, wspace, unicw, &nc, &captype, &abbv);
  16055. - else wl = cleanword2(cw, word, unicw, &nc, &captype, &abbv);
  16056. -
  16057. - if (wl == 0) {
  16058. - if (abbv) {
  16059. - for (wl = 0; wl < abbv; wl++) cw[wl] = '.';
  16060. - cw[wl] = '\0';
  16061. - abbv = 0;
  16062. - } else return 0;
  16063. - }
  16064. -
  16065. - char result[MAXLNLEN];
  16066. - char * st = NULL;
  16067. -
  16068. - *result = '\0';
  16069. -
  16070. - int n = 0;
  16071. - int n2 = 0;
  16072. - int n3 = 0;
  16073. -
  16074. - // test numbers
  16075. - // LANG_hu section: set dash information for suggestions
  16076. - if (langnum == LANG_hu) {
  16077. - while ((n < wl) &&
  16078. - (((cw[n] <= '9') && (cw[n] >= '0')) || (((cw[n] == '.') || (cw[n] == ',')) && (n > 0)))) {
  16079. - n++;
  16080. - if ((cw[n] == '.') || (cw[n] == ',')) {
  16081. - if (((n2 == 0) && (n > 3)) ||
  16082. - ((n2 > 0) && ((cw[n-1] == '.') || (cw[n-1] == ',')))) break;
  16083. - n2++;
  16084. - n3 = n;
  16085. - }
  16086. - }
  16087. -
  16088. - if ((n == wl) && (n3 > 0) && (n - n3 > 3)) return 0;
  16089. - if ((n == wl) || ((n>0) && ((cw[n]=='%') || (cw[n]=='\xB0')) && checkword(cw+n, NULL, NULL))) {
  16090. - mystrcat(result, cw, MAXLNLEN);
  16091. - result[n - 1] = '\0';
  16092. - if (n == wl) cat_result(result, pSMgr->suggest_morph(cw + n - 1));
  16093. - else {
  16094. - char sign = cw[n];
  16095. - cw[n] = '\0';
  16096. - cat_result(result, pSMgr->suggest_morph(cw + n - 1));
  16097. - mystrcat(result, "+", MAXLNLEN); // XXX SPEC. MORPHCODE
  16098. - cw[n] = sign;
  16099. - cat_result(result, pSMgr->suggest_morph(cw + n));
  16100. - }
  16101. - return line_tok(result, slst, MSEP_REC);
  16102. - }
  16103. - }
  16104. - // END OF LANG_hu section
  16105. -
  16106. - switch(captype) {
  16107. - case HUHCAP:
  16108. - case HUHINITCAP:
  16109. - case NOCAP: {
  16110. - cat_result(result, pSMgr->suggest_morph(cw));
  16111. - if (abbv) {
  16112. - memcpy(wspace,cw,wl);
  16113. - *(wspace+wl) = '.';
  16114. - *(wspace+wl+1) = '\0';
  16115. - cat_result(result, pSMgr->suggest_morph(wspace));
  16116. - }
  16117. - break;
  16118. - }
  16119. - case INITCAP: {
  16120. - wl = mkallsmall2(cw, unicw, nc);
  16121. - memcpy(wspace,cw,(wl+1));
  16122. - wl2 = mkinitcap2(cw, unicw, nc);
  16123. - cat_result(result, pSMgr->suggest_morph(wspace));
  16124. - cat_result(result, pSMgr->suggest_morph(cw));
  16125. - if (abbv) {
  16126. - *(wspace+wl) = '.';
  16127. - *(wspace+wl+1) = '\0';
  16128. - cat_result(result, pSMgr->suggest_morph(wspace));
  16129. -
  16130. - memcpy(wspace, cw, wl2);
  16131. - *(wspace+wl2) = '.';
  16132. - *(wspace+wl2+1) = '\0';
  16133. -
  16134. - cat_result(result, pSMgr->suggest_morph(wspace));
  16135. - }
  16136. - break;
  16137. - }
  16138. - case ALLCAP: {
  16139. - cat_result(result, pSMgr->suggest_morph(cw));
  16140. - if (abbv) {
  16141. - memcpy(wspace,cw,wl);
  16142. - *(wspace+wl) = '.';
  16143. - *(wspace+wl+1) = '\0';
  16144. - cat_result(result, pSMgr->suggest_morph(cw));
  16145. - }
  16146. - wl = mkallsmall2(cw, unicw, nc);
  16147. - memcpy(wspace,cw,(wl+1));
  16148. - wl2 = mkinitcap2(cw, unicw, nc);
  16149. -
  16150. - cat_result(result, pSMgr->suggest_morph(wspace));
  16151. - cat_result(result, pSMgr->suggest_morph(cw));
  16152. - if (abbv) {
  16153. - *(wspace+wl) = '.';
  16154. - *(wspace+wl+1) = '\0';
  16155. - cat_result(result, pSMgr->suggest_morph(wspace));
  16156. -
  16157. - memcpy(wspace, cw, wl2);
  16158. - *(wspace+wl2) = '.';
  16159. - *(wspace+wl2+1) = '\0';
  16160. -
  16161. - cat_result(result, pSMgr->suggest_morph(wspace));
  16162. - }
  16163. - break;
  16164. - }
  16165. - }
  16166. -
  16167. - if (*result) {
  16168. - // word reversing wrapper for complex prefixes
  16169. - if (complexprefixes) {
  16170. - if (utf8) reverseword_utf(result); else reverseword(result);
  16171. - }
  16172. - return line_tok(result, slst, MSEP_REC);
  16173. - }
  16174. -
  16175. - // compound word with dash (HU) I18n
  16176. - char * dash = NULL;
  16177. - int nresult = 0;
  16178. - // LANG_hu section: set dash information for suggestions
  16179. - if (langnum == LANG_hu) dash = (char *) strchr(cw,'-');
  16180. - if ((langnum == LANG_hu) && dash) {
  16181. - *dash='\0';
  16182. - // examine 2 sides of the dash
  16183. - if (dash[1] == '\0') { // base word ending with dash
  16184. - if (spell(cw)) {
  16185. - char * p = pSMgr->suggest_morph(cw);
  16186. - if (p) {
  16187. - int ret = line_tok(p, slst, MSEP_REC);
  16188. - free(p);
  16189. - return ret;
  16190. - }
  16191. -
  16192. - }
  16193. - } else if ((dash[1] == 'e') && (dash[2] == '\0')) { // XXX (HU) -e hat.
  16194. - if (spell(cw) && (spell("-e"))) {
  16195. - st = pSMgr->suggest_morph(cw);
  16196. - if (st) {
  16197. - mystrcat(result, st, MAXLNLEN);
  16198. - free(st);
  16199. - }
  16200. - mystrcat(result,"+", MAXLNLEN); // XXX spec. separator in MORPHCODE
  16201. - st = pSMgr->suggest_morph("-e");
  16202. - if (st) {
  16203. - mystrcat(result, st, MAXLNLEN);
  16204. - free(st);
  16205. - }
  16206. - return line_tok(result, slst, MSEP_REC);
  16207. - }
  16208. - } else {
  16209. - // first word ending with dash: word- XXX ???
  16210. - char r2 = *(dash + 1);
  16211. - dash[0]='-';
  16212. - dash[1]='\0';
  16213. - nresult = spell(cw);
  16214. - dash[1] = r2;
  16215. - dash[0]='\0';
  16216. - if (nresult && spell(dash+1) && ((strlen(dash+1) > 1) ||
  16217. - ((dash[1] > '0') && (dash[1] < '9')))) {
  16218. - st = pSMgr->suggest_morph(cw);
  16219. - if (st) {
  16220. - mystrcat(result, st, MAXLNLEN);
  16221. - free(st);
  16222. - mystrcat(result,"+", MAXLNLEN); // XXX spec. separator in MORPHCODE
  16223. - }
  16224. - st = pSMgr->suggest_morph(dash+1);
  16225. - if (st) {
  16226. - mystrcat(result, st, MAXLNLEN);
  16227. - free(st);
  16228. - }
  16229. - return line_tok(result, slst, MSEP_REC);
  16230. - }
  16231. - }
  16232. - // affixed number in correct word
  16233. - if (nresult && (dash > cw) && (((*(dash-1)<='9') &&
  16234. - (*(dash-1)>='0')) || (*(dash-1)=='.'))) {
  16235. - *dash='-';
  16236. - n = 1;
  16237. - if (*(dash - n) == '.') n++;
  16238. - // search first not a number character to left from dash
  16239. - while (((dash - n)>=cw) && ((*(dash - n)=='0') || (n < 3)) && (n < 6)) {
  16240. - n++;
  16241. - }
  16242. - if ((dash - n) < cw) n--;
  16243. - // numbers: valami1000000-hoz
  16244. - // examine 100000-hoz, 10000-hoz 1000-hoz, 10-hoz,
  16245. - // 56-hoz, 6-hoz
  16246. - for(; n >= 1; n--) {
  16247. - if ((*(dash - n) >= '0') && (*(dash - n) <= '9') && checkword(dash - n, NULL, NULL)) {
  16248. - mystrcat(result, cw, MAXLNLEN);
  16249. - result[dash - cw - n] = '\0';
  16250. - st = pSMgr->suggest_morph(dash - n);
  16251. - if (st) {
  16252. - mystrcat(result, st, MAXLNLEN);
  16253. - free(st);
  16254. - }
  16255. - return line_tok(result, slst, MSEP_REC);
  16256. - }
  16257. - }
  16258. - }
  16259. - }
  16260. - return 0;
  16261. -}
  16262. -
  16263. -int Hunspell::generate(char*** slst, const char * word, char ** pl, int pln)
  16264. -{
  16265. - *slst = NULL;
  16266. - if (!pSMgr || !pln) return 0;
  16267. - char **pl2;
  16268. - int pl2n = analyze(&pl2, word);
  16269. - int captype = 0;
  16270. - int abbv = 0;
  16271. - char cw[MAXWORDUTF8LEN];
  16272. - cleanword(cw, word, &captype, &abbv);
  16273. - char result[MAXLNLEN];
  16274. - *result = '\0';
  16275. -
  16276. - for (int i = 0; i < pln; i++) {
  16277. - cat_result(result, pSMgr->suggest_gen(pl2, pl2n, pl[i]));
  16278. - }
  16279. - freelist(&pl2, pl2n);
  16280. -
  16281. - if (*result) {
  16282. - // allcap
  16283. - if (captype == ALLCAP) mkallcap(result);
  16284. -
  16285. - // line split
  16286. - int linenum = line_tok(result, slst, MSEP_REC);
  16287. -
  16288. - // capitalize
  16289. - if (captype == INITCAP || captype == HUHINITCAP) {
  16290. - for (int j=0; j < linenum; j++) mkinitcap((*slst)[j]);
  16291. - }
  16292. -
  16293. - // temporary filtering of prefix related errors (eg.
  16294. - // generate("undrinkable", "eats") --> "undrinkables" and "*undrinks")
  16295. -
  16296. - int r = 0;
  16297. - for (int j=0; j < linenum; j++) {
  16298. - if (!spell((*slst)[j])) {
  16299. - free((*slst)[j]);
  16300. - (*slst)[j] = NULL;
  16301. - } else {
  16302. - if (r < j) (*slst)[r] = (*slst)[j];
  16303. - r++;
  16304. - }
  16305. - }
  16306. - if (r > 0) return r;
  16307. - free(*slst);
  16308. - *slst = NULL;
  16309. - }
  16310. - return 0;
  16311. -}
  16312. -
  16313. -int Hunspell::generate(char*** slst, const char * word, const char * pattern)
  16314. -{
  16315. - char **pl;
  16316. - int pln = analyze(&pl, pattern);
  16317. - int n = generate(slst, word, pl, pln);
  16318. - freelist(&pl, pln);
  16319. - return uniqlist(*slst, n);
  16320. -}
  16321. -
  16322. -// minimal XML parser functions
  16323. -int Hunspell::get_xml_par(char * dest, const char * par, int max)
  16324. -{
  16325. - char * d = dest;
  16326. - if (!par) return 0;
  16327. - char end = *par;
  16328. - char * dmax = dest + max;
  16329. - if (end == '>') end = '<';
  16330. - else if (end != '\'' && end != '"') return 0; // bad XML
  16331. - for (par++; d < dmax && *par != '\0' && *par != end; par++, d++) *d = *par;
  16332. - *d = '\0';
  16333. - mystrrep(dest, "&lt;", "<");
  16334. - mystrrep(dest, "&amp;", "&");
  16335. - return (int)(d - dest);
  16336. -}
  16337. -
  16338. -int Hunspell::get_langnum() const
  16339. -{
  16340. - return langnum;
  16341. -}
  16342. -
  16343. -int Hunspell::input_conv(const char * word, char * dest)
  16344. -{
  16345. - RepList * rl = (pAMgr) ? pAMgr->get_iconvtable() : NULL;
  16346. - return (rl && rl->conv(word, dest));
  16347. -}
  16348. -
  16349. -
  16350. -// return the beginning of the element (attr == NULL) or the attribute
  16351. -const char * Hunspell::get_xml_pos(const char * s, const char * attr)
  16352. -{
  16353. - const char * end = strchr(s, '>');
  16354. - const char * p = s;
  16355. - if (attr == NULL) return end;
  16356. - do {
  16357. - p = strstr(p, attr);
  16358. - if (!p || p >= end) return 0;
  16359. - } while (*(p-1) != ' ' && *(p-1) != '\n');
  16360. - return p + strlen(attr);
  16361. -}
  16362. -
  16363. -int Hunspell::check_xml_par(const char * q, const char * attr, const char * value) {
  16364. - char cw[MAXWORDUTF8LEN];
  16365. - if (get_xml_par(cw, get_xml_pos(q, attr), MAXWORDUTF8LEN - 1) &&
  16366. - strcmp(cw, value) == 0) return 1;
  16367. - return 0;
  16368. -}
  16369. -
  16370. -int Hunspell::get_xml_list(char ***slst, char * list, const char * tag) {
  16371. - int n = 0;
  16372. - char * p;
  16373. - if (!list) return 0;
  16374. - for (p = list; ((p = strstr(p, tag)) != NULL); p++) n++;
  16375. - if (n == 0) return 0;
  16376. - *slst = (char **) malloc(sizeof(char *) * n);
  16377. - if (!*slst) return 0;
  16378. - for (p = list, n = 0; ((p = strstr(p, tag)) != NULL); p++, n++) {
  16379. - int l = strlen(p);
  16380. - (*slst)[n] = (char *) malloc(l + 1);
  16381. - if (!(*slst)[n]) return n;
  16382. - if (!get_xml_par((*slst)[n], p + strlen(tag) - 1, l)) {
  16383. - free((*slst)[n]);
  16384. - break;
  16385. - }
  16386. - }
  16387. - return n;
  16388. -}
  16389. -
  16390. -namespace
  16391. -{
  16392. - void myrep(std::string& str, const std::string& search, const std::string& replace)
  16393. - {
  16394. - size_t pos = 0;
  16395. - while ((pos = str.find(search, pos)) != std::string::npos)
  16396. - {
  16397. - str.replace(pos, search.length(), replace);
  16398. - pos += replace.length();
  16399. - }
  16400. - }
  16401. -}
  16402. -
  16403. -int Hunspell::spellml(char*** slst, const char * word)
  16404. -{
  16405. - char *q, *q2;
  16406. - char cw[MAXWORDUTF8LEN], cw2[MAXWORDUTF8LEN];
  16407. - q = (char *) strstr(word, "<query");
  16408. - if (!q) return 0; // bad XML input
  16409. - q2 = strchr(q, '>');
  16410. - if (!q2) return 0; // bad XML input
  16411. - q2 = strstr(q2, "<word");
  16412. - if (!q2) return 0; // bad XML input
  16413. - if (check_xml_par(q, "type=", "analyze")) {
  16414. - int n = 0;
  16415. - if (get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN - 10)) n = analyze(slst, cw);
  16416. - if (n == 0) return 0;
  16417. - // convert the result to <code><a>ana1</a><a>ana2</a></code> format
  16418. - std::string r;
  16419. - r.append("<code>");
  16420. - for (int i = 0; i < n; i++) {
  16421. - r.append("<a>");
  16422. -
  16423. - std::string entry((*slst)[i]);
  16424. - free((*slst)[i]);
  16425. - myrep(entry, "\t", " ");
  16426. - myrep(entry, "&", "&amp;");
  16427. - myrep(entry, "<", "&lt;");
  16428. - r.append(entry);
  16429. -
  16430. - r.append("</a>");
  16431. - }
  16432. - r.append("</code>");
  16433. - (*slst)[0] = mystrdup(r.c_str());
  16434. - return 1;
  16435. - } else if (check_xml_par(q, "type=", "stem")) {
  16436. - if (get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN - 1)) return stem(slst, cw);
  16437. - } else if (check_xml_par(q, "type=", "generate")) {
  16438. - int n = get_xml_par(cw, strchr(q2, '>'), MAXWORDUTF8LEN - 1);
  16439. - if (n == 0) return 0;
  16440. - char * q3 = strstr(q2 + 1, "<word");
  16441. - if (q3) {
  16442. - if (get_xml_par(cw2, strchr(q3, '>'), MAXWORDUTF8LEN - 1)) {
  16443. - return generate(slst, cw, cw2);
  16444. - }
  16445. - } else {
  16446. - if ((q2 = strstr(q2 + 1, "<code")) != NULL) {
  16447. - char ** slst2;
  16448. - if ((n = get_xml_list(&slst2, strchr(q2, '>'), "<a>")) != 0) {
  16449. - int n2 = generate(slst, cw, slst2, n);
  16450. - freelist(&slst2, n);
  16451. - return uniqlist(*slst, n2);
  16452. - }
  16453. - freelist(&slst2, n);
  16454. - }
  16455. - }
  16456. - }
  16457. - return 0;
  16458. -}
  16459. -
  16460. -
  16461. -#ifdef HUNSPELL_EXPERIMENTAL
  16462. -// XXX need UTF-8 support
  16463. -char * Hunspell::morph_with_correction(const char * word)
  16464. -{
  16465. - char cw[MAXWORDUTF8LEN];
  16466. - char wspace[MAXWORDUTF8LEN];
  16467. - if (! pSMgr || maxdic == 0) return NULL;
  16468. - int wl = strlen(word);
  16469. - if (utf8) {
  16470. - if (wl >= MAXWORDUTF8LEN) return NULL;
  16471. - } else {
  16472. - if (wl >= MAXWORDLEN) return NULL;
  16473. - }
  16474. - int captype = 0;
  16475. - int abbv = 0;
  16476. - wl = cleanword(cw, word, &captype, &abbv);
  16477. - if (wl == 0) return NULL;
  16478. -
  16479. - char result[MAXLNLEN];
  16480. - char * st = NULL;
  16481. -
  16482. - *result = '\0';
  16483. -
  16484. -
  16485. - switch(captype) {
  16486. - case NOCAP: {
  16487. - st = pSMgr->suggest_morph_for_spelling_error(cw);
  16488. - if (st) {
  16489. - mystrcat(result, st, MAXLNLEN);
  16490. - free(st);
  16491. - }
  16492. - if (abbv) {
  16493. - memcpy(wspace,cw,wl);
  16494. - *(wspace+wl) = '.';
  16495. - *(wspace+wl+1) = '\0';
  16496. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16497. - if (st) {
  16498. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16499. - mystrcat(result, st, MAXLNLEN);
  16500. - free(st);
  16501. - }
  16502. - }
  16503. - break;
  16504. - }
  16505. - case INITCAP: {
  16506. - memcpy(wspace,cw,(wl+1));
  16507. - mkallsmall(wspace);
  16508. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16509. - if (st) {
  16510. - mystrcat(result, st, MAXLNLEN);
  16511. - free(st);
  16512. - }
  16513. - st = pSMgr->suggest_morph_for_spelling_error(cw);
  16514. - if (st) {
  16515. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16516. - mystrcat(result, st, MAXLNLEN);
  16517. - free(st);
  16518. - }
  16519. - if (abbv) {
  16520. - memcpy(wspace,cw,wl);
  16521. - *(wspace+wl) = '.';
  16522. - *(wspace+wl+1) = '\0';
  16523. - mkallsmall(wspace);
  16524. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16525. - if (st) {
  16526. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16527. - mystrcat(result, st, MAXLNLEN);
  16528. - free(st);
  16529. - }
  16530. - mkinitcap(wspace);
  16531. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16532. - if (st) {
  16533. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16534. - mystrcat(result, st, MAXLNLEN);
  16535. - free(st);
  16536. - }
  16537. - }
  16538. - break;
  16539. - }
  16540. - case HUHCAP: {
  16541. - st = pSMgr->suggest_morph_for_spelling_error(cw);
  16542. - if (st) {
  16543. - mystrcat(result, st, MAXLNLEN);
  16544. - free(st);
  16545. - }
  16546. - memcpy(wspace,cw,(wl+1));
  16547. - mkallsmall(wspace);
  16548. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16549. - if (st) {
  16550. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16551. - mystrcat(result, st, MAXLNLEN);
  16552. - free(st);
  16553. - }
  16554. - break;
  16555. - }
  16556. - case ALLCAP: {
  16557. - memcpy(wspace,cw,(wl+1));
  16558. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16559. - if (st) {
  16560. - mystrcat(result, st, MAXLNLEN);
  16561. - free(st);
  16562. - }
  16563. - mkallsmall(wspace);
  16564. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16565. - if (st) {
  16566. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16567. - mystrcat(result, st, MAXLNLEN);
  16568. - free(st);
  16569. - }
  16570. - mkinitcap(wspace);
  16571. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16572. - if (st) {
  16573. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16574. - mystrcat(result, st, MAXLNLEN);
  16575. - free(st);
  16576. - }
  16577. - if (abbv) {
  16578. - memcpy(wspace,cw,(wl+1));
  16579. - *(wspace+wl) = '.';
  16580. - *(wspace+wl+1) = '\0';
  16581. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16582. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16583. - if (st) {
  16584. - mystrcat(result, st, MAXLNLEN);
  16585. - free(st);
  16586. - }
  16587. - mkallsmall(wspace);
  16588. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16589. - if (st) {
  16590. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16591. - mystrcat(result, st, MAXLNLEN);
  16592. - free(st);
  16593. - }
  16594. - mkinitcap(wspace);
  16595. - st = pSMgr->suggest_morph_for_spelling_error(wspace);
  16596. - if (st) {
  16597. - if (*result) mystrcat(result, "\n", MAXLNLEN);
  16598. - mystrcat(result, st, MAXLNLEN);
  16599. - free(st);
  16600. - }
  16601. - }
  16602. - break;
  16603. - }
  16604. - }
  16605. -
  16606. - if (*result) return mystrdup(result);
  16607. - return NULL;
  16608. -}
  16609. -
  16610. -#endif // END OF HUNSPELL_EXPERIMENTAL CODE
  16611. -
  16612. -
  16613. diff --git a/src/hunspell/hunspell.dsp b/src/hunspell/hunspell.dsp
  16614. deleted file mode 100644
  16615. index c182621742..0000000000
  16616. --- a/src/hunspell/hunspell.dsp
  16617. +++ /dev/null
  16618. @@ -1,164 +0,0 @@
  16619. -# Microsoft Developer Studio Project File - Name="hunspell" - Package Owner=<4>
  16620. -# Microsoft Developer Studio Generated Build File, Format Version 6.00
  16621. -# ** DO NOT EDIT **
  16622. -
  16623. -# TARGTYPE "Win32 (x86) Static Library" 0x0104
  16624. -
  16625. -CFG=hunspell - Win32 Debug
  16626. -!MESSAGE This is not a valid makefile. To build this project using NMAKE,
  16627. -!MESSAGE use the Export Makefile command and run
  16628. -!MESSAGE
  16629. -!MESSAGE NMAKE /f "hunspell.mak".
  16630. -!MESSAGE
  16631. -!MESSAGE You can specify a configuration when running NMAKE
  16632. -!MESSAGE by defining the macro CFG on the command line. For example:
  16633. -!MESSAGE
  16634. -!MESSAGE NMAKE /f "hunspell.mak" CFG="hunspell - Win32 Debug"
  16635. -!MESSAGE
  16636. -!MESSAGE Possible choices for configuration are:
  16637. -!MESSAGE
  16638. -!MESSAGE "hunspell - Win32 Release" (based on "Win32 (x86) Static Library")
  16639. -!MESSAGE "hunspell - Win32 Debug" (based on "Win32 (x86) Static Library")
  16640. -!MESSAGE
  16641. -
  16642. -# Begin Project
  16643. -# PROP AllowPerConfigDependencies 0
  16644. -# PROP Scc_ProjName ""
  16645. -# PROP Scc_LocalPath ""
  16646. -CPP=cl.exe
  16647. -RSC=rc.exe
  16648. -
  16649. -!IF "$(CFG)" == "hunspell - Win32 Release"
  16650. -
  16651. -# PROP BASE Use_MFC 0
  16652. -# PROP BASE Use_Debug_Libraries 0
  16653. -# PROP BASE Output_Dir "Release"
  16654. -# PROP BASE Intermediate_Dir "Release"
  16655. -# PROP BASE Target_Dir ""
  16656. -# PROP Use_MFC 0
  16657. -# PROP Use_Debug_Libraries 0
  16658. -# PROP Output_Dir "Release"
  16659. -# PROP Intermediate_Dir "Release"
  16660. -# PROP Target_Dir ""
  16661. -# ADD BASE CPP /nologo /W3 /GX /O2 /D "W32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
  16662. -# ADD CPP /nologo /W3 /GX /O2 /D "W32" /D "NDEBUG" /D "_MBCS" /D "_LIB" /YX /FD /c
  16663. -# ADD BASE RSC /l 0x40e /d "NDEBUG"
  16664. -# ADD RSC /l 0x40e /d "NDEBUG"
  16665. -BSC32=bscmake.exe
  16666. -# ADD BASE BSC32 /nologo
  16667. -# ADD BSC32 /nologo
  16668. -LIB32=link.exe -lib
  16669. -# ADD BASE LIB32 /nologo
  16670. -# ADD LIB32 /nologo
  16671. -
  16672. -!ELSEIF "$(CFG)" == "hunspell - Win32 Debug"
  16673. -
  16674. -# PROP BASE Use_MFC 0
  16675. -# PROP BASE Use_Debug_Libraries 1
  16676. -# PROP BASE Output_Dir "Debug"
  16677. -# PROP BASE Intermediate_Dir "Debug"
  16678. -# PROP BASE Target_Dir ""
  16679. -# PROP Use_MFC 0
  16680. -# PROP Use_Debug_Libraries 1
  16681. -# PROP Output_Dir "Debug"
  16682. -# PROP Intermediate_Dir "Debug"
  16683. -# PROP Target_Dir ""
  16684. -# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "W32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
  16685. -# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "W32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
  16686. -# ADD BASE RSC /l 0x40e /d "_DEBUG"
  16687. -# ADD RSC /l 0x40e /d "_DEBUG"
  16688. -BSC32=bscmake.exe
  16689. -# ADD BASE BSC32 /nologo
  16690. -# ADD BSC32 /nologo
  16691. -LIB32=link.exe -lib
  16692. -# ADD BASE LIB32 /nologo
  16693. -# ADD LIB32 /nologo
  16694. -
  16695. -!ENDIF
  16696. -
  16697. -# Begin Target
  16698. -
  16699. -# Name "hunspell - Win32 Release"
  16700. -# Name "hunspell - Win32 Debug"
  16701. -# Begin Group "Source Files"
  16702. -
  16703. -# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
  16704. -# Begin Source File
  16705. -
  16706. -SOURCE=.\affentry.cxx
  16707. -# End Source File
  16708. -# Begin Source File
  16709. -
  16710. -SOURCE=.\affixmgr.cxx
  16711. -# End Source File
  16712. -# Begin Source File
  16713. -
  16714. -SOURCE=.\csutil.cxx
  16715. -# End Source File
  16716. -# Begin Source File
  16717. -
  16718. -SOURCE=.\dictmgr.cxx
  16719. -# End Source File
  16720. -# Begin Source File
  16721. -
  16722. -SOURCE=.\hashmgr.cxx
  16723. -# End Source File
  16724. -# Begin Source File
  16725. -
  16726. -SOURCE=.\hunspell.cxx
  16727. -# End Source File
  16728. -# Begin Source File
  16729. -
  16730. -SOURCE=.\suggestmgr.cxx
  16731. -# End Source File
  16732. -# End Group
  16733. -# Begin Group "Header Files"
  16734. -
  16735. -# PROP Default_Filter "h;hpp;hxx;hm;inl"
  16736. -# Begin Source File
  16737. -
  16738. -SOURCE=.\affentry.hxx
  16739. -# End Source File
  16740. -# Begin Source File
  16741. -
  16742. -SOURCE=.\affixmgr.hxx
  16743. -# End Source File
  16744. -# Begin Source File
  16745. -
  16746. -SOURCE=.\atypes.hxx
  16747. -# End Source File
  16748. -# Begin Source File
  16749. -
  16750. -SOURCE=.\baseaffix.hxx
  16751. -# End Source File
  16752. -# Begin Source File
  16753. -
  16754. -SOURCE=.\csutil.hxx
  16755. -# End Source File
  16756. -# Begin Source File
  16757. -
  16758. -SOURCE=.\dictmgr.hxx
  16759. -# End Source File
  16760. -# Begin Source File
  16761. -
  16762. -SOURCE=.\hashmgr.hxx
  16763. -# End Source File
  16764. -# Begin Source File
  16765. -
  16766. -SOURCE=.\htypes.hxx
  16767. -# End Source File
  16768. -# Begin Source File
  16769. -
  16770. -SOURCE=.\langnum.hxx
  16771. -# End Source File
  16772. -# Begin Source File
  16773. -
  16774. -SOURCE=.\hunspell.hxx
  16775. -# End Source File
  16776. -# Begin Source File
  16777. -
  16778. -SOURCE=.\suggestmgr.hxx
  16779. -# End Source File
  16780. -# End Group
  16781. -# End Target
  16782. -# End Project
  16783. diff --git a/src/hunspell/hunspell.hxx b/src/hunspell/hunspell.hxx
  16784. deleted file mode 100644
  16785. index c2b4e4fd7f..0000000000
  16786. --- a/src/hunspell/hunspell.hxx
  16787. +++ /dev/null
  16788. @@ -1,180 +0,0 @@
  16789. -#include "hunvisapi.h"
  16790. -
  16791. -#include "hashmgr.hxx"
  16792. -#include "affixmgr.hxx"
  16793. -#include "suggestmgr.hxx"
  16794. -#include "langnum.hxx"
  16795. -
  16796. -#define SPELL_XML "<?xml?>"
  16797. -
  16798. -#define MAXDIC 20
  16799. -#define MAXSUGGESTION 15
  16800. -#define MAXSHARPS 5
  16801. -
  16802. -#define HUNSPELL_OK (1 << 0)
  16803. -#define HUNSPELL_OK_WARN (1 << 1)
  16804. -
  16805. -#ifndef _MYSPELLMGR_HXX_
  16806. -#define _MYSPELLMGR_HXX_
  16807. -
  16808. -class LIBHUNSPELL_DLL_EXPORTED Hunspell
  16809. -{
  16810. -private:
  16811. - Hunspell(const Hunspell&);
  16812. - Hunspell& operator = (const Hunspell&);
  16813. -private:
  16814. - AffixMgr* pAMgr;
  16815. - HashMgr* pHMgr[MAXDIC];
  16816. - int maxdic;
  16817. - SuggestMgr* pSMgr;
  16818. - char * encoding;
  16819. - struct cs_info * csconv;
  16820. - int langnum;
  16821. - int utf8;
  16822. - int complexprefixes;
  16823. - char** wordbreak;
  16824. -
  16825. -public:
  16826. -
  16827. - /* Hunspell(aff, dic) - constructor of Hunspell class
  16828. - * input: The affix and dictionary data as bytes
  16829. - *
  16830. - * In WIN32 environment, use UTF-8 encoded paths started with the long path
  16831. - * prefix \\\\?\\ to handle system-independent character encoding and very
  16832. - * long path names (without the long path prefix Hunspell will use fopen()
  16833. - * with system-dependent character encoding instead of _wfopen()).
  16834. - */
  16835. -
  16836. - Hunspell(const char *affix_data, const size_t affix_len, const char *dic_data, const size_t dic_len);
  16837. - ~Hunspell();
  16838. -
  16839. - /* spell(word) - spellcheck word
  16840. - * output: 0 = bad word, not 0 = good word
  16841. - *
  16842. - * plus output:
  16843. - * info: information bit array, fields:
  16844. - * SPELL_COMPOUND = a compound word
  16845. - * SPELL_FORBIDDEN = an explicit forbidden word
  16846. - * root: root (stem), when input is a word with affix(es)
  16847. - */
  16848. -
  16849. - int spell(const char * word, int * info = NULL, char ** root = NULL);
  16850. -
  16851. - /* suggest(suggestions, word) - search suggestions
  16852. - * input: pointer to an array of strings pointer and the (bad) word
  16853. - * array of strings pointer (here *slst) may not be initialized
  16854. - * output: number of suggestions in string array, and suggestions in
  16855. - * a newly allocated array of strings (*slts will be NULL when number
  16856. - * of suggestion equals 0.)
  16857. - */
  16858. -
  16859. - int suggest(char*** slst, const char * word);
  16860. -
  16861. - /* deallocate suggestion lists */
  16862. -
  16863. - void free_list(char *** slst, int n);
  16864. -
  16865. - char * get_dic_encoding();
  16866. -
  16867. - /* morphological functions */
  16868. -
  16869. - /* analyze(result, word) - morphological analysis of the word */
  16870. -
  16871. - int analyze(char*** slst, const char * word);
  16872. -
  16873. - /* stem(result, word) - stemmer function */
  16874. -
  16875. - int stem(char*** slst, const char * word);
  16876. -
  16877. - /* stem(result, analysis, n) - get stems from a morph. analysis
  16878. - * example:
  16879. - * char ** result, result2;
  16880. - * int n1 = analyze(&result, "words");
  16881. - * int n2 = stem(&result2, result, n1);
  16882. - */
  16883. -
  16884. - int stem(char*** slst, char ** morph, int n);
  16885. -
  16886. - /* generate(result, word, word2) - morphological generation by example(s) */
  16887. -
  16888. - int generate(char*** slst, const char * word, const char * word2);
  16889. -
  16890. - /* generate(result, word, desc, n) - generation by morph. description(s)
  16891. - * example:
  16892. - * char ** result;
  16893. - * char * affix = "is:plural"; // description depends from dictionaries, too
  16894. - * int n = generate(&result, "word", &affix, 1);
  16895. - * for (int i = 0; i < n; i++) printf("%s\n", result[i]);
  16896. - */
  16897. -
  16898. - int generate(char*** slst, const char * word, char ** desc, int n);
  16899. -
  16900. - /* functions for run-time modification of the dictionary */
  16901. -
  16902. - /* add word to the run-time dictionary */
  16903. -
  16904. - int add(const char * word);
  16905. -
  16906. - /* add word to the run-time dictionary with affix flags of
  16907. - * the example (a dictionary word): Hunspell will recognize
  16908. - * affixed forms of the new word, too.
  16909. - */
  16910. -
  16911. - int add_with_affix(const char * word, const char * example);
  16912. -
  16913. - /* remove word from the run-time dictionary */
  16914. -
  16915. - int remove(const char * word);
  16916. -
  16917. - /* other */
  16918. -
  16919. - /* get extra word characters definied in affix file for tokenization */
  16920. - const char * get_wordchars();
  16921. - unsigned short * get_wordchars_utf16(int * len);
  16922. -
  16923. - struct cs_info * get_csconv();
  16924. - const char * get_version();
  16925. -
  16926. - int get_langnum() const;
  16927. -
  16928. - /* need for putdic */
  16929. - int input_conv(const char * word, char * dest);
  16930. -
  16931. - /* experimental and deprecated functions */
  16932. -
  16933. -#ifdef HUNSPELL_EXPERIMENTAL
  16934. - /* suffix is an affix flag string, similarly in dictionary files */
  16935. - int put_word_suffix(const char * word, const char * suffix);
  16936. - char * morph_with_correction(const char * word);
  16937. -
  16938. - /* spec. suggestions */
  16939. - int suggest_auto(char*** slst, const char * word);
  16940. - int suggest_pos_stems(char*** slst, const char * word);
  16941. -#endif
  16942. -
  16943. -private:
  16944. - int cleanword(char *, const char *, int * pcaptype, int * pabbrev);
  16945. - int cleanword2(char *, const char *, w_char *, int * w_len, int * pcaptype, int * pabbrev);
  16946. - void mkinitcap(char *);
  16947. - int mkinitcap2(char * p, w_char * u, int nc);
  16948. - int mkinitsmall2(char * p, w_char * u, int nc);
  16949. - void mkallcap(char *);
  16950. - int mkallcap2(char * p, w_char * u, int nc);
  16951. - void mkallsmall(char *);
  16952. - int mkallsmall2(char * p, w_char * u, int nc);
  16953. - struct hentry * checkword(const char *, int * info, char **root);
  16954. - char * sharps_u8_l1(char * dest, char * source);
  16955. - hentry * spellsharps(char * base, char *, int, int, char * tmp, int * info, char **root);
  16956. - int is_keepcase(const hentry * rv);
  16957. - int insert_sug(char ***slst, char * word, int ns);
  16958. - void cat_result(char * result, char * st);
  16959. - char * stem_description(const char * desc);
  16960. - int spellml(char*** slst, const char * word);
  16961. - int get_xml_par(char * dest, const char * par, int maxl);
  16962. - const char * get_xml_pos(const char * s, const char * attr);
  16963. - int get_xml_list(char ***slst, char * list, const char * tag);
  16964. - int check_xml_par(const char * q, const char * attr, const char * value);
  16965. -
  16966. -};
  16967. -
  16968. -#endif
  16969. diff --git a/src/hunspell/hunvisapi.h b/src/hunspell/hunvisapi.h
  16970. deleted file mode 100644
  16971. index 503c20f664..0000000000
  16972. --- a/src/hunspell/hunvisapi.h
  16973. +++ /dev/null
  16974. @@ -1,18 +0,0 @@
  16975. -#ifndef _HUNSPELL_VISIBILITY_H_
  16976. -#define _HUNSPELL_VISIBILITY_H_
  16977. -
  16978. -#if defined(HUNSPELL_STATIC)
  16979. -# define LIBHUNSPELL_DLL_EXPORTED
  16980. -#elif defined(_MSC_VER)
  16981. -# if defined(BUILDING_LIBHUNSPELL)
  16982. -# define LIBHUNSPELL_DLL_EXPORTED __declspec(dllexport)
  16983. -# else
  16984. -# define LIBHUNSPELL_DLL_EXPORTED __declspec(dllimport)
  16985. -# endif
  16986. -#elif defined(BUILDING_LIBHUNSPELL) && 1
  16987. -# define LIBHUNSPELL_DLL_EXPORTED __attribute__((__visibility__("default")))
  16988. -#else
  16989. -# define LIBHUNSPELL_DLL_EXPORTED
  16990. -#endif
  16991. -
  16992. -#endif
  16993. diff --git a/src/hunspell/hunvisapi.h.in b/src/hunspell/hunvisapi.h.in
  16994. deleted file mode 100644
  16995. index abf025ae97..0000000000
  16996. --- a/src/hunspell/hunvisapi.h.in
  16997. +++ /dev/null
  16998. @@ -1,18 +0,0 @@
  16999. -#ifndef _HUNSPELL_VISIBILITY_H_
  17000. -#define _HUNSPELL_VISIBILITY_H_
  17001. -
  17002. -#if defined(HUNSPELL_STATIC)
  17003. -# define LIBHUNSPELL_DLL_EXPORTED
  17004. -#elif defined(_MSC_VER)
  17005. -# if defined(BUILDING_LIBHUNSPELL)
  17006. -# define LIBHUNSPELL_DLL_EXPORTED __declspec(dllexport)
  17007. -# else
  17008. -# define LIBHUNSPELL_DLL_EXPORTED __declspec(dllimport)
  17009. -# endif
  17010. -#elif defined(BUILDING_LIBHUNSPELL) && @HAVE_VISIBILITY@
  17011. -# define LIBHUNSPELL_DLL_EXPORTED __attribute__((__visibility__("default")))
  17012. -#else
  17013. -# define LIBHUNSPELL_DLL_EXPORTED
  17014. -#endif
  17015. -
  17016. -#endif
  17017. diff --git a/src/hunspell/langnum.hxx b/src/hunspell/langnum.hxx
  17018. deleted file mode 100644
  17019. index 1d140a701b..0000000000
  17020. --- a/src/hunspell/langnum.hxx
  17021. +++ /dev/null
  17022. @@ -1,38 +0,0 @@
  17023. -#ifndef _LANGNUM_HXX_
  17024. -#define _LANGNUM_HXX_
  17025. -
  17026. -/*
  17027. - language numbers for language specific codes
  17028. - see http://l10n.openoffice.org/languages.html
  17029. -*/
  17030. -
  17031. -enum {
  17032. -LANG_ar=96,
  17033. -LANG_az=100, // custom number
  17034. -LANG_bg=41,
  17035. -LANG_ca=37,
  17036. -LANG_cs=42,
  17037. -LANG_da=45,
  17038. -LANG_de=49,
  17039. -LANG_el=30,
  17040. -LANG_en=01,
  17041. -LANG_es=34,
  17042. -LANG_eu=10,
  17043. -LANG_fr=02,
  17044. -LANG_gl=38,
  17045. -LANG_hr=78,
  17046. -LANG_hu=36,
  17047. -LANG_it=39,
  17048. -LANG_la=99, // custom number
  17049. -LANG_lv=101, // custom number
  17050. -LANG_nl=31,
  17051. -LANG_pl=48,
  17052. -LANG_pt=03,
  17053. -LANG_ru=07,
  17054. -LANG_sv=50,
  17055. -LANG_tr=90,
  17056. -LANG_uk=80,
  17057. -LANG_xx=999
  17058. -};
  17059. -
  17060. -#endif
  17061. diff --git a/src/hunspell/license.hunspell b/src/hunspell/license.hunspell
  17062. deleted file mode 100644
  17063. index 490e440c74..0000000000
  17064. --- a/src/hunspell/license.hunspell
  17065. +++ /dev/null
  17066. @@ -1,59 +0,0 @@
  17067. -/* ***** BEGIN LICENSE BLOCK *****
  17068. - * Version: MPL 1.1/GPL 2.0/LGPL 2.1
  17069. - *
  17070. - * The contents of this file are subject to the Mozilla Public License Version
  17071. - * 1.1 (the "License"); you may not use this file except in compliance with
  17072. - * the License. You may obtain a copy of the License at
  17073. - * http://www.mozilla.org/MPL/
  17074. - *
  17075. - * Software distributed under the License is distributed on an "AS IS" basis,
  17076. - * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  17077. - * for the specific language governing rights and limitations under the
  17078. - * License.
  17079. - *
  17080. - * The Original Code is Hunspell, based on MySpell.
  17081. - *
  17082. - * The Initial Developers of the Original Code are
  17083. - * Kevin Hendricks (MySpell) and Laszlo Nemeth (Hunspell).
  17084. - * Portions created by the Initial Developers are Copyright (C) 2002-2005
  17085. - * the Initial Developers. All Rights Reserved.
  17086. - *
  17087. - * Contributor(s):
  17088. - * David Einstein
  17089. - * Davide Prina
  17090. - * Giuseppe Modugno
  17091. - * Gianluca Turconi
  17092. - * Simon Brouwer
  17093. - * Noll Janos
  17094. - * Biro Arpad
  17095. - * Goldman Eleonora
  17096. - * Sarlos Tamas
  17097. - * Bencsath Boldizsar
  17098. - * Halacsy Peter
  17099. - * Dvornik Laszlo
  17100. - * Gefferth Andras
  17101. - * Nagy Viktor
  17102. - * Varga Daniel
  17103. - * Chris Halls
  17104. - * Rene Engelhard
  17105. - * Bram Moolenaar
  17106. - * Dafydd Jones
  17107. - * Harri Pitkanen
  17108. - * Andras Timar
  17109. - * Tor Lillqvist
  17110. - *
  17111. - * Alternatively, the contents of this file may be used under the terms of
  17112. - * either the GNU General Public License Version 2 or later (the "GPL"), or
  17113. - * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  17114. - * in which case the provisions of the GPL or the LGPL are applicable instead
  17115. - * of those above. If you wish to allow use of your version of this file only
  17116. - * under the terms of either the GPL or the LGPL, and not to allow others to
  17117. - * use your version of this file under the terms of the MPL, indicate your
  17118. - * decision by deleting the provisions above and replace them with the notice
  17119. - * and other provisions required by the GPL or the LGPL. If you do not delete
  17120. - * the provisions above, a recipient may use your version of this file under
  17121. - * the terms of any one of the MPL, the GPL or the LGPL.
  17122. - *
  17123. - * ***** END LICENSE BLOCK ***** */
  17124. -
  17125. -#include "config.h"
  17126. diff --git a/src/hunspell/license.myspell b/src/hunspell/license.myspell
  17127. deleted file mode 100644
  17128. index 2da5330750..0000000000
  17129. --- a/src/hunspell/license.myspell
  17130. +++ /dev/null
  17131. @@ -1,61 +0,0 @@
  17132. -/*
  17133. - * Copyright 2002 Kevin B. Hendricks, Stratford, Ontario, Canada
  17134. - * And Contributors. All rights reserved.
  17135. - *
  17136. - * Redistribution and use in source and binary forms, with or without
  17137. - * modification, are permitted provided that the following conditions
  17138. - * are met:
  17139. - *
  17140. - * 1. Redistributions of source code must retain the above copyright
  17141. - * notice, this list of conditions and the following disclaimer.
  17142. - *
  17143. - * 2. Redistributions in binary form must reproduce the above copyright
  17144. - * notice, this list of conditions and the following disclaimer in the
  17145. - * documentation and/or other materials provided with the distribution.
  17146. - *
  17147. - * 3. All modifications to the source code must be clearly marked as
  17148. - * such. Binary redistributions based on modified source code
  17149. - * must be clearly marked as modified versions in the documentation
  17150. - * and/or other materials provided with the distribution.
  17151. - *
  17152. - * THIS SOFTWARE IS PROVIDED BY KEVIN B. HENDRICKS AND CONTRIBUTORS
  17153. - * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  17154. - * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
  17155. - * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
  17156. - * KEVIN B. HENDRICKS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
  17157. - * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
  17158. - * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  17159. - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  17160. - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  17161. - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  17162. - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  17163. - * SUCH DAMAGE.
  17164. - *
  17165. - *
  17166. - * NOTE: A special thanks and credit goes to Geoff Kuenning
  17167. - * the creator of ispell. MySpell's affix algorithms were
  17168. - * based on those of ispell which should be noted is
  17169. - * copyright Geoff Kuenning et.al. and now available
  17170. - * under a BSD style license. For more information on ispell
  17171. - * and affix compression in general, please see:
  17172. - * http://www.cs.ucla.edu/ficus-members/geoff/ispell.html
  17173. - * (the home page for ispell)
  17174. - *
  17175. - * An almost complete rewrite of MySpell for use by
  17176. - * the Mozilla project has been developed by David Einstein
  17177. - * (Deinst@world.std.com). David and I are now
  17178. - * working on parallel development tracks to help
  17179. - * our respective projects (Mozilla and OpenOffice.org
  17180. - * and we will maintain full affix file and dictionary
  17181. - * file compatibility and work on merging our versions
  17182. - * of MySpell back into a single tree. David has been
  17183. - * a significant help in improving MySpell.
  17184. - *
  17185. - * Special thanks also go to La'szlo' Ne'meth
  17186. - * <nemethl@gyorsposta.hu> who is the author of the
  17187. - * Hungarian dictionary and who developed and contributed
  17188. - * the code to support compound words in MySpell
  17189. - * and fixed numerous problems with the encoding
  17190. - * case conversion tables.
  17191. - *
  17192. - */
  17193. diff --git a/src/hunspell/makefile.mk b/src/hunspell/makefile.mk
  17194. deleted file mode 100644
  17195. index ca8ce42a14..0000000000
  17196. --- a/src/hunspell/makefile.mk
  17197. +++ /dev/null
  17198. @@ -1,65 +0,0 @@
  17199. -#*************************************************************************
  17200. -# Version: MPL 1.1/GPL 2.0/LGPL 2.1
  17201. -#
  17202. -# The contents of this file are subject to the Mozilla Public License Version
  17203. -# 1.1 (the "License"); you may not use this file except in compliance with
  17204. -# the License. You may obtain a copy of the License at
  17205. -# http://www.mozilla.org/MPL/
  17206. -#
  17207. -# Software distributed under the License is distributed on an "AS IS" basis,
  17208. -# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
  17209. -# for the specific language governing rights and limitations under the
  17210. -# License.
  17211. -#
  17212. -# Alternatively, the contents of this file may be used under the terms of
  17213. -# either the GNU General Public License Version 2 or later (the "GPL"), or
  17214. -# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
  17215. -# in which case the provisions of the GPL or the LGPL are applicable instead
  17216. -# of those above. If you wish to allow use of your version of this file only
  17217. -# under the terms of either the GPL or the LGPL, and not to allow others to
  17218. -# use your version of this file under the terms of the MPL, indicate your
  17219. -# decision by deleting the provisions above and replace them with the notice
  17220. -# and other provisions required by the GPL or the LGPL. If you do not delete
  17221. -# the provisions above, a recipient may use your version of this file under
  17222. -# the terms of any one of the MPL, the GPL or the LGPL.
  17223. -#
  17224. -#*************************************************************************
  17225. -
  17226. -PRJ = ../../../../../..
  17227. -
  17228. -PRJNAME = hunspell
  17229. -TARGET = hunspell
  17230. -LIBTARGET=YES
  17231. -EXTERNAL_WARNINGS_NOT_ERRORS := TRUE
  17232. -UWINAPILIB=
  17233. -
  17234. -#----- Settings ---------------------------------------------------------
  17235. -
  17236. -.INCLUDE : settings.mk
  17237. -
  17238. -# --- Files --------------------------------------------------------
  17239. -
  17240. -CFLAGS+=-I..$/..$/
  17241. -CDEFS+=-DOPENOFFICEORG
  17242. -
  17243. -SLOFILES= \
  17244. - $(SLO)$/affentry.obj \
  17245. - $(SLO)$/affixmgr.obj \
  17246. - $(SLO)$/dictmgr.obj \
  17247. - $(SLO)$/csutil.obj \
  17248. - $(SLO)$/hashmgr.obj \
  17249. - $(SLO)$/suggestmgr.obj \
  17250. - $(SLO)$/phonet.obj \
  17251. - $(SLO)$/hunzip.obj \
  17252. - $(SLO)$/filemgr.obj \
  17253. - $(SLO)$/replist.obj \
  17254. - $(SLO)$/hunspell.obj
  17255. -
  17256. -LIB1TARGET= $(SLB)$/lib$(TARGET).lib
  17257. -LIB1ARCHIV= $(LB)/lib$(TARGET).a
  17258. -LIB1OBJFILES= $(SLOFILES)
  17259. -
  17260. -# --- Targets ------------------------------------------------------
  17261. -
  17262. -.INCLUDE : target.mk
  17263. -
  17264. diff --git a/src/hunspell/phonet.cxx b/src/hunspell/phonet.cxx
  17265. deleted file mode 100644
  17266. index b33edeb023..0000000000
  17267. --- a/src/hunspell/phonet.cxx
  17268. +++ /dev/null
  17269. @@ -1,293 +0,0 @@
  17270. -/* phonetic.c - generic replacement aglogithms for phonetic transformation
  17271. - Copyright (C) 2000 Bjoern Jacke
  17272. -
  17273. - This library is free software; you can redistribute it and/or
  17274. - modify it under the terms of the GNU Lesser General Public
  17275. - License version 2.1 as published by the Free Software Foundation;
  17276. -
  17277. - This library is distributed in the hope that it will be useful,
  17278. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  17279. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  17280. - Lesser General Public License for more details.
  17281. -
  17282. - You should have received a copy of the GNU Lesser General Public
  17283. - License along with this library; If not, see
  17284. - <http://www.gnu.org/licenses/>.
  17285. -
  17286. - Changelog:
  17287. -
  17288. - 2000-01-05 Bjoern Jacke <bjoern at j3e.de>
  17289. - Initial Release insprired by the article about phonetic
  17290. - transformations out of c't 25/1999
  17291. -
  17292. - 2007-07-26 Bjoern Jacke <bjoern at j3e.de>
  17293. - Released under MPL/GPL/LGPL tri-license for Hunspell
  17294. -
  17295. - 2007-08-23 Laszlo Nemeth <nemeth at OOo>
  17296. - Porting from Aspell to Hunspell using C-like structs
  17297. -*/
  17298. -
  17299. -#include <stdlib.h>
  17300. -#include <string.h>
  17301. -#include <stdio.h>
  17302. -#include <ctype.h>
  17303. -
  17304. -#include "csutil.hxx"
  17305. -#include "phonet.hxx"
  17306. -
  17307. -void init_phonet_hash(phonetable & parms)
  17308. - {
  17309. - int i, k;
  17310. -
  17311. - for (i = 0; i < HASHSIZE; i++) {
  17312. - parms.hash[i] = -1;
  17313. - }
  17314. -
  17315. - for (i = 0; parms.rules[i][0] != '\0'; i += 2) {
  17316. - /** set hash value **/
  17317. - k = (unsigned char) parms.rules[i][0];
  17318. -
  17319. - if (parms.hash[k] < 0) {
  17320. - parms.hash[k] = i;
  17321. - }
  17322. - }
  17323. - }
  17324. -
  17325. -// like strcpy but safe if the strings overlap
  17326. -// but only if dest < src
  17327. -static inline void strmove(char * dest, char * src) {
  17328. - while (*src)
  17329. - *dest++ = *src++;
  17330. - *dest = '\0';
  17331. -}
  17332. -
  17333. -static int myisalpha(char ch) {
  17334. - if ((unsigned char) ch < 128) return isalpha(ch);
  17335. - return 1;
  17336. -}
  17337. -
  17338. -/* phonetic transcription algorithm */
  17339. -/* see: http://aspell.net/man-html/Phonetic-Code.html */
  17340. -/* convert string to uppercase before this call */
  17341. -int phonet (const char * inword, char * target,
  17342. - int len,
  17343. - phonetable & parms)
  17344. - {
  17345. - /** Do phonetic transformation. **/
  17346. - /** "len" = length of "inword" incl. '\0'. **/
  17347. -
  17348. - /** result: >= 0: length of "target" **/
  17349. - /** otherwise: error **/
  17350. -
  17351. - int i,j,k=0,n,p,z;
  17352. - int k0,n0,p0=-333,z0;
  17353. - char c, c0;
  17354. - const char * s;
  17355. - typedef unsigned char uchar;
  17356. - char word[MAXPHONETUTF8LEN + 1];
  17357. - if (len == -1) len = strlen(inword);
  17358. - if (len > MAXPHONETUTF8LEN) return 0;
  17359. - strncpy(word, inword, MAXPHONETUTF8LEN);
  17360. - word[MAXPHONETUTF8LEN] = '\0';
  17361. -
  17362. - /** check word **/
  17363. - i = j = z = 0;
  17364. - while ((c = word[i]) != '\0') {
  17365. - n = parms.hash[(uchar) c];
  17366. - z0 = 0;
  17367. -
  17368. - if (n >= 0) {
  17369. - /** check all rules for the same letter **/
  17370. - while (parms.rules[n][0] == c) {
  17371. -
  17372. - /** check whole string **/
  17373. - k = 1; /** number of found letters **/
  17374. - p = 5; /** default priority **/
  17375. - s = parms.rules[n];
  17376. - s++; /** important for (see below) "*(s-1)" **/
  17377. -
  17378. - while (*s != '\0' && word[i+k] == *s
  17379. - && !isdigit ((unsigned char) *s) && strchr ("(-<^$", *s) == NULL) {
  17380. - k++;
  17381. - s++;
  17382. - }
  17383. - if (*s == '(') {
  17384. - /** check letters in "(..)" **/
  17385. - if (myisalpha(word[i+k]) // ...could be implied?
  17386. - && strchr(s+1, word[i+k]) != NULL) {
  17387. - k++;
  17388. - while (*s != ')')
  17389. - s++;
  17390. - s++;
  17391. - }
  17392. - }
  17393. - p0 = (int) *s;
  17394. - k0 = k;
  17395. - while (*s == '-' && k > 1) {
  17396. - k--;
  17397. - s++;
  17398. - }
  17399. - if (*s == '<')
  17400. - s++;
  17401. - if (isdigit ((unsigned char) *s)) {
  17402. - /** determine priority **/
  17403. - p = *s - '0';
  17404. - s++;
  17405. - }
  17406. - if (*s == '^' && *(s+1) == '^')
  17407. - s++;
  17408. -
  17409. - if (*s == '\0'
  17410. - || (*s == '^'
  17411. - && (i == 0 || ! myisalpha(word[i-1]))
  17412. - && (*(s+1) != '$'
  17413. - || (! myisalpha(word[i+k0]) )))
  17414. - || (*s == '$' && i > 0
  17415. - && myisalpha(word[i-1])
  17416. - && (! myisalpha(word[i+k0]) )))
  17417. - {
  17418. - /** search for followup rules, if: **/
  17419. - /** parms.followup and k > 1 and NO '-' in searchstring **/
  17420. - c0 = word[i+k-1];
  17421. - n0 = parms.hash[(uchar) c0];
  17422. -
  17423. -// if (parms.followup && k > 1 && n0 >= 0
  17424. - if (k > 1 && n0 >= 0
  17425. - && p0 != (int) '-' && word[i+k] != '\0') {
  17426. - /** test follow-up rule for "word[i+k]" **/
  17427. - while (parms.rules[n0][0] == c0) {
  17428. -
  17429. - /** check whole string **/
  17430. - k0 = k;
  17431. - p0 = 5;
  17432. - s = parms.rules[n0];
  17433. - s++;
  17434. - while (*s != '\0' && word[i+k0] == *s
  17435. - && ! isdigit((unsigned char) *s) && strchr("(-<^$",*s) == NULL) {
  17436. - k0++;
  17437. - s++;
  17438. - }
  17439. - if (*s == '(') {
  17440. - /** check letters **/
  17441. - if (myisalpha(word[i+k0])
  17442. - && strchr (s+1, word[i+k0]) != NULL) {
  17443. - k0++;
  17444. - while (*s != ')' && *s != '\0')
  17445. - s++;
  17446. - if (*s == ')')
  17447. - s++;
  17448. - }
  17449. - }
  17450. - while (*s == '-') {
  17451. - /** "k0" gets NOT reduced **/
  17452. - /** because "if (k0 == k)" **/
  17453. - s++;
  17454. - }
  17455. - if (*s == '<')
  17456. - s++;
  17457. - if (isdigit ((unsigned char) *s)) {
  17458. - p0 = *s - '0';
  17459. - s++;
  17460. - }
  17461. -
  17462. - if (*s == '\0'
  17463. - /** *s == '^' cuts **/
  17464. - || (*s == '$' && ! myisalpha(word[i+k0])))
  17465. - {
  17466. - if (k0 == k) {
  17467. - /** this is just a piece of the string **/
  17468. - n0 += 2;
  17469. - continue;
  17470. - }
  17471. -
  17472. - if (p0 < p) {
  17473. - /** priority too low **/
  17474. - n0 += 2;
  17475. - continue;
  17476. - }
  17477. - /** rule fits; stop search **/
  17478. - break;
  17479. - }
  17480. - n0 += 2;
  17481. - } /** End of "while (parms.rules[n0][0] == c0)" **/
  17482. -
  17483. - if (p0 >= p && parms.rules[n0][0] == c0) {
  17484. - n += 2;
  17485. - continue;
  17486. - }
  17487. - } /** end of follow-up stuff **/
  17488. -
  17489. - /** replace string **/
  17490. - s = parms.rules[n+1];
  17491. - p0 = (parms.rules[n][0] != '\0'
  17492. - && strchr (parms.rules[n]+1,'<') != NULL) ? 1:0;
  17493. - if (p0 == 1 && z == 0) {
  17494. - /** rule with '<' is used **/
  17495. - if (j > 0 && *s != '\0'
  17496. - && (target[j-1] == c || target[j-1] == *s)) {
  17497. - j--;
  17498. - }
  17499. - z0 = 1;
  17500. - z = 1;
  17501. - k0 = 0;
  17502. - while (*s != '\0' && word[i+k0] != '\0') {
  17503. - word[i+k0] = *s;
  17504. - k0++;
  17505. - s++;
  17506. - }
  17507. - if (k > k0)
  17508. - strmove (&word[0]+i+k0, &word[0]+i+k);
  17509. -
  17510. - /** new "actual letter" **/
  17511. - c = word[i];
  17512. - }
  17513. - else { /** no '<' rule used **/
  17514. - i += k - 1;
  17515. - z = 0;
  17516. - while (*s != '\0'
  17517. - && *(s+1) != '\0' && j < len) {
  17518. - if (j == 0 || target[j-1] != *s) {
  17519. - target[j] = *s;
  17520. - j++;
  17521. - }
  17522. - s++;
  17523. - }
  17524. - /** new "actual letter" **/
  17525. - c = *s;
  17526. - if (parms.rules[n][0] != '\0'
  17527. - && strstr (parms.rules[n]+1, "^^") != NULL) {
  17528. - if (c != '\0') {
  17529. - target[j] = c;
  17530. - j++;
  17531. - }
  17532. - strmove (&word[0], &word[0]+i+1);
  17533. - i = 0;
  17534. - z0 = 1;
  17535. - }
  17536. - }
  17537. - break;
  17538. - } /** end of follow-up stuff **/
  17539. - n += 2;
  17540. - } /** end of while (parms.rules[n][0] == c) **/
  17541. - } /** end of if (n >= 0) **/
  17542. - if (z0 == 0) {
  17543. -// if (k && (assert(p0!=-333),!p0) && j < len && c != '\0'
  17544. -// && (!parms.collapse_result || j == 0 || target[j-1] != c)){
  17545. - if (k && !p0 && j < len && c != '\0'
  17546. - && (1 || j == 0 || target[j-1] != c)){
  17547. - /** condense only double letters **/
  17548. - target[j] = c;
  17549. - ///printf("\n setting \n");
  17550. - j++;
  17551. - }
  17552. -
  17553. - i++;
  17554. - z = 0;
  17555. - k=0;
  17556. - }
  17557. - } /** end of while ((c = word[i]) != '\0') **/
  17558. -
  17559. - target[j] = '\0';
  17560. - return (j);
  17561. -
  17562. - } /** end of function "phonet" **/
  17563. diff --git a/src/hunspell/phonet.hxx b/src/hunspell/phonet.hxx
  17564. deleted file mode 100644
  17565. index f91d3b02b8..0000000000
  17566. --- a/src/hunspell/phonet.hxx
  17567. +++ /dev/null
  17568. @@ -1,52 +0,0 @@
  17569. -/* phonetic.c - generic replacement aglogithms for phonetic transformation
  17570. - Copyright (C) 2000 Bjoern Jacke
  17571. -
  17572. - This library is free software; you can redistribute it and/or
  17573. - modify it under the terms of the GNU Lesser General Public
  17574. - License version 2.1 as published by the Free Software Foundation;
  17575. -
  17576. - This library is distributed in the hope that it will be useful,
  17577. - but WITHOUT ANY WARRANTY; without even the implied warranty of
  17578. - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  17579. - Lesser General Public License for more details.
  17580. -
  17581. - You should have received a copy of the GNU Lesser General Public
  17582. - License along with this library; If not, see
  17583. - <http://www.gnu.org/licenses/>.
  17584. -
  17585. - Changelog:
  17586. -
  17587. - 2000-01-05 Bjoern Jacke <bjoern at j3e.de>
  17588. - Initial Release insprired by the article about phonetic
  17589. - transformations out of c't 25/1999
  17590. -
  17591. - 2007-07-26 Bjoern Jacke <bjoern at j3e.de>
  17592. - Released under MPL/GPL/LGPL tri-license for Hunspell
  17593. -
  17594. - 2007-08-23 Laszlo Nemeth <nemeth at OOo>
  17595. - Porting from Aspell to Hunspell using C-like structs
  17596. -*/
  17597. -
  17598. -#ifndef __PHONETHXX__
  17599. -#define __PHONETHXX__
  17600. -
  17601. -#define HASHSIZE 256
  17602. -#define MAXPHONETLEN 256
  17603. -#define MAXPHONETUTF8LEN (MAXPHONETLEN * 4)
  17604. -
  17605. -#include "hunvisapi.h"
  17606. -
  17607. -struct phonetable {
  17608. - char utf8;
  17609. - cs_info * lang;
  17610. - int num;
  17611. - char * * rules;
  17612. - int hash[HASHSIZE];
  17613. -};
  17614. -
  17615. -LIBHUNSPELL_DLL_EXPORTED void init_phonet_hash(phonetable & parms);
  17616. -
  17617. -LIBHUNSPELL_DLL_EXPORTED int phonet (const char * inword, char * target,
  17618. - int len, phonetable & phone);
  17619. -
  17620. -#endif
  17621. diff --git a/src/hunspell/replist.cxx b/src/hunspell/replist.cxx
  17622. deleted file mode 100644
  17623. index 080cd68abf..0000000000
  17624. --- a/src/hunspell/replist.cxx
  17625. +++ /dev/null
  17626. @@ -1,87 +0,0 @@
  17627. -#include "license.hunspell"
  17628. -#include "license.myspell"
  17629. -
  17630. -#include <stdlib.h>
  17631. -#include <string.h>
  17632. -#include <stdio.h>
  17633. -
  17634. -#include "replist.hxx"
  17635. -#include "csutil.hxx"
  17636. -
  17637. -RepList::RepList(int n) {
  17638. - dat = (replentry **) malloc(sizeof(replentry *) * n);
  17639. - if (dat == 0) size = 0; else size = n;
  17640. - pos = 0;
  17641. -}
  17642. -
  17643. -RepList::~RepList()
  17644. -{
  17645. - for (int i = 0; i < pos; i++) {
  17646. - free(dat[i]->pattern);
  17647. - free(dat[i]->pattern2);
  17648. - free(dat[i]);
  17649. - }
  17650. - free(dat);
  17651. -}
  17652. -
  17653. -int RepList::get_pos() {
  17654. - return pos;
  17655. -}
  17656. -
  17657. -replentry * RepList::item(int n) {
  17658. - return dat[n];
  17659. -}
  17660. -
  17661. -int RepList::near(const char * word) {
  17662. - int p1 = 0;
  17663. - int p2 = pos;
  17664. - while ((p2 - p1) > 1) {
  17665. - int m = (p1 + p2) / 2;
  17666. - int c = strcmp(word, dat[m]->pattern);
  17667. - if (c <= 0) {
  17668. - if (c < 0) p2 = m; else p1 = p2 = m;
  17669. - } else p1 = m;
  17670. - }
  17671. - return p1;
  17672. -}
  17673. -
  17674. -int RepList::match(const char * word, int n) {
  17675. - if (strncmp(word, dat[n]->pattern, strlen(dat[n]->pattern)) == 0) return strlen(dat[n]->pattern);
  17676. - return 0;
  17677. -}
  17678. -
  17679. -int RepList::add(char * pat1, char * pat2) {
  17680. - if (pos >= size || pat1 == NULL || pat2 == NULL) return 1;
  17681. - replentry * r = (replentry *) malloc(sizeof(replentry));
  17682. - if (r == NULL) return 1;
  17683. - r->pattern = mystrrep(pat1, "_", " ");
  17684. - r->pattern2 = mystrrep(pat2, "_", " ");
  17685. - r->start = false;
  17686. - r->end = false;
  17687. - dat[pos++] = r;
  17688. - for (int i = pos - 1; i > 0; i--) {
  17689. - r = dat[i];
  17690. - if (strcmp(r->pattern, dat[i - 1]->pattern) < 0) {
  17691. - dat[i] = dat[i - 1];
  17692. - dat[i - 1] = r;
  17693. - } else break;
  17694. - }
  17695. - return 0;
  17696. -}
  17697. -
  17698. -int RepList::conv(const char * word, char * dest) {
  17699. - int stl = 0;
  17700. - int change = 0;
  17701. - for (size_t i = 0; i < strlen(word); i++) {
  17702. - int n = near(word + i);
  17703. - int l = match(word + i, n);
  17704. - if (l) {
  17705. - strcpy(dest + stl, dat[n]->pattern2);
  17706. - stl += strlen(dat[n]->pattern2);
  17707. - i += l - 1;
  17708. - change = 1;
  17709. - } else dest[stl++] = word[i];
  17710. - }
  17711. - dest[stl] = '\0';
  17712. - return change;
  17713. -}
  17714. diff --git a/src/hunspell/replist.hxx b/src/hunspell/replist.hxx
  17715. deleted file mode 100644
  17716. index 2dbc0160bd..0000000000
  17717. --- a/src/hunspell/replist.hxx
  17718. +++ /dev/null
  17719. @@ -1,30 +0,0 @@
  17720. -/* string replacement list class */
  17721. -#ifndef _REPLIST_HXX_
  17722. -#define _REPLIST_HXX_
  17723. -
  17724. -#include "hunvisapi.h"
  17725. -
  17726. -#include "w_char.hxx"
  17727. -
  17728. -class LIBHUNSPELL_DLL_EXPORTED RepList
  17729. -{
  17730. -private:
  17731. - RepList(const RepList&);
  17732. - RepList& operator = (const RepList&);
  17733. -protected:
  17734. - replentry ** dat;
  17735. - int size;
  17736. - int pos;
  17737. -
  17738. -public:
  17739. - RepList(int n);
  17740. - ~RepList();
  17741. -
  17742. - int get_pos();
  17743. - int add(char * pat1, char * pat2);
  17744. - replentry * item(int n);
  17745. - int near(const char * word);
  17746. - int match(const char * word, int n);
  17747. - int conv(const char * word, char * dest);
  17748. -};
  17749. -#endif
  17750. diff --git a/src/hunspell/suggestmgr.cxx b/src/hunspell/suggestmgr.cxx
  17751. deleted file mode 100644
  17752. index f0e336c974..0000000000
  17753. --- a/src/hunspell/suggestmgr.cxx
  17754. +++ /dev/null
  17755. @@ -1,2029 +0,0 @@
  17756. -#include "license.hunspell"
  17757. -#include "license.myspell"
  17758. -
  17759. -#include <stdlib.h>
  17760. -#include <string.h>
  17761. -#include <stdio.h>
  17762. -#include <ctype.h>
  17763. -
  17764. -#include "suggestmgr.hxx"
  17765. -#include "htypes.hxx"
  17766. -#include "csutil.hxx"
  17767. -
  17768. -const w_char W_VLINE = { '\0', '|' };
  17769. -
  17770. -SuggestMgr::SuggestMgr(const char * tryme, int maxn,
  17771. - AffixMgr * aptr)
  17772. -{
  17773. -
  17774. - // register affix manager and check in string of chars to
  17775. - // try when building candidate suggestions
  17776. - pAMgr = aptr;
  17777. -
  17778. - csconv = NULL;
  17779. -
  17780. - ckeyl = 0;
  17781. - ckey = NULL;
  17782. - ckey_utf = NULL;
  17783. -
  17784. - ctryl = 0;
  17785. - ctry = NULL;
  17786. - ctry_utf = NULL;
  17787. -
  17788. - utf8 = 0;
  17789. - langnum = 0;
  17790. - complexprefixes = 0;
  17791. -
  17792. - maxSug = maxn;
  17793. - nosplitsugs = 0;
  17794. - maxngramsugs = MAXNGRAMSUGS;
  17795. - maxcpdsugs = MAXCOMPOUNDSUGS;
  17796. -
  17797. - if (pAMgr) {
  17798. - langnum = pAMgr->get_langnum();
  17799. - ckey = pAMgr->get_key_string();
  17800. - nosplitsugs = pAMgr->get_nosplitsugs();
  17801. - if (pAMgr->get_maxngramsugs() >= 0)
  17802. - maxngramsugs = pAMgr->get_maxngramsugs();
  17803. - utf8 = pAMgr->get_utf8();
  17804. - if (pAMgr->get_maxcpdsugs() >= 0)
  17805. - maxcpdsugs = pAMgr->get_maxcpdsugs();
  17806. - if (!utf8)
  17807. - {
  17808. - char * enc = pAMgr->get_encoding();
  17809. - csconv = get_current_cs(enc);
  17810. - free(enc);
  17811. - }
  17812. - complexprefixes = pAMgr->get_complexprefixes();
  17813. - }
  17814. -
  17815. - if (ckey) {
  17816. - if (utf8) {
  17817. - w_char t[MAXSWL];
  17818. - ckeyl = u8_u16(t, MAXSWL, ckey);
  17819. - ckey_utf = (w_char *) malloc(ckeyl * sizeof(w_char));
  17820. - if (ckey_utf) memcpy(ckey_utf, t, ckeyl * sizeof(w_char));
  17821. - else ckeyl = 0;
  17822. - } else {
  17823. - ckeyl = strlen(ckey);
  17824. - }
  17825. - }
  17826. -
  17827. - if (tryme) {
  17828. - ctry = mystrdup(tryme);
  17829. - if (ctry) ctryl = strlen(ctry);
  17830. - if (ctry && utf8) {
  17831. - w_char t[MAXSWL];
  17832. - ctryl = u8_u16(t, MAXSWL, tryme);
  17833. - ctry_utf = (w_char *) malloc(ctryl * sizeof(w_char));
  17834. - if (ctry_utf) memcpy(ctry_utf, t, ctryl * sizeof(w_char));
  17835. - else ctryl = 0;
  17836. - }
  17837. - }
  17838. -}
  17839. -
  17840. -
  17841. -SuggestMgr::~SuggestMgr()
  17842. -{
  17843. - pAMgr = NULL;
  17844. - if (ckey) free(ckey);
  17845. - ckey = NULL;
  17846. - if (ckey_utf) free(ckey_utf);
  17847. - ckey_utf = NULL;
  17848. - ckeyl = 0;
  17849. - if (ctry) free(ctry);
  17850. - ctry = NULL;
  17851. - if (ctry_utf) free(ctry_utf);
  17852. - ctry_utf = NULL;
  17853. - ctryl = 0;
  17854. - maxSug = 0;
  17855. -#ifdef MOZILLA_CLIENT
  17856. - delete [] csconv;
  17857. -#endif
  17858. -}
  17859. -
  17860. -int SuggestMgr::testsug(char** wlst, const char * candidate, int wl, int ns, int cpdsuggest,
  17861. - int * timer, clock_t * timelimit) {
  17862. - int cwrd = 1;
  17863. - if (ns == maxSug) return maxSug;
  17864. - for (int k=0; k < ns; k++) {
  17865. - if (strcmp(candidate,wlst[k]) == 0) {
  17866. - cwrd = 0;
  17867. - break;
  17868. - }
  17869. - }
  17870. - if ((cwrd) && checkword(candidate, wl, cpdsuggest, timer, timelimit)) {
  17871. - wlst[ns] = mystrdup(candidate);
  17872. - if (wlst[ns] == NULL) {
  17873. - for (int j=0; j<ns; j++) free(wlst[j]);
  17874. - return -1;
  17875. - }
  17876. - ns++;
  17877. - }
  17878. - return ns;
  17879. -}
  17880. -
  17881. -// generate suggestions for a misspelled word
  17882. -// pass in address of array of char * pointers
  17883. -// onlycompoundsug: probably bad suggestions (need for ngram sugs, too)
  17884. -
  17885. -int SuggestMgr::suggest(char*** slst, const char * w, int nsug,
  17886. - int * onlycompoundsug)
  17887. -{
  17888. - int nocompoundtwowords = 0;
  17889. - char ** wlst;
  17890. - w_char word_utf[MAXSWL];
  17891. - int wl = 0;
  17892. - int nsugorig = nsug;
  17893. - char w2[MAXWORDUTF8LEN];
  17894. - const char * word = w;
  17895. - int oldSug = 0;
  17896. -
  17897. - // word reversing wrapper for complex prefixes
  17898. - if (complexprefixes) {
  17899. - strcpy(w2, w);
  17900. - if (utf8) reverseword_utf(w2); else reverseword(w2);
  17901. - word = w2;
  17902. - }
  17903. -
  17904. - if (*slst) {
  17905. - wlst = *slst;
  17906. - } else {
  17907. - wlst = (char **) malloc(maxSug * sizeof(char *));
  17908. - if (wlst == NULL) return -1;
  17909. - for (int i = 0; i < maxSug; i++) {
  17910. - wlst[i] = NULL;
  17911. - }
  17912. - }
  17913. -
  17914. - if (utf8) {
  17915. - wl = u8_u16(word_utf, MAXSWL, word);
  17916. - if (wl == -1) {
  17917. - *slst = wlst;
  17918. - return nsug;
  17919. - }
  17920. - }
  17921. -
  17922. - for (int cpdsuggest=0; (cpdsuggest<2) && (nocompoundtwowords==0); cpdsuggest++) {
  17923. -
  17924. - // limit compound suggestion
  17925. - if (cpdsuggest > 0) oldSug = nsug;
  17926. -
  17927. - // suggestions for an uppercase word (html -> HTML)
  17928. - if ((nsug < maxSug) && (nsug > -1)) {
  17929. - nsug = (utf8) ? capchars_utf(wlst, word_utf, wl, nsug, cpdsuggest) :
  17930. - capchars(wlst, word, nsug, cpdsuggest);
  17931. - }
  17932. -
  17933. - // perhaps we made a typical fault of spelling
  17934. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17935. - nsug = replchars(wlst, word, nsug, cpdsuggest);
  17936. - }
  17937. -
  17938. - // perhaps we made chose the wrong char from a related set
  17939. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17940. - nsug = mapchars(wlst, word, nsug, cpdsuggest);
  17941. - }
  17942. -
  17943. - // only suggest compound words when no other suggestion
  17944. - if ((cpdsuggest == 0) && (nsug > nsugorig)) nocompoundtwowords=1;
  17945. -
  17946. - // did we swap the order of chars by mistake
  17947. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17948. - nsug = (utf8) ? swapchar_utf(wlst, word_utf, wl, nsug, cpdsuggest) :
  17949. - swapchar(wlst, word, nsug, cpdsuggest);
  17950. - }
  17951. -
  17952. - // did we swap the order of non adjacent chars by mistake
  17953. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17954. - nsug = (utf8) ? longswapchar_utf(wlst, word_utf, wl, nsug, cpdsuggest) :
  17955. - longswapchar(wlst, word, nsug, cpdsuggest);
  17956. - }
  17957. -
  17958. - // did we just hit the wrong key in place of a good char (case and keyboard)
  17959. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17960. - nsug = (utf8) ? badcharkey_utf(wlst, word_utf, wl, nsug, cpdsuggest) :
  17961. - badcharkey(wlst, word, nsug, cpdsuggest);
  17962. - }
  17963. -
  17964. - // did we add a char that should not be there
  17965. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17966. - nsug = (utf8) ? extrachar_utf(wlst, word_utf, wl, nsug, cpdsuggest) :
  17967. - extrachar(wlst, word, nsug, cpdsuggest);
  17968. - }
  17969. -
  17970. -
  17971. - // did we forgot a char
  17972. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17973. - nsug = (utf8) ? forgotchar_utf(wlst, word_utf, wl, nsug, cpdsuggest) :
  17974. - forgotchar(wlst, word, nsug, cpdsuggest);
  17975. - }
  17976. -
  17977. - // did we move a char
  17978. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17979. - nsug = (utf8) ? movechar_utf(wlst, word_utf, wl, nsug, cpdsuggest) :
  17980. - movechar(wlst, word, nsug, cpdsuggest);
  17981. - }
  17982. -
  17983. - // did we just hit the wrong key in place of a good char
  17984. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17985. - nsug = (utf8) ? badchar_utf(wlst, word_utf, wl, nsug, cpdsuggest) :
  17986. - badchar(wlst, word, nsug, cpdsuggest);
  17987. - }
  17988. -
  17989. - // did we double two characters
  17990. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17991. - nsug = (utf8) ? doubletwochars_utf(wlst, word_utf, wl, nsug, cpdsuggest) :
  17992. - doubletwochars(wlst, word, nsug, cpdsuggest);
  17993. - }
  17994. -
  17995. - // perhaps we forgot to hit space and two words ran together
  17996. - if (!nosplitsugs && (nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs))) {
  17997. - nsug = twowords(wlst, word, nsug, cpdsuggest);
  17998. - }
  17999. -
  18000. - } // repeating ``for'' statement compounding support
  18001. -
  18002. - if (nsug < 0) {
  18003. - // we ran out of memory - we should free up as much as possible
  18004. - for (int i = 0; i < maxSug; i++)
  18005. - if (wlst[i] != NULL) free(wlst[i]);
  18006. - free(wlst);
  18007. - wlst = NULL;
  18008. - }
  18009. -
  18010. - if (!nocompoundtwowords && (nsug > 0) && onlycompoundsug) *onlycompoundsug = 1;
  18011. -
  18012. - *slst = wlst;
  18013. - return nsug;
  18014. -}
  18015. -
  18016. -// generate suggestions for a word with typical mistake
  18017. -// pass in address of array of char * pointers
  18018. -#ifdef HUNSPELL_EXPERIMENTAL
  18019. -int SuggestMgr::suggest_auto(char*** slst, const char * w, int nsug)
  18020. -{
  18021. - int nocompoundtwowords = 0;
  18022. - char ** wlst;
  18023. - int oldSug;
  18024. -
  18025. - char w2[MAXWORDUTF8LEN];
  18026. - const char * word = w;
  18027. -
  18028. - // word reversing wrapper for complex prefixes
  18029. - if (complexprefixes) {
  18030. - strcpy(w2, w);
  18031. - if (utf8) reverseword_utf(w2); else reverseword(w2);
  18032. - word = w2;
  18033. - }
  18034. -
  18035. - if (*slst) {
  18036. - wlst = *slst;
  18037. - } else {
  18038. - wlst = (char **) malloc(maxSug * sizeof(char *));
  18039. - if (wlst == NULL) return -1;
  18040. - }
  18041. -
  18042. - for (int cpdsuggest=0; (cpdsuggest<2) && (nocompoundtwowords==0); cpdsuggest++) {
  18043. -
  18044. - // limit compound suggestion
  18045. - if (cpdsuggest > 0) oldSug = nsug;
  18046. -
  18047. - // perhaps we made a typical fault of spelling
  18048. - if ((nsug < maxSug) && (nsug > -1))
  18049. - nsug = replchars(wlst, word, nsug, cpdsuggest);
  18050. -
  18051. - // perhaps we made chose the wrong char from a related set
  18052. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs)))
  18053. - nsug = mapchars(wlst, word, nsug, cpdsuggest);
  18054. -
  18055. - if ((cpdsuggest==0) && (nsug>0)) nocompoundtwowords=1;
  18056. -
  18057. - // perhaps we forgot to hit space and two words ran together
  18058. -
  18059. - if ((nsug < maxSug) && (nsug > -1) && (!cpdsuggest || (nsug < oldSug + maxcpdsugs)) && check_forbidden(word, strlen(word))) {
  18060. - nsug = twowords(wlst, word, nsug, cpdsuggest);
  18061. - }
  18062. -
  18063. - } // repeating ``for'' statement compounding support
  18064. -
  18065. - if (nsug < 0) {
  18066. - for (int i=0;i<maxSug; i++)
  18067. - if (wlst[i] != NULL) free(wlst[i]);
  18068. - free(wlst);
  18069. - return -1;
  18070. - }
  18071. -
  18072. - *slst = wlst;
  18073. - return nsug;
  18074. -}
  18075. -#endif // END OF HUNSPELL_EXPERIMENTAL CODE
  18076. -
  18077. -// suggestions for an uppercase word (html -> HTML)
  18078. -int SuggestMgr::capchars_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest)
  18079. -{
  18080. - char candidate[MAXSWUTF8L];
  18081. - w_char candidate_utf[MAXSWL];
  18082. - memcpy(candidate_utf, word, wl * sizeof(w_char));
  18083. - mkallcap_utf(candidate_utf, wl, langnum);
  18084. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18085. - return testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL);
  18086. -}
  18087. -
  18088. -// suggestions for an uppercase word (html -> HTML)
  18089. -int SuggestMgr::capchars(char** wlst, const char * word, int ns, int cpdsuggest)
  18090. -{
  18091. - char candidate[MAXSWUTF8L];
  18092. - strcpy(candidate, word);
  18093. - mkallcap(candidate, csconv);
  18094. - return testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL);
  18095. -}
  18096. -
  18097. -// suggestions for when chose the wrong char out of a related set
  18098. -int SuggestMgr::mapchars(char** wlst, const char * word, int ns, int cpdsuggest)
  18099. -{
  18100. - char candidate[MAXSWUTF8L];
  18101. - clock_t timelimit;
  18102. - int timer;
  18103. - candidate[0] = '\0';
  18104. -
  18105. - int wl = strlen(word);
  18106. - if (wl < 2 || ! pAMgr) return ns;
  18107. -
  18108. - int nummap = pAMgr->get_nummap();
  18109. - struct mapentry* maptable = pAMgr->get_maptable();
  18110. - if (maptable==NULL) return ns;
  18111. -
  18112. - timelimit = clock();
  18113. - timer = MINTIMER;
  18114. - return map_related(word, (char *) &candidate, 0, 0, wlst, cpdsuggest, ns, maptable, nummap, &timer, &timelimit);
  18115. -}
  18116. -
  18117. -int SuggestMgr::map_related(const char * word, char * candidate, int wn, int cn,
  18118. - char** wlst, int cpdsuggest, int ns,
  18119. - const mapentry* maptable, int nummap, int * timer, clock_t * timelimit)
  18120. -{
  18121. - if (*(word + wn) == '\0') {
  18122. - int cwrd = 1;
  18123. - *(candidate + cn) = '\0';
  18124. - int wl = strlen(candidate);
  18125. - for (int m=0; m < ns; m++) {
  18126. - if (strcmp(candidate, wlst[m]) == 0) {
  18127. - cwrd = 0;
  18128. - break;
  18129. - }
  18130. - }
  18131. - if ((cwrd) && checkword(candidate, wl, cpdsuggest, timer, timelimit)) {
  18132. - if (ns < maxSug) {
  18133. - wlst[ns] = mystrdup(candidate);
  18134. - if (wlst[ns] == NULL) return -1;
  18135. - ns++;
  18136. - }
  18137. - }
  18138. - return ns;
  18139. - }
  18140. - int in_map = 0;
  18141. - for (int j = 0; j < nummap; j++) {
  18142. - for (int k = 0; k < maptable[j].len; k++) {
  18143. - int len = strlen(maptable[j].set[k]);
  18144. - if (strncmp(maptable[j].set[k], word + wn, len) == 0) {
  18145. - in_map = 1;
  18146. - for (int l = 0; l < maptable[j].len; l++) {
  18147. - strcpy(candidate + cn, maptable[j].set[l]);
  18148. - ns = map_related(word, candidate, wn + len, strlen(candidate), wlst,
  18149. - cpdsuggest, ns, maptable, nummap, timer, timelimit);
  18150. - if (!(*timer)) return ns;
  18151. - }
  18152. - }
  18153. - }
  18154. - }
  18155. - if (!in_map) {
  18156. - *(candidate + cn) = *(word + wn);
  18157. - ns = map_related(word, candidate, wn + 1, cn + 1, wlst, cpdsuggest,
  18158. - ns, maptable, nummap, timer, timelimit);
  18159. - }
  18160. - return ns;
  18161. -}
  18162. -
  18163. -// suggestions for a typical fault of spelling, that
  18164. -// differs with more, than 1 letter from the right form.
  18165. -int SuggestMgr::replchars(char** wlst, const char * word, int ns, int cpdsuggest)
  18166. -{
  18167. - char candidate[MAXSWUTF8L];
  18168. - const char * r;
  18169. - int lenr, lenp;
  18170. - int wl = strlen(word);
  18171. - if (wl < 2 || ! pAMgr) return ns;
  18172. - int numrep = pAMgr->get_numrep();
  18173. - struct replentry* reptable = pAMgr->get_reptable();
  18174. - if (reptable==NULL) return ns;
  18175. - for (int i=0; i < numrep; i++ ) {
  18176. - r = word;
  18177. - lenr = strlen(reptable[i].pattern2);
  18178. - lenp = strlen(reptable[i].pattern);
  18179. - // search every occurence of the pattern in the word
  18180. - while ((r=strstr(r, reptable[i].pattern)) != NULL && (!reptable[i].end || strlen(r) == strlen(reptable[i].pattern)) &&
  18181. - (!reptable[i].start || r == word)) {
  18182. - strcpy(candidate, word);
  18183. - if (r-word + lenr + strlen(r+lenp) >= MAXSWUTF8L) break;
  18184. - strcpy(candidate+(r-word),reptable[i].pattern2);
  18185. - strcpy(candidate+(r-word)+lenr, r+lenp);
  18186. - ns = testsug(wlst, candidate, wl-lenp+lenr, ns, cpdsuggest, NULL, NULL);
  18187. - if (ns == -1) return -1;
  18188. - // check REP suggestions with space
  18189. - char * sp = strchr(candidate, ' ');
  18190. - if (sp) {
  18191. - char * prev = candidate;
  18192. - while (sp) {
  18193. - *sp = '\0';
  18194. - if (checkword(prev, strlen(prev), 0, NULL, NULL)) {
  18195. - int oldns = ns;
  18196. - *sp = ' ';
  18197. - ns = testsug(wlst, sp + 1, strlen(sp + 1), ns, cpdsuggest, NULL, NULL);
  18198. - if (ns == -1) return -1;
  18199. - if (oldns < ns) {
  18200. - free(wlst[ns - 1]);
  18201. - wlst[ns - 1] = mystrdup(candidate);
  18202. - if (!wlst[ns - 1]) return -1;
  18203. - }
  18204. - }
  18205. - *sp = ' ';
  18206. - prev = sp + 1;
  18207. - sp = strchr(prev, ' ');
  18208. - }
  18209. - }
  18210. - r++; // search for the next letter
  18211. - }
  18212. - }
  18213. - return ns;
  18214. -}
  18215. -
  18216. -// perhaps we doubled two characters (pattern aba -> ababa, for example vacation -> vacacation)
  18217. -int SuggestMgr::doubletwochars(char** wlst, const char * word, int ns, int cpdsuggest)
  18218. -{
  18219. - char candidate[MAXSWUTF8L];
  18220. - int state=0;
  18221. - int wl = strlen(word);
  18222. - if (wl < 5 || ! pAMgr) return ns;
  18223. - for (int i=2; i < wl; i++ ) {
  18224. - if (word[i]==word[i-2]) {
  18225. - state++;
  18226. - if (state==3) {
  18227. - strcpy(candidate,word);
  18228. - strcpy(candidate+i-1,word+i+1);
  18229. - ns = testsug(wlst, candidate, wl-2, ns, cpdsuggest, NULL, NULL);
  18230. - if (ns == -1) return -1;
  18231. - state=0;
  18232. - }
  18233. - } else {
  18234. - state=0;
  18235. - }
  18236. - }
  18237. - return ns;
  18238. -}
  18239. -
  18240. -// perhaps we doubled two characters (pattern aba -> ababa, for example vacation -> vacacation)
  18241. -int SuggestMgr::doubletwochars_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest)
  18242. -{
  18243. - w_char candidate_utf[MAXSWL];
  18244. - char candidate[MAXSWUTF8L];
  18245. - int state=0;
  18246. - if (wl < 5 || ! pAMgr) return ns;
  18247. - for (int i=2; i < wl; i++) {
  18248. - if (w_char_eq(word[i], word[i-2])) {
  18249. - state++;
  18250. - if (state==3) {
  18251. - memcpy(candidate_utf, word, (i - 1) * sizeof(w_char));
  18252. - memcpy(candidate_utf+i-1, word+i+1, (wl-i-1) * sizeof(w_char));
  18253. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl-2);
  18254. - ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL);
  18255. - if (ns == -1) return -1;
  18256. - state=0;
  18257. - }
  18258. - } else {
  18259. - state=0;
  18260. - }
  18261. - }
  18262. - return ns;
  18263. -}
  18264. -
  18265. -// error is wrong char in place of correct one (case and keyboard related version)
  18266. -int SuggestMgr::badcharkey(char ** wlst, const char * word, int ns, int cpdsuggest)
  18267. -{
  18268. - char tmpc;
  18269. - char candidate[MAXSWUTF8L];
  18270. - int wl = strlen(word);
  18271. - strcpy(candidate, word);
  18272. - // swap out each char one by one and try uppercase and neighbor
  18273. - // keyboard chars in its place to see if that makes a good word
  18274. -
  18275. - for (int i=0; i < wl; i++) {
  18276. - tmpc = candidate[i];
  18277. - // check with uppercase letters
  18278. - candidate[i] = csconv[((unsigned char)tmpc)].cupper;
  18279. - if (tmpc != candidate[i]) {
  18280. - ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL);
  18281. - if (ns == -1) return -1;
  18282. - candidate[i] = tmpc;
  18283. - }
  18284. - // check neighbor characters in keyboard string
  18285. - if (!ckey) continue;
  18286. - char * loc = strchr(ckey, tmpc);
  18287. - while (loc) {
  18288. - if ((loc > ckey) && (*(loc - 1) != '|')) {
  18289. - candidate[i] = *(loc - 1);
  18290. - ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL);
  18291. - if (ns == -1) return -1;
  18292. - }
  18293. - if ((*(loc + 1) != '|') && (*(loc + 1) != '\0')) {
  18294. - candidate[i] = *(loc + 1);
  18295. - ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL);
  18296. - if (ns == -1) return -1;
  18297. - }
  18298. - loc = strchr(loc + 1, tmpc);
  18299. - }
  18300. - candidate[i] = tmpc;
  18301. - }
  18302. - return ns;
  18303. -}
  18304. -
  18305. -// error is wrong char in place of correct one (case and keyboard related version)
  18306. -int SuggestMgr::badcharkey_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest)
  18307. -{
  18308. - w_char tmpc;
  18309. - w_char candidate_utf[MAXSWL];
  18310. - char candidate[MAXSWUTF8L];
  18311. - memcpy(candidate_utf, word, wl * sizeof(w_char));
  18312. - // swap out each char one by one and try all the tryme
  18313. - // chars in its place to see if that makes a good word
  18314. - for (int i=0; i < wl; i++) {
  18315. - tmpc = candidate_utf[i];
  18316. - // check with uppercase letters
  18317. - mkallcap_utf(candidate_utf + i, 1, langnum);
  18318. - if (!w_char_eq(tmpc, candidate_utf[i])) {
  18319. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18320. - ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL);
  18321. - if (ns == -1) return -1;
  18322. - candidate_utf[i] = tmpc;
  18323. - }
  18324. - // check neighbor characters in keyboard string
  18325. - if (!ckey) continue;
  18326. - w_char * loc = ckey_utf;
  18327. - while ((loc < (ckey_utf + ckeyl)) && !w_char_eq(*loc, tmpc)) loc++;
  18328. - while (loc < (ckey_utf + ckeyl)) {
  18329. - if ((loc > ckey_utf) && !w_char_eq(*(loc - 1), W_VLINE)) {
  18330. - candidate_utf[i] = *(loc - 1);
  18331. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18332. - ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL);
  18333. - if (ns == -1) return -1;
  18334. - }
  18335. - if (((loc + 1) < (ckey_utf + ckeyl)) && !w_char_eq(*(loc + 1), W_VLINE)) {
  18336. - candidate_utf[i] = *(loc + 1);
  18337. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18338. - ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL);
  18339. - if (ns == -1) return -1;
  18340. - }
  18341. - do { loc++; } while ((loc < (ckey_utf + ckeyl)) && !w_char_eq(*loc, tmpc));
  18342. - }
  18343. - candidate_utf[i] = tmpc;
  18344. - }
  18345. - return ns;
  18346. -}
  18347. -
  18348. -// error is wrong char in place of correct one
  18349. -int SuggestMgr::badchar(char ** wlst, const char * word, int ns, int cpdsuggest)
  18350. -{
  18351. - char tmpc;
  18352. - char candidate[MAXSWUTF8L];
  18353. - clock_t timelimit = clock();
  18354. - int timer = MINTIMER;
  18355. - int wl = strlen(word);
  18356. - strcpy(candidate, word);
  18357. - // swap out each char one by one and try all the tryme
  18358. - // chars in its place to see if that makes a good word
  18359. - for (int j=0; j < ctryl; j++) {
  18360. - for (int i=wl-1; i >= 0; i--) {
  18361. - tmpc = candidate[i];
  18362. - if (ctry[j] == tmpc) continue;
  18363. - candidate[i] = ctry[j];
  18364. - ns = testsug(wlst, candidate, wl, ns, cpdsuggest, &timer, &timelimit);
  18365. - if (ns == -1) return -1;
  18366. - if (!timer) return ns;
  18367. - candidate[i] = tmpc;
  18368. - }
  18369. - }
  18370. - return ns;
  18371. -}
  18372. -
  18373. -// error is wrong char in place of correct one
  18374. -int SuggestMgr::badchar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest)
  18375. -{
  18376. - w_char tmpc;
  18377. - w_char candidate_utf[MAXSWL];
  18378. - char candidate[MAXSWUTF8L];
  18379. - clock_t timelimit = clock();
  18380. - int timer = MINTIMER;
  18381. - memcpy(candidate_utf, word, wl * sizeof(w_char));
  18382. - // swap out each char one by one and try all the tryme
  18383. - // chars in its place to see if that makes a good word
  18384. - for (int j=0; j < ctryl; j++) {
  18385. - for (int i=wl-1; i >= 0; i--) {
  18386. - tmpc = candidate_utf[i];
  18387. - if (w_char_eq(tmpc, ctry_utf[j])) continue;
  18388. - candidate_utf[i] = ctry_utf[j];
  18389. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18390. - ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, &timer, &timelimit);
  18391. - if (ns == -1) return -1;
  18392. - if (!timer) return ns;
  18393. - candidate_utf[i] = tmpc;
  18394. - }
  18395. - }
  18396. - return ns;
  18397. -}
  18398. -
  18399. -// error is word has an extra letter it does not need
  18400. -int SuggestMgr::extrachar_utf(char** wlst, const w_char * word, int wl, int ns, int cpdsuggest)
  18401. -{
  18402. - char candidate[MAXSWUTF8L];
  18403. - w_char candidate_utf[MAXSWL];
  18404. - w_char * p;
  18405. - w_char tmpc = W_VLINE; // not used value, only for VCC warning message
  18406. - if (wl < 2) return ns;
  18407. - // try omitting one char of word at a time
  18408. - memcpy(candidate_utf, word, wl * sizeof(w_char));
  18409. - for (p = candidate_utf + wl - 1; p >= candidate_utf; p--) {
  18410. - w_char tmpc2 = *p;
  18411. - if (p < candidate_utf + wl - 1) *p = tmpc;
  18412. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl - 1);
  18413. - ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL);
  18414. - if (ns == -1) return -1;
  18415. - tmpc = tmpc2;
  18416. - }
  18417. - return ns;
  18418. -}
  18419. -
  18420. -// error is word has an extra letter it does not need
  18421. -int SuggestMgr::extrachar(char** wlst, const char * word, int ns, int cpdsuggest)
  18422. -{
  18423. - char tmpc = '\0';
  18424. - char candidate[MAXSWUTF8L];
  18425. - char * p;
  18426. - int wl = strlen(word);
  18427. - if (wl < 2) return ns;
  18428. - // try omitting one char of word at a time
  18429. - strcpy (candidate, word);
  18430. - for (p = candidate + wl - 1; p >=candidate; p--) {
  18431. - char tmpc2 = *p;
  18432. - *p = tmpc;
  18433. - ns = testsug(wlst, candidate, wl-1, ns, cpdsuggest, NULL, NULL);
  18434. - if (ns == -1) return -1;
  18435. - tmpc = tmpc2;
  18436. - }
  18437. - return ns;
  18438. -}
  18439. -
  18440. -// error is missing a letter it needs
  18441. -int SuggestMgr::forgotchar(char ** wlst, const char * word, int ns, int cpdsuggest)
  18442. -{
  18443. - char candidate[MAXSWUTF8L + 4];
  18444. - char * p;
  18445. - clock_t timelimit = clock();
  18446. - int timer = MINTIMER;
  18447. - int wl = strlen(word);
  18448. - // try inserting a tryme character before every letter (and the null terminator)
  18449. - for (int i = 0; i < ctryl; i++) {
  18450. - strcpy(candidate, word);
  18451. - for (p = candidate + wl; p >= candidate; p--) {
  18452. - *(p+1) = *p;
  18453. - *p = ctry[i];
  18454. - ns = testsug(wlst, candidate, wl+1, ns, cpdsuggest, &timer, &timelimit);
  18455. - if (ns == -1) return -1;
  18456. - if (!timer) return ns;
  18457. - }
  18458. - }
  18459. - return ns;
  18460. -}
  18461. -
  18462. -// error is missing a letter it needs
  18463. -int SuggestMgr::forgotchar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest)
  18464. -{
  18465. - w_char candidate_utf[MAXSWL + 1];
  18466. - char candidate[MAXSWUTF8L + 4];
  18467. - w_char * p;
  18468. - clock_t timelimit = clock();
  18469. - int timer = MINTIMER;
  18470. - // try inserting a tryme character at the end of the word and before every letter
  18471. - for (int i = 0; i < ctryl; i++) {
  18472. - memcpy (candidate_utf, word, wl * sizeof(w_char));
  18473. - for (p = candidate_utf + wl; p >= candidate_utf; p--) {
  18474. - *(p + 1) = *p;
  18475. - *p = ctry_utf[i];
  18476. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl + 1);
  18477. - ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, &timer, &timelimit);
  18478. - if (ns == -1) return -1;
  18479. - if (!timer) return ns;
  18480. - }
  18481. - }
  18482. - return ns;
  18483. -}
  18484. -
  18485. -
  18486. -/* error is should have been two words */
  18487. -int SuggestMgr::twowords(char ** wlst, const char * word, int ns, int cpdsuggest)
  18488. -{
  18489. - char candidate[MAXSWUTF8L];
  18490. - char * p;
  18491. - int c1, c2;
  18492. - int forbidden = 0;
  18493. - int cwrd;
  18494. -
  18495. - int wl=strlen(word);
  18496. - if (wl < 3) return ns;
  18497. -
  18498. - if (langnum == LANG_hu) forbidden = check_forbidden(word, wl);
  18499. -
  18500. - strcpy(candidate + 1, word);
  18501. - // split the string into two pieces after every char
  18502. - // if both pieces are good words make them a suggestion
  18503. - for (p = candidate + 1; p[1] != '\0'; p++) {
  18504. - p[-1] = *p;
  18505. - // go to end of the UTF-8 character
  18506. - while (utf8 && ((p[1] & 0xc0) == 0x80)) {
  18507. - *p = p[1];
  18508. - p++;
  18509. - }
  18510. - if (utf8 && p[1] == '\0') break; // last UTF-8 character
  18511. - *p = '\0';
  18512. - c1 = checkword(candidate,strlen(candidate), cpdsuggest, NULL, NULL);
  18513. - if (c1) {
  18514. - c2 = checkword((p+1),strlen(p+1), cpdsuggest, NULL, NULL);
  18515. - if (c2) {
  18516. - *p = ' ';
  18517. -
  18518. - // spec. Hungarian code (need a better compound word support)
  18519. - if ((langnum == LANG_hu) && !forbidden &&
  18520. - // if 3 repeating letter, use - instead of space
  18521. - (((p[-1] == p[1]) && (((p>candidate+1) && (p[-1] == p[-2])) || (p[-1] == p[2]))) ||
  18522. - // or multiple compounding, with more, than 6 syllables
  18523. - ((c1 == 3) && (c2 >= 2)))) *p = '-';
  18524. -
  18525. - cwrd = 1;
  18526. - for (int k=0; k < ns; k++) {
  18527. - if (strcmp(candidate,wlst[k]) == 0) {
  18528. - cwrd = 0;
  18529. - break;
  18530. - }
  18531. - }
  18532. - if (ns < maxSug) {
  18533. - if (cwrd) {
  18534. - wlst[ns] = mystrdup(candidate);
  18535. - if (wlst[ns] == NULL) return -1;
  18536. - ns++;
  18537. - }
  18538. - } else return ns;
  18539. - // add two word suggestion with dash, if TRY string contains
  18540. - // "a" or "-"
  18541. - // NOTE: cwrd doesn't modified for REP twoword sugg.
  18542. - if (ctry && (strchr(ctry, 'a') || strchr(ctry, '-')) &&
  18543. - mystrlen(p + 1) > 1 &&
  18544. - mystrlen(candidate) - mystrlen(p) > 1) {
  18545. - *p = '-';
  18546. - for (int k=0; k < ns; k++) {
  18547. - if (strcmp(candidate,wlst[k]) == 0) {
  18548. - cwrd = 0;
  18549. - break;
  18550. - }
  18551. - }
  18552. - if (ns < maxSug) {
  18553. - if (cwrd) {
  18554. - wlst[ns] = mystrdup(candidate);
  18555. - if (wlst[ns] == NULL) return -1;
  18556. - ns++;
  18557. - }
  18558. - } else return ns;
  18559. - }
  18560. - }
  18561. - }
  18562. - }
  18563. - return ns;
  18564. -}
  18565. -
  18566. -
  18567. -// error is adjacent letter were swapped
  18568. -int SuggestMgr::swapchar(char ** wlst, const char * word, int ns, int cpdsuggest)
  18569. -{
  18570. - char candidate[MAXSWUTF8L];
  18571. - char * p;
  18572. - char tmpc;
  18573. - int wl=strlen(word);
  18574. - // try swapping adjacent chars one by one
  18575. - strcpy(candidate, word);
  18576. - for (p = candidate; p[1] != 0; p++) {
  18577. - tmpc = *p;
  18578. - *p = p[1];
  18579. - p[1] = tmpc;
  18580. - ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL);
  18581. - if (ns == -1) return -1;
  18582. - p[1] = *p;
  18583. - *p = tmpc;
  18584. - }
  18585. - // try double swaps for short words
  18586. - // ahev -> have, owudl -> would
  18587. - if (wl == 4 || wl == 5) {
  18588. - candidate[0] = word[1];
  18589. - candidate[1] = word[0];
  18590. - candidate[2] = word[2];
  18591. - candidate[wl - 2] = word[wl - 1];
  18592. - candidate[wl - 1] = word[wl - 2];
  18593. - ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL);
  18594. - if (ns == -1) return -1;
  18595. - if (wl == 5) {
  18596. - candidate[0] = word[0];
  18597. - candidate[1] = word[2];
  18598. - candidate[2] = word[1];
  18599. - ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL);
  18600. - if (ns == -1) return -1;
  18601. - }
  18602. - }
  18603. - return ns;
  18604. -}
  18605. -
  18606. -// error is adjacent letter were swapped
  18607. -int SuggestMgr::swapchar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest)
  18608. -{
  18609. - w_char candidate_utf[MAXSWL];
  18610. - char candidate[MAXSWUTF8L];
  18611. - w_char * p;
  18612. - w_char tmpc;
  18613. - int len = 0;
  18614. - // try swapping adjacent chars one by one
  18615. - memcpy (candidate_utf, word, wl * sizeof(w_char));
  18616. - for (p = candidate_utf; p < (candidate_utf + wl - 1); p++) {
  18617. - tmpc = *p;
  18618. - *p = p[1];
  18619. - p[1] = tmpc;
  18620. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18621. - if (len == 0) len = strlen(candidate);
  18622. - ns = testsug(wlst, candidate, len, ns, cpdsuggest, NULL, NULL);
  18623. - if (ns == -1) return -1;
  18624. - p[1] = *p;
  18625. - *p = tmpc;
  18626. - }
  18627. - // try double swaps for short words
  18628. - // ahev -> have, owudl -> would, suodn -> sound
  18629. - if (wl == 4 || wl == 5) {
  18630. - candidate_utf[0] = word[1];
  18631. - candidate_utf[1] = word[0];
  18632. - candidate_utf[2] = word[2];
  18633. - candidate_utf[wl - 2] = word[wl - 1];
  18634. - candidate_utf[wl - 1] = word[wl - 2];
  18635. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18636. - ns = testsug(wlst, candidate, len, ns, cpdsuggest, NULL, NULL);
  18637. - if (ns == -1) return -1;
  18638. - if (wl == 5) {
  18639. - candidate_utf[0] = word[0];
  18640. - candidate_utf[1] = word[2];
  18641. - candidate_utf[2] = word[1];
  18642. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18643. - ns = testsug(wlst, candidate, len, ns, cpdsuggest, NULL, NULL);
  18644. - if (ns == -1) return -1;
  18645. - }
  18646. - }
  18647. - return ns;
  18648. -}
  18649. -
  18650. -// error is not adjacent letter were swapped
  18651. -int SuggestMgr::longswapchar(char ** wlst, const char * word, int ns, int cpdsuggest)
  18652. -{
  18653. - char candidate[MAXSWUTF8L];
  18654. - char * p;
  18655. - char * q;
  18656. - char tmpc;
  18657. - int wl=strlen(word);
  18658. - // try swapping not adjacent chars one by one
  18659. - strcpy(candidate, word);
  18660. - for (p = candidate; *p != 0; p++) {
  18661. - for (q = candidate; *q != 0; q++) {
  18662. - if (abs((int)(p-q)) > 1) {
  18663. - tmpc = *p;
  18664. - *p = *q;
  18665. - *q = tmpc;
  18666. - ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL);
  18667. - if (ns == -1) return -1;
  18668. - *q = *p;
  18669. - *p = tmpc;
  18670. - }
  18671. - }
  18672. - }
  18673. - return ns;
  18674. -}
  18675. -
  18676. -
  18677. -// error is adjacent letter were swapped
  18678. -int SuggestMgr::longswapchar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest)
  18679. -{
  18680. - w_char candidate_utf[MAXSWL];
  18681. - char candidate[MAXSWUTF8L];
  18682. - w_char * p;
  18683. - w_char * q;
  18684. - w_char tmpc;
  18685. - // try swapping not adjacent chars
  18686. - memcpy (candidate_utf, word, wl * sizeof(w_char));
  18687. - for (p = candidate_utf; p < (candidate_utf + wl); p++) {
  18688. - for (q = candidate_utf; q < (candidate_utf + wl); q++) {
  18689. - if (abs((int)(p-q)) > 1) {
  18690. - tmpc = *p;
  18691. - *p = *q;
  18692. - *q = tmpc;
  18693. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18694. - ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL);
  18695. - if (ns == -1) return -1;
  18696. - *q = *p;
  18697. - *p = tmpc;
  18698. - }
  18699. - }
  18700. - }
  18701. - return ns;
  18702. -}
  18703. -
  18704. -// error is a letter was moved
  18705. -int SuggestMgr::movechar(char ** wlst, const char * word, int ns, int cpdsuggest)
  18706. -{
  18707. - char candidate[MAXSWUTF8L];
  18708. - char * p;
  18709. - char * q;
  18710. - char tmpc;
  18711. -
  18712. - int wl=strlen(word);
  18713. - // try moving a char
  18714. - strcpy(candidate, word);
  18715. - for (p = candidate; *p != 0; p++) {
  18716. - for (q = p + 1; (*q != 0) && ((q - p) < 10); q++) {
  18717. - tmpc = *(q-1);
  18718. - *(q-1) = *q;
  18719. - *q = tmpc;
  18720. - if ((q-p) < 2) continue; // omit swap char
  18721. - ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL);
  18722. - if (ns == -1) return -1;
  18723. - }
  18724. - strcpy(candidate, word);
  18725. - }
  18726. - for (p = candidate + wl - 1; p > candidate; p--) {
  18727. - for (q = p - 1; (q >= candidate) && ((p - q) < 10); q--) {
  18728. - tmpc = *(q+1);
  18729. - *(q+1) = *q;
  18730. - *q = tmpc;
  18731. - if ((p-q) < 2) continue; // omit swap char
  18732. - ns = testsug(wlst, candidate, wl, ns, cpdsuggest, NULL, NULL);
  18733. - if (ns == -1) return -1;
  18734. - }
  18735. - strcpy(candidate, word);
  18736. - }
  18737. - return ns;
  18738. -}
  18739. -
  18740. -// error is a letter was moved
  18741. -int SuggestMgr::movechar_utf(char ** wlst, const w_char * word, int wl, int ns, int cpdsuggest)
  18742. -{
  18743. - w_char candidate_utf[MAXSWL];
  18744. - char candidate[MAXSWUTF8L];
  18745. - w_char * p;
  18746. - w_char * q;
  18747. - w_char tmpc;
  18748. - // try moving a char
  18749. - memcpy (candidate_utf, word, wl * sizeof(w_char));
  18750. - for (p = candidate_utf; p < (candidate_utf + wl); p++) {
  18751. - for (q = p + 1; (q < (candidate_utf + wl)) && ((q - p) < 10); q++) {
  18752. - tmpc = *(q-1);
  18753. - *(q-1) = *q;
  18754. - *q = tmpc;
  18755. - if ((q-p) < 2) continue; // omit swap char
  18756. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18757. - ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL);
  18758. - if (ns == -1) return -1;
  18759. - }
  18760. - memcpy (candidate_utf, word, wl * sizeof(w_char));
  18761. - }
  18762. - for (p = candidate_utf + wl - 1; p > candidate_utf; p--) {
  18763. - for (q = p - 1; (q >= candidate_utf) && ((p - q) < 10); q--) {
  18764. - tmpc = *(q+1);
  18765. - *(q+1) = *q;
  18766. - *q = tmpc;
  18767. - if ((p-q) < 2) continue; // omit swap char
  18768. - u16_u8(candidate, MAXSWUTF8L, candidate_utf, wl);
  18769. - ns = testsug(wlst, candidate, strlen(candidate), ns, cpdsuggest, NULL, NULL);
  18770. - if (ns == -1) return -1;
  18771. - }
  18772. - memcpy (candidate_utf, word, wl * sizeof(w_char));
  18773. - }
  18774. - return ns;
  18775. -}
  18776. -
  18777. -// generate a set of suggestions for very poorly spelled words
  18778. -int SuggestMgr::ngsuggest(char** wlst, char * w, int ns, HashMgr** pHMgr, int md)
  18779. -{
  18780. -
  18781. - int i, j;
  18782. - int lval;
  18783. - int sc, scphon;
  18784. - int lp, lpphon;
  18785. - int nonbmp = 0;
  18786. -
  18787. - // exhaustively search through all root words
  18788. - // keeping track of the MAX_ROOTS most similar root words
  18789. - struct hentry * roots[MAX_ROOTS];
  18790. - char * rootsphon[MAX_ROOTS];
  18791. - int scores[MAX_ROOTS];
  18792. - int scoresphon[MAX_ROOTS];
  18793. - for (i = 0; i < MAX_ROOTS; i++) {
  18794. - roots[i] = NULL;
  18795. - scores[i] = -100 * i;
  18796. - rootsphon[i] = NULL;
  18797. - scoresphon[i] = -100 * i;
  18798. - }
  18799. - lp = MAX_ROOTS - 1;
  18800. - lpphon = MAX_ROOTS - 1;
  18801. - scphon = -20000;
  18802. - int low = NGRAM_LOWERING;
  18803. -
  18804. - char w2[MAXWORDUTF8LEN];
  18805. - char f[MAXSWUTF8L];
  18806. - char * word = w;
  18807. -
  18808. - // word reversing wrapper for complex prefixes
  18809. - if (complexprefixes) {
  18810. - strcpy(w2, w);
  18811. - if (utf8) reverseword_utf(w2); else reverseword(w2);
  18812. - word = w2;
  18813. - }
  18814. -
  18815. - char mw[MAXSWUTF8L];
  18816. - w_char u8[MAXSWL];
  18817. - int nc = strlen(word);
  18818. - int n = (utf8) ? u8_u16(u8, MAXSWL, word) : nc;
  18819. -
  18820. - // set character based ngram suggestion for words with non-BMP Unicode characters
  18821. - if (n == -1) {
  18822. - utf8 = 0; // XXX not state-free
  18823. - n = nc;
  18824. - nonbmp = 1;
  18825. - low = 0;
  18826. - }
  18827. -
  18828. - struct hentry* hp = NULL;
  18829. - int col = -1;
  18830. - phonetable * ph = (pAMgr) ? pAMgr->get_phonetable() : NULL;
  18831. - char target[MAXSWUTF8L];
  18832. - char candidate[MAXSWUTF8L];
  18833. - if (ph) {
  18834. - if (utf8) {
  18835. - w_char _w[MAXSWL];
  18836. - int _wl = u8_u16(_w, MAXSWL, word);
  18837. - mkallcap_utf(_w, _wl, langnum);
  18838. - u16_u8(candidate, MAXSWUTF8L, _w, _wl);
  18839. - } else {
  18840. - strcpy(candidate, word);
  18841. - if (!nonbmp) mkallcap(candidate, csconv);
  18842. - }
  18843. - phonet(candidate, target, nc, *ph); // XXX phonet() is 8-bit (nc, not n)
  18844. - }
  18845. -
  18846. - FLAG forbiddenword = pAMgr ? pAMgr->get_forbiddenword() : FLAG_NULL;
  18847. - FLAG nosuggest = pAMgr ? pAMgr->get_nosuggest() : FLAG_NULL;
  18848. - FLAG nongramsuggest = pAMgr ? pAMgr->get_nongramsuggest() : FLAG_NULL;
  18849. - FLAG onlyincompound = pAMgr ? pAMgr->get_onlyincompound() : FLAG_NULL;
  18850. -
  18851. - for (i = 0; i < md; i++) {
  18852. - while (0 != (hp = (pHMgr[i])->walk_hashtable(col, hp))) {
  18853. - if ((hp->astr) && (pAMgr) &&
  18854. - (TESTAFF(hp->astr, forbiddenword, hp->alen) ||
  18855. - TESTAFF(hp->astr, ONLYUPCASEFLAG, hp->alen) ||
  18856. - TESTAFF(hp->astr, nosuggest, hp->alen) ||
  18857. - TESTAFF(hp->astr, nongramsuggest, hp->alen) ||
  18858. - TESTAFF(hp->astr, onlyincompound, hp->alen))) continue;
  18859. -
  18860. - sc = ngram(3, word, HENTRY_WORD(hp), NGRAM_LONGER_WORSE + low) +
  18861. - leftcommonsubstring(word, HENTRY_WORD(hp));
  18862. -
  18863. - // check special pronounciation
  18864. - if ((hp->var & H_OPT_PHON) && copy_field(f, HENTRY_DATA(hp), MORPH_PHON)) {
  18865. - int sc2 = ngram(3, word, f, NGRAM_LONGER_WORSE + low) +
  18866. - + leftcommonsubstring(word, f);
  18867. - if (sc2 > sc) sc = sc2;
  18868. - }
  18869. -
  18870. - scphon = -20000;
  18871. - if (ph && (sc > 2) && (abs(n - (int) hp->clen) <= 3)) {
  18872. - char target2[MAXSWUTF8L];
  18873. - if (utf8) {
  18874. - w_char _w[MAXSWL];
  18875. - int _wl = u8_u16(_w, MAXSWL, HENTRY_WORD(hp));
  18876. - mkallcap_utf(_w, _wl, langnum);
  18877. - u16_u8(candidate, MAXSWUTF8L, _w, _wl);
  18878. - } else {
  18879. - strcpy(candidate, HENTRY_WORD(hp));
  18880. - mkallcap(candidate, csconv);
  18881. - }
  18882. - phonet(candidate, target2, -1, *ph);
  18883. - scphon = 2 * ngram(3, target, target2, NGRAM_LONGER_WORSE);
  18884. - }
  18885. -
  18886. - if (sc > scores[lp]) {
  18887. - scores[lp] = sc;
  18888. - roots[lp] = hp;
  18889. - lval = sc;
  18890. - for (j=0; j < MAX_ROOTS; j++)
  18891. - if (scores[j] < lval) {
  18892. - lp = j;
  18893. - lval = scores[j];
  18894. - }
  18895. - }
  18896. -
  18897. -
  18898. - if (scphon > scoresphon[lpphon]) {
  18899. - scoresphon[lpphon] = scphon;
  18900. - rootsphon[lpphon] = HENTRY_WORD(hp);
  18901. - lval = scphon;
  18902. - for (j=0; j < MAX_ROOTS; j++)
  18903. - if (scoresphon[j] < lval) {
  18904. - lpphon = j;
  18905. - lval = scoresphon[j];
  18906. - }
  18907. - }
  18908. - }}
  18909. -
  18910. - // find minimum threshold for a passable suggestion
  18911. - // mangle original word three differnt ways
  18912. - // and score them to generate a minimum acceptable score
  18913. - int thresh = 0;
  18914. - for (int sp = 1; sp < 4; sp++) {
  18915. - if (utf8) {
  18916. - for (int k=sp; k < n; k+=4) *((unsigned short *) u8 + k) = '*';
  18917. - u16_u8(mw, MAXSWUTF8L, u8, n);
  18918. - thresh = thresh + ngram(n, word, mw, NGRAM_ANY_MISMATCH + low);
  18919. - } else {
  18920. - strcpy(mw, word);
  18921. - for (int k=sp; k < n; k+=4) *(mw + k) = '*';
  18922. - thresh = thresh + ngram(n, word, mw, NGRAM_ANY_MISMATCH + low);
  18923. - }
  18924. - }
  18925. - thresh = thresh / 3;
  18926. - thresh--;
  18927. -
  18928. - // now expand affixes on each of these root words and
  18929. - // and use length adjusted ngram scores to select
  18930. - // possible suggestions
  18931. - char * guess[MAX_GUESS];
  18932. - char * guessorig[MAX_GUESS];
  18933. - int gscore[MAX_GUESS];
  18934. - for(i=0;i<MAX_GUESS;i++) {
  18935. - guess[i] = NULL;
  18936. - guessorig[i] = NULL;
  18937. - gscore[i] = -100 * i;
  18938. - }
  18939. -
  18940. - lp = MAX_GUESS - 1;
  18941. -
  18942. - struct guessword * glst;
  18943. - glst = (struct guessword *) calloc(MAX_WORDS,sizeof(struct guessword));
  18944. - if (! glst) {
  18945. - if (nonbmp) utf8 = 1;
  18946. - return ns;
  18947. - }
  18948. -
  18949. - for (i = 0; i < MAX_ROOTS; i++) {
  18950. - if (roots[i]) {
  18951. - struct hentry * rp = roots[i];
  18952. - int nw = pAMgr->expand_rootword(glst, MAX_WORDS, HENTRY_WORD(rp), rp->blen,
  18953. - rp->astr, rp->alen, word, nc,
  18954. - ((rp->var & H_OPT_PHON) ? copy_field(f, HENTRY_DATA(rp), MORPH_PHON) : NULL));
  18955. -
  18956. - for (int k = 0; k < nw ; k++) {
  18957. - sc = ngram(n, word, glst[k].word, NGRAM_ANY_MISMATCH + low) +
  18958. - leftcommonsubstring(word, glst[k].word);
  18959. -
  18960. - if (sc > thresh) {
  18961. - if (sc > gscore[lp]) {
  18962. - if (guess[lp]) {
  18963. - free (guess[lp]);
  18964. - if (guessorig[lp]) {
  18965. - free(guessorig[lp]);
  18966. - guessorig[lp] = NULL;
  18967. - }
  18968. - }
  18969. - gscore[lp] = sc;
  18970. - guess[lp] = glst[k].word;
  18971. - guessorig[lp] = glst[k].orig;
  18972. - lval = sc;
  18973. - for (j=0; j < MAX_GUESS; j++)
  18974. - if (gscore[j] < lval) {
  18975. - lp = j;
  18976. - lval = gscore[j];
  18977. - }
  18978. - } else {
  18979. - free(glst[k].word);
  18980. - if (glst[k].orig) free(glst[k].orig);
  18981. - }
  18982. - } else {
  18983. - free(glst[k].word);
  18984. - if (glst[k].orig) free(glst[k].orig);
  18985. - }
  18986. - }
  18987. - }
  18988. - }
  18989. - free(glst);
  18990. -
  18991. - // now we are done generating guesses
  18992. - // sort in order of decreasing score
  18993. -
  18994. -
  18995. - bubblesort(&guess[0], &guessorig[0], &gscore[0], MAX_GUESS);
  18996. - if (ph) bubblesort(&rootsphon[0], NULL, &scoresphon[0], MAX_ROOTS);
  18997. -
  18998. - // weight suggestions with a similarity index, based on
  18999. - // the longest common subsequent algorithm and resort
  19000. -
  19001. - int is_swap = 0;
  19002. - int re = 0;
  19003. - double fact = 1.0;
  19004. - if (pAMgr) {
  19005. - int maxd = pAMgr->get_maxdiff();
  19006. - if (maxd >= 0) fact = (10.0 - maxd)/5.0;
  19007. - }
  19008. -
  19009. - for (i=0; i < MAX_GUESS; i++) {
  19010. - if (guess[i]) {
  19011. - // lowering guess[i]
  19012. - char gl[MAXSWUTF8L];
  19013. - int len;
  19014. - if (utf8) {
  19015. - w_char _w[MAXSWL];
  19016. - len = u8_u16(_w, MAXSWL, guess[i]);
  19017. - mkallsmall_utf(_w, len, langnum);
  19018. - u16_u8(gl, MAXSWUTF8L, _w, len);
  19019. - } else {
  19020. - strcpy(gl, guess[i]);
  19021. - if (!nonbmp) mkallsmall(gl, csconv);
  19022. - len = strlen(guess[i]);
  19023. - }
  19024. -
  19025. - int _lcs = lcslen(word, gl);
  19026. -
  19027. - // same characters with different casing
  19028. - if ((n == len) && (n == _lcs)) {
  19029. - gscore[i] += 2000;
  19030. - break;
  19031. - }
  19032. - // using 2-gram instead of 3, and other weightening
  19033. -
  19034. - re = ngram(2, word, gl, NGRAM_ANY_MISMATCH + low + NGRAM_WEIGHTED) +
  19035. - ngram(2, gl, word, NGRAM_ANY_MISMATCH + low + NGRAM_WEIGHTED);
  19036. -
  19037. - gscore[i] =
  19038. - // length of longest common subsequent minus length difference
  19039. - 2 * _lcs - abs((int) (n - len)) +
  19040. - // weight length of the left common substring
  19041. - leftcommonsubstring(word, gl) +
  19042. - // weight equal character positions
  19043. - (!nonbmp && commoncharacterpositions(word, gl, &is_swap) ? 1: 0) +
  19044. - // swap character (not neighboring)
  19045. - ((is_swap) ? 10 : 0) +
  19046. - // ngram
  19047. - ngram(4, word, gl, NGRAM_ANY_MISMATCH + low) +
  19048. - // weighted ngrams
  19049. - re +
  19050. - // different limit for dictionaries with PHONE rules
  19051. - (ph ? (re < len * fact ? -1000 : 0) : (re < (n + len)*fact? -1000 : 0));
  19052. - }
  19053. - }
  19054. -
  19055. - bubblesort(&guess[0], &guessorig[0], &gscore[0], MAX_GUESS);
  19056. -
  19057. -// phonetic version
  19058. - if (ph) for (i=0; i < MAX_ROOTS; i++) {
  19059. - if (rootsphon[i]) {
  19060. - // lowering rootphon[i]
  19061. - char gl[MAXSWUTF8L];
  19062. - int len;
  19063. - if (utf8) {
  19064. - w_char _w[MAXSWL];
  19065. - len = u8_u16(_w, MAXSWL, rootsphon[i]);
  19066. - mkallsmall_utf(_w, len, langnum);
  19067. - u16_u8(gl, MAXSWUTF8L, _w, len);
  19068. - } else {
  19069. - strcpy(gl, rootsphon[i]);
  19070. - if (!nonbmp) mkallsmall(gl, csconv);
  19071. - len = strlen(rootsphon[i]);
  19072. - }
  19073. -
  19074. - // heuristic weigthing of ngram scores
  19075. - scoresphon[i] += 2 * lcslen(word, gl) - abs((int) (n - len)) +
  19076. - // weight length of the left common substring
  19077. - leftcommonsubstring(word, gl);
  19078. - }
  19079. - }
  19080. -
  19081. - if (ph) bubblesort(&rootsphon[0], NULL, &scoresphon[0], MAX_ROOTS);
  19082. -
  19083. - // copy over
  19084. - int oldns = ns;
  19085. -
  19086. - int same = 0;
  19087. - for (i=0; i < MAX_GUESS; i++) {
  19088. - if (guess[i]) {
  19089. - if ((ns < oldns + maxngramsugs) && (ns < maxSug) && (!same || (gscore[i] > 1000))) {
  19090. - int unique = 1;
  19091. - // leave only excellent suggestions, if exists
  19092. - if (gscore[i] > 1000) same = 1; else if (gscore[i] < -100) {
  19093. - same = 1;
  19094. - // keep the best ngram suggestions, unless in ONLYMAXDIFF mode
  19095. - if (ns > oldns || (pAMgr && pAMgr->get_onlymaxdiff())) {
  19096. - free(guess[i]);
  19097. - if (guessorig[i]) free(guessorig[i]);
  19098. - continue;
  19099. - }
  19100. - }
  19101. - for (j = 0; j < ns; j++) {
  19102. - // don't suggest previous suggestions or a previous suggestion with prefixes or affixes
  19103. - if ((!guessorig[i] && strstr(guess[i], wlst[j])) ||
  19104. - (guessorig[i] && strstr(guessorig[i], wlst[j])) ||
  19105. - // check forbidden words
  19106. - !checkword(guess[i], strlen(guess[i]), 0, NULL, NULL)) {
  19107. - unique = 0;
  19108. - break;
  19109. - }
  19110. - }
  19111. - if (unique) {
  19112. - wlst[ns++] = guess[i];
  19113. - if (guessorig[i]) {
  19114. - free(guess[i]);
  19115. - wlst[ns-1] = guessorig[i];
  19116. - }
  19117. - } else {
  19118. - free(guess[i]);
  19119. - if (guessorig[i]) free(guessorig[i]);
  19120. - }
  19121. - } else {
  19122. - free(guess[i]);
  19123. - if (guessorig[i]) free(guessorig[i]);
  19124. - }
  19125. - }
  19126. - }
  19127. -
  19128. - oldns = ns;
  19129. - if (ph) for (i=0; i < MAX_ROOTS; i++) {
  19130. - if (rootsphon[i]) {
  19131. - if ((ns < oldns + MAXPHONSUGS) && (ns < maxSug)) {
  19132. - int unique = 1;
  19133. - for (j = 0; j < ns; j++) {
  19134. - // don't suggest previous suggestions or a previous suggestion with prefixes or affixes
  19135. - if (strstr(rootsphon[i], wlst[j]) ||
  19136. - // check forbidden words
  19137. - !checkword(rootsphon[i], strlen(rootsphon[i]), 0, NULL, NULL)) {
  19138. - unique = 0;
  19139. - break;
  19140. - }
  19141. - }
  19142. - if (unique) {
  19143. - wlst[ns++] = mystrdup(rootsphon[i]);
  19144. - if (!wlst[ns - 1]) return ns - 1;
  19145. - }
  19146. - }
  19147. - }
  19148. - }
  19149. -
  19150. - if (nonbmp) utf8 = 1;
  19151. - return ns;
  19152. -}
  19153. -
  19154. -
  19155. -// see if a candidate suggestion is spelled correctly
  19156. -// needs to check both root words and words with affixes
  19157. -
  19158. -// obsolote MySpell-HU modifications:
  19159. -// return value 2 and 3 marks compounding with hyphen (-)
  19160. -// `3' marks roots without suffix
  19161. -int SuggestMgr::checkword(const char * word, int len, int cpdsuggest, int * timer, clock_t * timelimit)
  19162. -{
  19163. - struct hentry * rv=NULL;
  19164. - struct hentry * rv2=NULL;
  19165. - int nosuffix = 0;
  19166. -
  19167. - // check time limit
  19168. - if (timer) {
  19169. - (*timer)--;
  19170. - if (!(*timer) && timelimit) {
  19171. - if ((clock() - *timelimit) > TIMELIMIT) return 0;
  19172. - *timer = MAXPLUSTIMER;
  19173. - }
  19174. - }
  19175. -
  19176. - if (pAMgr) {
  19177. - if (cpdsuggest==1) {
  19178. - if (pAMgr->get_compound()) {
  19179. - rv = pAMgr->compound_check(word, len, 0, 0, 100, 0, NULL, 0, 1, 0); //EXT
  19180. - if (rv && (!(rv2 = pAMgr->lookup(word)) || !rv2->astr ||
  19181. - !(TESTAFF(rv2->astr,pAMgr->get_forbiddenword(),rv2->alen) ||
  19182. - TESTAFF(rv2->astr,pAMgr->get_nosuggest(),rv2->alen)))) return 3; // XXX obsolote categorisation + only ICONV needs affix flag check?
  19183. - }
  19184. - return 0;
  19185. - }
  19186. -
  19187. - rv = pAMgr->lookup(word);
  19188. -
  19189. - if (rv) {
  19190. - if ((rv->astr) && (TESTAFF(rv->astr,pAMgr->get_forbiddenword(),rv->alen)
  19191. - || TESTAFF(rv->astr,pAMgr->get_nosuggest(),rv->alen))) return 0;
  19192. - while (rv) {
  19193. - if (rv->astr && (TESTAFF(rv->astr,pAMgr->get_needaffix(),rv->alen) ||
  19194. - TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) ||
  19195. - TESTAFF(rv->astr,pAMgr->get_onlyincompound(),rv->alen))) {
  19196. - rv = rv->next_homonym;
  19197. - } else break;
  19198. - }
  19199. - } else rv = pAMgr->prefix_check(word, len, 0); // only prefix, and prefix + suffix XXX
  19200. -
  19201. - if (rv) {
  19202. - nosuffix=1;
  19203. - } else {
  19204. - rv = pAMgr->suffix_check(word, len, 0, NULL, NULL, 0, NULL); // only suffix
  19205. - }
  19206. -
  19207. - if (!rv && pAMgr->have_contclass()) {
  19208. - rv = pAMgr->suffix_check_twosfx(word, len, 0, NULL, FLAG_NULL);
  19209. - if (!rv) rv = pAMgr->prefix_check_twosfx(word, len, 1, FLAG_NULL);
  19210. - }
  19211. -
  19212. - // check forbidden words
  19213. - if ((rv) && (rv->astr) && (TESTAFF(rv->astr,pAMgr->get_forbiddenword(),rv->alen) ||
  19214. - TESTAFF(rv->astr, ONLYUPCASEFLAG, rv->alen) ||
  19215. - TESTAFF(rv->astr,pAMgr->get_nosuggest(),rv->alen) ||
  19216. - TESTAFF(rv->astr,pAMgr->get_onlyincompound(),rv->alen))) return 0;
  19217. -
  19218. - if (rv) { // XXX obsolote
  19219. - if ((pAMgr->get_compoundflag()) &&
  19220. - TESTAFF(rv->astr, pAMgr->get_compoundflag(), rv->alen)) return 2 + nosuffix;
  19221. - return 1;
  19222. - }
  19223. - }
  19224. - return 0;
  19225. -}
  19226. -
  19227. -int SuggestMgr::check_forbidden(const char * word, int len)
  19228. -{
  19229. - struct hentry * rv = NULL;
  19230. -
  19231. - if (pAMgr) {
  19232. - rv = pAMgr->lookup(word);
  19233. - if (rv && rv->astr && (TESTAFF(rv->astr,pAMgr->get_needaffix(),rv->alen) ||
  19234. - TESTAFF(rv->astr,pAMgr->get_onlyincompound(),rv->alen))) rv = NULL;
  19235. - if (!(pAMgr->prefix_check(word,len,1)))
  19236. - rv = pAMgr->suffix_check(word,len, 0, NULL, NULL, 0, NULL); // prefix+suffix, suffix
  19237. - // check forbidden words
  19238. - if ((rv) && (rv->astr) && TESTAFF(rv->astr,pAMgr->get_forbiddenword(),rv->alen)) return 1;
  19239. - }
  19240. - return 0;
  19241. -}
  19242. -
  19243. -#ifdef HUNSPELL_EXPERIMENTAL
  19244. -// suggest possible stems
  19245. -int SuggestMgr::suggest_pos_stems(char*** slst, const char * w, int nsug)
  19246. -{
  19247. - char ** wlst;
  19248. -
  19249. - struct hentry * rv = NULL;
  19250. -
  19251. - char w2[MAXSWUTF8L];
  19252. - const char * word = w;
  19253. -
  19254. - // word reversing wrapper for complex prefixes
  19255. - if (complexprefixes) {
  19256. - strcpy(w2, w);
  19257. - if (utf8) reverseword_utf(w2); else reverseword(w2);
  19258. - word = w2;
  19259. - }
  19260. -
  19261. - int wl = strlen(word);
  19262. -
  19263. -
  19264. - if (*slst) {
  19265. - wlst = *slst;
  19266. - } else {
  19267. - wlst = (char **) calloc(maxSug, sizeof(char *));
  19268. - if (wlst == NULL) return -1;
  19269. - }
  19270. -
  19271. - rv = pAMgr->suffix_check(word, wl, 0, NULL, wlst, maxSug, &nsug);
  19272. -
  19273. - // delete dash from end of word
  19274. - if (nsug > 0) {
  19275. - for (int j=0; j < nsug; j++) {
  19276. - if (wlst[j][strlen(wlst[j]) - 1] == '-') wlst[j][strlen(wlst[j]) - 1] = '\0';
  19277. - }
  19278. - }
  19279. -
  19280. - *slst = wlst;
  19281. - return nsug;
  19282. -}
  19283. -#endif // END OF HUNSPELL_EXPERIMENTAL CODE
  19284. -
  19285. -
  19286. -char * SuggestMgr::suggest_morph(const char * w)
  19287. -{
  19288. - char result[MAXLNLEN];
  19289. - char * r = (char *) result;
  19290. - char * st;
  19291. -
  19292. - struct hentry * rv = NULL;
  19293. -
  19294. - *result = '\0';
  19295. -
  19296. - if (! pAMgr) return NULL;
  19297. -
  19298. - char w2[MAXSWUTF8L];
  19299. - const char * word = w;
  19300. -
  19301. - // word reversing wrapper for complex prefixes
  19302. - if (complexprefixes) {
  19303. - strcpy(w2, w);
  19304. - if (utf8) reverseword_utf(w2); else reverseword(w2);
  19305. - word = w2;
  19306. - }
  19307. -
  19308. - rv = pAMgr->lookup(word);
  19309. -
  19310. - while (rv) {
  19311. - if ((!rv->astr) || !(TESTAFF(rv->astr, pAMgr->get_forbiddenword(), rv->alen) ||
  19312. - TESTAFF(rv->astr, pAMgr->get_needaffix(), rv->alen) ||
  19313. - TESTAFF(rv->astr,pAMgr->get_onlyincompound(),rv->alen))) {
  19314. - if (!HENTRY_FIND(rv, MORPH_STEM)) {
  19315. - mystrcat(result, " ", MAXLNLEN);
  19316. - mystrcat(result, MORPH_STEM, MAXLNLEN);
  19317. - mystrcat(result, word, MAXLNLEN);
  19318. - }
  19319. - if (HENTRY_DATA(rv)) {
  19320. - mystrcat(result, " ", MAXLNLEN);
  19321. - mystrcat(result, HENTRY_DATA2(rv), MAXLNLEN);
  19322. - }
  19323. - mystrcat(result, "\n", MAXLNLEN);
  19324. - }
  19325. - rv = rv->next_homonym;
  19326. - }
  19327. -
  19328. - st = pAMgr->affix_check_morph(word,strlen(word));
  19329. - if (st) {
  19330. - mystrcat(result, st, MAXLNLEN);
  19331. - free(st);
  19332. - }
  19333. -
  19334. - if (pAMgr->get_compound() && (*result == '\0'))
  19335. - pAMgr->compound_check_morph(word, strlen(word),
  19336. - 0, 0, 100, 0,NULL, 0, &r, NULL);
  19337. -
  19338. - return (*result) ? mystrdup(line_uniq(result, MSEP_REC)) : NULL;
  19339. -}
  19340. -
  19341. -#ifdef HUNSPELL_EXPERIMENTAL
  19342. -char * SuggestMgr::suggest_morph_for_spelling_error(const char * word)
  19343. -{
  19344. - char * p = NULL;
  19345. - char ** wlst = (char **) calloc(maxSug, sizeof(char *));
  19346. - if (!**wlst) return NULL;
  19347. - // we will use only the first suggestion
  19348. - for (int i = 0; i < maxSug - 1; i++) wlst[i] = "";
  19349. - int ns = suggest(&wlst, word, maxSug - 1, NULL);
  19350. - if (ns == maxSug) {
  19351. - p = suggest_morph(wlst[maxSug - 1]);
  19352. - free(wlst[maxSug - 1]);
  19353. - }
  19354. - if (wlst) free(wlst);
  19355. - return p;
  19356. -}
  19357. -#endif // END OF HUNSPELL_EXPERIMENTAL CODE
  19358. -
  19359. -/* affixation */
  19360. -char * SuggestMgr::suggest_hentry_gen(hentry * rv, char * pattern)
  19361. -{
  19362. - char result[MAXLNLEN];
  19363. - *result = '\0';
  19364. - int sfxcount = get_sfxcount(pattern);
  19365. -
  19366. - if (get_sfxcount(HENTRY_DATA(rv)) > sfxcount) return NULL;
  19367. -
  19368. - if (HENTRY_DATA(rv)) {
  19369. - char * aff = pAMgr->morphgen(HENTRY_WORD(rv), rv->blen, rv->astr, rv->alen,
  19370. - HENTRY_DATA(rv), pattern, 0);
  19371. - if (aff) {
  19372. - mystrcat(result, aff, MAXLNLEN);
  19373. - mystrcat(result, "\n", MAXLNLEN);
  19374. - free(aff);
  19375. - }
  19376. - }
  19377. -
  19378. - // check all allomorphs
  19379. - char allomorph[MAXLNLEN];
  19380. - char * p = NULL;
  19381. - if (HENTRY_DATA(rv)) p = (char *) strstr(HENTRY_DATA2(rv), MORPH_ALLOMORPH);
  19382. - while (p) {
  19383. - struct hentry * rv2 = NULL;
  19384. - p += MORPH_TAG_LEN;
  19385. - int plen = fieldlen(p);
  19386. - strncpy(allomorph, p, plen);
  19387. - allomorph[plen] = '\0';
  19388. - rv2 = pAMgr->lookup(allomorph);
  19389. - while (rv2) {
  19390. -// if (HENTRY_DATA(rv2) && get_sfxcount(HENTRY_DATA(rv2)) <= sfxcount) {
  19391. - if (HENTRY_DATA(rv2)) {
  19392. - char * st = (char *) strstr(HENTRY_DATA2(rv2), MORPH_STEM);
  19393. - if (st && (strncmp(st + MORPH_TAG_LEN,
  19394. - HENTRY_WORD(rv), fieldlen(st + MORPH_TAG_LEN)) == 0)) {
  19395. - char * aff = pAMgr->morphgen(HENTRY_WORD(rv2), rv2->blen, rv2->astr, rv2->alen,
  19396. - HENTRY_DATA(rv2), pattern, 0);
  19397. - if (aff) {
  19398. - mystrcat(result, aff, MAXLNLEN);
  19399. - mystrcat(result, "\n", MAXLNLEN);
  19400. - free(aff);
  19401. - }
  19402. - }
  19403. - }
  19404. - rv2 = rv2->next_homonym;
  19405. - }
  19406. - p = strstr(p + plen, MORPH_ALLOMORPH);
  19407. - }
  19408. -
  19409. - return (*result) ? mystrdup(result) : NULL;
  19410. -}
  19411. -
  19412. -char * SuggestMgr::suggest_gen(char ** desc, int n, char * pattern) {
  19413. - char result[MAXLNLEN];
  19414. - char result2[MAXLNLEN];
  19415. - char newpattern[MAXLNLEN];
  19416. - *newpattern = '\0';
  19417. - if (n == 0) return 0;
  19418. - *result2 = '\0';
  19419. - struct hentry * rv = NULL;
  19420. - if (!pAMgr) return NULL;
  19421. -
  19422. -// search affixed forms with and without derivational suffixes
  19423. - while(1) {
  19424. -
  19425. - for (int k = 0; k < n; k++) {
  19426. - *result = '\0';
  19427. - // add compound word parts (except the last one)
  19428. - char * s = (char *) desc[k];
  19429. - char * part = strstr(s, MORPH_PART);
  19430. - if (part) {
  19431. - char * nextpart = strstr(part + 1, MORPH_PART);
  19432. - while (nextpart) {
  19433. - copy_field(result + strlen(result), part, MORPH_PART);
  19434. - part = nextpart;
  19435. - nextpart = strstr(part + 1, MORPH_PART);
  19436. - }
  19437. - s = part;
  19438. - }
  19439. -
  19440. - char **pl;
  19441. - char tok[MAXLNLEN];
  19442. - strcpy(tok, s);
  19443. - char * alt = strstr(tok, " | ");
  19444. - while (alt) {
  19445. - alt[1] = MSEP_ALT;
  19446. - alt = strstr(alt, " | ");
  19447. - }
  19448. - int pln = line_tok(tok, &pl, MSEP_ALT);
  19449. - for (int i = 0; i < pln; i++) {
  19450. - // remove inflectional and terminal suffixes
  19451. - char * is = strstr(pl[i], MORPH_INFL_SFX);
  19452. - if (is) *is = '\0';
  19453. - char * ts = strstr(pl[i], MORPH_TERM_SFX);
  19454. - while (ts) {
  19455. - *ts = '_';
  19456. - ts = strstr(pl[i], MORPH_TERM_SFX);
  19457. - }
  19458. - char * st = strstr(s, MORPH_STEM);
  19459. - if (st) {
  19460. - copy_field(tok, st, MORPH_STEM);
  19461. - rv = pAMgr->lookup(tok);
  19462. - while (rv) {
  19463. - char newpat[MAXLNLEN];
  19464. - strcpy(newpat, pl[i]);
  19465. - strcat(newpat, pattern);
  19466. - char * sg = suggest_hentry_gen(rv, newpat);
  19467. - if (!sg) sg = suggest_hentry_gen(rv, pattern);
  19468. - if (sg) {
  19469. - char ** gen;
  19470. - int genl = line_tok(sg, &gen, MSEP_REC);
  19471. - free(sg);
  19472. - sg = NULL;
  19473. - for (int j = 0; j < genl; j++) {
  19474. - if (strstr(pl[i], MORPH_SURF_PFX)) {
  19475. - int r2l = strlen(result2);
  19476. - result2[r2l] = MSEP_REC;
  19477. - strcpy(result2 + r2l + 1, result);
  19478. - copy_field(result2 + strlen(result2), pl[i], MORPH_SURF_PFX);
  19479. - mystrcat(result2, gen[j], MAXLNLEN);
  19480. - } else {
  19481. - sprintf(result2 + strlen(result2), "%c%s%s",
  19482. - MSEP_REC, result, gen[j]);
  19483. - }
  19484. - }
  19485. - freelist(&gen, genl);
  19486. - }
  19487. - rv = rv->next_homonym;
  19488. - }
  19489. - }
  19490. - }
  19491. - freelist(&pl, pln);
  19492. - }
  19493. -
  19494. - if (*result2 || !strstr(pattern, MORPH_DERI_SFX)) break;
  19495. - strcpy(newpattern, pattern);
  19496. - pattern = newpattern;
  19497. - char * ds = strstr(pattern, MORPH_DERI_SFX);
  19498. - while (ds) {
  19499. - strncpy(ds, MORPH_TERM_SFX, MORPH_TAG_LEN);
  19500. - ds = strstr(pattern, MORPH_DERI_SFX);
  19501. - }
  19502. - }
  19503. - return (*result2 ? mystrdup(result2) : NULL);
  19504. -}
  19505. -
  19506. -
  19507. -// generate an n-gram score comparing s1 and s2
  19508. -int SuggestMgr::ngram(int n, char * s1, const char * s2, int opt)
  19509. -{
  19510. - int nscore = 0;
  19511. - int ns;
  19512. - int l1;
  19513. - int l2;
  19514. - int test = 0;
  19515. -
  19516. - if (utf8) {
  19517. - w_char su1[MAXSWL];
  19518. - w_char su2[MAXSWL];
  19519. - l1 = u8_u16(su1, MAXSWL, s1);
  19520. - l2 = u8_u16(su2, MAXSWL, s2);
  19521. - if ((l2 <= 0) || (l1 == -1)) return 0;
  19522. - // lowering dictionary word
  19523. - if (opt & NGRAM_LOWERING) mkallsmall_utf(su2, l2, langnum);
  19524. - for (int j = 1; j <= n; j++) {
  19525. - ns = 0;
  19526. - for (int i = 0; i <= (l1-j); i++) {
  19527. - int k = 0;
  19528. - for (int l = 0; l <= (l2-j); l++) {
  19529. - for (k = 0; k < j; k++) {
  19530. - w_char * c1 = su1 + i + k;
  19531. - w_char * c2 = su2 + l + k;
  19532. - if ((c1->l != c2->l) || (c1->h != c2->h)) break;
  19533. - }
  19534. - if (k == j) {
  19535. - ns++;
  19536. - break;
  19537. - }
  19538. - }
  19539. - if (k != j && opt & NGRAM_WEIGHTED) {
  19540. - ns--;
  19541. - test++;
  19542. - if (i == 0 || i == l1-j) ns--; // side weight
  19543. - }
  19544. - }
  19545. - nscore = nscore + ns;
  19546. - if (ns < 2 && !(opt & NGRAM_WEIGHTED)) break;
  19547. - }
  19548. - } else {
  19549. - l2 = strlen(s2);
  19550. - if (l2 == 0) return 0;
  19551. - l1 = strlen(s1);
  19552. - char *t = mystrdup(s2);
  19553. - if (opt & NGRAM_LOWERING) mkallsmall(t, csconv);
  19554. - for (int j = 1; j <= n; j++) {
  19555. - ns = 0;
  19556. - for (int i = 0; i <= (l1-j); i++) {
  19557. - char c = *(s1 + i + j);
  19558. - *(s1 + i + j) = '\0';
  19559. - if (strstr(t,(s1+i))) {
  19560. - ns++;
  19561. - } else if (opt & NGRAM_WEIGHTED) {
  19562. - ns--;
  19563. -test++;
  19564. - if (i == 0 || i == l1-j) ns--; // side weight
  19565. - }
  19566. - *(s1 + i + j ) = c;
  19567. - }
  19568. - nscore = nscore + ns;
  19569. - if (ns < 2 && !(opt & NGRAM_WEIGHTED)) break;
  19570. - }
  19571. - free(t);
  19572. - }
  19573. -
  19574. - ns = 0;
  19575. - if (opt & NGRAM_LONGER_WORSE) ns = (l2-l1)-2;
  19576. - if (opt & NGRAM_ANY_MISMATCH) ns = abs(l2-l1)-2;
  19577. - ns = (nscore - ((ns > 0) ? ns : 0));
  19578. - return ns;
  19579. -}
  19580. -
  19581. -// length of the left common substring of s1 and (decapitalised) s2
  19582. -int SuggestMgr::leftcommonsubstring(char * s1, const char * s2) {
  19583. - if (utf8) {
  19584. - w_char su1[MAXSWL];
  19585. - w_char su2[MAXSWL];
  19586. - su1[0].l = su2[0].l = su1[0].h = su2[0].h = 0;
  19587. - // decapitalize dictionary word
  19588. - if (complexprefixes) {
  19589. - int l1 = u8_u16(su1, MAXSWL, s1);
  19590. - int l2 = u8_u16(su2, MAXSWL, s2);
  19591. - if (*((short *)su1+l1-1) == *((short *)su2+l2-1)) return 1;
  19592. - } else {
  19593. - int i;
  19594. - u8_u16(su1, 1, s1);
  19595. - u8_u16(su2, 1, s2);
  19596. - unsigned short idx = (su2->h << 8) + su2->l;
  19597. - unsigned short otheridx = (su1->h << 8) + su1->l;
  19598. - if (otheridx != idx &&
  19599. - (otheridx != unicodetolower(idx, langnum))) return 0;
  19600. - int l1 = u8_u16(su1, MAXSWL, s1);
  19601. - int l2 = u8_u16(su2, MAXSWL, s2);
  19602. - for(i = 1; (i < l1) && (i < l2) &&
  19603. - (su1[i].l == su2[i].l) && (su1[i].h == su2[i].h); i++);
  19604. - return i;
  19605. - }
  19606. - } else {
  19607. - if (complexprefixes) {
  19608. - int l1 = strlen(s1);
  19609. - int l2 = strlen(s2);
  19610. - if (*(s2+l1-1) == *(s2+l2-1)) return 1;
  19611. - } else {
  19612. - char * olds = s1;
  19613. - // decapitalise dictionary word
  19614. - if ((*s1 != *s2) && (*s1 != csconv[((unsigned char)*s2)].clower)) return 0;
  19615. - do {
  19616. - s1++; s2++;
  19617. - } while ((*s1 == *s2) && (*s1 != '\0'));
  19618. - return (int)(s1 - olds);
  19619. - }
  19620. - }
  19621. - return 0;
  19622. -}
  19623. -
  19624. -int SuggestMgr::commoncharacterpositions(char * s1, const char * s2, int * is_swap) {
  19625. - int num = 0;
  19626. - int diff = 0;
  19627. - int diffpos[2];
  19628. - *is_swap = 0;
  19629. - if (utf8) {
  19630. - w_char su1[MAXSWL];
  19631. - w_char su2[MAXSWL];
  19632. - int l1 = u8_u16(su1, MAXSWL, s1);
  19633. - int l2 = u8_u16(su2, MAXSWL, s2);
  19634. -
  19635. - if (l1 <= 0 || l2 <= 0)
  19636. - return 0;
  19637. -
  19638. - // decapitalize dictionary word
  19639. - if (complexprefixes) {
  19640. - mkallsmall_utf(su2+l2-1, 1, langnum);
  19641. - } else {
  19642. - mkallsmall_utf(su2, 1, langnum);
  19643. - }
  19644. - for (int i = 0; (i < l1) && (i < l2); i++) {
  19645. - if (((short *) su1)[i] == ((short *) su2)[i]) {
  19646. - num++;
  19647. - } else {
  19648. - if (diff < 2) diffpos[diff] = i;
  19649. - diff++;
  19650. - }
  19651. - }
  19652. - if ((diff == 2) && (l1 == l2) &&
  19653. - (((short *) su1)[diffpos[0]] == ((short *) su2)[diffpos[1]]) &&
  19654. - (((short *) su1)[diffpos[1]] == ((short *) su2)[diffpos[0]])) *is_swap = 1;
  19655. - } else {
  19656. - int i;
  19657. - char t[MAXSWUTF8L];
  19658. - strcpy(t, s2);
  19659. - // decapitalize dictionary word
  19660. - if (complexprefixes) {
  19661. - int l2 = strlen(t);
  19662. - *(t+l2-1) = csconv[((unsigned char)*(t+l2-1))].clower;
  19663. - } else {
  19664. - mkallsmall(t, csconv);
  19665. - }
  19666. - for (i = 0; (*(s1+i) != 0) && (*(t+i) != 0); i++) {
  19667. - if (*(s1+i) == *(t+i)) {
  19668. - num++;
  19669. - } else {
  19670. - if (diff < 2) diffpos[diff] = i;
  19671. - diff++;
  19672. - }
  19673. - }
  19674. - if ((diff == 2) && (*(s1+i) == 0) && (*(t+i) == 0) &&
  19675. - (*(s1+diffpos[0]) == *(t+diffpos[1])) &&
  19676. - (*(s1+diffpos[1]) == *(t+diffpos[0]))) *is_swap = 1;
  19677. - }
  19678. - return num;
  19679. -}
  19680. -
  19681. -int SuggestMgr::mystrlen(const char * word) {
  19682. - if (utf8) {
  19683. - w_char w[MAXSWL];
  19684. - return u8_u16(w, MAXSWL, word);
  19685. - } else return strlen(word);
  19686. -}
  19687. -
  19688. -// sort in decreasing order of score
  19689. -void SuggestMgr::bubblesort(char** rword, char** rword2, int* rsc, int n )
  19690. -{
  19691. - int m = 1;
  19692. - while (m < n) {
  19693. - int j = m;
  19694. - while (j > 0) {
  19695. - if (rsc[j-1] < rsc[j]) {
  19696. - int sctmp = rsc[j-1];
  19697. - char * wdtmp = rword[j-1];
  19698. - rsc[j-1] = rsc[j];
  19699. - rword[j-1] = rword[j];
  19700. - rsc[j] = sctmp;
  19701. - rword[j] = wdtmp;
  19702. - if (rword2) {
  19703. - wdtmp = rword2[j-1];
  19704. - rword2[j-1] = rword2[j];
  19705. - rword2[j] = wdtmp;
  19706. - }
  19707. - j--;
  19708. - } else break;
  19709. - }
  19710. - m++;
  19711. - }
  19712. - return;
  19713. -}
  19714. -
  19715. -// longest common subsequence
  19716. -void SuggestMgr::lcs(const char * s, const char * s2, int * l1, int * l2, char ** result) {
  19717. - int n, m;
  19718. - w_char su[MAXSWL];
  19719. - w_char su2[MAXSWL];
  19720. - char * b;
  19721. - char * c;
  19722. - int i;
  19723. - int j;
  19724. - if (utf8) {
  19725. - m = u8_u16(su, MAXSWL, s);
  19726. - n = u8_u16(su2, MAXSWL, s2);
  19727. - } else {
  19728. - m = strlen(s);
  19729. - n = strlen(s2);
  19730. - }
  19731. - c = (char *) malloc((m + 1) * (n + 1));
  19732. - b = (char *) malloc((m + 1) * (n + 1));
  19733. - if (!c || !b) {
  19734. - if (c) free(c);
  19735. - if (b) free(b);
  19736. - *result = NULL;
  19737. - return;
  19738. - }
  19739. - for (i = 1; i <= m; i++) c[i*(n+1)] = 0;
  19740. - for (j = 0; j <= n; j++) c[j] = 0;
  19741. - for (i = 1; i <= m; i++) {
  19742. - for (j = 1; j <= n; j++) {
  19743. - if ( ((utf8) && (*((short *) su+i-1) == *((short *)su2+j-1)))
  19744. - || ((!utf8) && ((*(s+i-1)) == (*(s2+j-1))))) {
  19745. - c[i*(n+1) + j] = c[(i-1)*(n+1) + j-1]+1;
  19746. - b[i*(n+1) + j] = LCS_UPLEFT;
  19747. - } else if (c[(i-1)*(n+1) + j] >= c[i*(n+1) + j-1]) {
  19748. - c[i*(n+1) + j] = c[(i-1)*(n+1) + j];
  19749. - b[i*(n+1) + j] = LCS_UP;
  19750. - } else {
  19751. - c[i*(n+1) + j] = c[i*(n+1) + j-1];
  19752. - b[i*(n+1) + j] = LCS_LEFT;
  19753. - }
  19754. - }
  19755. - }
  19756. - *result = b;
  19757. - free(c);
  19758. - *l1 = m;
  19759. - *l2 = n;
  19760. -}
  19761. -
  19762. -int SuggestMgr::lcslen(const char * s, const char* s2) {
  19763. - int m;
  19764. - int n;
  19765. - int i;
  19766. - int j;
  19767. - char * result;
  19768. - int len = 0;
  19769. - lcs(s, s2, &m, &n, &result);
  19770. - if (!result) return 0;
  19771. - i = m;
  19772. - j = n;
  19773. - while ((i != 0) && (j != 0)) {
  19774. - if (result[i*(n+1) + j] == LCS_UPLEFT) {
  19775. - len++;
  19776. - i--;
  19777. - j--;
  19778. - } else if (result[i*(n+1) + j] == LCS_UP) {
  19779. - i--;
  19780. - } else j--;
  19781. - }
  19782. - free(result);
  19783. - return len;
  19784. -}
  19785. diff --git a/src/hunspell/suggestmgr.hxx b/src/hunspell/suggestmgr.hxx
  19786. deleted file mode 100644
  19787. index 8456b5b3e2..0000000000
  19788. --- a/src/hunspell/suggestmgr.hxx
  19789. +++ /dev/null
  19790. @@ -1,115 +0,0 @@
  19791. -#ifndef _SUGGESTMGR_HXX_
  19792. -#define _SUGGESTMGR_HXX_
  19793. -
  19794. -#define MAXSWL 100
  19795. -#define MAXSWUTF8L (MAXSWL * 4)
  19796. -#define MAX_ROOTS 100
  19797. -#define MAX_WORDS 100
  19798. -#define MAX_GUESS 200
  19799. -#define MAXNGRAMSUGS 4
  19800. -#define MAXPHONSUGS 2
  19801. -#define MAXCOMPOUNDSUGS 3
  19802. -
  19803. -// timelimit: max ~1/4 sec (process time on Linux) for a time consuming function
  19804. -#define TIMELIMIT (CLOCKS_PER_SEC >> 2)
  19805. -#define MINTIMER 100
  19806. -#define MAXPLUSTIMER 100
  19807. -
  19808. -#define NGRAM_LONGER_WORSE (1 << 0)
  19809. -#define NGRAM_ANY_MISMATCH (1 << 1)
  19810. -#define NGRAM_LOWERING (1 << 2)
  19811. -#define NGRAM_WEIGHTED (1 << 3)
  19812. -
  19813. -#include "hunvisapi.h"
  19814. -
  19815. -#include "atypes.hxx"
  19816. -#include "affixmgr.hxx"
  19817. -#include "hashmgr.hxx"
  19818. -#include "langnum.hxx"
  19819. -#include <time.h>
  19820. -
  19821. -enum { LCS_UP, LCS_LEFT, LCS_UPLEFT };
  19822. -
  19823. -class LIBHUNSPELL_DLL_EXPORTED SuggestMgr
  19824. -{
  19825. -private:
  19826. - SuggestMgr(const SuggestMgr&);
  19827. - SuggestMgr& operator = (const SuggestMgr&);
  19828. -private:
  19829. - char * ckey;
  19830. - int ckeyl;
  19831. - w_char * ckey_utf;
  19832. -
  19833. - char * ctry;
  19834. - int ctryl;
  19835. - w_char * ctry_utf;
  19836. -
  19837. - AffixMgr* pAMgr;
  19838. - int maxSug;
  19839. - struct cs_info * csconv;
  19840. - int utf8;
  19841. - int langnum;
  19842. - int nosplitsugs;
  19843. - int maxngramsugs;
  19844. - int maxcpdsugs;
  19845. - int complexprefixes;
  19846. -
  19847. -
  19848. -public:
  19849. - SuggestMgr(const char * tryme, int maxn, AffixMgr *aptr);
  19850. - ~SuggestMgr();
  19851. -
  19852. - int suggest(char*** slst, const char * word, int nsug, int * onlycmpdsug);
  19853. - int ngsuggest(char ** wlst, char * word, int ns, HashMgr** pHMgr, int md);
  19854. - int suggest_auto(char*** slst, const char * word, int nsug);
  19855. - int suggest_stems(char*** slst, const char * word, int nsug);
  19856. - int suggest_pos_stems(char*** slst, const char * word, int nsug);
  19857. -
  19858. - char * suggest_morph(const char * word);
  19859. - char * suggest_gen(char ** pl, int pln, char * pattern);
  19860. - char * suggest_morph_for_spelling_error(const char * word);
  19861. -
  19862. -private:
  19863. - int testsug(char** wlst, const char * candidate, int wl, int ns, int cpdsuggest,
  19864. - int * timer, clock_t * timelimit);
  19865. - int checkword(const char *, int, int, int *, clock_t *);
  19866. - int check_forbidden(const char *, int);
  19867. -
  19868. - int capchars(char **, const char *, int, int);
  19869. - int replchars(char**, const char *, int, int);
  19870. - int doubletwochars(char**, const char *, int, int);
  19871. - int forgotchar(char **, const char *, int, int);
  19872. - int swapchar(char **, const char *, int, int);
  19873. - int longswapchar(char **, const char *, int, int);
  19874. - int movechar(char **, const char *, int, int);
  19875. - int extrachar(char **, const char *, int, int);
  19876. - int badcharkey(char **, const char *, int, int);
  19877. - int badchar(char **, const char *, int, int);
  19878. - int twowords(char **, const char *, int, int);
  19879. - int fixstems(char **, const char *, int);
  19880. -
  19881. - int capchars_utf(char **, const w_char *, int wl, int, int);
  19882. - int doubletwochars_utf(char**, const w_char *, int wl, int, int);
  19883. - int forgotchar_utf(char**, const w_char *, int wl, int, int);
  19884. - int extrachar_utf(char**, const w_char *, int wl, int, int);
  19885. - int badcharkey_utf(char **, const w_char *, int wl, int, int);
  19886. - int badchar_utf(char **, const w_char *, int wl, int, int);
  19887. - int swapchar_utf(char **, const w_char *, int wl, int, int);
  19888. - int longswapchar_utf(char **, const w_char *, int, int, int);
  19889. - int movechar_utf(char **, const w_char *, int, int, int);
  19890. -
  19891. - int mapchars(char**, const char *, int, int);
  19892. - int map_related(const char *, char *, int, int, char ** wlst, int, int, const mapentry*, int, int *, clock_t *);
  19893. - int ngram(int n, char * s1, const char * s2, int opt);
  19894. - int mystrlen(const char * word);
  19895. - int leftcommonsubstring(char * s1, const char * s2);
  19896. - int commoncharacterpositions(char * s1, const char * s2, int * is_swap);
  19897. - void bubblesort( char ** rwd, char ** rwd2, int * rsc, int n);
  19898. - void lcs(const char * s, const char * s2, int * l1, int * l2, char ** result);
  19899. - int lcslen(const char * s, const char* s2);
  19900. - char * suggest_hentry_gen(hentry * rv, char * pattern);
  19901. -
  19902. -};
  19903. -
  19904. -#endif
  19905. -
  19906. diff --git a/src/hunspell/utf_info.cxx b/src/hunspell/utf_info.cxx
  19907. deleted file mode 100644
  19908. index 4a8e203cfa..0000000000
  19909. --- a/src/hunspell/utf_info.cxx
  19910. +++ /dev/null
  19911. @@ -1,19676 +0,0 @@
  19912. -#include "csutil.hxx"
  19913. -/* fields: Unicode letter, toupper, tolower */
  19914. -static struct unicode_info utf_lst[] = {
  19915. -{ 0x0041, 0x0041, 0x0061 },
  19916. -{ 0x0042, 0x0042, 0x0062 },
  19917. -{ 0x0043, 0x0043, 0x0063 },
  19918. -{ 0x0044, 0x0044, 0x0064 },
  19919. -{ 0x0045, 0x0045, 0x0065 },
  19920. -{ 0x0046, 0x0046, 0x0066 },
  19921. -{ 0x0047, 0x0047, 0x0067 },
  19922. -{ 0x0048, 0x0048, 0x0068 },
  19923. -{ 0x0049, 0x0049, 0x0069 },
  19924. -{ 0x004A, 0x004A, 0x006A },
  19925. -{ 0x004B, 0x004B, 0x006B },
  19926. -{ 0x004C, 0x004C, 0x006C },
  19927. -{ 0x004D, 0x004D, 0x006D },
  19928. -{ 0x004E, 0x004E, 0x006E },
  19929. -{ 0x004F, 0x004F, 0x006F },
  19930. -{ 0x0050, 0x0050, 0x0070 },
  19931. -{ 0x0051, 0x0051, 0x0071 },
  19932. -{ 0x0052, 0x0052, 0x0072 },
  19933. -{ 0x0053, 0x0053, 0x0073 },
  19934. -{ 0x0054, 0x0054, 0x0074 },
  19935. -{ 0x0055, 0x0055, 0x0075 },
  19936. -{ 0x0056, 0x0056, 0x0076 },
  19937. -{ 0x0057, 0x0057, 0x0077 },
  19938. -{ 0x0058, 0x0058, 0x0078 },
  19939. -{ 0x0059, 0x0059, 0x0079 },
  19940. -{ 0x005A, 0x005A, 0x007A },
  19941. -{ 0x0061, 0x0041, 0x0061 },
  19942. -{ 0x0062, 0x0042, 0x0062 },
  19943. -{ 0x0063, 0x0043, 0x0063 },
  19944. -{ 0x0064, 0x0044, 0x0064 },
  19945. -{ 0x0065, 0x0045, 0x0065 },
  19946. -{ 0x0066, 0x0046, 0x0066 },
  19947. -{ 0x0067, 0x0047, 0x0067 },
  19948. -{ 0x0068, 0x0048, 0x0068 },
  19949. -{ 0x0069, 0x0049, 0x0069 },
  19950. -{ 0x006A, 0x004A, 0x006A },
  19951. -{ 0x006B, 0x004B, 0x006B },
  19952. -{ 0x006C, 0x004C, 0x006C },
  19953. -{ 0x006D, 0x004D, 0x006D },
  19954. -{ 0x006E, 0x004E, 0x006E },
  19955. -{ 0x006F, 0x004F, 0x006F },
  19956. -{ 0x0070, 0x0050, 0x0070 },
  19957. -{ 0x0071, 0x0051, 0x0071 },
  19958. -{ 0x0072, 0x0052, 0x0072 },
  19959. -{ 0x0073, 0x0053, 0x0073 },
  19960. -{ 0x0074, 0x0054, 0x0074 },
  19961. -{ 0x0075, 0x0055, 0x0075 },
  19962. -{ 0x0076, 0x0056, 0x0076 },
  19963. -{ 0x0077, 0x0057, 0x0077 },
  19964. -{ 0x0078, 0x0058, 0x0078 },
  19965. -{ 0x0079, 0x0059, 0x0079 },
  19966. -{ 0x007A, 0x005A, 0x007A },
  19967. -{ 0x00AA, 0x00AA, 0x00AA },
  19968. -{ 0x00B5, 0x039C, 0x00B5 },
  19969. -{ 0x00BA, 0x00BA, 0x00BA },
  19970. -{ 0x00C0, 0x00C0, 0x00E0 },
  19971. -{ 0x00C1, 0x00C1, 0x00E1 },
  19972. -{ 0x00C2, 0x00C2, 0x00E2 },
  19973. -{ 0x00C3, 0x00C3, 0x00E3 },
  19974. -{ 0x00C4, 0x00C4, 0x00E4 },
  19975. -{ 0x00C5, 0x00C5, 0x00E5 },
  19976. -{ 0x00C6, 0x00C6, 0x00E6 },
  19977. -{ 0x00C7, 0x00C7, 0x00E7 },
  19978. -{ 0x00C8, 0x00C8, 0x00E8 },
  19979. -{ 0x00C9, 0x00C9, 0x00E9 },
  19980. -{ 0x00CA, 0x00CA, 0x00EA },
  19981. -{ 0x00CB, 0x00CB, 0x00EB },
  19982. -{ 0x00CC, 0x00CC, 0x00EC },
  19983. -{ 0x00CD, 0x00CD, 0x00ED },
  19984. -{ 0x00CE, 0x00CE, 0x00EE },
  19985. -{ 0x00CF, 0x00CF, 0x00EF },
  19986. -{ 0x00D0, 0x00D0, 0x00F0 },
  19987. -{ 0x00D1, 0x00D1, 0x00F1 },
  19988. -{ 0x00D2, 0x00D2, 0x00F2 },
  19989. -{ 0x00D3, 0x00D3, 0x00F3 },
  19990. -{ 0x00D4, 0x00D4, 0x00F4 },
  19991. -{ 0x00D5, 0x00D5, 0x00F5 },
  19992. -{ 0x00D6, 0x00D6, 0x00F6 },
  19993. -{ 0x00D8, 0x00D8, 0x00F8 },
  19994. -{ 0x00D9, 0x00D9, 0x00F9 },
  19995. -{ 0x00DA, 0x00DA, 0x00FA },
  19996. -{ 0x00DB, 0x00DB, 0x00FB },
  19997. -{ 0x00DC, 0x00DC, 0x00FC },
  19998. -{ 0x00DD, 0x00DD, 0x00FD },
  19999. -{ 0x00DE, 0x00DE, 0x00FE },
  20000. -{ 0x00DF, 0x00DF, 0x00DF },
  20001. -{ 0x00E0, 0x00C0, 0x00E0 },
  20002. -{ 0x00E1, 0x00C1, 0x00E1 },
  20003. -{ 0x00E2, 0x00C2, 0x00E2 },
  20004. -{ 0x00E3, 0x00C3, 0x00E3 },
  20005. -{ 0x00E4, 0x00C4, 0x00E4 },
  20006. -{ 0x00E5, 0x00C5, 0x00E5 },
  20007. -{ 0x00E6, 0x00C6, 0x00E6 },
  20008. -{ 0x00E7, 0x00C7, 0x00E7 },
  20009. -{ 0x00E8, 0x00C8, 0x00E8 },
  20010. -{ 0x00E9, 0x00C9, 0x00E9 },
  20011. -{ 0x00EA, 0x00CA, 0x00EA },
  20012. -{ 0x00EB, 0x00CB, 0x00EB },
  20013. -{ 0x00EC, 0x00CC, 0x00EC },
  20014. -{ 0x00ED, 0x00CD, 0x00ED },
  20015. -{ 0x00EE, 0x00CE, 0x00EE },
  20016. -{ 0x00EF, 0x00CF, 0x00EF },
  20017. -{ 0x00F0, 0x00D0, 0x00F0 },
  20018. -{ 0x00F1, 0x00D1, 0x00F1 },
  20019. -{ 0x00F2, 0x00D2, 0x00F2 },
  20020. -{ 0x00F3, 0x00D3, 0x00F3 },
  20021. -{ 0x00F4, 0x00D4, 0x00F4 },
  20022. -{ 0x00F5, 0x00D5, 0x00F5 },
  20023. -{ 0x00F6, 0x00D6, 0x00F6 },
  20024. -{ 0x00F8, 0x00D8, 0x00F8 },
  20025. -{ 0x00F9, 0x00D9, 0x00F9 },
  20026. -{ 0x00FA, 0x00DA, 0x00FA },
  20027. -{ 0x00FB, 0x00DB, 0x00FB },
  20028. -{ 0x00FC, 0x00DC, 0x00FC },
  20029. -{ 0x00FD, 0x00DD, 0x00FD },
  20030. -{ 0x00FE, 0x00DE, 0x00FE },
  20031. -{ 0x00FF, 0x0178, 0x00FF },
  20032. -{ 0x0100, 0x0100, 0x0101 },
  20033. -{ 0x0101, 0x0100, 0x0101 },
  20034. -{ 0x0102, 0x0102, 0x0103 },
  20035. -{ 0x0103, 0x0102, 0x0103 },
  20036. -{ 0x0104, 0x0104, 0x0105 },
  20037. -{ 0x0105, 0x0104, 0x0105 },
  20038. -{ 0x0106, 0x0106, 0x0107 },
  20039. -{ 0x0107, 0x0106, 0x0107 },
  20040. -{ 0x0108, 0x0108, 0x0109 },
  20041. -{ 0x0109, 0x0108, 0x0109 },
  20042. -{ 0x010A, 0x010A, 0x010B },
  20043. -{ 0x010B, 0x010A, 0x010B },
  20044. -{ 0x010C, 0x010C, 0x010D },
  20045. -{ 0x010D, 0x010C, 0x010D },
  20046. -{ 0x010E, 0x010E, 0x010F },
  20047. -{ 0x010F, 0x010E, 0x010F },
  20048. -{ 0x0110, 0x0110, 0x0111 },
  20049. -{ 0x0111, 0x0110, 0x0111 },
  20050. -{ 0x0112, 0x0112, 0x0113 },
  20051. -{ 0x0113, 0x0112, 0x0113 },
  20052. -{ 0x0114, 0x0114, 0x0115 },
  20053. -{ 0x0115, 0x0114, 0x0115 },
  20054. -{ 0x0116, 0x0116, 0x0117 },
  20055. -{ 0x0117, 0x0116, 0x0117 },
  20056. -{ 0x0118, 0x0118, 0x0119 },
  20057. -{ 0x0119, 0x0118, 0x0119 },
  20058. -{ 0x011A, 0x011A, 0x011B },
  20059. -{ 0x011B, 0x011A, 0x011B },
  20060. -{ 0x011C, 0x011C, 0x011D },
  20061. -{ 0x011D, 0x011C, 0x011D },
  20062. -{ 0x011E, 0x011E, 0x011F },
  20063. -{ 0x011F, 0x011E, 0x011F },
  20064. -{ 0x0120, 0x0120, 0x0121 },
  20065. -{ 0x0121, 0x0120, 0x0121 },
  20066. -{ 0x0122, 0x0122, 0x0123 },
  20067. -{ 0x0123, 0x0122, 0x0123 },
  20068. -{ 0x0124, 0x0124, 0x0125 },
  20069. -{ 0x0125, 0x0124, 0x0125 },
  20070. -{ 0x0126, 0x0126, 0x0127 },
  20071. -{ 0x0127, 0x0126, 0x0127 },
  20072. -{ 0x0128, 0x0128, 0x0129 },
  20073. -{ 0x0129, 0x0128, 0x0129 },
  20074. -{ 0x012A, 0x012A, 0x012B },
  20075. -{ 0x012B, 0x012A, 0x012B },
  20076. -{ 0x012C, 0x012C, 0x012D },
  20077. -{ 0x012D, 0x012C, 0x012D },
  20078. -{ 0x012E, 0x012E, 0x012F },
  20079. -{ 0x012F, 0x012E, 0x012F },
  20080. -{ 0x0130, 0x0130, 0x0069 },
  20081. -{ 0x0131, 0x0049, 0x0131 },
  20082. -{ 0x0132, 0x0132, 0x0133 },
  20083. -{ 0x0133, 0x0132, 0x0133 },
  20084. -{ 0x0134, 0x0134, 0x0135 },
  20085. -{ 0x0135, 0x0134, 0x0135 },
  20086. -{ 0x0136, 0x0136, 0x0137 },
  20087. -{ 0x0137, 0x0136, 0x0137 },
  20088. -{ 0x0138, 0x0138, 0x0138 },
  20089. -{ 0x0139, 0x0139, 0x013A },
  20090. -{ 0x013A, 0x0139, 0x013A },
  20091. -{ 0x013B, 0x013B, 0x013C },
  20092. -{ 0x013C, 0x013B, 0x013C },
  20093. -{ 0x013D, 0x013D, 0x013E },
  20094. -{ 0x013E, 0x013D, 0x013E },
  20095. -{ 0x013F, 0x013F, 0x0140 },
  20096. -{ 0x0140, 0x013F, 0x0140 },
  20097. -{ 0x0141, 0x0141, 0x0142 },
  20098. -{ 0x0142, 0x0141, 0x0142 },
  20099. -{ 0x0143, 0x0143, 0x0144 },
  20100. -{ 0x0144, 0x0143, 0x0144 },
  20101. -{ 0x0145, 0x0145, 0x0146 },
  20102. -{ 0x0146, 0x0145, 0x0146 },
  20103. -{ 0x0147, 0x0147, 0x0148 },
  20104. -{ 0x0148, 0x0147, 0x0148 },
  20105. -{ 0x0149, 0x0149, 0x0149 },
  20106. -{ 0x014A, 0x014A, 0x014B },
  20107. -{ 0x014B, 0x014A, 0x014B },
  20108. -{ 0x014C, 0x014C, 0x014D },
  20109. -{ 0x014D, 0x014C, 0x014D },
  20110. -{ 0x014E, 0x014E, 0x014F },
  20111. -{ 0x014F, 0x014E, 0x014F },
  20112. -{ 0x0150, 0x0150, 0x0151 },
  20113. -{ 0x0151, 0x0150, 0x0151 },
  20114. -{ 0x0152, 0x0152, 0x0153 },
  20115. -{ 0x0153, 0x0152, 0x0153 },
  20116. -{ 0x0154, 0x0154, 0x0155 },
  20117. -{ 0x0155, 0x0154, 0x0155 },
  20118. -{ 0x0156, 0x0156, 0x0157 },
  20119. -{ 0x0157, 0x0156, 0x0157 },
  20120. -{ 0x0158, 0x0158, 0x0159 },
  20121. -{ 0x0159, 0x0158, 0x0159 },
  20122. -{ 0x015A, 0x015A, 0x015B },
  20123. -{ 0x015B, 0x015A, 0x015B },
  20124. -{ 0x015C, 0x015C, 0x015D },
  20125. -{ 0x015D, 0x015C, 0x015D },
  20126. -{ 0x015E, 0x015E, 0x015F },
  20127. -{ 0x015F, 0x015E, 0x015F },
  20128. -{ 0x0160, 0x0160, 0x0161 },
  20129. -{ 0x0161, 0x0160, 0x0161 },
  20130. -{ 0x0162, 0x0162, 0x0163 },
  20131. -{ 0x0163, 0x0162, 0x0163 },
  20132. -{ 0x0164, 0x0164, 0x0165 },
  20133. -{ 0x0165, 0x0164, 0x0165 },
  20134. -{ 0x0166, 0x0166, 0x0167 },
  20135. -{ 0x0167, 0x0166, 0x0167 },
  20136. -{ 0x0168, 0x0168, 0x0169 },
  20137. -{ 0x0169, 0x0168, 0x0169 },
  20138. -{ 0x016A, 0x016A, 0x016B },
  20139. -{ 0x016B, 0x016A, 0x016B },
  20140. -{ 0x016C, 0x016C, 0x016D },
  20141. -{ 0x016D, 0x016C, 0x016D },
  20142. -{ 0x016E, 0x016E, 0x016F },
  20143. -{ 0x016F, 0x016E, 0x016F },
  20144. -{ 0x0170, 0x0170, 0x0171 },
  20145. -{ 0x0171, 0x0170, 0x0171 },
  20146. -{ 0x0172, 0x0172, 0x0173 },
  20147. -{ 0x0173, 0x0172, 0x0173 },
  20148. -{ 0x0174, 0x0174, 0x0175 },
  20149. -{ 0x0175, 0x0174, 0x0175 },
  20150. -{ 0x0176, 0x0176, 0x0177 },
  20151. -{ 0x0177, 0x0176, 0x0177 },
  20152. -{ 0x0178, 0x0178, 0x00FF },
  20153. -{ 0x0179, 0x0179, 0x017A },
  20154. -{ 0x017A, 0x0179, 0x017A },
  20155. -{ 0x017B, 0x017B, 0x017C },
  20156. -{ 0x017C, 0x017B, 0x017C },
  20157. -{ 0x017D, 0x017D, 0x017E },
  20158. -{ 0x017E, 0x017D, 0x017E },
  20159. -{ 0x017F, 0x0053, 0x017F },
  20160. -{ 0x0180, 0x0180, 0x0180 },
  20161. -{ 0x0181, 0x0181, 0x0253 },
  20162. -{ 0x0182, 0x0182, 0x0183 },
  20163. -{ 0x0183, 0x0182, 0x0183 },
  20164. -{ 0x0184, 0x0184, 0x0185 },
  20165. -{ 0x0185, 0x0184, 0x0185 },
  20166. -{ 0x0186, 0x0186, 0x0254 },
  20167. -{ 0x0187, 0x0187, 0x0188 },
  20168. -{ 0x0188, 0x0187, 0x0188 },
  20169. -{ 0x0189, 0x0189, 0x0256 },
  20170. -{ 0x018A, 0x018A, 0x0257 },
  20171. -{ 0x018B, 0x018B, 0x018C },
  20172. -{ 0x018C, 0x018B, 0x018C },
  20173. -{ 0x018D, 0x018D, 0x018D },
  20174. -{ 0x018E, 0x018E, 0x01DD },
  20175. -{ 0x018F, 0x018F, 0x0259 },
  20176. -{ 0x0190, 0x0190, 0x025B },
  20177. -{ 0x0191, 0x0191, 0x0192 },
  20178. -{ 0x0192, 0x0191, 0x0192 },
  20179. -{ 0x0193, 0x0193, 0x0260 },
  20180. -{ 0x0194, 0x0194, 0x0263 },
  20181. -{ 0x0195, 0x01F6, 0x0195 },
  20182. -{ 0x0196, 0x0196, 0x0269 },
  20183. -{ 0x0197, 0x0197, 0x0268 },
  20184. -{ 0x0198, 0x0198, 0x0199 },
  20185. -{ 0x0199, 0x0198, 0x0199 },
  20186. -{ 0x019A, 0x023D, 0x019A },
  20187. -{ 0x019B, 0x019B, 0x019B },
  20188. -{ 0x019C, 0x019C, 0x026F },
  20189. -{ 0x019D, 0x019D, 0x0272 },
  20190. -{ 0x019E, 0x0220, 0x019E },
  20191. -{ 0x019F, 0x019F, 0x0275 },
  20192. -{ 0x01A0, 0x01A0, 0x01A1 },
  20193. -{ 0x01A1, 0x01A0, 0x01A1 },
  20194. -{ 0x01A2, 0x01A2, 0x01A3 },
  20195. -{ 0x01A3, 0x01A2, 0x01A3 },
  20196. -{ 0x01A4, 0x01A4, 0x01A5 },
  20197. -{ 0x01A5, 0x01A4, 0x01A5 },
  20198. -{ 0x01A6, 0x01A6, 0x0280 },
  20199. -{ 0x01A7, 0x01A7, 0x01A8 },
  20200. -{ 0x01A8, 0x01A7, 0x01A8 },
  20201. -{ 0x01A9, 0x01A9, 0x0283 },
  20202. -{ 0x01AA, 0x01AA, 0x01AA },
  20203. -{ 0x01AB, 0x01AB, 0x01AB },
  20204. -{ 0x01AC, 0x01AC, 0x01AD },
  20205. -{ 0x01AD, 0x01AC, 0x01AD },
  20206. -{ 0x01AE, 0x01AE, 0x0288 },
  20207. -{ 0x01AF, 0x01AF, 0x01B0 },
  20208. -{ 0x01B0, 0x01AF, 0x01B0 },
  20209. -{ 0x01B1, 0x01B1, 0x028A },
  20210. -{ 0x01B2, 0x01B2, 0x028B },
  20211. -{ 0x01B3, 0x01B3, 0x01B4 },
  20212. -{ 0x01B4, 0x01B3, 0x01B4 },
  20213. -{ 0x01B5, 0x01B5, 0x01B6 },
  20214. -{ 0x01B6, 0x01B5, 0x01B6 },
  20215. -{ 0x01B7, 0x01B7, 0x0292 },
  20216. -{ 0x01B8, 0x01B8, 0x01B9 },
  20217. -{ 0x01B9, 0x01B8, 0x01B9 },
  20218. -{ 0x01BA, 0x01BA, 0x01BA },
  20219. -{ 0x01BB, 0x01BB, 0x01BB },
  20220. -{ 0x01BC, 0x01BC, 0x01BD },
  20221. -{ 0x01BD, 0x01BC, 0x01BD },
  20222. -{ 0x01BE, 0x01BE, 0x01BE },
  20223. -{ 0x01BF, 0x01F7, 0x01BF },
  20224. -{ 0x01C0, 0x01C0, 0x01C0 },
  20225. -{ 0x01C1, 0x01C1, 0x01C1 },
  20226. -{ 0x01C2, 0x01C2, 0x01C2 },
  20227. -{ 0x01C3, 0x01C3, 0x01C3 },
  20228. -{ 0x01C4, 0x01C4, 0x01C6 },
  20229. -{ 0x01C5, 0x01C4, 0x01C6 },
  20230. -{ 0x01C6, 0x01C4, 0x01C6 },
  20231. -{ 0x01C7, 0x01C7, 0x01C9 },
  20232. -{ 0x01C8, 0x01C7, 0x01C9 },
  20233. -{ 0x01C9, 0x01C7, 0x01C9 },
  20234. -{ 0x01CA, 0x01CA, 0x01CC },
  20235. -{ 0x01CB, 0x01CA, 0x01CC },
  20236. -{ 0x01CC, 0x01CA, 0x01CC },
  20237. -{ 0x01CD, 0x01CD, 0x01CE },
  20238. -{ 0x01CE, 0x01CD, 0x01CE },
  20239. -{ 0x01CF, 0x01CF, 0x01D0 },
  20240. -{ 0x01D0, 0x01CF, 0x01D0 },
  20241. -{ 0x01D1, 0x01D1, 0x01D2 },
  20242. -{ 0x01D2, 0x01D1, 0x01D2 },
  20243. -{ 0x01D3, 0x01D3, 0x01D4 },
  20244. -{ 0x01D4, 0x01D3, 0x01D4 },
  20245. -{ 0x01D5, 0x01D5, 0x01D6 },
  20246. -{ 0x01D6, 0x01D5, 0x01D6 },
  20247. -{ 0x01D7, 0x01D7, 0x01D8 },
  20248. -{ 0x01D8, 0x01D7, 0x01D8 },
  20249. -{ 0x01D9, 0x01D9, 0x01DA },
  20250. -{ 0x01DA, 0x01D9, 0x01DA },
  20251. -{ 0x01DB, 0x01DB, 0x01DC },
  20252. -{ 0x01DC, 0x01DB, 0x01DC },
  20253. -{ 0x01DD, 0x018E, 0x01DD },
  20254. -{ 0x01DE, 0x01DE, 0x01DF },
  20255. -{ 0x01DF, 0x01DE, 0x01DF },
  20256. -{ 0x01E0, 0x01E0, 0x01E1 },
  20257. -{ 0x01E1, 0x01E0, 0x01E1 },
  20258. -{ 0x01E2, 0x01E2, 0x01E3 },
  20259. -{ 0x01E3, 0x01E2, 0x01E3 },
  20260. -{ 0x01E4, 0x01E4, 0x01E5 },
  20261. -{ 0x01E5, 0x01E4, 0x01E5 },
  20262. -{ 0x01E6, 0x01E6, 0x01E7 },
  20263. -{ 0x01E7, 0x01E6, 0x01E7 },
  20264. -{ 0x01E8, 0x01E8, 0x01E9 },
  20265. -{ 0x01E9, 0x01E8, 0x01E9 },
  20266. -{ 0x01EA, 0x01EA, 0x01EB },
  20267. -{ 0x01EB, 0x01EA, 0x01EB },
  20268. -{ 0x01EC, 0x01EC, 0x01ED },
  20269. -{ 0x01ED, 0x01EC, 0x01ED },
  20270. -{ 0x01EE, 0x01EE, 0x01EF },
  20271. -{ 0x01EF, 0x01EE, 0x01EF },
  20272. -{ 0x01F0, 0x01F0, 0x01F0 },
  20273. -{ 0x01F1, 0x01F1, 0x01F3 },
  20274. -{ 0x01F2, 0x01F1, 0x01F3 },
  20275. -{ 0x01F3, 0x01F1, 0x01F3 },
  20276. -{ 0x01F4, 0x01F4, 0x01F5 },
  20277. -{ 0x01F5, 0x01F4, 0x01F5 },
  20278. -{ 0x01F6, 0x01F6, 0x0195 },
  20279. -{ 0x01F7, 0x01F7, 0x01BF },
  20280. -{ 0x01F8, 0x01F8, 0x01F9 },
  20281. -{ 0x01F9, 0x01F8, 0x01F9 },
  20282. -{ 0x01FA, 0x01FA, 0x01FB },
  20283. -{ 0x01FB, 0x01FA, 0x01FB },
  20284. -{ 0x01FC, 0x01FC, 0x01FD },
  20285. -{ 0x01FD, 0x01FC, 0x01FD },
  20286. -{ 0x01FE, 0x01FE, 0x01FF },
  20287. -{ 0x01FF, 0x01FE, 0x01FF },
  20288. -{ 0x0200, 0x0200, 0x0201 },
  20289. -{ 0x0201, 0x0200, 0x0201 },
  20290. -{ 0x0202, 0x0202, 0x0203 },
  20291. -{ 0x0203, 0x0202, 0x0203 },
  20292. -{ 0x0204, 0x0204, 0x0205 },
  20293. -{ 0x0205, 0x0204, 0x0205 },
  20294. -{ 0x0206, 0x0206, 0x0207 },
  20295. -{ 0x0207, 0x0206, 0x0207 },
  20296. -{ 0x0208, 0x0208, 0x0209 },
  20297. -{ 0x0209, 0x0208, 0x0209 },
  20298. -{ 0x020A, 0x020A, 0x020B },
  20299. -{ 0x020B, 0x020A, 0x020B },
  20300. -{ 0x020C, 0x020C, 0x020D },
  20301. -{ 0x020D, 0x020C, 0x020D },
  20302. -{ 0x020E, 0x020E, 0x020F },
  20303. -{ 0x020F, 0x020E, 0x020F },
  20304. -{ 0x0210, 0x0210, 0x0211 },
  20305. -{ 0x0211, 0x0210, 0x0211 },
  20306. -{ 0x0212, 0x0212, 0x0213 },
  20307. -{ 0x0213, 0x0212, 0x0213 },
  20308. -{ 0x0214, 0x0214, 0x0215 },
  20309. -{ 0x0215, 0x0214, 0x0215 },
  20310. -{ 0x0216, 0x0216, 0x0217 },
  20311. -{ 0x0217, 0x0216, 0x0217 },
  20312. -{ 0x0218, 0x0218, 0x0219 },
  20313. -{ 0x0219, 0x0218, 0x0219 },
  20314. -{ 0x021A, 0x021A, 0x021B },
  20315. -{ 0x021B, 0x021A, 0x021B },
  20316. -{ 0x021C, 0x021C, 0x021D },
  20317. -{ 0x021D, 0x021C, 0x021D },
  20318. -{ 0x021E, 0x021E, 0x021F },
  20319. -{ 0x021F, 0x021E, 0x021F },
  20320. -{ 0x0220, 0x0220, 0x019E },
  20321. -{ 0x0221, 0x0221, 0x0221 },
  20322. -{ 0x0222, 0x0222, 0x0223 },
  20323. -{ 0x0223, 0x0222, 0x0223 },
  20324. -{ 0x0224, 0x0224, 0x0225 },
  20325. -{ 0x0225, 0x0224, 0x0225 },
  20326. -{ 0x0226, 0x0226, 0x0227 },
  20327. -{ 0x0227, 0x0226, 0x0227 },
  20328. -{ 0x0228, 0x0228, 0x0229 },
  20329. -{ 0x0229, 0x0228, 0x0229 },
  20330. -{ 0x022A, 0x022A, 0x022B },
  20331. -{ 0x022B, 0x022A, 0x022B },
  20332. -{ 0x022C, 0x022C, 0x022D },
  20333. -{ 0x022D, 0x022C, 0x022D },
  20334. -{ 0x022E, 0x022E, 0x022F },
  20335. -{ 0x022F, 0x022E, 0x022F },
  20336. -{ 0x0230, 0x0230, 0x0231 },
  20337. -{ 0x0231, 0x0230, 0x0231 },
  20338. -{ 0x0232, 0x0232, 0x0233 },
  20339. -{ 0x0233, 0x0232, 0x0233 },
  20340. -{ 0x0234, 0x0234, 0x0234 },
  20341. -{ 0x0235, 0x0235, 0x0235 },
  20342. -{ 0x0236, 0x0236, 0x0236 },
  20343. -{ 0x0237, 0x0237, 0x0237 },
  20344. -{ 0x0238, 0x0238, 0x0238 },
  20345. -{ 0x0239, 0x0239, 0x0239 },
  20346. -{ 0x023A, 0x023A, 0x023A },
  20347. -{ 0x023B, 0x023B, 0x023C },
  20348. -{ 0x023C, 0x023B, 0x023C },
  20349. -{ 0x023D, 0x023D, 0x019A },
  20350. -{ 0x023E, 0x023E, 0x023E },
  20351. -{ 0x023F, 0x023F, 0x023F },
  20352. -{ 0x0240, 0x0240, 0x0240 },
  20353. -{ 0x0241, 0x0241, 0x0294 },
  20354. -{ 0x0250, 0x0250, 0x0250 },
  20355. -{ 0x0251, 0x0251, 0x0251 },
  20356. -{ 0x0252, 0x0252, 0x0252 },
  20357. -{ 0x0253, 0x0181, 0x0253 },
  20358. -{ 0x0254, 0x0186, 0x0254 },
  20359. -{ 0x0255, 0x0255, 0x0255 },
  20360. -{ 0x0256, 0x0189, 0x0256 },
  20361. -{ 0x0257, 0x018A, 0x0257 },
  20362. -{ 0x0258, 0x0258, 0x0258 },
  20363. -{ 0x0259, 0x018F, 0x0259 },
  20364. -{ 0x025A, 0x025A, 0x025A },
  20365. -{ 0x025B, 0x0190, 0x025B },
  20366. -{ 0x025C, 0x025C, 0x025C },
  20367. -{ 0x025D, 0x025D, 0x025D },
  20368. -{ 0x025E, 0x025E, 0x025E },
  20369. -{ 0x025F, 0x025F, 0x025F },
  20370. -{ 0x0260, 0x0193, 0x0260 },
  20371. -{ 0x0261, 0x0261, 0x0261 },
  20372. -{ 0x0262, 0x0262, 0x0262 },
  20373. -{ 0x0263, 0x0194, 0x0263 },
  20374. -{ 0x0264, 0x0264, 0x0264 },
  20375. -{ 0x0265, 0x0265, 0x0265 },
  20376. -{ 0x0266, 0x0266, 0x0266 },
  20377. -{ 0x0267, 0x0267, 0x0267 },
  20378. -{ 0x0268, 0x0197, 0x0268 },
  20379. -{ 0x0269, 0x0196, 0x0269 },
  20380. -{ 0x026A, 0x026A, 0x026A },
  20381. -{ 0x026B, 0x026B, 0x026B },
  20382. -{ 0x026C, 0x026C, 0x026C },
  20383. -{ 0x026D, 0x026D, 0x026D },
  20384. -{ 0x026E, 0x026E, 0x026E },
  20385. -{ 0x026F, 0x019C, 0x026F },
  20386. -{ 0x0270, 0x0270, 0x0270 },
  20387. -{ 0x0271, 0x0271, 0x0271 },
  20388. -{ 0x0272, 0x019D, 0x0272 },
  20389. -{ 0x0273, 0x0273, 0x0273 },
  20390. -{ 0x0274, 0x0274, 0x0274 },
  20391. -{ 0x0275, 0x019F, 0x0275 },
  20392. -{ 0x0276, 0x0276, 0x0276 },
  20393. -{ 0x0277, 0x0277, 0x0277 },
  20394. -{ 0x0278, 0x0278, 0x0278 },
  20395. -{ 0x0279, 0x0279, 0x0279 },
  20396. -{ 0x027A, 0x027A, 0x027A },
  20397. -{ 0x027B, 0x027B, 0x027B },
  20398. -{ 0x027C, 0x027C, 0x027C },
  20399. -{ 0x027D, 0x027D, 0x027D },
  20400. -{ 0x027E, 0x027E, 0x027E },
  20401. -{ 0x027F, 0x027F, 0x027F },
  20402. -{ 0x0280, 0x01A6, 0x0280 },
  20403. -{ 0x0281, 0x0281, 0x0281 },
  20404. -{ 0x0282, 0x0282, 0x0282 },
  20405. -{ 0x0283, 0x01A9, 0x0283 },
  20406. -{ 0x0284, 0x0284, 0x0284 },
  20407. -{ 0x0285, 0x0285, 0x0285 },
  20408. -{ 0x0286, 0x0286, 0x0286 },
  20409. -{ 0x0287, 0x0287, 0x0287 },
  20410. -{ 0x0288, 0x01AE, 0x0288 },
  20411. -{ 0x0289, 0x0289, 0x0289 },
  20412. -{ 0x028A, 0x01B1, 0x028A },
  20413. -{ 0x028B, 0x01B2, 0x028B },
  20414. -{ 0x028C, 0x028C, 0x028C },
  20415. -{ 0x028D, 0x028D, 0x028D },
  20416. -{ 0x028E, 0x028E, 0x028E },
  20417. -{ 0x028F, 0x028F, 0x028F },
  20418. -{ 0x0290, 0x0290, 0x0290 },
  20419. -{ 0x0291, 0x0291, 0x0291 },
  20420. -{ 0x0292, 0x01B7, 0x0292 },
  20421. -{ 0x0293, 0x0293, 0x0293 },
  20422. -{ 0x0294, 0x0241, 0x0294 },
  20423. -{ 0x0295, 0x0295, 0x0295 },
  20424. -{ 0x0296, 0x0296, 0x0296 },
  20425. -{ 0x0297, 0x0297, 0x0297 },
  20426. -{ 0x0298, 0x0298, 0x0298 },
  20427. -{ 0x0299, 0x0299, 0x0299 },
  20428. -{ 0x029A, 0x029A, 0x029A },
  20429. -{ 0x029B, 0x029B, 0x029B },
  20430. -{ 0x029C, 0x029C, 0x029C },
  20431. -{ 0x029D, 0x029D, 0x029D },
  20432. -{ 0x029E, 0x029E, 0x029E },
  20433. -{ 0x029F, 0x029F, 0x029F },
  20434. -{ 0x02A0, 0x02A0, 0x02A0 },
  20435. -{ 0x02A1, 0x02A1, 0x02A1 },
  20436. -{ 0x02A2, 0x02A2, 0x02A2 },
  20437. -{ 0x02A3, 0x02A3, 0x02A3 },
  20438. -{ 0x02A4, 0x02A4, 0x02A4 },
  20439. -{ 0x02A5, 0x02A5, 0x02A5 },
  20440. -{ 0x02A6, 0x02A6, 0x02A6 },
  20441. -{ 0x02A7, 0x02A7, 0x02A7 },
  20442. -{ 0x02A8, 0x02A8, 0x02A8 },
  20443. -{ 0x02A9, 0x02A9, 0x02A9 },
  20444. -{ 0x02AA, 0x02AA, 0x02AA },
  20445. -{ 0x02AB, 0x02AB, 0x02AB },
  20446. -{ 0x02AC, 0x02AC, 0x02AC },
  20447. -{ 0x02AD, 0x02AD, 0x02AD },
  20448. -{ 0x02AE, 0x02AE, 0x02AE },
  20449. -{ 0x02AF, 0x02AF, 0x02AF },
  20450. -{ 0x02B0, 0x02B0, 0x02B0 },
  20451. -{ 0x02B1, 0x02B1, 0x02B1 },
  20452. -{ 0x02B2, 0x02B2, 0x02B2 },
  20453. -{ 0x02B3, 0x02B3, 0x02B3 },
  20454. -{ 0x02B4, 0x02B4, 0x02B4 },
  20455. -{ 0x02B5, 0x02B5, 0x02B5 },
  20456. -{ 0x02B6, 0x02B6, 0x02B6 },
  20457. -{ 0x02B7, 0x02B7, 0x02B7 },
  20458. -{ 0x02B8, 0x02B8, 0x02B8 },
  20459. -{ 0x02B9, 0x02B9, 0x02B9 },
  20460. -{ 0x02BA, 0x02BA, 0x02BA },
  20461. -{ 0x02BB, 0x02BB, 0x02BB },
  20462. -{ 0x02BC, 0x02BC, 0x02BC },
  20463. -{ 0x02BD, 0x02BD, 0x02BD },
  20464. -{ 0x02BE, 0x02BE, 0x02BE },
  20465. -{ 0x02BF, 0x02BF, 0x02BF },
  20466. -{ 0x02C0, 0x02C0, 0x02C0 },
  20467. -{ 0x02C1, 0x02C1, 0x02C1 },
  20468. -{ 0x02C6, 0x02C6, 0x02C6 },
  20469. -{ 0x02C7, 0x02C7, 0x02C7 },
  20470. -{ 0x02C8, 0x02C8, 0x02C8 },
  20471. -{ 0x02C9, 0x02C9, 0x02C9 },
  20472. -{ 0x02CA, 0x02CA, 0x02CA },
  20473. -{ 0x02CB, 0x02CB, 0x02CB },
  20474. -{ 0x02CC, 0x02CC, 0x02CC },
  20475. -{ 0x02CD, 0x02CD, 0x02CD },
  20476. -{ 0x02CE, 0x02CE, 0x02CE },
  20477. -{ 0x02CF, 0x02CF, 0x02CF },
  20478. -{ 0x02D0, 0x02D0, 0x02D0 },
  20479. -{ 0x02D1, 0x02D1, 0x02D1 },
  20480. -{ 0x02E0, 0x02E0, 0x02E0 },
  20481. -{ 0x02E1, 0x02E1, 0x02E1 },
  20482. -{ 0x02E2, 0x02E2, 0x02E2 },
  20483. -{ 0x02E3, 0x02E3, 0x02E3 },
  20484. -{ 0x02E4, 0x02E4, 0x02E4 },
  20485. -{ 0x02EE, 0x02EE, 0x02EE },
  20486. -{ 0x0300, 0x0300, 0x0300 },
  20487. -{ 0x0301, 0x0301, 0x0301 },
  20488. -{ 0x0302, 0x0302, 0x0302 },
  20489. -{ 0x0303, 0x0303, 0x0303 },
  20490. -{ 0x0304, 0x0304, 0x0304 },
  20491. -{ 0x0305, 0x0305, 0x0305 },
  20492. -{ 0x0306, 0x0306, 0x0306 },
  20493. -{ 0x0307, 0x0307, 0x0307 },
  20494. -{ 0x0308, 0x0308, 0x0308 },
  20495. -{ 0x0309, 0x0309, 0x0309 },
  20496. -{ 0x030A, 0x030A, 0x030A },
  20497. -{ 0x030B, 0x030B, 0x030B },
  20498. -{ 0x030C, 0x030C, 0x030C },
  20499. -{ 0x030D, 0x030D, 0x030D },
  20500. -{ 0x030E, 0x030E, 0x030E },
  20501. -{ 0x030F, 0x030F, 0x030F },
  20502. -{ 0x0310, 0x0310, 0x0310 },
  20503. -{ 0x0311, 0x0311, 0x0311 },
  20504. -{ 0x0312, 0x0312, 0x0312 },
  20505. -{ 0x0313, 0x0313, 0x0313 },
  20506. -{ 0x0314, 0x0314, 0x0314 },
  20507. -{ 0x0315, 0x0315, 0x0315 },
  20508. -{ 0x0316, 0x0316, 0x0316 },
  20509. -{ 0x0317, 0x0317, 0x0317 },
  20510. -{ 0x0318, 0x0318, 0x0318 },
  20511. -{ 0x0319, 0x0319, 0x0319 },
  20512. -{ 0x031A, 0x031A, 0x031A },
  20513. -{ 0x031B, 0x031B, 0x031B },
  20514. -{ 0x031C, 0x031C, 0x031C },
  20515. -{ 0x031D, 0x031D, 0x031D },
  20516. -{ 0x031E, 0x031E, 0x031E },
  20517. -{ 0x031F, 0x031F, 0x031F },
  20518. -{ 0x0320, 0x0320, 0x0320 },
  20519. -{ 0x0321, 0x0321, 0x0321 },
  20520. -{ 0x0322, 0x0322, 0x0322 },
  20521. -{ 0x0323, 0x0323, 0x0323 },
  20522. -{ 0x0324, 0x0324, 0x0324 },
  20523. -{ 0x0325, 0x0325, 0x0325 },
  20524. -{ 0x0326, 0x0326, 0x0326 },
  20525. -{ 0x0327, 0x0327, 0x0327 },
  20526. -{ 0x0328, 0x0328, 0x0328 },
  20527. -{ 0x0329, 0x0329, 0x0329 },
  20528. -{ 0x032A, 0x032A, 0x032A },
  20529. -{ 0x032B, 0x032B, 0x032B },
  20530. -{ 0x032C, 0x032C, 0x032C },
  20531. -{ 0x032D, 0x032D, 0x032D },
  20532. -{ 0x032E, 0x032E, 0x032E },
  20533. -{ 0x032F, 0x032F, 0x032F },
  20534. -{ 0x0330, 0x0330, 0x0330 },
  20535. -{ 0x0331, 0x0331, 0x0331 },
  20536. -{ 0x0332, 0x0332, 0x0332 },
  20537. -{ 0x0333, 0x0333, 0x0333 },
  20538. -{ 0x0334, 0x0334, 0x0334 },
  20539. -{ 0x0335, 0x0335, 0x0335 },
  20540. -{ 0x0336, 0x0336, 0x0336 },
  20541. -{ 0x0337, 0x0337, 0x0337 },
  20542. -{ 0x0338, 0x0338, 0x0338 },
  20543. -{ 0x0339, 0x0339, 0x0339 },
  20544. -{ 0x033A, 0x033A, 0x033A },
  20545. -{ 0x033B, 0x033B, 0x033B },
  20546. -{ 0x033C, 0x033C, 0x033C },
  20547. -{ 0x033D, 0x033D, 0x033D },
  20548. -{ 0x033E, 0x033E, 0x033E },
  20549. -{ 0x033F, 0x033F, 0x033F },
  20550. -{ 0x0340, 0x0340, 0x0340 },
  20551. -{ 0x0341, 0x0341, 0x0341 },
  20552. -{ 0x0342, 0x0342, 0x0342 },
  20553. -{ 0x0343, 0x0343, 0x0343 },
  20554. -{ 0x0344, 0x0344, 0x0344 },
  20555. -{ 0x0345, 0x0399, 0x0345 },
  20556. -{ 0x0346, 0x0346, 0x0346 },
  20557. -{ 0x0347, 0x0347, 0x0347 },
  20558. -{ 0x0348, 0x0348, 0x0348 },
  20559. -{ 0x0349, 0x0349, 0x0349 },
  20560. -{ 0x034A, 0x034A, 0x034A },
  20561. -{ 0x034B, 0x034B, 0x034B },
  20562. -{ 0x034C, 0x034C, 0x034C },
  20563. -{ 0x034D, 0x034D, 0x034D },
  20564. -{ 0x034E, 0x034E, 0x034E },
  20565. -{ 0x034F, 0x034F, 0x034F },
  20566. -{ 0x0350, 0x0350, 0x0350 },
  20567. -{ 0x0351, 0x0351, 0x0351 },
  20568. -{ 0x0352, 0x0352, 0x0352 },
  20569. -{ 0x0353, 0x0353, 0x0353 },
  20570. -{ 0x0354, 0x0354, 0x0354 },
  20571. -{ 0x0355, 0x0355, 0x0355 },
  20572. -{ 0x0356, 0x0356, 0x0356 },
  20573. -{ 0x0357, 0x0357, 0x0357 },
  20574. -{ 0x0358, 0x0358, 0x0358 },
  20575. -{ 0x0359, 0x0359, 0x0359 },
  20576. -{ 0x035A, 0x035A, 0x035A },
  20577. -{ 0x035B, 0x035B, 0x035B },
  20578. -{ 0x035C, 0x035C, 0x035C },
  20579. -{ 0x035D, 0x035D, 0x035D },
  20580. -{ 0x035E, 0x035E, 0x035E },
  20581. -{ 0x035F, 0x035F, 0x035F },
  20582. -{ 0x0360, 0x0360, 0x0360 },
  20583. -{ 0x0361, 0x0361, 0x0361 },
  20584. -{ 0x0362, 0x0362, 0x0362 },
  20585. -{ 0x0363, 0x0363, 0x0363 },
  20586. -{ 0x0364, 0x0364, 0x0364 },
  20587. -{ 0x0365, 0x0365, 0x0365 },
  20588. -{ 0x0366, 0x0366, 0x0366 },
  20589. -{ 0x0367, 0x0367, 0x0367 },
  20590. -{ 0x0368, 0x0368, 0x0368 },
  20591. -{ 0x0369, 0x0369, 0x0369 },
  20592. -{ 0x036A, 0x036A, 0x036A },
  20593. -{ 0x036B, 0x036B, 0x036B },
  20594. -{ 0x036C, 0x036C, 0x036C },
  20595. -{ 0x036D, 0x036D, 0x036D },
  20596. -{ 0x036E, 0x036E, 0x036E },
  20597. -{ 0x036F, 0x036F, 0x036F },
  20598. -{ 0x037A, 0x037A, 0x037A },
  20599. -{ 0x0386, 0x0386, 0x03AC },
  20600. -{ 0x0388, 0x0388, 0x03AD },
  20601. -{ 0x0389, 0x0389, 0x03AE },
  20602. -{ 0x038A, 0x038A, 0x03AF },
  20603. -{ 0x038C, 0x038C, 0x03CC },
  20604. -{ 0x038E, 0x038E, 0x03CD },
  20605. -{ 0x038F, 0x038F, 0x03CE },
  20606. -{ 0x0390, 0x0390, 0x0390 },
  20607. -{ 0x0391, 0x0391, 0x03B1 },
  20608. -{ 0x0392, 0x0392, 0x03B2 },
  20609. -{ 0x0393, 0x0393, 0x03B3 },
  20610. -{ 0x0394, 0x0394, 0x03B4 },
  20611. -{ 0x0395, 0x0395, 0x03B5 },
  20612. -{ 0x0396, 0x0396, 0x03B6 },
  20613. -{ 0x0397, 0x0397, 0x03B7 },
  20614. -{ 0x0398, 0x0398, 0x03B8 },
  20615. -{ 0x0399, 0x0399, 0x03B9 },
  20616. -{ 0x039A, 0x039A, 0x03BA },
  20617. -{ 0x039B, 0x039B, 0x03BB },
  20618. -{ 0x039C, 0x039C, 0x03BC },
  20619. -{ 0x039D, 0x039D, 0x03BD },
  20620. -{ 0x039E, 0x039E, 0x03BE },
  20621. -{ 0x039F, 0x039F, 0x03BF },
  20622. -{ 0x03A0, 0x03A0, 0x03C0 },
  20623. -{ 0x03A1, 0x03A1, 0x03C1 },
  20624. -{ 0x03A3, 0x03A3, 0x03C3 },
  20625. -{ 0x03A4, 0x03A4, 0x03C4 },
  20626. -{ 0x03A5, 0x03A5, 0x03C5 },
  20627. -{ 0x03A6, 0x03A6, 0x03C6 },
  20628. -{ 0x03A7, 0x03A7, 0x03C7 },
  20629. -{ 0x03A8, 0x03A8, 0x03C8 },
  20630. -{ 0x03A9, 0x03A9, 0x03C9 },
  20631. -{ 0x03AA, 0x03AA, 0x03CA },
  20632. -{ 0x03AB, 0x03AB, 0x03CB },
  20633. -{ 0x03AC, 0x0386, 0x03AC },
  20634. -{ 0x03AD, 0x0388, 0x03AD },
  20635. -{ 0x03AE, 0x0389, 0x03AE },
  20636. -{ 0x03AF, 0x038A, 0x03AF },
  20637. -{ 0x03B0, 0x03B0, 0x03B0 },
  20638. -{ 0x03B1, 0x0391, 0x03B1 },
  20639. -{ 0x03B2, 0x0392, 0x03B2 },
  20640. -{ 0x03B3, 0x0393, 0x03B3 },
  20641. -{ 0x03B4, 0x0394, 0x03B4 },
  20642. -{ 0x03B5, 0x0395, 0x03B5 },
  20643. -{ 0x03B6, 0x0396, 0x03B6 },
  20644. -{ 0x03B7, 0x0397, 0x03B7 },
  20645. -{ 0x03B8, 0x0398, 0x03B8 },
  20646. -{ 0x03B9, 0x0399, 0x03B9 },
  20647. -{ 0x03BA, 0x039A, 0x03BA },
  20648. -{ 0x03BB, 0x039B, 0x03BB },
  20649. -{ 0x03BC, 0x039C, 0x03BC },
  20650. -{ 0x03BD, 0x039D, 0x03BD },
  20651. -{ 0x03BE, 0x039E, 0x03BE },
  20652. -{ 0x03BF, 0x039F, 0x03BF },
  20653. -{ 0x03C0, 0x03A0, 0x03C0 },
  20654. -{ 0x03C1, 0x03A1, 0x03C1 },
  20655. -{ 0x03C2, 0x03A3, 0x03C2 },
  20656. -{ 0x03C3, 0x03A3, 0x03C3 },
  20657. -{ 0x03C4, 0x03A4, 0x03C4 },
  20658. -{ 0x03C5, 0x03A5, 0x03C5 },
  20659. -{ 0x03C6, 0x03A6, 0x03C6 },
  20660. -{ 0x03C7, 0x03A7, 0x03C7 },
  20661. -{ 0x03C8, 0x03A8, 0x03C8 },
  20662. -{ 0x03C9, 0x03A9, 0x03C9 },
  20663. -{ 0x03CA, 0x03AA, 0x03CA },
  20664. -{ 0x03CB, 0x03AB, 0x03CB },
  20665. -{ 0x03CC, 0x038C, 0x03CC },
  20666. -{ 0x03CD, 0x038E, 0x03CD },
  20667. -{ 0x03CE, 0x038F, 0x03CE },
  20668. -{ 0x03D0, 0x0392, 0x03D0 },
  20669. -{ 0x03D1, 0x0398, 0x03D1 },
  20670. -{ 0x03D2, 0x03D2, 0x03D2 },
  20671. -{ 0x03D3, 0x03D3, 0x03D3 },
  20672. -{ 0x03D4, 0x03D4, 0x03D4 },
  20673. -{ 0x03D5, 0x03A6, 0x03D5 },
  20674. -{ 0x03D6, 0x03A0, 0x03D6 },
  20675. -{ 0x03D7, 0x03D7, 0x03D7 },
  20676. -{ 0x03D8, 0x03D8, 0x03D9 },
  20677. -{ 0x03D9, 0x03D8, 0x03D9 },
  20678. -{ 0x03DA, 0x03DA, 0x03DB },
  20679. -{ 0x03DB, 0x03DA, 0x03DB },
  20680. -{ 0x03DC, 0x03DC, 0x03DD },
  20681. -{ 0x03DD, 0x03DC, 0x03DD },
  20682. -{ 0x03DE, 0x03DE, 0x03DF },
  20683. -{ 0x03DF, 0x03DE, 0x03DF },
  20684. -{ 0x03E0, 0x03E0, 0x03E1 },
  20685. -{ 0x03E1, 0x03E0, 0x03E1 },
  20686. -{ 0x03E2, 0x03E2, 0x03E3 },
  20687. -{ 0x03E3, 0x03E2, 0x03E3 },
  20688. -{ 0x03E4, 0x03E4, 0x03E5 },
  20689. -{ 0x03E5, 0x03E4, 0x03E5 },
  20690. -{ 0x03E6, 0x03E6, 0x03E7 },
  20691. -{ 0x03E7, 0x03E6, 0x03E7 },
  20692. -{ 0x03E8, 0x03E8, 0x03E9 },
  20693. -{ 0x03E9, 0x03E8, 0x03E9 },
  20694. -{ 0x03EA, 0x03EA, 0x03EB },
  20695. -{ 0x03EB, 0x03EA, 0x03EB },
  20696. -{ 0x03EC, 0x03EC, 0x03ED },
  20697. -{ 0x03ED, 0x03EC, 0x03ED },
  20698. -{ 0x03EE, 0x03EE, 0x03EF },
  20699. -{ 0x03EF, 0x03EE, 0x03EF },
  20700. -{ 0x03F0, 0x039A, 0x03F0 },
  20701. -{ 0x03F1, 0x03A1, 0x03F1 },
  20702. -{ 0x03F2, 0x03F9, 0x03F2 },
  20703. -{ 0x03F3, 0x03F3, 0x03F3 },
  20704. -{ 0x03F4, 0x03F4, 0x03B8 },
  20705. -{ 0x03F5, 0x0395, 0x03F5 },
  20706. -{ 0x03F7, 0x03F7, 0x03F8 },
  20707. -{ 0x03F8, 0x03F7, 0x03F8 },
  20708. -{ 0x03F9, 0x03F9, 0x03F2 },
  20709. -{ 0x03FA, 0x03FA, 0x03FB },
  20710. -{ 0x03FB, 0x03FA, 0x03FB },
  20711. -{ 0x03FC, 0x03FC, 0x03FC },
  20712. -{ 0x03FD, 0x03FD, 0x03FD },
  20713. -{ 0x03FE, 0x03FE, 0x03FE },
  20714. -{ 0x03FF, 0x03FF, 0x03FF },
  20715. -{ 0x0400, 0x0400, 0x0450 },
  20716. -{ 0x0401, 0x0401, 0x0451 },
  20717. -{ 0x0402, 0x0402, 0x0452 },
  20718. -{ 0x0403, 0x0403, 0x0453 },
  20719. -{ 0x0404, 0x0404, 0x0454 },
  20720. -{ 0x0405, 0x0405, 0x0455 },
  20721. -{ 0x0406, 0x0406, 0x0456 },
  20722. -{ 0x0407, 0x0407, 0x0457 },
  20723. -{ 0x0408, 0x0408, 0x0458 },
  20724. -{ 0x0409, 0x0409, 0x0459 },
  20725. -{ 0x040A, 0x040A, 0x045A },
  20726. -{ 0x040B, 0x040B, 0x045B },
  20727. -{ 0x040C, 0x040C, 0x045C },
  20728. -{ 0x040D, 0x040D, 0x045D },
  20729. -{ 0x040E, 0x040E, 0x045E },
  20730. -{ 0x040F, 0x040F, 0x045F },
  20731. -{ 0x0410, 0x0410, 0x0430 },
  20732. -{ 0x0411, 0x0411, 0x0431 },
  20733. -{ 0x0412, 0x0412, 0x0432 },
  20734. -{ 0x0413, 0x0413, 0x0433 },
  20735. -{ 0x0414, 0x0414, 0x0434 },
  20736. -{ 0x0415, 0x0415, 0x0435 },
  20737. -{ 0x0416, 0x0416, 0x0436 },
  20738. -{ 0x0417, 0x0417, 0x0437 },
  20739. -{ 0x0418, 0x0418, 0x0438 },
  20740. -{ 0x0419, 0x0419, 0x0439 },
  20741. -{ 0x041A, 0x041A, 0x043A },
  20742. -{ 0x041B, 0x041B, 0x043B },
  20743. -{ 0x041C, 0x041C, 0x043C },
  20744. -{ 0x041D, 0x041D, 0x043D },
  20745. -{ 0x041E, 0x041E, 0x043E },
  20746. -{ 0x041F, 0x041F, 0x043F },
  20747. -{ 0x0420, 0x0420, 0x0440 },
  20748. -{ 0x0421, 0x0421, 0x0441 },
  20749. -{ 0x0422, 0x0422, 0x0442 },
  20750. -{ 0x0423, 0x0423, 0x0443 },
  20751. -{ 0x0424, 0x0424, 0x0444 },
  20752. -{ 0x0425, 0x0425, 0x0445 },
  20753. -{ 0x0426, 0x0426, 0x0446 },
  20754. -{ 0x0427, 0x0427, 0x0447 },
  20755. -{ 0x0428, 0x0428, 0x0448 },
  20756. -{ 0x0429, 0x0429, 0x0449 },
  20757. -{ 0x042A, 0x042A, 0x044A },
  20758. -{ 0x042B, 0x042B, 0x044B },
  20759. -{ 0x042C, 0x042C, 0x044C },
  20760. -{ 0x042D, 0x042D, 0x044D },
  20761. -{ 0x042E, 0x042E, 0x044E },
  20762. -{ 0x042F, 0x042F, 0x044F },
  20763. -{ 0x0430, 0x0410, 0x0430 },
  20764. -{ 0x0431, 0x0411, 0x0431 },
  20765. -{ 0x0432, 0x0412, 0x0432 },
  20766. -{ 0x0433, 0x0413, 0x0433 },
  20767. -{ 0x0434, 0x0414, 0x0434 },
  20768. -{ 0x0435, 0x0415, 0x0435 },
  20769. -{ 0x0436, 0x0416, 0x0436 },
  20770. -{ 0x0437, 0x0417, 0x0437 },
  20771. -{ 0x0438, 0x0418, 0x0438 },
  20772. -{ 0x0439, 0x0419, 0x0439 },
  20773. -{ 0x043A, 0x041A, 0x043A },
  20774. -{ 0x043B, 0x041B, 0x043B },
  20775. -{ 0x043C, 0x041C, 0x043C },
  20776. -{ 0x043D, 0x041D, 0x043D },
  20777. -{ 0x043E, 0x041E, 0x043E },
  20778. -{ 0x043F, 0x041F, 0x043F },
  20779. -{ 0x0440, 0x0420, 0x0440 },
  20780. -{ 0x0441, 0x0421, 0x0441 },
  20781. -{ 0x0442, 0x0422, 0x0442 },
  20782. -{ 0x0443, 0x0423, 0x0443 },
  20783. -{ 0x0444, 0x0424, 0x0444 },
  20784. -{ 0x0445, 0x0425, 0x0445 },
  20785. -{ 0x0446, 0x0426, 0x0446 },
  20786. -{ 0x0447, 0x0427, 0x0447 },
  20787. -{ 0x0448, 0x0428, 0x0448 },
  20788. -{ 0x0449, 0x0429, 0x0449 },
  20789. -{ 0x044A, 0x042A, 0x044A },
  20790. -{ 0x044B, 0x042B, 0x044B },
  20791. -{ 0x044C, 0x042C, 0x044C },
  20792. -{ 0x044D, 0x042D, 0x044D },
  20793. -{ 0x044E, 0x042E, 0x044E },
  20794. -{ 0x044F, 0x042F, 0x044F },
  20795. -{ 0x0450, 0x0400, 0x0450 },
  20796. -{ 0x0451, 0x0401, 0x0451 },
  20797. -{ 0x0452, 0x0402, 0x0452 },
  20798. -{ 0x0453, 0x0403, 0x0453 },
  20799. -{ 0x0454, 0x0404, 0x0454 },
  20800. -{ 0x0455, 0x0405, 0x0455 },
  20801. -{ 0x0456, 0x0406, 0x0456 },
  20802. -{ 0x0457, 0x0407, 0x0457 },
  20803. -{ 0x0458, 0x0408, 0x0458 },
  20804. -{ 0x0459, 0x0409, 0x0459 },
  20805. -{ 0x045A, 0x040A, 0x045A },
  20806. -{ 0x045B, 0x040B, 0x045B },
  20807. -{ 0x045C, 0x040C, 0x045C },
  20808. -{ 0x045D, 0x040D, 0x045D },
  20809. -{ 0x045E, 0x040E, 0x045E },
  20810. -{ 0x045F, 0x040F, 0x045F },
  20811. -{ 0x0460, 0x0460, 0x0461 },
  20812. -{ 0x0461, 0x0460, 0x0461 },
  20813. -{ 0x0462, 0x0462, 0x0463 },
  20814. -{ 0x0463, 0x0462, 0x0463 },
  20815. -{ 0x0464, 0x0464, 0x0465 },
  20816. -{ 0x0465, 0x0464, 0x0465 },
  20817. -{ 0x0466, 0x0466, 0x0467 },
  20818. -{ 0x0467, 0x0466, 0x0467 },
  20819. -{ 0x0468, 0x0468, 0x0469 },
  20820. -{ 0x0469, 0x0468, 0x0469 },
  20821. -{ 0x046A, 0x046A, 0x046B },
  20822. -{ 0x046B, 0x046A, 0x046B },
  20823. -{ 0x046C, 0x046C, 0x046D },
  20824. -{ 0x046D, 0x046C, 0x046D },
  20825. -{ 0x046E, 0x046E, 0x046F },
  20826. -{ 0x046F, 0x046E, 0x046F },
  20827. -{ 0x0470, 0x0470, 0x0471 },
  20828. -{ 0x0471, 0x0470, 0x0471 },
  20829. -{ 0x0472, 0x0472, 0x0473 },
  20830. -{ 0x0473, 0x0472, 0x0473 },
  20831. -{ 0x0474, 0x0474, 0x0475 },
  20832. -{ 0x0475, 0x0474, 0x0475 },
  20833. -{ 0x0476, 0x0476, 0x0477 },
  20834. -{ 0x0477, 0x0476, 0x0477 },
  20835. -{ 0x0478, 0x0478, 0x0479 },
  20836. -{ 0x0479, 0x0478, 0x0479 },
  20837. -{ 0x047A, 0x047A, 0x047B },
  20838. -{ 0x047B, 0x047A, 0x047B },
  20839. -{ 0x047C, 0x047C, 0x047D },
  20840. -{ 0x047D, 0x047C, 0x047D },
  20841. -{ 0x047E, 0x047E, 0x047F },
  20842. -{ 0x047F, 0x047E, 0x047F },
  20843. -{ 0x0480, 0x0480, 0x0481 },
  20844. -{ 0x0481, 0x0480, 0x0481 },
  20845. -{ 0x0483, 0x0483, 0x0483 },
  20846. -{ 0x0484, 0x0484, 0x0484 },
  20847. -{ 0x0485, 0x0485, 0x0485 },
  20848. -{ 0x0486, 0x0486, 0x0486 },
  20849. -{ 0x048A, 0x048A, 0x048B },
  20850. -{ 0x048B, 0x048A, 0x048B },
  20851. -{ 0x048C, 0x048C, 0x048D },
  20852. -{ 0x048D, 0x048C, 0x048D },
  20853. -{ 0x048E, 0x048E, 0x048F },
  20854. -{ 0x048F, 0x048E, 0x048F },
  20855. -{ 0x0490, 0x0490, 0x0491 },
  20856. -{ 0x0491, 0x0490, 0x0491 },
  20857. -{ 0x0492, 0x0492, 0x0493 },
  20858. -{ 0x0493, 0x0492, 0x0493 },
  20859. -{ 0x0494, 0x0494, 0x0495 },
  20860. -{ 0x0495, 0x0494, 0x0495 },
  20861. -{ 0x0496, 0x0496, 0x0497 },
  20862. -{ 0x0497, 0x0496, 0x0497 },
  20863. -{ 0x0498, 0x0498, 0x0499 },
  20864. -{ 0x0499, 0x0498, 0x0499 },
  20865. -{ 0x049A, 0x049A, 0x049B },
  20866. -{ 0x049B, 0x049A, 0x049B },
  20867. -{ 0x049C, 0x049C, 0x049D },
  20868. -{ 0x049D, 0x049C, 0x049D },
  20869. -{ 0x049E, 0x049E, 0x049F },
  20870. -{ 0x049F, 0x049E, 0x049F },
  20871. -{ 0x04A0, 0x04A0, 0x04A1 },
  20872. -{ 0x04A1, 0x04A0, 0x04A1 },
  20873. -{ 0x04A2, 0x04A2, 0x04A3 },
  20874. -{ 0x04A3, 0x04A2, 0x04A3 },
  20875. -{ 0x04A4, 0x04A4, 0x04A5 },
  20876. -{ 0x04A5, 0x04A4, 0x04A5 },
  20877. -{ 0x04A6, 0x04A6, 0x04A7 },
  20878. -{ 0x04A7, 0x04A6, 0x04A7 },
  20879. -{ 0x04A8, 0x04A8, 0x04A9 },
  20880. -{ 0x04A9, 0x04A8, 0x04A9 },
  20881. -{ 0x04AA, 0x04AA, 0x04AB },
  20882. -{ 0x04AB, 0x04AA, 0x04AB },
  20883. -{ 0x04AC, 0x04AC, 0x04AD },
  20884. -{ 0x04AD, 0x04AC, 0x04AD },
  20885. -{ 0x04AE, 0x04AE, 0x04AF },
  20886. -{ 0x04AF, 0x04AE, 0x04AF },
  20887. -{ 0x04B0, 0x04B0, 0x04B1 },
  20888. -{ 0x04B1, 0x04B0, 0x04B1 },
  20889. -{ 0x04B2, 0x04B2, 0x04B3 },
  20890. -{ 0x04B3, 0x04B2, 0x04B3 },
  20891. -{ 0x04B4, 0x04B4, 0x04B5 },
  20892. -{ 0x04B5, 0x04B4, 0x04B5 },
  20893. -{ 0x04B6, 0x04B6, 0x04B7 },
  20894. -{ 0x04B7, 0x04B6, 0x04B7 },
  20895. -{ 0x04B8, 0x04B8, 0x04B9 },
  20896. -{ 0x04B9, 0x04B8, 0x04B9 },
  20897. -{ 0x04BA, 0x04BA, 0x04BB },
  20898. -{ 0x04BB, 0x04BA, 0x04BB },
  20899. -{ 0x04BC, 0x04BC, 0x04BD },
  20900. -{ 0x04BD, 0x04BC, 0x04BD },
  20901. -{ 0x04BE, 0x04BE, 0x04BF },
  20902. -{ 0x04BF, 0x04BE, 0x04BF },
  20903. -{ 0x04C0, 0x04C0, 0x04C0 },
  20904. -{ 0x04C1, 0x04C1, 0x04C2 },
  20905. -{ 0x04C2, 0x04C1, 0x04C2 },
  20906. -{ 0x04C3, 0x04C3, 0x04C4 },
  20907. -{ 0x04C4, 0x04C3, 0x04C4 },
  20908. -{ 0x04C5, 0x04C5, 0x04C6 },
  20909. -{ 0x04C6, 0x04C5, 0x04C6 },
  20910. -{ 0x04C7, 0x04C7, 0x04C8 },
  20911. -{ 0x04C8, 0x04C7, 0x04C8 },
  20912. -{ 0x04C9, 0x04C9, 0x04CA },
  20913. -{ 0x04CA, 0x04C9, 0x04CA },
  20914. -{ 0x04CB, 0x04CB, 0x04CC },
  20915. -{ 0x04CC, 0x04CB, 0x04CC },
  20916. -{ 0x04CD, 0x04CD, 0x04CE },
  20917. -{ 0x04CE, 0x04CD, 0x04CE },
  20918. -{ 0x04D0, 0x04D0, 0x04D1 },
  20919. -{ 0x04D1, 0x04D0, 0x04D1 },
  20920. -{ 0x04D2, 0x04D2, 0x04D3 },
  20921. -{ 0x04D3, 0x04D2, 0x04D3 },
  20922. -{ 0x04D4, 0x04D4, 0x04D5 },
  20923. -{ 0x04D5, 0x04D4, 0x04D5 },
  20924. -{ 0x04D6, 0x04D6, 0x04D7 },
  20925. -{ 0x04D7, 0x04D6, 0x04D7 },
  20926. -{ 0x04D8, 0x04D8, 0x04D9 },
  20927. -{ 0x04D9, 0x04D8, 0x04D9 },
  20928. -{ 0x04DA, 0x04DA, 0x04DB },
  20929. -{ 0x04DB, 0x04DA, 0x04DB },
  20930. -{ 0x04DC, 0x04DC, 0x04DD },
  20931. -{ 0x04DD, 0x04DC, 0x04DD },
  20932. -{ 0x04DE, 0x04DE, 0x04DF },
  20933. -{ 0x04DF, 0x04DE, 0x04DF },
  20934. -{ 0x04E0, 0x04E0, 0x04E1 },
  20935. -{ 0x04E1, 0x04E0, 0x04E1 },
  20936. -{ 0x04E2, 0x04E2, 0x04E3 },
  20937. -{ 0x04E3, 0x04E2, 0x04E3 },
  20938. -{ 0x04E4, 0x04E4, 0x04E5 },
  20939. -{ 0x04E5, 0x04E4, 0x04E5 },
  20940. -{ 0x04E6, 0x04E6, 0x04E7 },
  20941. -{ 0x04E7, 0x04E6, 0x04E7 },
  20942. -{ 0x04E8, 0x04E8, 0x04E9 },
  20943. -{ 0x04E9, 0x04E8, 0x04E9 },
  20944. -{ 0x04EA, 0x04EA, 0x04EB },
  20945. -{ 0x04EB, 0x04EA, 0x04EB },
  20946. -{ 0x04EC, 0x04EC, 0x04ED },
  20947. -{ 0x04ED, 0x04EC, 0x04ED },
  20948. -{ 0x04EE, 0x04EE, 0x04EF },
  20949. -{ 0x04EF, 0x04EE, 0x04EF },
  20950. -{ 0x04F0, 0x04F0, 0x04F1 },
  20951. -{ 0x04F1, 0x04F0, 0x04F1 },
  20952. -{ 0x04F2, 0x04F2, 0x04F3 },
  20953. -{ 0x04F3, 0x04F2, 0x04F3 },
  20954. -{ 0x04F4, 0x04F4, 0x04F5 },
  20955. -{ 0x04F5, 0x04F4, 0x04F5 },
  20956. -{ 0x04F6, 0x04F6, 0x04F7 },
  20957. -{ 0x04F7, 0x04F6, 0x04F7 },
  20958. -{ 0x04F8, 0x04F8, 0x04F9 },
  20959. -{ 0x04F9, 0x04F8, 0x04F9 },
  20960. -{ 0x0500, 0x0500, 0x0501 },
  20961. -{ 0x0501, 0x0500, 0x0501 },
  20962. -{ 0x0502, 0x0502, 0x0503 },
  20963. -{ 0x0503, 0x0502, 0x0503 },
  20964. -{ 0x0504, 0x0504, 0x0505 },
  20965. -{ 0x0505, 0x0504, 0x0505 },
  20966. -{ 0x0506, 0x0506, 0x0507 },
  20967. -{ 0x0507, 0x0506, 0x0507 },
  20968. -{ 0x0508, 0x0508, 0x0509 },
  20969. -{ 0x0509, 0x0508, 0x0509 },
  20970. -{ 0x050A, 0x050A, 0x050B },
  20971. -{ 0x050B, 0x050A, 0x050B },
  20972. -{ 0x050C, 0x050C, 0x050D },
  20973. -{ 0x050D, 0x050C, 0x050D },
  20974. -{ 0x050E, 0x050E, 0x050F },
  20975. -{ 0x050F, 0x050E, 0x050F },
  20976. -{ 0x0531, 0x0531, 0x0561 },
  20977. -{ 0x0532, 0x0532, 0x0562 },
  20978. -{ 0x0533, 0x0533, 0x0563 },
  20979. -{ 0x0534, 0x0534, 0x0564 },
  20980. -{ 0x0535, 0x0535, 0x0565 },
  20981. -{ 0x0536, 0x0536, 0x0566 },
  20982. -{ 0x0537, 0x0537, 0x0567 },
  20983. -{ 0x0538, 0x0538, 0x0568 },
  20984. -{ 0x0539, 0x0539, 0x0569 },
  20985. -{ 0x053A, 0x053A, 0x056A },
  20986. -{ 0x053B, 0x053B, 0x056B },
  20987. -{ 0x053C, 0x053C, 0x056C },
  20988. -{ 0x053D, 0x053D, 0x056D },
  20989. -{ 0x053E, 0x053E, 0x056E },
  20990. -{ 0x053F, 0x053F, 0x056F },
  20991. -{ 0x0540, 0x0540, 0x0570 },
  20992. -{ 0x0541, 0x0541, 0x0571 },
  20993. -{ 0x0542, 0x0542, 0x0572 },
  20994. -{ 0x0543, 0x0543, 0x0573 },
  20995. -{ 0x0544, 0x0544, 0x0574 },
  20996. -{ 0x0545, 0x0545, 0x0575 },
  20997. -{ 0x0546, 0x0546, 0x0576 },
  20998. -{ 0x0547, 0x0547, 0x0577 },
  20999. -{ 0x0548, 0x0548, 0x0578 },
  21000. -{ 0x0549, 0x0549, 0x0579 },
  21001. -{ 0x054A, 0x054A, 0x057A },
  21002. -{ 0x054B, 0x054B, 0x057B },
  21003. -{ 0x054C, 0x054C, 0x057C },
  21004. -{ 0x054D, 0x054D, 0x057D },
  21005. -{ 0x054E, 0x054E, 0x057E },
  21006. -{ 0x054F, 0x054F, 0x057F },
  21007. -{ 0x0550, 0x0550, 0x0580 },
  21008. -{ 0x0551, 0x0551, 0x0581 },
  21009. -{ 0x0552, 0x0552, 0x0582 },
  21010. -{ 0x0553, 0x0553, 0x0583 },
  21011. -{ 0x0554, 0x0554, 0x0584 },
  21012. -{ 0x0555, 0x0555, 0x0585 },
  21013. -{ 0x0556, 0x0556, 0x0586 },
  21014. -{ 0x0559, 0x0559, 0x0559 },
  21015. -{ 0x0561, 0x0531, 0x0561 },
  21016. -{ 0x0562, 0x0532, 0x0562 },
  21017. -{ 0x0563, 0x0533, 0x0563 },
  21018. -{ 0x0564, 0x0534, 0x0564 },
  21019. -{ 0x0565, 0x0535, 0x0565 },
  21020. -{ 0x0566, 0x0536, 0x0566 },
  21021. -{ 0x0567, 0x0537, 0x0567 },
  21022. -{ 0x0568, 0x0538, 0x0568 },
  21023. -{ 0x0569, 0x0539, 0x0569 },
  21024. -{ 0x056A, 0x053A, 0x056A },
  21025. -{ 0x056B, 0x053B, 0x056B },
  21026. -{ 0x056C, 0x053C, 0x056C },
  21027. -{ 0x056D, 0x053D, 0x056D },
  21028. -{ 0x056E, 0x053E, 0x056E },
  21029. -{ 0x056F, 0x053F, 0x056F },
  21030. -{ 0x0570, 0x0540, 0x0570 },
  21031. -{ 0x0571, 0x0541, 0x0571 },
  21032. -{ 0x0572, 0x0542, 0x0572 },
  21033. -{ 0x0573, 0x0543, 0x0573 },
  21034. -{ 0x0574, 0x0544, 0x0574 },
  21035. -{ 0x0575, 0x0545, 0x0575 },
  21036. -{ 0x0576, 0x0546, 0x0576 },
  21037. -{ 0x0577, 0x0547, 0x0577 },
  21038. -{ 0x0578, 0x0548, 0x0578 },
  21039. -{ 0x0579, 0x0549, 0x0579 },
  21040. -{ 0x057A, 0x054A, 0x057A },
  21041. -{ 0x057B, 0x054B, 0x057B },
  21042. -{ 0x057C, 0x054C, 0x057C },
  21043. -{ 0x057D, 0x054D, 0x057D },
  21044. -{ 0x057E, 0x054E, 0x057E },
  21045. -{ 0x057F, 0x054F, 0x057F },
  21046. -{ 0x0580, 0x0550, 0x0580 },
  21047. -{ 0x0581, 0x0551, 0x0581 },
  21048. -{ 0x0582, 0x0552, 0x0582 },
  21049. -{ 0x0583, 0x0553, 0x0583 },
  21050. -{ 0x0584, 0x0554, 0x0584 },
  21051. -{ 0x0585, 0x0555, 0x0585 },
  21052. -{ 0x0586, 0x0556, 0x0586 },
  21053. -{ 0x0587, 0x0587, 0x0587 },
  21054. -{ 0x0591, 0x0591, 0x0591 },
  21055. -{ 0x0592, 0x0592, 0x0592 },
  21056. -{ 0x0593, 0x0593, 0x0593 },
  21057. -{ 0x0594, 0x0594, 0x0594 },
  21058. -{ 0x0595, 0x0595, 0x0595 },
  21059. -{ 0x0596, 0x0596, 0x0596 },
  21060. -{ 0x0597, 0x0597, 0x0597 },
  21061. -{ 0x0598, 0x0598, 0x0598 },
  21062. -{ 0x0599, 0x0599, 0x0599 },
  21063. -{ 0x059A, 0x059A, 0x059A },
  21064. -{ 0x059B, 0x059B, 0x059B },
  21065. -{ 0x059C, 0x059C, 0x059C },
  21066. -{ 0x059D, 0x059D, 0x059D },
  21067. -{ 0x059E, 0x059E, 0x059E },
  21068. -{ 0x059F, 0x059F, 0x059F },
  21069. -{ 0x05A0, 0x05A0, 0x05A0 },
  21070. -{ 0x05A1, 0x05A1, 0x05A1 },
  21071. -{ 0x05A2, 0x05A2, 0x05A2 },
  21072. -{ 0x05A3, 0x05A3, 0x05A3 },
  21073. -{ 0x05A4, 0x05A4, 0x05A4 },
  21074. -{ 0x05A5, 0x05A5, 0x05A5 },
  21075. -{ 0x05A6, 0x05A6, 0x05A6 },
  21076. -{ 0x05A7, 0x05A7, 0x05A7 },
  21077. -{ 0x05A8, 0x05A8, 0x05A8 },
  21078. -{ 0x05A9, 0x05A9, 0x05A9 },
  21079. -{ 0x05AA, 0x05AA, 0x05AA },
  21080. -{ 0x05AB, 0x05AB, 0x05AB },
  21081. -{ 0x05AC, 0x05AC, 0x05AC },
  21082. -{ 0x05AD, 0x05AD, 0x05AD },
  21083. -{ 0x05AE, 0x05AE, 0x05AE },
  21084. -{ 0x05AF, 0x05AF, 0x05AF },
  21085. -{ 0x05B0, 0x05B0, 0x05B0 },
  21086. -{ 0x05B1, 0x05B1, 0x05B1 },
  21087. -{ 0x05B2, 0x05B2, 0x05B2 },
  21088. -{ 0x05B3, 0x05B3, 0x05B3 },
  21089. -{ 0x05B4, 0x05B4, 0x05B4 },
  21090. -{ 0x05B5, 0x05B5, 0x05B5 },
  21091. -{ 0x05B6, 0x05B6, 0x05B6 },
  21092. -{ 0x05B7, 0x05B7, 0x05B7 },
  21093. -{ 0x05B8, 0x05B8, 0x05B8 },
  21094. -{ 0x05B9, 0x05B9, 0x05B9 },
  21095. -{ 0x05BB, 0x05BB, 0x05BB },
  21096. -{ 0x05BC, 0x05BC, 0x05BC },
  21097. -{ 0x05BD, 0x05BD, 0x05BD },
  21098. -{ 0x05BF, 0x05BF, 0x05BF },
  21099. -{ 0x05C1, 0x05C1, 0x05C1 },
  21100. -{ 0x05C2, 0x05C2, 0x05C2 },
  21101. -{ 0x05C4, 0x05C4, 0x05C4 },
  21102. -{ 0x05C5, 0x05C5, 0x05C5 },
  21103. -{ 0x05C7, 0x05C7, 0x05C7 },
  21104. -{ 0x05D0, 0x05D0, 0x05D0 },
  21105. -{ 0x05D1, 0x05D1, 0x05D1 },
  21106. -{ 0x05D2, 0x05D2, 0x05D2 },
  21107. -{ 0x05D3, 0x05D3, 0x05D3 },
  21108. -{ 0x05D4, 0x05D4, 0x05D4 },
  21109. -{ 0x05D5, 0x05D5, 0x05D5 },
  21110. -{ 0x05D6, 0x05D6, 0x05D6 },
  21111. -{ 0x05D7, 0x05D7, 0x05D7 },
  21112. -{ 0x05D8, 0x05D8, 0x05D8 },
  21113. -{ 0x05D9, 0x05D9, 0x05D9 },
  21114. -{ 0x05DA, 0x05DA, 0x05DA },
  21115. -{ 0x05DB, 0x05DB, 0x05DB },
  21116. -{ 0x05DC, 0x05DC, 0x05DC },
  21117. -{ 0x05DD, 0x05DD, 0x05DD },
  21118. -{ 0x05DE, 0x05DE, 0x05DE },
  21119. -{ 0x05DF, 0x05DF, 0x05DF },
  21120. -{ 0x05E0, 0x05E0, 0x05E0 },
  21121. -{ 0x05E1, 0x05E1, 0x05E1 },
  21122. -{ 0x05E2, 0x05E2, 0x05E2 },
  21123. -{ 0x05E3, 0x05E3, 0x05E3 },
  21124. -{ 0x05E4, 0x05E4, 0x05E4 },
  21125. -{ 0x05E5, 0x05E5, 0x05E5 },
  21126. -{ 0x05E6, 0x05E6, 0x05E6 },
  21127. -{ 0x05E7, 0x05E7, 0x05E7 },
  21128. -{ 0x05E8, 0x05E8, 0x05E8 },
  21129. -{ 0x05E9, 0x05E9, 0x05E9 },
  21130. -{ 0x05EA, 0x05EA, 0x05EA },
  21131. -{ 0x05F0, 0x05F0, 0x05F0 },
  21132. -{ 0x05F1, 0x05F1, 0x05F1 },
  21133. -{ 0x05F2, 0x05F2, 0x05F2 },
  21134. -{ 0x0610, 0x0610, 0x0610 },
  21135. -{ 0x0611, 0x0611, 0x0611 },
  21136. -{ 0x0612, 0x0612, 0x0612 },
  21137. -{ 0x0613, 0x0613, 0x0613 },
  21138. -{ 0x0614, 0x0614, 0x0614 },
  21139. -{ 0x0615, 0x0615, 0x0615 },
  21140. -{ 0x0621, 0x0621, 0x0621 },
  21141. -{ 0x0622, 0x0622, 0x0622 },
  21142. -{ 0x0623, 0x0623, 0x0623 },
  21143. -{ 0x0624, 0x0624, 0x0624 },
  21144. -{ 0x0625, 0x0625, 0x0625 },
  21145. -{ 0x0626, 0x0626, 0x0626 },
  21146. -{ 0x0627, 0x0627, 0x0627 },
  21147. -{ 0x0628, 0x0628, 0x0628 },
  21148. -{ 0x0629, 0x0629, 0x0629 },
  21149. -{ 0x062A, 0x062A, 0x062A },
  21150. -{ 0x062B, 0x062B, 0x062B },
  21151. -{ 0x062C, 0x062C, 0x062C },
  21152. -{ 0x062D, 0x062D, 0x062D },
  21153. -{ 0x062E, 0x062E, 0x062E },
  21154. -{ 0x062F, 0x062F, 0x062F },
  21155. -{ 0x0630, 0x0630, 0x0630 },
  21156. -{ 0x0631, 0x0631, 0x0631 },
  21157. -{ 0x0632, 0x0632, 0x0632 },
  21158. -{ 0x0633, 0x0633, 0x0633 },
  21159. -{ 0x0634, 0x0634, 0x0634 },
  21160. -{ 0x0635, 0x0635, 0x0635 },
  21161. -{ 0x0636, 0x0636, 0x0636 },
  21162. -{ 0x0637, 0x0637, 0x0637 },
  21163. -{ 0x0638, 0x0638, 0x0638 },
  21164. -{ 0x0639, 0x0639, 0x0639 },
  21165. -{ 0x063A, 0x063A, 0x063A },
  21166. -{ 0x0640, 0x0640, 0x0640 },
  21167. -{ 0x0641, 0x0641, 0x0641 },
  21168. -{ 0x0642, 0x0642, 0x0642 },
  21169. -{ 0x0643, 0x0643, 0x0643 },
  21170. -{ 0x0644, 0x0644, 0x0644 },
  21171. -{ 0x0645, 0x0645, 0x0645 },
  21172. -{ 0x0646, 0x0646, 0x0646 },
  21173. -{ 0x0647, 0x0647, 0x0647 },
  21174. -{ 0x0648, 0x0648, 0x0648 },
  21175. -{ 0x0649, 0x0649, 0x0649 },
  21176. -{ 0x064A, 0x064A, 0x064A },
  21177. -{ 0x064B, 0x064B, 0x064B },
  21178. -{ 0x064C, 0x064C, 0x064C },
  21179. -{ 0x064D, 0x064D, 0x064D },
  21180. -{ 0x064E, 0x064E, 0x064E },
  21181. -{ 0x064F, 0x064F, 0x064F },
  21182. -{ 0x0650, 0x0650, 0x0650 },
  21183. -{ 0x0651, 0x0651, 0x0651 },
  21184. -{ 0x0652, 0x0652, 0x0652 },
  21185. -{ 0x0653, 0x0653, 0x0653 },
  21186. -{ 0x0654, 0x0654, 0x0654 },
  21187. -{ 0x0655, 0x0655, 0x0655 },
  21188. -{ 0x0656, 0x0656, 0x0656 },
  21189. -{ 0x0657, 0x0657, 0x0657 },
  21190. -{ 0x0658, 0x0658, 0x0658 },
  21191. -{ 0x0659, 0x0659, 0x0659 },
  21192. -{ 0x065A, 0x065A, 0x065A },
  21193. -{ 0x065B, 0x065B, 0x065B },
  21194. -{ 0x065C, 0x065C, 0x065C },
  21195. -{ 0x065D, 0x065D, 0x065D },
  21196. -{ 0x065E, 0x065E, 0x065E },
  21197. -{ 0x066E, 0x066E, 0x066E },
  21198. -{ 0x066F, 0x066F, 0x066F },
  21199. -{ 0x0670, 0x0670, 0x0670 },
  21200. -{ 0x0671, 0x0671, 0x0671 },
  21201. -{ 0x0672, 0x0672, 0x0672 },
  21202. -{ 0x0673, 0x0673, 0x0673 },
  21203. -{ 0x0674, 0x0674, 0x0674 },
  21204. -{ 0x0675, 0x0675, 0x0675 },
  21205. -{ 0x0676, 0x0676, 0x0676 },
  21206. -{ 0x0677, 0x0677, 0x0677 },
  21207. -{ 0x0678, 0x0678, 0x0678 },
  21208. -{ 0x0679, 0x0679, 0x0679 },
  21209. -{ 0x067A, 0x067A, 0x067A },
  21210. -{ 0x067B, 0x067B, 0x067B },
  21211. -{ 0x067C, 0x067C, 0x067C },
  21212. -{ 0x067D, 0x067D, 0x067D },
  21213. -{ 0x067E, 0x067E, 0x067E },
  21214. -{ 0x067F, 0x067F, 0x067F },
  21215. -{ 0x0680, 0x0680, 0x0680 },
  21216. -{ 0x0681, 0x0681, 0x0681 },
  21217. -{ 0x0682, 0x0682, 0x0682 },
  21218. -{ 0x0683, 0x0683, 0x0683 },
  21219. -{ 0x0684, 0x0684, 0x0684 },
  21220. -{ 0x0685, 0x0685, 0x0685 },
  21221. -{ 0x0686, 0x0686, 0x0686 },
  21222. -{ 0x0687, 0x0687, 0x0687 },
  21223. -{ 0x0688, 0x0688, 0x0688 },
  21224. -{ 0x0689, 0x0689, 0x0689 },
  21225. -{ 0x068A, 0x068A, 0x068A },
  21226. -{ 0x068B, 0x068B, 0x068B },
  21227. -{ 0x068C, 0x068C, 0x068C },
  21228. -{ 0x068D, 0x068D, 0x068D },
  21229. -{ 0x068E, 0x068E, 0x068E },
  21230. -{ 0x068F, 0x068F, 0x068F },
  21231. -{ 0x0690, 0x0690, 0x0690 },
  21232. -{ 0x0691, 0x0691, 0x0691 },
  21233. -{ 0x0692, 0x0692, 0x0692 },
  21234. -{ 0x0693, 0x0693, 0x0693 },
  21235. -{ 0x0694, 0x0694, 0x0694 },
  21236. -{ 0x0695, 0x0695, 0x0695 },
  21237. -{ 0x0696, 0x0696, 0x0696 },
  21238. -{ 0x0697, 0x0697, 0x0697 },
  21239. -{ 0x0698, 0x0698, 0x0698 },
  21240. -{ 0x0699, 0x0699, 0x0699 },
  21241. -{ 0x069A, 0x069A, 0x069A },
  21242. -{ 0x069B, 0x069B, 0x069B },
  21243. -{ 0x069C, 0x069C, 0x069C },
  21244. -{ 0x069D, 0x069D, 0x069D },
  21245. -{ 0x069E, 0x069E, 0x069E },
  21246. -{ 0x069F, 0x069F, 0x069F },
  21247. -{ 0x06A0, 0x06A0, 0x06A0 },
  21248. -{ 0x06A1, 0x06A1, 0x06A1 },
  21249. -{ 0x06A2, 0x06A2, 0x06A2 },
  21250. -{ 0x06A3, 0x06A3, 0x06A3 },
  21251. -{ 0x06A4, 0x06A4, 0x06A4 },
  21252. -{ 0x06A5, 0x06A5, 0x06A5 },
  21253. -{ 0x06A6, 0x06A6, 0x06A6 },
  21254. -{ 0x06A7, 0x06A7, 0x06A7 },
  21255. -{ 0x06A8, 0x06A8, 0x06A8 },
  21256. -{ 0x06A9, 0x06A9, 0x06A9 },
  21257. -{ 0x06AA, 0x06AA, 0x06AA },
  21258. -{ 0x06AB, 0x06AB, 0x06AB },
  21259. -{ 0x06AC, 0x06AC, 0x06AC },
  21260. -{ 0x06AD, 0x06AD, 0x06AD },
  21261. -{ 0x06AE, 0x06AE, 0x06AE },
  21262. -{ 0x06AF, 0x06AF, 0x06AF },
  21263. -{ 0x06B0, 0x06B0, 0x06B0 },
  21264. -{ 0x06B1, 0x06B1, 0x06B1 },
  21265. -{ 0x06B2, 0x06B2, 0x06B2 },
  21266. -{ 0x06B3, 0x06B3, 0x06B3 },
  21267. -{ 0x06B4, 0x06B4, 0x06B4 },
  21268. -{ 0x06B5, 0x06B5, 0x06B5 },
  21269. -{ 0x06B6, 0x06B6, 0x06B6 },
  21270. -{ 0x06B7, 0x06B7, 0x06B7 },
  21271. -{ 0x06B8, 0x06B8, 0x06B8 },
  21272. -{ 0x06B9, 0x06B9, 0x06B9 },
  21273. -{ 0x06BA, 0x06BA, 0x06BA },
  21274. -{ 0x06BB, 0x06BB, 0x06BB },
  21275. -{ 0x06BC, 0x06BC, 0x06BC },
  21276. -{ 0x06BD, 0x06BD, 0x06BD },
  21277. -{ 0x06BE, 0x06BE, 0x06BE },
  21278. -{ 0x06BF, 0x06BF, 0x06BF },
  21279. -{ 0x06C0, 0x06C0, 0x06C0 },
  21280. -{ 0x06C1, 0x06C1, 0x06C1 },
  21281. -{ 0x06C2, 0x06C2, 0x06C2 },
  21282. -{ 0x06C3, 0x06C3, 0x06C3 },
  21283. -{ 0x06C4, 0x06C4, 0x06C4 },
  21284. -{ 0x06C5, 0x06C5, 0x06C5 },
  21285. -{ 0x06C6, 0x06C6, 0x06C6 },
  21286. -{ 0x06C7, 0x06C7, 0x06C7 },
  21287. -{ 0x06C8, 0x06C8, 0x06C8 },
  21288. -{ 0x06C9, 0x06C9, 0x06C9 },
  21289. -{ 0x06CA, 0x06CA, 0x06CA },
  21290. -{ 0x06CB, 0x06CB, 0x06CB },
  21291. -{ 0x06CC, 0x06CC, 0x06CC },
  21292. -{ 0x06CD, 0x06CD, 0x06CD },
  21293. -{ 0x06CE, 0x06CE, 0x06CE },
  21294. -{ 0x06CF, 0x06CF, 0x06CF },
  21295. -{ 0x06D0, 0x06D0, 0x06D0 },
  21296. -{ 0x06D1, 0x06D1, 0x06D1 },
  21297. -{ 0x06D2, 0x06D2, 0x06D2 },
  21298. -{ 0x06D3, 0x06D3, 0x06D3 },
  21299. -{ 0x06D5, 0x06D5, 0x06D5 },
  21300. -{ 0x06D6, 0x06D6, 0x06D6 },
  21301. -{ 0x06D7, 0x06D7, 0x06D7 },
  21302. -{ 0x06D8, 0x06D8, 0x06D8 },
  21303. -{ 0x06D9, 0x06D9, 0x06D9 },
  21304. -{ 0x06DA, 0x06DA, 0x06DA },
  21305. -{ 0x06DB, 0x06DB, 0x06DB },
  21306. -{ 0x06DC, 0x06DC, 0x06DC },
  21307. -{ 0x06DF, 0x06DF, 0x06DF },
  21308. -{ 0x06E0, 0x06E0, 0x06E0 },
  21309. -{ 0x06E1, 0x06E1, 0x06E1 },
  21310. -{ 0x06E2, 0x06E2, 0x06E2 },
  21311. -{ 0x06E3, 0x06E3, 0x06E3 },
  21312. -{ 0x06E4, 0x06E4, 0x06E4 },
  21313. -{ 0x06E5, 0x06E5, 0x06E5 },
  21314. -{ 0x06E6, 0x06E6, 0x06E6 },
  21315. -{ 0x06E7, 0x06E7, 0x06E7 },
  21316. -{ 0x06E8, 0x06E8, 0x06E8 },
  21317. -{ 0x06EA, 0x06EA, 0x06EA },
  21318. -{ 0x06EB, 0x06EB, 0x06EB },
  21319. -{ 0x06EC, 0x06EC, 0x06EC },
  21320. -{ 0x06ED, 0x06ED, 0x06ED },
  21321. -{ 0x06EE, 0x06EE, 0x06EE },
  21322. -{ 0x06EF, 0x06EF, 0x06EF },
  21323. -{ 0x06FA, 0x06FA, 0x06FA },
  21324. -{ 0x06FB, 0x06FB, 0x06FB },
  21325. -{ 0x06FC, 0x06FC, 0x06FC },
  21326. -{ 0x06FF, 0x06FF, 0x06FF },
  21327. -{ 0x0710, 0x0710, 0x0710 },
  21328. -{ 0x0711, 0x0711, 0x0711 },
  21329. -{ 0x0712, 0x0712, 0x0712 },
  21330. -{ 0x0713, 0x0713, 0x0713 },
  21331. -{ 0x0714, 0x0714, 0x0714 },
  21332. -{ 0x0715, 0x0715, 0x0715 },
  21333. -{ 0x0716, 0x0716, 0x0716 },
  21334. -{ 0x0717, 0x0717, 0x0717 },
  21335. -{ 0x0718, 0x0718, 0x0718 },
  21336. -{ 0x0719, 0x0719, 0x0719 },
  21337. -{ 0x071A, 0x071A, 0x071A },
  21338. -{ 0x071B, 0x071B, 0x071B },
  21339. -{ 0x071C, 0x071C, 0x071C },
  21340. -{ 0x071D, 0x071D, 0x071D },
  21341. -{ 0x071E, 0x071E, 0x071E },
  21342. -{ 0x071F, 0x071F, 0x071F },
  21343. -{ 0x0720, 0x0720, 0x0720 },
  21344. -{ 0x0721, 0x0721, 0x0721 },
  21345. -{ 0x0722, 0x0722, 0x0722 },
  21346. -{ 0x0723, 0x0723, 0x0723 },
  21347. -{ 0x0724, 0x0724, 0x0724 },
  21348. -{ 0x0725, 0x0725, 0x0725 },
  21349. -{ 0x0726, 0x0726, 0x0726 },
  21350. -{ 0x0727, 0x0727, 0x0727 },
  21351. -{ 0x0728, 0x0728, 0x0728 },
  21352. -{ 0x0729, 0x0729, 0x0729 },
  21353. -{ 0x072A, 0x072A, 0x072A },
  21354. -{ 0x072B, 0x072B, 0x072B },
  21355. -{ 0x072C, 0x072C, 0x072C },
  21356. -{ 0x072D, 0x072D, 0x072D },
  21357. -{ 0x072E, 0x072E, 0x072E },
  21358. -{ 0x072F, 0x072F, 0x072F },
  21359. -{ 0x0730, 0x0730, 0x0730 },
  21360. -{ 0x0731, 0x0731, 0x0731 },
  21361. -{ 0x0732, 0x0732, 0x0732 },
  21362. -{ 0x0733, 0x0733, 0x0733 },
  21363. -{ 0x0734, 0x0734, 0x0734 },
  21364. -{ 0x0735, 0x0735, 0x0735 },
  21365. -{ 0x0736, 0x0736, 0x0736 },
  21366. -{ 0x0737, 0x0737, 0x0737 },
  21367. -{ 0x0738, 0x0738, 0x0738 },
  21368. -{ 0x0739, 0x0739, 0x0739 },
  21369. -{ 0x073A, 0x073A, 0x073A },
  21370. -{ 0x073B, 0x073B, 0x073B },
  21371. -{ 0x073C, 0x073C, 0x073C },
  21372. -{ 0x073D, 0x073D, 0x073D },
  21373. -{ 0x073E, 0x073E, 0x073E },
  21374. -{ 0x073F, 0x073F, 0x073F },
  21375. -{ 0x0740, 0x0740, 0x0740 },
  21376. -{ 0x0741, 0x0741, 0x0741 },
  21377. -{ 0x0742, 0x0742, 0x0742 },
  21378. -{ 0x0743, 0x0743, 0x0743 },
  21379. -{ 0x0744, 0x0744, 0x0744 },
  21380. -{ 0x0745, 0x0745, 0x0745 },
  21381. -{ 0x0746, 0x0746, 0x0746 },
  21382. -{ 0x0747, 0x0747, 0x0747 },
  21383. -{ 0x0748, 0x0748, 0x0748 },
  21384. -{ 0x0749, 0x0749, 0x0749 },
  21385. -{ 0x074A, 0x074A, 0x074A },
  21386. -{ 0x074D, 0x074D, 0x074D },
  21387. -{ 0x074E, 0x074E, 0x074E },
  21388. -{ 0x074F, 0x074F, 0x074F },
  21389. -{ 0x0750, 0x0750, 0x0750 },
  21390. -{ 0x0751, 0x0751, 0x0751 },
  21391. -{ 0x0752, 0x0752, 0x0752 },
  21392. -{ 0x0753, 0x0753, 0x0753 },
  21393. -{ 0x0754, 0x0754, 0x0754 },
  21394. -{ 0x0755, 0x0755, 0x0755 },
  21395. -{ 0x0756, 0x0756, 0x0756 },
  21396. -{ 0x0757, 0x0757, 0x0757 },
  21397. -{ 0x0758, 0x0758, 0x0758 },
  21398. -{ 0x0759, 0x0759, 0x0759 },
  21399. -{ 0x075A, 0x075A, 0x075A },
  21400. -{ 0x075B, 0x075B, 0x075B },
  21401. -{ 0x075C, 0x075C, 0x075C },
  21402. -{ 0x075D, 0x075D, 0x075D },
  21403. -{ 0x075E, 0x075E, 0x075E },
  21404. -{ 0x075F, 0x075F, 0x075F },
  21405. -{ 0x0760, 0x0760, 0x0760 },
  21406. -{ 0x0761, 0x0761, 0x0761 },
  21407. -{ 0x0762, 0x0762, 0x0762 },
  21408. -{ 0x0763, 0x0763, 0x0763 },
  21409. -{ 0x0764, 0x0764, 0x0764 },
  21410. -{ 0x0765, 0x0765, 0x0765 },
  21411. -{ 0x0766, 0x0766, 0x0766 },
  21412. -{ 0x0767, 0x0767, 0x0767 },
  21413. -{ 0x0768, 0x0768, 0x0768 },
  21414. -{ 0x0769, 0x0769, 0x0769 },
  21415. -{ 0x076A, 0x076A, 0x076A },
  21416. -{ 0x076B, 0x076B, 0x076B },
  21417. -{ 0x076C, 0x076C, 0x076C },
  21418. -{ 0x076D, 0x076D, 0x076D },
  21419. -{ 0x0780, 0x0780, 0x0780 },
  21420. -{ 0x0781, 0x0781, 0x0781 },
  21421. -{ 0x0782, 0x0782, 0x0782 },
  21422. -{ 0x0783, 0x0783, 0x0783 },
  21423. -{ 0x0784, 0x0784, 0x0784 },
  21424. -{ 0x0785, 0x0785, 0x0785 },
  21425. -{ 0x0786, 0x0786, 0x0786 },
  21426. -{ 0x0787, 0x0787, 0x0787 },
  21427. -{ 0x0788, 0x0788, 0x0788 },
  21428. -{ 0x0789, 0x0789, 0x0789 },
  21429. -{ 0x078A, 0x078A, 0x078A },
  21430. -{ 0x078B, 0x078B, 0x078B },
  21431. -{ 0x078C, 0x078C, 0x078C },
  21432. -{ 0x078D, 0x078D, 0x078D },
  21433. -{ 0x078E, 0x078E, 0x078E },
  21434. -{ 0x078F, 0x078F, 0x078F },
  21435. -{ 0x0790, 0x0790, 0x0790 },
  21436. -{ 0x0791, 0x0791, 0x0791 },
  21437. -{ 0x0792, 0x0792, 0x0792 },
  21438. -{ 0x0793, 0x0793, 0x0793 },
  21439. -{ 0x0794, 0x0794, 0x0794 },
  21440. -{ 0x0795, 0x0795, 0x0795 },
  21441. -{ 0x0796, 0x0796, 0x0796 },
  21442. -{ 0x0797, 0x0797, 0x0797 },
  21443. -{ 0x0798, 0x0798, 0x0798 },
  21444. -{ 0x0799, 0x0799, 0x0799 },
  21445. -{ 0x079A, 0x079A, 0x079A },
  21446. -{ 0x079B, 0x079B, 0x079B },
  21447. -{ 0x079C, 0x079C, 0x079C },
  21448. -{ 0x079D, 0x079D, 0x079D },
  21449. -{ 0x079E, 0x079E, 0x079E },
  21450. -{ 0x079F, 0x079F, 0x079F },
  21451. -{ 0x07A0, 0x07A0, 0x07A0 },
  21452. -{ 0x07A1, 0x07A1, 0x07A1 },
  21453. -{ 0x07A2, 0x07A2, 0x07A2 },
  21454. -{ 0x07A3, 0x07A3, 0x07A3 },
  21455. -{ 0x07A4, 0x07A4, 0x07A4 },
  21456. -{ 0x07A5, 0x07A5, 0x07A5 },
  21457. -{ 0x07A6, 0x07A6, 0x07A6 },
  21458. -{ 0x07A7, 0x07A7, 0x07A7 },
  21459. -{ 0x07A8, 0x07A8, 0x07A8 },
  21460. -{ 0x07A9, 0x07A9, 0x07A9 },
  21461. -{ 0x07AA, 0x07AA, 0x07AA },
  21462. -{ 0x07AB, 0x07AB, 0x07AB },
  21463. -{ 0x07AC, 0x07AC, 0x07AC },
  21464. -{ 0x07AD, 0x07AD, 0x07AD },
  21465. -{ 0x07AE, 0x07AE, 0x07AE },
  21466. -{ 0x07AF, 0x07AF, 0x07AF },
  21467. -{ 0x07B0, 0x07B0, 0x07B0 },
  21468. -{ 0x07B1, 0x07B1, 0x07B1 },
  21469. -{ 0x0901, 0x0901, 0x0901 },
  21470. -{ 0x0902, 0x0902, 0x0902 },
  21471. -{ 0x0904, 0x0904, 0x0904 },
  21472. -{ 0x0905, 0x0905, 0x0905 },
  21473. -{ 0x0906, 0x0906, 0x0906 },
  21474. -{ 0x0907, 0x0907, 0x0907 },
  21475. -{ 0x0908, 0x0908, 0x0908 },
  21476. -{ 0x0909, 0x0909, 0x0909 },
  21477. -{ 0x090A, 0x090A, 0x090A },
  21478. -{ 0x090B, 0x090B, 0x090B },
  21479. -{ 0x090C, 0x090C, 0x090C },
  21480. -{ 0x090D, 0x090D, 0x090D },
  21481. -{ 0x090E, 0x090E, 0x090E },
  21482. -{ 0x090F, 0x090F, 0x090F },
  21483. -{ 0x0910, 0x0910, 0x0910 },
  21484. -{ 0x0911, 0x0911, 0x0911 },
  21485. -{ 0x0912, 0x0912, 0x0912 },
  21486. -{ 0x0913, 0x0913, 0x0913 },
  21487. -{ 0x0914, 0x0914, 0x0914 },
  21488. -{ 0x0915, 0x0915, 0x0915 },
  21489. -{ 0x0916, 0x0916, 0x0916 },
  21490. -{ 0x0917, 0x0917, 0x0917 },
  21491. -{ 0x0918, 0x0918, 0x0918 },
  21492. -{ 0x0919, 0x0919, 0x0919 },
  21493. -{ 0x091A, 0x091A, 0x091A },
  21494. -{ 0x091B, 0x091B, 0x091B },
  21495. -{ 0x091C, 0x091C, 0x091C },
  21496. -{ 0x091D, 0x091D, 0x091D },
  21497. -{ 0x091E, 0x091E, 0x091E },
  21498. -{ 0x091F, 0x091F, 0x091F },
  21499. -{ 0x0920, 0x0920, 0x0920 },
  21500. -{ 0x0921, 0x0921, 0x0921 },
  21501. -{ 0x0922, 0x0922, 0x0922 },
  21502. -{ 0x0923, 0x0923, 0x0923 },
  21503. -{ 0x0924, 0x0924, 0x0924 },
  21504. -{ 0x0925, 0x0925, 0x0925 },
  21505. -{ 0x0926, 0x0926, 0x0926 },
  21506. -{ 0x0927, 0x0927, 0x0927 },
  21507. -{ 0x0928, 0x0928, 0x0928 },
  21508. -{ 0x0929, 0x0929, 0x0929 },
  21509. -{ 0x092A, 0x092A, 0x092A },
  21510. -{ 0x092B, 0x092B, 0x092B },
  21511. -{ 0x092C, 0x092C, 0x092C },
  21512. -{ 0x092D, 0x092D, 0x092D },
  21513. -{ 0x092E, 0x092E, 0x092E },
  21514. -{ 0x092F, 0x092F, 0x092F },
  21515. -{ 0x0930, 0x0930, 0x0930 },
  21516. -{ 0x0931, 0x0931, 0x0931 },
  21517. -{ 0x0932, 0x0932, 0x0932 },
  21518. -{ 0x0933, 0x0933, 0x0933 },
  21519. -{ 0x0934, 0x0934, 0x0934 },
  21520. -{ 0x0935, 0x0935, 0x0935 },
  21521. -{ 0x0936, 0x0936, 0x0936 },
  21522. -{ 0x0937, 0x0937, 0x0937 },
  21523. -{ 0x0938, 0x0938, 0x0938 },
  21524. -{ 0x0939, 0x0939, 0x0939 },
  21525. -{ 0x093C, 0x093C, 0x093C },
  21526. -{ 0x093D, 0x093D, 0x093D },
  21527. -{ 0x0941, 0x0941, 0x0941 },
  21528. -{ 0x0942, 0x0942, 0x0942 },
  21529. -{ 0x0943, 0x0943, 0x0943 },
  21530. -{ 0x0944, 0x0944, 0x0944 },
  21531. -{ 0x0945, 0x0945, 0x0945 },
  21532. -{ 0x0946, 0x0946, 0x0946 },
  21533. -{ 0x0947, 0x0947, 0x0947 },
  21534. -{ 0x0948, 0x0948, 0x0948 },
  21535. -{ 0x094D, 0x094D, 0x094D },
  21536. -{ 0x0950, 0x0950, 0x0950 },
  21537. -{ 0x0951, 0x0951, 0x0951 },
  21538. -{ 0x0952, 0x0952, 0x0952 },
  21539. -{ 0x0953, 0x0953, 0x0953 },
  21540. -{ 0x0954, 0x0954, 0x0954 },
  21541. -{ 0x0958, 0x0958, 0x0958 },
  21542. -{ 0x0959, 0x0959, 0x0959 },
  21543. -{ 0x095A, 0x095A, 0x095A },
  21544. -{ 0x095B, 0x095B, 0x095B },
  21545. -{ 0x095C, 0x095C, 0x095C },
  21546. -{ 0x095D, 0x095D, 0x095D },
  21547. -{ 0x095E, 0x095E, 0x095E },
  21548. -{ 0x095F, 0x095F, 0x095F },
  21549. -{ 0x0960, 0x0960, 0x0960 },
  21550. -{ 0x0961, 0x0961, 0x0961 },
  21551. -{ 0x0962, 0x0962, 0x0962 },
  21552. -{ 0x0963, 0x0963, 0x0963 },
  21553. -{ 0x097D, 0x097D, 0x097D },
  21554. -{ 0x0981, 0x0981, 0x0981 },
  21555. -{ 0x0985, 0x0985, 0x0985 },
  21556. -{ 0x0986, 0x0986, 0x0986 },
  21557. -{ 0x0987, 0x0987, 0x0987 },
  21558. -{ 0x0988, 0x0988, 0x0988 },
  21559. -{ 0x0989, 0x0989, 0x0989 },
  21560. -{ 0x098A, 0x098A, 0x098A },
  21561. -{ 0x098B, 0x098B, 0x098B },
  21562. -{ 0x098C, 0x098C, 0x098C },
  21563. -{ 0x098F, 0x098F, 0x098F },
  21564. -{ 0x0990, 0x0990, 0x0990 },
  21565. -{ 0x0993, 0x0993, 0x0993 },
  21566. -{ 0x0994, 0x0994, 0x0994 },
  21567. -{ 0x0995, 0x0995, 0x0995 },
  21568. -{ 0x0996, 0x0996, 0x0996 },
  21569. -{ 0x0997, 0x0997, 0x0997 },
  21570. -{ 0x0998, 0x0998, 0x0998 },
  21571. -{ 0x0999, 0x0999, 0x0999 },
  21572. -{ 0x099A, 0x099A, 0x099A },
  21573. -{ 0x099B, 0x099B, 0x099B },
  21574. -{ 0x099C, 0x099C, 0x099C },
  21575. -{ 0x099D, 0x099D, 0x099D },
  21576. -{ 0x099E, 0x099E, 0x099E },
  21577. -{ 0x099F, 0x099F, 0x099F },
  21578. -{ 0x09A0, 0x09A0, 0x09A0 },
  21579. -{ 0x09A1, 0x09A1, 0x09A1 },
  21580. -{ 0x09A2, 0x09A2, 0x09A2 },
  21581. -{ 0x09A3, 0x09A3, 0x09A3 },
  21582. -{ 0x09A4, 0x09A4, 0x09A4 },
  21583. -{ 0x09A5, 0x09A5, 0x09A5 },
  21584. -{ 0x09A6, 0x09A6, 0x09A6 },
  21585. -{ 0x09A7, 0x09A7, 0x09A7 },
  21586. -{ 0x09A8, 0x09A8, 0x09A8 },
  21587. -{ 0x09AA, 0x09AA, 0x09AA },
  21588. -{ 0x09AB, 0x09AB, 0x09AB },
  21589. -{ 0x09AC, 0x09AC, 0x09AC },
  21590. -{ 0x09AD, 0x09AD, 0x09AD },
  21591. -{ 0x09AE, 0x09AE, 0x09AE },
  21592. -{ 0x09AF, 0x09AF, 0x09AF },
  21593. -{ 0x09B0, 0x09B0, 0x09B0 },
  21594. -{ 0x09B2, 0x09B2, 0x09B2 },
  21595. -{ 0x09B6, 0x09B6, 0x09B6 },
  21596. -{ 0x09B7, 0x09B7, 0x09B7 },
  21597. -{ 0x09B8, 0x09B8, 0x09B8 },
  21598. -{ 0x09B9, 0x09B9, 0x09B9 },
  21599. -{ 0x09BC, 0x09BC, 0x09BC },
  21600. -{ 0x09BD, 0x09BD, 0x09BD },
  21601. -{ 0x09C1, 0x09C1, 0x09C1 },
  21602. -{ 0x09C2, 0x09C2, 0x09C2 },
  21603. -{ 0x09C3, 0x09C3, 0x09C3 },
  21604. -{ 0x09C4, 0x09C4, 0x09C4 },
  21605. -{ 0x09CD, 0x09CD, 0x09CD },
  21606. -{ 0x09CE, 0x09CE, 0x09CE },
  21607. -{ 0x09DC, 0x09DC, 0x09DC },
  21608. -{ 0x09DD, 0x09DD, 0x09DD },
  21609. -{ 0x09DF, 0x09DF, 0x09DF },
  21610. -{ 0x09E0, 0x09E0, 0x09E0 },
  21611. -{ 0x09E1, 0x09E1, 0x09E1 },
  21612. -{ 0x09E2, 0x09E2, 0x09E2 },
  21613. -{ 0x09E3, 0x09E3, 0x09E3 },
  21614. -{ 0x09F0, 0x09F0, 0x09F0 },
  21615. -{ 0x09F1, 0x09F1, 0x09F1 },
  21616. -{ 0x0A01, 0x0A01, 0x0A01 },
  21617. -{ 0x0A02, 0x0A02, 0x0A02 },
  21618. -{ 0x0A05, 0x0A05, 0x0A05 },
  21619. -{ 0x0A06, 0x0A06, 0x0A06 },
  21620. -{ 0x0A07, 0x0A07, 0x0A07 },
  21621. -{ 0x0A08, 0x0A08, 0x0A08 },
  21622. -{ 0x0A09, 0x0A09, 0x0A09 },
  21623. -{ 0x0A0A, 0x0A0A, 0x0A0A },
  21624. -{ 0x0A0F, 0x0A0F, 0x0A0F },
  21625. -{ 0x0A10, 0x0A10, 0x0A10 },
  21626. -{ 0x0A13, 0x0A13, 0x0A13 },
  21627. -{ 0x0A14, 0x0A14, 0x0A14 },
  21628. -{ 0x0A15, 0x0A15, 0x0A15 },
  21629. -{ 0x0A16, 0x0A16, 0x0A16 },
  21630. -{ 0x0A17, 0x0A17, 0x0A17 },
  21631. -{ 0x0A18, 0x0A18, 0x0A18 },
  21632. -{ 0x0A19, 0x0A19, 0x0A19 },
  21633. -{ 0x0A1A, 0x0A1A, 0x0A1A },
  21634. -{ 0x0A1B, 0x0A1B, 0x0A1B },
  21635. -{ 0x0A1C, 0x0A1C, 0x0A1C },
  21636. -{ 0x0A1D, 0x0A1D, 0x0A1D },
  21637. -{ 0x0A1E, 0x0A1E, 0x0A1E },
  21638. -{ 0x0A1F, 0x0A1F, 0x0A1F },
  21639. -{ 0x0A20, 0x0A20, 0x0A20 },
  21640. -{ 0x0A21, 0x0A21, 0x0A21 },
  21641. -{ 0x0A22, 0x0A22, 0x0A22 },
  21642. -{ 0x0A23, 0x0A23, 0x0A23 },
  21643. -{ 0x0A24, 0x0A24, 0x0A24 },
  21644. -{ 0x0A25, 0x0A25, 0x0A25 },
  21645. -{ 0x0A26, 0x0A26, 0x0A26 },
  21646. -{ 0x0A27, 0x0A27, 0x0A27 },
  21647. -{ 0x0A28, 0x0A28, 0x0A28 },
  21648. -{ 0x0A2A, 0x0A2A, 0x0A2A },
  21649. -{ 0x0A2B, 0x0A2B, 0x0A2B },
  21650. -{ 0x0A2C, 0x0A2C, 0x0A2C },
  21651. -{ 0x0A2D, 0x0A2D, 0x0A2D },
  21652. -{ 0x0A2E, 0x0A2E, 0x0A2E },
  21653. -{ 0x0A2F, 0x0A2F, 0x0A2F },
  21654. -{ 0x0A30, 0x0A30, 0x0A30 },
  21655. -{ 0x0A32, 0x0A32, 0x0A32 },
  21656. -{ 0x0A33, 0x0A33, 0x0A33 },
  21657. -{ 0x0A35, 0x0A35, 0x0A35 },
  21658. -{ 0x0A36, 0x0A36, 0x0A36 },
  21659. -{ 0x0A38, 0x0A38, 0x0A38 },
  21660. -{ 0x0A39, 0x0A39, 0x0A39 },
  21661. -{ 0x0A3C, 0x0A3C, 0x0A3C },
  21662. -{ 0x0A41, 0x0A41, 0x0A41 },
  21663. -{ 0x0A42, 0x0A42, 0x0A42 },
  21664. -{ 0x0A47, 0x0A47, 0x0A47 },
  21665. -{ 0x0A48, 0x0A48, 0x0A48 },
  21666. -{ 0x0A4B, 0x0A4B, 0x0A4B },
  21667. -{ 0x0A4C, 0x0A4C, 0x0A4C },
  21668. -{ 0x0A4D, 0x0A4D, 0x0A4D },
  21669. -{ 0x0A59, 0x0A59, 0x0A59 },
  21670. -{ 0x0A5A, 0x0A5A, 0x0A5A },
  21671. -{ 0x0A5B, 0x0A5B, 0x0A5B },
  21672. -{ 0x0A5C, 0x0A5C, 0x0A5C },
  21673. -{ 0x0A5E, 0x0A5E, 0x0A5E },
  21674. -{ 0x0A70, 0x0A70, 0x0A70 },
  21675. -{ 0x0A71, 0x0A71, 0x0A71 },
  21676. -{ 0x0A72, 0x0A72, 0x0A72 },
  21677. -{ 0x0A73, 0x0A73, 0x0A73 },
  21678. -{ 0x0A74, 0x0A74, 0x0A74 },
  21679. -{ 0x0A81, 0x0A81, 0x0A81 },
  21680. -{ 0x0A82, 0x0A82, 0x0A82 },
  21681. -{ 0x0A85, 0x0A85, 0x0A85 },
  21682. -{ 0x0A86, 0x0A86, 0x0A86 },
  21683. -{ 0x0A87, 0x0A87, 0x0A87 },
  21684. -{ 0x0A88, 0x0A88, 0x0A88 },
  21685. -{ 0x0A89, 0x0A89, 0x0A89 },
  21686. -{ 0x0A8A, 0x0A8A, 0x0A8A },
  21687. -{ 0x0A8B, 0x0A8B, 0x0A8B },
  21688. -{ 0x0A8C, 0x0A8C, 0x0A8C },
  21689. -{ 0x0A8D, 0x0A8D, 0x0A8D },
  21690. -{ 0x0A8F, 0x0A8F, 0x0A8F },
  21691. -{ 0x0A90, 0x0A90, 0x0A90 },
  21692. -{ 0x0A91, 0x0A91, 0x0A91 },
  21693. -{ 0x0A93, 0x0A93, 0x0A93 },
  21694. -{ 0x0A94, 0x0A94, 0x0A94 },
  21695. -{ 0x0A95, 0x0A95, 0x0A95 },
  21696. -{ 0x0A96, 0x0A96, 0x0A96 },
  21697. -{ 0x0A97, 0x0A97, 0x0A97 },
  21698. -{ 0x0A98, 0x0A98, 0x0A98 },
  21699. -{ 0x0A99, 0x0A99, 0x0A99 },
  21700. -{ 0x0A9A, 0x0A9A, 0x0A9A },
  21701. -{ 0x0A9B, 0x0A9B, 0x0A9B },
  21702. -{ 0x0A9C, 0x0A9C, 0x0A9C },
  21703. -{ 0x0A9D, 0x0A9D, 0x0A9D },
  21704. -{ 0x0A9E, 0x0A9E, 0x0A9E },
  21705. -{ 0x0A9F, 0x0A9F, 0x0A9F },
  21706. -{ 0x0AA0, 0x0AA0, 0x0AA0 },
  21707. -{ 0x0AA1, 0x0AA1, 0x0AA1 },
  21708. -{ 0x0AA2, 0x0AA2, 0x0AA2 },
  21709. -{ 0x0AA3, 0x0AA3, 0x0AA3 },
  21710. -{ 0x0AA4, 0x0AA4, 0x0AA4 },
  21711. -{ 0x0AA5, 0x0AA5, 0x0AA5 },
  21712. -{ 0x0AA6, 0x0AA6, 0x0AA6 },
  21713. -{ 0x0AA7, 0x0AA7, 0x0AA7 },
  21714. -{ 0x0AA8, 0x0AA8, 0x0AA8 },
  21715. -{ 0x0AAA, 0x0AAA, 0x0AAA },
  21716. -{ 0x0AAB, 0x0AAB, 0x0AAB },
  21717. -{ 0x0AAC, 0x0AAC, 0x0AAC },
  21718. -{ 0x0AAD, 0x0AAD, 0x0AAD },
  21719. -{ 0x0AAE, 0x0AAE, 0x0AAE },
  21720. -{ 0x0AAF, 0x0AAF, 0x0AAF },
  21721. -{ 0x0AB0, 0x0AB0, 0x0AB0 },
  21722. -{ 0x0AB2, 0x0AB2, 0x0AB2 },
  21723. -{ 0x0AB3, 0x0AB3, 0x0AB3 },
  21724. -{ 0x0AB5, 0x0AB5, 0x0AB5 },
  21725. -{ 0x0AB6, 0x0AB6, 0x0AB6 },
  21726. -{ 0x0AB7, 0x0AB7, 0x0AB7 },
  21727. -{ 0x0AB8, 0x0AB8, 0x0AB8 },
  21728. -{ 0x0AB9, 0x0AB9, 0x0AB9 },
  21729. -{ 0x0ABC, 0x0ABC, 0x0ABC },
  21730. -{ 0x0ABD, 0x0ABD, 0x0ABD },
  21731. -{ 0x0AC1, 0x0AC1, 0x0AC1 },
  21732. -{ 0x0AC2, 0x0AC2, 0x0AC2 },
  21733. -{ 0x0AC3, 0x0AC3, 0x0AC3 },
  21734. -{ 0x0AC4, 0x0AC4, 0x0AC4 },
  21735. -{ 0x0AC5, 0x0AC5, 0x0AC5 },
  21736. -{ 0x0AC7, 0x0AC7, 0x0AC7 },
  21737. -{ 0x0AC8, 0x0AC8, 0x0AC8 },
  21738. -{ 0x0ACD, 0x0ACD, 0x0ACD },
  21739. -{ 0x0AD0, 0x0AD0, 0x0AD0 },
  21740. -{ 0x0AE0, 0x0AE0, 0x0AE0 },
  21741. -{ 0x0AE1, 0x0AE1, 0x0AE1 },
  21742. -{ 0x0AE2, 0x0AE2, 0x0AE2 },
  21743. -{ 0x0AE3, 0x0AE3, 0x0AE3 },
  21744. -{ 0x0B01, 0x0B01, 0x0B01 },
  21745. -{ 0x0B05, 0x0B05, 0x0B05 },
  21746. -{ 0x0B06, 0x0B06, 0x0B06 },
  21747. -{ 0x0B07, 0x0B07, 0x0B07 },
  21748. -{ 0x0B08, 0x0B08, 0x0B08 },
  21749. -{ 0x0B09, 0x0B09, 0x0B09 },
  21750. -{ 0x0B0A, 0x0B0A, 0x0B0A },
  21751. -{ 0x0B0B, 0x0B0B, 0x0B0B },
  21752. -{ 0x0B0C, 0x0B0C, 0x0B0C },
  21753. -{ 0x0B0F, 0x0B0F, 0x0B0F },
  21754. -{ 0x0B10, 0x0B10, 0x0B10 },
  21755. -{ 0x0B13, 0x0B13, 0x0B13 },
  21756. -{ 0x0B14, 0x0B14, 0x0B14 },
  21757. -{ 0x0B15, 0x0B15, 0x0B15 },
  21758. -{ 0x0B16, 0x0B16, 0x0B16 },
  21759. -{ 0x0B17, 0x0B17, 0x0B17 },
  21760. -{ 0x0B18, 0x0B18, 0x0B18 },
  21761. -{ 0x0B19, 0x0B19, 0x0B19 },
  21762. -{ 0x0B1A, 0x0B1A, 0x0B1A },
  21763. -{ 0x0B1B, 0x0B1B, 0x0B1B },
  21764. -{ 0x0B1C, 0x0B1C, 0x0B1C },
  21765. -{ 0x0B1D, 0x0B1D, 0x0B1D },
  21766. -{ 0x0B1E, 0x0B1E, 0x0B1E },
  21767. -{ 0x0B1F, 0x0B1F, 0x0B1F },
  21768. -{ 0x0B20, 0x0B20, 0x0B20 },
  21769. -{ 0x0B21, 0x0B21, 0x0B21 },
  21770. -{ 0x0B22, 0x0B22, 0x0B22 },
  21771. -{ 0x0B23, 0x0B23, 0x0B23 },
  21772. -{ 0x0B24, 0x0B24, 0x0B24 },
  21773. -{ 0x0B25, 0x0B25, 0x0B25 },
  21774. -{ 0x0B26, 0x0B26, 0x0B26 },
  21775. -{ 0x0B27, 0x0B27, 0x0B27 },
  21776. -{ 0x0B28, 0x0B28, 0x0B28 },
  21777. -{ 0x0B2A, 0x0B2A, 0x0B2A },
  21778. -{ 0x0B2B, 0x0B2B, 0x0B2B },
  21779. -{ 0x0B2C, 0x0B2C, 0x0B2C },
  21780. -{ 0x0B2D, 0x0B2D, 0x0B2D },
  21781. -{ 0x0B2E, 0x0B2E, 0x0B2E },
  21782. -{ 0x0B2F, 0x0B2F, 0x0B2F },
  21783. -{ 0x0B30, 0x0B30, 0x0B30 },
  21784. -{ 0x0B32, 0x0B32, 0x0B32 },
  21785. -{ 0x0B33, 0x0B33, 0x0B33 },
  21786. -{ 0x0B35, 0x0B35, 0x0B35 },
  21787. -{ 0x0B36, 0x0B36, 0x0B36 },
  21788. -{ 0x0B37, 0x0B37, 0x0B37 },
  21789. -{ 0x0B38, 0x0B38, 0x0B38 },
  21790. -{ 0x0B39, 0x0B39, 0x0B39 },
  21791. -{ 0x0B3C, 0x0B3C, 0x0B3C },
  21792. -{ 0x0B3D, 0x0B3D, 0x0B3D },
  21793. -{ 0x0B3F, 0x0B3F, 0x0B3F },
  21794. -{ 0x0B41, 0x0B41, 0x0B41 },
  21795. -{ 0x0B42, 0x0B42, 0x0B42 },
  21796. -{ 0x0B43, 0x0B43, 0x0B43 },
  21797. -{ 0x0B4D, 0x0B4D, 0x0B4D },
  21798. -{ 0x0B56, 0x0B56, 0x0B56 },
  21799. -{ 0x0B5C, 0x0B5C, 0x0B5C },
  21800. -{ 0x0B5D, 0x0B5D, 0x0B5D },
  21801. -{ 0x0B5F, 0x0B5F, 0x0B5F },
  21802. -{ 0x0B60, 0x0B60, 0x0B60 },
  21803. -{ 0x0B61, 0x0B61, 0x0B61 },
  21804. -{ 0x0B71, 0x0B71, 0x0B71 },
  21805. -{ 0x0B82, 0x0B82, 0x0B82 },
  21806. -{ 0x0B83, 0x0B83, 0x0B83 },
  21807. -{ 0x0B85, 0x0B85, 0x0B85 },
  21808. -{ 0x0B86, 0x0B86, 0x0B86 },
  21809. -{ 0x0B87, 0x0B87, 0x0B87 },
  21810. -{ 0x0B88, 0x0B88, 0x0B88 },
  21811. -{ 0x0B89, 0x0B89, 0x0B89 },
  21812. -{ 0x0B8A, 0x0B8A, 0x0B8A },
  21813. -{ 0x0B8E, 0x0B8E, 0x0B8E },
  21814. -{ 0x0B8F, 0x0B8F, 0x0B8F },
  21815. -{ 0x0B90, 0x0B90, 0x0B90 },
  21816. -{ 0x0B92, 0x0B92, 0x0B92 },
  21817. -{ 0x0B93, 0x0B93, 0x0B93 },
  21818. -{ 0x0B94, 0x0B94, 0x0B94 },
  21819. -{ 0x0B95, 0x0B95, 0x0B95 },
  21820. -{ 0x0B99, 0x0B99, 0x0B99 },
  21821. -{ 0x0B9A, 0x0B9A, 0x0B9A },
  21822. -{ 0x0B9C, 0x0B9C, 0x0B9C },
  21823. -{ 0x0B9E, 0x0B9E, 0x0B9E },
  21824. -{ 0x0B9F, 0x0B9F, 0x0B9F },
  21825. -{ 0x0BA3, 0x0BA3, 0x0BA3 },
  21826. -{ 0x0BA4, 0x0BA4, 0x0BA4 },
  21827. -{ 0x0BA8, 0x0BA8, 0x0BA8 },
  21828. -{ 0x0BA9, 0x0BA9, 0x0BA9 },
  21829. -{ 0x0BAA, 0x0BAA, 0x0BAA },
  21830. -{ 0x0BAE, 0x0BAE, 0x0BAE },
  21831. -{ 0x0BAF, 0x0BAF, 0x0BAF },
  21832. -{ 0x0BB0, 0x0BB0, 0x0BB0 },
  21833. -{ 0x0BB1, 0x0BB1, 0x0BB1 },
  21834. -{ 0x0BB2, 0x0BB2, 0x0BB2 },
  21835. -{ 0x0BB3, 0x0BB3, 0x0BB3 },
  21836. -{ 0x0BB4, 0x0BB4, 0x0BB4 },
  21837. -{ 0x0BB5, 0x0BB5, 0x0BB5 },
  21838. -{ 0x0BB6, 0x0BB6, 0x0BB6 },
  21839. -{ 0x0BB7, 0x0BB7, 0x0BB7 },
  21840. -{ 0x0BB8, 0x0BB8, 0x0BB8 },
  21841. -{ 0x0BB9, 0x0BB9, 0x0BB9 },
  21842. -{ 0x0BC0, 0x0BC0, 0x0BC0 },
  21843. -{ 0x0BCD, 0x0BCD, 0x0BCD },
  21844. -{ 0x0C05, 0x0C05, 0x0C05 },
  21845. -{ 0x0C06, 0x0C06, 0x0C06 },
  21846. -{ 0x0C07, 0x0C07, 0x0C07 },
  21847. -{ 0x0C08, 0x0C08, 0x0C08 },
  21848. -{ 0x0C09, 0x0C09, 0x0C09 },
  21849. -{ 0x0C0A, 0x0C0A, 0x0C0A },
  21850. -{ 0x0C0B, 0x0C0B, 0x0C0B },
  21851. -{ 0x0C0C, 0x0C0C, 0x0C0C },
  21852. -{ 0x0C0E, 0x0C0E, 0x0C0E },
  21853. -{ 0x0C0F, 0x0C0F, 0x0C0F },
  21854. -{ 0x0C10, 0x0C10, 0x0C10 },
  21855. -{ 0x0C12, 0x0C12, 0x0C12 },
  21856. -{ 0x0C13, 0x0C13, 0x0C13 },
  21857. -{ 0x0C14, 0x0C14, 0x0C14 },
  21858. -{ 0x0C15, 0x0C15, 0x0C15 },
  21859. -{ 0x0C16, 0x0C16, 0x0C16 },
  21860. -{ 0x0C17, 0x0C17, 0x0C17 },
  21861. -{ 0x0C18, 0x0C18, 0x0C18 },
  21862. -{ 0x0C19, 0x0C19, 0x0C19 },
  21863. -{ 0x0C1A, 0x0C1A, 0x0C1A },
  21864. -{ 0x0C1B, 0x0C1B, 0x0C1B },
  21865. -{ 0x0C1C, 0x0C1C, 0x0C1C },
  21866. -{ 0x0C1D, 0x0C1D, 0x0C1D },
  21867. -{ 0x0C1E, 0x0C1E, 0x0C1E },
  21868. -{ 0x0C1F, 0x0C1F, 0x0C1F },
  21869. -{ 0x0C20, 0x0C20, 0x0C20 },
  21870. -{ 0x0C21, 0x0C21, 0x0C21 },
  21871. -{ 0x0C22, 0x0C22, 0x0C22 },
  21872. -{ 0x0C23, 0x0C23, 0x0C23 },
  21873. -{ 0x0C24, 0x0C24, 0x0C24 },
  21874. -{ 0x0C25, 0x0C25, 0x0C25 },
  21875. -{ 0x0C26, 0x0C26, 0x0C26 },
  21876. -{ 0x0C27, 0x0C27, 0x0C27 },
  21877. -{ 0x0C28, 0x0C28, 0x0C28 },
  21878. -{ 0x0C2A, 0x0C2A, 0x0C2A },
  21879. -{ 0x0C2B, 0x0C2B, 0x0C2B },
  21880. -{ 0x0C2C, 0x0C2C, 0x0C2C },
  21881. -{ 0x0C2D, 0x0C2D, 0x0C2D },
  21882. -{ 0x0C2E, 0x0C2E, 0x0C2E },
  21883. -{ 0x0C2F, 0x0C2F, 0x0C2F },
  21884. -{ 0x0C30, 0x0C30, 0x0C30 },
  21885. -{ 0x0C31, 0x0C31, 0x0C31 },
  21886. -{ 0x0C32, 0x0C32, 0x0C32 },
  21887. -{ 0x0C33, 0x0C33, 0x0C33 },
  21888. -{ 0x0C35, 0x0C35, 0x0C35 },
  21889. -{ 0x0C36, 0x0C36, 0x0C36 },
  21890. -{ 0x0C37, 0x0C37, 0x0C37 },
  21891. -{ 0x0C38, 0x0C38, 0x0C38 },
  21892. -{ 0x0C39, 0x0C39, 0x0C39 },
  21893. -{ 0x0C3E, 0x0C3E, 0x0C3E },
  21894. -{ 0x0C3F, 0x0C3F, 0x0C3F },
  21895. -{ 0x0C40, 0x0C40, 0x0C40 },
  21896. -{ 0x0C46, 0x0C46, 0x0C46 },
  21897. -{ 0x0C47, 0x0C47, 0x0C47 },
  21898. -{ 0x0C48, 0x0C48, 0x0C48 },
  21899. -{ 0x0C4A, 0x0C4A, 0x0C4A },
  21900. -{ 0x0C4B, 0x0C4B, 0x0C4B },
  21901. -{ 0x0C4C, 0x0C4C, 0x0C4C },
  21902. -{ 0x0C4D, 0x0C4D, 0x0C4D },
  21903. -{ 0x0C55, 0x0C55, 0x0C55 },
  21904. -{ 0x0C56, 0x0C56, 0x0C56 },
  21905. -{ 0x0C60, 0x0C60, 0x0C60 },
  21906. -{ 0x0C61, 0x0C61, 0x0C61 },
  21907. -{ 0x0C85, 0x0C85, 0x0C85 },
  21908. -{ 0x0C86, 0x0C86, 0x0C86 },
  21909. -{ 0x0C87, 0x0C87, 0x0C87 },
  21910. -{ 0x0C88, 0x0C88, 0x0C88 },
  21911. -{ 0x0C89, 0x0C89, 0x0C89 },
  21912. -{ 0x0C8A, 0x0C8A, 0x0C8A },
  21913. -{ 0x0C8B, 0x0C8B, 0x0C8B },
  21914. -{ 0x0C8C, 0x0C8C, 0x0C8C },
  21915. -{ 0x0C8E, 0x0C8E, 0x0C8E },
  21916. -{ 0x0C8F, 0x0C8F, 0x0C8F },
  21917. -{ 0x0C90, 0x0C90, 0x0C90 },
  21918. -{ 0x0C92, 0x0C92, 0x0C92 },
  21919. -{ 0x0C93, 0x0C93, 0x0C93 },
  21920. -{ 0x0C94, 0x0C94, 0x0C94 },
  21921. -{ 0x0C95, 0x0C95, 0x0C95 },
  21922. -{ 0x0C96, 0x0C96, 0x0C96 },
  21923. -{ 0x0C97, 0x0C97, 0x0C97 },
  21924. -{ 0x0C98, 0x0C98, 0x0C98 },
  21925. -{ 0x0C99, 0x0C99, 0x0C99 },
  21926. -{ 0x0C9A, 0x0C9A, 0x0C9A },
  21927. -{ 0x0C9B, 0x0C9B, 0x0C9B },
  21928. -{ 0x0C9C, 0x0C9C, 0x0C9C },
  21929. -{ 0x0C9D, 0x0C9D, 0x0C9D },
  21930. -{ 0x0C9E, 0x0C9E, 0x0C9E },
  21931. -{ 0x0C9F, 0x0C9F, 0x0C9F },
  21932. -{ 0x0CA0, 0x0CA0, 0x0CA0 },
  21933. -{ 0x0CA1, 0x0CA1, 0x0CA1 },
  21934. -{ 0x0CA2, 0x0CA2, 0x0CA2 },
  21935. -{ 0x0CA3, 0x0CA3, 0x0CA3 },
  21936. -{ 0x0CA4, 0x0CA4, 0x0CA4 },
  21937. -{ 0x0CA5, 0x0CA5, 0x0CA5 },
  21938. -{ 0x0CA6, 0x0CA6, 0x0CA6 },
  21939. -{ 0x0CA7, 0x0CA7, 0x0CA7 },
  21940. -{ 0x0CA8, 0x0CA8, 0x0CA8 },
  21941. -{ 0x0CAA, 0x0CAA, 0x0CAA },
  21942. -{ 0x0CAB, 0x0CAB, 0x0CAB },
  21943. -{ 0x0CAC, 0x0CAC, 0x0CAC },
  21944. -{ 0x0CAD, 0x0CAD, 0x0CAD },
  21945. -{ 0x0CAE, 0x0CAE, 0x0CAE },
  21946. -{ 0x0CAF, 0x0CAF, 0x0CAF },
  21947. -{ 0x0CB0, 0x0CB0, 0x0CB0 },
  21948. -{ 0x0CB1, 0x0CB1, 0x0CB1 },
  21949. -{ 0x0CB2, 0x0CB2, 0x0CB2 },
  21950. -{ 0x0CB3, 0x0CB3, 0x0CB3 },
  21951. -{ 0x0CB5, 0x0CB5, 0x0CB5 },
  21952. -{ 0x0CB6, 0x0CB6, 0x0CB6 },
  21953. -{ 0x0CB7, 0x0CB7, 0x0CB7 },
  21954. -{ 0x0CB8, 0x0CB8, 0x0CB8 },
  21955. -{ 0x0CB9, 0x0CB9, 0x0CB9 },
  21956. -{ 0x0CBC, 0x0CBC, 0x0CBC },
  21957. -{ 0x0CBD, 0x0CBD, 0x0CBD },
  21958. -{ 0x0CBF, 0x0CBF, 0x0CBF },
  21959. -{ 0x0CC6, 0x0CC6, 0x0CC6 },
  21960. -{ 0x0CCC, 0x0CCC, 0x0CCC },
  21961. -{ 0x0CCD, 0x0CCD, 0x0CCD },
  21962. -{ 0x0CDE, 0x0CDE, 0x0CDE },
  21963. -{ 0x0CE0, 0x0CE0, 0x0CE0 },
  21964. -{ 0x0CE1, 0x0CE1, 0x0CE1 },
  21965. -{ 0x0D05, 0x0D05, 0x0D05 },
  21966. -{ 0x0D06, 0x0D06, 0x0D06 },
  21967. -{ 0x0D07, 0x0D07, 0x0D07 },
  21968. -{ 0x0D08, 0x0D08, 0x0D08 },
  21969. -{ 0x0D09, 0x0D09, 0x0D09 },
  21970. -{ 0x0D0A, 0x0D0A, 0x0D0A },
  21971. -{ 0x0D0B, 0x0D0B, 0x0D0B },
  21972. -{ 0x0D0C, 0x0D0C, 0x0D0C },
  21973. -{ 0x0D0E, 0x0D0E, 0x0D0E },
  21974. -{ 0x0D0F, 0x0D0F, 0x0D0F },
  21975. -{ 0x0D10, 0x0D10, 0x0D10 },
  21976. -{ 0x0D12, 0x0D12, 0x0D12 },
  21977. -{ 0x0D13, 0x0D13, 0x0D13 },
  21978. -{ 0x0D14, 0x0D14, 0x0D14 },
  21979. -{ 0x0D15, 0x0D15, 0x0D15 },
  21980. -{ 0x0D16, 0x0D16, 0x0D16 },
  21981. -{ 0x0D17, 0x0D17, 0x0D17 },
  21982. -{ 0x0D18, 0x0D18, 0x0D18 },
  21983. -{ 0x0D19, 0x0D19, 0x0D19 },
  21984. -{ 0x0D1A, 0x0D1A, 0x0D1A },
  21985. -{ 0x0D1B, 0x0D1B, 0x0D1B },
  21986. -{ 0x0D1C, 0x0D1C, 0x0D1C },
  21987. -{ 0x0D1D, 0x0D1D, 0x0D1D },
  21988. -{ 0x0D1E, 0x0D1E, 0x0D1E },
  21989. -{ 0x0D1F, 0x0D1F, 0x0D1F },
  21990. -{ 0x0D20, 0x0D20, 0x0D20 },
  21991. -{ 0x0D21, 0x0D21, 0x0D21 },
  21992. -{ 0x0D22, 0x0D22, 0x0D22 },
  21993. -{ 0x0D23, 0x0D23, 0x0D23 },
  21994. -{ 0x0D24, 0x0D24, 0x0D24 },
  21995. -{ 0x0D25, 0x0D25, 0x0D25 },
  21996. -{ 0x0D26, 0x0D26, 0x0D26 },
  21997. -{ 0x0D27, 0x0D27, 0x0D27 },
  21998. -{ 0x0D28, 0x0D28, 0x0D28 },
  21999. -{ 0x0D2A, 0x0D2A, 0x0D2A },
  22000. -{ 0x0D2B, 0x0D2B, 0x0D2B },
  22001. -{ 0x0D2C, 0x0D2C, 0x0D2C },
  22002. -{ 0x0D2D, 0x0D2D, 0x0D2D },
  22003. -{ 0x0D2E, 0x0D2E, 0x0D2E },
  22004. -{ 0x0D2F, 0x0D2F, 0x0D2F },
  22005. -{ 0x0D30, 0x0D30, 0x0D30 },
  22006. -{ 0x0D31, 0x0D31, 0x0D31 },
  22007. -{ 0x0D32, 0x0D32, 0x0D32 },
  22008. -{ 0x0D33, 0x0D33, 0x0D33 },
  22009. -{ 0x0D34, 0x0D34, 0x0D34 },
  22010. -{ 0x0D35, 0x0D35, 0x0D35 },
  22011. -{ 0x0D36, 0x0D36, 0x0D36 },
  22012. -{ 0x0D37, 0x0D37, 0x0D37 },
  22013. -{ 0x0D38, 0x0D38, 0x0D38 },
  22014. -{ 0x0D39, 0x0D39, 0x0D39 },
  22015. -{ 0x0D41, 0x0D41, 0x0D41 },
  22016. -{ 0x0D42, 0x0D42, 0x0D42 },
  22017. -{ 0x0D43, 0x0D43, 0x0D43 },
  22018. -{ 0x0D4D, 0x0D4D, 0x0D4D },
  22019. -{ 0x0D60, 0x0D60, 0x0D60 },
  22020. -{ 0x0D61, 0x0D61, 0x0D61 },
  22021. -{ 0x0D85, 0x0D85, 0x0D85 },
  22022. -{ 0x0D86, 0x0D86, 0x0D86 },
  22023. -{ 0x0D87, 0x0D87, 0x0D87 },
  22024. -{ 0x0D88, 0x0D88, 0x0D88 },
  22025. -{ 0x0D89, 0x0D89, 0x0D89 },
  22026. -{ 0x0D8A, 0x0D8A, 0x0D8A },
  22027. -{ 0x0D8B, 0x0D8B, 0x0D8B },
  22028. -{ 0x0D8C, 0x0D8C, 0x0D8C },
  22029. -{ 0x0D8D, 0x0D8D, 0x0D8D },
  22030. -{ 0x0D8E, 0x0D8E, 0x0D8E },
  22031. -{ 0x0D8F, 0x0D8F, 0x0D8F },
  22032. -{ 0x0D90, 0x0D90, 0x0D90 },
  22033. -{ 0x0D91, 0x0D91, 0x0D91 },
  22034. -{ 0x0D92, 0x0D92, 0x0D92 },
  22035. -{ 0x0D93, 0x0D93, 0x0D93 },
  22036. -{ 0x0D94, 0x0D94, 0x0D94 },
  22037. -{ 0x0D95, 0x0D95, 0x0D95 },
  22038. -{ 0x0D96, 0x0D96, 0x0D96 },
  22039. -{ 0x0D9A, 0x0D9A, 0x0D9A },
  22040. -{ 0x0D9B, 0x0D9B, 0x0D9B },
  22041. -{ 0x0D9C, 0x0D9C, 0x0D9C },
  22042. -{ 0x0D9D, 0x0D9D, 0x0D9D },
  22043. -{ 0x0D9E, 0x0D9E, 0x0D9E },
  22044. -{ 0x0D9F, 0x0D9F, 0x0D9F },
  22045. -{ 0x0DA0, 0x0DA0, 0x0DA0 },
  22046. -{ 0x0DA1, 0x0DA1, 0x0DA1 },
  22047. -{ 0x0DA2, 0x0DA2, 0x0DA2 },
  22048. -{ 0x0DA3, 0x0DA3, 0x0DA3 },
  22049. -{ 0x0DA4, 0x0DA4, 0x0DA4 },
  22050. -{ 0x0DA5, 0x0DA5, 0x0DA5 },
  22051. -{ 0x0DA6, 0x0DA6, 0x0DA6 },
  22052. -{ 0x0DA7, 0x0DA7, 0x0DA7 },
  22053. -{ 0x0DA8, 0x0DA8, 0x0DA8 },
  22054. -{ 0x0DA9, 0x0DA9, 0x0DA9 },
  22055. -{ 0x0DAA, 0x0DAA, 0x0DAA },
  22056. -{ 0x0DAB, 0x0DAB, 0x0DAB },
  22057. -{ 0x0DAC, 0x0DAC, 0x0DAC },
  22058. -{ 0x0DAD, 0x0DAD, 0x0DAD },
  22059. -{ 0x0DAE, 0x0DAE, 0x0DAE },
  22060. -{ 0x0DAF, 0x0DAF, 0x0DAF },
  22061. -{ 0x0DB0, 0x0DB0, 0x0DB0 },
  22062. -{ 0x0DB1, 0x0DB1, 0x0DB1 },
  22063. -{ 0x0DB3, 0x0DB3, 0x0DB3 },
  22064. -{ 0x0DB4, 0x0DB4, 0x0DB4 },
  22065. -{ 0x0DB5, 0x0DB5, 0x0DB5 },
  22066. -{ 0x0DB6, 0x0DB6, 0x0DB6 },
  22067. -{ 0x0DB7, 0x0DB7, 0x0DB7 },
  22068. -{ 0x0DB8, 0x0DB8, 0x0DB8 },
  22069. -{ 0x0DB9, 0x0DB9, 0x0DB9 },
  22070. -{ 0x0DBA, 0x0DBA, 0x0DBA },
  22071. -{ 0x0DBB, 0x0DBB, 0x0DBB },
  22072. -{ 0x0DBD, 0x0DBD, 0x0DBD },
  22073. -{ 0x0DC0, 0x0DC0, 0x0DC0 },
  22074. -{ 0x0DC1, 0x0DC1, 0x0DC1 },
  22075. -{ 0x0DC2, 0x0DC2, 0x0DC2 },
  22076. -{ 0x0DC3, 0x0DC3, 0x0DC3 },
  22077. -{ 0x0DC4, 0x0DC4, 0x0DC4 },
  22078. -{ 0x0DC5, 0x0DC5, 0x0DC5 },
  22079. -{ 0x0DC6, 0x0DC6, 0x0DC6 },
  22080. -{ 0x0DCA, 0x0DCA, 0x0DCA },
  22081. -{ 0x0DD2, 0x0DD2, 0x0DD2 },
  22082. -{ 0x0DD3, 0x0DD3, 0x0DD3 },
  22083. -{ 0x0DD4, 0x0DD4, 0x0DD4 },
  22084. -{ 0x0DD6, 0x0DD6, 0x0DD6 },
  22085. -{ 0x0E01, 0x0E01, 0x0E01 },
  22086. -{ 0x0E02, 0x0E02, 0x0E02 },
  22087. -{ 0x0E03, 0x0E03, 0x0E03 },
  22088. -{ 0x0E04, 0x0E04, 0x0E04 },
  22089. -{ 0x0E05, 0x0E05, 0x0E05 },
  22090. -{ 0x0E06, 0x0E06, 0x0E06 },
  22091. -{ 0x0E07, 0x0E07, 0x0E07 },
  22092. -{ 0x0E08, 0x0E08, 0x0E08 },
  22093. -{ 0x0E09, 0x0E09, 0x0E09 },
  22094. -{ 0x0E0A, 0x0E0A, 0x0E0A },
  22095. -{ 0x0E0B, 0x0E0B, 0x0E0B },
  22096. -{ 0x0E0C, 0x0E0C, 0x0E0C },
  22097. -{ 0x0E0D, 0x0E0D, 0x0E0D },
  22098. -{ 0x0E0E, 0x0E0E, 0x0E0E },
  22099. -{ 0x0E0F, 0x0E0F, 0x0E0F },
  22100. -{ 0x0E10, 0x0E10, 0x0E10 },
  22101. -{ 0x0E11, 0x0E11, 0x0E11 },
  22102. -{ 0x0E12, 0x0E12, 0x0E12 },
  22103. -{ 0x0E13, 0x0E13, 0x0E13 },
  22104. -{ 0x0E14, 0x0E14, 0x0E14 },
  22105. -{ 0x0E15, 0x0E15, 0x0E15 },
  22106. -{ 0x0E16, 0x0E16, 0x0E16 },
  22107. -{ 0x0E17, 0x0E17, 0x0E17 },
  22108. -{ 0x0E18, 0x0E18, 0x0E18 },
  22109. -{ 0x0E19, 0x0E19, 0x0E19 },
  22110. -{ 0x0E1A, 0x0E1A, 0x0E1A },
  22111. -{ 0x0E1B, 0x0E1B, 0x0E1B },
  22112. -{ 0x0E1C, 0x0E1C, 0x0E1C },
  22113. -{ 0x0E1D, 0x0E1D, 0x0E1D },
  22114. -{ 0x0E1E, 0x0E1E, 0x0E1E },
  22115. -{ 0x0E1F, 0x0E1F, 0x0E1F },
  22116. -{ 0x0E20, 0x0E20, 0x0E20 },
  22117. -{ 0x0E21, 0x0E21, 0x0E21 },
  22118. -{ 0x0E22, 0x0E22, 0x0E22 },
  22119. -{ 0x0E23, 0x0E23, 0x0E23 },
  22120. -{ 0x0E24, 0x0E24, 0x0E24 },
  22121. -{ 0x0E25, 0x0E25, 0x0E25 },
  22122. -{ 0x0E26, 0x0E26, 0x0E26 },
  22123. -{ 0x0E27, 0x0E27, 0x0E27 },
  22124. -{ 0x0E28, 0x0E28, 0x0E28 },
  22125. -{ 0x0E29, 0x0E29, 0x0E29 },
  22126. -{ 0x0E2A, 0x0E2A, 0x0E2A },
  22127. -{ 0x0E2B, 0x0E2B, 0x0E2B },
  22128. -{ 0x0E2C, 0x0E2C, 0x0E2C },
  22129. -{ 0x0E2D, 0x0E2D, 0x0E2D },
  22130. -{ 0x0E2E, 0x0E2E, 0x0E2E },
  22131. -{ 0x0E2F, 0x0E2F, 0x0E2F },
  22132. -{ 0x0E30, 0x0E30, 0x0E30 },
  22133. -{ 0x0E31, 0x0E31, 0x0E31 },
  22134. -{ 0x0E32, 0x0E32, 0x0E32 },
  22135. -{ 0x0E33, 0x0E33, 0x0E33 },
  22136. -{ 0x0E34, 0x0E34, 0x0E34 },
  22137. -{ 0x0E35, 0x0E35, 0x0E35 },
  22138. -{ 0x0E36, 0x0E36, 0x0E36 },
  22139. -{ 0x0E37, 0x0E37, 0x0E37 },
  22140. -{ 0x0E38, 0x0E38, 0x0E38 },
  22141. -{ 0x0E39, 0x0E39, 0x0E39 },
  22142. -{ 0x0E3A, 0x0E3A, 0x0E3A },
  22143. -{ 0x0E40, 0x0E40, 0x0E40 },
  22144. -{ 0x0E41, 0x0E41, 0x0E41 },
  22145. -{ 0x0E42, 0x0E42, 0x0E42 },
  22146. -{ 0x0E43, 0x0E43, 0x0E43 },
  22147. -{ 0x0E44, 0x0E44, 0x0E44 },
  22148. -{ 0x0E45, 0x0E45, 0x0E45 },
  22149. -{ 0x0E46, 0x0E46, 0x0E46 },
  22150. -{ 0x0E47, 0x0E47, 0x0E47 },
  22151. -{ 0x0E48, 0x0E48, 0x0E48 },
  22152. -{ 0x0E49, 0x0E49, 0x0E49 },
  22153. -{ 0x0E4A, 0x0E4A, 0x0E4A },
  22154. -{ 0x0E4B, 0x0E4B, 0x0E4B },
  22155. -{ 0x0E4C, 0x0E4C, 0x0E4C },
  22156. -{ 0x0E4D, 0x0E4D, 0x0E4D },
  22157. -{ 0x0E4E, 0x0E4E, 0x0E4E },
  22158. -{ 0x0E81, 0x0E81, 0x0E81 },
  22159. -{ 0x0E82, 0x0E82, 0x0E82 },
  22160. -{ 0x0E84, 0x0E84, 0x0E84 },
  22161. -{ 0x0E87, 0x0E87, 0x0E87 },
  22162. -{ 0x0E88, 0x0E88, 0x0E88 },
  22163. -{ 0x0E8A, 0x0E8A, 0x0E8A },
  22164. -{ 0x0E8D, 0x0E8D, 0x0E8D },
  22165. -{ 0x0E94, 0x0E94, 0x0E94 },
  22166. -{ 0x0E95, 0x0E95, 0x0E95 },
  22167. -{ 0x0E96, 0x0E96, 0x0E96 },
  22168. -{ 0x0E97, 0x0E97, 0x0E97 },
  22169. -{ 0x0E99, 0x0E99, 0x0E99 },
  22170. -{ 0x0E9A, 0x0E9A, 0x0E9A },
  22171. -{ 0x0E9B, 0x0E9B, 0x0E9B },
  22172. -{ 0x0E9C, 0x0E9C, 0x0E9C },
  22173. -{ 0x0E9D, 0x0E9D, 0x0E9D },
  22174. -{ 0x0E9E, 0x0E9E, 0x0E9E },
  22175. -{ 0x0E9F, 0x0E9F, 0x0E9F },
  22176. -{ 0x0EA1, 0x0EA1, 0x0EA1 },
  22177. -{ 0x0EA2, 0x0EA2, 0x0EA2 },
  22178. -{ 0x0EA3, 0x0EA3, 0x0EA3 },
  22179. -{ 0x0EA5, 0x0EA5, 0x0EA5 },
  22180. -{ 0x0EA7, 0x0EA7, 0x0EA7 },
  22181. -{ 0x0EAA, 0x0EAA, 0x0EAA },
  22182. -{ 0x0EAB, 0x0EAB, 0x0EAB },
  22183. -{ 0x0EAD, 0x0EAD, 0x0EAD },
  22184. -{ 0x0EAE, 0x0EAE, 0x0EAE },
  22185. -{ 0x0EAF, 0x0EAF, 0x0EAF },
  22186. -{ 0x0EB0, 0x0EB0, 0x0EB0 },
  22187. -{ 0x0EB1, 0x0EB1, 0x0EB1 },
  22188. -{ 0x0EB2, 0x0EB2, 0x0EB2 },
  22189. -{ 0x0EB3, 0x0EB3, 0x0EB3 },
  22190. -{ 0x0EB4, 0x0EB4, 0x0EB4 },
  22191. -{ 0x0EB5, 0x0EB5, 0x0EB5 },
  22192. -{ 0x0EB6, 0x0EB6, 0x0EB6 },
  22193. -{ 0x0EB7, 0x0EB7, 0x0EB7 },
  22194. -{ 0x0EB8, 0x0EB8, 0x0EB8 },
  22195. -{ 0x0EB9, 0x0EB9, 0x0EB9 },
  22196. -{ 0x0EBB, 0x0EBB, 0x0EBB },
  22197. -{ 0x0EBC, 0x0EBC, 0x0EBC },
  22198. -{ 0x0EBD, 0x0EBD, 0x0EBD },
  22199. -{ 0x0EC0, 0x0EC0, 0x0EC0 },
  22200. -{ 0x0EC1, 0x0EC1, 0x0EC1 },
  22201. -{ 0x0EC2, 0x0EC2, 0x0EC2 },
  22202. -{ 0x0EC3, 0x0EC3, 0x0EC3 },
  22203. -{ 0x0EC4, 0x0EC4, 0x0EC4 },
  22204. -{ 0x0EC6, 0x0EC6, 0x0EC6 },
  22205. -{ 0x0EC8, 0x0EC8, 0x0EC8 },
  22206. -{ 0x0EC9, 0x0EC9, 0x0EC9 },
  22207. -{ 0x0ECA, 0x0ECA, 0x0ECA },
  22208. -{ 0x0ECB, 0x0ECB, 0x0ECB },
  22209. -{ 0x0ECC, 0x0ECC, 0x0ECC },
  22210. -{ 0x0ECD, 0x0ECD, 0x0ECD },
  22211. -{ 0x0EDC, 0x0EDC, 0x0EDC },
  22212. -{ 0x0EDD, 0x0EDD, 0x0EDD },
  22213. -{ 0x0F00, 0x0F00, 0x0F00 },
  22214. -{ 0x0F18, 0x0F18, 0x0F18 },
  22215. -{ 0x0F19, 0x0F19, 0x0F19 },
  22216. -{ 0x0F35, 0x0F35, 0x0F35 },
  22217. -{ 0x0F37, 0x0F37, 0x0F37 },
  22218. -{ 0x0F39, 0x0F39, 0x0F39 },
  22219. -{ 0x0F40, 0x0F40, 0x0F40 },
  22220. -{ 0x0F41, 0x0F41, 0x0F41 },
  22221. -{ 0x0F42, 0x0F42, 0x0F42 },
  22222. -{ 0x0F43, 0x0F43, 0x0F43 },
  22223. -{ 0x0F44, 0x0F44, 0x0F44 },
  22224. -{ 0x0F45, 0x0F45, 0x0F45 },
  22225. -{ 0x0F46, 0x0F46, 0x0F46 },
  22226. -{ 0x0F47, 0x0F47, 0x0F47 },
  22227. -{ 0x0F49, 0x0F49, 0x0F49 },
  22228. -{ 0x0F4A, 0x0F4A, 0x0F4A },
  22229. -{ 0x0F4B, 0x0F4B, 0x0F4B },
  22230. -{ 0x0F4C, 0x0F4C, 0x0F4C },
  22231. -{ 0x0F4D, 0x0F4D, 0x0F4D },
  22232. -{ 0x0F4E, 0x0F4E, 0x0F4E },
  22233. -{ 0x0F4F, 0x0F4F, 0x0F4F },
  22234. -{ 0x0F50, 0x0F50, 0x0F50 },
  22235. -{ 0x0F51, 0x0F51, 0x0F51 },
  22236. -{ 0x0F52, 0x0F52, 0x0F52 },
  22237. -{ 0x0F53, 0x0F53, 0x0F53 },
  22238. -{ 0x0F54, 0x0F54, 0x0F54 },
  22239. -{ 0x0F55, 0x0F55, 0x0F55 },
  22240. -{ 0x0F56, 0x0F56, 0x0F56 },
  22241. -{ 0x0F57, 0x0F57, 0x0F57 },
  22242. -{ 0x0F58, 0x0F58, 0x0F58 },
  22243. -{ 0x0F59, 0x0F59, 0x0F59 },
  22244. -{ 0x0F5A, 0x0F5A, 0x0F5A },
  22245. -{ 0x0F5B, 0x0F5B, 0x0F5B },
  22246. -{ 0x0F5C, 0x0F5C, 0x0F5C },
  22247. -{ 0x0F5D, 0x0F5D, 0x0F5D },
  22248. -{ 0x0F5E, 0x0F5E, 0x0F5E },
  22249. -{ 0x0F5F, 0x0F5F, 0x0F5F },
  22250. -{ 0x0F60, 0x0F60, 0x0F60 },
  22251. -{ 0x0F61, 0x0F61, 0x0F61 },
  22252. -{ 0x0F62, 0x0F62, 0x0F62 },
  22253. -{ 0x0F63, 0x0F63, 0x0F63 },
  22254. -{ 0x0F64, 0x0F64, 0x0F64 },
  22255. -{ 0x0F65, 0x0F65, 0x0F65 },
  22256. -{ 0x0F66, 0x0F66, 0x0F66 },
  22257. -{ 0x0F67, 0x0F67, 0x0F67 },
  22258. -{ 0x0F68, 0x0F68, 0x0F68 },
  22259. -{ 0x0F69, 0x0F69, 0x0F69 },
  22260. -{ 0x0F6A, 0x0F6A, 0x0F6A },
  22261. -{ 0x0F71, 0x0F71, 0x0F71 },
  22262. -{ 0x0F72, 0x0F72, 0x0F72 },
  22263. -{ 0x0F73, 0x0F73, 0x0F73 },
  22264. -{ 0x0F74, 0x0F74, 0x0F74 },
  22265. -{ 0x0F75, 0x0F75, 0x0F75 },
  22266. -{ 0x0F76, 0x0F76, 0x0F76 },
  22267. -{ 0x0F77, 0x0F77, 0x0F77 },
  22268. -{ 0x0F78, 0x0F78, 0x0F78 },
  22269. -{ 0x0F79, 0x0F79, 0x0F79 },
  22270. -{ 0x0F7A, 0x0F7A, 0x0F7A },
  22271. -{ 0x0F7B, 0x0F7B, 0x0F7B },
  22272. -{ 0x0F7C, 0x0F7C, 0x0F7C },
  22273. -{ 0x0F7D, 0x0F7D, 0x0F7D },
  22274. -{ 0x0F7E, 0x0F7E, 0x0F7E },
  22275. -{ 0x0F80, 0x0F80, 0x0F80 },
  22276. -{ 0x0F81, 0x0F81, 0x0F81 },
  22277. -{ 0x0F82, 0x0F82, 0x0F82 },
  22278. -{ 0x0F83, 0x0F83, 0x0F83 },
  22279. -{ 0x0F84, 0x0F84, 0x0F84 },
  22280. -{ 0x0F86, 0x0F86, 0x0F86 },
  22281. -{ 0x0F87, 0x0F87, 0x0F87 },
  22282. -{ 0x0F88, 0x0F88, 0x0F88 },
  22283. -{ 0x0F89, 0x0F89, 0x0F89 },
  22284. -{ 0x0F8A, 0x0F8A, 0x0F8A },
  22285. -{ 0x0F8B, 0x0F8B, 0x0F8B },
  22286. -{ 0x0F90, 0x0F90, 0x0F90 },
  22287. -{ 0x0F91, 0x0F91, 0x0F91 },
  22288. -{ 0x0F92, 0x0F92, 0x0F92 },
  22289. -{ 0x0F93, 0x0F93, 0x0F93 },
  22290. -{ 0x0F94, 0x0F94, 0x0F94 },
  22291. -{ 0x0F95, 0x0F95, 0x0F95 },
  22292. -{ 0x0F96, 0x0F96, 0x0F96 },
  22293. -{ 0x0F97, 0x0F97, 0x0F97 },
  22294. -{ 0x0F99, 0x0F99, 0x0F99 },
  22295. -{ 0x0F9A, 0x0F9A, 0x0F9A },
  22296. -{ 0x0F9B, 0x0F9B, 0x0F9B },
  22297. -{ 0x0F9C, 0x0F9C, 0x0F9C },
  22298. -{ 0x0F9D, 0x0F9D, 0x0F9D },
  22299. -{ 0x0F9E, 0x0F9E, 0x0F9E },
  22300. -{ 0x0F9F, 0x0F9F, 0x0F9F },
  22301. -{ 0x0FA0, 0x0FA0, 0x0FA0 },
  22302. -{ 0x0FA1, 0x0FA1, 0x0FA1 },
  22303. -{ 0x0FA2, 0x0FA2, 0x0FA2 },
  22304. -{ 0x0FA3, 0x0FA3, 0x0FA3 },
  22305. -{ 0x0FA4, 0x0FA4, 0x0FA4 },
  22306. -{ 0x0FA5, 0x0FA5, 0x0FA5 },
  22307. -{ 0x0FA6, 0x0FA6, 0x0FA6 },
  22308. -{ 0x0FA7, 0x0FA7, 0x0FA7 },
  22309. -{ 0x0FA8, 0x0FA8, 0x0FA8 },
  22310. -{ 0x0FA9, 0x0FA9, 0x0FA9 },
  22311. -{ 0x0FAA, 0x0FAA, 0x0FAA },
  22312. -{ 0x0FAB, 0x0FAB, 0x0FAB },
  22313. -{ 0x0FAC, 0x0FAC, 0x0FAC },
  22314. -{ 0x0FAD, 0x0FAD, 0x0FAD },
  22315. -{ 0x0FAE, 0x0FAE, 0x0FAE },
  22316. -{ 0x0FAF, 0x0FAF, 0x0FAF },
  22317. -{ 0x0FB0, 0x0FB0, 0x0FB0 },
  22318. -{ 0x0FB1, 0x0FB1, 0x0FB1 },
  22319. -{ 0x0FB2, 0x0FB2, 0x0FB2 },
  22320. -{ 0x0FB3, 0x0FB3, 0x0FB3 },
  22321. -{ 0x0FB4, 0x0FB4, 0x0FB4 },
  22322. -{ 0x0FB5, 0x0FB5, 0x0FB5 },
  22323. -{ 0x0FB6, 0x0FB6, 0x0FB6 },
  22324. -{ 0x0FB7, 0x0FB7, 0x0FB7 },
  22325. -{ 0x0FB8, 0x0FB8, 0x0FB8 },
  22326. -{ 0x0FB9, 0x0FB9, 0x0FB9 },
  22327. -{ 0x0FBA, 0x0FBA, 0x0FBA },
  22328. -{ 0x0FBB, 0x0FBB, 0x0FBB },
  22329. -{ 0x0FBC, 0x0FBC, 0x0FBC },
  22330. -{ 0x0FC6, 0x0FC6, 0x0FC6 },
  22331. -{ 0x1000, 0x1000, 0x1000 },
  22332. -{ 0x1001, 0x1001, 0x1001 },
  22333. -{ 0x1002, 0x1002, 0x1002 },
  22334. -{ 0x1003, 0x1003, 0x1003 },
  22335. -{ 0x1004, 0x1004, 0x1004 },
  22336. -{ 0x1005, 0x1005, 0x1005 },
  22337. -{ 0x1006, 0x1006, 0x1006 },
  22338. -{ 0x1007, 0x1007, 0x1007 },
  22339. -{ 0x1008, 0x1008, 0x1008 },
  22340. -{ 0x1009, 0x1009, 0x1009 },
  22341. -{ 0x100A, 0x100A, 0x100A },
  22342. -{ 0x100B, 0x100B, 0x100B },
  22343. -{ 0x100C, 0x100C, 0x100C },
  22344. -{ 0x100D, 0x100D, 0x100D },
  22345. -{ 0x100E, 0x100E, 0x100E },
  22346. -{ 0x100F, 0x100F, 0x100F },
  22347. -{ 0x1010, 0x1010, 0x1010 },
  22348. -{ 0x1011, 0x1011, 0x1011 },
  22349. -{ 0x1012, 0x1012, 0x1012 },
  22350. -{ 0x1013, 0x1013, 0x1013 },
  22351. -{ 0x1014, 0x1014, 0x1014 },
  22352. -{ 0x1015, 0x1015, 0x1015 },
  22353. -{ 0x1016, 0x1016, 0x1016 },
  22354. -{ 0x1017, 0x1017, 0x1017 },
  22355. -{ 0x1018, 0x1018, 0x1018 },
  22356. -{ 0x1019, 0x1019, 0x1019 },
  22357. -{ 0x101A, 0x101A, 0x101A },
  22358. -{ 0x101B, 0x101B, 0x101B },
  22359. -{ 0x101C, 0x101C, 0x101C },
  22360. -{ 0x101D, 0x101D, 0x101D },
  22361. -{ 0x101E, 0x101E, 0x101E },
  22362. -{ 0x101F, 0x101F, 0x101F },
  22363. -{ 0x1020, 0x1020, 0x1020 },
  22364. -{ 0x1021, 0x1021, 0x1021 },
  22365. -{ 0x1023, 0x1023, 0x1023 },
  22366. -{ 0x1024, 0x1024, 0x1024 },
  22367. -{ 0x1025, 0x1025, 0x1025 },
  22368. -{ 0x1026, 0x1026, 0x1026 },
  22369. -{ 0x1027, 0x1027, 0x1027 },
  22370. -{ 0x1029, 0x1029, 0x1029 },
  22371. -{ 0x102A, 0x102A, 0x102A },
  22372. -{ 0x102D, 0x102D, 0x102D },
  22373. -{ 0x102E, 0x102E, 0x102E },
  22374. -{ 0x102F, 0x102F, 0x102F },
  22375. -{ 0x1030, 0x1030, 0x1030 },
  22376. -{ 0x1032, 0x1032, 0x1032 },
  22377. -{ 0x1036, 0x1036, 0x1036 },
  22378. -{ 0x1037, 0x1037, 0x1037 },
  22379. -{ 0x1039, 0x1039, 0x1039 },
  22380. -{ 0x1050, 0x1050, 0x1050 },
  22381. -{ 0x1051, 0x1051, 0x1051 },
  22382. -{ 0x1052, 0x1052, 0x1052 },
  22383. -{ 0x1053, 0x1053, 0x1053 },
  22384. -{ 0x1054, 0x1054, 0x1054 },
  22385. -{ 0x1055, 0x1055, 0x1055 },
  22386. -{ 0x1058, 0x1058, 0x1058 },
  22387. -{ 0x1059, 0x1059, 0x1059 },
  22388. -{ 0x10A0, 0x10A0, 0x2D00 },
  22389. -{ 0x10A1, 0x10A1, 0x2D01 },
  22390. -{ 0x10A2, 0x10A2, 0x2D02 },
  22391. -{ 0x10A3, 0x10A3, 0x2D03 },
  22392. -{ 0x10A4, 0x10A4, 0x2D04 },
  22393. -{ 0x10A5, 0x10A5, 0x2D05 },
  22394. -{ 0x10A6, 0x10A6, 0x2D06 },
  22395. -{ 0x10A7, 0x10A7, 0x2D07 },
  22396. -{ 0x10A8, 0x10A8, 0x2D08 },
  22397. -{ 0x10A9, 0x10A9, 0x2D09 },
  22398. -{ 0x10AA, 0x10AA, 0x2D0A },
  22399. -{ 0x10AB, 0x10AB, 0x2D0B },
  22400. -{ 0x10AC, 0x10AC, 0x2D0C },
  22401. -{ 0x10AD, 0x10AD, 0x2D0D },
  22402. -{ 0x10AE, 0x10AE, 0x2D0E },
  22403. -{ 0x10AF, 0x10AF, 0x2D0F },
  22404. -{ 0x10B0, 0x10B0, 0x2D10 },
  22405. -{ 0x10B1, 0x10B1, 0x2D11 },
  22406. -{ 0x10B2, 0x10B2, 0x2D12 },
  22407. -{ 0x10B3, 0x10B3, 0x2D13 },
  22408. -{ 0x10B4, 0x10B4, 0x2D14 },
  22409. -{ 0x10B5, 0x10B5, 0x2D15 },
  22410. -{ 0x10B6, 0x10B6, 0x2D16 },
  22411. -{ 0x10B7, 0x10B7, 0x2D17 },
  22412. -{ 0x10B8, 0x10B8, 0x2D18 },
  22413. -{ 0x10B9, 0x10B9, 0x2D19 },
  22414. -{ 0x10BA, 0x10BA, 0x2D1A },
  22415. -{ 0x10BB, 0x10BB, 0x2D1B },
  22416. -{ 0x10BC, 0x10BC, 0x2D1C },
  22417. -{ 0x10BD, 0x10BD, 0x2D1D },
  22418. -{ 0x10BE, 0x10BE, 0x2D1E },
  22419. -{ 0x10BF, 0x10BF, 0x2D1F },
  22420. -{ 0x10C0, 0x10C0, 0x2D20 },
  22421. -{ 0x10C1, 0x10C1, 0x2D21 },
  22422. -{ 0x10C2, 0x10C2, 0x2D22 },
  22423. -{ 0x10C3, 0x10C3, 0x2D23 },
  22424. -{ 0x10C4, 0x10C4, 0x2D24 },
  22425. -{ 0x10C5, 0x10C5, 0x2D25 },
  22426. -{ 0x10D0, 0x10D0, 0x10D0 },
  22427. -{ 0x10D1, 0x10D1, 0x10D1 },
  22428. -{ 0x10D2, 0x10D2, 0x10D2 },
  22429. -{ 0x10D3, 0x10D3, 0x10D3 },
  22430. -{ 0x10D4, 0x10D4, 0x10D4 },
  22431. -{ 0x10D5, 0x10D5, 0x10D5 },
  22432. -{ 0x10D6, 0x10D6, 0x10D6 },
  22433. -{ 0x10D7, 0x10D7, 0x10D7 },
  22434. -{ 0x10D8, 0x10D8, 0x10D8 },
  22435. -{ 0x10D9, 0x10D9, 0x10D9 },
  22436. -{ 0x10DA, 0x10DA, 0x10DA },
  22437. -{ 0x10DB, 0x10DB, 0x10DB },
  22438. -{ 0x10DC, 0x10DC, 0x10DC },
  22439. -{ 0x10DD, 0x10DD, 0x10DD },
  22440. -{ 0x10DE, 0x10DE, 0x10DE },
  22441. -{ 0x10DF, 0x10DF, 0x10DF },
  22442. -{ 0x10E0, 0x10E0, 0x10E0 },
  22443. -{ 0x10E1, 0x10E1, 0x10E1 },
  22444. -{ 0x10E2, 0x10E2, 0x10E2 },
  22445. -{ 0x10E3, 0x10E3, 0x10E3 },
  22446. -{ 0x10E4, 0x10E4, 0x10E4 },
  22447. -{ 0x10E5, 0x10E5, 0x10E5 },
  22448. -{ 0x10E6, 0x10E6, 0x10E6 },
  22449. -{ 0x10E7, 0x10E7, 0x10E7 },
  22450. -{ 0x10E8, 0x10E8, 0x10E8 },
  22451. -{ 0x10E9, 0x10E9, 0x10E9 },
  22452. -{ 0x10EA, 0x10EA, 0x10EA },
  22453. -{ 0x10EB, 0x10EB, 0x10EB },
  22454. -{ 0x10EC, 0x10EC, 0x10EC },
  22455. -{ 0x10ED, 0x10ED, 0x10ED },
  22456. -{ 0x10EE, 0x10EE, 0x10EE },
  22457. -{ 0x10EF, 0x10EF, 0x10EF },
  22458. -{ 0x10F0, 0x10F0, 0x10F0 },
  22459. -{ 0x10F1, 0x10F1, 0x10F1 },
  22460. -{ 0x10F2, 0x10F2, 0x10F2 },
  22461. -{ 0x10F3, 0x10F3, 0x10F3 },
  22462. -{ 0x10F4, 0x10F4, 0x10F4 },
  22463. -{ 0x10F5, 0x10F5, 0x10F5 },
  22464. -{ 0x10F6, 0x10F6, 0x10F6 },
  22465. -{ 0x10F7, 0x10F7, 0x10F7 },
  22466. -{ 0x10F8, 0x10F8, 0x10F8 },
  22467. -{ 0x10F9, 0x10F9, 0x10F9 },
  22468. -{ 0x10FA, 0x10FA, 0x10FA },
  22469. -{ 0x10FC, 0x10FC, 0x10FC },
  22470. -{ 0x1100, 0x1100, 0x1100 },
  22471. -{ 0x1101, 0x1101, 0x1101 },
  22472. -{ 0x1102, 0x1102, 0x1102 },
  22473. -{ 0x1103, 0x1103, 0x1103 },
  22474. -{ 0x1104, 0x1104, 0x1104 },
  22475. -{ 0x1105, 0x1105, 0x1105 },
  22476. -{ 0x1106, 0x1106, 0x1106 },
  22477. -{ 0x1107, 0x1107, 0x1107 },
  22478. -{ 0x1108, 0x1108, 0x1108 },
  22479. -{ 0x1109, 0x1109, 0x1109 },
  22480. -{ 0x110A, 0x110A, 0x110A },
  22481. -{ 0x110B, 0x110B, 0x110B },
  22482. -{ 0x110C, 0x110C, 0x110C },
  22483. -{ 0x110D, 0x110D, 0x110D },
  22484. -{ 0x110E, 0x110E, 0x110E },
  22485. -{ 0x110F, 0x110F, 0x110F },
  22486. -{ 0x1110, 0x1110, 0x1110 },
  22487. -{ 0x1111, 0x1111, 0x1111 },
  22488. -{ 0x1112, 0x1112, 0x1112 },
  22489. -{ 0x1113, 0x1113, 0x1113 },
  22490. -{ 0x1114, 0x1114, 0x1114 },
  22491. -{ 0x1115, 0x1115, 0x1115 },
  22492. -{ 0x1116, 0x1116, 0x1116 },
  22493. -{ 0x1117, 0x1117, 0x1117 },
  22494. -{ 0x1118, 0x1118, 0x1118 },
  22495. -{ 0x1119, 0x1119, 0x1119 },
  22496. -{ 0x111A, 0x111A, 0x111A },
  22497. -{ 0x111B, 0x111B, 0x111B },
  22498. -{ 0x111C, 0x111C, 0x111C },
  22499. -{ 0x111D, 0x111D, 0x111D },
  22500. -{ 0x111E, 0x111E, 0x111E },
  22501. -{ 0x111F, 0x111F, 0x111F },
  22502. -{ 0x1120, 0x1120, 0x1120 },
  22503. -{ 0x1121, 0x1121, 0x1121 },
  22504. -{ 0x1122, 0x1122, 0x1122 },
  22505. -{ 0x1123, 0x1123, 0x1123 },
  22506. -{ 0x1124, 0x1124, 0x1124 },
  22507. -{ 0x1125, 0x1125, 0x1125 },
  22508. -{ 0x1126, 0x1126, 0x1126 },
  22509. -{ 0x1127, 0x1127, 0x1127 },
  22510. -{ 0x1128, 0x1128, 0x1128 },
  22511. -{ 0x1129, 0x1129, 0x1129 },
  22512. -{ 0x112A, 0x112A, 0x112A },
  22513. -{ 0x112B, 0x112B, 0x112B },
  22514. -{ 0x112C, 0x112C, 0x112C },
  22515. -{ 0x112D, 0x112D, 0x112D },
  22516. -{ 0x112E, 0x112E, 0x112E },
  22517. -{ 0x112F, 0x112F, 0x112F },
  22518. -{ 0x1130, 0x1130, 0x1130 },
  22519. -{ 0x1131, 0x1131, 0x1131 },
  22520. -{ 0x1132, 0x1132, 0x1132 },
  22521. -{ 0x1133, 0x1133, 0x1133 },
  22522. -{ 0x1134, 0x1134, 0x1134 },
  22523. -{ 0x1135, 0x1135, 0x1135 },
  22524. -{ 0x1136, 0x1136, 0x1136 },
  22525. -{ 0x1137, 0x1137, 0x1137 },
  22526. -{ 0x1138, 0x1138, 0x1138 },
  22527. -{ 0x1139, 0x1139, 0x1139 },
  22528. -{ 0x113A, 0x113A, 0x113A },
  22529. -{ 0x113B, 0x113B, 0x113B },
  22530. -{ 0x113C, 0x113C, 0x113C },
  22531. -{ 0x113D, 0x113D, 0x113D },
  22532. -{ 0x113E, 0x113E, 0x113E },
  22533. -{ 0x113F, 0x113F, 0x113F },
  22534. -{ 0x1140, 0x1140, 0x1140 },
  22535. -{ 0x1141, 0x1141, 0x1141 },
  22536. -{ 0x1142, 0x1142, 0x1142 },
  22537. -{ 0x1143, 0x1143, 0x1143 },
  22538. -{ 0x1144, 0x1144, 0x1144 },
  22539. -{ 0x1145, 0x1145, 0x1145 },
  22540. -{ 0x1146, 0x1146, 0x1146 },
  22541. -{ 0x1147, 0x1147, 0x1147 },
  22542. -{ 0x1148, 0x1148, 0x1148 },
  22543. -{ 0x1149, 0x1149, 0x1149 },
  22544. -{ 0x114A, 0x114A, 0x114A },
  22545. -{ 0x114B, 0x114B, 0x114B },
  22546. -{ 0x114C, 0x114C, 0x114C },
  22547. -{ 0x114D, 0x114D, 0x114D },
  22548. -{ 0x114E, 0x114E, 0x114E },
  22549. -{ 0x114F, 0x114F, 0x114F },
  22550. -{ 0x1150, 0x1150, 0x1150 },
  22551. -{ 0x1151, 0x1151, 0x1151 },
  22552. -{ 0x1152, 0x1152, 0x1152 },
  22553. -{ 0x1153, 0x1153, 0x1153 },
  22554. -{ 0x1154, 0x1154, 0x1154 },
  22555. -{ 0x1155, 0x1155, 0x1155 },
  22556. -{ 0x1156, 0x1156, 0x1156 },
  22557. -{ 0x1157, 0x1157, 0x1157 },
  22558. -{ 0x1158, 0x1158, 0x1158 },
  22559. -{ 0x1159, 0x1159, 0x1159 },
  22560. -{ 0x115F, 0x115F, 0x115F },
  22561. -{ 0x1160, 0x1160, 0x1160 },
  22562. -{ 0x1161, 0x1161, 0x1161 },
  22563. -{ 0x1162, 0x1162, 0x1162 },
  22564. -{ 0x1163, 0x1163, 0x1163 },
  22565. -{ 0x1164, 0x1164, 0x1164 },
  22566. -{ 0x1165, 0x1165, 0x1165 },
  22567. -{ 0x1166, 0x1166, 0x1166 },
  22568. -{ 0x1167, 0x1167, 0x1167 },
  22569. -{ 0x1168, 0x1168, 0x1168 },
  22570. -{ 0x1169, 0x1169, 0x1169 },
  22571. -{ 0x116A, 0x116A, 0x116A },
  22572. -{ 0x116B, 0x116B, 0x116B },
  22573. -{ 0x116C, 0x116C, 0x116C },
  22574. -{ 0x116D, 0x116D, 0x116D },
  22575. -{ 0x116E, 0x116E, 0x116E },
  22576. -{ 0x116F, 0x116F, 0x116F },
  22577. -{ 0x1170, 0x1170, 0x1170 },
  22578. -{ 0x1171, 0x1171, 0x1171 },
  22579. -{ 0x1172, 0x1172, 0x1172 },
  22580. -{ 0x1173, 0x1173, 0x1173 },
  22581. -{ 0x1174, 0x1174, 0x1174 },
  22582. -{ 0x1175, 0x1175, 0x1175 },
  22583. -{ 0x1176, 0x1176, 0x1176 },
  22584. -{ 0x1177, 0x1177, 0x1177 },
  22585. -{ 0x1178, 0x1178, 0x1178 },
  22586. -{ 0x1179, 0x1179, 0x1179 },
  22587. -{ 0x117A, 0x117A, 0x117A },
  22588. -{ 0x117B, 0x117B, 0x117B },
  22589. -{ 0x117C, 0x117C, 0x117C },
  22590. -{ 0x117D, 0x117D, 0x117D },
  22591. -{ 0x117E, 0x117E, 0x117E },
  22592. -{ 0x117F, 0x117F, 0x117F },
  22593. -{ 0x1180, 0x1180, 0x1180 },
  22594. -{ 0x1181, 0x1181, 0x1181 },
  22595. -{ 0x1182, 0x1182, 0x1182 },
  22596. -{ 0x1183, 0x1183, 0x1183 },
  22597. -{ 0x1184, 0x1184, 0x1184 },
  22598. -{ 0x1185, 0x1185, 0x1185 },
  22599. -{ 0x1186, 0x1186, 0x1186 },
  22600. -{ 0x1187, 0x1187, 0x1187 },
  22601. -{ 0x1188, 0x1188, 0x1188 },
  22602. -{ 0x1189, 0x1189, 0x1189 },
  22603. -{ 0x118A, 0x118A, 0x118A },
  22604. -{ 0x118B, 0x118B, 0x118B },
  22605. -{ 0x118C, 0x118C, 0x118C },
  22606. -{ 0x118D, 0x118D, 0x118D },
  22607. -{ 0x118E, 0x118E, 0x118E },
  22608. -{ 0x118F, 0x118F, 0x118F },
  22609. -{ 0x1190, 0x1190, 0x1190 },
  22610. -{ 0x1191, 0x1191, 0x1191 },
  22611. -{ 0x1192, 0x1192, 0x1192 },
  22612. -{ 0x1193, 0x1193, 0x1193 },
  22613. -{ 0x1194, 0x1194, 0x1194 },
  22614. -{ 0x1195, 0x1195, 0x1195 },
  22615. -{ 0x1196, 0x1196, 0x1196 },
  22616. -{ 0x1197, 0x1197, 0x1197 },
  22617. -{ 0x1198, 0x1198, 0x1198 },
  22618. -{ 0x1199, 0x1199, 0x1199 },
  22619. -{ 0x119A, 0x119A, 0x119A },
  22620. -{ 0x119B, 0x119B, 0x119B },
  22621. -{ 0x119C, 0x119C, 0x119C },
  22622. -{ 0x119D, 0x119D, 0x119D },
  22623. -{ 0x119E, 0x119E, 0x119E },
  22624. -{ 0x119F, 0x119F, 0x119F },
  22625. -{ 0x11A0, 0x11A0, 0x11A0 },
  22626. -{ 0x11A1, 0x11A1, 0x11A1 },
  22627. -{ 0x11A2, 0x11A2, 0x11A2 },
  22628. -{ 0x11A8, 0x11A8, 0x11A8 },
  22629. -{ 0x11A9, 0x11A9, 0x11A9 },
  22630. -{ 0x11AA, 0x11AA, 0x11AA },
  22631. -{ 0x11AB, 0x11AB, 0x11AB },
  22632. -{ 0x11AC, 0x11AC, 0x11AC },
  22633. -{ 0x11AD, 0x11AD, 0x11AD },
  22634. -{ 0x11AE, 0x11AE, 0x11AE },
  22635. -{ 0x11AF, 0x11AF, 0x11AF },
  22636. -{ 0x11B0, 0x11B0, 0x11B0 },
  22637. -{ 0x11B1, 0x11B1, 0x11B1 },
  22638. -{ 0x11B2, 0x11B2, 0x11B2 },
  22639. -{ 0x11B3, 0x11B3, 0x11B3 },
  22640. -{ 0x11B4, 0x11B4, 0x11B4 },
  22641. -{ 0x11B5, 0x11B5, 0x11B5 },
  22642. -{ 0x11B6, 0x11B6, 0x11B6 },
  22643. -{ 0x11B7, 0x11B7, 0x11B7 },
  22644. -{ 0x11B8, 0x11B8, 0x11B8 },
  22645. -{ 0x11B9, 0x11B9, 0x11B9 },
  22646. -{ 0x11BA, 0x11BA, 0x11BA },
  22647. -{ 0x11BB, 0x11BB, 0x11BB },
  22648. -{ 0x11BC, 0x11BC, 0x11BC },
  22649. -{ 0x11BD, 0x11BD, 0x11BD },
  22650. -{ 0x11BE, 0x11BE, 0x11BE },
  22651. -{ 0x11BF, 0x11BF, 0x11BF },
  22652. -{ 0x11C0, 0x11C0, 0x11C0 },
  22653. -{ 0x11C1, 0x11C1, 0x11C1 },
  22654. -{ 0x11C2, 0x11C2, 0x11C2 },
  22655. -{ 0x11C3, 0x11C3, 0x11C3 },
  22656. -{ 0x11C4, 0x11C4, 0x11C4 },
  22657. -{ 0x11C5, 0x11C5, 0x11C5 },
  22658. -{ 0x11C6, 0x11C6, 0x11C6 },
  22659. -{ 0x11C7, 0x11C7, 0x11C7 },
  22660. -{ 0x11C8, 0x11C8, 0x11C8 },
  22661. -{ 0x11C9, 0x11C9, 0x11C9 },
  22662. -{ 0x11CA, 0x11CA, 0x11CA },
  22663. -{ 0x11CB, 0x11CB, 0x11CB },
  22664. -{ 0x11CC, 0x11CC, 0x11CC },
  22665. -{ 0x11CD, 0x11CD, 0x11CD },
  22666. -{ 0x11CE, 0x11CE, 0x11CE },
  22667. -{ 0x11CF, 0x11CF, 0x11CF },
  22668. -{ 0x11D0, 0x11D0, 0x11D0 },
  22669. -{ 0x11D1, 0x11D1, 0x11D1 },
  22670. -{ 0x11D2, 0x11D2, 0x11D2 },
  22671. -{ 0x11D3, 0x11D3, 0x11D3 },
  22672. -{ 0x11D4, 0x11D4, 0x11D4 },
  22673. -{ 0x11D5, 0x11D5, 0x11D5 },
  22674. -{ 0x11D6, 0x11D6, 0x11D6 },
  22675. -{ 0x11D7, 0x11D7, 0x11D7 },
  22676. -{ 0x11D8, 0x11D8, 0x11D8 },
  22677. -{ 0x11D9, 0x11D9, 0x11D9 },
  22678. -{ 0x11DA, 0x11DA, 0x11DA },
  22679. -{ 0x11DB, 0x11DB, 0x11DB },
  22680. -{ 0x11DC, 0x11DC, 0x11DC },
  22681. -{ 0x11DD, 0x11DD, 0x11DD },
  22682. -{ 0x11DE, 0x11DE, 0x11DE },
  22683. -{ 0x11DF, 0x11DF, 0x11DF },
  22684. -{ 0x11E0, 0x11E0, 0x11E0 },
  22685. -{ 0x11E1, 0x11E1, 0x11E1 },
  22686. -{ 0x11E2, 0x11E2, 0x11E2 },
  22687. -{ 0x11E3, 0x11E3, 0x11E3 },
  22688. -{ 0x11E4, 0x11E4, 0x11E4 },
  22689. -{ 0x11E5, 0x11E5, 0x11E5 },
  22690. -{ 0x11E6, 0x11E6, 0x11E6 },
  22691. -{ 0x11E7, 0x11E7, 0x11E7 },
  22692. -{ 0x11E8, 0x11E8, 0x11E8 },
  22693. -{ 0x11E9, 0x11E9, 0x11E9 },
  22694. -{ 0x11EA, 0x11EA, 0x11EA },
  22695. -{ 0x11EB, 0x11EB, 0x11EB },
  22696. -{ 0x11EC, 0x11EC, 0x11EC },
  22697. -{ 0x11ED, 0x11ED, 0x11ED },
  22698. -{ 0x11EE, 0x11EE, 0x11EE },
  22699. -{ 0x11EF, 0x11EF, 0x11EF },
  22700. -{ 0x11F0, 0x11F0, 0x11F0 },
  22701. -{ 0x11F1, 0x11F1, 0x11F1 },
  22702. -{ 0x11F2, 0x11F2, 0x11F2 },
  22703. -{ 0x11F3, 0x11F3, 0x11F3 },
  22704. -{ 0x11F4, 0x11F4, 0x11F4 },
  22705. -{ 0x11F5, 0x11F5, 0x11F5 },
  22706. -{ 0x11F6, 0x11F6, 0x11F6 },
  22707. -{ 0x11F7, 0x11F7, 0x11F7 },
  22708. -{ 0x11F8, 0x11F8, 0x11F8 },
  22709. -{ 0x11F9, 0x11F9, 0x11F9 },
  22710. -{ 0x1200, 0x1200, 0x1200 },
  22711. -{ 0x1201, 0x1201, 0x1201 },
  22712. -{ 0x1202, 0x1202, 0x1202 },
  22713. -{ 0x1203, 0x1203, 0x1203 },
  22714. -{ 0x1204, 0x1204, 0x1204 },
  22715. -{ 0x1205, 0x1205, 0x1205 },
  22716. -{ 0x1206, 0x1206, 0x1206 },
  22717. -{ 0x1207, 0x1207, 0x1207 },
  22718. -{ 0x1208, 0x1208, 0x1208 },
  22719. -{ 0x1209, 0x1209, 0x1209 },
  22720. -{ 0x120A, 0x120A, 0x120A },
  22721. -{ 0x120B, 0x120B, 0x120B },
  22722. -{ 0x120C, 0x120C, 0x120C },
  22723. -{ 0x120D, 0x120D, 0x120D },
  22724. -{ 0x120E, 0x120E, 0x120E },
  22725. -{ 0x120F, 0x120F, 0x120F },
  22726. -{ 0x1210, 0x1210, 0x1210 },
  22727. -{ 0x1211, 0x1211, 0x1211 },
  22728. -{ 0x1212, 0x1212, 0x1212 },
  22729. -{ 0x1213, 0x1213, 0x1213 },
  22730. -{ 0x1214, 0x1214, 0x1214 },
  22731. -{ 0x1215, 0x1215, 0x1215 },
  22732. -{ 0x1216, 0x1216, 0x1216 },
  22733. -{ 0x1217, 0x1217, 0x1217 },
  22734. -{ 0x1218, 0x1218, 0x1218 },
  22735. -{ 0x1219, 0x1219, 0x1219 },
  22736. -{ 0x121A, 0x121A, 0x121A },
  22737. -{ 0x121B, 0x121B, 0x121B },
  22738. -{ 0x121C, 0x121C, 0x121C },
  22739. -{ 0x121D, 0x121D, 0x121D },
  22740. -{ 0x121E, 0x121E, 0x121E },
  22741. -{ 0x121F, 0x121F, 0x121F },
  22742. -{ 0x1220, 0x1220, 0x1220 },
  22743. -{ 0x1221, 0x1221, 0x1221 },
  22744. -{ 0x1222, 0x1222, 0x1222 },
  22745. -{ 0x1223, 0x1223, 0x1223 },
  22746. -{ 0x1224, 0x1224, 0x1224 },
  22747. -{ 0x1225, 0x1225, 0x1225 },
  22748. -{ 0x1226, 0x1226, 0x1226 },
  22749. -{ 0x1227, 0x1227, 0x1227 },
  22750. -{ 0x1228, 0x1228, 0x1228 },
  22751. -{ 0x1229, 0x1229, 0x1229 },
  22752. -{ 0x122A, 0x122A, 0x122A },
  22753. -{ 0x122B, 0x122B, 0x122B },
  22754. -{ 0x122C, 0x122C, 0x122C },
  22755. -{ 0x122D, 0x122D, 0x122D },
  22756. -{ 0x122E, 0x122E, 0x122E },
  22757. -{ 0x122F, 0x122F, 0x122F },
  22758. -{ 0x1230, 0x1230, 0x1230 },
  22759. -{ 0x1231, 0x1231, 0x1231 },
  22760. -{ 0x1232, 0x1232, 0x1232 },
  22761. -{ 0x1233, 0x1233, 0x1233 },
  22762. -{ 0x1234, 0x1234, 0x1234 },
  22763. -{ 0x1235, 0x1235, 0x1235 },
  22764. -{ 0x1236, 0x1236, 0x1236 },
  22765. -{ 0x1237, 0x1237, 0x1237 },
  22766. -{ 0x1238, 0x1238, 0x1238 },
  22767. -{ 0x1239, 0x1239, 0x1239 },
  22768. -{ 0x123A, 0x123A, 0x123A },
  22769. -{ 0x123B, 0x123B, 0x123B },
  22770. -{ 0x123C, 0x123C, 0x123C },
  22771. -{ 0x123D, 0x123D, 0x123D },
  22772. -{ 0x123E, 0x123E, 0x123E },
  22773. -{ 0x123F, 0x123F, 0x123F },
  22774. -{ 0x1240, 0x1240, 0x1240 },
  22775. -{ 0x1241, 0x1241, 0x1241 },
  22776. -{ 0x1242, 0x1242, 0x1242 },
  22777. -{ 0x1243, 0x1243, 0x1243 },
  22778. -{ 0x1244, 0x1244, 0x1244 },
  22779. -{ 0x1245, 0x1245, 0x1245 },
  22780. -{ 0x1246, 0x1246, 0x1246 },
  22781. -{ 0x1247, 0x1247, 0x1247 },
  22782. -{ 0x1248, 0x1248, 0x1248 },
  22783. -{ 0x124A, 0x124A, 0x124A },
  22784. -{ 0x124B, 0x124B, 0x124B },
  22785. -{ 0x124C, 0x124C, 0x124C },
  22786. -{ 0x124D, 0x124D, 0x124D },
  22787. -{ 0x1250, 0x1250, 0x1250 },
  22788. -{ 0x1251, 0x1251, 0x1251 },
  22789. -{ 0x1252, 0x1252, 0x1252 },
  22790. -{ 0x1253, 0x1253, 0x1253 },
  22791. -{ 0x1254, 0x1254, 0x1254 },
  22792. -{ 0x1255, 0x1255, 0x1255 },
  22793. -{ 0x1256, 0x1256, 0x1256 },
  22794. -{ 0x1258, 0x1258, 0x1258 },
  22795. -{ 0x125A, 0x125A, 0x125A },
  22796. -{ 0x125B, 0x125B, 0x125B },
  22797. -{ 0x125C, 0x125C, 0x125C },
  22798. -{ 0x125D, 0x125D, 0x125D },
  22799. -{ 0x1260, 0x1260, 0x1260 },
  22800. -{ 0x1261, 0x1261, 0x1261 },
  22801. -{ 0x1262, 0x1262, 0x1262 },
  22802. -{ 0x1263, 0x1263, 0x1263 },
  22803. -{ 0x1264, 0x1264, 0x1264 },
  22804. -{ 0x1265, 0x1265, 0x1265 },
  22805. -{ 0x1266, 0x1266, 0x1266 },
  22806. -{ 0x1267, 0x1267, 0x1267 },
  22807. -{ 0x1268, 0x1268, 0x1268 },
  22808. -{ 0x1269, 0x1269, 0x1269 },
  22809. -{ 0x126A, 0x126A, 0x126A },
  22810. -{ 0x126B, 0x126B, 0x126B },
  22811. -{ 0x126C, 0x126C, 0x126C },
  22812. -{ 0x126D, 0x126D, 0x126D },
  22813. -{ 0x126E, 0x126E, 0x126E },
  22814. -{ 0x126F, 0x126F, 0x126F },
  22815. -{ 0x1270, 0x1270, 0x1270 },
  22816. -{ 0x1271, 0x1271, 0x1271 },
  22817. -{ 0x1272, 0x1272, 0x1272 },
  22818. -{ 0x1273, 0x1273, 0x1273 },
  22819. -{ 0x1274, 0x1274, 0x1274 },
  22820. -{ 0x1275, 0x1275, 0x1275 },
  22821. -{ 0x1276, 0x1276, 0x1276 },
  22822. -{ 0x1277, 0x1277, 0x1277 },
  22823. -{ 0x1278, 0x1278, 0x1278 },
  22824. -{ 0x1279, 0x1279, 0x1279 },
  22825. -{ 0x127A, 0x127A, 0x127A },
  22826. -{ 0x127B, 0x127B, 0x127B },
  22827. -{ 0x127C, 0x127C, 0x127C },
  22828. -{ 0x127D, 0x127D, 0x127D },
  22829. -{ 0x127E, 0x127E, 0x127E },
  22830. -{ 0x127F, 0x127F, 0x127F },
  22831. -{ 0x1280, 0x1280, 0x1280 },
  22832. -{ 0x1281, 0x1281, 0x1281 },
  22833. -{ 0x1282, 0x1282, 0x1282 },
  22834. -{ 0x1283, 0x1283, 0x1283 },
  22835. -{ 0x1284, 0x1284, 0x1284 },
  22836. -{ 0x1285, 0x1285, 0x1285 },
  22837. -{ 0x1286, 0x1286, 0x1286 },
  22838. -{ 0x1287, 0x1287, 0x1287 },
  22839. -{ 0x1288, 0x1288, 0x1288 },
  22840. -{ 0x128A, 0x128A, 0x128A },
  22841. -{ 0x128B, 0x128B, 0x128B },
  22842. -{ 0x128C, 0x128C, 0x128C },
  22843. -{ 0x128D, 0x128D, 0x128D },
  22844. -{ 0x1290, 0x1290, 0x1290 },
  22845. -{ 0x1291, 0x1291, 0x1291 },
  22846. -{ 0x1292, 0x1292, 0x1292 },
  22847. -{ 0x1293, 0x1293, 0x1293 },
  22848. -{ 0x1294, 0x1294, 0x1294 },
  22849. -{ 0x1295, 0x1295, 0x1295 },
  22850. -{ 0x1296, 0x1296, 0x1296 },
  22851. -{ 0x1297, 0x1297, 0x1297 },
  22852. -{ 0x1298, 0x1298, 0x1298 },
  22853. -{ 0x1299, 0x1299, 0x1299 },
  22854. -{ 0x129A, 0x129A, 0x129A },
  22855. -{ 0x129B, 0x129B, 0x129B },
  22856. -{ 0x129C, 0x129C, 0x129C },
  22857. -{ 0x129D, 0x129D, 0x129D },
  22858. -{ 0x129E, 0x129E, 0x129E },
  22859. -{ 0x129F, 0x129F, 0x129F },
  22860. -{ 0x12A0, 0x12A0, 0x12A0 },
  22861. -{ 0x12A1, 0x12A1, 0x12A1 },
  22862. -{ 0x12A2, 0x12A2, 0x12A2 },
  22863. -{ 0x12A3, 0x12A3, 0x12A3 },
  22864. -{ 0x12A4, 0x12A4, 0x12A4 },
  22865. -{ 0x12A5, 0x12A5, 0x12A5 },
  22866. -{ 0x12A6, 0x12A6, 0x12A6 },
  22867. -{ 0x12A7, 0x12A7, 0x12A7 },
  22868. -{ 0x12A8, 0x12A8, 0x12A8 },
  22869. -{ 0x12A9, 0x12A9, 0x12A9 },
  22870. -{ 0x12AA, 0x12AA, 0x12AA },
  22871. -{ 0x12AB, 0x12AB, 0x12AB },
  22872. -{ 0x12AC, 0x12AC, 0x12AC },
  22873. -{ 0x12AD, 0x12AD, 0x12AD },
  22874. -{ 0x12AE, 0x12AE, 0x12AE },
  22875. -{ 0x12AF, 0x12AF, 0x12AF },
  22876. -{ 0x12B0, 0x12B0, 0x12B0 },
  22877. -{ 0x12B2, 0x12B2, 0x12B2 },
  22878. -{ 0x12B3, 0x12B3, 0x12B3 },
  22879. -{ 0x12B4, 0x12B4, 0x12B4 },
  22880. -{ 0x12B5, 0x12B5, 0x12B5 },
  22881. -{ 0x12B8, 0x12B8, 0x12B8 },
  22882. -{ 0x12B9, 0x12B9, 0x12B9 },
  22883. -{ 0x12BA, 0x12BA, 0x12BA },
  22884. -{ 0x12BB, 0x12BB, 0x12BB },
  22885. -{ 0x12BC, 0x12BC, 0x12BC },
  22886. -{ 0x12BD, 0x12BD, 0x12BD },
  22887. -{ 0x12BE, 0x12BE, 0x12BE },
  22888. -{ 0x12C0, 0x12C0, 0x12C0 },
  22889. -{ 0x12C2, 0x12C2, 0x12C2 },
  22890. -{ 0x12C3, 0x12C3, 0x12C3 },
  22891. -{ 0x12C4, 0x12C4, 0x12C4 },
  22892. -{ 0x12C5, 0x12C5, 0x12C5 },
  22893. -{ 0x12C8, 0x12C8, 0x12C8 },
  22894. -{ 0x12C9, 0x12C9, 0x12C9 },
  22895. -{ 0x12CA, 0x12CA, 0x12CA },
  22896. -{ 0x12CB, 0x12CB, 0x12CB },
  22897. -{ 0x12CC, 0x12CC, 0x12CC },
  22898. -{ 0x12CD, 0x12CD, 0x12CD },
  22899. -{ 0x12CE, 0x12CE, 0x12CE },
  22900. -{ 0x12CF, 0x12CF, 0x12CF },
  22901. -{ 0x12D0, 0x12D0, 0x12D0 },
  22902. -{ 0x12D1, 0x12D1, 0x12D1 },
  22903. -{ 0x12D2, 0x12D2, 0x12D2 },
  22904. -{ 0x12D3, 0x12D3, 0x12D3 },
  22905. -{ 0x12D4, 0x12D4, 0x12D4 },
  22906. -{ 0x12D5, 0x12D5, 0x12D5 },
  22907. -{ 0x12D6, 0x12D6, 0x12D6 },
  22908. -{ 0x12D8, 0x12D8, 0x12D8 },
  22909. -{ 0x12D9, 0x12D9, 0x12D9 },
  22910. -{ 0x12DA, 0x12DA, 0x12DA },
  22911. -{ 0x12DB, 0x12DB, 0x12DB },
  22912. -{ 0x12DC, 0x12DC, 0x12DC },
  22913. -{ 0x12DD, 0x12DD, 0x12DD },
  22914. -{ 0x12DE, 0x12DE, 0x12DE },
  22915. -{ 0x12DF, 0x12DF, 0x12DF },
  22916. -{ 0x12E0, 0x12E0, 0x12E0 },
  22917. -{ 0x12E1, 0x12E1, 0x12E1 },
  22918. -{ 0x12E2, 0x12E2, 0x12E2 },
  22919. -{ 0x12E3, 0x12E3, 0x12E3 },
  22920. -{ 0x12E4, 0x12E4, 0x12E4 },
  22921. -{ 0x12E5, 0x12E5, 0x12E5 },
  22922. -{ 0x12E6, 0x12E6, 0x12E6 },
  22923. -{ 0x12E7, 0x12E7, 0x12E7 },
  22924. -{ 0x12E8, 0x12E8, 0x12E8 },
  22925. -{ 0x12E9, 0x12E9, 0x12E9 },
  22926. -{ 0x12EA, 0x12EA, 0x12EA },
  22927. -{ 0x12EB, 0x12EB, 0x12EB },
  22928. -{ 0x12EC, 0x12EC, 0x12EC },
  22929. -{ 0x12ED, 0x12ED, 0x12ED },
  22930. -{ 0x12EE, 0x12EE, 0x12EE },
  22931. -{ 0x12EF, 0x12EF, 0x12EF },
  22932. -{ 0x12F0, 0x12F0, 0x12F0 },
  22933. -{ 0x12F1, 0x12F1, 0x12F1 },
  22934. -{ 0x12F2, 0x12F2, 0x12F2 },
  22935. -{ 0x12F3, 0x12F3, 0x12F3 },
  22936. -{ 0x12F4, 0x12F4, 0x12F4 },
  22937. -{ 0x12F5, 0x12F5, 0x12F5 },
  22938. -{ 0x12F6, 0x12F6, 0x12F6 },
  22939. -{ 0x12F7, 0x12F7, 0x12F7 },
  22940. -{ 0x12F8, 0x12F8, 0x12F8 },
  22941. -{ 0x12F9, 0x12F9, 0x12F9 },
  22942. -{ 0x12FA, 0x12FA, 0x12FA },
  22943. -{ 0x12FB, 0x12FB, 0x12FB },
  22944. -{ 0x12FC, 0x12FC, 0x12FC },
  22945. -{ 0x12FD, 0x12FD, 0x12FD },
  22946. -{ 0x12FE, 0x12FE, 0x12FE },
  22947. -{ 0x12FF, 0x12FF, 0x12FF },
  22948. -{ 0x1300, 0x1300, 0x1300 },
  22949. -{ 0x1301, 0x1301, 0x1301 },
  22950. -{ 0x1302, 0x1302, 0x1302 },
  22951. -{ 0x1303, 0x1303, 0x1303 },
  22952. -{ 0x1304, 0x1304, 0x1304 },
  22953. -{ 0x1305, 0x1305, 0x1305 },
  22954. -{ 0x1306, 0x1306, 0x1306 },
  22955. -{ 0x1307, 0x1307, 0x1307 },
  22956. -{ 0x1308, 0x1308, 0x1308 },
  22957. -{ 0x1309, 0x1309, 0x1309 },
  22958. -{ 0x130A, 0x130A, 0x130A },
  22959. -{ 0x130B, 0x130B, 0x130B },
  22960. -{ 0x130C, 0x130C, 0x130C },
  22961. -{ 0x130D, 0x130D, 0x130D },
  22962. -{ 0x130E, 0x130E, 0x130E },
  22963. -{ 0x130F, 0x130F, 0x130F },
  22964. -{ 0x1310, 0x1310, 0x1310 },
  22965. -{ 0x1312, 0x1312, 0x1312 },
  22966. -{ 0x1313, 0x1313, 0x1313 },
  22967. -{ 0x1314, 0x1314, 0x1314 },
  22968. -{ 0x1315, 0x1315, 0x1315 },
  22969. -{ 0x1318, 0x1318, 0x1318 },
  22970. -{ 0x1319, 0x1319, 0x1319 },
  22971. -{ 0x131A, 0x131A, 0x131A },
  22972. -{ 0x131B, 0x131B, 0x131B },
  22973. -{ 0x131C, 0x131C, 0x131C },
  22974. -{ 0x131D, 0x131D, 0x131D },
  22975. -{ 0x131E, 0x131E, 0x131E },
  22976. -{ 0x131F, 0x131F, 0x131F },
  22977. -{ 0x1320, 0x1320, 0x1320 },
  22978. -{ 0x1321, 0x1321, 0x1321 },
  22979. -{ 0x1322, 0x1322, 0x1322 },
  22980. -{ 0x1323, 0x1323, 0x1323 },
  22981. -{ 0x1324, 0x1324, 0x1324 },
  22982. -{ 0x1325, 0x1325, 0x1325 },
  22983. -{ 0x1326, 0x1326, 0x1326 },
  22984. -{ 0x1327, 0x1327, 0x1327 },
  22985. -{ 0x1328, 0x1328, 0x1328 },
  22986. -{ 0x1329, 0x1329, 0x1329 },
  22987. -{ 0x132A, 0x132A, 0x132A },
  22988. -{ 0x132B, 0x132B, 0x132B },
  22989. -{ 0x132C, 0x132C, 0x132C },
  22990. -{ 0x132D, 0x132D, 0x132D },
  22991. -{ 0x132E, 0x132E, 0x132E },
  22992. -{ 0x132F, 0x132F, 0x132F },
  22993. -{ 0x1330, 0x1330, 0x1330 },
  22994. -{ 0x1331, 0x1331, 0x1331 },
  22995. -{ 0x1332, 0x1332, 0x1332 },
  22996. -{ 0x1333, 0x1333, 0x1333 },
  22997. -{ 0x1334, 0x1334, 0x1334 },
  22998. -{ 0x1335, 0x1335, 0x1335 },
  22999. -{ 0x1336, 0x1336, 0x1336 },
  23000. -{ 0x1337, 0x1337, 0x1337 },
  23001. -{ 0x1338, 0x1338, 0x1338 },
  23002. -{ 0x1339, 0x1339, 0x1339 },
  23003. -{ 0x133A, 0x133A, 0x133A },
  23004. -{ 0x133B, 0x133B, 0x133B },
  23005. -{ 0x133C, 0x133C, 0x133C },
  23006. -{ 0x133D, 0x133D, 0x133D },
  23007. -{ 0x133E, 0x133E, 0x133E },
  23008. -{ 0x133F, 0x133F, 0x133F },
  23009. -{ 0x1340, 0x1340, 0x1340 },
  23010. -{ 0x1341, 0x1341, 0x1341 },
  23011. -{ 0x1342, 0x1342, 0x1342 },
  23012. -{ 0x1343, 0x1343, 0x1343 },
  23013. -{ 0x1344, 0x1344, 0x1344 },
  23014. -{ 0x1345, 0x1345, 0x1345 },
  23015. -{ 0x1346, 0x1346, 0x1346 },
  23016. -{ 0x1347, 0x1347, 0x1347 },
  23017. -{ 0x1348, 0x1348, 0x1348 },
  23018. -{ 0x1349, 0x1349, 0x1349 },
  23019. -{ 0x134A, 0x134A, 0x134A },
  23020. -{ 0x134B, 0x134B, 0x134B },
  23021. -{ 0x134C, 0x134C, 0x134C },
  23022. -{ 0x134D, 0x134D, 0x134D },
  23023. -{ 0x134E, 0x134E, 0x134E },
  23024. -{ 0x134F, 0x134F, 0x134F },
  23025. -{ 0x1350, 0x1350, 0x1350 },
  23026. -{ 0x1351, 0x1351, 0x1351 },
  23027. -{ 0x1352, 0x1352, 0x1352 },
  23028. -{ 0x1353, 0x1353, 0x1353 },
  23029. -{ 0x1354, 0x1354, 0x1354 },
  23030. -{ 0x1355, 0x1355, 0x1355 },
  23031. -{ 0x1356, 0x1356, 0x1356 },
  23032. -{ 0x1357, 0x1357, 0x1357 },
  23033. -{ 0x1358, 0x1358, 0x1358 },
  23034. -{ 0x1359, 0x1359, 0x1359 },
  23035. -{ 0x135A, 0x135A, 0x135A },
  23036. -{ 0x135F, 0x135F, 0x135F },
  23037. -{ 0x1380, 0x1380, 0x1380 },
  23038. -{ 0x1381, 0x1381, 0x1381 },
  23039. -{ 0x1382, 0x1382, 0x1382 },
  23040. -{ 0x1383, 0x1383, 0x1383 },
  23041. -{ 0x1384, 0x1384, 0x1384 },
  23042. -{ 0x1385, 0x1385, 0x1385 },
  23043. -{ 0x1386, 0x1386, 0x1386 },
  23044. -{ 0x1387, 0x1387, 0x1387 },
  23045. -{ 0x1388, 0x1388, 0x1388 },
  23046. -{ 0x1389, 0x1389, 0x1389 },
  23047. -{ 0x138A, 0x138A, 0x138A },
  23048. -{ 0x138B, 0x138B, 0x138B },
  23049. -{ 0x138C, 0x138C, 0x138C },
  23050. -{ 0x138D, 0x138D, 0x138D },
  23051. -{ 0x138E, 0x138E, 0x138E },
  23052. -{ 0x138F, 0x138F, 0x138F },
  23053. -{ 0x13A0, 0x13A0, 0x13A0 },
  23054. -{ 0x13A1, 0x13A1, 0x13A1 },
  23055. -{ 0x13A2, 0x13A2, 0x13A2 },
  23056. -{ 0x13A3, 0x13A3, 0x13A3 },
  23057. -{ 0x13A4, 0x13A4, 0x13A4 },
  23058. -{ 0x13A5, 0x13A5, 0x13A5 },
  23059. -{ 0x13A6, 0x13A6, 0x13A6 },
  23060. -{ 0x13A7, 0x13A7, 0x13A7 },
  23061. -{ 0x13A8, 0x13A8, 0x13A8 },
  23062. -{ 0x13A9, 0x13A9, 0x13A9 },
  23063. -{ 0x13AA, 0x13AA, 0x13AA },
  23064. -{ 0x13AB, 0x13AB, 0x13AB },
  23065. -{ 0x13AC, 0x13AC, 0x13AC },
  23066. -{ 0x13AD, 0x13AD, 0x13AD },
  23067. -{ 0x13AE, 0x13AE, 0x13AE },
  23068. -{ 0x13AF, 0x13AF, 0x13AF },
  23069. -{ 0x13B0, 0x13B0, 0x13B0 },
  23070. -{ 0x13B1, 0x13B1, 0x13B1 },
  23071. -{ 0x13B2, 0x13B2, 0x13B2 },
  23072. -{ 0x13B3, 0x13B3, 0x13B3 },
  23073. -{ 0x13B4, 0x13B4, 0x13B4 },
  23074. -{ 0x13B5, 0x13B5, 0x13B5 },
  23075. -{ 0x13B6, 0x13B6, 0x13B6 },
  23076. -{ 0x13B7, 0x13B7, 0x13B7 },
  23077. -{ 0x13B8, 0x13B8, 0x13B8 },
  23078. -{ 0x13B9, 0x13B9, 0x13B9 },
  23079. -{ 0x13BA, 0x13BA, 0x13BA },
  23080. -{ 0x13BB, 0x13BB, 0x13BB },
  23081. -{ 0x13BC, 0x13BC, 0x13BC },
  23082. -{ 0x13BD, 0x13BD, 0x13BD },
  23083. -{ 0x13BE, 0x13BE, 0x13BE },
  23084. -{ 0x13BF, 0x13BF, 0x13BF },
  23085. -{ 0x13C0, 0x13C0, 0x13C0 },
  23086. -{ 0x13C1, 0x13C1, 0x13C1 },
  23087. -{ 0x13C2, 0x13C2, 0x13C2 },
  23088. -{ 0x13C3, 0x13C3, 0x13C3 },
  23089. -{ 0x13C4, 0x13C4, 0x13C4 },
  23090. -{ 0x13C5, 0x13C5, 0x13C5 },
  23091. -{ 0x13C6, 0x13C6, 0x13C6 },
  23092. -{ 0x13C7, 0x13C7, 0x13C7 },
  23093. -{ 0x13C8, 0x13C8, 0x13C8 },
  23094. -{ 0x13C9, 0x13C9, 0x13C9 },
  23095. -{ 0x13CA, 0x13CA, 0x13CA },
  23096. -{ 0x13CB, 0x13CB, 0x13CB },
  23097. -{ 0x13CC, 0x13CC, 0x13CC },
  23098. -{ 0x13CD, 0x13CD, 0x13CD },
  23099. -{ 0x13CE, 0x13CE, 0x13CE },
  23100. -{ 0x13CF, 0x13CF, 0x13CF },
  23101. -{ 0x13D0, 0x13D0, 0x13D0 },
  23102. -{ 0x13D1, 0x13D1, 0x13D1 },
  23103. -{ 0x13D2, 0x13D2, 0x13D2 },
  23104. -{ 0x13D3, 0x13D3, 0x13D3 },
  23105. -{ 0x13D4, 0x13D4, 0x13D4 },
  23106. -{ 0x13D5, 0x13D5, 0x13D5 },
  23107. -{ 0x13D6, 0x13D6, 0x13D6 },
  23108. -{ 0x13D7, 0x13D7, 0x13D7 },
  23109. -{ 0x13D8, 0x13D8, 0x13D8 },
  23110. -{ 0x13D9, 0x13D9, 0x13D9 },
  23111. -{ 0x13DA, 0x13DA, 0x13DA },
  23112. -{ 0x13DB, 0x13DB, 0x13DB },
  23113. -{ 0x13DC, 0x13DC, 0x13DC },
  23114. -{ 0x13DD, 0x13DD, 0x13DD },
  23115. -{ 0x13DE, 0x13DE, 0x13DE },
  23116. -{ 0x13DF, 0x13DF, 0x13DF },
  23117. -{ 0x13E0, 0x13E0, 0x13E0 },
  23118. -{ 0x13E1, 0x13E1, 0x13E1 },
  23119. -{ 0x13E2, 0x13E2, 0x13E2 },
  23120. -{ 0x13E3, 0x13E3, 0x13E3 },
  23121. -{ 0x13E4, 0x13E4, 0x13E4 },
  23122. -{ 0x13E5, 0x13E5, 0x13E5 },
  23123. -{ 0x13E6, 0x13E6, 0x13E6 },
  23124. -{ 0x13E7, 0x13E7, 0x13E7 },
  23125. -{ 0x13E8, 0x13E8, 0x13E8 },
  23126. -{ 0x13E9, 0x13E9, 0x13E9 },
  23127. -{ 0x13EA, 0x13EA, 0x13EA },
  23128. -{ 0x13EB, 0x13EB, 0x13EB },
  23129. -{ 0x13EC, 0x13EC, 0x13EC },
  23130. -{ 0x13ED, 0x13ED, 0x13ED },
  23131. -{ 0x13EE, 0x13EE, 0x13EE },
  23132. -{ 0x13EF, 0x13EF, 0x13EF },
  23133. -{ 0x13F0, 0x13F0, 0x13F0 },
  23134. -{ 0x13F1, 0x13F1, 0x13F1 },
  23135. -{ 0x13F2, 0x13F2, 0x13F2 },
  23136. -{ 0x13F3, 0x13F3, 0x13F3 },
  23137. -{ 0x13F4, 0x13F4, 0x13F4 },
  23138. -{ 0x1401, 0x1401, 0x1401 },
  23139. -{ 0x1402, 0x1402, 0x1402 },
  23140. -{ 0x1403, 0x1403, 0x1403 },
  23141. -{ 0x1404, 0x1404, 0x1404 },
  23142. -{ 0x1405, 0x1405, 0x1405 },
  23143. -{ 0x1406, 0x1406, 0x1406 },
  23144. -{ 0x1407, 0x1407, 0x1407 },
  23145. -{ 0x1408, 0x1408, 0x1408 },
  23146. -{ 0x1409, 0x1409, 0x1409 },
  23147. -{ 0x140A, 0x140A, 0x140A },
  23148. -{ 0x140B, 0x140B, 0x140B },
  23149. -{ 0x140C, 0x140C, 0x140C },
  23150. -{ 0x140D, 0x140D, 0x140D },
  23151. -{ 0x140E, 0x140E, 0x140E },
  23152. -{ 0x140F, 0x140F, 0x140F },
  23153. -{ 0x1410, 0x1410, 0x1410 },
  23154. -{ 0x1411, 0x1411, 0x1411 },
  23155. -{ 0x1412, 0x1412, 0x1412 },
  23156. -{ 0x1413, 0x1413, 0x1413 },
  23157. -{ 0x1414, 0x1414, 0x1414 },
  23158. -{ 0x1415, 0x1415, 0x1415 },
  23159. -{ 0x1416, 0x1416, 0x1416 },
  23160. -{ 0x1417, 0x1417, 0x1417 },
  23161. -{ 0x1418, 0x1418, 0x1418 },
  23162. -{ 0x1419, 0x1419, 0x1419 },
  23163. -{ 0x141A, 0x141A, 0x141A },
  23164. -{ 0x141B, 0x141B, 0x141B },
  23165. -{ 0x141C, 0x141C, 0x141C },
  23166. -{ 0x141D, 0x141D, 0x141D },
  23167. -{ 0x141E, 0x141E, 0x141E },
  23168. -{ 0x141F, 0x141F, 0x141F },
  23169. -{ 0x1420, 0x1420, 0x1420 },
  23170. -{ 0x1421, 0x1421, 0x1421 },
  23171. -{ 0x1422, 0x1422, 0x1422 },
  23172. -{ 0x1423, 0x1423, 0x1423 },
  23173. -{ 0x1424, 0x1424, 0x1424 },
  23174. -{ 0x1425, 0x1425, 0x1425 },
  23175. -{ 0x1426, 0x1426, 0x1426 },
  23176. -{ 0x1427, 0x1427, 0x1427 },
  23177. -{ 0x1428, 0x1428, 0x1428 },
  23178. -{ 0x1429, 0x1429, 0x1429 },
  23179. -{ 0x142A, 0x142A, 0x142A },
  23180. -{ 0x142B, 0x142B, 0x142B },
  23181. -{ 0x142C, 0x142C, 0x142C },
  23182. -{ 0x142D, 0x142D, 0x142D },
  23183. -{ 0x142E, 0x142E, 0x142E },
  23184. -{ 0x142F, 0x142F, 0x142F },
  23185. -{ 0x1430, 0x1430, 0x1430 },
  23186. -{ 0x1431, 0x1431, 0x1431 },
  23187. -{ 0x1432, 0x1432, 0x1432 },
  23188. -{ 0x1433, 0x1433, 0x1433 },
  23189. -{ 0x1434, 0x1434, 0x1434 },
  23190. -{ 0x1435, 0x1435, 0x1435 },
  23191. -{ 0x1436, 0x1436, 0x1436 },
  23192. -{ 0x1437, 0x1437, 0x1437 },
  23193. -{ 0x1438, 0x1438, 0x1438 },
  23194. -{ 0x1439, 0x1439, 0x1439 },
  23195. -{ 0x143A, 0x143A, 0x143A },
  23196. -{ 0x143B, 0x143B, 0x143B },
  23197. -{ 0x143C, 0x143C, 0x143C },
  23198. -{ 0x143D, 0x143D, 0x143D },
  23199. -{ 0x143E, 0x143E, 0x143E },
  23200. -{ 0x143F, 0x143F, 0x143F },
  23201. -{ 0x1440, 0x1440, 0x1440 },
  23202. -{ 0x1441, 0x1441, 0x1441 },
  23203. -{ 0x1442, 0x1442, 0x1442 },
  23204. -{ 0x1443, 0x1443, 0x1443 },
  23205. -{ 0x1444, 0x1444, 0x1444 },
  23206. -{ 0x1445, 0x1445, 0x1445 },
  23207. -{ 0x1446, 0x1446, 0x1446 },
  23208. -{ 0x1447, 0x1447, 0x1447 },
  23209. -{ 0x1448, 0x1448, 0x1448 },
  23210. -{ 0x1449, 0x1449, 0x1449 },
  23211. -{ 0x144A, 0x144A, 0x144A },
  23212. -{ 0x144B, 0x144B, 0x144B },
  23213. -{ 0x144C, 0x144C, 0x144C },
  23214. -{ 0x144D, 0x144D, 0x144D },
  23215. -{ 0x144E, 0x144E, 0x144E },
  23216. -{ 0x144F, 0x144F, 0x144F },
  23217. -{ 0x1450, 0x1450, 0x1450 },
  23218. -{ 0x1451, 0x1451, 0x1451 },
  23219. -{ 0x1452, 0x1452, 0x1452 },
  23220. -{ 0x1453, 0x1453, 0x1453 },
  23221. -{ 0x1454, 0x1454, 0x1454 },
  23222. -{ 0x1455, 0x1455, 0x1455 },
  23223. -{ 0x1456, 0x1456, 0x1456 },
  23224. -{ 0x1457, 0x1457, 0x1457 },
  23225. -{ 0x1458, 0x1458, 0x1458 },
  23226. -{ 0x1459, 0x1459, 0x1459 },
  23227. -{ 0x145A, 0x145A, 0x145A },
  23228. -{ 0x145B, 0x145B, 0x145B },
  23229. -{ 0x145C, 0x145C, 0x145C },
  23230. -{ 0x145D, 0x145D, 0x145D },
  23231. -{ 0x145E, 0x145E, 0x145E },
  23232. -{ 0x145F, 0x145F, 0x145F },
  23233. -{ 0x1460, 0x1460, 0x1460 },
  23234. -{ 0x1461, 0x1461, 0x1461 },
  23235. -{ 0x1462, 0x1462, 0x1462 },
  23236. -{ 0x1463, 0x1463, 0x1463 },
  23237. -{ 0x1464, 0x1464, 0x1464 },
  23238. -{ 0x1465, 0x1465, 0x1465 },
  23239. -{ 0x1466, 0x1466, 0x1466 },
  23240. -{ 0x1467, 0x1467, 0x1467 },
  23241. -{ 0x1468, 0x1468, 0x1468 },
  23242. -{ 0x1469, 0x1469, 0x1469 },
  23243. -{ 0x146A, 0x146A, 0x146A },
  23244. -{ 0x146B, 0x146B, 0x146B },
  23245. -{ 0x146C, 0x146C, 0x146C },
  23246. -{ 0x146D, 0x146D, 0x146D },
  23247. -{ 0x146E, 0x146E, 0x146E },
  23248. -{ 0x146F, 0x146F, 0x146F },
  23249. -{ 0x1470, 0x1470, 0x1470 },
  23250. -{ 0x1471, 0x1471, 0x1471 },
  23251. -{ 0x1472, 0x1472, 0x1472 },
  23252. -{ 0x1473, 0x1473, 0x1473 },
  23253. -{ 0x1474, 0x1474, 0x1474 },
  23254. -{ 0x1475, 0x1475, 0x1475 },
  23255. -{ 0x1476, 0x1476, 0x1476 },
  23256. -{ 0x1477, 0x1477, 0x1477 },
  23257. -{ 0x1478, 0x1478, 0x1478 },
  23258. -{ 0x1479, 0x1479, 0x1479 },
  23259. -{ 0x147A, 0x147A, 0x147A },
  23260. -{ 0x147B, 0x147B, 0x147B },
  23261. -{ 0x147C, 0x147C, 0x147C },
  23262. -{ 0x147D, 0x147D, 0x147D },
  23263. -{ 0x147E, 0x147E, 0x147E },
  23264. -{ 0x147F, 0x147F, 0x147F },
  23265. -{ 0x1480, 0x1480, 0x1480 },
  23266. -{ 0x1481, 0x1481, 0x1481 },
  23267. -{ 0x1482, 0x1482, 0x1482 },
  23268. -{ 0x1483, 0x1483, 0x1483 },
  23269. -{ 0x1484, 0x1484, 0x1484 },
  23270. -{ 0x1485, 0x1485, 0x1485 },
  23271. -{ 0x1486, 0x1486, 0x1486 },
  23272. -{ 0x1487, 0x1487, 0x1487 },
  23273. -{ 0x1488, 0x1488, 0x1488 },
  23274. -{ 0x1489, 0x1489, 0x1489 },
  23275. -{ 0x148A, 0x148A, 0x148A },
  23276. -{ 0x148B, 0x148B, 0x148B },
  23277. -{ 0x148C, 0x148C, 0x148C },
  23278. -{ 0x148D, 0x148D, 0x148D },
  23279. -{ 0x148E, 0x148E, 0x148E },
  23280. -{ 0x148F, 0x148F, 0x148F },
  23281. -{ 0x1490, 0x1490, 0x1490 },
  23282. -{ 0x1491, 0x1491, 0x1491 },
  23283. -{ 0x1492, 0x1492, 0x1492 },
  23284. -{ 0x1493, 0x1493, 0x1493 },
  23285. -{ 0x1494, 0x1494, 0x1494 },
  23286. -{ 0x1495, 0x1495, 0x1495 },
  23287. -{ 0x1496, 0x1496, 0x1496 },
  23288. -{ 0x1497, 0x1497, 0x1497 },
  23289. -{ 0x1498, 0x1498, 0x1498 },
  23290. -{ 0x1499, 0x1499, 0x1499 },
  23291. -{ 0x149A, 0x149A, 0x149A },
  23292. -{ 0x149B, 0x149B, 0x149B },
  23293. -{ 0x149C, 0x149C, 0x149C },
  23294. -{ 0x149D, 0x149D, 0x149D },
  23295. -{ 0x149E, 0x149E, 0x149E },
  23296. -{ 0x149F, 0x149F, 0x149F },
  23297. -{ 0x14A0, 0x14A0, 0x14A0 },
  23298. -{ 0x14A1, 0x14A1, 0x14A1 },
  23299. -{ 0x14A2, 0x14A2, 0x14A2 },
  23300. -{ 0x14A3, 0x14A3, 0x14A3 },
  23301. -{ 0x14A4, 0x14A4, 0x14A4 },
  23302. -{ 0x14A5, 0x14A5, 0x14A5 },
  23303. -{ 0x14A6, 0x14A6, 0x14A6 },
  23304. -{ 0x14A7, 0x14A7, 0x14A7 },
  23305. -{ 0x14A8, 0x14A8, 0x14A8 },
  23306. -{ 0x14A9, 0x14A9, 0x14A9 },
  23307. -{ 0x14AA, 0x14AA, 0x14AA },
  23308. -{ 0x14AB, 0x14AB, 0x14AB },
  23309. -{ 0x14AC, 0x14AC, 0x14AC },
  23310. -{ 0x14AD, 0x14AD, 0x14AD },
  23311. -{ 0x14AE, 0x14AE, 0x14AE },
  23312. -{ 0x14AF, 0x14AF, 0x14AF },
  23313. -{ 0x14B0, 0x14B0, 0x14B0 },
  23314. -{ 0x14B1, 0x14B1, 0x14B1 },
  23315. -{ 0x14B2, 0x14B2, 0x14B2 },
  23316. -{ 0x14B3, 0x14B3, 0x14B3 },
  23317. -{ 0x14B4, 0x14B4, 0x14B4 },
  23318. -{ 0x14B5, 0x14B5, 0x14B5 },
  23319. -{ 0x14B6, 0x14B6, 0x14B6 },
  23320. -{ 0x14B7, 0x14B7, 0x14B7 },
  23321. -{ 0x14B8, 0x14B8, 0x14B8 },
  23322. -{ 0x14B9, 0x14B9, 0x14B9 },
  23323. -{ 0x14BA, 0x14BA, 0x14BA },
  23324. -{ 0x14BB, 0x14BB, 0x14BB },
  23325. -{ 0x14BC, 0x14BC, 0x14BC },
  23326. -{ 0x14BD, 0x14BD, 0x14BD },
  23327. -{ 0x14BE, 0x14BE, 0x14BE },
  23328. -{ 0x14BF, 0x14BF, 0x14BF },
  23329. -{ 0x14C0, 0x14C0, 0x14C0 },
  23330. -{ 0x14C1, 0x14C1, 0x14C1 },
  23331. -{ 0x14C2, 0x14C2, 0x14C2 },
  23332. -{ 0x14C3, 0x14C3, 0x14C3 },
  23333. -{ 0x14C4, 0x14C4, 0x14C4 },
  23334. -{ 0x14C5, 0x14C5, 0x14C5 },
  23335. -{ 0x14C6, 0x14C6, 0x14C6 },
  23336. -{ 0x14C7, 0x14C7, 0x14C7 },
  23337. -{ 0x14C8, 0x14C8, 0x14C8 },
  23338. -{ 0x14C9, 0x14C9, 0x14C9 },
  23339. -{ 0x14CA, 0x14CA, 0x14CA },
  23340. -{ 0x14CB, 0x14CB, 0x14CB },
  23341. -{ 0x14CC, 0x14CC, 0x14CC },
  23342. -{ 0x14CD, 0x14CD, 0x14CD },
  23343. -{ 0x14CE, 0x14CE, 0x14CE },
  23344. -{ 0x14CF, 0x14CF, 0x14CF },
  23345. -{ 0x14D0, 0x14D0, 0x14D0 },
  23346. -{ 0x14D1, 0x14D1, 0x14D1 },
  23347. -{ 0x14D2, 0x14D2, 0x14D2 },
  23348. -{ 0x14D3, 0x14D3, 0x14D3 },
  23349. -{ 0x14D4, 0x14D4, 0x14D4 },
  23350. -{ 0x14D5, 0x14D5, 0x14D5 },
  23351. -{ 0x14D6, 0x14D6, 0x14D6 },
  23352. -{ 0x14D7, 0x14D7, 0x14D7 },
  23353. -{ 0x14D8, 0x14D8, 0x14D8 },
  23354. -{ 0x14D9, 0x14D9, 0x14D9 },
  23355. -{ 0x14DA, 0x14DA, 0x14DA },
  23356. -{ 0x14DB, 0x14DB, 0x14DB },
  23357. -{ 0x14DC, 0x14DC, 0x14DC },
  23358. -{ 0x14DD, 0x14DD, 0x14DD },
  23359. -{ 0x14DE, 0x14DE, 0x14DE },
  23360. -{ 0x14DF, 0x14DF, 0x14DF },
  23361. -{ 0x14E0, 0x14E0, 0x14E0 },
  23362. -{ 0x14E1, 0x14E1, 0x14E1 },
  23363. -{ 0x14E2, 0x14E2, 0x14E2 },
  23364. -{ 0x14E3, 0x14E3, 0x14E3 },
  23365. -{ 0x14E4, 0x14E4, 0x14E4 },
  23366. -{ 0x14E5, 0x14E5, 0x14E5 },
  23367. -{ 0x14E6, 0x14E6, 0x14E6 },
  23368. -{ 0x14E7, 0x14E7, 0x14E7 },
  23369. -{ 0x14E8, 0x14E8, 0x14E8 },
  23370. -{ 0x14E9, 0x14E9, 0x14E9 },
  23371. -{ 0x14EA, 0x14EA, 0x14EA },
  23372. -{ 0x14EB, 0x14EB, 0x14EB },
  23373. -{ 0x14EC, 0x14EC, 0x14EC },
  23374. -{ 0x14ED, 0x14ED, 0x14ED },
  23375. -{ 0x14EE, 0x14EE, 0x14EE },
  23376. -{ 0x14EF, 0x14EF, 0x14EF },
  23377. -{ 0x14F0, 0x14F0, 0x14F0 },
  23378. -{ 0x14F1, 0x14F1, 0x14F1 },
  23379. -{ 0x14F2, 0x14F2, 0x14F2 },
  23380. -{ 0x14F3, 0x14F3, 0x14F3 },
  23381. -{ 0x14F4, 0x14F4, 0x14F4 },
  23382. -{ 0x14F5, 0x14F5, 0x14F5 },
  23383. -{ 0x14F6, 0x14F6, 0x14F6 },
  23384. -{ 0x14F7, 0x14F7, 0x14F7 },
  23385. -{ 0x14F8, 0x14F8, 0x14F8 },
  23386. -{ 0x14F9, 0x14F9, 0x14F9 },
  23387. -{ 0x14FA, 0x14FA, 0x14FA },
  23388. -{ 0x14FB, 0x14FB, 0x14FB },
  23389. -{ 0x14FC, 0x14FC, 0x14FC },
  23390. -{ 0x14FD, 0x14FD, 0x14FD },
  23391. -{ 0x14FE, 0x14FE, 0x14FE },
  23392. -{ 0x14FF, 0x14FF, 0x14FF },
  23393. -{ 0x1500, 0x1500, 0x1500 },
  23394. -{ 0x1501, 0x1501, 0x1501 },
  23395. -{ 0x1502, 0x1502, 0x1502 },
  23396. -{ 0x1503, 0x1503, 0x1503 },
  23397. -{ 0x1504, 0x1504, 0x1504 },
  23398. -{ 0x1505, 0x1505, 0x1505 },
  23399. -{ 0x1506, 0x1506, 0x1506 },
  23400. -{ 0x1507, 0x1507, 0x1507 },
  23401. -{ 0x1508, 0x1508, 0x1508 },
  23402. -{ 0x1509, 0x1509, 0x1509 },
  23403. -{ 0x150A, 0x150A, 0x150A },
  23404. -{ 0x150B, 0x150B, 0x150B },
  23405. -{ 0x150C, 0x150C, 0x150C },
  23406. -{ 0x150D, 0x150D, 0x150D },
  23407. -{ 0x150E, 0x150E, 0x150E },
  23408. -{ 0x150F, 0x150F, 0x150F },
  23409. -{ 0x1510, 0x1510, 0x1510 },
  23410. -{ 0x1511, 0x1511, 0x1511 },
  23411. -{ 0x1512, 0x1512, 0x1512 },
  23412. -{ 0x1513, 0x1513, 0x1513 },
  23413. -{ 0x1514, 0x1514, 0x1514 },
  23414. -{ 0x1515, 0x1515, 0x1515 },
  23415. -{ 0x1516, 0x1516, 0x1516 },
  23416. -{ 0x1517, 0x1517, 0x1517 },
  23417. -{ 0x1518, 0x1518, 0x1518 },
  23418. -{ 0x1519, 0x1519, 0x1519 },
  23419. -{ 0x151A, 0x151A, 0x151A },
  23420. -{ 0x151B, 0x151B, 0x151B },
  23421. -{ 0x151C, 0x151C, 0x151C },
  23422. -{ 0x151D, 0x151D, 0x151D },
  23423. -{ 0x151E, 0x151E, 0x151E },
  23424. -{ 0x151F, 0x151F, 0x151F },
  23425. -{ 0x1520, 0x1520, 0x1520 },
  23426. -{ 0x1521, 0x1521, 0x1521 },
  23427. -{ 0x1522, 0x1522, 0x1522 },
  23428. -{ 0x1523, 0x1523, 0x1523 },
  23429. -{ 0x1524, 0x1524, 0x1524 },
  23430. -{ 0x1525, 0x1525, 0x1525 },
  23431. -{ 0x1526, 0x1526, 0x1526 },
  23432. -{ 0x1527, 0x1527, 0x1527 },
  23433. -{ 0x1528, 0x1528, 0x1528 },
  23434. -{ 0x1529, 0x1529, 0x1529 },
  23435. -{ 0x152A, 0x152A, 0x152A },
  23436. -{ 0x152B, 0x152B, 0x152B },
  23437. -{ 0x152C, 0x152C, 0x152C },
  23438. -{ 0x152D, 0x152D, 0x152D },
  23439. -{ 0x152E, 0x152E, 0x152E },
  23440. -{ 0x152F, 0x152F, 0x152F },
  23441. -{ 0x1530, 0x1530, 0x1530 },
  23442. -{ 0x1531, 0x1531, 0x1531 },
  23443. -{ 0x1532, 0x1532, 0x1532 },
  23444. -{ 0x1533, 0x1533, 0x1533 },
  23445. -{ 0x1534, 0x1534, 0x1534 },
  23446. -{ 0x1535, 0x1535, 0x1535 },
  23447. -{ 0x1536, 0x1536, 0x1536 },
  23448. -{ 0x1537, 0x1537, 0x1537 },
  23449. -{ 0x1538, 0x1538, 0x1538 },
  23450. -{ 0x1539, 0x1539, 0x1539 },
  23451. -{ 0x153A, 0x153A, 0x153A },
  23452. -{ 0x153B, 0x153B, 0x153B },
  23453. -{ 0x153C, 0x153C, 0x153C },
  23454. -{ 0x153D, 0x153D, 0x153D },
  23455. -{ 0x153E, 0x153E, 0x153E },
  23456. -{ 0x153F, 0x153F, 0x153F },
  23457. -{ 0x1540, 0x1540, 0x1540 },
  23458. -{ 0x1541, 0x1541, 0x1541 },
  23459. -{ 0x1542, 0x1542, 0x1542 },
  23460. -{ 0x1543, 0x1543, 0x1543 },
  23461. -{ 0x1544, 0x1544, 0x1544 },
  23462. -{ 0x1545, 0x1545, 0x1545 },
  23463. -{ 0x1546, 0x1546, 0x1546 },
  23464. -{ 0x1547, 0x1547, 0x1547 },
  23465. -{ 0x1548, 0x1548, 0x1548 },
  23466. -{ 0x1549, 0x1549, 0x1549 },
  23467. -{ 0x154A, 0x154A, 0x154A },
  23468. -{ 0x154B, 0x154B, 0x154B },
  23469. -{ 0x154C, 0x154C, 0x154C },
  23470. -{ 0x154D, 0x154D, 0x154D },
  23471. -{ 0x154E, 0x154E, 0x154E },
  23472. -{ 0x154F, 0x154F, 0x154F },
  23473. -{ 0x1550, 0x1550, 0x1550 },
  23474. -{ 0x1551, 0x1551, 0x1551 },
  23475. -{ 0x1552, 0x1552, 0x1552 },
  23476. -{ 0x1553, 0x1553, 0x1553 },
  23477. -{ 0x1554, 0x1554, 0x1554 },
  23478. -{ 0x1555, 0x1555, 0x1555 },
  23479. -{ 0x1556, 0x1556, 0x1556 },
  23480. -{ 0x1557, 0x1557, 0x1557 },
  23481. -{ 0x1558, 0x1558, 0x1558 },
  23482. -{ 0x1559, 0x1559, 0x1559 },
  23483. -{ 0x155A, 0x155A, 0x155A },
  23484. -{ 0x155B, 0x155B, 0x155B },
  23485. -{ 0x155C, 0x155C, 0x155C },
  23486. -{ 0x155D, 0x155D, 0x155D },
  23487. -{ 0x155E, 0x155E, 0x155E },
  23488. -{ 0x155F, 0x155F, 0x155F },
  23489. -{ 0x1560, 0x1560, 0x1560 },
  23490. -{ 0x1561, 0x1561, 0x1561 },
  23491. -{ 0x1562, 0x1562, 0x1562 },
  23492. -{ 0x1563, 0x1563, 0x1563 },
  23493. -{ 0x1564, 0x1564, 0x1564 },
  23494. -{ 0x1565, 0x1565, 0x1565 },
  23495. -{ 0x1566, 0x1566, 0x1566 },
  23496. -{ 0x1567, 0x1567, 0x1567 },
  23497. -{ 0x1568, 0x1568, 0x1568 },
  23498. -{ 0x1569, 0x1569, 0x1569 },
  23499. -{ 0x156A, 0x156A, 0x156A },
  23500. -{ 0x156B, 0x156B, 0x156B },
  23501. -{ 0x156C, 0x156C, 0x156C },
  23502. -{ 0x156D, 0x156D, 0x156D },
  23503. -{ 0x156E, 0x156E, 0x156E },
  23504. -{ 0x156F, 0x156F, 0x156F },
  23505. -{ 0x1570, 0x1570, 0x1570 },
  23506. -{ 0x1571, 0x1571, 0x1571 },
  23507. -{ 0x1572, 0x1572, 0x1572 },
  23508. -{ 0x1573, 0x1573, 0x1573 },
  23509. -{ 0x1574, 0x1574, 0x1574 },
  23510. -{ 0x1575, 0x1575, 0x1575 },
  23511. -{ 0x1576, 0x1576, 0x1576 },
  23512. -{ 0x1577, 0x1577, 0x1577 },
  23513. -{ 0x1578, 0x1578, 0x1578 },
  23514. -{ 0x1579, 0x1579, 0x1579 },
  23515. -{ 0x157A, 0x157A, 0x157A },
  23516. -{ 0x157B, 0x157B, 0x157B },
  23517. -{ 0x157C, 0x157C, 0x157C },
  23518. -{ 0x157D, 0x157D, 0x157D },
  23519. -{ 0x157E, 0x157E, 0x157E },
  23520. -{ 0x157F, 0x157F, 0x157F },
  23521. -{ 0x1580, 0x1580, 0x1580 },
  23522. -{ 0x1581, 0x1581, 0x1581 },
  23523. -{ 0x1582, 0x1582, 0x1582 },
  23524. -{ 0x1583, 0x1583, 0x1583 },
  23525. -{ 0x1584, 0x1584, 0x1584 },
  23526. -{ 0x1585, 0x1585, 0x1585 },
  23527. -{ 0x1586, 0x1586, 0x1586 },
  23528. -{ 0x1587, 0x1587, 0x1587 },
  23529. -{ 0x1588, 0x1588, 0x1588 },
  23530. -{ 0x1589, 0x1589, 0x1589 },
  23531. -{ 0x158A, 0x158A, 0x158A },
  23532. -{ 0x158B, 0x158B, 0x158B },
  23533. -{ 0x158C, 0x158C, 0x158C },
  23534. -{ 0x158D, 0x158D, 0x158D },
  23535. -{ 0x158E, 0x158E, 0x158E },
  23536. -{ 0x158F, 0x158F, 0x158F },
  23537. -{ 0x1590, 0x1590, 0x1590 },
  23538. -{ 0x1591, 0x1591, 0x1591 },
  23539. -{ 0x1592, 0x1592, 0x1592 },
  23540. -{ 0x1593, 0x1593, 0x1593 },
  23541. -{ 0x1594, 0x1594, 0x1594 },
  23542. -{ 0x1595, 0x1595, 0x1595 },
  23543. -{ 0x1596, 0x1596, 0x1596 },
  23544. -{ 0x1597, 0x1597, 0x1597 },
  23545. -{ 0x1598, 0x1598, 0x1598 },
  23546. -{ 0x1599, 0x1599, 0x1599 },
  23547. -{ 0x159A, 0x159A, 0x159A },
  23548. -{ 0x159B, 0x159B, 0x159B },
  23549. -{ 0x159C, 0x159C, 0x159C },
  23550. -{ 0x159D, 0x159D, 0x159D },
  23551. -{ 0x159E, 0x159E, 0x159E },
  23552. -{ 0x159F, 0x159F, 0x159F },
  23553. -{ 0x15A0, 0x15A0, 0x15A0 },
  23554. -{ 0x15A1, 0x15A1, 0x15A1 },
  23555. -{ 0x15A2, 0x15A2, 0x15A2 },
  23556. -{ 0x15A3, 0x15A3, 0x15A3 },
  23557. -{ 0x15A4, 0x15A4, 0x15A4 },
  23558. -{ 0x15A5, 0x15A5, 0x15A5 },
  23559. -{ 0x15A6, 0x15A6, 0x15A6 },
  23560. -{ 0x15A7, 0x15A7, 0x15A7 },
  23561. -{ 0x15A8, 0x15A8, 0x15A8 },
  23562. -{ 0x15A9, 0x15A9, 0x15A9 },
  23563. -{ 0x15AA, 0x15AA, 0x15AA },
  23564. -{ 0x15AB, 0x15AB, 0x15AB },
  23565. -{ 0x15AC, 0x15AC, 0x15AC },
  23566. -{ 0x15AD, 0x15AD, 0x15AD },
  23567. -{ 0x15AE, 0x15AE, 0x15AE },
  23568. -{ 0x15AF, 0x15AF, 0x15AF },
  23569. -{ 0x15B0, 0x15B0, 0x15B0 },
  23570. -{ 0x15B1, 0x15B1, 0x15B1 },
  23571. -{ 0x15B2, 0x15B2, 0x15B2 },
  23572. -{ 0x15B3, 0x15B3, 0x15B3 },
  23573. -{ 0x15B4, 0x15B4, 0x15B4 },
  23574. -{ 0x15B5, 0x15B5, 0x15B5 },
  23575. -{ 0x15B6, 0x15B6, 0x15B6 },
  23576. -{ 0x15B7, 0x15B7, 0x15B7 },
  23577. -{ 0x15B8, 0x15B8, 0x15B8 },
  23578. -{ 0x15B9, 0x15B9, 0x15B9 },
  23579. -{ 0x15BA, 0x15BA, 0x15BA },
  23580. -{ 0x15BB, 0x15BB, 0x15BB },
  23581. -{ 0x15BC, 0x15BC, 0x15BC },
  23582. -{ 0x15BD, 0x15BD, 0x15BD },
  23583. -{ 0x15BE, 0x15BE, 0x15BE },
  23584. -{ 0x15BF, 0x15BF, 0x15BF },
  23585. -{ 0x15C0, 0x15C0, 0x15C0 },
  23586. -{ 0x15C1, 0x15C1, 0x15C1 },
  23587. -{ 0x15C2, 0x15C2, 0x15C2 },
  23588. -{ 0x15C3, 0x15C3, 0x15C3 },
  23589. -{ 0x15C4, 0x15C4, 0x15C4 },
  23590. -{ 0x15C5, 0x15C5, 0x15C5 },
  23591. -{ 0x15C6, 0x15C6, 0x15C6 },
  23592. -{ 0x15C7, 0x15C7, 0x15C7 },
  23593. -{ 0x15C8, 0x15C8, 0x15C8 },
  23594. -{ 0x15C9, 0x15C9, 0x15C9 },
  23595. -{ 0x15CA, 0x15CA, 0x15CA },
  23596. -{ 0x15CB, 0x15CB, 0x15CB },
  23597. -{ 0x15CC, 0x15CC, 0x15CC },
  23598. -{ 0x15CD, 0x15CD, 0x15CD },
  23599. -{ 0x15CE, 0x15CE, 0x15CE },
  23600. -{ 0x15CF, 0x15CF, 0x15CF },
  23601. -{ 0x15D0, 0x15D0, 0x15D0 },
  23602. -{ 0x15D1, 0x15D1, 0x15D1 },
  23603. -{ 0x15D2, 0x15D2, 0x15D2 },
  23604. -{ 0x15D3, 0x15D3, 0x15D3 },
  23605. -{ 0x15D4, 0x15D4, 0x15D4 },
  23606. -{ 0x15D5, 0x15D5, 0x15D5 },
  23607. -{ 0x15D6, 0x15D6, 0x15D6 },
  23608. -{ 0x15D7, 0x15D7, 0x15D7 },
  23609. -{ 0x15D8, 0x15D8, 0x15D8 },
  23610. -{ 0x15D9, 0x15D9, 0x15D9 },
  23611. -{ 0x15DA, 0x15DA, 0x15DA },
  23612. -{ 0x15DB, 0x15DB, 0x15DB },
  23613. -{ 0x15DC, 0x15DC, 0x15DC },
  23614. -{ 0x15DD, 0x15DD, 0x15DD },
  23615. -{ 0x15DE, 0x15DE, 0x15DE },
  23616. -{ 0x15DF, 0x15DF, 0x15DF },
  23617. -{ 0x15E0, 0x15E0, 0x15E0 },
  23618. -{ 0x15E1, 0x15E1, 0x15E1 },
  23619. -{ 0x15E2, 0x15E2, 0x15E2 },
  23620. -{ 0x15E3, 0x15E3, 0x15E3 },
  23621. -{ 0x15E4, 0x15E4, 0x15E4 },
  23622. -{ 0x15E5, 0x15E5, 0x15E5 },
  23623. -{ 0x15E6, 0x15E6, 0x15E6 },
  23624. -{ 0x15E7, 0x15E7, 0x15E7 },
  23625. -{ 0x15E8, 0x15E8, 0x15E8 },
  23626. -{ 0x15E9, 0x15E9, 0x15E9 },
  23627. -{ 0x15EA, 0x15EA, 0x15EA },
  23628. -{ 0x15EB, 0x15EB, 0x15EB },
  23629. -{ 0x15EC, 0x15EC, 0x15EC },
  23630. -{ 0x15ED, 0x15ED, 0x15ED },
  23631. -{ 0x15EE, 0x15EE, 0x15EE },
  23632. -{ 0x15EF, 0x15EF, 0x15EF },
  23633. -{ 0x15F0, 0x15F0, 0x15F0 },
  23634. -{ 0x15F1, 0x15F1, 0x15F1 },
  23635. -{ 0x15F2, 0x15F2, 0x15F2 },
  23636. -{ 0x15F3, 0x15F3, 0x15F3 },
  23637. -{ 0x15F4, 0x15F4, 0x15F4 },
  23638. -{ 0x15F5, 0x15F5, 0x15F5 },
  23639. -{ 0x15F6, 0x15F6, 0x15F6 },
  23640. -{ 0x15F7, 0x15F7, 0x15F7 },
  23641. -{ 0x15F8, 0x15F8, 0x15F8 },
  23642. -{ 0x15F9, 0x15F9, 0x15F9 },
  23643. -{ 0x15FA, 0x15FA, 0x15FA },
  23644. -{ 0x15FB, 0x15FB, 0x15FB },
  23645. -{ 0x15FC, 0x15FC, 0x15FC },
  23646. -{ 0x15FD, 0x15FD, 0x15FD },
  23647. -{ 0x15FE, 0x15FE, 0x15FE },
  23648. -{ 0x15FF, 0x15FF, 0x15FF },
  23649. -{ 0x1600, 0x1600, 0x1600 },
  23650. -{ 0x1601, 0x1601, 0x1601 },
  23651. -{ 0x1602, 0x1602, 0x1602 },
  23652. -{ 0x1603, 0x1603, 0x1603 },
  23653. -{ 0x1604, 0x1604, 0x1604 },
  23654. -{ 0x1605, 0x1605, 0x1605 },
  23655. -{ 0x1606, 0x1606, 0x1606 },
  23656. -{ 0x1607, 0x1607, 0x1607 },
  23657. -{ 0x1608, 0x1608, 0x1608 },
  23658. -{ 0x1609, 0x1609, 0x1609 },
  23659. -{ 0x160A, 0x160A, 0x160A },
  23660. -{ 0x160B, 0x160B, 0x160B },
  23661. -{ 0x160C, 0x160C, 0x160C },
  23662. -{ 0x160D, 0x160D, 0x160D },
  23663. -{ 0x160E, 0x160E, 0x160E },
  23664. -{ 0x160F, 0x160F, 0x160F },
  23665. -{ 0x1610, 0x1610, 0x1610 },
  23666. -{ 0x1611, 0x1611, 0x1611 },
  23667. -{ 0x1612, 0x1612, 0x1612 },
  23668. -{ 0x1613, 0x1613, 0x1613 },
  23669. -{ 0x1614, 0x1614, 0x1614 },
  23670. -{ 0x1615, 0x1615, 0x1615 },
  23671. -{ 0x1616, 0x1616, 0x1616 },
  23672. -{ 0x1617, 0x1617, 0x1617 },
  23673. -{ 0x1618, 0x1618, 0x1618 },
  23674. -{ 0x1619, 0x1619, 0x1619 },
  23675. -{ 0x161A, 0x161A, 0x161A },
  23676. -{ 0x161B, 0x161B, 0x161B },
  23677. -{ 0x161C, 0x161C, 0x161C },
  23678. -{ 0x161D, 0x161D, 0x161D },
  23679. -{ 0x161E, 0x161E, 0x161E },
  23680. -{ 0x161F, 0x161F, 0x161F },
  23681. -{ 0x1620, 0x1620, 0x1620 },
  23682. -{ 0x1621, 0x1621, 0x1621 },
  23683. -{ 0x1622, 0x1622, 0x1622 },
  23684. -{ 0x1623, 0x1623, 0x1623 },
  23685. -{ 0x1624, 0x1624, 0x1624 },
  23686. -{ 0x1625, 0x1625, 0x1625 },
  23687. -{ 0x1626, 0x1626, 0x1626 },
  23688. -{ 0x1627, 0x1627, 0x1627 },
  23689. -{ 0x1628, 0x1628, 0x1628 },
  23690. -{ 0x1629, 0x1629, 0x1629 },
  23691. -{ 0x162A, 0x162A, 0x162A },
  23692. -{ 0x162B, 0x162B, 0x162B },
  23693. -{ 0x162C, 0x162C, 0x162C },
  23694. -{ 0x162D, 0x162D, 0x162D },
  23695. -{ 0x162E, 0x162E, 0x162E },
  23696. -{ 0x162F, 0x162F, 0x162F },
  23697. -{ 0x1630, 0x1630, 0x1630 },
  23698. -{ 0x1631, 0x1631, 0x1631 },
  23699. -{ 0x1632, 0x1632, 0x1632 },
  23700. -{ 0x1633, 0x1633, 0x1633 },
  23701. -{ 0x1634, 0x1634, 0x1634 },
  23702. -{ 0x1635, 0x1635, 0x1635 },
  23703. -{ 0x1636, 0x1636, 0x1636 },
  23704. -{ 0x1637, 0x1637, 0x1637 },
  23705. -{ 0x1638, 0x1638, 0x1638 },
  23706. -{ 0x1639, 0x1639, 0x1639 },
  23707. -{ 0x163A, 0x163A, 0x163A },
  23708. -{ 0x163B, 0x163B, 0x163B },
  23709. -{ 0x163C, 0x163C, 0x163C },
  23710. -{ 0x163D, 0x163D, 0x163D },
  23711. -{ 0x163E, 0x163E, 0x163E },
  23712. -{ 0x163F, 0x163F, 0x163F },
  23713. -{ 0x1640, 0x1640, 0x1640 },
  23714. -{ 0x1641, 0x1641, 0x1641 },
  23715. -{ 0x1642, 0x1642, 0x1642 },
  23716. -{ 0x1643, 0x1643, 0x1643 },
  23717. -{ 0x1644, 0x1644, 0x1644 },
  23718. -{ 0x1645, 0x1645, 0x1645 },
  23719. -{ 0x1646, 0x1646, 0x1646 },
  23720. -{ 0x1647, 0x1647, 0x1647 },
  23721. -{ 0x1648, 0x1648, 0x1648 },
  23722. -{ 0x1649, 0x1649, 0x1649 },
  23723. -{ 0x164A, 0x164A, 0x164A },
  23724. -{ 0x164B, 0x164B, 0x164B },
  23725. -{ 0x164C, 0x164C, 0x164C },
  23726. -{ 0x164D, 0x164D, 0x164D },
  23727. -{ 0x164E, 0x164E, 0x164E },
  23728. -{ 0x164F, 0x164F, 0x164F },
  23729. -{ 0x1650, 0x1650, 0x1650 },
  23730. -{ 0x1651, 0x1651, 0x1651 },
  23731. -{ 0x1652, 0x1652, 0x1652 },
  23732. -{ 0x1653, 0x1653, 0x1653 },
  23733. -{ 0x1654, 0x1654, 0x1654 },
  23734. -{ 0x1655, 0x1655, 0x1655 },
  23735. -{ 0x1656, 0x1656, 0x1656 },
  23736. -{ 0x1657, 0x1657, 0x1657 },
  23737. -{ 0x1658, 0x1658, 0x1658 },
  23738. -{ 0x1659, 0x1659, 0x1659 },
  23739. -{ 0x165A, 0x165A, 0x165A },
  23740. -{ 0x165B, 0x165B, 0x165B },
  23741. -{ 0x165C, 0x165C, 0x165C },
  23742. -{ 0x165D, 0x165D, 0x165D },
  23743. -{ 0x165E, 0x165E, 0x165E },
  23744. -{ 0x165F, 0x165F, 0x165F },
  23745. -{ 0x1660, 0x1660, 0x1660 },
  23746. -{ 0x1661, 0x1661, 0x1661 },
  23747. -{ 0x1662, 0x1662, 0x1662 },
  23748. -{ 0x1663, 0x1663, 0x1663 },
  23749. -{ 0x1664, 0x1664, 0x1664 },
  23750. -{ 0x1665, 0x1665, 0x1665 },
  23751. -{ 0x1666, 0x1666, 0x1666 },
  23752. -{ 0x1667, 0x1667, 0x1667 },
  23753. -{ 0x1668, 0x1668, 0x1668 },
  23754. -{ 0x1669, 0x1669, 0x1669 },
  23755. -{ 0x166A, 0x166A, 0x166A },
  23756. -{ 0x166B, 0x166B, 0x166B },
  23757. -{ 0x166C, 0x166C, 0x166C },
  23758. -{ 0x166F, 0x166F, 0x166F },
  23759. -{ 0x1670, 0x1670, 0x1670 },
  23760. -{ 0x1671, 0x1671, 0x1671 },
  23761. -{ 0x1672, 0x1672, 0x1672 },
  23762. -{ 0x1673, 0x1673, 0x1673 },
  23763. -{ 0x1674, 0x1674, 0x1674 },
  23764. -{ 0x1675, 0x1675, 0x1675 },
  23765. -{ 0x1676, 0x1676, 0x1676 },
  23766. -{ 0x1681, 0x1681, 0x1681 },
  23767. -{ 0x1682, 0x1682, 0x1682 },
  23768. -{ 0x1683, 0x1683, 0x1683 },
  23769. -{ 0x1684, 0x1684, 0x1684 },
  23770. -{ 0x1685, 0x1685, 0x1685 },
  23771. -{ 0x1686, 0x1686, 0x1686 },
  23772. -{ 0x1687, 0x1687, 0x1687 },
  23773. -{ 0x1688, 0x1688, 0x1688 },
  23774. -{ 0x1689, 0x1689, 0x1689 },
  23775. -{ 0x168A, 0x168A, 0x168A },
  23776. -{ 0x168B, 0x168B, 0x168B },
  23777. -{ 0x168C, 0x168C, 0x168C },
  23778. -{ 0x168D, 0x168D, 0x168D },
  23779. -{ 0x168E, 0x168E, 0x168E },
  23780. -{ 0x168F, 0x168F, 0x168F },
  23781. -{ 0x1690, 0x1690, 0x1690 },
  23782. -{ 0x1691, 0x1691, 0x1691 },
  23783. -{ 0x1692, 0x1692, 0x1692 },
  23784. -{ 0x1693, 0x1693, 0x1693 },
  23785. -{ 0x1694, 0x1694, 0x1694 },
  23786. -{ 0x1695, 0x1695, 0x1695 },
  23787. -{ 0x1696, 0x1696, 0x1696 },
  23788. -{ 0x1697, 0x1697, 0x1697 },
  23789. -{ 0x1698, 0x1698, 0x1698 },
  23790. -{ 0x1699, 0x1699, 0x1699 },
  23791. -{ 0x169A, 0x169A, 0x169A },
  23792. -{ 0x16A0, 0x16A0, 0x16A0 },
  23793. -{ 0x16A1, 0x16A1, 0x16A1 },
  23794. -{ 0x16A2, 0x16A2, 0x16A2 },
  23795. -{ 0x16A3, 0x16A3, 0x16A3 },
  23796. -{ 0x16A4, 0x16A4, 0x16A4 },
  23797. -{ 0x16A5, 0x16A5, 0x16A5 },
  23798. -{ 0x16A6, 0x16A6, 0x16A6 },
  23799. -{ 0x16A7, 0x16A7, 0x16A7 },
  23800. -{ 0x16A8, 0x16A8, 0x16A8 },
  23801. -{ 0x16A9, 0x16A9, 0x16A9 },
  23802. -{ 0x16AA, 0x16AA, 0x16AA },
  23803. -{ 0x16AB, 0x16AB, 0x16AB },
  23804. -{ 0x16AC, 0x16AC, 0x16AC },
  23805. -{ 0x16AD, 0x16AD, 0x16AD },
  23806. -{ 0x16AE, 0x16AE, 0x16AE },
  23807. -{ 0x16AF, 0x16AF, 0x16AF },
  23808. -{ 0x16B0, 0x16B0, 0x16B0 },
  23809. -{ 0x16B1, 0x16B1, 0x16B1 },
  23810. -{ 0x16B2, 0x16B2, 0x16B2 },
  23811. -{ 0x16B3, 0x16B3, 0x16B3 },
  23812. -{ 0x16B4, 0x16B4, 0x16B4 },
  23813. -{ 0x16B5, 0x16B5, 0x16B5 },
  23814. -{ 0x16B6, 0x16B6, 0x16B6 },
  23815. -{ 0x16B7, 0x16B7, 0x16B7 },
  23816. -{ 0x16B8, 0x16B8, 0x16B8 },
  23817. -{ 0x16B9, 0x16B9, 0x16B9 },
  23818. -{ 0x16BA, 0x16BA, 0x16BA },
  23819. -{ 0x16BB, 0x16BB, 0x16BB },
  23820. -{ 0x16BC, 0x16BC, 0x16BC },
  23821. -{ 0x16BD, 0x16BD, 0x16BD },
  23822. -{ 0x16BE, 0x16BE, 0x16BE },
  23823. -{ 0x16BF, 0x16BF, 0x16BF },
  23824. -{ 0x16C0, 0x16C0, 0x16C0 },
  23825. -{ 0x16C1, 0x16C1, 0x16C1 },
  23826. -{ 0x16C2, 0x16C2, 0x16C2 },
  23827. -{ 0x16C3, 0x16C3, 0x16C3 },
  23828. -{ 0x16C4, 0x16C4, 0x16C4 },
  23829. -{ 0x16C5, 0x16C5, 0x16C5 },
  23830. -{ 0x16C6, 0x16C6, 0x16C6 },
  23831. -{ 0x16C7, 0x16C7, 0x16C7 },
  23832. -{ 0x16C8, 0x16C8, 0x16C8 },
  23833. -{ 0x16C9, 0x16C9, 0x16C9 },
  23834. -{ 0x16CA, 0x16CA, 0x16CA },
  23835. -{ 0x16CB, 0x16CB, 0x16CB },
  23836. -{ 0x16CC, 0x16CC, 0x16CC },
  23837. -{ 0x16CD, 0x16CD, 0x16CD },
  23838. -{ 0x16CE, 0x16CE, 0x16CE },
  23839. -{ 0x16CF, 0x16CF, 0x16CF },
  23840. -{ 0x16D0, 0x16D0, 0x16D0 },
  23841. -{ 0x16D1, 0x16D1, 0x16D1 },
  23842. -{ 0x16D2, 0x16D2, 0x16D2 },
  23843. -{ 0x16D3, 0x16D3, 0x16D3 },
  23844. -{ 0x16D4, 0x16D4, 0x16D4 },
  23845. -{ 0x16D5, 0x16D5, 0x16D5 },
  23846. -{ 0x16D6, 0x16D6, 0x16D6 },
  23847. -{ 0x16D7, 0x16D7, 0x16D7 },
  23848. -{ 0x16D8, 0x16D8, 0x16D8 },
  23849. -{ 0x16D9, 0x16D9, 0x16D9 },
  23850. -{ 0x16DA, 0x16DA, 0x16DA },
  23851. -{ 0x16DB, 0x16DB, 0x16DB },
  23852. -{ 0x16DC, 0x16DC, 0x16DC },
  23853. -{ 0x16DD, 0x16DD, 0x16DD },
  23854. -{ 0x16DE, 0x16DE, 0x16DE },
  23855. -{ 0x16DF, 0x16DF, 0x16DF },
  23856. -{ 0x16E0, 0x16E0, 0x16E0 },
  23857. -{ 0x16E1, 0x16E1, 0x16E1 },
  23858. -{ 0x16E2, 0x16E2, 0x16E2 },
  23859. -{ 0x16E3, 0x16E3, 0x16E3 },
  23860. -{ 0x16E4, 0x16E4, 0x16E4 },
  23861. -{ 0x16E5, 0x16E5, 0x16E5 },
  23862. -{ 0x16E6, 0x16E6, 0x16E6 },
  23863. -{ 0x16E7, 0x16E7, 0x16E7 },
  23864. -{ 0x16E8, 0x16E8, 0x16E8 },
  23865. -{ 0x16E9, 0x16E9, 0x16E9 },
  23866. -{ 0x16EA, 0x16EA, 0x16EA },
  23867. -{ 0x1700, 0x1700, 0x1700 },
  23868. -{ 0x1701, 0x1701, 0x1701 },
  23869. -{ 0x1702, 0x1702, 0x1702 },
  23870. -{ 0x1703, 0x1703, 0x1703 },
  23871. -{ 0x1704, 0x1704, 0x1704 },
  23872. -{ 0x1705, 0x1705, 0x1705 },
  23873. -{ 0x1706, 0x1706, 0x1706 },
  23874. -{ 0x1707, 0x1707, 0x1707 },
  23875. -{ 0x1708, 0x1708, 0x1708 },
  23876. -{ 0x1709, 0x1709, 0x1709 },
  23877. -{ 0x170A, 0x170A, 0x170A },
  23878. -{ 0x170B, 0x170B, 0x170B },
  23879. -{ 0x170C, 0x170C, 0x170C },
  23880. -{ 0x170E, 0x170E, 0x170E },
  23881. -{ 0x170F, 0x170F, 0x170F },
  23882. -{ 0x1710, 0x1710, 0x1710 },
  23883. -{ 0x1711, 0x1711, 0x1711 },
  23884. -{ 0x1712, 0x1712, 0x1712 },
  23885. -{ 0x1713, 0x1713, 0x1713 },
  23886. -{ 0x1714, 0x1714, 0x1714 },
  23887. -{ 0x1720, 0x1720, 0x1720 },
  23888. -{ 0x1721, 0x1721, 0x1721 },
  23889. -{ 0x1722, 0x1722, 0x1722 },
  23890. -{ 0x1723, 0x1723, 0x1723 },
  23891. -{ 0x1724, 0x1724, 0x1724 },
  23892. -{ 0x1725, 0x1725, 0x1725 },
  23893. -{ 0x1726, 0x1726, 0x1726 },
  23894. -{ 0x1727, 0x1727, 0x1727 },
  23895. -{ 0x1728, 0x1728, 0x1728 },
  23896. -{ 0x1729, 0x1729, 0x1729 },
  23897. -{ 0x172A, 0x172A, 0x172A },
  23898. -{ 0x172B, 0x172B, 0x172B },
  23899. -{ 0x172C, 0x172C, 0x172C },
  23900. -{ 0x172D, 0x172D, 0x172D },
  23901. -{ 0x172E, 0x172E, 0x172E },
  23902. -{ 0x172F, 0x172F, 0x172F },
  23903. -{ 0x1730, 0x1730, 0x1730 },
  23904. -{ 0x1731, 0x1731, 0x1731 },
  23905. -{ 0x1732, 0x1732, 0x1732 },
  23906. -{ 0x1733, 0x1733, 0x1733 },
  23907. -{ 0x1734, 0x1734, 0x1734 },
  23908. -{ 0x1740, 0x1740, 0x1740 },
  23909. -{ 0x1741, 0x1741, 0x1741 },
  23910. -{ 0x1742, 0x1742, 0x1742 },
  23911. -{ 0x1743, 0x1743, 0x1743 },
  23912. -{ 0x1744, 0x1744, 0x1744 },
  23913. -{ 0x1745, 0x1745, 0x1745 },
  23914. -{ 0x1746, 0x1746, 0x1746 },
  23915. -{ 0x1747, 0x1747, 0x1747 },
  23916. -{ 0x1748, 0x1748, 0x1748 },
  23917. -{ 0x1749, 0x1749, 0x1749 },
  23918. -{ 0x174A, 0x174A, 0x174A },
  23919. -{ 0x174B, 0x174B, 0x174B },
  23920. -{ 0x174C, 0x174C, 0x174C },
  23921. -{ 0x174D, 0x174D, 0x174D },
  23922. -{ 0x174E, 0x174E, 0x174E },
  23923. -{ 0x174F, 0x174F, 0x174F },
  23924. -{ 0x1750, 0x1750, 0x1750 },
  23925. -{ 0x1751, 0x1751, 0x1751 },
  23926. -{ 0x1752, 0x1752, 0x1752 },
  23927. -{ 0x1753, 0x1753, 0x1753 },
  23928. -{ 0x1760, 0x1760, 0x1760 },
  23929. -{ 0x1761, 0x1761, 0x1761 },
  23930. -{ 0x1762, 0x1762, 0x1762 },
  23931. -{ 0x1763, 0x1763, 0x1763 },
  23932. -{ 0x1764, 0x1764, 0x1764 },
  23933. -{ 0x1765, 0x1765, 0x1765 },
  23934. -{ 0x1766, 0x1766, 0x1766 },
  23935. -{ 0x1767, 0x1767, 0x1767 },
  23936. -{ 0x1768, 0x1768, 0x1768 },
  23937. -{ 0x1769, 0x1769, 0x1769 },
  23938. -{ 0x176A, 0x176A, 0x176A },
  23939. -{ 0x176B, 0x176B, 0x176B },
  23940. -{ 0x176C, 0x176C, 0x176C },
  23941. -{ 0x176E, 0x176E, 0x176E },
  23942. -{ 0x176F, 0x176F, 0x176F },
  23943. -{ 0x1770, 0x1770, 0x1770 },
  23944. -{ 0x1772, 0x1772, 0x1772 },
  23945. -{ 0x1773, 0x1773, 0x1773 },
  23946. -{ 0x1780, 0x1780, 0x1780 },
  23947. -{ 0x1781, 0x1781, 0x1781 },
  23948. -{ 0x1782, 0x1782, 0x1782 },
  23949. -{ 0x1783, 0x1783, 0x1783 },
  23950. -{ 0x1784, 0x1784, 0x1784 },
  23951. -{ 0x1785, 0x1785, 0x1785 },
  23952. -{ 0x1786, 0x1786, 0x1786 },
  23953. -{ 0x1787, 0x1787, 0x1787 },
  23954. -{ 0x1788, 0x1788, 0x1788 },
  23955. -{ 0x1789, 0x1789, 0x1789 },
  23956. -{ 0x178A, 0x178A, 0x178A },
  23957. -{ 0x178B, 0x178B, 0x178B },
  23958. -{ 0x178C, 0x178C, 0x178C },
  23959. -{ 0x178D, 0x178D, 0x178D },
  23960. -{ 0x178E, 0x178E, 0x178E },
  23961. -{ 0x178F, 0x178F, 0x178F },
  23962. -{ 0x1790, 0x1790, 0x1790 },
  23963. -{ 0x1791, 0x1791, 0x1791 },
  23964. -{ 0x1792, 0x1792, 0x1792 },
  23965. -{ 0x1793, 0x1793, 0x1793 },
  23966. -{ 0x1794, 0x1794, 0x1794 },
  23967. -{ 0x1795, 0x1795, 0x1795 },
  23968. -{ 0x1796, 0x1796, 0x1796 },
  23969. -{ 0x1797, 0x1797, 0x1797 },
  23970. -{ 0x1798, 0x1798, 0x1798 },
  23971. -{ 0x1799, 0x1799, 0x1799 },
  23972. -{ 0x179A, 0x179A, 0x179A },
  23973. -{ 0x179B, 0x179B, 0x179B },
  23974. -{ 0x179C, 0x179C, 0x179C },
  23975. -{ 0x179D, 0x179D, 0x179D },
  23976. -{ 0x179E, 0x179E, 0x179E },
  23977. -{ 0x179F, 0x179F, 0x179F },
  23978. -{ 0x17A0, 0x17A0, 0x17A0 },
  23979. -{ 0x17A1, 0x17A1, 0x17A1 },
  23980. -{ 0x17A2, 0x17A2, 0x17A2 },
  23981. -{ 0x17A3, 0x17A3, 0x17A3 },
  23982. -{ 0x17A4, 0x17A4, 0x17A4 },
  23983. -{ 0x17A5, 0x17A5, 0x17A5 },
  23984. -{ 0x17A6, 0x17A6, 0x17A6 },
  23985. -{ 0x17A7, 0x17A7, 0x17A7 },
  23986. -{ 0x17A8, 0x17A8, 0x17A8 },
  23987. -{ 0x17A9, 0x17A9, 0x17A9 },
  23988. -{ 0x17AA, 0x17AA, 0x17AA },
  23989. -{ 0x17AB, 0x17AB, 0x17AB },
  23990. -{ 0x17AC, 0x17AC, 0x17AC },
  23991. -{ 0x17AD, 0x17AD, 0x17AD },
  23992. -{ 0x17AE, 0x17AE, 0x17AE },
  23993. -{ 0x17AF, 0x17AF, 0x17AF },
  23994. -{ 0x17B0, 0x17B0, 0x17B0 },
  23995. -{ 0x17B1, 0x17B1, 0x17B1 },
  23996. -{ 0x17B2, 0x17B2, 0x17B2 },
  23997. -{ 0x17B3, 0x17B3, 0x17B3 },
  23998. -{ 0x17B7, 0x17B7, 0x17B7 },
  23999. -{ 0x17B8, 0x17B8, 0x17B8 },
  24000. -{ 0x17B9, 0x17B9, 0x17B9 },
  24001. -{ 0x17BA, 0x17BA, 0x17BA },
  24002. -{ 0x17BB, 0x17BB, 0x17BB },
  24003. -{ 0x17BC, 0x17BC, 0x17BC },
  24004. -{ 0x17BD, 0x17BD, 0x17BD },
  24005. -{ 0x17C6, 0x17C6, 0x17C6 },
  24006. -{ 0x17C9, 0x17C9, 0x17C9 },
  24007. -{ 0x17CA, 0x17CA, 0x17CA },
  24008. -{ 0x17CB, 0x17CB, 0x17CB },
  24009. -{ 0x17CC, 0x17CC, 0x17CC },
  24010. -{ 0x17CD, 0x17CD, 0x17CD },
  24011. -{ 0x17CE, 0x17CE, 0x17CE },
  24012. -{ 0x17CF, 0x17CF, 0x17CF },
  24013. -{ 0x17D0, 0x17D0, 0x17D0 },
  24014. -{ 0x17D1, 0x17D1, 0x17D1 },
  24015. -{ 0x17D2, 0x17D2, 0x17D2 },
  24016. -{ 0x17D3, 0x17D3, 0x17D3 },
  24017. -{ 0x17D7, 0x17D7, 0x17D7 },
  24018. -{ 0x17DC, 0x17DC, 0x17DC },
  24019. -{ 0x17DD, 0x17DD, 0x17DD },
  24020. -{ 0x180B, 0x180B, 0x180B },
  24021. -{ 0x180C, 0x180C, 0x180C },
  24022. -{ 0x180D, 0x180D, 0x180D },
  24023. -{ 0x1820, 0x1820, 0x1820 },
  24024. -{ 0x1821, 0x1821, 0x1821 },
  24025. -{ 0x1822, 0x1822, 0x1822 },
  24026. -{ 0x1823, 0x1823, 0x1823 },
  24027. -{ 0x1824, 0x1824, 0x1824 },
  24028. -{ 0x1825, 0x1825, 0x1825 },
  24029. -{ 0x1826, 0x1826, 0x1826 },
  24030. -{ 0x1827, 0x1827, 0x1827 },
  24031. -{ 0x1828, 0x1828, 0x1828 },
  24032. -{ 0x1829, 0x1829, 0x1829 },
  24033. -{ 0x182A, 0x182A, 0x182A },
  24034. -{ 0x182B, 0x182B, 0x182B },
  24035. -{ 0x182C, 0x182C, 0x182C },
  24036. -{ 0x182D, 0x182D, 0x182D },
  24037. -{ 0x182E, 0x182E, 0x182E },
  24038. -{ 0x182F, 0x182F, 0x182F },
  24039. -{ 0x1830, 0x1830, 0x1830 },
  24040. -{ 0x1831, 0x1831, 0x1831 },
  24041. -{ 0x1832, 0x1832, 0x1832 },
  24042. -{ 0x1833, 0x1833, 0x1833 },
  24043. -{ 0x1834, 0x1834, 0x1834 },
  24044. -{ 0x1835, 0x1835, 0x1835 },
  24045. -{ 0x1836, 0x1836, 0x1836 },
  24046. -{ 0x1837, 0x1837, 0x1837 },
  24047. -{ 0x1838, 0x1838, 0x1838 },
  24048. -{ 0x1839, 0x1839, 0x1839 },
  24049. -{ 0x183A, 0x183A, 0x183A },
  24050. -{ 0x183B, 0x183B, 0x183B },
  24051. -{ 0x183C, 0x183C, 0x183C },
  24052. -{ 0x183D, 0x183D, 0x183D },
  24053. -{ 0x183E, 0x183E, 0x183E },
  24054. -{ 0x183F, 0x183F, 0x183F },
  24055. -{ 0x1840, 0x1840, 0x1840 },
  24056. -{ 0x1841, 0x1841, 0x1841 },
  24057. -{ 0x1842, 0x1842, 0x1842 },
  24058. -{ 0x1843, 0x1843, 0x1843 },
  24059. -{ 0x1844, 0x1844, 0x1844 },
  24060. -{ 0x1845, 0x1845, 0x1845 },
  24061. -{ 0x1846, 0x1846, 0x1846 },
  24062. -{ 0x1847, 0x1847, 0x1847 },
  24063. -{ 0x1848, 0x1848, 0x1848 },
  24064. -{ 0x1849, 0x1849, 0x1849 },
  24065. -{ 0x184A, 0x184A, 0x184A },
  24066. -{ 0x184B, 0x184B, 0x184B },
  24067. -{ 0x184C, 0x184C, 0x184C },
  24068. -{ 0x184D, 0x184D, 0x184D },
  24069. -{ 0x184E, 0x184E, 0x184E },
  24070. -{ 0x184F, 0x184F, 0x184F },
  24071. -{ 0x1850, 0x1850, 0x1850 },
  24072. -{ 0x1851, 0x1851, 0x1851 },
  24073. -{ 0x1852, 0x1852, 0x1852 },
  24074. -{ 0x1853, 0x1853, 0x1853 },
  24075. -{ 0x1854, 0x1854, 0x1854 },
  24076. -{ 0x1855, 0x1855, 0x1855 },
  24077. -{ 0x1856, 0x1856, 0x1856 },
  24078. -{ 0x1857, 0x1857, 0x1857 },
  24079. -{ 0x1858, 0x1858, 0x1858 },
  24080. -{ 0x1859, 0x1859, 0x1859 },
  24081. -{ 0x185A, 0x185A, 0x185A },
  24082. -{ 0x185B, 0x185B, 0x185B },
  24083. -{ 0x185C, 0x185C, 0x185C },
  24084. -{ 0x185D, 0x185D, 0x185D },
  24085. -{ 0x185E, 0x185E, 0x185E },
  24086. -{ 0x185F, 0x185F, 0x185F },
  24087. -{ 0x1860, 0x1860, 0x1860 },
  24088. -{ 0x1861, 0x1861, 0x1861 },
  24089. -{ 0x1862, 0x1862, 0x1862 },
  24090. -{ 0x1863, 0x1863, 0x1863 },
  24091. -{ 0x1864, 0x1864, 0x1864 },
  24092. -{ 0x1865, 0x1865, 0x1865 },
  24093. -{ 0x1866, 0x1866, 0x1866 },
  24094. -{ 0x1867, 0x1867, 0x1867 },
  24095. -{ 0x1868, 0x1868, 0x1868 },
  24096. -{ 0x1869, 0x1869, 0x1869 },
  24097. -{ 0x186A, 0x186A, 0x186A },
  24098. -{ 0x186B, 0x186B, 0x186B },
  24099. -{ 0x186C, 0x186C, 0x186C },
  24100. -{ 0x186D, 0x186D, 0x186D },
  24101. -{ 0x186E, 0x186E, 0x186E },
  24102. -{ 0x186F, 0x186F, 0x186F },
  24103. -{ 0x1870, 0x1870, 0x1870 },
  24104. -{ 0x1871, 0x1871, 0x1871 },
  24105. -{ 0x1872, 0x1872, 0x1872 },
  24106. -{ 0x1873, 0x1873, 0x1873 },
  24107. -{ 0x1874, 0x1874, 0x1874 },
  24108. -{ 0x1875, 0x1875, 0x1875 },
  24109. -{ 0x1876, 0x1876, 0x1876 },
  24110. -{ 0x1877, 0x1877, 0x1877 },
  24111. -{ 0x1880, 0x1880, 0x1880 },
  24112. -{ 0x1881, 0x1881, 0x1881 },
  24113. -{ 0x1882, 0x1882, 0x1882 },
  24114. -{ 0x1883, 0x1883, 0x1883 },
  24115. -{ 0x1884, 0x1884, 0x1884 },
  24116. -{ 0x1885, 0x1885, 0x1885 },
  24117. -{ 0x1886, 0x1886, 0x1886 },
  24118. -{ 0x1887, 0x1887, 0x1887 },
  24119. -{ 0x1888, 0x1888, 0x1888 },
  24120. -{ 0x1889, 0x1889, 0x1889 },
  24121. -{ 0x188A, 0x188A, 0x188A },
  24122. -{ 0x188B, 0x188B, 0x188B },
  24123. -{ 0x188C, 0x188C, 0x188C },
  24124. -{ 0x188D, 0x188D, 0x188D },
  24125. -{ 0x188E, 0x188E, 0x188E },
  24126. -{ 0x188F, 0x188F, 0x188F },
  24127. -{ 0x1890, 0x1890, 0x1890 },
  24128. -{ 0x1891, 0x1891, 0x1891 },
  24129. -{ 0x1892, 0x1892, 0x1892 },
  24130. -{ 0x1893, 0x1893, 0x1893 },
  24131. -{ 0x1894, 0x1894, 0x1894 },
  24132. -{ 0x1895, 0x1895, 0x1895 },
  24133. -{ 0x1896, 0x1896, 0x1896 },
  24134. -{ 0x1897, 0x1897, 0x1897 },
  24135. -{ 0x1898, 0x1898, 0x1898 },
  24136. -{ 0x1899, 0x1899, 0x1899 },
  24137. -{ 0x189A, 0x189A, 0x189A },
  24138. -{ 0x189B, 0x189B, 0x189B },
  24139. -{ 0x189C, 0x189C, 0x189C },
  24140. -{ 0x189D, 0x189D, 0x189D },
  24141. -{ 0x189E, 0x189E, 0x189E },
  24142. -{ 0x189F, 0x189F, 0x189F },
  24143. -{ 0x18A0, 0x18A0, 0x18A0 },
  24144. -{ 0x18A1, 0x18A1, 0x18A1 },
  24145. -{ 0x18A2, 0x18A2, 0x18A2 },
  24146. -{ 0x18A3, 0x18A3, 0x18A3 },
  24147. -{ 0x18A4, 0x18A4, 0x18A4 },
  24148. -{ 0x18A5, 0x18A5, 0x18A5 },
  24149. -{ 0x18A6, 0x18A6, 0x18A6 },
  24150. -{ 0x18A7, 0x18A7, 0x18A7 },
  24151. -{ 0x18A8, 0x18A8, 0x18A8 },
  24152. -{ 0x18A9, 0x18A9, 0x18A9 },
  24153. -{ 0x1900, 0x1900, 0x1900 },
  24154. -{ 0x1901, 0x1901, 0x1901 },
  24155. -{ 0x1902, 0x1902, 0x1902 },
  24156. -{ 0x1903, 0x1903, 0x1903 },
  24157. -{ 0x1904, 0x1904, 0x1904 },
  24158. -{ 0x1905, 0x1905, 0x1905 },
  24159. -{ 0x1906, 0x1906, 0x1906 },
  24160. -{ 0x1907, 0x1907, 0x1907 },
  24161. -{ 0x1908, 0x1908, 0x1908 },
  24162. -{ 0x1909, 0x1909, 0x1909 },
  24163. -{ 0x190A, 0x190A, 0x190A },
  24164. -{ 0x190B, 0x190B, 0x190B },
  24165. -{ 0x190C, 0x190C, 0x190C },
  24166. -{ 0x190D, 0x190D, 0x190D },
  24167. -{ 0x190E, 0x190E, 0x190E },
  24168. -{ 0x190F, 0x190F, 0x190F },
  24169. -{ 0x1910, 0x1910, 0x1910 },
  24170. -{ 0x1911, 0x1911, 0x1911 },
  24171. -{ 0x1912, 0x1912, 0x1912 },
  24172. -{ 0x1913, 0x1913, 0x1913 },
  24173. -{ 0x1914, 0x1914, 0x1914 },
  24174. -{ 0x1915, 0x1915, 0x1915 },
  24175. -{ 0x1916, 0x1916, 0x1916 },
  24176. -{ 0x1917, 0x1917, 0x1917 },
  24177. -{ 0x1918, 0x1918, 0x1918 },
  24178. -{ 0x1919, 0x1919, 0x1919 },
  24179. -{ 0x191A, 0x191A, 0x191A },
  24180. -{ 0x191B, 0x191B, 0x191B },
  24181. -{ 0x191C, 0x191C, 0x191C },
  24182. -{ 0x1920, 0x1920, 0x1920 },
  24183. -{ 0x1921, 0x1921, 0x1921 },
  24184. -{ 0x1922, 0x1922, 0x1922 },
  24185. -{ 0x1927, 0x1927, 0x1927 },
  24186. -{ 0x1928, 0x1928, 0x1928 },
  24187. -{ 0x1932, 0x1932, 0x1932 },
  24188. -{ 0x1939, 0x1939, 0x1939 },
  24189. -{ 0x193A, 0x193A, 0x193A },
  24190. -{ 0x193B, 0x193B, 0x193B },
  24191. -{ 0x1950, 0x1950, 0x1950 },
  24192. -{ 0x1951, 0x1951, 0x1951 },
  24193. -{ 0x1952, 0x1952, 0x1952 },
  24194. -{ 0x1953, 0x1953, 0x1953 },
  24195. -{ 0x1954, 0x1954, 0x1954 },
  24196. -{ 0x1955, 0x1955, 0x1955 },
  24197. -{ 0x1956, 0x1956, 0x1956 },
  24198. -{ 0x1957, 0x1957, 0x1957 },
  24199. -{ 0x1958, 0x1958, 0x1958 },
  24200. -{ 0x1959, 0x1959, 0x1959 },
  24201. -{ 0x195A, 0x195A, 0x195A },
  24202. -{ 0x195B, 0x195B, 0x195B },
  24203. -{ 0x195C, 0x195C, 0x195C },
  24204. -{ 0x195D, 0x195D, 0x195D },
  24205. -{ 0x195E, 0x195E, 0x195E },
  24206. -{ 0x195F, 0x195F, 0x195F },
  24207. -{ 0x1960, 0x1960, 0x1960 },
  24208. -{ 0x1961, 0x1961, 0x1961 },
  24209. -{ 0x1962, 0x1962, 0x1962 },
  24210. -{ 0x1963, 0x1963, 0x1963 },
  24211. -{ 0x1964, 0x1964, 0x1964 },
  24212. -{ 0x1965, 0x1965, 0x1965 },
  24213. -{ 0x1966, 0x1966, 0x1966 },
  24214. -{ 0x1967, 0x1967, 0x1967 },
  24215. -{ 0x1968, 0x1968, 0x1968 },
  24216. -{ 0x1969, 0x1969, 0x1969 },
  24217. -{ 0x196A, 0x196A, 0x196A },
  24218. -{ 0x196B, 0x196B, 0x196B },
  24219. -{ 0x196C, 0x196C, 0x196C },
  24220. -{ 0x196D, 0x196D, 0x196D },
  24221. -{ 0x1970, 0x1970, 0x1970 },
  24222. -{ 0x1971, 0x1971, 0x1971 },
  24223. -{ 0x1972, 0x1972, 0x1972 },
  24224. -{ 0x1973, 0x1973, 0x1973 },
  24225. -{ 0x1974, 0x1974, 0x1974 },
  24226. -{ 0x1980, 0x1980, 0x1980 },
  24227. -{ 0x1981, 0x1981, 0x1981 },
  24228. -{ 0x1982, 0x1982, 0x1982 },
  24229. -{ 0x1983, 0x1983, 0x1983 },
  24230. -{ 0x1984, 0x1984, 0x1984 },
  24231. -{ 0x1985, 0x1985, 0x1985 },
  24232. -{ 0x1986, 0x1986, 0x1986 },
  24233. -{ 0x1987, 0x1987, 0x1987 },
  24234. -{ 0x1988, 0x1988, 0x1988 },
  24235. -{ 0x1989, 0x1989, 0x1989 },
  24236. -{ 0x198A, 0x198A, 0x198A },
  24237. -{ 0x198B, 0x198B, 0x198B },
  24238. -{ 0x198C, 0x198C, 0x198C },
  24239. -{ 0x198D, 0x198D, 0x198D },
  24240. -{ 0x198E, 0x198E, 0x198E },
  24241. -{ 0x198F, 0x198F, 0x198F },
  24242. -{ 0x1990, 0x1990, 0x1990 },
  24243. -{ 0x1991, 0x1991, 0x1991 },
  24244. -{ 0x1992, 0x1992, 0x1992 },
  24245. -{ 0x1993, 0x1993, 0x1993 },
  24246. -{ 0x1994, 0x1994, 0x1994 },
  24247. -{ 0x1995, 0x1995, 0x1995 },
  24248. -{ 0x1996, 0x1996, 0x1996 },
  24249. -{ 0x1997, 0x1997, 0x1997 },
  24250. -{ 0x1998, 0x1998, 0x1998 },
  24251. -{ 0x1999, 0x1999, 0x1999 },
  24252. -{ 0x199A, 0x199A, 0x199A },
  24253. -{ 0x199B, 0x199B, 0x199B },
  24254. -{ 0x199C, 0x199C, 0x199C },
  24255. -{ 0x199D, 0x199D, 0x199D },
  24256. -{ 0x199E, 0x199E, 0x199E },
  24257. -{ 0x199F, 0x199F, 0x199F },
  24258. -{ 0x19A0, 0x19A0, 0x19A0 },
  24259. -{ 0x19A1, 0x19A1, 0x19A1 },
  24260. -{ 0x19A2, 0x19A2, 0x19A2 },
  24261. -{ 0x19A3, 0x19A3, 0x19A3 },
  24262. -{ 0x19A4, 0x19A4, 0x19A4 },
  24263. -{ 0x19A5, 0x19A5, 0x19A5 },
  24264. -{ 0x19A6, 0x19A6, 0x19A6 },
  24265. -{ 0x19A7, 0x19A7, 0x19A7 },
  24266. -{ 0x19A8, 0x19A8, 0x19A8 },
  24267. -{ 0x19A9, 0x19A9, 0x19A9 },
  24268. -{ 0x19C1, 0x19C1, 0x19C1 },
  24269. -{ 0x19C2, 0x19C2, 0x19C2 },
  24270. -{ 0x19C3, 0x19C3, 0x19C3 },
  24271. -{ 0x19C4, 0x19C4, 0x19C4 },
  24272. -{ 0x19C5, 0x19C5, 0x19C5 },
  24273. -{ 0x19C6, 0x19C6, 0x19C6 },
  24274. -{ 0x19C7, 0x19C7, 0x19C7 },
  24275. -{ 0x1A00, 0x1A00, 0x1A00 },
  24276. -{ 0x1A01, 0x1A01, 0x1A01 },
  24277. -{ 0x1A02, 0x1A02, 0x1A02 },
  24278. -{ 0x1A03, 0x1A03, 0x1A03 },
  24279. -{ 0x1A04, 0x1A04, 0x1A04 },
  24280. -{ 0x1A05, 0x1A05, 0x1A05 },
  24281. -{ 0x1A06, 0x1A06, 0x1A06 },
  24282. -{ 0x1A07, 0x1A07, 0x1A07 },
  24283. -{ 0x1A08, 0x1A08, 0x1A08 },
  24284. -{ 0x1A09, 0x1A09, 0x1A09 },
  24285. -{ 0x1A0A, 0x1A0A, 0x1A0A },
  24286. -{ 0x1A0B, 0x1A0B, 0x1A0B },
  24287. -{ 0x1A0C, 0x1A0C, 0x1A0C },
  24288. -{ 0x1A0D, 0x1A0D, 0x1A0D },
  24289. -{ 0x1A0E, 0x1A0E, 0x1A0E },
  24290. -{ 0x1A0F, 0x1A0F, 0x1A0F },
  24291. -{ 0x1A10, 0x1A10, 0x1A10 },
  24292. -{ 0x1A11, 0x1A11, 0x1A11 },
  24293. -{ 0x1A12, 0x1A12, 0x1A12 },
  24294. -{ 0x1A13, 0x1A13, 0x1A13 },
  24295. -{ 0x1A14, 0x1A14, 0x1A14 },
  24296. -{ 0x1A15, 0x1A15, 0x1A15 },
  24297. -{ 0x1A16, 0x1A16, 0x1A16 },
  24298. -{ 0x1A17, 0x1A17, 0x1A17 },
  24299. -{ 0x1A18, 0x1A18, 0x1A18 },
  24300. -{ 0x1D00, 0x1D00, 0x1D00 },
  24301. -{ 0x1D01, 0x1D01, 0x1D01 },
  24302. -{ 0x1D02, 0x1D02, 0x1D02 },
  24303. -{ 0x1D03, 0x1D03, 0x1D03 },
  24304. -{ 0x1D04, 0x1D04, 0x1D04 },
  24305. -{ 0x1D05, 0x1D05, 0x1D05 },
  24306. -{ 0x1D06, 0x1D06, 0x1D06 },
  24307. -{ 0x1D07, 0x1D07, 0x1D07 },
  24308. -{ 0x1D08, 0x1D08, 0x1D08 },
  24309. -{ 0x1D09, 0x1D09, 0x1D09 },
  24310. -{ 0x1D0A, 0x1D0A, 0x1D0A },
  24311. -{ 0x1D0B, 0x1D0B, 0x1D0B },
  24312. -{ 0x1D0C, 0x1D0C, 0x1D0C },
  24313. -{ 0x1D0D, 0x1D0D, 0x1D0D },
  24314. -{ 0x1D0E, 0x1D0E, 0x1D0E },
  24315. -{ 0x1D0F, 0x1D0F, 0x1D0F },
  24316. -{ 0x1D10, 0x1D10, 0x1D10 },
  24317. -{ 0x1D11, 0x1D11, 0x1D11 },
  24318. -{ 0x1D12, 0x1D12, 0x1D12 },
  24319. -{ 0x1D13, 0x1D13, 0x1D13 },
  24320. -{ 0x1D14, 0x1D14, 0x1D14 },
  24321. -{ 0x1D15, 0x1D15, 0x1D15 },
  24322. -{ 0x1D16, 0x1D16, 0x1D16 },
  24323. -{ 0x1D17, 0x1D17, 0x1D17 },
  24324. -{ 0x1D18, 0x1D18, 0x1D18 },
  24325. -{ 0x1D19, 0x1D19, 0x1D19 },
  24326. -{ 0x1D1A, 0x1D1A, 0x1D1A },
  24327. -{ 0x1D1B, 0x1D1B, 0x1D1B },
  24328. -{ 0x1D1C, 0x1D1C, 0x1D1C },
  24329. -{ 0x1D1D, 0x1D1D, 0x1D1D },
  24330. -{ 0x1D1E, 0x1D1E, 0x1D1E },
  24331. -{ 0x1D1F, 0x1D1F, 0x1D1F },
  24332. -{ 0x1D20, 0x1D20, 0x1D20 },
  24333. -{ 0x1D21, 0x1D21, 0x1D21 },
  24334. -{ 0x1D22, 0x1D22, 0x1D22 },
  24335. -{ 0x1D23, 0x1D23, 0x1D23 },
  24336. -{ 0x1D24, 0x1D24, 0x1D24 },
  24337. -{ 0x1D25, 0x1D25, 0x1D25 },
  24338. -{ 0x1D26, 0x1D26, 0x1D26 },
  24339. -{ 0x1D27, 0x1D27, 0x1D27 },
  24340. -{ 0x1D28, 0x1D28, 0x1D28 },
  24341. -{ 0x1D29, 0x1D29, 0x1D29 },
  24342. -{ 0x1D2A, 0x1D2A, 0x1D2A },
  24343. -{ 0x1D2B, 0x1D2B, 0x1D2B },
  24344. -{ 0x1D2C, 0x1D2C, 0x1D2C },
  24345. -{ 0x1D2D, 0x1D2D, 0x1D2D },
  24346. -{ 0x1D2E, 0x1D2E, 0x1D2E },
  24347. -{ 0x1D2F, 0x1D2F, 0x1D2F },
  24348. -{ 0x1D30, 0x1D30, 0x1D30 },
  24349. -{ 0x1D31, 0x1D31, 0x1D31 },
  24350. -{ 0x1D32, 0x1D32, 0x1D32 },
  24351. -{ 0x1D33, 0x1D33, 0x1D33 },
  24352. -{ 0x1D34, 0x1D34, 0x1D34 },
  24353. -{ 0x1D35, 0x1D35, 0x1D35 },
  24354. -{ 0x1D36, 0x1D36, 0x1D36 },
  24355. -{ 0x1D37, 0x1D37, 0x1D37 },
  24356. -{ 0x1D38, 0x1D38, 0x1D38 },
  24357. -{ 0x1D39, 0x1D39, 0x1D39 },
  24358. -{ 0x1D3A, 0x1D3A, 0x1D3A },
  24359. -{ 0x1D3B, 0x1D3B, 0x1D3B },
  24360. -{ 0x1D3C, 0x1D3C, 0x1D3C },
  24361. -{ 0x1D3D, 0x1D3D, 0x1D3D },
  24362. -{ 0x1D3E, 0x1D3E, 0x1D3E },
  24363. -{ 0x1D3F, 0x1D3F, 0x1D3F },
  24364. -{ 0x1D40, 0x1D40, 0x1D40 },
  24365. -{ 0x1D41, 0x1D41, 0x1D41 },
  24366. -{ 0x1D42, 0x1D42, 0x1D42 },
  24367. -{ 0x1D43, 0x1D43, 0x1D43 },
  24368. -{ 0x1D44, 0x1D44, 0x1D44 },
  24369. -{ 0x1D45, 0x1D45, 0x1D45 },
  24370. -{ 0x1D46, 0x1D46, 0x1D46 },
  24371. -{ 0x1D47, 0x1D47, 0x1D47 },
  24372. -{ 0x1D48, 0x1D48, 0x1D48 },
  24373. -{ 0x1D49, 0x1D49, 0x1D49 },
  24374. -{ 0x1D4A, 0x1D4A, 0x1D4A },
  24375. -{ 0x1D4B, 0x1D4B, 0x1D4B },
  24376. -{ 0x1D4C, 0x1D4C, 0x1D4C },
  24377. -{ 0x1D4D, 0x1D4D, 0x1D4D },
  24378. -{ 0x1D4E, 0x1D4E, 0x1D4E },
  24379. -{ 0x1D4F, 0x1D4F, 0x1D4F },
  24380. -{ 0x1D50, 0x1D50, 0x1D50 },
  24381. -{ 0x1D51, 0x1D51, 0x1D51 },
  24382. -{ 0x1D52, 0x1D52, 0x1D52 },
  24383. -{ 0x1D53, 0x1D53, 0x1D53 },
  24384. -{ 0x1D54, 0x1D54, 0x1D54 },
  24385. -{ 0x1D55, 0x1D55, 0x1D55 },
  24386. -{ 0x1D56, 0x1D56, 0x1D56 },
  24387. -{ 0x1D57, 0x1D57, 0x1D57 },
  24388. -{ 0x1D58, 0x1D58, 0x1D58 },
  24389. -{ 0x1D59, 0x1D59, 0x1D59 },
  24390. -{ 0x1D5A, 0x1D5A, 0x1D5A },
  24391. -{ 0x1D5B, 0x1D5B, 0x1D5B },
  24392. -{ 0x1D5C, 0x1D5C, 0x1D5C },
  24393. -{ 0x1D5D, 0x1D5D, 0x1D5D },
  24394. -{ 0x1D5E, 0x1D5E, 0x1D5E },
  24395. -{ 0x1D5F, 0x1D5F, 0x1D5F },
  24396. -{ 0x1D60, 0x1D60, 0x1D60 },
  24397. -{ 0x1D61, 0x1D61, 0x1D61 },
  24398. -{ 0x1D62, 0x1D62, 0x1D62 },
  24399. -{ 0x1D63, 0x1D63, 0x1D63 },
  24400. -{ 0x1D64, 0x1D64, 0x1D64 },
  24401. -{ 0x1D65, 0x1D65, 0x1D65 },
  24402. -{ 0x1D66, 0x1D66, 0x1D66 },
  24403. -{ 0x1D67, 0x1D67, 0x1D67 },
  24404. -{ 0x1D68, 0x1D68, 0x1D68 },
  24405. -{ 0x1D69, 0x1D69, 0x1D69 },
  24406. -{ 0x1D6A, 0x1D6A, 0x1D6A },
  24407. -{ 0x1D6B, 0x1D6B, 0x1D6B },
  24408. -{ 0x1D6C, 0x1D6C, 0x1D6C },
  24409. -{ 0x1D6D, 0x1D6D, 0x1D6D },
  24410. -{ 0x1D6E, 0x1D6E, 0x1D6E },
  24411. -{ 0x1D6F, 0x1D6F, 0x1D6F },
  24412. -{ 0x1D70, 0x1D70, 0x1D70 },
  24413. -{ 0x1D71, 0x1D71, 0x1D71 },
  24414. -{ 0x1D72, 0x1D72, 0x1D72 },
  24415. -{ 0x1D73, 0x1D73, 0x1D73 },
  24416. -{ 0x1D74, 0x1D74, 0x1D74 },
  24417. -{ 0x1D75, 0x1D75, 0x1D75 },
  24418. -{ 0x1D76, 0x1D76, 0x1D76 },
  24419. -{ 0x1D77, 0x1D77, 0x1D77 },
  24420. -{ 0x1D78, 0x1D78, 0x1D78 },
  24421. -{ 0x1D79, 0x1D79, 0x1D79 },
  24422. -{ 0x1D7A, 0x1D7A, 0x1D7A },
  24423. -{ 0x1D7B, 0x1D7B, 0x1D7B },
  24424. -{ 0x1D7C, 0x1D7C, 0x1D7C },
  24425. -{ 0x1D7D, 0x1D7D, 0x1D7D },
  24426. -{ 0x1D7E, 0x1D7E, 0x1D7E },
  24427. -{ 0x1D7F, 0x1D7F, 0x1D7F },
  24428. -{ 0x1D80, 0x1D80, 0x1D80 },
  24429. -{ 0x1D81, 0x1D81, 0x1D81 },
  24430. -{ 0x1D82, 0x1D82, 0x1D82 },
  24431. -{ 0x1D83, 0x1D83, 0x1D83 },
  24432. -{ 0x1D84, 0x1D84, 0x1D84 },
  24433. -{ 0x1D85, 0x1D85, 0x1D85 },
  24434. -{ 0x1D86, 0x1D86, 0x1D86 },
  24435. -{ 0x1D87, 0x1D87, 0x1D87 },
  24436. -{ 0x1D88, 0x1D88, 0x1D88 },
  24437. -{ 0x1D89, 0x1D89, 0x1D89 },
  24438. -{ 0x1D8A, 0x1D8A, 0x1D8A },
  24439. -{ 0x1D8B, 0x1D8B, 0x1D8B },
  24440. -{ 0x1D8C, 0x1D8C, 0x1D8C },
  24441. -{ 0x1D8D, 0x1D8D, 0x1D8D },
  24442. -{ 0x1D8E, 0x1D8E, 0x1D8E },
  24443. -{ 0x1D8F, 0x1D8F, 0x1D8F },
  24444. -{ 0x1D90, 0x1D90, 0x1D90 },
  24445. -{ 0x1D91, 0x1D91, 0x1D91 },
  24446. -{ 0x1D92, 0x1D92, 0x1D92 },
  24447. -{ 0x1D93, 0x1D93, 0x1D93 },
  24448. -{ 0x1D94, 0x1D94, 0x1D94 },
  24449. -{ 0x1D95, 0x1D95, 0x1D95 },
  24450. -{ 0x1D96, 0x1D96, 0x1D96 },
  24451. -{ 0x1D97, 0x1D97, 0x1D97 },
  24452. -{ 0x1D98, 0x1D98, 0x1D98 },
  24453. -{ 0x1D99, 0x1D99, 0x1D99 },
  24454. -{ 0x1D9A, 0x1D9A, 0x1D9A },
  24455. -{ 0x1D9B, 0x1D9B, 0x1D9B },
  24456. -{ 0x1D9C, 0x1D9C, 0x1D9C },
  24457. -{ 0x1D9D, 0x1D9D, 0x1D9D },
  24458. -{ 0x1D9E, 0x1D9E, 0x1D9E },
  24459. -{ 0x1D9F, 0x1D9F, 0x1D9F },
  24460. -{ 0x1DA0, 0x1DA0, 0x1DA0 },
  24461. -{ 0x1DA1, 0x1DA1, 0x1DA1 },
  24462. -{ 0x1DA2, 0x1DA2, 0x1DA2 },
  24463. -{ 0x1DA3, 0x1DA3, 0x1DA3 },
  24464. -{ 0x1DA4, 0x1DA4, 0x1DA4 },
  24465. -{ 0x1DA5, 0x1DA5, 0x1DA5 },
  24466. -{ 0x1DA6, 0x1DA6, 0x1DA6 },
  24467. -{ 0x1DA7, 0x1DA7, 0x1DA7 },
  24468. -{ 0x1DA8, 0x1DA8, 0x1DA8 },
  24469. -{ 0x1DA9, 0x1DA9, 0x1DA9 },
  24470. -{ 0x1DAA, 0x1DAA, 0x1DAA },
  24471. -{ 0x1DAB, 0x1DAB, 0x1DAB },
  24472. -{ 0x1DAC, 0x1DAC, 0x1DAC },
  24473. -{ 0x1DAD, 0x1DAD, 0x1DAD },
  24474. -{ 0x1DAE, 0x1DAE, 0x1DAE },
  24475. -{ 0x1DAF, 0x1DAF, 0x1DAF },
  24476. -{ 0x1DB0, 0x1DB0, 0x1DB0 },
  24477. -{ 0x1DB1, 0x1DB1, 0x1DB1 },
  24478. -{ 0x1DB2, 0x1DB2, 0x1DB2 },
  24479. -{ 0x1DB3, 0x1DB3, 0x1DB3 },
  24480. -{ 0x1DB4, 0x1DB4, 0x1DB4 },
  24481. -{ 0x1DB5, 0x1DB5, 0x1DB5 },
  24482. -{ 0x1DB6, 0x1DB6, 0x1DB6 },
  24483. -{ 0x1DB7, 0x1DB7, 0x1DB7 },
  24484. -{ 0x1DB8, 0x1DB8, 0x1DB8 },
  24485. -{ 0x1DB9, 0x1DB9, 0x1DB9 },
  24486. -{ 0x1DBA, 0x1DBA, 0x1DBA },
  24487. -{ 0x1DBB, 0x1DBB, 0x1DBB },
  24488. -{ 0x1DBC, 0x1DBC, 0x1DBC },
  24489. -{ 0x1DBD, 0x1DBD, 0x1DBD },
  24490. -{ 0x1DBE, 0x1DBE, 0x1DBE },
  24491. -{ 0x1DBF, 0x1DBF, 0x1DBF },
  24492. -{ 0x1DC0, 0x1DC0, 0x1DC0 },
  24493. -{ 0x1DC1, 0x1DC1, 0x1DC1 },
  24494. -{ 0x1DC2, 0x1DC2, 0x1DC2 },
  24495. -{ 0x1DC3, 0x1DC3, 0x1DC3 },
  24496. -{ 0x1E00, 0x1E00, 0x1E01 },
  24497. -{ 0x1E01, 0x1E00, 0x1E01 },
  24498. -{ 0x1E02, 0x1E02, 0x1E03 },
  24499. -{ 0x1E03, 0x1E02, 0x1E03 },
  24500. -{ 0x1E04, 0x1E04, 0x1E05 },
  24501. -{ 0x1E05, 0x1E04, 0x1E05 },
  24502. -{ 0x1E06, 0x1E06, 0x1E07 },
  24503. -{ 0x1E07, 0x1E06, 0x1E07 },
  24504. -{ 0x1E08, 0x1E08, 0x1E09 },
  24505. -{ 0x1E09, 0x1E08, 0x1E09 },
  24506. -{ 0x1E0A, 0x1E0A, 0x1E0B },
  24507. -{ 0x1E0B, 0x1E0A, 0x1E0B },
  24508. -{ 0x1E0C, 0x1E0C, 0x1E0D },
  24509. -{ 0x1E0D, 0x1E0C, 0x1E0D },
  24510. -{ 0x1E0E, 0x1E0E, 0x1E0F },
  24511. -{ 0x1E0F, 0x1E0E, 0x1E0F },
  24512. -{ 0x1E10, 0x1E10, 0x1E11 },
  24513. -{ 0x1E11, 0x1E10, 0x1E11 },
  24514. -{ 0x1E12, 0x1E12, 0x1E13 },
  24515. -{ 0x1E13, 0x1E12, 0x1E13 },
  24516. -{ 0x1E14, 0x1E14, 0x1E15 },
  24517. -{ 0x1E15, 0x1E14, 0x1E15 },
  24518. -{ 0x1E16, 0x1E16, 0x1E17 },
  24519. -{ 0x1E17, 0x1E16, 0x1E17 },
  24520. -{ 0x1E18, 0x1E18, 0x1E19 },
  24521. -{ 0x1E19, 0x1E18, 0x1E19 },
  24522. -{ 0x1E1A, 0x1E1A, 0x1E1B },
  24523. -{ 0x1E1B, 0x1E1A, 0x1E1B },
  24524. -{ 0x1E1C, 0x1E1C, 0x1E1D },
  24525. -{ 0x1E1D, 0x1E1C, 0x1E1D },
  24526. -{ 0x1E1E, 0x1E1E, 0x1E1F },
  24527. -{ 0x1E1F, 0x1E1E, 0x1E1F },
  24528. -{ 0x1E20, 0x1E20, 0x1E21 },
  24529. -{ 0x1E21, 0x1E20, 0x1E21 },
  24530. -{ 0x1E22, 0x1E22, 0x1E23 },
  24531. -{ 0x1E23, 0x1E22, 0x1E23 },
  24532. -{ 0x1E24, 0x1E24, 0x1E25 },
  24533. -{ 0x1E25, 0x1E24, 0x1E25 },
  24534. -{ 0x1E26, 0x1E26, 0x1E27 },
  24535. -{ 0x1E27, 0x1E26, 0x1E27 },
  24536. -{ 0x1E28, 0x1E28, 0x1E29 },
  24537. -{ 0x1E29, 0x1E28, 0x1E29 },
  24538. -{ 0x1E2A, 0x1E2A, 0x1E2B },
  24539. -{ 0x1E2B, 0x1E2A, 0x1E2B },
  24540. -{ 0x1E2C, 0x1E2C, 0x1E2D },
  24541. -{ 0x1E2D, 0x1E2C, 0x1E2D },
  24542. -{ 0x1E2E, 0x1E2E, 0x1E2F },
  24543. -{ 0x1E2F, 0x1E2E, 0x1E2F },
  24544. -{ 0x1E30, 0x1E30, 0x1E31 },
  24545. -{ 0x1E31, 0x1E30, 0x1E31 },
  24546. -{ 0x1E32, 0x1E32, 0x1E33 },
  24547. -{ 0x1E33, 0x1E32, 0x1E33 },
  24548. -{ 0x1E34, 0x1E34, 0x1E35 },
  24549. -{ 0x1E35, 0x1E34, 0x1E35 },
  24550. -{ 0x1E36, 0x1E36, 0x1E37 },
  24551. -{ 0x1E37, 0x1E36, 0x1E37 },
  24552. -{ 0x1E38, 0x1E38, 0x1E39 },
  24553. -{ 0x1E39, 0x1E38, 0x1E39 },
  24554. -{ 0x1E3A, 0x1E3A, 0x1E3B },
  24555. -{ 0x1E3B, 0x1E3A, 0x1E3B },
  24556. -{ 0x1E3C, 0x1E3C, 0x1E3D },
  24557. -{ 0x1E3D, 0x1E3C, 0x1E3D },
  24558. -{ 0x1E3E, 0x1E3E, 0x1E3F },
  24559. -{ 0x1E3F, 0x1E3E, 0x1E3F },
  24560. -{ 0x1E40, 0x1E40, 0x1E41 },
  24561. -{ 0x1E41, 0x1E40, 0x1E41 },
  24562. -{ 0x1E42, 0x1E42, 0x1E43 },
  24563. -{ 0x1E43, 0x1E42, 0x1E43 },
  24564. -{ 0x1E44, 0x1E44, 0x1E45 },
  24565. -{ 0x1E45, 0x1E44, 0x1E45 },
  24566. -{ 0x1E46, 0x1E46, 0x1E47 },
  24567. -{ 0x1E47, 0x1E46, 0x1E47 },
  24568. -{ 0x1E48, 0x1E48, 0x1E49 },
  24569. -{ 0x1E49, 0x1E48, 0x1E49 },
  24570. -{ 0x1E4A, 0x1E4A, 0x1E4B },
  24571. -{ 0x1E4B, 0x1E4A, 0x1E4B },
  24572. -{ 0x1E4C, 0x1E4C, 0x1E4D },
  24573. -{ 0x1E4D, 0x1E4C, 0x1E4D },
  24574. -{ 0x1E4E, 0x1E4E, 0x1E4F },
  24575. -{ 0x1E4F, 0x1E4E, 0x1E4F },
  24576. -{ 0x1E50, 0x1E50, 0x1E51 },
  24577. -{ 0x1E51, 0x1E50, 0x1E51 },
  24578. -{ 0x1E52, 0x1E52, 0x1E53 },
  24579. -{ 0x1E53, 0x1E52, 0x1E53 },
  24580. -{ 0x1E54, 0x1E54, 0x1E55 },
  24581. -{ 0x1E55, 0x1E54, 0x1E55 },
  24582. -{ 0x1E56, 0x1E56, 0x1E57 },
  24583. -{ 0x1E57, 0x1E56, 0x1E57 },
  24584. -{ 0x1E58, 0x1E58, 0x1E59 },
  24585. -{ 0x1E59, 0x1E58, 0x1E59 },
  24586. -{ 0x1E5A, 0x1E5A, 0x1E5B },
  24587. -{ 0x1E5B, 0x1E5A, 0x1E5B },
  24588. -{ 0x1E5C, 0x1E5C, 0x1E5D },
  24589. -{ 0x1E5D, 0x1E5C, 0x1E5D },
  24590. -{ 0x1E5E, 0x1E5E, 0x1E5F },
  24591. -{ 0x1E5F, 0x1E5E, 0x1E5F },
  24592. -{ 0x1E60, 0x1E60, 0x1E61 },
  24593. -{ 0x1E61, 0x1E60, 0x1E61 },
  24594. -{ 0x1E62, 0x1E62, 0x1E63 },
  24595. -{ 0x1E63, 0x1E62, 0x1E63 },
  24596. -{ 0x1E64, 0x1E64, 0x1E65 },
  24597. -{ 0x1E65, 0x1E64, 0x1E65 },
  24598. -{ 0x1E66, 0x1E66, 0x1E67 },
  24599. -{ 0x1E67, 0x1E66, 0x1E67 },
  24600. -{ 0x1E68, 0x1E68, 0x1E69 },
  24601. -{ 0x1E69, 0x1E68, 0x1E69 },
  24602. -{ 0x1E6A, 0x1E6A, 0x1E6B },
  24603. -{ 0x1E6B, 0x1E6A, 0x1E6B },
  24604. -{ 0x1E6C, 0x1E6C, 0x1E6D },
  24605. -{ 0x1E6D, 0x1E6C, 0x1E6D },
  24606. -{ 0x1E6E, 0x1E6E, 0x1E6F },
  24607. -{ 0x1E6F, 0x1E6E, 0x1E6F },
  24608. -{ 0x1E70, 0x1E70, 0x1E71 },
  24609. -{ 0x1E71, 0x1E70, 0x1E71 },
  24610. -{ 0x1E72, 0x1E72, 0x1E73 },
  24611. -{ 0x1E73, 0x1E72, 0x1E73 },
  24612. -{ 0x1E74, 0x1E74, 0x1E75 },
  24613. -{ 0x1E75, 0x1E74, 0x1E75 },
  24614. -{ 0x1E76, 0x1E76, 0x1E77 },
  24615. -{ 0x1E77, 0x1E76, 0x1E77 },
  24616. -{ 0x1E78, 0x1E78, 0x1E79 },
  24617. -{ 0x1E79, 0x1E78, 0x1E79 },
  24618. -{ 0x1E7A, 0x1E7A, 0x1E7B },
  24619. -{ 0x1E7B, 0x1E7A, 0x1E7B },
  24620. -{ 0x1E7C, 0x1E7C, 0x1E7D },
  24621. -{ 0x1E7D, 0x1E7C, 0x1E7D },
  24622. -{ 0x1E7E, 0x1E7E, 0x1E7F },
  24623. -{ 0x1E7F, 0x1E7E, 0x1E7F },
  24624. -{ 0x1E80, 0x1E80, 0x1E81 },
  24625. -{ 0x1E81, 0x1E80, 0x1E81 },
  24626. -{ 0x1E82, 0x1E82, 0x1E83 },
  24627. -{ 0x1E83, 0x1E82, 0x1E83 },
  24628. -{ 0x1E84, 0x1E84, 0x1E85 },
  24629. -{ 0x1E85, 0x1E84, 0x1E85 },
  24630. -{ 0x1E86, 0x1E86, 0x1E87 },
  24631. -{ 0x1E87, 0x1E86, 0x1E87 },
  24632. -{ 0x1E88, 0x1E88, 0x1E89 },
  24633. -{ 0x1E89, 0x1E88, 0x1E89 },
  24634. -{ 0x1E8A, 0x1E8A, 0x1E8B },
  24635. -{ 0x1E8B, 0x1E8A, 0x1E8B },
  24636. -{ 0x1E8C, 0x1E8C, 0x1E8D },
  24637. -{ 0x1E8D, 0x1E8C, 0x1E8D },
  24638. -{ 0x1E8E, 0x1E8E, 0x1E8F },
  24639. -{ 0x1E8F, 0x1E8E, 0x1E8F },
  24640. -{ 0x1E90, 0x1E90, 0x1E91 },
  24641. -{ 0x1E91, 0x1E90, 0x1E91 },
  24642. -{ 0x1E92, 0x1E92, 0x1E93 },
  24643. -{ 0x1E93, 0x1E92, 0x1E93 },
  24644. -{ 0x1E94, 0x1E94, 0x1E95 },
  24645. -{ 0x1E95, 0x1E94, 0x1E95 },
  24646. -{ 0x1E96, 0x1E96, 0x1E96 },
  24647. -{ 0x1E97, 0x1E97, 0x1E97 },
  24648. -{ 0x1E98, 0x1E98, 0x1E98 },
  24649. -{ 0x1E99, 0x1E99, 0x1E99 },
  24650. -{ 0x1E9A, 0x1E9A, 0x1E9A },
  24651. -{ 0x1E9B, 0x1E60, 0x1E9B },
  24652. -{ 0x1EA0, 0x1EA0, 0x1EA1 },
  24653. -{ 0x1EA1, 0x1EA0, 0x1EA1 },
  24654. -{ 0x1EA2, 0x1EA2, 0x1EA3 },
  24655. -{ 0x1EA3, 0x1EA2, 0x1EA3 },
  24656. -{ 0x1EA4, 0x1EA4, 0x1EA5 },
  24657. -{ 0x1EA5, 0x1EA4, 0x1EA5 },
  24658. -{ 0x1EA6, 0x1EA6, 0x1EA7 },
  24659. -{ 0x1EA7, 0x1EA6, 0x1EA7 },
  24660. -{ 0x1EA8, 0x1EA8, 0x1EA9 },
  24661. -{ 0x1EA9, 0x1EA8, 0x1EA9 },
  24662. -{ 0x1EAA, 0x1EAA, 0x1EAB },
  24663. -{ 0x1EAB, 0x1EAA, 0x1EAB },
  24664. -{ 0x1EAC, 0x1EAC, 0x1EAD },
  24665. -{ 0x1EAD, 0x1EAC, 0x1EAD },
  24666. -{ 0x1EAE, 0x1EAE, 0x1EAF },
  24667. -{ 0x1EAF, 0x1EAE, 0x1EAF },
  24668. -{ 0x1EB0, 0x1EB0, 0x1EB1 },
  24669. -{ 0x1EB1, 0x1EB0, 0x1EB1 },
  24670. -{ 0x1EB2, 0x1EB2, 0x1EB3 },
  24671. -{ 0x1EB3, 0x1EB2, 0x1EB3 },
  24672. -{ 0x1EB4, 0x1EB4, 0x1EB5 },
  24673. -{ 0x1EB5, 0x1EB4, 0x1EB5 },
  24674. -{ 0x1EB6, 0x1EB6, 0x1EB7 },
  24675. -{ 0x1EB7, 0x1EB6, 0x1EB7 },
  24676. -{ 0x1EB8, 0x1EB8, 0x1EB9 },
  24677. -{ 0x1EB9, 0x1EB8, 0x1EB9 },
  24678. -{ 0x1EBA, 0x1EBA, 0x1EBB },
  24679. -{ 0x1EBB, 0x1EBA, 0x1EBB },
  24680. -{ 0x1EBC, 0x1EBC, 0x1EBD },
  24681. -{ 0x1EBD, 0x1EBC, 0x1EBD },
  24682. -{ 0x1EBE, 0x1EBE, 0x1EBF },
  24683. -{ 0x1EBF, 0x1EBE, 0x1EBF },
  24684. -{ 0x1EC0, 0x1EC0, 0x1EC1 },
  24685. -{ 0x1EC1, 0x1EC0, 0x1EC1 },
  24686. -{ 0x1EC2, 0x1EC2, 0x1EC3 },
  24687. -{ 0x1EC3, 0x1EC2, 0x1EC3 },
  24688. -{ 0x1EC4, 0x1EC4, 0x1EC5 },
  24689. -{ 0x1EC5, 0x1EC4, 0x1EC5 },
  24690. -{ 0x1EC6, 0x1EC6, 0x1EC7 },
  24691. -{ 0x1EC7, 0x1EC6, 0x1EC7 },
  24692. -{ 0x1EC8, 0x1EC8, 0x1EC9 },
  24693. -{ 0x1EC9, 0x1EC8, 0x1EC9 },
  24694. -{ 0x1ECA, 0x1ECA, 0x1ECB },
  24695. -{ 0x1ECB, 0x1ECA, 0x1ECB },
  24696. -{ 0x1ECC, 0x1ECC, 0x1ECD },
  24697. -{ 0x1ECD, 0x1ECC, 0x1ECD },
  24698. -{ 0x1ECE, 0x1ECE, 0x1ECF },
  24699. -{ 0x1ECF, 0x1ECE, 0x1ECF },
  24700. -{ 0x1ED0, 0x1ED0, 0x1ED1 },
  24701. -{ 0x1ED1, 0x1ED0, 0x1ED1 },
  24702. -{ 0x1ED2, 0x1ED2, 0x1ED3 },
  24703. -{ 0x1ED3, 0x1ED2, 0x1ED3 },
  24704. -{ 0x1ED4, 0x1ED4, 0x1ED5 },
  24705. -{ 0x1ED5, 0x1ED4, 0x1ED5 },
  24706. -{ 0x1ED6, 0x1ED6, 0x1ED7 },
  24707. -{ 0x1ED7, 0x1ED6, 0x1ED7 },
  24708. -{ 0x1ED8, 0x1ED8, 0x1ED9 },
  24709. -{ 0x1ED9, 0x1ED8, 0x1ED9 },
  24710. -{ 0x1EDA, 0x1EDA, 0x1EDB },
  24711. -{ 0x1EDB, 0x1EDA, 0x1EDB },
  24712. -{ 0x1EDC, 0x1EDC, 0x1EDD },
  24713. -{ 0x1EDD, 0x1EDC, 0x1EDD },
  24714. -{ 0x1EDE, 0x1EDE, 0x1EDF },
  24715. -{ 0x1EDF, 0x1EDE, 0x1EDF },
  24716. -{ 0x1EE0, 0x1EE0, 0x1EE1 },
  24717. -{ 0x1EE1, 0x1EE0, 0x1EE1 },
  24718. -{ 0x1EE2, 0x1EE2, 0x1EE3 },
  24719. -{ 0x1EE3, 0x1EE2, 0x1EE3 },
  24720. -{ 0x1EE4, 0x1EE4, 0x1EE5 },
  24721. -{ 0x1EE5, 0x1EE4, 0x1EE5 },
  24722. -{ 0x1EE6, 0x1EE6, 0x1EE7 },
  24723. -{ 0x1EE7, 0x1EE6, 0x1EE7 },
  24724. -{ 0x1EE8, 0x1EE8, 0x1EE9 },
  24725. -{ 0x1EE9, 0x1EE8, 0x1EE9 },
  24726. -{ 0x1EEA, 0x1EEA, 0x1EEB },
  24727. -{ 0x1EEB, 0x1EEA, 0x1EEB },
  24728. -{ 0x1EEC, 0x1EEC, 0x1EED },
  24729. -{ 0x1EED, 0x1EEC, 0x1EED },
  24730. -{ 0x1EEE, 0x1EEE, 0x1EEF },
  24731. -{ 0x1EEF, 0x1EEE, 0x1EEF },
  24732. -{ 0x1EF0, 0x1EF0, 0x1EF1 },
  24733. -{ 0x1EF1, 0x1EF0, 0x1EF1 },
  24734. -{ 0x1EF2, 0x1EF2, 0x1EF3 },
  24735. -{ 0x1EF3, 0x1EF2, 0x1EF3 },
  24736. -{ 0x1EF4, 0x1EF4, 0x1EF5 },
  24737. -{ 0x1EF5, 0x1EF4, 0x1EF5 },
  24738. -{ 0x1EF6, 0x1EF6, 0x1EF7 },
  24739. -{ 0x1EF7, 0x1EF6, 0x1EF7 },
  24740. -{ 0x1EF8, 0x1EF8, 0x1EF9 },
  24741. -{ 0x1EF9, 0x1EF8, 0x1EF9 },
  24742. -{ 0x1F00, 0x1F08, 0x1F00 },
  24743. -{ 0x1F01, 0x1F09, 0x1F01 },
  24744. -{ 0x1F02, 0x1F0A, 0x1F02 },
  24745. -{ 0x1F03, 0x1F0B, 0x1F03 },
  24746. -{ 0x1F04, 0x1F0C, 0x1F04 },
  24747. -{ 0x1F05, 0x1F0D, 0x1F05 },
  24748. -{ 0x1F06, 0x1F0E, 0x1F06 },
  24749. -{ 0x1F07, 0x1F0F, 0x1F07 },
  24750. -{ 0x1F08, 0x1F08, 0x1F00 },
  24751. -{ 0x1F09, 0x1F09, 0x1F01 },
  24752. -{ 0x1F0A, 0x1F0A, 0x1F02 },
  24753. -{ 0x1F0B, 0x1F0B, 0x1F03 },
  24754. -{ 0x1F0C, 0x1F0C, 0x1F04 },
  24755. -{ 0x1F0D, 0x1F0D, 0x1F05 },
  24756. -{ 0x1F0E, 0x1F0E, 0x1F06 },
  24757. -{ 0x1F0F, 0x1F0F, 0x1F07 },
  24758. -{ 0x1F10, 0x1F18, 0x1F10 },
  24759. -{ 0x1F11, 0x1F19, 0x1F11 },
  24760. -{ 0x1F12, 0x1F1A, 0x1F12 },
  24761. -{ 0x1F13, 0x1F1B, 0x1F13 },
  24762. -{ 0x1F14, 0x1F1C, 0x1F14 },
  24763. -{ 0x1F15, 0x1F1D, 0x1F15 },
  24764. -{ 0x1F18, 0x1F18, 0x1F10 },
  24765. -{ 0x1F19, 0x1F19, 0x1F11 },
  24766. -{ 0x1F1A, 0x1F1A, 0x1F12 },
  24767. -{ 0x1F1B, 0x1F1B, 0x1F13 },
  24768. -{ 0x1F1C, 0x1F1C, 0x1F14 },
  24769. -{ 0x1F1D, 0x1F1D, 0x1F15 },
  24770. -{ 0x1F20, 0x1F28, 0x1F20 },
  24771. -{ 0x1F21, 0x1F29, 0x1F21 },
  24772. -{ 0x1F22, 0x1F2A, 0x1F22 },
  24773. -{ 0x1F23, 0x1F2B, 0x1F23 },
  24774. -{ 0x1F24, 0x1F2C, 0x1F24 },
  24775. -{ 0x1F25, 0x1F2D, 0x1F25 },
  24776. -{ 0x1F26, 0x1F2E, 0x1F26 },
  24777. -{ 0x1F27, 0x1F2F, 0x1F27 },
  24778. -{ 0x1F28, 0x1F28, 0x1F20 },
  24779. -{ 0x1F29, 0x1F29, 0x1F21 },
  24780. -{ 0x1F2A, 0x1F2A, 0x1F22 },
  24781. -{ 0x1F2B, 0x1F2B, 0x1F23 },
  24782. -{ 0x1F2C, 0x1F2C, 0x1F24 },
  24783. -{ 0x1F2D, 0x1F2D, 0x1F25 },
  24784. -{ 0x1F2E, 0x1F2E, 0x1F26 },
  24785. -{ 0x1F2F, 0x1F2F, 0x1F27 },
  24786. -{ 0x1F30, 0x1F38, 0x1F30 },
  24787. -{ 0x1F31, 0x1F39, 0x1F31 },
  24788. -{ 0x1F32, 0x1F3A, 0x1F32 },
  24789. -{ 0x1F33, 0x1F3B, 0x1F33 },
  24790. -{ 0x1F34, 0x1F3C, 0x1F34 },
  24791. -{ 0x1F35, 0x1F3D, 0x1F35 },
  24792. -{ 0x1F36, 0x1F3E, 0x1F36 },
  24793. -{ 0x1F37, 0x1F3F, 0x1F37 },
  24794. -{ 0x1F38, 0x1F38, 0x1F30 },
  24795. -{ 0x1F39, 0x1F39, 0x1F31 },
  24796. -{ 0x1F3A, 0x1F3A, 0x1F32 },
  24797. -{ 0x1F3B, 0x1F3B, 0x1F33 },
  24798. -{ 0x1F3C, 0x1F3C, 0x1F34 },
  24799. -{ 0x1F3D, 0x1F3D, 0x1F35 },
  24800. -{ 0x1F3E, 0x1F3E, 0x1F36 },
  24801. -{ 0x1F3F, 0x1F3F, 0x1F37 },
  24802. -{ 0x1F40, 0x1F48, 0x1F40 },
  24803. -{ 0x1F41, 0x1F49, 0x1F41 },
  24804. -{ 0x1F42, 0x1F4A, 0x1F42 },
  24805. -{ 0x1F43, 0x1F4B, 0x1F43 },
  24806. -{ 0x1F44, 0x1F4C, 0x1F44 },
  24807. -{ 0x1F45, 0x1F4D, 0x1F45 },
  24808. -{ 0x1F48, 0x1F48, 0x1F40 },
  24809. -{ 0x1F49, 0x1F49, 0x1F41 },
  24810. -{ 0x1F4A, 0x1F4A, 0x1F42 },
  24811. -{ 0x1F4B, 0x1F4B, 0x1F43 },
  24812. -{ 0x1F4C, 0x1F4C, 0x1F44 },
  24813. -{ 0x1F4D, 0x1F4D, 0x1F45 },
  24814. -{ 0x1F50, 0x1F50, 0x1F50 },
  24815. -{ 0x1F51, 0x1F59, 0x1F51 },
  24816. -{ 0x1F52, 0x1F52, 0x1F52 },
  24817. -{ 0x1F53, 0x1F5B, 0x1F53 },
  24818. -{ 0x1F54, 0x1F54, 0x1F54 },
  24819. -{ 0x1F55, 0x1F5D, 0x1F55 },
  24820. -{ 0x1F56, 0x1F56, 0x1F56 },
  24821. -{ 0x1F57, 0x1F5F, 0x1F57 },
  24822. -{ 0x1F59, 0x1F59, 0x1F51 },
  24823. -{ 0x1F5B, 0x1F5B, 0x1F53 },
  24824. -{ 0x1F5D, 0x1F5D, 0x1F55 },
  24825. -{ 0x1F5F, 0x1F5F, 0x1F57 },
  24826. -{ 0x1F60, 0x1F68, 0x1F60 },
  24827. -{ 0x1F61, 0x1F69, 0x1F61 },
  24828. -{ 0x1F62, 0x1F6A, 0x1F62 },
  24829. -{ 0x1F63, 0x1F6B, 0x1F63 },
  24830. -{ 0x1F64, 0x1F6C, 0x1F64 },
  24831. -{ 0x1F65, 0x1F6D, 0x1F65 },
  24832. -{ 0x1F66, 0x1F6E, 0x1F66 },
  24833. -{ 0x1F67, 0x1F6F, 0x1F67 },
  24834. -{ 0x1F68, 0x1F68, 0x1F60 },
  24835. -{ 0x1F69, 0x1F69, 0x1F61 },
  24836. -{ 0x1F6A, 0x1F6A, 0x1F62 },
  24837. -{ 0x1F6B, 0x1F6B, 0x1F63 },
  24838. -{ 0x1F6C, 0x1F6C, 0x1F64 },
  24839. -{ 0x1F6D, 0x1F6D, 0x1F65 },
  24840. -{ 0x1F6E, 0x1F6E, 0x1F66 },
  24841. -{ 0x1F6F, 0x1F6F, 0x1F67 },
  24842. -{ 0x1F70, 0x1FBA, 0x1F70 },
  24843. -{ 0x1F71, 0x1FBB, 0x1F71 },
  24844. -{ 0x1F72, 0x1FC8, 0x1F72 },
  24845. -{ 0x1F73, 0x1FC9, 0x1F73 },
  24846. -{ 0x1F74, 0x1FCA, 0x1F74 },
  24847. -{ 0x1F75, 0x1FCB, 0x1F75 },
  24848. -{ 0x1F76, 0x1FDA, 0x1F76 },
  24849. -{ 0x1F77, 0x1FDB, 0x1F77 },
  24850. -{ 0x1F78, 0x1FF8, 0x1F78 },
  24851. -{ 0x1F79, 0x1FF9, 0x1F79 },
  24852. -{ 0x1F7A, 0x1FEA, 0x1F7A },
  24853. -{ 0x1F7B, 0x1FEB, 0x1F7B },
  24854. -{ 0x1F7C, 0x1FFA, 0x1F7C },
  24855. -{ 0x1F7D, 0x1FFB, 0x1F7D },
  24856. -{ 0x1F80, 0x1F88, 0x1F80 },
  24857. -{ 0x1F81, 0x1F89, 0x1F81 },
  24858. -{ 0x1F82, 0x1F8A, 0x1F82 },
  24859. -{ 0x1F83, 0x1F8B, 0x1F83 },
  24860. -{ 0x1F84, 0x1F8C, 0x1F84 },
  24861. -{ 0x1F85, 0x1F8D, 0x1F85 },
  24862. -{ 0x1F86, 0x1F8E, 0x1F86 },
  24863. -{ 0x1F87, 0x1F8F, 0x1F87 },
  24864. -{ 0x1F88, 0x1F88, 0x1F80 },
  24865. -{ 0x1F89, 0x1F89, 0x1F81 },
  24866. -{ 0x1F8A, 0x1F8A, 0x1F82 },
  24867. -{ 0x1F8B, 0x1F8B, 0x1F83 },
  24868. -{ 0x1F8C, 0x1F8C, 0x1F84 },
  24869. -{ 0x1F8D, 0x1F8D, 0x1F85 },
  24870. -{ 0x1F8E, 0x1F8E, 0x1F86 },
  24871. -{ 0x1F8F, 0x1F8F, 0x1F87 },
  24872. -{ 0x1F90, 0x1F98, 0x1F90 },
  24873. -{ 0x1F91, 0x1F99, 0x1F91 },
  24874. -{ 0x1F92, 0x1F9A, 0x1F92 },
  24875. -{ 0x1F93, 0x1F9B, 0x1F93 },
  24876. -{ 0x1F94, 0x1F9C, 0x1F94 },
  24877. -{ 0x1F95, 0x1F9D, 0x1F95 },
  24878. -{ 0x1F96, 0x1F9E, 0x1F96 },
  24879. -{ 0x1F97, 0x1F9F, 0x1F97 },
  24880. -{ 0x1F98, 0x1F98, 0x1F90 },
  24881. -{ 0x1F99, 0x1F99, 0x1F91 },
  24882. -{ 0x1F9A, 0x1F9A, 0x1F92 },
  24883. -{ 0x1F9B, 0x1F9B, 0x1F93 },
  24884. -{ 0x1F9C, 0x1F9C, 0x1F94 },
  24885. -{ 0x1F9D, 0x1F9D, 0x1F95 },
  24886. -{ 0x1F9E, 0x1F9E, 0x1F96 },
  24887. -{ 0x1F9F, 0x1F9F, 0x1F97 },
  24888. -{ 0x1FA0, 0x1FA8, 0x1FA0 },
  24889. -{ 0x1FA1, 0x1FA9, 0x1FA1 },
  24890. -{ 0x1FA2, 0x1FAA, 0x1FA2 },
  24891. -{ 0x1FA3, 0x1FAB, 0x1FA3 },
  24892. -{ 0x1FA4, 0x1FAC, 0x1FA4 },
  24893. -{ 0x1FA5, 0x1FAD, 0x1FA5 },
  24894. -{ 0x1FA6, 0x1FAE, 0x1FA6 },
  24895. -{ 0x1FA7, 0x1FAF, 0x1FA7 },
  24896. -{ 0x1FA8, 0x1FA8, 0x1FA0 },
  24897. -{ 0x1FA9, 0x1FA9, 0x1FA1 },
  24898. -{ 0x1FAA, 0x1FAA, 0x1FA2 },
  24899. -{ 0x1FAB, 0x1FAB, 0x1FA3 },
  24900. -{ 0x1FAC, 0x1FAC, 0x1FA4 },
  24901. -{ 0x1FAD, 0x1FAD, 0x1FA5 },
  24902. -{ 0x1FAE, 0x1FAE, 0x1FA6 },
  24903. -{ 0x1FAF, 0x1FAF, 0x1FA7 },
  24904. -{ 0x1FB0, 0x1FB8, 0x1FB0 },
  24905. -{ 0x1FB1, 0x1FB9, 0x1FB1 },
  24906. -{ 0x1FB2, 0x1FB2, 0x1FB2 },
  24907. -{ 0x1FB3, 0x1FBC, 0x1FB3 },
  24908. -{ 0x1FB4, 0x1FB4, 0x1FB4 },
  24909. -{ 0x1FB6, 0x1FB6, 0x1FB6 },
  24910. -{ 0x1FB7, 0x1FB7, 0x1FB7 },
  24911. -{ 0x1FB8, 0x1FB8, 0x1FB0 },
  24912. -{ 0x1FB9, 0x1FB9, 0x1FB1 },
  24913. -{ 0x1FBA, 0x1FBA, 0x1F70 },
  24914. -{ 0x1FBB, 0x1FBB, 0x1F71 },
  24915. -{ 0x1FBC, 0x1FBC, 0x1FB3 },
  24916. -{ 0x1FBE, 0x0399, 0x1FBE },
  24917. -{ 0x1FC2, 0x1FC2, 0x1FC2 },
  24918. -{ 0x1FC3, 0x1FCC, 0x1FC3 },
  24919. -{ 0x1FC4, 0x1FC4, 0x1FC4 },
  24920. -{ 0x1FC6, 0x1FC6, 0x1FC6 },
  24921. -{ 0x1FC7, 0x1FC7, 0x1FC7 },
  24922. -{ 0x1FC8, 0x1FC8, 0x1F72 },
  24923. -{ 0x1FC9, 0x1FC9, 0x1F73 },
  24924. -{ 0x1FCA, 0x1FCA, 0x1F74 },
  24925. -{ 0x1FCB, 0x1FCB, 0x1F75 },
  24926. -{ 0x1FCC, 0x1FCC, 0x1FC3 },
  24927. -{ 0x1FD0, 0x1FD8, 0x1FD0 },
  24928. -{ 0x1FD1, 0x1FD9, 0x1FD1 },
  24929. -{ 0x1FD2, 0x1FD2, 0x1FD2 },
  24930. -{ 0x1FD3, 0x1FD3, 0x1FD3 },
  24931. -{ 0x1FD6, 0x1FD6, 0x1FD6 },
  24932. -{ 0x1FD7, 0x1FD7, 0x1FD7 },
  24933. -{ 0x1FD8, 0x1FD8, 0x1FD0 },
  24934. -{ 0x1FD9, 0x1FD9, 0x1FD1 },
  24935. -{ 0x1FDA, 0x1FDA, 0x1F76 },
  24936. -{ 0x1FDB, 0x1FDB, 0x1F77 },
  24937. -{ 0x1FE0, 0x1FE8, 0x1FE0 },
  24938. -{ 0x1FE1, 0x1FE9, 0x1FE1 },
  24939. -{ 0x1FE2, 0x1FE2, 0x1FE2 },
  24940. -{ 0x1FE3, 0x1FE3, 0x1FE3 },
  24941. -{ 0x1FE4, 0x1FE4, 0x1FE4 },
  24942. -{ 0x1FE5, 0x1FEC, 0x1FE5 },
  24943. -{ 0x1FE6, 0x1FE6, 0x1FE6 },
  24944. -{ 0x1FE7, 0x1FE7, 0x1FE7 },
  24945. -{ 0x1FE8, 0x1FE8, 0x1FE0 },
  24946. -{ 0x1FE9, 0x1FE9, 0x1FE1 },
  24947. -{ 0x1FEA, 0x1FEA, 0x1F7A },
  24948. -{ 0x1FEB, 0x1FEB, 0x1F7B },
  24949. -{ 0x1FEC, 0x1FEC, 0x1FE5 },
  24950. -{ 0x1FF2, 0x1FF2, 0x1FF2 },
  24951. -{ 0x1FF3, 0x1FFC, 0x1FF3 },
  24952. -{ 0x1FF4, 0x1FF4, 0x1FF4 },
  24953. -{ 0x1FF6, 0x1FF6, 0x1FF6 },
  24954. -{ 0x1FF7, 0x1FF7, 0x1FF7 },
  24955. -{ 0x1FF8, 0x1FF8, 0x1F78 },
  24956. -{ 0x1FF9, 0x1FF9, 0x1F79 },
  24957. -{ 0x1FFA, 0x1FFA, 0x1F7C },
  24958. -{ 0x1FFB, 0x1FFB, 0x1F7D },
  24959. -{ 0x1FFC, 0x1FFC, 0x1FF3 },
  24960. -{ 0x2071, 0x2071, 0x2071 },
  24961. -{ 0x207F, 0x207F, 0x207F },
  24962. -{ 0x2090, 0x2090, 0x2090 },
  24963. -{ 0x2091, 0x2091, 0x2091 },
  24964. -{ 0x2092, 0x2092, 0x2092 },
  24965. -{ 0x2093, 0x2093, 0x2093 },
  24966. -{ 0x2094, 0x2094, 0x2094 },
  24967. -{ 0x20D0, 0x20D0, 0x20D0 },
  24968. -{ 0x20D1, 0x20D1, 0x20D1 },
  24969. -{ 0x20D2, 0x20D2, 0x20D2 },
  24970. -{ 0x20D3, 0x20D3, 0x20D3 },
  24971. -{ 0x20D4, 0x20D4, 0x20D4 },
  24972. -{ 0x20D5, 0x20D5, 0x20D5 },
  24973. -{ 0x20D6, 0x20D6, 0x20D6 },
  24974. -{ 0x20D7, 0x20D7, 0x20D7 },
  24975. -{ 0x20D8, 0x20D8, 0x20D8 },
  24976. -{ 0x20D9, 0x20D9, 0x20D9 },
  24977. -{ 0x20DA, 0x20DA, 0x20DA },
  24978. -{ 0x20DB, 0x20DB, 0x20DB },
  24979. -{ 0x20DC, 0x20DC, 0x20DC },
  24980. -{ 0x20E1, 0x20E1, 0x20E1 },
  24981. -{ 0x20E5, 0x20E5, 0x20E5 },
  24982. -{ 0x20E6, 0x20E6, 0x20E6 },
  24983. -{ 0x20E7, 0x20E7, 0x20E7 },
  24984. -{ 0x20E8, 0x20E8, 0x20E8 },
  24985. -{ 0x20E9, 0x20E9, 0x20E9 },
  24986. -{ 0x20EA, 0x20EA, 0x20EA },
  24987. -{ 0x20EB, 0x20EB, 0x20EB },
  24988. -{ 0x2102, 0x2102, 0x2102 },
  24989. -{ 0x2107, 0x2107, 0x2107 },
  24990. -{ 0x210A, 0x210A, 0x210A },
  24991. -{ 0x210B, 0x210B, 0x210B },
  24992. -{ 0x210C, 0x210C, 0x210C },
  24993. -{ 0x210D, 0x210D, 0x210D },
  24994. -{ 0x210E, 0x210E, 0x210E },
  24995. -{ 0x210F, 0x210F, 0x210F },
  24996. -{ 0x2110, 0x2110, 0x2110 },
  24997. -{ 0x2111, 0x2111, 0x2111 },
  24998. -{ 0x2112, 0x2112, 0x2112 },
  24999. -{ 0x2113, 0x2113, 0x2113 },
  25000. -{ 0x2115, 0x2115, 0x2115 },
  25001. -{ 0x2119, 0x2119, 0x2119 },
  25002. -{ 0x211A, 0x211A, 0x211A },
  25003. -{ 0x211B, 0x211B, 0x211B },
  25004. -{ 0x211C, 0x211C, 0x211C },
  25005. -{ 0x211D, 0x211D, 0x211D },
  25006. -{ 0x2124, 0x2124, 0x2124 },
  25007. -{ 0x2126, 0x2126, 0x03C9 },
  25008. -{ 0x2128, 0x2128, 0x2128 },
  25009. -{ 0x212A, 0x212A, 0x006B },
  25010. -{ 0x212B, 0x212B, 0x00E5 },
  25011. -{ 0x212C, 0x212C, 0x212C },
  25012. -{ 0x212D, 0x212D, 0x212D },
  25013. -{ 0x212F, 0x212F, 0x212F },
  25014. -{ 0x2130, 0x2130, 0x2130 },
  25015. -{ 0x2131, 0x2131, 0x2131 },
  25016. -{ 0x2133, 0x2133, 0x2133 },
  25017. -{ 0x2134, 0x2134, 0x2134 },
  25018. -{ 0x2135, 0x2135, 0x2135 },
  25019. -{ 0x2136, 0x2136, 0x2136 },
  25020. -{ 0x2137, 0x2137, 0x2137 },
  25021. -{ 0x2138, 0x2138, 0x2138 },
  25022. -{ 0x2139, 0x2139, 0x2139 },
  25023. -{ 0x213C, 0x213C, 0x213C },
  25024. -{ 0x213D, 0x213D, 0x213D },
  25025. -{ 0x213E, 0x213E, 0x213E },
  25026. -{ 0x213F, 0x213F, 0x213F },
  25027. -{ 0x2145, 0x2145, 0x2145 },
  25028. -{ 0x2146, 0x2146, 0x2146 },
  25029. -{ 0x2147, 0x2147, 0x2147 },
  25030. -{ 0x2148, 0x2148, 0x2148 },
  25031. -{ 0x2149, 0x2149, 0x2149 },
  25032. -{ 0x2C00, 0x2C00, 0x2C30 },
  25033. -{ 0x2C01, 0x2C01, 0x2C31 },
  25034. -{ 0x2C02, 0x2C02, 0x2C32 },
  25035. -{ 0x2C03, 0x2C03, 0x2C33 },
  25036. -{ 0x2C04, 0x2C04, 0x2C34 },
  25037. -{ 0x2C05, 0x2C05, 0x2C35 },
  25038. -{ 0x2C06, 0x2C06, 0x2C36 },
  25039. -{ 0x2C07, 0x2C07, 0x2C37 },
  25040. -{ 0x2C08, 0x2C08, 0x2C38 },
  25041. -{ 0x2C09, 0x2C09, 0x2C39 },
  25042. -{ 0x2C0A, 0x2C0A, 0x2C3A },
  25043. -{ 0x2C0B, 0x2C0B, 0x2C3B },
  25044. -{ 0x2C0C, 0x2C0C, 0x2C3C },
  25045. -{ 0x2C0D, 0x2C0D, 0x2C3D },
  25046. -{ 0x2C0E, 0x2C0E, 0x2C3E },
  25047. -{ 0x2C0F, 0x2C0F, 0x2C3F },
  25048. -{ 0x2C10, 0x2C10, 0x2C40 },
  25049. -{ 0x2C11, 0x2C11, 0x2C41 },
  25050. -{ 0x2C12, 0x2C12, 0x2C42 },
  25051. -{ 0x2C13, 0x2C13, 0x2C43 },
  25052. -{ 0x2C14, 0x2C14, 0x2C44 },
  25053. -{ 0x2C15, 0x2C15, 0x2C45 },
  25054. -{ 0x2C16, 0x2C16, 0x2C46 },
  25055. -{ 0x2C17, 0x2C17, 0x2C47 },
  25056. -{ 0x2C18, 0x2C18, 0x2C48 },
  25057. -{ 0x2C19, 0x2C19, 0x2C49 },
  25058. -{ 0x2C1A, 0x2C1A, 0x2C4A },
  25059. -{ 0x2C1B, 0x2C1B, 0x2C4B },
  25060. -{ 0x2C1C, 0x2C1C, 0x2C4C },
  25061. -{ 0x2C1D, 0x2C1D, 0x2C4D },
  25062. -{ 0x2C1E, 0x2C1E, 0x2C4E },
  25063. -{ 0x2C1F, 0x2C1F, 0x2C4F },
  25064. -{ 0x2C20, 0x2C20, 0x2C50 },
  25065. -{ 0x2C21, 0x2C21, 0x2C51 },
  25066. -{ 0x2C22, 0x2C22, 0x2C52 },
  25067. -{ 0x2C23, 0x2C23, 0x2C53 },
  25068. -{ 0x2C24, 0x2C24, 0x2C54 },
  25069. -{ 0x2C25, 0x2C25, 0x2C55 },
  25070. -{ 0x2C26, 0x2C26, 0x2C56 },
  25071. -{ 0x2C27, 0x2C27, 0x2C57 },
  25072. -{ 0x2C28, 0x2C28, 0x2C58 },
  25073. -{ 0x2C29, 0x2C29, 0x2C59 },
  25074. -{ 0x2C2A, 0x2C2A, 0x2C5A },
  25075. -{ 0x2C2B, 0x2C2B, 0x2C5B },
  25076. -{ 0x2C2C, 0x2C2C, 0x2C5C },
  25077. -{ 0x2C2D, 0x2C2D, 0x2C5D },
  25078. -{ 0x2C2E, 0x2C2E, 0x2C5E },
  25079. -{ 0x2C30, 0x2C00, 0x2C30 },
  25080. -{ 0x2C31, 0x2C01, 0x2C31 },
  25081. -{ 0x2C32, 0x2C02, 0x2C32 },
  25082. -{ 0x2C33, 0x2C03, 0x2C33 },
  25083. -{ 0x2C34, 0x2C04, 0x2C34 },
  25084. -{ 0x2C35, 0x2C05, 0x2C35 },
  25085. -{ 0x2C36, 0x2C06, 0x2C36 },
  25086. -{ 0x2C37, 0x2C07, 0x2C37 },
  25087. -{ 0x2C38, 0x2C08, 0x2C38 },
  25088. -{ 0x2C39, 0x2C09, 0x2C39 },
  25089. -{ 0x2C3A, 0x2C0A, 0x2C3A },
  25090. -{ 0x2C3B, 0x2C0B, 0x2C3B },
  25091. -{ 0x2C3C, 0x2C0C, 0x2C3C },
  25092. -{ 0x2C3D, 0x2C0D, 0x2C3D },
  25093. -{ 0x2C3E, 0x2C0E, 0x2C3E },
  25094. -{ 0x2C3F, 0x2C0F, 0x2C3F },
  25095. -{ 0x2C40, 0x2C10, 0x2C40 },
  25096. -{ 0x2C41, 0x2C11, 0x2C41 },
  25097. -{ 0x2C42, 0x2C12, 0x2C42 },
  25098. -{ 0x2C43, 0x2C13, 0x2C43 },
  25099. -{ 0x2C44, 0x2C14, 0x2C44 },
  25100. -{ 0x2C45, 0x2C15, 0x2C45 },
  25101. -{ 0x2C46, 0x2C16, 0x2C46 },
  25102. -{ 0x2C47, 0x2C17, 0x2C47 },
  25103. -{ 0x2C48, 0x2C18, 0x2C48 },
  25104. -{ 0x2C49, 0x2C19, 0x2C49 },
  25105. -{ 0x2C4A, 0x2C1A, 0x2C4A },
  25106. -{ 0x2C4B, 0x2C1B, 0x2C4B },
  25107. -{ 0x2C4C, 0x2C1C, 0x2C4C },
  25108. -{ 0x2C4D, 0x2C1D, 0x2C4D },
  25109. -{ 0x2C4E, 0x2C1E, 0x2C4E },
  25110. -{ 0x2C4F, 0x2C1F, 0x2C4F },
  25111. -{ 0x2C50, 0x2C20, 0x2C50 },
  25112. -{ 0x2C51, 0x2C21, 0x2C51 },
  25113. -{ 0x2C52, 0x2C22, 0x2C52 },
  25114. -{ 0x2C53, 0x2C23, 0x2C53 },
  25115. -{ 0x2C54, 0x2C24, 0x2C54 },
  25116. -{ 0x2C55, 0x2C25, 0x2C55 },
  25117. -{ 0x2C56, 0x2C26, 0x2C56 },
  25118. -{ 0x2C57, 0x2C27, 0x2C57 },
  25119. -{ 0x2C58, 0x2C28, 0x2C58 },
  25120. -{ 0x2C59, 0x2C29, 0x2C59 },
  25121. -{ 0x2C5A, 0x2C2A, 0x2C5A },
  25122. -{ 0x2C5B, 0x2C2B, 0x2C5B },
  25123. -{ 0x2C5C, 0x2C2C, 0x2C5C },
  25124. -{ 0x2C5D, 0x2C2D, 0x2C5D },
  25125. -{ 0x2C5E, 0x2C2E, 0x2C5E },
  25126. -{ 0x2C80, 0x2C80, 0x2C81 },
  25127. -{ 0x2C81, 0x2C80, 0x2C81 },
  25128. -{ 0x2C82, 0x2C82, 0x2C83 },
  25129. -{ 0x2C83, 0x2C82, 0x2C83 },
  25130. -{ 0x2C84, 0x2C84, 0x2C85 },
  25131. -{ 0x2C85, 0x2C84, 0x2C85 },
  25132. -{ 0x2C86, 0x2C86, 0x2C87 },
  25133. -{ 0x2C87, 0x2C86, 0x2C87 },
  25134. -{ 0x2C88, 0x2C88, 0x2C89 },
  25135. -{ 0x2C89, 0x2C88, 0x2C89 },
  25136. -{ 0x2C8A, 0x2C8A, 0x2C8B },
  25137. -{ 0x2C8B, 0x2C8A, 0x2C8B },
  25138. -{ 0x2C8C, 0x2C8C, 0x2C8D },
  25139. -{ 0x2C8D, 0x2C8C, 0x2C8D },
  25140. -{ 0x2C8E, 0x2C8E, 0x2C8F },
  25141. -{ 0x2C8F, 0x2C8E, 0x2C8F },
  25142. -{ 0x2C90, 0x2C90, 0x2C91 },
  25143. -{ 0x2C91, 0x2C90, 0x2C91 },
  25144. -{ 0x2C92, 0x2C92, 0x2C93 },
  25145. -{ 0x2C93, 0x2C92, 0x2C93 },
  25146. -{ 0x2C94, 0x2C94, 0x2C95 },
  25147. -{ 0x2C95, 0x2C94, 0x2C95 },
  25148. -{ 0x2C96, 0x2C96, 0x2C97 },
  25149. -{ 0x2C97, 0x2C96, 0x2C97 },
  25150. -{ 0x2C98, 0x2C98, 0x2C99 },
  25151. -{ 0x2C99, 0x2C98, 0x2C99 },
  25152. -{ 0x2C9A, 0x2C9A, 0x2C9B },
  25153. -{ 0x2C9B, 0x2C9A, 0x2C9B },
  25154. -{ 0x2C9C, 0x2C9C, 0x2C9D },
  25155. -{ 0x2C9D, 0x2C9C, 0x2C9D },
  25156. -{ 0x2C9E, 0x2C9E, 0x2C9F },
  25157. -{ 0x2C9F, 0x2C9E, 0x2C9F },
  25158. -{ 0x2CA0, 0x2CA0, 0x2CA1 },
  25159. -{ 0x2CA1, 0x2CA0, 0x2CA1 },
  25160. -{ 0x2CA2, 0x2CA2, 0x2CA3 },
  25161. -{ 0x2CA3, 0x2CA2, 0x2CA3 },
  25162. -{ 0x2CA4, 0x2CA4, 0x2CA5 },
  25163. -{ 0x2CA5, 0x2CA4, 0x2CA5 },
  25164. -{ 0x2CA6, 0x2CA6, 0x2CA7 },
  25165. -{ 0x2CA7, 0x2CA6, 0x2CA7 },
  25166. -{ 0x2CA8, 0x2CA8, 0x2CA9 },
  25167. -{ 0x2CA9, 0x2CA8, 0x2CA9 },
  25168. -{ 0x2CAA, 0x2CAA, 0x2CAB },
  25169. -{ 0x2CAB, 0x2CAA, 0x2CAB },
  25170. -{ 0x2CAC, 0x2CAC, 0x2CAD },
  25171. -{ 0x2CAD, 0x2CAC, 0x2CAD },
  25172. -{ 0x2CAE, 0x2CAE, 0x2CAF },
  25173. -{ 0x2CAF, 0x2CAE, 0x2CAF },
  25174. -{ 0x2CB0, 0x2CB0, 0x2CB1 },
  25175. -{ 0x2CB1, 0x2CB0, 0x2CB1 },
  25176. -{ 0x2CB2, 0x2CB2, 0x2CB3 },
  25177. -{ 0x2CB3, 0x2CB2, 0x2CB3 },
  25178. -{ 0x2CB4, 0x2CB4, 0x2CB5 },
  25179. -{ 0x2CB5, 0x2CB4, 0x2CB5 },
  25180. -{ 0x2CB6, 0x2CB6, 0x2CB7 },
  25181. -{ 0x2CB7, 0x2CB6, 0x2CB7 },
  25182. -{ 0x2CB8, 0x2CB8, 0x2CB9 },
  25183. -{ 0x2CB9, 0x2CB8, 0x2CB9 },
  25184. -{ 0x2CBA, 0x2CBA, 0x2CBB },
  25185. -{ 0x2CBB, 0x2CBA, 0x2CBB },
  25186. -{ 0x2CBC, 0x2CBC, 0x2CBD },
  25187. -{ 0x2CBD, 0x2CBC, 0x2CBD },
  25188. -{ 0x2CBE, 0x2CBE, 0x2CBF },
  25189. -{ 0x2CBF, 0x2CBE, 0x2CBF },
  25190. -{ 0x2CC0, 0x2CC0, 0x2CC1 },
  25191. -{ 0x2CC1, 0x2CC0, 0x2CC1 },
  25192. -{ 0x2CC2, 0x2CC2, 0x2CC3 },
  25193. -{ 0x2CC3, 0x2CC2, 0x2CC3 },
  25194. -{ 0x2CC4, 0x2CC4, 0x2CC5 },
  25195. -{ 0x2CC5, 0x2CC4, 0x2CC5 },
  25196. -{ 0x2CC6, 0x2CC6, 0x2CC7 },
  25197. -{ 0x2CC7, 0x2CC6, 0x2CC7 },
  25198. -{ 0x2CC8, 0x2CC8, 0x2CC9 },
  25199. -{ 0x2CC9, 0x2CC8, 0x2CC9 },
  25200. -{ 0x2CCA, 0x2CCA, 0x2CCB },
  25201. -{ 0x2CCB, 0x2CCA, 0x2CCB },
  25202. -{ 0x2CCC, 0x2CCC, 0x2CCD },
  25203. -{ 0x2CCD, 0x2CCC, 0x2CCD },
  25204. -{ 0x2CCE, 0x2CCE, 0x2CCF },
  25205. -{ 0x2CCF, 0x2CCE, 0x2CCF },
  25206. -{ 0x2CD0, 0x2CD0, 0x2CD1 },
  25207. -{ 0x2CD1, 0x2CD0, 0x2CD1 },
  25208. -{ 0x2CD2, 0x2CD2, 0x2CD3 },
  25209. -{ 0x2CD3, 0x2CD2, 0x2CD3 },
  25210. -{ 0x2CD4, 0x2CD4, 0x2CD5 },
  25211. -{ 0x2CD5, 0x2CD4, 0x2CD5 },
  25212. -{ 0x2CD6, 0x2CD6, 0x2CD7 },
  25213. -{ 0x2CD7, 0x2CD6, 0x2CD7 },
  25214. -{ 0x2CD8, 0x2CD8, 0x2CD9 },
  25215. -{ 0x2CD9, 0x2CD8, 0x2CD9 },
  25216. -{ 0x2CDA, 0x2CDA, 0x2CDB },
  25217. -{ 0x2CDB, 0x2CDA, 0x2CDB },
  25218. -{ 0x2CDC, 0x2CDC, 0x2CDD },
  25219. -{ 0x2CDD, 0x2CDC, 0x2CDD },
  25220. -{ 0x2CDE, 0x2CDE, 0x2CDF },
  25221. -{ 0x2CDF, 0x2CDE, 0x2CDF },
  25222. -{ 0x2CE0, 0x2CE0, 0x2CE1 },
  25223. -{ 0x2CE1, 0x2CE0, 0x2CE1 },
  25224. -{ 0x2CE2, 0x2CE2, 0x2CE3 },
  25225. -{ 0x2CE3, 0x2CE2, 0x2CE3 },
  25226. -{ 0x2CE4, 0x2CE4, 0x2CE4 },
  25227. -{ 0x2D00, 0x10A0, 0x2D00 },
  25228. -{ 0x2D01, 0x10A1, 0x2D01 },
  25229. -{ 0x2D02, 0x10A2, 0x2D02 },
  25230. -{ 0x2D03, 0x10A3, 0x2D03 },
  25231. -{ 0x2D04, 0x10A4, 0x2D04 },
  25232. -{ 0x2D05, 0x10A5, 0x2D05 },
  25233. -{ 0x2D06, 0x10A6, 0x2D06 },
  25234. -{ 0x2D07, 0x10A7, 0x2D07 },
  25235. -{ 0x2D08, 0x10A8, 0x2D08 },
  25236. -{ 0x2D09, 0x10A9, 0x2D09 },
  25237. -{ 0x2D0A, 0x10AA, 0x2D0A },
  25238. -{ 0x2D0B, 0x10AB, 0x2D0B },
  25239. -{ 0x2D0C, 0x10AC, 0x2D0C },
  25240. -{ 0x2D0D, 0x10AD, 0x2D0D },
  25241. -{ 0x2D0E, 0x10AE, 0x2D0E },
  25242. -{ 0x2D0F, 0x10AF, 0x2D0F },
  25243. -{ 0x2D10, 0x10B0, 0x2D10 },
  25244. -{ 0x2D11, 0x10B1, 0x2D11 },
  25245. -{ 0x2D12, 0x10B2, 0x2D12 },
  25246. -{ 0x2D13, 0x10B3, 0x2D13 },
  25247. -{ 0x2D14, 0x10B4, 0x2D14 },
  25248. -{ 0x2D15, 0x10B5, 0x2D15 },
  25249. -{ 0x2D16, 0x10B6, 0x2D16 },
  25250. -{ 0x2D17, 0x10B7, 0x2D17 },
  25251. -{ 0x2D18, 0x10B8, 0x2D18 },
  25252. -{ 0x2D19, 0x10B9, 0x2D19 },
  25253. -{ 0x2D1A, 0x10BA, 0x2D1A },
  25254. -{ 0x2D1B, 0x10BB, 0x2D1B },
  25255. -{ 0x2D1C, 0x10BC, 0x2D1C },
  25256. -{ 0x2D1D, 0x10BD, 0x2D1D },
  25257. -{ 0x2D1E, 0x10BE, 0x2D1E },
  25258. -{ 0x2D1F, 0x10BF, 0x2D1F },
  25259. -{ 0x2D20, 0x10C0, 0x2D20 },
  25260. -{ 0x2D21, 0x10C1, 0x2D21 },
  25261. -{ 0x2D22, 0x10C2, 0x2D22 },
  25262. -{ 0x2D23, 0x10C3, 0x2D23 },
  25263. -{ 0x2D24, 0x10C4, 0x2D24 },
  25264. -{ 0x2D25, 0x10C5, 0x2D25 },
  25265. -{ 0x2D30, 0x2D30, 0x2D30 },
  25266. -{ 0x2D31, 0x2D31, 0x2D31 },
  25267. -{ 0x2D32, 0x2D32, 0x2D32 },
  25268. -{ 0x2D33, 0x2D33, 0x2D33 },
  25269. -{ 0x2D34, 0x2D34, 0x2D34 },
  25270. -{ 0x2D35, 0x2D35, 0x2D35 },
  25271. -{ 0x2D36, 0x2D36, 0x2D36 },
  25272. -{ 0x2D37, 0x2D37, 0x2D37 },
  25273. -{ 0x2D38, 0x2D38, 0x2D38 },
  25274. -{ 0x2D39, 0x2D39, 0x2D39 },
  25275. -{ 0x2D3A, 0x2D3A, 0x2D3A },
  25276. -{ 0x2D3B, 0x2D3B, 0x2D3B },
  25277. -{ 0x2D3C, 0x2D3C, 0x2D3C },
  25278. -{ 0x2D3D, 0x2D3D, 0x2D3D },
  25279. -{ 0x2D3E, 0x2D3E, 0x2D3E },
  25280. -{ 0x2D3F, 0x2D3F, 0x2D3F },
  25281. -{ 0x2D40, 0x2D40, 0x2D40 },
  25282. -{ 0x2D41, 0x2D41, 0x2D41 },
  25283. -{ 0x2D42, 0x2D42, 0x2D42 },
  25284. -{ 0x2D43, 0x2D43, 0x2D43 },
  25285. -{ 0x2D44, 0x2D44, 0x2D44 },
  25286. -{ 0x2D45, 0x2D45, 0x2D45 },
  25287. -{ 0x2D46, 0x2D46, 0x2D46 },
  25288. -{ 0x2D47, 0x2D47, 0x2D47 },
  25289. -{ 0x2D48, 0x2D48, 0x2D48 },
  25290. -{ 0x2D49, 0x2D49, 0x2D49 },
  25291. -{ 0x2D4A, 0x2D4A, 0x2D4A },
  25292. -{ 0x2D4B, 0x2D4B, 0x2D4B },
  25293. -{ 0x2D4C, 0x2D4C, 0x2D4C },
  25294. -{ 0x2D4D, 0x2D4D, 0x2D4D },
  25295. -{ 0x2D4E, 0x2D4E, 0x2D4E },
  25296. -{ 0x2D4F, 0x2D4F, 0x2D4F },
  25297. -{ 0x2D50, 0x2D50, 0x2D50 },
  25298. -{ 0x2D51, 0x2D51, 0x2D51 },
  25299. -{ 0x2D52, 0x2D52, 0x2D52 },
  25300. -{ 0x2D53, 0x2D53, 0x2D53 },
  25301. -{ 0x2D54, 0x2D54, 0x2D54 },
  25302. -{ 0x2D55, 0x2D55, 0x2D55 },
  25303. -{ 0x2D56, 0x2D56, 0x2D56 },
  25304. -{ 0x2D57, 0x2D57, 0x2D57 },
  25305. -{ 0x2D58, 0x2D58, 0x2D58 },
  25306. -{ 0x2D59, 0x2D59, 0x2D59 },
  25307. -{ 0x2D5A, 0x2D5A, 0x2D5A },
  25308. -{ 0x2D5B, 0x2D5B, 0x2D5B },
  25309. -{ 0x2D5C, 0x2D5C, 0x2D5C },
  25310. -{ 0x2D5D, 0x2D5D, 0x2D5D },
  25311. -{ 0x2D5E, 0x2D5E, 0x2D5E },
  25312. -{ 0x2D5F, 0x2D5F, 0x2D5F },
  25313. -{ 0x2D60, 0x2D60, 0x2D60 },
  25314. -{ 0x2D61, 0x2D61, 0x2D61 },
  25315. -{ 0x2D62, 0x2D62, 0x2D62 },
  25316. -{ 0x2D63, 0x2D63, 0x2D63 },
  25317. -{ 0x2D64, 0x2D64, 0x2D64 },
  25318. -{ 0x2D65, 0x2D65, 0x2D65 },
  25319. -{ 0x2D6F, 0x2D6F, 0x2D6F },
  25320. -{ 0x2D80, 0x2D80, 0x2D80 },
  25321. -{ 0x2D81, 0x2D81, 0x2D81 },
  25322. -{ 0x2D82, 0x2D82, 0x2D82 },
  25323. -{ 0x2D83, 0x2D83, 0x2D83 },
  25324. -{ 0x2D84, 0x2D84, 0x2D84 },
  25325. -{ 0x2D85, 0x2D85, 0x2D85 },
  25326. -{ 0x2D86, 0x2D86, 0x2D86 },
  25327. -{ 0x2D87, 0x2D87, 0x2D87 },
  25328. -{ 0x2D88, 0x2D88, 0x2D88 },
  25329. -{ 0x2D89, 0x2D89, 0x2D89 },
  25330. -{ 0x2D8A, 0x2D8A, 0x2D8A },
  25331. -{ 0x2D8B, 0x2D8B, 0x2D8B },
  25332. -{ 0x2D8C, 0x2D8C, 0x2D8C },
  25333. -{ 0x2D8D, 0x2D8D, 0x2D8D },
  25334. -{ 0x2D8E, 0x2D8E, 0x2D8E },
  25335. -{ 0x2D8F, 0x2D8F, 0x2D8F },
  25336. -{ 0x2D90, 0x2D90, 0x2D90 },
  25337. -{ 0x2D91, 0x2D91, 0x2D91 },
  25338. -{ 0x2D92, 0x2D92, 0x2D92 },
  25339. -{ 0x2D93, 0x2D93, 0x2D93 },
  25340. -{ 0x2D94, 0x2D94, 0x2D94 },
  25341. -{ 0x2D95, 0x2D95, 0x2D95 },
  25342. -{ 0x2D96, 0x2D96, 0x2D96 },
  25343. -{ 0x2DA0, 0x2DA0, 0x2DA0 },
  25344. -{ 0x2DA1, 0x2DA1, 0x2DA1 },
  25345. -{ 0x2DA2, 0x2DA2, 0x2DA2 },
  25346. -{ 0x2DA3, 0x2DA3, 0x2DA3 },
  25347. -{ 0x2DA4, 0x2DA4, 0x2DA4 },
  25348. -{ 0x2DA5, 0x2DA5, 0x2DA5 },
  25349. -{ 0x2DA6, 0x2DA6, 0x2DA6 },
  25350. -{ 0x2DA8, 0x2DA8, 0x2DA8 },
  25351. -{ 0x2DA9, 0x2DA9, 0x2DA9 },
  25352. -{ 0x2DAA, 0x2DAA, 0x2DAA },
  25353. -{ 0x2DAB, 0x2DAB, 0x2DAB },
  25354. -{ 0x2DAC, 0x2DAC, 0x2DAC },
  25355. -{ 0x2DAD, 0x2DAD, 0x2DAD },
  25356. -{ 0x2DAE, 0x2DAE, 0x2DAE },
  25357. -{ 0x2DB0, 0x2DB0, 0x2DB0 },
  25358. -{ 0x2DB1, 0x2DB1, 0x2DB1 },
  25359. -{ 0x2DB2, 0x2DB2, 0x2DB2 },
  25360. -{ 0x2DB3, 0x2DB3, 0x2DB3 },
  25361. -{ 0x2DB4, 0x2DB4, 0x2DB4 },
  25362. -{ 0x2DB5, 0x2DB5, 0x2DB5 },
  25363. -{ 0x2DB6, 0x2DB6, 0x2DB6 },
  25364. -{ 0x2DB8, 0x2DB8, 0x2DB8 },
  25365. -{ 0x2DB9, 0x2DB9, 0x2DB9 },
  25366. -{ 0x2DBA, 0x2DBA, 0x2DBA },
  25367. -{ 0x2DBB, 0x2DBB, 0x2DBB },
  25368. -{ 0x2DBC, 0x2DBC, 0x2DBC },
  25369. -{ 0x2DBD, 0x2DBD, 0x2DBD },
  25370. -{ 0x2DBE, 0x2DBE, 0x2DBE },
  25371. -{ 0x2DC0, 0x2DC0, 0x2DC0 },
  25372. -{ 0x2DC1, 0x2DC1, 0x2DC1 },
  25373. -{ 0x2DC2, 0x2DC2, 0x2DC2 },
  25374. -{ 0x2DC3, 0x2DC3, 0x2DC3 },
  25375. -{ 0x2DC4, 0x2DC4, 0x2DC4 },
  25376. -{ 0x2DC5, 0x2DC5, 0x2DC5 },
  25377. -{ 0x2DC6, 0x2DC6, 0x2DC6 },
  25378. -{ 0x2DC8, 0x2DC8, 0x2DC8 },
  25379. -{ 0x2DC9, 0x2DC9, 0x2DC9 },
  25380. -{ 0x2DCA, 0x2DCA, 0x2DCA },
  25381. -{ 0x2DCB, 0x2DCB, 0x2DCB },
  25382. -{ 0x2DCC, 0x2DCC, 0x2DCC },
  25383. -{ 0x2DCD, 0x2DCD, 0x2DCD },
  25384. -{ 0x2DCE, 0x2DCE, 0x2DCE },
  25385. -{ 0x2DD0, 0x2DD0, 0x2DD0 },
  25386. -{ 0x2DD1, 0x2DD1, 0x2DD1 },
  25387. -{ 0x2DD2, 0x2DD2, 0x2DD2 },
  25388. -{ 0x2DD3, 0x2DD3, 0x2DD3 },
  25389. -{ 0x2DD4, 0x2DD4, 0x2DD4 },
  25390. -{ 0x2DD5, 0x2DD5, 0x2DD5 },
  25391. -{ 0x2DD6, 0x2DD6, 0x2DD6 },
  25392. -{ 0x2DD8, 0x2DD8, 0x2DD8 },
  25393. -{ 0x2DD9, 0x2DD9, 0x2DD9 },
  25394. -{ 0x2DDA, 0x2DDA, 0x2DDA },
  25395. -{ 0x2DDB, 0x2DDB, 0x2DDB },
  25396. -{ 0x2DDC, 0x2DDC, 0x2DDC },
  25397. -{ 0x2DDD, 0x2DDD, 0x2DDD },
  25398. -{ 0x2DDE, 0x2DDE, 0x2DDE },
  25399. -{ 0x3005, 0x3005, 0x3005 },
  25400. -{ 0x3006, 0x3006, 0x3006 },
  25401. -{ 0x302A, 0x302A, 0x302A },
  25402. -{ 0x302B, 0x302B, 0x302B },
  25403. -{ 0x302C, 0x302C, 0x302C },
  25404. -{ 0x302D, 0x302D, 0x302D },
  25405. -{ 0x302E, 0x302E, 0x302E },
  25406. -{ 0x302F, 0x302F, 0x302F },
  25407. -{ 0x3031, 0x3031, 0x3031 },
  25408. -{ 0x3032, 0x3032, 0x3032 },
  25409. -{ 0x3033, 0x3033, 0x3033 },
  25410. -{ 0x3034, 0x3034, 0x3034 },
  25411. -{ 0x3035, 0x3035, 0x3035 },
  25412. -{ 0x303B, 0x303B, 0x303B },
  25413. -{ 0x303C, 0x303C, 0x303C },
  25414. -{ 0x3041, 0x3041, 0x3041 },
  25415. -{ 0x3042, 0x3042, 0x3042 },
  25416. -{ 0x3043, 0x3043, 0x3043 },
  25417. -{ 0x3044, 0x3044, 0x3044 },
  25418. -{ 0x3045, 0x3045, 0x3045 },
  25419. -{ 0x3046, 0x3046, 0x3046 },
  25420. -{ 0x3047, 0x3047, 0x3047 },
  25421. -{ 0x3048, 0x3048, 0x3048 },
  25422. -{ 0x3049, 0x3049, 0x3049 },
  25423. -{ 0x304A, 0x304A, 0x304A },
  25424. -{ 0x304B, 0x304B, 0x304B },
  25425. -{ 0x304C, 0x304C, 0x304C },
  25426. -{ 0x304D, 0x304D, 0x304D },
  25427. -{ 0x304E, 0x304E, 0x304E },
  25428. -{ 0x304F, 0x304F, 0x304F },
  25429. -{ 0x3050, 0x3050, 0x3050 },
  25430. -{ 0x3051, 0x3051, 0x3051 },
  25431. -{ 0x3052, 0x3052, 0x3052 },
  25432. -{ 0x3053, 0x3053, 0x3053 },
  25433. -{ 0x3054, 0x3054, 0x3054 },
  25434. -{ 0x3055, 0x3055, 0x3055 },
  25435. -{ 0x3056, 0x3056, 0x3056 },
  25436. -{ 0x3057, 0x3057, 0x3057 },
  25437. -{ 0x3058, 0x3058, 0x3058 },
  25438. -{ 0x3059, 0x3059, 0x3059 },
  25439. -{ 0x305A, 0x305A, 0x305A },
  25440. -{ 0x305B, 0x305B, 0x305B },
  25441. -{ 0x305C, 0x305C, 0x305C },
  25442. -{ 0x305D, 0x305D, 0x305D },
  25443. -{ 0x305E, 0x305E, 0x305E },
  25444. -{ 0x305F, 0x305F, 0x305F },
  25445. -{ 0x3060, 0x3060, 0x3060 },
  25446. -{ 0x3061, 0x3061, 0x3061 },
  25447. -{ 0x3062, 0x3062, 0x3062 },
  25448. -{ 0x3063, 0x3063, 0x3063 },
  25449. -{ 0x3064, 0x3064, 0x3064 },
  25450. -{ 0x3065, 0x3065, 0x3065 },
  25451. -{ 0x3066, 0x3066, 0x3066 },
  25452. -{ 0x3067, 0x3067, 0x3067 },
  25453. -{ 0x3068, 0x3068, 0x3068 },
  25454. -{ 0x3069, 0x3069, 0x3069 },
  25455. -{ 0x306A, 0x306A, 0x306A },
  25456. -{ 0x306B, 0x306B, 0x306B },
  25457. -{ 0x306C, 0x306C, 0x306C },
  25458. -{ 0x306D, 0x306D, 0x306D },
  25459. -{ 0x306E, 0x306E, 0x306E },
  25460. -{ 0x306F, 0x306F, 0x306F },
  25461. -{ 0x3070, 0x3070, 0x3070 },
  25462. -{ 0x3071, 0x3071, 0x3071 },
  25463. -{ 0x3072, 0x3072, 0x3072 },
  25464. -{ 0x3073, 0x3073, 0x3073 },
  25465. -{ 0x3074, 0x3074, 0x3074 },
  25466. -{ 0x3075, 0x3075, 0x3075 },
  25467. -{ 0x3076, 0x3076, 0x3076 },
  25468. -{ 0x3077, 0x3077, 0x3077 },
  25469. -{ 0x3078, 0x3078, 0x3078 },
  25470. -{ 0x3079, 0x3079, 0x3079 },
  25471. -{ 0x307A, 0x307A, 0x307A },
  25472. -{ 0x307B, 0x307B, 0x307B },
  25473. -{ 0x307C, 0x307C, 0x307C },
  25474. -{ 0x307D, 0x307D, 0x307D },
  25475. -{ 0x307E, 0x307E, 0x307E },
  25476. -{ 0x307F, 0x307F, 0x307F },
  25477. -{ 0x3080, 0x3080, 0x3080 },
  25478. -{ 0x3081, 0x3081, 0x3081 },
  25479. -{ 0x3082, 0x3082, 0x3082 },
  25480. -{ 0x3083, 0x3083, 0x3083 },
  25481. -{ 0x3084, 0x3084, 0x3084 },
  25482. -{ 0x3085, 0x3085, 0x3085 },
  25483. -{ 0x3086, 0x3086, 0x3086 },
  25484. -{ 0x3087, 0x3087, 0x3087 },
  25485. -{ 0x3088, 0x3088, 0x3088 },
  25486. -{ 0x3089, 0x3089, 0x3089 },
  25487. -{ 0x308A, 0x308A, 0x308A },
  25488. -{ 0x308B, 0x308B, 0x308B },
  25489. -{ 0x308C, 0x308C, 0x308C },
  25490. -{ 0x308D, 0x308D, 0x308D },
  25491. -{ 0x308E, 0x308E, 0x308E },
  25492. -{ 0x308F, 0x308F, 0x308F },
  25493. -{ 0x3090, 0x3090, 0x3090 },
  25494. -{ 0x3091, 0x3091, 0x3091 },
  25495. -{ 0x3092, 0x3092, 0x3092 },
  25496. -{ 0x3093, 0x3093, 0x3093 },
  25497. -{ 0x3094, 0x3094, 0x3094 },
  25498. -{ 0x3095, 0x3095, 0x3095 },
  25499. -{ 0x3096, 0x3096, 0x3096 },
  25500. -{ 0x3099, 0x3099, 0x3099 },
  25501. -{ 0x309A, 0x309A, 0x309A },
  25502. -{ 0x309D, 0x309D, 0x309D },
  25503. -{ 0x309E, 0x309E, 0x309E },
  25504. -{ 0x309F, 0x309F, 0x309F },
  25505. -{ 0x30A1, 0x30A1, 0x30A1 },
  25506. -{ 0x30A2, 0x30A2, 0x30A2 },
  25507. -{ 0x30A3, 0x30A3, 0x30A3 },
  25508. -{ 0x30A4, 0x30A4, 0x30A4 },
  25509. -{ 0x30A5, 0x30A5, 0x30A5 },
  25510. -{ 0x30A6, 0x30A6, 0x30A6 },
  25511. -{ 0x30A7, 0x30A7, 0x30A7 },
  25512. -{ 0x30A8, 0x30A8, 0x30A8 },
  25513. -{ 0x30A9, 0x30A9, 0x30A9 },
  25514. -{ 0x30AA, 0x30AA, 0x30AA },
  25515. -{ 0x30AB, 0x30AB, 0x30AB },
  25516. -{ 0x30AC, 0x30AC, 0x30AC },
  25517. -{ 0x30AD, 0x30AD, 0x30AD },
  25518. -{ 0x30AE, 0x30AE, 0x30AE },
  25519. -{ 0x30AF, 0x30AF, 0x30AF },
  25520. -{ 0x30B0, 0x30B0, 0x30B0 },
  25521. -{ 0x30B1, 0x30B1, 0x30B1 },
  25522. -{ 0x30B2, 0x30B2, 0x30B2 },
  25523. -{ 0x30B3, 0x30B3, 0x30B3 },
  25524. -{ 0x30B4, 0x30B4, 0x30B4 },
  25525. -{ 0x30B5, 0x30B5, 0x30B5 },
  25526. -{ 0x30B6, 0x30B6, 0x30B6 },
  25527. -{ 0x30B7, 0x30B7, 0x30B7 },
  25528. -{ 0x30B8, 0x30B8, 0x30B8 },
  25529. -{ 0x30B9, 0x30B9, 0x30B9 },
  25530. -{ 0x30BA, 0x30BA, 0x30BA },
  25531. -{ 0x30BB, 0x30BB, 0x30BB },
  25532. -{ 0x30BC, 0x30BC, 0x30BC },
  25533. -{ 0x30BD, 0x30BD, 0x30BD },
  25534. -{ 0x30BE, 0x30BE, 0x30BE },
  25535. -{ 0x30BF, 0x30BF, 0x30BF },
  25536. -{ 0x30C0, 0x30C0, 0x30C0 },
  25537. -{ 0x30C1, 0x30C1, 0x30C1 },
  25538. -{ 0x30C2, 0x30C2, 0x30C2 },
  25539. -{ 0x30C3, 0x30C3, 0x30C3 },
  25540. -{ 0x30C4, 0x30C4, 0x30C4 },
  25541. -{ 0x30C5, 0x30C5, 0x30C5 },
  25542. -{ 0x30C6, 0x30C6, 0x30C6 },
  25543. -{ 0x30C7, 0x30C7, 0x30C7 },
  25544. -{ 0x30C8, 0x30C8, 0x30C8 },
  25545. -{ 0x30C9, 0x30C9, 0x30C9 },
  25546. -{ 0x30CA, 0x30CA, 0x30CA },
  25547. -{ 0x30CB, 0x30CB, 0x30CB },
  25548. -{ 0x30CC, 0x30CC, 0x30CC },
  25549. -{ 0x30CD, 0x30CD, 0x30CD },
  25550. -{ 0x30CE, 0x30CE, 0x30CE },
  25551. -{ 0x30CF, 0x30CF, 0x30CF },
  25552. -{ 0x30D0, 0x30D0, 0x30D0 },
  25553. -{ 0x30D1, 0x30D1, 0x30D1 },
  25554. -{ 0x30D2, 0x30D2, 0x30D2 },
  25555. -{ 0x30D3, 0x30D3, 0x30D3 },
  25556. -{ 0x30D4, 0x30D4, 0x30D4 },
  25557. -{ 0x30D5, 0x30D5, 0x30D5 },
  25558. -{ 0x30D6, 0x30D6, 0x30D6 },
  25559. -{ 0x30D7, 0x30D7, 0x30D7 },
  25560. -{ 0x30D8, 0x30D8, 0x30D8 },
  25561. -{ 0x30D9, 0x30D9, 0x30D9 },
  25562. -{ 0x30DA, 0x30DA, 0x30DA },
  25563. -{ 0x30DB, 0x30DB, 0x30DB },
  25564. -{ 0x30DC, 0x30DC, 0x30DC },
  25565. -{ 0x30DD, 0x30DD, 0x30DD },
  25566. -{ 0x30DE, 0x30DE, 0x30DE },
  25567. -{ 0x30DF, 0x30DF, 0x30DF },
  25568. -{ 0x30E0, 0x30E0, 0x30E0 },
  25569. -{ 0x30E1, 0x30E1, 0x30E1 },
  25570. -{ 0x30E2, 0x30E2, 0x30E2 },
  25571. -{ 0x30E3, 0x30E3, 0x30E3 },
  25572. -{ 0x30E4, 0x30E4, 0x30E4 },
  25573. -{ 0x30E5, 0x30E5, 0x30E5 },
  25574. -{ 0x30E6, 0x30E6, 0x30E6 },
  25575. -{ 0x30E7, 0x30E7, 0x30E7 },
  25576. -{ 0x30E8, 0x30E8, 0x30E8 },
  25577. -{ 0x30E9, 0x30E9, 0x30E9 },
  25578. -{ 0x30EA, 0x30EA, 0x30EA },
  25579. -{ 0x30EB, 0x30EB, 0x30EB },
  25580. -{ 0x30EC, 0x30EC, 0x30EC },
  25581. -{ 0x30ED, 0x30ED, 0x30ED },
  25582. -{ 0x30EE, 0x30EE, 0x30EE },
  25583. -{ 0x30EF, 0x30EF, 0x30EF },
  25584. -{ 0x30F0, 0x30F0, 0x30F0 },
  25585. -{ 0x30F1, 0x30F1, 0x30F1 },
  25586. -{ 0x30F2, 0x30F2, 0x30F2 },
  25587. -{ 0x30F3, 0x30F3, 0x30F3 },
  25588. -{ 0x30F4, 0x30F4, 0x30F4 },
  25589. -{ 0x30F5, 0x30F5, 0x30F5 },
  25590. -{ 0x30F6, 0x30F6, 0x30F6 },
  25591. -{ 0x30F7, 0x30F7, 0x30F7 },
  25592. -{ 0x30F8, 0x30F8, 0x30F8 },
  25593. -{ 0x30F9, 0x30F9, 0x30F9 },
  25594. -{ 0x30FA, 0x30FA, 0x30FA },
  25595. -{ 0x30FC, 0x30FC, 0x30FC },
  25596. -{ 0x30FD, 0x30FD, 0x30FD },
  25597. -{ 0x30FE, 0x30FE, 0x30FE },
  25598. -{ 0x30FF, 0x30FF, 0x30FF },
  25599. -{ 0x3105, 0x3105, 0x3105 },
  25600. -{ 0x3106, 0x3106, 0x3106 },
  25601. -{ 0x3107, 0x3107, 0x3107 },
  25602. -{ 0x3108, 0x3108, 0x3108 },
  25603. -{ 0x3109, 0x3109, 0x3109 },
  25604. -{ 0x310A, 0x310A, 0x310A },
  25605. -{ 0x310B, 0x310B, 0x310B },
  25606. -{ 0x310C, 0x310C, 0x310C },
  25607. -{ 0x310D, 0x310D, 0x310D },
  25608. -{ 0x310E, 0x310E, 0x310E },
  25609. -{ 0x310F, 0x310F, 0x310F },
  25610. -{ 0x3110, 0x3110, 0x3110 },
  25611. -{ 0x3111, 0x3111, 0x3111 },
  25612. -{ 0x3112, 0x3112, 0x3112 },
  25613. -{ 0x3113, 0x3113, 0x3113 },
  25614. -{ 0x3114, 0x3114, 0x3114 },
  25615. -{ 0x3115, 0x3115, 0x3115 },
  25616. -{ 0x3116, 0x3116, 0x3116 },
  25617. -{ 0x3117, 0x3117, 0x3117 },
  25618. -{ 0x3118, 0x3118, 0x3118 },
  25619. -{ 0x3119, 0x3119, 0x3119 },
  25620. -{ 0x311A, 0x311A, 0x311A },
  25621. -{ 0x311B, 0x311B, 0x311B },
  25622. -{ 0x311C, 0x311C, 0x311C },
  25623. -{ 0x311D, 0x311D, 0x311D },
  25624. -{ 0x311E, 0x311E, 0x311E },
  25625. -{ 0x311F, 0x311F, 0x311F },
  25626. -{ 0x3120, 0x3120, 0x3120 },
  25627. -{ 0x3121, 0x3121, 0x3121 },
  25628. -{ 0x3122, 0x3122, 0x3122 },
  25629. -{ 0x3123, 0x3123, 0x3123 },
  25630. -{ 0x3124, 0x3124, 0x3124 },
  25631. -{ 0x3125, 0x3125, 0x3125 },
  25632. -{ 0x3126, 0x3126, 0x3126 },
  25633. -{ 0x3127, 0x3127, 0x3127 },
  25634. -{ 0x3128, 0x3128, 0x3128 },
  25635. -{ 0x3129, 0x3129, 0x3129 },
  25636. -{ 0x312A, 0x312A, 0x312A },
  25637. -{ 0x312B, 0x312B, 0x312B },
  25638. -{ 0x312C, 0x312C, 0x312C },
  25639. -{ 0x3131, 0x3131, 0x3131 },
  25640. -{ 0x3132, 0x3132, 0x3132 },
  25641. -{ 0x3133, 0x3133, 0x3133 },
  25642. -{ 0x3134, 0x3134, 0x3134 },
  25643. -{ 0x3135, 0x3135, 0x3135 },
  25644. -{ 0x3136, 0x3136, 0x3136 },
  25645. -{ 0x3137, 0x3137, 0x3137 },
  25646. -{ 0x3138, 0x3138, 0x3138 },
  25647. -{ 0x3139, 0x3139, 0x3139 },
  25648. -{ 0x313A, 0x313A, 0x313A },
  25649. -{ 0x313B, 0x313B, 0x313B },
  25650. -{ 0x313C, 0x313C, 0x313C },
  25651. -{ 0x313D, 0x313D, 0x313D },
  25652. -{ 0x313E, 0x313E, 0x313E },
  25653. -{ 0x313F, 0x313F, 0x313F },
  25654. -{ 0x3140, 0x3140, 0x3140 },
  25655. -{ 0x3141, 0x3141, 0x3141 },
  25656. -{ 0x3142, 0x3142, 0x3142 },
  25657. -{ 0x3143, 0x3143, 0x3143 },
  25658. -{ 0x3144, 0x3144, 0x3144 },
  25659. -{ 0x3145, 0x3145, 0x3145 },
  25660. -{ 0x3146, 0x3146, 0x3146 },
  25661. -{ 0x3147, 0x3147, 0x3147 },
  25662. -{ 0x3148, 0x3148, 0x3148 },
  25663. -{ 0x3149, 0x3149, 0x3149 },
  25664. -{ 0x314A, 0x314A, 0x314A },
  25665. -{ 0x314B, 0x314B, 0x314B },
  25666. -{ 0x314C, 0x314C, 0x314C },
  25667. -{ 0x314D, 0x314D, 0x314D },
  25668. -{ 0x314E, 0x314E, 0x314E },
  25669. -{ 0x314F, 0x314F, 0x314F },
  25670. -{ 0x3150, 0x3150, 0x3150 },
  25671. -{ 0x3151, 0x3151, 0x3151 },
  25672. -{ 0x3152, 0x3152, 0x3152 },
  25673. -{ 0x3153, 0x3153, 0x3153 },
  25674. -{ 0x3154, 0x3154, 0x3154 },
  25675. -{ 0x3155, 0x3155, 0x3155 },
  25676. -{ 0x3156, 0x3156, 0x3156 },
  25677. -{ 0x3157, 0x3157, 0x3157 },
  25678. -{ 0x3158, 0x3158, 0x3158 },
  25679. -{ 0x3159, 0x3159, 0x3159 },
  25680. -{ 0x315A, 0x315A, 0x315A },
  25681. -{ 0x315B, 0x315B, 0x315B },
  25682. -{ 0x315C, 0x315C, 0x315C },
  25683. -{ 0x315D, 0x315D, 0x315D },
  25684. -{ 0x315E, 0x315E, 0x315E },
  25685. -{ 0x315F, 0x315F, 0x315F },
  25686. -{ 0x3160, 0x3160, 0x3160 },
  25687. -{ 0x3161, 0x3161, 0x3161 },
  25688. -{ 0x3162, 0x3162, 0x3162 },
  25689. -{ 0x3163, 0x3163, 0x3163 },
  25690. -{ 0x3164, 0x3164, 0x3164 },
  25691. -{ 0x3165, 0x3165, 0x3165 },
  25692. -{ 0x3166, 0x3166, 0x3166 },
  25693. -{ 0x3167, 0x3167, 0x3167 },
  25694. -{ 0x3168, 0x3168, 0x3168 },
  25695. -{ 0x3169, 0x3169, 0x3169 },
  25696. -{ 0x316A, 0x316A, 0x316A },
  25697. -{ 0x316B, 0x316B, 0x316B },
  25698. -{ 0x316C, 0x316C, 0x316C },
  25699. -{ 0x316D, 0x316D, 0x316D },
  25700. -{ 0x316E, 0x316E, 0x316E },
  25701. -{ 0x316F, 0x316F, 0x316F },
  25702. -{ 0x3170, 0x3170, 0x3170 },
  25703. -{ 0x3171, 0x3171, 0x3171 },
  25704. -{ 0x3172, 0x3172, 0x3172 },
  25705. -{ 0x3173, 0x3173, 0x3173 },
  25706. -{ 0x3174, 0x3174, 0x3174 },
  25707. -{ 0x3175, 0x3175, 0x3175 },
  25708. -{ 0x3176, 0x3176, 0x3176 },
  25709. -{ 0x3177, 0x3177, 0x3177 },
  25710. -{ 0x3178, 0x3178, 0x3178 },
  25711. -{ 0x3179, 0x3179, 0x3179 },
  25712. -{ 0x317A, 0x317A, 0x317A },
  25713. -{ 0x317B, 0x317B, 0x317B },
  25714. -{ 0x317C, 0x317C, 0x317C },
  25715. -{ 0x317D, 0x317D, 0x317D },
  25716. -{ 0x317E, 0x317E, 0x317E },
  25717. -{ 0x317F, 0x317F, 0x317F },
  25718. -{ 0x3180, 0x3180, 0x3180 },
  25719. -{ 0x3181, 0x3181, 0x3181 },
  25720. -{ 0x3182, 0x3182, 0x3182 },
  25721. -{ 0x3183, 0x3183, 0x3183 },
  25722. -{ 0x3184, 0x3184, 0x3184 },
  25723. -{ 0x3185, 0x3185, 0x3185 },
  25724. -{ 0x3186, 0x3186, 0x3186 },
  25725. -{ 0x3187, 0x3187, 0x3187 },
  25726. -{ 0x3188, 0x3188, 0x3188 },
  25727. -{ 0x3189, 0x3189, 0x3189 },
  25728. -{ 0x318A, 0x318A, 0x318A },
  25729. -{ 0x318B, 0x318B, 0x318B },
  25730. -{ 0x318C, 0x318C, 0x318C },
  25731. -{ 0x318D, 0x318D, 0x318D },
  25732. -{ 0x318E, 0x318E, 0x318E },
  25733. -{ 0x31A0, 0x31A0, 0x31A0 },
  25734. -{ 0x31A1, 0x31A1, 0x31A1 },
  25735. -{ 0x31A2, 0x31A2, 0x31A2 },
  25736. -{ 0x31A3, 0x31A3, 0x31A3 },
  25737. -{ 0x31A4, 0x31A4, 0x31A4 },
  25738. -{ 0x31A5, 0x31A5, 0x31A5 },
  25739. -{ 0x31A6, 0x31A6, 0x31A6 },
  25740. -{ 0x31A7, 0x31A7, 0x31A7 },
  25741. -{ 0x31A8, 0x31A8, 0x31A8 },
  25742. -{ 0x31A9, 0x31A9, 0x31A9 },
  25743. -{ 0x31AA, 0x31AA, 0x31AA },
  25744. -{ 0x31AB, 0x31AB, 0x31AB },
  25745. -{ 0x31AC, 0x31AC, 0x31AC },
  25746. -{ 0x31AD, 0x31AD, 0x31AD },
  25747. -{ 0x31AE, 0x31AE, 0x31AE },
  25748. -{ 0x31AF, 0x31AF, 0x31AF },
  25749. -{ 0x31B0, 0x31B0, 0x31B0 },
  25750. -{ 0x31B1, 0x31B1, 0x31B1 },
  25751. -{ 0x31B2, 0x31B2, 0x31B2 },
  25752. -{ 0x31B3, 0x31B3, 0x31B3 },
  25753. -{ 0x31B4, 0x31B4, 0x31B4 },
  25754. -{ 0x31B5, 0x31B5, 0x31B5 },
  25755. -{ 0x31B6, 0x31B6, 0x31B6 },
  25756. -{ 0x31B7, 0x31B7, 0x31B7 },
  25757. -{ 0x31F0, 0x31F0, 0x31F0 },
  25758. -{ 0x31F1, 0x31F1, 0x31F1 },
  25759. -{ 0x31F2, 0x31F2, 0x31F2 },
  25760. -{ 0x31F3, 0x31F3, 0x31F3 },
  25761. -{ 0x31F4, 0x31F4, 0x31F4 },
  25762. -{ 0x31F5, 0x31F5, 0x31F5 },
  25763. -{ 0x31F6, 0x31F6, 0x31F6 },
  25764. -{ 0x31F7, 0x31F7, 0x31F7 },
  25765. -{ 0x31F8, 0x31F8, 0x31F8 },
  25766. -{ 0x31F9, 0x31F9, 0x31F9 },
  25767. -{ 0x31FA, 0x31FA, 0x31FA },
  25768. -{ 0x31FB, 0x31FB, 0x31FB },
  25769. -{ 0x31FC, 0x31FC, 0x31FC },
  25770. -{ 0x31FD, 0x31FD, 0x31FD },
  25771. -{ 0x31FE, 0x31FE, 0x31FE },
  25772. -{ 0x31FF, 0x31FF, 0x31FF },
  25773. -{ 0x3400, 0x3400, 0x3400 },
  25774. -{ 0x4DB5, 0x4DB5, 0x4DB5 },
  25775. -{ 0x4E00, 0x4E00, 0x4E00 },
  25776. -{ 0x9FBB, 0x9FBB, 0x9FBB },
  25777. -{ 0xA000, 0xA000, 0xA000 },
  25778. -{ 0xA001, 0xA001, 0xA001 },
  25779. -{ 0xA002, 0xA002, 0xA002 },
  25780. -{ 0xA003, 0xA003, 0xA003 },
  25781. -{ 0xA004, 0xA004, 0xA004 },
  25782. -{ 0xA005, 0xA005, 0xA005 },
  25783. -{ 0xA006, 0xA006, 0xA006 },
  25784. -{ 0xA007, 0xA007, 0xA007 },
  25785. -{ 0xA008, 0xA008, 0xA008 },
  25786. -{ 0xA009, 0xA009, 0xA009 },
  25787. -{ 0xA00A, 0xA00A, 0xA00A },
  25788. -{ 0xA00B, 0xA00B, 0xA00B },
  25789. -{ 0xA00C, 0xA00C, 0xA00C },
  25790. -{ 0xA00D, 0xA00D, 0xA00D },
  25791. -{ 0xA00E, 0xA00E, 0xA00E },
  25792. -{ 0xA00F, 0xA00F, 0xA00F },
  25793. -{ 0xA010, 0xA010, 0xA010 },
  25794. -{ 0xA011, 0xA011, 0xA011 },
  25795. -{ 0xA012, 0xA012, 0xA012 },
  25796. -{ 0xA013, 0xA013, 0xA013 },
  25797. -{ 0xA014, 0xA014, 0xA014 },
  25798. -{ 0xA015, 0xA015, 0xA015 },
  25799. -{ 0xA016, 0xA016, 0xA016 },
  25800. -{ 0xA017, 0xA017, 0xA017 },
  25801. -{ 0xA018, 0xA018, 0xA018 },
  25802. -{ 0xA019, 0xA019, 0xA019 },
  25803. -{ 0xA01A, 0xA01A, 0xA01A },
  25804. -{ 0xA01B, 0xA01B, 0xA01B },
  25805. -{ 0xA01C, 0xA01C, 0xA01C },
  25806. -{ 0xA01D, 0xA01D, 0xA01D },
  25807. -{ 0xA01E, 0xA01E, 0xA01E },
  25808. -{ 0xA01F, 0xA01F, 0xA01F },
  25809. -{ 0xA020, 0xA020, 0xA020 },
  25810. -{ 0xA021, 0xA021, 0xA021 },
  25811. -{ 0xA022, 0xA022, 0xA022 },
  25812. -{ 0xA023, 0xA023, 0xA023 },
  25813. -{ 0xA024, 0xA024, 0xA024 },
  25814. -{ 0xA025, 0xA025, 0xA025 },
  25815. -{ 0xA026, 0xA026, 0xA026 },
  25816. -{ 0xA027, 0xA027, 0xA027 },
  25817. -{ 0xA028, 0xA028, 0xA028 },
  25818. -{ 0xA029, 0xA029, 0xA029 },
  25819. -{ 0xA02A, 0xA02A, 0xA02A },
  25820. -{ 0xA02B, 0xA02B, 0xA02B },
  25821. -{ 0xA02C, 0xA02C, 0xA02C },
  25822. -{ 0xA02D, 0xA02D, 0xA02D },
  25823. -{ 0xA02E, 0xA02E, 0xA02E },
  25824. -{ 0xA02F, 0xA02F, 0xA02F },
  25825. -{ 0xA030, 0xA030, 0xA030 },
  25826. -{ 0xA031, 0xA031, 0xA031 },
  25827. -{ 0xA032, 0xA032, 0xA032 },
  25828. -{ 0xA033, 0xA033, 0xA033 },
  25829. -{ 0xA034, 0xA034, 0xA034 },
  25830. -{ 0xA035, 0xA035, 0xA035 },
  25831. -{ 0xA036, 0xA036, 0xA036 },
  25832. -{ 0xA037, 0xA037, 0xA037 },
  25833. -{ 0xA038, 0xA038, 0xA038 },
  25834. -{ 0xA039, 0xA039, 0xA039 },
  25835. -{ 0xA03A, 0xA03A, 0xA03A },
  25836. -{ 0xA03B, 0xA03B, 0xA03B },
  25837. -{ 0xA03C, 0xA03C, 0xA03C },
  25838. -{ 0xA03D, 0xA03D, 0xA03D },
  25839. -{ 0xA03E, 0xA03E, 0xA03E },
  25840. -{ 0xA03F, 0xA03F, 0xA03F },
  25841. -{ 0xA040, 0xA040, 0xA040 },
  25842. -{ 0xA041, 0xA041, 0xA041 },
  25843. -{ 0xA042, 0xA042, 0xA042 },
  25844. -{ 0xA043, 0xA043, 0xA043 },
  25845. -{ 0xA044, 0xA044, 0xA044 },
  25846. -{ 0xA045, 0xA045, 0xA045 },
  25847. -{ 0xA046, 0xA046, 0xA046 },
  25848. -{ 0xA047, 0xA047, 0xA047 },
  25849. -{ 0xA048, 0xA048, 0xA048 },
  25850. -{ 0xA049, 0xA049, 0xA049 },
  25851. -{ 0xA04A, 0xA04A, 0xA04A },
  25852. -{ 0xA04B, 0xA04B, 0xA04B },
  25853. -{ 0xA04C, 0xA04C, 0xA04C },
  25854. -{ 0xA04D, 0xA04D, 0xA04D },
  25855. -{ 0xA04E, 0xA04E, 0xA04E },
  25856. -{ 0xA04F, 0xA04F, 0xA04F },
  25857. -{ 0xA050, 0xA050, 0xA050 },
  25858. -{ 0xA051, 0xA051, 0xA051 },
  25859. -{ 0xA052, 0xA052, 0xA052 },
  25860. -{ 0xA053, 0xA053, 0xA053 },
  25861. -{ 0xA054, 0xA054, 0xA054 },
  25862. -{ 0xA055, 0xA055, 0xA055 },
  25863. -{ 0xA056, 0xA056, 0xA056 },
  25864. -{ 0xA057, 0xA057, 0xA057 },
  25865. -{ 0xA058, 0xA058, 0xA058 },
  25866. -{ 0xA059, 0xA059, 0xA059 },
  25867. -{ 0xA05A, 0xA05A, 0xA05A },
  25868. -{ 0xA05B, 0xA05B, 0xA05B },
  25869. -{ 0xA05C, 0xA05C, 0xA05C },
  25870. -{ 0xA05D, 0xA05D, 0xA05D },
  25871. -{ 0xA05E, 0xA05E, 0xA05E },
  25872. -{ 0xA05F, 0xA05F, 0xA05F },
  25873. -{ 0xA060, 0xA060, 0xA060 },
  25874. -{ 0xA061, 0xA061, 0xA061 },
  25875. -{ 0xA062, 0xA062, 0xA062 },
  25876. -{ 0xA063, 0xA063, 0xA063 },
  25877. -{ 0xA064, 0xA064, 0xA064 },
  25878. -{ 0xA065, 0xA065, 0xA065 },
  25879. -{ 0xA066, 0xA066, 0xA066 },
  25880. -{ 0xA067, 0xA067, 0xA067 },
  25881. -{ 0xA068, 0xA068, 0xA068 },
  25882. -{ 0xA069, 0xA069, 0xA069 },
  25883. -{ 0xA06A, 0xA06A, 0xA06A },
  25884. -{ 0xA06B, 0xA06B, 0xA06B },
  25885. -{ 0xA06C, 0xA06C, 0xA06C },
  25886. -{ 0xA06D, 0xA06D, 0xA06D },
  25887. -{ 0xA06E, 0xA06E, 0xA06E },
  25888. -{ 0xA06F, 0xA06F, 0xA06F },
  25889. -{ 0xA070, 0xA070, 0xA070 },
  25890. -{ 0xA071, 0xA071, 0xA071 },
  25891. -{ 0xA072, 0xA072, 0xA072 },
  25892. -{ 0xA073, 0xA073, 0xA073 },
  25893. -{ 0xA074, 0xA074, 0xA074 },
  25894. -{ 0xA075, 0xA075, 0xA075 },
  25895. -{ 0xA076, 0xA076, 0xA076 },
  25896. -{ 0xA077, 0xA077, 0xA077 },
  25897. -{ 0xA078, 0xA078, 0xA078 },
  25898. -{ 0xA079, 0xA079, 0xA079 },
  25899. -{ 0xA07A, 0xA07A, 0xA07A },
  25900. -{ 0xA07B, 0xA07B, 0xA07B },
  25901. -{ 0xA07C, 0xA07C, 0xA07C },
  25902. -{ 0xA07D, 0xA07D, 0xA07D },
  25903. -{ 0xA07E, 0xA07E, 0xA07E },
  25904. -{ 0xA07F, 0xA07F, 0xA07F },
  25905. -{ 0xA080, 0xA080, 0xA080 },
  25906. -{ 0xA081, 0xA081, 0xA081 },
  25907. -{ 0xA082, 0xA082, 0xA082 },
  25908. -{ 0xA083, 0xA083, 0xA083 },
  25909. -{ 0xA084, 0xA084, 0xA084 },
  25910. -{ 0xA085, 0xA085, 0xA085 },
  25911. -{ 0xA086, 0xA086, 0xA086 },
  25912. -{ 0xA087, 0xA087, 0xA087 },
  25913. -{ 0xA088, 0xA088, 0xA088 },
  25914. -{ 0xA089, 0xA089, 0xA089 },
  25915. -{ 0xA08A, 0xA08A, 0xA08A },
  25916. -{ 0xA08B, 0xA08B, 0xA08B },
  25917. -{ 0xA08C, 0xA08C, 0xA08C },
  25918. -{ 0xA08D, 0xA08D, 0xA08D },
  25919. -{ 0xA08E, 0xA08E, 0xA08E },
  25920. -{ 0xA08F, 0xA08F, 0xA08F },
  25921. -{ 0xA090, 0xA090, 0xA090 },
  25922. -{ 0xA091, 0xA091, 0xA091 },
  25923. -{ 0xA092, 0xA092, 0xA092 },
  25924. -{ 0xA093, 0xA093, 0xA093 },
  25925. -{ 0xA094, 0xA094, 0xA094 },
  25926. -{ 0xA095, 0xA095, 0xA095 },
  25927. -{ 0xA096, 0xA096, 0xA096 },
  25928. -{ 0xA097, 0xA097, 0xA097 },
  25929. -{ 0xA098, 0xA098, 0xA098 },
  25930. -{ 0xA099, 0xA099, 0xA099 },
  25931. -{ 0xA09A, 0xA09A, 0xA09A },
  25932. -{ 0xA09B, 0xA09B, 0xA09B },
  25933. -{ 0xA09C, 0xA09C, 0xA09C },
  25934. -{ 0xA09D, 0xA09D, 0xA09D },
  25935. -{ 0xA09E, 0xA09E, 0xA09E },
  25936. -{ 0xA09F, 0xA09F, 0xA09F },
  25937. -{ 0xA0A0, 0xA0A0, 0xA0A0 },
  25938. -{ 0xA0A1, 0xA0A1, 0xA0A1 },
  25939. -{ 0xA0A2, 0xA0A2, 0xA0A2 },
  25940. -{ 0xA0A3, 0xA0A3, 0xA0A3 },
  25941. -{ 0xA0A4, 0xA0A4, 0xA0A4 },
  25942. -{ 0xA0A5, 0xA0A5, 0xA0A5 },
  25943. -{ 0xA0A6, 0xA0A6, 0xA0A6 },
  25944. -{ 0xA0A7, 0xA0A7, 0xA0A7 },
  25945. -{ 0xA0A8, 0xA0A8, 0xA0A8 },
  25946. -{ 0xA0A9, 0xA0A9, 0xA0A9 },
  25947. -{ 0xA0AA, 0xA0AA, 0xA0AA },
  25948. -{ 0xA0AB, 0xA0AB, 0xA0AB },
  25949. -{ 0xA0AC, 0xA0AC, 0xA0AC },
  25950. -{ 0xA0AD, 0xA0AD, 0xA0AD },
  25951. -{ 0xA0AE, 0xA0AE, 0xA0AE },
  25952. -{ 0xA0AF, 0xA0AF, 0xA0AF },
  25953. -{ 0xA0B0, 0xA0B0, 0xA0B0 },
  25954. -{ 0xA0B1, 0xA0B1, 0xA0B1 },
  25955. -{ 0xA0B2, 0xA0B2, 0xA0B2 },
  25956. -{ 0xA0B3, 0xA0B3, 0xA0B3 },
  25957. -{ 0xA0B4, 0xA0B4, 0xA0B4 },
  25958. -{ 0xA0B5, 0xA0B5, 0xA0B5 },
  25959. -{ 0xA0B6, 0xA0B6, 0xA0B6 },
  25960. -{ 0xA0B7, 0xA0B7, 0xA0B7 },
  25961. -{ 0xA0B8, 0xA0B8, 0xA0B8 },
  25962. -{ 0xA0B9, 0xA0B9, 0xA0B9 },
  25963. -{ 0xA0BA, 0xA0BA, 0xA0BA },
  25964. -{ 0xA0BB, 0xA0BB, 0xA0BB },
  25965. -{ 0xA0BC, 0xA0BC, 0xA0BC },
  25966. -{ 0xA0BD, 0xA0BD, 0xA0BD },
  25967. -{ 0xA0BE, 0xA0BE, 0xA0BE },
  25968. -{ 0xA0BF, 0xA0BF, 0xA0BF },
  25969. -{ 0xA0C0, 0xA0C0, 0xA0C0 },
  25970. -{ 0xA0C1, 0xA0C1, 0xA0C1 },
  25971. -{ 0xA0C2, 0xA0C2, 0xA0C2 },
  25972. -{ 0xA0C3, 0xA0C3, 0xA0C3 },
  25973. -{ 0xA0C4, 0xA0C4, 0xA0C4 },
  25974. -{ 0xA0C5, 0xA0C5, 0xA0C5 },
  25975. -{ 0xA0C6, 0xA0C6, 0xA0C6 },
  25976. -{ 0xA0C7, 0xA0C7, 0xA0C7 },
  25977. -{ 0xA0C8, 0xA0C8, 0xA0C8 },
  25978. -{ 0xA0C9, 0xA0C9, 0xA0C9 },
  25979. -{ 0xA0CA, 0xA0CA, 0xA0CA },
  25980. -{ 0xA0CB, 0xA0CB, 0xA0CB },
  25981. -{ 0xA0CC, 0xA0CC, 0xA0CC },
  25982. -{ 0xA0CD, 0xA0CD, 0xA0CD },
  25983. -{ 0xA0CE, 0xA0CE, 0xA0CE },
  25984. -{ 0xA0CF, 0xA0CF, 0xA0CF },
  25985. -{ 0xA0D0, 0xA0D0, 0xA0D0 },
  25986. -{ 0xA0D1, 0xA0D1, 0xA0D1 },
  25987. -{ 0xA0D2, 0xA0D2, 0xA0D2 },
  25988. -{ 0xA0D3, 0xA0D3, 0xA0D3 },
  25989. -{ 0xA0D4, 0xA0D4, 0xA0D4 },
  25990. -{ 0xA0D5, 0xA0D5, 0xA0D5 },
  25991. -{ 0xA0D6, 0xA0D6, 0xA0D6 },
  25992. -{ 0xA0D7, 0xA0D7, 0xA0D7 },
  25993. -{ 0xA0D8, 0xA0D8, 0xA0D8 },
  25994. -{ 0xA0D9, 0xA0D9, 0xA0D9 },
  25995. -{ 0xA0DA, 0xA0DA, 0xA0DA },
  25996. -{ 0xA0DB, 0xA0DB, 0xA0DB },
  25997. -{ 0xA0DC, 0xA0DC, 0xA0DC },
  25998. -{ 0xA0DD, 0xA0DD, 0xA0DD },
  25999. -{ 0xA0DE, 0xA0DE, 0xA0DE },
  26000. -{ 0xA0DF, 0xA0DF, 0xA0DF },
  26001. -{ 0xA0E0, 0xA0E0, 0xA0E0 },
  26002. -{ 0xA0E1, 0xA0E1, 0xA0E1 },
  26003. -{ 0xA0E2, 0xA0E2, 0xA0E2 },
  26004. -{ 0xA0E3, 0xA0E3, 0xA0E3 },
  26005. -{ 0xA0E4, 0xA0E4, 0xA0E4 },
  26006. -{ 0xA0E5, 0xA0E5, 0xA0E5 },
  26007. -{ 0xA0E6, 0xA0E6, 0xA0E6 },
  26008. -{ 0xA0E7, 0xA0E7, 0xA0E7 },
  26009. -{ 0xA0E8, 0xA0E8, 0xA0E8 },
  26010. -{ 0xA0E9, 0xA0E9, 0xA0E9 },
  26011. -{ 0xA0EA, 0xA0EA, 0xA0EA },
  26012. -{ 0xA0EB, 0xA0EB, 0xA0EB },
  26013. -{ 0xA0EC, 0xA0EC, 0xA0EC },
  26014. -{ 0xA0ED, 0xA0ED, 0xA0ED },
  26015. -{ 0xA0EE, 0xA0EE, 0xA0EE },
  26016. -{ 0xA0EF, 0xA0EF, 0xA0EF },
  26017. -{ 0xA0F0, 0xA0F0, 0xA0F0 },
  26018. -{ 0xA0F1, 0xA0F1, 0xA0F1 },
  26019. -{ 0xA0F2, 0xA0F2, 0xA0F2 },
  26020. -{ 0xA0F3, 0xA0F3, 0xA0F3 },
  26021. -{ 0xA0F4, 0xA0F4, 0xA0F4 },
  26022. -{ 0xA0F5, 0xA0F5, 0xA0F5 },
  26023. -{ 0xA0F6, 0xA0F6, 0xA0F6 },
  26024. -{ 0xA0F7, 0xA0F7, 0xA0F7 },
  26025. -{ 0xA0F8, 0xA0F8, 0xA0F8 },
  26026. -{ 0xA0F9, 0xA0F9, 0xA0F9 },
  26027. -{ 0xA0FA, 0xA0FA, 0xA0FA },
  26028. -{ 0xA0FB, 0xA0FB, 0xA0FB },
  26029. -{ 0xA0FC, 0xA0FC, 0xA0FC },
  26030. -{ 0xA0FD, 0xA0FD, 0xA0FD },
  26031. -{ 0xA0FE, 0xA0FE, 0xA0FE },
  26032. -{ 0xA0FF, 0xA0FF, 0xA0FF },
  26033. -{ 0xA100, 0xA100, 0xA100 },
  26034. -{ 0xA101, 0xA101, 0xA101 },
  26035. -{ 0xA102, 0xA102, 0xA102 },
  26036. -{ 0xA103, 0xA103, 0xA103 },
  26037. -{ 0xA104, 0xA104, 0xA104 },
  26038. -{ 0xA105, 0xA105, 0xA105 },
  26039. -{ 0xA106, 0xA106, 0xA106 },
  26040. -{ 0xA107, 0xA107, 0xA107 },
  26041. -{ 0xA108, 0xA108, 0xA108 },
  26042. -{ 0xA109, 0xA109, 0xA109 },
  26043. -{ 0xA10A, 0xA10A, 0xA10A },
  26044. -{ 0xA10B, 0xA10B, 0xA10B },
  26045. -{ 0xA10C, 0xA10C, 0xA10C },
  26046. -{ 0xA10D, 0xA10D, 0xA10D },
  26047. -{ 0xA10E, 0xA10E, 0xA10E },
  26048. -{ 0xA10F, 0xA10F, 0xA10F },
  26049. -{ 0xA110, 0xA110, 0xA110 },
  26050. -{ 0xA111, 0xA111, 0xA111 },
  26051. -{ 0xA112, 0xA112, 0xA112 },
  26052. -{ 0xA113, 0xA113, 0xA113 },
  26053. -{ 0xA114, 0xA114, 0xA114 },
  26054. -{ 0xA115, 0xA115, 0xA115 },
  26055. -{ 0xA116, 0xA116, 0xA116 },
  26056. -{ 0xA117, 0xA117, 0xA117 },
  26057. -{ 0xA118, 0xA118, 0xA118 },
  26058. -{ 0xA119, 0xA119, 0xA119 },
  26059. -{ 0xA11A, 0xA11A, 0xA11A },
  26060. -{ 0xA11B, 0xA11B, 0xA11B },
  26061. -{ 0xA11C, 0xA11C, 0xA11C },
  26062. -{ 0xA11D, 0xA11D, 0xA11D },
  26063. -{ 0xA11E, 0xA11E, 0xA11E },
  26064. -{ 0xA11F, 0xA11F, 0xA11F },
  26065. -{ 0xA120, 0xA120, 0xA120 },
  26066. -{ 0xA121, 0xA121, 0xA121 },
  26067. -{ 0xA122, 0xA122, 0xA122 },
  26068. -{ 0xA123, 0xA123, 0xA123 },
  26069. -{ 0xA124, 0xA124, 0xA124 },
  26070. -{ 0xA125, 0xA125, 0xA125 },
  26071. -{ 0xA126, 0xA126, 0xA126 },
  26072. -{ 0xA127, 0xA127, 0xA127 },
  26073. -{ 0xA128, 0xA128, 0xA128 },
  26074. -{ 0xA129, 0xA129, 0xA129 },
  26075. -{ 0xA12A, 0xA12A, 0xA12A },
  26076. -{ 0xA12B, 0xA12B, 0xA12B },
  26077. -{ 0xA12C, 0xA12C, 0xA12C },
  26078. -{ 0xA12D, 0xA12D, 0xA12D },
  26079. -{ 0xA12E, 0xA12E, 0xA12E },
  26080. -{ 0xA12F, 0xA12F, 0xA12F },
  26081. -{ 0xA130, 0xA130, 0xA130 },
  26082. -{ 0xA131, 0xA131, 0xA131 },
  26083. -{ 0xA132, 0xA132, 0xA132 },
  26084. -{ 0xA133, 0xA133, 0xA133 },
  26085. -{ 0xA134, 0xA134, 0xA134 },
  26086. -{ 0xA135, 0xA135, 0xA135 },
  26087. -{ 0xA136, 0xA136, 0xA136 },
  26088. -{ 0xA137, 0xA137, 0xA137 },
  26089. -{ 0xA138, 0xA138, 0xA138 },
  26090. -{ 0xA139, 0xA139, 0xA139 },
  26091. -{ 0xA13A, 0xA13A, 0xA13A },
  26092. -{ 0xA13B, 0xA13B, 0xA13B },
  26093. -{ 0xA13C, 0xA13C, 0xA13C },
  26094. -{ 0xA13D, 0xA13D, 0xA13D },
  26095. -{ 0xA13E, 0xA13E, 0xA13E },
  26096. -{ 0xA13F, 0xA13F, 0xA13F },
  26097. -{ 0xA140, 0xA140, 0xA140 },
  26098. -{ 0xA141, 0xA141, 0xA141 },
  26099. -{ 0xA142, 0xA142, 0xA142 },
  26100. -{ 0xA143, 0xA143, 0xA143 },
  26101. -{ 0xA144, 0xA144, 0xA144 },
  26102. -{ 0xA145, 0xA145, 0xA145 },
  26103. -{ 0xA146, 0xA146, 0xA146 },
  26104. -{ 0xA147, 0xA147, 0xA147 },
  26105. -{ 0xA148, 0xA148, 0xA148 },
  26106. -{ 0xA149, 0xA149, 0xA149 },
  26107. -{ 0xA14A, 0xA14A, 0xA14A },
  26108. -{ 0xA14B, 0xA14B, 0xA14B },
  26109. -{ 0xA14C, 0xA14C, 0xA14C },
  26110. -{ 0xA14D, 0xA14D, 0xA14D },
  26111. -{ 0xA14E, 0xA14E, 0xA14E },
  26112. -{ 0xA14F, 0xA14F, 0xA14F },
  26113. -{ 0xA150, 0xA150, 0xA150 },
  26114. -{ 0xA151, 0xA151, 0xA151 },
  26115. -{ 0xA152, 0xA152, 0xA152 },
  26116. -{ 0xA153, 0xA153, 0xA153 },
  26117. -{ 0xA154, 0xA154, 0xA154 },
  26118. -{ 0xA155, 0xA155, 0xA155 },
  26119. -{ 0xA156, 0xA156, 0xA156 },
  26120. -{ 0xA157, 0xA157, 0xA157 },
  26121. -{ 0xA158, 0xA158, 0xA158 },
  26122. -{ 0xA159, 0xA159, 0xA159 },
  26123. -{ 0xA15A, 0xA15A, 0xA15A },
  26124. -{ 0xA15B, 0xA15B, 0xA15B },
  26125. -{ 0xA15C, 0xA15C, 0xA15C },
  26126. -{ 0xA15D, 0xA15D, 0xA15D },
  26127. -{ 0xA15E, 0xA15E, 0xA15E },
  26128. -{ 0xA15F, 0xA15F, 0xA15F },
  26129. -{ 0xA160, 0xA160, 0xA160 },
  26130. -{ 0xA161, 0xA161, 0xA161 },
  26131. -{ 0xA162, 0xA162, 0xA162 },
  26132. -{ 0xA163, 0xA163, 0xA163 },
  26133. -{ 0xA164, 0xA164, 0xA164 },
  26134. -{ 0xA165, 0xA165, 0xA165 },
  26135. -{ 0xA166, 0xA166, 0xA166 },
  26136. -{ 0xA167, 0xA167, 0xA167 },
  26137. -{ 0xA168, 0xA168, 0xA168 },
  26138. -{ 0xA169, 0xA169, 0xA169 },
  26139. -{ 0xA16A, 0xA16A, 0xA16A },
  26140. -{ 0xA16B, 0xA16B, 0xA16B },
  26141. -{ 0xA16C, 0xA16C, 0xA16C },
  26142. -{ 0xA16D, 0xA16D, 0xA16D },
  26143. -{ 0xA16E, 0xA16E, 0xA16E },
  26144. -{ 0xA16F, 0xA16F, 0xA16F },
  26145. -{ 0xA170, 0xA170, 0xA170 },
  26146. -{ 0xA171, 0xA171, 0xA171 },
  26147. -{ 0xA172, 0xA172, 0xA172 },
  26148. -{ 0xA173, 0xA173, 0xA173 },
  26149. -{ 0xA174, 0xA174, 0xA174 },
  26150. -{ 0xA175, 0xA175, 0xA175 },
  26151. -{ 0xA176, 0xA176, 0xA176 },
  26152. -{ 0xA177, 0xA177, 0xA177 },
  26153. -{ 0xA178, 0xA178, 0xA178 },
  26154. -{ 0xA179, 0xA179, 0xA179 },
  26155. -{ 0xA17A, 0xA17A, 0xA17A },
  26156. -{ 0xA17B, 0xA17B, 0xA17B },
  26157. -{ 0xA17C, 0xA17C, 0xA17C },
  26158. -{ 0xA17D, 0xA17D, 0xA17D },
  26159. -{ 0xA17E, 0xA17E, 0xA17E },
  26160. -{ 0xA17F, 0xA17F, 0xA17F },
  26161. -{ 0xA180, 0xA180, 0xA180 },
  26162. -{ 0xA181, 0xA181, 0xA181 },
  26163. -{ 0xA182, 0xA182, 0xA182 },
  26164. -{ 0xA183, 0xA183, 0xA183 },
  26165. -{ 0xA184, 0xA184, 0xA184 },
  26166. -{ 0xA185, 0xA185, 0xA185 },
  26167. -{ 0xA186, 0xA186, 0xA186 },
  26168. -{ 0xA187, 0xA187, 0xA187 },
  26169. -{ 0xA188, 0xA188, 0xA188 },
  26170. -{ 0xA189, 0xA189, 0xA189 },
  26171. -{ 0xA18A, 0xA18A, 0xA18A },
  26172. -{ 0xA18B, 0xA18B, 0xA18B },
  26173. -{ 0xA18C, 0xA18C, 0xA18C },
  26174. -{ 0xA18D, 0xA18D, 0xA18D },
  26175. -{ 0xA18E, 0xA18E, 0xA18E },
  26176. -{ 0xA18F, 0xA18F, 0xA18F },
  26177. -{ 0xA190, 0xA190, 0xA190 },
  26178. -{ 0xA191, 0xA191, 0xA191 },
  26179. -{ 0xA192, 0xA192, 0xA192 },
  26180. -{ 0xA193, 0xA193, 0xA193 },
  26181. -{ 0xA194, 0xA194, 0xA194 },
  26182. -{ 0xA195, 0xA195, 0xA195 },
  26183. -{ 0xA196, 0xA196, 0xA196 },
  26184. -{ 0xA197, 0xA197, 0xA197 },
  26185. -{ 0xA198, 0xA198, 0xA198 },
  26186. -{ 0xA199, 0xA199, 0xA199 },
  26187. -{ 0xA19A, 0xA19A, 0xA19A },
  26188. -{ 0xA19B, 0xA19B, 0xA19B },
  26189. -{ 0xA19C, 0xA19C, 0xA19C },
  26190. -{ 0xA19D, 0xA19D, 0xA19D },
  26191. -{ 0xA19E, 0xA19E, 0xA19E },
  26192. -{ 0xA19F, 0xA19F, 0xA19F },
  26193. -{ 0xA1A0, 0xA1A0, 0xA1A0 },
  26194. -{ 0xA1A1, 0xA1A1, 0xA1A1 },
  26195. -{ 0xA1A2, 0xA1A2, 0xA1A2 },
  26196. -{ 0xA1A3, 0xA1A3, 0xA1A3 },
  26197. -{ 0xA1A4, 0xA1A4, 0xA1A4 },
  26198. -{ 0xA1A5, 0xA1A5, 0xA1A5 },
  26199. -{ 0xA1A6, 0xA1A6, 0xA1A6 },
  26200. -{ 0xA1A7, 0xA1A7, 0xA1A7 },
  26201. -{ 0xA1A8, 0xA1A8, 0xA1A8 },
  26202. -{ 0xA1A9, 0xA1A9, 0xA1A9 },
  26203. -{ 0xA1AA, 0xA1AA, 0xA1AA },
  26204. -{ 0xA1AB, 0xA1AB, 0xA1AB },
  26205. -{ 0xA1AC, 0xA1AC, 0xA1AC },
  26206. -{ 0xA1AD, 0xA1AD, 0xA1AD },
  26207. -{ 0xA1AE, 0xA1AE, 0xA1AE },
  26208. -{ 0xA1AF, 0xA1AF, 0xA1AF },
  26209. -{ 0xA1B0, 0xA1B0, 0xA1B0 },
  26210. -{ 0xA1B1, 0xA1B1, 0xA1B1 },
  26211. -{ 0xA1B2, 0xA1B2, 0xA1B2 },
  26212. -{ 0xA1B3, 0xA1B3, 0xA1B3 },
  26213. -{ 0xA1B4, 0xA1B4, 0xA1B4 },
  26214. -{ 0xA1B5, 0xA1B5, 0xA1B5 },
  26215. -{ 0xA1B6, 0xA1B6, 0xA1B6 },
  26216. -{ 0xA1B7, 0xA1B7, 0xA1B7 },
  26217. -{ 0xA1B8, 0xA1B8, 0xA1B8 },
  26218. -{ 0xA1B9, 0xA1B9, 0xA1B9 },
  26219. -{ 0xA1BA, 0xA1BA, 0xA1BA },
  26220. -{ 0xA1BB, 0xA1BB, 0xA1BB },
  26221. -{ 0xA1BC, 0xA1BC, 0xA1BC },
  26222. -{ 0xA1BD, 0xA1BD, 0xA1BD },
  26223. -{ 0xA1BE, 0xA1BE, 0xA1BE },
  26224. -{ 0xA1BF, 0xA1BF, 0xA1BF },
  26225. -{ 0xA1C0, 0xA1C0, 0xA1C0 },
  26226. -{ 0xA1C1, 0xA1C1, 0xA1C1 },
  26227. -{ 0xA1C2, 0xA1C2, 0xA1C2 },
  26228. -{ 0xA1C3, 0xA1C3, 0xA1C3 },
  26229. -{ 0xA1C4, 0xA1C4, 0xA1C4 },
  26230. -{ 0xA1C5, 0xA1C5, 0xA1C5 },
  26231. -{ 0xA1C6, 0xA1C6, 0xA1C6 },
  26232. -{ 0xA1C7, 0xA1C7, 0xA1C7 },
  26233. -{ 0xA1C8, 0xA1C8, 0xA1C8 },
  26234. -{ 0xA1C9, 0xA1C9, 0xA1C9 },
  26235. -{ 0xA1CA, 0xA1CA, 0xA1CA },
  26236. -{ 0xA1CB, 0xA1CB, 0xA1CB },
  26237. -{ 0xA1CC, 0xA1CC, 0xA1CC },
  26238. -{ 0xA1CD, 0xA1CD, 0xA1CD },
  26239. -{ 0xA1CE, 0xA1CE, 0xA1CE },
  26240. -{ 0xA1CF, 0xA1CF, 0xA1CF },
  26241. -{ 0xA1D0, 0xA1D0, 0xA1D0 },
  26242. -{ 0xA1D1, 0xA1D1, 0xA1D1 },
  26243. -{ 0xA1D2, 0xA1D2, 0xA1D2 },
  26244. -{ 0xA1D3, 0xA1D3, 0xA1D3 },
  26245. -{ 0xA1D4, 0xA1D4, 0xA1D4 },
  26246. -{ 0xA1D5, 0xA1D5, 0xA1D5 },
  26247. -{ 0xA1D6, 0xA1D6, 0xA1D6 },
  26248. -{ 0xA1D7, 0xA1D7, 0xA1D7 },
  26249. -{ 0xA1D8, 0xA1D8, 0xA1D8 },
  26250. -{ 0xA1D9, 0xA1D9, 0xA1D9 },
  26251. -{ 0xA1DA, 0xA1DA, 0xA1DA },
  26252. -{ 0xA1DB, 0xA1DB, 0xA1DB },
  26253. -{ 0xA1DC, 0xA1DC, 0xA1DC },
  26254. -{ 0xA1DD, 0xA1DD, 0xA1DD },
  26255. -{ 0xA1DE, 0xA1DE, 0xA1DE },
  26256. -{ 0xA1DF, 0xA1DF, 0xA1DF },
  26257. -{ 0xA1E0, 0xA1E0, 0xA1E0 },
  26258. -{ 0xA1E1, 0xA1E1, 0xA1E1 },
  26259. -{ 0xA1E2, 0xA1E2, 0xA1E2 },
  26260. -{ 0xA1E3, 0xA1E3, 0xA1E3 },
  26261. -{ 0xA1E4, 0xA1E4, 0xA1E4 },
  26262. -{ 0xA1E5, 0xA1E5, 0xA1E5 },
  26263. -{ 0xA1E6, 0xA1E6, 0xA1E6 },
  26264. -{ 0xA1E7, 0xA1E7, 0xA1E7 },
  26265. -{ 0xA1E8, 0xA1E8, 0xA1E8 },
  26266. -{ 0xA1E9, 0xA1E9, 0xA1E9 },
  26267. -{ 0xA1EA, 0xA1EA, 0xA1EA },
  26268. -{ 0xA1EB, 0xA1EB, 0xA1EB },
  26269. -{ 0xA1EC, 0xA1EC, 0xA1EC },
  26270. -{ 0xA1ED, 0xA1ED, 0xA1ED },
  26271. -{ 0xA1EE, 0xA1EE, 0xA1EE },
  26272. -{ 0xA1EF, 0xA1EF, 0xA1EF },
  26273. -{ 0xA1F0, 0xA1F0, 0xA1F0 },
  26274. -{ 0xA1F1, 0xA1F1, 0xA1F1 },
  26275. -{ 0xA1F2, 0xA1F2, 0xA1F2 },
  26276. -{ 0xA1F3, 0xA1F3, 0xA1F3 },
  26277. -{ 0xA1F4, 0xA1F4, 0xA1F4 },
  26278. -{ 0xA1F5, 0xA1F5, 0xA1F5 },
  26279. -{ 0xA1F6, 0xA1F6, 0xA1F6 },
  26280. -{ 0xA1F7, 0xA1F7, 0xA1F7 },
  26281. -{ 0xA1F8, 0xA1F8, 0xA1F8 },
  26282. -{ 0xA1F9, 0xA1F9, 0xA1F9 },
  26283. -{ 0xA1FA, 0xA1FA, 0xA1FA },
  26284. -{ 0xA1FB, 0xA1FB, 0xA1FB },
  26285. -{ 0xA1FC, 0xA1FC, 0xA1FC },
  26286. -{ 0xA1FD, 0xA1FD, 0xA1FD },
  26287. -{ 0xA1FE, 0xA1FE, 0xA1FE },
  26288. -{ 0xA1FF, 0xA1FF, 0xA1FF },
  26289. -{ 0xA200, 0xA200, 0xA200 },
  26290. -{ 0xA201, 0xA201, 0xA201 },
  26291. -{ 0xA202, 0xA202, 0xA202 },
  26292. -{ 0xA203, 0xA203, 0xA203 },
  26293. -{ 0xA204, 0xA204, 0xA204 },
  26294. -{ 0xA205, 0xA205, 0xA205 },
  26295. -{ 0xA206, 0xA206, 0xA206 },
  26296. -{ 0xA207, 0xA207, 0xA207 },
  26297. -{ 0xA208, 0xA208, 0xA208 },
  26298. -{ 0xA209, 0xA209, 0xA209 },
  26299. -{ 0xA20A, 0xA20A, 0xA20A },
  26300. -{ 0xA20B, 0xA20B, 0xA20B },
  26301. -{ 0xA20C, 0xA20C, 0xA20C },
  26302. -{ 0xA20D, 0xA20D, 0xA20D },
  26303. -{ 0xA20E, 0xA20E, 0xA20E },
  26304. -{ 0xA20F, 0xA20F, 0xA20F },
  26305. -{ 0xA210, 0xA210, 0xA210 },
  26306. -{ 0xA211, 0xA211, 0xA211 },
  26307. -{ 0xA212, 0xA212, 0xA212 },
  26308. -{ 0xA213, 0xA213, 0xA213 },
  26309. -{ 0xA214, 0xA214, 0xA214 },
  26310. -{ 0xA215, 0xA215, 0xA215 },
  26311. -{ 0xA216, 0xA216, 0xA216 },
  26312. -{ 0xA217, 0xA217, 0xA217 },
  26313. -{ 0xA218, 0xA218, 0xA218 },
  26314. -{ 0xA219, 0xA219, 0xA219 },
  26315. -{ 0xA21A, 0xA21A, 0xA21A },
  26316. -{ 0xA21B, 0xA21B, 0xA21B },
  26317. -{ 0xA21C, 0xA21C, 0xA21C },
  26318. -{ 0xA21D, 0xA21D, 0xA21D },
  26319. -{ 0xA21E, 0xA21E, 0xA21E },
  26320. -{ 0xA21F, 0xA21F, 0xA21F },
  26321. -{ 0xA220, 0xA220, 0xA220 },
  26322. -{ 0xA221, 0xA221, 0xA221 },
  26323. -{ 0xA222, 0xA222, 0xA222 },
  26324. -{ 0xA223, 0xA223, 0xA223 },
  26325. -{ 0xA224, 0xA224, 0xA224 },
  26326. -{ 0xA225, 0xA225, 0xA225 },
  26327. -{ 0xA226, 0xA226, 0xA226 },
  26328. -{ 0xA227, 0xA227, 0xA227 },
  26329. -{ 0xA228, 0xA228, 0xA228 },
  26330. -{ 0xA229, 0xA229, 0xA229 },
  26331. -{ 0xA22A, 0xA22A, 0xA22A },
  26332. -{ 0xA22B, 0xA22B, 0xA22B },
  26333. -{ 0xA22C, 0xA22C, 0xA22C },
  26334. -{ 0xA22D, 0xA22D, 0xA22D },
  26335. -{ 0xA22E, 0xA22E, 0xA22E },
  26336. -{ 0xA22F, 0xA22F, 0xA22F },
  26337. -{ 0xA230, 0xA230, 0xA230 },
  26338. -{ 0xA231, 0xA231, 0xA231 },
  26339. -{ 0xA232, 0xA232, 0xA232 },
  26340. -{ 0xA233, 0xA233, 0xA233 },
  26341. -{ 0xA234, 0xA234, 0xA234 },
  26342. -{ 0xA235, 0xA235, 0xA235 },
  26343. -{ 0xA236, 0xA236, 0xA236 },
  26344. -{ 0xA237, 0xA237, 0xA237 },
  26345. -{ 0xA238, 0xA238, 0xA238 },
  26346. -{ 0xA239, 0xA239, 0xA239 },
  26347. -{ 0xA23A, 0xA23A, 0xA23A },
  26348. -{ 0xA23B, 0xA23B, 0xA23B },
  26349. -{ 0xA23C, 0xA23C, 0xA23C },
  26350. -{ 0xA23D, 0xA23D, 0xA23D },
  26351. -{ 0xA23E, 0xA23E, 0xA23E },
  26352. -{ 0xA23F, 0xA23F, 0xA23F },
  26353. -{ 0xA240, 0xA240, 0xA240 },
  26354. -{ 0xA241, 0xA241, 0xA241 },
  26355. -{ 0xA242, 0xA242, 0xA242 },
  26356. -{ 0xA243, 0xA243, 0xA243 },
  26357. -{ 0xA244, 0xA244, 0xA244 },
  26358. -{ 0xA245, 0xA245, 0xA245 },
  26359. -{ 0xA246, 0xA246, 0xA246 },
  26360. -{ 0xA247, 0xA247, 0xA247 },
  26361. -{ 0xA248, 0xA248, 0xA248 },
  26362. -{ 0xA249, 0xA249, 0xA249 },
  26363. -{ 0xA24A, 0xA24A, 0xA24A },
  26364. -{ 0xA24B, 0xA24B, 0xA24B },
  26365. -{ 0xA24C, 0xA24C, 0xA24C },
  26366. -{ 0xA24D, 0xA24D, 0xA24D },
  26367. -{ 0xA24E, 0xA24E, 0xA24E },
  26368. -{ 0xA24F, 0xA24F, 0xA24F },
  26369. -{ 0xA250, 0xA250, 0xA250 },
  26370. -{ 0xA251, 0xA251, 0xA251 },
  26371. -{ 0xA252, 0xA252, 0xA252 },
  26372. -{ 0xA253, 0xA253, 0xA253 },
  26373. -{ 0xA254, 0xA254, 0xA254 },
  26374. -{ 0xA255, 0xA255, 0xA255 },
  26375. -{ 0xA256, 0xA256, 0xA256 },
  26376. -{ 0xA257, 0xA257, 0xA257 },
  26377. -{ 0xA258, 0xA258, 0xA258 },
  26378. -{ 0xA259, 0xA259, 0xA259 },
  26379. -{ 0xA25A, 0xA25A, 0xA25A },
  26380. -{ 0xA25B, 0xA25B, 0xA25B },
  26381. -{ 0xA25C, 0xA25C, 0xA25C },
  26382. -{ 0xA25D, 0xA25D, 0xA25D },
  26383. -{ 0xA25E, 0xA25E, 0xA25E },
  26384. -{ 0xA25F, 0xA25F, 0xA25F },
  26385. -{ 0xA260, 0xA260, 0xA260 },
  26386. -{ 0xA261, 0xA261, 0xA261 },
  26387. -{ 0xA262, 0xA262, 0xA262 },
  26388. -{ 0xA263, 0xA263, 0xA263 },
  26389. -{ 0xA264, 0xA264, 0xA264 },
  26390. -{ 0xA265, 0xA265, 0xA265 },
  26391. -{ 0xA266, 0xA266, 0xA266 },
  26392. -{ 0xA267, 0xA267, 0xA267 },
  26393. -{ 0xA268, 0xA268, 0xA268 },
  26394. -{ 0xA269, 0xA269, 0xA269 },
  26395. -{ 0xA26A, 0xA26A, 0xA26A },
  26396. -{ 0xA26B, 0xA26B, 0xA26B },
  26397. -{ 0xA26C, 0xA26C, 0xA26C },
  26398. -{ 0xA26D, 0xA26D, 0xA26D },
  26399. -{ 0xA26E, 0xA26E, 0xA26E },
  26400. -{ 0xA26F, 0xA26F, 0xA26F },
  26401. -{ 0xA270, 0xA270, 0xA270 },
  26402. -{ 0xA271, 0xA271, 0xA271 },
  26403. -{ 0xA272, 0xA272, 0xA272 },
  26404. -{ 0xA273, 0xA273, 0xA273 },
  26405. -{ 0xA274, 0xA274, 0xA274 },
  26406. -{ 0xA275, 0xA275, 0xA275 },
  26407. -{ 0xA276, 0xA276, 0xA276 },
  26408. -{ 0xA277, 0xA277, 0xA277 },
  26409. -{ 0xA278, 0xA278, 0xA278 },
  26410. -{ 0xA279, 0xA279, 0xA279 },
  26411. -{ 0xA27A, 0xA27A, 0xA27A },
  26412. -{ 0xA27B, 0xA27B, 0xA27B },
  26413. -{ 0xA27C, 0xA27C, 0xA27C },
  26414. -{ 0xA27D, 0xA27D, 0xA27D },
  26415. -{ 0xA27E, 0xA27E, 0xA27E },
  26416. -{ 0xA27F, 0xA27F, 0xA27F },
  26417. -{ 0xA280, 0xA280, 0xA280 },
  26418. -{ 0xA281, 0xA281, 0xA281 },
  26419. -{ 0xA282, 0xA282, 0xA282 },
  26420. -{ 0xA283, 0xA283, 0xA283 },
  26421. -{ 0xA284, 0xA284, 0xA284 },
  26422. -{ 0xA285, 0xA285, 0xA285 },
  26423. -{ 0xA286, 0xA286, 0xA286 },
  26424. -{ 0xA287, 0xA287, 0xA287 },
  26425. -{ 0xA288, 0xA288, 0xA288 },
  26426. -{ 0xA289, 0xA289, 0xA289 },
  26427. -{ 0xA28A, 0xA28A, 0xA28A },
  26428. -{ 0xA28B, 0xA28B, 0xA28B },
  26429. -{ 0xA28C, 0xA28C, 0xA28C },
  26430. -{ 0xA28D, 0xA28D, 0xA28D },
  26431. -{ 0xA28E, 0xA28E, 0xA28E },
  26432. -{ 0xA28F, 0xA28F, 0xA28F },
  26433. -{ 0xA290, 0xA290, 0xA290 },
  26434. -{ 0xA291, 0xA291, 0xA291 },
  26435. -{ 0xA292, 0xA292, 0xA292 },
  26436. -{ 0xA293, 0xA293, 0xA293 },
  26437. -{ 0xA294, 0xA294, 0xA294 },
  26438. -{ 0xA295, 0xA295, 0xA295 },
  26439. -{ 0xA296, 0xA296, 0xA296 },
  26440. -{ 0xA297, 0xA297, 0xA297 },
  26441. -{ 0xA298, 0xA298, 0xA298 },
  26442. -{ 0xA299, 0xA299, 0xA299 },
  26443. -{ 0xA29A, 0xA29A, 0xA29A },
  26444. -{ 0xA29B, 0xA29B, 0xA29B },
  26445. -{ 0xA29C, 0xA29C, 0xA29C },
  26446. -{ 0xA29D, 0xA29D, 0xA29D },
  26447. -{ 0xA29E, 0xA29E, 0xA29E },
  26448. -{ 0xA29F, 0xA29F, 0xA29F },
  26449. -{ 0xA2A0, 0xA2A0, 0xA2A0 },
  26450. -{ 0xA2A1, 0xA2A1, 0xA2A1 },
  26451. -{ 0xA2A2, 0xA2A2, 0xA2A2 },
  26452. -{ 0xA2A3, 0xA2A3, 0xA2A3 },
  26453. -{ 0xA2A4, 0xA2A4, 0xA2A4 },
  26454. -{ 0xA2A5, 0xA2A5, 0xA2A5 },
  26455. -{ 0xA2A6, 0xA2A6, 0xA2A6 },
  26456. -{ 0xA2A7, 0xA2A7, 0xA2A7 },
  26457. -{ 0xA2A8, 0xA2A8, 0xA2A8 },
  26458. -{ 0xA2A9, 0xA2A9, 0xA2A9 },
  26459. -{ 0xA2AA, 0xA2AA, 0xA2AA },
  26460. -{ 0xA2AB, 0xA2AB, 0xA2AB },
  26461. -{ 0xA2AC, 0xA2AC, 0xA2AC },
  26462. -{ 0xA2AD, 0xA2AD, 0xA2AD },
  26463. -{ 0xA2AE, 0xA2AE, 0xA2AE },
  26464. -{ 0xA2AF, 0xA2AF, 0xA2AF },
  26465. -{ 0xA2B0, 0xA2B0, 0xA2B0 },
  26466. -{ 0xA2B1, 0xA2B1, 0xA2B1 },
  26467. -{ 0xA2B2, 0xA2B2, 0xA2B2 },
  26468. -{ 0xA2B3, 0xA2B3, 0xA2B3 },
  26469. -{ 0xA2B4, 0xA2B4, 0xA2B4 },
  26470. -{ 0xA2B5, 0xA2B5, 0xA2B5 },
  26471. -{ 0xA2B6, 0xA2B6, 0xA2B6 },
  26472. -{ 0xA2B7, 0xA2B7, 0xA2B7 },
  26473. -{ 0xA2B8, 0xA2B8, 0xA2B8 },
  26474. -{ 0xA2B9, 0xA2B9, 0xA2B9 },
  26475. -{ 0xA2BA, 0xA2BA, 0xA2BA },
  26476. -{ 0xA2BB, 0xA2BB, 0xA2BB },
  26477. -{ 0xA2BC, 0xA2BC, 0xA2BC },
  26478. -{ 0xA2BD, 0xA2BD, 0xA2BD },
  26479. -{ 0xA2BE, 0xA2BE, 0xA2BE },
  26480. -{ 0xA2BF, 0xA2BF, 0xA2BF },
  26481. -{ 0xA2C0, 0xA2C0, 0xA2C0 },
  26482. -{ 0xA2C1, 0xA2C1, 0xA2C1 },
  26483. -{ 0xA2C2, 0xA2C2, 0xA2C2 },
  26484. -{ 0xA2C3, 0xA2C3, 0xA2C3 },
  26485. -{ 0xA2C4, 0xA2C4, 0xA2C4 },
  26486. -{ 0xA2C5, 0xA2C5, 0xA2C5 },
  26487. -{ 0xA2C6, 0xA2C6, 0xA2C6 },
  26488. -{ 0xA2C7, 0xA2C7, 0xA2C7 },
  26489. -{ 0xA2C8, 0xA2C8, 0xA2C8 },
  26490. -{ 0xA2C9, 0xA2C9, 0xA2C9 },
  26491. -{ 0xA2CA, 0xA2CA, 0xA2CA },
  26492. -{ 0xA2CB, 0xA2CB, 0xA2CB },
  26493. -{ 0xA2CC, 0xA2CC, 0xA2CC },
  26494. -{ 0xA2CD, 0xA2CD, 0xA2CD },
  26495. -{ 0xA2CE, 0xA2CE, 0xA2CE },
  26496. -{ 0xA2CF, 0xA2CF, 0xA2CF },
  26497. -{ 0xA2D0, 0xA2D0, 0xA2D0 },
  26498. -{ 0xA2D1, 0xA2D1, 0xA2D1 },
  26499. -{ 0xA2D2, 0xA2D2, 0xA2D2 },
  26500. -{ 0xA2D3, 0xA2D3, 0xA2D3 },
  26501. -{ 0xA2D4, 0xA2D4, 0xA2D4 },
  26502. -{ 0xA2D5, 0xA2D5, 0xA2D5 },
  26503. -{ 0xA2D6, 0xA2D6, 0xA2D6 },
  26504. -{ 0xA2D7, 0xA2D7, 0xA2D7 },
  26505. -{ 0xA2D8, 0xA2D8, 0xA2D8 },
  26506. -{ 0xA2D9, 0xA2D9, 0xA2D9 },
  26507. -{ 0xA2DA, 0xA2DA, 0xA2DA },
  26508. -{ 0xA2DB, 0xA2DB, 0xA2DB },
  26509. -{ 0xA2DC, 0xA2DC, 0xA2DC },
  26510. -{ 0xA2DD, 0xA2DD, 0xA2DD },
  26511. -{ 0xA2DE, 0xA2DE, 0xA2DE },
  26512. -{ 0xA2DF, 0xA2DF, 0xA2DF },
  26513. -{ 0xA2E0, 0xA2E0, 0xA2E0 },
  26514. -{ 0xA2E1, 0xA2E1, 0xA2E1 },
  26515. -{ 0xA2E2, 0xA2E2, 0xA2E2 },
  26516. -{ 0xA2E3, 0xA2E3, 0xA2E3 },
  26517. -{ 0xA2E4, 0xA2E4, 0xA2E4 },
  26518. -{ 0xA2E5, 0xA2E5, 0xA2E5 },
  26519. -{ 0xA2E6, 0xA2E6, 0xA2E6 },
  26520. -{ 0xA2E7, 0xA2E7, 0xA2E7 },
  26521. -{ 0xA2E8, 0xA2E8, 0xA2E8 },
  26522. -{ 0xA2E9, 0xA2E9, 0xA2E9 },
  26523. -{ 0xA2EA, 0xA2EA, 0xA2EA },
  26524. -{ 0xA2EB, 0xA2EB, 0xA2EB },
  26525. -{ 0xA2EC, 0xA2EC, 0xA2EC },
  26526. -{ 0xA2ED, 0xA2ED, 0xA2ED },
  26527. -{ 0xA2EE, 0xA2EE, 0xA2EE },
  26528. -{ 0xA2EF, 0xA2EF, 0xA2EF },
  26529. -{ 0xA2F0, 0xA2F0, 0xA2F0 },
  26530. -{ 0xA2F1, 0xA2F1, 0xA2F1 },
  26531. -{ 0xA2F2, 0xA2F2, 0xA2F2 },
  26532. -{ 0xA2F3, 0xA2F3, 0xA2F3 },
  26533. -{ 0xA2F4, 0xA2F4, 0xA2F4 },
  26534. -{ 0xA2F5, 0xA2F5, 0xA2F5 },
  26535. -{ 0xA2F6, 0xA2F6, 0xA2F6 },
  26536. -{ 0xA2F7, 0xA2F7, 0xA2F7 },
  26537. -{ 0xA2F8, 0xA2F8, 0xA2F8 },
  26538. -{ 0xA2F9, 0xA2F9, 0xA2F9 },
  26539. -{ 0xA2FA, 0xA2FA, 0xA2FA },
  26540. -{ 0xA2FB, 0xA2FB, 0xA2FB },
  26541. -{ 0xA2FC, 0xA2FC, 0xA2FC },
  26542. -{ 0xA2FD, 0xA2FD, 0xA2FD },
  26543. -{ 0xA2FE, 0xA2FE, 0xA2FE },
  26544. -{ 0xA2FF, 0xA2FF, 0xA2FF },
  26545. -{ 0xA300, 0xA300, 0xA300 },
  26546. -{ 0xA301, 0xA301, 0xA301 },
  26547. -{ 0xA302, 0xA302, 0xA302 },
  26548. -{ 0xA303, 0xA303, 0xA303 },
  26549. -{ 0xA304, 0xA304, 0xA304 },
  26550. -{ 0xA305, 0xA305, 0xA305 },
  26551. -{ 0xA306, 0xA306, 0xA306 },
  26552. -{ 0xA307, 0xA307, 0xA307 },
  26553. -{ 0xA308, 0xA308, 0xA308 },
  26554. -{ 0xA309, 0xA309, 0xA309 },
  26555. -{ 0xA30A, 0xA30A, 0xA30A },
  26556. -{ 0xA30B, 0xA30B, 0xA30B },
  26557. -{ 0xA30C, 0xA30C, 0xA30C },
  26558. -{ 0xA30D, 0xA30D, 0xA30D },
  26559. -{ 0xA30E, 0xA30E, 0xA30E },
  26560. -{ 0xA30F, 0xA30F, 0xA30F },
  26561. -{ 0xA310, 0xA310, 0xA310 },
  26562. -{ 0xA311, 0xA311, 0xA311 },
  26563. -{ 0xA312, 0xA312, 0xA312 },
  26564. -{ 0xA313, 0xA313, 0xA313 },
  26565. -{ 0xA314, 0xA314, 0xA314 },
  26566. -{ 0xA315, 0xA315, 0xA315 },
  26567. -{ 0xA316, 0xA316, 0xA316 },
  26568. -{ 0xA317, 0xA317, 0xA317 },
  26569. -{ 0xA318, 0xA318, 0xA318 },
  26570. -{ 0xA319, 0xA319, 0xA319 },
  26571. -{ 0xA31A, 0xA31A, 0xA31A },
  26572. -{ 0xA31B, 0xA31B, 0xA31B },
  26573. -{ 0xA31C, 0xA31C, 0xA31C },
  26574. -{ 0xA31D, 0xA31D, 0xA31D },
  26575. -{ 0xA31E, 0xA31E, 0xA31E },
  26576. -{ 0xA31F, 0xA31F, 0xA31F },
  26577. -{ 0xA320, 0xA320, 0xA320 },
  26578. -{ 0xA321, 0xA321, 0xA321 },
  26579. -{ 0xA322, 0xA322, 0xA322 },
  26580. -{ 0xA323, 0xA323, 0xA323 },
  26581. -{ 0xA324, 0xA324, 0xA324 },
  26582. -{ 0xA325, 0xA325, 0xA325 },
  26583. -{ 0xA326, 0xA326, 0xA326 },
  26584. -{ 0xA327, 0xA327, 0xA327 },
  26585. -{ 0xA328, 0xA328, 0xA328 },
  26586. -{ 0xA329, 0xA329, 0xA329 },
  26587. -{ 0xA32A, 0xA32A, 0xA32A },
  26588. -{ 0xA32B, 0xA32B, 0xA32B },
  26589. -{ 0xA32C, 0xA32C, 0xA32C },
  26590. -{ 0xA32D, 0xA32D, 0xA32D },
  26591. -{ 0xA32E, 0xA32E, 0xA32E },
  26592. -{ 0xA32F, 0xA32F, 0xA32F },
  26593. -{ 0xA330, 0xA330, 0xA330 },
  26594. -{ 0xA331, 0xA331, 0xA331 },
  26595. -{ 0xA332, 0xA332, 0xA332 },
  26596. -{ 0xA333, 0xA333, 0xA333 },
  26597. -{ 0xA334, 0xA334, 0xA334 },
  26598. -{ 0xA335, 0xA335, 0xA335 },
  26599. -{ 0xA336, 0xA336, 0xA336 },
  26600. -{ 0xA337, 0xA337, 0xA337 },
  26601. -{ 0xA338, 0xA338, 0xA338 },
  26602. -{ 0xA339, 0xA339, 0xA339 },
  26603. -{ 0xA33A, 0xA33A, 0xA33A },
  26604. -{ 0xA33B, 0xA33B, 0xA33B },
  26605. -{ 0xA33C, 0xA33C, 0xA33C },
  26606. -{ 0xA33D, 0xA33D, 0xA33D },
  26607. -{ 0xA33E, 0xA33E, 0xA33E },
  26608. -{ 0xA33F, 0xA33F, 0xA33F },
  26609. -{ 0xA340, 0xA340, 0xA340 },
  26610. -{ 0xA341, 0xA341, 0xA341 },
  26611. -{ 0xA342, 0xA342, 0xA342 },
  26612. -{ 0xA343, 0xA343, 0xA343 },
  26613. -{ 0xA344, 0xA344, 0xA344 },
  26614. -{ 0xA345, 0xA345, 0xA345 },
  26615. -{ 0xA346, 0xA346, 0xA346 },
  26616. -{ 0xA347, 0xA347, 0xA347 },
  26617. -{ 0xA348, 0xA348, 0xA348 },
  26618. -{ 0xA349, 0xA349, 0xA349 },
  26619. -{ 0xA34A, 0xA34A, 0xA34A },
  26620. -{ 0xA34B, 0xA34B, 0xA34B },
  26621. -{ 0xA34C, 0xA34C, 0xA34C },
  26622. -{ 0xA34D, 0xA34D, 0xA34D },
  26623. -{ 0xA34E, 0xA34E, 0xA34E },
  26624. -{ 0xA34F, 0xA34F, 0xA34F },
  26625. -{ 0xA350, 0xA350, 0xA350 },
  26626. -{ 0xA351, 0xA351, 0xA351 },
  26627. -{ 0xA352, 0xA352, 0xA352 },
  26628. -{ 0xA353, 0xA353, 0xA353 },
  26629. -{ 0xA354, 0xA354, 0xA354 },
  26630. -{ 0xA355, 0xA355, 0xA355 },
  26631. -{ 0xA356, 0xA356, 0xA356 },
  26632. -{ 0xA357, 0xA357, 0xA357 },
  26633. -{ 0xA358, 0xA358, 0xA358 },
  26634. -{ 0xA359, 0xA359, 0xA359 },
  26635. -{ 0xA35A, 0xA35A, 0xA35A },
  26636. -{ 0xA35B, 0xA35B, 0xA35B },
  26637. -{ 0xA35C, 0xA35C, 0xA35C },
  26638. -{ 0xA35D, 0xA35D, 0xA35D },
  26639. -{ 0xA35E, 0xA35E, 0xA35E },
  26640. -{ 0xA35F, 0xA35F, 0xA35F },
  26641. -{ 0xA360, 0xA360, 0xA360 },
  26642. -{ 0xA361, 0xA361, 0xA361 },
  26643. -{ 0xA362, 0xA362, 0xA362 },
  26644. -{ 0xA363, 0xA363, 0xA363 },
  26645. -{ 0xA364, 0xA364, 0xA364 },
  26646. -{ 0xA365, 0xA365, 0xA365 },
  26647. -{ 0xA366, 0xA366, 0xA366 },
  26648. -{ 0xA367, 0xA367, 0xA367 },
  26649. -{ 0xA368, 0xA368, 0xA368 },
  26650. -{ 0xA369, 0xA369, 0xA369 },
  26651. -{ 0xA36A, 0xA36A, 0xA36A },
  26652. -{ 0xA36B, 0xA36B, 0xA36B },
  26653. -{ 0xA36C, 0xA36C, 0xA36C },
  26654. -{ 0xA36D, 0xA36D, 0xA36D },
  26655. -{ 0xA36E, 0xA36E, 0xA36E },
  26656. -{ 0xA36F, 0xA36F, 0xA36F },
  26657. -{ 0xA370, 0xA370, 0xA370 },
  26658. -{ 0xA371, 0xA371, 0xA371 },
  26659. -{ 0xA372, 0xA372, 0xA372 },
  26660. -{ 0xA373, 0xA373, 0xA373 },
  26661. -{ 0xA374, 0xA374, 0xA374 },
  26662. -{ 0xA375, 0xA375, 0xA375 },
  26663. -{ 0xA376, 0xA376, 0xA376 },
  26664. -{ 0xA377, 0xA377, 0xA377 },
  26665. -{ 0xA378, 0xA378, 0xA378 },
  26666. -{ 0xA379, 0xA379, 0xA379 },
  26667. -{ 0xA37A, 0xA37A, 0xA37A },
  26668. -{ 0xA37B, 0xA37B, 0xA37B },
  26669. -{ 0xA37C, 0xA37C, 0xA37C },
  26670. -{ 0xA37D, 0xA37D, 0xA37D },
  26671. -{ 0xA37E, 0xA37E, 0xA37E },
  26672. -{ 0xA37F, 0xA37F, 0xA37F },
  26673. -{ 0xA380, 0xA380, 0xA380 },
  26674. -{ 0xA381, 0xA381, 0xA381 },
  26675. -{ 0xA382, 0xA382, 0xA382 },
  26676. -{ 0xA383, 0xA383, 0xA383 },
  26677. -{ 0xA384, 0xA384, 0xA384 },
  26678. -{ 0xA385, 0xA385, 0xA385 },
  26679. -{ 0xA386, 0xA386, 0xA386 },
  26680. -{ 0xA387, 0xA387, 0xA387 },
  26681. -{ 0xA388, 0xA388, 0xA388 },
  26682. -{ 0xA389, 0xA389, 0xA389 },
  26683. -{ 0xA38A, 0xA38A, 0xA38A },
  26684. -{ 0xA38B, 0xA38B, 0xA38B },
  26685. -{ 0xA38C, 0xA38C, 0xA38C },
  26686. -{ 0xA38D, 0xA38D, 0xA38D },
  26687. -{ 0xA38E, 0xA38E, 0xA38E },
  26688. -{ 0xA38F, 0xA38F, 0xA38F },
  26689. -{ 0xA390, 0xA390, 0xA390 },
  26690. -{ 0xA391, 0xA391, 0xA391 },
  26691. -{ 0xA392, 0xA392, 0xA392 },
  26692. -{ 0xA393, 0xA393, 0xA393 },
  26693. -{ 0xA394, 0xA394, 0xA394 },
  26694. -{ 0xA395, 0xA395, 0xA395 },
  26695. -{ 0xA396, 0xA396, 0xA396 },
  26696. -{ 0xA397, 0xA397, 0xA397 },
  26697. -{ 0xA398, 0xA398, 0xA398 },
  26698. -{ 0xA399, 0xA399, 0xA399 },
  26699. -{ 0xA39A, 0xA39A, 0xA39A },
  26700. -{ 0xA39B, 0xA39B, 0xA39B },
  26701. -{ 0xA39C, 0xA39C, 0xA39C },
  26702. -{ 0xA39D, 0xA39D, 0xA39D },
  26703. -{ 0xA39E, 0xA39E, 0xA39E },
  26704. -{ 0xA39F, 0xA39F, 0xA39F },
  26705. -{ 0xA3A0, 0xA3A0, 0xA3A0 },
  26706. -{ 0xA3A1, 0xA3A1, 0xA3A1 },
  26707. -{ 0xA3A2, 0xA3A2, 0xA3A2 },
  26708. -{ 0xA3A3, 0xA3A3, 0xA3A3 },
  26709. -{ 0xA3A4, 0xA3A4, 0xA3A4 },
  26710. -{ 0xA3A5, 0xA3A5, 0xA3A5 },
  26711. -{ 0xA3A6, 0xA3A6, 0xA3A6 },
  26712. -{ 0xA3A7, 0xA3A7, 0xA3A7 },
  26713. -{ 0xA3A8, 0xA3A8, 0xA3A8 },
  26714. -{ 0xA3A9, 0xA3A9, 0xA3A9 },
  26715. -{ 0xA3AA, 0xA3AA, 0xA3AA },
  26716. -{ 0xA3AB, 0xA3AB, 0xA3AB },
  26717. -{ 0xA3AC, 0xA3AC, 0xA3AC },
  26718. -{ 0xA3AD, 0xA3AD, 0xA3AD },
  26719. -{ 0xA3AE, 0xA3AE, 0xA3AE },
  26720. -{ 0xA3AF, 0xA3AF, 0xA3AF },
  26721. -{ 0xA3B0, 0xA3B0, 0xA3B0 },
  26722. -{ 0xA3B1, 0xA3B1, 0xA3B1 },
  26723. -{ 0xA3B2, 0xA3B2, 0xA3B2 },
  26724. -{ 0xA3B3, 0xA3B3, 0xA3B3 },
  26725. -{ 0xA3B4, 0xA3B4, 0xA3B4 },
  26726. -{ 0xA3B5, 0xA3B5, 0xA3B5 },
  26727. -{ 0xA3B6, 0xA3B6, 0xA3B6 },
  26728. -{ 0xA3B7, 0xA3B7, 0xA3B7 },
  26729. -{ 0xA3B8, 0xA3B8, 0xA3B8 },
  26730. -{ 0xA3B9, 0xA3B9, 0xA3B9 },
  26731. -{ 0xA3BA, 0xA3BA, 0xA3BA },
  26732. -{ 0xA3BB, 0xA3BB, 0xA3BB },
  26733. -{ 0xA3BC, 0xA3BC, 0xA3BC },
  26734. -{ 0xA3BD, 0xA3BD, 0xA3BD },
  26735. -{ 0xA3BE, 0xA3BE, 0xA3BE },
  26736. -{ 0xA3BF, 0xA3BF, 0xA3BF },
  26737. -{ 0xA3C0, 0xA3C0, 0xA3C0 },
  26738. -{ 0xA3C1, 0xA3C1, 0xA3C1 },
  26739. -{ 0xA3C2, 0xA3C2, 0xA3C2 },
  26740. -{ 0xA3C3, 0xA3C3, 0xA3C3 },
  26741. -{ 0xA3C4, 0xA3C4, 0xA3C4 },
  26742. -{ 0xA3C5, 0xA3C5, 0xA3C5 },
  26743. -{ 0xA3C6, 0xA3C6, 0xA3C6 },
  26744. -{ 0xA3C7, 0xA3C7, 0xA3C7 },
  26745. -{ 0xA3C8, 0xA3C8, 0xA3C8 },
  26746. -{ 0xA3C9, 0xA3C9, 0xA3C9 },
  26747. -{ 0xA3CA, 0xA3CA, 0xA3CA },
  26748. -{ 0xA3CB, 0xA3CB, 0xA3CB },
  26749. -{ 0xA3CC, 0xA3CC, 0xA3CC },
  26750. -{ 0xA3CD, 0xA3CD, 0xA3CD },
  26751. -{ 0xA3CE, 0xA3CE, 0xA3CE },
  26752. -{ 0xA3CF, 0xA3CF, 0xA3CF },
  26753. -{ 0xA3D0, 0xA3D0, 0xA3D0 },
  26754. -{ 0xA3D1, 0xA3D1, 0xA3D1 },
  26755. -{ 0xA3D2, 0xA3D2, 0xA3D2 },
  26756. -{ 0xA3D3, 0xA3D3, 0xA3D3 },
  26757. -{ 0xA3D4, 0xA3D4, 0xA3D4 },
  26758. -{ 0xA3D5, 0xA3D5, 0xA3D5 },
  26759. -{ 0xA3D6, 0xA3D6, 0xA3D6 },
  26760. -{ 0xA3D7, 0xA3D7, 0xA3D7 },
  26761. -{ 0xA3D8, 0xA3D8, 0xA3D8 },
  26762. -{ 0xA3D9, 0xA3D9, 0xA3D9 },
  26763. -{ 0xA3DA, 0xA3DA, 0xA3DA },
  26764. -{ 0xA3DB, 0xA3DB, 0xA3DB },
  26765. -{ 0xA3DC, 0xA3DC, 0xA3DC },
  26766. -{ 0xA3DD, 0xA3DD, 0xA3DD },
  26767. -{ 0xA3DE, 0xA3DE, 0xA3DE },
  26768. -{ 0xA3DF, 0xA3DF, 0xA3DF },
  26769. -{ 0xA3E0, 0xA3E0, 0xA3E0 },
  26770. -{ 0xA3E1, 0xA3E1, 0xA3E1 },
  26771. -{ 0xA3E2, 0xA3E2, 0xA3E2 },
  26772. -{ 0xA3E3, 0xA3E3, 0xA3E3 },
  26773. -{ 0xA3E4, 0xA3E4, 0xA3E4 },
  26774. -{ 0xA3E5, 0xA3E5, 0xA3E5 },
  26775. -{ 0xA3E6, 0xA3E6, 0xA3E6 },
  26776. -{ 0xA3E7, 0xA3E7, 0xA3E7 },
  26777. -{ 0xA3E8, 0xA3E8, 0xA3E8 },
  26778. -{ 0xA3E9, 0xA3E9, 0xA3E9 },
  26779. -{ 0xA3EA, 0xA3EA, 0xA3EA },
  26780. -{ 0xA3EB, 0xA3EB, 0xA3EB },
  26781. -{ 0xA3EC, 0xA3EC, 0xA3EC },
  26782. -{ 0xA3ED, 0xA3ED, 0xA3ED },
  26783. -{ 0xA3EE, 0xA3EE, 0xA3EE },
  26784. -{ 0xA3EF, 0xA3EF, 0xA3EF },
  26785. -{ 0xA3F0, 0xA3F0, 0xA3F0 },
  26786. -{ 0xA3F1, 0xA3F1, 0xA3F1 },
  26787. -{ 0xA3F2, 0xA3F2, 0xA3F2 },
  26788. -{ 0xA3F3, 0xA3F3, 0xA3F3 },
  26789. -{ 0xA3F4, 0xA3F4, 0xA3F4 },
  26790. -{ 0xA3F5, 0xA3F5, 0xA3F5 },
  26791. -{ 0xA3F6, 0xA3F6, 0xA3F6 },
  26792. -{ 0xA3F7, 0xA3F7, 0xA3F7 },
  26793. -{ 0xA3F8, 0xA3F8, 0xA3F8 },
  26794. -{ 0xA3F9, 0xA3F9, 0xA3F9 },
  26795. -{ 0xA3FA, 0xA3FA, 0xA3FA },
  26796. -{ 0xA3FB, 0xA3FB, 0xA3FB },
  26797. -{ 0xA3FC, 0xA3FC, 0xA3FC },
  26798. -{ 0xA3FD, 0xA3FD, 0xA3FD },
  26799. -{ 0xA3FE, 0xA3FE, 0xA3FE },
  26800. -{ 0xA3FF, 0xA3FF, 0xA3FF },
  26801. -{ 0xA400, 0xA400, 0xA400 },
  26802. -{ 0xA401, 0xA401, 0xA401 },
  26803. -{ 0xA402, 0xA402, 0xA402 },
  26804. -{ 0xA403, 0xA403, 0xA403 },
  26805. -{ 0xA404, 0xA404, 0xA404 },
  26806. -{ 0xA405, 0xA405, 0xA405 },
  26807. -{ 0xA406, 0xA406, 0xA406 },
  26808. -{ 0xA407, 0xA407, 0xA407 },
  26809. -{ 0xA408, 0xA408, 0xA408 },
  26810. -{ 0xA409, 0xA409, 0xA409 },
  26811. -{ 0xA40A, 0xA40A, 0xA40A },
  26812. -{ 0xA40B, 0xA40B, 0xA40B },
  26813. -{ 0xA40C, 0xA40C, 0xA40C },
  26814. -{ 0xA40D, 0xA40D, 0xA40D },
  26815. -{ 0xA40E, 0xA40E, 0xA40E },
  26816. -{ 0xA40F, 0xA40F, 0xA40F },
  26817. -{ 0xA410, 0xA410, 0xA410 },
  26818. -{ 0xA411, 0xA411, 0xA411 },
  26819. -{ 0xA412, 0xA412, 0xA412 },
  26820. -{ 0xA413, 0xA413, 0xA413 },
  26821. -{ 0xA414, 0xA414, 0xA414 },
  26822. -{ 0xA415, 0xA415, 0xA415 },
  26823. -{ 0xA416, 0xA416, 0xA416 },
  26824. -{ 0xA417, 0xA417, 0xA417 },
  26825. -{ 0xA418, 0xA418, 0xA418 },
  26826. -{ 0xA419, 0xA419, 0xA419 },
  26827. -{ 0xA41A, 0xA41A, 0xA41A },
  26828. -{ 0xA41B, 0xA41B, 0xA41B },
  26829. -{ 0xA41C, 0xA41C, 0xA41C },
  26830. -{ 0xA41D, 0xA41D, 0xA41D },
  26831. -{ 0xA41E, 0xA41E, 0xA41E },
  26832. -{ 0xA41F, 0xA41F, 0xA41F },
  26833. -{ 0xA420, 0xA420, 0xA420 },
  26834. -{ 0xA421, 0xA421, 0xA421 },
  26835. -{ 0xA422, 0xA422, 0xA422 },
  26836. -{ 0xA423, 0xA423, 0xA423 },
  26837. -{ 0xA424, 0xA424, 0xA424 },
  26838. -{ 0xA425, 0xA425, 0xA425 },
  26839. -{ 0xA426, 0xA426, 0xA426 },
  26840. -{ 0xA427, 0xA427, 0xA427 },
  26841. -{ 0xA428, 0xA428, 0xA428 },
  26842. -{ 0xA429, 0xA429, 0xA429 },
  26843. -{ 0xA42A, 0xA42A, 0xA42A },
  26844. -{ 0xA42B, 0xA42B, 0xA42B },
  26845. -{ 0xA42C, 0xA42C, 0xA42C },
  26846. -{ 0xA42D, 0xA42D, 0xA42D },
  26847. -{ 0xA42E, 0xA42E, 0xA42E },
  26848. -{ 0xA42F, 0xA42F, 0xA42F },
  26849. -{ 0xA430, 0xA430, 0xA430 },
  26850. -{ 0xA431, 0xA431, 0xA431 },
  26851. -{ 0xA432, 0xA432, 0xA432 },
  26852. -{ 0xA433, 0xA433, 0xA433 },
  26853. -{ 0xA434, 0xA434, 0xA434 },
  26854. -{ 0xA435, 0xA435, 0xA435 },
  26855. -{ 0xA436, 0xA436, 0xA436 },
  26856. -{ 0xA437, 0xA437, 0xA437 },
  26857. -{ 0xA438, 0xA438, 0xA438 },
  26858. -{ 0xA439, 0xA439, 0xA439 },
  26859. -{ 0xA43A, 0xA43A, 0xA43A },
  26860. -{ 0xA43B, 0xA43B, 0xA43B },
  26861. -{ 0xA43C, 0xA43C, 0xA43C },
  26862. -{ 0xA43D, 0xA43D, 0xA43D },
  26863. -{ 0xA43E, 0xA43E, 0xA43E },
  26864. -{ 0xA43F, 0xA43F, 0xA43F },
  26865. -{ 0xA440, 0xA440, 0xA440 },
  26866. -{ 0xA441, 0xA441, 0xA441 },
  26867. -{ 0xA442, 0xA442, 0xA442 },
  26868. -{ 0xA443, 0xA443, 0xA443 },
  26869. -{ 0xA444, 0xA444, 0xA444 },
  26870. -{ 0xA445, 0xA445, 0xA445 },
  26871. -{ 0xA446, 0xA446, 0xA446 },
  26872. -{ 0xA447, 0xA447, 0xA447 },
  26873. -{ 0xA448, 0xA448, 0xA448 },
  26874. -{ 0xA449, 0xA449, 0xA449 },
  26875. -{ 0xA44A, 0xA44A, 0xA44A },
  26876. -{ 0xA44B, 0xA44B, 0xA44B },
  26877. -{ 0xA44C, 0xA44C, 0xA44C },
  26878. -{ 0xA44D, 0xA44D, 0xA44D },
  26879. -{ 0xA44E, 0xA44E, 0xA44E },
  26880. -{ 0xA44F, 0xA44F, 0xA44F },
  26881. -{ 0xA450, 0xA450, 0xA450 },
  26882. -{ 0xA451, 0xA451, 0xA451 },
  26883. -{ 0xA452, 0xA452, 0xA452 },
  26884. -{ 0xA453, 0xA453, 0xA453 },
  26885. -{ 0xA454, 0xA454, 0xA454 },
  26886. -{ 0xA455, 0xA455, 0xA455 },
  26887. -{ 0xA456, 0xA456, 0xA456 },
  26888. -{ 0xA457, 0xA457, 0xA457 },
  26889. -{ 0xA458, 0xA458, 0xA458 },
  26890. -{ 0xA459, 0xA459, 0xA459 },
  26891. -{ 0xA45A, 0xA45A, 0xA45A },
  26892. -{ 0xA45B, 0xA45B, 0xA45B },
  26893. -{ 0xA45C, 0xA45C, 0xA45C },
  26894. -{ 0xA45D, 0xA45D, 0xA45D },
  26895. -{ 0xA45E, 0xA45E, 0xA45E },
  26896. -{ 0xA45F, 0xA45F, 0xA45F },
  26897. -{ 0xA460, 0xA460, 0xA460 },
  26898. -{ 0xA461, 0xA461, 0xA461 },
  26899. -{ 0xA462, 0xA462, 0xA462 },
  26900. -{ 0xA463, 0xA463, 0xA463 },
  26901. -{ 0xA464, 0xA464, 0xA464 },
  26902. -{ 0xA465, 0xA465, 0xA465 },
  26903. -{ 0xA466, 0xA466, 0xA466 },
  26904. -{ 0xA467, 0xA467, 0xA467 },
  26905. -{ 0xA468, 0xA468, 0xA468 },
  26906. -{ 0xA469, 0xA469, 0xA469 },
  26907. -{ 0xA46A, 0xA46A, 0xA46A },
  26908. -{ 0xA46B, 0xA46B, 0xA46B },
  26909. -{ 0xA46C, 0xA46C, 0xA46C },
  26910. -{ 0xA46D, 0xA46D, 0xA46D },
  26911. -{ 0xA46E, 0xA46E, 0xA46E },
  26912. -{ 0xA46F, 0xA46F, 0xA46F },
  26913. -{ 0xA470, 0xA470, 0xA470 },
  26914. -{ 0xA471, 0xA471, 0xA471 },
  26915. -{ 0xA472, 0xA472, 0xA472 },
  26916. -{ 0xA473, 0xA473, 0xA473 },
  26917. -{ 0xA474, 0xA474, 0xA474 },
  26918. -{ 0xA475, 0xA475, 0xA475 },
  26919. -{ 0xA476, 0xA476, 0xA476 },
  26920. -{ 0xA477, 0xA477, 0xA477 },
  26921. -{ 0xA478, 0xA478, 0xA478 },
  26922. -{ 0xA479, 0xA479, 0xA479 },
  26923. -{ 0xA47A, 0xA47A, 0xA47A },
  26924. -{ 0xA47B, 0xA47B, 0xA47B },
  26925. -{ 0xA47C, 0xA47C, 0xA47C },
  26926. -{ 0xA47D, 0xA47D, 0xA47D },
  26927. -{ 0xA47E, 0xA47E, 0xA47E },
  26928. -{ 0xA47F, 0xA47F, 0xA47F },
  26929. -{ 0xA480, 0xA480, 0xA480 },
  26930. -{ 0xA481, 0xA481, 0xA481 },
  26931. -{ 0xA482, 0xA482, 0xA482 },
  26932. -{ 0xA483, 0xA483, 0xA483 },
  26933. -{ 0xA484, 0xA484, 0xA484 },
  26934. -{ 0xA485, 0xA485, 0xA485 },
  26935. -{ 0xA486, 0xA486, 0xA486 },
  26936. -{ 0xA487, 0xA487, 0xA487 },
  26937. -{ 0xA488, 0xA488, 0xA488 },
  26938. -{ 0xA489, 0xA489, 0xA489 },
  26939. -{ 0xA48A, 0xA48A, 0xA48A },
  26940. -{ 0xA48B, 0xA48B, 0xA48B },
  26941. -{ 0xA48C, 0xA48C, 0xA48C },
  26942. -{ 0xA800, 0xA800, 0xA800 },
  26943. -{ 0xA801, 0xA801, 0xA801 },
  26944. -{ 0xA803, 0xA803, 0xA803 },
  26945. -{ 0xA804, 0xA804, 0xA804 },
  26946. -{ 0xA805, 0xA805, 0xA805 },
  26947. -{ 0xA806, 0xA806, 0xA806 },
  26948. -{ 0xA807, 0xA807, 0xA807 },
  26949. -{ 0xA808, 0xA808, 0xA808 },
  26950. -{ 0xA809, 0xA809, 0xA809 },
  26951. -{ 0xA80A, 0xA80A, 0xA80A },
  26952. -{ 0xA80B, 0xA80B, 0xA80B },
  26953. -{ 0xA80C, 0xA80C, 0xA80C },
  26954. -{ 0xA80D, 0xA80D, 0xA80D },
  26955. -{ 0xA80E, 0xA80E, 0xA80E },
  26956. -{ 0xA80F, 0xA80F, 0xA80F },
  26957. -{ 0xA810, 0xA810, 0xA810 },
  26958. -{ 0xA811, 0xA811, 0xA811 },
  26959. -{ 0xA812, 0xA812, 0xA812 },
  26960. -{ 0xA813, 0xA813, 0xA813 },
  26961. -{ 0xA814, 0xA814, 0xA814 },
  26962. -{ 0xA815, 0xA815, 0xA815 },
  26963. -{ 0xA816, 0xA816, 0xA816 },
  26964. -{ 0xA817, 0xA817, 0xA817 },
  26965. -{ 0xA818, 0xA818, 0xA818 },
  26966. -{ 0xA819, 0xA819, 0xA819 },
  26967. -{ 0xA81A, 0xA81A, 0xA81A },
  26968. -{ 0xA81B, 0xA81B, 0xA81B },
  26969. -{ 0xA81C, 0xA81C, 0xA81C },
  26970. -{ 0xA81D, 0xA81D, 0xA81D },
  26971. -{ 0xA81E, 0xA81E, 0xA81E },
  26972. -{ 0xA81F, 0xA81F, 0xA81F },
  26973. -{ 0xA820, 0xA820, 0xA820 },
  26974. -{ 0xA821, 0xA821, 0xA821 },
  26975. -{ 0xA822, 0xA822, 0xA822 },
  26976. -{ 0xA825, 0xA825, 0xA825 },
  26977. -{ 0xA826, 0xA826, 0xA826 },
  26978. -{ 0xAC00, 0xAC00, 0xAC00 },
  26979. -{ 0xAC01, 0xAC01, 0xAC01 },
  26980. -{ 0xAC02, 0xAC02, 0xAC02 },
  26981. -{ 0xAC03, 0xAC03, 0xAC03 },
  26982. -{ 0xAC04, 0xAC04, 0xAC04 },
  26983. -{ 0xAC05, 0xAC05, 0xAC05 },
  26984. -{ 0xAC06, 0xAC06, 0xAC06 },
  26985. -{ 0xAC07, 0xAC07, 0xAC07 },
  26986. -{ 0xAC08, 0xAC08, 0xAC08 },
  26987. -{ 0xAC09, 0xAC09, 0xAC09 },
  26988. -{ 0xAC0A, 0xAC0A, 0xAC0A },
  26989. -{ 0xAC0B, 0xAC0B, 0xAC0B },
  26990. -{ 0xAC0C, 0xAC0C, 0xAC0C },
  26991. -{ 0xAC0D, 0xAC0D, 0xAC0D },
  26992. -{ 0xAC0E, 0xAC0E, 0xAC0E },
  26993. -{ 0xAC0F, 0xAC0F, 0xAC0F },
  26994. -{ 0xAC10, 0xAC10, 0xAC10 },
  26995. -{ 0xAC11, 0xAC11, 0xAC11 },
  26996. -{ 0xAC12, 0xAC12, 0xAC12 },
  26997. -{ 0xAC13, 0xAC13, 0xAC13 },
  26998. -{ 0xAC14, 0xAC14, 0xAC14 },
  26999. -{ 0xAC15, 0xAC15, 0xAC15 },
  27000. -{ 0xAC16, 0xAC16, 0xAC16 },
  27001. -{ 0xAC17, 0xAC17, 0xAC17 },
  27002. -{ 0xAC18, 0xAC18, 0xAC18 },
  27003. -{ 0xAC19, 0xAC19, 0xAC19 },
  27004. -{ 0xAC1A, 0xAC1A, 0xAC1A },
  27005. -{ 0xAC1B, 0xAC1B, 0xAC1B },
  27006. -{ 0xAC1C, 0xAC1C, 0xAC1C },
  27007. -{ 0xAC1D, 0xAC1D, 0xAC1D },
  27008. -{ 0xAC1E, 0xAC1E, 0xAC1E },
  27009. -{ 0xAC1F, 0xAC1F, 0xAC1F },
  27010. -{ 0xAC20, 0xAC20, 0xAC20 },
  27011. -{ 0xAC21, 0xAC21, 0xAC21 },
  27012. -{ 0xAC22, 0xAC22, 0xAC22 },
  27013. -{ 0xAC23, 0xAC23, 0xAC23 },
  27014. -{ 0xAC24, 0xAC24, 0xAC24 },
  27015. -{ 0xAC25, 0xAC25, 0xAC25 },
  27016. -{ 0xAC26, 0xAC26, 0xAC26 },
  27017. -{ 0xAC27, 0xAC27, 0xAC27 },
  27018. -{ 0xAC28, 0xAC28, 0xAC28 },
  27019. -{ 0xAC29, 0xAC29, 0xAC29 },
  27020. -{ 0xAC2A, 0xAC2A, 0xAC2A },
  27021. -{ 0xAC2B, 0xAC2B, 0xAC2B },
  27022. -{ 0xAC2C, 0xAC2C, 0xAC2C },
  27023. -{ 0xAC2D, 0xAC2D, 0xAC2D },
  27024. -{ 0xAC2E, 0xAC2E, 0xAC2E },
  27025. -{ 0xAC2F, 0xAC2F, 0xAC2F },
  27026. -{ 0xAC30, 0xAC30, 0xAC30 },
  27027. -{ 0xAC31, 0xAC31, 0xAC31 },
  27028. -{ 0xAC32, 0xAC32, 0xAC32 },
  27029. -{ 0xAC33, 0xAC33, 0xAC33 },
  27030. -{ 0xAC34, 0xAC34, 0xAC34 },
  27031. -{ 0xAC35, 0xAC35, 0xAC35 },
  27032. -{ 0xAC36, 0xAC36, 0xAC36 },
  27033. -{ 0xAC37, 0xAC37, 0xAC37 },
  27034. -{ 0xAC38, 0xAC38, 0xAC38 },
  27035. -{ 0xAC39, 0xAC39, 0xAC39 },
  27036. -{ 0xAC3A, 0xAC3A, 0xAC3A },
  27037. -{ 0xAC3B, 0xAC3B, 0xAC3B },
  27038. -{ 0xAC3C, 0xAC3C, 0xAC3C },
  27039. -{ 0xAC3D, 0xAC3D, 0xAC3D },
  27040. -{ 0xAC3E, 0xAC3E, 0xAC3E },
  27041. -{ 0xAC3F, 0xAC3F, 0xAC3F },
  27042. -{ 0xAC40, 0xAC40, 0xAC40 },
  27043. -{ 0xAC41, 0xAC41, 0xAC41 },
  27044. -{ 0xAC42, 0xAC42, 0xAC42 },
  27045. -{ 0xAC43, 0xAC43, 0xAC43 },
  27046. -{ 0xAC44, 0xAC44, 0xAC44 },
  27047. -{ 0xAC45, 0xAC45, 0xAC45 },
  27048. -{ 0xAC46, 0xAC46, 0xAC46 },
  27049. -{ 0xAC47, 0xAC47, 0xAC47 },
  27050. -{ 0xAC48, 0xAC48, 0xAC48 },
  27051. -{ 0xAC49, 0xAC49, 0xAC49 },
  27052. -{ 0xAC4A, 0xAC4A, 0xAC4A },
  27053. -{ 0xAC4B, 0xAC4B, 0xAC4B },
  27054. -{ 0xAC4C, 0xAC4C, 0xAC4C },
  27055. -{ 0xAC4D, 0xAC4D, 0xAC4D },
  27056. -{ 0xAC4E, 0xAC4E, 0xAC4E },
  27057. -{ 0xAC4F, 0xAC4F, 0xAC4F },
  27058. -{ 0xAC50, 0xAC50, 0xAC50 },
  27059. -{ 0xAC51, 0xAC51, 0xAC51 },
  27060. -{ 0xAC52, 0xAC52, 0xAC52 },
  27061. -{ 0xAC53, 0xAC53, 0xAC53 },
  27062. -{ 0xAC54, 0xAC54, 0xAC54 },
  27063. -{ 0xAC55, 0xAC55, 0xAC55 },
  27064. -{ 0xAC56, 0xAC56, 0xAC56 },
  27065. -{ 0xAC57, 0xAC57, 0xAC57 },
  27066. -{ 0xAC58, 0xAC58, 0xAC58 },
  27067. -{ 0xAC59, 0xAC59, 0xAC59 },
  27068. -{ 0xAC5A, 0xAC5A, 0xAC5A },
  27069. -{ 0xAC5B, 0xAC5B, 0xAC5B },
  27070. -{ 0xAC5C, 0xAC5C, 0xAC5C },
  27071. -{ 0xAC5D, 0xAC5D, 0xAC5D },
  27072. -{ 0xAC5E, 0xAC5E, 0xAC5E },
  27073. -{ 0xAC5F, 0xAC5F, 0xAC5F },
  27074. -{ 0xAC60, 0xAC60, 0xAC60 },
  27075. -{ 0xAC61, 0xAC61, 0xAC61 },
  27076. -{ 0xAC62, 0xAC62, 0xAC62 },
  27077. -{ 0xAC63, 0xAC63, 0xAC63 },
  27078. -{ 0xAC64, 0xAC64, 0xAC64 },
  27079. -{ 0xAC65, 0xAC65, 0xAC65 },
  27080. -{ 0xAC66, 0xAC66, 0xAC66 },
  27081. -{ 0xAC67, 0xAC67, 0xAC67 },
  27082. -{ 0xAC68, 0xAC68, 0xAC68 },
  27083. -{ 0xAC69, 0xAC69, 0xAC69 },
  27084. -{ 0xAC6A, 0xAC6A, 0xAC6A },
  27085. -{ 0xAC6B, 0xAC6B, 0xAC6B },
  27086. -{ 0xAC6C, 0xAC6C, 0xAC6C },
  27087. -{ 0xAC6D, 0xAC6D, 0xAC6D },
  27088. -{ 0xAC6E, 0xAC6E, 0xAC6E },
  27089. -{ 0xAC6F, 0xAC6F, 0xAC6F },
  27090. -{ 0xAC70, 0xAC70, 0xAC70 },
  27091. -{ 0xAC71, 0xAC71, 0xAC71 },
  27092. -{ 0xAC72, 0xAC72, 0xAC72 },
  27093. -{ 0xAC73, 0xAC73, 0xAC73 },
  27094. -{ 0xAC74, 0xAC74, 0xAC74 },
  27095. -{ 0xAC75, 0xAC75, 0xAC75 },
  27096. -{ 0xAC76, 0xAC76, 0xAC76 },
  27097. -{ 0xAC77, 0xAC77, 0xAC77 },
  27098. -{ 0xAC78, 0xAC78, 0xAC78 },
  27099. -{ 0xAC79, 0xAC79, 0xAC79 },
  27100. -{ 0xAC7A, 0xAC7A, 0xAC7A },
  27101. -{ 0xAC7B, 0xAC7B, 0xAC7B },
  27102. -{ 0xAC7C, 0xAC7C, 0xAC7C },
  27103. -{ 0xAC7D, 0xAC7D, 0xAC7D },
  27104. -{ 0xAC7E, 0xAC7E, 0xAC7E },
  27105. -{ 0xAC7F, 0xAC7F, 0xAC7F },
  27106. -{ 0xAC80, 0xAC80, 0xAC80 },
  27107. -{ 0xAC81, 0xAC81, 0xAC81 },
  27108. -{ 0xAC82, 0xAC82, 0xAC82 },
  27109. -{ 0xAC83, 0xAC83, 0xAC83 },
  27110. -{ 0xAC84, 0xAC84, 0xAC84 },
  27111. -{ 0xAC85, 0xAC85, 0xAC85 },
  27112. -{ 0xAC86, 0xAC86, 0xAC86 },
  27113. -{ 0xAC87, 0xAC87, 0xAC87 },
  27114. -{ 0xAC88, 0xAC88, 0xAC88 },
  27115. -{ 0xAC89, 0xAC89, 0xAC89 },
  27116. -{ 0xAC8A, 0xAC8A, 0xAC8A },
  27117. -{ 0xAC8B, 0xAC8B, 0xAC8B },
  27118. -{ 0xAC8C, 0xAC8C, 0xAC8C },
  27119. -{ 0xAC8D, 0xAC8D, 0xAC8D },
  27120. -{ 0xAC8E, 0xAC8E, 0xAC8E },
  27121. -{ 0xAC8F, 0xAC8F, 0xAC8F },
  27122. -{ 0xAC90, 0xAC90, 0xAC90 },
  27123. -{ 0xAC91, 0xAC91, 0xAC91 },
  27124. -{ 0xAC92, 0xAC92, 0xAC92 },
  27125. -{ 0xAC93, 0xAC93, 0xAC93 },
  27126. -{ 0xAC94, 0xAC94, 0xAC94 },
  27127. -{ 0xAC95, 0xAC95, 0xAC95 },
  27128. -{ 0xAC96, 0xAC96, 0xAC96 },
  27129. -{ 0xAC97, 0xAC97, 0xAC97 },
  27130. -{ 0xAC98, 0xAC98, 0xAC98 },
  27131. -{ 0xAC99, 0xAC99, 0xAC99 },
  27132. -{ 0xAC9A, 0xAC9A, 0xAC9A },
  27133. -{ 0xAC9B, 0xAC9B, 0xAC9B },
  27134. -{ 0xAC9C, 0xAC9C, 0xAC9C },
  27135. -{ 0xAC9D, 0xAC9D, 0xAC9D },
  27136. -{ 0xAC9E, 0xAC9E, 0xAC9E },
  27137. -{ 0xAC9F, 0xAC9F, 0xAC9F },
  27138. -{ 0xACA0, 0xACA0, 0xACA0 },
  27139. -{ 0xACA1, 0xACA1, 0xACA1 },
  27140. -{ 0xACA2, 0xACA2, 0xACA2 },
  27141. -{ 0xACA3, 0xACA3, 0xACA3 },
  27142. -{ 0xACA4, 0xACA4, 0xACA4 },
  27143. -{ 0xACA5, 0xACA5, 0xACA5 },
  27144. -{ 0xACA6, 0xACA6, 0xACA6 },
  27145. -{ 0xACA7, 0xACA7, 0xACA7 },
  27146. -{ 0xACA8, 0xACA8, 0xACA8 },
  27147. -{ 0xACA9, 0xACA9, 0xACA9 },
  27148. -{ 0xACAA, 0xACAA, 0xACAA },
  27149. -{ 0xACAB, 0xACAB, 0xACAB },
  27150. -{ 0xACAC, 0xACAC, 0xACAC },
  27151. -{ 0xACAD, 0xACAD, 0xACAD },
  27152. -{ 0xACAE, 0xACAE, 0xACAE },
  27153. -{ 0xACAF, 0xACAF, 0xACAF },
  27154. -{ 0xACB0, 0xACB0, 0xACB0 },
  27155. -{ 0xACB1, 0xACB1, 0xACB1 },
  27156. -{ 0xACB2, 0xACB2, 0xACB2 },
  27157. -{ 0xACB3, 0xACB3, 0xACB3 },
  27158. -{ 0xACB4, 0xACB4, 0xACB4 },
  27159. -{ 0xACB5, 0xACB5, 0xACB5 },
  27160. -{ 0xACB6, 0xACB6, 0xACB6 },
  27161. -{ 0xACB7, 0xACB7, 0xACB7 },
  27162. -{ 0xACB8, 0xACB8, 0xACB8 },
  27163. -{ 0xACB9, 0xACB9, 0xACB9 },
  27164. -{ 0xACBA, 0xACBA, 0xACBA },
  27165. -{ 0xACBB, 0xACBB, 0xACBB },
  27166. -{ 0xACBC, 0xACBC, 0xACBC },
  27167. -{ 0xACBD, 0xACBD, 0xACBD },
  27168. -{ 0xACBE, 0xACBE, 0xACBE },
  27169. -{ 0xACBF, 0xACBF, 0xACBF },
  27170. -{ 0xACC0, 0xACC0, 0xACC0 },
  27171. -{ 0xACC1, 0xACC1, 0xACC1 },
  27172. -{ 0xACC2, 0xACC2, 0xACC2 },
  27173. -{ 0xACC3, 0xACC3, 0xACC3 },
  27174. -{ 0xACC4, 0xACC4, 0xACC4 },
  27175. -{ 0xACC5, 0xACC5, 0xACC5 },
  27176. -{ 0xACC6, 0xACC6, 0xACC6 },
  27177. -{ 0xACC7, 0xACC7, 0xACC7 },
  27178. -{ 0xACC8, 0xACC8, 0xACC8 },
  27179. -{ 0xACC9, 0xACC9, 0xACC9 },
  27180. -{ 0xACCA, 0xACCA, 0xACCA },
  27181. -{ 0xACCB, 0xACCB, 0xACCB },
  27182. -{ 0xACCC, 0xACCC, 0xACCC },
  27183. -{ 0xACCD, 0xACCD, 0xACCD },
  27184. -{ 0xACCE, 0xACCE, 0xACCE },
  27185. -{ 0xACCF, 0xACCF, 0xACCF },
  27186. -{ 0xACD0, 0xACD0, 0xACD0 },
  27187. -{ 0xACD1, 0xACD1, 0xACD1 },
  27188. -{ 0xACD2, 0xACD2, 0xACD2 },
  27189. -{ 0xACD3, 0xACD3, 0xACD3 },
  27190. -{ 0xACD4, 0xACD4, 0xACD4 },
  27191. -{ 0xACD5, 0xACD5, 0xACD5 },
  27192. -{ 0xACD6, 0xACD6, 0xACD6 },
  27193. -{ 0xACD7, 0xACD7, 0xACD7 },
  27194. -{ 0xACD8, 0xACD8, 0xACD8 },
  27195. -{ 0xACD9, 0xACD9, 0xACD9 },
  27196. -{ 0xACDA, 0xACDA, 0xACDA },
  27197. -{ 0xACDB, 0xACDB, 0xACDB },
  27198. -{ 0xACDC, 0xACDC, 0xACDC },
  27199. -{ 0xACDD, 0xACDD, 0xACDD },
  27200. -{ 0xACDE, 0xACDE, 0xACDE },
  27201. -{ 0xACDF, 0xACDF, 0xACDF },
  27202. -{ 0xACE0, 0xACE0, 0xACE0 },
  27203. -{ 0xACE1, 0xACE1, 0xACE1 },
  27204. -{ 0xACE2, 0xACE2, 0xACE2 },
  27205. -{ 0xACE3, 0xACE3, 0xACE3 },
  27206. -{ 0xACE4, 0xACE4, 0xACE4 },
  27207. -{ 0xACE5, 0xACE5, 0xACE5 },
  27208. -{ 0xACE6, 0xACE6, 0xACE6 },
  27209. -{ 0xACE7, 0xACE7, 0xACE7 },
  27210. -{ 0xACE8, 0xACE8, 0xACE8 },
  27211. -{ 0xACE9, 0xACE9, 0xACE9 },
  27212. -{ 0xACEA, 0xACEA, 0xACEA },
  27213. -{ 0xACEB, 0xACEB, 0xACEB },
  27214. -{ 0xACEC, 0xACEC, 0xACEC },
  27215. -{ 0xACED, 0xACED, 0xACED },
  27216. -{ 0xACEE, 0xACEE, 0xACEE },
  27217. -{ 0xACEF, 0xACEF, 0xACEF },
  27218. -{ 0xACF0, 0xACF0, 0xACF0 },
  27219. -{ 0xACF1, 0xACF1, 0xACF1 },
  27220. -{ 0xACF2, 0xACF2, 0xACF2 },
  27221. -{ 0xACF3, 0xACF3, 0xACF3 },
  27222. -{ 0xACF4, 0xACF4, 0xACF4 },
  27223. -{ 0xACF5, 0xACF5, 0xACF5 },
  27224. -{ 0xACF6, 0xACF6, 0xACF6 },
  27225. -{ 0xACF7, 0xACF7, 0xACF7 },
  27226. -{ 0xACF8, 0xACF8, 0xACF8 },
  27227. -{ 0xACF9, 0xACF9, 0xACF9 },
  27228. -{ 0xACFA, 0xACFA, 0xACFA },
  27229. -{ 0xACFB, 0xACFB, 0xACFB },
  27230. -{ 0xACFC, 0xACFC, 0xACFC },
  27231. -{ 0xACFD, 0xACFD, 0xACFD },
  27232. -{ 0xACFE, 0xACFE, 0xACFE },
  27233. -{ 0xACFF, 0xACFF, 0xACFF },
  27234. -{ 0xAD00, 0xAD00, 0xAD00 },
  27235. -{ 0xAD01, 0xAD01, 0xAD01 },
  27236. -{ 0xAD02, 0xAD02, 0xAD02 },
  27237. -{ 0xAD03, 0xAD03, 0xAD03 },
  27238. -{ 0xAD04, 0xAD04, 0xAD04 },
  27239. -{ 0xAD05, 0xAD05, 0xAD05 },
  27240. -{ 0xAD06, 0xAD06, 0xAD06 },
  27241. -{ 0xAD07, 0xAD07, 0xAD07 },
  27242. -{ 0xAD08, 0xAD08, 0xAD08 },
  27243. -{ 0xAD09, 0xAD09, 0xAD09 },
  27244. -{ 0xAD0A, 0xAD0A, 0xAD0A },
  27245. -{ 0xAD0B, 0xAD0B, 0xAD0B },
  27246. -{ 0xAD0C, 0xAD0C, 0xAD0C },
  27247. -{ 0xAD0D, 0xAD0D, 0xAD0D },
  27248. -{ 0xAD0E, 0xAD0E, 0xAD0E },
  27249. -{ 0xAD0F, 0xAD0F, 0xAD0F },
  27250. -{ 0xAD10, 0xAD10, 0xAD10 },
  27251. -{ 0xAD11, 0xAD11, 0xAD11 },
  27252. -{ 0xAD12, 0xAD12, 0xAD12 },
  27253. -{ 0xAD13, 0xAD13, 0xAD13 },
  27254. -{ 0xAD14, 0xAD14, 0xAD14 },
  27255. -{ 0xAD15, 0xAD15, 0xAD15 },
  27256. -{ 0xAD16, 0xAD16, 0xAD16 },
  27257. -{ 0xAD17, 0xAD17, 0xAD17 },
  27258. -{ 0xAD18, 0xAD18, 0xAD18 },
  27259. -{ 0xAD19, 0xAD19, 0xAD19 },
  27260. -{ 0xAD1A, 0xAD1A, 0xAD1A },
  27261. -{ 0xAD1B, 0xAD1B, 0xAD1B },
  27262. -{ 0xAD1C, 0xAD1C, 0xAD1C },
  27263. -{ 0xAD1D, 0xAD1D, 0xAD1D },
  27264. -{ 0xAD1E, 0xAD1E, 0xAD1E },
  27265. -{ 0xAD1F, 0xAD1F, 0xAD1F },
  27266. -{ 0xAD20, 0xAD20, 0xAD20 },
  27267. -{ 0xAD21, 0xAD21, 0xAD21 },
  27268. -{ 0xAD22, 0xAD22, 0xAD22 },
  27269. -{ 0xAD23, 0xAD23, 0xAD23 },
  27270. -{ 0xAD24, 0xAD24, 0xAD24 },
  27271. -{ 0xAD25, 0xAD25, 0xAD25 },
  27272. -{ 0xAD26, 0xAD26, 0xAD26 },
  27273. -{ 0xAD27, 0xAD27, 0xAD27 },
  27274. -{ 0xAD28, 0xAD28, 0xAD28 },
  27275. -{ 0xAD29, 0xAD29, 0xAD29 },
  27276. -{ 0xAD2A, 0xAD2A, 0xAD2A },
  27277. -{ 0xAD2B, 0xAD2B, 0xAD2B },
  27278. -{ 0xAD2C, 0xAD2C, 0xAD2C },
  27279. -{ 0xAD2D, 0xAD2D, 0xAD2D },
  27280. -{ 0xAD2E, 0xAD2E, 0xAD2E },
  27281. -{ 0xAD2F, 0xAD2F, 0xAD2F },
  27282. -{ 0xAD30, 0xAD30, 0xAD30 },
  27283. -{ 0xAD31, 0xAD31, 0xAD31 },
  27284. -{ 0xAD32, 0xAD32, 0xAD32 },
  27285. -{ 0xAD33, 0xAD33, 0xAD33 },
  27286. -{ 0xAD34, 0xAD34, 0xAD34 },
  27287. -{ 0xAD35, 0xAD35, 0xAD35 },
  27288. -{ 0xAD36, 0xAD36, 0xAD36 },
  27289. -{ 0xAD37, 0xAD37, 0xAD37 },
  27290. -{ 0xAD38, 0xAD38, 0xAD38 },
  27291. -{ 0xAD39, 0xAD39, 0xAD39 },
  27292. -{ 0xAD3A, 0xAD3A, 0xAD3A },
  27293. -{ 0xAD3B, 0xAD3B, 0xAD3B },
  27294. -{ 0xAD3C, 0xAD3C, 0xAD3C },
  27295. -{ 0xAD3D, 0xAD3D, 0xAD3D },
  27296. -{ 0xAD3E, 0xAD3E, 0xAD3E },
  27297. -{ 0xAD3F, 0xAD3F, 0xAD3F },
  27298. -{ 0xAD40, 0xAD40, 0xAD40 },
  27299. -{ 0xAD41, 0xAD41, 0xAD41 },
  27300. -{ 0xAD42, 0xAD42, 0xAD42 },
  27301. -{ 0xAD43, 0xAD43, 0xAD43 },
  27302. -{ 0xAD44, 0xAD44, 0xAD44 },
  27303. -{ 0xAD45, 0xAD45, 0xAD45 },
  27304. -{ 0xAD46, 0xAD46, 0xAD46 },
  27305. -{ 0xAD47, 0xAD47, 0xAD47 },
  27306. -{ 0xAD48, 0xAD48, 0xAD48 },
  27307. -{ 0xAD49, 0xAD49, 0xAD49 },
  27308. -{ 0xAD4A, 0xAD4A, 0xAD4A },
  27309. -{ 0xAD4B, 0xAD4B, 0xAD4B },
  27310. -{ 0xAD4C, 0xAD4C, 0xAD4C },
  27311. -{ 0xAD4D, 0xAD4D, 0xAD4D },
  27312. -{ 0xAD4E, 0xAD4E, 0xAD4E },
  27313. -{ 0xAD4F, 0xAD4F, 0xAD4F },
  27314. -{ 0xAD50, 0xAD50, 0xAD50 },
  27315. -{ 0xAD51, 0xAD51, 0xAD51 },
  27316. -{ 0xAD52, 0xAD52, 0xAD52 },
  27317. -{ 0xAD53, 0xAD53, 0xAD53 },
  27318. -{ 0xAD54, 0xAD54, 0xAD54 },
  27319. -{ 0xAD55, 0xAD55, 0xAD55 },
  27320. -{ 0xAD56, 0xAD56, 0xAD56 },
  27321. -{ 0xAD57, 0xAD57, 0xAD57 },
  27322. -{ 0xAD58, 0xAD58, 0xAD58 },
  27323. -{ 0xAD59, 0xAD59, 0xAD59 },
  27324. -{ 0xAD5A, 0xAD5A, 0xAD5A },
  27325. -{ 0xAD5B, 0xAD5B, 0xAD5B },
  27326. -{ 0xAD5C, 0xAD5C, 0xAD5C },
  27327. -{ 0xAD5D, 0xAD5D, 0xAD5D },
  27328. -{ 0xAD5E, 0xAD5E, 0xAD5E },
  27329. -{ 0xAD5F, 0xAD5F, 0xAD5F },
  27330. -{ 0xAD60, 0xAD60, 0xAD60 },
  27331. -{ 0xAD61, 0xAD61, 0xAD61 },
  27332. -{ 0xAD62, 0xAD62, 0xAD62 },
  27333. -{ 0xAD63, 0xAD63, 0xAD63 },
  27334. -{ 0xAD64, 0xAD64, 0xAD64 },
  27335. -{ 0xAD65, 0xAD65, 0xAD65 },
  27336. -{ 0xAD66, 0xAD66, 0xAD66 },
  27337. -{ 0xAD67, 0xAD67, 0xAD67 },
  27338. -{ 0xAD68, 0xAD68, 0xAD68 },
  27339. -{ 0xAD69, 0xAD69, 0xAD69 },
  27340. -{ 0xAD6A, 0xAD6A, 0xAD6A },
  27341. -{ 0xAD6B, 0xAD6B, 0xAD6B },
  27342. -{ 0xAD6C, 0xAD6C, 0xAD6C },
  27343. -{ 0xAD6D, 0xAD6D, 0xAD6D },
  27344. -{ 0xAD6E, 0xAD6E, 0xAD6E },
  27345. -{ 0xAD6F, 0xAD6F, 0xAD6F },
  27346. -{ 0xAD70, 0xAD70, 0xAD70 },
  27347. -{ 0xAD71, 0xAD71, 0xAD71 },
  27348. -{ 0xAD72, 0xAD72, 0xAD72 },
  27349. -{ 0xAD73, 0xAD73, 0xAD73 },
  27350. -{ 0xAD74, 0xAD74, 0xAD74 },
  27351. -{ 0xAD75, 0xAD75, 0xAD75 },
  27352. -{ 0xAD76, 0xAD76, 0xAD76 },
  27353. -{ 0xAD77, 0xAD77, 0xAD77 },
  27354. -{ 0xAD78, 0xAD78, 0xAD78 },
  27355. -{ 0xAD79, 0xAD79, 0xAD79 },
  27356. -{ 0xAD7A, 0xAD7A, 0xAD7A },
  27357. -{ 0xAD7B, 0xAD7B, 0xAD7B },
  27358. -{ 0xAD7C, 0xAD7C, 0xAD7C },
  27359. -{ 0xAD7D, 0xAD7D, 0xAD7D },
  27360. -{ 0xAD7E, 0xAD7E, 0xAD7E },
  27361. -{ 0xAD7F, 0xAD7F, 0xAD7F },
  27362. -{ 0xAD80, 0xAD80, 0xAD80 },
  27363. -{ 0xAD81, 0xAD81, 0xAD81 },
  27364. -{ 0xAD82, 0xAD82, 0xAD82 },
  27365. -{ 0xAD83, 0xAD83, 0xAD83 },
  27366. -{ 0xAD84, 0xAD84, 0xAD84 },
  27367. -{ 0xAD85, 0xAD85, 0xAD85 },
  27368. -{ 0xAD86, 0xAD86, 0xAD86 },
  27369. -{ 0xAD87, 0xAD87, 0xAD87 },
  27370. -{ 0xAD88, 0xAD88, 0xAD88 },
  27371. -{ 0xAD89, 0xAD89, 0xAD89 },
  27372. -{ 0xAD8A, 0xAD8A, 0xAD8A },
  27373. -{ 0xAD8B, 0xAD8B, 0xAD8B },
  27374. -{ 0xAD8C, 0xAD8C, 0xAD8C },
  27375. -{ 0xAD8D, 0xAD8D, 0xAD8D },
  27376. -{ 0xAD8E, 0xAD8E, 0xAD8E },
  27377. -{ 0xAD8F, 0xAD8F, 0xAD8F },
  27378. -{ 0xAD90, 0xAD90, 0xAD90 },
  27379. -{ 0xAD91, 0xAD91, 0xAD91 },
  27380. -{ 0xAD92, 0xAD92, 0xAD92 },
  27381. -{ 0xAD93, 0xAD93, 0xAD93 },
  27382. -{ 0xAD94, 0xAD94, 0xAD94 },
  27383. -{ 0xAD95, 0xAD95, 0xAD95 },
  27384. -{ 0xAD96, 0xAD96, 0xAD96 },
  27385. -{ 0xAD97, 0xAD97, 0xAD97 },
  27386. -{ 0xAD98, 0xAD98, 0xAD98 },
  27387. -{ 0xAD99, 0xAD99, 0xAD99 },
  27388. -{ 0xAD9A, 0xAD9A, 0xAD9A },
  27389. -{ 0xAD9B, 0xAD9B, 0xAD9B },
  27390. -{ 0xAD9C, 0xAD9C, 0xAD9C },
  27391. -{ 0xAD9D, 0xAD9D, 0xAD9D },
  27392. -{ 0xAD9E, 0xAD9E, 0xAD9E },
  27393. -{ 0xAD9F, 0xAD9F, 0xAD9F },
  27394. -{ 0xADA0, 0xADA0, 0xADA0 },
  27395. -{ 0xADA1, 0xADA1, 0xADA1 },
  27396. -{ 0xADA2, 0xADA2, 0xADA2 },
  27397. -{ 0xADA3, 0xADA3, 0xADA3 },
  27398. -{ 0xADA4, 0xADA4, 0xADA4 },
  27399. -{ 0xADA5, 0xADA5, 0xADA5 },
  27400. -{ 0xADA6, 0xADA6, 0xADA6 },
  27401. -{ 0xADA7, 0xADA7, 0xADA7 },
  27402. -{ 0xADA8, 0xADA8, 0xADA8 },
  27403. -{ 0xADA9, 0xADA9, 0xADA9 },
  27404. -{ 0xADAA, 0xADAA, 0xADAA },
  27405. -{ 0xADAB, 0xADAB, 0xADAB },
  27406. -{ 0xADAC, 0xADAC, 0xADAC },
  27407. -{ 0xADAD, 0xADAD, 0xADAD },
  27408. -{ 0xADAE, 0xADAE, 0xADAE },
  27409. -{ 0xADAF, 0xADAF, 0xADAF },
  27410. -{ 0xADB0, 0xADB0, 0xADB0 },
  27411. -{ 0xADB1, 0xADB1, 0xADB1 },
  27412. -{ 0xADB2, 0xADB2, 0xADB2 },
  27413. -{ 0xADB3, 0xADB3, 0xADB3 },
  27414. -{ 0xADB4, 0xADB4, 0xADB4 },
  27415. -{ 0xADB5, 0xADB5, 0xADB5 },
  27416. -{ 0xADB6, 0xADB6, 0xADB6 },
  27417. -{ 0xADB7, 0xADB7, 0xADB7 },
  27418. -{ 0xADB8, 0xADB8, 0xADB8 },
  27419. -{ 0xADB9, 0xADB9, 0xADB9 },
  27420. -{ 0xADBA, 0xADBA, 0xADBA },
  27421. -{ 0xADBB, 0xADBB, 0xADBB },
  27422. -{ 0xADBC, 0xADBC, 0xADBC },
  27423. -{ 0xADBD, 0xADBD, 0xADBD },
  27424. -{ 0xADBE, 0xADBE, 0xADBE },
  27425. -{ 0xADBF, 0xADBF, 0xADBF },
  27426. -{ 0xADC0, 0xADC0, 0xADC0 },
  27427. -{ 0xADC1, 0xADC1, 0xADC1 },
  27428. -{ 0xADC2, 0xADC2, 0xADC2 },
  27429. -{ 0xADC3, 0xADC3, 0xADC3 },
  27430. -{ 0xADC4, 0xADC4, 0xADC4 },
  27431. -{ 0xADC5, 0xADC5, 0xADC5 },
  27432. -{ 0xADC6, 0xADC6, 0xADC6 },
  27433. -{ 0xADC7, 0xADC7, 0xADC7 },
  27434. -{ 0xADC8, 0xADC8, 0xADC8 },
  27435. -{ 0xADC9, 0xADC9, 0xADC9 },
  27436. -{ 0xADCA, 0xADCA, 0xADCA },
  27437. -{ 0xADCB, 0xADCB, 0xADCB },
  27438. -{ 0xADCC, 0xADCC, 0xADCC },
  27439. -{ 0xADCD, 0xADCD, 0xADCD },
  27440. -{ 0xADCE, 0xADCE, 0xADCE },
  27441. -{ 0xADCF, 0xADCF, 0xADCF },
  27442. -{ 0xADD0, 0xADD0, 0xADD0 },
  27443. -{ 0xADD1, 0xADD1, 0xADD1 },
  27444. -{ 0xADD2, 0xADD2, 0xADD2 },
  27445. -{ 0xADD3, 0xADD3, 0xADD3 },
  27446. -{ 0xADD4, 0xADD4, 0xADD4 },
  27447. -{ 0xADD5, 0xADD5, 0xADD5 },
  27448. -{ 0xADD6, 0xADD6, 0xADD6 },
  27449. -{ 0xADD7, 0xADD7, 0xADD7 },
  27450. -{ 0xADD8, 0xADD8, 0xADD8 },
  27451. -{ 0xADD9, 0xADD9, 0xADD9 },
  27452. -{ 0xADDA, 0xADDA, 0xADDA },
  27453. -{ 0xADDB, 0xADDB, 0xADDB },
  27454. -{ 0xADDC, 0xADDC, 0xADDC },
  27455. -{ 0xADDD, 0xADDD, 0xADDD },
  27456. -{ 0xADDE, 0xADDE, 0xADDE },
  27457. -{ 0xADDF, 0xADDF, 0xADDF },
  27458. -{ 0xADE0, 0xADE0, 0xADE0 },
  27459. -{ 0xADE1, 0xADE1, 0xADE1 },
  27460. -{ 0xADE2, 0xADE2, 0xADE2 },
  27461. -{ 0xADE3, 0xADE3, 0xADE3 },
  27462. -{ 0xADE4, 0xADE4, 0xADE4 },
  27463. -{ 0xADE5, 0xADE5, 0xADE5 },
  27464. -{ 0xADE6, 0xADE6, 0xADE6 },
  27465. -{ 0xADE7, 0xADE7, 0xADE7 },
  27466. -{ 0xADE8, 0xADE8, 0xADE8 },
  27467. -{ 0xADE9, 0xADE9, 0xADE9 },
  27468. -{ 0xADEA, 0xADEA, 0xADEA },
  27469. -{ 0xADEB, 0xADEB, 0xADEB },
  27470. -{ 0xADEC, 0xADEC, 0xADEC },
  27471. -{ 0xADED, 0xADED, 0xADED },
  27472. -{ 0xADEE, 0xADEE, 0xADEE },
  27473. -{ 0xADEF, 0xADEF, 0xADEF },
  27474. -{ 0xADF0, 0xADF0, 0xADF0 },
  27475. -{ 0xADF1, 0xADF1, 0xADF1 },
  27476. -{ 0xADF2, 0xADF2, 0xADF2 },
  27477. -{ 0xADF3, 0xADF3, 0xADF3 },
  27478. -{ 0xADF4, 0xADF4, 0xADF4 },
  27479. -{ 0xADF5, 0xADF5, 0xADF5 },
  27480. -{ 0xADF6, 0xADF6, 0xADF6 },
  27481. -{ 0xADF7, 0xADF7, 0xADF7 },
  27482. -{ 0xADF8, 0xADF8, 0xADF8 },
  27483. -{ 0xADF9, 0xADF9, 0xADF9 },
  27484. -{ 0xADFA, 0xADFA, 0xADFA },
  27485. -{ 0xADFB, 0xADFB, 0xADFB },
  27486. -{ 0xADFC, 0xADFC, 0xADFC },
  27487. -{ 0xADFD, 0xADFD, 0xADFD },
  27488. -{ 0xADFE, 0xADFE, 0xADFE },
  27489. -{ 0xADFF, 0xADFF, 0xADFF },
  27490. -{ 0xAE00, 0xAE00, 0xAE00 },
  27491. -{ 0xAE01, 0xAE01, 0xAE01 },
  27492. -{ 0xAE02, 0xAE02, 0xAE02 },
  27493. -{ 0xAE03, 0xAE03, 0xAE03 },
  27494. -{ 0xAE04, 0xAE04, 0xAE04 },
  27495. -{ 0xAE05, 0xAE05, 0xAE05 },
  27496. -{ 0xAE06, 0xAE06, 0xAE06 },
  27497. -{ 0xAE07, 0xAE07, 0xAE07 },
  27498. -{ 0xAE08, 0xAE08, 0xAE08 },
  27499. -{ 0xAE09, 0xAE09, 0xAE09 },
  27500. -{ 0xAE0A, 0xAE0A, 0xAE0A },
  27501. -{ 0xAE0B, 0xAE0B, 0xAE0B },
  27502. -{ 0xAE0C, 0xAE0C, 0xAE0C },
  27503. -{ 0xAE0D, 0xAE0D, 0xAE0D },
  27504. -{ 0xAE0E, 0xAE0E, 0xAE0E },
  27505. -{ 0xAE0F, 0xAE0F, 0xAE0F },
  27506. -{ 0xAE10, 0xAE10, 0xAE10 },
  27507. -{ 0xAE11, 0xAE11, 0xAE11 },
  27508. -{ 0xAE12, 0xAE12, 0xAE12 },
  27509. -{ 0xAE13, 0xAE13, 0xAE13 },
  27510. -{ 0xAE14, 0xAE14, 0xAE14 },
  27511. -{ 0xAE15, 0xAE15, 0xAE15 },
  27512. -{ 0xAE16, 0xAE16, 0xAE16 },
  27513. -{ 0xAE17, 0xAE17, 0xAE17 },
  27514. -{ 0xAE18, 0xAE18, 0xAE18 },
  27515. -{ 0xAE19, 0xAE19, 0xAE19 },
  27516. -{ 0xAE1A, 0xAE1A, 0xAE1A },
  27517. -{ 0xAE1B, 0xAE1B, 0xAE1B },
  27518. -{ 0xAE1C, 0xAE1C, 0xAE1C },
  27519. -{ 0xAE1D, 0xAE1D, 0xAE1D },
  27520. -{ 0xAE1E, 0xAE1E, 0xAE1E },
  27521. -{ 0xAE1F, 0xAE1F, 0xAE1F },
  27522. -{ 0xAE20, 0xAE20, 0xAE20 },
  27523. -{ 0xAE21, 0xAE21, 0xAE21 },
  27524. -{ 0xAE22, 0xAE22, 0xAE22 },
  27525. -{ 0xAE23, 0xAE23, 0xAE23 },
  27526. -{ 0xAE24, 0xAE24, 0xAE24 },
  27527. -{ 0xAE25, 0xAE25, 0xAE25 },
  27528. -{ 0xAE26, 0xAE26, 0xAE26 },
  27529. -{ 0xAE27, 0xAE27, 0xAE27 },
  27530. -{ 0xAE28, 0xAE28, 0xAE28 },
  27531. -{ 0xAE29, 0xAE29, 0xAE29 },
  27532. -{ 0xAE2A, 0xAE2A, 0xAE2A },
  27533. -{ 0xAE2B, 0xAE2B, 0xAE2B },
  27534. -{ 0xAE2C, 0xAE2C, 0xAE2C },
  27535. -{ 0xAE2D, 0xAE2D, 0xAE2D },
  27536. -{ 0xAE2E, 0xAE2E, 0xAE2E },
  27537. -{ 0xAE2F, 0xAE2F, 0xAE2F },
  27538. -{ 0xAE30, 0xAE30, 0xAE30 },
  27539. -{ 0xAE31, 0xAE31, 0xAE31 },
  27540. -{ 0xAE32, 0xAE32, 0xAE32 },
  27541. -{ 0xAE33, 0xAE33, 0xAE33 },
  27542. -{ 0xAE34, 0xAE34, 0xAE34 },
  27543. -{ 0xAE35, 0xAE35, 0xAE35 },
  27544. -{ 0xAE36, 0xAE36, 0xAE36 },
  27545. -{ 0xAE37, 0xAE37, 0xAE37 },
  27546. -{ 0xAE38, 0xAE38, 0xAE38 },
  27547. -{ 0xAE39, 0xAE39, 0xAE39 },
  27548. -{ 0xAE3A, 0xAE3A, 0xAE3A },
  27549. -{ 0xAE3B, 0xAE3B, 0xAE3B },
  27550. -{ 0xAE3C, 0xAE3C, 0xAE3C },
  27551. -{ 0xAE3D, 0xAE3D, 0xAE3D },
  27552. -{ 0xAE3E, 0xAE3E, 0xAE3E },
  27553. -{ 0xAE3F, 0xAE3F, 0xAE3F },
  27554. -{ 0xAE40, 0xAE40, 0xAE40 },
  27555. -{ 0xAE41, 0xAE41, 0xAE41 },
  27556. -{ 0xAE42, 0xAE42, 0xAE42 },
  27557. -{ 0xAE43, 0xAE43, 0xAE43 },
  27558. -{ 0xAE44, 0xAE44, 0xAE44 },
  27559. -{ 0xAE45, 0xAE45, 0xAE45 },
  27560. -{ 0xAE46, 0xAE46, 0xAE46 },
  27561. -{ 0xAE47, 0xAE47, 0xAE47 },
  27562. -{ 0xAE48, 0xAE48, 0xAE48 },
  27563. -{ 0xAE49, 0xAE49, 0xAE49 },
  27564. -{ 0xAE4A, 0xAE4A, 0xAE4A },
  27565. -{ 0xAE4B, 0xAE4B, 0xAE4B },
  27566. -{ 0xAE4C, 0xAE4C, 0xAE4C },
  27567. -{ 0xAE4D, 0xAE4D, 0xAE4D },
  27568. -{ 0xAE4E, 0xAE4E, 0xAE4E },
  27569. -{ 0xAE4F, 0xAE4F, 0xAE4F },
  27570. -{ 0xAE50, 0xAE50, 0xAE50 },
  27571. -{ 0xAE51, 0xAE51, 0xAE51 },
  27572. -{ 0xAE52, 0xAE52, 0xAE52 },
  27573. -{ 0xAE53, 0xAE53, 0xAE53 },
  27574. -{ 0xAE54, 0xAE54, 0xAE54 },
  27575. -{ 0xAE55, 0xAE55, 0xAE55 },
  27576. -{ 0xAE56, 0xAE56, 0xAE56 },
  27577. -{ 0xAE57, 0xAE57, 0xAE57 },
  27578. -{ 0xAE58, 0xAE58, 0xAE58 },
  27579. -{ 0xAE59, 0xAE59, 0xAE59 },
  27580. -{ 0xAE5A, 0xAE5A, 0xAE5A },
  27581. -{ 0xAE5B, 0xAE5B, 0xAE5B },
  27582. -{ 0xAE5C, 0xAE5C, 0xAE5C },
  27583. -{ 0xAE5D, 0xAE5D, 0xAE5D },
  27584. -{ 0xAE5E, 0xAE5E, 0xAE5E },
  27585. -{ 0xAE5F, 0xAE5F, 0xAE5F },
  27586. -{ 0xAE60, 0xAE60, 0xAE60 },
  27587. -{ 0xAE61, 0xAE61, 0xAE61 },
  27588. -{ 0xAE62, 0xAE62, 0xAE62 },
  27589. -{ 0xAE63, 0xAE63, 0xAE63 },
  27590. -{ 0xAE64, 0xAE64, 0xAE64 },
  27591. -{ 0xAE65, 0xAE65, 0xAE65 },
  27592. -{ 0xAE66, 0xAE66, 0xAE66 },
  27593. -{ 0xAE67, 0xAE67, 0xAE67 },
  27594. -{ 0xAE68, 0xAE68, 0xAE68 },
  27595. -{ 0xAE69, 0xAE69, 0xAE69 },
  27596. -{ 0xAE6A, 0xAE6A, 0xAE6A },
  27597. -{ 0xAE6B, 0xAE6B, 0xAE6B },
  27598. -{ 0xAE6C, 0xAE6C, 0xAE6C },
  27599. -{ 0xAE6D, 0xAE6D, 0xAE6D },
  27600. -{ 0xAE6E, 0xAE6E, 0xAE6E },
  27601. -{ 0xAE6F, 0xAE6F, 0xAE6F },
  27602. -{ 0xAE70, 0xAE70, 0xAE70 },
  27603. -{ 0xAE71, 0xAE71, 0xAE71 },
  27604. -{ 0xAE72, 0xAE72, 0xAE72 },
  27605. -{ 0xAE73, 0xAE73, 0xAE73 },
  27606. -{ 0xAE74, 0xAE74, 0xAE74 },
  27607. -{ 0xAE75, 0xAE75, 0xAE75 },
  27608. -{ 0xAE76, 0xAE76, 0xAE76 },
  27609. -{ 0xAE77, 0xAE77, 0xAE77 },
  27610. -{ 0xAE78, 0xAE78, 0xAE78 },
  27611. -{ 0xAE79, 0xAE79, 0xAE79 },
  27612. -{ 0xAE7A, 0xAE7A, 0xAE7A },
  27613. -{ 0xAE7B, 0xAE7B, 0xAE7B },
  27614. -{ 0xAE7C, 0xAE7C, 0xAE7C },
  27615. -{ 0xAE7D, 0xAE7D, 0xAE7D },
  27616. -{ 0xAE7E, 0xAE7E, 0xAE7E },
  27617. -{ 0xAE7F, 0xAE7F, 0xAE7F },
  27618. -{ 0xAE80, 0xAE80, 0xAE80 },
  27619. -{ 0xAE81, 0xAE81, 0xAE81 },
  27620. -{ 0xAE82, 0xAE82, 0xAE82 },
  27621. -{ 0xAE83, 0xAE83, 0xAE83 },
  27622. -{ 0xAE84, 0xAE84, 0xAE84 },
  27623. -{ 0xAE85, 0xAE85, 0xAE85 },
  27624. -{ 0xAE86, 0xAE86, 0xAE86 },
  27625. -{ 0xAE87, 0xAE87, 0xAE87 },
  27626. -{ 0xAE88, 0xAE88, 0xAE88 },
  27627. -{ 0xAE89, 0xAE89, 0xAE89 },
  27628. -{ 0xAE8A, 0xAE8A, 0xAE8A },
  27629. -{ 0xAE8B, 0xAE8B, 0xAE8B },
  27630. -{ 0xAE8C, 0xAE8C, 0xAE8C },
  27631. -{ 0xAE8D, 0xAE8D, 0xAE8D },
  27632. -{ 0xAE8E, 0xAE8E, 0xAE8E },
  27633. -{ 0xAE8F, 0xAE8F, 0xAE8F },
  27634. -{ 0xAE90, 0xAE90, 0xAE90 },
  27635. -{ 0xAE91, 0xAE91, 0xAE91 },
  27636. -{ 0xAE92, 0xAE92, 0xAE92 },
  27637. -{ 0xAE93, 0xAE93, 0xAE93 },
  27638. -{ 0xAE94, 0xAE94, 0xAE94 },
  27639. -{ 0xAE95, 0xAE95, 0xAE95 },
  27640. -{ 0xAE96, 0xAE96, 0xAE96 },
  27641. -{ 0xAE97, 0xAE97, 0xAE97 },
  27642. -{ 0xAE98, 0xAE98, 0xAE98 },
  27643. -{ 0xAE99, 0xAE99, 0xAE99 },
  27644. -{ 0xAE9A, 0xAE9A, 0xAE9A },
  27645. -{ 0xAE9B, 0xAE9B, 0xAE9B },
  27646. -{ 0xAE9C, 0xAE9C, 0xAE9C },
  27647. -{ 0xAE9D, 0xAE9D, 0xAE9D },
  27648. -{ 0xAE9E, 0xAE9E, 0xAE9E },
  27649. -{ 0xAE9F, 0xAE9F, 0xAE9F },
  27650. -{ 0xAEA0, 0xAEA0, 0xAEA0 },
  27651. -{ 0xAEA1, 0xAEA1, 0xAEA1 },
  27652. -{ 0xAEA2, 0xAEA2, 0xAEA2 },
  27653. -{ 0xAEA3, 0xAEA3, 0xAEA3 },
  27654. -{ 0xAEA4, 0xAEA4, 0xAEA4 },
  27655. -{ 0xAEA5, 0xAEA5, 0xAEA5 },
  27656. -{ 0xAEA6, 0xAEA6, 0xAEA6 },
  27657. -{ 0xAEA7, 0xAEA7, 0xAEA7 },
  27658. -{ 0xAEA8, 0xAEA8, 0xAEA8 },
  27659. -{ 0xAEA9, 0xAEA9, 0xAEA9 },
  27660. -{ 0xAEAA, 0xAEAA, 0xAEAA },
  27661. -{ 0xAEAB, 0xAEAB, 0xAEAB },
  27662. -{ 0xAEAC, 0xAEAC, 0xAEAC },
  27663. -{ 0xAEAD, 0xAEAD, 0xAEAD },
  27664. -{ 0xAEAE, 0xAEAE, 0xAEAE },
  27665. -{ 0xAEAF, 0xAEAF, 0xAEAF },
  27666. -{ 0xAEB0, 0xAEB0, 0xAEB0 },
  27667. -{ 0xAEB1, 0xAEB1, 0xAEB1 },
  27668. -{ 0xAEB2, 0xAEB2, 0xAEB2 },
  27669. -{ 0xAEB3, 0xAEB3, 0xAEB3 },
  27670. -{ 0xAEB4, 0xAEB4, 0xAEB4 },
  27671. -{ 0xAEB5, 0xAEB5, 0xAEB5 },
  27672. -{ 0xAEB6, 0xAEB6, 0xAEB6 },
  27673. -{ 0xAEB7, 0xAEB7, 0xAEB7 },
  27674. -{ 0xAEB8, 0xAEB8, 0xAEB8 },
  27675. -{ 0xAEB9, 0xAEB9, 0xAEB9 },
  27676. -{ 0xAEBA, 0xAEBA, 0xAEBA },
  27677. -{ 0xAEBB, 0xAEBB, 0xAEBB },
  27678. -{ 0xAEBC, 0xAEBC, 0xAEBC },
  27679. -{ 0xAEBD, 0xAEBD, 0xAEBD },
  27680. -{ 0xAEBE, 0xAEBE, 0xAEBE },
  27681. -{ 0xAEBF, 0xAEBF, 0xAEBF },
  27682. -{ 0xAEC0, 0xAEC0, 0xAEC0 },
  27683. -{ 0xAEC1, 0xAEC1, 0xAEC1 },
  27684. -{ 0xAEC2, 0xAEC2, 0xAEC2 },
  27685. -{ 0xAEC3, 0xAEC3, 0xAEC3 },
  27686. -{ 0xAEC4, 0xAEC4, 0xAEC4 },
  27687. -{ 0xAEC5, 0xAEC5, 0xAEC5 },
  27688. -{ 0xAEC6, 0xAEC6, 0xAEC6 },
  27689. -{ 0xAEC7, 0xAEC7, 0xAEC7 },
  27690. -{ 0xAEC8, 0xAEC8, 0xAEC8 },
  27691. -{ 0xAEC9, 0xAEC9, 0xAEC9 },
  27692. -{ 0xAECA, 0xAECA, 0xAECA },
  27693. -{ 0xAECB, 0xAECB, 0xAECB },
  27694. -{ 0xAECC, 0xAECC, 0xAECC },
  27695. -{ 0xAECD, 0xAECD, 0xAECD },
  27696. -{ 0xAECE, 0xAECE, 0xAECE },
  27697. -{ 0xAECF, 0xAECF, 0xAECF },
  27698. -{ 0xAED0, 0xAED0, 0xAED0 },
  27699. -{ 0xAED1, 0xAED1, 0xAED1 },
  27700. -{ 0xAED2, 0xAED2, 0xAED2 },
  27701. -{ 0xAED3, 0xAED3, 0xAED3 },
  27702. -{ 0xAED4, 0xAED4, 0xAED4 },
  27703. -{ 0xAED5, 0xAED5, 0xAED5 },
  27704. -{ 0xAED6, 0xAED6, 0xAED6 },
  27705. -{ 0xAED7, 0xAED7, 0xAED7 },
  27706. -{ 0xAED8, 0xAED8, 0xAED8 },
  27707. -{ 0xAED9, 0xAED9, 0xAED9 },
  27708. -{ 0xAEDA, 0xAEDA, 0xAEDA },
  27709. -{ 0xAEDB, 0xAEDB, 0xAEDB },
  27710. -{ 0xAEDC, 0xAEDC, 0xAEDC },
  27711. -{ 0xAEDD, 0xAEDD, 0xAEDD },
  27712. -{ 0xAEDE, 0xAEDE, 0xAEDE },
  27713. -{ 0xAEDF, 0xAEDF, 0xAEDF },
  27714. -{ 0xAEE0, 0xAEE0, 0xAEE0 },
  27715. -{ 0xAEE1, 0xAEE1, 0xAEE1 },
  27716. -{ 0xAEE2, 0xAEE2, 0xAEE2 },
  27717. -{ 0xAEE3, 0xAEE3, 0xAEE3 },
  27718. -{ 0xAEE4, 0xAEE4, 0xAEE4 },
  27719. -{ 0xAEE5, 0xAEE5, 0xAEE5 },
  27720. -{ 0xAEE6, 0xAEE6, 0xAEE6 },
  27721. -{ 0xAEE7, 0xAEE7, 0xAEE7 },
  27722. -{ 0xAEE8, 0xAEE8, 0xAEE8 },
  27723. -{ 0xAEE9, 0xAEE9, 0xAEE9 },
  27724. -{ 0xAEEA, 0xAEEA, 0xAEEA },
  27725. -{ 0xAEEB, 0xAEEB, 0xAEEB },
  27726. -{ 0xAEEC, 0xAEEC, 0xAEEC },
  27727. -{ 0xAEED, 0xAEED, 0xAEED },
  27728. -{ 0xAEEE, 0xAEEE, 0xAEEE },
  27729. -{ 0xAEEF, 0xAEEF, 0xAEEF },
  27730. -{ 0xAEF0, 0xAEF0, 0xAEF0 },
  27731. -{ 0xAEF1, 0xAEF1, 0xAEF1 },
  27732. -{ 0xAEF2, 0xAEF2, 0xAEF2 },
  27733. -{ 0xAEF3, 0xAEF3, 0xAEF3 },
  27734. -{ 0xAEF4, 0xAEF4, 0xAEF4 },
  27735. -{ 0xAEF5, 0xAEF5, 0xAEF5 },
  27736. -{ 0xAEF6, 0xAEF6, 0xAEF6 },
  27737. -{ 0xAEF7, 0xAEF7, 0xAEF7 },
  27738. -{ 0xAEF8, 0xAEF8, 0xAEF8 },
  27739. -{ 0xAEF9, 0xAEF9, 0xAEF9 },
  27740. -{ 0xAEFA, 0xAEFA, 0xAEFA },
  27741. -{ 0xAEFB, 0xAEFB, 0xAEFB },
  27742. -{ 0xAEFC, 0xAEFC, 0xAEFC },
  27743. -{ 0xAEFD, 0xAEFD, 0xAEFD },
  27744. -{ 0xAEFE, 0xAEFE, 0xAEFE },
  27745. -{ 0xAEFF, 0xAEFF, 0xAEFF },
  27746. -{ 0xAF00, 0xAF00, 0xAF00 },
  27747. -{ 0xAF01, 0xAF01, 0xAF01 },
  27748. -{ 0xAF02, 0xAF02, 0xAF02 },
  27749. -{ 0xAF03, 0xAF03, 0xAF03 },
  27750. -{ 0xAF04, 0xAF04, 0xAF04 },
  27751. -{ 0xAF05, 0xAF05, 0xAF05 },
  27752. -{ 0xAF06, 0xAF06, 0xAF06 },
  27753. -{ 0xAF07, 0xAF07, 0xAF07 },
  27754. -{ 0xAF08, 0xAF08, 0xAF08 },
  27755. -{ 0xAF09, 0xAF09, 0xAF09 },
  27756. -{ 0xAF0A, 0xAF0A, 0xAF0A },
  27757. -{ 0xAF0B, 0xAF0B, 0xAF0B },
  27758. -{ 0xAF0C, 0xAF0C, 0xAF0C },
  27759. -{ 0xAF0D, 0xAF0D, 0xAF0D },
  27760. -{ 0xAF0E, 0xAF0E, 0xAF0E },
  27761. -{ 0xAF0F, 0xAF0F, 0xAF0F },
  27762. -{ 0xAF10, 0xAF10, 0xAF10 },
  27763. -{ 0xAF11, 0xAF11, 0xAF11 },
  27764. -{ 0xAF12, 0xAF12, 0xAF12 },
  27765. -{ 0xAF13, 0xAF13, 0xAF13 },
  27766. -{ 0xAF14, 0xAF14, 0xAF14 },
  27767. -{ 0xAF15, 0xAF15, 0xAF15 },
  27768. -{ 0xAF16, 0xAF16, 0xAF16 },
  27769. -{ 0xAF17, 0xAF17, 0xAF17 },
  27770. -{ 0xAF18, 0xAF18, 0xAF18 },
  27771. -{ 0xAF19, 0xAF19, 0xAF19 },
  27772. -{ 0xAF1A, 0xAF1A, 0xAF1A },
  27773. -{ 0xAF1B, 0xAF1B, 0xAF1B },
  27774. -{ 0xAF1C, 0xAF1C, 0xAF1C },
  27775. -{ 0xAF1D, 0xAF1D, 0xAF1D },
  27776. -{ 0xAF1E, 0xAF1E, 0xAF1E },
  27777. -{ 0xAF1F, 0xAF1F, 0xAF1F },
  27778. -{ 0xAF20, 0xAF20, 0xAF20 },
  27779. -{ 0xAF21, 0xAF21, 0xAF21 },
  27780. -{ 0xAF22, 0xAF22, 0xAF22 },
  27781. -{ 0xAF23, 0xAF23, 0xAF23 },
  27782. -{ 0xAF24, 0xAF24, 0xAF24 },
  27783. -{ 0xAF25, 0xAF25, 0xAF25 },
  27784. -{ 0xAF26, 0xAF26, 0xAF26 },
  27785. -{ 0xAF27, 0xAF27, 0xAF27 },
  27786. -{ 0xAF28, 0xAF28, 0xAF28 },
  27787. -{ 0xAF29, 0xAF29, 0xAF29 },
  27788. -{ 0xAF2A, 0xAF2A, 0xAF2A },
  27789. -{ 0xAF2B, 0xAF2B, 0xAF2B },
  27790. -{ 0xAF2C, 0xAF2C, 0xAF2C },
  27791. -{ 0xAF2D, 0xAF2D, 0xAF2D },
  27792. -{ 0xAF2E, 0xAF2E, 0xAF2E },
  27793. -{ 0xAF2F, 0xAF2F, 0xAF2F },
  27794. -{ 0xAF30, 0xAF30, 0xAF30 },
  27795. -{ 0xAF31, 0xAF31, 0xAF31 },
  27796. -{ 0xAF32, 0xAF32, 0xAF32 },
  27797. -{ 0xAF33, 0xAF33, 0xAF33 },
  27798. -{ 0xAF34, 0xAF34, 0xAF34 },
  27799. -{ 0xAF35, 0xAF35, 0xAF35 },
  27800. -{ 0xAF36, 0xAF36, 0xAF36 },
  27801. -{ 0xAF37, 0xAF37, 0xAF37 },
  27802. -{ 0xAF38, 0xAF38, 0xAF38 },
  27803. -{ 0xAF39, 0xAF39, 0xAF39 },
  27804. -{ 0xAF3A, 0xAF3A, 0xAF3A },
  27805. -{ 0xAF3B, 0xAF3B, 0xAF3B },
  27806. -{ 0xAF3C, 0xAF3C, 0xAF3C },
  27807. -{ 0xAF3D, 0xAF3D, 0xAF3D },
  27808. -{ 0xAF3E, 0xAF3E, 0xAF3E },
  27809. -{ 0xAF3F, 0xAF3F, 0xAF3F },
  27810. -{ 0xAF40, 0xAF40, 0xAF40 },
  27811. -{ 0xAF41, 0xAF41, 0xAF41 },
  27812. -{ 0xAF42, 0xAF42, 0xAF42 },
  27813. -{ 0xAF43, 0xAF43, 0xAF43 },
  27814. -{ 0xAF44, 0xAF44, 0xAF44 },
  27815. -{ 0xAF45, 0xAF45, 0xAF45 },
  27816. -{ 0xAF46, 0xAF46, 0xAF46 },
  27817. -{ 0xAF47, 0xAF47, 0xAF47 },
  27818. -{ 0xAF48, 0xAF48, 0xAF48 },
  27819. -{ 0xAF49, 0xAF49, 0xAF49 },
  27820. -{ 0xAF4A, 0xAF4A, 0xAF4A },
  27821. -{ 0xAF4B, 0xAF4B, 0xAF4B },
  27822. -{ 0xAF4C, 0xAF4C, 0xAF4C },
  27823. -{ 0xAF4D, 0xAF4D, 0xAF4D },
  27824. -{ 0xAF4E, 0xAF4E, 0xAF4E },
  27825. -{ 0xAF4F, 0xAF4F, 0xAF4F },
  27826. -{ 0xAF50, 0xAF50, 0xAF50 },
  27827. -{ 0xAF51, 0xAF51, 0xAF51 },
  27828. -{ 0xAF52, 0xAF52, 0xAF52 },
  27829. -{ 0xAF53, 0xAF53, 0xAF53 },
  27830. -{ 0xAF54, 0xAF54, 0xAF54 },
  27831. -{ 0xAF55, 0xAF55, 0xAF55 },
  27832. -{ 0xAF56, 0xAF56, 0xAF56 },
  27833. -{ 0xAF57, 0xAF57, 0xAF57 },
  27834. -{ 0xAF58, 0xAF58, 0xAF58 },
  27835. -{ 0xAF59, 0xAF59, 0xAF59 },
  27836. -{ 0xAF5A, 0xAF5A, 0xAF5A },
  27837. -{ 0xAF5B, 0xAF5B, 0xAF5B },
  27838. -{ 0xAF5C, 0xAF5C, 0xAF5C },
  27839. -{ 0xAF5D, 0xAF5D, 0xAF5D },
  27840. -{ 0xAF5E, 0xAF5E, 0xAF5E },
  27841. -{ 0xAF5F, 0xAF5F, 0xAF5F },
  27842. -{ 0xAF60, 0xAF60, 0xAF60 },
  27843. -{ 0xAF61, 0xAF61, 0xAF61 },
  27844. -{ 0xAF62, 0xAF62, 0xAF62 },
  27845. -{ 0xAF63, 0xAF63, 0xAF63 },
  27846. -{ 0xAF64, 0xAF64, 0xAF64 },
  27847. -{ 0xAF65, 0xAF65, 0xAF65 },
  27848. -{ 0xAF66, 0xAF66, 0xAF66 },
  27849. -{ 0xAF67, 0xAF67, 0xAF67 },
  27850. -{ 0xAF68, 0xAF68, 0xAF68 },
  27851. -{ 0xAF69, 0xAF69, 0xAF69 },
  27852. -{ 0xAF6A, 0xAF6A, 0xAF6A },
  27853. -{ 0xAF6B, 0xAF6B, 0xAF6B },
  27854. -{ 0xAF6C, 0xAF6C, 0xAF6C },
  27855. -{ 0xAF6D, 0xAF6D, 0xAF6D },
  27856. -{ 0xAF6E, 0xAF6E, 0xAF6E },
  27857. -{ 0xAF6F, 0xAF6F, 0xAF6F },
  27858. -{ 0xAF70, 0xAF70, 0xAF70 },
  27859. -{ 0xAF71, 0xAF71, 0xAF71 },
  27860. -{ 0xAF72, 0xAF72, 0xAF72 },
  27861. -{ 0xAF73, 0xAF73, 0xAF73 },
  27862. -{ 0xAF74, 0xAF74, 0xAF74 },
  27863. -{ 0xAF75, 0xAF75, 0xAF75 },
  27864. -{ 0xAF76, 0xAF76, 0xAF76 },
  27865. -{ 0xAF77, 0xAF77, 0xAF77 },
  27866. -{ 0xAF78, 0xAF78, 0xAF78 },
  27867. -{ 0xAF79, 0xAF79, 0xAF79 },
  27868. -{ 0xAF7A, 0xAF7A, 0xAF7A },
  27869. -{ 0xAF7B, 0xAF7B, 0xAF7B },
  27870. -{ 0xAF7C, 0xAF7C, 0xAF7C },
  27871. -{ 0xAF7D, 0xAF7D, 0xAF7D },
  27872. -{ 0xAF7E, 0xAF7E, 0xAF7E },
  27873. -{ 0xAF7F, 0xAF7F, 0xAF7F },
  27874. -{ 0xAF80, 0xAF80, 0xAF80 },
  27875. -{ 0xAF81, 0xAF81, 0xAF81 },
  27876. -{ 0xAF82, 0xAF82, 0xAF82 },
  27877. -{ 0xAF83, 0xAF83, 0xAF83 },
  27878. -{ 0xAF84, 0xAF84, 0xAF84 },
  27879. -{ 0xAF85, 0xAF85, 0xAF85 },
  27880. -{ 0xAF86, 0xAF86, 0xAF86 },
  27881. -{ 0xAF87, 0xAF87, 0xAF87 },
  27882. -{ 0xAF88, 0xAF88, 0xAF88 },
  27883. -{ 0xAF89, 0xAF89, 0xAF89 },
  27884. -{ 0xAF8A, 0xAF8A, 0xAF8A },
  27885. -{ 0xAF8B, 0xAF8B, 0xAF8B },
  27886. -{ 0xAF8C, 0xAF8C, 0xAF8C },
  27887. -{ 0xAF8D, 0xAF8D, 0xAF8D },
  27888. -{ 0xAF8E, 0xAF8E, 0xAF8E },
  27889. -{ 0xAF8F, 0xAF8F, 0xAF8F },
  27890. -{ 0xAF90, 0xAF90, 0xAF90 },
  27891. -{ 0xAF91, 0xAF91, 0xAF91 },
  27892. -{ 0xAF92, 0xAF92, 0xAF92 },
  27893. -{ 0xAF93, 0xAF93, 0xAF93 },
  27894. -{ 0xAF94, 0xAF94, 0xAF94 },
  27895. -{ 0xAF95, 0xAF95, 0xAF95 },
  27896. -{ 0xAF96, 0xAF96, 0xAF96 },
  27897. -{ 0xAF97, 0xAF97, 0xAF97 },
  27898. -{ 0xAF98, 0xAF98, 0xAF98 },
  27899. -{ 0xAF99, 0xAF99, 0xAF99 },
  27900. -{ 0xAF9A, 0xAF9A, 0xAF9A },
  27901. -{ 0xAF9B, 0xAF9B, 0xAF9B },
  27902. -{ 0xAF9C, 0xAF9C, 0xAF9C },
  27903. -{ 0xAF9D, 0xAF9D, 0xAF9D },
  27904. -{ 0xAF9E, 0xAF9E, 0xAF9E },
  27905. -{ 0xAF9F, 0xAF9F, 0xAF9F },
  27906. -{ 0xAFA0, 0xAFA0, 0xAFA0 },
  27907. -{ 0xAFA1, 0xAFA1, 0xAFA1 },
  27908. -{ 0xAFA2, 0xAFA2, 0xAFA2 },
  27909. -{ 0xAFA3, 0xAFA3, 0xAFA3 },
  27910. -{ 0xAFA4, 0xAFA4, 0xAFA4 },
  27911. -{ 0xAFA5, 0xAFA5, 0xAFA5 },
  27912. -{ 0xAFA6, 0xAFA6, 0xAFA6 },
  27913. -{ 0xAFA7, 0xAFA7, 0xAFA7 },
  27914. -{ 0xAFA8, 0xAFA8, 0xAFA8 },
  27915. -{ 0xAFA9, 0xAFA9, 0xAFA9 },
  27916. -{ 0xAFAA, 0xAFAA, 0xAFAA },
  27917. -{ 0xAFAB, 0xAFAB, 0xAFAB },
  27918. -{ 0xAFAC, 0xAFAC, 0xAFAC },
  27919. -{ 0xAFAD, 0xAFAD, 0xAFAD },
  27920. -{ 0xAFAE, 0xAFAE, 0xAFAE },
  27921. -{ 0xAFAF, 0xAFAF, 0xAFAF },
  27922. -{ 0xAFB0, 0xAFB0, 0xAFB0 },
  27923. -{ 0xAFB1, 0xAFB1, 0xAFB1 },
  27924. -{ 0xAFB2, 0xAFB2, 0xAFB2 },
  27925. -{ 0xAFB3, 0xAFB3, 0xAFB3 },
  27926. -{ 0xAFB4, 0xAFB4, 0xAFB4 },
  27927. -{ 0xAFB5, 0xAFB5, 0xAFB5 },
  27928. -{ 0xAFB6, 0xAFB6, 0xAFB6 },
  27929. -{ 0xAFB7, 0xAFB7, 0xAFB7 },
  27930. -{ 0xAFB8, 0xAFB8, 0xAFB8 },
  27931. -{ 0xAFB9, 0xAFB9, 0xAFB9 },
  27932. -{ 0xAFBA, 0xAFBA, 0xAFBA },
  27933. -{ 0xAFBB, 0xAFBB, 0xAFBB },
  27934. -{ 0xAFBC, 0xAFBC, 0xAFBC },
  27935. -{ 0xAFBD, 0xAFBD, 0xAFBD },
  27936. -{ 0xAFBE, 0xAFBE, 0xAFBE },
  27937. -{ 0xAFBF, 0xAFBF, 0xAFBF },
  27938. -{ 0xAFC0, 0xAFC0, 0xAFC0 },
  27939. -{ 0xAFC1, 0xAFC1, 0xAFC1 },
  27940. -{ 0xAFC2, 0xAFC2, 0xAFC2 },
  27941. -{ 0xAFC3, 0xAFC3, 0xAFC3 },
  27942. -{ 0xAFC4, 0xAFC4, 0xAFC4 },
  27943. -{ 0xAFC5, 0xAFC5, 0xAFC5 },
  27944. -{ 0xAFC6, 0xAFC6, 0xAFC6 },
  27945. -{ 0xAFC7, 0xAFC7, 0xAFC7 },
  27946. -{ 0xAFC8, 0xAFC8, 0xAFC8 },
  27947. -{ 0xAFC9, 0xAFC9, 0xAFC9 },
  27948. -{ 0xAFCA, 0xAFCA, 0xAFCA },
  27949. -{ 0xAFCB, 0xAFCB, 0xAFCB },
  27950. -{ 0xAFCC, 0xAFCC, 0xAFCC },
  27951. -{ 0xAFCD, 0xAFCD, 0xAFCD },
  27952. -{ 0xAFCE, 0xAFCE, 0xAFCE },
  27953. -{ 0xAFCF, 0xAFCF, 0xAFCF },
  27954. -{ 0xAFD0, 0xAFD0, 0xAFD0 },
  27955. -{ 0xAFD1, 0xAFD1, 0xAFD1 },
  27956. -{ 0xAFD2, 0xAFD2, 0xAFD2 },
  27957. -{ 0xAFD3, 0xAFD3, 0xAFD3 },
  27958. -{ 0xAFD4, 0xAFD4, 0xAFD4 },
  27959. -{ 0xAFD5, 0xAFD5, 0xAFD5 },
  27960. -{ 0xAFD6, 0xAFD6, 0xAFD6 },
  27961. -{ 0xAFD7, 0xAFD7, 0xAFD7 },
  27962. -{ 0xAFD8, 0xAFD8, 0xAFD8 },
  27963. -{ 0xAFD9, 0xAFD9, 0xAFD9 },
  27964. -{ 0xAFDA, 0xAFDA, 0xAFDA },
  27965. -{ 0xAFDB, 0xAFDB, 0xAFDB },
  27966. -{ 0xAFDC, 0xAFDC, 0xAFDC },
  27967. -{ 0xAFDD, 0xAFDD, 0xAFDD },
  27968. -{ 0xAFDE, 0xAFDE, 0xAFDE },
  27969. -{ 0xAFDF, 0xAFDF, 0xAFDF },
  27970. -{ 0xAFE0, 0xAFE0, 0xAFE0 },
  27971. -{ 0xAFE1, 0xAFE1, 0xAFE1 },
  27972. -{ 0xAFE2, 0xAFE2, 0xAFE2 },
  27973. -{ 0xAFE3, 0xAFE3, 0xAFE3 },
  27974. -{ 0xAFE4, 0xAFE4, 0xAFE4 },
  27975. -{ 0xAFE5, 0xAFE5, 0xAFE5 },
  27976. -{ 0xAFE6, 0xAFE6, 0xAFE6 },
  27977. -{ 0xAFE7, 0xAFE7, 0xAFE7 },
  27978. -{ 0xAFE8, 0xAFE8, 0xAFE8 },
  27979. -{ 0xAFE9, 0xAFE9, 0xAFE9 },
  27980. -{ 0xAFEA, 0xAFEA, 0xAFEA },
  27981. -{ 0xAFEB, 0xAFEB, 0xAFEB },
  27982. -{ 0xAFEC, 0xAFEC, 0xAFEC },
  27983. -{ 0xAFED, 0xAFED, 0xAFED },
  27984. -{ 0xAFEE, 0xAFEE, 0xAFEE },
  27985. -{ 0xAFEF, 0xAFEF, 0xAFEF },
  27986. -{ 0xAFF0, 0xAFF0, 0xAFF0 },
  27987. -{ 0xAFF1, 0xAFF1, 0xAFF1 },
  27988. -{ 0xAFF2, 0xAFF2, 0xAFF2 },
  27989. -{ 0xAFF3, 0xAFF3, 0xAFF3 },
  27990. -{ 0xAFF4, 0xAFF4, 0xAFF4 },
  27991. -{ 0xAFF5, 0xAFF5, 0xAFF5 },
  27992. -{ 0xAFF6, 0xAFF6, 0xAFF6 },
  27993. -{ 0xAFF7, 0xAFF7, 0xAFF7 },
  27994. -{ 0xAFF8, 0xAFF8, 0xAFF8 },
  27995. -{ 0xAFF9, 0xAFF9, 0xAFF9 },
  27996. -{ 0xAFFA, 0xAFFA, 0xAFFA },
  27997. -{ 0xAFFB, 0xAFFB, 0xAFFB },
  27998. -{ 0xAFFC, 0xAFFC, 0xAFFC },
  27999. -{ 0xAFFD, 0xAFFD, 0xAFFD },
  28000. -{ 0xAFFE, 0xAFFE, 0xAFFE },
  28001. -{ 0xAFFF, 0xAFFF, 0xAFFF },
  28002. -{ 0xB000, 0xB000, 0xB000 },
  28003. -{ 0xB001, 0xB001, 0xB001 },
  28004. -{ 0xB002, 0xB002, 0xB002 },
  28005. -{ 0xB003, 0xB003, 0xB003 },
  28006. -{ 0xB004, 0xB004, 0xB004 },
  28007. -{ 0xB005, 0xB005, 0xB005 },
  28008. -{ 0xB006, 0xB006, 0xB006 },
  28009. -{ 0xB007, 0xB007, 0xB007 },
  28010. -{ 0xB008, 0xB008, 0xB008 },
  28011. -{ 0xB009, 0xB009, 0xB009 },
  28012. -{ 0xB00A, 0xB00A, 0xB00A },
  28013. -{ 0xB00B, 0xB00B, 0xB00B },
  28014. -{ 0xB00C, 0xB00C, 0xB00C },
  28015. -{ 0xB00D, 0xB00D, 0xB00D },
  28016. -{ 0xB00E, 0xB00E, 0xB00E },
  28017. -{ 0xB00F, 0xB00F, 0xB00F },
  28018. -{ 0xB010, 0xB010, 0xB010 },
  28019. -{ 0xB011, 0xB011, 0xB011 },
  28020. -{ 0xB012, 0xB012, 0xB012 },
  28021. -{ 0xB013, 0xB013, 0xB013 },
  28022. -{ 0xB014, 0xB014, 0xB014 },
  28023. -{ 0xB015, 0xB015, 0xB015 },
  28024. -{ 0xB016, 0xB016, 0xB016 },
  28025. -{ 0xB017, 0xB017, 0xB017 },
  28026. -{ 0xB018, 0xB018, 0xB018 },
  28027. -{ 0xB019, 0xB019, 0xB019 },
  28028. -{ 0xB01A, 0xB01A, 0xB01A },
  28029. -{ 0xB01B, 0xB01B, 0xB01B },
  28030. -{ 0xB01C, 0xB01C, 0xB01C },
  28031. -{ 0xB01D, 0xB01D, 0xB01D },
  28032. -{ 0xB01E, 0xB01E, 0xB01E },
  28033. -{ 0xB01F, 0xB01F, 0xB01F },
  28034. -{ 0xB020, 0xB020, 0xB020 },
  28035. -{ 0xB021, 0xB021, 0xB021 },
  28036. -{ 0xB022, 0xB022, 0xB022 },
  28037. -{ 0xB023, 0xB023, 0xB023 },
  28038. -{ 0xB024, 0xB024, 0xB024 },
  28039. -{ 0xB025, 0xB025, 0xB025 },
  28040. -{ 0xB026, 0xB026, 0xB026 },
  28041. -{ 0xB027, 0xB027, 0xB027 },
  28042. -{ 0xB028, 0xB028, 0xB028 },
  28043. -{ 0xB029, 0xB029, 0xB029 },
  28044. -{ 0xB02A, 0xB02A, 0xB02A },
  28045. -{ 0xB02B, 0xB02B, 0xB02B },
  28046. -{ 0xB02C, 0xB02C, 0xB02C },
  28047. -{ 0xB02D, 0xB02D, 0xB02D },
  28048. -{ 0xB02E, 0xB02E, 0xB02E },
  28049. -{ 0xB02F, 0xB02F, 0xB02F },
  28050. -{ 0xB030, 0xB030, 0xB030 },
  28051. -{ 0xB031, 0xB031, 0xB031 },
  28052. -{ 0xB032, 0xB032, 0xB032 },
  28053. -{ 0xB033, 0xB033, 0xB033 },
  28054. -{ 0xB034, 0xB034, 0xB034 },
  28055. -{ 0xB035, 0xB035, 0xB035 },
  28056. -{ 0xB036, 0xB036, 0xB036 },
  28057. -{ 0xB037, 0xB037, 0xB037 },
  28058. -{ 0xB038, 0xB038, 0xB038 },
  28059. -{ 0xB039, 0xB039, 0xB039 },
  28060. -{ 0xB03A, 0xB03A, 0xB03A },
  28061. -{ 0xB03B, 0xB03B, 0xB03B },
  28062. -{ 0xB03C, 0xB03C, 0xB03C },
  28063. -{ 0xB03D, 0xB03D, 0xB03D },
  28064. -{ 0xB03E, 0xB03E, 0xB03E },
  28065. -{ 0xB03F, 0xB03F, 0xB03F },
  28066. -{ 0xB040, 0xB040, 0xB040 },
  28067. -{ 0xB041, 0xB041, 0xB041 },
  28068. -{ 0xB042, 0xB042, 0xB042 },
  28069. -{ 0xB043, 0xB043, 0xB043 },
  28070. -{ 0xB044, 0xB044, 0xB044 },
  28071. -{ 0xB045, 0xB045, 0xB045 },
  28072. -{ 0xB046, 0xB046, 0xB046 },
  28073. -{ 0xB047, 0xB047, 0xB047 },
  28074. -{ 0xB048, 0xB048, 0xB048 },
  28075. -{ 0xB049, 0xB049, 0xB049 },
  28076. -{ 0xB04A, 0xB04A, 0xB04A },
  28077. -{ 0xB04B, 0xB04B, 0xB04B },
  28078. -{ 0xB04C, 0xB04C, 0xB04C },
  28079. -{ 0xB04D, 0xB04D, 0xB04D },
  28080. -{ 0xB04E, 0xB04E, 0xB04E },
  28081. -{ 0xB04F, 0xB04F, 0xB04F },
  28082. -{ 0xB050, 0xB050, 0xB050 },
  28083. -{ 0xB051, 0xB051, 0xB051 },
  28084. -{ 0xB052, 0xB052, 0xB052 },
  28085. -{ 0xB053, 0xB053, 0xB053 },
  28086. -{ 0xB054, 0xB054, 0xB054 },
  28087. -{ 0xB055, 0xB055, 0xB055 },
  28088. -{ 0xB056, 0xB056, 0xB056 },
  28089. -{ 0xB057, 0xB057, 0xB057 },
  28090. -{ 0xB058, 0xB058, 0xB058 },
  28091. -{ 0xB059, 0xB059, 0xB059 },
  28092. -{ 0xB05A, 0xB05A, 0xB05A },
  28093. -{ 0xB05B, 0xB05B, 0xB05B },
  28094. -{ 0xB05C, 0xB05C, 0xB05C },
  28095. -{ 0xB05D, 0xB05D, 0xB05D },
  28096. -{ 0xB05E, 0xB05E, 0xB05E },
  28097. -{ 0xB05F, 0xB05F, 0xB05F },
  28098. -{ 0xB060, 0xB060, 0xB060 },
  28099. -{ 0xB061, 0xB061, 0xB061 },
  28100. -{ 0xB062, 0xB062, 0xB062 },
  28101. -{ 0xB063, 0xB063, 0xB063 },
  28102. -{ 0xB064, 0xB064, 0xB064 },
  28103. -{ 0xB065, 0xB065, 0xB065 },
  28104. -{ 0xB066, 0xB066, 0xB066 },
  28105. -{ 0xB067, 0xB067, 0xB067 },
  28106. -{ 0xB068, 0xB068, 0xB068 },
  28107. -{ 0xB069, 0xB069, 0xB069 },
  28108. -{ 0xB06A, 0xB06A, 0xB06A },
  28109. -{ 0xB06B, 0xB06B, 0xB06B },
  28110. -{ 0xB06C, 0xB06C, 0xB06C },
  28111. -{ 0xB06D, 0xB06D, 0xB06D },
  28112. -{ 0xB06E, 0xB06E, 0xB06E },
  28113. -{ 0xB06F, 0xB06F, 0xB06F },
  28114. -{ 0xB070, 0xB070, 0xB070 },
  28115. -{ 0xB071, 0xB071, 0xB071 },
  28116. -{ 0xB072, 0xB072, 0xB072 },
  28117. -{ 0xB073, 0xB073, 0xB073 },
  28118. -{ 0xB074, 0xB074, 0xB074 },
  28119. -{ 0xB075, 0xB075, 0xB075 },
  28120. -{ 0xB076, 0xB076, 0xB076 },
  28121. -{ 0xB077, 0xB077, 0xB077 },
  28122. -{ 0xB078, 0xB078, 0xB078 },
  28123. -{ 0xB079, 0xB079, 0xB079 },
  28124. -{ 0xB07A, 0xB07A, 0xB07A },
  28125. -{ 0xB07B, 0xB07B, 0xB07B },
  28126. -{ 0xB07C, 0xB07C, 0xB07C },
  28127. -{ 0xB07D, 0xB07D, 0xB07D },
  28128. -{ 0xB07E, 0xB07E, 0xB07E },
  28129. -{ 0xB07F, 0xB07F, 0xB07F },
  28130. -{ 0xB080, 0xB080, 0xB080 },
  28131. -{ 0xB081, 0xB081, 0xB081 },
  28132. -{ 0xB082, 0xB082, 0xB082 },
  28133. -{ 0xB083, 0xB083, 0xB083 },
  28134. -{ 0xB084, 0xB084, 0xB084 },
  28135. -{ 0xB085, 0xB085, 0xB085 },
  28136. -{ 0xB086, 0xB086, 0xB086 },
  28137. -{ 0xB087, 0xB087, 0xB087 },
  28138. -{ 0xB088, 0xB088, 0xB088 },
  28139. -{ 0xB089, 0xB089, 0xB089 },
  28140. -{ 0xB08A, 0xB08A, 0xB08A },
  28141. -{ 0xB08B, 0xB08B, 0xB08B },
  28142. -{ 0xB08C, 0xB08C, 0xB08C },
  28143. -{ 0xB08D, 0xB08D, 0xB08D },
  28144. -{ 0xB08E, 0xB08E, 0xB08E },
  28145. -{ 0xB08F, 0xB08F, 0xB08F },
  28146. -{ 0xB090, 0xB090, 0xB090 },
  28147. -{ 0xB091, 0xB091, 0xB091 },
  28148. -{ 0xB092, 0xB092, 0xB092 },
  28149. -{ 0xB093, 0xB093, 0xB093 },
  28150. -{ 0xB094, 0xB094, 0xB094 },
  28151. -{ 0xB095, 0xB095, 0xB095 },
  28152. -{ 0xB096, 0xB096, 0xB096 },
  28153. -{ 0xB097, 0xB097, 0xB097 },
  28154. -{ 0xB098, 0xB098, 0xB098 },
  28155. -{ 0xB099, 0xB099, 0xB099 },
  28156. -{ 0xB09A, 0xB09A, 0xB09A },
  28157. -{ 0xB09B, 0xB09B, 0xB09B },
  28158. -{ 0xB09C, 0xB09C, 0xB09C },
  28159. -{ 0xB09D, 0xB09D, 0xB09D },
  28160. -{ 0xB09E, 0xB09E, 0xB09E },
  28161. -{ 0xB09F, 0xB09F, 0xB09F },
  28162. -{ 0xB0A0, 0xB0A0, 0xB0A0 },
  28163. -{ 0xB0A1, 0xB0A1, 0xB0A1 },
  28164. -{ 0xB0A2, 0xB0A2, 0xB0A2 },
  28165. -{ 0xB0A3, 0xB0A3, 0xB0A3 },
  28166. -{ 0xB0A4, 0xB0A4, 0xB0A4 },
  28167. -{ 0xB0A5, 0xB0A5, 0xB0A5 },
  28168. -{ 0xB0A6, 0xB0A6, 0xB0A6 },
  28169. -{ 0xB0A7, 0xB0A7, 0xB0A7 },
  28170. -{ 0xB0A8, 0xB0A8, 0xB0A8 },
  28171. -{ 0xB0A9, 0xB0A9, 0xB0A9 },
  28172. -{ 0xB0AA, 0xB0AA, 0xB0AA },
  28173. -{ 0xB0AB, 0xB0AB, 0xB0AB },
  28174. -{ 0xB0AC, 0xB0AC, 0xB0AC },
  28175. -{ 0xB0AD, 0xB0AD, 0xB0AD },
  28176. -{ 0xB0AE, 0xB0AE, 0xB0AE },
  28177. -{ 0xB0AF, 0xB0AF, 0xB0AF },
  28178. -{ 0xB0B0, 0xB0B0, 0xB0B0 },
  28179. -{ 0xB0B1, 0xB0B1, 0xB0B1 },
  28180. -{ 0xB0B2, 0xB0B2, 0xB0B2 },
  28181. -{ 0xB0B3, 0xB0B3, 0xB0B3 },
  28182. -{ 0xB0B4, 0xB0B4, 0xB0B4 },
  28183. -{ 0xB0B5, 0xB0B5, 0xB0B5 },
  28184. -{ 0xB0B6, 0xB0B6, 0xB0B6 },
  28185. -{ 0xB0B7, 0xB0B7, 0xB0B7 },
  28186. -{ 0xB0B8, 0xB0B8, 0xB0B8 },
  28187. -{ 0xB0B9, 0xB0B9, 0xB0B9 },
  28188. -{ 0xB0BA, 0xB0BA, 0xB0BA },
  28189. -{ 0xB0BB, 0xB0BB, 0xB0BB },
  28190. -{ 0xB0BC, 0xB0BC, 0xB0BC },
  28191. -{ 0xB0BD, 0xB0BD, 0xB0BD },
  28192. -{ 0xB0BE, 0xB0BE, 0xB0BE },
  28193. -{ 0xB0BF, 0xB0BF, 0xB0BF },
  28194. -{ 0xB0C0, 0xB0C0, 0xB0C0 },
  28195. -{ 0xB0C1, 0xB0C1, 0xB0C1 },
  28196. -{ 0xB0C2, 0xB0C2, 0xB0C2 },
  28197. -{ 0xB0C3, 0xB0C3, 0xB0C3 },
  28198. -{ 0xB0C4, 0xB0C4, 0xB0C4 },
  28199. -{ 0xB0C5, 0xB0C5, 0xB0C5 },
  28200. -{ 0xB0C6, 0xB0C6, 0xB0C6 },
  28201. -{ 0xB0C7, 0xB0C7, 0xB0C7 },
  28202. -{ 0xB0C8, 0xB0C8, 0xB0C8 },
  28203. -{ 0xB0C9, 0xB0C9, 0xB0C9 },
  28204. -{ 0xB0CA, 0xB0CA, 0xB0CA },
  28205. -{ 0xB0CB, 0xB0CB, 0xB0CB },
  28206. -{ 0xB0CC, 0xB0CC, 0xB0CC },
  28207. -{ 0xB0CD, 0xB0CD, 0xB0CD },
  28208. -{ 0xB0CE, 0xB0CE, 0xB0CE },
  28209. -{ 0xB0CF, 0xB0CF, 0xB0CF },
  28210. -{ 0xB0D0, 0xB0D0, 0xB0D0 },
  28211. -{ 0xB0D1, 0xB0D1, 0xB0D1 },
  28212. -{ 0xB0D2, 0xB0D2, 0xB0D2 },
  28213. -{ 0xB0D3, 0xB0D3, 0xB0D3 },
  28214. -{ 0xB0D4, 0xB0D4, 0xB0D4 },
  28215. -{ 0xB0D5, 0xB0D5, 0xB0D5 },
  28216. -{ 0xB0D6, 0xB0D6, 0xB0D6 },
  28217. -{ 0xB0D7, 0xB0D7, 0xB0D7 },
  28218. -{ 0xB0D8, 0xB0D8, 0xB0D8 },
  28219. -{ 0xB0D9, 0xB0D9, 0xB0D9 },
  28220. -{ 0xB0DA, 0xB0DA, 0xB0DA },
  28221. -{ 0xB0DB, 0xB0DB, 0xB0DB },
  28222. -{ 0xB0DC, 0xB0DC, 0xB0DC },
  28223. -{ 0xB0DD, 0xB0DD, 0xB0DD },
  28224. -{ 0xB0DE, 0xB0DE, 0xB0DE },
  28225. -{ 0xB0DF, 0xB0DF, 0xB0DF },
  28226. -{ 0xB0E0, 0xB0E0, 0xB0E0 },
  28227. -{ 0xB0E1, 0xB0E1, 0xB0E1 },
  28228. -{ 0xB0E2, 0xB0E2, 0xB0E2 },
  28229. -{ 0xB0E3, 0xB0E3, 0xB0E3 },
  28230. -{ 0xB0E4, 0xB0E4, 0xB0E4 },
  28231. -{ 0xB0E5, 0xB0E5, 0xB0E5 },
  28232. -{ 0xB0E6, 0xB0E6, 0xB0E6 },
  28233. -{ 0xB0E7, 0xB0E7, 0xB0E7 },
  28234. -{ 0xB0E8, 0xB0E8, 0xB0E8 },
  28235. -{ 0xB0E9, 0xB0E9, 0xB0E9 },
  28236. -{ 0xB0EA, 0xB0EA, 0xB0EA },
  28237. -{ 0xB0EB, 0xB0EB, 0xB0EB },
  28238. -{ 0xB0EC, 0xB0EC, 0xB0EC },
  28239. -{ 0xB0ED, 0xB0ED, 0xB0ED },
  28240. -{ 0xB0EE, 0xB0EE, 0xB0EE },
  28241. -{ 0xB0EF, 0xB0EF, 0xB0EF },
  28242. -{ 0xB0F0, 0xB0F0, 0xB0F0 },
  28243. -{ 0xB0F1, 0xB0F1, 0xB0F1 },
  28244. -{ 0xB0F2, 0xB0F2, 0xB0F2 },
  28245. -{ 0xB0F3, 0xB0F3, 0xB0F3 },
  28246. -{ 0xB0F4, 0xB0F4, 0xB0F4 },
  28247. -{ 0xB0F5, 0xB0F5, 0xB0F5 },
  28248. -{ 0xB0F6, 0xB0F6, 0xB0F6 },
  28249. -{ 0xB0F7, 0xB0F7, 0xB0F7 },
  28250. -{ 0xB0F8, 0xB0F8, 0xB0F8 },
  28251. -{ 0xB0F9, 0xB0F9, 0xB0F9 },
  28252. -{ 0xB0FA, 0xB0FA, 0xB0FA },
  28253. -{ 0xB0FB, 0xB0FB, 0xB0FB },
  28254. -{ 0xB0FC, 0xB0FC, 0xB0FC },
  28255. -{ 0xB0FD, 0xB0FD, 0xB0FD },
  28256. -{ 0xB0FE, 0xB0FE, 0xB0FE },
  28257. -{ 0xB0FF, 0xB0FF, 0xB0FF },
  28258. -{ 0xB100, 0xB100, 0xB100 },
  28259. -{ 0xB101, 0xB101, 0xB101 },
  28260. -{ 0xB102, 0xB102, 0xB102 },
  28261. -{ 0xB103, 0xB103, 0xB103 },
  28262. -{ 0xB104, 0xB104, 0xB104 },
  28263. -{ 0xB105, 0xB105, 0xB105 },
  28264. -{ 0xB106, 0xB106, 0xB106 },
  28265. -{ 0xB107, 0xB107, 0xB107 },
  28266. -{ 0xB108, 0xB108, 0xB108 },
  28267. -{ 0xB109, 0xB109, 0xB109 },
  28268. -{ 0xB10A, 0xB10A, 0xB10A },
  28269. -{ 0xB10B, 0xB10B, 0xB10B },
  28270. -{ 0xB10C, 0xB10C, 0xB10C },
  28271. -{ 0xB10D, 0xB10D, 0xB10D },
  28272. -{ 0xB10E, 0xB10E, 0xB10E },
  28273. -{ 0xB10F, 0xB10F, 0xB10F },
  28274. -{ 0xB110, 0xB110, 0xB110 },
  28275. -{ 0xB111, 0xB111, 0xB111 },
  28276. -{ 0xB112, 0xB112, 0xB112 },
  28277. -{ 0xB113, 0xB113, 0xB113 },
  28278. -{ 0xB114, 0xB114, 0xB114 },
  28279. -{ 0xB115, 0xB115, 0xB115 },
  28280. -{ 0xB116, 0xB116, 0xB116 },
  28281. -{ 0xB117, 0xB117, 0xB117 },
  28282. -{ 0xB118, 0xB118, 0xB118 },
  28283. -{ 0xB119, 0xB119, 0xB119 },
  28284. -{ 0xB11A, 0xB11A, 0xB11A },
  28285. -{ 0xB11B, 0xB11B, 0xB11B },
  28286. -{ 0xB11C, 0xB11C, 0xB11C },
  28287. -{ 0xB11D, 0xB11D, 0xB11D },
  28288. -{ 0xB11E, 0xB11E, 0xB11E },
  28289. -{ 0xB11F, 0xB11F, 0xB11F },
  28290. -{ 0xB120, 0xB120, 0xB120 },
  28291. -{ 0xB121, 0xB121, 0xB121 },
  28292. -{ 0xB122, 0xB122, 0xB122 },
  28293. -{ 0xB123, 0xB123, 0xB123 },
  28294. -{ 0xB124, 0xB124, 0xB124 },
  28295. -{ 0xB125, 0xB125, 0xB125 },
  28296. -{ 0xB126, 0xB126, 0xB126 },
  28297. -{ 0xB127, 0xB127, 0xB127 },
  28298. -{ 0xB128, 0xB128, 0xB128 },
  28299. -{ 0xB129, 0xB129, 0xB129 },
  28300. -{ 0xB12A, 0xB12A, 0xB12A },
  28301. -{ 0xB12B, 0xB12B, 0xB12B },
  28302. -{ 0xB12C, 0xB12C, 0xB12C },
  28303. -{ 0xB12D, 0xB12D, 0xB12D },
  28304. -{ 0xB12E, 0xB12E, 0xB12E },
  28305. -{ 0xB12F, 0xB12F, 0xB12F },
  28306. -{ 0xB130, 0xB130, 0xB130 },
  28307. -{ 0xB131, 0xB131, 0xB131 },
  28308. -{ 0xB132, 0xB132, 0xB132 },
  28309. -{ 0xB133, 0xB133, 0xB133 },
  28310. -{ 0xB134, 0xB134, 0xB134 },
  28311. -{ 0xB135, 0xB135, 0xB135 },
  28312. -{ 0xB136, 0xB136, 0xB136 },
  28313. -{ 0xB137, 0xB137, 0xB137 },
  28314. -{ 0xB138, 0xB138, 0xB138 },
  28315. -{ 0xB139, 0xB139, 0xB139 },
  28316. -{ 0xB13A, 0xB13A, 0xB13A },
  28317. -{ 0xB13B, 0xB13B, 0xB13B },
  28318. -{ 0xB13C, 0xB13C, 0xB13C },
  28319. -{ 0xB13D, 0xB13D, 0xB13D },
  28320. -{ 0xB13E, 0xB13E, 0xB13E },
  28321. -{ 0xB13F, 0xB13F, 0xB13F },
  28322. -{ 0xB140, 0xB140, 0xB140 },
  28323. -{ 0xB141, 0xB141, 0xB141 },
  28324. -{ 0xB142, 0xB142, 0xB142 },
  28325. -{ 0xB143, 0xB143, 0xB143 },
  28326. -{ 0xB144, 0xB144, 0xB144 },
  28327. -{ 0xB145, 0xB145, 0xB145 },
  28328. -{ 0xB146, 0xB146, 0xB146 },
  28329. -{ 0xB147, 0xB147, 0xB147 },
  28330. -{ 0xB148, 0xB148, 0xB148 },
  28331. -{ 0xB149, 0xB149, 0xB149 },
  28332. -{ 0xB14A, 0xB14A, 0xB14A },
  28333. -{ 0xB14B, 0xB14B, 0xB14B },
  28334. -{ 0xB14C, 0xB14C, 0xB14C },
  28335. -{ 0xB14D, 0xB14D, 0xB14D },
  28336. -{ 0xB14E, 0xB14E, 0xB14E },
  28337. -{ 0xB14F, 0xB14F, 0xB14F },
  28338. -{ 0xB150, 0xB150, 0xB150 },
  28339. -{ 0xB151, 0xB151, 0xB151 },
  28340. -{ 0xB152, 0xB152, 0xB152 },
  28341. -{ 0xB153, 0xB153, 0xB153 },
  28342. -{ 0xB154, 0xB154, 0xB154 },
  28343. -{ 0xB155, 0xB155, 0xB155 },
  28344. -{ 0xB156, 0xB156, 0xB156 },
  28345. -{ 0xB157, 0xB157, 0xB157 },
  28346. -{ 0xB158, 0xB158, 0xB158 },
  28347. -{ 0xB159, 0xB159, 0xB159 },
  28348. -{ 0xB15A, 0xB15A, 0xB15A },
  28349. -{ 0xB15B, 0xB15B, 0xB15B },
  28350. -{ 0xB15C, 0xB15C, 0xB15C },
  28351. -{ 0xB15D, 0xB15D, 0xB15D },
  28352. -{ 0xB15E, 0xB15E, 0xB15E },
  28353. -{ 0xB15F, 0xB15F, 0xB15F },
  28354. -{ 0xB160, 0xB160, 0xB160 },
  28355. -{ 0xB161, 0xB161, 0xB161 },
  28356. -{ 0xB162, 0xB162, 0xB162 },
  28357. -{ 0xB163, 0xB163, 0xB163 },
  28358. -{ 0xB164, 0xB164, 0xB164 },
  28359. -{ 0xB165, 0xB165, 0xB165 },
  28360. -{ 0xB166, 0xB166, 0xB166 },
  28361. -{ 0xB167, 0xB167, 0xB167 },
  28362. -{ 0xB168, 0xB168, 0xB168 },
  28363. -{ 0xB169, 0xB169, 0xB169 },
  28364. -{ 0xB16A, 0xB16A, 0xB16A },
  28365. -{ 0xB16B, 0xB16B, 0xB16B },
  28366. -{ 0xB16C, 0xB16C, 0xB16C },
  28367. -{ 0xB16D, 0xB16D, 0xB16D },
  28368. -{ 0xB16E, 0xB16E, 0xB16E },
  28369. -{ 0xB16F, 0xB16F, 0xB16F },
  28370. -{ 0xB170, 0xB170, 0xB170 },
  28371. -{ 0xB171, 0xB171, 0xB171 },
  28372. -{ 0xB172, 0xB172, 0xB172 },
  28373. -{ 0xB173, 0xB173, 0xB173 },
  28374. -{ 0xB174, 0xB174, 0xB174 },
  28375. -{ 0xB175, 0xB175, 0xB175 },
  28376. -{ 0xB176, 0xB176, 0xB176 },
  28377. -{ 0xB177, 0xB177, 0xB177 },
  28378. -{ 0xB178, 0xB178, 0xB178 },
  28379. -{ 0xB179, 0xB179, 0xB179 },
  28380. -{ 0xB17A, 0xB17A, 0xB17A },
  28381. -{ 0xB17B, 0xB17B, 0xB17B },
  28382. -{ 0xB17C, 0xB17C, 0xB17C },
  28383. -{ 0xB17D, 0xB17D, 0xB17D },
  28384. -{ 0xB17E, 0xB17E, 0xB17E },
  28385. -{ 0xB17F, 0xB17F, 0xB17F },
  28386. -{ 0xB180, 0xB180, 0xB180 },
  28387. -{ 0xB181, 0xB181, 0xB181 },
  28388. -{ 0xB182, 0xB182, 0xB182 },
  28389. -{ 0xB183, 0xB183, 0xB183 },
  28390. -{ 0xB184, 0xB184, 0xB184 },
  28391. -{ 0xB185, 0xB185, 0xB185 },
  28392. -{ 0xB186, 0xB186, 0xB186 },
  28393. -{ 0xB187, 0xB187, 0xB187 },
  28394. -{ 0xB188, 0xB188, 0xB188 },
  28395. -{ 0xB189, 0xB189, 0xB189 },
  28396. -{ 0xB18A, 0xB18A, 0xB18A },
  28397. -{ 0xB18B, 0xB18B, 0xB18B },
  28398. -{ 0xB18C, 0xB18C, 0xB18C },
  28399. -{ 0xB18D, 0xB18D, 0xB18D },
  28400. -{ 0xB18E, 0xB18E, 0xB18E },
  28401. -{ 0xB18F, 0xB18F, 0xB18F },
  28402. -{ 0xB190, 0xB190, 0xB190 },
  28403. -{ 0xB191, 0xB191, 0xB191 },
  28404. -{ 0xB192, 0xB192, 0xB192 },
  28405. -{ 0xB193, 0xB193, 0xB193 },
  28406. -{ 0xB194, 0xB194, 0xB194 },
  28407. -{ 0xB195, 0xB195, 0xB195 },
  28408. -{ 0xB196, 0xB196, 0xB196 },
  28409. -{ 0xB197, 0xB197, 0xB197 },
  28410. -{ 0xB198, 0xB198, 0xB198 },
  28411. -{ 0xB199, 0xB199, 0xB199 },
  28412. -{ 0xB19A, 0xB19A, 0xB19A },
  28413. -{ 0xB19B, 0xB19B, 0xB19B },
  28414. -{ 0xB19C, 0xB19C, 0xB19C },
  28415. -{ 0xB19D, 0xB19D, 0xB19D },
  28416. -{ 0xB19E, 0xB19E, 0xB19E },
  28417. -{ 0xB19F, 0xB19F, 0xB19F },
  28418. -{ 0xB1A0, 0xB1A0, 0xB1A0 },
  28419. -{ 0xB1A1, 0xB1A1, 0xB1A1 },
  28420. -{ 0xB1A2, 0xB1A2, 0xB1A2 },
  28421. -{ 0xB1A3, 0xB1A3, 0xB1A3 },
  28422. -{ 0xB1A4, 0xB1A4, 0xB1A4 },
  28423. -{ 0xB1A5, 0xB1A5, 0xB1A5 },
  28424. -{ 0xB1A6, 0xB1A6, 0xB1A6 },
  28425. -{ 0xB1A7, 0xB1A7, 0xB1A7 },
  28426. -{ 0xB1A8, 0xB1A8, 0xB1A8 },
  28427. -{ 0xB1A9, 0xB1A9, 0xB1A9 },
  28428. -{ 0xB1AA, 0xB1AA, 0xB1AA },
  28429. -{ 0xB1AB, 0xB1AB, 0xB1AB },
  28430. -{ 0xB1AC, 0xB1AC, 0xB1AC },
  28431. -{ 0xB1AD, 0xB1AD, 0xB1AD },
  28432. -{ 0xB1AE, 0xB1AE, 0xB1AE },
  28433. -{ 0xB1AF, 0xB1AF, 0xB1AF },
  28434. -{ 0xB1B0, 0xB1B0, 0xB1B0 },
  28435. -{ 0xB1B1, 0xB1B1, 0xB1B1 },
  28436. -{ 0xB1B2, 0xB1B2, 0xB1B2 },
  28437. -{ 0xB1B3, 0xB1B3, 0xB1B3 },
  28438. -{ 0xB1B4, 0xB1B4, 0xB1B4 },
  28439. -{ 0xB1B5, 0xB1B5, 0xB1B5 },
  28440. -{ 0xB1B6, 0xB1B6, 0xB1B6 },
  28441. -{ 0xB1B7, 0xB1B7, 0xB1B7 },
  28442. -{ 0xB1B8, 0xB1B8, 0xB1B8 },
  28443. -{ 0xB1B9, 0xB1B9, 0xB1B9 },
  28444. -{ 0xB1BA, 0xB1BA, 0xB1BA },
  28445. -{ 0xB1BB, 0xB1BB, 0xB1BB },
  28446. -{ 0xB1BC, 0xB1BC, 0xB1BC },
  28447. -{ 0xB1BD, 0xB1BD, 0xB1BD },
  28448. -{ 0xB1BE, 0xB1BE, 0xB1BE },
  28449. -{ 0xB1BF, 0xB1BF, 0xB1BF },
  28450. -{ 0xB1C0, 0xB1C0, 0xB1C0 },
  28451. -{ 0xB1C1, 0xB1C1, 0xB1C1 },
  28452. -{ 0xB1C2, 0xB1C2, 0xB1C2 },
  28453. -{ 0xB1C3, 0xB1C3, 0xB1C3 },
  28454. -{ 0xB1C4, 0xB1C4, 0xB1C4 },
  28455. -{ 0xB1C5, 0xB1C5, 0xB1C5 },
  28456. -{ 0xB1C6, 0xB1C6, 0xB1C6 },
  28457. -{ 0xB1C7, 0xB1C7, 0xB1C7 },
  28458. -{ 0xB1C8, 0xB1C8, 0xB1C8 },
  28459. -{ 0xB1C9, 0xB1C9, 0xB1C9 },
  28460. -{ 0xB1CA, 0xB1CA, 0xB1CA },
  28461. -{ 0xB1CB, 0xB1CB, 0xB1CB },
  28462. -{ 0xB1CC, 0xB1CC, 0xB1CC },
  28463. -{ 0xB1CD, 0xB1CD, 0xB1CD },
  28464. -{ 0xB1CE, 0xB1CE, 0xB1CE },
  28465. -{ 0xB1CF, 0xB1CF, 0xB1CF },
  28466. -{ 0xB1D0, 0xB1D0, 0xB1D0 },
  28467. -{ 0xB1D1, 0xB1D1, 0xB1D1 },
  28468. -{ 0xB1D2, 0xB1D2, 0xB1D2 },
  28469. -{ 0xB1D3, 0xB1D3, 0xB1D3 },
  28470. -{ 0xB1D4, 0xB1D4, 0xB1D4 },
  28471. -{ 0xB1D5, 0xB1D5, 0xB1D5 },
  28472. -{ 0xB1D6, 0xB1D6, 0xB1D6 },
  28473. -{ 0xB1D7, 0xB1D7, 0xB1D7 },
  28474. -{ 0xB1D8, 0xB1D8, 0xB1D8 },
  28475. -{ 0xB1D9, 0xB1D9, 0xB1D9 },
  28476. -{ 0xB1DA, 0xB1DA, 0xB1DA },
  28477. -{ 0xB1DB, 0xB1DB, 0xB1DB },
  28478. -{ 0xB1DC, 0xB1DC, 0xB1DC },
  28479. -{ 0xB1DD, 0xB1DD, 0xB1DD },
  28480. -{ 0xB1DE, 0xB1DE, 0xB1DE },
  28481. -{ 0xB1DF, 0xB1DF, 0xB1DF },
  28482. -{ 0xB1E0, 0xB1E0, 0xB1E0 },
  28483. -{ 0xB1E1, 0xB1E1, 0xB1E1 },
  28484. -{ 0xB1E2, 0xB1E2, 0xB1E2 },
  28485. -{ 0xB1E3, 0xB1E3, 0xB1E3 },
  28486. -{ 0xB1E4, 0xB1E4, 0xB1E4 },
  28487. -{ 0xB1E5, 0xB1E5, 0xB1E5 },
  28488. -{ 0xB1E6, 0xB1E6, 0xB1E6 },
  28489. -{ 0xB1E7, 0xB1E7, 0xB1E7 },
  28490. -{ 0xB1E8, 0xB1E8, 0xB1E8 },
  28491. -{ 0xB1E9, 0xB1E9, 0xB1E9 },
  28492. -{ 0xB1EA, 0xB1EA, 0xB1EA },
  28493. -{ 0xB1EB, 0xB1EB, 0xB1EB },
  28494. -{ 0xB1EC, 0xB1EC, 0xB1EC },
  28495. -{ 0xB1ED, 0xB1ED, 0xB1ED },
  28496. -{ 0xB1EE, 0xB1EE, 0xB1EE },
  28497. -{ 0xB1EF, 0xB1EF, 0xB1EF },
  28498. -{ 0xB1F0, 0xB1F0, 0xB1F0 },
  28499. -{ 0xB1F1, 0xB1F1, 0xB1F1 },
  28500. -{ 0xB1F2, 0xB1F2, 0xB1F2 },
  28501. -{ 0xB1F3, 0xB1F3, 0xB1F3 },
  28502. -{ 0xB1F4, 0xB1F4, 0xB1F4 },
  28503. -{ 0xB1F5, 0xB1F5, 0xB1F5 },
  28504. -{ 0xB1F6, 0xB1F6, 0xB1F6 },
  28505. -{ 0xB1F7, 0xB1F7, 0xB1F7 },
  28506. -{ 0xB1F8, 0xB1F8, 0xB1F8 },
  28507. -{ 0xB1F9, 0xB1F9, 0xB1F9 },
  28508. -{ 0xB1FA, 0xB1FA, 0xB1FA },
  28509. -{ 0xB1FB, 0xB1FB, 0xB1FB },
  28510. -{ 0xB1FC, 0xB1FC, 0xB1FC },
  28511. -{ 0xB1FD, 0xB1FD, 0xB1FD },
  28512. -{ 0xB1FE, 0xB1FE, 0xB1FE },
  28513. -{ 0xB1FF, 0xB1FF, 0xB1FF },
  28514. -{ 0xB200, 0xB200, 0xB200 },
  28515. -{ 0xB201, 0xB201, 0xB201 },
  28516. -{ 0xB202, 0xB202, 0xB202 },
  28517. -{ 0xB203, 0xB203, 0xB203 },
  28518. -{ 0xB204, 0xB204, 0xB204 },
  28519. -{ 0xB205, 0xB205, 0xB205 },
  28520. -{ 0xB206, 0xB206, 0xB206 },
  28521. -{ 0xB207, 0xB207, 0xB207 },
  28522. -{ 0xB208, 0xB208, 0xB208 },
  28523. -{ 0xB209, 0xB209, 0xB209 },
  28524. -{ 0xB20A, 0xB20A, 0xB20A },
  28525. -{ 0xB20B, 0xB20B, 0xB20B },
  28526. -{ 0xB20C, 0xB20C, 0xB20C },
  28527. -{ 0xB20D, 0xB20D, 0xB20D },
  28528. -{ 0xB20E, 0xB20E, 0xB20E },
  28529. -{ 0xB20F, 0xB20F, 0xB20F },
  28530. -{ 0xB210, 0xB210, 0xB210 },
  28531. -{ 0xB211, 0xB211, 0xB211 },
  28532. -{ 0xB212, 0xB212, 0xB212 },
  28533. -{ 0xB213, 0xB213, 0xB213 },
  28534. -{ 0xB214, 0xB214, 0xB214 },
  28535. -{ 0xB215, 0xB215, 0xB215 },
  28536. -{ 0xB216, 0xB216, 0xB216 },
  28537. -{ 0xB217, 0xB217, 0xB217 },
  28538. -{ 0xB218, 0xB218, 0xB218 },
  28539. -{ 0xB219, 0xB219, 0xB219 },
  28540. -{ 0xB21A, 0xB21A, 0xB21A },
  28541. -{ 0xB21B, 0xB21B, 0xB21B },
  28542. -{ 0xB21C, 0xB21C, 0xB21C },
  28543. -{ 0xB21D, 0xB21D, 0xB21D },
  28544. -{ 0xB21E, 0xB21E, 0xB21E },
  28545. -{ 0xB21F, 0xB21F, 0xB21F },
  28546. -{ 0xB220, 0xB220, 0xB220 },
  28547. -{ 0xB221, 0xB221, 0xB221 },
  28548. -{ 0xB222, 0xB222, 0xB222 },
  28549. -{ 0xB223, 0xB223, 0xB223 },
  28550. -{ 0xB224, 0xB224, 0xB224 },
  28551. -{ 0xB225, 0xB225, 0xB225 },
  28552. -{ 0xB226, 0xB226, 0xB226 },
  28553. -{ 0xB227, 0xB227, 0xB227 },
  28554. -{ 0xB228, 0xB228, 0xB228 },
  28555. -{ 0xB229, 0xB229, 0xB229 },
  28556. -{ 0xB22A, 0xB22A, 0xB22A },
  28557. -{ 0xB22B, 0xB22B, 0xB22B },
  28558. -{ 0xB22C, 0xB22C, 0xB22C },
  28559. -{ 0xB22D, 0xB22D, 0xB22D },
  28560. -{ 0xB22E, 0xB22E, 0xB22E },
  28561. -{ 0xB22F, 0xB22F, 0xB22F },
  28562. -{ 0xB230, 0xB230, 0xB230 },
  28563. -{ 0xB231, 0xB231, 0xB231 },
  28564. -{ 0xB232, 0xB232, 0xB232 },
  28565. -{ 0xB233, 0xB233, 0xB233 },
  28566. -{ 0xB234, 0xB234, 0xB234 },
  28567. -{ 0xB235, 0xB235, 0xB235 },
  28568. -{ 0xB236, 0xB236, 0xB236 },
  28569. -{ 0xB237, 0xB237, 0xB237 },
  28570. -{ 0xB238, 0xB238, 0xB238 },
  28571. -{ 0xB239, 0xB239, 0xB239 },
  28572. -{ 0xB23A, 0xB23A, 0xB23A },
  28573. -{ 0xB23B, 0xB23B, 0xB23B },
  28574. -{ 0xB23C, 0xB23C, 0xB23C },
  28575. -{ 0xB23D, 0xB23D, 0xB23D },
  28576. -{ 0xB23E, 0xB23E, 0xB23E },
  28577. -{ 0xB23F, 0xB23F, 0xB23F },
  28578. -{ 0xB240, 0xB240, 0xB240 },
  28579. -{ 0xB241, 0xB241, 0xB241 },
  28580. -{ 0xB242, 0xB242, 0xB242 },
  28581. -{ 0xB243, 0xB243, 0xB243 },
  28582. -{ 0xB244, 0xB244, 0xB244 },
  28583. -{ 0xB245, 0xB245, 0xB245 },
  28584. -{ 0xB246, 0xB246, 0xB246 },
  28585. -{ 0xB247, 0xB247, 0xB247 },
  28586. -{ 0xB248, 0xB248, 0xB248 },
  28587. -{ 0xB249, 0xB249, 0xB249 },
  28588. -{ 0xB24A, 0xB24A, 0xB24A },
  28589. -{ 0xB24B, 0xB24B, 0xB24B },
  28590. -{ 0xB24C, 0xB24C, 0xB24C },
  28591. -{ 0xB24D, 0xB24D, 0xB24D },
  28592. -{ 0xB24E, 0xB24E, 0xB24E },
  28593. -{ 0xB24F, 0xB24F, 0xB24F },
  28594. -{ 0xB250, 0xB250, 0xB250 },
  28595. -{ 0xB251, 0xB251, 0xB251 },
  28596. -{ 0xB252, 0xB252, 0xB252 },
  28597. -{ 0xB253, 0xB253, 0xB253 },
  28598. -{ 0xB254, 0xB254, 0xB254 },
  28599. -{ 0xB255, 0xB255, 0xB255 },
  28600. -{ 0xB256, 0xB256, 0xB256 },
  28601. -{ 0xB257, 0xB257, 0xB257 },
  28602. -{ 0xB258, 0xB258, 0xB258 },
  28603. -{ 0xB259, 0xB259, 0xB259 },
  28604. -{ 0xB25A, 0xB25A, 0xB25A },
  28605. -{ 0xB25B, 0xB25B, 0xB25B },
  28606. -{ 0xB25C, 0xB25C, 0xB25C },
  28607. -{ 0xB25D, 0xB25D, 0xB25D },
  28608. -{ 0xB25E, 0xB25E, 0xB25E },
  28609. -{ 0xB25F, 0xB25F, 0xB25F },
  28610. -{ 0xB260, 0xB260, 0xB260 },
  28611. -{ 0xB261, 0xB261, 0xB261 },
  28612. -{ 0xB262, 0xB262, 0xB262 },
  28613. -{ 0xB263, 0xB263, 0xB263 },
  28614. -{ 0xB264, 0xB264, 0xB264 },
  28615. -{ 0xB265, 0xB265, 0xB265 },
  28616. -{ 0xB266, 0xB266, 0xB266 },
  28617. -{ 0xB267, 0xB267, 0xB267 },
  28618. -{ 0xB268, 0xB268, 0xB268 },
  28619. -{ 0xB269, 0xB269, 0xB269 },
  28620. -{ 0xB26A, 0xB26A, 0xB26A },
  28621. -{ 0xB26B, 0xB26B, 0xB26B },
  28622. -{ 0xB26C, 0xB26C, 0xB26C },
  28623. -{ 0xB26D, 0xB26D, 0xB26D },
  28624. -{ 0xB26E, 0xB26E, 0xB26E },
  28625. -{ 0xB26F, 0xB26F, 0xB26F },
  28626. -{ 0xB270, 0xB270, 0xB270 },
  28627. -{ 0xB271, 0xB271, 0xB271 },
  28628. -{ 0xB272, 0xB272, 0xB272 },
  28629. -{ 0xB273, 0xB273, 0xB273 },
  28630. -{ 0xB274, 0xB274, 0xB274 },
  28631. -{ 0xB275, 0xB275, 0xB275 },
  28632. -{ 0xB276, 0xB276, 0xB276 },
  28633. -{ 0xB277, 0xB277, 0xB277 },
  28634. -{ 0xB278, 0xB278, 0xB278 },
  28635. -{ 0xB279, 0xB279, 0xB279 },
  28636. -{ 0xB27A, 0xB27A, 0xB27A },
  28637. -{ 0xB27B, 0xB27B, 0xB27B },
  28638. -{ 0xB27C, 0xB27C, 0xB27C },
  28639. -{ 0xB27D, 0xB27D, 0xB27D },
  28640. -{ 0xB27E, 0xB27E, 0xB27E },
  28641. -{ 0xB27F, 0xB27F, 0xB27F },
  28642. -{ 0xB280, 0xB280, 0xB280 },
  28643. -{ 0xB281, 0xB281, 0xB281 },
  28644. -{ 0xB282, 0xB282, 0xB282 },
  28645. -{ 0xB283, 0xB283, 0xB283 },
  28646. -{ 0xB284, 0xB284, 0xB284 },
  28647. -{ 0xB285, 0xB285, 0xB285 },
  28648. -{ 0xB286, 0xB286, 0xB286 },
  28649. -{ 0xB287, 0xB287, 0xB287 },
  28650. -{ 0xB288, 0xB288, 0xB288 },
  28651. -{ 0xB289, 0xB289, 0xB289 },
  28652. -{ 0xB28A, 0xB28A, 0xB28A },
  28653. -{ 0xB28B, 0xB28B, 0xB28B },
  28654. -{ 0xB28C, 0xB28C, 0xB28C },
  28655. -{ 0xB28D, 0xB28D, 0xB28D },
  28656. -{ 0xB28E, 0xB28E, 0xB28E },
  28657. -{ 0xB28F, 0xB28F, 0xB28F },
  28658. -{ 0xB290, 0xB290, 0xB290 },
  28659. -{ 0xB291, 0xB291, 0xB291 },
  28660. -{ 0xB292, 0xB292, 0xB292 },
  28661. -{ 0xB293, 0xB293, 0xB293 },
  28662. -{ 0xB294, 0xB294, 0xB294 },
  28663. -{ 0xB295, 0xB295, 0xB295 },
  28664. -{ 0xB296, 0xB296, 0xB296 },
  28665. -{ 0xB297, 0xB297, 0xB297 },
  28666. -{ 0xB298, 0xB298, 0xB298 },
  28667. -{ 0xB299, 0xB299, 0xB299 },
  28668. -{ 0xB29A, 0xB29A, 0xB29A },
  28669. -{ 0xB29B, 0xB29B, 0xB29B },
  28670. -{ 0xB29C, 0xB29C, 0xB29C },
  28671. -{ 0xB29D, 0xB29D, 0xB29D },
  28672. -{ 0xB29E, 0xB29E, 0xB29E },
  28673. -{ 0xB29F, 0xB29F, 0xB29F },
  28674. -{ 0xB2A0, 0xB2A0, 0xB2A0 },
  28675. -{ 0xB2A1, 0xB2A1, 0xB2A1 },
  28676. -{ 0xB2A2, 0xB2A2, 0xB2A2 },
  28677. -{ 0xB2A3, 0xB2A3, 0xB2A3 },
  28678. -{ 0xB2A4, 0xB2A4, 0xB2A4 },
  28679. -{ 0xB2A5, 0xB2A5, 0xB2A5 },
  28680. -{ 0xB2A6, 0xB2A6, 0xB2A6 },
  28681. -{ 0xB2A7, 0xB2A7, 0xB2A7 },
  28682. -{ 0xB2A8, 0xB2A8, 0xB2A8 },
  28683. -{ 0xB2A9, 0xB2A9, 0xB2A9 },
  28684. -{ 0xB2AA, 0xB2AA, 0xB2AA },
  28685. -{ 0xB2AB, 0xB2AB, 0xB2AB },
  28686. -{ 0xB2AC, 0xB2AC, 0xB2AC },
  28687. -{ 0xB2AD, 0xB2AD, 0xB2AD },
  28688. -{ 0xB2AE, 0xB2AE, 0xB2AE },
  28689. -{ 0xB2AF, 0xB2AF, 0xB2AF },
  28690. -{ 0xB2B0, 0xB2B0, 0xB2B0 },
  28691. -{ 0xB2B1, 0xB2B1, 0xB2B1 },
  28692. -{ 0xB2B2, 0xB2B2, 0xB2B2 },
  28693. -{ 0xB2B3, 0xB2B3, 0xB2B3 },
  28694. -{ 0xB2B4, 0xB2B4, 0xB2B4 },
  28695. -{ 0xB2B5, 0xB2B5, 0xB2B5 },
  28696. -{ 0xB2B6, 0xB2B6, 0xB2B6 },
  28697. -{ 0xB2B7, 0xB2B7, 0xB2B7 },
  28698. -{ 0xB2B8, 0xB2B8, 0xB2B8 },
  28699. -{ 0xB2B9, 0xB2B9, 0xB2B9 },
  28700. -{ 0xB2BA, 0xB2BA, 0xB2BA },
  28701. -{ 0xB2BB, 0xB2BB, 0xB2BB },
  28702. -{ 0xB2BC, 0xB2BC, 0xB2BC },
  28703. -{ 0xB2BD, 0xB2BD, 0xB2BD },
  28704. -{ 0xB2BE, 0xB2BE, 0xB2BE },
  28705. -{ 0xB2BF, 0xB2BF, 0xB2BF },
  28706. -{ 0xB2C0, 0xB2C0, 0xB2C0 },
  28707. -{ 0xB2C1, 0xB2C1, 0xB2C1 },
  28708. -{ 0xB2C2, 0xB2C2, 0xB2C2 },
  28709. -{ 0xB2C3, 0xB2C3, 0xB2C3 },
  28710. -{ 0xB2C4, 0xB2C4, 0xB2C4 },
  28711. -{ 0xB2C5, 0xB2C5, 0xB2C5 },
  28712. -{ 0xB2C6, 0xB2C6, 0xB2C6 },
  28713. -{ 0xB2C7, 0xB2C7, 0xB2C7 },
  28714. -{ 0xB2C8, 0xB2C8, 0xB2C8 },
  28715. -{ 0xB2C9, 0xB2C9, 0xB2C9 },
  28716. -{ 0xB2CA, 0xB2CA, 0xB2CA },
  28717. -{ 0xB2CB, 0xB2CB, 0xB2CB },
  28718. -{ 0xB2CC, 0xB2CC, 0xB2CC },
  28719. -{ 0xB2CD, 0xB2CD, 0xB2CD },
  28720. -{ 0xB2CE, 0xB2CE, 0xB2CE },
  28721. -{ 0xB2CF, 0xB2CF, 0xB2CF },
  28722. -{ 0xB2D0, 0xB2D0, 0xB2D0 },
  28723. -{ 0xB2D1, 0xB2D1, 0xB2D1 },
  28724. -{ 0xB2D2, 0xB2D2, 0xB2D2 },
  28725. -{ 0xB2D3, 0xB2D3, 0xB2D3 },
  28726. -{ 0xB2D4, 0xB2D4, 0xB2D4 },
  28727. -{ 0xB2D5, 0xB2D5, 0xB2D5 },
  28728. -{ 0xB2D6, 0xB2D6, 0xB2D6 },
  28729. -{ 0xB2D7, 0xB2D7, 0xB2D7 },
  28730. -{ 0xB2D8, 0xB2D8, 0xB2D8 },
  28731. -{ 0xB2D9, 0xB2D9, 0xB2D9 },
  28732. -{ 0xB2DA, 0xB2DA, 0xB2DA },
  28733. -{ 0xB2DB, 0xB2DB, 0xB2DB },
  28734. -{ 0xB2DC, 0xB2DC, 0xB2DC },
  28735. -{ 0xB2DD, 0xB2DD, 0xB2DD },
  28736. -{ 0xB2DE, 0xB2DE, 0xB2DE },
  28737. -{ 0xB2DF, 0xB2DF, 0xB2DF },
  28738. -{ 0xB2E0, 0xB2E0, 0xB2E0 },
  28739. -{ 0xB2E1, 0xB2E1, 0xB2E1 },
  28740. -{ 0xB2E2, 0xB2E2, 0xB2E2 },
  28741. -{ 0xB2E3, 0xB2E3, 0xB2E3 },
  28742. -{ 0xB2E4, 0xB2E4, 0xB2E4 },
  28743. -{ 0xB2E5, 0xB2E5, 0xB2E5 },
  28744. -{ 0xB2E6, 0xB2E6, 0xB2E6 },
  28745. -{ 0xB2E7, 0xB2E7, 0xB2E7 },
  28746. -{ 0xB2E8, 0xB2E8, 0xB2E8 },
  28747. -{ 0xB2E9, 0xB2E9, 0xB2E9 },
  28748. -{ 0xB2EA, 0xB2EA, 0xB2EA },
  28749. -{ 0xB2EB, 0xB2EB, 0xB2EB },
  28750. -{ 0xB2EC, 0xB2EC, 0xB2EC },
  28751. -{ 0xB2ED, 0xB2ED, 0xB2ED },
  28752. -{ 0xB2EE, 0xB2EE, 0xB2EE },
  28753. -{ 0xB2EF, 0xB2EF, 0xB2EF },
  28754. -{ 0xB2F0, 0xB2F0, 0xB2F0 },
  28755. -{ 0xB2F1, 0xB2F1, 0xB2F1 },
  28756. -{ 0xB2F2, 0xB2F2, 0xB2F2 },
  28757. -{ 0xB2F3, 0xB2F3, 0xB2F3 },
  28758. -{ 0xB2F4, 0xB2F4, 0xB2F4 },
  28759. -{ 0xB2F5, 0xB2F5, 0xB2F5 },
  28760. -{ 0xB2F6, 0xB2F6, 0xB2F6 },
  28761. -{ 0xB2F7, 0xB2F7, 0xB2F7 },
  28762. -{ 0xB2F8, 0xB2F8, 0xB2F8 },
  28763. -{ 0xB2F9, 0xB2F9, 0xB2F9 },
  28764. -{ 0xB2FA, 0xB2FA, 0xB2FA },
  28765. -{ 0xB2FB, 0xB2FB, 0xB2FB },
  28766. -{ 0xB2FC, 0xB2FC, 0xB2FC },
  28767. -{ 0xB2FD, 0xB2FD, 0xB2FD },
  28768. -{ 0xB2FE, 0xB2FE, 0xB2FE },
  28769. -{ 0xB2FF, 0xB2FF, 0xB2FF },
  28770. -{ 0xB300, 0xB300, 0xB300 },
  28771. -{ 0xB301, 0xB301, 0xB301 },
  28772. -{ 0xB302, 0xB302, 0xB302 },
  28773. -{ 0xB303, 0xB303, 0xB303 },
  28774. -{ 0xB304, 0xB304, 0xB304 },
  28775. -{ 0xB305, 0xB305, 0xB305 },
  28776. -{ 0xB306, 0xB306, 0xB306 },
  28777. -{ 0xB307, 0xB307, 0xB307 },
  28778. -{ 0xB308, 0xB308, 0xB308 },
  28779. -{ 0xB309, 0xB309, 0xB309 },
  28780. -{ 0xB30A, 0xB30A, 0xB30A },
  28781. -{ 0xB30B, 0xB30B, 0xB30B },
  28782. -{ 0xB30C, 0xB30C, 0xB30C },
  28783. -{ 0xB30D, 0xB30D, 0xB30D },
  28784. -{ 0xB30E, 0xB30E, 0xB30E },
  28785. -{ 0xB30F, 0xB30F, 0xB30F },
  28786. -{ 0xB310, 0xB310, 0xB310 },
  28787. -{ 0xB311, 0xB311, 0xB311 },
  28788. -{ 0xB312, 0xB312, 0xB312 },
  28789. -{ 0xB313, 0xB313, 0xB313 },
  28790. -{ 0xB314, 0xB314, 0xB314 },
  28791. -{ 0xB315, 0xB315, 0xB315 },
  28792. -{ 0xB316, 0xB316, 0xB316 },
  28793. -{ 0xB317, 0xB317, 0xB317 },
  28794. -{ 0xB318, 0xB318, 0xB318 },
  28795. -{ 0xB319, 0xB319, 0xB319 },
  28796. -{ 0xB31A, 0xB31A, 0xB31A },
  28797. -{ 0xB31B, 0xB31B, 0xB31B },
  28798. -{ 0xB31C, 0xB31C, 0xB31C },
  28799. -{ 0xB31D, 0xB31D, 0xB31D },
  28800. -{ 0xB31E, 0xB31E, 0xB31E },
  28801. -{ 0xB31F, 0xB31F, 0xB31F },
  28802. -{ 0xB320, 0xB320, 0xB320 },
  28803. -{ 0xB321, 0xB321, 0xB321 },
  28804. -{ 0xB322, 0xB322, 0xB322 },
  28805. -{ 0xB323, 0xB323, 0xB323 },
  28806. -{ 0xB324, 0xB324, 0xB324 },
  28807. -{ 0xB325, 0xB325, 0xB325 },
  28808. -{ 0xB326, 0xB326, 0xB326 },
  28809. -{ 0xB327, 0xB327, 0xB327 },
  28810. -{ 0xB328, 0xB328, 0xB328 },
  28811. -{ 0xB329, 0xB329, 0xB329 },
  28812. -{ 0xB32A, 0xB32A, 0xB32A },
  28813. -{ 0xB32B, 0xB32B, 0xB32B },
  28814. -{ 0xB32C, 0xB32C, 0xB32C },
  28815. -{ 0xB32D, 0xB32D, 0xB32D },
  28816. -{ 0xB32E, 0xB32E, 0xB32E },
  28817. -{ 0xB32F, 0xB32F, 0xB32F },
  28818. -{ 0xB330, 0xB330, 0xB330 },
  28819. -{ 0xB331, 0xB331, 0xB331 },
  28820. -{ 0xB332, 0xB332, 0xB332 },
  28821. -{ 0xB333, 0xB333, 0xB333 },
  28822. -{ 0xB334, 0xB334, 0xB334 },
  28823. -{ 0xB335, 0xB335, 0xB335 },
  28824. -{ 0xB336, 0xB336, 0xB336 },
  28825. -{ 0xB337, 0xB337, 0xB337 },
  28826. -{ 0xB338, 0xB338, 0xB338 },
  28827. -{ 0xB339, 0xB339, 0xB339 },
  28828. -{ 0xB33A, 0xB33A, 0xB33A },
  28829. -{ 0xB33B, 0xB33B, 0xB33B },
  28830. -{ 0xB33C, 0xB33C, 0xB33C },
  28831. -{ 0xB33D, 0xB33D, 0xB33D },
  28832. -{ 0xB33E, 0xB33E, 0xB33E },
  28833. -{ 0xB33F, 0xB33F, 0xB33F },
  28834. -{ 0xB340, 0xB340, 0xB340 },
  28835. -{ 0xB341, 0xB341, 0xB341 },
  28836. -{ 0xB342, 0xB342, 0xB342 },
  28837. -{ 0xB343, 0xB343, 0xB343 },
  28838. -{ 0xB344, 0xB344, 0xB344 },
  28839. -{ 0xB345, 0xB345, 0xB345 },
  28840. -{ 0xB346, 0xB346, 0xB346 },
  28841. -{ 0xB347, 0xB347, 0xB347 },
  28842. -{ 0xB348, 0xB348, 0xB348 },
  28843. -{ 0xB349, 0xB349, 0xB349 },
  28844. -{ 0xB34A, 0xB34A, 0xB34A },
  28845. -{ 0xB34B, 0xB34B, 0xB34B },
  28846. -{ 0xB34C, 0xB34C, 0xB34C },
  28847. -{ 0xB34D, 0xB34D, 0xB34D },
  28848. -{ 0xB34E, 0xB34E, 0xB34E },
  28849. -{ 0xB34F, 0xB34F, 0xB34F },
  28850. -{ 0xB350, 0xB350, 0xB350 },
  28851. -{ 0xB351, 0xB351, 0xB351 },
  28852. -{ 0xB352, 0xB352, 0xB352 },
  28853. -{ 0xB353, 0xB353, 0xB353 },
  28854. -{ 0xB354, 0xB354, 0xB354 },
  28855. -{ 0xB355, 0xB355, 0xB355 },
  28856. -{ 0xB356, 0xB356, 0xB356 },
  28857. -{ 0xB357, 0xB357, 0xB357 },
  28858. -{ 0xB358, 0xB358, 0xB358 },
  28859. -{ 0xB359, 0xB359, 0xB359 },
  28860. -{ 0xB35A, 0xB35A, 0xB35A },
  28861. -{ 0xB35B, 0xB35B, 0xB35B },
  28862. -{ 0xB35C, 0xB35C, 0xB35C },
  28863. -{ 0xB35D, 0xB35D, 0xB35D },
  28864. -{ 0xB35E, 0xB35E, 0xB35E },
  28865. -{ 0xB35F, 0xB35F, 0xB35F },
  28866. -{ 0xB360, 0xB360, 0xB360 },
  28867. -{ 0xB361, 0xB361, 0xB361 },
  28868. -{ 0xB362, 0xB362, 0xB362 },
  28869. -{ 0xB363, 0xB363, 0xB363 },
  28870. -{ 0xB364, 0xB364, 0xB364 },
  28871. -{ 0xB365, 0xB365, 0xB365 },
  28872. -{ 0xB366, 0xB366, 0xB366 },
  28873. -{ 0xB367, 0xB367, 0xB367 },
  28874. -{ 0xB368, 0xB368, 0xB368 },
  28875. -{ 0xB369, 0xB369, 0xB369 },
  28876. -{ 0xB36A, 0xB36A, 0xB36A },
  28877. -{ 0xB36B, 0xB36B, 0xB36B },
  28878. -{ 0xB36C, 0xB36C, 0xB36C },
  28879. -{ 0xB36D, 0xB36D, 0xB36D },
  28880. -{ 0xB36E, 0xB36E, 0xB36E },
  28881. -{ 0xB36F, 0xB36F, 0xB36F },
  28882. -{ 0xB370, 0xB370, 0xB370 },
  28883. -{ 0xB371, 0xB371, 0xB371 },
  28884. -{ 0xB372, 0xB372, 0xB372 },
  28885. -{ 0xB373, 0xB373, 0xB373 },
  28886. -{ 0xB374, 0xB374, 0xB374 },
  28887. -{ 0xB375, 0xB375, 0xB375 },
  28888. -{ 0xB376, 0xB376, 0xB376 },
  28889. -{ 0xB377, 0xB377, 0xB377 },
  28890. -{ 0xB378, 0xB378, 0xB378 },
  28891. -{ 0xB379, 0xB379, 0xB379 },
  28892. -{ 0xB37A, 0xB37A, 0xB37A },
  28893. -{ 0xB37B, 0xB37B, 0xB37B },
  28894. -{ 0xB37C, 0xB37C, 0xB37C },
  28895. -{ 0xB37D, 0xB37D, 0xB37D },
  28896. -{ 0xB37E, 0xB37E, 0xB37E },
  28897. -{ 0xB37F, 0xB37F, 0xB37F },
  28898. -{ 0xB380, 0xB380, 0xB380 },
  28899. -{ 0xB381, 0xB381, 0xB381 },
  28900. -{ 0xB382, 0xB382, 0xB382 },
  28901. -{ 0xB383, 0xB383, 0xB383 },
  28902. -{ 0xB384, 0xB384, 0xB384 },
  28903. -{ 0xB385, 0xB385, 0xB385 },
  28904. -{ 0xB386, 0xB386, 0xB386 },
  28905. -{ 0xB387, 0xB387, 0xB387 },
  28906. -{ 0xB388, 0xB388, 0xB388 },
  28907. -{ 0xB389, 0xB389, 0xB389 },
  28908. -{ 0xB38A, 0xB38A, 0xB38A },
  28909. -{ 0xB38B, 0xB38B, 0xB38B },
  28910. -{ 0xB38C, 0xB38C, 0xB38C },
  28911. -{ 0xB38D, 0xB38D, 0xB38D },
  28912. -{ 0xB38E, 0xB38E, 0xB38E },
  28913. -{ 0xB38F, 0xB38F, 0xB38F },
  28914. -{ 0xB390, 0xB390, 0xB390 },
  28915. -{ 0xB391, 0xB391, 0xB391 },
  28916. -{ 0xB392, 0xB392, 0xB392 },
  28917. -{ 0xB393, 0xB393, 0xB393 },
  28918. -{ 0xB394, 0xB394, 0xB394 },
  28919. -{ 0xB395, 0xB395, 0xB395 },
  28920. -{ 0xB396, 0xB396, 0xB396 },
  28921. -{ 0xB397, 0xB397, 0xB397 },
  28922. -{ 0xB398, 0xB398, 0xB398 },
  28923. -{ 0xB399, 0xB399, 0xB399 },
  28924. -{ 0xB39A, 0xB39A, 0xB39A },
  28925. -{ 0xB39B, 0xB39B, 0xB39B },
  28926. -{ 0xB39C, 0xB39C, 0xB39C },
  28927. -{ 0xB39D, 0xB39D, 0xB39D },
  28928. -{ 0xB39E, 0xB39E, 0xB39E },
  28929. -{ 0xB39F, 0xB39F, 0xB39F },
  28930. -{ 0xB3A0, 0xB3A0, 0xB3A0 },
  28931. -{ 0xB3A1, 0xB3A1, 0xB3A1 },
  28932. -{ 0xB3A2, 0xB3A2, 0xB3A2 },
  28933. -{ 0xB3A3, 0xB3A3, 0xB3A3 },
  28934. -{ 0xB3A4, 0xB3A4, 0xB3A4 },
  28935. -{ 0xB3A5, 0xB3A5, 0xB3A5 },
  28936. -{ 0xB3A6, 0xB3A6, 0xB3A6 },
  28937. -{ 0xB3A7, 0xB3A7, 0xB3A7 },
  28938. -{ 0xB3A8, 0xB3A8, 0xB3A8 },
  28939. -{ 0xB3A9, 0xB3A9, 0xB3A9 },
  28940. -{ 0xB3AA, 0xB3AA, 0xB3AA },
  28941. -{ 0xB3AB, 0xB3AB, 0xB3AB },
  28942. -{ 0xB3AC, 0xB3AC, 0xB3AC },
  28943. -{ 0xB3AD, 0xB3AD, 0xB3AD },
  28944. -{ 0xB3AE, 0xB3AE, 0xB3AE },
  28945. -{ 0xB3AF, 0xB3AF, 0xB3AF },
  28946. -{ 0xB3B0, 0xB3B0, 0xB3B0 },
  28947. -{ 0xB3B1, 0xB3B1, 0xB3B1 },
  28948. -{ 0xB3B2, 0xB3B2, 0xB3B2 },
  28949. -{ 0xB3B3, 0xB3B3, 0xB3B3 },
  28950. -{ 0xB3B4, 0xB3B4, 0xB3B4 },
  28951. -{ 0xB3B5, 0xB3B5, 0xB3B5 },
  28952. -{ 0xB3B6, 0xB3B6, 0xB3B6 },
  28953. -{ 0xB3B7, 0xB3B7, 0xB3B7 },
  28954. -{ 0xB3B8, 0xB3B8, 0xB3B8 },
  28955. -{ 0xB3B9, 0xB3B9, 0xB3B9 },
  28956. -{ 0xB3BA, 0xB3BA, 0xB3BA },
  28957. -{ 0xB3BB, 0xB3BB, 0xB3BB },
  28958. -{ 0xB3BC, 0xB3BC, 0xB3BC },
  28959. -{ 0xB3BD, 0xB3BD, 0xB3BD },
  28960. -{ 0xB3BE, 0xB3BE, 0xB3BE },
  28961. -{ 0xB3BF, 0xB3BF, 0xB3BF },
  28962. -{ 0xB3C0, 0xB3C0, 0xB3C0 },
  28963. -{ 0xB3C1, 0xB3C1, 0xB3C1 },
  28964. -{ 0xB3C2, 0xB3C2, 0xB3C2 },
  28965. -{ 0xB3C3, 0xB3C3, 0xB3C3 },
  28966. -{ 0xB3C4, 0xB3C4, 0xB3C4 },
  28967. -{ 0xB3C5, 0xB3C5, 0xB3C5 },
  28968. -{ 0xB3C6, 0xB3C6, 0xB3C6 },
  28969. -{ 0xB3C7, 0xB3C7, 0xB3C7 },
  28970. -{ 0xB3C8, 0xB3C8, 0xB3C8 },
  28971. -{ 0xB3C9, 0xB3C9, 0xB3C9 },
  28972. -{ 0xB3CA, 0xB3CA, 0xB3CA },
  28973. -{ 0xB3CB, 0xB3CB, 0xB3CB },
  28974. -{ 0xB3CC, 0xB3CC, 0xB3CC },
  28975. -{ 0xB3CD, 0xB3CD, 0xB3CD },
  28976. -{ 0xB3CE, 0xB3CE, 0xB3CE },
  28977. -{ 0xB3CF, 0xB3CF, 0xB3CF },
  28978. -{ 0xB3D0, 0xB3D0, 0xB3D0 },
  28979. -{ 0xB3D1, 0xB3D1, 0xB3D1 },
  28980. -{ 0xB3D2, 0xB3D2, 0xB3D2 },
  28981. -{ 0xB3D3, 0xB3D3, 0xB3D3 },
  28982. -{ 0xB3D4, 0xB3D4, 0xB3D4 },
  28983. -{ 0xB3D5, 0xB3D5, 0xB3D5 },
  28984. -{ 0xB3D6, 0xB3D6, 0xB3D6 },
  28985. -{ 0xB3D7, 0xB3D7, 0xB3D7 },
  28986. -{ 0xB3D8, 0xB3D8, 0xB3D8 },
  28987. -{ 0xB3D9, 0xB3D9, 0xB3D9 },
  28988. -{ 0xB3DA, 0xB3DA, 0xB3DA },
  28989. -{ 0xB3DB, 0xB3DB, 0xB3DB },
  28990. -{ 0xB3DC, 0xB3DC, 0xB3DC },
  28991. -{ 0xB3DD, 0xB3DD, 0xB3DD },
  28992. -{ 0xB3DE, 0xB3DE, 0xB3DE },
  28993. -{ 0xB3DF, 0xB3DF, 0xB3DF },
  28994. -{ 0xB3E0, 0xB3E0, 0xB3E0 },
  28995. -{ 0xB3E1, 0xB3E1, 0xB3E1 },
  28996. -{ 0xB3E2, 0xB3E2, 0xB3E2 },
  28997. -{ 0xB3E3, 0xB3E3, 0xB3E3 },
  28998. -{ 0xB3E4, 0xB3E4, 0xB3E4 },
  28999. -{ 0xB3E5, 0xB3E5, 0xB3E5 },
  29000. -{ 0xB3E6, 0xB3E6, 0xB3E6 },
  29001. -{ 0xB3E7, 0xB3E7, 0xB3E7 },
  29002. -{ 0xB3E8, 0xB3E8, 0xB3E8 },
  29003. -{ 0xB3E9, 0xB3E9, 0xB3E9 },
  29004. -{ 0xB3EA, 0xB3EA, 0xB3EA },
  29005. -{ 0xB3EB, 0xB3EB, 0xB3EB },
  29006. -{ 0xB3EC, 0xB3EC, 0xB3EC },
  29007. -{ 0xB3ED, 0xB3ED, 0xB3ED },
  29008. -{ 0xB3EE, 0xB3EE, 0xB3EE },
  29009. -{ 0xB3EF, 0xB3EF, 0xB3EF },
  29010. -{ 0xB3F0, 0xB3F0, 0xB3F0 },
  29011. -{ 0xB3F1, 0xB3F1, 0xB3F1 },
  29012. -{ 0xB3F2, 0xB3F2, 0xB3F2 },
  29013. -{ 0xB3F3, 0xB3F3, 0xB3F3 },
  29014. -{ 0xB3F4, 0xB3F4, 0xB3F4 },
  29015. -{ 0xB3F5, 0xB3F5, 0xB3F5 },
  29016. -{ 0xB3F6, 0xB3F6, 0xB3F6 },
  29017. -{ 0xB3F7, 0xB3F7, 0xB3F7 },
  29018. -{ 0xB3F8, 0xB3F8, 0xB3F8 },
  29019. -{ 0xB3F9, 0xB3F9, 0xB3F9 },
  29020. -{ 0xB3FA, 0xB3FA, 0xB3FA },
  29021. -{ 0xB3FB, 0xB3FB, 0xB3FB },
  29022. -{ 0xB3FC, 0xB3FC, 0xB3FC },
  29023. -{ 0xB3FD, 0xB3FD, 0xB3FD },
  29024. -{ 0xB3FE, 0xB3FE, 0xB3FE },
  29025. -{ 0xB3FF, 0xB3FF, 0xB3FF },
  29026. -{ 0xB400, 0xB400, 0xB400 },
  29027. -{ 0xB401, 0xB401, 0xB401 },
  29028. -{ 0xB402, 0xB402, 0xB402 },
  29029. -{ 0xB403, 0xB403, 0xB403 },
  29030. -{ 0xB404, 0xB404, 0xB404 },
  29031. -{ 0xB405, 0xB405, 0xB405 },
  29032. -{ 0xB406, 0xB406, 0xB406 },
  29033. -{ 0xB407, 0xB407, 0xB407 },
  29034. -{ 0xB408, 0xB408, 0xB408 },
  29035. -{ 0xB409, 0xB409, 0xB409 },
  29036. -{ 0xB40A, 0xB40A, 0xB40A },
  29037. -{ 0xB40B, 0xB40B, 0xB40B },
  29038. -{ 0xB40C, 0xB40C, 0xB40C },
  29039. -{ 0xB40D, 0xB40D, 0xB40D },
  29040. -{ 0xB40E, 0xB40E, 0xB40E },
  29041. -{ 0xB40F, 0xB40F, 0xB40F },
  29042. -{ 0xB410, 0xB410, 0xB410 },
  29043. -{ 0xB411, 0xB411, 0xB411 },
  29044. -{ 0xB412, 0xB412, 0xB412 },
  29045. -{ 0xB413, 0xB413, 0xB413 },
  29046. -{ 0xB414, 0xB414, 0xB414 },
  29047. -{ 0xB415, 0xB415, 0xB415 },
  29048. -{ 0xB416, 0xB416, 0xB416 },
  29049. -{ 0xB417, 0xB417, 0xB417 },
  29050. -{ 0xB418, 0xB418, 0xB418 },
  29051. -{ 0xB419, 0xB419, 0xB419 },
  29052. -{ 0xB41A, 0xB41A, 0xB41A },
  29053. -{ 0xB41B, 0xB41B, 0xB41B },
  29054. -{ 0xB41C, 0xB41C, 0xB41C },
  29055. -{ 0xB41D, 0xB41D, 0xB41D },
  29056. -{ 0xB41E, 0xB41E, 0xB41E },
  29057. -{ 0xB41F, 0xB41F, 0xB41F },
  29058. -{ 0xB420, 0xB420, 0xB420 },
  29059. -{ 0xB421, 0xB421, 0xB421 },
  29060. -{ 0xB422, 0xB422, 0xB422 },
  29061. -{ 0xB423, 0xB423, 0xB423 },
  29062. -{ 0xB424, 0xB424, 0xB424 },
  29063. -{ 0xB425, 0xB425, 0xB425 },
  29064. -{ 0xB426, 0xB426, 0xB426 },
  29065. -{ 0xB427, 0xB427, 0xB427 },
  29066. -{ 0xB428, 0xB428, 0xB428 },
  29067. -{ 0xB429, 0xB429, 0xB429 },
  29068. -{ 0xB42A, 0xB42A, 0xB42A },
  29069. -{ 0xB42B, 0xB42B, 0xB42B },
  29070. -{ 0xB42C, 0xB42C, 0xB42C },
  29071. -{ 0xB42D, 0xB42D, 0xB42D },
  29072. -{ 0xB42E, 0xB42E, 0xB42E },
  29073. -{ 0xB42F, 0xB42F, 0xB42F },
  29074. -{ 0xB430, 0xB430, 0xB430 },
  29075. -{ 0xB431, 0xB431, 0xB431 },
  29076. -{ 0xB432, 0xB432, 0xB432 },
  29077. -{ 0xB433, 0xB433, 0xB433 },
  29078. -{ 0xB434, 0xB434, 0xB434 },
  29079. -{ 0xB435, 0xB435, 0xB435 },
  29080. -{ 0xB436, 0xB436, 0xB436 },
  29081. -{ 0xB437, 0xB437, 0xB437 },
  29082. -{ 0xB438, 0xB438, 0xB438 },
  29083. -{ 0xB439, 0xB439, 0xB439 },
  29084. -{ 0xB43A, 0xB43A, 0xB43A },
  29085. -{ 0xB43B, 0xB43B, 0xB43B },
  29086. -{ 0xB43C, 0xB43C, 0xB43C },
  29087. -{ 0xB43D, 0xB43D, 0xB43D },
  29088. -{ 0xB43E, 0xB43E, 0xB43E },
  29089. -{ 0xB43F, 0xB43F, 0xB43F },
  29090. -{ 0xB440, 0xB440, 0xB440 },
  29091. -{ 0xB441, 0xB441, 0xB441 },
  29092. -{ 0xB442, 0xB442, 0xB442 },
  29093. -{ 0xB443, 0xB443, 0xB443 },
  29094. -{ 0xB444, 0xB444, 0xB444 },
  29095. -{ 0xB445, 0xB445, 0xB445 },
  29096. -{ 0xB446, 0xB446, 0xB446 },
  29097. -{ 0xB447, 0xB447, 0xB447 },
  29098. -{ 0xB448, 0xB448, 0xB448 },
  29099. -{ 0xB449, 0xB449, 0xB449 },
  29100. -{ 0xB44A, 0xB44A, 0xB44A },
  29101. -{ 0xB44B, 0xB44B, 0xB44B },
  29102. -{ 0xB44C, 0xB44C, 0xB44C },
  29103. -{ 0xB44D, 0xB44D, 0xB44D },
  29104. -{ 0xB44E, 0xB44E, 0xB44E },
  29105. -{ 0xB44F, 0xB44F, 0xB44F },
  29106. -{ 0xB450, 0xB450, 0xB450 },
  29107. -{ 0xB451, 0xB451, 0xB451 },
  29108. -{ 0xB452, 0xB452, 0xB452 },
  29109. -{ 0xB453, 0xB453, 0xB453 },
  29110. -{ 0xB454, 0xB454, 0xB454 },
  29111. -{ 0xB455, 0xB455, 0xB455 },
  29112. -{ 0xB456, 0xB456, 0xB456 },
  29113. -{ 0xB457, 0xB457, 0xB457 },
  29114. -{ 0xB458, 0xB458, 0xB458 },
  29115. -{ 0xB459, 0xB459, 0xB459 },
  29116. -{ 0xB45A, 0xB45A, 0xB45A },
  29117. -{ 0xB45B, 0xB45B, 0xB45B },
  29118. -{ 0xB45C, 0xB45C, 0xB45C },
  29119. -{ 0xB45D, 0xB45D, 0xB45D },
  29120. -{ 0xB45E, 0xB45E, 0xB45E },
  29121. -{ 0xB45F, 0xB45F, 0xB45F },
  29122. -{ 0xB460, 0xB460, 0xB460 },
  29123. -{ 0xB461, 0xB461, 0xB461 },
  29124. -{ 0xB462, 0xB462, 0xB462 },
  29125. -{ 0xB463, 0xB463, 0xB463 },
  29126. -{ 0xB464, 0xB464, 0xB464 },
  29127. -{ 0xB465, 0xB465, 0xB465 },
  29128. -{ 0xB466, 0xB466, 0xB466 },
  29129. -{ 0xB467, 0xB467, 0xB467 },
  29130. -{ 0xB468, 0xB468, 0xB468 },
  29131. -{ 0xB469, 0xB469, 0xB469 },
  29132. -{ 0xB46A, 0xB46A, 0xB46A },
  29133. -{ 0xB46B, 0xB46B, 0xB46B },
  29134. -{ 0xB46C, 0xB46C, 0xB46C },
  29135. -{ 0xB46D, 0xB46D, 0xB46D },
  29136. -{ 0xB46E, 0xB46E, 0xB46E },
  29137. -{ 0xB46F, 0xB46F, 0xB46F },
  29138. -{ 0xB470, 0xB470, 0xB470 },
  29139. -{ 0xB471, 0xB471, 0xB471 },
  29140. -{ 0xB472, 0xB472, 0xB472 },
  29141. -{ 0xB473, 0xB473, 0xB473 },
  29142. -{ 0xB474, 0xB474, 0xB474 },
  29143. -{ 0xB475, 0xB475, 0xB475 },
  29144. -{ 0xB476, 0xB476, 0xB476 },
  29145. -{ 0xB477, 0xB477, 0xB477 },
  29146. -{ 0xB478, 0xB478, 0xB478 },
  29147. -{ 0xB479, 0xB479, 0xB479 },
  29148. -{ 0xB47A, 0xB47A, 0xB47A },
  29149. -{ 0xB47B, 0xB47B, 0xB47B },
  29150. -{ 0xB47C, 0xB47C, 0xB47C },
  29151. -{ 0xB47D, 0xB47D, 0xB47D },
  29152. -{ 0xB47E, 0xB47E, 0xB47E },
  29153. -{ 0xB47F, 0xB47F, 0xB47F },
  29154. -{ 0xB480, 0xB480, 0xB480 },
  29155. -{ 0xB481, 0xB481, 0xB481 },
  29156. -{ 0xB482, 0xB482, 0xB482 },
  29157. -{ 0xB483, 0xB483, 0xB483 },
  29158. -{ 0xB484, 0xB484, 0xB484 },
  29159. -{ 0xB485, 0xB485, 0xB485 },
  29160. -{ 0xB486, 0xB486, 0xB486 },
  29161. -{ 0xB487, 0xB487, 0xB487 },
  29162. -{ 0xB488, 0xB488, 0xB488 },
  29163. -{ 0xB489, 0xB489, 0xB489 },
  29164. -{ 0xB48A, 0xB48A, 0xB48A },
  29165. -{ 0xB48B, 0xB48B, 0xB48B },
  29166. -{ 0xB48C, 0xB48C, 0xB48C },
  29167. -{ 0xB48D, 0xB48D, 0xB48D },
  29168. -{ 0xB48E, 0xB48E, 0xB48E },
  29169. -{ 0xB48F, 0xB48F, 0xB48F },
  29170. -{ 0xB490, 0xB490, 0xB490 },
  29171. -{ 0xB491, 0xB491, 0xB491 },
  29172. -{ 0xB492, 0xB492, 0xB492 },
  29173. -{ 0xB493, 0xB493, 0xB493 },
  29174. -{ 0xB494, 0xB494, 0xB494 },
  29175. -{ 0xB495, 0xB495, 0xB495 },
  29176. -{ 0xB496, 0xB496, 0xB496 },
  29177. -{ 0xB497, 0xB497, 0xB497 },
  29178. -{ 0xB498, 0xB498, 0xB498 },
  29179. -{ 0xB499, 0xB499, 0xB499 },
  29180. -{ 0xB49A, 0xB49A, 0xB49A },
  29181. -{ 0xB49B, 0xB49B, 0xB49B },
  29182. -{ 0xB49C, 0xB49C, 0xB49C },
  29183. -{ 0xB49D, 0xB49D, 0xB49D },
  29184. -{ 0xB49E, 0xB49E, 0xB49E },
  29185. -{ 0xB49F, 0xB49F, 0xB49F },
  29186. -{ 0xB4A0, 0xB4A0, 0xB4A0 },
  29187. -{ 0xB4A1, 0xB4A1, 0xB4A1 },
  29188. -{ 0xB4A2, 0xB4A2, 0xB4A2 },
  29189. -{ 0xB4A3, 0xB4A3, 0xB4A3 },
  29190. -{ 0xB4A4, 0xB4A4, 0xB4A4 },
  29191. -{ 0xB4A5, 0xB4A5, 0xB4A5 },
  29192. -{ 0xB4A6, 0xB4A6, 0xB4A6 },
  29193. -{ 0xB4A7, 0xB4A7, 0xB4A7 },
  29194. -{ 0xB4A8, 0xB4A8, 0xB4A8 },
  29195. -{ 0xB4A9, 0xB4A9, 0xB4A9 },
  29196. -{ 0xB4AA, 0xB4AA, 0xB4AA },
  29197. -{ 0xB4AB, 0xB4AB, 0xB4AB },
  29198. -{ 0xB4AC, 0xB4AC, 0xB4AC },
  29199. -{ 0xB4AD, 0xB4AD, 0xB4AD },
  29200. -{ 0xB4AE, 0xB4AE, 0xB4AE },
  29201. -{ 0xB4AF, 0xB4AF, 0xB4AF },
  29202. -{ 0xB4B0, 0xB4B0, 0xB4B0 },
  29203. -{ 0xB4B1, 0xB4B1, 0xB4B1 },
  29204. -{ 0xB4B2, 0xB4B2, 0xB4B2 },
  29205. -{ 0xB4B3, 0xB4B3, 0xB4B3 },
  29206. -{ 0xB4B4, 0xB4B4, 0xB4B4 },
  29207. -{ 0xB4B5, 0xB4B5, 0xB4B5 },
  29208. -{ 0xB4B6, 0xB4B6, 0xB4B6 },
  29209. -{ 0xB4B7, 0xB4B7, 0xB4B7 },
  29210. -{ 0xB4B8, 0xB4B8, 0xB4B8 },
  29211. -{ 0xB4B9, 0xB4B9, 0xB4B9 },
  29212. -{ 0xB4BA, 0xB4BA, 0xB4BA },
  29213. -{ 0xB4BB, 0xB4BB, 0xB4BB },
  29214. -{ 0xB4BC, 0xB4BC, 0xB4BC },
  29215. -{ 0xB4BD, 0xB4BD, 0xB4BD },
  29216. -{ 0xB4BE, 0xB4BE, 0xB4BE },
  29217. -{ 0xB4BF, 0xB4BF, 0xB4BF },
  29218. -{ 0xB4C0, 0xB4C0, 0xB4C0 },
  29219. -{ 0xB4C1, 0xB4C1, 0xB4C1 },
  29220. -{ 0xB4C2, 0xB4C2, 0xB4C2 },
  29221. -{ 0xB4C3, 0xB4C3, 0xB4C3 },
  29222. -{ 0xB4C4, 0xB4C4, 0xB4C4 },
  29223. -{ 0xB4C5, 0xB4C5, 0xB4C5 },
  29224. -{ 0xB4C6, 0xB4C6, 0xB4C6 },
  29225. -{ 0xB4C7, 0xB4C7, 0xB4C7 },
  29226. -{ 0xB4C8, 0xB4C8, 0xB4C8 },
  29227. -{ 0xB4C9, 0xB4C9, 0xB4C9 },
  29228. -{ 0xB4CA, 0xB4CA, 0xB4CA },
  29229. -{ 0xB4CB, 0xB4CB, 0xB4CB },
  29230. -{ 0xB4CC, 0xB4CC, 0xB4CC },
  29231. -{ 0xB4CD, 0xB4CD, 0xB4CD },
  29232. -{ 0xB4CE, 0xB4CE, 0xB4CE },
  29233. -{ 0xB4CF, 0xB4CF, 0xB4CF },
  29234. -{ 0xB4D0, 0xB4D0, 0xB4D0 },
  29235. -{ 0xB4D1, 0xB4D1, 0xB4D1 },
  29236. -{ 0xB4D2, 0xB4D2, 0xB4D2 },
  29237. -{ 0xB4D3, 0xB4D3, 0xB4D3 },
  29238. -{ 0xB4D4, 0xB4D4, 0xB4D4 },
  29239. -{ 0xB4D5, 0xB4D5, 0xB4D5 },
  29240. -{ 0xB4D6, 0xB4D6, 0xB4D6 },
  29241. -{ 0xB4D7, 0xB4D7, 0xB4D7 },
  29242. -{ 0xB4D8, 0xB4D8, 0xB4D8 },
  29243. -{ 0xB4D9, 0xB4D9, 0xB4D9 },
  29244. -{ 0xB4DA, 0xB4DA, 0xB4DA },
  29245. -{ 0xB4DB, 0xB4DB, 0xB4DB },
  29246. -{ 0xB4DC, 0xB4DC, 0xB4DC },
  29247. -{ 0xB4DD, 0xB4DD, 0xB4DD },
  29248. -{ 0xB4DE, 0xB4DE, 0xB4DE },
  29249. -{ 0xB4DF, 0xB4DF, 0xB4DF },
  29250. -{ 0xB4E0, 0xB4E0, 0xB4E0 },
  29251. -{ 0xB4E1, 0xB4E1, 0xB4E1 },
  29252. -{ 0xB4E2, 0xB4E2, 0xB4E2 },
  29253. -{ 0xB4E3, 0xB4E3, 0xB4E3 },
  29254. -{ 0xB4E4, 0xB4E4, 0xB4E4 },
  29255. -{ 0xB4E5, 0xB4E5, 0xB4E5 },
  29256. -{ 0xB4E6, 0xB4E6, 0xB4E6 },
  29257. -{ 0xB4E7, 0xB4E7, 0xB4E7 },
  29258. -{ 0xB4E8, 0xB4E8, 0xB4E8 },
  29259. -{ 0xB4E9, 0xB4E9, 0xB4E9 },
  29260. -{ 0xB4EA, 0xB4EA, 0xB4EA },
  29261. -{ 0xB4EB, 0xB4EB, 0xB4EB },
  29262. -{ 0xB4EC, 0xB4EC, 0xB4EC },
  29263. -{ 0xB4ED, 0xB4ED, 0xB4ED },
  29264. -{ 0xB4EE, 0xB4EE, 0xB4EE },
  29265. -{ 0xB4EF, 0xB4EF, 0xB4EF },
  29266. -{ 0xB4F0, 0xB4F0, 0xB4F0 },
  29267. -{ 0xB4F1, 0xB4F1, 0xB4F1 },
  29268. -{ 0xB4F2, 0xB4F2, 0xB4F2 },
  29269. -{ 0xB4F3, 0xB4F3, 0xB4F3 },
  29270. -{ 0xB4F4, 0xB4F4, 0xB4F4 },
  29271. -{ 0xB4F5, 0xB4F5, 0xB4F5 },
  29272. -{ 0xB4F6, 0xB4F6, 0xB4F6 },
  29273. -{ 0xB4F7, 0xB4F7, 0xB4F7 },
  29274. -{ 0xB4F8, 0xB4F8, 0xB4F8 },
  29275. -{ 0xB4F9, 0xB4F9, 0xB4F9 },
  29276. -{ 0xB4FA, 0xB4FA, 0xB4FA },
  29277. -{ 0xB4FB, 0xB4FB, 0xB4FB },
  29278. -{ 0xB4FC, 0xB4FC, 0xB4FC },
  29279. -{ 0xB4FD, 0xB4FD, 0xB4FD },
  29280. -{ 0xB4FE, 0xB4FE, 0xB4FE },
  29281. -{ 0xB4FF, 0xB4FF, 0xB4FF },
  29282. -{ 0xB500, 0xB500, 0xB500 },
  29283. -{ 0xB501, 0xB501, 0xB501 },
  29284. -{ 0xB502, 0xB502, 0xB502 },
  29285. -{ 0xB503, 0xB503, 0xB503 },
  29286. -{ 0xB504, 0xB504, 0xB504 },
  29287. -{ 0xB505, 0xB505, 0xB505 },
  29288. -{ 0xB506, 0xB506, 0xB506 },
  29289. -{ 0xB507, 0xB507, 0xB507 },
  29290. -{ 0xB508, 0xB508, 0xB508 },
  29291. -{ 0xB509, 0xB509, 0xB509 },
  29292. -{ 0xB50A, 0xB50A, 0xB50A },
  29293. -{ 0xB50B, 0xB50B, 0xB50B },
  29294. -{ 0xB50C, 0xB50C, 0xB50C },
  29295. -{ 0xB50D, 0xB50D, 0xB50D },
  29296. -{ 0xB50E, 0xB50E, 0xB50E },
  29297. -{ 0xB50F, 0xB50F, 0xB50F },
  29298. -{ 0xB510, 0xB510, 0xB510 },
  29299. -{ 0xB511, 0xB511, 0xB511 },
  29300. -{ 0xB512, 0xB512, 0xB512 },
  29301. -{ 0xB513, 0xB513, 0xB513 },
  29302. -{ 0xB514, 0xB514, 0xB514 },
  29303. -{ 0xB515, 0xB515, 0xB515 },
  29304. -{ 0xB516, 0xB516, 0xB516 },
  29305. -{ 0xB517, 0xB517, 0xB517 },
  29306. -{ 0xB518, 0xB518, 0xB518 },
  29307. -{ 0xB519, 0xB519, 0xB519 },
  29308. -{ 0xB51A, 0xB51A, 0xB51A },
  29309. -{ 0xB51B, 0xB51B, 0xB51B },
  29310. -{ 0xB51C, 0xB51C, 0xB51C },
  29311. -{ 0xB51D, 0xB51D, 0xB51D },
  29312. -{ 0xB51E, 0xB51E, 0xB51E },
  29313. -{ 0xB51F, 0xB51F, 0xB51F },
  29314. -{ 0xB520, 0xB520, 0xB520 },
  29315. -{ 0xB521, 0xB521, 0xB521 },
  29316. -{ 0xB522, 0xB522, 0xB522 },
  29317. -{ 0xB523, 0xB523, 0xB523 },
  29318. -{ 0xB524, 0xB524, 0xB524 },
  29319. -{ 0xB525, 0xB525, 0xB525 },
  29320. -{ 0xB526, 0xB526, 0xB526 },
  29321. -{ 0xB527, 0xB527, 0xB527 },
  29322. -{ 0xB528, 0xB528, 0xB528 },
  29323. -{ 0xB529, 0xB529, 0xB529 },
  29324. -{ 0xB52A, 0xB52A, 0xB52A },
  29325. -{ 0xB52B, 0xB52B, 0xB52B },
  29326. -{ 0xB52C, 0xB52C, 0xB52C },
  29327. -{ 0xB52D, 0xB52D, 0xB52D },
  29328. -{ 0xB52E, 0xB52E, 0xB52E },
  29329. -{ 0xB52F, 0xB52F, 0xB52F },
  29330. -{ 0xB530, 0xB530, 0xB530 },
  29331. -{ 0xB531, 0xB531, 0xB531 },
  29332. -{ 0xB532, 0xB532, 0xB532 },
  29333. -{ 0xB533, 0xB533, 0xB533 },
  29334. -{ 0xB534, 0xB534, 0xB534 },
  29335. -{ 0xB535, 0xB535, 0xB535 },
  29336. -{ 0xB536, 0xB536, 0xB536 },
  29337. -{ 0xB537, 0xB537, 0xB537 },
  29338. -{ 0xB538, 0xB538, 0xB538 },
  29339. -{ 0xB539, 0xB539, 0xB539 },
  29340. -{ 0xB53A, 0xB53A, 0xB53A },
  29341. -{ 0xB53B, 0xB53B, 0xB53B },
  29342. -{ 0xB53C, 0xB53C, 0xB53C },
  29343. -{ 0xB53D, 0xB53D, 0xB53D },
  29344. -{ 0xB53E, 0xB53E, 0xB53E },
  29345. -{ 0xB53F, 0xB53F, 0xB53F },
  29346. -{ 0xB540, 0xB540, 0xB540 },
  29347. -{ 0xB541, 0xB541, 0xB541 },
  29348. -{ 0xB542, 0xB542, 0xB542 },
  29349. -{ 0xB543, 0xB543, 0xB543 },
  29350. -{ 0xB544, 0xB544, 0xB544 },
  29351. -{ 0xB545, 0xB545, 0xB545 },
  29352. -{ 0xB546, 0xB546, 0xB546 },
  29353. -{ 0xB547, 0xB547, 0xB547 },
  29354. -{ 0xB548, 0xB548, 0xB548 },
  29355. -{ 0xB549, 0xB549, 0xB549 },
  29356. -{ 0xB54A, 0xB54A, 0xB54A },
  29357. -{ 0xB54B, 0xB54B, 0xB54B },
  29358. -{ 0xB54C, 0xB54C, 0xB54C },
  29359. -{ 0xB54D, 0xB54D, 0xB54D },
  29360. -{ 0xB54E, 0xB54E, 0xB54E },
  29361. -{ 0xB54F, 0xB54F, 0xB54F },
  29362. -{ 0xB550, 0xB550, 0xB550 },
  29363. -{ 0xB551, 0xB551, 0xB551 },
  29364. -{ 0xB552, 0xB552, 0xB552 },
  29365. -{ 0xB553, 0xB553, 0xB553 },
  29366. -{ 0xB554, 0xB554, 0xB554 },
  29367. -{ 0xB555, 0xB555, 0xB555 },
  29368. -{ 0xB556, 0xB556, 0xB556 },
  29369. -{ 0xB557, 0xB557, 0xB557 },
  29370. -{ 0xB558, 0xB558, 0xB558 },
  29371. -{ 0xB559, 0xB559, 0xB559 },
  29372. -{ 0xB55A, 0xB55A, 0xB55A },
  29373. -{ 0xB55B, 0xB55B, 0xB55B },
  29374. -{ 0xB55C, 0xB55C, 0xB55C },
  29375. -{ 0xB55D, 0xB55D, 0xB55D },
  29376. -{ 0xB55E, 0xB55E, 0xB55E },
  29377. -{ 0xB55F, 0xB55F, 0xB55F },
  29378. -{ 0xB560, 0xB560, 0xB560 },
  29379. -{ 0xB561, 0xB561, 0xB561 },
  29380. -{ 0xB562, 0xB562, 0xB562 },
  29381. -{ 0xB563, 0xB563, 0xB563 },
  29382. -{ 0xB564, 0xB564, 0xB564 },
  29383. -{ 0xB565, 0xB565, 0xB565 },
  29384. -{ 0xB566, 0xB566, 0xB566 },
  29385. -{ 0xB567, 0xB567, 0xB567 },
  29386. -{ 0xB568, 0xB568, 0xB568 },
  29387. -{ 0xB569, 0xB569, 0xB569 },
  29388. -{ 0xB56A, 0xB56A, 0xB56A },
  29389. -{ 0xB56B, 0xB56B, 0xB56B },
  29390. -{ 0xB56C, 0xB56C, 0xB56C },
  29391. -{ 0xB56D, 0xB56D, 0xB56D },
  29392. -{ 0xB56E, 0xB56E, 0xB56E },
  29393. -{ 0xB56F, 0xB56F, 0xB56F },
  29394. -{ 0xB570, 0xB570, 0xB570 },
  29395. -{ 0xB571, 0xB571, 0xB571 },
  29396. -{ 0xB572, 0xB572, 0xB572 },
  29397. -{ 0xB573, 0xB573, 0xB573 },
  29398. -{ 0xB574, 0xB574, 0xB574 },
  29399. -{ 0xB575, 0xB575, 0xB575 },
  29400. -{ 0xB576, 0xB576, 0xB576 },
  29401. -{ 0xB577, 0xB577, 0xB577 },
  29402. -{ 0xB578, 0xB578, 0xB578 },
  29403. -{ 0xB579, 0xB579, 0xB579 },
  29404. -{ 0xB57A, 0xB57A, 0xB57A },
  29405. -{ 0xB57B, 0xB57B, 0xB57B },
  29406. -{ 0xB57C, 0xB57C, 0xB57C },
  29407. -{ 0xB57D, 0xB57D, 0xB57D },
  29408. -{ 0xB57E, 0xB57E, 0xB57E },
  29409. -{ 0xB57F, 0xB57F, 0xB57F },
  29410. -{ 0xB580, 0xB580, 0xB580 },
  29411. -{ 0xB581, 0xB581, 0xB581 },
  29412. -{ 0xB582, 0xB582, 0xB582 },
  29413. -{ 0xB583, 0xB583, 0xB583 },
  29414. -{ 0xB584, 0xB584, 0xB584 },
  29415. -{ 0xB585, 0xB585, 0xB585 },
  29416. -{ 0xB586, 0xB586, 0xB586 },
  29417. -{ 0xB587, 0xB587, 0xB587 },
  29418. -{ 0xB588, 0xB588, 0xB588 },
  29419. -{ 0xB589, 0xB589, 0xB589 },
  29420. -{ 0xB58A, 0xB58A, 0xB58A },
  29421. -{ 0xB58B, 0xB58B, 0xB58B },
  29422. -{ 0xB58C, 0xB58C, 0xB58C },
  29423. -{ 0xB58D, 0xB58D, 0xB58D },
  29424. -{ 0xB58E, 0xB58E, 0xB58E },
  29425. -{ 0xB58F, 0xB58F, 0xB58F },
  29426. -{ 0xB590, 0xB590, 0xB590 },
  29427. -{ 0xB591, 0xB591, 0xB591 },
  29428. -{ 0xB592, 0xB592, 0xB592 },
  29429. -{ 0xB593, 0xB593, 0xB593 },
  29430. -{ 0xB594, 0xB594, 0xB594 },
  29431. -{ 0xB595, 0xB595, 0xB595 },
  29432. -{ 0xB596, 0xB596, 0xB596 },
  29433. -{ 0xB597, 0xB597, 0xB597 },
  29434. -{ 0xB598, 0xB598, 0xB598 },
  29435. -{ 0xB599, 0xB599, 0xB599 },
  29436. -{ 0xB59A, 0xB59A, 0xB59A },
  29437. -{ 0xB59B, 0xB59B, 0xB59B },
  29438. -{ 0xB59C, 0xB59C, 0xB59C },
  29439. -{ 0xB59D, 0xB59D, 0xB59D },
  29440. -{ 0xB59E, 0xB59E, 0xB59E },
  29441. -{ 0xB59F, 0xB59F, 0xB59F },
  29442. -{ 0xB5A0, 0xB5A0, 0xB5A0 },
  29443. -{ 0xB5A1, 0xB5A1, 0xB5A1 },
  29444. -{ 0xB5A2, 0xB5A2, 0xB5A2 },
  29445. -{ 0xB5A3, 0xB5A3, 0xB5A3 },
  29446. -{ 0xB5A4, 0xB5A4, 0xB5A4 },
  29447. -{ 0xB5A5, 0xB5A5, 0xB5A5 },
  29448. -{ 0xB5A6, 0xB5A6, 0xB5A6 },
  29449. -{ 0xB5A7, 0xB5A7, 0xB5A7 },
  29450. -{ 0xB5A8, 0xB5A8, 0xB5A8 },
  29451. -{ 0xB5A9, 0xB5A9, 0xB5A9 },
  29452. -{ 0xB5AA, 0xB5AA, 0xB5AA },
  29453. -{ 0xB5AB, 0xB5AB, 0xB5AB },
  29454. -{ 0xB5AC, 0xB5AC, 0xB5AC },
  29455. -{ 0xB5AD, 0xB5AD, 0xB5AD },
  29456. -{ 0xB5AE, 0xB5AE, 0xB5AE },
  29457. -{ 0xB5AF, 0xB5AF, 0xB5AF },
  29458. -{ 0xB5B0, 0xB5B0, 0xB5B0 },
  29459. -{ 0xB5B1, 0xB5B1, 0xB5B1 },
  29460. -{ 0xB5B2, 0xB5B2, 0xB5B2 },
  29461. -{ 0xB5B3, 0xB5B3, 0xB5B3 },
  29462. -{ 0xB5B4, 0xB5B4, 0xB5B4 },
  29463. -{ 0xB5B5, 0xB5B5, 0xB5B5 },
  29464. -{ 0xB5B6, 0xB5B6, 0xB5B6 },
  29465. -{ 0xB5B7, 0xB5B7, 0xB5B7 },
  29466. -{ 0xB5B8, 0xB5B8, 0xB5B8 },
  29467. -{ 0xB5B9, 0xB5B9, 0xB5B9 },
  29468. -{ 0xB5BA, 0xB5BA, 0xB5BA },
  29469. -{ 0xB5BB, 0xB5BB, 0xB5BB },
  29470. -{ 0xB5BC, 0xB5BC, 0xB5BC },
  29471. -{ 0xB5BD, 0xB5BD, 0xB5BD },
  29472. -{ 0xB5BE, 0xB5BE, 0xB5BE },
  29473. -{ 0xB5BF, 0xB5BF, 0xB5BF },
  29474. -{ 0xB5C0, 0xB5C0, 0xB5C0 },
  29475. -{ 0xB5C1, 0xB5C1, 0xB5C1 },
  29476. -{ 0xB5C2, 0xB5C2, 0xB5C2 },
  29477. -{ 0xB5C3, 0xB5C3, 0xB5C3 },
  29478. -{ 0xB5C4, 0xB5C4, 0xB5C4 },
  29479. -{ 0xB5C5, 0xB5C5, 0xB5C5 },
  29480. -{ 0xB5C6, 0xB5C6, 0xB5C6 },
  29481. -{ 0xB5C7, 0xB5C7, 0xB5C7 },
  29482. -{ 0xB5C8, 0xB5C8, 0xB5C8 },
  29483. -{ 0xB5C9, 0xB5C9, 0xB5C9 },
  29484. -{ 0xB5CA, 0xB5CA, 0xB5CA },
  29485. -{ 0xB5CB, 0xB5CB, 0xB5CB },
  29486. -{ 0xB5CC, 0xB5CC, 0xB5CC },
  29487. -{ 0xB5CD, 0xB5CD, 0xB5CD },
  29488. -{ 0xB5CE, 0xB5CE, 0xB5CE },
  29489. -{ 0xB5CF, 0xB5CF, 0xB5CF },
  29490. -{ 0xB5D0, 0xB5D0, 0xB5D0 },
  29491. -{ 0xB5D1, 0xB5D1, 0xB5D1 },
  29492. -{ 0xB5D2, 0xB5D2, 0xB5D2 },
  29493. -{ 0xB5D3, 0xB5D3, 0xB5D3 },
  29494. -{ 0xB5D4, 0xB5D4, 0xB5D4 },
  29495. -{ 0xB5D5, 0xB5D5, 0xB5D5 },
  29496. -{ 0xB5D6, 0xB5D6, 0xB5D6 },
  29497. -{ 0xB5D7, 0xB5D7, 0xB5D7 },
  29498. -{ 0xB5D8, 0xB5D8, 0xB5D8 },
  29499. -{ 0xB5D9, 0xB5D9, 0xB5D9 },
  29500. -{ 0xB5DA, 0xB5DA, 0xB5DA },
  29501. -{ 0xB5DB, 0xB5DB, 0xB5DB },
  29502. -{ 0xB5DC, 0xB5DC, 0xB5DC },
  29503. -{ 0xB5DD, 0xB5DD, 0xB5DD },
  29504. -{ 0xB5DE, 0xB5DE, 0xB5DE },
  29505. -{ 0xB5DF, 0xB5DF, 0xB5DF },
  29506. -{ 0xB5E0, 0xB5E0, 0xB5E0 },
  29507. -{ 0xB5E1, 0xB5E1, 0xB5E1 },
  29508. -{ 0xB5E2, 0xB5E2, 0xB5E2 },
  29509. -{ 0xB5E3, 0xB5E3, 0xB5E3 },
  29510. -{ 0xB5E4, 0xB5E4, 0xB5E4 },
  29511. -{ 0xB5E5, 0xB5E5, 0xB5E5 },
  29512. -{ 0xB5E6, 0xB5E6, 0xB5E6 },
  29513. -{ 0xB5E7, 0xB5E7, 0xB5E7 },
  29514. -{ 0xB5E8, 0xB5E8, 0xB5E8 },
  29515. -{ 0xB5E9, 0xB5E9, 0xB5E9 },
  29516. -{ 0xB5EA, 0xB5EA, 0xB5EA },
  29517. -{ 0xB5EB, 0xB5EB, 0xB5EB },
  29518. -{ 0xB5EC, 0xB5EC, 0xB5EC },
  29519. -{ 0xB5ED, 0xB5ED, 0xB5ED },
  29520. -{ 0xB5EE, 0xB5EE, 0xB5EE },
  29521. -{ 0xB5EF, 0xB5EF, 0xB5EF },
  29522. -{ 0xB5F0, 0xB5F0, 0xB5F0 },
  29523. -{ 0xB5F1, 0xB5F1, 0xB5F1 },
  29524. -{ 0xB5F2, 0xB5F2, 0xB5F2 },
  29525. -{ 0xB5F3, 0xB5F3, 0xB5F3 },
  29526. -{ 0xB5F4, 0xB5F4, 0xB5F4 },
  29527. -{ 0xB5F5, 0xB5F5, 0xB5F5 },
  29528. -{ 0xB5F6, 0xB5F6, 0xB5F6 },
  29529. -{ 0xB5F7, 0xB5F7, 0xB5F7 },
  29530. -{ 0xB5F8, 0xB5F8, 0xB5F8 },
  29531. -{ 0xB5F9, 0xB5F9, 0xB5F9 },
  29532. -{ 0xB5FA, 0xB5FA, 0xB5FA },
  29533. -{ 0xB5FB, 0xB5FB, 0xB5FB },
  29534. -{ 0xB5FC, 0xB5FC, 0xB5FC },
  29535. -{ 0xB5FD, 0xB5FD, 0xB5FD },
  29536. -{ 0xB5FE, 0xB5FE, 0xB5FE },
  29537. -{ 0xB5FF, 0xB5FF, 0xB5FF },
  29538. -{ 0xB600, 0xB600, 0xB600 },
  29539. -{ 0xB601, 0xB601, 0xB601 },
  29540. -{ 0xB602, 0xB602, 0xB602 },
  29541. -{ 0xB603, 0xB603, 0xB603 },
  29542. -{ 0xB604, 0xB604, 0xB604 },
  29543. -{ 0xB605, 0xB605, 0xB605 },
  29544. -{ 0xB606, 0xB606, 0xB606 },
  29545. -{ 0xB607, 0xB607, 0xB607 },
  29546. -{ 0xB608, 0xB608, 0xB608 },
  29547. -{ 0xB609, 0xB609, 0xB609 },
  29548. -{ 0xB60A, 0xB60A, 0xB60A },
  29549. -{ 0xB60B, 0xB60B, 0xB60B },
  29550. -{ 0xB60C, 0xB60C, 0xB60C },
  29551. -{ 0xB60D, 0xB60D, 0xB60D },
  29552. -{ 0xB60E, 0xB60E, 0xB60E },
  29553. -{ 0xB60F, 0xB60F, 0xB60F },
  29554. -{ 0xB610, 0xB610, 0xB610 },
  29555. -{ 0xB611, 0xB611, 0xB611 },
  29556. -{ 0xB612, 0xB612, 0xB612 },
  29557. -{ 0xB613, 0xB613, 0xB613 },
  29558. -{ 0xB614, 0xB614, 0xB614 },
  29559. -{ 0xB615, 0xB615, 0xB615 },
  29560. -{ 0xB616, 0xB616, 0xB616 },
  29561. -{ 0xB617, 0xB617, 0xB617 },
  29562. -{ 0xB618, 0xB618, 0xB618 },
  29563. -{ 0xB619, 0xB619, 0xB619 },
  29564. -{ 0xB61A, 0xB61A, 0xB61A },
  29565. -{ 0xB61B, 0xB61B, 0xB61B },
  29566. -{ 0xB61C, 0xB61C, 0xB61C },
  29567. -{ 0xB61D, 0xB61D, 0xB61D },
  29568. -{ 0xB61E, 0xB61E, 0xB61E },
  29569. -{ 0xB61F, 0xB61F, 0xB61F },
  29570. -{ 0xB620, 0xB620, 0xB620 },
  29571. -{ 0xB621, 0xB621, 0xB621 },
  29572. -{ 0xB622, 0xB622, 0xB622 },
  29573. -{ 0xB623, 0xB623, 0xB623 },
  29574. -{ 0xB624, 0xB624, 0xB624 },
  29575. -{ 0xB625, 0xB625, 0xB625 },
  29576. -{ 0xB626, 0xB626, 0xB626 },
  29577. -{ 0xB627, 0xB627, 0xB627 },
  29578. -{ 0xB628, 0xB628, 0xB628 },
  29579. -{ 0xB629, 0xB629, 0xB629 },
  29580. -{ 0xB62A, 0xB62A, 0xB62A },
  29581. -{ 0xB62B, 0xB62B, 0xB62B },
  29582. -{ 0xB62C, 0xB62C, 0xB62C },
  29583. -{ 0xB62D, 0xB62D, 0xB62D },
  29584. -{ 0xB62E, 0xB62E, 0xB62E },
  29585. -{ 0xB62F, 0xB62F, 0xB62F },
  29586. -{ 0xB630, 0xB630, 0xB630 },
  29587. -{ 0xB631, 0xB631, 0xB631 },
  29588. -{ 0xB632, 0xB632, 0xB632 },
  29589. -{ 0xB633, 0xB633, 0xB633 },
  29590. -{ 0xB634, 0xB634, 0xB634 },
  29591. -{ 0xB635, 0xB635, 0xB635 },
  29592. -{ 0xB636, 0xB636, 0xB636 },
  29593. -{ 0xB637, 0xB637, 0xB637 },
  29594. -{ 0xB638, 0xB638, 0xB638 },
  29595. -{ 0xB639, 0xB639, 0xB639 },
  29596. -{ 0xB63A, 0xB63A, 0xB63A },
  29597. -{ 0xB63B, 0xB63B, 0xB63B },
  29598. -{ 0xB63C, 0xB63C, 0xB63C },
  29599. -{ 0xB63D, 0xB63D, 0xB63D },
  29600. -{ 0xB63E, 0xB63E, 0xB63E },
  29601. -{ 0xB63F, 0xB63F, 0xB63F },
  29602. -{ 0xB640, 0xB640, 0xB640 },
  29603. -{ 0xB641, 0xB641, 0xB641 },
  29604. -{ 0xB642, 0xB642, 0xB642 },
  29605. -{ 0xB643, 0xB643, 0xB643 },
  29606. -{ 0xB644, 0xB644, 0xB644 },
  29607. -{ 0xB645, 0xB645, 0xB645 },
  29608. -{ 0xB646, 0xB646, 0xB646 },
  29609. -{ 0xB647, 0xB647, 0xB647 },
  29610. -{ 0xB648, 0xB648, 0xB648 },
  29611. -{ 0xB649, 0xB649, 0xB649 },
  29612. -{ 0xB64A, 0xB64A, 0xB64A },
  29613. -{ 0xB64B, 0xB64B, 0xB64B },
  29614. -{ 0xB64C, 0xB64C, 0xB64C },
  29615. -{ 0xB64D, 0xB64D, 0xB64D },
  29616. -{ 0xB64E, 0xB64E, 0xB64E },
  29617. -{ 0xB64F, 0xB64F, 0xB64F },
  29618. -{ 0xB650, 0xB650, 0xB650 },
  29619. -{ 0xB651, 0xB651, 0xB651 },
  29620. -{ 0xB652, 0xB652, 0xB652 },
  29621. -{ 0xB653, 0xB653, 0xB653 },
  29622. -{ 0xB654, 0xB654, 0xB654 },
  29623. -{ 0xB655, 0xB655, 0xB655 },
  29624. -{ 0xB656, 0xB656, 0xB656 },
  29625. -{ 0xB657, 0xB657, 0xB657 },
  29626. -{ 0xB658, 0xB658, 0xB658 },
  29627. -{ 0xB659, 0xB659, 0xB659 },
  29628. -{ 0xB65A, 0xB65A, 0xB65A },
  29629. -{ 0xB65B, 0xB65B, 0xB65B },
  29630. -{ 0xB65C, 0xB65C, 0xB65C },
  29631. -{ 0xB65D, 0xB65D, 0xB65D },
  29632. -{ 0xB65E, 0xB65E, 0xB65E },
  29633. -{ 0xB65F, 0xB65F, 0xB65F },
  29634. -{ 0xB660, 0xB660, 0xB660 },
  29635. -{ 0xB661, 0xB661, 0xB661 },
  29636. -{ 0xB662, 0xB662, 0xB662 },
  29637. -{ 0xB663, 0xB663, 0xB663 },
  29638. -{ 0xB664, 0xB664, 0xB664 },
  29639. -{ 0xB665, 0xB665, 0xB665 },
  29640. -{ 0xB666, 0xB666, 0xB666 },
  29641. -{ 0xB667, 0xB667, 0xB667 },
  29642. -{ 0xB668, 0xB668, 0xB668 },
  29643. -{ 0xB669, 0xB669, 0xB669 },
  29644. -{ 0xB66A, 0xB66A, 0xB66A },
  29645. -{ 0xB66B, 0xB66B, 0xB66B },
  29646. -{ 0xB66C, 0xB66C, 0xB66C },
  29647. -{ 0xB66D, 0xB66D, 0xB66D },
  29648. -{ 0xB66E, 0xB66E, 0xB66E },
  29649. -{ 0xB66F, 0xB66F, 0xB66F },
  29650. -{ 0xB670, 0xB670, 0xB670 },
  29651. -{ 0xB671, 0xB671, 0xB671 },
  29652. -{ 0xB672, 0xB672, 0xB672 },
  29653. -{ 0xB673, 0xB673, 0xB673 },
  29654. -{ 0xB674, 0xB674, 0xB674 },
  29655. -{ 0xB675, 0xB675, 0xB675 },
  29656. -{ 0xB676, 0xB676, 0xB676 },
  29657. -{ 0xB677, 0xB677, 0xB677 },
  29658. -{ 0xB678, 0xB678, 0xB678 },
  29659. -{ 0xB679, 0xB679, 0xB679 },
  29660. -{ 0xB67A, 0xB67A, 0xB67A },
  29661. -{ 0xB67B, 0xB67B, 0xB67B },
  29662. -{ 0xB67C, 0xB67C, 0xB67C },
  29663. -{ 0xB67D, 0xB67D, 0xB67D },
  29664. -{ 0xB67E, 0xB67E, 0xB67E },
  29665. -{ 0xB67F, 0xB67F, 0xB67F },
  29666. -{ 0xB680, 0xB680, 0xB680 },
  29667. -{ 0xB681, 0xB681, 0xB681 },
  29668. -{ 0xB682, 0xB682, 0xB682 },
  29669. -{ 0xB683, 0xB683, 0xB683 },
  29670. -{ 0xB684, 0xB684, 0xB684 },
  29671. -{ 0xB685, 0xB685, 0xB685 },
  29672. -{ 0xB686, 0xB686, 0xB686 },
  29673. -{ 0xB687, 0xB687, 0xB687 },
  29674. -{ 0xB688, 0xB688, 0xB688 },
  29675. -{ 0xB689, 0xB689, 0xB689 },
  29676. -{ 0xB68A, 0xB68A, 0xB68A },
  29677. -{ 0xB68B, 0xB68B, 0xB68B },
  29678. -{ 0xB68C, 0xB68C, 0xB68C },
  29679. -{ 0xB68D, 0xB68D, 0xB68D },
  29680. -{ 0xB68E, 0xB68E, 0xB68E },
  29681. -{ 0xB68F, 0xB68F, 0xB68F },
  29682. -{ 0xB690, 0xB690, 0xB690 },
  29683. -{ 0xB691, 0xB691, 0xB691 },
  29684. -{ 0xB692, 0xB692, 0xB692 },
  29685. -{ 0xB693, 0xB693, 0xB693 },
  29686. -{ 0xB694, 0xB694, 0xB694 },
  29687. -{ 0xB695, 0xB695, 0xB695 },
  29688. -{ 0xB696, 0xB696, 0xB696 },
  29689. -{ 0xB697, 0xB697, 0xB697 },
  29690. -{ 0xB698, 0xB698, 0xB698 },
  29691. -{ 0xB699, 0xB699, 0xB699 },
  29692. -{ 0xB69A, 0xB69A, 0xB69A },
  29693. -{ 0xB69B, 0xB69B, 0xB69B },
  29694. -{ 0xB69C, 0xB69C, 0xB69C },
  29695. -{ 0xB69D, 0xB69D, 0xB69D },
  29696. -{ 0xB69E, 0xB69E, 0xB69E },
  29697. -{ 0xB69F, 0xB69F, 0xB69F },
  29698. -{ 0xB6A0, 0xB6A0, 0xB6A0 },
  29699. -{ 0xB6A1, 0xB6A1, 0xB6A1 },
  29700. -{ 0xB6A2, 0xB6A2, 0xB6A2 },
  29701. -{ 0xB6A3, 0xB6A3, 0xB6A3 },
  29702. -{ 0xB6A4, 0xB6A4, 0xB6A4 },
  29703. -{ 0xB6A5, 0xB6A5, 0xB6A5 },
  29704. -{ 0xB6A6, 0xB6A6, 0xB6A6 },
  29705. -{ 0xB6A7, 0xB6A7, 0xB6A7 },
  29706. -{ 0xB6A8, 0xB6A8, 0xB6A8 },
  29707. -{ 0xB6A9, 0xB6A9, 0xB6A9 },
  29708. -{ 0xB6AA, 0xB6AA, 0xB6AA },
  29709. -{ 0xB6AB, 0xB6AB, 0xB6AB },
  29710. -{ 0xB6AC, 0xB6AC, 0xB6AC },
  29711. -{ 0xB6AD, 0xB6AD, 0xB6AD },
  29712. -{ 0xB6AE, 0xB6AE, 0xB6AE },
  29713. -{ 0xB6AF, 0xB6AF, 0xB6AF },
  29714. -{ 0xB6B0, 0xB6B0, 0xB6B0 },
  29715. -{ 0xB6B1, 0xB6B1, 0xB6B1 },
  29716. -{ 0xB6B2, 0xB6B2, 0xB6B2 },
  29717. -{ 0xB6B3, 0xB6B3, 0xB6B3 },
  29718. -{ 0xB6B4, 0xB6B4, 0xB6B4 },
  29719. -{ 0xB6B5, 0xB6B5, 0xB6B5 },
  29720. -{ 0xB6B6, 0xB6B6, 0xB6B6 },
  29721. -{ 0xB6B7, 0xB6B7, 0xB6B7 },
  29722. -{ 0xB6B8, 0xB6B8, 0xB6B8 },
  29723. -{ 0xB6B9, 0xB6B9, 0xB6B9 },
  29724. -{ 0xB6BA, 0xB6BA, 0xB6BA },
  29725. -{ 0xB6BB, 0xB6BB, 0xB6BB },
  29726. -{ 0xB6BC, 0xB6BC, 0xB6BC },
  29727. -{ 0xB6BD, 0xB6BD, 0xB6BD },
  29728. -{ 0xB6BE, 0xB6BE, 0xB6BE },
  29729. -{ 0xB6BF, 0xB6BF, 0xB6BF },
  29730. -{ 0xB6C0, 0xB6C0, 0xB6C0 },
  29731. -{ 0xB6C1, 0xB6C1, 0xB6C1 },
  29732. -{ 0xB6C2, 0xB6C2, 0xB6C2 },
  29733. -{ 0xB6C3, 0xB6C3, 0xB6C3 },
  29734. -{ 0xB6C4, 0xB6C4, 0xB6C4 },
  29735. -{ 0xB6C5, 0xB6C5, 0xB6C5 },
  29736. -{ 0xB6C6, 0xB6C6, 0xB6C6 },
  29737. -{ 0xB6C7, 0xB6C7, 0xB6C7 },
  29738. -{ 0xB6C8, 0xB6C8, 0xB6C8 },
  29739. -{ 0xB6C9, 0xB6C9, 0xB6C9 },
  29740. -{ 0xB6CA, 0xB6CA, 0xB6CA },
  29741. -{ 0xB6CB, 0xB6CB, 0xB6CB },
  29742. -{ 0xB6CC, 0xB6CC, 0xB6CC },
  29743. -{ 0xB6CD, 0xB6CD, 0xB6CD },
  29744. -{ 0xB6CE, 0xB6CE, 0xB6CE },
  29745. -{ 0xB6CF, 0xB6CF, 0xB6CF },
  29746. -{ 0xB6D0, 0xB6D0, 0xB6D0 },
  29747. -{ 0xB6D1, 0xB6D1, 0xB6D1 },
  29748. -{ 0xB6D2, 0xB6D2, 0xB6D2 },
  29749. -{ 0xB6D3, 0xB6D3, 0xB6D3 },
  29750. -{ 0xB6D4, 0xB6D4, 0xB6D4 },
  29751. -{ 0xB6D5, 0xB6D5, 0xB6D5 },
  29752. -{ 0xB6D6, 0xB6D6, 0xB6D6 },
  29753. -{ 0xB6D7, 0xB6D7, 0xB6D7 },
  29754. -{ 0xB6D8, 0xB6D8, 0xB6D8 },
  29755. -{ 0xB6D9, 0xB6D9, 0xB6D9 },
  29756. -{ 0xB6DA, 0xB6DA, 0xB6DA },
  29757. -{ 0xB6DB, 0xB6DB, 0xB6DB },
  29758. -{ 0xB6DC, 0xB6DC, 0xB6DC },
  29759. -{ 0xB6DD, 0xB6DD, 0xB6DD },
  29760. -{ 0xB6DE, 0xB6DE, 0xB6DE },
  29761. -{ 0xB6DF, 0xB6DF, 0xB6DF },
  29762. -{ 0xB6E0, 0xB6E0, 0xB6E0 },
  29763. -{ 0xB6E1, 0xB6E1, 0xB6E1 },
  29764. -{ 0xB6E2, 0xB6E2, 0xB6E2 },
  29765. -{ 0xB6E3, 0xB6E3, 0xB6E3 },
  29766. -{ 0xB6E4, 0xB6E4, 0xB6E4 },
  29767. -{ 0xB6E5, 0xB6E5, 0xB6E5 },
  29768. -{ 0xB6E6, 0xB6E6, 0xB6E6 },
  29769. -{ 0xB6E7, 0xB6E7, 0xB6E7 },
  29770. -{ 0xB6E8, 0xB6E8, 0xB6E8 },
  29771. -{ 0xB6E9, 0xB6E9, 0xB6E9 },
  29772. -{ 0xB6EA, 0xB6EA, 0xB6EA },
  29773. -{ 0xB6EB, 0xB6EB, 0xB6EB },
  29774. -{ 0xB6EC, 0xB6EC, 0xB6EC },
  29775. -{ 0xB6ED, 0xB6ED, 0xB6ED },
  29776. -{ 0xB6EE, 0xB6EE, 0xB6EE },
  29777. -{ 0xB6EF, 0xB6EF, 0xB6EF },
  29778. -{ 0xB6F0, 0xB6F0, 0xB6F0 },
  29779. -{ 0xB6F1, 0xB6F1, 0xB6F1 },
  29780. -{ 0xB6F2, 0xB6F2, 0xB6F2 },
  29781. -{ 0xB6F3, 0xB6F3, 0xB6F3 },
  29782. -{ 0xB6F4, 0xB6F4, 0xB6F4 },
  29783. -{ 0xB6F5, 0xB6F5, 0xB6F5 },
  29784. -{ 0xB6F6, 0xB6F6, 0xB6F6 },
  29785. -{ 0xB6F7, 0xB6F7, 0xB6F7 },
  29786. -{ 0xB6F8, 0xB6F8, 0xB6F8 },
  29787. -{ 0xB6F9, 0xB6F9, 0xB6F9 },
  29788. -{ 0xB6FA, 0xB6FA, 0xB6FA },
  29789. -{ 0xB6FB, 0xB6FB, 0xB6FB },
  29790. -{ 0xB6FC, 0xB6FC, 0xB6FC },
  29791. -{ 0xB6FD, 0xB6FD, 0xB6FD },
  29792. -{ 0xB6FE, 0xB6FE, 0xB6FE },
  29793. -{ 0xB6FF, 0xB6FF, 0xB6FF },
  29794. -{ 0xB700, 0xB700, 0xB700 },
  29795. -{ 0xB701, 0xB701, 0xB701 },
  29796. -{ 0xB702, 0xB702, 0xB702 },
  29797. -{ 0xB703, 0xB703, 0xB703 },
  29798. -{ 0xB704, 0xB704, 0xB704 },
  29799. -{ 0xB705, 0xB705, 0xB705 },
  29800. -{ 0xB706, 0xB706, 0xB706 },
  29801. -{ 0xB707, 0xB707, 0xB707 },
  29802. -{ 0xB708, 0xB708, 0xB708 },
  29803. -{ 0xB709, 0xB709, 0xB709 },
  29804. -{ 0xB70A, 0xB70A, 0xB70A },
  29805. -{ 0xB70B, 0xB70B, 0xB70B },
  29806. -{ 0xB70C, 0xB70C, 0xB70C },
  29807. -{ 0xB70D, 0xB70D, 0xB70D },
  29808. -{ 0xB70E, 0xB70E, 0xB70E },
  29809. -{ 0xB70F, 0xB70F, 0xB70F },
  29810. -{ 0xB710, 0xB710, 0xB710 },
  29811. -{ 0xB711, 0xB711, 0xB711 },
  29812. -{ 0xB712, 0xB712, 0xB712 },
  29813. -{ 0xB713, 0xB713, 0xB713 },
  29814. -{ 0xB714, 0xB714, 0xB714 },
  29815. -{ 0xB715, 0xB715, 0xB715 },
  29816. -{ 0xB716, 0xB716, 0xB716 },
  29817. -{ 0xB717, 0xB717, 0xB717 },
  29818. -{ 0xB718, 0xB718, 0xB718 },
  29819. -{ 0xB719, 0xB719, 0xB719 },
  29820. -{ 0xB71A, 0xB71A, 0xB71A },
  29821. -{ 0xB71B, 0xB71B, 0xB71B },
  29822. -{ 0xB71C, 0xB71C, 0xB71C },
  29823. -{ 0xB71D, 0xB71D, 0xB71D },
  29824. -{ 0xB71E, 0xB71E, 0xB71E },
  29825. -{ 0xB71F, 0xB71F, 0xB71F },
  29826. -{ 0xB720, 0xB720, 0xB720 },
  29827. -{ 0xB721, 0xB721, 0xB721 },
  29828. -{ 0xB722, 0xB722, 0xB722 },
  29829. -{ 0xB723, 0xB723, 0xB723 },
  29830. -{ 0xB724, 0xB724, 0xB724 },
  29831. -{ 0xB725, 0xB725, 0xB725 },
  29832. -{ 0xB726, 0xB726, 0xB726 },
  29833. -{ 0xB727, 0xB727, 0xB727 },
  29834. -{ 0xB728, 0xB728, 0xB728 },
  29835. -{ 0xB729, 0xB729, 0xB729 },
  29836. -{ 0xB72A, 0xB72A, 0xB72A },
  29837. -{ 0xB72B, 0xB72B, 0xB72B },
  29838. -{ 0xB72C, 0xB72C, 0xB72C },
  29839. -{ 0xB72D, 0xB72D, 0xB72D },
  29840. -{ 0xB72E, 0xB72E, 0xB72E },
  29841. -{ 0xB72F, 0xB72F, 0xB72F },
  29842. -{ 0xB730, 0xB730, 0xB730 },
  29843. -{ 0xB731, 0xB731, 0xB731 },
  29844. -{ 0xB732, 0xB732, 0xB732 },
  29845. -{ 0xB733, 0xB733, 0xB733 },
  29846. -{ 0xB734, 0xB734, 0xB734 },
  29847. -{ 0xB735, 0xB735, 0xB735 },
  29848. -{ 0xB736, 0xB736, 0xB736 },
  29849. -{ 0xB737, 0xB737, 0xB737 },
  29850. -{ 0xB738, 0xB738, 0xB738 },
  29851. -{ 0xB739, 0xB739, 0xB739 },
  29852. -{ 0xB73A, 0xB73A, 0xB73A },
  29853. -{ 0xB73B, 0xB73B, 0xB73B },
  29854. -{ 0xB73C, 0xB73C, 0xB73C },
  29855. -{ 0xB73D, 0xB73D, 0xB73D },
  29856. -{ 0xB73E, 0xB73E, 0xB73E },
  29857. -{ 0xB73F, 0xB73F, 0xB73F },
  29858. -{ 0xB740, 0xB740, 0xB740 },
  29859. -{ 0xB741, 0xB741, 0xB741 },
  29860. -{ 0xB742, 0xB742, 0xB742 },
  29861. -{ 0xB743, 0xB743, 0xB743 },
  29862. -{ 0xB744, 0xB744, 0xB744 },
  29863. -{ 0xB745, 0xB745, 0xB745 },
  29864. -{ 0xB746, 0xB746, 0xB746 },
  29865. -{ 0xB747, 0xB747, 0xB747 },
  29866. -{ 0xB748, 0xB748, 0xB748 },
  29867. -{ 0xB749, 0xB749, 0xB749 },
  29868. -{ 0xB74A, 0xB74A, 0xB74A },
  29869. -{ 0xB74B, 0xB74B, 0xB74B },
  29870. -{ 0xB74C, 0xB74C, 0xB74C },
  29871. -{ 0xB74D, 0xB74D, 0xB74D },
  29872. -{ 0xB74E, 0xB74E, 0xB74E },
  29873. -{ 0xB74F, 0xB74F, 0xB74F },
  29874. -{ 0xB750, 0xB750, 0xB750 },
  29875. -{ 0xB751, 0xB751, 0xB751 },
  29876. -{ 0xB752, 0xB752, 0xB752 },
  29877. -{ 0xB753, 0xB753, 0xB753 },
  29878. -{ 0xB754, 0xB754, 0xB754 },
  29879. -{ 0xB755, 0xB755, 0xB755 },
  29880. -{ 0xB756, 0xB756, 0xB756 },
  29881. -{ 0xB757, 0xB757, 0xB757 },
  29882. -{ 0xB758, 0xB758, 0xB758 },
  29883. -{ 0xB759, 0xB759, 0xB759 },
  29884. -{ 0xB75A, 0xB75A, 0xB75A },
  29885. -{ 0xB75B, 0xB75B, 0xB75B },
  29886. -{ 0xB75C, 0xB75C, 0xB75C },
  29887. -{ 0xB75D, 0xB75D, 0xB75D },
  29888. -{ 0xB75E, 0xB75E, 0xB75E },
  29889. -{ 0xB75F, 0xB75F, 0xB75F },
  29890. -{ 0xB760, 0xB760, 0xB760 },
  29891. -{ 0xB761, 0xB761, 0xB761 },
  29892. -{ 0xB762, 0xB762, 0xB762 },
  29893. -{ 0xB763, 0xB763, 0xB763 },
  29894. -{ 0xB764, 0xB764, 0xB764 },
  29895. -{ 0xB765, 0xB765, 0xB765 },
  29896. -{ 0xB766, 0xB766, 0xB766 },
  29897. -{ 0xB767, 0xB767, 0xB767 },
  29898. -{ 0xB768, 0xB768, 0xB768 },
  29899. -{ 0xB769, 0xB769, 0xB769 },
  29900. -{ 0xB76A, 0xB76A, 0xB76A },
  29901. -{ 0xB76B, 0xB76B, 0xB76B },
  29902. -{ 0xB76C, 0xB76C, 0xB76C },
  29903. -{ 0xB76D, 0xB76D, 0xB76D },
  29904. -{ 0xB76E, 0xB76E, 0xB76E },
  29905. -{ 0xB76F, 0xB76F, 0xB76F },
  29906. -{ 0xB770, 0xB770, 0xB770 },
  29907. -{ 0xB771, 0xB771, 0xB771 },
  29908. -{ 0xB772, 0xB772, 0xB772 },
  29909. -{ 0xB773, 0xB773, 0xB773 },
  29910. -{ 0xB774, 0xB774, 0xB774 },
  29911. -{ 0xB775, 0xB775, 0xB775 },
  29912. -{ 0xB776, 0xB776, 0xB776 },
  29913. -{ 0xB777, 0xB777, 0xB777 },
  29914. -{ 0xB778, 0xB778, 0xB778 },
  29915. -{ 0xB779, 0xB779, 0xB779 },
  29916. -{ 0xB77A, 0xB77A, 0xB77A },
  29917. -{ 0xB77B, 0xB77B, 0xB77B },
  29918. -{ 0xB77C, 0xB77C, 0xB77C },
  29919. -{ 0xB77D, 0xB77D, 0xB77D },
  29920. -{ 0xB77E, 0xB77E, 0xB77E },
  29921. -{ 0xB77F, 0xB77F, 0xB77F },
  29922. -{ 0xB780, 0xB780, 0xB780 },
  29923. -{ 0xB781, 0xB781, 0xB781 },
  29924. -{ 0xB782, 0xB782, 0xB782 },
  29925. -{ 0xB783, 0xB783, 0xB783 },
  29926. -{ 0xB784, 0xB784, 0xB784 },
  29927. -{ 0xB785, 0xB785, 0xB785 },
  29928. -{ 0xB786, 0xB786, 0xB786 },
  29929. -{ 0xB787, 0xB787, 0xB787 },
  29930. -{ 0xB788, 0xB788, 0xB788 },
  29931. -{ 0xB789, 0xB789, 0xB789 },
  29932. -{ 0xB78A, 0xB78A, 0xB78A },
  29933. -{ 0xB78B, 0xB78B, 0xB78B },
  29934. -{ 0xB78C, 0xB78C, 0xB78C },
  29935. -{ 0xB78D, 0xB78D, 0xB78D },
  29936. -{ 0xB78E, 0xB78E, 0xB78E },
  29937. -{ 0xB78F, 0xB78F, 0xB78F },
  29938. -{ 0xB790, 0xB790, 0xB790 },
  29939. -{ 0xB791, 0xB791, 0xB791 },
  29940. -{ 0xB792, 0xB792, 0xB792 },
  29941. -{ 0xB793, 0xB793, 0xB793 },
  29942. -{ 0xB794, 0xB794, 0xB794 },
  29943. -{ 0xB795, 0xB795, 0xB795 },
  29944. -{ 0xB796, 0xB796, 0xB796 },
  29945. -{ 0xB797, 0xB797, 0xB797 },
  29946. -{ 0xB798, 0xB798, 0xB798 },
  29947. -{ 0xB799, 0xB799, 0xB799 },
  29948. -{ 0xB79A, 0xB79A, 0xB79A },
  29949. -{ 0xB79B, 0xB79B, 0xB79B },
  29950. -{ 0xB79C, 0xB79C, 0xB79C },
  29951. -{ 0xB79D, 0xB79D, 0xB79D },
  29952. -{ 0xB79E, 0xB79E, 0xB79E },
  29953. -{ 0xB79F, 0xB79F, 0xB79F },
  29954. -{ 0xB7A0, 0xB7A0, 0xB7A0 },
  29955. -{ 0xB7A1, 0xB7A1, 0xB7A1 },
  29956. -{ 0xB7A2, 0xB7A2, 0xB7A2 },
  29957. -{ 0xB7A3, 0xB7A3, 0xB7A3 },
  29958. -{ 0xB7A4, 0xB7A4, 0xB7A4 },
  29959. -{ 0xB7A5, 0xB7A5, 0xB7A5 },
  29960. -{ 0xB7A6, 0xB7A6, 0xB7A6 },
  29961. -{ 0xB7A7, 0xB7A7, 0xB7A7 },
  29962. -{ 0xB7A8, 0xB7A8, 0xB7A8 },
  29963. -{ 0xB7A9, 0xB7A9, 0xB7A9 },
  29964. -{ 0xB7AA, 0xB7AA, 0xB7AA },
  29965. -{ 0xB7AB, 0xB7AB, 0xB7AB },
  29966. -{ 0xB7AC, 0xB7AC, 0xB7AC },
  29967. -{ 0xB7AD, 0xB7AD, 0xB7AD },
  29968. -{ 0xB7AE, 0xB7AE, 0xB7AE },
  29969. -{ 0xB7AF, 0xB7AF, 0xB7AF },
  29970. -{ 0xB7B0, 0xB7B0, 0xB7B0 },
  29971. -{ 0xB7B1, 0xB7B1, 0xB7B1 },
  29972. -{ 0xB7B2, 0xB7B2, 0xB7B2 },
  29973. -{ 0xB7B3, 0xB7B3, 0xB7B3 },
  29974. -{ 0xB7B4, 0xB7B4, 0xB7B4 },
  29975. -{ 0xB7B5, 0xB7B5, 0xB7B5 },
  29976. -{ 0xB7B6, 0xB7B6, 0xB7B6 },
  29977. -{ 0xB7B7, 0xB7B7, 0xB7B7 },
  29978. -{ 0xB7B8, 0xB7B8, 0xB7B8 },
  29979. -{ 0xB7B9, 0xB7B9, 0xB7B9 },
  29980. -{ 0xB7BA, 0xB7BA, 0xB7BA },
  29981. -{ 0xB7BB, 0xB7BB, 0xB7BB },
  29982. -{ 0xB7BC, 0xB7BC, 0xB7BC },
  29983. -{ 0xB7BD, 0xB7BD, 0xB7BD },
  29984. -{ 0xB7BE, 0xB7BE, 0xB7BE },
  29985. -{ 0xB7BF, 0xB7BF, 0xB7BF },
  29986. -{ 0xB7C0, 0xB7C0, 0xB7C0 },
  29987. -{ 0xB7C1, 0xB7C1, 0xB7C1 },
  29988. -{ 0xB7C2, 0xB7C2, 0xB7C2 },
  29989. -{ 0xB7C3, 0xB7C3, 0xB7C3 },
  29990. -{ 0xB7C4, 0xB7C4, 0xB7C4 },
  29991. -{ 0xB7C5, 0xB7C5, 0xB7C5 },
  29992. -{ 0xB7C6, 0xB7C6, 0xB7C6 },
  29993. -{ 0xB7C7, 0xB7C7, 0xB7C7 },
  29994. -{ 0xB7C8, 0xB7C8, 0xB7C8 },
  29995. -{ 0xB7C9, 0xB7C9, 0xB7C9 },
  29996. -{ 0xB7CA, 0xB7CA, 0xB7CA },
  29997. -{ 0xB7CB, 0xB7CB, 0xB7CB },
  29998. -{ 0xB7CC, 0xB7CC, 0xB7CC },
  29999. -{ 0xB7CD, 0xB7CD, 0xB7CD },
  30000. -{ 0xB7CE, 0xB7CE, 0xB7CE },
  30001. -{ 0xB7CF, 0xB7CF, 0xB7CF },
  30002. -{ 0xB7D0, 0xB7D0, 0xB7D0 },
  30003. -{ 0xB7D1, 0xB7D1, 0xB7D1 },
  30004. -{ 0xB7D2, 0xB7D2, 0xB7D2 },
  30005. -{ 0xB7D3, 0xB7D3, 0xB7D3 },
  30006. -{ 0xB7D4, 0xB7D4, 0xB7D4 },
  30007. -{ 0xB7D5, 0xB7D5, 0xB7D5 },
  30008. -{ 0xB7D6, 0xB7D6, 0xB7D6 },
  30009. -{ 0xB7D7, 0xB7D7, 0xB7D7 },
  30010. -{ 0xB7D8, 0xB7D8, 0xB7D8 },
  30011. -{ 0xB7D9, 0xB7D9, 0xB7D9 },
  30012. -{ 0xB7DA, 0xB7DA, 0xB7DA },
  30013. -{ 0xB7DB, 0xB7DB, 0xB7DB },
  30014. -{ 0xB7DC, 0xB7DC, 0xB7DC },
  30015. -{ 0xB7DD, 0xB7DD, 0xB7DD },
  30016. -{ 0xB7DE, 0xB7DE, 0xB7DE },
  30017. -{ 0xB7DF, 0xB7DF, 0xB7DF },
  30018. -{ 0xB7E0, 0xB7E0, 0xB7E0 },
  30019. -{ 0xB7E1, 0xB7E1, 0xB7E1 },
  30020. -{ 0xB7E2, 0xB7E2, 0xB7E2 },
  30021. -{ 0xB7E3, 0xB7E3, 0xB7E3 },
  30022. -{ 0xB7E4, 0xB7E4, 0xB7E4 },
  30023. -{ 0xB7E5, 0xB7E5, 0xB7E5 },
  30024. -{ 0xB7E6, 0xB7E6, 0xB7E6 },
  30025. -{ 0xB7E7, 0xB7E7, 0xB7E7 },
  30026. -{ 0xB7E8, 0xB7E8, 0xB7E8 },
  30027. -{ 0xB7E9, 0xB7E9, 0xB7E9 },
  30028. -{ 0xB7EA, 0xB7EA, 0xB7EA },
  30029. -{ 0xB7EB, 0xB7EB, 0xB7EB },
  30030. -{ 0xB7EC, 0xB7EC, 0xB7EC },
  30031. -{ 0xB7ED, 0xB7ED, 0xB7ED },
  30032. -{ 0xB7EE, 0xB7EE, 0xB7EE },
  30033. -{ 0xB7EF, 0xB7EF, 0xB7EF },
  30034. -{ 0xB7F0, 0xB7F0, 0xB7F0 },
  30035. -{ 0xB7F1, 0xB7F1, 0xB7F1 },
  30036. -{ 0xB7F2, 0xB7F2, 0xB7F2 },
  30037. -{ 0xB7F3, 0xB7F3, 0xB7F3 },
  30038. -{ 0xB7F4, 0xB7F4, 0xB7F4 },
  30039. -{ 0xB7F5, 0xB7F5, 0xB7F5 },
  30040. -{ 0xB7F6, 0xB7F6, 0xB7F6 },
  30041. -{ 0xB7F7, 0xB7F7, 0xB7F7 },
  30042. -{ 0xB7F8, 0xB7F8, 0xB7F8 },
  30043. -{ 0xB7F9, 0xB7F9, 0xB7F9 },
  30044. -{ 0xB7FA, 0xB7FA, 0xB7FA },
  30045. -{ 0xB7FB, 0xB7FB, 0xB7FB },
  30046. -{ 0xB7FC, 0xB7FC, 0xB7FC },
  30047. -{ 0xB7FD, 0xB7FD, 0xB7FD },
  30048. -{ 0xB7FE, 0xB7FE, 0xB7FE },
  30049. -{ 0xB7FF, 0xB7FF, 0xB7FF },
  30050. -{ 0xB800, 0xB800, 0xB800 },
  30051. -{ 0xB801, 0xB801, 0xB801 },
  30052. -{ 0xB802, 0xB802, 0xB802 },
  30053. -{ 0xB803, 0xB803, 0xB803 },
  30054. -{ 0xB804, 0xB804, 0xB804 },
  30055. -{ 0xB805, 0xB805, 0xB805 },
  30056. -{ 0xB806, 0xB806, 0xB806 },
  30057. -{ 0xB807, 0xB807, 0xB807 },
  30058. -{ 0xB808, 0xB808, 0xB808 },
  30059. -{ 0xB809, 0xB809, 0xB809 },
  30060. -{ 0xB80A, 0xB80A, 0xB80A },
  30061. -{ 0xB80B, 0xB80B, 0xB80B },
  30062. -{ 0xB80C, 0xB80C, 0xB80C },
  30063. -{ 0xB80D, 0xB80D, 0xB80D },
  30064. -{ 0xB80E, 0xB80E, 0xB80E },
  30065. -{ 0xB80F, 0xB80F, 0xB80F },
  30066. -{ 0xB810, 0xB810, 0xB810 },
  30067. -{ 0xB811, 0xB811, 0xB811 },
  30068. -{ 0xB812, 0xB812, 0xB812 },
  30069. -{ 0xB813, 0xB813, 0xB813 },
  30070. -{ 0xB814, 0xB814, 0xB814 },
  30071. -{ 0xB815, 0xB815, 0xB815 },
  30072. -{ 0xB816, 0xB816, 0xB816 },
  30073. -{ 0xB817, 0xB817, 0xB817 },
  30074. -{ 0xB818, 0xB818, 0xB818 },
  30075. -{ 0xB819, 0xB819, 0xB819 },
  30076. -{ 0xB81A, 0xB81A, 0xB81A },
  30077. -{ 0xB81B, 0xB81B, 0xB81B },
  30078. -{ 0xB81C, 0xB81C, 0xB81C },
  30079. -{ 0xB81D, 0xB81D, 0xB81D },
  30080. -{ 0xB81E, 0xB81E, 0xB81E },
  30081. -{ 0xB81F, 0xB81F, 0xB81F },
  30082. -{ 0xB820, 0xB820, 0xB820 },
  30083. -{ 0xB821, 0xB821, 0xB821 },
  30084. -{ 0xB822, 0xB822, 0xB822 },
  30085. -{ 0xB823, 0xB823, 0xB823 },
  30086. -{ 0xB824, 0xB824, 0xB824 },
  30087. -{ 0xB825, 0xB825, 0xB825 },
  30088. -{ 0xB826, 0xB826, 0xB826 },
  30089. -{ 0xB827, 0xB827, 0xB827 },
  30090. -{ 0xB828, 0xB828, 0xB828 },
  30091. -{ 0xB829, 0xB829, 0xB829 },
  30092. -{ 0xB82A, 0xB82A, 0xB82A },
  30093. -{ 0xB82B, 0xB82B, 0xB82B },
  30094. -{ 0xB82C, 0xB82C, 0xB82C },
  30095. -{ 0xB82D, 0xB82D, 0xB82D },
  30096. -{ 0xB82E, 0xB82E, 0xB82E },
  30097. -{ 0xB82F, 0xB82F, 0xB82F },
  30098. -{ 0xB830, 0xB830, 0xB830 },
  30099. -{ 0xB831, 0xB831, 0xB831 },
  30100. -{ 0xB832, 0xB832, 0xB832 },
  30101. -{ 0xB833, 0xB833, 0xB833 },
  30102. -{ 0xB834, 0xB834, 0xB834 },
  30103. -{ 0xB835, 0xB835, 0xB835 },
  30104. -{ 0xB836, 0xB836, 0xB836 },
  30105. -{ 0xB837, 0xB837, 0xB837 },
  30106. -{ 0xB838, 0xB838, 0xB838 },
  30107. -{ 0xB839, 0xB839, 0xB839 },
  30108. -{ 0xB83A, 0xB83A, 0xB83A },
  30109. -{ 0xB83B, 0xB83B, 0xB83B },
  30110. -{ 0xB83C, 0xB83C, 0xB83C },
  30111. -{ 0xB83D, 0xB83D, 0xB83D },
  30112. -{ 0xB83E, 0xB83E, 0xB83E },
  30113. -{ 0xB83F, 0xB83F, 0xB83F },
  30114. -{ 0xB840, 0xB840, 0xB840 },
  30115. -{ 0xB841, 0xB841, 0xB841 },
  30116. -{ 0xB842, 0xB842, 0xB842 },
  30117. -{ 0xB843, 0xB843, 0xB843 },
  30118. -{ 0xB844, 0xB844, 0xB844 },
  30119. -{ 0xB845, 0xB845, 0xB845 },
  30120. -{ 0xB846, 0xB846, 0xB846 },
  30121. -{ 0xB847, 0xB847, 0xB847 },
  30122. -{ 0xB848, 0xB848, 0xB848 },
  30123. -{ 0xB849, 0xB849, 0xB849 },
  30124. -{ 0xB84A, 0xB84A, 0xB84A },
  30125. -{ 0xB84B, 0xB84B, 0xB84B },
  30126. -{ 0xB84C, 0xB84C, 0xB84C },
  30127. -{ 0xB84D, 0xB84D, 0xB84D },
  30128. -{ 0xB84E, 0xB84E, 0xB84E },
  30129. -{ 0xB84F, 0xB84F, 0xB84F },
  30130. -{ 0xB850, 0xB850, 0xB850 },
  30131. -{ 0xB851, 0xB851, 0xB851 },
  30132. -{ 0xB852, 0xB852, 0xB852 },
  30133. -{ 0xB853, 0xB853, 0xB853 },
  30134. -{ 0xB854, 0xB854, 0xB854 },
  30135. -{ 0xB855, 0xB855, 0xB855 },
  30136. -{ 0xB856, 0xB856, 0xB856 },
  30137. -{ 0xB857, 0xB857, 0xB857 },
  30138. -{ 0xB858, 0xB858, 0xB858 },
  30139. -{ 0xB859, 0xB859, 0xB859 },
  30140. -{ 0xB85A, 0xB85A, 0xB85A },
  30141. -{ 0xB85B, 0xB85B, 0xB85B },
  30142. -{ 0xB85C, 0xB85C, 0xB85C },
  30143. -{ 0xB85D, 0xB85D, 0xB85D },
  30144. -{ 0xB85E, 0xB85E, 0xB85E },
  30145. -{ 0xB85F, 0xB85F, 0xB85F },
  30146. -{ 0xB860, 0xB860, 0xB860 },
  30147. -{ 0xB861, 0xB861, 0xB861 },
  30148. -{ 0xB862, 0xB862, 0xB862 },
  30149. -{ 0xB863, 0xB863, 0xB863 },
  30150. -{ 0xB864, 0xB864, 0xB864 },
  30151. -{ 0xB865, 0xB865, 0xB865 },
  30152. -{ 0xB866, 0xB866, 0xB866 },
  30153. -{ 0xB867, 0xB867, 0xB867 },
  30154. -{ 0xB868, 0xB868, 0xB868 },
  30155. -{ 0xB869, 0xB869, 0xB869 },
  30156. -{ 0xB86A, 0xB86A, 0xB86A },
  30157. -{ 0xB86B, 0xB86B, 0xB86B },
  30158. -{ 0xB86C, 0xB86C, 0xB86C },
  30159. -{ 0xB86D, 0xB86D, 0xB86D },
  30160. -{ 0xB86E, 0xB86E, 0xB86E },
  30161. -{ 0xB86F, 0xB86F, 0xB86F },
  30162. -{ 0xB870, 0xB870, 0xB870 },
  30163. -{ 0xB871, 0xB871, 0xB871 },
  30164. -{ 0xB872, 0xB872, 0xB872 },
  30165. -{ 0xB873, 0xB873, 0xB873 },
  30166. -{ 0xB874, 0xB874, 0xB874 },
  30167. -{ 0xB875, 0xB875, 0xB875 },
  30168. -{ 0xB876, 0xB876, 0xB876 },
  30169. -{ 0xB877, 0xB877, 0xB877 },
  30170. -{ 0xB878, 0xB878, 0xB878 },
  30171. -{ 0xB879, 0xB879, 0xB879 },
  30172. -{ 0xB87A, 0xB87A, 0xB87A },
  30173. -{ 0xB87B, 0xB87B, 0xB87B },
  30174. -{ 0xB87C, 0xB87C, 0xB87C },
  30175. -{ 0xB87D, 0xB87D, 0xB87D },
  30176. -{ 0xB87E, 0xB87E, 0xB87E },
  30177. -{ 0xB87F, 0xB87F, 0xB87F },
  30178. -{ 0xB880, 0xB880, 0xB880 },
  30179. -{ 0xB881, 0xB881, 0xB881 },
  30180. -{ 0xB882, 0xB882, 0xB882 },
  30181. -{ 0xB883, 0xB883, 0xB883 },
  30182. -{ 0xB884, 0xB884, 0xB884 },
  30183. -{ 0xB885, 0xB885, 0xB885 },
  30184. -{ 0xB886, 0xB886, 0xB886 },
  30185. -{ 0xB887, 0xB887, 0xB887 },
  30186. -{ 0xB888, 0xB888, 0xB888 },
  30187. -{ 0xB889, 0xB889, 0xB889 },
  30188. -{ 0xB88A, 0xB88A, 0xB88A },
  30189. -{ 0xB88B, 0xB88B, 0xB88B },
  30190. -{ 0xB88C, 0xB88C, 0xB88C },
  30191. -{ 0xB88D, 0xB88D, 0xB88D },
  30192. -{ 0xB88E, 0xB88E, 0xB88E },
  30193. -{ 0xB88F, 0xB88F, 0xB88F },
  30194. -{ 0xB890, 0xB890, 0xB890 },
  30195. -{ 0xB891, 0xB891, 0xB891 },
  30196. -{ 0xB892, 0xB892, 0xB892 },
  30197. -{ 0xB893, 0xB893, 0xB893 },
  30198. -{ 0xB894, 0xB894, 0xB894 },
  30199. -{ 0xB895, 0xB895, 0xB895 },
  30200. -{ 0xB896, 0xB896, 0xB896 },
  30201. -{ 0xB897, 0xB897, 0xB897 },
  30202. -{ 0xB898, 0xB898, 0xB898 },
  30203. -{ 0xB899, 0xB899, 0xB899 },
  30204. -{ 0xB89A, 0xB89A, 0xB89A },
  30205. -{ 0xB89B, 0xB89B, 0xB89B },
  30206. -{ 0xB89C, 0xB89C, 0xB89C },
  30207. -{ 0xB89D, 0xB89D, 0xB89D },
  30208. -{ 0xB89E, 0xB89E, 0xB89E },
  30209. -{ 0xB89F, 0xB89F, 0xB89F },
  30210. -{ 0xB8A0, 0xB8A0, 0xB8A0 },
  30211. -{ 0xB8A1, 0xB8A1, 0xB8A1 },
  30212. -{ 0xB8A2, 0xB8A2, 0xB8A2 },
  30213. -{ 0xB8A3, 0xB8A3, 0xB8A3 },
  30214. -{ 0xB8A4, 0xB8A4, 0xB8A4 },
  30215. -{ 0xB8A5, 0xB8A5, 0xB8A5 },
  30216. -{ 0xB8A6, 0xB8A6, 0xB8A6 },
  30217. -{ 0xB8A7, 0xB8A7, 0xB8A7 },
  30218. -{ 0xB8A8, 0xB8A8, 0xB8A8 },
  30219. -{ 0xB8A9, 0xB8A9, 0xB8A9 },
  30220. -{ 0xB8AA, 0xB8AA, 0xB8AA },
  30221. -{ 0xB8AB, 0xB8AB, 0xB8AB },
  30222. -{ 0xB8AC, 0xB8AC, 0xB8AC },
  30223. -{ 0xB8AD, 0xB8AD, 0xB8AD },
  30224. -{ 0xB8AE, 0xB8AE, 0xB8AE },
  30225. -{ 0xB8AF, 0xB8AF, 0xB8AF },
  30226. -{ 0xB8B0, 0xB8B0, 0xB8B0 },
  30227. -{ 0xB8B1, 0xB8B1, 0xB8B1 },
  30228. -{ 0xB8B2, 0xB8B2, 0xB8B2 },
  30229. -{ 0xB8B3, 0xB8B3, 0xB8B3 },
  30230. -{ 0xB8B4, 0xB8B4, 0xB8B4 },
  30231. -{ 0xB8B5, 0xB8B5, 0xB8B5 },
  30232. -{ 0xB8B6, 0xB8B6, 0xB8B6 },
  30233. -{ 0xB8B7, 0xB8B7, 0xB8B7 },
  30234. -{ 0xB8B8, 0xB8B8, 0xB8B8 },
  30235. -{ 0xB8B9, 0xB8B9, 0xB8B9 },
  30236. -{ 0xB8BA, 0xB8BA, 0xB8BA },
  30237. -{ 0xB8BB, 0xB8BB, 0xB8BB },
  30238. -{ 0xB8BC, 0xB8BC, 0xB8BC },
  30239. -{ 0xB8BD, 0xB8BD, 0xB8BD },
  30240. -{ 0xB8BE, 0xB8BE, 0xB8BE },
  30241. -{ 0xB8BF, 0xB8BF, 0xB8BF },
  30242. -{ 0xB8C0, 0xB8C0, 0xB8C0 },
  30243. -{ 0xB8C1, 0xB8C1, 0xB8C1 },
  30244. -{ 0xB8C2, 0xB8C2, 0xB8C2 },
  30245. -{ 0xB8C3, 0xB8C3, 0xB8C3 },
  30246. -{ 0xB8C4, 0xB8C4, 0xB8C4 },
  30247. -{ 0xB8C5, 0xB8C5, 0xB8C5 },
  30248. -{ 0xB8C6, 0xB8C6, 0xB8C6 },
  30249. -{ 0xB8C7, 0xB8C7, 0xB8C7 },
  30250. -{ 0xB8C8, 0xB8C8, 0xB8C8 },
  30251. -{ 0xB8C9, 0xB8C9, 0xB8C9 },
  30252. -{ 0xB8CA, 0xB8CA, 0xB8CA },
  30253. -{ 0xB8CB, 0xB8CB, 0xB8CB },
  30254. -{ 0xB8CC, 0xB8CC, 0xB8CC },
  30255. -{ 0xB8CD, 0xB8CD, 0xB8CD },
  30256. -{ 0xB8CE, 0xB8CE, 0xB8CE },
  30257. -{ 0xB8CF, 0xB8CF, 0xB8CF },
  30258. -{ 0xB8D0, 0xB8D0, 0xB8D0 },
  30259. -{ 0xB8D1, 0xB8D1, 0xB8D1 },
  30260. -{ 0xB8D2, 0xB8D2, 0xB8D2 },
  30261. -{ 0xB8D3, 0xB8D3, 0xB8D3 },
  30262. -{ 0xB8D4, 0xB8D4, 0xB8D4 },
  30263. -{ 0xB8D5, 0xB8D5, 0xB8D5 },
  30264. -{ 0xB8D6, 0xB8D6, 0xB8D6 },
  30265. -{ 0xB8D7, 0xB8D7, 0xB8D7 },
  30266. -{ 0xB8D8, 0xB8D8, 0xB8D8 },
  30267. -{ 0xB8D9, 0xB8D9, 0xB8D9 },
  30268. -{ 0xB8DA, 0xB8DA, 0xB8DA },
  30269. -{ 0xB8DB, 0xB8DB, 0xB8DB },
  30270. -{ 0xB8DC, 0xB8DC, 0xB8DC },
  30271. -{ 0xB8DD, 0xB8DD, 0xB8DD },
  30272. -{ 0xB8DE, 0xB8DE, 0xB8DE },
  30273. -{ 0xB8DF, 0xB8DF, 0xB8DF },
  30274. -{ 0xB8E0, 0xB8E0, 0xB8E0 },
  30275. -{ 0xB8E1, 0xB8E1, 0xB8E1 },
  30276. -{ 0xB8E2, 0xB8E2, 0xB8E2 },
  30277. -{ 0xB8E3, 0xB8E3, 0xB8E3 },
  30278. -{ 0xB8E4, 0xB8E4, 0xB8E4 },
  30279. -{ 0xB8E5, 0xB8E5, 0xB8E5 },
  30280. -{ 0xB8E6, 0xB8E6, 0xB8E6 },
  30281. -{ 0xB8E7, 0xB8E7, 0xB8E7 },
  30282. -{ 0xB8E8, 0xB8E8, 0xB8E8 },
  30283. -{ 0xB8E9, 0xB8E9, 0xB8E9 },
  30284. -{ 0xB8EA, 0xB8EA, 0xB8EA },
  30285. -{ 0xB8EB, 0xB8EB, 0xB8EB },
  30286. -{ 0xB8EC, 0xB8EC, 0xB8EC },
  30287. -{ 0xB8ED, 0xB8ED, 0xB8ED },
  30288. -{ 0xB8EE, 0xB8EE, 0xB8EE },
  30289. -{ 0xB8EF, 0xB8EF, 0xB8EF },
  30290. -{ 0xB8F0, 0xB8F0, 0xB8F0 },
  30291. -{ 0xB8F1, 0xB8F1, 0xB8F1 },
  30292. -{ 0xB8F2, 0xB8F2, 0xB8F2 },
  30293. -{ 0xB8F3, 0xB8F3, 0xB8F3 },
  30294. -{ 0xB8F4, 0xB8F4, 0xB8F4 },
  30295. -{ 0xB8F5, 0xB8F5, 0xB8F5 },
  30296. -{ 0xB8F6, 0xB8F6, 0xB8F6 },
  30297. -{ 0xB8F7, 0xB8F7, 0xB8F7 },
  30298. -{ 0xB8F8, 0xB8F8, 0xB8F8 },
  30299. -{ 0xB8F9, 0xB8F9, 0xB8F9 },
  30300. -{ 0xB8FA, 0xB8FA, 0xB8FA },
  30301. -{ 0xB8FB, 0xB8FB, 0xB8FB },
  30302. -{ 0xB8FC, 0xB8FC, 0xB8FC },
  30303. -{ 0xB8FD, 0xB8FD, 0xB8FD },
  30304. -{ 0xB8FE, 0xB8FE, 0xB8FE },
  30305. -{ 0xB8FF, 0xB8FF, 0xB8FF },
  30306. -{ 0xB900, 0xB900, 0xB900 },
  30307. -{ 0xB901, 0xB901, 0xB901 },
  30308. -{ 0xB902, 0xB902, 0xB902 },
  30309. -{ 0xB903, 0xB903, 0xB903 },
  30310. -{ 0xB904, 0xB904, 0xB904 },
  30311. -{ 0xB905, 0xB905, 0xB905 },
  30312. -{ 0xB906, 0xB906, 0xB906 },
  30313. -{ 0xB907, 0xB907, 0xB907 },
  30314. -{ 0xB908, 0xB908, 0xB908 },
  30315. -{ 0xB909, 0xB909, 0xB909 },
  30316. -{ 0xB90A, 0xB90A, 0xB90A },
  30317. -{ 0xB90B, 0xB90B, 0xB90B },
  30318. -{ 0xB90C, 0xB90C, 0xB90C },
  30319. -{ 0xB90D, 0xB90D, 0xB90D },
  30320. -{ 0xB90E, 0xB90E, 0xB90E },
  30321. -{ 0xB90F, 0xB90F, 0xB90F },
  30322. -{ 0xB910, 0xB910, 0xB910 },
  30323. -{ 0xB911, 0xB911, 0xB911 },
  30324. -{ 0xB912, 0xB912, 0xB912 },
  30325. -{ 0xB913, 0xB913, 0xB913 },
  30326. -{ 0xB914, 0xB914, 0xB914 },
  30327. -{ 0xB915, 0xB915, 0xB915 },
  30328. -{ 0xB916, 0xB916, 0xB916 },
  30329. -{ 0xB917, 0xB917, 0xB917 },
  30330. -{ 0xB918, 0xB918, 0xB918 },
  30331. -{ 0xB919, 0xB919, 0xB919 },
  30332. -{ 0xB91A, 0xB91A, 0xB91A },
  30333. -{ 0xB91B, 0xB91B, 0xB91B },
  30334. -{ 0xB91C, 0xB91C, 0xB91C },
  30335. -{ 0xB91D, 0xB91D, 0xB91D },
  30336. -{ 0xB91E, 0xB91E, 0xB91E },
  30337. -{ 0xB91F, 0xB91F, 0xB91F },
  30338. -{ 0xB920, 0xB920, 0xB920 },
  30339. -{ 0xB921, 0xB921, 0xB921 },
  30340. -{ 0xB922, 0xB922, 0xB922 },
  30341. -{ 0xB923, 0xB923, 0xB923 },
  30342. -{ 0xB924, 0xB924, 0xB924 },
  30343. -{ 0xB925, 0xB925, 0xB925 },
  30344. -{ 0xB926, 0xB926, 0xB926 },
  30345. -{ 0xB927, 0xB927, 0xB927 },
  30346. -{ 0xB928, 0xB928, 0xB928 },
  30347. -{ 0xB929, 0xB929, 0xB929 },
  30348. -{ 0xB92A, 0xB92A, 0xB92A },
  30349. -{ 0xB92B, 0xB92B, 0xB92B },
  30350. -{ 0xB92C, 0xB92C, 0xB92C },
  30351. -{ 0xB92D, 0xB92D, 0xB92D },
  30352. -{ 0xB92E, 0xB92E, 0xB92E },
  30353. -{ 0xB92F, 0xB92F, 0xB92F },
  30354. -{ 0xB930, 0xB930, 0xB930 },
  30355. -{ 0xB931, 0xB931, 0xB931 },
  30356. -{ 0xB932, 0xB932, 0xB932 },
  30357. -{ 0xB933, 0xB933, 0xB933 },
  30358. -{ 0xB934, 0xB934, 0xB934 },
  30359. -{ 0xB935, 0xB935, 0xB935 },
  30360. -{ 0xB936, 0xB936, 0xB936 },
  30361. -{ 0xB937, 0xB937, 0xB937 },
  30362. -{ 0xB938, 0xB938, 0xB938 },
  30363. -{ 0xB939, 0xB939, 0xB939 },
  30364. -{ 0xB93A, 0xB93A, 0xB93A },
  30365. -{ 0xB93B, 0xB93B, 0xB93B },
  30366. -{ 0xB93C, 0xB93C, 0xB93C },
  30367. -{ 0xB93D, 0xB93D, 0xB93D },
  30368. -{ 0xB93E, 0xB93E, 0xB93E },
  30369. -{ 0xB93F, 0xB93F, 0xB93F },
  30370. -{ 0xB940, 0xB940, 0xB940 },
  30371. -{ 0xB941, 0xB941, 0xB941 },
  30372. -{ 0xB942, 0xB942, 0xB942 },
  30373. -{ 0xB943, 0xB943, 0xB943 },
  30374. -{ 0xB944, 0xB944, 0xB944 },
  30375. -{ 0xB945, 0xB945, 0xB945 },
  30376. -{ 0xB946, 0xB946, 0xB946 },
  30377. -{ 0xB947, 0xB947, 0xB947 },
  30378. -{ 0xB948, 0xB948, 0xB948 },
  30379. -{ 0xB949, 0xB949, 0xB949 },
  30380. -{ 0xB94A, 0xB94A, 0xB94A },
  30381. -{ 0xB94B, 0xB94B, 0xB94B },
  30382. -{ 0xB94C, 0xB94C, 0xB94C },
  30383. -{ 0xB94D, 0xB94D, 0xB94D },
  30384. -{ 0xB94E, 0xB94E, 0xB94E },
  30385. -{ 0xB94F, 0xB94F, 0xB94F },
  30386. -{ 0xB950, 0xB950, 0xB950 },
  30387. -{ 0xB951, 0xB951, 0xB951 },
  30388. -{ 0xB952, 0xB952, 0xB952 },
  30389. -{ 0xB953, 0xB953, 0xB953 },
  30390. -{ 0xB954, 0xB954, 0xB954 },
  30391. -{ 0xB955, 0xB955, 0xB955 },
  30392. -{ 0xB956, 0xB956, 0xB956 },
  30393. -{ 0xB957, 0xB957, 0xB957 },
  30394. -{ 0xB958, 0xB958, 0xB958 },
  30395. -{ 0xB959, 0xB959, 0xB959 },
  30396. -{ 0xB95A, 0xB95A, 0xB95A },
  30397. -{ 0xB95B, 0xB95B, 0xB95B },
  30398. -{ 0xB95C, 0xB95C, 0xB95C },
  30399. -{ 0xB95D, 0xB95D, 0xB95D },
  30400. -{ 0xB95E, 0xB95E, 0xB95E },
  30401. -{ 0xB95F, 0xB95F, 0xB95F },
  30402. -{ 0xB960, 0xB960, 0xB960 },
  30403. -{ 0xB961, 0xB961, 0xB961 },
  30404. -{ 0xB962, 0xB962, 0xB962 },
  30405. -{ 0xB963, 0xB963, 0xB963 },
  30406. -{ 0xB964, 0xB964, 0xB964 },
  30407. -{ 0xB965, 0xB965, 0xB965 },
  30408. -{ 0xB966, 0xB966, 0xB966 },
  30409. -{ 0xB967, 0xB967, 0xB967 },
  30410. -{ 0xB968, 0xB968, 0xB968 },
  30411. -{ 0xB969, 0xB969, 0xB969 },
  30412. -{ 0xB96A, 0xB96A, 0xB96A },
  30413. -{ 0xB96B, 0xB96B, 0xB96B },
  30414. -{ 0xB96C, 0xB96C, 0xB96C },
  30415. -{ 0xB96D, 0xB96D, 0xB96D },
  30416. -{ 0xB96E, 0xB96E, 0xB96E },
  30417. -{ 0xB96F, 0xB96F, 0xB96F },
  30418. -{ 0xB970, 0xB970, 0xB970 },
  30419. -{ 0xB971, 0xB971, 0xB971 },
  30420. -{ 0xB972, 0xB972, 0xB972 },
  30421. -{ 0xB973, 0xB973, 0xB973 },
  30422. -{ 0xB974, 0xB974, 0xB974 },
  30423. -{ 0xB975, 0xB975, 0xB975 },
  30424. -{ 0xB976, 0xB976, 0xB976 },
  30425. -{ 0xB977, 0xB977, 0xB977 },
  30426. -{ 0xB978, 0xB978, 0xB978 },
  30427. -{ 0xB979, 0xB979, 0xB979 },
  30428. -{ 0xB97A, 0xB97A, 0xB97A },
  30429. -{ 0xB97B, 0xB97B, 0xB97B },
  30430. -{ 0xB97C, 0xB97C, 0xB97C },
  30431. -{ 0xB97D, 0xB97D, 0xB97D },
  30432. -{ 0xB97E, 0xB97E, 0xB97E },
  30433. -{ 0xB97F, 0xB97F, 0xB97F },
  30434. -{ 0xB980, 0xB980, 0xB980 },
  30435. -{ 0xB981, 0xB981, 0xB981 },
  30436. -{ 0xB982, 0xB982, 0xB982 },
  30437. -{ 0xB983, 0xB983, 0xB983 },
  30438. -{ 0xB984, 0xB984, 0xB984 },
  30439. -{ 0xB985, 0xB985, 0xB985 },
  30440. -{ 0xB986, 0xB986, 0xB986 },
  30441. -{ 0xB987, 0xB987, 0xB987 },
  30442. -{ 0xB988, 0xB988, 0xB988 },
  30443. -{ 0xB989, 0xB989, 0xB989 },
  30444. -{ 0xB98A, 0xB98A, 0xB98A },
  30445. -{ 0xB98B, 0xB98B, 0xB98B },
  30446. -{ 0xB98C, 0xB98C, 0xB98C },
  30447. -{ 0xB98D, 0xB98D, 0xB98D },
  30448. -{ 0xB98E, 0xB98E, 0xB98E },
  30449. -{ 0xB98F, 0xB98F, 0xB98F },
  30450. -{ 0xB990, 0xB990, 0xB990 },
  30451. -{ 0xB991, 0xB991, 0xB991 },
  30452. -{ 0xB992, 0xB992, 0xB992 },
  30453. -{ 0xB993, 0xB993, 0xB993 },
  30454. -{ 0xB994, 0xB994, 0xB994 },
  30455. -{ 0xB995, 0xB995, 0xB995 },
  30456. -{ 0xB996, 0xB996, 0xB996 },
  30457. -{ 0xB997, 0xB997, 0xB997 },
  30458. -{ 0xB998, 0xB998, 0xB998 },
  30459. -{ 0xB999, 0xB999, 0xB999 },
  30460. -{ 0xB99A, 0xB99A, 0xB99A },
  30461. -{ 0xB99B, 0xB99B, 0xB99B },
  30462. -{ 0xB99C, 0xB99C, 0xB99C },
  30463. -{ 0xB99D, 0xB99D, 0xB99D },
  30464. -{ 0xB99E, 0xB99E, 0xB99E },
  30465. -{ 0xB99F, 0xB99F, 0xB99F },
  30466. -{ 0xB9A0, 0xB9A0, 0xB9A0 },
  30467. -{ 0xB9A1, 0xB9A1, 0xB9A1 },
  30468. -{ 0xB9A2, 0xB9A2, 0xB9A2 },
  30469. -{ 0xB9A3, 0xB9A3, 0xB9A3 },
  30470. -{ 0xB9A4, 0xB9A4, 0xB9A4 },
  30471. -{ 0xB9A5, 0xB9A5, 0xB9A5 },
  30472. -{ 0xB9A6, 0xB9A6, 0xB9A6 },
  30473. -{ 0xB9A7, 0xB9A7, 0xB9A7 },
  30474. -{ 0xB9A8, 0xB9A8, 0xB9A8 },
  30475. -{ 0xB9A9, 0xB9A9, 0xB9A9 },
  30476. -{ 0xB9AA, 0xB9AA, 0xB9AA },
  30477. -{ 0xB9AB, 0xB9AB, 0xB9AB },
  30478. -{ 0xB9AC, 0xB9AC, 0xB9AC },
  30479. -{ 0xB9AD, 0xB9AD, 0xB9AD },
  30480. -{ 0xB9AE, 0xB9AE, 0xB9AE },
  30481. -{ 0xB9AF, 0xB9AF, 0xB9AF },
  30482. -{ 0xB9B0, 0xB9B0, 0xB9B0 },
  30483. -{ 0xB9B1, 0xB9B1, 0xB9B1 },
  30484. -{ 0xB9B2, 0xB9B2, 0xB9B2 },
  30485. -{ 0xB9B3, 0xB9B3, 0xB9B3 },
  30486. -{ 0xB9B4, 0xB9B4, 0xB9B4 },
  30487. -{ 0xB9B5, 0xB9B5, 0xB9B5 },
  30488. -{ 0xB9B6, 0xB9B6, 0xB9B6 },
  30489. -{ 0xB9B7, 0xB9B7, 0xB9B7 },
  30490. -{ 0xB9B8, 0xB9B8, 0xB9B8 },
  30491. -{ 0xB9B9, 0xB9B9, 0xB9B9 },
  30492. -{ 0xB9BA, 0xB9BA, 0xB9BA },
  30493. -{ 0xB9BB, 0xB9BB, 0xB9BB },
  30494. -{ 0xB9BC, 0xB9BC, 0xB9BC },
  30495. -{ 0xB9BD, 0xB9BD, 0xB9BD },
  30496. -{ 0xB9BE, 0xB9BE, 0xB9BE },
  30497. -{ 0xB9BF, 0xB9BF, 0xB9BF },
  30498. -{ 0xB9C0, 0xB9C0, 0xB9C0 },
  30499. -{ 0xB9C1, 0xB9C1, 0xB9C1 },
  30500. -{ 0xB9C2, 0xB9C2, 0xB9C2 },
  30501. -{ 0xB9C3, 0xB9C3, 0xB9C3 },
  30502. -{ 0xB9C4, 0xB9C4, 0xB9C4 },
  30503. -{ 0xB9C5, 0xB9C5, 0xB9C5 },
  30504. -{ 0xB9C6, 0xB9C6, 0xB9C6 },
  30505. -{ 0xB9C7, 0xB9C7, 0xB9C7 },
  30506. -{ 0xB9C8, 0xB9C8, 0xB9C8 },
  30507. -{ 0xB9C9, 0xB9C9, 0xB9C9 },
  30508. -{ 0xB9CA, 0xB9CA, 0xB9CA },
  30509. -{ 0xB9CB, 0xB9CB, 0xB9CB },
  30510. -{ 0xB9CC, 0xB9CC, 0xB9CC },
  30511. -{ 0xB9CD, 0xB9CD, 0xB9CD },
  30512. -{ 0xB9CE, 0xB9CE, 0xB9CE },
  30513. -{ 0xB9CF, 0xB9CF, 0xB9CF },
  30514. -{ 0xB9D0, 0xB9D0, 0xB9D0 },
  30515. -{ 0xB9D1, 0xB9D1, 0xB9D1 },
  30516. -{ 0xB9D2, 0xB9D2, 0xB9D2 },
  30517. -{ 0xB9D3, 0xB9D3, 0xB9D3 },
  30518. -{ 0xB9D4, 0xB9D4, 0xB9D4 },
  30519. -{ 0xB9D5, 0xB9D5, 0xB9D5 },
  30520. -{ 0xB9D6, 0xB9D6, 0xB9D6 },
  30521. -{ 0xB9D7, 0xB9D7, 0xB9D7 },
  30522. -{ 0xB9D8, 0xB9D8, 0xB9D8 },
  30523. -{ 0xB9D9, 0xB9D9, 0xB9D9 },
  30524. -{ 0xB9DA, 0xB9DA, 0xB9DA },
  30525. -{ 0xB9DB, 0xB9DB, 0xB9DB },
  30526. -{ 0xB9DC, 0xB9DC, 0xB9DC },
  30527. -{ 0xB9DD, 0xB9DD, 0xB9DD },
  30528. -{ 0xB9DE, 0xB9DE, 0xB9DE },
  30529. -{ 0xB9DF, 0xB9DF, 0xB9DF },
  30530. -{ 0xB9E0, 0xB9E0, 0xB9E0 },
  30531. -{ 0xB9E1, 0xB9E1, 0xB9E1 },
  30532. -{ 0xB9E2, 0xB9E2, 0xB9E2 },
  30533. -{ 0xB9E3, 0xB9E3, 0xB9E3 },
  30534. -{ 0xB9E4, 0xB9E4, 0xB9E4 },
  30535. -{ 0xB9E5, 0xB9E5, 0xB9E5 },
  30536. -{ 0xB9E6, 0xB9E6, 0xB9E6 },
  30537. -{ 0xB9E7, 0xB9E7, 0xB9E7 },
  30538. -{ 0xB9E8, 0xB9E8, 0xB9E8 },
  30539. -{ 0xB9E9, 0xB9E9, 0xB9E9 },
  30540. -{ 0xB9EA, 0xB9EA, 0xB9EA },
  30541. -{ 0xB9EB, 0xB9EB, 0xB9EB },
  30542. -{ 0xB9EC, 0xB9EC, 0xB9EC },
  30543. -{ 0xB9ED, 0xB9ED, 0xB9ED },
  30544. -{ 0xB9EE, 0xB9EE, 0xB9EE },
  30545. -{ 0xB9EF, 0xB9EF, 0xB9EF },
  30546. -{ 0xB9F0, 0xB9F0, 0xB9F0 },
  30547. -{ 0xB9F1, 0xB9F1, 0xB9F1 },
  30548. -{ 0xB9F2, 0xB9F2, 0xB9F2 },
  30549. -{ 0xB9F3, 0xB9F3, 0xB9F3 },
  30550. -{ 0xB9F4, 0xB9F4, 0xB9F4 },
  30551. -{ 0xB9F5, 0xB9F5, 0xB9F5 },
  30552. -{ 0xB9F6, 0xB9F6, 0xB9F6 },
  30553. -{ 0xB9F7, 0xB9F7, 0xB9F7 },
  30554. -{ 0xB9F8, 0xB9F8, 0xB9F8 },
  30555. -{ 0xB9F9, 0xB9F9, 0xB9F9 },
  30556. -{ 0xB9FA, 0xB9FA, 0xB9FA },
  30557. -{ 0xB9FB, 0xB9FB, 0xB9FB },
  30558. -{ 0xB9FC, 0xB9FC, 0xB9FC },
  30559. -{ 0xB9FD, 0xB9FD, 0xB9FD },
  30560. -{ 0xB9FE, 0xB9FE, 0xB9FE },
  30561. -{ 0xB9FF, 0xB9FF, 0xB9FF },
  30562. -{ 0xBA00, 0xBA00, 0xBA00 },
  30563. -{ 0xBA01, 0xBA01, 0xBA01 },
  30564. -{ 0xBA02, 0xBA02, 0xBA02 },
  30565. -{ 0xBA03, 0xBA03, 0xBA03 },
  30566. -{ 0xBA04, 0xBA04, 0xBA04 },
  30567. -{ 0xBA05, 0xBA05, 0xBA05 },
  30568. -{ 0xBA06, 0xBA06, 0xBA06 },
  30569. -{ 0xBA07, 0xBA07, 0xBA07 },
  30570. -{ 0xBA08, 0xBA08, 0xBA08 },
  30571. -{ 0xBA09, 0xBA09, 0xBA09 },
  30572. -{ 0xBA0A, 0xBA0A, 0xBA0A },
  30573. -{ 0xBA0B, 0xBA0B, 0xBA0B },
  30574. -{ 0xBA0C, 0xBA0C, 0xBA0C },
  30575. -{ 0xBA0D, 0xBA0D, 0xBA0D },
  30576. -{ 0xBA0E, 0xBA0E, 0xBA0E },
  30577. -{ 0xBA0F, 0xBA0F, 0xBA0F },
  30578. -{ 0xBA10, 0xBA10, 0xBA10 },
  30579. -{ 0xBA11, 0xBA11, 0xBA11 },
  30580. -{ 0xBA12, 0xBA12, 0xBA12 },
  30581. -{ 0xBA13, 0xBA13, 0xBA13 },
  30582. -{ 0xBA14, 0xBA14, 0xBA14 },
  30583. -{ 0xBA15, 0xBA15, 0xBA15 },
  30584. -{ 0xBA16, 0xBA16, 0xBA16 },
  30585. -{ 0xBA17, 0xBA17, 0xBA17 },
  30586. -{ 0xBA18, 0xBA18, 0xBA18 },
  30587. -{ 0xBA19, 0xBA19, 0xBA19 },
  30588. -{ 0xBA1A, 0xBA1A, 0xBA1A },
  30589. -{ 0xBA1B, 0xBA1B, 0xBA1B },
  30590. -{ 0xBA1C, 0xBA1C, 0xBA1C },
  30591. -{ 0xBA1D, 0xBA1D, 0xBA1D },
  30592. -{ 0xBA1E, 0xBA1E, 0xBA1E },
  30593. -{ 0xBA1F, 0xBA1F, 0xBA1F },
  30594. -{ 0xBA20, 0xBA20, 0xBA20 },
  30595. -{ 0xBA21, 0xBA21, 0xBA21 },
  30596. -{ 0xBA22, 0xBA22, 0xBA22 },
  30597. -{ 0xBA23, 0xBA23, 0xBA23 },
  30598. -{ 0xBA24, 0xBA24, 0xBA24 },
  30599. -{ 0xBA25, 0xBA25, 0xBA25 },
  30600. -{ 0xBA26, 0xBA26, 0xBA26 },
  30601. -{ 0xBA27, 0xBA27, 0xBA27 },
  30602. -{ 0xBA28, 0xBA28, 0xBA28 },
  30603. -{ 0xBA29, 0xBA29, 0xBA29 },
  30604. -{ 0xBA2A, 0xBA2A, 0xBA2A },
  30605. -{ 0xBA2B, 0xBA2B, 0xBA2B },
  30606. -{ 0xBA2C, 0xBA2C, 0xBA2C },
  30607. -{ 0xBA2D, 0xBA2D, 0xBA2D },
  30608. -{ 0xBA2E, 0xBA2E, 0xBA2E },
  30609. -{ 0xBA2F, 0xBA2F, 0xBA2F },
  30610. -{ 0xBA30, 0xBA30, 0xBA30 },
  30611. -{ 0xBA31, 0xBA31, 0xBA31 },
  30612. -{ 0xBA32, 0xBA32, 0xBA32 },
  30613. -{ 0xBA33, 0xBA33, 0xBA33 },
  30614. -{ 0xBA34, 0xBA34, 0xBA34 },
  30615. -{ 0xBA35, 0xBA35, 0xBA35 },
  30616. -{ 0xBA36, 0xBA36, 0xBA36 },
  30617. -{ 0xBA37, 0xBA37, 0xBA37 },
  30618. -{ 0xBA38, 0xBA38, 0xBA38 },
  30619. -{ 0xBA39, 0xBA39, 0xBA39 },
  30620. -{ 0xBA3A, 0xBA3A, 0xBA3A },
  30621. -{ 0xBA3B, 0xBA3B, 0xBA3B },
  30622. -{ 0xBA3C, 0xBA3C, 0xBA3C },
  30623. -{ 0xBA3D, 0xBA3D, 0xBA3D },
  30624. -{ 0xBA3E, 0xBA3E, 0xBA3E },
  30625. -{ 0xBA3F, 0xBA3F, 0xBA3F },
  30626. -{ 0xBA40, 0xBA40, 0xBA40 },
  30627. -{ 0xBA41, 0xBA41, 0xBA41 },
  30628. -{ 0xBA42, 0xBA42, 0xBA42 },
  30629. -{ 0xBA43, 0xBA43, 0xBA43 },
  30630. -{ 0xBA44, 0xBA44, 0xBA44 },
  30631. -{ 0xBA45, 0xBA45, 0xBA45 },
  30632. -{ 0xBA46, 0xBA46, 0xBA46 },
  30633. -{ 0xBA47, 0xBA47, 0xBA47 },
  30634. -{ 0xBA48, 0xBA48, 0xBA48 },
  30635. -{ 0xBA49, 0xBA49, 0xBA49 },
  30636. -{ 0xBA4A, 0xBA4A, 0xBA4A },
  30637. -{ 0xBA4B, 0xBA4B, 0xBA4B },
  30638. -{ 0xBA4C, 0xBA4C, 0xBA4C },
  30639. -{ 0xBA4D, 0xBA4D, 0xBA4D },
  30640. -{ 0xBA4E, 0xBA4E, 0xBA4E },
  30641. -{ 0xBA4F, 0xBA4F, 0xBA4F },
  30642. -{ 0xBA50, 0xBA50, 0xBA50 },
  30643. -{ 0xBA51, 0xBA51, 0xBA51 },
  30644. -{ 0xBA52, 0xBA52, 0xBA52 },
  30645. -{ 0xBA53, 0xBA53, 0xBA53 },
  30646. -{ 0xBA54, 0xBA54, 0xBA54 },
  30647. -{ 0xBA55, 0xBA55, 0xBA55 },
  30648. -{ 0xBA56, 0xBA56, 0xBA56 },
  30649. -{ 0xBA57, 0xBA57, 0xBA57 },
  30650. -{ 0xBA58, 0xBA58, 0xBA58 },
  30651. -{ 0xBA59, 0xBA59, 0xBA59 },
  30652. -{ 0xBA5A, 0xBA5A, 0xBA5A },
  30653. -{ 0xBA5B, 0xBA5B, 0xBA5B },
  30654. -{ 0xBA5C, 0xBA5C, 0xBA5C },
  30655. -{ 0xBA5D, 0xBA5D, 0xBA5D },
  30656. -{ 0xBA5E, 0xBA5E, 0xBA5E },
  30657. -{ 0xBA5F, 0xBA5F, 0xBA5F },
  30658. -{ 0xBA60, 0xBA60, 0xBA60 },
  30659. -{ 0xBA61, 0xBA61, 0xBA61 },
  30660. -{ 0xBA62, 0xBA62, 0xBA62 },
  30661. -{ 0xBA63, 0xBA63, 0xBA63 },
  30662. -{ 0xBA64, 0xBA64, 0xBA64 },
  30663. -{ 0xBA65, 0xBA65, 0xBA65 },
  30664. -{ 0xBA66, 0xBA66, 0xBA66 },
  30665. -{ 0xBA67, 0xBA67, 0xBA67 },
  30666. -{ 0xBA68, 0xBA68, 0xBA68 },
  30667. -{ 0xBA69, 0xBA69, 0xBA69 },
  30668. -{ 0xBA6A, 0xBA6A, 0xBA6A },
  30669. -{ 0xBA6B, 0xBA6B, 0xBA6B },
  30670. -{ 0xBA6C, 0xBA6C, 0xBA6C },
  30671. -{ 0xBA6D, 0xBA6D, 0xBA6D },
  30672. -{ 0xBA6E, 0xBA6E, 0xBA6E },
  30673. -{ 0xBA6F, 0xBA6F, 0xBA6F },
  30674. -{ 0xBA70, 0xBA70, 0xBA70 },
  30675. -{ 0xBA71, 0xBA71, 0xBA71 },
  30676. -{ 0xBA72, 0xBA72, 0xBA72 },
  30677. -{ 0xBA73, 0xBA73, 0xBA73 },
  30678. -{ 0xBA74, 0xBA74, 0xBA74 },
  30679. -{ 0xBA75, 0xBA75, 0xBA75 },
  30680. -{ 0xBA76, 0xBA76, 0xBA76 },
  30681. -{ 0xBA77, 0xBA77, 0xBA77 },
  30682. -{ 0xBA78, 0xBA78, 0xBA78 },
  30683. -{ 0xBA79, 0xBA79, 0xBA79 },
  30684. -{ 0xBA7A, 0xBA7A, 0xBA7A },
  30685. -{ 0xBA7B, 0xBA7B, 0xBA7B },
  30686. -{ 0xBA7C, 0xBA7C, 0xBA7C },
  30687. -{ 0xBA7D, 0xBA7D, 0xBA7D },
  30688. -{ 0xBA7E, 0xBA7E, 0xBA7E },
  30689. -{ 0xBA7F, 0xBA7F, 0xBA7F },
  30690. -{ 0xBA80, 0xBA80, 0xBA80 },
  30691. -{ 0xBA81, 0xBA81, 0xBA81 },
  30692. -{ 0xBA82, 0xBA82, 0xBA82 },
  30693. -{ 0xBA83, 0xBA83, 0xBA83 },
  30694. -{ 0xBA84, 0xBA84, 0xBA84 },
  30695. -{ 0xBA85, 0xBA85, 0xBA85 },
  30696. -{ 0xBA86, 0xBA86, 0xBA86 },
  30697. -{ 0xBA87, 0xBA87, 0xBA87 },
  30698. -{ 0xBA88, 0xBA88, 0xBA88 },
  30699. -{ 0xBA89, 0xBA89, 0xBA89 },
  30700. -{ 0xBA8A, 0xBA8A, 0xBA8A },
  30701. -{ 0xBA8B, 0xBA8B, 0xBA8B },
  30702. -{ 0xBA8C, 0xBA8C, 0xBA8C },
  30703. -{ 0xBA8D, 0xBA8D, 0xBA8D },
  30704. -{ 0xBA8E, 0xBA8E, 0xBA8E },
  30705. -{ 0xBA8F, 0xBA8F, 0xBA8F },
  30706. -{ 0xBA90, 0xBA90, 0xBA90 },
  30707. -{ 0xBA91, 0xBA91, 0xBA91 },
  30708. -{ 0xBA92, 0xBA92, 0xBA92 },
  30709. -{ 0xBA93, 0xBA93, 0xBA93 },
  30710. -{ 0xBA94, 0xBA94, 0xBA94 },
  30711. -{ 0xBA95, 0xBA95, 0xBA95 },
  30712. -{ 0xBA96, 0xBA96, 0xBA96 },
  30713. -{ 0xBA97, 0xBA97, 0xBA97 },
  30714. -{ 0xBA98, 0xBA98, 0xBA98 },
  30715. -{ 0xBA99, 0xBA99, 0xBA99 },
  30716. -{ 0xBA9A, 0xBA9A, 0xBA9A },
  30717. -{ 0xBA9B, 0xBA9B, 0xBA9B },
  30718. -{ 0xBA9C, 0xBA9C, 0xBA9C },
  30719. -{ 0xBA9D, 0xBA9D, 0xBA9D },
  30720. -{ 0xBA9E, 0xBA9E, 0xBA9E },
  30721. -{ 0xBA9F, 0xBA9F, 0xBA9F },
  30722. -{ 0xBAA0, 0xBAA0, 0xBAA0 },
  30723. -{ 0xBAA1, 0xBAA1, 0xBAA1 },
  30724. -{ 0xBAA2, 0xBAA2, 0xBAA2 },
  30725. -{ 0xBAA3, 0xBAA3, 0xBAA3 },
  30726. -{ 0xBAA4, 0xBAA4, 0xBAA4 },
  30727. -{ 0xBAA5, 0xBAA5, 0xBAA5 },
  30728. -{ 0xBAA6, 0xBAA6, 0xBAA6 },
  30729. -{ 0xBAA7, 0xBAA7, 0xBAA7 },
  30730. -{ 0xBAA8, 0xBAA8, 0xBAA8 },
  30731. -{ 0xBAA9, 0xBAA9, 0xBAA9 },
  30732. -{ 0xBAAA, 0xBAAA, 0xBAAA },
  30733. -{ 0xBAAB, 0xBAAB, 0xBAAB },
  30734. -{ 0xBAAC, 0xBAAC, 0xBAAC },
  30735. -{ 0xBAAD, 0xBAAD, 0xBAAD },
  30736. -{ 0xBAAE, 0xBAAE, 0xBAAE },
  30737. -{ 0xBAAF, 0xBAAF, 0xBAAF },
  30738. -{ 0xBAB0, 0xBAB0, 0xBAB0 },
  30739. -{ 0xBAB1, 0xBAB1, 0xBAB1 },
  30740. -{ 0xBAB2, 0xBAB2, 0xBAB2 },
  30741. -{ 0xBAB3, 0xBAB3, 0xBAB3 },
  30742. -{ 0xBAB4, 0xBAB4, 0xBAB4 },
  30743. -{ 0xBAB5, 0xBAB5, 0xBAB5 },
  30744. -{ 0xBAB6, 0xBAB6, 0xBAB6 },
  30745. -{ 0xBAB7, 0xBAB7, 0xBAB7 },
  30746. -{ 0xBAB8, 0xBAB8, 0xBAB8 },
  30747. -{ 0xBAB9, 0xBAB9, 0xBAB9 },
  30748. -{ 0xBABA, 0xBABA, 0xBABA },
  30749. -{ 0xBABB, 0xBABB, 0xBABB },
  30750. -{ 0xBABC, 0xBABC, 0xBABC },
  30751. -{ 0xBABD, 0xBABD, 0xBABD },
  30752. -{ 0xBABE, 0xBABE, 0xBABE },
  30753. -{ 0xBABF, 0xBABF, 0xBABF },
  30754. -{ 0xBAC0, 0xBAC0, 0xBAC0 },
  30755. -{ 0xBAC1, 0xBAC1, 0xBAC1 },
  30756. -{ 0xBAC2, 0xBAC2, 0xBAC2 },
  30757. -{ 0xBAC3, 0xBAC3, 0xBAC3 },
  30758. -{ 0xBAC4, 0xBAC4, 0xBAC4 },
  30759. -{ 0xBAC5, 0xBAC5, 0xBAC5 },
  30760. -{ 0xBAC6, 0xBAC6, 0xBAC6 },
  30761. -{ 0xBAC7, 0xBAC7, 0xBAC7 },
  30762. -{ 0xBAC8, 0xBAC8, 0xBAC8 },
  30763. -{ 0xBAC9, 0xBAC9, 0xBAC9 },
  30764. -{ 0xBACA, 0xBACA, 0xBACA },
  30765. -{ 0xBACB, 0xBACB, 0xBACB },
  30766. -{ 0xBACC, 0xBACC, 0xBACC },
  30767. -{ 0xBACD, 0xBACD, 0xBACD },
  30768. -{ 0xBACE, 0xBACE, 0xBACE },
  30769. -{ 0xBACF, 0xBACF, 0xBACF },
  30770. -{ 0xBAD0, 0xBAD0, 0xBAD0 },
  30771. -{ 0xBAD1, 0xBAD1, 0xBAD1 },
  30772. -{ 0xBAD2, 0xBAD2, 0xBAD2 },
  30773. -{ 0xBAD3, 0xBAD3, 0xBAD3 },
  30774. -{ 0xBAD4, 0xBAD4, 0xBAD4 },
  30775. -{ 0xBAD5, 0xBAD5, 0xBAD5 },
  30776. -{ 0xBAD6, 0xBAD6, 0xBAD6 },
  30777. -{ 0xBAD7, 0xBAD7, 0xBAD7 },
  30778. -{ 0xBAD8, 0xBAD8, 0xBAD8 },
  30779. -{ 0xBAD9, 0xBAD9, 0xBAD9 },
  30780. -{ 0xBADA, 0xBADA, 0xBADA },
  30781. -{ 0xBADB, 0xBADB, 0xBADB },
  30782. -{ 0xBADC, 0xBADC, 0xBADC },
  30783. -{ 0xBADD, 0xBADD, 0xBADD },
  30784. -{ 0xBADE, 0xBADE, 0xBADE },
  30785. -{ 0xBADF, 0xBADF, 0xBADF },
  30786. -{ 0xBAE0, 0xBAE0, 0xBAE0 },
  30787. -{ 0xBAE1, 0xBAE1, 0xBAE1 },
  30788. -{ 0xBAE2, 0xBAE2, 0xBAE2 },
  30789. -{ 0xBAE3, 0xBAE3, 0xBAE3 },
  30790. -{ 0xBAE4, 0xBAE4, 0xBAE4 },
  30791. -{ 0xBAE5, 0xBAE5, 0xBAE5 },
  30792. -{ 0xBAE6, 0xBAE6, 0xBAE6 },
  30793. -{ 0xBAE7, 0xBAE7, 0xBAE7 },
  30794. -{ 0xBAE8, 0xBAE8, 0xBAE8 },
  30795. -{ 0xBAE9, 0xBAE9, 0xBAE9 },
  30796. -{ 0xBAEA, 0xBAEA, 0xBAEA },
  30797. -{ 0xBAEB, 0xBAEB, 0xBAEB },
  30798. -{ 0xBAEC, 0xBAEC, 0xBAEC },
  30799. -{ 0xBAED, 0xBAED, 0xBAED },
  30800. -{ 0xBAEE, 0xBAEE, 0xBAEE },
  30801. -{ 0xBAEF, 0xBAEF, 0xBAEF },
  30802. -{ 0xBAF0, 0xBAF0, 0xBAF0 },
  30803. -{ 0xBAF1, 0xBAF1, 0xBAF1 },
  30804. -{ 0xBAF2, 0xBAF2, 0xBAF2 },
  30805. -{ 0xBAF3, 0xBAF3, 0xBAF3 },
  30806. -{ 0xBAF4, 0xBAF4, 0xBAF4 },
  30807. -{ 0xBAF5, 0xBAF5, 0xBAF5 },
  30808. -{ 0xBAF6, 0xBAF6, 0xBAF6 },
  30809. -{ 0xBAF7, 0xBAF7, 0xBAF7 },
  30810. -{ 0xBAF8, 0xBAF8, 0xBAF8 },
  30811. -{ 0xBAF9, 0xBAF9, 0xBAF9 },
  30812. -{ 0xBAFA, 0xBAFA, 0xBAFA },
  30813. -{ 0xBAFB, 0xBAFB, 0xBAFB },
  30814. -{ 0xBAFC, 0xBAFC, 0xBAFC },
  30815. -{ 0xBAFD, 0xBAFD, 0xBAFD },
  30816. -{ 0xBAFE, 0xBAFE, 0xBAFE },
  30817. -{ 0xBAFF, 0xBAFF, 0xBAFF },
  30818. -{ 0xBB00, 0xBB00, 0xBB00 },
  30819. -{ 0xBB01, 0xBB01, 0xBB01 },
  30820. -{ 0xBB02, 0xBB02, 0xBB02 },
  30821. -{ 0xBB03, 0xBB03, 0xBB03 },
  30822. -{ 0xBB04, 0xBB04, 0xBB04 },
  30823. -{ 0xBB05, 0xBB05, 0xBB05 },
  30824. -{ 0xBB06, 0xBB06, 0xBB06 },
  30825. -{ 0xBB07, 0xBB07, 0xBB07 },
  30826. -{ 0xBB08, 0xBB08, 0xBB08 },
  30827. -{ 0xBB09, 0xBB09, 0xBB09 },
  30828. -{ 0xBB0A, 0xBB0A, 0xBB0A },
  30829. -{ 0xBB0B, 0xBB0B, 0xBB0B },
  30830. -{ 0xBB0C, 0xBB0C, 0xBB0C },
  30831. -{ 0xBB0D, 0xBB0D, 0xBB0D },
  30832. -{ 0xBB0E, 0xBB0E, 0xBB0E },
  30833. -{ 0xBB0F, 0xBB0F, 0xBB0F },
  30834. -{ 0xBB10, 0xBB10, 0xBB10 },
  30835. -{ 0xBB11, 0xBB11, 0xBB11 },
  30836. -{ 0xBB12, 0xBB12, 0xBB12 },
  30837. -{ 0xBB13, 0xBB13, 0xBB13 },
  30838. -{ 0xBB14, 0xBB14, 0xBB14 },
  30839. -{ 0xBB15, 0xBB15, 0xBB15 },
  30840. -{ 0xBB16, 0xBB16, 0xBB16 },
  30841. -{ 0xBB17, 0xBB17, 0xBB17 },
  30842. -{ 0xBB18, 0xBB18, 0xBB18 },
  30843. -{ 0xBB19, 0xBB19, 0xBB19 },
  30844. -{ 0xBB1A, 0xBB1A, 0xBB1A },
  30845. -{ 0xBB1B, 0xBB1B, 0xBB1B },
  30846. -{ 0xBB1C, 0xBB1C, 0xBB1C },
  30847. -{ 0xBB1D, 0xBB1D, 0xBB1D },
  30848. -{ 0xBB1E, 0xBB1E, 0xBB1E },
  30849. -{ 0xBB1F, 0xBB1F, 0xBB1F },
  30850. -{ 0xBB20, 0xBB20, 0xBB20 },
  30851. -{ 0xBB21, 0xBB21, 0xBB21 },
  30852. -{ 0xBB22, 0xBB22, 0xBB22 },
  30853. -{ 0xBB23, 0xBB23, 0xBB23 },
  30854. -{ 0xBB24, 0xBB24, 0xBB24 },
  30855. -{ 0xBB25, 0xBB25, 0xBB25 },
  30856. -{ 0xBB26, 0xBB26, 0xBB26 },
  30857. -{ 0xBB27, 0xBB27, 0xBB27 },
  30858. -{ 0xBB28, 0xBB28, 0xBB28 },
  30859. -{ 0xBB29, 0xBB29, 0xBB29 },
  30860. -{ 0xBB2A, 0xBB2A, 0xBB2A },
  30861. -{ 0xBB2B, 0xBB2B, 0xBB2B },
  30862. -{ 0xBB2C, 0xBB2C, 0xBB2C },
  30863. -{ 0xBB2D, 0xBB2D, 0xBB2D },
  30864. -{ 0xBB2E, 0xBB2E, 0xBB2E },
  30865. -{ 0xBB2F, 0xBB2F, 0xBB2F },
  30866. -{ 0xBB30, 0xBB30, 0xBB30 },
  30867. -{ 0xBB31, 0xBB31, 0xBB31 },
  30868. -{ 0xBB32, 0xBB32, 0xBB32 },
  30869. -{ 0xBB33, 0xBB33, 0xBB33 },
  30870. -{ 0xBB34, 0xBB34, 0xBB34 },
  30871. -{ 0xBB35, 0xBB35, 0xBB35 },
  30872. -{ 0xBB36, 0xBB36, 0xBB36 },
  30873. -{ 0xBB37, 0xBB37, 0xBB37 },
  30874. -{ 0xBB38, 0xBB38, 0xBB38 },
  30875. -{ 0xBB39, 0xBB39, 0xBB39 },
  30876. -{ 0xBB3A, 0xBB3A, 0xBB3A },
  30877. -{ 0xBB3B, 0xBB3B, 0xBB3B },
  30878. -{ 0xBB3C, 0xBB3C, 0xBB3C },
  30879. -{ 0xBB3D, 0xBB3D, 0xBB3D },
  30880. -{ 0xBB3E, 0xBB3E, 0xBB3E },
  30881. -{ 0xBB3F, 0xBB3F, 0xBB3F },
  30882. -{ 0xBB40, 0xBB40, 0xBB40 },
  30883. -{ 0xBB41, 0xBB41, 0xBB41 },
  30884. -{ 0xBB42, 0xBB42, 0xBB42 },
  30885. -{ 0xBB43, 0xBB43, 0xBB43 },
  30886. -{ 0xBB44, 0xBB44, 0xBB44 },
  30887. -{ 0xBB45, 0xBB45, 0xBB45 },
  30888. -{ 0xBB46, 0xBB46, 0xBB46 },
  30889. -{ 0xBB47, 0xBB47, 0xBB47 },
  30890. -{ 0xBB48, 0xBB48, 0xBB48 },
  30891. -{ 0xBB49, 0xBB49, 0xBB49 },
  30892. -{ 0xBB4A, 0xBB4A, 0xBB4A },
  30893. -{ 0xBB4B, 0xBB4B, 0xBB4B },
  30894. -{ 0xBB4C, 0xBB4C, 0xBB4C },
  30895. -{ 0xBB4D, 0xBB4D, 0xBB4D },
  30896. -{ 0xBB4E, 0xBB4E, 0xBB4E },
  30897. -{ 0xBB4F, 0xBB4F, 0xBB4F },
  30898. -{ 0xBB50, 0xBB50, 0xBB50 },
  30899. -{ 0xBB51, 0xBB51, 0xBB51 },
  30900. -{ 0xBB52, 0xBB52, 0xBB52 },
  30901. -{ 0xBB53, 0xBB53, 0xBB53 },
  30902. -{ 0xBB54, 0xBB54, 0xBB54 },
  30903. -{ 0xBB55, 0xBB55, 0xBB55 },
  30904. -{ 0xBB56, 0xBB56, 0xBB56 },
  30905. -{ 0xBB57, 0xBB57, 0xBB57 },
  30906. -{ 0xBB58, 0xBB58, 0xBB58 },
  30907. -{ 0xBB59, 0xBB59, 0xBB59 },
  30908. -{ 0xBB5A, 0xBB5A, 0xBB5A },
  30909. -{ 0xBB5B, 0xBB5B, 0xBB5B },
  30910. -{ 0xBB5C, 0xBB5C, 0xBB5C },
  30911. -{ 0xBB5D, 0xBB5D, 0xBB5D },
  30912. -{ 0xBB5E, 0xBB5E, 0xBB5E },
  30913. -{ 0xBB5F, 0xBB5F, 0xBB5F },
  30914. -{ 0xBB60, 0xBB60, 0xBB60 },
  30915. -{ 0xBB61, 0xBB61, 0xBB61 },
  30916. -{ 0xBB62, 0xBB62, 0xBB62 },
  30917. -{ 0xBB63, 0xBB63, 0xBB63 },
  30918. -{ 0xBB64, 0xBB64, 0xBB64 },
  30919. -{ 0xBB65, 0xBB65, 0xBB65 },
  30920. -{ 0xBB66, 0xBB66, 0xBB66 },
  30921. -{ 0xBB67, 0xBB67, 0xBB67 },
  30922. -{ 0xBB68, 0xBB68, 0xBB68 },
  30923. -{ 0xBB69, 0xBB69, 0xBB69 },
  30924. -{ 0xBB6A, 0xBB6A, 0xBB6A },
  30925. -{ 0xBB6B, 0xBB6B, 0xBB6B },
  30926. -{ 0xBB6C, 0xBB6C, 0xBB6C },
  30927. -{ 0xBB6D, 0xBB6D, 0xBB6D },
  30928. -{ 0xBB6E, 0xBB6E, 0xBB6E },
  30929. -{ 0xBB6F, 0xBB6F, 0xBB6F },
  30930. -{ 0xBB70, 0xBB70, 0xBB70 },
  30931. -{ 0xBB71, 0xBB71, 0xBB71 },
  30932. -{ 0xBB72, 0xBB72, 0xBB72 },
  30933. -{ 0xBB73, 0xBB73, 0xBB73 },
  30934. -{ 0xBB74, 0xBB74, 0xBB74 },
  30935. -{ 0xBB75, 0xBB75, 0xBB75 },
  30936. -{ 0xBB76, 0xBB76, 0xBB76 },
  30937. -{ 0xBB77, 0xBB77, 0xBB77 },
  30938. -{ 0xBB78, 0xBB78, 0xBB78 },
  30939. -{ 0xBB79, 0xBB79, 0xBB79 },
  30940. -{ 0xBB7A, 0xBB7A, 0xBB7A },
  30941. -{ 0xBB7B, 0xBB7B, 0xBB7B },
  30942. -{ 0xBB7C, 0xBB7C, 0xBB7C },
  30943. -{ 0xBB7D, 0xBB7D, 0xBB7D },
  30944. -{ 0xBB7E, 0xBB7E, 0xBB7E },
  30945. -{ 0xBB7F, 0xBB7F, 0xBB7F },
  30946. -{ 0xBB80, 0xBB80, 0xBB80 },
  30947. -{ 0xBB81, 0xBB81, 0xBB81 },
  30948. -{ 0xBB82, 0xBB82, 0xBB82 },
  30949. -{ 0xBB83, 0xBB83, 0xBB83 },
  30950. -{ 0xBB84, 0xBB84, 0xBB84 },
  30951. -{ 0xBB85, 0xBB85, 0xBB85 },
  30952. -{ 0xBB86, 0xBB86, 0xBB86 },
  30953. -{ 0xBB87, 0xBB87, 0xBB87 },
  30954. -{ 0xBB88, 0xBB88, 0xBB88 },
  30955. -{ 0xBB89, 0xBB89, 0xBB89 },
  30956. -{ 0xBB8A, 0xBB8A, 0xBB8A },
  30957. -{ 0xBB8B, 0xBB8B, 0xBB8B },
  30958. -{ 0xBB8C, 0xBB8C, 0xBB8C },
  30959. -{ 0xBB8D, 0xBB8D, 0xBB8D },
  30960. -{ 0xBB8E, 0xBB8E, 0xBB8E },
  30961. -{ 0xBB8F, 0xBB8F, 0xBB8F },
  30962. -{ 0xBB90, 0xBB90, 0xBB90 },
  30963. -{ 0xBB91, 0xBB91, 0xBB91 },
  30964. -{ 0xBB92, 0xBB92, 0xBB92 },
  30965. -{ 0xBB93, 0xBB93, 0xBB93 },
  30966. -{ 0xBB94, 0xBB94, 0xBB94 },
  30967. -{ 0xBB95, 0xBB95, 0xBB95 },
  30968. -{ 0xBB96, 0xBB96, 0xBB96 },
  30969. -{ 0xBB97, 0xBB97, 0xBB97 },
  30970. -{ 0xBB98, 0xBB98, 0xBB98 },
  30971. -{ 0xBB99, 0xBB99, 0xBB99 },
  30972. -{ 0xBB9A, 0xBB9A, 0xBB9A },
  30973. -{ 0xBB9B, 0xBB9B, 0xBB9B },
  30974. -{ 0xBB9C, 0xBB9C, 0xBB9C },
  30975. -{ 0xBB9D, 0xBB9D, 0xBB9D },
  30976. -{ 0xBB9E, 0xBB9E, 0xBB9E },
  30977. -{ 0xBB9F, 0xBB9F, 0xBB9F },
  30978. -{ 0xBBA0, 0xBBA0, 0xBBA0 },
  30979. -{ 0xBBA1, 0xBBA1, 0xBBA1 },
  30980. -{ 0xBBA2, 0xBBA2, 0xBBA2 },
  30981. -{ 0xBBA3, 0xBBA3, 0xBBA3 },
  30982. -{ 0xBBA4, 0xBBA4, 0xBBA4 },
  30983. -{ 0xBBA5, 0xBBA5, 0xBBA5 },
  30984. -{ 0xBBA6, 0xBBA6, 0xBBA6 },
  30985. -{ 0xBBA7, 0xBBA7, 0xBBA7 },
  30986. -{ 0xBBA8, 0xBBA8, 0xBBA8 },
  30987. -{ 0xBBA9, 0xBBA9, 0xBBA9 },
  30988. -{ 0xBBAA, 0xBBAA, 0xBBAA },
  30989. -{ 0xBBAB, 0xBBAB, 0xBBAB },
  30990. -{ 0xBBAC, 0xBBAC, 0xBBAC },
  30991. -{ 0xBBAD, 0xBBAD, 0xBBAD },
  30992. -{ 0xBBAE, 0xBBAE, 0xBBAE },
  30993. -{ 0xBBAF, 0xBBAF, 0xBBAF },
  30994. -{ 0xBBB0, 0xBBB0, 0xBBB0 },
  30995. -{ 0xBBB1, 0xBBB1, 0xBBB1 },
  30996. -{ 0xBBB2, 0xBBB2, 0xBBB2 },
  30997. -{ 0xBBB3, 0xBBB3, 0xBBB3 },
  30998. -{ 0xBBB4, 0xBBB4, 0xBBB4 },
  30999. -{ 0xBBB5, 0xBBB5, 0xBBB5 },
  31000. -{ 0xBBB6, 0xBBB6, 0xBBB6 },
  31001. -{ 0xBBB7, 0xBBB7, 0xBBB7 },
  31002. -{ 0xBBB8, 0xBBB8, 0xBBB8 },
  31003. -{ 0xBBB9, 0xBBB9, 0xBBB9 },
  31004. -{ 0xBBBA, 0xBBBA, 0xBBBA },
  31005. -{ 0xBBBB, 0xBBBB, 0xBBBB },
  31006. -{ 0xBBBC, 0xBBBC, 0xBBBC },
  31007. -{ 0xBBBD, 0xBBBD, 0xBBBD },
  31008. -{ 0xBBBE, 0xBBBE, 0xBBBE },
  31009. -{ 0xBBBF, 0xBBBF, 0xBBBF },
  31010. -{ 0xBBC0, 0xBBC0, 0xBBC0 },
  31011. -{ 0xBBC1, 0xBBC1, 0xBBC1 },
  31012. -{ 0xBBC2, 0xBBC2, 0xBBC2 },
  31013. -{ 0xBBC3, 0xBBC3, 0xBBC3 },
  31014. -{ 0xBBC4, 0xBBC4, 0xBBC4 },
  31015. -{ 0xBBC5, 0xBBC5, 0xBBC5 },
  31016. -{ 0xBBC6, 0xBBC6, 0xBBC6 },
  31017. -{ 0xBBC7, 0xBBC7, 0xBBC7 },
  31018. -{ 0xBBC8, 0xBBC8, 0xBBC8 },
  31019. -{ 0xBBC9, 0xBBC9, 0xBBC9 },
  31020. -{ 0xBBCA, 0xBBCA, 0xBBCA },
  31021. -{ 0xBBCB, 0xBBCB, 0xBBCB },
  31022. -{ 0xBBCC, 0xBBCC, 0xBBCC },
  31023. -{ 0xBBCD, 0xBBCD, 0xBBCD },
  31024. -{ 0xBBCE, 0xBBCE, 0xBBCE },
  31025. -{ 0xBBCF, 0xBBCF, 0xBBCF },
  31026. -{ 0xBBD0, 0xBBD0, 0xBBD0 },
  31027. -{ 0xBBD1, 0xBBD1, 0xBBD1 },
  31028. -{ 0xBBD2, 0xBBD2, 0xBBD2 },
  31029. -{ 0xBBD3, 0xBBD3, 0xBBD3 },
  31030. -{ 0xBBD4, 0xBBD4, 0xBBD4 },
  31031. -{ 0xBBD5, 0xBBD5, 0xBBD5 },
  31032. -{ 0xBBD6, 0xBBD6, 0xBBD6 },
  31033. -{ 0xBBD7, 0xBBD7, 0xBBD7 },
  31034. -{ 0xBBD8, 0xBBD8, 0xBBD8 },
  31035. -{ 0xBBD9, 0xBBD9, 0xBBD9 },
  31036. -{ 0xBBDA, 0xBBDA, 0xBBDA },
  31037. -{ 0xBBDB, 0xBBDB, 0xBBDB },
  31038. -{ 0xBBDC, 0xBBDC, 0xBBDC },
  31039. -{ 0xBBDD, 0xBBDD, 0xBBDD },
  31040. -{ 0xBBDE, 0xBBDE, 0xBBDE },
  31041. -{ 0xBBDF, 0xBBDF, 0xBBDF },
  31042. -{ 0xBBE0, 0xBBE0, 0xBBE0 },
  31043. -{ 0xBBE1, 0xBBE1, 0xBBE1 },
  31044. -{ 0xBBE2, 0xBBE2, 0xBBE2 },
  31045. -{ 0xBBE3, 0xBBE3, 0xBBE3 },
  31046. -{ 0xBBE4, 0xBBE4, 0xBBE4 },
  31047. -{ 0xBBE5, 0xBBE5, 0xBBE5 },
  31048. -{ 0xBBE6, 0xBBE6, 0xBBE6 },
  31049. -{ 0xBBE7, 0xBBE7, 0xBBE7 },
  31050. -{ 0xBBE8, 0xBBE8, 0xBBE8 },
  31051. -{ 0xBBE9, 0xBBE9, 0xBBE9 },
  31052. -{ 0xBBEA, 0xBBEA, 0xBBEA },
  31053. -{ 0xBBEB, 0xBBEB, 0xBBEB },
  31054. -{ 0xBBEC, 0xBBEC, 0xBBEC },
  31055. -{ 0xBBED, 0xBBED, 0xBBED },
  31056. -{ 0xBBEE, 0xBBEE, 0xBBEE },
  31057. -{ 0xBBEF, 0xBBEF, 0xBBEF },
  31058. -{ 0xBBF0, 0xBBF0, 0xBBF0 },
  31059. -{ 0xBBF1, 0xBBF1, 0xBBF1 },
  31060. -{ 0xBBF2, 0xBBF2, 0xBBF2 },
  31061. -{ 0xBBF3, 0xBBF3, 0xBBF3 },
  31062. -{ 0xBBF4, 0xBBF4, 0xBBF4 },
  31063. -{ 0xBBF5, 0xBBF5, 0xBBF5 },
  31064. -{ 0xBBF6, 0xBBF6, 0xBBF6 },
  31065. -{ 0xBBF7, 0xBBF7, 0xBBF7 },
  31066. -{ 0xBBF8, 0xBBF8, 0xBBF8 },
  31067. -{ 0xBBF9, 0xBBF9, 0xBBF9 },
  31068. -{ 0xBBFA, 0xBBFA, 0xBBFA },
  31069. -{ 0xBBFB, 0xBBFB, 0xBBFB },
  31070. -{ 0xBBFC, 0xBBFC, 0xBBFC },
  31071. -{ 0xBBFD, 0xBBFD, 0xBBFD },
  31072. -{ 0xBBFE, 0xBBFE, 0xBBFE },
  31073. -{ 0xBBFF, 0xBBFF, 0xBBFF },
  31074. -{ 0xBC00, 0xBC00, 0xBC00 },
  31075. -{ 0xBC01, 0xBC01, 0xBC01 },
  31076. -{ 0xBC02, 0xBC02, 0xBC02 },
  31077. -{ 0xBC03, 0xBC03, 0xBC03 },
  31078. -{ 0xBC04, 0xBC04, 0xBC04 },
  31079. -{ 0xBC05, 0xBC05, 0xBC05 },
  31080. -{ 0xBC06, 0xBC06, 0xBC06 },
  31081. -{ 0xBC07, 0xBC07, 0xBC07 },
  31082. -{ 0xBC08, 0xBC08, 0xBC08 },
  31083. -{ 0xBC09, 0xBC09, 0xBC09 },
  31084. -{ 0xBC0A, 0xBC0A, 0xBC0A },
  31085. -{ 0xBC0B, 0xBC0B, 0xBC0B },
  31086. -{ 0xBC0C, 0xBC0C, 0xBC0C },
  31087. -{ 0xBC0D, 0xBC0D, 0xBC0D },
  31088. -{ 0xBC0E, 0xBC0E, 0xBC0E },
  31089. -{ 0xBC0F, 0xBC0F, 0xBC0F },
  31090. -{ 0xBC10, 0xBC10, 0xBC10 },
  31091. -{ 0xBC11, 0xBC11, 0xBC11 },
  31092. -{ 0xBC12, 0xBC12, 0xBC12 },
  31093. -{ 0xBC13, 0xBC13, 0xBC13 },
  31094. -{ 0xBC14, 0xBC14, 0xBC14 },
  31095. -{ 0xBC15, 0xBC15, 0xBC15 },
  31096. -{ 0xBC16, 0xBC16, 0xBC16 },
  31097. -{ 0xBC17, 0xBC17, 0xBC17 },
  31098. -{ 0xBC18, 0xBC18, 0xBC18 },
  31099. -{ 0xBC19, 0xBC19, 0xBC19 },
  31100. -{ 0xBC1A, 0xBC1A, 0xBC1A },
  31101. -{ 0xBC1B, 0xBC1B, 0xBC1B },
  31102. -{ 0xBC1C, 0xBC1C, 0xBC1C },
  31103. -{ 0xBC1D, 0xBC1D, 0xBC1D },
  31104. -{ 0xBC1E, 0xBC1E, 0xBC1E },
  31105. -{ 0xBC1F, 0xBC1F, 0xBC1F },
  31106. -{ 0xBC20, 0xBC20, 0xBC20 },
  31107. -{ 0xBC21, 0xBC21, 0xBC21 },
  31108. -{ 0xBC22, 0xBC22, 0xBC22 },
  31109. -{ 0xBC23, 0xBC23, 0xBC23 },
  31110. -{ 0xBC24, 0xBC24, 0xBC24 },
  31111. -{ 0xBC25, 0xBC25, 0xBC25 },
  31112. -{ 0xBC26, 0xBC26, 0xBC26 },
  31113. -{ 0xBC27, 0xBC27, 0xBC27 },
  31114. -{ 0xBC28, 0xBC28, 0xBC28 },
  31115. -{ 0xBC29, 0xBC29, 0xBC29 },
  31116. -{ 0xBC2A, 0xBC2A, 0xBC2A },
  31117. -{ 0xBC2B, 0xBC2B, 0xBC2B },
  31118. -{ 0xBC2C, 0xBC2C, 0xBC2C },
  31119. -{ 0xBC2D, 0xBC2D, 0xBC2D },
  31120. -{ 0xBC2E, 0xBC2E, 0xBC2E },
  31121. -{ 0xBC2F, 0xBC2F, 0xBC2F },
  31122. -{ 0xBC30, 0xBC30, 0xBC30 },
  31123. -{ 0xBC31, 0xBC31, 0xBC31 },
  31124. -{ 0xBC32, 0xBC32, 0xBC32 },
  31125. -{ 0xBC33, 0xBC33, 0xBC33 },
  31126. -{ 0xBC34, 0xBC34, 0xBC34 },
  31127. -{ 0xBC35, 0xBC35, 0xBC35 },
  31128. -{ 0xBC36, 0xBC36, 0xBC36 },
  31129. -{ 0xBC37, 0xBC37, 0xBC37 },
  31130. -{ 0xBC38, 0xBC38, 0xBC38 },
  31131. -{ 0xBC39, 0xBC39, 0xBC39 },
  31132. -{ 0xBC3A, 0xBC3A, 0xBC3A },
  31133. -{ 0xBC3B, 0xBC3B, 0xBC3B },
  31134. -{ 0xBC3C, 0xBC3C, 0xBC3C },
  31135. -{ 0xBC3D, 0xBC3D, 0xBC3D },
  31136. -{ 0xBC3E, 0xBC3E, 0xBC3E },
  31137. -{ 0xBC3F, 0xBC3F, 0xBC3F },
  31138. -{ 0xBC40, 0xBC40, 0xBC40 },
  31139. -{ 0xBC41, 0xBC41, 0xBC41 },
  31140. -{ 0xBC42, 0xBC42, 0xBC42 },
  31141. -{ 0xBC43, 0xBC43, 0xBC43 },
  31142. -{ 0xBC44, 0xBC44, 0xBC44 },
  31143. -{ 0xBC45, 0xBC45, 0xBC45 },
  31144. -{ 0xBC46, 0xBC46, 0xBC46 },
  31145. -{ 0xBC47, 0xBC47, 0xBC47 },
  31146. -{ 0xBC48, 0xBC48, 0xBC48 },
  31147. -{ 0xBC49, 0xBC49, 0xBC49 },
  31148. -{ 0xBC4A, 0xBC4A, 0xBC4A },
  31149. -{ 0xBC4B, 0xBC4B, 0xBC4B },
  31150. -{ 0xBC4C, 0xBC4C, 0xBC4C },
  31151. -{ 0xBC4D, 0xBC4D, 0xBC4D },
  31152. -{ 0xBC4E, 0xBC4E, 0xBC4E },
  31153. -{ 0xBC4F, 0xBC4F, 0xBC4F },
  31154. -{ 0xBC50, 0xBC50, 0xBC50 },
  31155. -{ 0xBC51, 0xBC51, 0xBC51 },
  31156. -{ 0xBC52, 0xBC52, 0xBC52 },
  31157. -{ 0xBC53, 0xBC53, 0xBC53 },
  31158. -{ 0xBC54, 0xBC54, 0xBC54 },
  31159. -{ 0xBC55, 0xBC55, 0xBC55 },
  31160. -{ 0xBC56, 0xBC56, 0xBC56 },
  31161. -{ 0xBC57, 0xBC57, 0xBC57 },
  31162. -{ 0xBC58, 0xBC58, 0xBC58 },
  31163. -{ 0xBC59, 0xBC59, 0xBC59 },
  31164. -{ 0xBC5A, 0xBC5A, 0xBC5A },
  31165. -{ 0xBC5B, 0xBC5B, 0xBC5B },
  31166. -{ 0xBC5C, 0xBC5C, 0xBC5C },
  31167. -{ 0xBC5D, 0xBC5D, 0xBC5D },
  31168. -{ 0xBC5E, 0xBC5E, 0xBC5E },
  31169. -{ 0xBC5F, 0xBC5F, 0xBC5F },
  31170. -{ 0xBC60, 0xBC60, 0xBC60 },
  31171. -{ 0xBC61, 0xBC61, 0xBC61 },
  31172. -{ 0xBC62, 0xBC62, 0xBC62 },
  31173. -{ 0xBC63, 0xBC63, 0xBC63 },
  31174. -{ 0xBC64, 0xBC64, 0xBC64 },
  31175. -{ 0xBC65, 0xBC65, 0xBC65 },
  31176. -{ 0xBC66, 0xBC66, 0xBC66 },
  31177. -{ 0xBC67, 0xBC67, 0xBC67 },
  31178. -{ 0xBC68, 0xBC68, 0xBC68 },
  31179. -{ 0xBC69, 0xBC69, 0xBC69 },
  31180. -{ 0xBC6A, 0xBC6A, 0xBC6A },
  31181. -{ 0xBC6B, 0xBC6B, 0xBC6B },
  31182. -{ 0xBC6C, 0xBC6C, 0xBC6C },
  31183. -{ 0xBC6D, 0xBC6D, 0xBC6D },
  31184. -{ 0xBC6E, 0xBC6E, 0xBC6E },
  31185. -{ 0xBC6F, 0xBC6F, 0xBC6F },
  31186. -{ 0xBC70, 0xBC70, 0xBC70 },
  31187. -{ 0xBC71, 0xBC71, 0xBC71 },
  31188. -{ 0xBC72, 0xBC72, 0xBC72 },
  31189. -{ 0xBC73, 0xBC73, 0xBC73 },
  31190. -{ 0xBC74, 0xBC74, 0xBC74 },
  31191. -{ 0xBC75, 0xBC75, 0xBC75 },
  31192. -{ 0xBC76, 0xBC76, 0xBC76 },
  31193. -{ 0xBC77, 0xBC77, 0xBC77 },
  31194. -{ 0xBC78, 0xBC78, 0xBC78 },
  31195. -{ 0xBC79, 0xBC79, 0xBC79 },
  31196. -{ 0xBC7A, 0xBC7A, 0xBC7A },
  31197. -{ 0xBC7B, 0xBC7B, 0xBC7B },
  31198. -{ 0xBC7C, 0xBC7C, 0xBC7C },
  31199. -{ 0xBC7D, 0xBC7D, 0xBC7D },
  31200. -{ 0xBC7E, 0xBC7E, 0xBC7E },
  31201. -{ 0xBC7F, 0xBC7F, 0xBC7F },
  31202. -{ 0xBC80, 0xBC80, 0xBC80 },
  31203. -{ 0xBC81, 0xBC81, 0xBC81 },
  31204. -{ 0xBC82, 0xBC82, 0xBC82 },
  31205. -{ 0xBC83, 0xBC83, 0xBC83 },
  31206. -{ 0xBC84, 0xBC84, 0xBC84 },
  31207. -{ 0xBC85, 0xBC85, 0xBC85 },
  31208. -{ 0xBC86, 0xBC86, 0xBC86 },
  31209. -{ 0xBC87, 0xBC87, 0xBC87 },
  31210. -{ 0xBC88, 0xBC88, 0xBC88 },
  31211. -{ 0xBC89, 0xBC89, 0xBC89 },
  31212. -{ 0xBC8A, 0xBC8A, 0xBC8A },
  31213. -{ 0xBC8B, 0xBC8B, 0xBC8B },
  31214. -{ 0xBC8C, 0xBC8C, 0xBC8C },
  31215. -{ 0xBC8D, 0xBC8D, 0xBC8D },
  31216. -{ 0xBC8E, 0xBC8E, 0xBC8E },
  31217. -{ 0xBC8F, 0xBC8F, 0xBC8F },
  31218. -{ 0xBC90, 0xBC90, 0xBC90 },
  31219. -{ 0xBC91, 0xBC91, 0xBC91 },
  31220. -{ 0xBC92, 0xBC92, 0xBC92 },
  31221. -{ 0xBC93, 0xBC93, 0xBC93 },
  31222. -{ 0xBC94, 0xBC94, 0xBC94 },
  31223. -{ 0xBC95, 0xBC95, 0xBC95 },
  31224. -{ 0xBC96, 0xBC96, 0xBC96 },
  31225. -{ 0xBC97, 0xBC97, 0xBC97 },
  31226. -{ 0xBC98, 0xBC98, 0xBC98 },
  31227. -{ 0xBC99, 0xBC99, 0xBC99 },
  31228. -{ 0xBC9A, 0xBC9A, 0xBC9A },
  31229. -{ 0xBC9B, 0xBC9B, 0xBC9B },
  31230. -{ 0xBC9C, 0xBC9C, 0xBC9C },
  31231. -{ 0xBC9D, 0xBC9D, 0xBC9D },
  31232. -{ 0xBC9E, 0xBC9E, 0xBC9E },
  31233. -{ 0xBC9F, 0xBC9F, 0xBC9F },
  31234. -{ 0xBCA0, 0xBCA0, 0xBCA0 },
  31235. -{ 0xBCA1, 0xBCA1, 0xBCA1 },
  31236. -{ 0xBCA2, 0xBCA2, 0xBCA2 },
  31237. -{ 0xBCA3, 0xBCA3, 0xBCA3 },
  31238. -{ 0xBCA4, 0xBCA4, 0xBCA4 },
  31239. -{ 0xBCA5, 0xBCA5, 0xBCA5 },
  31240. -{ 0xBCA6, 0xBCA6, 0xBCA6 },
  31241. -{ 0xBCA7, 0xBCA7, 0xBCA7 },
  31242. -{ 0xBCA8, 0xBCA8, 0xBCA8 },
  31243. -{ 0xBCA9, 0xBCA9, 0xBCA9 },
  31244. -{ 0xBCAA, 0xBCAA, 0xBCAA },
  31245. -{ 0xBCAB, 0xBCAB, 0xBCAB },
  31246. -{ 0xBCAC, 0xBCAC, 0xBCAC },
  31247. -{ 0xBCAD, 0xBCAD, 0xBCAD },
  31248. -{ 0xBCAE, 0xBCAE, 0xBCAE },
  31249. -{ 0xBCAF, 0xBCAF, 0xBCAF },
  31250. -{ 0xBCB0, 0xBCB0, 0xBCB0 },
  31251. -{ 0xBCB1, 0xBCB1, 0xBCB1 },
  31252. -{ 0xBCB2, 0xBCB2, 0xBCB2 },
  31253. -{ 0xBCB3, 0xBCB3, 0xBCB3 },
  31254. -{ 0xBCB4, 0xBCB4, 0xBCB4 },
  31255. -{ 0xBCB5, 0xBCB5, 0xBCB5 },
  31256. -{ 0xBCB6, 0xBCB6, 0xBCB6 },
  31257. -{ 0xBCB7, 0xBCB7, 0xBCB7 },
  31258. -{ 0xBCB8, 0xBCB8, 0xBCB8 },
  31259. -{ 0xBCB9, 0xBCB9, 0xBCB9 },
  31260. -{ 0xBCBA, 0xBCBA, 0xBCBA },
  31261. -{ 0xBCBB, 0xBCBB, 0xBCBB },
  31262. -{ 0xBCBC, 0xBCBC, 0xBCBC },
  31263. -{ 0xBCBD, 0xBCBD, 0xBCBD },
  31264. -{ 0xBCBE, 0xBCBE, 0xBCBE },
  31265. -{ 0xBCBF, 0xBCBF, 0xBCBF },
  31266. -{ 0xBCC0, 0xBCC0, 0xBCC0 },
  31267. -{ 0xBCC1, 0xBCC1, 0xBCC1 },
  31268. -{ 0xBCC2, 0xBCC2, 0xBCC2 },
  31269. -{ 0xBCC3, 0xBCC3, 0xBCC3 },
  31270. -{ 0xBCC4, 0xBCC4, 0xBCC4 },
  31271. -{ 0xBCC5, 0xBCC5, 0xBCC5 },
  31272. -{ 0xBCC6, 0xBCC6, 0xBCC6 },
  31273. -{ 0xBCC7, 0xBCC7, 0xBCC7 },
  31274. -{ 0xBCC8, 0xBCC8, 0xBCC8 },
  31275. -{ 0xBCC9, 0xBCC9, 0xBCC9 },
  31276. -{ 0xBCCA, 0xBCCA, 0xBCCA },
  31277. -{ 0xBCCB, 0xBCCB, 0xBCCB },
  31278. -{ 0xBCCC, 0xBCCC, 0xBCCC },
  31279. -{ 0xBCCD, 0xBCCD, 0xBCCD },
  31280. -{ 0xBCCE, 0xBCCE, 0xBCCE },
  31281. -{ 0xBCCF, 0xBCCF, 0xBCCF },
  31282. -{ 0xBCD0, 0xBCD0, 0xBCD0 },
  31283. -{ 0xBCD1, 0xBCD1, 0xBCD1 },
  31284. -{ 0xBCD2, 0xBCD2, 0xBCD2 },
  31285. -{ 0xBCD3, 0xBCD3, 0xBCD3 },
  31286. -{ 0xBCD4, 0xBCD4, 0xBCD4 },
  31287. -{ 0xBCD5, 0xBCD5, 0xBCD5 },
  31288. -{ 0xBCD6, 0xBCD6, 0xBCD6 },
  31289. -{ 0xBCD7, 0xBCD7, 0xBCD7 },
  31290. -{ 0xBCD8, 0xBCD8, 0xBCD8 },
  31291. -{ 0xBCD9, 0xBCD9, 0xBCD9 },
  31292. -{ 0xBCDA, 0xBCDA, 0xBCDA },
  31293. -{ 0xBCDB, 0xBCDB, 0xBCDB },
  31294. -{ 0xBCDC, 0xBCDC, 0xBCDC },
  31295. -{ 0xBCDD, 0xBCDD, 0xBCDD },
  31296. -{ 0xBCDE, 0xBCDE, 0xBCDE },
  31297. -{ 0xBCDF, 0xBCDF, 0xBCDF },
  31298. -{ 0xBCE0, 0xBCE0, 0xBCE0 },
  31299. -{ 0xBCE1, 0xBCE1, 0xBCE1 },
  31300. -{ 0xBCE2, 0xBCE2, 0xBCE2 },
  31301. -{ 0xBCE3, 0xBCE3, 0xBCE3 },
  31302. -{ 0xBCE4, 0xBCE4, 0xBCE4 },
  31303. -{ 0xBCE5, 0xBCE5, 0xBCE5 },
  31304. -{ 0xBCE6, 0xBCE6, 0xBCE6 },
  31305. -{ 0xBCE7, 0xBCE7, 0xBCE7 },
  31306. -{ 0xBCE8, 0xBCE8, 0xBCE8 },
  31307. -{ 0xBCE9, 0xBCE9, 0xBCE9 },
  31308. -{ 0xBCEA, 0xBCEA, 0xBCEA },
  31309. -{ 0xBCEB, 0xBCEB, 0xBCEB },
  31310. -{ 0xBCEC, 0xBCEC, 0xBCEC },
  31311. -{ 0xBCED, 0xBCED, 0xBCED },
  31312. -{ 0xBCEE, 0xBCEE, 0xBCEE },
  31313. -{ 0xBCEF, 0xBCEF, 0xBCEF },
  31314. -{ 0xBCF0, 0xBCF0, 0xBCF0 },
  31315. -{ 0xBCF1, 0xBCF1, 0xBCF1 },
  31316. -{ 0xBCF2, 0xBCF2, 0xBCF2 },
  31317. -{ 0xBCF3, 0xBCF3, 0xBCF3 },
  31318. -{ 0xBCF4, 0xBCF4, 0xBCF4 },
  31319. -{ 0xBCF5, 0xBCF5, 0xBCF5 },
  31320. -{ 0xBCF6, 0xBCF6, 0xBCF6 },
  31321. -{ 0xBCF7, 0xBCF7, 0xBCF7 },
  31322. -{ 0xBCF8, 0xBCF8, 0xBCF8 },
  31323. -{ 0xBCF9, 0xBCF9, 0xBCF9 },
  31324. -{ 0xBCFA, 0xBCFA, 0xBCFA },
  31325. -{ 0xBCFB, 0xBCFB, 0xBCFB },
  31326. -{ 0xBCFC, 0xBCFC, 0xBCFC },
  31327. -{ 0xBCFD, 0xBCFD, 0xBCFD },
  31328. -{ 0xBCFE, 0xBCFE, 0xBCFE },
  31329. -{ 0xBCFF, 0xBCFF, 0xBCFF },
  31330. -{ 0xBD00, 0xBD00, 0xBD00 },
  31331. -{ 0xBD01, 0xBD01, 0xBD01 },
  31332. -{ 0xBD02, 0xBD02, 0xBD02 },
  31333. -{ 0xBD03, 0xBD03, 0xBD03 },
  31334. -{ 0xBD04, 0xBD04, 0xBD04 },
  31335. -{ 0xBD05, 0xBD05, 0xBD05 },
  31336. -{ 0xBD06, 0xBD06, 0xBD06 },
  31337. -{ 0xBD07, 0xBD07, 0xBD07 },
  31338. -{ 0xBD08, 0xBD08, 0xBD08 },
  31339. -{ 0xBD09, 0xBD09, 0xBD09 },
  31340. -{ 0xBD0A, 0xBD0A, 0xBD0A },
  31341. -{ 0xBD0B, 0xBD0B, 0xBD0B },
  31342. -{ 0xBD0C, 0xBD0C, 0xBD0C },
  31343. -{ 0xBD0D, 0xBD0D, 0xBD0D },
  31344. -{ 0xBD0E, 0xBD0E, 0xBD0E },
  31345. -{ 0xBD0F, 0xBD0F, 0xBD0F },
  31346. -{ 0xBD10, 0xBD10, 0xBD10 },
  31347. -{ 0xBD11, 0xBD11, 0xBD11 },
  31348. -{ 0xBD12, 0xBD12, 0xBD12 },
  31349. -{ 0xBD13, 0xBD13, 0xBD13 },
  31350. -{ 0xBD14, 0xBD14, 0xBD14 },
  31351. -{ 0xBD15, 0xBD15, 0xBD15 },
  31352. -{ 0xBD16, 0xBD16, 0xBD16 },
  31353. -{ 0xBD17, 0xBD17, 0xBD17 },
  31354. -{ 0xBD18, 0xBD18, 0xBD18 },
  31355. -{ 0xBD19, 0xBD19, 0xBD19 },
  31356. -{ 0xBD1A, 0xBD1A, 0xBD1A },
  31357. -{ 0xBD1B, 0xBD1B, 0xBD1B },
  31358. -{ 0xBD1C, 0xBD1C, 0xBD1C },
  31359. -{ 0xBD1D, 0xBD1D, 0xBD1D },
  31360. -{ 0xBD1E, 0xBD1E, 0xBD1E },
  31361. -{ 0xBD1F, 0xBD1F, 0xBD1F },
  31362. -{ 0xBD20, 0xBD20, 0xBD20 },
  31363. -{ 0xBD21, 0xBD21, 0xBD21 },
  31364. -{ 0xBD22, 0xBD22, 0xBD22 },
  31365. -{ 0xBD23, 0xBD23, 0xBD23 },
  31366. -{ 0xBD24, 0xBD24, 0xBD24 },
  31367. -{ 0xBD25, 0xBD25, 0xBD25 },
  31368. -{ 0xBD26, 0xBD26, 0xBD26 },
  31369. -{ 0xBD27, 0xBD27, 0xBD27 },
  31370. -{ 0xBD28, 0xBD28, 0xBD28 },
  31371. -{ 0xBD29, 0xBD29, 0xBD29 },
  31372. -{ 0xBD2A, 0xBD2A, 0xBD2A },
  31373. -{ 0xBD2B, 0xBD2B, 0xBD2B },
  31374. -{ 0xBD2C, 0xBD2C, 0xBD2C },
  31375. -{ 0xBD2D, 0xBD2D, 0xBD2D },
  31376. -{ 0xBD2E, 0xBD2E, 0xBD2E },
  31377. -{ 0xBD2F, 0xBD2F, 0xBD2F },
  31378. -{ 0xBD30, 0xBD30, 0xBD30 },
  31379. -{ 0xBD31, 0xBD31, 0xBD31 },
  31380. -{ 0xBD32, 0xBD32, 0xBD32 },
  31381. -{ 0xBD33, 0xBD33, 0xBD33 },
  31382. -{ 0xBD34, 0xBD34, 0xBD34 },
  31383. -{ 0xBD35, 0xBD35, 0xBD35 },
  31384. -{ 0xBD36, 0xBD36, 0xBD36 },
  31385. -{ 0xBD37, 0xBD37, 0xBD37 },
  31386. -{ 0xBD38, 0xBD38, 0xBD38 },
  31387. -{ 0xBD39, 0xBD39, 0xBD39 },
  31388. -{ 0xBD3A, 0xBD3A, 0xBD3A },
  31389. -{ 0xBD3B, 0xBD3B, 0xBD3B },
  31390. -{ 0xBD3C, 0xBD3C, 0xBD3C },
  31391. -{ 0xBD3D, 0xBD3D, 0xBD3D },
  31392. -{ 0xBD3E, 0xBD3E, 0xBD3E },
  31393. -{ 0xBD3F, 0xBD3F, 0xBD3F },
  31394. -{ 0xBD40, 0xBD40, 0xBD40 },
  31395. -{ 0xBD41, 0xBD41, 0xBD41 },
  31396. -{ 0xBD42, 0xBD42, 0xBD42 },
  31397. -{ 0xBD43, 0xBD43, 0xBD43 },
  31398. -{ 0xBD44, 0xBD44, 0xBD44 },
  31399. -{ 0xBD45, 0xBD45, 0xBD45 },
  31400. -{ 0xBD46, 0xBD46, 0xBD46 },
  31401. -{ 0xBD47, 0xBD47, 0xBD47 },
  31402. -{ 0xBD48, 0xBD48, 0xBD48 },
  31403. -{ 0xBD49, 0xBD49, 0xBD49 },
  31404. -{ 0xBD4A, 0xBD4A, 0xBD4A },
  31405. -{ 0xBD4B, 0xBD4B, 0xBD4B },
  31406. -{ 0xBD4C, 0xBD4C, 0xBD4C },
  31407. -{ 0xBD4D, 0xBD4D, 0xBD4D },
  31408. -{ 0xBD4E, 0xBD4E, 0xBD4E },
  31409. -{ 0xBD4F, 0xBD4F, 0xBD4F },
  31410. -{ 0xBD50, 0xBD50, 0xBD50 },
  31411. -{ 0xBD51, 0xBD51, 0xBD51 },
  31412. -{ 0xBD52, 0xBD52, 0xBD52 },
  31413. -{ 0xBD53, 0xBD53, 0xBD53 },
  31414. -{ 0xBD54, 0xBD54, 0xBD54 },
  31415. -{ 0xBD55, 0xBD55, 0xBD55 },
  31416. -{ 0xBD56, 0xBD56, 0xBD56 },
  31417. -{ 0xBD57, 0xBD57, 0xBD57 },
  31418. -{ 0xBD58, 0xBD58, 0xBD58 },
  31419. -{ 0xBD59, 0xBD59, 0xBD59 },
  31420. -{ 0xBD5A, 0xBD5A, 0xBD5A },
  31421. -{ 0xBD5B, 0xBD5B, 0xBD5B },
  31422. -{ 0xBD5C, 0xBD5C, 0xBD5C },
  31423. -{ 0xBD5D, 0xBD5D, 0xBD5D },
  31424. -{ 0xBD5E, 0xBD5E, 0xBD5E },
  31425. -{ 0xBD5F, 0xBD5F, 0xBD5F },
  31426. -{ 0xBD60, 0xBD60, 0xBD60 },
  31427. -{ 0xBD61, 0xBD61, 0xBD61 },
  31428. -{ 0xBD62, 0xBD62, 0xBD62 },
  31429. -{ 0xBD63, 0xBD63, 0xBD63 },
  31430. -{ 0xBD64, 0xBD64, 0xBD64 },
  31431. -{ 0xBD65, 0xBD65, 0xBD65 },
  31432. -{ 0xBD66, 0xBD66, 0xBD66 },
  31433. -{ 0xBD67, 0xBD67, 0xBD67 },
  31434. -{ 0xBD68, 0xBD68, 0xBD68 },
  31435. -{ 0xBD69, 0xBD69, 0xBD69 },
  31436. -{ 0xBD6A, 0xBD6A, 0xBD6A },
  31437. -{ 0xBD6B, 0xBD6B, 0xBD6B },
  31438. -{ 0xBD6C, 0xBD6C, 0xBD6C },
  31439. -{ 0xBD6D, 0xBD6D, 0xBD6D },
  31440. -{ 0xBD6E, 0xBD6E, 0xBD6E },
  31441. -{ 0xBD6F, 0xBD6F, 0xBD6F },
  31442. -{ 0xBD70, 0xBD70, 0xBD70 },
  31443. -{ 0xBD71, 0xBD71, 0xBD71 },
  31444. -{ 0xBD72, 0xBD72, 0xBD72 },
  31445. -{ 0xBD73, 0xBD73, 0xBD73 },
  31446. -{ 0xBD74, 0xBD74, 0xBD74 },
  31447. -{ 0xBD75, 0xBD75, 0xBD75 },
  31448. -{ 0xBD76, 0xBD76, 0xBD76 },
  31449. -{ 0xBD77, 0xBD77, 0xBD77 },
  31450. -{ 0xBD78, 0xBD78, 0xBD78 },
  31451. -{ 0xBD79, 0xBD79, 0xBD79 },
  31452. -{ 0xBD7A, 0xBD7A, 0xBD7A },
  31453. -{ 0xBD7B, 0xBD7B, 0xBD7B },
  31454. -{ 0xBD7C, 0xBD7C, 0xBD7C },
  31455. -{ 0xBD7D, 0xBD7D, 0xBD7D },
  31456. -{ 0xBD7E, 0xBD7E, 0xBD7E },
  31457. -{ 0xBD7F, 0xBD7F, 0xBD7F },
  31458. -{ 0xBD80, 0xBD80, 0xBD80 },
  31459. -{ 0xBD81, 0xBD81, 0xBD81 },
  31460. -{ 0xBD82, 0xBD82, 0xBD82 },
  31461. -{ 0xBD83, 0xBD83, 0xBD83 },
  31462. -{ 0xBD84, 0xBD84, 0xBD84 },
  31463. -{ 0xBD85, 0xBD85, 0xBD85 },
  31464. -{ 0xBD86, 0xBD86, 0xBD86 },
  31465. -{ 0xBD87, 0xBD87, 0xBD87 },
  31466. -{ 0xBD88, 0xBD88, 0xBD88 },
  31467. -{ 0xBD89, 0xBD89, 0xBD89 },
  31468. -{ 0xBD8A, 0xBD8A, 0xBD8A },
  31469. -{ 0xBD8B, 0xBD8B, 0xBD8B },
  31470. -{ 0xBD8C, 0xBD8C, 0xBD8C },
  31471. -{ 0xBD8D, 0xBD8D, 0xBD8D },
  31472. -{ 0xBD8E, 0xBD8E, 0xBD8E },
  31473. -{ 0xBD8F, 0xBD8F, 0xBD8F },
  31474. -{ 0xBD90, 0xBD90, 0xBD90 },
  31475. -{ 0xBD91, 0xBD91, 0xBD91 },
  31476. -{ 0xBD92, 0xBD92, 0xBD92 },
  31477. -{ 0xBD93, 0xBD93, 0xBD93 },
  31478. -{ 0xBD94, 0xBD94, 0xBD94 },
  31479. -{ 0xBD95, 0xBD95, 0xBD95 },
  31480. -{ 0xBD96, 0xBD96, 0xBD96 },
  31481. -{ 0xBD97, 0xBD97, 0xBD97 },
  31482. -{ 0xBD98, 0xBD98, 0xBD98 },
  31483. -{ 0xBD99, 0xBD99, 0xBD99 },
  31484. -{ 0xBD9A, 0xBD9A, 0xBD9A },
  31485. -{ 0xBD9B, 0xBD9B, 0xBD9B },
  31486. -{ 0xBD9C, 0xBD9C, 0xBD9C },
  31487. -{ 0xBD9D, 0xBD9D, 0xBD9D },
  31488. -{ 0xBD9E, 0xBD9E, 0xBD9E },
  31489. -{ 0xBD9F, 0xBD9F, 0xBD9F },
  31490. -{ 0xBDA0, 0xBDA0, 0xBDA0 },
  31491. -{ 0xBDA1, 0xBDA1, 0xBDA1 },
  31492. -{ 0xBDA2, 0xBDA2, 0xBDA2 },
  31493. -{ 0xBDA3, 0xBDA3, 0xBDA3 },
  31494. -{ 0xBDA4, 0xBDA4, 0xBDA4 },
  31495. -{ 0xBDA5, 0xBDA5, 0xBDA5 },
  31496. -{ 0xBDA6, 0xBDA6, 0xBDA6 },
  31497. -{ 0xBDA7, 0xBDA7, 0xBDA7 },
  31498. -{ 0xBDA8, 0xBDA8, 0xBDA8 },
  31499. -{ 0xBDA9, 0xBDA9, 0xBDA9 },
  31500. -{ 0xBDAA, 0xBDAA, 0xBDAA },
  31501. -{ 0xBDAB, 0xBDAB, 0xBDAB },
  31502. -{ 0xBDAC, 0xBDAC, 0xBDAC },
  31503. -{ 0xBDAD, 0xBDAD, 0xBDAD },
  31504. -{ 0xBDAE, 0xBDAE, 0xBDAE },
  31505. -{ 0xBDAF, 0xBDAF, 0xBDAF },
  31506. -{ 0xBDB0, 0xBDB0, 0xBDB0 },
  31507. -{ 0xBDB1, 0xBDB1, 0xBDB1 },
  31508. -{ 0xBDB2, 0xBDB2, 0xBDB2 },
  31509. -{ 0xBDB3, 0xBDB3, 0xBDB3 },
  31510. -{ 0xBDB4, 0xBDB4, 0xBDB4 },
  31511. -{ 0xBDB5, 0xBDB5, 0xBDB5 },
  31512. -{ 0xBDB6, 0xBDB6, 0xBDB6 },
  31513. -{ 0xBDB7, 0xBDB7, 0xBDB7 },
  31514. -{ 0xBDB8, 0xBDB8, 0xBDB8 },
  31515. -{ 0xBDB9, 0xBDB9, 0xBDB9 },
  31516. -{ 0xBDBA, 0xBDBA, 0xBDBA },
  31517. -{ 0xBDBB, 0xBDBB, 0xBDBB },
  31518. -{ 0xBDBC, 0xBDBC, 0xBDBC },
  31519. -{ 0xBDBD, 0xBDBD, 0xBDBD },
  31520. -{ 0xBDBE, 0xBDBE, 0xBDBE },
  31521. -{ 0xBDBF, 0xBDBF, 0xBDBF },
  31522. -{ 0xBDC0, 0xBDC0, 0xBDC0 },
  31523. -{ 0xBDC1, 0xBDC1, 0xBDC1 },
  31524. -{ 0xBDC2, 0xBDC2, 0xBDC2 },
  31525. -{ 0xBDC3, 0xBDC3, 0xBDC3 },
  31526. -{ 0xBDC4, 0xBDC4, 0xBDC4 },
  31527. -{ 0xBDC5, 0xBDC5, 0xBDC5 },
  31528. -{ 0xBDC6, 0xBDC6, 0xBDC6 },
  31529. -{ 0xBDC7, 0xBDC7, 0xBDC7 },
  31530. -{ 0xBDC8, 0xBDC8, 0xBDC8 },
  31531. -{ 0xBDC9, 0xBDC9, 0xBDC9 },
  31532. -{ 0xBDCA, 0xBDCA, 0xBDCA },
  31533. -{ 0xBDCB, 0xBDCB, 0xBDCB },
  31534. -{ 0xBDCC, 0xBDCC, 0xBDCC },
  31535. -{ 0xBDCD, 0xBDCD, 0xBDCD },
  31536. -{ 0xBDCE, 0xBDCE, 0xBDCE },
  31537. -{ 0xBDCF, 0xBDCF, 0xBDCF },
  31538. -{ 0xBDD0, 0xBDD0, 0xBDD0 },
  31539. -{ 0xBDD1, 0xBDD1, 0xBDD1 },
  31540. -{ 0xBDD2, 0xBDD2, 0xBDD2 },
  31541. -{ 0xBDD3, 0xBDD3, 0xBDD3 },
  31542. -{ 0xBDD4, 0xBDD4, 0xBDD4 },
  31543. -{ 0xBDD5, 0xBDD5, 0xBDD5 },
  31544. -{ 0xBDD6, 0xBDD6, 0xBDD6 },
  31545. -{ 0xBDD7, 0xBDD7, 0xBDD7 },
  31546. -{ 0xBDD8, 0xBDD8, 0xBDD8 },
  31547. -{ 0xBDD9, 0xBDD9, 0xBDD9 },
  31548. -{ 0xBDDA, 0xBDDA, 0xBDDA },
  31549. -{ 0xBDDB, 0xBDDB, 0xBDDB },
  31550. -{ 0xBDDC, 0xBDDC, 0xBDDC },
  31551. -{ 0xBDDD, 0xBDDD, 0xBDDD },
  31552. -{ 0xBDDE, 0xBDDE, 0xBDDE },
  31553. -{ 0xBDDF, 0xBDDF, 0xBDDF },
  31554. -{ 0xBDE0, 0xBDE0, 0xBDE0 },
  31555. -{ 0xBDE1, 0xBDE1, 0xBDE1 },
  31556. -{ 0xBDE2, 0xBDE2, 0xBDE2 },
  31557. -{ 0xBDE3, 0xBDE3, 0xBDE3 },
  31558. -{ 0xBDE4, 0xBDE4, 0xBDE4 },
  31559. -{ 0xBDE5, 0xBDE5, 0xBDE5 },
  31560. -{ 0xBDE6, 0xBDE6, 0xBDE6 },
  31561. -{ 0xBDE7, 0xBDE7, 0xBDE7 },
  31562. -{ 0xBDE8, 0xBDE8, 0xBDE8 },
  31563. -{ 0xBDE9, 0xBDE9, 0xBDE9 },
  31564. -{ 0xBDEA, 0xBDEA, 0xBDEA },
  31565. -{ 0xBDEB, 0xBDEB, 0xBDEB },
  31566. -{ 0xBDEC, 0xBDEC, 0xBDEC },
  31567. -{ 0xBDED, 0xBDED, 0xBDED },
  31568. -{ 0xBDEE, 0xBDEE, 0xBDEE },
  31569. -{ 0xBDEF, 0xBDEF, 0xBDEF },
  31570. -{ 0xBDF0, 0xBDF0, 0xBDF0 },
  31571. -{ 0xBDF1, 0xBDF1, 0xBDF1 },
  31572. -{ 0xBDF2, 0xBDF2, 0xBDF2 },
  31573. -{ 0xBDF3, 0xBDF3, 0xBDF3 },
  31574. -{ 0xBDF4, 0xBDF4, 0xBDF4 },
  31575. -{ 0xBDF5, 0xBDF5, 0xBDF5 },
  31576. -{ 0xBDF6, 0xBDF6, 0xBDF6 },
  31577. -{ 0xBDF7, 0xBDF7, 0xBDF7 },
  31578. -{ 0xBDF8, 0xBDF8, 0xBDF8 },
  31579. -{ 0xBDF9, 0xBDF9, 0xBDF9 },
  31580. -{ 0xBDFA, 0xBDFA, 0xBDFA },
  31581. -{ 0xBDFB, 0xBDFB, 0xBDFB },
  31582. -{ 0xBDFC, 0xBDFC, 0xBDFC },
  31583. -{ 0xBDFD, 0xBDFD, 0xBDFD },
  31584. -{ 0xBDFE, 0xBDFE, 0xBDFE },
  31585. -{ 0xBDFF, 0xBDFF, 0xBDFF },
  31586. -{ 0xBE00, 0xBE00, 0xBE00 },
  31587. -{ 0xBE01, 0xBE01, 0xBE01 },
  31588. -{ 0xBE02, 0xBE02, 0xBE02 },
  31589. -{ 0xBE03, 0xBE03, 0xBE03 },
  31590. -{ 0xBE04, 0xBE04, 0xBE04 },
  31591. -{ 0xBE05, 0xBE05, 0xBE05 },
  31592. -{ 0xBE06, 0xBE06, 0xBE06 },
  31593. -{ 0xBE07, 0xBE07, 0xBE07 },
  31594. -{ 0xBE08, 0xBE08, 0xBE08 },
  31595. -{ 0xBE09, 0xBE09, 0xBE09 },
  31596. -{ 0xBE0A, 0xBE0A, 0xBE0A },
  31597. -{ 0xBE0B, 0xBE0B, 0xBE0B },
  31598. -{ 0xBE0C, 0xBE0C, 0xBE0C },
  31599. -{ 0xBE0D, 0xBE0D, 0xBE0D },
  31600. -{ 0xBE0E, 0xBE0E, 0xBE0E },
  31601. -{ 0xBE0F, 0xBE0F, 0xBE0F },
  31602. -{ 0xBE10, 0xBE10, 0xBE10 },
  31603. -{ 0xBE11, 0xBE11, 0xBE11 },
  31604. -{ 0xBE12, 0xBE12, 0xBE12 },
  31605. -{ 0xBE13, 0xBE13, 0xBE13 },
  31606. -{ 0xBE14, 0xBE14, 0xBE14 },
  31607. -{ 0xBE15, 0xBE15, 0xBE15 },
  31608. -{ 0xBE16, 0xBE16, 0xBE16 },
  31609. -{ 0xBE17, 0xBE17, 0xBE17 },
  31610. -{ 0xBE18, 0xBE18, 0xBE18 },
  31611. -{ 0xBE19, 0xBE19, 0xBE19 },
  31612. -{ 0xBE1A, 0xBE1A, 0xBE1A },
  31613. -{ 0xBE1B, 0xBE1B, 0xBE1B },
  31614. -{ 0xBE1C, 0xBE1C, 0xBE1C },
  31615. -{ 0xBE1D, 0xBE1D, 0xBE1D },
  31616. -{ 0xBE1E, 0xBE1E, 0xBE1E },
  31617. -{ 0xBE1F, 0xBE1F, 0xBE1F },
  31618. -{ 0xBE20, 0xBE20, 0xBE20 },
  31619. -{ 0xBE21, 0xBE21, 0xBE21 },
  31620. -{ 0xBE22, 0xBE22, 0xBE22 },
  31621. -{ 0xBE23, 0xBE23, 0xBE23 },
  31622. -{ 0xBE24, 0xBE24, 0xBE24 },
  31623. -{ 0xBE25, 0xBE25, 0xBE25 },
  31624. -{ 0xBE26, 0xBE26, 0xBE26 },
  31625. -{ 0xBE27, 0xBE27, 0xBE27 },
  31626. -{ 0xBE28, 0xBE28, 0xBE28 },
  31627. -{ 0xBE29, 0xBE29, 0xBE29 },
  31628. -{ 0xBE2A, 0xBE2A, 0xBE2A },
  31629. -{ 0xBE2B, 0xBE2B, 0xBE2B },
  31630. -{ 0xBE2C, 0xBE2C, 0xBE2C },
  31631. -{ 0xBE2D, 0xBE2D, 0xBE2D },
  31632. -{ 0xBE2E, 0xBE2E, 0xBE2E },
  31633. -{ 0xBE2F, 0xBE2F, 0xBE2F },
  31634. -{ 0xBE30, 0xBE30, 0xBE30 },
  31635. -{ 0xBE31, 0xBE31, 0xBE31 },
  31636. -{ 0xBE32, 0xBE32, 0xBE32 },
  31637. -{ 0xBE33, 0xBE33, 0xBE33 },
  31638. -{ 0xBE34, 0xBE34, 0xBE34 },
  31639. -{ 0xBE35, 0xBE35, 0xBE35 },
  31640. -{ 0xBE36, 0xBE36, 0xBE36 },
  31641. -{ 0xBE37, 0xBE37, 0xBE37 },
  31642. -{ 0xBE38, 0xBE38, 0xBE38 },
  31643. -{ 0xBE39, 0xBE39, 0xBE39 },
  31644. -{ 0xBE3A, 0xBE3A, 0xBE3A },
  31645. -{ 0xBE3B, 0xBE3B, 0xBE3B },
  31646. -{ 0xBE3C, 0xBE3C, 0xBE3C },
  31647. -{ 0xBE3D, 0xBE3D, 0xBE3D },
  31648. -{ 0xBE3E, 0xBE3E, 0xBE3E },
  31649. -{ 0xBE3F, 0xBE3F, 0xBE3F },
  31650. -{ 0xBE40, 0xBE40, 0xBE40 },
  31651. -{ 0xBE41, 0xBE41, 0xBE41 },
  31652. -{ 0xBE42, 0xBE42, 0xBE42 },
  31653. -{ 0xBE43, 0xBE43, 0xBE43 },
  31654. -{ 0xBE44, 0xBE44, 0xBE44 },
  31655. -{ 0xBE45, 0xBE45, 0xBE45 },
  31656. -{ 0xBE46, 0xBE46, 0xBE46 },
  31657. -{ 0xBE47, 0xBE47, 0xBE47 },
  31658. -{ 0xBE48, 0xBE48, 0xBE48 },
  31659. -{ 0xBE49, 0xBE49, 0xBE49 },
  31660. -{ 0xBE4A, 0xBE4A, 0xBE4A },
  31661. -{ 0xBE4B, 0xBE4B, 0xBE4B },
  31662. -{ 0xBE4C, 0xBE4C, 0xBE4C },
  31663. -{ 0xBE4D, 0xBE4D, 0xBE4D },
  31664. -{ 0xBE4E, 0xBE4E, 0xBE4E },
  31665. -{ 0xBE4F, 0xBE4F, 0xBE4F },
  31666. -{ 0xBE50, 0xBE50, 0xBE50 },
  31667. -{ 0xBE51, 0xBE51, 0xBE51 },
  31668. -{ 0xBE52, 0xBE52, 0xBE52 },
  31669. -{ 0xBE53, 0xBE53, 0xBE53 },
  31670. -{ 0xBE54, 0xBE54, 0xBE54 },
  31671. -{ 0xBE55, 0xBE55, 0xBE55 },
  31672. -{ 0xBE56, 0xBE56, 0xBE56 },
  31673. -{ 0xBE57, 0xBE57, 0xBE57 },
  31674. -{ 0xBE58, 0xBE58, 0xBE58 },
  31675. -{ 0xBE59, 0xBE59, 0xBE59 },
  31676. -{ 0xBE5A, 0xBE5A, 0xBE5A },
  31677. -{ 0xBE5B, 0xBE5B, 0xBE5B },
  31678. -{ 0xBE5C, 0xBE5C, 0xBE5C },
  31679. -{ 0xBE5D, 0xBE5D, 0xBE5D },
  31680. -{ 0xBE5E, 0xBE5E, 0xBE5E },
  31681. -{ 0xBE5F, 0xBE5F, 0xBE5F },
  31682. -{ 0xBE60, 0xBE60, 0xBE60 },
  31683. -{ 0xBE61, 0xBE61, 0xBE61 },
  31684. -{ 0xBE62, 0xBE62, 0xBE62 },
  31685. -{ 0xBE63, 0xBE63, 0xBE63 },
  31686. -{ 0xBE64, 0xBE64, 0xBE64 },
  31687. -{ 0xBE65, 0xBE65, 0xBE65 },
  31688. -{ 0xBE66, 0xBE66, 0xBE66 },
  31689. -{ 0xBE67, 0xBE67, 0xBE67 },
  31690. -{ 0xBE68, 0xBE68, 0xBE68 },
  31691. -{ 0xBE69, 0xBE69, 0xBE69 },
  31692. -{ 0xBE6A, 0xBE6A, 0xBE6A },
  31693. -{ 0xBE6B, 0xBE6B, 0xBE6B },
  31694. -{ 0xBE6C, 0xBE6C, 0xBE6C },
  31695. -{ 0xBE6D, 0xBE6D, 0xBE6D },
  31696. -{ 0xBE6E, 0xBE6E, 0xBE6E },
  31697. -{ 0xBE6F, 0xBE6F, 0xBE6F },
  31698. -{ 0xBE70, 0xBE70, 0xBE70 },
  31699. -{ 0xBE71, 0xBE71, 0xBE71 },
  31700. -{ 0xBE72, 0xBE72, 0xBE72 },
  31701. -{ 0xBE73, 0xBE73, 0xBE73 },
  31702. -{ 0xBE74, 0xBE74, 0xBE74 },
  31703. -{ 0xBE75, 0xBE75, 0xBE75 },
  31704. -{ 0xBE76, 0xBE76, 0xBE76 },
  31705. -{ 0xBE77, 0xBE77, 0xBE77 },
  31706. -{ 0xBE78, 0xBE78, 0xBE78 },
  31707. -{ 0xBE79, 0xBE79, 0xBE79 },
  31708. -{ 0xBE7A, 0xBE7A, 0xBE7A },
  31709. -{ 0xBE7B, 0xBE7B, 0xBE7B },
  31710. -{ 0xBE7C, 0xBE7C, 0xBE7C },
  31711. -{ 0xBE7D, 0xBE7D, 0xBE7D },
  31712. -{ 0xBE7E, 0xBE7E, 0xBE7E },
  31713. -{ 0xBE7F, 0xBE7F, 0xBE7F },
  31714. -{ 0xBE80, 0xBE80, 0xBE80 },
  31715. -{ 0xBE81, 0xBE81, 0xBE81 },
  31716. -{ 0xBE82, 0xBE82, 0xBE82 },
  31717. -{ 0xBE83, 0xBE83, 0xBE83 },
  31718. -{ 0xBE84, 0xBE84, 0xBE84 },
  31719. -{ 0xBE85, 0xBE85, 0xBE85 },
  31720. -{ 0xBE86, 0xBE86, 0xBE86 },
  31721. -{ 0xBE87, 0xBE87, 0xBE87 },
  31722. -{ 0xBE88, 0xBE88, 0xBE88 },
  31723. -{ 0xBE89, 0xBE89, 0xBE89 },
  31724. -{ 0xBE8A, 0xBE8A, 0xBE8A },
  31725. -{ 0xBE8B, 0xBE8B, 0xBE8B },
  31726. -{ 0xBE8C, 0xBE8C, 0xBE8C },
  31727. -{ 0xBE8D, 0xBE8D, 0xBE8D },
  31728. -{ 0xBE8E, 0xBE8E, 0xBE8E },
  31729. -{ 0xBE8F, 0xBE8F, 0xBE8F },
  31730. -{ 0xBE90, 0xBE90, 0xBE90 },
  31731. -{ 0xBE91, 0xBE91, 0xBE91 },
  31732. -{ 0xBE92, 0xBE92, 0xBE92 },
  31733. -{ 0xBE93, 0xBE93, 0xBE93 },
  31734. -{ 0xBE94, 0xBE94, 0xBE94 },
  31735. -{ 0xBE95, 0xBE95, 0xBE95 },
  31736. -{ 0xBE96, 0xBE96, 0xBE96 },
  31737. -{ 0xBE97, 0xBE97, 0xBE97 },
  31738. -{ 0xBE98, 0xBE98, 0xBE98 },
  31739. -{ 0xBE99, 0xBE99, 0xBE99 },
  31740. -{ 0xBE9A, 0xBE9A, 0xBE9A },
  31741. -{ 0xBE9B, 0xBE9B, 0xBE9B },
  31742. -{ 0xBE9C, 0xBE9C, 0xBE9C },
  31743. -{ 0xBE9D, 0xBE9D, 0xBE9D },
  31744. -{ 0xBE9E, 0xBE9E, 0xBE9E },
  31745. -{ 0xBE9F, 0xBE9F, 0xBE9F },
  31746. -{ 0xBEA0, 0xBEA0, 0xBEA0 },
  31747. -{ 0xBEA1, 0xBEA1, 0xBEA1 },
  31748. -{ 0xBEA2, 0xBEA2, 0xBEA2 },
  31749. -{ 0xBEA3, 0xBEA3, 0xBEA3 },
  31750. -{ 0xBEA4, 0xBEA4, 0xBEA4 },
  31751. -{ 0xBEA5, 0xBEA5, 0xBEA5 },
  31752. -{ 0xBEA6, 0xBEA6, 0xBEA6 },
  31753. -{ 0xBEA7, 0xBEA7, 0xBEA7 },
  31754. -{ 0xBEA8, 0xBEA8, 0xBEA8 },
  31755. -{ 0xBEA9, 0xBEA9, 0xBEA9 },
  31756. -{ 0xBEAA, 0xBEAA, 0xBEAA },
  31757. -{ 0xBEAB, 0xBEAB, 0xBEAB },
  31758. -{ 0xBEAC, 0xBEAC, 0xBEAC },
  31759. -{ 0xBEAD, 0xBEAD, 0xBEAD },
  31760. -{ 0xBEAE, 0xBEAE, 0xBEAE },
  31761. -{ 0xBEAF, 0xBEAF, 0xBEAF },
  31762. -{ 0xBEB0, 0xBEB0, 0xBEB0 },
  31763. -{ 0xBEB1, 0xBEB1, 0xBEB1 },
  31764. -{ 0xBEB2, 0xBEB2, 0xBEB2 },
  31765. -{ 0xBEB3, 0xBEB3, 0xBEB3 },
  31766. -{ 0xBEB4, 0xBEB4, 0xBEB4 },
  31767. -{ 0xBEB5, 0xBEB5, 0xBEB5 },
  31768. -{ 0xBEB6, 0xBEB6, 0xBEB6 },
  31769. -{ 0xBEB7, 0xBEB7, 0xBEB7 },
  31770. -{ 0xBEB8, 0xBEB8, 0xBEB8 },
  31771. -{ 0xBEB9, 0xBEB9, 0xBEB9 },
  31772. -{ 0xBEBA, 0xBEBA, 0xBEBA },
  31773. -{ 0xBEBB, 0xBEBB, 0xBEBB },
  31774. -{ 0xBEBC, 0xBEBC, 0xBEBC },
  31775. -{ 0xBEBD, 0xBEBD, 0xBEBD },
  31776. -{ 0xBEBE, 0xBEBE, 0xBEBE },
  31777. -{ 0xBEBF, 0xBEBF, 0xBEBF },
  31778. -{ 0xBEC0, 0xBEC0, 0xBEC0 },
  31779. -{ 0xBEC1, 0xBEC1, 0xBEC1 },
  31780. -{ 0xBEC2, 0xBEC2, 0xBEC2 },
  31781. -{ 0xBEC3, 0xBEC3, 0xBEC3 },
  31782. -{ 0xBEC4, 0xBEC4, 0xBEC4 },
  31783. -{ 0xBEC5, 0xBEC5, 0xBEC5 },
  31784. -{ 0xBEC6, 0xBEC6, 0xBEC6 },
  31785. -{ 0xBEC7, 0xBEC7, 0xBEC7 },
  31786. -{ 0xBEC8, 0xBEC8, 0xBEC8 },
  31787. -{ 0xBEC9, 0xBEC9, 0xBEC9 },
  31788. -{ 0xBECA, 0xBECA, 0xBECA },
  31789. -{ 0xBECB, 0xBECB, 0xBECB },
  31790. -{ 0xBECC, 0xBECC, 0xBECC },
  31791. -{ 0xBECD, 0xBECD, 0xBECD },
  31792. -{ 0xBECE, 0xBECE, 0xBECE },
  31793. -{ 0xBECF, 0xBECF, 0xBECF },
  31794. -{ 0xBED0, 0xBED0, 0xBED0 },
  31795. -{ 0xBED1, 0xBED1, 0xBED1 },
  31796. -{ 0xBED2, 0xBED2, 0xBED2 },
  31797. -{ 0xBED3, 0xBED3, 0xBED3 },
  31798. -{ 0xBED4, 0xBED4, 0xBED4 },
  31799. -{ 0xBED5, 0xBED5, 0xBED5 },
  31800. -{ 0xBED6, 0xBED6, 0xBED6 },
  31801. -{ 0xBED7, 0xBED7, 0xBED7 },
  31802. -{ 0xBED8, 0xBED8, 0xBED8 },
  31803. -{ 0xBED9, 0xBED9, 0xBED9 },
  31804. -{ 0xBEDA, 0xBEDA, 0xBEDA },
  31805. -{ 0xBEDB, 0xBEDB, 0xBEDB },
  31806. -{ 0xBEDC, 0xBEDC, 0xBEDC },
  31807. -{ 0xBEDD, 0xBEDD, 0xBEDD },
  31808. -{ 0xBEDE, 0xBEDE, 0xBEDE },
  31809. -{ 0xBEDF, 0xBEDF, 0xBEDF },
  31810. -{ 0xBEE0, 0xBEE0, 0xBEE0 },
  31811. -{ 0xBEE1, 0xBEE1, 0xBEE1 },
  31812. -{ 0xBEE2, 0xBEE2, 0xBEE2 },
  31813. -{ 0xBEE3, 0xBEE3, 0xBEE3 },
  31814. -{ 0xBEE4, 0xBEE4, 0xBEE4 },
  31815. -{ 0xBEE5, 0xBEE5, 0xBEE5 },
  31816. -{ 0xBEE6, 0xBEE6, 0xBEE6 },
  31817. -{ 0xBEE7, 0xBEE7, 0xBEE7 },
  31818. -{ 0xBEE8, 0xBEE8, 0xBEE8 },
  31819. -{ 0xBEE9, 0xBEE9, 0xBEE9 },
  31820. -{ 0xBEEA, 0xBEEA, 0xBEEA },
  31821. -{ 0xBEEB, 0xBEEB, 0xBEEB },
  31822. -{ 0xBEEC, 0xBEEC, 0xBEEC },
  31823. -{ 0xBEED, 0xBEED, 0xBEED },
  31824. -{ 0xBEEE, 0xBEEE, 0xBEEE },
  31825. -{ 0xBEEF, 0xBEEF, 0xBEEF },
  31826. -{ 0xBEF0, 0xBEF0, 0xBEF0 },
  31827. -{ 0xBEF1, 0xBEF1, 0xBEF1 },
  31828. -{ 0xBEF2, 0xBEF2, 0xBEF2 },
  31829. -{ 0xBEF3, 0xBEF3, 0xBEF3 },
  31830. -{ 0xBEF4, 0xBEF4, 0xBEF4 },
  31831. -{ 0xBEF5, 0xBEF5, 0xBEF5 },
  31832. -{ 0xBEF6, 0xBEF6, 0xBEF6 },
  31833. -{ 0xBEF7, 0xBEF7, 0xBEF7 },
  31834. -{ 0xBEF8, 0xBEF8, 0xBEF8 },
  31835. -{ 0xBEF9, 0xBEF9, 0xBEF9 },
  31836. -{ 0xBEFA, 0xBEFA, 0xBEFA },
  31837. -{ 0xBEFB, 0xBEFB, 0xBEFB },
  31838. -{ 0xBEFC, 0xBEFC, 0xBEFC },
  31839. -{ 0xBEFD, 0xBEFD, 0xBEFD },
  31840. -{ 0xBEFE, 0xBEFE, 0xBEFE },
  31841. -{ 0xBEFF, 0xBEFF, 0xBEFF },
  31842. -{ 0xBF00, 0xBF00, 0xBF00 },
  31843. -{ 0xBF01, 0xBF01, 0xBF01 },
  31844. -{ 0xBF02, 0xBF02, 0xBF02 },
  31845. -{ 0xBF03, 0xBF03, 0xBF03 },
  31846. -{ 0xBF04, 0xBF04, 0xBF04 },
  31847. -{ 0xBF05, 0xBF05, 0xBF05 },
  31848. -{ 0xBF06, 0xBF06, 0xBF06 },
  31849. -{ 0xBF07, 0xBF07, 0xBF07 },
  31850. -{ 0xBF08, 0xBF08, 0xBF08 },
  31851. -{ 0xBF09, 0xBF09, 0xBF09 },
  31852. -{ 0xBF0A, 0xBF0A, 0xBF0A },
  31853. -{ 0xBF0B, 0xBF0B, 0xBF0B },
  31854. -{ 0xBF0C, 0xBF0C, 0xBF0C },
  31855. -{ 0xBF0D, 0xBF0D, 0xBF0D },
  31856. -{ 0xBF0E, 0xBF0E, 0xBF0E },
  31857. -{ 0xBF0F, 0xBF0F, 0xBF0F },
  31858. -{ 0xBF10, 0xBF10, 0xBF10 },
  31859. -{ 0xBF11, 0xBF11, 0xBF11 },
  31860. -{ 0xBF12, 0xBF12, 0xBF12 },
  31861. -{ 0xBF13, 0xBF13, 0xBF13 },
  31862. -{ 0xBF14, 0xBF14, 0xBF14 },
  31863. -{ 0xBF15, 0xBF15, 0xBF15 },
  31864. -{ 0xBF16, 0xBF16, 0xBF16 },
  31865. -{ 0xBF17, 0xBF17, 0xBF17 },
  31866. -{ 0xBF18, 0xBF18, 0xBF18 },
  31867. -{ 0xBF19, 0xBF19, 0xBF19 },
  31868. -{ 0xBF1A, 0xBF1A, 0xBF1A },
  31869. -{ 0xBF1B, 0xBF1B, 0xBF1B },
  31870. -{ 0xBF1C, 0xBF1C, 0xBF1C },
  31871. -{ 0xBF1D, 0xBF1D, 0xBF1D },
  31872. -{ 0xBF1E, 0xBF1E, 0xBF1E },
  31873. -{ 0xBF1F, 0xBF1F, 0xBF1F },
  31874. -{ 0xBF20, 0xBF20, 0xBF20 },
  31875. -{ 0xBF21, 0xBF21, 0xBF21 },
  31876. -{ 0xBF22, 0xBF22, 0xBF22 },
  31877. -{ 0xBF23, 0xBF23, 0xBF23 },
  31878. -{ 0xBF24, 0xBF24, 0xBF24 },
  31879. -{ 0xBF25, 0xBF25, 0xBF25 },
  31880. -{ 0xBF26, 0xBF26, 0xBF26 },
  31881. -{ 0xBF27, 0xBF27, 0xBF27 },
  31882. -{ 0xBF28, 0xBF28, 0xBF28 },
  31883. -{ 0xBF29, 0xBF29, 0xBF29 },
  31884. -{ 0xBF2A, 0xBF2A, 0xBF2A },
  31885. -{ 0xBF2B, 0xBF2B, 0xBF2B },
  31886. -{ 0xBF2C, 0xBF2C, 0xBF2C },
  31887. -{ 0xBF2D, 0xBF2D, 0xBF2D },
  31888. -{ 0xBF2E, 0xBF2E, 0xBF2E },
  31889. -{ 0xBF2F, 0xBF2F, 0xBF2F },
  31890. -{ 0xBF30, 0xBF30, 0xBF30 },
  31891. -{ 0xBF31, 0xBF31, 0xBF31 },
  31892. -{ 0xBF32, 0xBF32, 0xBF32 },
  31893. -{ 0xBF33, 0xBF33, 0xBF33 },
  31894. -{ 0xBF34, 0xBF34, 0xBF34 },
  31895. -{ 0xBF35, 0xBF35, 0xBF35 },
  31896. -{ 0xBF36, 0xBF36, 0xBF36 },
  31897. -{ 0xBF37, 0xBF37, 0xBF37 },
  31898. -{ 0xBF38, 0xBF38, 0xBF38 },
  31899. -{ 0xBF39, 0xBF39, 0xBF39 },
  31900. -{ 0xBF3A, 0xBF3A, 0xBF3A },
  31901. -{ 0xBF3B, 0xBF3B, 0xBF3B },
  31902. -{ 0xBF3C, 0xBF3C, 0xBF3C },
  31903. -{ 0xBF3D, 0xBF3D, 0xBF3D },
  31904. -{ 0xBF3E, 0xBF3E, 0xBF3E },
  31905. -{ 0xBF3F, 0xBF3F, 0xBF3F },
  31906. -{ 0xBF40, 0xBF40, 0xBF40 },
  31907. -{ 0xBF41, 0xBF41, 0xBF41 },
  31908. -{ 0xBF42, 0xBF42, 0xBF42 },
  31909. -{ 0xBF43, 0xBF43, 0xBF43 },
  31910. -{ 0xBF44, 0xBF44, 0xBF44 },
  31911. -{ 0xBF45, 0xBF45, 0xBF45 },
  31912. -{ 0xBF46, 0xBF46, 0xBF46 },
  31913. -{ 0xBF47, 0xBF47, 0xBF47 },
  31914. -{ 0xBF48, 0xBF48, 0xBF48 },
  31915. -{ 0xBF49, 0xBF49, 0xBF49 },
  31916. -{ 0xBF4A, 0xBF4A, 0xBF4A },
  31917. -{ 0xBF4B, 0xBF4B, 0xBF4B },
  31918. -{ 0xBF4C, 0xBF4C, 0xBF4C },
  31919. -{ 0xBF4D, 0xBF4D, 0xBF4D },
  31920. -{ 0xBF4E, 0xBF4E, 0xBF4E },
  31921. -{ 0xBF4F, 0xBF4F, 0xBF4F },
  31922. -{ 0xBF50, 0xBF50, 0xBF50 },
  31923. -{ 0xBF51, 0xBF51, 0xBF51 },
  31924. -{ 0xBF52, 0xBF52, 0xBF52 },
  31925. -{ 0xBF53, 0xBF53, 0xBF53 },
  31926. -{ 0xBF54, 0xBF54, 0xBF54 },
  31927. -{ 0xBF55, 0xBF55, 0xBF55 },
  31928. -{ 0xBF56, 0xBF56, 0xBF56 },
  31929. -{ 0xBF57, 0xBF57, 0xBF57 },
  31930. -{ 0xBF58, 0xBF58, 0xBF58 },
  31931. -{ 0xBF59, 0xBF59, 0xBF59 },
  31932. -{ 0xBF5A, 0xBF5A, 0xBF5A },
  31933. -{ 0xBF5B, 0xBF5B, 0xBF5B },
  31934. -{ 0xBF5C, 0xBF5C, 0xBF5C },
  31935. -{ 0xBF5D, 0xBF5D, 0xBF5D },
  31936. -{ 0xBF5E, 0xBF5E, 0xBF5E },
  31937. -{ 0xBF5F, 0xBF5F, 0xBF5F },
  31938. -{ 0xBF60, 0xBF60, 0xBF60 },
  31939. -{ 0xBF61, 0xBF61, 0xBF61 },
  31940. -{ 0xBF62, 0xBF62, 0xBF62 },
  31941. -{ 0xBF63, 0xBF63, 0xBF63 },
  31942. -{ 0xBF64, 0xBF64, 0xBF64 },
  31943. -{ 0xBF65, 0xBF65, 0xBF65 },
  31944. -{ 0xBF66, 0xBF66, 0xBF66 },
  31945. -{ 0xBF67, 0xBF67, 0xBF67 },
  31946. -{ 0xBF68, 0xBF68, 0xBF68 },
  31947. -{ 0xBF69, 0xBF69, 0xBF69 },
  31948. -{ 0xBF6A, 0xBF6A, 0xBF6A },
  31949. -{ 0xBF6B, 0xBF6B, 0xBF6B },
  31950. -{ 0xBF6C, 0xBF6C, 0xBF6C },
  31951. -{ 0xBF6D, 0xBF6D, 0xBF6D },
  31952. -{ 0xBF6E, 0xBF6E, 0xBF6E },
  31953. -{ 0xBF6F, 0xBF6F, 0xBF6F },
  31954. -{ 0xBF70, 0xBF70, 0xBF70 },
  31955. -{ 0xBF71, 0xBF71, 0xBF71 },
  31956. -{ 0xBF72, 0xBF72, 0xBF72 },
  31957. -{ 0xBF73, 0xBF73, 0xBF73 },
  31958. -{ 0xBF74, 0xBF74, 0xBF74 },
  31959. -{ 0xBF75, 0xBF75, 0xBF75 },
  31960. -{ 0xBF76, 0xBF76, 0xBF76 },
  31961. -{ 0xBF77, 0xBF77, 0xBF77 },
  31962. -{ 0xBF78, 0xBF78, 0xBF78 },
  31963. -{ 0xBF79, 0xBF79, 0xBF79 },
  31964. -{ 0xBF7A, 0xBF7A, 0xBF7A },
  31965. -{ 0xBF7B, 0xBF7B, 0xBF7B },
  31966. -{ 0xBF7C, 0xBF7C, 0xBF7C },
  31967. -{ 0xBF7D, 0xBF7D, 0xBF7D },
  31968. -{ 0xBF7E, 0xBF7E, 0xBF7E },
  31969. -{ 0xBF7F, 0xBF7F, 0xBF7F },
  31970. -{ 0xBF80, 0xBF80, 0xBF80 },
  31971. -{ 0xBF81, 0xBF81, 0xBF81 },
  31972. -{ 0xBF82, 0xBF82, 0xBF82 },
  31973. -{ 0xBF83, 0xBF83, 0xBF83 },
  31974. -{ 0xBF84, 0xBF84, 0xBF84 },
  31975. -{ 0xBF85, 0xBF85, 0xBF85 },
  31976. -{ 0xBF86, 0xBF86, 0xBF86 },
  31977. -{ 0xBF87, 0xBF87, 0xBF87 },
  31978. -{ 0xBF88, 0xBF88, 0xBF88 },
  31979. -{ 0xBF89, 0xBF89, 0xBF89 },
  31980. -{ 0xBF8A, 0xBF8A, 0xBF8A },
  31981. -{ 0xBF8B, 0xBF8B, 0xBF8B },
  31982. -{ 0xBF8C, 0xBF8C, 0xBF8C },
  31983. -{ 0xBF8D, 0xBF8D, 0xBF8D },
  31984. -{ 0xBF8E, 0xBF8E, 0xBF8E },
  31985. -{ 0xBF8F, 0xBF8F, 0xBF8F },
  31986. -{ 0xBF90, 0xBF90, 0xBF90 },
  31987. -{ 0xBF91, 0xBF91, 0xBF91 },
  31988. -{ 0xBF92, 0xBF92, 0xBF92 },
  31989. -{ 0xBF93, 0xBF93, 0xBF93 },
  31990. -{ 0xBF94, 0xBF94, 0xBF94 },
  31991. -{ 0xBF95, 0xBF95, 0xBF95 },
  31992. -{ 0xBF96, 0xBF96, 0xBF96 },
  31993. -{ 0xBF97, 0xBF97, 0xBF97 },
  31994. -{ 0xBF98, 0xBF98, 0xBF98 },
  31995. -{ 0xBF99, 0xBF99, 0xBF99 },
  31996. -{ 0xBF9A, 0xBF9A, 0xBF9A },
  31997. -{ 0xBF9B, 0xBF9B, 0xBF9B },
  31998. -{ 0xBF9C, 0xBF9C, 0xBF9C },
  31999. -{ 0xBF9D, 0xBF9D, 0xBF9D },
  32000. -{ 0xBF9E, 0xBF9E, 0xBF9E },
  32001. -{ 0xBF9F, 0xBF9F, 0xBF9F },
  32002. -{ 0xBFA0, 0xBFA0, 0xBFA0 },
  32003. -{ 0xBFA1, 0xBFA1, 0xBFA1 },
  32004. -{ 0xBFA2, 0xBFA2, 0xBFA2 },
  32005. -{ 0xBFA3, 0xBFA3, 0xBFA3 },
  32006. -{ 0xBFA4, 0xBFA4, 0xBFA4 },
  32007. -{ 0xBFA5, 0xBFA5, 0xBFA5 },
  32008. -{ 0xBFA6, 0xBFA6, 0xBFA6 },
  32009. -{ 0xBFA7, 0xBFA7, 0xBFA7 },
  32010. -{ 0xBFA8, 0xBFA8, 0xBFA8 },
  32011. -{ 0xBFA9, 0xBFA9, 0xBFA9 },
  32012. -{ 0xBFAA, 0xBFAA, 0xBFAA },
  32013. -{ 0xBFAB, 0xBFAB, 0xBFAB },
  32014. -{ 0xBFAC, 0xBFAC, 0xBFAC },
  32015. -{ 0xBFAD, 0xBFAD, 0xBFAD },
  32016. -{ 0xBFAE, 0xBFAE, 0xBFAE },
  32017. -{ 0xBFAF, 0xBFAF, 0xBFAF },
  32018. -{ 0xBFB0, 0xBFB0, 0xBFB0 },
  32019. -{ 0xBFB1, 0xBFB1, 0xBFB1 },
  32020. -{ 0xBFB2, 0xBFB2, 0xBFB2 },
  32021. -{ 0xBFB3, 0xBFB3, 0xBFB3 },
  32022. -{ 0xBFB4, 0xBFB4, 0xBFB4 },
  32023. -{ 0xBFB5, 0xBFB5, 0xBFB5 },
  32024. -{ 0xBFB6, 0xBFB6, 0xBFB6 },
  32025. -{ 0xBFB7, 0xBFB7, 0xBFB7 },
  32026. -{ 0xBFB8, 0xBFB8, 0xBFB8 },
  32027. -{ 0xBFB9, 0xBFB9, 0xBFB9 },
  32028. -{ 0xBFBA, 0xBFBA, 0xBFBA },
  32029. -{ 0xBFBB, 0xBFBB, 0xBFBB },
  32030. -{ 0xBFBC, 0xBFBC, 0xBFBC },
  32031. -{ 0xBFBD, 0xBFBD, 0xBFBD },
  32032. -{ 0xBFBE, 0xBFBE, 0xBFBE },
  32033. -{ 0xBFBF, 0xBFBF, 0xBFBF },
  32034. -{ 0xBFC0, 0xBFC0, 0xBFC0 },
  32035. -{ 0xBFC1, 0xBFC1, 0xBFC1 },
  32036. -{ 0xBFC2, 0xBFC2, 0xBFC2 },
  32037. -{ 0xBFC3, 0xBFC3, 0xBFC3 },
  32038. -{ 0xBFC4, 0xBFC4, 0xBFC4 },
  32039. -{ 0xBFC5, 0xBFC5, 0xBFC5 },
  32040. -{ 0xBFC6, 0xBFC6, 0xBFC6 },
  32041. -{ 0xBFC7, 0xBFC7, 0xBFC7 },
  32042. -{ 0xBFC8, 0xBFC8, 0xBFC8 },
  32043. -{ 0xBFC9, 0xBFC9, 0xBFC9 },
  32044. -{ 0xBFCA, 0xBFCA, 0xBFCA },
  32045. -{ 0xBFCB, 0xBFCB, 0xBFCB },
  32046. -{ 0xBFCC, 0xBFCC, 0xBFCC },
  32047. -{ 0xBFCD, 0xBFCD, 0xBFCD },
  32048. -{ 0xBFCE, 0xBFCE, 0xBFCE },
  32049. -{ 0xBFCF, 0xBFCF, 0xBFCF },
  32050. -{ 0xBFD0, 0xBFD0, 0xBFD0 },
  32051. -{ 0xBFD1, 0xBFD1, 0xBFD1 },
  32052. -{ 0xBFD2, 0xBFD2, 0xBFD2 },
  32053. -{ 0xBFD3, 0xBFD3, 0xBFD3 },
  32054. -{ 0xBFD4, 0xBFD4, 0xBFD4 },
  32055. -{ 0xBFD5, 0xBFD5, 0xBFD5 },
  32056. -{ 0xBFD6, 0xBFD6, 0xBFD6 },
  32057. -{ 0xBFD7, 0xBFD7, 0xBFD7 },
  32058. -{ 0xBFD8, 0xBFD8, 0xBFD8 },
  32059. -{ 0xBFD9, 0xBFD9, 0xBFD9 },
  32060. -{ 0xBFDA, 0xBFDA, 0xBFDA },
  32061. -{ 0xBFDB, 0xBFDB, 0xBFDB },
  32062. -{ 0xBFDC, 0xBFDC, 0xBFDC },
  32063. -{ 0xBFDD, 0xBFDD, 0xBFDD },
  32064. -{ 0xBFDE, 0xBFDE, 0xBFDE },
  32065. -{ 0xBFDF, 0xBFDF, 0xBFDF },
  32066. -{ 0xBFE0, 0xBFE0, 0xBFE0 },
  32067. -{ 0xBFE1, 0xBFE1, 0xBFE1 },
  32068. -{ 0xBFE2, 0xBFE2, 0xBFE2 },
  32069. -{ 0xBFE3, 0xBFE3, 0xBFE3 },
  32070. -{ 0xBFE4, 0xBFE4, 0xBFE4 },
  32071. -{ 0xBFE5, 0xBFE5, 0xBFE5 },
  32072. -{ 0xBFE6, 0xBFE6, 0xBFE6 },
  32073. -{ 0xBFE7, 0xBFE7, 0xBFE7 },
  32074. -{ 0xBFE8, 0xBFE8, 0xBFE8 },
  32075. -{ 0xBFE9, 0xBFE9, 0xBFE9 },
  32076. -{ 0xBFEA, 0xBFEA, 0xBFEA },
  32077. -{ 0xBFEB, 0xBFEB, 0xBFEB },
  32078. -{ 0xBFEC, 0xBFEC, 0xBFEC },
  32079. -{ 0xBFED, 0xBFED, 0xBFED },
  32080. -{ 0xBFEE, 0xBFEE, 0xBFEE },
  32081. -{ 0xBFEF, 0xBFEF, 0xBFEF },
  32082. -{ 0xBFF0, 0xBFF0, 0xBFF0 },
  32083. -{ 0xBFF1, 0xBFF1, 0xBFF1 },
  32084. -{ 0xBFF2, 0xBFF2, 0xBFF2 },
  32085. -{ 0xBFF3, 0xBFF3, 0xBFF3 },
  32086. -{ 0xBFF4, 0xBFF4, 0xBFF4 },
  32087. -{ 0xBFF5, 0xBFF5, 0xBFF5 },
  32088. -{ 0xBFF6, 0xBFF6, 0xBFF6 },
  32089. -{ 0xBFF7, 0xBFF7, 0xBFF7 },
  32090. -{ 0xBFF8, 0xBFF8, 0xBFF8 },
  32091. -{ 0xBFF9, 0xBFF9, 0xBFF9 },
  32092. -{ 0xBFFA, 0xBFFA, 0xBFFA },
  32093. -{ 0xBFFB, 0xBFFB, 0xBFFB },
  32094. -{ 0xBFFC, 0xBFFC, 0xBFFC },
  32095. -{ 0xBFFD, 0xBFFD, 0xBFFD },
  32096. -{ 0xBFFE, 0xBFFE, 0xBFFE },
  32097. -{ 0xBFFF, 0xBFFF, 0xBFFF },
  32098. -{ 0xC000, 0xC000, 0xC000 },
  32099. -{ 0xC001, 0xC001, 0xC001 },
  32100. -{ 0xC002, 0xC002, 0xC002 },
  32101. -{ 0xC003, 0xC003, 0xC003 },
  32102. -{ 0xC004, 0xC004, 0xC004 },
  32103. -{ 0xC005, 0xC005, 0xC005 },
  32104. -{ 0xC006, 0xC006, 0xC006 },
  32105. -{ 0xC007, 0xC007, 0xC007 },
  32106. -{ 0xC008, 0xC008, 0xC008 },
  32107. -{ 0xC009, 0xC009, 0xC009 },
  32108. -{ 0xC00A, 0xC00A, 0xC00A },
  32109. -{ 0xC00B, 0xC00B, 0xC00B },
  32110. -{ 0xC00C, 0xC00C, 0xC00C },
  32111. -{ 0xC00D, 0xC00D, 0xC00D },
  32112. -{ 0xC00E, 0xC00E, 0xC00E },
  32113. -{ 0xC00F, 0xC00F, 0xC00F },
  32114. -{ 0xC010, 0xC010, 0xC010 },
  32115. -{ 0xC011, 0xC011, 0xC011 },
  32116. -{ 0xC012, 0xC012, 0xC012 },
  32117. -{ 0xC013, 0xC013, 0xC013 },
  32118. -{ 0xC014, 0xC014, 0xC014 },
  32119. -{ 0xC015, 0xC015, 0xC015 },
  32120. -{ 0xC016, 0xC016, 0xC016 },
  32121. -{ 0xC017, 0xC017, 0xC017 },
  32122. -{ 0xC018, 0xC018, 0xC018 },
  32123. -{ 0xC019, 0xC019, 0xC019 },
  32124. -{ 0xC01A, 0xC01A, 0xC01A },
  32125. -{ 0xC01B, 0xC01B, 0xC01B },
  32126. -{ 0xC01C, 0xC01C, 0xC01C },
  32127. -{ 0xC01D, 0xC01D, 0xC01D },
  32128. -{ 0xC01E, 0xC01E, 0xC01E },
  32129. -{ 0xC01F, 0xC01F, 0xC01F },
  32130. -{ 0xC020, 0xC020, 0xC020 },
  32131. -{ 0xC021, 0xC021, 0xC021 },
  32132. -{ 0xC022, 0xC022, 0xC022 },
  32133. -{ 0xC023, 0xC023, 0xC023 },
  32134. -{ 0xC024, 0xC024, 0xC024 },
  32135. -{ 0xC025, 0xC025, 0xC025 },
  32136. -{ 0xC026, 0xC026, 0xC026 },
  32137. -{ 0xC027, 0xC027, 0xC027 },
  32138. -{ 0xC028, 0xC028, 0xC028 },
  32139. -{ 0xC029, 0xC029, 0xC029 },
  32140. -{ 0xC02A, 0xC02A, 0xC02A },
  32141. -{ 0xC02B, 0xC02B, 0xC02B },
  32142. -{ 0xC02C, 0xC02C, 0xC02C },
  32143. -{ 0xC02D, 0xC02D, 0xC02D },
  32144. -{ 0xC02E, 0xC02E, 0xC02E },
  32145. -{ 0xC02F, 0xC02F, 0xC02F },
  32146. -{ 0xC030, 0xC030, 0xC030 },
  32147. -{ 0xC031, 0xC031, 0xC031 },
  32148. -{ 0xC032, 0xC032, 0xC032 },
  32149. -{ 0xC033, 0xC033, 0xC033 },
  32150. -{ 0xC034, 0xC034, 0xC034 },
  32151. -{ 0xC035, 0xC035, 0xC035 },
  32152. -{ 0xC036, 0xC036, 0xC036 },
  32153. -{ 0xC037, 0xC037, 0xC037 },
  32154. -{ 0xC038, 0xC038, 0xC038 },
  32155. -{ 0xC039, 0xC039, 0xC039 },
  32156. -{ 0xC03A, 0xC03A, 0xC03A },
  32157. -{ 0xC03B, 0xC03B, 0xC03B },
  32158. -{ 0xC03C, 0xC03C, 0xC03C },
  32159. -{ 0xC03D, 0xC03D, 0xC03D },
  32160. -{ 0xC03E, 0xC03E, 0xC03E },
  32161. -{ 0xC03F, 0xC03F, 0xC03F },
  32162. -{ 0xC040, 0xC040, 0xC040 },
  32163. -{ 0xC041, 0xC041, 0xC041 },
  32164. -{ 0xC042, 0xC042, 0xC042 },
  32165. -{ 0xC043, 0xC043, 0xC043 },
  32166. -{ 0xC044, 0xC044, 0xC044 },
  32167. -{ 0xC045, 0xC045, 0xC045 },
  32168. -{ 0xC046, 0xC046, 0xC046 },
  32169. -{ 0xC047, 0xC047, 0xC047 },
  32170. -{ 0xC048, 0xC048, 0xC048 },
  32171. -{ 0xC049, 0xC049, 0xC049 },
  32172. -{ 0xC04A, 0xC04A, 0xC04A },
  32173. -{ 0xC04B, 0xC04B, 0xC04B },
  32174. -{ 0xC04C, 0xC04C, 0xC04C },
  32175. -{ 0xC04D, 0xC04D, 0xC04D },
  32176. -{ 0xC04E, 0xC04E, 0xC04E },
  32177. -{ 0xC04F, 0xC04F, 0xC04F },
  32178. -{ 0xC050, 0xC050, 0xC050 },
  32179. -{ 0xC051, 0xC051, 0xC051 },
  32180. -{ 0xC052, 0xC052, 0xC052 },
  32181. -{ 0xC053, 0xC053, 0xC053 },
  32182. -{ 0xC054, 0xC054, 0xC054 },
  32183. -{ 0xC055, 0xC055, 0xC055 },
  32184. -{ 0xC056, 0xC056, 0xC056 },
  32185. -{ 0xC057, 0xC057, 0xC057 },
  32186. -{ 0xC058, 0xC058, 0xC058 },
  32187. -{ 0xC059, 0xC059, 0xC059 },
  32188. -{ 0xC05A, 0xC05A, 0xC05A },
  32189. -{ 0xC05B, 0xC05B, 0xC05B },
  32190. -{ 0xC05C, 0xC05C, 0xC05C },
  32191. -{ 0xC05D, 0xC05D, 0xC05D },
  32192. -{ 0xC05E, 0xC05E, 0xC05E },
  32193. -{ 0xC05F, 0xC05F, 0xC05F },
  32194. -{ 0xC060, 0xC060, 0xC060 },
  32195. -{ 0xC061, 0xC061, 0xC061 },
  32196. -{ 0xC062, 0xC062, 0xC062 },
  32197. -{ 0xC063, 0xC063, 0xC063 },
  32198. -{ 0xC064, 0xC064, 0xC064 },
  32199. -{ 0xC065, 0xC065, 0xC065 },
  32200. -{ 0xC066, 0xC066, 0xC066 },
  32201. -{ 0xC067, 0xC067, 0xC067 },
  32202. -{ 0xC068, 0xC068, 0xC068 },
  32203. -{ 0xC069, 0xC069, 0xC069 },
  32204. -{ 0xC06A, 0xC06A, 0xC06A },
  32205. -{ 0xC06B, 0xC06B, 0xC06B },
  32206. -{ 0xC06C, 0xC06C, 0xC06C },
  32207. -{ 0xC06D, 0xC06D, 0xC06D },
  32208. -{ 0xC06E, 0xC06E, 0xC06E },
  32209. -{ 0xC06F, 0xC06F, 0xC06F },
  32210. -{ 0xC070, 0xC070, 0xC070 },
  32211. -{ 0xC071, 0xC071, 0xC071 },
  32212. -{ 0xC072, 0xC072, 0xC072 },
  32213. -{ 0xC073, 0xC073, 0xC073 },
  32214. -{ 0xC074, 0xC074, 0xC074 },
  32215. -{ 0xC075, 0xC075, 0xC075 },
  32216. -{ 0xC076, 0xC076, 0xC076 },
  32217. -{ 0xC077, 0xC077, 0xC077 },
  32218. -{ 0xC078, 0xC078, 0xC078 },
  32219. -{ 0xC079, 0xC079, 0xC079 },
  32220. -{ 0xC07A, 0xC07A, 0xC07A },
  32221. -{ 0xC07B, 0xC07B, 0xC07B },
  32222. -{ 0xC07C, 0xC07C, 0xC07C },
  32223. -{ 0xC07D, 0xC07D, 0xC07D },
  32224. -{ 0xC07E, 0xC07E, 0xC07E },
  32225. -{ 0xC07F, 0xC07F, 0xC07F },
  32226. -{ 0xC080, 0xC080, 0xC080 },
  32227. -{ 0xC081, 0xC081, 0xC081 },
  32228. -{ 0xC082, 0xC082, 0xC082 },
  32229. -{ 0xC083, 0xC083, 0xC083 },
  32230. -{ 0xC084, 0xC084, 0xC084 },
  32231. -{ 0xC085, 0xC085, 0xC085 },
  32232. -{ 0xC086, 0xC086, 0xC086 },
  32233. -{ 0xC087, 0xC087, 0xC087 },
  32234. -{ 0xC088, 0xC088, 0xC088 },
  32235. -{ 0xC089, 0xC089, 0xC089 },
  32236. -{ 0xC08A, 0xC08A, 0xC08A },
  32237. -{ 0xC08B, 0xC08B, 0xC08B },
  32238. -{ 0xC08C, 0xC08C, 0xC08C },
  32239. -{ 0xC08D, 0xC08D, 0xC08D },
  32240. -{ 0xC08E, 0xC08E, 0xC08E },
  32241. -{ 0xC08F, 0xC08F, 0xC08F },
  32242. -{ 0xC090, 0xC090, 0xC090 },
  32243. -{ 0xC091, 0xC091, 0xC091 },
  32244. -{ 0xC092, 0xC092, 0xC092 },
  32245. -{ 0xC093, 0xC093, 0xC093 },
  32246. -{ 0xC094, 0xC094, 0xC094 },
  32247. -{ 0xC095, 0xC095, 0xC095 },
  32248. -{ 0xC096, 0xC096, 0xC096 },
  32249. -{ 0xC097, 0xC097, 0xC097 },
  32250. -{ 0xC098, 0xC098, 0xC098 },
  32251. -{ 0xC099, 0xC099, 0xC099 },
  32252. -{ 0xC09A, 0xC09A, 0xC09A },
  32253. -{ 0xC09B, 0xC09B, 0xC09B },
  32254. -{ 0xC09C, 0xC09C, 0xC09C },
  32255. -{ 0xC09D, 0xC09D, 0xC09D },
  32256. -{ 0xC09E, 0xC09E, 0xC09E },
  32257. -{ 0xC09F, 0xC09F, 0xC09F },
  32258. -{ 0xC0A0, 0xC0A0, 0xC0A0 },
  32259. -{ 0xC0A1, 0xC0A1, 0xC0A1 },
  32260. -{ 0xC0A2, 0xC0A2, 0xC0A2 },
  32261. -{ 0xC0A3, 0xC0A3, 0xC0A3 },
  32262. -{ 0xC0A4, 0xC0A4, 0xC0A4 },
  32263. -{ 0xC0A5, 0xC0A5, 0xC0A5 },
  32264. -{ 0xC0A6, 0xC0A6, 0xC0A6 },
  32265. -{ 0xC0A7, 0xC0A7, 0xC0A7 },
  32266. -{ 0xC0A8, 0xC0A8, 0xC0A8 },
  32267. -{ 0xC0A9, 0xC0A9, 0xC0A9 },
  32268. -{ 0xC0AA, 0xC0AA, 0xC0AA },
  32269. -{ 0xC0AB, 0xC0AB, 0xC0AB },
  32270. -{ 0xC0AC, 0xC0AC, 0xC0AC },
  32271. -{ 0xC0AD, 0xC0AD, 0xC0AD },
  32272. -{ 0xC0AE, 0xC0AE, 0xC0AE },
  32273. -{ 0xC0AF, 0xC0AF, 0xC0AF },
  32274. -{ 0xC0B0, 0xC0B0, 0xC0B0 },
  32275. -{ 0xC0B1, 0xC0B1, 0xC0B1 },
  32276. -{ 0xC0B2, 0xC0B2, 0xC0B2 },
  32277. -{ 0xC0B3, 0xC0B3, 0xC0B3 },
  32278. -{ 0xC0B4, 0xC0B4, 0xC0B4 },
  32279. -{ 0xC0B5, 0xC0B5, 0xC0B5 },
  32280. -{ 0xC0B6, 0xC0B6, 0xC0B6 },
  32281. -{ 0xC0B7, 0xC0B7, 0xC0B7 },
  32282. -{ 0xC0B8, 0xC0B8, 0xC0B8 },
  32283. -{ 0xC0B9, 0xC0B9, 0xC0B9 },
  32284. -{ 0xC0BA, 0xC0BA, 0xC0BA },
  32285. -{ 0xC0BB, 0xC0BB, 0xC0BB },
  32286. -{ 0xC0BC, 0xC0BC, 0xC0BC },
  32287. -{ 0xC0BD, 0xC0BD, 0xC0BD },
  32288. -{ 0xC0BE, 0xC0BE, 0xC0BE },
  32289. -{ 0xC0BF, 0xC0BF, 0xC0BF },
  32290. -{ 0xC0C0, 0xC0C0, 0xC0C0 },
  32291. -{ 0xC0C1, 0xC0C1, 0xC0C1 },
  32292. -{ 0xC0C2, 0xC0C2, 0xC0C2 },
  32293. -{ 0xC0C3, 0xC0C3, 0xC0C3 },
  32294. -{ 0xC0C4, 0xC0C4, 0xC0C4 },
  32295. -{ 0xC0C5, 0xC0C5, 0xC0C5 },
  32296. -{ 0xC0C6, 0xC0C6, 0xC0C6 },
  32297. -{ 0xC0C7, 0xC0C7, 0xC0C7 },
  32298. -{ 0xC0C8, 0xC0C8, 0xC0C8 },
  32299. -{ 0xC0C9, 0xC0C9, 0xC0C9 },
  32300. -{ 0xC0CA, 0xC0CA, 0xC0CA },
  32301. -{ 0xC0CB, 0xC0CB, 0xC0CB },
  32302. -{ 0xC0CC, 0xC0CC, 0xC0CC },
  32303. -{ 0xC0CD, 0xC0CD, 0xC0CD },
  32304. -{ 0xC0CE, 0xC0CE, 0xC0CE },
  32305. -{ 0xC0CF, 0xC0CF, 0xC0CF },
  32306. -{ 0xC0D0, 0xC0D0, 0xC0D0 },
  32307. -{ 0xC0D1, 0xC0D1, 0xC0D1 },
  32308. -{ 0xC0D2, 0xC0D2, 0xC0D2 },
  32309. -{ 0xC0D3, 0xC0D3, 0xC0D3 },
  32310. -{ 0xC0D4, 0xC0D4, 0xC0D4 },
  32311. -{ 0xC0D5, 0xC0D5, 0xC0D5 },
  32312. -{ 0xC0D6, 0xC0D6, 0xC0D6 },
  32313. -{ 0xC0D7, 0xC0D7, 0xC0D7 },
  32314. -{ 0xC0D8, 0xC0D8, 0xC0D8 },
  32315. -{ 0xC0D9, 0xC0D9, 0xC0D9 },
  32316. -{ 0xC0DA, 0xC0DA, 0xC0DA },
  32317. -{ 0xC0DB, 0xC0DB, 0xC0DB },
  32318. -{ 0xC0DC, 0xC0DC, 0xC0DC },
  32319. -{ 0xC0DD, 0xC0DD, 0xC0DD },
  32320. -{ 0xC0DE, 0xC0DE, 0xC0DE },
  32321. -{ 0xC0DF, 0xC0DF, 0xC0DF },
  32322. -{ 0xC0E0, 0xC0E0, 0xC0E0 },
  32323. -{ 0xC0E1, 0xC0E1, 0xC0E1 },
  32324. -{ 0xC0E2, 0xC0E2, 0xC0E2 },
  32325. -{ 0xC0E3, 0xC0E3, 0xC0E3 },
  32326. -{ 0xC0E4, 0xC0E4, 0xC0E4 },
  32327. -{ 0xC0E5, 0xC0E5, 0xC0E5 },
  32328. -{ 0xC0E6, 0xC0E6, 0xC0E6 },
  32329. -{ 0xC0E7, 0xC0E7, 0xC0E7 },
  32330. -{ 0xC0E8, 0xC0E8, 0xC0E8 },
  32331. -{ 0xC0E9, 0xC0E9, 0xC0E9 },
  32332. -{ 0xC0EA, 0xC0EA, 0xC0EA },
  32333. -{ 0xC0EB, 0xC0EB, 0xC0EB },
  32334. -{ 0xC0EC, 0xC0EC, 0xC0EC },
  32335. -{ 0xC0ED, 0xC0ED, 0xC0ED },
  32336. -{ 0xC0EE, 0xC0EE, 0xC0EE },
  32337. -{ 0xC0EF, 0xC0EF, 0xC0EF },
  32338. -{ 0xC0F0, 0xC0F0, 0xC0F0 },
  32339. -{ 0xC0F1, 0xC0F1, 0xC0F1 },
  32340. -{ 0xC0F2, 0xC0F2, 0xC0F2 },
  32341. -{ 0xC0F3, 0xC0F3, 0xC0F3 },
  32342. -{ 0xC0F4, 0xC0F4, 0xC0F4 },
  32343. -{ 0xC0F5, 0xC0F5, 0xC0F5 },
  32344. -{ 0xC0F6, 0xC0F6, 0xC0F6 },
  32345. -{ 0xC0F7, 0xC0F7, 0xC0F7 },
  32346. -{ 0xC0F8, 0xC0F8, 0xC0F8 },
  32347. -{ 0xC0F9, 0xC0F9, 0xC0F9 },
  32348. -{ 0xC0FA, 0xC0FA, 0xC0FA },
  32349. -{ 0xC0FB, 0xC0FB, 0xC0FB },
  32350. -{ 0xC0FC, 0xC0FC, 0xC0FC },
  32351. -{ 0xC0FD, 0xC0FD, 0xC0FD },
  32352. -{ 0xC0FE, 0xC0FE, 0xC0FE },
  32353. -{ 0xC0FF, 0xC0FF, 0xC0FF },
  32354. -{ 0xC100, 0xC100, 0xC100 },
  32355. -{ 0xC101, 0xC101, 0xC101 },
  32356. -{ 0xC102, 0xC102, 0xC102 },
  32357. -{ 0xC103, 0xC103, 0xC103 },
  32358. -{ 0xC104, 0xC104, 0xC104 },
  32359. -{ 0xC105, 0xC105, 0xC105 },
  32360. -{ 0xC106, 0xC106, 0xC106 },
  32361. -{ 0xC107, 0xC107, 0xC107 },
  32362. -{ 0xC108, 0xC108, 0xC108 },
  32363. -{ 0xC109, 0xC109, 0xC109 },
  32364. -{ 0xC10A, 0xC10A, 0xC10A },
  32365. -{ 0xC10B, 0xC10B, 0xC10B },
  32366. -{ 0xC10C, 0xC10C, 0xC10C },
  32367. -{ 0xC10D, 0xC10D, 0xC10D },
  32368. -{ 0xC10E, 0xC10E, 0xC10E },
  32369. -{ 0xC10F, 0xC10F, 0xC10F },
  32370. -{ 0xC110, 0xC110, 0xC110 },
  32371. -{ 0xC111, 0xC111, 0xC111 },
  32372. -{ 0xC112, 0xC112, 0xC112 },
  32373. -{ 0xC113, 0xC113, 0xC113 },
  32374. -{ 0xC114, 0xC114, 0xC114 },
  32375. -{ 0xC115, 0xC115, 0xC115 },
  32376. -{ 0xC116, 0xC116, 0xC116 },
  32377. -{ 0xC117, 0xC117, 0xC117 },
  32378. -{ 0xC118, 0xC118, 0xC118 },
  32379. -{ 0xC119, 0xC119, 0xC119 },
  32380. -{ 0xC11A, 0xC11A, 0xC11A },
  32381. -{ 0xC11B, 0xC11B, 0xC11B },
  32382. -{ 0xC11C, 0xC11C, 0xC11C },
  32383. -{ 0xC11D, 0xC11D, 0xC11D },
  32384. -{ 0xC11E, 0xC11E, 0xC11E },
  32385. -{ 0xC11F, 0xC11F, 0xC11F },
  32386. -{ 0xC120, 0xC120, 0xC120 },
  32387. -{ 0xC121, 0xC121, 0xC121 },
  32388. -{ 0xC122, 0xC122, 0xC122 },
  32389. -{ 0xC123, 0xC123, 0xC123 },
  32390. -{ 0xC124, 0xC124, 0xC124 },
  32391. -{ 0xC125, 0xC125, 0xC125 },
  32392. -{ 0xC126, 0xC126, 0xC126 },
  32393. -{ 0xC127, 0xC127, 0xC127 },
  32394. -{ 0xC128, 0xC128, 0xC128 },
  32395. -{ 0xC129, 0xC129, 0xC129 },
  32396. -{ 0xC12A, 0xC12A, 0xC12A },
  32397. -{ 0xC12B, 0xC12B, 0xC12B },
  32398. -{ 0xC12C, 0xC12C, 0xC12C },
  32399. -{ 0xC12D, 0xC12D, 0xC12D },
  32400. -{ 0xC12E, 0xC12E, 0xC12E },
  32401. -{ 0xC12F, 0xC12F, 0xC12F },
  32402. -{ 0xC130, 0xC130, 0xC130 },
  32403. -{ 0xC131, 0xC131, 0xC131 },
  32404. -{ 0xC132, 0xC132, 0xC132 },
  32405. -{ 0xC133, 0xC133, 0xC133 },
  32406. -{ 0xC134, 0xC134, 0xC134 },
  32407. -{ 0xC135, 0xC135, 0xC135 },
  32408. -{ 0xC136, 0xC136, 0xC136 },
  32409. -{ 0xC137, 0xC137, 0xC137 },
  32410. -{ 0xC138, 0xC138, 0xC138 },
  32411. -{ 0xC139, 0xC139, 0xC139 },
  32412. -{ 0xC13A, 0xC13A, 0xC13A },
  32413. -{ 0xC13B, 0xC13B, 0xC13B },
  32414. -{ 0xC13C, 0xC13C, 0xC13C },
  32415. -{ 0xC13D, 0xC13D, 0xC13D },
  32416. -{ 0xC13E, 0xC13E, 0xC13E },
  32417. -{ 0xC13F, 0xC13F, 0xC13F },
  32418. -{ 0xC140, 0xC140, 0xC140 },
  32419. -{ 0xC141, 0xC141, 0xC141 },
  32420. -{ 0xC142, 0xC142, 0xC142 },
  32421. -{ 0xC143, 0xC143, 0xC143 },
  32422. -{ 0xC144, 0xC144, 0xC144 },
  32423. -{ 0xC145, 0xC145, 0xC145 },
  32424. -{ 0xC146, 0xC146, 0xC146 },
  32425. -{ 0xC147, 0xC147, 0xC147 },
  32426. -{ 0xC148, 0xC148, 0xC148 },
  32427. -{ 0xC149, 0xC149, 0xC149 },
  32428. -{ 0xC14A, 0xC14A, 0xC14A },
  32429. -{ 0xC14B, 0xC14B, 0xC14B },
  32430. -{ 0xC14C, 0xC14C, 0xC14C },
  32431. -{ 0xC14D, 0xC14D, 0xC14D },
  32432. -{ 0xC14E, 0xC14E, 0xC14E },
  32433. -{ 0xC14F, 0xC14F, 0xC14F },
  32434. -{ 0xC150, 0xC150, 0xC150 },
  32435. -{ 0xC151, 0xC151, 0xC151 },
  32436. -{ 0xC152, 0xC152, 0xC152 },
  32437. -{ 0xC153, 0xC153, 0xC153 },
  32438. -{ 0xC154, 0xC154, 0xC154 },
  32439. -{ 0xC155, 0xC155, 0xC155 },
  32440. -{ 0xC156, 0xC156, 0xC156 },
  32441. -{ 0xC157, 0xC157, 0xC157 },
  32442. -{ 0xC158, 0xC158, 0xC158 },
  32443. -{ 0xC159, 0xC159, 0xC159 },
  32444. -{ 0xC15A, 0xC15A, 0xC15A },
  32445. -{ 0xC15B, 0xC15B, 0xC15B },
  32446. -{ 0xC15C, 0xC15C, 0xC15C },
  32447. -{ 0xC15D, 0xC15D, 0xC15D },
  32448. -{ 0xC15E, 0xC15E, 0xC15E },
  32449. -{ 0xC15F, 0xC15F, 0xC15F },
  32450. -{ 0xC160, 0xC160, 0xC160 },
  32451. -{ 0xC161, 0xC161, 0xC161 },
  32452. -{ 0xC162, 0xC162, 0xC162 },
  32453. -{ 0xC163, 0xC163, 0xC163 },
  32454. -{ 0xC164, 0xC164, 0xC164 },
  32455. -{ 0xC165, 0xC165, 0xC165 },
  32456. -{ 0xC166, 0xC166, 0xC166 },
  32457. -{ 0xC167, 0xC167, 0xC167 },
  32458. -{ 0xC168, 0xC168, 0xC168 },
  32459. -{ 0xC169, 0xC169, 0xC169 },
  32460. -{ 0xC16A, 0xC16A, 0xC16A },
  32461. -{ 0xC16B, 0xC16B, 0xC16B },
  32462. -{ 0xC16C, 0xC16C, 0xC16C },
  32463. -{ 0xC16D, 0xC16D, 0xC16D },
  32464. -{ 0xC16E, 0xC16E, 0xC16E },
  32465. -{ 0xC16F, 0xC16F, 0xC16F },
  32466. -{ 0xC170, 0xC170, 0xC170 },
  32467. -{ 0xC171, 0xC171, 0xC171 },
  32468. -{ 0xC172, 0xC172, 0xC172 },
  32469. -{ 0xC173, 0xC173, 0xC173 },
  32470. -{ 0xC174, 0xC174, 0xC174 },
  32471. -{ 0xC175, 0xC175, 0xC175 },
  32472. -{ 0xC176, 0xC176, 0xC176 },
  32473. -{ 0xC177, 0xC177, 0xC177 },
  32474. -{ 0xC178, 0xC178, 0xC178 },
  32475. -{ 0xC179, 0xC179, 0xC179 },
  32476. -{ 0xC17A, 0xC17A, 0xC17A },
  32477. -{ 0xC17B, 0xC17B, 0xC17B },
  32478. -{ 0xC17C, 0xC17C, 0xC17C },
  32479. -{ 0xC17D, 0xC17D, 0xC17D },
  32480. -{ 0xC17E, 0xC17E, 0xC17E },
  32481. -{ 0xC17F, 0xC17F, 0xC17F },
  32482. -{ 0xC180, 0xC180, 0xC180 },
  32483. -{ 0xC181, 0xC181, 0xC181 },
  32484. -{ 0xC182, 0xC182, 0xC182 },
  32485. -{ 0xC183, 0xC183, 0xC183 },
  32486. -{ 0xC184, 0xC184, 0xC184 },
  32487. -{ 0xC185, 0xC185, 0xC185 },
  32488. -{ 0xC186, 0xC186, 0xC186 },
  32489. -{ 0xC187, 0xC187, 0xC187 },
  32490. -{ 0xC188, 0xC188, 0xC188 },
  32491. -{ 0xC189, 0xC189, 0xC189 },
  32492. -{ 0xC18A, 0xC18A, 0xC18A },
  32493. -{ 0xC18B, 0xC18B, 0xC18B },
  32494. -{ 0xC18C, 0xC18C, 0xC18C },
  32495. -{ 0xC18D, 0xC18D, 0xC18D },
  32496. -{ 0xC18E, 0xC18E, 0xC18E },
  32497. -{ 0xC18F, 0xC18F, 0xC18F },
  32498. -{ 0xC190, 0xC190, 0xC190 },
  32499. -{ 0xC191, 0xC191, 0xC191 },
  32500. -{ 0xC192, 0xC192, 0xC192 },
  32501. -{ 0xC193, 0xC193, 0xC193 },
  32502. -{ 0xC194, 0xC194, 0xC194 },
  32503. -{ 0xC195, 0xC195, 0xC195 },
  32504. -{ 0xC196, 0xC196, 0xC196 },
  32505. -{ 0xC197, 0xC197, 0xC197 },
  32506. -{ 0xC198, 0xC198, 0xC198 },
  32507. -{ 0xC199, 0xC199, 0xC199 },
  32508. -{ 0xC19A, 0xC19A, 0xC19A },
  32509. -{ 0xC19B, 0xC19B, 0xC19B },
  32510. -{ 0xC19C, 0xC19C, 0xC19C },
  32511. -{ 0xC19D, 0xC19D, 0xC19D },
  32512. -{ 0xC19E, 0xC19E, 0xC19E },
  32513. -{ 0xC19F, 0xC19F, 0xC19F },
  32514. -{ 0xC1A0, 0xC1A0, 0xC1A0 },
  32515. -{ 0xC1A1, 0xC1A1, 0xC1A1 },
  32516. -{ 0xC1A2, 0xC1A2, 0xC1A2 },
  32517. -{ 0xC1A3, 0xC1A3, 0xC1A3 },
  32518. -{ 0xC1A4, 0xC1A4, 0xC1A4 },
  32519. -{ 0xC1A5, 0xC1A5, 0xC1A5 },
  32520. -{ 0xC1A6, 0xC1A6, 0xC1A6 },
  32521. -{ 0xC1A7, 0xC1A7, 0xC1A7 },
  32522. -{ 0xC1A8, 0xC1A8, 0xC1A8 },
  32523. -{ 0xC1A9, 0xC1A9, 0xC1A9 },
  32524. -{ 0xC1AA, 0xC1AA, 0xC1AA },
  32525. -{ 0xC1AB, 0xC1AB, 0xC1AB },
  32526. -{ 0xC1AC, 0xC1AC, 0xC1AC },
  32527. -{ 0xC1AD, 0xC1AD, 0xC1AD },
  32528. -{ 0xC1AE, 0xC1AE, 0xC1AE },
  32529. -{ 0xC1AF, 0xC1AF, 0xC1AF },
  32530. -{ 0xC1B0, 0xC1B0, 0xC1B0 },
  32531. -{ 0xC1B1, 0xC1B1, 0xC1B1 },
  32532. -{ 0xC1B2, 0xC1B2, 0xC1B2 },
  32533. -{ 0xC1B3, 0xC1B3, 0xC1B3 },
  32534. -{ 0xC1B4, 0xC1B4, 0xC1B4 },
  32535. -{ 0xC1B5, 0xC1B5, 0xC1B5 },
  32536. -{ 0xC1B6, 0xC1B6, 0xC1B6 },
  32537. -{ 0xC1B7, 0xC1B7, 0xC1B7 },
  32538. -{ 0xC1B8, 0xC1B8, 0xC1B8 },
  32539. -{ 0xC1B9, 0xC1B9, 0xC1B9 },
  32540. -{ 0xC1BA, 0xC1BA, 0xC1BA },
  32541. -{ 0xC1BB, 0xC1BB, 0xC1BB },
  32542. -{ 0xC1BC, 0xC1BC, 0xC1BC },
  32543. -{ 0xC1BD, 0xC1BD, 0xC1BD },
  32544. -{ 0xC1BE, 0xC1BE, 0xC1BE },
  32545. -{ 0xC1BF, 0xC1BF, 0xC1BF },
  32546. -{ 0xC1C0, 0xC1C0, 0xC1C0 },
  32547. -{ 0xC1C1, 0xC1C1, 0xC1C1 },
  32548. -{ 0xC1C2, 0xC1C2, 0xC1C2 },
  32549. -{ 0xC1C3, 0xC1C3, 0xC1C3 },
  32550. -{ 0xC1C4, 0xC1C4, 0xC1C4 },
  32551. -{ 0xC1C5, 0xC1C5, 0xC1C5 },
  32552. -{ 0xC1C6, 0xC1C6, 0xC1C6 },
  32553. -{ 0xC1C7, 0xC1C7, 0xC1C7 },
  32554. -{ 0xC1C8, 0xC1C8, 0xC1C8 },
  32555. -{ 0xC1C9, 0xC1C9, 0xC1C9 },
  32556. -{ 0xC1CA, 0xC1CA, 0xC1CA },
  32557. -{ 0xC1CB, 0xC1CB, 0xC1CB },
  32558. -{ 0xC1CC, 0xC1CC, 0xC1CC },
  32559. -{ 0xC1CD, 0xC1CD, 0xC1CD },
  32560. -{ 0xC1CE, 0xC1CE, 0xC1CE },
  32561. -{ 0xC1CF, 0xC1CF, 0xC1CF },
  32562. -{ 0xC1D0, 0xC1D0, 0xC1D0 },
  32563. -{ 0xC1D1, 0xC1D1, 0xC1D1 },
  32564. -{ 0xC1D2, 0xC1D2, 0xC1D2 },
  32565. -{ 0xC1D3, 0xC1D3, 0xC1D3 },
  32566. -{ 0xC1D4, 0xC1D4, 0xC1D4 },
  32567. -{ 0xC1D5, 0xC1D5, 0xC1D5 },
  32568. -{ 0xC1D6, 0xC1D6, 0xC1D6 },
  32569. -{ 0xC1D7, 0xC1D7, 0xC1D7 },
  32570. -{ 0xC1D8, 0xC1D8, 0xC1D8 },
  32571. -{ 0xC1D9, 0xC1D9, 0xC1D9 },
  32572. -{ 0xC1DA, 0xC1DA, 0xC1DA },
  32573. -{ 0xC1DB, 0xC1DB, 0xC1DB },
  32574. -{ 0xC1DC, 0xC1DC, 0xC1DC },
  32575. -{ 0xC1DD, 0xC1DD, 0xC1DD },
  32576. -{ 0xC1DE, 0xC1DE, 0xC1DE },
  32577. -{ 0xC1DF, 0xC1DF, 0xC1DF },
  32578. -{ 0xC1E0, 0xC1E0, 0xC1E0 },
  32579. -{ 0xC1E1, 0xC1E1, 0xC1E1 },
  32580. -{ 0xC1E2, 0xC1E2, 0xC1E2 },
  32581. -{ 0xC1E3, 0xC1E3, 0xC1E3 },
  32582. -{ 0xC1E4, 0xC1E4, 0xC1E4 },
  32583. -{ 0xC1E5, 0xC1E5, 0xC1E5 },
  32584. -{ 0xC1E6, 0xC1E6, 0xC1E6 },
  32585. -{ 0xC1E7, 0xC1E7, 0xC1E7 },
  32586. -{ 0xC1E8, 0xC1E8, 0xC1E8 },
  32587. -{ 0xC1E9, 0xC1E9, 0xC1E9 },
  32588. -{ 0xC1EA, 0xC1EA, 0xC1EA },
  32589. -{ 0xC1EB, 0xC1EB, 0xC1EB },
  32590. -{ 0xC1EC, 0xC1EC, 0xC1EC },
  32591. -{ 0xC1ED, 0xC1ED, 0xC1ED },
  32592. -{ 0xC1EE, 0xC1EE, 0xC1EE },
  32593. -{ 0xC1EF, 0xC1EF, 0xC1EF },
  32594. -{ 0xC1F0, 0xC1F0, 0xC1F0 },
  32595. -{ 0xC1F1, 0xC1F1, 0xC1F1 },
  32596. -{ 0xC1F2, 0xC1F2, 0xC1F2 },
  32597. -{ 0xC1F3, 0xC1F3, 0xC1F3 },
  32598. -{ 0xC1F4, 0xC1F4, 0xC1F4 },
  32599. -{ 0xC1F5, 0xC1F5, 0xC1F5 },
  32600. -{ 0xC1F6, 0xC1F6, 0xC1F6 },
  32601. -{ 0xC1F7, 0xC1F7, 0xC1F7 },
  32602. -{ 0xC1F8, 0xC1F8, 0xC1F8 },
  32603. -{ 0xC1F9, 0xC1F9, 0xC1F9 },
  32604. -{ 0xC1FA, 0xC1FA, 0xC1FA },
  32605. -{ 0xC1FB, 0xC1FB, 0xC1FB },
  32606. -{ 0xC1FC, 0xC1FC, 0xC1FC },
  32607. -{ 0xC1FD, 0xC1FD, 0xC1FD },
  32608. -{ 0xC1FE, 0xC1FE, 0xC1FE },
  32609. -{ 0xC1FF, 0xC1FF, 0xC1FF },
  32610. -{ 0xC200, 0xC200, 0xC200 },
  32611. -{ 0xC201, 0xC201, 0xC201 },
  32612. -{ 0xC202, 0xC202, 0xC202 },
  32613. -{ 0xC203, 0xC203, 0xC203 },
  32614. -{ 0xC204, 0xC204, 0xC204 },
  32615. -{ 0xC205, 0xC205, 0xC205 },
  32616. -{ 0xC206, 0xC206, 0xC206 },
  32617. -{ 0xC207, 0xC207, 0xC207 },
  32618. -{ 0xC208, 0xC208, 0xC208 },
  32619. -{ 0xC209, 0xC209, 0xC209 },
  32620. -{ 0xC20A, 0xC20A, 0xC20A },
  32621. -{ 0xC20B, 0xC20B, 0xC20B },
  32622. -{ 0xC20C, 0xC20C, 0xC20C },
  32623. -{ 0xC20D, 0xC20D, 0xC20D },
  32624. -{ 0xC20E, 0xC20E, 0xC20E },
  32625. -{ 0xC20F, 0xC20F, 0xC20F },
  32626. -{ 0xC210, 0xC210, 0xC210 },
  32627. -{ 0xC211, 0xC211, 0xC211 },
  32628. -{ 0xC212, 0xC212, 0xC212 },
  32629. -{ 0xC213, 0xC213, 0xC213 },
  32630. -{ 0xC214, 0xC214, 0xC214 },
  32631. -{ 0xC215, 0xC215, 0xC215 },
  32632. -{ 0xC216, 0xC216, 0xC216 },
  32633. -{ 0xC217, 0xC217, 0xC217 },
  32634. -{ 0xC218, 0xC218, 0xC218 },
  32635. -{ 0xC219, 0xC219, 0xC219 },
  32636. -{ 0xC21A, 0xC21A, 0xC21A },
  32637. -{ 0xC21B, 0xC21B, 0xC21B },
  32638. -{ 0xC21C, 0xC21C, 0xC21C },
  32639. -{ 0xC21D, 0xC21D, 0xC21D },
  32640. -{ 0xC21E, 0xC21E, 0xC21E },
  32641. -{ 0xC21F, 0xC21F, 0xC21F },
  32642. -{ 0xC220, 0xC220, 0xC220 },
  32643. -{ 0xC221, 0xC221, 0xC221 },
  32644. -{ 0xC222, 0xC222, 0xC222 },
  32645. -{ 0xC223, 0xC223, 0xC223 },
  32646. -{ 0xC224, 0xC224, 0xC224 },
  32647. -{ 0xC225, 0xC225, 0xC225 },
  32648. -{ 0xC226, 0xC226, 0xC226 },
  32649. -{ 0xC227, 0xC227, 0xC227 },
  32650. -{ 0xC228, 0xC228, 0xC228 },
  32651. -{ 0xC229, 0xC229, 0xC229 },
  32652. -{ 0xC22A, 0xC22A, 0xC22A },
  32653. -{ 0xC22B, 0xC22B, 0xC22B },
  32654. -{ 0xC22C, 0xC22C, 0xC22C },
  32655. -{ 0xC22D, 0xC22D, 0xC22D },
  32656. -{ 0xC22E, 0xC22E, 0xC22E },
  32657. -{ 0xC22F, 0xC22F, 0xC22F },
  32658. -{ 0xC230, 0xC230, 0xC230 },
  32659. -{ 0xC231, 0xC231, 0xC231 },
  32660. -{ 0xC232, 0xC232, 0xC232 },
  32661. -{ 0xC233, 0xC233, 0xC233 },
  32662. -{ 0xC234, 0xC234, 0xC234 },
  32663. -{ 0xC235, 0xC235, 0xC235 },
  32664. -{ 0xC236, 0xC236, 0xC236 },
  32665. -{ 0xC237, 0xC237, 0xC237 },
  32666. -{ 0xC238, 0xC238, 0xC238 },
  32667. -{ 0xC239, 0xC239, 0xC239 },
  32668. -{ 0xC23A, 0xC23A, 0xC23A },
  32669. -{ 0xC23B, 0xC23B, 0xC23B },
  32670. -{ 0xC23C, 0xC23C, 0xC23C },
  32671. -{ 0xC23D, 0xC23D, 0xC23D },
  32672. -{ 0xC23E, 0xC23E, 0xC23E },
  32673. -{ 0xC23F, 0xC23F, 0xC23F },
  32674. -{ 0xC240, 0xC240, 0xC240 },
  32675. -{ 0xC241, 0xC241, 0xC241 },
  32676. -{ 0xC242, 0xC242, 0xC242 },
  32677. -{ 0xC243, 0xC243, 0xC243 },
  32678. -{ 0xC244, 0xC244, 0xC244 },
  32679. -{ 0xC245, 0xC245, 0xC245 },
  32680. -{ 0xC246, 0xC246, 0xC246 },
  32681. -{ 0xC247, 0xC247, 0xC247 },
  32682. -{ 0xC248, 0xC248, 0xC248 },
  32683. -{ 0xC249, 0xC249, 0xC249 },
  32684. -{ 0xC24A, 0xC24A, 0xC24A },
  32685. -{ 0xC24B, 0xC24B, 0xC24B },
  32686. -{ 0xC24C, 0xC24C, 0xC24C },
  32687. -{ 0xC24D, 0xC24D, 0xC24D },
  32688. -{ 0xC24E, 0xC24E, 0xC24E },
  32689. -{ 0xC24F, 0xC24F, 0xC24F },
  32690. -{ 0xC250, 0xC250, 0xC250 },
  32691. -{ 0xC251, 0xC251, 0xC251 },
  32692. -{ 0xC252, 0xC252, 0xC252 },
  32693. -{ 0xC253, 0xC253, 0xC253 },
  32694. -{ 0xC254, 0xC254, 0xC254 },
  32695. -{ 0xC255, 0xC255, 0xC255 },
  32696. -{ 0xC256, 0xC256, 0xC256 },
  32697. -{ 0xC257, 0xC257, 0xC257 },
  32698. -{ 0xC258, 0xC258, 0xC258 },
  32699. -{ 0xC259, 0xC259, 0xC259 },
  32700. -{ 0xC25A, 0xC25A, 0xC25A },
  32701. -{ 0xC25B, 0xC25B, 0xC25B },
  32702. -{ 0xC25C, 0xC25C, 0xC25C },
  32703. -{ 0xC25D, 0xC25D, 0xC25D },
  32704. -{ 0xC25E, 0xC25E, 0xC25E },
  32705. -{ 0xC25F, 0xC25F, 0xC25F },
  32706. -{ 0xC260, 0xC260, 0xC260 },
  32707. -{ 0xC261, 0xC261, 0xC261 },
  32708. -{ 0xC262, 0xC262, 0xC262 },
  32709. -{ 0xC263, 0xC263, 0xC263 },
  32710. -{ 0xC264, 0xC264, 0xC264 },
  32711. -{ 0xC265, 0xC265, 0xC265 },
  32712. -{ 0xC266, 0xC266, 0xC266 },
  32713. -{ 0xC267, 0xC267, 0xC267 },
  32714. -{ 0xC268, 0xC268, 0xC268 },
  32715. -{ 0xC269, 0xC269, 0xC269 },
  32716. -{ 0xC26A, 0xC26A, 0xC26A },
  32717. -{ 0xC26B, 0xC26B, 0xC26B },
  32718. -{ 0xC26C, 0xC26C, 0xC26C },
  32719. -{ 0xC26D, 0xC26D, 0xC26D },
  32720. -{ 0xC26E, 0xC26E, 0xC26E },
  32721. -{ 0xC26F, 0xC26F, 0xC26F },
  32722. -{ 0xC270, 0xC270, 0xC270 },
  32723. -{ 0xC271, 0xC271, 0xC271 },
  32724. -{ 0xC272, 0xC272, 0xC272 },
  32725. -{ 0xC273, 0xC273, 0xC273 },
  32726. -{ 0xC274, 0xC274, 0xC274 },
  32727. -{ 0xC275, 0xC275, 0xC275 },
  32728. -{ 0xC276, 0xC276, 0xC276 },
  32729. -{ 0xC277, 0xC277, 0xC277 },
  32730. -{ 0xC278, 0xC278, 0xC278 },
  32731. -{ 0xC279, 0xC279, 0xC279 },
  32732. -{ 0xC27A, 0xC27A, 0xC27A },
  32733. -{ 0xC27B, 0xC27B, 0xC27B },
  32734. -{ 0xC27C, 0xC27C, 0xC27C },
  32735. -{ 0xC27D, 0xC27D, 0xC27D },
  32736. -{ 0xC27E, 0xC27E, 0xC27E },
  32737. -{ 0xC27F, 0xC27F, 0xC27F },
  32738. -{ 0xC280, 0xC280, 0xC280 },
  32739. -{ 0xC281, 0xC281, 0xC281 },
  32740. -{ 0xC282, 0xC282, 0xC282 },
  32741. -{ 0xC283, 0xC283, 0xC283 },
  32742. -{ 0xC284, 0xC284, 0xC284 },
  32743. -{ 0xC285, 0xC285, 0xC285 },
  32744. -{ 0xC286, 0xC286, 0xC286 },
  32745. -{ 0xC287, 0xC287, 0xC287 },
  32746. -{ 0xC288, 0xC288, 0xC288 },
  32747. -{ 0xC289, 0xC289, 0xC289 },
  32748. -{ 0xC28A, 0xC28A, 0xC28A },
  32749. -{ 0xC28B, 0xC28B, 0xC28B },
  32750. -{ 0xC28C, 0xC28C, 0xC28C },
  32751. -{ 0xC28D, 0xC28D, 0xC28D },
  32752. -{ 0xC28E, 0xC28E, 0xC28E },
  32753. -{ 0xC28F, 0xC28F, 0xC28F },
  32754. -{ 0xC290, 0xC290, 0xC290 },
  32755. -{ 0xC291, 0xC291, 0xC291 },
  32756. -{ 0xC292, 0xC292, 0xC292 },
  32757. -{ 0xC293, 0xC293, 0xC293 },
  32758. -{ 0xC294, 0xC294, 0xC294 },
  32759. -{ 0xC295, 0xC295, 0xC295 },
  32760. -{ 0xC296, 0xC296, 0xC296 },
  32761. -{ 0xC297, 0xC297, 0xC297 },
  32762. -{ 0xC298, 0xC298, 0xC298 },
  32763. -{ 0xC299, 0xC299, 0xC299 },
  32764. -{ 0xC29A, 0xC29A, 0xC29A },
  32765. -{ 0xC29B, 0xC29B, 0xC29B },
  32766. -{ 0xC29C, 0xC29C, 0xC29C },
  32767. -{ 0xC29D, 0xC29D, 0xC29D },
  32768. -{ 0xC29E, 0xC29E, 0xC29E },
  32769. -{ 0xC29F, 0xC29F, 0xC29F },
  32770. -{ 0xC2A0, 0xC2A0, 0xC2A0 },
  32771. -{ 0xC2A1, 0xC2A1, 0xC2A1 },
  32772. -{ 0xC2A2, 0xC2A2, 0xC2A2 },
  32773. -{ 0xC2A3, 0xC2A3, 0xC2A3 },
  32774. -{ 0xC2A4, 0xC2A4, 0xC2A4 },
  32775. -{ 0xC2A5, 0xC2A5, 0xC2A5 },
  32776. -{ 0xC2A6, 0xC2A6, 0xC2A6 },
  32777. -{ 0xC2A7, 0xC2A7, 0xC2A7 },
  32778. -{ 0xC2A8, 0xC2A8, 0xC2A8 },
  32779. -{ 0xC2A9, 0xC2A9, 0xC2A9 },
  32780. -{ 0xC2AA, 0xC2AA, 0xC2AA },
  32781. -{ 0xC2AB, 0xC2AB, 0xC2AB },
  32782. -{ 0xC2AC, 0xC2AC, 0xC2AC },
  32783. -{ 0xC2AD, 0xC2AD, 0xC2AD },
  32784. -{ 0xC2AE, 0xC2AE, 0xC2AE },
  32785. -{ 0xC2AF, 0xC2AF, 0xC2AF },
  32786. -{ 0xC2B0, 0xC2B0, 0xC2B0 },
  32787. -{ 0xC2B1, 0xC2B1, 0xC2B1 },
  32788. -{ 0xC2B2, 0xC2B2, 0xC2B2 },
  32789. -{ 0xC2B3, 0xC2B3, 0xC2B3 },
  32790. -{ 0xC2B4, 0xC2B4, 0xC2B4 },
  32791. -{ 0xC2B5, 0xC2B5, 0xC2B5 },
  32792. -{ 0xC2B6, 0xC2B6, 0xC2B6 },
  32793. -{ 0xC2B7, 0xC2B7, 0xC2B7 },
  32794. -{ 0xC2B8, 0xC2B8, 0xC2B8 },
  32795. -{ 0xC2B9, 0xC2B9, 0xC2B9 },
  32796. -{ 0xC2BA, 0xC2BA, 0xC2BA },
  32797. -{ 0xC2BB, 0xC2BB, 0xC2BB },
  32798. -{ 0xC2BC, 0xC2BC, 0xC2BC },
  32799. -{ 0xC2BD, 0xC2BD, 0xC2BD },
  32800. -{ 0xC2BE, 0xC2BE, 0xC2BE },
  32801. -{ 0xC2BF, 0xC2BF, 0xC2BF },
  32802. -{ 0xC2C0, 0xC2C0, 0xC2C0 },
  32803. -{ 0xC2C1, 0xC2C1, 0xC2C1 },
  32804. -{ 0xC2C2, 0xC2C2, 0xC2C2 },
  32805. -{ 0xC2C3, 0xC2C3, 0xC2C3 },
  32806. -{ 0xC2C4, 0xC2C4, 0xC2C4 },
  32807. -{ 0xC2C5, 0xC2C5, 0xC2C5 },
  32808. -{ 0xC2C6, 0xC2C6, 0xC2C6 },
  32809. -{ 0xC2C7, 0xC2C7, 0xC2C7 },
  32810. -{ 0xC2C8, 0xC2C8, 0xC2C8 },
  32811. -{ 0xC2C9, 0xC2C9, 0xC2C9 },
  32812. -{ 0xC2CA, 0xC2CA, 0xC2CA },
  32813. -{ 0xC2CB, 0xC2CB, 0xC2CB },
  32814. -{ 0xC2CC, 0xC2CC, 0xC2CC },
  32815. -{ 0xC2CD, 0xC2CD, 0xC2CD },
  32816. -{ 0xC2CE, 0xC2CE, 0xC2CE },
  32817. -{ 0xC2CF, 0xC2CF, 0xC2CF },
  32818. -{ 0xC2D0, 0xC2D0, 0xC2D0 },
  32819. -{ 0xC2D1, 0xC2D1, 0xC2D1 },
  32820. -{ 0xC2D2, 0xC2D2, 0xC2D2 },
  32821. -{ 0xC2D3, 0xC2D3, 0xC2D3 },
  32822. -{ 0xC2D4, 0xC2D4, 0xC2D4 },
  32823. -{ 0xC2D5, 0xC2D5, 0xC2D5 },
  32824. -{ 0xC2D6, 0xC2D6, 0xC2D6 },
  32825. -{ 0xC2D7, 0xC2D7, 0xC2D7 },
  32826. -{ 0xC2D8, 0xC2D8, 0xC2D8 },
  32827. -{ 0xC2D9, 0xC2D9, 0xC2D9 },
  32828. -{ 0xC2DA, 0xC2DA, 0xC2DA },
  32829. -{ 0xC2DB, 0xC2DB, 0xC2DB },
  32830. -{ 0xC2DC, 0xC2DC, 0xC2DC },
  32831. -{ 0xC2DD, 0xC2DD, 0xC2DD },
  32832. -{ 0xC2DE, 0xC2DE, 0xC2DE },
  32833. -{ 0xC2DF, 0xC2DF, 0xC2DF },
  32834. -{ 0xC2E0, 0xC2E0, 0xC2E0 },
  32835. -{ 0xC2E1, 0xC2E1, 0xC2E1 },
  32836. -{ 0xC2E2, 0xC2E2, 0xC2E2 },
  32837. -{ 0xC2E3, 0xC2E3, 0xC2E3 },
  32838. -{ 0xC2E4, 0xC2E4, 0xC2E4 },
  32839. -{ 0xC2E5, 0xC2E5, 0xC2E5 },
  32840. -{ 0xC2E6, 0xC2E6, 0xC2E6 },
  32841. -{ 0xC2E7, 0xC2E7, 0xC2E7 },
  32842. -{ 0xC2E8, 0xC2E8, 0xC2E8 },
  32843. -{ 0xC2E9, 0xC2E9, 0xC2E9 },
  32844. -{ 0xC2EA, 0xC2EA, 0xC2EA },
  32845. -{ 0xC2EB, 0xC2EB, 0xC2EB },
  32846. -{ 0xC2EC, 0xC2EC, 0xC2EC },
  32847. -{ 0xC2ED, 0xC2ED, 0xC2ED },
  32848. -{ 0xC2EE, 0xC2EE, 0xC2EE },
  32849. -{ 0xC2EF, 0xC2EF, 0xC2EF },
  32850. -{ 0xC2F0, 0xC2F0, 0xC2F0 },
  32851. -{ 0xC2F1, 0xC2F1, 0xC2F1 },
  32852. -{ 0xC2F2, 0xC2F2, 0xC2F2 },
  32853. -{ 0xC2F3, 0xC2F3, 0xC2F3 },
  32854. -{ 0xC2F4, 0xC2F4, 0xC2F4 },
  32855. -{ 0xC2F5, 0xC2F5, 0xC2F5 },
  32856. -{ 0xC2F6, 0xC2F6, 0xC2F6 },
  32857. -{ 0xC2F7, 0xC2F7, 0xC2F7 },
  32858. -{ 0xC2F8, 0xC2F8, 0xC2F8 },
  32859. -{ 0xC2F9, 0xC2F9, 0xC2F9 },
  32860. -{ 0xC2FA, 0xC2FA, 0xC2FA },
  32861. -{ 0xC2FB, 0xC2FB, 0xC2FB },
  32862. -{ 0xC2FC, 0xC2FC, 0xC2FC },
  32863. -{ 0xC2FD, 0xC2FD, 0xC2FD },
  32864. -{ 0xC2FE, 0xC2FE, 0xC2FE },
  32865. -{ 0xC2FF, 0xC2FF, 0xC2FF },
  32866. -{ 0xC300, 0xC300, 0xC300 },
  32867. -{ 0xC301, 0xC301, 0xC301 },
  32868. -{ 0xC302, 0xC302, 0xC302 },
  32869. -{ 0xC303, 0xC303, 0xC303 },
  32870. -{ 0xC304, 0xC304, 0xC304 },
  32871. -{ 0xC305, 0xC305, 0xC305 },
  32872. -{ 0xC306, 0xC306, 0xC306 },
  32873. -{ 0xC307, 0xC307, 0xC307 },
  32874. -{ 0xC308, 0xC308, 0xC308 },
  32875. -{ 0xC309, 0xC309, 0xC309 },
  32876. -{ 0xC30A, 0xC30A, 0xC30A },
  32877. -{ 0xC30B, 0xC30B, 0xC30B },
  32878. -{ 0xC30C, 0xC30C, 0xC30C },
  32879. -{ 0xC30D, 0xC30D, 0xC30D },
  32880. -{ 0xC30E, 0xC30E, 0xC30E },
  32881. -{ 0xC30F, 0xC30F, 0xC30F },
  32882. -{ 0xC310, 0xC310, 0xC310 },
  32883. -{ 0xC311, 0xC311, 0xC311 },
  32884. -{ 0xC312, 0xC312, 0xC312 },
  32885. -{ 0xC313, 0xC313, 0xC313 },
  32886. -{ 0xC314, 0xC314, 0xC314 },
  32887. -{ 0xC315, 0xC315, 0xC315 },
  32888. -{ 0xC316, 0xC316, 0xC316 },
  32889. -{ 0xC317, 0xC317, 0xC317 },
  32890. -{ 0xC318, 0xC318, 0xC318 },
  32891. -{ 0xC319, 0xC319, 0xC319 },
  32892. -{ 0xC31A, 0xC31A, 0xC31A },
  32893. -{ 0xC31B, 0xC31B, 0xC31B },
  32894. -{ 0xC31C, 0xC31C, 0xC31C },
  32895. -{ 0xC31D, 0xC31D, 0xC31D },
  32896. -{ 0xC31E, 0xC31E, 0xC31E },
  32897. -{ 0xC31F, 0xC31F, 0xC31F },
  32898. -{ 0xC320, 0xC320, 0xC320 },
  32899. -{ 0xC321, 0xC321, 0xC321 },
  32900. -{ 0xC322, 0xC322, 0xC322 },
  32901. -{ 0xC323, 0xC323, 0xC323 },
  32902. -{ 0xC324, 0xC324, 0xC324 },
  32903. -{ 0xC325, 0xC325, 0xC325 },
  32904. -{ 0xC326, 0xC326, 0xC326 },
  32905. -{ 0xC327, 0xC327, 0xC327 },
  32906. -{ 0xC328, 0xC328, 0xC328 },
  32907. -{ 0xC329, 0xC329, 0xC329 },
  32908. -{ 0xC32A, 0xC32A, 0xC32A },
  32909. -{ 0xC32B, 0xC32B, 0xC32B },
  32910. -{ 0xC32C, 0xC32C, 0xC32C },
  32911. -{ 0xC32D, 0xC32D, 0xC32D },
  32912. -{ 0xC32E, 0xC32E, 0xC32E },
  32913. -{ 0xC32F, 0xC32F, 0xC32F },
  32914. -{ 0xC330, 0xC330, 0xC330 },
  32915. -{ 0xC331, 0xC331, 0xC331 },
  32916. -{ 0xC332, 0xC332, 0xC332 },
  32917. -{ 0xC333, 0xC333, 0xC333 },
  32918. -{ 0xC334, 0xC334, 0xC334 },
  32919. -{ 0xC335, 0xC335, 0xC335 },
  32920. -{ 0xC336, 0xC336, 0xC336 },
  32921. -{ 0xC337, 0xC337, 0xC337 },
  32922. -{ 0xC338, 0xC338, 0xC338 },
  32923. -{ 0xC339, 0xC339, 0xC339 },
  32924. -{ 0xC33A, 0xC33A, 0xC33A },
  32925. -{ 0xC33B, 0xC33B, 0xC33B },
  32926. -{ 0xC33C, 0xC33C, 0xC33C },
  32927. -{ 0xC33D, 0xC33D, 0xC33D },
  32928. -{ 0xC33E, 0xC33E, 0xC33E },
  32929. -{ 0xC33F, 0xC33F, 0xC33F },
  32930. -{ 0xC340, 0xC340, 0xC340 },
  32931. -{ 0xC341, 0xC341, 0xC341 },
  32932. -{ 0xC342, 0xC342, 0xC342 },
  32933. -{ 0xC343, 0xC343, 0xC343 },
  32934. -{ 0xC344, 0xC344, 0xC344 },
  32935. -{ 0xC345, 0xC345, 0xC345 },
  32936. -{ 0xC346, 0xC346, 0xC346 },
  32937. -{ 0xC347, 0xC347, 0xC347 },
  32938. -{ 0xC348, 0xC348, 0xC348 },
  32939. -{ 0xC349, 0xC349, 0xC349 },
  32940. -{ 0xC34A, 0xC34A, 0xC34A },
  32941. -{ 0xC34B, 0xC34B, 0xC34B },
  32942. -{ 0xC34C, 0xC34C, 0xC34C },
  32943. -{ 0xC34D, 0xC34D, 0xC34D },
  32944. -{ 0xC34E, 0xC34E, 0xC34E },
  32945. -{ 0xC34F, 0xC34F, 0xC34F },
  32946. -{ 0xC350, 0xC350, 0xC350 },
  32947. -{ 0xC351, 0xC351, 0xC351 },
  32948. -{ 0xC352, 0xC352, 0xC352 },
  32949. -{ 0xC353, 0xC353, 0xC353 },
  32950. -{ 0xC354, 0xC354, 0xC354 },
  32951. -{ 0xC355, 0xC355, 0xC355 },
  32952. -{ 0xC356, 0xC356, 0xC356 },
  32953. -{ 0xC357, 0xC357, 0xC357 },
  32954. -{ 0xC358, 0xC358, 0xC358 },
  32955. -{ 0xC359, 0xC359, 0xC359 },
  32956. -{ 0xC35A, 0xC35A, 0xC35A },
  32957. -{ 0xC35B, 0xC35B, 0xC35B },
  32958. -{ 0xC35C, 0xC35C, 0xC35C },
  32959. -{ 0xC35D, 0xC35D, 0xC35D },
  32960. -{ 0xC35E, 0xC35E, 0xC35E },
  32961. -{ 0xC35F, 0xC35F, 0xC35F },
  32962. -{ 0xC360, 0xC360, 0xC360 },
  32963. -{ 0xC361, 0xC361, 0xC361 },
  32964. -{ 0xC362, 0xC362, 0xC362 },
  32965. -{ 0xC363, 0xC363, 0xC363 },
  32966. -{ 0xC364, 0xC364, 0xC364 },
  32967. -{ 0xC365, 0xC365, 0xC365 },
  32968. -{ 0xC366, 0xC366, 0xC366 },
  32969. -{ 0xC367, 0xC367, 0xC367 },
  32970. -{ 0xC368, 0xC368, 0xC368 },
  32971. -{ 0xC369, 0xC369, 0xC369 },
  32972. -{ 0xC36A, 0xC36A, 0xC36A },
  32973. -{ 0xC36B, 0xC36B, 0xC36B },
  32974. -{ 0xC36C, 0xC36C, 0xC36C },
  32975. -{ 0xC36D, 0xC36D, 0xC36D },
  32976. -{ 0xC36E, 0xC36E, 0xC36E },
  32977. -{ 0xC36F, 0xC36F, 0xC36F },
  32978. -{ 0xC370, 0xC370, 0xC370 },
  32979. -{ 0xC371, 0xC371, 0xC371 },
  32980. -{ 0xC372, 0xC372, 0xC372 },
  32981. -{ 0xC373, 0xC373, 0xC373 },
  32982. -{ 0xC374, 0xC374, 0xC374 },
  32983. -{ 0xC375, 0xC375, 0xC375 },
  32984. -{ 0xC376, 0xC376, 0xC376 },
  32985. -{ 0xC377, 0xC377, 0xC377 },
  32986. -{ 0xC378, 0xC378, 0xC378 },
  32987. -{ 0xC379, 0xC379, 0xC379 },
  32988. -{ 0xC37A, 0xC37A, 0xC37A },
  32989. -{ 0xC37B, 0xC37B, 0xC37B },
  32990. -{ 0xC37C, 0xC37C, 0xC37C },
  32991. -{ 0xC37D, 0xC37D, 0xC37D },
  32992. -{ 0xC37E, 0xC37E, 0xC37E },
  32993. -{ 0xC37F, 0xC37F, 0xC37F },
  32994. -{ 0xC380, 0xC380, 0xC380 },
  32995. -{ 0xC381, 0xC381, 0xC381 },
  32996. -{ 0xC382, 0xC382, 0xC382 },
  32997. -{ 0xC383, 0xC383, 0xC383 },
  32998. -{ 0xC384, 0xC384, 0xC384 },
  32999. -{ 0xC385, 0xC385, 0xC385 },
  33000. -{ 0xC386, 0xC386, 0xC386 },
  33001. -{ 0xC387, 0xC387, 0xC387 },
  33002. -{ 0xC388, 0xC388, 0xC388 },
  33003. -{ 0xC389, 0xC389, 0xC389 },
  33004. -{ 0xC38A, 0xC38A, 0xC38A },
  33005. -{ 0xC38B, 0xC38B, 0xC38B },
  33006. -{ 0xC38C, 0xC38C, 0xC38C },
  33007. -{ 0xC38D, 0xC38D, 0xC38D },
  33008. -{ 0xC38E, 0xC38E, 0xC38E },
  33009. -{ 0xC38F, 0xC38F, 0xC38F },
  33010. -{ 0xC390, 0xC390, 0xC390 },
  33011. -{ 0xC391, 0xC391, 0xC391 },
  33012. -{ 0xC392, 0xC392, 0xC392 },
  33013. -{ 0xC393, 0xC393, 0xC393 },
  33014. -{ 0xC394, 0xC394, 0xC394 },
  33015. -{ 0xC395, 0xC395, 0xC395 },
  33016. -{ 0xC396, 0xC396, 0xC396 },
  33017. -{ 0xC397, 0xC397, 0xC397 },
  33018. -{ 0xC398, 0xC398, 0xC398 },
  33019. -{ 0xC399, 0xC399, 0xC399 },
  33020. -{ 0xC39A, 0xC39A, 0xC39A },
  33021. -{ 0xC39B, 0xC39B, 0xC39B },
  33022. -{ 0xC39C, 0xC39C, 0xC39C },
  33023. -{ 0xC39D, 0xC39D, 0xC39D },
  33024. -{ 0xC39E, 0xC39E, 0xC39E },
  33025. -{ 0xC39F, 0xC39F, 0xC39F },
  33026. -{ 0xC3A0, 0xC3A0, 0xC3A0 },
  33027. -{ 0xC3A1, 0xC3A1, 0xC3A1 },
  33028. -{ 0xC3A2, 0xC3A2, 0xC3A2 },
  33029. -{ 0xC3A3, 0xC3A3, 0xC3A3 },
  33030. -{ 0xC3A4, 0xC3A4, 0xC3A4 },
  33031. -{ 0xC3A5, 0xC3A5, 0xC3A5 },
  33032. -{ 0xC3A6, 0xC3A6, 0xC3A6 },
  33033. -{ 0xC3A7, 0xC3A7, 0xC3A7 },
  33034. -{ 0xC3A8, 0xC3A8, 0xC3A8 },
  33035. -{ 0xC3A9, 0xC3A9, 0xC3A9 },
  33036. -{ 0xC3AA, 0xC3AA, 0xC3AA },
  33037. -{ 0xC3AB, 0xC3AB, 0xC3AB },
  33038. -{ 0xC3AC, 0xC3AC, 0xC3AC },
  33039. -{ 0xC3AD, 0xC3AD, 0xC3AD },
  33040. -{ 0xC3AE, 0xC3AE, 0xC3AE },
  33041. -{ 0xC3AF, 0xC3AF, 0xC3AF },
  33042. -{ 0xC3B0, 0xC3B0, 0xC3B0 },
  33043. -{ 0xC3B1, 0xC3B1, 0xC3B1 },
  33044. -{ 0xC3B2, 0xC3B2, 0xC3B2 },
  33045. -{ 0xC3B3, 0xC3B3, 0xC3B3 },
  33046. -{ 0xC3B4, 0xC3B4, 0xC3B4 },
  33047. -{ 0xC3B5, 0xC3B5, 0xC3B5 },
  33048. -{ 0xC3B6, 0xC3B6, 0xC3B6 },
  33049. -{ 0xC3B7, 0xC3B7, 0xC3B7 },
  33050. -{ 0xC3B8, 0xC3B8, 0xC3B8 },
  33051. -{ 0xC3B9, 0xC3B9, 0xC3B9 },
  33052. -{ 0xC3BA, 0xC3BA, 0xC3BA },
  33053. -{ 0xC3BB, 0xC3BB, 0xC3BB },
  33054. -{ 0xC3BC, 0xC3BC, 0xC3BC },
  33055. -{ 0xC3BD, 0xC3BD, 0xC3BD },
  33056. -{ 0xC3BE, 0xC3BE, 0xC3BE },
  33057. -{ 0xC3BF, 0xC3BF, 0xC3BF },
  33058. -{ 0xC3C0, 0xC3C0, 0xC3C0 },
  33059. -{ 0xC3C1, 0xC3C1, 0xC3C1 },
  33060. -{ 0xC3C2, 0xC3C2, 0xC3C2 },
  33061. -{ 0xC3C3, 0xC3C3, 0xC3C3 },
  33062. -{ 0xC3C4, 0xC3C4, 0xC3C4 },
  33063. -{ 0xC3C5, 0xC3C5, 0xC3C5 },
  33064. -{ 0xC3C6, 0xC3C6, 0xC3C6 },
  33065. -{ 0xC3C7, 0xC3C7, 0xC3C7 },
  33066. -{ 0xC3C8, 0xC3C8, 0xC3C8 },
  33067. -{ 0xC3C9, 0xC3C9, 0xC3C9 },
  33068. -{ 0xC3CA, 0xC3CA, 0xC3CA },
  33069. -{ 0xC3CB, 0xC3CB, 0xC3CB },
  33070. -{ 0xC3CC, 0xC3CC, 0xC3CC },
  33071. -{ 0xC3CD, 0xC3CD, 0xC3CD },
  33072. -{ 0xC3CE, 0xC3CE, 0xC3CE },
  33073. -{ 0xC3CF, 0xC3CF, 0xC3CF },
  33074. -{ 0xC3D0, 0xC3D0, 0xC3D0 },
  33075. -{ 0xC3D1, 0xC3D1, 0xC3D1 },
  33076. -{ 0xC3D2, 0xC3D2, 0xC3D2 },
  33077. -{ 0xC3D3, 0xC3D3, 0xC3D3 },
  33078. -{ 0xC3D4, 0xC3D4, 0xC3D4 },
  33079. -{ 0xC3D5, 0xC3D5, 0xC3D5 },
  33080. -{ 0xC3D6, 0xC3D6, 0xC3D6 },
  33081. -{ 0xC3D7, 0xC3D7, 0xC3D7 },
  33082. -{ 0xC3D8, 0xC3D8, 0xC3D8 },
  33083. -{ 0xC3D9, 0xC3D9, 0xC3D9 },
  33084. -{ 0xC3DA, 0xC3DA, 0xC3DA },
  33085. -{ 0xC3DB, 0xC3DB, 0xC3DB },
  33086. -{ 0xC3DC, 0xC3DC, 0xC3DC },
  33087. -{ 0xC3DD, 0xC3DD, 0xC3DD },
  33088. -{ 0xC3DE, 0xC3DE, 0xC3DE },
  33089. -{ 0xC3DF, 0xC3DF, 0xC3DF },
  33090. -{ 0xC3E0, 0xC3E0, 0xC3E0 },
  33091. -{ 0xC3E1, 0xC3E1, 0xC3E1 },
  33092. -{ 0xC3E2, 0xC3E2, 0xC3E2 },
  33093. -{ 0xC3E3, 0xC3E3, 0xC3E3 },
  33094. -{ 0xC3E4, 0xC3E4, 0xC3E4 },
  33095. -{ 0xC3E5, 0xC3E5, 0xC3E5 },
  33096. -{ 0xC3E6, 0xC3E6, 0xC3E6 },
  33097. -{ 0xC3E7, 0xC3E7, 0xC3E7 },
  33098. -{ 0xC3E8, 0xC3E8, 0xC3E8 },
  33099. -{ 0xC3E9, 0xC3E9, 0xC3E9 },
  33100. -{ 0xC3EA, 0xC3EA, 0xC3EA },
  33101. -{ 0xC3EB, 0xC3EB, 0xC3EB },
  33102. -{ 0xC3EC, 0xC3EC, 0xC3EC },
  33103. -{ 0xC3ED, 0xC3ED, 0xC3ED },
  33104. -{ 0xC3EE, 0xC3EE, 0xC3EE },
  33105. -{ 0xC3EF, 0xC3EF, 0xC3EF },
  33106. -{ 0xC3F0, 0xC3F0, 0xC3F0 },
  33107. -{ 0xC3F1, 0xC3F1, 0xC3F1 },
  33108. -{ 0xC3F2, 0xC3F2, 0xC3F2 },
  33109. -{ 0xC3F3, 0xC3F3, 0xC3F3 },
  33110. -{ 0xC3F4, 0xC3F4, 0xC3F4 },
  33111. -{ 0xC3F5, 0xC3F5, 0xC3F5 },
  33112. -{ 0xC3F6, 0xC3F6, 0xC3F6 },
  33113. -{ 0xC3F7, 0xC3F7, 0xC3F7 },
  33114. -{ 0xC3F8, 0xC3F8, 0xC3F8 },
  33115. -{ 0xC3F9, 0xC3F9, 0xC3F9 },
  33116. -{ 0xC3FA, 0xC3FA, 0xC3FA },
  33117. -{ 0xC3FB, 0xC3FB, 0xC3FB },
  33118. -{ 0xC3FC, 0xC3FC, 0xC3FC },
  33119. -{ 0xC3FD, 0xC3FD, 0xC3FD },
  33120. -{ 0xC3FE, 0xC3FE, 0xC3FE },
  33121. -{ 0xC3FF, 0xC3FF, 0xC3FF },
  33122. -{ 0xC400, 0xC400, 0xC400 },
  33123. -{ 0xC401, 0xC401, 0xC401 },
  33124. -{ 0xC402, 0xC402, 0xC402 },
  33125. -{ 0xC403, 0xC403, 0xC403 },
  33126. -{ 0xC404, 0xC404, 0xC404 },
  33127. -{ 0xC405, 0xC405, 0xC405 },
  33128. -{ 0xC406, 0xC406, 0xC406 },
  33129. -{ 0xC407, 0xC407, 0xC407 },
  33130. -{ 0xC408, 0xC408, 0xC408 },
  33131. -{ 0xC409, 0xC409, 0xC409 },
  33132. -{ 0xC40A, 0xC40A, 0xC40A },
  33133. -{ 0xC40B, 0xC40B, 0xC40B },
  33134. -{ 0xC40C, 0xC40C, 0xC40C },
  33135. -{ 0xC40D, 0xC40D, 0xC40D },
  33136. -{ 0xC40E, 0xC40E, 0xC40E },
  33137. -{ 0xC40F, 0xC40F, 0xC40F },
  33138. -{ 0xC410, 0xC410, 0xC410 },
  33139. -{ 0xC411, 0xC411, 0xC411 },
  33140. -{ 0xC412, 0xC412, 0xC412 },
  33141. -{ 0xC413, 0xC413, 0xC413 },
  33142. -{ 0xC414, 0xC414, 0xC414 },
  33143. -{ 0xC415, 0xC415, 0xC415 },
  33144. -{ 0xC416, 0xC416, 0xC416 },
  33145. -{ 0xC417, 0xC417, 0xC417 },
  33146. -{ 0xC418, 0xC418, 0xC418 },
  33147. -{ 0xC419, 0xC419, 0xC419 },
  33148. -{ 0xC41A, 0xC41A, 0xC41A },
  33149. -{ 0xC41B, 0xC41B, 0xC41B },
  33150. -{ 0xC41C, 0xC41C, 0xC41C },
  33151. -{ 0xC41D, 0xC41D, 0xC41D },
  33152. -{ 0xC41E, 0xC41E, 0xC41E },
  33153. -{ 0xC41F, 0xC41F, 0xC41F },
  33154. -{ 0xC420, 0xC420, 0xC420 },
  33155. -{ 0xC421, 0xC421, 0xC421 },
  33156. -{ 0xC422, 0xC422, 0xC422 },
  33157. -{ 0xC423, 0xC423, 0xC423 },
  33158. -{ 0xC424, 0xC424, 0xC424 },
  33159. -{ 0xC425, 0xC425, 0xC425 },
  33160. -{ 0xC426, 0xC426, 0xC426 },
  33161. -{ 0xC427, 0xC427, 0xC427 },
  33162. -{ 0xC428, 0xC428, 0xC428 },
  33163. -{ 0xC429, 0xC429, 0xC429 },
  33164. -{ 0xC42A, 0xC42A, 0xC42A },
  33165. -{ 0xC42B, 0xC42B, 0xC42B },
  33166. -{ 0xC42C, 0xC42C, 0xC42C },
  33167. -{ 0xC42D, 0xC42D, 0xC42D },
  33168. -{ 0xC42E, 0xC42E, 0xC42E },
  33169. -{ 0xC42F, 0xC42F, 0xC42F },
  33170. -{ 0xC430, 0xC430, 0xC430 },
  33171. -{ 0xC431, 0xC431, 0xC431 },
  33172. -{ 0xC432, 0xC432, 0xC432 },
  33173. -{ 0xC433, 0xC433, 0xC433 },
  33174. -{ 0xC434, 0xC434, 0xC434 },
  33175. -{ 0xC435, 0xC435, 0xC435 },
  33176. -{ 0xC436, 0xC436, 0xC436 },
  33177. -{ 0xC437, 0xC437, 0xC437 },
  33178. -{ 0xC438, 0xC438, 0xC438 },
  33179. -{ 0xC439, 0xC439, 0xC439 },
  33180. -{ 0xC43A, 0xC43A, 0xC43A },
  33181. -{ 0xC43B, 0xC43B, 0xC43B },
  33182. -{ 0xC43C, 0xC43C, 0xC43C },
  33183. -{ 0xC43D, 0xC43D, 0xC43D },
  33184. -{ 0xC43E, 0xC43E, 0xC43E },
  33185. -{ 0xC43F, 0xC43F, 0xC43F },
  33186. -{ 0xC440, 0xC440, 0xC440 },
  33187. -{ 0xC441, 0xC441, 0xC441 },
  33188. -{ 0xC442, 0xC442, 0xC442 },
  33189. -{ 0xC443, 0xC443, 0xC443 },
  33190. -{ 0xC444, 0xC444, 0xC444 },
  33191. -{ 0xC445, 0xC445, 0xC445 },
  33192. -{ 0xC446, 0xC446, 0xC446 },
  33193. -{ 0xC447, 0xC447, 0xC447 },
  33194. -{ 0xC448, 0xC448, 0xC448 },
  33195. -{ 0xC449, 0xC449, 0xC449 },
  33196. -{ 0xC44A, 0xC44A, 0xC44A },
  33197. -{ 0xC44B, 0xC44B, 0xC44B },
  33198. -{ 0xC44C, 0xC44C, 0xC44C },
  33199. -{ 0xC44D, 0xC44D, 0xC44D },
  33200. -{ 0xC44E, 0xC44E, 0xC44E },
  33201. -{ 0xC44F, 0xC44F, 0xC44F },
  33202. -{ 0xC450, 0xC450, 0xC450 },
  33203. -{ 0xC451, 0xC451, 0xC451 },
  33204. -{ 0xC452, 0xC452, 0xC452 },
  33205. -{ 0xC453, 0xC453, 0xC453 },
  33206. -{ 0xC454, 0xC454, 0xC454 },
  33207. -{ 0xC455, 0xC455, 0xC455 },
  33208. -{ 0xC456, 0xC456, 0xC456 },
  33209. -{ 0xC457, 0xC457, 0xC457 },
  33210. -{ 0xC458, 0xC458, 0xC458 },
  33211. -{ 0xC459, 0xC459, 0xC459 },
  33212. -{ 0xC45A, 0xC45A, 0xC45A },
  33213. -{ 0xC45B, 0xC45B, 0xC45B },
  33214. -{ 0xC45C, 0xC45C, 0xC45C },
  33215. -{ 0xC45D, 0xC45D, 0xC45D },
  33216. -{ 0xC45E, 0xC45E, 0xC45E },
  33217. -{ 0xC45F, 0xC45F, 0xC45F },
  33218. -{ 0xC460, 0xC460, 0xC460 },
  33219. -{ 0xC461, 0xC461, 0xC461 },
  33220. -{ 0xC462, 0xC462, 0xC462 },
  33221. -{ 0xC463, 0xC463, 0xC463 },
  33222. -{ 0xC464, 0xC464, 0xC464 },
  33223. -{ 0xC465, 0xC465, 0xC465 },
  33224. -{ 0xC466, 0xC466, 0xC466 },
  33225. -{ 0xC467, 0xC467, 0xC467 },
  33226. -{ 0xC468, 0xC468, 0xC468 },
  33227. -{ 0xC469, 0xC469, 0xC469 },
  33228. -{ 0xC46A, 0xC46A, 0xC46A },
  33229. -{ 0xC46B, 0xC46B, 0xC46B },
  33230. -{ 0xC46C, 0xC46C, 0xC46C },
  33231. -{ 0xC46D, 0xC46D, 0xC46D },
  33232. -{ 0xC46E, 0xC46E, 0xC46E },
  33233. -{ 0xC46F, 0xC46F, 0xC46F },
  33234. -{ 0xC470, 0xC470, 0xC470 },
  33235. -{ 0xC471, 0xC471, 0xC471 },
  33236. -{ 0xC472, 0xC472, 0xC472 },
  33237. -{ 0xC473, 0xC473, 0xC473 },
  33238. -{ 0xC474, 0xC474, 0xC474 },
  33239. -{ 0xC475, 0xC475, 0xC475 },
  33240. -{ 0xC476, 0xC476, 0xC476 },
  33241. -{ 0xC477, 0xC477, 0xC477 },
  33242. -{ 0xC478, 0xC478, 0xC478 },
  33243. -{ 0xC479, 0xC479, 0xC479 },
  33244. -{ 0xC47A, 0xC47A, 0xC47A },
  33245. -{ 0xC47B, 0xC47B, 0xC47B },
  33246. -{ 0xC47C, 0xC47C, 0xC47C },
  33247. -{ 0xC47D, 0xC47D, 0xC47D },
  33248. -{ 0xC47E, 0xC47E, 0xC47E },
  33249. -{ 0xC47F, 0xC47F, 0xC47F },
  33250. -{ 0xC480, 0xC480, 0xC480 },
  33251. -{ 0xC481, 0xC481, 0xC481 },
  33252. -{ 0xC482, 0xC482, 0xC482 },
  33253. -{ 0xC483, 0xC483, 0xC483 },
  33254. -{ 0xC484, 0xC484, 0xC484 },
  33255. -{ 0xC485, 0xC485, 0xC485 },
  33256. -{ 0xC486, 0xC486, 0xC486 },
  33257. -{ 0xC487, 0xC487, 0xC487 },
  33258. -{ 0xC488, 0xC488, 0xC488 },
  33259. -{ 0xC489, 0xC489, 0xC489 },
  33260. -{ 0xC48A, 0xC48A, 0xC48A },
  33261. -{ 0xC48B, 0xC48B, 0xC48B },
  33262. -{ 0xC48C, 0xC48C, 0xC48C },
  33263. -{ 0xC48D, 0xC48D, 0xC48D },
  33264. -{ 0xC48E, 0xC48E, 0xC48E },
  33265. -{ 0xC48F, 0xC48F, 0xC48F },
  33266. -{ 0xC490, 0xC490, 0xC490 },
  33267. -{ 0xC491, 0xC491, 0xC491 },
  33268. -{ 0xC492, 0xC492, 0xC492 },
  33269. -{ 0xC493, 0xC493, 0xC493 },
  33270. -{ 0xC494, 0xC494, 0xC494 },
  33271. -{ 0xC495, 0xC495, 0xC495 },
  33272. -{ 0xC496, 0xC496, 0xC496 },
  33273. -{ 0xC497, 0xC497, 0xC497 },
  33274. -{ 0xC498, 0xC498, 0xC498 },
  33275. -{ 0xC499, 0xC499, 0xC499 },
  33276. -{ 0xC49A, 0xC49A, 0xC49A },
  33277. -{ 0xC49B, 0xC49B, 0xC49B },
  33278. -{ 0xC49C, 0xC49C, 0xC49C },
  33279. -{ 0xC49D, 0xC49D, 0xC49D },
  33280. -{ 0xC49E, 0xC49E, 0xC49E },
  33281. -{ 0xC49F, 0xC49F, 0xC49F },
  33282. -{ 0xC4A0, 0xC4A0, 0xC4A0 },
  33283. -{ 0xC4A1, 0xC4A1, 0xC4A1 },
  33284. -{ 0xC4A2, 0xC4A2, 0xC4A2 },
  33285. -{ 0xC4A3, 0xC4A3, 0xC4A3 },
  33286. -{ 0xC4A4, 0xC4A4, 0xC4A4 },
  33287. -{ 0xC4A5, 0xC4A5, 0xC4A5 },
  33288. -{ 0xC4A6, 0xC4A6, 0xC4A6 },
  33289. -{ 0xC4A7, 0xC4A7, 0xC4A7 },
  33290. -{ 0xC4A8, 0xC4A8, 0xC4A8 },
  33291. -{ 0xC4A9, 0xC4A9, 0xC4A9 },
  33292. -{ 0xC4AA, 0xC4AA, 0xC4AA },
  33293. -{ 0xC4AB, 0xC4AB, 0xC4AB },
  33294. -{ 0xC4AC, 0xC4AC, 0xC4AC },
  33295. -{ 0xC4AD, 0xC4AD, 0xC4AD },
  33296. -{ 0xC4AE, 0xC4AE, 0xC4AE },
  33297. -{ 0xC4AF, 0xC4AF, 0xC4AF },
  33298. -{ 0xC4B0, 0xC4B0, 0xC4B0 },
  33299. -{ 0xC4B1, 0xC4B1, 0xC4B1 },
  33300. -{ 0xC4B2, 0xC4B2, 0xC4B2 },
  33301. -{ 0xC4B3, 0xC4B3, 0xC4B3 },
  33302. -{ 0xC4B4, 0xC4B4, 0xC4B4 },
  33303. -{ 0xC4B5, 0xC4B5, 0xC4B5 },
  33304. -{ 0xC4B6, 0xC4B6, 0xC4B6 },
  33305. -{ 0xC4B7, 0xC4B7, 0xC4B7 },
  33306. -{ 0xC4B8, 0xC4B8, 0xC4B8 },
  33307. -{ 0xC4B9, 0xC4B9, 0xC4B9 },
  33308. -{ 0xC4BA, 0xC4BA, 0xC4BA },
  33309. -{ 0xC4BB, 0xC4BB, 0xC4BB },
  33310. -{ 0xC4BC, 0xC4BC, 0xC4BC },
  33311. -{ 0xC4BD, 0xC4BD, 0xC4BD },
  33312. -{ 0xC4BE, 0xC4BE, 0xC4BE },
  33313. -{ 0xC4BF, 0xC4BF, 0xC4BF },
  33314. -{ 0xC4C0, 0xC4C0, 0xC4C0 },
  33315. -{ 0xC4C1, 0xC4C1, 0xC4C1 },
  33316. -{ 0xC4C2, 0xC4C2, 0xC4C2 },
  33317. -{ 0xC4C3, 0xC4C3, 0xC4C3 },
  33318. -{ 0xC4C4, 0xC4C4, 0xC4C4 },
  33319. -{ 0xC4C5, 0xC4C5, 0xC4C5 },
  33320. -{ 0xC4C6, 0xC4C6, 0xC4C6 },
  33321. -{ 0xC4C7, 0xC4C7, 0xC4C7 },
  33322. -{ 0xC4C8, 0xC4C8, 0xC4C8 },
  33323. -{ 0xC4C9, 0xC4C9, 0xC4C9 },
  33324. -{ 0xC4CA, 0xC4CA, 0xC4CA },
  33325. -{ 0xC4CB, 0xC4CB, 0xC4CB },
  33326. -{ 0xC4CC, 0xC4CC, 0xC4CC },
  33327. -{ 0xC4CD, 0xC4CD, 0xC4CD },
  33328. -{ 0xC4CE, 0xC4CE, 0xC4CE },
  33329. -{ 0xC4CF, 0xC4CF, 0xC4CF },
  33330. -{ 0xC4D0, 0xC4D0, 0xC4D0 },
  33331. -{ 0xC4D1, 0xC4D1, 0xC4D1 },
  33332. -{ 0xC4D2, 0xC4D2, 0xC4D2 },
  33333. -{ 0xC4D3, 0xC4D3, 0xC4D3 },
  33334. -{ 0xC4D4, 0xC4D4, 0xC4D4 },
  33335. -{ 0xC4D5, 0xC4D5, 0xC4D5 },
  33336. -{ 0xC4D6, 0xC4D6, 0xC4D6 },
  33337. -{ 0xC4D7, 0xC4D7, 0xC4D7 },
  33338. -{ 0xC4D8, 0xC4D8, 0xC4D8 },
  33339. -{ 0xC4D9, 0xC4D9, 0xC4D9 },
  33340. -{ 0xC4DA, 0xC4DA, 0xC4DA },
  33341. -{ 0xC4DB, 0xC4DB, 0xC4DB },
  33342. -{ 0xC4DC, 0xC4DC, 0xC4DC },
  33343. -{ 0xC4DD, 0xC4DD, 0xC4DD },
  33344. -{ 0xC4DE, 0xC4DE, 0xC4DE },
  33345. -{ 0xC4DF, 0xC4DF, 0xC4DF },
  33346. -{ 0xC4E0, 0xC4E0, 0xC4E0 },
  33347. -{ 0xC4E1, 0xC4E1, 0xC4E1 },
  33348. -{ 0xC4E2, 0xC4E2, 0xC4E2 },
  33349. -{ 0xC4E3, 0xC4E3, 0xC4E3 },
  33350. -{ 0xC4E4, 0xC4E4, 0xC4E4 },
  33351. -{ 0xC4E5, 0xC4E5, 0xC4E5 },
  33352. -{ 0xC4E6, 0xC4E6, 0xC4E6 },
  33353. -{ 0xC4E7, 0xC4E7, 0xC4E7 },
  33354. -{ 0xC4E8, 0xC4E8, 0xC4E8 },
  33355. -{ 0xC4E9, 0xC4E9, 0xC4E9 },
  33356. -{ 0xC4EA, 0xC4EA, 0xC4EA },
  33357. -{ 0xC4EB, 0xC4EB, 0xC4EB },
  33358. -{ 0xC4EC, 0xC4EC, 0xC4EC },
  33359. -{ 0xC4ED, 0xC4ED, 0xC4ED },
  33360. -{ 0xC4EE, 0xC4EE, 0xC4EE },
  33361. -{ 0xC4EF, 0xC4EF, 0xC4EF },
  33362. -{ 0xC4F0, 0xC4F0, 0xC4F0 },
  33363. -{ 0xC4F1, 0xC4F1, 0xC4F1 },
  33364. -{ 0xC4F2, 0xC4F2, 0xC4F2 },
  33365. -{ 0xC4F3, 0xC4F3, 0xC4F3 },
  33366. -{ 0xC4F4, 0xC4F4, 0xC4F4 },
  33367. -{ 0xC4F5, 0xC4F5, 0xC4F5 },
  33368. -{ 0xC4F6, 0xC4F6, 0xC4F6 },
  33369. -{ 0xC4F7, 0xC4F7, 0xC4F7 },
  33370. -{ 0xC4F8, 0xC4F8, 0xC4F8 },
  33371. -{ 0xC4F9, 0xC4F9, 0xC4F9 },
  33372. -{ 0xC4FA, 0xC4FA, 0xC4FA },
  33373. -{ 0xC4FB, 0xC4FB, 0xC4FB },
  33374. -{ 0xC4FC, 0xC4FC, 0xC4FC },
  33375. -{ 0xC4FD, 0xC4FD, 0xC4FD },
  33376. -{ 0xC4FE, 0xC4FE, 0xC4FE },
  33377. -{ 0xC4FF, 0xC4FF, 0xC4FF },
  33378. -{ 0xC500, 0xC500, 0xC500 },
  33379. -{ 0xC501, 0xC501, 0xC501 },
  33380. -{ 0xC502, 0xC502, 0xC502 },
  33381. -{ 0xC503, 0xC503, 0xC503 },
  33382. -{ 0xC504, 0xC504, 0xC504 },
  33383. -{ 0xC505, 0xC505, 0xC505 },
  33384. -{ 0xC506, 0xC506, 0xC506 },
  33385. -{ 0xC507, 0xC507, 0xC507 },
  33386. -{ 0xC508, 0xC508, 0xC508 },
  33387. -{ 0xC509, 0xC509, 0xC509 },
  33388. -{ 0xC50A, 0xC50A, 0xC50A },
  33389. -{ 0xC50B, 0xC50B, 0xC50B },
  33390. -{ 0xC50C, 0xC50C, 0xC50C },
  33391. -{ 0xC50D, 0xC50D, 0xC50D },
  33392. -{ 0xC50E, 0xC50E, 0xC50E },
  33393. -{ 0xC50F, 0xC50F, 0xC50F },
  33394. -{ 0xC510, 0xC510, 0xC510 },
  33395. -{ 0xC511, 0xC511, 0xC511 },
  33396. -{ 0xC512, 0xC512, 0xC512 },
  33397. -{ 0xC513, 0xC513, 0xC513 },
  33398. -{ 0xC514, 0xC514, 0xC514 },
  33399. -{ 0xC515, 0xC515, 0xC515 },
  33400. -{ 0xC516, 0xC516, 0xC516 },
  33401. -{ 0xC517, 0xC517, 0xC517 },
  33402. -{ 0xC518, 0xC518, 0xC518 },
  33403. -{ 0xC519, 0xC519, 0xC519 },
  33404. -{ 0xC51A, 0xC51A, 0xC51A },
  33405. -{ 0xC51B, 0xC51B, 0xC51B },
  33406. -{ 0xC51C, 0xC51C, 0xC51C },
  33407. -{ 0xC51D, 0xC51D, 0xC51D },
  33408. -{ 0xC51E, 0xC51E, 0xC51E },
  33409. -{ 0xC51F, 0xC51F, 0xC51F },
  33410. -{ 0xC520, 0xC520, 0xC520 },
  33411. -{ 0xC521, 0xC521, 0xC521 },
  33412. -{ 0xC522, 0xC522, 0xC522 },
  33413. -{ 0xC523, 0xC523, 0xC523 },
  33414. -{ 0xC524, 0xC524, 0xC524 },
  33415. -{ 0xC525, 0xC525, 0xC525 },
  33416. -{ 0xC526, 0xC526, 0xC526 },
  33417. -{ 0xC527, 0xC527, 0xC527 },
  33418. -{ 0xC528, 0xC528, 0xC528 },
  33419. -{ 0xC529, 0xC529, 0xC529 },
  33420. -{ 0xC52A, 0xC52A, 0xC52A },
  33421. -{ 0xC52B, 0xC52B, 0xC52B },
  33422. -{ 0xC52C, 0xC52C, 0xC52C },
  33423. -{ 0xC52D, 0xC52D, 0xC52D },
  33424. -{ 0xC52E, 0xC52E, 0xC52E },
  33425. -{ 0xC52F, 0xC52F, 0xC52F },
  33426. -{ 0xC530, 0xC530, 0xC530 },
  33427. -{ 0xC531, 0xC531, 0xC531 },
  33428. -{ 0xC532, 0xC532, 0xC532 },
  33429. -{ 0xC533, 0xC533, 0xC533 },
  33430. -{ 0xC534, 0xC534, 0xC534 },
  33431. -{ 0xC535, 0xC535, 0xC535 },
  33432. -{ 0xC536, 0xC536, 0xC536 },
  33433. -{ 0xC537, 0xC537, 0xC537 },
  33434. -{ 0xC538, 0xC538, 0xC538 },
  33435. -{ 0xC539, 0xC539, 0xC539 },
  33436. -{ 0xC53A, 0xC53A, 0xC53A },
  33437. -{ 0xC53B, 0xC53B, 0xC53B },
  33438. -{ 0xC53C, 0xC53C, 0xC53C },
  33439. -{ 0xC53D, 0xC53D, 0xC53D },
  33440. -{ 0xC53E, 0xC53E, 0xC53E },
  33441. -{ 0xC53F, 0xC53F, 0xC53F },
  33442. -{ 0xC540, 0xC540, 0xC540 },
  33443. -{ 0xC541, 0xC541, 0xC541 },
  33444. -{ 0xC542, 0xC542, 0xC542 },
  33445. -{ 0xC543, 0xC543, 0xC543 },
  33446. -{ 0xC544, 0xC544, 0xC544 },
  33447. -{ 0xC545, 0xC545, 0xC545 },
  33448. -{ 0xC546, 0xC546, 0xC546 },
  33449. -{ 0xC547, 0xC547, 0xC547 },
  33450. -{ 0xC548, 0xC548, 0xC548 },
  33451. -{ 0xC549, 0xC549, 0xC549 },
  33452. -{ 0xC54A, 0xC54A, 0xC54A },
  33453. -{ 0xC54B, 0xC54B, 0xC54B },
  33454. -{ 0xC54C, 0xC54C, 0xC54C },
  33455. -{ 0xC54D, 0xC54D, 0xC54D },
  33456. -{ 0xC54E, 0xC54E, 0xC54E },
  33457. -{ 0xC54F, 0xC54F, 0xC54F },
  33458. -{ 0xC550, 0xC550, 0xC550 },
  33459. -{ 0xC551, 0xC551, 0xC551 },
  33460. -{ 0xC552, 0xC552, 0xC552 },
  33461. -{ 0xC553, 0xC553, 0xC553 },
  33462. -{ 0xC554, 0xC554, 0xC554 },
  33463. -{ 0xC555, 0xC555, 0xC555 },
  33464. -{ 0xC556, 0xC556, 0xC556 },
  33465. -{ 0xC557, 0xC557, 0xC557 },
  33466. -{ 0xC558, 0xC558, 0xC558 },
  33467. -{ 0xC559, 0xC559, 0xC559 },
  33468. -{ 0xC55A, 0xC55A, 0xC55A },
  33469. -{ 0xC55B, 0xC55B, 0xC55B },
  33470. -{ 0xC55C, 0xC55C, 0xC55C },
  33471. -{ 0xC55D, 0xC55D, 0xC55D },
  33472. -{ 0xC55E, 0xC55E, 0xC55E },
  33473. -{ 0xC55F, 0xC55F, 0xC55F },
  33474. -{ 0xC560, 0xC560, 0xC560 },
  33475. -{ 0xC561, 0xC561, 0xC561 },
  33476. -{ 0xC562, 0xC562, 0xC562 },
  33477. -{ 0xC563, 0xC563, 0xC563 },
  33478. -{ 0xC564, 0xC564, 0xC564 },
  33479. -{ 0xC565, 0xC565, 0xC565 },
  33480. -{ 0xC566, 0xC566, 0xC566 },
  33481. -{ 0xC567, 0xC567, 0xC567 },
  33482. -{ 0xC568, 0xC568, 0xC568 },
  33483. -{ 0xC569, 0xC569, 0xC569 },
  33484. -{ 0xC56A, 0xC56A, 0xC56A },
  33485. -{ 0xC56B, 0xC56B, 0xC56B },
  33486. -{ 0xC56C, 0xC56C, 0xC56C },
  33487. -{ 0xC56D, 0xC56D, 0xC56D },
  33488. -{ 0xC56E, 0xC56E, 0xC56E },
  33489. -{ 0xC56F, 0xC56F, 0xC56F },
  33490. -{ 0xC570, 0xC570, 0xC570 },
  33491. -{ 0xC571, 0xC571, 0xC571 },
  33492. -{ 0xC572, 0xC572, 0xC572 },
  33493. -{ 0xC573, 0xC573, 0xC573 },
  33494. -{ 0xC574, 0xC574, 0xC574 },
  33495. -{ 0xC575, 0xC575, 0xC575 },
  33496. -{ 0xC576, 0xC576, 0xC576 },
  33497. -{ 0xC577, 0xC577, 0xC577 },
  33498. -{ 0xC578, 0xC578, 0xC578 },
  33499. -{ 0xC579, 0xC579, 0xC579 },
  33500. -{ 0xC57A, 0xC57A, 0xC57A },
  33501. -{ 0xC57B, 0xC57B, 0xC57B },
  33502. -{ 0xC57C, 0xC57C, 0xC57C },
  33503. -{ 0xC57D, 0xC57D, 0xC57D },
  33504. -{ 0xC57E, 0xC57E, 0xC57E },
  33505. -{ 0xC57F, 0xC57F, 0xC57F },
  33506. -{ 0xC580, 0xC580, 0xC580 },
  33507. -{ 0xC581, 0xC581, 0xC581 },
  33508. -{ 0xC582, 0xC582, 0xC582 },
  33509. -{ 0xC583, 0xC583, 0xC583 },
  33510. -{ 0xC584, 0xC584, 0xC584 },
  33511. -{ 0xC585, 0xC585, 0xC585 },
  33512. -{ 0xC586, 0xC586, 0xC586 },
  33513. -{ 0xC587, 0xC587, 0xC587 },
  33514. -{ 0xC588, 0xC588, 0xC588 },
  33515. -{ 0xC589, 0xC589, 0xC589 },
  33516. -{ 0xC58A, 0xC58A, 0xC58A },
  33517. -{ 0xC58B, 0xC58B, 0xC58B },
  33518. -{ 0xC58C, 0xC58C, 0xC58C },
  33519. -{ 0xC58D, 0xC58D, 0xC58D },
  33520. -{ 0xC58E, 0xC58E, 0xC58E },
  33521. -{ 0xC58F, 0xC58F, 0xC58F },
  33522. -{ 0xC590, 0xC590, 0xC590 },
  33523. -{ 0xC591, 0xC591, 0xC591 },
  33524. -{ 0xC592, 0xC592, 0xC592 },
  33525. -{ 0xC593, 0xC593, 0xC593 },
  33526. -{ 0xC594, 0xC594, 0xC594 },
  33527. -{ 0xC595, 0xC595, 0xC595 },
  33528. -{ 0xC596, 0xC596, 0xC596 },
  33529. -{ 0xC597, 0xC597, 0xC597 },
  33530. -{ 0xC598, 0xC598, 0xC598 },
  33531. -{ 0xC599, 0xC599, 0xC599 },
  33532. -{ 0xC59A, 0xC59A, 0xC59A },
  33533. -{ 0xC59B, 0xC59B, 0xC59B },
  33534. -{ 0xC59C, 0xC59C, 0xC59C },
  33535. -{ 0xC59D, 0xC59D, 0xC59D },
  33536. -{ 0xC59E, 0xC59E, 0xC59E },
  33537. -{ 0xC59F, 0xC59F, 0xC59F },
  33538. -{ 0xC5A0, 0xC5A0, 0xC5A0 },
  33539. -{ 0xC5A1, 0xC5A1, 0xC5A1 },
  33540. -{ 0xC5A2, 0xC5A2, 0xC5A2 },
  33541. -{ 0xC5A3, 0xC5A3, 0xC5A3 },
  33542. -{ 0xC5A4, 0xC5A4, 0xC5A4 },
  33543. -{ 0xC5A5, 0xC5A5, 0xC5A5 },
  33544. -{ 0xC5A6, 0xC5A6, 0xC5A6 },
  33545. -{ 0xC5A7, 0xC5A7, 0xC5A7 },
  33546. -{ 0xC5A8, 0xC5A8, 0xC5A8 },
  33547. -{ 0xC5A9, 0xC5A9, 0xC5A9 },
  33548. -{ 0xC5AA, 0xC5AA, 0xC5AA },
  33549. -{ 0xC5AB, 0xC5AB, 0xC5AB },
  33550. -{ 0xC5AC, 0xC5AC, 0xC5AC },
  33551. -{ 0xC5AD, 0xC5AD, 0xC5AD },
  33552. -{ 0xC5AE, 0xC5AE, 0xC5AE },
  33553. -{ 0xC5AF, 0xC5AF, 0xC5AF },
  33554. -{ 0xC5B0, 0xC5B0, 0xC5B0 },
  33555. -{ 0xC5B1, 0xC5B1, 0xC5B1 },
  33556. -{ 0xC5B2, 0xC5B2, 0xC5B2 },
  33557. -{ 0xC5B3, 0xC5B3, 0xC5B3 },
  33558. -{ 0xC5B4, 0xC5B4, 0xC5B4 },
  33559. -{ 0xC5B5, 0xC5B5, 0xC5B5 },
  33560. -{ 0xC5B6, 0xC5B6, 0xC5B6 },
  33561. -{ 0xC5B7, 0xC5B7, 0xC5B7 },
  33562. -{ 0xC5B8, 0xC5B8, 0xC5B8 },
  33563. -{ 0xC5B9, 0xC5B9, 0xC5B9 },
  33564. -{ 0xC5BA, 0xC5BA, 0xC5BA },
  33565. -{ 0xC5BB, 0xC5BB, 0xC5BB },
  33566. -{ 0xC5BC, 0xC5BC, 0xC5BC },
  33567. -{ 0xC5BD, 0xC5BD, 0xC5BD },
  33568. -{ 0xC5BE, 0xC5BE, 0xC5BE },
  33569. -{ 0xC5BF, 0xC5BF, 0xC5BF },
  33570. -{ 0xC5C0, 0xC5C0, 0xC5C0 },
  33571. -{ 0xC5C1, 0xC5C1, 0xC5C1 },
  33572. -{ 0xC5C2, 0xC5C2, 0xC5C2 },
  33573. -{ 0xC5C3, 0xC5C3, 0xC5C3 },
  33574. -{ 0xC5C4, 0xC5C4, 0xC5C4 },
  33575. -{ 0xC5C5, 0xC5C5, 0xC5C5 },
  33576. -{ 0xC5C6, 0xC5C6, 0xC5C6 },
  33577. -{ 0xC5C7, 0xC5C7, 0xC5C7 },
  33578. -{ 0xC5C8, 0xC5C8, 0xC5C8 },
  33579. -{ 0xC5C9, 0xC5C9, 0xC5C9 },
  33580. -{ 0xC5CA, 0xC5CA, 0xC5CA },
  33581. -{ 0xC5CB, 0xC5CB, 0xC5CB },
  33582. -{ 0xC5CC, 0xC5CC, 0xC5CC },
  33583. -{ 0xC5CD, 0xC5CD, 0xC5CD },
  33584. -{ 0xC5CE, 0xC5CE, 0xC5CE },
  33585. -{ 0xC5CF, 0xC5CF, 0xC5CF },
  33586. -{ 0xC5D0, 0xC5D0, 0xC5D0 },
  33587. -{ 0xC5D1, 0xC5D1, 0xC5D1 },
  33588. -{ 0xC5D2, 0xC5D2, 0xC5D2 },
  33589. -{ 0xC5D3, 0xC5D3, 0xC5D3 },
  33590. -{ 0xC5D4, 0xC5D4, 0xC5D4 },
  33591. -{ 0xC5D5, 0xC5D5, 0xC5D5 },
  33592. -{ 0xC5D6, 0xC5D6, 0xC5D6 },
  33593. -{ 0xC5D7, 0xC5D7, 0xC5D7 },
  33594. -{ 0xC5D8, 0xC5D8, 0xC5D8 },
  33595. -{ 0xC5D9, 0xC5D9, 0xC5D9 },
  33596. -{ 0xC5DA, 0xC5DA, 0xC5DA },
  33597. -{ 0xC5DB, 0xC5DB, 0xC5DB },
  33598. -{ 0xC5DC, 0xC5DC, 0xC5DC },
  33599. -{ 0xC5DD, 0xC5DD, 0xC5DD },
  33600. -{ 0xC5DE, 0xC5DE, 0xC5DE },
  33601. -{ 0xC5DF, 0xC5DF, 0xC5DF },
  33602. -{ 0xC5E0, 0xC5E0, 0xC5E0 },
  33603. -{ 0xC5E1, 0xC5E1, 0xC5E1 },
  33604. -{ 0xC5E2, 0xC5E2, 0xC5E2 },
  33605. -{ 0xC5E3, 0xC5E3, 0xC5E3 },
  33606. -{ 0xC5E4, 0xC5E4, 0xC5E4 },
  33607. -{ 0xC5E5, 0xC5E5, 0xC5E5 },
  33608. -{ 0xC5E6, 0xC5E6, 0xC5E6 },
  33609. -{ 0xC5E7, 0xC5E7, 0xC5E7 },
  33610. -{ 0xC5E8, 0xC5E8, 0xC5E8 },
  33611. -{ 0xC5E9, 0xC5E9, 0xC5E9 },
  33612. -{ 0xC5EA, 0xC5EA, 0xC5EA },
  33613. -{ 0xC5EB, 0xC5EB, 0xC5EB },
  33614. -{ 0xC5EC, 0xC5EC, 0xC5EC },
  33615. -{ 0xC5ED, 0xC5ED, 0xC5ED },
  33616. -{ 0xC5EE, 0xC5EE, 0xC5EE },
  33617. -{ 0xC5EF, 0xC5EF, 0xC5EF },
  33618. -{ 0xC5F0, 0xC5F0, 0xC5F0 },
  33619. -{ 0xC5F1, 0xC5F1, 0xC5F1 },
  33620. -{ 0xC5F2, 0xC5F2, 0xC5F2 },
  33621. -{ 0xC5F3, 0xC5F3, 0xC5F3 },
  33622. -{ 0xC5F4, 0xC5F4, 0xC5F4 },
  33623. -{ 0xC5F5, 0xC5F5, 0xC5F5 },
  33624. -{ 0xC5F6, 0xC5F6, 0xC5F6 },
  33625. -{ 0xC5F7, 0xC5F7, 0xC5F7 },
  33626. -{ 0xC5F8, 0xC5F8, 0xC5F8 },
  33627. -{ 0xC5F9, 0xC5F9, 0xC5F9 },
  33628. -{ 0xC5FA, 0xC5FA, 0xC5FA },
  33629. -{ 0xC5FB, 0xC5FB, 0xC5FB },
  33630. -{ 0xC5FC, 0xC5FC, 0xC5FC },
  33631. -{ 0xC5FD, 0xC5FD, 0xC5FD },
  33632. -{ 0xC5FE, 0xC5FE, 0xC5FE },
  33633. -{ 0xC5FF, 0xC5FF, 0xC5FF },
  33634. -{ 0xC600, 0xC600, 0xC600 },
  33635. -{ 0xC601, 0xC601, 0xC601 },
  33636. -{ 0xC602, 0xC602, 0xC602 },
  33637. -{ 0xC603, 0xC603, 0xC603 },
  33638. -{ 0xC604, 0xC604, 0xC604 },
  33639. -{ 0xC605, 0xC605, 0xC605 },
  33640. -{ 0xC606, 0xC606, 0xC606 },
  33641. -{ 0xC607, 0xC607, 0xC607 },
  33642. -{ 0xC608, 0xC608, 0xC608 },
  33643. -{ 0xC609, 0xC609, 0xC609 },
  33644. -{ 0xC60A, 0xC60A, 0xC60A },
  33645. -{ 0xC60B, 0xC60B, 0xC60B },
  33646. -{ 0xC60C, 0xC60C, 0xC60C },
  33647. -{ 0xC60D, 0xC60D, 0xC60D },
  33648. -{ 0xC60E, 0xC60E, 0xC60E },
  33649. -{ 0xC60F, 0xC60F, 0xC60F },
  33650. -{ 0xC610, 0xC610, 0xC610 },
  33651. -{ 0xC611, 0xC611, 0xC611 },
  33652. -{ 0xC612, 0xC612, 0xC612 },
  33653. -{ 0xC613, 0xC613, 0xC613 },
  33654. -{ 0xC614, 0xC614, 0xC614 },
  33655. -{ 0xC615, 0xC615, 0xC615 },
  33656. -{ 0xC616, 0xC616, 0xC616 },
  33657. -{ 0xC617, 0xC617, 0xC617 },
  33658. -{ 0xC618, 0xC618, 0xC618 },
  33659. -{ 0xC619, 0xC619, 0xC619 },
  33660. -{ 0xC61A, 0xC61A, 0xC61A },
  33661. -{ 0xC61B, 0xC61B, 0xC61B },
  33662. -{ 0xC61C, 0xC61C, 0xC61C },
  33663. -{ 0xC61D, 0xC61D, 0xC61D },
  33664. -{ 0xC61E, 0xC61E, 0xC61E },
  33665. -{ 0xC61F, 0xC61F, 0xC61F },
  33666. -{ 0xC620, 0xC620, 0xC620 },
  33667. -{ 0xC621, 0xC621, 0xC621 },
  33668. -{ 0xC622, 0xC622, 0xC622 },
  33669. -{ 0xC623, 0xC623, 0xC623 },
  33670. -{ 0xC624, 0xC624, 0xC624 },
  33671. -{ 0xC625, 0xC625, 0xC625 },
  33672. -{ 0xC626, 0xC626, 0xC626 },
  33673. -{ 0xC627, 0xC627, 0xC627 },
  33674. -{ 0xC628, 0xC628, 0xC628 },
  33675. -{ 0xC629, 0xC629, 0xC629 },
  33676. -{ 0xC62A, 0xC62A, 0xC62A },
  33677. -{ 0xC62B, 0xC62B, 0xC62B },
  33678. -{ 0xC62C, 0xC62C, 0xC62C },
  33679. -{ 0xC62D, 0xC62D, 0xC62D },
  33680. -{ 0xC62E, 0xC62E, 0xC62E },
  33681. -{ 0xC62F, 0xC62F, 0xC62F },
  33682. -{ 0xC630, 0xC630, 0xC630 },
  33683. -{ 0xC631, 0xC631, 0xC631 },
  33684. -{ 0xC632, 0xC632, 0xC632 },
  33685. -{ 0xC633, 0xC633, 0xC633 },
  33686. -{ 0xC634, 0xC634, 0xC634 },
  33687. -{ 0xC635, 0xC635, 0xC635 },
  33688. -{ 0xC636, 0xC636, 0xC636 },
  33689. -{ 0xC637, 0xC637, 0xC637 },
  33690. -{ 0xC638, 0xC638, 0xC638 },
  33691. -{ 0xC639, 0xC639, 0xC639 },
  33692. -{ 0xC63A, 0xC63A, 0xC63A },
  33693. -{ 0xC63B, 0xC63B, 0xC63B },
  33694. -{ 0xC63C, 0xC63C, 0xC63C },
  33695. -{ 0xC63D, 0xC63D, 0xC63D },
  33696. -{ 0xC63E, 0xC63E, 0xC63E },
  33697. -{ 0xC63F, 0xC63F, 0xC63F },
  33698. -{ 0xC640, 0xC640, 0xC640 },
  33699. -{ 0xC641, 0xC641, 0xC641 },
  33700. -{ 0xC642, 0xC642, 0xC642 },
  33701. -{ 0xC643, 0xC643, 0xC643 },
  33702. -{ 0xC644, 0xC644, 0xC644 },
  33703. -{ 0xC645, 0xC645, 0xC645 },
  33704. -{ 0xC646, 0xC646, 0xC646 },
  33705. -{ 0xC647, 0xC647, 0xC647 },
  33706. -{ 0xC648, 0xC648, 0xC648 },
  33707. -{ 0xC649, 0xC649, 0xC649 },
  33708. -{ 0xC64A, 0xC64A, 0xC64A },
  33709. -{ 0xC64B, 0xC64B, 0xC64B },
  33710. -{ 0xC64C, 0xC64C, 0xC64C },
  33711. -{ 0xC64D, 0xC64D, 0xC64D },
  33712. -{ 0xC64E, 0xC64E, 0xC64E },
  33713. -{ 0xC64F, 0xC64F, 0xC64F },
  33714. -{ 0xC650, 0xC650, 0xC650 },
  33715. -{ 0xC651, 0xC651, 0xC651 },
  33716. -{ 0xC652, 0xC652, 0xC652 },
  33717. -{ 0xC653, 0xC653, 0xC653 },
  33718. -{ 0xC654, 0xC654, 0xC654 },
  33719. -{ 0xC655, 0xC655, 0xC655 },
  33720. -{ 0xC656, 0xC656, 0xC656 },
  33721. -{ 0xC657, 0xC657, 0xC657 },
  33722. -{ 0xC658, 0xC658, 0xC658 },
  33723. -{ 0xC659, 0xC659, 0xC659 },
  33724. -{ 0xC65A, 0xC65A, 0xC65A },
  33725. -{ 0xC65B, 0xC65B, 0xC65B },
  33726. -{ 0xC65C, 0xC65C, 0xC65C },
  33727. -{ 0xC65D, 0xC65D, 0xC65D },
  33728. -{ 0xC65E, 0xC65E, 0xC65E },
  33729. -{ 0xC65F, 0xC65F, 0xC65F },
  33730. -{ 0xC660, 0xC660, 0xC660 },
  33731. -{ 0xC661, 0xC661, 0xC661 },
  33732. -{ 0xC662, 0xC662, 0xC662 },
  33733. -{ 0xC663, 0xC663, 0xC663 },
  33734. -{ 0xC664, 0xC664, 0xC664 },
  33735. -{ 0xC665, 0xC665, 0xC665 },
  33736. -{ 0xC666, 0xC666, 0xC666 },
  33737. -{ 0xC667, 0xC667, 0xC667 },
  33738. -{ 0xC668, 0xC668, 0xC668 },
  33739. -{ 0xC669, 0xC669, 0xC669 },
  33740. -{ 0xC66A, 0xC66A, 0xC66A },
  33741. -{ 0xC66B, 0xC66B, 0xC66B },
  33742. -{ 0xC66C, 0xC66C, 0xC66C },
  33743. -{ 0xC66D, 0xC66D, 0xC66D },
  33744. -{ 0xC66E, 0xC66E, 0xC66E },
  33745. -{ 0xC66F, 0xC66F, 0xC66F },
  33746. -{ 0xC670, 0xC670, 0xC670 },
  33747. -{ 0xC671, 0xC671, 0xC671 },
  33748. -{ 0xC672, 0xC672, 0xC672 },
  33749. -{ 0xC673, 0xC673, 0xC673 },
  33750. -{ 0xC674, 0xC674, 0xC674 },
  33751. -{ 0xC675, 0xC675, 0xC675 },
  33752. -{ 0xC676, 0xC676, 0xC676 },
  33753. -{ 0xC677, 0xC677, 0xC677 },
  33754. -{ 0xC678, 0xC678, 0xC678 },
  33755. -{ 0xC679, 0xC679, 0xC679 },
  33756. -{ 0xC67A, 0xC67A, 0xC67A },
  33757. -{ 0xC67B, 0xC67B, 0xC67B },
  33758. -{ 0xC67C, 0xC67C, 0xC67C },
  33759. -{ 0xC67D, 0xC67D, 0xC67D },
  33760. -{ 0xC67E, 0xC67E, 0xC67E },
  33761. -{ 0xC67F, 0xC67F, 0xC67F },
  33762. -{ 0xC680, 0xC680, 0xC680 },
  33763. -{ 0xC681, 0xC681, 0xC681 },
  33764. -{ 0xC682, 0xC682, 0xC682 },
  33765. -{ 0xC683, 0xC683, 0xC683 },
  33766. -{ 0xC684, 0xC684, 0xC684 },
  33767. -{ 0xC685, 0xC685, 0xC685 },
  33768. -{ 0xC686, 0xC686, 0xC686 },
  33769. -{ 0xC687, 0xC687, 0xC687 },
  33770. -{ 0xC688, 0xC688, 0xC688 },
  33771. -{ 0xC689, 0xC689, 0xC689 },
  33772. -{ 0xC68A, 0xC68A, 0xC68A },
  33773. -{ 0xC68B, 0xC68B, 0xC68B },
  33774. -{ 0xC68C, 0xC68C, 0xC68C },
  33775. -{ 0xC68D, 0xC68D, 0xC68D },
  33776. -{ 0xC68E, 0xC68E, 0xC68E },
  33777. -{ 0xC68F, 0xC68F, 0xC68F },
  33778. -{ 0xC690, 0xC690, 0xC690 },
  33779. -{ 0xC691, 0xC691, 0xC691 },
  33780. -{ 0xC692, 0xC692, 0xC692 },
  33781. -{ 0xC693, 0xC693, 0xC693 },
  33782. -{ 0xC694, 0xC694, 0xC694 },
  33783. -{ 0xC695, 0xC695, 0xC695 },
  33784. -{ 0xC696, 0xC696, 0xC696 },
  33785. -{ 0xC697, 0xC697, 0xC697 },
  33786. -{ 0xC698, 0xC698, 0xC698 },
  33787. -{ 0xC699, 0xC699, 0xC699 },
  33788. -{ 0xC69A, 0xC69A, 0xC69A },
  33789. -{ 0xC69B, 0xC69B, 0xC69B },
  33790. -{ 0xC69C, 0xC69C, 0xC69C },
  33791. -{ 0xC69D, 0xC69D, 0xC69D },
  33792. -{ 0xC69E, 0xC69E, 0xC69E },
  33793. -{ 0xC69F, 0xC69F, 0xC69F },
  33794. -{ 0xC6A0, 0xC6A0, 0xC6A0 },
  33795. -{ 0xC6A1, 0xC6A1, 0xC6A1 },
  33796. -{ 0xC6A2, 0xC6A2, 0xC6A2 },
  33797. -{ 0xC6A3, 0xC6A3, 0xC6A3 },
  33798. -{ 0xC6A4, 0xC6A4, 0xC6A4 },
  33799. -{ 0xC6A5, 0xC6A5, 0xC6A5 },
  33800. -{ 0xC6A6, 0xC6A6, 0xC6A6 },
  33801. -{ 0xC6A7, 0xC6A7, 0xC6A7 },
  33802. -{ 0xC6A8, 0xC6A8, 0xC6A8 },
  33803. -{ 0xC6A9, 0xC6A9, 0xC6A9 },
  33804. -{ 0xC6AA, 0xC6AA, 0xC6AA },
  33805. -{ 0xC6AB, 0xC6AB, 0xC6AB },
  33806. -{ 0xC6AC, 0xC6AC, 0xC6AC },
  33807. -{ 0xC6AD, 0xC6AD, 0xC6AD },
  33808. -{ 0xC6AE, 0xC6AE, 0xC6AE },
  33809. -{ 0xC6AF, 0xC6AF, 0xC6AF },
  33810. -{ 0xC6B0, 0xC6B0, 0xC6B0 },
  33811. -{ 0xC6B1, 0xC6B1, 0xC6B1 },
  33812. -{ 0xC6B2, 0xC6B2, 0xC6B2 },
  33813. -{ 0xC6B3, 0xC6B3, 0xC6B3 },
  33814. -{ 0xC6B4, 0xC6B4, 0xC6B4 },
  33815. -{ 0xC6B5, 0xC6B5, 0xC6B5 },
  33816. -{ 0xC6B6, 0xC6B6, 0xC6B6 },
  33817. -{ 0xC6B7, 0xC6B7, 0xC6B7 },
  33818. -{ 0xC6B8, 0xC6B8, 0xC6B8 },
  33819. -{ 0xC6B9, 0xC6B9, 0xC6B9 },
  33820. -{ 0xC6BA, 0xC6BA, 0xC6BA },
  33821. -{ 0xC6BB, 0xC6BB, 0xC6BB },
  33822. -{ 0xC6BC, 0xC6BC, 0xC6BC },
  33823. -{ 0xC6BD, 0xC6BD, 0xC6BD },
  33824. -{ 0xC6BE, 0xC6BE, 0xC6BE },
  33825. -{ 0xC6BF, 0xC6BF, 0xC6BF },
  33826. -{ 0xC6C0, 0xC6C0, 0xC6C0 },
  33827. -{ 0xC6C1, 0xC6C1, 0xC6C1 },
  33828. -{ 0xC6C2, 0xC6C2, 0xC6C2 },
  33829. -{ 0xC6C3, 0xC6C3, 0xC6C3 },
  33830. -{ 0xC6C4, 0xC6C4, 0xC6C4 },
  33831. -{ 0xC6C5, 0xC6C5, 0xC6C5 },
  33832. -{ 0xC6C6, 0xC6C6, 0xC6C6 },
  33833. -{ 0xC6C7, 0xC6C7, 0xC6C7 },
  33834. -{ 0xC6C8, 0xC6C8, 0xC6C8 },
  33835. -{ 0xC6C9, 0xC6C9, 0xC6C9 },
  33836. -{ 0xC6CA, 0xC6CA, 0xC6CA },
  33837. -{ 0xC6CB, 0xC6CB, 0xC6CB },
  33838. -{ 0xC6CC, 0xC6CC, 0xC6CC },
  33839. -{ 0xC6CD, 0xC6CD, 0xC6CD },
  33840. -{ 0xC6CE, 0xC6CE, 0xC6CE },
  33841. -{ 0xC6CF, 0xC6CF, 0xC6CF },
  33842. -{ 0xC6D0, 0xC6D0, 0xC6D0 },
  33843. -{ 0xC6D1, 0xC6D1, 0xC6D1 },
  33844. -{ 0xC6D2, 0xC6D2, 0xC6D2 },
  33845. -{ 0xC6D3, 0xC6D3, 0xC6D3 },
  33846. -{ 0xC6D4, 0xC6D4, 0xC6D4 },
  33847. -{ 0xC6D5, 0xC6D5, 0xC6D5 },
  33848. -{ 0xC6D6, 0xC6D6, 0xC6D6 },
  33849. -{ 0xC6D7, 0xC6D7, 0xC6D7 },
  33850. -{ 0xC6D8, 0xC6D8, 0xC6D8 },
  33851. -{ 0xC6D9, 0xC6D9, 0xC6D9 },
  33852. -{ 0xC6DA, 0xC6DA, 0xC6DA },
  33853. -{ 0xC6DB, 0xC6DB, 0xC6DB },
  33854. -{ 0xC6DC, 0xC6DC, 0xC6DC },
  33855. -{ 0xC6DD, 0xC6DD, 0xC6DD },
  33856. -{ 0xC6DE, 0xC6DE, 0xC6DE },
  33857. -{ 0xC6DF, 0xC6DF, 0xC6DF },
  33858. -{ 0xC6E0, 0xC6E0, 0xC6E0 },
  33859. -{ 0xC6E1, 0xC6E1, 0xC6E1 },
  33860. -{ 0xC6E2, 0xC6E2, 0xC6E2 },
  33861. -{ 0xC6E3, 0xC6E3, 0xC6E3 },
  33862. -{ 0xC6E4, 0xC6E4, 0xC6E4 },
  33863. -{ 0xC6E5, 0xC6E5, 0xC6E5 },
  33864. -{ 0xC6E6, 0xC6E6, 0xC6E6 },
  33865. -{ 0xC6E7, 0xC6E7, 0xC6E7 },
  33866. -{ 0xC6E8, 0xC6E8, 0xC6E8 },
  33867. -{ 0xC6E9, 0xC6E9, 0xC6E9 },
  33868. -{ 0xC6EA, 0xC6EA, 0xC6EA },
  33869. -{ 0xC6EB, 0xC6EB, 0xC6EB },
  33870. -{ 0xC6EC, 0xC6EC, 0xC6EC },
  33871. -{ 0xC6ED, 0xC6ED, 0xC6ED },
  33872. -{ 0xC6EE, 0xC6EE, 0xC6EE },
  33873. -{ 0xC6EF, 0xC6EF, 0xC6EF },
  33874. -{ 0xC6F0, 0xC6F0, 0xC6F0 },
  33875. -{ 0xC6F1, 0xC6F1, 0xC6F1 },
  33876. -{ 0xC6F2, 0xC6F2, 0xC6F2 },
  33877. -{ 0xC6F3, 0xC6F3, 0xC6F3 },
  33878. -{ 0xC6F4, 0xC6F4, 0xC6F4 },
  33879. -{ 0xC6F5, 0xC6F5, 0xC6F5 },
  33880. -{ 0xC6F6, 0xC6F6, 0xC6F6 },
  33881. -{ 0xC6F7, 0xC6F7, 0xC6F7 },
  33882. -{ 0xC6F8, 0xC6F8, 0xC6F8 },
  33883. -{ 0xC6F9, 0xC6F9, 0xC6F9 },
  33884. -{ 0xC6FA, 0xC6FA, 0xC6FA },
  33885. -{ 0xC6FB, 0xC6FB, 0xC6FB },
  33886. -{ 0xC6FC, 0xC6FC, 0xC6FC },
  33887. -{ 0xC6FD, 0xC6FD, 0xC6FD },
  33888. -{ 0xC6FE, 0xC6FE, 0xC6FE },
  33889. -{ 0xC6FF, 0xC6FF, 0xC6FF },
  33890. -{ 0xC700, 0xC700, 0xC700 },
  33891. -{ 0xC701, 0xC701, 0xC701 },
  33892. -{ 0xC702, 0xC702, 0xC702 },
  33893. -{ 0xC703, 0xC703, 0xC703 },
  33894. -{ 0xC704, 0xC704, 0xC704 },
  33895. -{ 0xC705, 0xC705, 0xC705 },
  33896. -{ 0xC706, 0xC706, 0xC706 },
  33897. -{ 0xC707, 0xC707, 0xC707 },
  33898. -{ 0xC708, 0xC708, 0xC708 },
  33899. -{ 0xC709, 0xC709, 0xC709 },
  33900. -{ 0xC70A, 0xC70A, 0xC70A },
  33901. -{ 0xC70B, 0xC70B, 0xC70B },
  33902. -{ 0xC70C, 0xC70C, 0xC70C },
  33903. -{ 0xC70D, 0xC70D, 0xC70D },
  33904. -{ 0xC70E, 0xC70E, 0xC70E },
  33905. -{ 0xC70F, 0xC70F, 0xC70F },
  33906. -{ 0xC710, 0xC710, 0xC710 },
  33907. -{ 0xC711, 0xC711, 0xC711 },
  33908. -{ 0xC712, 0xC712, 0xC712 },
  33909. -{ 0xC713, 0xC713, 0xC713 },
  33910. -{ 0xC714, 0xC714, 0xC714 },
  33911. -{ 0xC715, 0xC715, 0xC715 },
  33912. -{ 0xC716, 0xC716, 0xC716 },
  33913. -{ 0xC717, 0xC717, 0xC717 },
  33914. -{ 0xC718, 0xC718, 0xC718 },
  33915. -{ 0xC719, 0xC719, 0xC719 },
  33916. -{ 0xC71A, 0xC71A, 0xC71A },
  33917. -{ 0xC71B, 0xC71B, 0xC71B },
  33918. -{ 0xC71C, 0xC71C, 0xC71C },
  33919. -{ 0xC71D, 0xC71D, 0xC71D },
  33920. -{ 0xC71E, 0xC71E, 0xC71E },
  33921. -{ 0xC71F, 0xC71F, 0xC71F },
  33922. -{ 0xC720, 0xC720, 0xC720 },
  33923. -{ 0xC721, 0xC721, 0xC721 },
  33924. -{ 0xC722, 0xC722, 0xC722 },
  33925. -{ 0xC723, 0xC723, 0xC723 },
  33926. -{ 0xC724, 0xC724, 0xC724 },
  33927. -{ 0xC725, 0xC725, 0xC725 },
  33928. -{ 0xC726, 0xC726, 0xC726 },
  33929. -{ 0xC727, 0xC727, 0xC727 },
  33930. -{ 0xC728, 0xC728, 0xC728 },
  33931. -{ 0xC729, 0xC729, 0xC729 },
  33932. -{ 0xC72A, 0xC72A, 0xC72A },
  33933. -{ 0xC72B, 0xC72B, 0xC72B },
  33934. -{ 0xC72C, 0xC72C, 0xC72C },
  33935. -{ 0xC72D, 0xC72D, 0xC72D },
  33936. -{ 0xC72E, 0xC72E, 0xC72E },
  33937. -{ 0xC72F, 0xC72F, 0xC72F },
  33938. -{ 0xC730, 0xC730, 0xC730 },
  33939. -{ 0xC731, 0xC731, 0xC731 },
  33940. -{ 0xC732, 0xC732, 0xC732 },
  33941. -{ 0xC733, 0xC733, 0xC733 },
  33942. -{ 0xC734, 0xC734, 0xC734 },
  33943. -{ 0xC735, 0xC735, 0xC735 },
  33944. -{ 0xC736, 0xC736, 0xC736 },
  33945. -{ 0xC737, 0xC737, 0xC737 },
  33946. -{ 0xC738, 0xC738, 0xC738 },
  33947. -{ 0xC739, 0xC739, 0xC739 },
  33948. -{ 0xC73A, 0xC73A, 0xC73A },
  33949. -{ 0xC73B, 0xC73B, 0xC73B },
  33950. -{ 0xC73C, 0xC73C, 0xC73C },
  33951. -{ 0xC73D, 0xC73D, 0xC73D },
  33952. -{ 0xC73E, 0xC73E, 0xC73E },
  33953. -{ 0xC73F, 0xC73F, 0xC73F },
  33954. -{ 0xC740, 0xC740, 0xC740 },
  33955. -{ 0xC741, 0xC741, 0xC741 },
  33956. -{ 0xC742, 0xC742, 0xC742 },
  33957. -{ 0xC743, 0xC743, 0xC743 },
  33958. -{ 0xC744, 0xC744, 0xC744 },
  33959. -{ 0xC745, 0xC745, 0xC745 },
  33960. -{ 0xC746, 0xC746, 0xC746 },
  33961. -{ 0xC747, 0xC747, 0xC747 },
  33962. -{ 0xC748, 0xC748, 0xC748 },
  33963. -{ 0xC749, 0xC749, 0xC749 },
  33964. -{ 0xC74A, 0xC74A, 0xC74A },
  33965. -{ 0xC74B, 0xC74B, 0xC74B },
  33966. -{ 0xC74C, 0xC74C, 0xC74C },
  33967. -{ 0xC74D, 0xC74D, 0xC74D },
  33968. -{ 0xC74E, 0xC74E, 0xC74E },
  33969. -{ 0xC74F, 0xC74F, 0xC74F },
  33970. -{ 0xC750, 0xC750, 0xC750 },
  33971. -{ 0xC751, 0xC751, 0xC751 },
  33972. -{ 0xC752, 0xC752, 0xC752 },
  33973. -{ 0xC753, 0xC753, 0xC753 },
  33974. -{ 0xC754, 0xC754, 0xC754 },
  33975. -{ 0xC755, 0xC755, 0xC755 },
  33976. -{ 0xC756, 0xC756, 0xC756 },
  33977. -{ 0xC757, 0xC757, 0xC757 },
  33978. -{ 0xC758, 0xC758, 0xC758 },
  33979. -{ 0xC759, 0xC759, 0xC759 },
  33980. -{ 0xC75A, 0xC75A, 0xC75A },
  33981. -{ 0xC75B, 0xC75B, 0xC75B },
  33982. -{ 0xC75C, 0xC75C, 0xC75C },
  33983. -{ 0xC75D, 0xC75D, 0xC75D },
  33984. -{ 0xC75E, 0xC75E, 0xC75E },
  33985. -{ 0xC75F, 0xC75F, 0xC75F },
  33986. -{ 0xC760, 0xC760, 0xC760 },
  33987. -{ 0xC761, 0xC761, 0xC761 },
  33988. -{ 0xC762, 0xC762, 0xC762 },
  33989. -{ 0xC763, 0xC763, 0xC763 },
  33990. -{ 0xC764, 0xC764, 0xC764 },
  33991. -{ 0xC765, 0xC765, 0xC765 },
  33992. -{ 0xC766, 0xC766, 0xC766 },
  33993. -{ 0xC767, 0xC767, 0xC767 },
  33994. -{ 0xC768, 0xC768, 0xC768 },
  33995. -{ 0xC769, 0xC769, 0xC769 },
  33996. -{ 0xC76A, 0xC76A, 0xC76A },
  33997. -{ 0xC76B, 0xC76B, 0xC76B },
  33998. -{ 0xC76C, 0xC76C, 0xC76C },
  33999. -{ 0xC76D, 0xC76D, 0xC76D },
  34000. -{ 0xC76E, 0xC76E, 0xC76E },
  34001. -{ 0xC76F, 0xC76F, 0xC76F },
  34002. -{ 0xC770, 0xC770, 0xC770 },
  34003. -{ 0xC771, 0xC771, 0xC771 },
  34004. -{ 0xC772, 0xC772, 0xC772 },
  34005. -{ 0xC773, 0xC773, 0xC773 },
  34006. -{ 0xC774, 0xC774, 0xC774 },
  34007. -{ 0xC775, 0xC775, 0xC775 },
  34008. -{ 0xC776, 0xC776, 0xC776 },
  34009. -{ 0xC777, 0xC777, 0xC777 },
  34010. -{ 0xC778, 0xC778, 0xC778 },
  34011. -{ 0xC779, 0xC779, 0xC779 },
  34012. -{ 0xC77A, 0xC77A, 0xC77A },
  34013. -{ 0xC77B, 0xC77B, 0xC77B },
  34014. -{ 0xC77C, 0xC77C, 0xC77C },
  34015. -{ 0xC77D, 0xC77D, 0xC77D },
  34016. -{ 0xC77E, 0xC77E, 0xC77E },
  34017. -{ 0xC77F, 0xC77F, 0xC77F },
  34018. -{ 0xC780, 0xC780, 0xC780 },
  34019. -{ 0xC781, 0xC781, 0xC781 },
  34020. -{ 0xC782, 0xC782, 0xC782 },
  34021. -{ 0xC783, 0xC783, 0xC783 },
  34022. -{ 0xC784, 0xC784, 0xC784 },
  34023. -{ 0xC785, 0xC785, 0xC785 },
  34024. -{ 0xC786, 0xC786, 0xC786 },
  34025. -{ 0xC787, 0xC787, 0xC787 },
  34026. -{ 0xC788, 0xC788, 0xC788 },
  34027. -{ 0xC789, 0xC789, 0xC789 },
  34028. -{ 0xC78A, 0xC78A, 0xC78A },
  34029. -{ 0xC78B, 0xC78B, 0xC78B },
  34030. -{ 0xC78C, 0xC78C, 0xC78C },
  34031. -{ 0xC78D, 0xC78D, 0xC78D },
  34032. -{ 0xC78E, 0xC78E, 0xC78E },
  34033. -{ 0xC78F, 0xC78F, 0xC78F },
  34034. -{ 0xC790, 0xC790, 0xC790 },
  34035. -{ 0xC791, 0xC791, 0xC791 },
  34036. -{ 0xC792, 0xC792, 0xC792 },
  34037. -{ 0xC793, 0xC793, 0xC793 },
  34038. -{ 0xC794, 0xC794, 0xC794 },
  34039. -{ 0xC795, 0xC795, 0xC795 },
  34040. -{ 0xC796, 0xC796, 0xC796 },
  34041. -{ 0xC797, 0xC797, 0xC797 },
  34042. -{ 0xC798, 0xC798, 0xC798 },
  34043. -{ 0xC799, 0xC799, 0xC799 },
  34044. -{ 0xC79A, 0xC79A, 0xC79A },
  34045. -{ 0xC79B, 0xC79B, 0xC79B },
  34046. -{ 0xC79C, 0xC79C, 0xC79C },
  34047. -{ 0xC79D, 0xC79D, 0xC79D },
  34048. -{ 0xC79E, 0xC79E, 0xC79E },
  34049. -{ 0xC79F, 0xC79F, 0xC79F },
  34050. -{ 0xC7A0, 0xC7A0, 0xC7A0 },
  34051. -{ 0xC7A1, 0xC7A1, 0xC7A1 },
  34052. -{ 0xC7A2, 0xC7A2, 0xC7A2 },
  34053. -{ 0xC7A3, 0xC7A3, 0xC7A3 },
  34054. -{ 0xC7A4, 0xC7A4, 0xC7A4 },
  34055. -{ 0xC7A5, 0xC7A5, 0xC7A5 },
  34056. -{ 0xC7A6, 0xC7A6, 0xC7A6 },
  34057. -{ 0xC7A7, 0xC7A7, 0xC7A7 },
  34058. -{ 0xC7A8, 0xC7A8, 0xC7A8 },
  34059. -{ 0xC7A9, 0xC7A9, 0xC7A9 },
  34060. -{ 0xC7AA, 0xC7AA, 0xC7AA },
  34061. -{ 0xC7AB, 0xC7AB, 0xC7AB },
  34062. -{ 0xC7AC, 0xC7AC, 0xC7AC },
  34063. -{ 0xC7AD, 0xC7AD, 0xC7AD },
  34064. -{ 0xC7AE, 0xC7AE, 0xC7AE },
  34065. -{ 0xC7AF, 0xC7AF, 0xC7AF },
  34066. -{ 0xC7B0, 0xC7B0, 0xC7B0 },
  34067. -{ 0xC7B1, 0xC7B1, 0xC7B1 },
  34068. -{ 0xC7B2, 0xC7B2, 0xC7B2 },
  34069. -{ 0xC7B3, 0xC7B3, 0xC7B3 },
  34070. -{ 0xC7B4, 0xC7B4, 0xC7B4 },
  34071. -{ 0xC7B5, 0xC7B5, 0xC7B5 },
  34072. -{ 0xC7B6, 0xC7B6, 0xC7B6 },
  34073. -{ 0xC7B7, 0xC7B7, 0xC7B7 },
  34074. -{ 0xC7B8, 0xC7B8, 0xC7B8 },
  34075. -{ 0xC7B9, 0xC7B9, 0xC7B9 },
  34076. -{ 0xC7BA, 0xC7BA, 0xC7BA },
  34077. -{ 0xC7BB, 0xC7BB, 0xC7BB },
  34078. -{ 0xC7BC, 0xC7BC, 0xC7BC },
  34079. -{ 0xC7BD, 0xC7BD, 0xC7BD },
  34080. -{ 0xC7BE, 0xC7BE, 0xC7BE },
  34081. -{ 0xC7BF, 0xC7BF, 0xC7BF },
  34082. -{ 0xC7C0, 0xC7C0, 0xC7C0 },
  34083. -{ 0xC7C1, 0xC7C1, 0xC7C1 },
  34084. -{ 0xC7C2, 0xC7C2, 0xC7C2 },
  34085. -{ 0xC7C3, 0xC7C3, 0xC7C3 },
  34086. -{ 0xC7C4, 0xC7C4, 0xC7C4 },
  34087. -{ 0xC7C5, 0xC7C5, 0xC7C5 },
  34088. -{ 0xC7C6, 0xC7C6, 0xC7C6 },
  34089. -{ 0xC7C7, 0xC7C7, 0xC7C7 },
  34090. -{ 0xC7C8, 0xC7C8, 0xC7C8 },
  34091. -{ 0xC7C9, 0xC7C9, 0xC7C9 },
  34092. -{ 0xC7CA, 0xC7CA, 0xC7CA },
  34093. -{ 0xC7CB, 0xC7CB, 0xC7CB },
  34094. -{ 0xC7CC, 0xC7CC, 0xC7CC },
  34095. -{ 0xC7CD, 0xC7CD, 0xC7CD },
  34096. -{ 0xC7CE, 0xC7CE, 0xC7CE },
  34097. -{ 0xC7CF, 0xC7CF, 0xC7CF },
  34098. -{ 0xC7D0, 0xC7D0, 0xC7D0 },
  34099. -{ 0xC7D1, 0xC7D1, 0xC7D1 },
  34100. -{ 0xC7D2, 0xC7D2, 0xC7D2 },
  34101. -{ 0xC7D3, 0xC7D3, 0xC7D3 },
  34102. -{ 0xC7D4, 0xC7D4, 0xC7D4 },
  34103. -{ 0xC7D5, 0xC7D5, 0xC7D5 },
  34104. -{ 0xC7D6, 0xC7D6, 0xC7D6 },
  34105. -{ 0xC7D7, 0xC7D7, 0xC7D7 },
  34106. -{ 0xC7D8, 0xC7D8, 0xC7D8 },
  34107. -{ 0xC7D9, 0xC7D9, 0xC7D9 },
  34108. -{ 0xC7DA, 0xC7DA, 0xC7DA },
  34109. -{ 0xC7DB, 0xC7DB, 0xC7DB },
  34110. -{ 0xC7DC, 0xC7DC, 0xC7DC },
  34111. -{ 0xC7DD, 0xC7DD, 0xC7DD },
  34112. -{ 0xC7DE, 0xC7DE, 0xC7DE },
  34113. -{ 0xC7DF, 0xC7DF, 0xC7DF },
  34114. -{ 0xC7E0, 0xC7E0, 0xC7E0 },
  34115. -{ 0xC7E1, 0xC7E1, 0xC7E1 },
  34116. -{ 0xC7E2, 0xC7E2, 0xC7E2 },
  34117. -{ 0xC7E3, 0xC7E3, 0xC7E3 },
  34118. -{ 0xC7E4, 0xC7E4, 0xC7E4 },
  34119. -{ 0xC7E5, 0xC7E5, 0xC7E5 },
  34120. -{ 0xC7E6, 0xC7E6, 0xC7E6 },
  34121. -{ 0xC7E7, 0xC7E7, 0xC7E7 },
  34122. -{ 0xC7E8, 0xC7E8, 0xC7E8 },
  34123. -{ 0xC7E9, 0xC7E9, 0xC7E9 },
  34124. -{ 0xC7EA, 0xC7EA, 0xC7EA },
  34125. -{ 0xC7EB, 0xC7EB, 0xC7EB },
  34126. -{ 0xC7EC, 0xC7EC, 0xC7EC },
  34127. -{ 0xC7ED, 0xC7ED, 0xC7ED },
  34128. -{ 0xC7EE, 0xC7EE, 0xC7EE },
  34129. -{ 0xC7EF, 0xC7EF, 0xC7EF },
  34130. -{ 0xC7F0, 0xC7F0, 0xC7F0 },
  34131. -{ 0xC7F1, 0xC7F1, 0xC7F1 },
  34132. -{ 0xC7F2, 0xC7F2, 0xC7F2 },
  34133. -{ 0xC7F3, 0xC7F3, 0xC7F3 },
  34134. -{ 0xC7F4, 0xC7F4, 0xC7F4 },
  34135. -{ 0xC7F5, 0xC7F5, 0xC7F5 },
  34136. -{ 0xC7F6, 0xC7F6, 0xC7F6 },
  34137. -{ 0xC7F7, 0xC7F7, 0xC7F7 },
  34138. -{ 0xC7F8, 0xC7F8, 0xC7F8 },
  34139. -{ 0xC7F9, 0xC7F9, 0xC7F9 },
  34140. -{ 0xC7FA, 0xC7FA, 0xC7FA },
  34141. -{ 0xC7FB, 0xC7FB, 0xC7FB },
  34142. -{ 0xC7FC, 0xC7FC, 0xC7FC },
  34143. -{ 0xC7FD, 0xC7FD, 0xC7FD },
  34144. -{ 0xC7FE, 0xC7FE, 0xC7FE },
  34145. -{ 0xC7FF, 0xC7FF, 0xC7FF },
  34146. -{ 0xC800, 0xC800, 0xC800 },
  34147. -{ 0xC801, 0xC801, 0xC801 },
  34148. -{ 0xC802, 0xC802, 0xC802 },
  34149. -{ 0xC803, 0xC803, 0xC803 },
  34150. -{ 0xC804, 0xC804, 0xC804 },
  34151. -{ 0xC805, 0xC805, 0xC805 },
  34152. -{ 0xC806, 0xC806, 0xC806 },
  34153. -{ 0xC807, 0xC807, 0xC807 },
  34154. -{ 0xC808, 0xC808, 0xC808 },
  34155. -{ 0xC809, 0xC809, 0xC809 },
  34156. -{ 0xC80A, 0xC80A, 0xC80A },
  34157. -{ 0xC80B, 0xC80B, 0xC80B },
  34158. -{ 0xC80C, 0xC80C, 0xC80C },
  34159. -{ 0xC80D, 0xC80D, 0xC80D },
  34160. -{ 0xC80E, 0xC80E, 0xC80E },
  34161. -{ 0xC80F, 0xC80F, 0xC80F },
  34162. -{ 0xC810, 0xC810, 0xC810 },
  34163. -{ 0xC811, 0xC811, 0xC811 },
  34164. -{ 0xC812, 0xC812, 0xC812 },
  34165. -{ 0xC813, 0xC813, 0xC813 },
  34166. -{ 0xC814, 0xC814, 0xC814 },
  34167. -{ 0xC815, 0xC815, 0xC815 },
  34168. -{ 0xC816, 0xC816, 0xC816 },
  34169. -{ 0xC817, 0xC817, 0xC817 },
  34170. -{ 0xC818, 0xC818, 0xC818 },
  34171. -{ 0xC819, 0xC819, 0xC819 },
  34172. -{ 0xC81A, 0xC81A, 0xC81A },
  34173. -{ 0xC81B, 0xC81B, 0xC81B },
  34174. -{ 0xC81C, 0xC81C, 0xC81C },
  34175. -{ 0xC81D, 0xC81D, 0xC81D },
  34176. -{ 0xC81E, 0xC81E, 0xC81E },
  34177. -{ 0xC81F, 0xC81F, 0xC81F },
  34178. -{ 0xC820, 0xC820, 0xC820 },
  34179. -{ 0xC821, 0xC821, 0xC821 },
  34180. -{ 0xC822, 0xC822, 0xC822 },
  34181. -{ 0xC823, 0xC823, 0xC823 },
  34182. -{ 0xC824, 0xC824, 0xC824 },
  34183. -{ 0xC825, 0xC825, 0xC825 },
  34184. -{ 0xC826, 0xC826, 0xC826 },
  34185. -{ 0xC827, 0xC827, 0xC827 },
  34186. -{ 0xC828, 0xC828, 0xC828 },
  34187. -{ 0xC829, 0xC829, 0xC829 },
  34188. -{ 0xC82A, 0xC82A, 0xC82A },
  34189. -{ 0xC82B, 0xC82B, 0xC82B },
  34190. -{ 0xC82C, 0xC82C, 0xC82C },
  34191. -{ 0xC82D, 0xC82D, 0xC82D },
  34192. -{ 0xC82E, 0xC82E, 0xC82E },
  34193. -{ 0xC82F, 0xC82F, 0xC82F },
  34194. -{ 0xC830, 0xC830, 0xC830 },
  34195. -{ 0xC831, 0xC831, 0xC831 },
  34196. -{ 0xC832, 0xC832, 0xC832 },
  34197. -{ 0xC833, 0xC833, 0xC833 },
  34198. -{ 0xC834, 0xC834, 0xC834 },
  34199. -{ 0xC835, 0xC835, 0xC835 },
  34200. -{ 0xC836, 0xC836, 0xC836 },
  34201. -{ 0xC837, 0xC837, 0xC837 },
  34202. -{ 0xC838, 0xC838, 0xC838 },
  34203. -{ 0xC839, 0xC839, 0xC839 },
  34204. -{ 0xC83A, 0xC83A, 0xC83A },
  34205. -{ 0xC83B, 0xC83B, 0xC83B },
  34206. -{ 0xC83C, 0xC83C, 0xC83C },
  34207. -{ 0xC83D, 0xC83D, 0xC83D },
  34208. -{ 0xC83E, 0xC83E, 0xC83E },
  34209. -{ 0xC83F, 0xC83F, 0xC83F },
  34210. -{ 0xC840, 0xC840, 0xC840 },
  34211. -{ 0xC841, 0xC841, 0xC841 },
  34212. -{ 0xC842, 0xC842, 0xC842 },
  34213. -{ 0xC843, 0xC843, 0xC843 },
  34214. -{ 0xC844, 0xC844, 0xC844 },
  34215. -{ 0xC845, 0xC845, 0xC845 },
  34216. -{ 0xC846, 0xC846, 0xC846 },
  34217. -{ 0xC847, 0xC847, 0xC847 },
  34218. -{ 0xC848, 0xC848, 0xC848 },
  34219. -{ 0xC849, 0xC849, 0xC849 },
  34220. -{ 0xC84A, 0xC84A, 0xC84A },
  34221. -{ 0xC84B, 0xC84B, 0xC84B },
  34222. -{ 0xC84C, 0xC84C, 0xC84C },
  34223. -{ 0xC84D, 0xC84D, 0xC84D },
  34224. -{ 0xC84E, 0xC84E, 0xC84E },
  34225. -{ 0xC84F, 0xC84F, 0xC84F },
  34226. -{ 0xC850, 0xC850, 0xC850 },
  34227. -{ 0xC851, 0xC851, 0xC851 },
  34228. -{ 0xC852, 0xC852, 0xC852 },
  34229. -{ 0xC853, 0xC853, 0xC853 },
  34230. -{ 0xC854, 0xC854, 0xC854 },
  34231. -{ 0xC855, 0xC855, 0xC855 },
  34232. -{ 0xC856, 0xC856, 0xC856 },
  34233. -{ 0xC857, 0xC857, 0xC857 },
  34234. -{ 0xC858, 0xC858, 0xC858 },
  34235. -{ 0xC859, 0xC859, 0xC859 },
  34236. -{ 0xC85A, 0xC85A, 0xC85A },
  34237. -{ 0xC85B, 0xC85B, 0xC85B },
  34238. -{ 0xC85C, 0xC85C, 0xC85C },
  34239. -{ 0xC85D, 0xC85D, 0xC85D },
  34240. -{ 0xC85E, 0xC85E, 0xC85E },
  34241. -{ 0xC85F, 0xC85F, 0xC85F },
  34242. -{ 0xC860, 0xC860, 0xC860 },
  34243. -{ 0xC861, 0xC861, 0xC861 },
  34244. -{ 0xC862, 0xC862, 0xC862 },
  34245. -{ 0xC863, 0xC863, 0xC863 },
  34246. -{ 0xC864, 0xC864, 0xC864 },
  34247. -{ 0xC865, 0xC865, 0xC865 },
  34248. -{ 0xC866, 0xC866, 0xC866 },
  34249. -{ 0xC867, 0xC867, 0xC867 },
  34250. -{ 0xC868, 0xC868, 0xC868 },
  34251. -{ 0xC869, 0xC869, 0xC869 },
  34252. -{ 0xC86A, 0xC86A, 0xC86A },
  34253. -{ 0xC86B, 0xC86B, 0xC86B },
  34254. -{ 0xC86C, 0xC86C, 0xC86C },
  34255. -{ 0xC86D, 0xC86D, 0xC86D },
  34256. -{ 0xC86E, 0xC86E, 0xC86E },
  34257. -{ 0xC86F, 0xC86F, 0xC86F },
  34258. -{ 0xC870, 0xC870, 0xC870 },
  34259. -{ 0xC871, 0xC871, 0xC871 },
  34260. -{ 0xC872, 0xC872, 0xC872 },
  34261. -{ 0xC873, 0xC873, 0xC873 },
  34262. -{ 0xC874, 0xC874, 0xC874 },
  34263. -{ 0xC875, 0xC875, 0xC875 },
  34264. -{ 0xC876, 0xC876, 0xC876 },
  34265. -{ 0xC877, 0xC877, 0xC877 },
  34266. -{ 0xC878, 0xC878, 0xC878 },
  34267. -{ 0xC879, 0xC879, 0xC879 },
  34268. -{ 0xC87A, 0xC87A, 0xC87A },
  34269. -{ 0xC87B, 0xC87B, 0xC87B },
  34270. -{ 0xC87C, 0xC87C, 0xC87C },
  34271. -{ 0xC87D, 0xC87D, 0xC87D },
  34272. -{ 0xC87E, 0xC87E, 0xC87E },
  34273. -{ 0xC87F, 0xC87F, 0xC87F },
  34274. -{ 0xC880, 0xC880, 0xC880 },
  34275. -{ 0xC881, 0xC881, 0xC881 },
  34276. -{ 0xC882, 0xC882, 0xC882 },
  34277. -{ 0xC883, 0xC883, 0xC883 },
  34278. -{ 0xC884, 0xC884, 0xC884 },
  34279. -{ 0xC885, 0xC885, 0xC885 },
  34280. -{ 0xC886, 0xC886, 0xC886 },
  34281. -{ 0xC887, 0xC887, 0xC887 },
  34282. -{ 0xC888, 0xC888, 0xC888 },
  34283. -{ 0xC889, 0xC889, 0xC889 },
  34284. -{ 0xC88A, 0xC88A, 0xC88A },
  34285. -{ 0xC88B, 0xC88B, 0xC88B },
  34286. -{ 0xC88C, 0xC88C, 0xC88C },
  34287. -{ 0xC88D, 0xC88D, 0xC88D },
  34288. -{ 0xC88E, 0xC88E, 0xC88E },
  34289. -{ 0xC88F, 0xC88F, 0xC88F },
  34290. -{ 0xC890, 0xC890, 0xC890 },
  34291. -{ 0xC891, 0xC891, 0xC891 },
  34292. -{ 0xC892, 0xC892, 0xC892 },
  34293. -{ 0xC893, 0xC893, 0xC893 },
  34294. -{ 0xC894, 0xC894, 0xC894 },
  34295. -{ 0xC895, 0xC895, 0xC895 },
  34296. -{ 0xC896, 0xC896, 0xC896 },
  34297. -{ 0xC897, 0xC897, 0xC897 },
  34298. -{ 0xC898, 0xC898, 0xC898 },
  34299. -{ 0xC899, 0xC899, 0xC899 },
  34300. -{ 0xC89A, 0xC89A, 0xC89A },
  34301. -{ 0xC89B, 0xC89B, 0xC89B },
  34302. -{ 0xC89C, 0xC89C, 0xC89C },
  34303. -{ 0xC89D, 0xC89D, 0xC89D },
  34304. -{ 0xC89E, 0xC89E, 0xC89E },
  34305. -{ 0xC89F, 0xC89F, 0xC89F },
  34306. -{ 0xC8A0, 0xC8A0, 0xC8A0 },
  34307. -{ 0xC8A1, 0xC8A1, 0xC8A1 },
  34308. -{ 0xC8A2, 0xC8A2, 0xC8A2 },
  34309. -{ 0xC8A3, 0xC8A3, 0xC8A3 },
  34310. -{ 0xC8A4, 0xC8A4, 0xC8A4 },
  34311. -{ 0xC8A5, 0xC8A5, 0xC8A5 },
  34312. -{ 0xC8A6, 0xC8A6, 0xC8A6 },
  34313. -{ 0xC8A7, 0xC8A7, 0xC8A7 },
  34314. -{ 0xC8A8, 0xC8A8, 0xC8A8 },
  34315. -{ 0xC8A9, 0xC8A9, 0xC8A9 },
  34316. -{ 0xC8AA, 0xC8AA, 0xC8AA },
  34317. -{ 0xC8AB, 0xC8AB, 0xC8AB },
  34318. -{ 0xC8AC, 0xC8AC, 0xC8AC },
  34319. -{ 0xC8AD, 0xC8AD, 0xC8AD },
  34320. -{ 0xC8AE, 0xC8AE, 0xC8AE },
  34321. -{ 0xC8AF, 0xC8AF, 0xC8AF },
  34322. -{ 0xC8B0, 0xC8B0, 0xC8B0 },
  34323. -{ 0xC8B1, 0xC8B1, 0xC8B1 },
  34324. -{ 0xC8B2, 0xC8B2, 0xC8B2 },
  34325. -{ 0xC8B3, 0xC8B3, 0xC8B3 },
  34326. -{ 0xC8B4, 0xC8B4, 0xC8B4 },
  34327. -{ 0xC8B5, 0xC8B5, 0xC8B5 },
  34328. -{ 0xC8B6, 0xC8B6, 0xC8B6 },
  34329. -{ 0xC8B7, 0xC8B7, 0xC8B7 },
  34330. -{ 0xC8B8, 0xC8B8, 0xC8B8 },
  34331. -{ 0xC8B9, 0xC8B9, 0xC8B9 },
  34332. -{ 0xC8BA, 0xC8BA, 0xC8BA },
  34333. -{ 0xC8BB, 0xC8BB, 0xC8BB },
  34334. -{ 0xC8BC, 0xC8BC, 0xC8BC },
  34335. -{ 0xC8BD, 0xC8BD, 0xC8BD },
  34336. -{ 0xC8BE, 0xC8BE, 0xC8BE },
  34337. -{ 0xC8BF, 0xC8BF, 0xC8BF },
  34338. -{ 0xC8C0, 0xC8C0, 0xC8C0 },
  34339. -{ 0xC8C1, 0xC8C1, 0xC8C1 },
  34340. -{ 0xC8C2, 0xC8C2, 0xC8C2 },
  34341. -{ 0xC8C3, 0xC8C3, 0xC8C3 },
  34342. -{ 0xC8C4, 0xC8C4, 0xC8C4 },
  34343. -{ 0xC8C5, 0xC8C5, 0xC8C5 },
  34344. -{ 0xC8C6, 0xC8C6, 0xC8C6 },
  34345. -{ 0xC8C7, 0xC8C7, 0xC8C7 },
  34346. -{ 0xC8C8, 0xC8C8, 0xC8C8 },
  34347. -{ 0xC8C9, 0xC8C9, 0xC8C9 },
  34348. -{ 0xC8CA, 0xC8CA, 0xC8CA },
  34349. -{ 0xC8CB, 0xC8CB, 0xC8CB },
  34350. -{ 0xC8CC, 0xC8CC, 0xC8CC },
  34351. -{ 0xC8CD, 0xC8CD, 0xC8CD },
  34352. -{ 0xC8CE, 0xC8CE, 0xC8CE },
  34353. -{ 0xC8CF, 0xC8CF, 0xC8CF },
  34354. -{ 0xC8D0, 0xC8D0, 0xC8D0 },
  34355. -{ 0xC8D1, 0xC8D1, 0xC8D1 },
  34356. -{ 0xC8D2, 0xC8D2, 0xC8D2 },
  34357. -{ 0xC8D3, 0xC8D3, 0xC8D3 },
  34358. -{ 0xC8D4, 0xC8D4, 0xC8D4 },
  34359. -{ 0xC8D5, 0xC8D5, 0xC8D5 },
  34360. -{ 0xC8D6, 0xC8D6, 0xC8D6 },
  34361. -{ 0xC8D7, 0xC8D7, 0xC8D7 },
  34362. -{ 0xC8D8, 0xC8D8, 0xC8D8 },
  34363. -{ 0xC8D9, 0xC8D9, 0xC8D9 },
  34364. -{ 0xC8DA, 0xC8DA, 0xC8DA },
  34365. -{ 0xC8DB, 0xC8DB, 0xC8DB },
  34366. -{ 0xC8DC, 0xC8DC, 0xC8DC },
  34367. -{ 0xC8DD, 0xC8DD, 0xC8DD },
  34368. -{ 0xC8DE, 0xC8DE, 0xC8DE },
  34369. -{ 0xC8DF, 0xC8DF, 0xC8DF },
  34370. -{ 0xC8E0, 0xC8E0, 0xC8E0 },
  34371. -{ 0xC8E1, 0xC8E1, 0xC8E1 },
  34372. -{ 0xC8E2, 0xC8E2, 0xC8E2 },
  34373. -{ 0xC8E3, 0xC8E3, 0xC8E3 },
  34374. -{ 0xC8E4, 0xC8E4, 0xC8E4 },
  34375. -{ 0xC8E5, 0xC8E5, 0xC8E5 },
  34376. -{ 0xC8E6, 0xC8E6, 0xC8E6 },
  34377. -{ 0xC8E7, 0xC8E7, 0xC8E7 },
  34378. -{ 0xC8E8, 0xC8E8, 0xC8E8 },
  34379. -{ 0xC8E9, 0xC8E9, 0xC8E9 },
  34380. -{ 0xC8EA, 0xC8EA, 0xC8EA },
  34381. -{ 0xC8EB, 0xC8EB, 0xC8EB },
  34382. -{ 0xC8EC, 0xC8EC, 0xC8EC },
  34383. -{ 0xC8ED, 0xC8ED, 0xC8ED },
  34384. -{ 0xC8EE, 0xC8EE, 0xC8EE },
  34385. -{ 0xC8EF, 0xC8EF, 0xC8EF },
  34386. -{ 0xC8F0, 0xC8F0, 0xC8F0 },
  34387. -{ 0xC8F1, 0xC8F1, 0xC8F1 },
  34388. -{ 0xC8F2, 0xC8F2, 0xC8F2 },
  34389. -{ 0xC8F3, 0xC8F3, 0xC8F3 },
  34390. -{ 0xC8F4, 0xC8F4, 0xC8F4 },
  34391. -{ 0xC8F5, 0xC8F5, 0xC8F5 },
  34392. -{ 0xC8F6, 0xC8F6, 0xC8F6 },
  34393. -{ 0xC8F7, 0xC8F7, 0xC8F7 },
  34394. -{ 0xC8F8, 0xC8F8, 0xC8F8 },
  34395. -{ 0xC8F9, 0xC8F9, 0xC8F9 },
  34396. -{ 0xC8FA, 0xC8FA, 0xC8FA },
  34397. -{ 0xC8FB, 0xC8FB, 0xC8FB },
  34398. -{ 0xC8FC, 0xC8FC, 0xC8FC },
  34399. -{ 0xC8FD, 0xC8FD, 0xC8FD },
  34400. -{ 0xC8FE, 0xC8FE, 0xC8FE },
  34401. -{ 0xC8FF, 0xC8FF, 0xC8FF },
  34402. -{ 0xC900, 0xC900, 0xC900 },
  34403. -{ 0xC901, 0xC901, 0xC901 },
  34404. -{ 0xC902, 0xC902, 0xC902 },
  34405. -{ 0xC903, 0xC903, 0xC903 },
  34406. -{ 0xC904, 0xC904, 0xC904 },
  34407. -{ 0xC905, 0xC905, 0xC905 },
  34408. -{ 0xC906, 0xC906, 0xC906 },
  34409. -{ 0xC907, 0xC907, 0xC907 },
  34410. -{ 0xC908, 0xC908, 0xC908 },
  34411. -{ 0xC909, 0xC909, 0xC909 },
  34412. -{ 0xC90A, 0xC90A, 0xC90A },
  34413. -{ 0xC90B, 0xC90B, 0xC90B },
  34414. -{ 0xC90C, 0xC90C, 0xC90C },
  34415. -{ 0xC90D, 0xC90D, 0xC90D },
  34416. -{ 0xC90E, 0xC90E, 0xC90E },
  34417. -{ 0xC90F, 0xC90F, 0xC90F },
  34418. -{ 0xC910, 0xC910, 0xC910 },
  34419. -{ 0xC911, 0xC911, 0xC911 },
  34420. -{ 0xC912, 0xC912, 0xC912 },
  34421. -{ 0xC913, 0xC913, 0xC913 },
  34422. -{ 0xC914, 0xC914, 0xC914 },
  34423. -{ 0xC915, 0xC915, 0xC915 },
  34424. -{ 0xC916, 0xC916, 0xC916 },
  34425. -{ 0xC917, 0xC917, 0xC917 },
  34426. -{ 0xC918, 0xC918, 0xC918 },
  34427. -{ 0xC919, 0xC919, 0xC919 },
  34428. -{ 0xC91A, 0xC91A, 0xC91A },
  34429. -{ 0xC91B, 0xC91B, 0xC91B },
  34430. -{ 0xC91C, 0xC91C, 0xC91C },
  34431. -{ 0xC91D, 0xC91D, 0xC91D },
  34432. -{ 0xC91E, 0xC91E, 0xC91E },
  34433. -{ 0xC91F, 0xC91F, 0xC91F },
  34434. -{ 0xC920, 0xC920, 0xC920 },
  34435. -{ 0xC921, 0xC921, 0xC921 },
  34436. -{ 0xC922, 0xC922, 0xC922 },
  34437. -{ 0xC923, 0xC923, 0xC923 },
  34438. -{ 0xC924, 0xC924, 0xC924 },
  34439. -{ 0xC925, 0xC925, 0xC925 },
  34440. -{ 0xC926, 0xC926, 0xC926 },
  34441. -{ 0xC927, 0xC927, 0xC927 },
  34442. -{ 0xC928, 0xC928, 0xC928 },
  34443. -{ 0xC929, 0xC929, 0xC929 },
  34444. -{ 0xC92A, 0xC92A, 0xC92A },
  34445. -{ 0xC92B, 0xC92B, 0xC92B },
  34446. -{ 0xC92C, 0xC92C, 0xC92C },
  34447. -{ 0xC92D, 0xC92D, 0xC92D },
  34448. -{ 0xC92E, 0xC92E, 0xC92E },
  34449. -{ 0xC92F, 0xC92F, 0xC92F },
  34450. -{ 0xC930, 0xC930, 0xC930 },
  34451. -{ 0xC931, 0xC931, 0xC931 },
  34452. -{ 0xC932, 0xC932, 0xC932 },
  34453. -{ 0xC933, 0xC933, 0xC933 },
  34454. -{ 0xC934, 0xC934, 0xC934 },
  34455. -{ 0xC935, 0xC935, 0xC935 },
  34456. -{ 0xC936, 0xC936, 0xC936 },
  34457. -{ 0xC937, 0xC937, 0xC937 },
  34458. -{ 0xC938, 0xC938, 0xC938 },
  34459. -{ 0xC939, 0xC939, 0xC939 },
  34460. -{ 0xC93A, 0xC93A, 0xC93A },
  34461. -{ 0xC93B, 0xC93B, 0xC93B },
  34462. -{ 0xC93C, 0xC93C, 0xC93C },
  34463. -{ 0xC93D, 0xC93D, 0xC93D },
  34464. -{ 0xC93E, 0xC93E, 0xC93E },
  34465. -{ 0xC93F, 0xC93F, 0xC93F },
  34466. -{ 0xC940, 0xC940, 0xC940 },
  34467. -{ 0xC941, 0xC941, 0xC941 },
  34468. -{ 0xC942, 0xC942, 0xC942 },
  34469. -{ 0xC943, 0xC943, 0xC943 },
  34470. -{ 0xC944, 0xC944, 0xC944 },
  34471. -{ 0xC945, 0xC945, 0xC945 },
  34472. -{ 0xC946, 0xC946, 0xC946 },
  34473. -{ 0xC947, 0xC947, 0xC947 },
  34474. -{ 0xC948, 0xC948, 0xC948 },
  34475. -{ 0xC949, 0xC949, 0xC949 },
  34476. -{ 0xC94A, 0xC94A, 0xC94A },
  34477. -{ 0xC94B, 0xC94B, 0xC94B },
  34478. -{ 0xC94C, 0xC94C, 0xC94C },
  34479. -{ 0xC94D, 0xC94D, 0xC94D },
  34480. -{ 0xC94E, 0xC94E, 0xC94E },
  34481. -{ 0xC94F, 0xC94F, 0xC94F },
  34482. -{ 0xC950, 0xC950, 0xC950 },
  34483. -{ 0xC951, 0xC951, 0xC951 },
  34484. -{ 0xC952, 0xC952, 0xC952 },
  34485. -{ 0xC953, 0xC953, 0xC953 },
  34486. -{ 0xC954, 0xC954, 0xC954 },
  34487. -{ 0xC955, 0xC955, 0xC955 },
  34488. -{ 0xC956, 0xC956, 0xC956 },
  34489. -{ 0xC957, 0xC957, 0xC957 },
  34490. -{ 0xC958, 0xC958, 0xC958 },
  34491. -{ 0xC959, 0xC959, 0xC959 },
  34492. -{ 0xC95A, 0xC95A, 0xC95A },
  34493. -{ 0xC95B, 0xC95B, 0xC95B },
  34494. -{ 0xC95C, 0xC95C, 0xC95C },
  34495. -{ 0xC95D, 0xC95D, 0xC95D },
  34496. -{ 0xC95E, 0xC95E, 0xC95E },
  34497. -{ 0xC95F, 0xC95F, 0xC95F },
  34498. -{ 0xC960, 0xC960, 0xC960 },
  34499. -{ 0xC961, 0xC961, 0xC961 },
  34500. -{ 0xC962, 0xC962, 0xC962 },
  34501. -{ 0xC963, 0xC963, 0xC963 },
  34502. -{ 0xC964, 0xC964, 0xC964 },
  34503. -{ 0xC965, 0xC965, 0xC965 },
  34504. -{ 0xC966, 0xC966, 0xC966 },
  34505. -{ 0xC967, 0xC967, 0xC967 },
  34506. -{ 0xC968, 0xC968, 0xC968 },
  34507. -{ 0xC969, 0xC969, 0xC969 },
  34508. -{ 0xC96A, 0xC96A, 0xC96A },
  34509. -{ 0xC96B, 0xC96B, 0xC96B },
  34510. -{ 0xC96C, 0xC96C, 0xC96C },
  34511. -{ 0xC96D, 0xC96D, 0xC96D },
  34512. -{ 0xC96E, 0xC96E, 0xC96E },
  34513. -{ 0xC96F, 0xC96F, 0xC96F },
  34514. -{ 0xC970, 0xC970, 0xC970 },
  34515. -{ 0xC971, 0xC971, 0xC971 },
  34516. -{ 0xC972, 0xC972, 0xC972 },
  34517. -{ 0xC973, 0xC973, 0xC973 },
  34518. -{ 0xC974, 0xC974, 0xC974 },
  34519. -{ 0xC975, 0xC975, 0xC975 },
  34520. -{ 0xC976, 0xC976, 0xC976 },
  34521. -{ 0xC977, 0xC977, 0xC977 },
  34522. -{ 0xC978, 0xC978, 0xC978 },
  34523. -{ 0xC979, 0xC979, 0xC979 },
  34524. -{ 0xC97A, 0xC97A, 0xC97A },
  34525. -{ 0xC97B, 0xC97B, 0xC97B },
  34526. -{ 0xC97C, 0xC97C, 0xC97C },
  34527. -{ 0xC97D, 0xC97D, 0xC97D },
  34528. -{ 0xC97E, 0xC97E, 0xC97E },
  34529. -{ 0xC97F, 0xC97F, 0xC97F },
  34530. -{ 0xC980, 0xC980, 0xC980 },
  34531. -{ 0xC981, 0xC981, 0xC981 },
  34532. -{ 0xC982, 0xC982, 0xC982 },
  34533. -{ 0xC983, 0xC983, 0xC983 },
  34534. -{ 0xC984, 0xC984, 0xC984 },
  34535. -{ 0xC985, 0xC985, 0xC985 },
  34536. -{ 0xC986, 0xC986, 0xC986 },
  34537. -{ 0xC987, 0xC987, 0xC987 },
  34538. -{ 0xC988, 0xC988, 0xC988 },
  34539. -{ 0xC989, 0xC989, 0xC989 },
  34540. -{ 0xC98A, 0xC98A, 0xC98A },
  34541. -{ 0xC98B, 0xC98B, 0xC98B },
  34542. -{ 0xC98C, 0xC98C, 0xC98C },
  34543. -{ 0xC98D, 0xC98D, 0xC98D },
  34544. -{ 0xC98E, 0xC98E, 0xC98E },
  34545. -{ 0xC98F, 0xC98F, 0xC98F },
  34546. -{ 0xC990, 0xC990, 0xC990 },
  34547. -{ 0xC991, 0xC991, 0xC991 },
  34548. -{ 0xC992, 0xC992, 0xC992 },
  34549. -{ 0xC993, 0xC993, 0xC993 },
  34550. -{ 0xC994, 0xC994, 0xC994 },
  34551. -{ 0xC995, 0xC995, 0xC995 },
  34552. -{ 0xC996, 0xC996, 0xC996 },
  34553. -{ 0xC997, 0xC997, 0xC997 },
  34554. -{ 0xC998, 0xC998, 0xC998 },
  34555. -{ 0xC999, 0xC999, 0xC999 },
  34556. -{ 0xC99A, 0xC99A, 0xC99A },
  34557. -{ 0xC99B, 0xC99B, 0xC99B },
  34558. -{ 0xC99C, 0xC99C, 0xC99C },
  34559. -{ 0xC99D, 0xC99D, 0xC99D },
  34560. -{ 0xC99E, 0xC99E, 0xC99E },
  34561. -{ 0xC99F, 0xC99F, 0xC99F },
  34562. -{ 0xC9A0, 0xC9A0, 0xC9A0 },
  34563. -{ 0xC9A1, 0xC9A1, 0xC9A1 },
  34564. -{ 0xC9A2, 0xC9A2, 0xC9A2 },
  34565. -{ 0xC9A3, 0xC9A3, 0xC9A3 },
  34566. -{ 0xC9A4, 0xC9A4, 0xC9A4 },
  34567. -{ 0xC9A5, 0xC9A5, 0xC9A5 },
  34568. -{ 0xC9A6, 0xC9A6, 0xC9A6 },
  34569. -{ 0xC9A7, 0xC9A7, 0xC9A7 },
  34570. -{ 0xC9A8, 0xC9A8, 0xC9A8 },
  34571. -{ 0xC9A9, 0xC9A9, 0xC9A9 },
  34572. -{ 0xC9AA, 0xC9AA, 0xC9AA },
  34573. -{ 0xC9AB, 0xC9AB, 0xC9AB },
  34574. -{ 0xC9AC, 0xC9AC, 0xC9AC },
  34575. -{ 0xC9AD, 0xC9AD, 0xC9AD },
  34576. -{ 0xC9AE, 0xC9AE, 0xC9AE },
  34577. -{ 0xC9AF, 0xC9AF, 0xC9AF },
  34578. -{ 0xC9B0, 0xC9B0, 0xC9B0 },
  34579. -{ 0xC9B1, 0xC9B1, 0xC9B1 },
  34580. -{ 0xC9B2, 0xC9B2, 0xC9B2 },
  34581. -{ 0xC9B3, 0xC9B3, 0xC9B3 },
  34582. -{ 0xC9B4, 0xC9B4, 0xC9B4 },
  34583. -{ 0xC9B5, 0xC9B5, 0xC9B5 },
  34584. -{ 0xC9B6, 0xC9B6, 0xC9B6 },
  34585. -{ 0xC9B7, 0xC9B7, 0xC9B7 },
  34586. -{ 0xC9B8, 0xC9B8, 0xC9B8 },
  34587. -{ 0xC9B9, 0xC9B9, 0xC9B9 },
  34588. -{ 0xC9BA, 0xC9BA, 0xC9BA },
  34589. -{ 0xC9BB, 0xC9BB, 0xC9BB },
  34590. -{ 0xC9BC, 0xC9BC, 0xC9BC },
  34591. -{ 0xC9BD, 0xC9BD, 0xC9BD },
  34592. -{ 0xC9BE, 0xC9BE, 0xC9BE },
  34593. -{ 0xC9BF, 0xC9BF, 0xC9BF },
  34594. -{ 0xC9C0, 0xC9C0, 0xC9C0 },
  34595. -{ 0xC9C1, 0xC9C1, 0xC9C1 },
  34596. -{ 0xC9C2, 0xC9C2, 0xC9C2 },
  34597. -{ 0xC9C3, 0xC9C3, 0xC9C3 },
  34598. -{ 0xC9C4, 0xC9C4, 0xC9C4 },
  34599. -{ 0xC9C5, 0xC9C5, 0xC9C5 },
  34600. -{ 0xC9C6, 0xC9C6, 0xC9C6 },
  34601. -{ 0xC9C7, 0xC9C7, 0xC9C7 },
  34602. -{ 0xC9C8, 0xC9C8, 0xC9C8 },
  34603. -{ 0xC9C9, 0xC9C9, 0xC9C9 },
  34604. -{ 0xC9CA, 0xC9CA, 0xC9CA },
  34605. -{ 0xC9CB, 0xC9CB, 0xC9CB },
  34606. -{ 0xC9CC, 0xC9CC, 0xC9CC },
  34607. -{ 0xC9CD, 0xC9CD, 0xC9CD },
  34608. -{ 0xC9CE, 0xC9CE, 0xC9CE },
  34609. -{ 0xC9CF, 0xC9CF, 0xC9CF },
  34610. -{ 0xC9D0, 0xC9D0, 0xC9D0 },
  34611. -{ 0xC9D1, 0xC9D1, 0xC9D1 },
  34612. -{ 0xC9D2, 0xC9D2, 0xC9D2 },
  34613. -{ 0xC9D3, 0xC9D3, 0xC9D3 },
  34614. -{ 0xC9D4, 0xC9D4, 0xC9D4 },
  34615. -{ 0xC9D5, 0xC9D5, 0xC9D5 },
  34616. -{ 0xC9D6, 0xC9D6, 0xC9D6 },
  34617. -{ 0xC9D7, 0xC9D7, 0xC9D7 },
  34618. -{ 0xC9D8, 0xC9D8, 0xC9D8 },
  34619. -{ 0xC9D9, 0xC9D9, 0xC9D9 },
  34620. -{ 0xC9DA, 0xC9DA, 0xC9DA },
  34621. -{ 0xC9DB, 0xC9DB, 0xC9DB },
  34622. -{ 0xC9DC, 0xC9DC, 0xC9DC },
  34623. -{ 0xC9DD, 0xC9DD, 0xC9DD },
  34624. -{ 0xC9DE, 0xC9DE, 0xC9DE },
  34625. -{ 0xC9DF, 0xC9DF, 0xC9DF },
  34626. -{ 0xC9E0, 0xC9E0, 0xC9E0 },
  34627. -{ 0xC9E1, 0xC9E1, 0xC9E1 },
  34628. -{ 0xC9E2, 0xC9E2, 0xC9E2 },
  34629. -{ 0xC9E3, 0xC9E3, 0xC9E3 },
  34630. -{ 0xC9E4, 0xC9E4, 0xC9E4 },
  34631. -{ 0xC9E5, 0xC9E5, 0xC9E5 },
  34632. -{ 0xC9E6, 0xC9E6, 0xC9E6 },
  34633. -{ 0xC9E7, 0xC9E7, 0xC9E7 },
  34634. -{ 0xC9E8, 0xC9E8, 0xC9E8 },
  34635. -{ 0xC9E9, 0xC9E9, 0xC9E9 },
  34636. -{ 0xC9EA, 0xC9EA, 0xC9EA },
  34637. -{ 0xC9EB, 0xC9EB, 0xC9EB },
  34638. -{ 0xC9EC, 0xC9EC, 0xC9EC },
  34639. -{ 0xC9ED, 0xC9ED, 0xC9ED },
  34640. -{ 0xC9EE, 0xC9EE, 0xC9EE },
  34641. -{ 0xC9EF, 0xC9EF, 0xC9EF },
  34642. -{ 0xC9F0, 0xC9F0, 0xC9F0 },
  34643. -{ 0xC9F1, 0xC9F1, 0xC9F1 },
  34644. -{ 0xC9F2, 0xC9F2, 0xC9F2 },
  34645. -{ 0xC9F3, 0xC9F3, 0xC9F3 },
  34646. -{ 0xC9F4, 0xC9F4, 0xC9F4 },
  34647. -{ 0xC9F5, 0xC9F5, 0xC9F5 },
  34648. -{ 0xC9F6, 0xC9F6, 0xC9F6 },
  34649. -{ 0xC9F7, 0xC9F7, 0xC9F7 },
  34650. -{ 0xC9F8, 0xC9F8, 0xC9F8 },
  34651. -{ 0xC9F9, 0xC9F9, 0xC9F9 },
  34652. -{ 0xC9FA, 0xC9FA, 0xC9FA },
  34653. -{ 0xC9FB, 0xC9FB, 0xC9FB },
  34654. -{ 0xC9FC, 0xC9FC, 0xC9FC },
  34655. -{ 0xC9FD, 0xC9FD, 0xC9FD },
  34656. -{ 0xC9FE, 0xC9FE, 0xC9FE },
  34657. -{ 0xC9FF, 0xC9FF, 0xC9FF },
  34658. -{ 0xCA00, 0xCA00, 0xCA00 },
  34659. -{ 0xCA01, 0xCA01, 0xCA01 },
  34660. -{ 0xCA02, 0xCA02, 0xCA02 },
  34661. -{ 0xCA03, 0xCA03, 0xCA03 },
  34662. -{ 0xCA04, 0xCA04, 0xCA04 },
  34663. -{ 0xCA05, 0xCA05, 0xCA05 },
  34664. -{ 0xCA06, 0xCA06, 0xCA06 },
  34665. -{ 0xCA07, 0xCA07, 0xCA07 },
  34666. -{ 0xCA08, 0xCA08, 0xCA08 },
  34667. -{ 0xCA09, 0xCA09, 0xCA09 },
  34668. -{ 0xCA0A, 0xCA0A, 0xCA0A },
  34669. -{ 0xCA0B, 0xCA0B, 0xCA0B },
  34670. -{ 0xCA0C, 0xCA0C, 0xCA0C },
  34671. -{ 0xCA0D, 0xCA0D, 0xCA0D },
  34672. -{ 0xCA0E, 0xCA0E, 0xCA0E },
  34673. -{ 0xCA0F, 0xCA0F, 0xCA0F },
  34674. -{ 0xCA10, 0xCA10, 0xCA10 },
  34675. -{ 0xCA11, 0xCA11, 0xCA11 },
  34676. -{ 0xCA12, 0xCA12, 0xCA12 },
  34677. -{ 0xCA13, 0xCA13, 0xCA13 },
  34678. -{ 0xCA14, 0xCA14, 0xCA14 },
  34679. -{ 0xCA15, 0xCA15, 0xCA15 },
  34680. -{ 0xCA16, 0xCA16, 0xCA16 },
  34681. -{ 0xCA17, 0xCA17, 0xCA17 },
  34682. -{ 0xCA18, 0xCA18, 0xCA18 },
  34683. -{ 0xCA19, 0xCA19, 0xCA19 },
  34684. -{ 0xCA1A, 0xCA1A, 0xCA1A },
  34685. -{ 0xCA1B, 0xCA1B, 0xCA1B },
  34686. -{ 0xCA1C, 0xCA1C, 0xCA1C },
  34687. -{ 0xCA1D, 0xCA1D, 0xCA1D },
  34688. -{ 0xCA1E, 0xCA1E, 0xCA1E },
  34689. -{ 0xCA1F, 0xCA1F, 0xCA1F },
  34690. -{ 0xCA20, 0xCA20, 0xCA20 },
  34691. -{ 0xCA21, 0xCA21, 0xCA21 },
  34692. -{ 0xCA22, 0xCA22, 0xCA22 },
  34693. -{ 0xCA23, 0xCA23, 0xCA23 },
  34694. -{ 0xCA24, 0xCA24, 0xCA24 },
  34695. -{ 0xCA25, 0xCA25, 0xCA25 },
  34696. -{ 0xCA26, 0xCA26, 0xCA26 },
  34697. -{ 0xCA27, 0xCA27, 0xCA27 },
  34698. -{ 0xCA28, 0xCA28, 0xCA28 },
  34699. -{ 0xCA29, 0xCA29, 0xCA29 },
  34700. -{ 0xCA2A, 0xCA2A, 0xCA2A },
  34701. -{ 0xCA2B, 0xCA2B, 0xCA2B },
  34702. -{ 0xCA2C, 0xCA2C, 0xCA2C },
  34703. -{ 0xCA2D, 0xCA2D, 0xCA2D },
  34704. -{ 0xCA2E, 0xCA2E, 0xCA2E },
  34705. -{ 0xCA2F, 0xCA2F, 0xCA2F },
  34706. -{ 0xCA30, 0xCA30, 0xCA30 },
  34707. -{ 0xCA31, 0xCA31, 0xCA31 },
  34708. -{ 0xCA32, 0xCA32, 0xCA32 },
  34709. -{ 0xCA33, 0xCA33, 0xCA33 },
  34710. -{ 0xCA34, 0xCA34, 0xCA34 },
  34711. -{ 0xCA35, 0xCA35, 0xCA35 },
  34712. -{ 0xCA36, 0xCA36, 0xCA36 },
  34713. -{ 0xCA37, 0xCA37, 0xCA37 },
  34714. -{ 0xCA38, 0xCA38, 0xCA38 },
  34715. -{ 0xCA39, 0xCA39, 0xCA39 },
  34716. -{ 0xCA3A, 0xCA3A, 0xCA3A },
  34717. -{ 0xCA3B, 0xCA3B, 0xCA3B },
  34718. -{ 0xCA3C, 0xCA3C, 0xCA3C },
  34719. -{ 0xCA3D, 0xCA3D, 0xCA3D },
  34720. -{ 0xCA3E, 0xCA3E, 0xCA3E },
  34721. -{ 0xCA3F, 0xCA3F, 0xCA3F },
  34722. -{ 0xCA40, 0xCA40, 0xCA40 },
  34723. -{ 0xCA41, 0xCA41, 0xCA41 },
  34724. -{ 0xCA42, 0xCA42, 0xCA42 },
  34725. -{ 0xCA43, 0xCA43, 0xCA43 },
  34726. -{ 0xCA44, 0xCA44, 0xCA44 },
  34727. -{ 0xCA45, 0xCA45, 0xCA45 },
  34728. -{ 0xCA46, 0xCA46, 0xCA46 },
  34729. -{ 0xCA47, 0xCA47, 0xCA47 },
  34730. -{ 0xCA48, 0xCA48, 0xCA48 },
  34731. -{ 0xCA49, 0xCA49, 0xCA49 },
  34732. -{ 0xCA4A, 0xCA4A, 0xCA4A },
  34733. -{ 0xCA4B, 0xCA4B, 0xCA4B },
  34734. -{ 0xCA4C, 0xCA4C, 0xCA4C },
  34735. -{ 0xCA4D, 0xCA4D, 0xCA4D },
  34736. -{ 0xCA4E, 0xCA4E, 0xCA4E },
  34737. -{ 0xCA4F, 0xCA4F, 0xCA4F },
  34738. -{ 0xCA50, 0xCA50, 0xCA50 },
  34739. -{ 0xCA51, 0xCA51, 0xCA51 },
  34740. -{ 0xCA52, 0xCA52, 0xCA52 },
  34741. -{ 0xCA53, 0xCA53, 0xCA53 },
  34742. -{ 0xCA54, 0xCA54, 0xCA54 },
  34743. -{ 0xCA55, 0xCA55, 0xCA55 },
  34744. -{ 0xCA56, 0xCA56, 0xCA56 },
  34745. -{ 0xCA57, 0xCA57, 0xCA57 },
  34746. -{ 0xCA58, 0xCA58, 0xCA58 },
  34747. -{ 0xCA59, 0xCA59, 0xCA59 },
  34748. -{ 0xCA5A, 0xCA5A, 0xCA5A },
  34749. -{ 0xCA5B, 0xCA5B, 0xCA5B },
  34750. -{ 0xCA5C, 0xCA5C, 0xCA5C },
  34751. -{ 0xCA5D, 0xCA5D, 0xCA5D },
  34752. -{ 0xCA5E, 0xCA5E, 0xCA5E },
  34753. -{ 0xCA5F, 0xCA5F, 0xCA5F },
  34754. -{ 0xCA60, 0xCA60, 0xCA60 },
  34755. -{ 0xCA61, 0xCA61, 0xCA61 },
  34756. -{ 0xCA62, 0xCA62, 0xCA62 },
  34757. -{ 0xCA63, 0xCA63, 0xCA63 },
  34758. -{ 0xCA64, 0xCA64, 0xCA64 },
  34759. -{ 0xCA65, 0xCA65, 0xCA65 },
  34760. -{ 0xCA66, 0xCA66, 0xCA66 },
  34761. -{ 0xCA67, 0xCA67, 0xCA67 },
  34762. -{ 0xCA68, 0xCA68, 0xCA68 },
  34763. -{ 0xCA69, 0xCA69, 0xCA69 },
  34764. -{ 0xCA6A, 0xCA6A, 0xCA6A },
  34765. -{ 0xCA6B, 0xCA6B, 0xCA6B },
  34766. -{ 0xCA6C, 0xCA6C, 0xCA6C },
  34767. -{ 0xCA6D, 0xCA6D, 0xCA6D },
  34768. -{ 0xCA6E, 0xCA6E, 0xCA6E },
  34769. -{ 0xCA6F, 0xCA6F, 0xCA6F },
  34770. -{ 0xCA70, 0xCA70, 0xCA70 },
  34771. -{ 0xCA71, 0xCA71, 0xCA71 },
  34772. -{ 0xCA72, 0xCA72, 0xCA72 },
  34773. -{ 0xCA73, 0xCA73, 0xCA73 },
  34774. -{ 0xCA74, 0xCA74, 0xCA74 },
  34775. -{ 0xCA75, 0xCA75, 0xCA75 },
  34776. -{ 0xCA76, 0xCA76, 0xCA76 },
  34777. -{ 0xCA77, 0xCA77, 0xCA77 },
  34778. -{ 0xCA78, 0xCA78, 0xCA78 },
  34779. -{ 0xCA79, 0xCA79, 0xCA79 },
  34780. -{ 0xCA7A, 0xCA7A, 0xCA7A },
  34781. -{ 0xCA7B, 0xCA7B, 0xCA7B },
  34782. -{ 0xCA7C, 0xCA7C, 0xCA7C },
  34783. -{ 0xCA7D, 0xCA7D, 0xCA7D },
  34784. -{ 0xCA7E, 0xCA7E, 0xCA7E },
  34785. -{ 0xCA7F, 0xCA7F, 0xCA7F },
  34786. -{ 0xCA80, 0xCA80, 0xCA80 },
  34787. -{ 0xCA81, 0xCA81, 0xCA81 },
  34788. -{ 0xCA82, 0xCA82, 0xCA82 },
  34789. -{ 0xCA83, 0xCA83, 0xCA83 },
  34790. -{ 0xCA84, 0xCA84, 0xCA84 },
  34791. -{ 0xCA85, 0xCA85, 0xCA85 },
  34792. -{ 0xCA86, 0xCA86, 0xCA86 },
  34793. -{ 0xCA87, 0xCA87, 0xCA87 },
  34794. -{ 0xCA88, 0xCA88, 0xCA88 },
  34795. -{ 0xCA89, 0xCA89, 0xCA89 },
  34796. -{ 0xCA8A, 0xCA8A, 0xCA8A },
  34797. -{ 0xCA8B, 0xCA8B, 0xCA8B },
  34798. -{ 0xCA8C, 0xCA8C, 0xCA8C },
  34799. -{ 0xCA8D, 0xCA8D, 0xCA8D },
  34800. -{ 0xCA8E, 0xCA8E, 0xCA8E },
  34801. -{ 0xCA8F, 0xCA8F, 0xCA8F },
  34802. -{ 0xCA90, 0xCA90, 0xCA90 },
  34803. -{ 0xCA91, 0xCA91, 0xCA91 },
  34804. -{ 0xCA92, 0xCA92, 0xCA92 },
  34805. -{ 0xCA93, 0xCA93, 0xCA93 },
  34806. -{ 0xCA94, 0xCA94, 0xCA94 },
  34807. -{ 0xCA95, 0xCA95, 0xCA95 },
  34808. -{ 0xCA96, 0xCA96, 0xCA96 },
  34809. -{ 0xCA97, 0xCA97, 0xCA97 },
  34810. -{ 0xCA98, 0xCA98, 0xCA98 },
  34811. -{ 0xCA99, 0xCA99, 0xCA99 },
  34812. -{ 0xCA9A, 0xCA9A, 0xCA9A },
  34813. -{ 0xCA9B, 0xCA9B, 0xCA9B },
  34814. -{ 0xCA9C, 0xCA9C, 0xCA9C },
  34815. -{ 0xCA9D, 0xCA9D, 0xCA9D },
  34816. -{ 0xCA9E, 0xCA9E, 0xCA9E },
  34817. -{ 0xCA9F, 0xCA9F, 0xCA9F },
  34818. -{ 0xCAA0, 0xCAA0, 0xCAA0 },
  34819. -{ 0xCAA1, 0xCAA1, 0xCAA1 },
  34820. -{ 0xCAA2, 0xCAA2, 0xCAA2 },
  34821. -{ 0xCAA3, 0xCAA3, 0xCAA3 },
  34822. -{ 0xCAA4, 0xCAA4, 0xCAA4 },
  34823. -{ 0xCAA5, 0xCAA5, 0xCAA5 },
  34824. -{ 0xCAA6, 0xCAA6, 0xCAA6 },
  34825. -{ 0xCAA7, 0xCAA7, 0xCAA7 },
  34826. -{ 0xCAA8, 0xCAA8, 0xCAA8 },
  34827. -{ 0xCAA9, 0xCAA9, 0xCAA9 },
  34828. -{ 0xCAAA, 0xCAAA, 0xCAAA },
  34829. -{ 0xCAAB, 0xCAAB, 0xCAAB },
  34830. -{ 0xCAAC, 0xCAAC, 0xCAAC },
  34831. -{ 0xCAAD, 0xCAAD, 0xCAAD },
  34832. -{ 0xCAAE, 0xCAAE, 0xCAAE },
  34833. -{ 0xCAAF, 0xCAAF, 0xCAAF },
  34834. -{ 0xCAB0, 0xCAB0, 0xCAB0 },
  34835. -{ 0xCAB1, 0xCAB1, 0xCAB1 },
  34836. -{ 0xCAB2, 0xCAB2, 0xCAB2 },
  34837. -{ 0xCAB3, 0xCAB3, 0xCAB3 },
  34838. -{ 0xCAB4, 0xCAB4, 0xCAB4 },
  34839. -{ 0xCAB5, 0xCAB5, 0xCAB5 },
  34840. -{ 0xCAB6, 0xCAB6, 0xCAB6 },
  34841. -{ 0xCAB7, 0xCAB7, 0xCAB7 },
  34842. -{ 0xCAB8, 0xCAB8, 0xCAB8 },
  34843. -{ 0xCAB9, 0xCAB9, 0xCAB9 },
  34844. -{ 0xCABA, 0xCABA, 0xCABA },
  34845. -{ 0xCABB, 0xCABB, 0xCABB },
  34846. -{ 0xCABC, 0xCABC, 0xCABC },
  34847. -{ 0xCABD, 0xCABD, 0xCABD },
  34848. -{ 0xCABE, 0xCABE, 0xCABE },
  34849. -{ 0xCABF, 0xCABF, 0xCABF },
  34850. -{ 0xCAC0, 0xCAC0, 0xCAC0 },
  34851. -{ 0xCAC1, 0xCAC1, 0xCAC1 },
  34852. -{ 0xCAC2, 0xCAC2, 0xCAC2 },
  34853. -{ 0xCAC3, 0xCAC3, 0xCAC3 },
  34854. -{ 0xCAC4, 0xCAC4, 0xCAC4 },
  34855. -{ 0xCAC5, 0xCAC5, 0xCAC5 },
  34856. -{ 0xCAC6, 0xCAC6, 0xCAC6 },
  34857. -{ 0xCAC7, 0xCAC7, 0xCAC7 },
  34858. -{ 0xCAC8, 0xCAC8, 0xCAC8 },
  34859. -{ 0xCAC9, 0xCAC9, 0xCAC9 },
  34860. -{ 0xCACA, 0xCACA, 0xCACA },
  34861. -{ 0xCACB, 0xCACB, 0xCACB },
  34862. -{ 0xCACC, 0xCACC, 0xCACC },
  34863. -{ 0xCACD, 0xCACD, 0xCACD },
  34864. -{ 0xCACE, 0xCACE, 0xCACE },
  34865. -{ 0xCACF, 0xCACF, 0xCACF },
  34866. -{ 0xCAD0, 0xCAD0, 0xCAD0 },
  34867. -{ 0xCAD1, 0xCAD1, 0xCAD1 },
  34868. -{ 0xCAD2, 0xCAD2, 0xCAD2 },
  34869. -{ 0xCAD3, 0xCAD3, 0xCAD3 },
  34870. -{ 0xCAD4, 0xCAD4, 0xCAD4 },
  34871. -{ 0xCAD5, 0xCAD5, 0xCAD5 },
  34872. -{ 0xCAD6, 0xCAD6, 0xCAD6 },
  34873. -{ 0xCAD7, 0xCAD7, 0xCAD7 },
  34874. -{ 0xCAD8, 0xCAD8, 0xCAD8 },
  34875. -{ 0xCAD9, 0xCAD9, 0xCAD9 },
  34876. -{ 0xCADA, 0xCADA, 0xCADA },
  34877. -{ 0xCADB, 0xCADB, 0xCADB },
  34878. -{ 0xCADC, 0xCADC, 0xCADC },
  34879. -{ 0xCADD, 0xCADD, 0xCADD },
  34880. -{ 0xCADE, 0xCADE, 0xCADE },
  34881. -{ 0xCADF, 0xCADF, 0xCADF },
  34882. -{ 0xCAE0, 0xCAE0, 0xCAE0 },
  34883. -{ 0xCAE1, 0xCAE1, 0xCAE1 },
  34884. -{ 0xCAE2, 0xCAE2, 0xCAE2 },
  34885. -{ 0xCAE3, 0xCAE3, 0xCAE3 },
  34886. -{ 0xCAE4, 0xCAE4, 0xCAE4 },
  34887. -{ 0xCAE5, 0xCAE5, 0xCAE5 },
  34888. -{ 0xCAE6, 0xCAE6, 0xCAE6 },
  34889. -{ 0xCAE7, 0xCAE7, 0xCAE7 },
  34890. -{ 0xCAE8, 0xCAE8, 0xCAE8 },
  34891. -{ 0xCAE9, 0xCAE9, 0xCAE9 },
  34892. -{ 0xCAEA, 0xCAEA, 0xCAEA },
  34893. -{ 0xCAEB, 0xCAEB, 0xCAEB },
  34894. -{ 0xCAEC, 0xCAEC, 0xCAEC },
  34895. -{ 0xCAED, 0xCAED, 0xCAED },
  34896. -{ 0xCAEE, 0xCAEE, 0xCAEE },
  34897. -{ 0xCAEF, 0xCAEF, 0xCAEF },
  34898. -{ 0xCAF0, 0xCAF0, 0xCAF0 },
  34899. -{ 0xCAF1, 0xCAF1, 0xCAF1 },
  34900. -{ 0xCAF2, 0xCAF2, 0xCAF2 },
  34901. -{ 0xCAF3, 0xCAF3, 0xCAF3 },
  34902. -{ 0xCAF4, 0xCAF4, 0xCAF4 },
  34903. -{ 0xCAF5, 0xCAF5, 0xCAF5 },
  34904. -{ 0xCAF6, 0xCAF6, 0xCAF6 },
  34905. -{ 0xCAF7, 0xCAF7, 0xCAF7 },
  34906. -{ 0xCAF8, 0xCAF8, 0xCAF8 },
  34907. -{ 0xCAF9, 0xCAF9, 0xCAF9 },
  34908. -{ 0xCAFA, 0xCAFA, 0xCAFA },
  34909. -{ 0xCAFB, 0xCAFB, 0xCAFB },
  34910. -{ 0xCAFC, 0xCAFC, 0xCAFC },
  34911. -{ 0xCAFD, 0xCAFD, 0xCAFD },
  34912. -{ 0xCAFE, 0xCAFE, 0xCAFE },
  34913. -{ 0xCAFF, 0xCAFF, 0xCAFF },
  34914. -{ 0xCB00, 0xCB00, 0xCB00 },
  34915. -{ 0xCB01, 0xCB01, 0xCB01 },
  34916. -{ 0xCB02, 0xCB02, 0xCB02 },
  34917. -{ 0xCB03, 0xCB03, 0xCB03 },
  34918. -{ 0xCB04, 0xCB04, 0xCB04 },
  34919. -{ 0xCB05, 0xCB05, 0xCB05 },
  34920. -{ 0xCB06, 0xCB06, 0xCB06 },
  34921. -{ 0xCB07, 0xCB07, 0xCB07 },
  34922. -{ 0xCB08, 0xCB08, 0xCB08 },
  34923. -{ 0xCB09, 0xCB09, 0xCB09 },
  34924. -{ 0xCB0A, 0xCB0A, 0xCB0A },
  34925. -{ 0xCB0B, 0xCB0B, 0xCB0B },
  34926. -{ 0xCB0C, 0xCB0C, 0xCB0C },
  34927. -{ 0xCB0D, 0xCB0D, 0xCB0D },
  34928. -{ 0xCB0E, 0xCB0E, 0xCB0E },
  34929. -{ 0xCB0F, 0xCB0F, 0xCB0F },
  34930. -{ 0xCB10, 0xCB10, 0xCB10 },
  34931. -{ 0xCB11, 0xCB11, 0xCB11 },
  34932. -{ 0xCB12, 0xCB12, 0xCB12 },
  34933. -{ 0xCB13, 0xCB13, 0xCB13 },
  34934. -{ 0xCB14, 0xCB14, 0xCB14 },
  34935. -{ 0xCB15, 0xCB15, 0xCB15 },
  34936. -{ 0xCB16, 0xCB16, 0xCB16 },
  34937. -{ 0xCB17, 0xCB17, 0xCB17 },
  34938. -{ 0xCB18, 0xCB18, 0xCB18 },
  34939. -{ 0xCB19, 0xCB19, 0xCB19 },
  34940. -{ 0xCB1A, 0xCB1A, 0xCB1A },
  34941. -{ 0xCB1B, 0xCB1B, 0xCB1B },
  34942. -{ 0xCB1C, 0xCB1C, 0xCB1C },
  34943. -{ 0xCB1D, 0xCB1D, 0xCB1D },
  34944. -{ 0xCB1E, 0xCB1E, 0xCB1E },
  34945. -{ 0xCB1F, 0xCB1F, 0xCB1F },
  34946. -{ 0xCB20, 0xCB20, 0xCB20 },
  34947. -{ 0xCB21, 0xCB21, 0xCB21 },
  34948. -{ 0xCB22, 0xCB22, 0xCB22 },
  34949. -{ 0xCB23, 0xCB23, 0xCB23 },
  34950. -{ 0xCB24, 0xCB24, 0xCB24 },
  34951. -{ 0xCB25, 0xCB25, 0xCB25 },
  34952. -{ 0xCB26, 0xCB26, 0xCB26 },
  34953. -{ 0xCB27, 0xCB27, 0xCB27 },
  34954. -{ 0xCB28, 0xCB28, 0xCB28 },
  34955. -{ 0xCB29, 0xCB29, 0xCB29 },
  34956. -{ 0xCB2A, 0xCB2A, 0xCB2A },
  34957. -{ 0xCB2B, 0xCB2B, 0xCB2B },
  34958. -{ 0xCB2C, 0xCB2C, 0xCB2C },
  34959. -{ 0xCB2D, 0xCB2D, 0xCB2D },
  34960. -{ 0xCB2E, 0xCB2E, 0xCB2E },
  34961. -{ 0xCB2F, 0xCB2F, 0xCB2F },
  34962. -{ 0xCB30, 0xCB30, 0xCB30 },
  34963. -{ 0xCB31, 0xCB31, 0xCB31 },
  34964. -{ 0xCB32, 0xCB32, 0xCB32 },
  34965. -{ 0xCB33, 0xCB33, 0xCB33 },
  34966. -{ 0xCB34, 0xCB34, 0xCB34 },
  34967. -{ 0xCB35, 0xCB35, 0xCB35 },
  34968. -{ 0xCB36, 0xCB36, 0xCB36 },
  34969. -{ 0xCB37, 0xCB37, 0xCB37 },
  34970. -{ 0xCB38, 0xCB38, 0xCB38 },
  34971. -{ 0xCB39, 0xCB39, 0xCB39 },
  34972. -{ 0xCB3A, 0xCB3A, 0xCB3A },
  34973. -{ 0xCB3B, 0xCB3B, 0xCB3B },
  34974. -{ 0xCB3C, 0xCB3C, 0xCB3C },
  34975. -{ 0xCB3D, 0xCB3D, 0xCB3D },
  34976. -{ 0xCB3E, 0xCB3E, 0xCB3E },
  34977. -{ 0xCB3F, 0xCB3F, 0xCB3F },
  34978. -{ 0xCB40, 0xCB40, 0xCB40 },
  34979. -{ 0xCB41, 0xCB41, 0xCB41 },
  34980. -{ 0xCB42, 0xCB42, 0xCB42 },
  34981. -{ 0xCB43, 0xCB43, 0xCB43 },
  34982. -{ 0xCB44, 0xCB44, 0xCB44 },
  34983. -{ 0xCB45, 0xCB45, 0xCB45 },
  34984. -{ 0xCB46, 0xCB46, 0xCB46 },
  34985. -{ 0xCB47, 0xCB47, 0xCB47 },
  34986. -{ 0xCB48, 0xCB48, 0xCB48 },
  34987. -{ 0xCB49, 0xCB49, 0xCB49 },
  34988. -{ 0xCB4A, 0xCB4A, 0xCB4A },
  34989. -{ 0xCB4B, 0xCB4B, 0xCB4B },
  34990. -{ 0xCB4C, 0xCB4C, 0xCB4C },
  34991. -{ 0xCB4D, 0xCB4D, 0xCB4D },
  34992. -{ 0xCB4E, 0xCB4E, 0xCB4E },
  34993. -{ 0xCB4F, 0xCB4F, 0xCB4F },
  34994. -{ 0xCB50, 0xCB50, 0xCB50 },
  34995. -{ 0xCB51, 0xCB51, 0xCB51 },
  34996. -{ 0xCB52, 0xCB52, 0xCB52 },
  34997. -{ 0xCB53, 0xCB53, 0xCB53 },
  34998. -{ 0xCB54, 0xCB54, 0xCB54 },
  34999. -{ 0xCB55, 0xCB55, 0xCB55 },
  35000. -{ 0xCB56, 0xCB56, 0xCB56 },
  35001. -{ 0xCB57, 0xCB57, 0xCB57 },
  35002. -{ 0xCB58, 0xCB58, 0xCB58 },
  35003. -{ 0xCB59, 0xCB59, 0xCB59 },
  35004. -{ 0xCB5A, 0xCB5A, 0xCB5A },
  35005. -{ 0xCB5B, 0xCB5B, 0xCB5B },
  35006. -{ 0xCB5C, 0xCB5C, 0xCB5C },
  35007. -{ 0xCB5D, 0xCB5D, 0xCB5D },
  35008. -{ 0xCB5E, 0xCB5E, 0xCB5E },
  35009. -{ 0xCB5F, 0xCB5F, 0xCB5F },
  35010. -{ 0xCB60, 0xCB60, 0xCB60 },
  35011. -{ 0xCB61, 0xCB61, 0xCB61 },
  35012. -{ 0xCB62, 0xCB62, 0xCB62 },
  35013. -{ 0xCB63, 0xCB63, 0xCB63 },
  35014. -{ 0xCB64, 0xCB64, 0xCB64 },
  35015. -{ 0xCB65, 0xCB65, 0xCB65 },
  35016. -{ 0xCB66, 0xCB66, 0xCB66 },
  35017. -{ 0xCB67, 0xCB67, 0xCB67 },
  35018. -{ 0xCB68, 0xCB68, 0xCB68 },
  35019. -{ 0xCB69, 0xCB69, 0xCB69 },
  35020. -{ 0xCB6A, 0xCB6A, 0xCB6A },
  35021. -{ 0xCB6B, 0xCB6B, 0xCB6B },
  35022. -{ 0xCB6C, 0xCB6C, 0xCB6C },
  35023. -{ 0xCB6D, 0xCB6D, 0xCB6D },
  35024. -{ 0xCB6E, 0xCB6E, 0xCB6E },
  35025. -{ 0xCB6F, 0xCB6F, 0xCB6F },
  35026. -{ 0xCB70, 0xCB70, 0xCB70 },
  35027. -{ 0xCB71, 0xCB71, 0xCB71 },
  35028. -{ 0xCB72, 0xCB72, 0xCB72 },
  35029. -{ 0xCB73, 0xCB73, 0xCB73 },
  35030. -{ 0xCB74, 0xCB74, 0xCB74 },
  35031. -{ 0xCB75, 0xCB75, 0xCB75 },
  35032. -{ 0xCB76, 0xCB76, 0xCB76 },
  35033. -{ 0xCB77, 0xCB77, 0xCB77 },
  35034. -{ 0xCB78, 0xCB78, 0xCB78 },
  35035. -{ 0xCB79, 0xCB79, 0xCB79 },
  35036. -{ 0xCB7A, 0xCB7A, 0xCB7A },
  35037. -{ 0xCB7B, 0xCB7B, 0xCB7B },
  35038. -{ 0xCB7C, 0xCB7C, 0xCB7C },
  35039. -{ 0xCB7D, 0xCB7D, 0xCB7D },
  35040. -{ 0xCB7E, 0xCB7E, 0xCB7E },
  35041. -{ 0xCB7F, 0xCB7F, 0xCB7F },
  35042. -{ 0xCB80, 0xCB80, 0xCB80 },
  35043. -{ 0xCB81, 0xCB81, 0xCB81 },
  35044. -{ 0xCB82, 0xCB82, 0xCB82 },
  35045. -{ 0xCB83, 0xCB83, 0xCB83 },
  35046. -{ 0xCB84, 0xCB84, 0xCB84 },
  35047. -{ 0xCB85, 0xCB85, 0xCB85 },
  35048. -{ 0xCB86, 0xCB86, 0xCB86 },
  35049. -{ 0xCB87, 0xCB87, 0xCB87 },
  35050. -{ 0xCB88, 0xCB88, 0xCB88 },
  35051. -{ 0xCB89, 0xCB89, 0xCB89 },
  35052. -{ 0xCB8A, 0xCB8A, 0xCB8A },
  35053. -{ 0xCB8B, 0xCB8B, 0xCB8B },
  35054. -{ 0xCB8C, 0xCB8C, 0xCB8C },
  35055. -{ 0xCB8D, 0xCB8D, 0xCB8D },
  35056. -{ 0xCB8E, 0xCB8E, 0xCB8E },
  35057. -{ 0xCB8F, 0xCB8F, 0xCB8F },
  35058. -{ 0xCB90, 0xCB90, 0xCB90 },
  35059. -{ 0xCB91, 0xCB91, 0xCB91 },
  35060. -{ 0xCB92, 0xCB92, 0xCB92 },
  35061. -{ 0xCB93, 0xCB93, 0xCB93 },
  35062. -{ 0xCB94, 0xCB94, 0xCB94 },
  35063. -{ 0xCB95, 0xCB95, 0xCB95 },
  35064. -{ 0xCB96, 0xCB96, 0xCB96 },
  35065. -{ 0xCB97, 0xCB97, 0xCB97 },
  35066. -{ 0xCB98, 0xCB98, 0xCB98 },
  35067. -{ 0xCB99, 0xCB99, 0xCB99 },
  35068. -{ 0xCB9A, 0xCB9A, 0xCB9A },
  35069. -{ 0xCB9B, 0xCB9B, 0xCB9B },
  35070. -{ 0xCB9C, 0xCB9C, 0xCB9C },
  35071. -{ 0xCB9D, 0xCB9D, 0xCB9D },
  35072. -{ 0xCB9E, 0xCB9E, 0xCB9E },
  35073. -{ 0xCB9F, 0xCB9F, 0xCB9F },
  35074. -{ 0xCBA0, 0xCBA0, 0xCBA0 },
  35075. -{ 0xCBA1, 0xCBA1, 0xCBA1 },
  35076. -{ 0xCBA2, 0xCBA2, 0xCBA2 },
  35077. -{ 0xCBA3, 0xCBA3, 0xCBA3 },
  35078. -{ 0xCBA4, 0xCBA4, 0xCBA4 },
  35079. -{ 0xCBA5, 0xCBA5, 0xCBA5 },
  35080. -{ 0xCBA6, 0xCBA6, 0xCBA6 },
  35081. -{ 0xCBA7, 0xCBA7, 0xCBA7 },
  35082. -{ 0xCBA8, 0xCBA8, 0xCBA8 },
  35083. -{ 0xCBA9, 0xCBA9, 0xCBA9 },
  35084. -{ 0xCBAA, 0xCBAA, 0xCBAA },
  35085. -{ 0xCBAB, 0xCBAB, 0xCBAB },
  35086. -{ 0xCBAC, 0xCBAC, 0xCBAC },
  35087. -{ 0xCBAD, 0xCBAD, 0xCBAD },
  35088. -{ 0xCBAE, 0xCBAE, 0xCBAE },
  35089. -{ 0xCBAF, 0xCBAF, 0xCBAF },
  35090. -{ 0xCBB0, 0xCBB0, 0xCBB0 },
  35091. -{ 0xCBB1, 0xCBB1, 0xCBB1 },
  35092. -{ 0xCBB2, 0xCBB2, 0xCBB2 },
  35093. -{ 0xCBB3, 0xCBB3, 0xCBB3 },
  35094. -{ 0xCBB4, 0xCBB4, 0xCBB4 },
  35095. -{ 0xCBB5, 0xCBB5, 0xCBB5 },
  35096. -{ 0xCBB6, 0xCBB6, 0xCBB6 },
  35097. -{ 0xCBB7, 0xCBB7, 0xCBB7 },
  35098. -{ 0xCBB8, 0xCBB8, 0xCBB8 },
  35099. -{ 0xCBB9, 0xCBB9, 0xCBB9 },
  35100. -{ 0xCBBA, 0xCBBA, 0xCBBA },
  35101. -{ 0xCBBB, 0xCBBB, 0xCBBB },
  35102. -{ 0xCBBC, 0xCBBC, 0xCBBC },
  35103. -{ 0xCBBD, 0xCBBD, 0xCBBD },
  35104. -{ 0xCBBE, 0xCBBE, 0xCBBE },
  35105. -{ 0xCBBF, 0xCBBF, 0xCBBF },
  35106. -{ 0xCBC0, 0xCBC0, 0xCBC0 },
  35107. -{ 0xCBC1, 0xCBC1, 0xCBC1 },
  35108. -{ 0xCBC2, 0xCBC2, 0xCBC2 },
  35109. -{ 0xCBC3, 0xCBC3, 0xCBC3 },
  35110. -{ 0xCBC4, 0xCBC4, 0xCBC4 },
  35111. -{ 0xCBC5, 0xCBC5, 0xCBC5 },
  35112. -{ 0xCBC6, 0xCBC6, 0xCBC6 },
  35113. -{ 0xCBC7, 0xCBC7, 0xCBC7 },
  35114. -{ 0xCBC8, 0xCBC8, 0xCBC8 },
  35115. -{ 0xCBC9, 0xCBC9, 0xCBC9 },
  35116. -{ 0xCBCA, 0xCBCA, 0xCBCA },
  35117. -{ 0xCBCB, 0xCBCB, 0xCBCB },
  35118. -{ 0xCBCC, 0xCBCC, 0xCBCC },
  35119. -{ 0xCBCD, 0xCBCD, 0xCBCD },
  35120. -{ 0xCBCE, 0xCBCE, 0xCBCE },
  35121. -{ 0xCBCF, 0xCBCF, 0xCBCF },
  35122. -{ 0xCBD0, 0xCBD0, 0xCBD0 },
  35123. -{ 0xCBD1, 0xCBD1, 0xCBD1 },
  35124. -{ 0xCBD2, 0xCBD2, 0xCBD2 },
  35125. -{ 0xCBD3, 0xCBD3, 0xCBD3 },
  35126. -{ 0xCBD4, 0xCBD4, 0xCBD4 },
  35127. -{ 0xCBD5, 0xCBD5, 0xCBD5 },
  35128. -{ 0xCBD6, 0xCBD6, 0xCBD6 },
  35129. -{ 0xCBD7, 0xCBD7, 0xCBD7 },
  35130. -{ 0xCBD8, 0xCBD8, 0xCBD8 },
  35131. -{ 0xCBD9, 0xCBD9, 0xCBD9 },
  35132. -{ 0xCBDA, 0xCBDA, 0xCBDA },
  35133. -{ 0xCBDB, 0xCBDB, 0xCBDB },
  35134. -{ 0xCBDC, 0xCBDC, 0xCBDC },
  35135. -{ 0xCBDD, 0xCBDD, 0xCBDD },
  35136. -{ 0xCBDE, 0xCBDE, 0xCBDE },
  35137. -{ 0xCBDF, 0xCBDF, 0xCBDF },
  35138. -{ 0xCBE0, 0xCBE0, 0xCBE0 },
  35139. -{ 0xCBE1, 0xCBE1, 0xCBE1 },
  35140. -{ 0xCBE2, 0xCBE2, 0xCBE2 },
  35141. -{ 0xCBE3, 0xCBE3, 0xCBE3 },
  35142. -{ 0xCBE4, 0xCBE4, 0xCBE4 },
  35143. -{ 0xCBE5, 0xCBE5, 0xCBE5 },
  35144. -{ 0xCBE6, 0xCBE6, 0xCBE6 },
  35145. -{ 0xCBE7, 0xCBE7, 0xCBE7 },
  35146. -{ 0xCBE8, 0xCBE8, 0xCBE8 },
  35147. -{ 0xCBE9, 0xCBE9, 0xCBE9 },
  35148. -{ 0xCBEA, 0xCBEA, 0xCBEA },
  35149. -{ 0xCBEB, 0xCBEB, 0xCBEB },
  35150. -{ 0xCBEC, 0xCBEC, 0xCBEC },
  35151. -{ 0xCBED, 0xCBED, 0xCBED },
  35152. -{ 0xCBEE, 0xCBEE, 0xCBEE },
  35153. -{ 0xCBEF, 0xCBEF, 0xCBEF },
  35154. -{ 0xCBF0, 0xCBF0, 0xCBF0 },
  35155. -{ 0xCBF1, 0xCBF1, 0xCBF1 },
  35156. -{ 0xCBF2, 0xCBF2, 0xCBF2 },
  35157. -{ 0xCBF3, 0xCBF3, 0xCBF3 },
  35158. -{ 0xCBF4, 0xCBF4, 0xCBF4 },
  35159. -{ 0xCBF5, 0xCBF5, 0xCBF5 },
  35160. -{ 0xCBF6, 0xCBF6, 0xCBF6 },
  35161. -{ 0xCBF7, 0xCBF7, 0xCBF7 },
  35162. -{ 0xCBF8, 0xCBF8, 0xCBF8 },
  35163. -{ 0xCBF9, 0xCBF9, 0xCBF9 },
  35164. -{ 0xCBFA, 0xCBFA, 0xCBFA },
  35165. -{ 0xCBFB, 0xCBFB, 0xCBFB },
  35166. -{ 0xCBFC, 0xCBFC, 0xCBFC },
  35167. -{ 0xCBFD, 0xCBFD, 0xCBFD },
  35168. -{ 0xCBFE, 0xCBFE, 0xCBFE },
  35169. -{ 0xCBFF, 0xCBFF, 0xCBFF },
  35170. -{ 0xCC00, 0xCC00, 0xCC00 },
  35171. -{ 0xCC01, 0xCC01, 0xCC01 },
  35172. -{ 0xCC02, 0xCC02, 0xCC02 },
  35173. -{ 0xCC03, 0xCC03, 0xCC03 },
  35174. -{ 0xCC04, 0xCC04, 0xCC04 },
  35175. -{ 0xCC05, 0xCC05, 0xCC05 },
  35176. -{ 0xCC06, 0xCC06, 0xCC06 },
  35177. -{ 0xCC07, 0xCC07, 0xCC07 },
  35178. -{ 0xCC08, 0xCC08, 0xCC08 },
  35179. -{ 0xCC09, 0xCC09, 0xCC09 },
  35180. -{ 0xCC0A, 0xCC0A, 0xCC0A },
  35181. -{ 0xCC0B, 0xCC0B, 0xCC0B },
  35182. -{ 0xCC0C, 0xCC0C, 0xCC0C },
  35183. -{ 0xCC0D, 0xCC0D, 0xCC0D },
  35184. -{ 0xCC0E, 0xCC0E, 0xCC0E },
  35185. -{ 0xCC0F, 0xCC0F, 0xCC0F },
  35186. -{ 0xCC10, 0xCC10, 0xCC10 },
  35187. -{ 0xCC11, 0xCC11, 0xCC11 },
  35188. -{ 0xCC12, 0xCC12, 0xCC12 },
  35189. -{ 0xCC13, 0xCC13, 0xCC13 },
  35190. -{ 0xCC14, 0xCC14, 0xCC14 },
  35191. -{ 0xCC15, 0xCC15, 0xCC15 },
  35192. -{ 0xCC16, 0xCC16, 0xCC16 },
  35193. -{ 0xCC17, 0xCC17, 0xCC17 },
  35194. -{ 0xCC18, 0xCC18, 0xCC18 },
  35195. -{ 0xCC19, 0xCC19, 0xCC19 },
  35196. -{ 0xCC1A, 0xCC1A, 0xCC1A },
  35197. -{ 0xCC1B, 0xCC1B, 0xCC1B },
  35198. -{ 0xCC1C, 0xCC1C, 0xCC1C },
  35199. -{ 0xCC1D, 0xCC1D, 0xCC1D },
  35200. -{ 0xCC1E, 0xCC1E, 0xCC1E },
  35201. -{ 0xCC1F, 0xCC1F, 0xCC1F },
  35202. -{ 0xCC20, 0xCC20, 0xCC20 },
  35203. -{ 0xCC21, 0xCC21, 0xCC21 },
  35204. -{ 0xCC22, 0xCC22, 0xCC22 },
  35205. -{ 0xCC23, 0xCC23, 0xCC23 },
  35206. -{ 0xCC24, 0xCC24, 0xCC24 },
  35207. -{ 0xCC25, 0xCC25, 0xCC25 },
  35208. -{ 0xCC26, 0xCC26, 0xCC26 },
  35209. -{ 0xCC27, 0xCC27, 0xCC27 },
  35210. -{ 0xCC28, 0xCC28, 0xCC28 },
  35211. -{ 0xCC29, 0xCC29, 0xCC29 },
  35212. -{ 0xCC2A, 0xCC2A, 0xCC2A },
  35213. -{ 0xCC2B, 0xCC2B, 0xCC2B },
  35214. -{ 0xCC2C, 0xCC2C, 0xCC2C },
  35215. -{ 0xCC2D, 0xCC2D, 0xCC2D },
  35216. -{ 0xCC2E, 0xCC2E, 0xCC2E },
  35217. -{ 0xCC2F, 0xCC2F, 0xCC2F },
  35218. -{ 0xCC30, 0xCC30, 0xCC30 },
  35219. -{ 0xCC31, 0xCC31, 0xCC31 },
  35220. -{ 0xCC32, 0xCC32, 0xCC32 },
  35221. -{ 0xCC33, 0xCC33, 0xCC33 },
  35222. -{ 0xCC34, 0xCC34, 0xCC34 },
  35223. -{ 0xCC35, 0xCC35, 0xCC35 },
  35224. -{ 0xCC36, 0xCC36, 0xCC36 },
  35225. -{ 0xCC37, 0xCC37, 0xCC37 },
  35226. -{ 0xCC38, 0xCC38, 0xCC38 },
  35227. -{ 0xCC39, 0xCC39, 0xCC39 },
  35228. -{ 0xCC3A, 0xCC3A, 0xCC3A },
  35229. -{ 0xCC3B, 0xCC3B, 0xCC3B },
  35230. -{ 0xCC3C, 0xCC3C, 0xCC3C },
  35231. -{ 0xCC3D, 0xCC3D, 0xCC3D },
  35232. -{ 0xCC3E, 0xCC3E, 0xCC3E },
  35233. -{ 0xCC3F, 0xCC3F, 0xCC3F },
  35234. -{ 0xCC40, 0xCC40, 0xCC40 },
  35235. -{ 0xCC41, 0xCC41, 0xCC41 },
  35236. -{ 0xCC42, 0xCC42, 0xCC42 },
  35237. -{ 0xCC43, 0xCC43, 0xCC43 },
  35238. -{ 0xCC44, 0xCC44, 0xCC44 },
  35239. -{ 0xCC45, 0xCC45, 0xCC45 },
  35240. -{ 0xCC46, 0xCC46, 0xCC46 },
  35241. -{ 0xCC47, 0xCC47, 0xCC47 },
  35242. -{ 0xCC48, 0xCC48, 0xCC48 },
  35243. -{ 0xCC49, 0xCC49, 0xCC49 },
  35244. -{ 0xCC4A, 0xCC4A, 0xCC4A },
  35245. -{ 0xCC4B, 0xCC4B, 0xCC4B },
  35246. -{ 0xCC4C, 0xCC4C, 0xCC4C },
  35247. -{ 0xCC4D, 0xCC4D, 0xCC4D },
  35248. -{ 0xCC4E, 0xCC4E, 0xCC4E },
  35249. -{ 0xCC4F, 0xCC4F, 0xCC4F },
  35250. -{ 0xCC50, 0xCC50, 0xCC50 },
  35251. -{ 0xCC51, 0xCC51, 0xCC51 },
  35252. -{ 0xCC52, 0xCC52, 0xCC52 },
  35253. -{ 0xCC53, 0xCC53, 0xCC53 },
  35254. -{ 0xCC54, 0xCC54, 0xCC54 },
  35255. -{ 0xCC55, 0xCC55, 0xCC55 },
  35256. -{ 0xCC56, 0xCC56, 0xCC56 },
  35257. -{ 0xCC57, 0xCC57, 0xCC57 },
  35258. -{ 0xCC58, 0xCC58, 0xCC58 },
  35259. -{ 0xCC59, 0xCC59, 0xCC59 },
  35260. -{ 0xCC5A, 0xCC5A, 0xCC5A },
  35261. -{ 0xCC5B, 0xCC5B, 0xCC5B },
  35262. -{ 0xCC5C, 0xCC5C, 0xCC5C },
  35263. -{ 0xCC5D, 0xCC5D, 0xCC5D },
  35264. -{ 0xCC5E, 0xCC5E, 0xCC5E },
  35265. -{ 0xCC5F, 0xCC5F, 0xCC5F },
  35266. -{ 0xCC60, 0xCC60, 0xCC60 },
  35267. -{ 0xCC61, 0xCC61, 0xCC61 },
  35268. -{ 0xCC62, 0xCC62, 0xCC62 },
  35269. -{ 0xCC63, 0xCC63, 0xCC63 },
  35270. -{ 0xCC64, 0xCC64, 0xCC64 },
  35271. -{ 0xCC65, 0xCC65, 0xCC65 },
  35272. -{ 0xCC66, 0xCC66, 0xCC66 },
  35273. -{ 0xCC67, 0xCC67, 0xCC67 },
  35274. -{ 0xCC68, 0xCC68, 0xCC68 },
  35275. -{ 0xCC69, 0xCC69, 0xCC69 },
  35276. -{ 0xCC6A, 0xCC6A, 0xCC6A },
  35277. -{ 0xCC6B, 0xCC6B, 0xCC6B },
  35278. -{ 0xCC6C, 0xCC6C, 0xCC6C },
  35279. -{ 0xCC6D, 0xCC6D, 0xCC6D },
  35280. -{ 0xCC6E, 0xCC6E, 0xCC6E },
  35281. -{ 0xCC6F, 0xCC6F, 0xCC6F },
  35282. -{ 0xCC70, 0xCC70, 0xCC70 },
  35283. -{ 0xCC71, 0xCC71, 0xCC71 },
  35284. -{ 0xCC72, 0xCC72, 0xCC72 },
  35285. -{ 0xCC73, 0xCC73, 0xCC73 },
  35286. -{ 0xCC74, 0xCC74, 0xCC74 },
  35287. -{ 0xCC75, 0xCC75, 0xCC75 },
  35288. -{ 0xCC76, 0xCC76, 0xCC76 },
  35289. -{ 0xCC77, 0xCC77, 0xCC77 },
  35290. -{ 0xCC78, 0xCC78, 0xCC78 },
  35291. -{ 0xCC79, 0xCC79, 0xCC79 },
  35292. -{ 0xCC7A, 0xCC7A, 0xCC7A },
  35293. -{ 0xCC7B, 0xCC7B, 0xCC7B },
  35294. -{ 0xCC7C, 0xCC7C, 0xCC7C },
  35295. -{ 0xCC7D, 0xCC7D, 0xCC7D },
  35296. -{ 0xCC7E, 0xCC7E, 0xCC7E },
  35297. -{ 0xCC7F, 0xCC7F, 0xCC7F },
  35298. -{ 0xCC80, 0xCC80, 0xCC80 },
  35299. -{ 0xCC81, 0xCC81, 0xCC81 },
  35300. -{ 0xCC82, 0xCC82, 0xCC82 },
  35301. -{ 0xCC83, 0xCC83, 0xCC83 },
  35302. -{ 0xCC84, 0xCC84, 0xCC84 },
  35303. -{ 0xCC85, 0xCC85, 0xCC85 },
  35304. -{ 0xCC86, 0xCC86, 0xCC86 },
  35305. -{ 0xCC87, 0xCC87, 0xCC87 },
  35306. -{ 0xCC88, 0xCC88, 0xCC88 },
  35307. -{ 0xCC89, 0xCC89, 0xCC89 },
  35308. -{ 0xCC8A, 0xCC8A, 0xCC8A },
  35309. -{ 0xCC8B, 0xCC8B, 0xCC8B },
  35310. -{ 0xCC8C, 0xCC8C, 0xCC8C },
  35311. -{ 0xCC8D, 0xCC8D, 0xCC8D },
  35312. -{ 0xCC8E, 0xCC8E, 0xCC8E },
  35313. -{ 0xCC8F, 0xCC8F, 0xCC8F },
  35314. -{ 0xCC90, 0xCC90, 0xCC90 },
  35315. -{ 0xCC91, 0xCC91, 0xCC91 },
  35316. -{ 0xCC92, 0xCC92, 0xCC92 },
  35317. -{ 0xCC93, 0xCC93, 0xCC93 },
  35318. -{ 0xCC94, 0xCC94, 0xCC94 },
  35319. -{ 0xCC95, 0xCC95, 0xCC95 },
  35320. -{ 0xCC96, 0xCC96, 0xCC96 },
  35321. -{ 0xCC97, 0xCC97, 0xCC97 },
  35322. -{ 0xCC98, 0xCC98, 0xCC98 },
  35323. -{ 0xCC99, 0xCC99, 0xCC99 },
  35324. -{ 0xCC9A, 0xCC9A, 0xCC9A },
  35325. -{ 0xCC9B, 0xCC9B, 0xCC9B },
  35326. -{ 0xCC9C, 0xCC9C, 0xCC9C },
  35327. -{ 0xCC9D, 0xCC9D, 0xCC9D },
  35328. -{ 0xCC9E, 0xCC9E, 0xCC9E },
  35329. -{ 0xCC9F, 0xCC9F, 0xCC9F },
  35330. -{ 0xCCA0, 0xCCA0, 0xCCA0 },
  35331. -{ 0xCCA1, 0xCCA1, 0xCCA1 },
  35332. -{ 0xCCA2, 0xCCA2, 0xCCA2 },
  35333. -{ 0xCCA3, 0xCCA3, 0xCCA3 },
  35334. -{ 0xCCA4, 0xCCA4, 0xCCA4 },
  35335. -{ 0xCCA5, 0xCCA5, 0xCCA5 },
  35336. -{ 0xCCA6, 0xCCA6, 0xCCA6 },
  35337. -{ 0xCCA7, 0xCCA7, 0xCCA7 },
  35338. -{ 0xCCA8, 0xCCA8, 0xCCA8 },
  35339. -{ 0xCCA9, 0xCCA9, 0xCCA9 },
  35340. -{ 0xCCAA, 0xCCAA, 0xCCAA },
  35341. -{ 0xCCAB, 0xCCAB, 0xCCAB },
  35342. -{ 0xCCAC, 0xCCAC, 0xCCAC },
  35343. -{ 0xCCAD, 0xCCAD, 0xCCAD },
  35344. -{ 0xCCAE, 0xCCAE, 0xCCAE },
  35345. -{ 0xCCAF, 0xCCAF, 0xCCAF },
  35346. -{ 0xCCB0, 0xCCB0, 0xCCB0 },
  35347. -{ 0xCCB1, 0xCCB1, 0xCCB1 },
  35348. -{ 0xCCB2, 0xCCB2, 0xCCB2 },
  35349. -{ 0xCCB3, 0xCCB3, 0xCCB3 },
  35350. -{ 0xCCB4, 0xCCB4, 0xCCB4 },
  35351. -{ 0xCCB5, 0xCCB5, 0xCCB5 },
  35352. -{ 0xCCB6, 0xCCB6, 0xCCB6 },
  35353. -{ 0xCCB7, 0xCCB7, 0xCCB7 },
  35354. -{ 0xCCB8, 0xCCB8, 0xCCB8 },
  35355. -{ 0xCCB9, 0xCCB9, 0xCCB9 },
  35356. -{ 0xCCBA, 0xCCBA, 0xCCBA },
  35357. -{ 0xCCBB, 0xCCBB, 0xCCBB },
  35358. -{ 0xCCBC, 0xCCBC, 0xCCBC },
  35359. -{ 0xCCBD, 0xCCBD, 0xCCBD },
  35360. -{ 0xCCBE, 0xCCBE, 0xCCBE },
  35361. -{ 0xCCBF, 0xCCBF, 0xCCBF },
  35362. -{ 0xCCC0, 0xCCC0, 0xCCC0 },
  35363. -{ 0xCCC1, 0xCCC1, 0xCCC1 },
  35364. -{ 0xCCC2, 0xCCC2, 0xCCC2 },
  35365. -{ 0xCCC3, 0xCCC3, 0xCCC3 },
  35366. -{ 0xCCC4, 0xCCC4, 0xCCC4 },
  35367. -{ 0xCCC5, 0xCCC5, 0xCCC5 },
  35368. -{ 0xCCC6, 0xCCC6, 0xCCC6 },
  35369. -{ 0xCCC7, 0xCCC7, 0xCCC7 },
  35370. -{ 0xCCC8, 0xCCC8, 0xCCC8 },
  35371. -{ 0xCCC9, 0xCCC9, 0xCCC9 },
  35372. -{ 0xCCCA, 0xCCCA, 0xCCCA },
  35373. -{ 0xCCCB, 0xCCCB, 0xCCCB },
  35374. -{ 0xCCCC, 0xCCCC, 0xCCCC },
  35375. -{ 0xCCCD, 0xCCCD, 0xCCCD },
  35376. -{ 0xCCCE, 0xCCCE, 0xCCCE },
  35377. -{ 0xCCCF, 0xCCCF, 0xCCCF },
  35378. -{ 0xCCD0, 0xCCD0, 0xCCD0 },
  35379. -{ 0xCCD1, 0xCCD1, 0xCCD1 },
  35380. -{ 0xCCD2, 0xCCD2, 0xCCD2 },
  35381. -{ 0xCCD3, 0xCCD3, 0xCCD3 },
  35382. -{ 0xCCD4, 0xCCD4, 0xCCD4 },
  35383. -{ 0xCCD5, 0xCCD5, 0xCCD5 },
  35384. -{ 0xCCD6, 0xCCD6, 0xCCD6 },
  35385. -{ 0xCCD7, 0xCCD7, 0xCCD7 },
  35386. -{ 0xCCD8, 0xCCD8, 0xCCD8 },
  35387. -{ 0xCCD9, 0xCCD9, 0xCCD9 },
  35388. -{ 0xCCDA, 0xCCDA, 0xCCDA },
  35389. -{ 0xCCDB, 0xCCDB, 0xCCDB },
  35390. -{ 0xCCDC, 0xCCDC, 0xCCDC },
  35391. -{ 0xCCDD, 0xCCDD, 0xCCDD },
  35392. -{ 0xCCDE, 0xCCDE, 0xCCDE },
  35393. -{ 0xCCDF, 0xCCDF, 0xCCDF },
  35394. -{ 0xCCE0, 0xCCE0, 0xCCE0 },
  35395. -{ 0xCCE1, 0xCCE1, 0xCCE1 },
  35396. -{ 0xCCE2, 0xCCE2, 0xCCE2 },
  35397. -{ 0xCCE3, 0xCCE3, 0xCCE3 },
  35398. -{ 0xCCE4, 0xCCE4, 0xCCE4 },
  35399. -{ 0xCCE5, 0xCCE5, 0xCCE5 },
  35400. -{ 0xCCE6, 0xCCE6, 0xCCE6 },
  35401. -{ 0xCCE7, 0xCCE7, 0xCCE7 },
  35402. -{ 0xCCE8, 0xCCE8, 0xCCE8 },
  35403. -{ 0xCCE9, 0xCCE9, 0xCCE9 },
  35404. -{ 0xCCEA, 0xCCEA, 0xCCEA },
  35405. -{ 0xCCEB, 0xCCEB, 0xCCEB },
  35406. -{ 0xCCEC, 0xCCEC, 0xCCEC },
  35407. -{ 0xCCED, 0xCCED, 0xCCED },
  35408. -{ 0xCCEE, 0xCCEE, 0xCCEE },
  35409. -{ 0xCCEF, 0xCCEF, 0xCCEF },
  35410. -{ 0xCCF0, 0xCCF0, 0xCCF0 },
  35411. -{ 0xCCF1, 0xCCF1, 0xCCF1 },
  35412. -{ 0xCCF2, 0xCCF2, 0xCCF2 },
  35413. -{ 0xCCF3, 0xCCF3, 0xCCF3 },
  35414. -{ 0xCCF4, 0xCCF4, 0xCCF4 },
  35415. -{ 0xCCF5, 0xCCF5, 0xCCF5 },
  35416. -{ 0xCCF6, 0xCCF6, 0xCCF6 },
  35417. -{ 0xCCF7, 0xCCF7, 0xCCF7 },
  35418. -{ 0xCCF8, 0xCCF8, 0xCCF8 },
  35419. -{ 0xCCF9, 0xCCF9, 0xCCF9 },
  35420. -{ 0xCCFA, 0xCCFA, 0xCCFA },
  35421. -{ 0xCCFB, 0xCCFB, 0xCCFB },
  35422. -{ 0xCCFC, 0xCCFC, 0xCCFC },
  35423. -{ 0xCCFD, 0xCCFD, 0xCCFD },
  35424. -{ 0xCCFE, 0xCCFE, 0xCCFE },
  35425. -{ 0xCCFF, 0xCCFF, 0xCCFF },
  35426. -{ 0xCD00, 0xCD00, 0xCD00 },
  35427. -{ 0xCD01, 0xCD01, 0xCD01 },
  35428. -{ 0xCD02, 0xCD02, 0xCD02 },
  35429. -{ 0xCD03, 0xCD03, 0xCD03 },
  35430. -{ 0xCD04, 0xCD04, 0xCD04 },
  35431. -{ 0xCD05, 0xCD05, 0xCD05 },
  35432. -{ 0xCD06, 0xCD06, 0xCD06 },
  35433. -{ 0xCD07, 0xCD07, 0xCD07 },
  35434. -{ 0xCD08, 0xCD08, 0xCD08 },
  35435. -{ 0xCD09, 0xCD09, 0xCD09 },
  35436. -{ 0xCD0A, 0xCD0A, 0xCD0A },
  35437. -{ 0xCD0B, 0xCD0B, 0xCD0B },
  35438. -{ 0xCD0C, 0xCD0C, 0xCD0C },
  35439. -{ 0xCD0D, 0xCD0D, 0xCD0D },
  35440. -{ 0xCD0E, 0xCD0E, 0xCD0E },
  35441. -{ 0xCD0F, 0xCD0F, 0xCD0F },
  35442. -{ 0xCD10, 0xCD10, 0xCD10 },
  35443. -{ 0xCD11, 0xCD11, 0xCD11 },
  35444. -{ 0xCD12, 0xCD12, 0xCD12 },
  35445. -{ 0xCD13, 0xCD13, 0xCD13 },
  35446. -{ 0xCD14, 0xCD14, 0xCD14 },
  35447. -{ 0xCD15, 0xCD15, 0xCD15 },
  35448. -{ 0xCD16, 0xCD16, 0xCD16 },
  35449. -{ 0xCD17, 0xCD17, 0xCD17 },
  35450. -{ 0xCD18, 0xCD18, 0xCD18 },
  35451. -{ 0xCD19, 0xCD19, 0xCD19 },
  35452. -{ 0xCD1A, 0xCD1A, 0xCD1A },
  35453. -{ 0xCD1B, 0xCD1B, 0xCD1B },
  35454. -{ 0xCD1C, 0xCD1C, 0xCD1C },
  35455. -{ 0xCD1D, 0xCD1D, 0xCD1D },
  35456. -{ 0xCD1E, 0xCD1E, 0xCD1E },
  35457. -{ 0xCD1F, 0xCD1F, 0xCD1F },
  35458. -{ 0xCD20, 0xCD20, 0xCD20 },
  35459. -{ 0xCD21, 0xCD21, 0xCD21 },
  35460. -{ 0xCD22, 0xCD22, 0xCD22 },
  35461. -{ 0xCD23, 0xCD23, 0xCD23 },
  35462. -{ 0xCD24, 0xCD24, 0xCD24 },
  35463. -{ 0xCD25, 0xCD25, 0xCD25 },
  35464. -{ 0xCD26, 0xCD26, 0xCD26 },
  35465. -{ 0xCD27, 0xCD27, 0xCD27 },
  35466. -{ 0xCD28, 0xCD28, 0xCD28 },
  35467. -{ 0xCD29, 0xCD29, 0xCD29 },
  35468. -{ 0xCD2A, 0xCD2A, 0xCD2A },
  35469. -{ 0xCD2B, 0xCD2B, 0xCD2B },
  35470. -{ 0xCD2C, 0xCD2C, 0xCD2C },
  35471. -{ 0xCD2D, 0xCD2D, 0xCD2D },
  35472. -{ 0xCD2E, 0xCD2E, 0xCD2E },
  35473. -{ 0xCD2F, 0xCD2F, 0xCD2F },
  35474. -{ 0xCD30, 0xCD30, 0xCD30 },
  35475. -{ 0xCD31, 0xCD31, 0xCD31 },
  35476. -{ 0xCD32, 0xCD32, 0xCD32 },
  35477. -{ 0xCD33, 0xCD33, 0xCD33 },
  35478. -{ 0xCD34, 0xCD34, 0xCD34 },
  35479. -{ 0xCD35, 0xCD35, 0xCD35 },
  35480. -{ 0xCD36, 0xCD36, 0xCD36 },
  35481. -{ 0xCD37, 0xCD37, 0xCD37 },
  35482. -{ 0xCD38, 0xCD38, 0xCD38 },
  35483. -{ 0xCD39, 0xCD39, 0xCD39 },
  35484. -{ 0xCD3A, 0xCD3A, 0xCD3A },
  35485. -{ 0xCD3B, 0xCD3B, 0xCD3B },
  35486. -{ 0xCD3C, 0xCD3C, 0xCD3C },
  35487. -{ 0xCD3D, 0xCD3D, 0xCD3D },
  35488. -{ 0xCD3E, 0xCD3E, 0xCD3E },
  35489. -{ 0xCD3F, 0xCD3F, 0xCD3F },
  35490. -{ 0xCD40, 0xCD40, 0xCD40 },
  35491. -{ 0xCD41, 0xCD41, 0xCD41 },
  35492. -{ 0xCD42, 0xCD42, 0xCD42 },
  35493. -{ 0xCD43, 0xCD43, 0xCD43 },
  35494. -{ 0xCD44, 0xCD44, 0xCD44 },
  35495. -{ 0xCD45, 0xCD45, 0xCD45 },
  35496. -{ 0xCD46, 0xCD46, 0xCD46 },
  35497. -{ 0xCD47, 0xCD47, 0xCD47 },
  35498. -{ 0xCD48, 0xCD48, 0xCD48 },
  35499. -{ 0xCD49, 0xCD49, 0xCD49 },
  35500. -{ 0xCD4A, 0xCD4A, 0xCD4A },
  35501. -{ 0xCD4B, 0xCD4B, 0xCD4B },
  35502. -{ 0xCD4C, 0xCD4C, 0xCD4C },
  35503. -{ 0xCD4D, 0xCD4D, 0xCD4D },
  35504. -{ 0xCD4E, 0xCD4E, 0xCD4E },
  35505. -{ 0xCD4F, 0xCD4F, 0xCD4F },
  35506. -{ 0xCD50, 0xCD50, 0xCD50 },
  35507. -{ 0xCD51, 0xCD51, 0xCD51 },
  35508. -{ 0xCD52, 0xCD52, 0xCD52 },
  35509. -{ 0xCD53, 0xCD53, 0xCD53 },
  35510. -{ 0xCD54, 0xCD54, 0xCD54 },
  35511. -{ 0xCD55, 0xCD55, 0xCD55 },
  35512. -{ 0xCD56, 0xCD56, 0xCD56 },
  35513. -{ 0xCD57, 0xCD57, 0xCD57 },
  35514. -{ 0xCD58, 0xCD58, 0xCD58 },
  35515. -{ 0xCD59, 0xCD59, 0xCD59 },
  35516. -{ 0xCD5A, 0xCD5A, 0xCD5A },
  35517. -{ 0xCD5B, 0xCD5B, 0xCD5B },
  35518. -{ 0xCD5C, 0xCD5C, 0xCD5C },
  35519. -{ 0xCD5D, 0xCD5D, 0xCD5D },
  35520. -{ 0xCD5E, 0xCD5E, 0xCD5E },
  35521. -{ 0xCD5F, 0xCD5F, 0xCD5F },
  35522. -{ 0xCD60, 0xCD60, 0xCD60 },
  35523. -{ 0xCD61, 0xCD61, 0xCD61 },
  35524. -{ 0xCD62, 0xCD62, 0xCD62 },
  35525. -{ 0xCD63, 0xCD63, 0xCD63 },
  35526. -{ 0xCD64, 0xCD64, 0xCD64 },
  35527. -{ 0xCD65, 0xCD65, 0xCD65 },
  35528. -{ 0xCD66, 0xCD66, 0xCD66 },
  35529. -{ 0xCD67, 0xCD67, 0xCD67 },
  35530. -{ 0xCD68, 0xCD68, 0xCD68 },
  35531. -{ 0xCD69, 0xCD69, 0xCD69 },
  35532. -{ 0xCD6A, 0xCD6A, 0xCD6A },
  35533. -{ 0xCD6B, 0xCD6B, 0xCD6B },
  35534. -{ 0xCD6C, 0xCD6C, 0xCD6C },
  35535. -{ 0xCD6D, 0xCD6D, 0xCD6D },
  35536. -{ 0xCD6E, 0xCD6E, 0xCD6E },
  35537. -{ 0xCD6F, 0xCD6F, 0xCD6F },
  35538. -{ 0xCD70, 0xCD70, 0xCD70 },
  35539. -{ 0xCD71, 0xCD71, 0xCD71 },
  35540. -{ 0xCD72, 0xCD72, 0xCD72 },
  35541. -{ 0xCD73, 0xCD73, 0xCD73 },
  35542. -{ 0xCD74, 0xCD74, 0xCD74 },
  35543. -{ 0xCD75, 0xCD75, 0xCD75 },
  35544. -{ 0xCD76, 0xCD76, 0xCD76 },
  35545. -{ 0xCD77, 0xCD77, 0xCD77 },
  35546. -{ 0xCD78, 0xCD78, 0xCD78 },
  35547. -{ 0xCD79, 0xCD79, 0xCD79 },
  35548. -{ 0xCD7A, 0xCD7A, 0xCD7A },
  35549. -{ 0xCD7B, 0xCD7B, 0xCD7B },
  35550. -{ 0xCD7C, 0xCD7C, 0xCD7C },
  35551. -{ 0xCD7D, 0xCD7D, 0xCD7D },
  35552. -{ 0xCD7E, 0xCD7E, 0xCD7E },
  35553. -{ 0xCD7F, 0xCD7F, 0xCD7F },
  35554. -{ 0xCD80, 0xCD80, 0xCD80 },
  35555. -{ 0xCD81, 0xCD81, 0xCD81 },
  35556. -{ 0xCD82, 0xCD82, 0xCD82 },
  35557. -{ 0xCD83, 0xCD83, 0xCD83 },
  35558. -{ 0xCD84, 0xCD84, 0xCD84 },
  35559. -{ 0xCD85, 0xCD85, 0xCD85 },
  35560. -{ 0xCD86, 0xCD86, 0xCD86 },
  35561. -{ 0xCD87, 0xCD87, 0xCD87 },
  35562. -{ 0xCD88, 0xCD88, 0xCD88 },
  35563. -{ 0xCD89, 0xCD89, 0xCD89 },
  35564. -{ 0xCD8A, 0xCD8A, 0xCD8A },
  35565. -{ 0xCD8B, 0xCD8B, 0xCD8B },
  35566. -{ 0xCD8C, 0xCD8C, 0xCD8C },
  35567. -{ 0xCD8D, 0xCD8D, 0xCD8D },
  35568. -{ 0xCD8E, 0xCD8E, 0xCD8E },
  35569. -{ 0xCD8F, 0xCD8F, 0xCD8F },
  35570. -{ 0xCD90, 0xCD90, 0xCD90 },
  35571. -{ 0xCD91, 0xCD91, 0xCD91 },
  35572. -{ 0xCD92, 0xCD92, 0xCD92 },
  35573. -{ 0xCD93, 0xCD93, 0xCD93 },
  35574. -{ 0xCD94, 0xCD94, 0xCD94 },
  35575. -{ 0xCD95, 0xCD95, 0xCD95 },
  35576. -{ 0xCD96, 0xCD96, 0xCD96 },
  35577. -{ 0xCD97, 0xCD97, 0xCD97 },
  35578. -{ 0xCD98, 0xCD98, 0xCD98 },
  35579. -{ 0xCD99, 0xCD99, 0xCD99 },
  35580. -{ 0xCD9A, 0xCD9A, 0xCD9A },
  35581. -{ 0xCD9B, 0xCD9B, 0xCD9B },
  35582. -{ 0xCD9C, 0xCD9C, 0xCD9C },
  35583. -{ 0xCD9D, 0xCD9D, 0xCD9D },
  35584. -{ 0xCD9E, 0xCD9E, 0xCD9E },
  35585. -{ 0xCD9F, 0xCD9F, 0xCD9F },
  35586. -{ 0xCDA0, 0xCDA0, 0xCDA0 },
  35587. -{ 0xCDA1, 0xCDA1, 0xCDA1 },
  35588. -{ 0xCDA2, 0xCDA2, 0xCDA2 },
  35589. -{ 0xCDA3, 0xCDA3, 0xCDA3 },
  35590. -{ 0xCDA4, 0xCDA4, 0xCDA4 },
  35591. -{ 0xCDA5, 0xCDA5, 0xCDA5 },
  35592. -{ 0xCDA6, 0xCDA6, 0xCDA6 },
  35593. -{ 0xCDA7, 0xCDA7, 0xCDA7 },
  35594. -{ 0xCDA8, 0xCDA8, 0xCDA8 },
  35595. -{ 0xCDA9, 0xCDA9, 0xCDA9 },
  35596. -{ 0xCDAA, 0xCDAA, 0xCDAA },
  35597. -{ 0xCDAB, 0xCDAB, 0xCDAB },
  35598. -{ 0xCDAC, 0xCDAC, 0xCDAC },
  35599. -{ 0xCDAD, 0xCDAD, 0xCDAD },
  35600. -{ 0xCDAE, 0xCDAE, 0xCDAE },
  35601. -{ 0xCDAF, 0xCDAF, 0xCDAF },
  35602. -{ 0xCDB0, 0xCDB0, 0xCDB0 },
  35603. -{ 0xCDB1, 0xCDB1, 0xCDB1 },
  35604. -{ 0xCDB2, 0xCDB2, 0xCDB2 },
  35605. -{ 0xCDB3, 0xCDB3, 0xCDB3 },
  35606. -{ 0xCDB4, 0xCDB4, 0xCDB4 },
  35607. -{ 0xCDB5, 0xCDB5, 0xCDB5 },
  35608. -{ 0xCDB6, 0xCDB6, 0xCDB6 },
  35609. -{ 0xCDB7, 0xCDB7, 0xCDB7 },
  35610. -{ 0xCDB8, 0xCDB8, 0xCDB8 },
  35611. -{ 0xCDB9, 0xCDB9, 0xCDB9 },
  35612. -{ 0xCDBA, 0xCDBA, 0xCDBA },
  35613. -{ 0xCDBB, 0xCDBB, 0xCDBB },
  35614. -{ 0xCDBC, 0xCDBC, 0xCDBC },
  35615. -{ 0xCDBD, 0xCDBD, 0xCDBD },
  35616. -{ 0xCDBE, 0xCDBE, 0xCDBE },
  35617. -{ 0xCDBF, 0xCDBF, 0xCDBF },
  35618. -{ 0xCDC0, 0xCDC0, 0xCDC0 },
  35619. -{ 0xCDC1, 0xCDC1, 0xCDC1 },
  35620. -{ 0xCDC2, 0xCDC2, 0xCDC2 },
  35621. -{ 0xCDC3, 0xCDC3, 0xCDC3 },
  35622. -{ 0xCDC4, 0xCDC4, 0xCDC4 },
  35623. -{ 0xCDC5, 0xCDC5, 0xCDC5 },
  35624. -{ 0xCDC6, 0xCDC6, 0xCDC6 },
  35625. -{ 0xCDC7, 0xCDC7, 0xCDC7 },
  35626. -{ 0xCDC8, 0xCDC8, 0xCDC8 },
  35627. -{ 0xCDC9, 0xCDC9, 0xCDC9 },
  35628. -{ 0xCDCA, 0xCDCA, 0xCDCA },
  35629. -{ 0xCDCB, 0xCDCB, 0xCDCB },
  35630. -{ 0xCDCC, 0xCDCC, 0xCDCC },
  35631. -{ 0xCDCD, 0xCDCD, 0xCDCD },
  35632. -{ 0xCDCE, 0xCDCE, 0xCDCE },
  35633. -{ 0xCDCF, 0xCDCF, 0xCDCF },
  35634. -{ 0xCDD0, 0xCDD0, 0xCDD0 },
  35635. -{ 0xCDD1, 0xCDD1, 0xCDD1 },
  35636. -{ 0xCDD2, 0xCDD2, 0xCDD2 },
  35637. -{ 0xCDD3, 0xCDD3, 0xCDD3 },
  35638. -{ 0xCDD4, 0xCDD4, 0xCDD4 },
  35639. -{ 0xCDD5, 0xCDD5, 0xCDD5 },
  35640. -{ 0xCDD6, 0xCDD6, 0xCDD6 },
  35641. -{ 0xCDD7, 0xCDD7, 0xCDD7 },
  35642. -{ 0xCDD8, 0xCDD8, 0xCDD8 },
  35643. -{ 0xCDD9, 0xCDD9, 0xCDD9 },
  35644. -{ 0xCDDA, 0xCDDA, 0xCDDA },
  35645. -{ 0xCDDB, 0xCDDB, 0xCDDB },
  35646. -{ 0xCDDC, 0xCDDC, 0xCDDC },
  35647. -{ 0xCDDD, 0xCDDD, 0xCDDD },
  35648. -{ 0xCDDE, 0xCDDE, 0xCDDE },
  35649. -{ 0xCDDF, 0xCDDF, 0xCDDF },
  35650. -{ 0xCDE0, 0xCDE0, 0xCDE0 },
  35651. -{ 0xCDE1, 0xCDE1, 0xCDE1 },
  35652. -{ 0xCDE2, 0xCDE2, 0xCDE2 },
  35653. -{ 0xCDE3, 0xCDE3, 0xCDE3 },
  35654. -{ 0xCDE4, 0xCDE4, 0xCDE4 },
  35655. -{ 0xCDE5, 0xCDE5, 0xCDE5 },
  35656. -{ 0xCDE6, 0xCDE6, 0xCDE6 },
  35657. -{ 0xCDE7, 0xCDE7, 0xCDE7 },
  35658. -{ 0xCDE8, 0xCDE8, 0xCDE8 },
  35659. -{ 0xCDE9, 0xCDE9, 0xCDE9 },
  35660. -{ 0xCDEA, 0xCDEA, 0xCDEA },
  35661. -{ 0xCDEB, 0xCDEB, 0xCDEB },
  35662. -{ 0xCDEC, 0xCDEC, 0xCDEC },
  35663. -{ 0xCDED, 0xCDED, 0xCDED },
  35664. -{ 0xCDEE, 0xCDEE, 0xCDEE },
  35665. -{ 0xCDEF, 0xCDEF, 0xCDEF },
  35666. -{ 0xCDF0, 0xCDF0, 0xCDF0 },
  35667. -{ 0xCDF1, 0xCDF1, 0xCDF1 },
  35668. -{ 0xCDF2, 0xCDF2, 0xCDF2 },
  35669. -{ 0xCDF3, 0xCDF3, 0xCDF3 },
  35670. -{ 0xCDF4, 0xCDF4, 0xCDF4 },
  35671. -{ 0xCDF5, 0xCDF5, 0xCDF5 },
  35672. -{ 0xCDF6, 0xCDF6, 0xCDF6 },
  35673. -{ 0xCDF7, 0xCDF7, 0xCDF7 },
  35674. -{ 0xCDF8, 0xCDF8, 0xCDF8 },
  35675. -{ 0xCDF9, 0xCDF9, 0xCDF9 },
  35676. -{ 0xCDFA, 0xCDFA, 0xCDFA },
  35677. -{ 0xCDFB, 0xCDFB, 0xCDFB },
  35678. -{ 0xCDFC, 0xCDFC, 0xCDFC },
  35679. -{ 0xCDFD, 0xCDFD, 0xCDFD },
  35680. -{ 0xCDFE, 0xCDFE, 0xCDFE },
  35681. -{ 0xCDFF, 0xCDFF, 0xCDFF },
  35682. -{ 0xCE00, 0xCE00, 0xCE00 },
  35683. -{ 0xCE01, 0xCE01, 0xCE01 },
  35684. -{ 0xCE02, 0xCE02, 0xCE02 },
  35685. -{ 0xCE03, 0xCE03, 0xCE03 },
  35686. -{ 0xCE04, 0xCE04, 0xCE04 },
  35687. -{ 0xCE05, 0xCE05, 0xCE05 },
  35688. -{ 0xCE06, 0xCE06, 0xCE06 },
  35689. -{ 0xCE07, 0xCE07, 0xCE07 },
  35690. -{ 0xCE08, 0xCE08, 0xCE08 },
  35691. -{ 0xCE09, 0xCE09, 0xCE09 },
  35692. -{ 0xCE0A, 0xCE0A, 0xCE0A },
  35693. -{ 0xCE0B, 0xCE0B, 0xCE0B },
  35694. -{ 0xCE0C, 0xCE0C, 0xCE0C },
  35695. -{ 0xCE0D, 0xCE0D, 0xCE0D },
  35696. -{ 0xCE0E, 0xCE0E, 0xCE0E },
  35697. -{ 0xCE0F, 0xCE0F, 0xCE0F },
  35698. -{ 0xCE10, 0xCE10, 0xCE10 },
  35699. -{ 0xCE11, 0xCE11, 0xCE11 },
  35700. -{ 0xCE12, 0xCE12, 0xCE12 },
  35701. -{ 0xCE13, 0xCE13, 0xCE13 },
  35702. -{ 0xCE14, 0xCE14, 0xCE14 },
  35703. -{ 0xCE15, 0xCE15, 0xCE15 },
  35704. -{ 0xCE16, 0xCE16, 0xCE16 },
  35705. -{ 0xCE17, 0xCE17, 0xCE17 },
  35706. -{ 0xCE18, 0xCE18, 0xCE18 },
  35707. -{ 0xCE19, 0xCE19, 0xCE19 },
  35708. -{ 0xCE1A, 0xCE1A, 0xCE1A },
  35709. -{ 0xCE1B, 0xCE1B, 0xCE1B },
  35710. -{ 0xCE1C, 0xCE1C, 0xCE1C },
  35711. -{ 0xCE1D, 0xCE1D, 0xCE1D },
  35712. -{ 0xCE1E, 0xCE1E, 0xCE1E },
  35713. -{ 0xCE1F, 0xCE1F, 0xCE1F },
  35714. -{ 0xCE20, 0xCE20, 0xCE20 },
  35715. -{ 0xCE21, 0xCE21, 0xCE21 },
  35716. -{ 0xCE22, 0xCE22, 0xCE22 },
  35717. -{ 0xCE23, 0xCE23, 0xCE23 },
  35718. -{ 0xCE24, 0xCE24, 0xCE24 },
  35719. -{ 0xCE25, 0xCE25, 0xCE25 },
  35720. -{ 0xCE26, 0xCE26, 0xCE26 },
  35721. -{ 0xCE27, 0xCE27, 0xCE27 },
  35722. -{ 0xCE28, 0xCE28, 0xCE28 },
  35723. -{ 0xCE29, 0xCE29, 0xCE29 },
  35724. -{ 0xCE2A, 0xCE2A, 0xCE2A },
  35725. -{ 0xCE2B, 0xCE2B, 0xCE2B },
  35726. -{ 0xCE2C, 0xCE2C, 0xCE2C },
  35727. -{ 0xCE2D, 0xCE2D, 0xCE2D },
  35728. -{ 0xCE2E, 0xCE2E, 0xCE2E },
  35729. -{ 0xCE2F, 0xCE2F, 0xCE2F },
  35730. -{ 0xCE30, 0xCE30, 0xCE30 },
  35731. -{ 0xCE31, 0xCE31, 0xCE31 },
  35732. -{ 0xCE32, 0xCE32, 0xCE32 },
  35733. -{ 0xCE33, 0xCE33, 0xCE33 },
  35734. -{ 0xCE34, 0xCE34, 0xCE34 },
  35735. -{ 0xCE35, 0xCE35, 0xCE35 },
  35736. -{ 0xCE36, 0xCE36, 0xCE36 },
  35737. -{ 0xCE37, 0xCE37, 0xCE37 },
  35738. -{ 0xCE38, 0xCE38, 0xCE38 },
  35739. -{ 0xCE39, 0xCE39, 0xCE39 },
  35740. -{ 0xCE3A, 0xCE3A, 0xCE3A },
  35741. -{ 0xCE3B, 0xCE3B, 0xCE3B },
  35742. -{ 0xCE3C, 0xCE3C, 0xCE3C },
  35743. -{ 0xCE3D, 0xCE3D, 0xCE3D },
  35744. -{ 0xCE3E, 0xCE3E, 0xCE3E },
  35745. -{ 0xCE3F, 0xCE3F, 0xCE3F },
  35746. -{ 0xCE40, 0xCE40, 0xCE40 },
  35747. -{ 0xCE41, 0xCE41, 0xCE41 },
  35748. -{ 0xCE42, 0xCE42, 0xCE42 },
  35749. -{ 0xCE43, 0xCE43, 0xCE43 },
  35750. -{ 0xCE44, 0xCE44, 0xCE44 },
  35751. -{ 0xCE45, 0xCE45, 0xCE45 },
  35752. -{ 0xCE46, 0xCE46, 0xCE46 },
  35753. -{ 0xCE47, 0xCE47, 0xCE47 },
  35754. -{ 0xCE48, 0xCE48, 0xCE48 },
  35755. -{ 0xCE49, 0xCE49, 0xCE49 },
  35756. -{ 0xCE4A, 0xCE4A, 0xCE4A },
  35757. -{ 0xCE4B, 0xCE4B, 0xCE4B },
  35758. -{ 0xCE4C, 0xCE4C, 0xCE4C },
  35759. -{ 0xCE4D, 0xCE4D, 0xCE4D },
  35760. -{ 0xCE4E, 0xCE4E, 0xCE4E },
  35761. -{ 0xCE4F, 0xCE4F, 0xCE4F },
  35762. -{ 0xCE50, 0xCE50, 0xCE50 },
  35763. -{ 0xCE51, 0xCE51, 0xCE51 },
  35764. -{ 0xCE52, 0xCE52, 0xCE52 },
  35765. -{ 0xCE53, 0xCE53, 0xCE53 },
  35766. -{ 0xCE54, 0xCE54, 0xCE54 },
  35767. -{ 0xCE55, 0xCE55, 0xCE55 },
  35768. -{ 0xCE56, 0xCE56, 0xCE56 },
  35769. -{ 0xCE57, 0xCE57, 0xCE57 },
  35770. -{ 0xCE58, 0xCE58, 0xCE58 },
  35771. -{ 0xCE59, 0xCE59, 0xCE59 },
  35772. -{ 0xCE5A, 0xCE5A, 0xCE5A },
  35773. -{ 0xCE5B, 0xCE5B, 0xCE5B },
  35774. -{ 0xCE5C, 0xCE5C, 0xCE5C },
  35775. -{ 0xCE5D, 0xCE5D, 0xCE5D },
  35776. -{ 0xCE5E, 0xCE5E, 0xCE5E },
  35777. -{ 0xCE5F, 0xCE5F, 0xCE5F },
  35778. -{ 0xCE60, 0xCE60, 0xCE60 },
  35779. -{ 0xCE61, 0xCE61, 0xCE61 },
  35780. -{ 0xCE62, 0xCE62, 0xCE62 },
  35781. -{ 0xCE63, 0xCE63, 0xCE63 },
  35782. -{ 0xCE64, 0xCE64, 0xCE64 },
  35783. -{ 0xCE65, 0xCE65, 0xCE65 },
  35784. -{ 0xCE66, 0xCE66, 0xCE66 },
  35785. -{ 0xCE67, 0xCE67, 0xCE67 },
  35786. -{ 0xCE68, 0xCE68, 0xCE68 },
  35787. -{ 0xCE69, 0xCE69, 0xCE69 },
  35788. -{ 0xCE6A, 0xCE6A, 0xCE6A },
  35789. -{ 0xCE6B, 0xCE6B, 0xCE6B },
  35790. -{ 0xCE6C, 0xCE6C, 0xCE6C },
  35791. -{ 0xCE6D, 0xCE6D, 0xCE6D },
  35792. -{ 0xCE6E, 0xCE6E, 0xCE6E },
  35793. -{ 0xCE6F, 0xCE6F, 0xCE6F },
  35794. -{ 0xCE70, 0xCE70, 0xCE70 },
  35795. -{ 0xCE71, 0xCE71, 0xCE71 },
  35796. -{ 0xCE72, 0xCE72, 0xCE72 },
  35797. -{ 0xCE73, 0xCE73, 0xCE73 },
  35798. -{ 0xCE74, 0xCE74, 0xCE74 },
  35799. -{ 0xCE75, 0xCE75, 0xCE75 },
  35800. -{ 0xCE76, 0xCE76, 0xCE76 },
  35801. -{ 0xCE77, 0xCE77, 0xCE77 },
  35802. -{ 0xCE78, 0xCE78, 0xCE78 },
  35803. -{ 0xCE79, 0xCE79, 0xCE79 },
  35804. -{ 0xCE7A, 0xCE7A, 0xCE7A },
  35805. -{ 0xCE7B, 0xCE7B, 0xCE7B },
  35806. -{ 0xCE7C, 0xCE7C, 0xCE7C },
  35807. -{ 0xCE7D, 0xCE7D, 0xCE7D },
  35808. -{ 0xCE7E, 0xCE7E, 0xCE7E },
  35809. -{ 0xCE7F, 0xCE7F, 0xCE7F },
  35810. -{ 0xCE80, 0xCE80, 0xCE80 },
  35811. -{ 0xCE81, 0xCE81, 0xCE81 },
  35812. -{ 0xCE82, 0xCE82, 0xCE82 },
  35813. -{ 0xCE83, 0xCE83, 0xCE83 },
  35814. -{ 0xCE84, 0xCE84, 0xCE84 },
  35815. -{ 0xCE85, 0xCE85, 0xCE85 },
  35816. -{ 0xCE86, 0xCE86, 0xCE86 },
  35817. -{ 0xCE87, 0xCE87, 0xCE87 },
  35818. -{ 0xCE88, 0xCE88, 0xCE88 },
  35819. -{ 0xCE89, 0xCE89, 0xCE89 },
  35820. -{ 0xCE8A, 0xCE8A, 0xCE8A },
  35821. -{ 0xCE8B, 0xCE8B, 0xCE8B },
  35822. -{ 0xCE8C, 0xCE8C, 0xCE8C },
  35823. -{ 0xCE8D, 0xCE8D, 0xCE8D },
  35824. -{ 0xCE8E, 0xCE8E, 0xCE8E },
  35825. -{ 0xCE8F, 0xCE8F, 0xCE8F },
  35826. -{ 0xCE90, 0xCE90, 0xCE90 },
  35827. -{ 0xCE91, 0xCE91, 0xCE91 },
  35828. -{ 0xCE92, 0xCE92, 0xCE92 },
  35829. -{ 0xCE93, 0xCE93, 0xCE93 },
  35830. -{ 0xCE94, 0xCE94, 0xCE94 },
  35831. -{ 0xCE95, 0xCE95, 0xCE95 },
  35832. -{ 0xCE96, 0xCE96, 0xCE96 },
  35833. -{ 0xCE97, 0xCE97, 0xCE97 },
  35834. -{ 0xCE98, 0xCE98, 0xCE98 },
  35835. -{ 0xCE99, 0xCE99, 0xCE99 },
  35836. -{ 0xCE9A, 0xCE9A, 0xCE9A },
  35837. -{ 0xCE9B, 0xCE9B, 0xCE9B },
  35838. -{ 0xCE9C, 0xCE9C, 0xCE9C },
  35839. -{ 0xCE9D, 0xCE9D, 0xCE9D },
  35840. -{ 0xCE9E, 0xCE9E, 0xCE9E },
  35841. -{ 0xCE9F, 0xCE9F, 0xCE9F },
  35842. -{ 0xCEA0, 0xCEA0, 0xCEA0 },
  35843. -{ 0xCEA1, 0xCEA1, 0xCEA1 },
  35844. -{ 0xCEA2, 0xCEA2, 0xCEA2 },
  35845. -{ 0xCEA3, 0xCEA3, 0xCEA3 },
  35846. -{ 0xCEA4, 0xCEA4, 0xCEA4 },
  35847. -{ 0xCEA5, 0xCEA5, 0xCEA5 },
  35848. -{ 0xCEA6, 0xCEA6, 0xCEA6 },
  35849. -{ 0xCEA7, 0xCEA7, 0xCEA7 },
  35850. -{ 0xCEA8, 0xCEA8, 0xCEA8 },
  35851. -{ 0xCEA9, 0xCEA9, 0xCEA9 },
  35852. -{ 0xCEAA, 0xCEAA, 0xCEAA },
  35853. -{ 0xCEAB, 0xCEAB, 0xCEAB },
  35854. -{ 0xCEAC, 0xCEAC, 0xCEAC },
  35855. -{ 0xCEAD, 0xCEAD, 0xCEAD },
  35856. -{ 0xCEAE, 0xCEAE, 0xCEAE },
  35857. -{ 0xCEAF, 0xCEAF, 0xCEAF },
  35858. -{ 0xCEB0, 0xCEB0, 0xCEB0 },
  35859. -{ 0xCEB1, 0xCEB1, 0xCEB1 },
  35860. -{ 0xCEB2, 0xCEB2, 0xCEB2 },
  35861. -{ 0xCEB3, 0xCEB3, 0xCEB3 },
  35862. -{ 0xCEB4, 0xCEB4, 0xCEB4 },
  35863. -{ 0xCEB5, 0xCEB5, 0xCEB5 },
  35864. -{ 0xCEB6, 0xCEB6, 0xCEB6 },
  35865. -{ 0xCEB7, 0xCEB7, 0xCEB7 },
  35866. -{ 0xCEB8, 0xCEB8, 0xCEB8 },
  35867. -{ 0xCEB9, 0xCEB9, 0xCEB9 },
  35868. -{ 0xCEBA, 0xCEBA, 0xCEBA },
  35869. -{ 0xCEBB, 0xCEBB, 0xCEBB },
  35870. -{ 0xCEBC, 0xCEBC, 0xCEBC },
  35871. -{ 0xCEBD, 0xCEBD, 0xCEBD },
  35872. -{ 0xCEBE, 0xCEBE, 0xCEBE },
  35873. -{ 0xCEBF, 0xCEBF, 0xCEBF },
  35874. -{ 0xCEC0, 0xCEC0, 0xCEC0 },
  35875. -{ 0xCEC1, 0xCEC1, 0xCEC1 },
  35876. -{ 0xCEC2, 0xCEC2, 0xCEC2 },
  35877. -{ 0xCEC3, 0xCEC3, 0xCEC3 },
  35878. -{ 0xCEC4, 0xCEC4, 0xCEC4 },
  35879. -{ 0xCEC5, 0xCEC5, 0xCEC5 },
  35880. -{ 0xCEC6, 0xCEC6, 0xCEC6 },
  35881. -{ 0xCEC7, 0xCEC7, 0xCEC7 },
  35882. -{ 0xCEC8, 0xCEC8, 0xCEC8 },
  35883. -{ 0xCEC9, 0xCEC9, 0xCEC9 },
  35884. -{ 0xCECA, 0xCECA, 0xCECA },
  35885. -{ 0xCECB, 0xCECB, 0xCECB },
  35886. -{ 0xCECC, 0xCECC, 0xCECC },
  35887. -{ 0xCECD, 0xCECD, 0xCECD },
  35888. -{ 0xCECE, 0xCECE, 0xCECE },
  35889. -{ 0xCECF, 0xCECF, 0xCECF },
  35890. -{ 0xCED0, 0xCED0, 0xCED0 },
  35891. -{ 0xCED1, 0xCED1, 0xCED1 },
  35892. -{ 0xCED2, 0xCED2, 0xCED2 },
  35893. -{ 0xCED3, 0xCED3, 0xCED3 },
  35894. -{ 0xCED4, 0xCED4, 0xCED4 },
  35895. -{ 0xCED5, 0xCED5, 0xCED5 },
  35896. -{ 0xCED6, 0xCED6, 0xCED6 },
  35897. -{ 0xCED7, 0xCED7, 0xCED7 },
  35898. -{ 0xCED8, 0xCED8, 0xCED8 },
  35899. -{ 0xCED9, 0xCED9, 0xCED9 },
  35900. -{ 0xCEDA, 0xCEDA, 0xCEDA },
  35901. -{ 0xCEDB, 0xCEDB, 0xCEDB },
  35902. -{ 0xCEDC, 0xCEDC, 0xCEDC },
  35903. -{ 0xCEDD, 0xCEDD, 0xCEDD },
  35904. -{ 0xCEDE, 0xCEDE, 0xCEDE },
  35905. -{ 0xCEDF, 0xCEDF, 0xCEDF },
  35906. -{ 0xCEE0, 0xCEE0, 0xCEE0 },
  35907. -{ 0xCEE1, 0xCEE1, 0xCEE1 },
  35908. -{ 0xCEE2, 0xCEE2, 0xCEE2 },
  35909. -{ 0xCEE3, 0xCEE3, 0xCEE3 },
  35910. -{ 0xCEE4, 0xCEE4, 0xCEE4 },
  35911. -{ 0xCEE5, 0xCEE5, 0xCEE5 },
  35912. -{ 0xCEE6, 0xCEE6, 0xCEE6 },
  35913. -{ 0xCEE7, 0xCEE7, 0xCEE7 },
  35914. -{ 0xCEE8, 0xCEE8, 0xCEE8 },
  35915. -{ 0xCEE9, 0xCEE9, 0xCEE9 },
  35916. -{ 0xCEEA, 0xCEEA, 0xCEEA },
  35917. -{ 0xCEEB, 0xCEEB, 0xCEEB },
  35918. -{ 0xCEEC, 0xCEEC, 0xCEEC },
  35919. -{ 0xCEED, 0xCEED, 0xCEED },
  35920. -{ 0xCEEE, 0xCEEE, 0xCEEE },
  35921. -{ 0xCEEF, 0xCEEF, 0xCEEF },
  35922. -{ 0xCEF0, 0xCEF0, 0xCEF0 },
  35923. -{ 0xCEF1, 0xCEF1, 0xCEF1 },
  35924. -{ 0xCEF2, 0xCEF2, 0xCEF2 },
  35925. -{ 0xCEF3, 0xCEF3, 0xCEF3 },
  35926. -{ 0xCEF4, 0xCEF4, 0xCEF4 },
  35927. -{ 0xCEF5, 0xCEF5, 0xCEF5 },
  35928. -{ 0xCEF6, 0xCEF6, 0xCEF6 },
  35929. -{ 0xCEF7, 0xCEF7, 0xCEF7 },
  35930. -{ 0xCEF8, 0xCEF8, 0xCEF8 },
  35931. -{ 0xCEF9, 0xCEF9, 0xCEF9 },
  35932. -{ 0xCEFA, 0xCEFA, 0xCEFA },
  35933. -{ 0xCEFB, 0xCEFB, 0xCEFB },
  35934. -{ 0xCEFC, 0xCEFC, 0xCEFC },
  35935. -{ 0xCEFD, 0xCEFD, 0xCEFD },
  35936. -{ 0xCEFE, 0xCEFE, 0xCEFE },
  35937. -{ 0xCEFF, 0xCEFF, 0xCEFF },
  35938. -{ 0xCF00, 0xCF00, 0xCF00 },
  35939. -{ 0xCF01, 0xCF01, 0xCF01 },
  35940. -{ 0xCF02, 0xCF02, 0xCF02 },
  35941. -{ 0xCF03, 0xCF03, 0xCF03 },
  35942. -{ 0xCF04, 0xCF04, 0xCF04 },
  35943. -{ 0xCF05, 0xCF05, 0xCF05 },
  35944. -{ 0xCF06, 0xCF06, 0xCF06 },
  35945. -{ 0xCF07, 0xCF07, 0xCF07 },
  35946. -{ 0xCF08, 0xCF08, 0xCF08 },
  35947. -{ 0xCF09, 0xCF09, 0xCF09 },
  35948. -{ 0xCF0A, 0xCF0A, 0xCF0A },
  35949. -{ 0xCF0B, 0xCF0B, 0xCF0B },
  35950. -{ 0xCF0C, 0xCF0C, 0xCF0C },
  35951. -{ 0xCF0D, 0xCF0D, 0xCF0D },
  35952. -{ 0xCF0E, 0xCF0E, 0xCF0E },
  35953. -{ 0xCF0F, 0xCF0F, 0xCF0F },
  35954. -{ 0xCF10, 0xCF10, 0xCF10 },
  35955. -{ 0xCF11, 0xCF11, 0xCF11 },
  35956. -{ 0xCF12, 0xCF12, 0xCF12 },
  35957. -{ 0xCF13, 0xCF13, 0xCF13 },
  35958. -{ 0xCF14, 0xCF14, 0xCF14 },
  35959. -{ 0xCF15, 0xCF15, 0xCF15 },
  35960. -{ 0xCF16, 0xCF16, 0xCF16 },
  35961. -{ 0xCF17, 0xCF17, 0xCF17 },
  35962. -{ 0xCF18, 0xCF18, 0xCF18 },
  35963. -{ 0xCF19, 0xCF19, 0xCF19 },
  35964. -{ 0xCF1A, 0xCF1A, 0xCF1A },
  35965. -{ 0xCF1B, 0xCF1B, 0xCF1B },
  35966. -{ 0xCF1C, 0xCF1C, 0xCF1C },
  35967. -{ 0xCF1D, 0xCF1D, 0xCF1D },
  35968. -{ 0xCF1E, 0xCF1E, 0xCF1E },
  35969. -{ 0xCF1F, 0xCF1F, 0xCF1F },
  35970. -{ 0xCF20, 0xCF20, 0xCF20 },
  35971. -{ 0xCF21, 0xCF21, 0xCF21 },
  35972. -{ 0xCF22, 0xCF22, 0xCF22 },
  35973. -{ 0xCF23, 0xCF23, 0xCF23 },
  35974. -{ 0xCF24, 0xCF24, 0xCF24 },
  35975. -{ 0xCF25, 0xCF25, 0xCF25 },
  35976. -{ 0xCF26, 0xCF26, 0xCF26 },
  35977. -{ 0xCF27, 0xCF27, 0xCF27 },
  35978. -{ 0xCF28, 0xCF28, 0xCF28 },
  35979. -{ 0xCF29, 0xCF29, 0xCF29 },
  35980. -{ 0xCF2A, 0xCF2A, 0xCF2A },
  35981. -{ 0xCF2B, 0xCF2B, 0xCF2B },
  35982. -{ 0xCF2C, 0xCF2C, 0xCF2C },
  35983. -{ 0xCF2D, 0xCF2D, 0xCF2D },
  35984. -{ 0xCF2E, 0xCF2E, 0xCF2E },
  35985. -{ 0xCF2F, 0xCF2F, 0xCF2F },
  35986. -{ 0xCF30, 0xCF30, 0xCF30 },
  35987. -{ 0xCF31, 0xCF31, 0xCF31 },
  35988. -{ 0xCF32, 0xCF32, 0xCF32 },
  35989. -{ 0xCF33, 0xCF33, 0xCF33 },
  35990. -{ 0xCF34, 0xCF34, 0xCF34 },
  35991. -{ 0xCF35, 0xCF35, 0xCF35 },
  35992. -{ 0xCF36, 0xCF36, 0xCF36 },
  35993. -{ 0xCF37, 0xCF37, 0xCF37 },
  35994. -{ 0xCF38, 0xCF38, 0xCF38 },
  35995. -{ 0xCF39, 0xCF39, 0xCF39 },
  35996. -{ 0xCF3A, 0xCF3A, 0xCF3A },
  35997. -{ 0xCF3B, 0xCF3B, 0xCF3B },
  35998. -{ 0xCF3C, 0xCF3C, 0xCF3C },
  35999. -{ 0xCF3D, 0xCF3D, 0xCF3D },
  36000. -{ 0xCF3E, 0xCF3E, 0xCF3E },
  36001. -{ 0xCF3F, 0xCF3F, 0xCF3F },
  36002. -{ 0xCF40, 0xCF40, 0xCF40 },
  36003. -{ 0xCF41, 0xCF41, 0xCF41 },
  36004. -{ 0xCF42, 0xCF42, 0xCF42 },
  36005. -{ 0xCF43, 0xCF43, 0xCF43 },
  36006. -{ 0xCF44, 0xCF44, 0xCF44 },
  36007. -{ 0xCF45, 0xCF45, 0xCF45 },
  36008. -{ 0xCF46, 0xCF46, 0xCF46 },
  36009. -{ 0xCF47, 0xCF47, 0xCF47 },
  36010. -{ 0xCF48, 0xCF48, 0xCF48 },
  36011. -{ 0xCF49, 0xCF49, 0xCF49 },
  36012. -{ 0xCF4A, 0xCF4A, 0xCF4A },
  36013. -{ 0xCF4B, 0xCF4B, 0xCF4B },
  36014. -{ 0xCF4C, 0xCF4C, 0xCF4C },
  36015. -{ 0xCF4D, 0xCF4D, 0xCF4D },
  36016. -{ 0xCF4E, 0xCF4E, 0xCF4E },
  36017. -{ 0xCF4F, 0xCF4F, 0xCF4F },
  36018. -{ 0xCF50, 0xCF50, 0xCF50 },
  36019. -{ 0xCF51, 0xCF51, 0xCF51 },
  36020. -{ 0xCF52, 0xCF52, 0xCF52 },
  36021. -{ 0xCF53, 0xCF53, 0xCF53 },
  36022. -{ 0xCF54, 0xCF54, 0xCF54 },
  36023. -{ 0xCF55, 0xCF55, 0xCF55 },
  36024. -{ 0xCF56, 0xCF56, 0xCF56 },
  36025. -{ 0xCF57, 0xCF57, 0xCF57 },
  36026. -{ 0xCF58, 0xCF58, 0xCF58 },
  36027. -{ 0xCF59, 0xCF59, 0xCF59 },
  36028. -{ 0xCF5A, 0xCF5A, 0xCF5A },
  36029. -{ 0xCF5B, 0xCF5B, 0xCF5B },
  36030. -{ 0xCF5C, 0xCF5C, 0xCF5C },
  36031. -{ 0xCF5D, 0xCF5D, 0xCF5D },
  36032. -{ 0xCF5E, 0xCF5E, 0xCF5E },
  36033. -{ 0xCF5F, 0xCF5F, 0xCF5F },
  36034. -{ 0xCF60, 0xCF60, 0xCF60 },
  36035. -{ 0xCF61, 0xCF61, 0xCF61 },
  36036. -{ 0xCF62, 0xCF62, 0xCF62 },
  36037. -{ 0xCF63, 0xCF63, 0xCF63 },
  36038. -{ 0xCF64, 0xCF64, 0xCF64 },
  36039. -{ 0xCF65, 0xCF65, 0xCF65 },
  36040. -{ 0xCF66, 0xCF66, 0xCF66 },
  36041. -{ 0xCF67, 0xCF67, 0xCF67 },
  36042. -{ 0xCF68, 0xCF68, 0xCF68 },
  36043. -{ 0xCF69, 0xCF69, 0xCF69 },
  36044. -{ 0xCF6A, 0xCF6A, 0xCF6A },
  36045. -{ 0xCF6B, 0xCF6B, 0xCF6B },
  36046. -{ 0xCF6C, 0xCF6C, 0xCF6C },
  36047. -{ 0xCF6D, 0xCF6D, 0xCF6D },
  36048. -{ 0xCF6E, 0xCF6E, 0xCF6E },
  36049. -{ 0xCF6F, 0xCF6F, 0xCF6F },
  36050. -{ 0xCF70, 0xCF70, 0xCF70 },
  36051. -{ 0xCF71, 0xCF71, 0xCF71 },
  36052. -{ 0xCF72, 0xCF72, 0xCF72 },
  36053. -{ 0xCF73, 0xCF73, 0xCF73 },
  36054. -{ 0xCF74, 0xCF74, 0xCF74 },
  36055. -{ 0xCF75, 0xCF75, 0xCF75 },
  36056. -{ 0xCF76, 0xCF76, 0xCF76 },
  36057. -{ 0xCF77, 0xCF77, 0xCF77 },
  36058. -{ 0xCF78, 0xCF78, 0xCF78 },
  36059. -{ 0xCF79, 0xCF79, 0xCF79 },
  36060. -{ 0xCF7A, 0xCF7A, 0xCF7A },
  36061. -{ 0xCF7B, 0xCF7B, 0xCF7B },
  36062. -{ 0xCF7C, 0xCF7C, 0xCF7C },
  36063. -{ 0xCF7D, 0xCF7D, 0xCF7D },
  36064. -{ 0xCF7E, 0xCF7E, 0xCF7E },
  36065. -{ 0xCF7F, 0xCF7F, 0xCF7F },
  36066. -{ 0xCF80, 0xCF80, 0xCF80 },
  36067. -{ 0xCF81, 0xCF81, 0xCF81 },
  36068. -{ 0xCF82, 0xCF82, 0xCF82 },
  36069. -{ 0xCF83, 0xCF83, 0xCF83 },
  36070. -{ 0xCF84, 0xCF84, 0xCF84 },
  36071. -{ 0xCF85, 0xCF85, 0xCF85 },
  36072. -{ 0xCF86, 0xCF86, 0xCF86 },
  36073. -{ 0xCF87, 0xCF87, 0xCF87 },
  36074. -{ 0xCF88, 0xCF88, 0xCF88 },
  36075. -{ 0xCF89, 0xCF89, 0xCF89 },
  36076. -{ 0xCF8A, 0xCF8A, 0xCF8A },
  36077. -{ 0xCF8B, 0xCF8B, 0xCF8B },
  36078. -{ 0xCF8C, 0xCF8C, 0xCF8C },
  36079. -{ 0xCF8D, 0xCF8D, 0xCF8D },
  36080. -{ 0xCF8E, 0xCF8E, 0xCF8E },
  36081. -{ 0xCF8F, 0xCF8F, 0xCF8F },
  36082. -{ 0xCF90, 0xCF90, 0xCF90 },
  36083. -{ 0xCF91, 0xCF91, 0xCF91 },
  36084. -{ 0xCF92, 0xCF92, 0xCF92 },
  36085. -{ 0xCF93, 0xCF93, 0xCF93 },
  36086. -{ 0xCF94, 0xCF94, 0xCF94 },
  36087. -{ 0xCF95, 0xCF95, 0xCF95 },
  36088. -{ 0xCF96, 0xCF96, 0xCF96 },
  36089. -{ 0xCF97, 0xCF97, 0xCF97 },
  36090. -{ 0xCF98, 0xCF98, 0xCF98 },
  36091. -{ 0xCF99, 0xCF99, 0xCF99 },
  36092. -{ 0xCF9A, 0xCF9A, 0xCF9A },
  36093. -{ 0xCF9B, 0xCF9B, 0xCF9B },
  36094. -{ 0xCF9C, 0xCF9C, 0xCF9C },
  36095. -{ 0xCF9D, 0xCF9D, 0xCF9D },
  36096. -{ 0xCF9E, 0xCF9E, 0xCF9E },
  36097. -{ 0xCF9F, 0xCF9F, 0xCF9F },
  36098. -{ 0xCFA0, 0xCFA0, 0xCFA0 },
  36099. -{ 0xCFA1, 0xCFA1, 0xCFA1 },
  36100. -{ 0xCFA2, 0xCFA2, 0xCFA2 },
  36101. -{ 0xCFA3, 0xCFA3, 0xCFA3 },
  36102. -{ 0xCFA4, 0xCFA4, 0xCFA4 },
  36103. -{ 0xCFA5, 0xCFA5, 0xCFA5 },
  36104. -{ 0xCFA6, 0xCFA6, 0xCFA6 },
  36105. -{ 0xCFA7, 0xCFA7, 0xCFA7 },
  36106. -{ 0xCFA8, 0xCFA8, 0xCFA8 },
  36107. -{ 0xCFA9, 0xCFA9, 0xCFA9 },
  36108. -{ 0xCFAA, 0xCFAA, 0xCFAA },
  36109. -{ 0xCFAB, 0xCFAB, 0xCFAB },
  36110. -{ 0xCFAC, 0xCFAC, 0xCFAC },
  36111. -{ 0xCFAD, 0xCFAD, 0xCFAD },
  36112. -{ 0xCFAE, 0xCFAE, 0xCFAE },
  36113. -{ 0xCFAF, 0xCFAF, 0xCFAF },
  36114. -{ 0xCFB0, 0xCFB0, 0xCFB0 },
  36115. -{ 0xCFB1, 0xCFB1, 0xCFB1 },
  36116. -{ 0xCFB2, 0xCFB2, 0xCFB2 },
  36117. -{ 0xCFB3, 0xCFB3, 0xCFB3 },
  36118. -{ 0xCFB4, 0xCFB4, 0xCFB4 },
  36119. -{ 0xCFB5, 0xCFB5, 0xCFB5 },
  36120. -{ 0xCFB6, 0xCFB6, 0xCFB6 },
  36121. -{ 0xCFB7, 0xCFB7, 0xCFB7 },
  36122. -{ 0xCFB8, 0xCFB8, 0xCFB8 },
  36123. -{ 0xCFB9, 0xCFB9, 0xCFB9 },
  36124. -{ 0xCFBA, 0xCFBA, 0xCFBA },
  36125. -{ 0xCFBB, 0xCFBB, 0xCFBB },
  36126. -{ 0xCFBC, 0xCFBC, 0xCFBC },
  36127. -{ 0xCFBD, 0xCFBD, 0xCFBD },
  36128. -{ 0xCFBE, 0xCFBE, 0xCFBE },
  36129. -{ 0xCFBF, 0xCFBF, 0xCFBF },
  36130. -{ 0xCFC0, 0xCFC0, 0xCFC0 },
  36131. -{ 0xCFC1, 0xCFC1, 0xCFC1 },
  36132. -{ 0xCFC2, 0xCFC2, 0xCFC2 },
  36133. -{ 0xCFC3, 0xCFC3, 0xCFC3 },
  36134. -{ 0xCFC4, 0xCFC4, 0xCFC4 },
  36135. -{ 0xCFC5, 0xCFC5, 0xCFC5 },
  36136. -{ 0xCFC6, 0xCFC6, 0xCFC6 },
  36137. -{ 0xCFC7, 0xCFC7, 0xCFC7 },
  36138. -{ 0xCFC8, 0xCFC8, 0xCFC8 },
  36139. -{ 0xCFC9, 0xCFC9, 0xCFC9 },
  36140. -{ 0xCFCA, 0xCFCA, 0xCFCA },
  36141. -{ 0xCFCB, 0xCFCB, 0xCFCB },
  36142. -{ 0xCFCC, 0xCFCC, 0xCFCC },
  36143. -{ 0xCFCD, 0xCFCD, 0xCFCD },
  36144. -{ 0xCFCE, 0xCFCE, 0xCFCE },
  36145. -{ 0xCFCF, 0xCFCF, 0xCFCF },
  36146. -{ 0xCFD0, 0xCFD0, 0xCFD0 },
  36147. -{ 0xCFD1, 0xCFD1, 0xCFD1 },
  36148. -{ 0xCFD2, 0xCFD2, 0xCFD2 },
  36149. -{ 0xCFD3, 0xCFD3, 0xCFD3 },
  36150. -{ 0xCFD4, 0xCFD4, 0xCFD4 },
  36151. -{ 0xCFD5, 0xCFD5, 0xCFD5 },
  36152. -{ 0xCFD6, 0xCFD6, 0xCFD6 },
  36153. -{ 0xCFD7, 0xCFD7, 0xCFD7 },
  36154. -{ 0xCFD8, 0xCFD8, 0xCFD8 },
  36155. -{ 0xCFD9, 0xCFD9, 0xCFD9 },
  36156. -{ 0xCFDA, 0xCFDA, 0xCFDA },
  36157. -{ 0xCFDB, 0xCFDB, 0xCFDB },
  36158. -{ 0xCFDC, 0xCFDC, 0xCFDC },
  36159. -{ 0xCFDD, 0xCFDD, 0xCFDD },
  36160. -{ 0xCFDE, 0xCFDE, 0xCFDE },
  36161. -{ 0xCFDF, 0xCFDF, 0xCFDF },
  36162. -{ 0xCFE0, 0xCFE0, 0xCFE0 },
  36163. -{ 0xCFE1, 0xCFE1, 0xCFE1 },
  36164. -{ 0xCFE2, 0xCFE2, 0xCFE2 },
  36165. -{ 0xCFE3, 0xCFE3, 0xCFE3 },
  36166. -{ 0xCFE4, 0xCFE4, 0xCFE4 },
  36167. -{ 0xCFE5, 0xCFE5, 0xCFE5 },
  36168. -{ 0xCFE6, 0xCFE6, 0xCFE6 },
  36169. -{ 0xCFE7, 0xCFE7, 0xCFE7 },
  36170. -{ 0xCFE8, 0xCFE8, 0xCFE8 },
  36171. -{ 0xCFE9, 0xCFE9, 0xCFE9 },
  36172. -{ 0xCFEA, 0xCFEA, 0xCFEA },
  36173. -{ 0xCFEB, 0xCFEB, 0xCFEB },
  36174. -{ 0xCFEC, 0xCFEC, 0xCFEC },
  36175. -{ 0xCFED, 0xCFED, 0xCFED },
  36176. -{ 0xCFEE, 0xCFEE, 0xCFEE },
  36177. -{ 0xCFEF, 0xCFEF, 0xCFEF },
  36178. -{ 0xCFF0, 0xCFF0, 0xCFF0 },
  36179. -{ 0xCFF1, 0xCFF1, 0xCFF1 },
  36180. -{ 0xCFF2, 0xCFF2, 0xCFF2 },
  36181. -{ 0xCFF3, 0xCFF3, 0xCFF3 },
  36182. -{ 0xCFF4, 0xCFF4, 0xCFF4 },
  36183. -{ 0xCFF5, 0xCFF5, 0xCFF5 },
  36184. -{ 0xCFF6, 0xCFF6, 0xCFF6 },
  36185. -{ 0xCFF7, 0xCFF7, 0xCFF7 },
  36186. -{ 0xCFF8, 0xCFF8, 0xCFF8 },
  36187. -{ 0xCFF9, 0xCFF9, 0xCFF9 },
  36188. -{ 0xCFFA, 0xCFFA, 0xCFFA },
  36189. -{ 0xCFFB, 0xCFFB, 0xCFFB },
  36190. -{ 0xCFFC, 0xCFFC, 0xCFFC },
  36191. -{ 0xCFFD, 0xCFFD, 0xCFFD },
  36192. -{ 0xCFFE, 0xCFFE, 0xCFFE },
  36193. -{ 0xCFFF, 0xCFFF, 0xCFFF },
  36194. -{ 0xD000, 0xD000, 0xD000 },
  36195. -{ 0xD001, 0xD001, 0xD001 },
  36196. -{ 0xD002, 0xD002, 0xD002 },
  36197. -{ 0xD003, 0xD003, 0xD003 },
  36198. -{ 0xD004, 0xD004, 0xD004 },
  36199. -{ 0xD005, 0xD005, 0xD005 },
  36200. -{ 0xD006, 0xD006, 0xD006 },
  36201. -{ 0xD007, 0xD007, 0xD007 },
  36202. -{ 0xD008, 0xD008, 0xD008 },
  36203. -{ 0xD009, 0xD009, 0xD009 },
  36204. -{ 0xD00A, 0xD00A, 0xD00A },
  36205. -{ 0xD00B, 0xD00B, 0xD00B },
  36206. -{ 0xD00C, 0xD00C, 0xD00C },
  36207. -{ 0xD00D, 0xD00D, 0xD00D },
  36208. -{ 0xD00E, 0xD00E, 0xD00E },
  36209. -{ 0xD00F, 0xD00F, 0xD00F },
  36210. -{ 0xD010, 0xD010, 0xD010 },
  36211. -{ 0xD011, 0xD011, 0xD011 },
  36212. -{ 0xD012, 0xD012, 0xD012 },
  36213. -{ 0xD013, 0xD013, 0xD013 },
  36214. -{ 0xD014, 0xD014, 0xD014 },
  36215. -{ 0xD015, 0xD015, 0xD015 },
  36216. -{ 0xD016, 0xD016, 0xD016 },
  36217. -{ 0xD017, 0xD017, 0xD017 },
  36218. -{ 0xD018, 0xD018, 0xD018 },
  36219. -{ 0xD019, 0xD019, 0xD019 },
  36220. -{ 0xD01A, 0xD01A, 0xD01A },
  36221. -{ 0xD01B, 0xD01B, 0xD01B },
  36222. -{ 0xD01C, 0xD01C, 0xD01C },
  36223. -{ 0xD01D, 0xD01D, 0xD01D },
  36224. -{ 0xD01E, 0xD01E, 0xD01E },
  36225. -{ 0xD01F, 0xD01F, 0xD01F },
  36226. -{ 0xD020, 0xD020, 0xD020 },
  36227. -{ 0xD021, 0xD021, 0xD021 },
  36228. -{ 0xD022, 0xD022, 0xD022 },
  36229. -{ 0xD023, 0xD023, 0xD023 },
  36230. -{ 0xD024, 0xD024, 0xD024 },
  36231. -{ 0xD025, 0xD025, 0xD025 },
  36232. -{ 0xD026, 0xD026, 0xD026 },
  36233. -{ 0xD027, 0xD027, 0xD027 },
  36234. -{ 0xD028, 0xD028, 0xD028 },
  36235. -{ 0xD029, 0xD029, 0xD029 },
  36236. -{ 0xD02A, 0xD02A, 0xD02A },
  36237. -{ 0xD02B, 0xD02B, 0xD02B },
  36238. -{ 0xD02C, 0xD02C, 0xD02C },
  36239. -{ 0xD02D, 0xD02D, 0xD02D },
  36240. -{ 0xD02E, 0xD02E, 0xD02E },
  36241. -{ 0xD02F, 0xD02F, 0xD02F },
  36242. -{ 0xD030, 0xD030, 0xD030 },
  36243. -{ 0xD031, 0xD031, 0xD031 },
  36244. -{ 0xD032, 0xD032, 0xD032 },
  36245. -{ 0xD033, 0xD033, 0xD033 },
  36246. -{ 0xD034, 0xD034, 0xD034 },
  36247. -{ 0xD035, 0xD035, 0xD035 },
  36248. -{ 0xD036, 0xD036, 0xD036 },
  36249. -{ 0xD037, 0xD037, 0xD037 },
  36250. -{ 0xD038, 0xD038, 0xD038 },
  36251. -{ 0xD039, 0xD039, 0xD039 },
  36252. -{ 0xD03A, 0xD03A, 0xD03A },
  36253. -{ 0xD03B, 0xD03B, 0xD03B },
  36254. -{ 0xD03C, 0xD03C, 0xD03C },
  36255. -{ 0xD03D, 0xD03D, 0xD03D },
  36256. -{ 0xD03E, 0xD03E, 0xD03E },
  36257. -{ 0xD03F, 0xD03F, 0xD03F },
  36258. -{ 0xD040, 0xD040, 0xD040 },
  36259. -{ 0xD041, 0xD041, 0xD041 },
  36260. -{ 0xD042, 0xD042, 0xD042 },
  36261. -{ 0xD043, 0xD043, 0xD043 },
  36262. -{ 0xD044, 0xD044, 0xD044 },
  36263. -{ 0xD045, 0xD045, 0xD045 },
  36264. -{ 0xD046, 0xD046, 0xD046 },
  36265. -{ 0xD047, 0xD047, 0xD047 },
  36266. -{ 0xD048, 0xD048, 0xD048 },
  36267. -{ 0xD049, 0xD049, 0xD049 },
  36268. -{ 0xD04A, 0xD04A, 0xD04A },
  36269. -{ 0xD04B, 0xD04B, 0xD04B },
  36270. -{ 0xD04C, 0xD04C, 0xD04C },
  36271. -{ 0xD04D, 0xD04D, 0xD04D },
  36272. -{ 0xD04E, 0xD04E, 0xD04E },
  36273. -{ 0xD04F, 0xD04F, 0xD04F },
  36274. -{ 0xD050, 0xD050, 0xD050 },
  36275. -{ 0xD051, 0xD051, 0xD051 },
  36276. -{ 0xD052, 0xD052, 0xD052 },
  36277. -{ 0xD053, 0xD053, 0xD053 },
  36278. -{ 0xD054, 0xD054, 0xD054 },
  36279. -{ 0xD055, 0xD055, 0xD055 },
  36280. -{ 0xD056, 0xD056, 0xD056 },
  36281. -{ 0xD057, 0xD057, 0xD057 },
  36282. -{ 0xD058, 0xD058, 0xD058 },
  36283. -{ 0xD059, 0xD059, 0xD059 },
  36284. -{ 0xD05A, 0xD05A, 0xD05A },
  36285. -{ 0xD05B, 0xD05B, 0xD05B },
  36286. -{ 0xD05C, 0xD05C, 0xD05C },
  36287. -{ 0xD05D, 0xD05D, 0xD05D },
  36288. -{ 0xD05E, 0xD05E, 0xD05E },
  36289. -{ 0xD05F, 0xD05F, 0xD05F },
  36290. -{ 0xD060, 0xD060, 0xD060 },
  36291. -{ 0xD061, 0xD061, 0xD061 },
  36292. -{ 0xD062, 0xD062, 0xD062 },
  36293. -{ 0xD063, 0xD063, 0xD063 },
  36294. -{ 0xD064, 0xD064, 0xD064 },
  36295. -{ 0xD065, 0xD065, 0xD065 },
  36296. -{ 0xD066, 0xD066, 0xD066 },
  36297. -{ 0xD067, 0xD067, 0xD067 },
  36298. -{ 0xD068, 0xD068, 0xD068 },
  36299. -{ 0xD069, 0xD069, 0xD069 },
  36300. -{ 0xD06A, 0xD06A, 0xD06A },
  36301. -{ 0xD06B, 0xD06B, 0xD06B },
  36302. -{ 0xD06C, 0xD06C, 0xD06C },
  36303. -{ 0xD06D, 0xD06D, 0xD06D },
  36304. -{ 0xD06E, 0xD06E, 0xD06E },
  36305. -{ 0xD06F, 0xD06F, 0xD06F },
  36306. -{ 0xD070, 0xD070, 0xD070 },
  36307. -{ 0xD071, 0xD071, 0xD071 },
  36308. -{ 0xD072, 0xD072, 0xD072 },
  36309. -{ 0xD073, 0xD073, 0xD073 },
  36310. -{ 0xD074, 0xD074, 0xD074 },
  36311. -{ 0xD075, 0xD075, 0xD075 },
  36312. -{ 0xD076, 0xD076, 0xD076 },
  36313. -{ 0xD077, 0xD077, 0xD077 },
  36314. -{ 0xD078, 0xD078, 0xD078 },
  36315. -{ 0xD079, 0xD079, 0xD079 },
  36316. -{ 0xD07A, 0xD07A, 0xD07A },
  36317. -{ 0xD07B, 0xD07B, 0xD07B },
  36318. -{ 0xD07C, 0xD07C, 0xD07C },
  36319. -{ 0xD07D, 0xD07D, 0xD07D },
  36320. -{ 0xD07E, 0xD07E, 0xD07E },
  36321. -{ 0xD07F, 0xD07F, 0xD07F },
  36322. -{ 0xD080, 0xD080, 0xD080 },
  36323. -{ 0xD081, 0xD081, 0xD081 },
  36324. -{ 0xD082, 0xD082, 0xD082 },
  36325. -{ 0xD083, 0xD083, 0xD083 },
  36326. -{ 0xD084, 0xD084, 0xD084 },
  36327. -{ 0xD085, 0xD085, 0xD085 },
  36328. -{ 0xD086, 0xD086, 0xD086 },
  36329. -{ 0xD087, 0xD087, 0xD087 },
  36330. -{ 0xD088, 0xD088, 0xD088 },
  36331. -{ 0xD089, 0xD089, 0xD089 },
  36332. -{ 0xD08A, 0xD08A, 0xD08A },
  36333. -{ 0xD08B, 0xD08B, 0xD08B },
  36334. -{ 0xD08C, 0xD08C, 0xD08C },
  36335. -{ 0xD08D, 0xD08D, 0xD08D },
  36336. -{ 0xD08E, 0xD08E, 0xD08E },
  36337. -{ 0xD08F, 0xD08F, 0xD08F },
  36338. -{ 0xD090, 0xD090, 0xD090 },
  36339. -{ 0xD091, 0xD091, 0xD091 },
  36340. -{ 0xD092, 0xD092, 0xD092 },
  36341. -{ 0xD093, 0xD093, 0xD093 },
  36342. -{ 0xD094, 0xD094, 0xD094 },
  36343. -{ 0xD095, 0xD095, 0xD095 },
  36344. -{ 0xD096, 0xD096, 0xD096 },
  36345. -{ 0xD097, 0xD097, 0xD097 },
  36346. -{ 0xD098, 0xD098, 0xD098 },
  36347. -{ 0xD099, 0xD099, 0xD099 },
  36348. -{ 0xD09A, 0xD09A, 0xD09A },
  36349. -{ 0xD09B, 0xD09B, 0xD09B },
  36350. -{ 0xD09C, 0xD09C, 0xD09C },
  36351. -{ 0xD09D, 0xD09D, 0xD09D },
  36352. -{ 0xD09E, 0xD09E, 0xD09E },
  36353. -{ 0xD09F, 0xD09F, 0xD09F },
  36354. -{ 0xD0A0, 0xD0A0, 0xD0A0 },
  36355. -{ 0xD0A1, 0xD0A1, 0xD0A1 },
  36356. -{ 0xD0A2, 0xD0A2, 0xD0A2 },
  36357. -{ 0xD0A3, 0xD0A3, 0xD0A3 },
  36358. -{ 0xD0A4, 0xD0A4, 0xD0A4 },
  36359. -{ 0xD0A5, 0xD0A5, 0xD0A5 },
  36360. -{ 0xD0A6, 0xD0A6, 0xD0A6 },
  36361. -{ 0xD0A7, 0xD0A7, 0xD0A7 },
  36362. -{ 0xD0A8, 0xD0A8, 0xD0A8 },
  36363. -{ 0xD0A9, 0xD0A9, 0xD0A9 },
  36364. -{ 0xD0AA, 0xD0AA, 0xD0AA },
  36365. -{ 0xD0AB, 0xD0AB, 0xD0AB },
  36366. -{ 0xD0AC, 0xD0AC, 0xD0AC },
  36367. -{ 0xD0AD, 0xD0AD, 0xD0AD },
  36368. -{ 0xD0AE, 0xD0AE, 0xD0AE },
  36369. -{ 0xD0AF, 0xD0AF, 0xD0AF },
  36370. -{ 0xD0B0, 0xD0B0, 0xD0B0 },
  36371. -{ 0xD0B1, 0xD0B1, 0xD0B1 },
  36372. -{ 0xD0B2, 0xD0B2, 0xD0B2 },
  36373. -{ 0xD0B3, 0xD0B3, 0xD0B3 },
  36374. -{ 0xD0B4, 0xD0B4, 0xD0B4 },
  36375. -{ 0xD0B5, 0xD0B5, 0xD0B5 },
  36376. -{ 0xD0B6, 0xD0B6, 0xD0B6 },
  36377. -{ 0xD0B7, 0xD0B7, 0xD0B7 },
  36378. -{ 0xD0B8, 0xD0B8, 0xD0B8 },
  36379. -{ 0xD0B9, 0xD0B9, 0xD0B9 },
  36380. -{ 0xD0BA, 0xD0BA, 0xD0BA },
  36381. -{ 0xD0BB, 0xD0BB, 0xD0BB },
  36382. -{ 0xD0BC, 0xD0BC, 0xD0BC },
  36383. -{ 0xD0BD, 0xD0BD, 0xD0BD },
  36384. -{ 0xD0BE, 0xD0BE, 0xD0BE },
  36385. -{ 0xD0BF, 0xD0BF, 0xD0BF },
  36386. -{ 0xD0C0, 0xD0C0, 0xD0C0 },
  36387. -{ 0xD0C1, 0xD0C1, 0xD0C1 },
  36388. -{ 0xD0C2, 0xD0C2, 0xD0C2 },
  36389. -{ 0xD0C3, 0xD0C3, 0xD0C3 },
  36390. -{ 0xD0C4, 0xD0C4, 0xD0C4 },
  36391. -{ 0xD0C5, 0xD0C5, 0xD0C5 },
  36392. -{ 0xD0C6, 0xD0C6, 0xD0C6 },
  36393. -{ 0xD0C7, 0xD0C7, 0xD0C7 },
  36394. -{ 0xD0C8, 0xD0C8, 0xD0C8 },
  36395. -{ 0xD0C9, 0xD0C9, 0xD0C9 },
  36396. -{ 0xD0CA, 0xD0CA, 0xD0CA },
  36397. -{ 0xD0CB, 0xD0CB, 0xD0CB },
  36398. -{ 0xD0CC, 0xD0CC, 0xD0CC },
  36399. -{ 0xD0CD, 0xD0CD, 0xD0CD },
  36400. -{ 0xD0CE, 0xD0CE, 0xD0CE },
  36401. -{ 0xD0CF, 0xD0CF, 0xD0CF },
  36402. -{ 0xD0D0, 0xD0D0, 0xD0D0 },
  36403. -{ 0xD0D1, 0xD0D1, 0xD0D1 },
  36404. -{ 0xD0D2, 0xD0D2, 0xD0D2 },
  36405. -{ 0xD0D3, 0xD0D3, 0xD0D3 },
  36406. -{ 0xD0D4, 0xD0D4, 0xD0D4 },
  36407. -{ 0xD0D5, 0xD0D5, 0xD0D5 },
  36408. -{ 0xD0D6, 0xD0D6, 0xD0D6 },
  36409. -{ 0xD0D7, 0xD0D7, 0xD0D7 },
  36410. -{ 0xD0D8, 0xD0D8, 0xD0D8 },
  36411. -{ 0xD0D9, 0xD0D9, 0xD0D9 },
  36412. -{ 0xD0DA, 0xD0DA, 0xD0DA },
  36413. -{ 0xD0DB, 0xD0DB, 0xD0DB },
  36414. -{ 0xD0DC, 0xD0DC, 0xD0DC },
  36415. -{ 0xD0DD, 0xD0DD, 0xD0DD },
  36416. -{ 0xD0DE, 0xD0DE, 0xD0DE },
  36417. -{ 0xD0DF, 0xD0DF, 0xD0DF },
  36418. -{ 0xD0E0, 0xD0E0, 0xD0E0 },
  36419. -{ 0xD0E1, 0xD0E1, 0xD0E1 },
  36420. -{ 0xD0E2, 0xD0E2, 0xD0E2 },
  36421. -{ 0xD0E3, 0xD0E3, 0xD0E3 },
  36422. -{ 0xD0E4, 0xD0E4, 0xD0E4 },
  36423. -{ 0xD0E5, 0xD0E5, 0xD0E5 },
  36424. -{ 0xD0E6, 0xD0E6, 0xD0E6 },
  36425. -{ 0xD0E7, 0xD0E7, 0xD0E7 },
  36426. -{ 0xD0E8, 0xD0E8, 0xD0E8 },
  36427. -{ 0xD0E9, 0xD0E9, 0xD0E9 },
  36428. -{ 0xD0EA, 0xD0EA, 0xD0EA },
  36429. -{ 0xD0EB, 0xD0EB, 0xD0EB },
  36430. -{ 0xD0EC, 0xD0EC, 0xD0EC },
  36431. -{ 0xD0ED, 0xD0ED, 0xD0ED },
  36432. -{ 0xD0EE, 0xD0EE, 0xD0EE },
  36433. -{ 0xD0EF, 0xD0EF, 0xD0EF },
  36434. -{ 0xD0F0, 0xD0F0, 0xD0F0 },
  36435. -{ 0xD0F1, 0xD0F1, 0xD0F1 },
  36436. -{ 0xD0F2, 0xD0F2, 0xD0F2 },
  36437. -{ 0xD0F3, 0xD0F3, 0xD0F3 },
  36438. -{ 0xD0F4, 0xD0F4, 0xD0F4 },
  36439. -{ 0xD0F5, 0xD0F5, 0xD0F5 },
  36440. -{ 0xD0F6, 0xD0F6, 0xD0F6 },
  36441. -{ 0xD0F7, 0xD0F7, 0xD0F7 },
  36442. -{ 0xD0F8, 0xD0F8, 0xD0F8 },
  36443. -{ 0xD0F9, 0xD0F9, 0xD0F9 },
  36444. -{ 0xD0FA, 0xD0FA, 0xD0FA },
  36445. -{ 0xD0FB, 0xD0FB, 0xD0FB },
  36446. -{ 0xD0FC, 0xD0FC, 0xD0FC },
  36447. -{ 0xD0FD, 0xD0FD, 0xD0FD },
  36448. -{ 0xD0FE, 0xD0FE, 0xD0FE },
  36449. -{ 0xD0FF, 0xD0FF, 0xD0FF },
  36450. -{ 0xD100, 0xD100, 0xD100 },
  36451. -{ 0xD101, 0xD101, 0xD101 },
  36452. -{ 0xD102, 0xD102, 0xD102 },
  36453. -{ 0xD103, 0xD103, 0xD103 },
  36454. -{ 0xD104, 0xD104, 0xD104 },
  36455. -{ 0xD105, 0xD105, 0xD105 },
  36456. -{ 0xD106, 0xD106, 0xD106 },
  36457. -{ 0xD107, 0xD107, 0xD107 },
  36458. -{ 0xD108, 0xD108, 0xD108 },
  36459. -{ 0xD109, 0xD109, 0xD109 },
  36460. -{ 0xD10A, 0xD10A, 0xD10A },
  36461. -{ 0xD10B, 0xD10B, 0xD10B },
  36462. -{ 0xD10C, 0xD10C, 0xD10C },
  36463. -{ 0xD10D, 0xD10D, 0xD10D },
  36464. -{ 0xD10E, 0xD10E, 0xD10E },
  36465. -{ 0xD10F, 0xD10F, 0xD10F },
  36466. -{ 0xD110, 0xD110, 0xD110 },
  36467. -{ 0xD111, 0xD111, 0xD111 },
  36468. -{ 0xD112, 0xD112, 0xD112 },
  36469. -{ 0xD113, 0xD113, 0xD113 },
  36470. -{ 0xD114, 0xD114, 0xD114 },
  36471. -{ 0xD115, 0xD115, 0xD115 },
  36472. -{ 0xD116, 0xD116, 0xD116 },
  36473. -{ 0xD117, 0xD117, 0xD117 },
  36474. -{ 0xD118, 0xD118, 0xD118 },
  36475. -{ 0xD119, 0xD119, 0xD119 },
  36476. -{ 0xD11A, 0xD11A, 0xD11A },
  36477. -{ 0xD11B, 0xD11B, 0xD11B },
  36478. -{ 0xD11C, 0xD11C, 0xD11C },
  36479. -{ 0xD11D, 0xD11D, 0xD11D },
  36480. -{ 0xD11E, 0xD11E, 0xD11E },
  36481. -{ 0xD11F, 0xD11F, 0xD11F },
  36482. -{ 0xD120, 0xD120, 0xD120 },
  36483. -{ 0xD121, 0xD121, 0xD121 },
  36484. -{ 0xD122, 0xD122, 0xD122 },
  36485. -{ 0xD123, 0xD123, 0xD123 },
  36486. -{ 0xD124, 0xD124, 0xD124 },
  36487. -{ 0xD125, 0xD125, 0xD125 },
  36488. -{ 0xD126, 0xD126, 0xD126 },
  36489. -{ 0xD127, 0xD127, 0xD127 },
  36490. -{ 0xD128, 0xD128, 0xD128 },
  36491. -{ 0xD129, 0xD129, 0xD129 },
  36492. -{ 0xD12A, 0xD12A, 0xD12A },
  36493. -{ 0xD12B, 0xD12B, 0xD12B },
  36494. -{ 0xD12C, 0xD12C, 0xD12C },
  36495. -{ 0xD12D, 0xD12D, 0xD12D },
  36496. -{ 0xD12E, 0xD12E, 0xD12E },
  36497. -{ 0xD12F, 0xD12F, 0xD12F },
  36498. -{ 0xD130, 0xD130, 0xD130 },
  36499. -{ 0xD131, 0xD131, 0xD131 },
  36500. -{ 0xD132, 0xD132, 0xD132 },
  36501. -{ 0xD133, 0xD133, 0xD133 },
  36502. -{ 0xD134, 0xD134, 0xD134 },
  36503. -{ 0xD135, 0xD135, 0xD135 },
  36504. -{ 0xD136, 0xD136, 0xD136 },
  36505. -{ 0xD137, 0xD137, 0xD137 },
  36506. -{ 0xD138, 0xD138, 0xD138 },
  36507. -{ 0xD139, 0xD139, 0xD139 },
  36508. -{ 0xD13A, 0xD13A, 0xD13A },
  36509. -{ 0xD13B, 0xD13B, 0xD13B },
  36510. -{ 0xD13C, 0xD13C, 0xD13C },
  36511. -{ 0xD13D, 0xD13D, 0xD13D },
  36512. -{ 0xD13E, 0xD13E, 0xD13E },
  36513. -{ 0xD13F, 0xD13F, 0xD13F },
  36514. -{ 0xD140, 0xD140, 0xD140 },
  36515. -{ 0xD141, 0xD141, 0xD141 },
  36516. -{ 0xD142, 0xD142, 0xD142 },
  36517. -{ 0xD143, 0xD143, 0xD143 },
  36518. -{ 0xD144, 0xD144, 0xD144 },
  36519. -{ 0xD145, 0xD145, 0xD145 },
  36520. -{ 0xD146, 0xD146, 0xD146 },
  36521. -{ 0xD147, 0xD147, 0xD147 },
  36522. -{ 0xD148, 0xD148, 0xD148 },
  36523. -{ 0xD149, 0xD149, 0xD149 },
  36524. -{ 0xD14A, 0xD14A, 0xD14A },
  36525. -{ 0xD14B, 0xD14B, 0xD14B },
  36526. -{ 0xD14C, 0xD14C, 0xD14C },
  36527. -{ 0xD14D, 0xD14D, 0xD14D },
  36528. -{ 0xD14E, 0xD14E, 0xD14E },
  36529. -{ 0xD14F, 0xD14F, 0xD14F },
  36530. -{ 0xD150, 0xD150, 0xD150 },
  36531. -{ 0xD151, 0xD151, 0xD151 },
  36532. -{ 0xD152, 0xD152, 0xD152 },
  36533. -{ 0xD153, 0xD153, 0xD153 },
  36534. -{ 0xD154, 0xD154, 0xD154 },
  36535. -{ 0xD155, 0xD155, 0xD155 },
  36536. -{ 0xD156, 0xD156, 0xD156 },
  36537. -{ 0xD157, 0xD157, 0xD157 },
  36538. -{ 0xD158, 0xD158, 0xD158 },
  36539. -{ 0xD159, 0xD159, 0xD159 },
  36540. -{ 0xD15A, 0xD15A, 0xD15A },
  36541. -{ 0xD15B, 0xD15B, 0xD15B },
  36542. -{ 0xD15C, 0xD15C, 0xD15C },
  36543. -{ 0xD15D, 0xD15D, 0xD15D },
  36544. -{ 0xD15E, 0xD15E, 0xD15E },
  36545. -{ 0xD15F, 0xD15F, 0xD15F },
  36546. -{ 0xD160, 0xD160, 0xD160 },
  36547. -{ 0xD161, 0xD161, 0xD161 },
  36548. -{ 0xD162, 0xD162, 0xD162 },
  36549. -{ 0xD163, 0xD163, 0xD163 },
  36550. -{ 0xD164, 0xD164, 0xD164 },
  36551. -{ 0xD165, 0xD165, 0xD165 },
  36552. -{ 0xD166, 0xD166, 0xD166 },
  36553. -{ 0xD167, 0xD167, 0xD167 },
  36554. -{ 0xD168, 0xD168, 0xD168 },
  36555. -{ 0xD169, 0xD169, 0xD169 },
  36556. -{ 0xD16A, 0xD16A, 0xD16A },
  36557. -{ 0xD16B, 0xD16B, 0xD16B },
  36558. -{ 0xD16C, 0xD16C, 0xD16C },
  36559. -{ 0xD16D, 0xD16D, 0xD16D },
  36560. -{ 0xD16E, 0xD16E, 0xD16E },
  36561. -{ 0xD16F, 0xD16F, 0xD16F },
  36562. -{ 0xD170, 0xD170, 0xD170 },
  36563. -{ 0xD171, 0xD171, 0xD171 },
  36564. -{ 0xD172, 0xD172, 0xD172 },
  36565. -{ 0xD173, 0xD173, 0xD173 },
  36566. -{ 0xD174, 0xD174, 0xD174 },
  36567. -{ 0xD175, 0xD175, 0xD175 },
  36568. -{ 0xD176, 0xD176, 0xD176 },
  36569. -{ 0xD177, 0xD177, 0xD177 },
  36570. -{ 0xD178, 0xD178, 0xD178 },
  36571. -{ 0xD179, 0xD179, 0xD179 },
  36572. -{ 0xD17A, 0xD17A, 0xD17A },
  36573. -{ 0xD17B, 0xD17B, 0xD17B },
  36574. -{ 0xD17C, 0xD17C, 0xD17C },
  36575. -{ 0xD17D, 0xD17D, 0xD17D },
  36576. -{ 0xD17E, 0xD17E, 0xD17E },
  36577. -{ 0xD17F, 0xD17F, 0xD17F },
  36578. -{ 0xD180, 0xD180, 0xD180 },
  36579. -{ 0xD181, 0xD181, 0xD181 },
  36580. -{ 0xD182, 0xD182, 0xD182 },
  36581. -{ 0xD183, 0xD183, 0xD183 },
  36582. -{ 0xD184, 0xD184, 0xD184 },
  36583. -{ 0xD185, 0xD185, 0xD185 },
  36584. -{ 0xD186, 0xD186, 0xD186 },
  36585. -{ 0xD187, 0xD187, 0xD187 },
  36586. -{ 0xD188, 0xD188, 0xD188 },
  36587. -{ 0xD189, 0xD189, 0xD189 },
  36588. -{ 0xD18A, 0xD18A, 0xD18A },
  36589. -{ 0xD18B, 0xD18B, 0xD18B },
  36590. -{ 0xD18C, 0xD18C, 0xD18C },
  36591. -{ 0xD18D, 0xD18D, 0xD18D },
  36592. -{ 0xD18E, 0xD18E, 0xD18E },
  36593. -{ 0xD18F, 0xD18F, 0xD18F },
  36594. -{ 0xD190, 0xD190, 0xD190 },
  36595. -{ 0xD191, 0xD191, 0xD191 },
  36596. -{ 0xD192, 0xD192, 0xD192 },
  36597. -{ 0xD193, 0xD193, 0xD193 },
  36598. -{ 0xD194, 0xD194, 0xD194 },
  36599. -{ 0xD195, 0xD195, 0xD195 },
  36600. -{ 0xD196, 0xD196, 0xD196 },
  36601. -{ 0xD197, 0xD197, 0xD197 },
  36602. -{ 0xD198, 0xD198, 0xD198 },
  36603. -{ 0xD199, 0xD199, 0xD199 },
  36604. -{ 0xD19A, 0xD19A, 0xD19A },
  36605. -{ 0xD19B, 0xD19B, 0xD19B },
  36606. -{ 0xD19C, 0xD19C, 0xD19C },
  36607. -{ 0xD19D, 0xD19D, 0xD19D },
  36608. -{ 0xD19E, 0xD19E, 0xD19E },
  36609. -{ 0xD19F, 0xD19F, 0xD19F },
  36610. -{ 0xD1A0, 0xD1A0, 0xD1A0 },
  36611. -{ 0xD1A1, 0xD1A1, 0xD1A1 },
  36612. -{ 0xD1A2, 0xD1A2, 0xD1A2 },
  36613. -{ 0xD1A3, 0xD1A3, 0xD1A3 },
  36614. -{ 0xD1A4, 0xD1A4, 0xD1A4 },
  36615. -{ 0xD1A5, 0xD1A5, 0xD1A5 },
  36616. -{ 0xD1A6, 0xD1A6, 0xD1A6 },
  36617. -{ 0xD1A7, 0xD1A7, 0xD1A7 },
  36618. -{ 0xD1A8, 0xD1A8, 0xD1A8 },
  36619. -{ 0xD1A9, 0xD1A9, 0xD1A9 },
  36620. -{ 0xD1AA, 0xD1AA, 0xD1AA },
  36621. -{ 0xD1AB, 0xD1AB, 0xD1AB },
  36622. -{ 0xD1AC, 0xD1AC, 0xD1AC },
  36623. -{ 0xD1AD, 0xD1AD, 0xD1AD },
  36624. -{ 0xD1AE, 0xD1AE, 0xD1AE },
  36625. -{ 0xD1AF, 0xD1AF, 0xD1AF },
  36626. -{ 0xD1B0, 0xD1B0, 0xD1B0 },
  36627. -{ 0xD1B1, 0xD1B1, 0xD1B1 },
  36628. -{ 0xD1B2, 0xD1B2, 0xD1B2 },
  36629. -{ 0xD1B3, 0xD1B3, 0xD1B3 },
  36630. -{ 0xD1B4, 0xD1B4, 0xD1B4 },
  36631. -{ 0xD1B5, 0xD1B5, 0xD1B5 },
  36632. -{ 0xD1B6, 0xD1B6, 0xD1B6 },
  36633. -{ 0xD1B7, 0xD1B7, 0xD1B7 },
  36634. -{ 0xD1B8, 0xD1B8, 0xD1B8 },
  36635. -{ 0xD1B9, 0xD1B9, 0xD1B9 },
  36636. -{ 0xD1BA, 0xD1BA, 0xD1BA },
  36637. -{ 0xD1BB, 0xD1BB, 0xD1BB },
  36638. -{ 0xD1BC, 0xD1BC, 0xD1BC },
  36639. -{ 0xD1BD, 0xD1BD, 0xD1BD },
  36640. -{ 0xD1BE, 0xD1BE, 0xD1BE },
  36641. -{ 0xD1BF, 0xD1BF, 0xD1BF },
  36642. -{ 0xD1C0, 0xD1C0, 0xD1C0 },
  36643. -{ 0xD1C1, 0xD1C1, 0xD1C1 },
  36644. -{ 0xD1C2, 0xD1C2, 0xD1C2 },
  36645. -{ 0xD1C3, 0xD1C3, 0xD1C3 },
  36646. -{ 0xD1C4, 0xD1C4, 0xD1C4 },
  36647. -{ 0xD1C5, 0xD1C5, 0xD1C5 },
  36648. -{ 0xD1C6, 0xD1C6, 0xD1C6 },
  36649. -{ 0xD1C7, 0xD1C7, 0xD1C7 },
  36650. -{ 0xD1C8, 0xD1C8, 0xD1C8 },
  36651. -{ 0xD1C9, 0xD1C9, 0xD1C9 },
  36652. -{ 0xD1CA, 0xD1CA, 0xD1CA },
  36653. -{ 0xD1CB, 0xD1CB, 0xD1CB },
  36654. -{ 0xD1CC, 0xD1CC, 0xD1CC },
  36655. -{ 0xD1CD, 0xD1CD, 0xD1CD },
  36656. -{ 0xD1CE, 0xD1CE, 0xD1CE },
  36657. -{ 0xD1CF, 0xD1CF, 0xD1CF },
  36658. -{ 0xD1D0, 0xD1D0, 0xD1D0 },
  36659. -{ 0xD1D1, 0xD1D1, 0xD1D1 },
  36660. -{ 0xD1D2, 0xD1D2, 0xD1D2 },
  36661. -{ 0xD1D3, 0xD1D3, 0xD1D3 },
  36662. -{ 0xD1D4, 0xD1D4, 0xD1D4 },
  36663. -{ 0xD1D5, 0xD1D5, 0xD1D5 },
  36664. -{ 0xD1D6, 0xD1D6, 0xD1D6 },
  36665. -{ 0xD1D7, 0xD1D7, 0xD1D7 },
  36666. -{ 0xD1D8, 0xD1D8, 0xD1D8 },
  36667. -{ 0xD1D9, 0xD1D9, 0xD1D9 },
  36668. -{ 0xD1DA, 0xD1DA, 0xD1DA },
  36669. -{ 0xD1DB, 0xD1DB, 0xD1DB },
  36670. -{ 0xD1DC, 0xD1DC, 0xD1DC },
  36671. -{ 0xD1DD, 0xD1DD, 0xD1DD },
  36672. -{ 0xD1DE, 0xD1DE, 0xD1DE },
  36673. -{ 0xD1DF, 0xD1DF, 0xD1DF },
  36674. -{ 0xD1E0, 0xD1E0, 0xD1E0 },
  36675. -{ 0xD1E1, 0xD1E1, 0xD1E1 },
  36676. -{ 0xD1E2, 0xD1E2, 0xD1E2 },
  36677. -{ 0xD1E3, 0xD1E3, 0xD1E3 },
  36678. -{ 0xD1E4, 0xD1E4, 0xD1E4 },
  36679. -{ 0xD1E5, 0xD1E5, 0xD1E5 },
  36680. -{ 0xD1E6, 0xD1E6, 0xD1E6 },
  36681. -{ 0xD1E7, 0xD1E7, 0xD1E7 },
  36682. -{ 0xD1E8, 0xD1E8, 0xD1E8 },
  36683. -{ 0xD1E9, 0xD1E9, 0xD1E9 },
  36684. -{ 0xD1EA, 0xD1EA, 0xD1EA },
  36685. -{ 0xD1EB, 0xD1EB, 0xD1EB },
  36686. -{ 0xD1EC, 0xD1EC, 0xD1EC },
  36687. -{ 0xD1ED, 0xD1ED, 0xD1ED },
  36688. -{ 0xD1EE, 0xD1EE, 0xD1EE },
  36689. -{ 0xD1EF, 0xD1EF, 0xD1EF },
  36690. -{ 0xD1F0, 0xD1F0, 0xD1F0 },
  36691. -{ 0xD1F1, 0xD1F1, 0xD1F1 },
  36692. -{ 0xD1F2, 0xD1F2, 0xD1F2 },
  36693. -{ 0xD1F3, 0xD1F3, 0xD1F3 },
  36694. -{ 0xD1F4, 0xD1F4, 0xD1F4 },
  36695. -{ 0xD1F5, 0xD1F5, 0xD1F5 },
  36696. -{ 0xD1F6, 0xD1F6, 0xD1F6 },
  36697. -{ 0xD1F7, 0xD1F7, 0xD1F7 },
  36698. -{ 0xD1F8, 0xD1F8, 0xD1F8 },
  36699. -{ 0xD1F9, 0xD1F9, 0xD1F9 },
  36700. -{ 0xD1FA, 0xD1FA, 0xD1FA },
  36701. -{ 0xD1FB, 0xD1FB, 0xD1FB },
  36702. -{ 0xD1FC, 0xD1FC, 0xD1FC },
  36703. -{ 0xD1FD, 0xD1FD, 0xD1FD },
  36704. -{ 0xD1FE, 0xD1FE, 0xD1FE },
  36705. -{ 0xD1FF, 0xD1FF, 0xD1FF },
  36706. -{ 0xD200, 0xD200, 0xD200 },
  36707. -{ 0xD201, 0xD201, 0xD201 },
  36708. -{ 0xD202, 0xD202, 0xD202 },
  36709. -{ 0xD203, 0xD203, 0xD203 },
  36710. -{ 0xD204, 0xD204, 0xD204 },
  36711. -{ 0xD205, 0xD205, 0xD205 },
  36712. -{ 0xD206, 0xD206, 0xD206 },
  36713. -{ 0xD207, 0xD207, 0xD207 },
  36714. -{ 0xD208, 0xD208, 0xD208 },
  36715. -{ 0xD209, 0xD209, 0xD209 },
  36716. -{ 0xD20A, 0xD20A, 0xD20A },
  36717. -{ 0xD20B, 0xD20B, 0xD20B },
  36718. -{ 0xD20C, 0xD20C, 0xD20C },
  36719. -{ 0xD20D, 0xD20D, 0xD20D },
  36720. -{ 0xD20E, 0xD20E, 0xD20E },
  36721. -{ 0xD20F, 0xD20F, 0xD20F },
  36722. -{ 0xD210, 0xD210, 0xD210 },
  36723. -{ 0xD211, 0xD211, 0xD211 },
  36724. -{ 0xD212, 0xD212, 0xD212 },
  36725. -{ 0xD213, 0xD213, 0xD213 },
  36726. -{ 0xD214, 0xD214, 0xD214 },
  36727. -{ 0xD215, 0xD215, 0xD215 },
  36728. -{ 0xD216, 0xD216, 0xD216 },
  36729. -{ 0xD217, 0xD217, 0xD217 },
  36730. -{ 0xD218, 0xD218, 0xD218 },
  36731. -{ 0xD219, 0xD219, 0xD219 },
  36732. -{ 0xD21A, 0xD21A, 0xD21A },
  36733. -{ 0xD21B, 0xD21B, 0xD21B },
  36734. -{ 0xD21C, 0xD21C, 0xD21C },
  36735. -{ 0xD21D, 0xD21D, 0xD21D },
  36736. -{ 0xD21E, 0xD21E, 0xD21E },
  36737. -{ 0xD21F, 0xD21F, 0xD21F },
  36738. -{ 0xD220, 0xD220, 0xD220 },
  36739. -{ 0xD221, 0xD221, 0xD221 },
  36740. -{ 0xD222, 0xD222, 0xD222 },
  36741. -{ 0xD223, 0xD223, 0xD223 },
  36742. -{ 0xD224, 0xD224, 0xD224 },
  36743. -{ 0xD225, 0xD225, 0xD225 },
  36744. -{ 0xD226, 0xD226, 0xD226 },
  36745. -{ 0xD227, 0xD227, 0xD227 },
  36746. -{ 0xD228, 0xD228, 0xD228 },
  36747. -{ 0xD229, 0xD229, 0xD229 },
  36748. -{ 0xD22A, 0xD22A, 0xD22A },
  36749. -{ 0xD22B, 0xD22B, 0xD22B },
  36750. -{ 0xD22C, 0xD22C, 0xD22C },
  36751. -{ 0xD22D, 0xD22D, 0xD22D },
  36752. -{ 0xD22E, 0xD22E, 0xD22E },
  36753. -{ 0xD22F, 0xD22F, 0xD22F },
  36754. -{ 0xD230, 0xD230, 0xD230 },
  36755. -{ 0xD231, 0xD231, 0xD231 },
  36756. -{ 0xD232, 0xD232, 0xD232 },
  36757. -{ 0xD233, 0xD233, 0xD233 },
  36758. -{ 0xD234, 0xD234, 0xD234 },
  36759. -{ 0xD235, 0xD235, 0xD235 },
  36760. -{ 0xD236, 0xD236, 0xD236 },
  36761. -{ 0xD237, 0xD237, 0xD237 },
  36762. -{ 0xD238, 0xD238, 0xD238 },
  36763. -{ 0xD239, 0xD239, 0xD239 },
  36764. -{ 0xD23A, 0xD23A, 0xD23A },
  36765. -{ 0xD23B, 0xD23B, 0xD23B },
  36766. -{ 0xD23C, 0xD23C, 0xD23C },
  36767. -{ 0xD23D, 0xD23D, 0xD23D },
  36768. -{ 0xD23E, 0xD23E, 0xD23E },
  36769. -{ 0xD23F, 0xD23F, 0xD23F },
  36770. -{ 0xD240, 0xD240, 0xD240 },
  36771. -{ 0xD241, 0xD241, 0xD241 },
  36772. -{ 0xD242, 0xD242, 0xD242 },
  36773. -{ 0xD243, 0xD243, 0xD243 },
  36774. -{ 0xD244, 0xD244, 0xD244 },
  36775. -{ 0xD245, 0xD245, 0xD245 },
  36776. -{ 0xD246, 0xD246, 0xD246 },
  36777. -{ 0xD247, 0xD247, 0xD247 },
  36778. -{ 0xD248, 0xD248, 0xD248 },
  36779. -{ 0xD249, 0xD249, 0xD249 },
  36780. -{ 0xD24A, 0xD24A, 0xD24A },
  36781. -{ 0xD24B, 0xD24B, 0xD24B },
  36782. -{ 0xD24C, 0xD24C, 0xD24C },
  36783. -{ 0xD24D, 0xD24D, 0xD24D },
  36784. -{ 0xD24E, 0xD24E, 0xD24E },
  36785. -{ 0xD24F, 0xD24F, 0xD24F },
  36786. -{ 0xD250, 0xD250, 0xD250 },
  36787. -{ 0xD251, 0xD251, 0xD251 },
  36788. -{ 0xD252, 0xD252, 0xD252 },
  36789. -{ 0xD253, 0xD253, 0xD253 },
  36790. -{ 0xD254, 0xD254, 0xD254 },
  36791. -{ 0xD255, 0xD255, 0xD255 },
  36792. -{ 0xD256, 0xD256, 0xD256 },
  36793. -{ 0xD257, 0xD257, 0xD257 },
  36794. -{ 0xD258, 0xD258, 0xD258 },
  36795. -{ 0xD259, 0xD259, 0xD259 },
  36796. -{ 0xD25A, 0xD25A, 0xD25A },
  36797. -{ 0xD25B, 0xD25B, 0xD25B },
  36798. -{ 0xD25C, 0xD25C, 0xD25C },
  36799. -{ 0xD25D, 0xD25D, 0xD25D },
  36800. -{ 0xD25E, 0xD25E, 0xD25E },
  36801. -{ 0xD25F, 0xD25F, 0xD25F },
  36802. -{ 0xD260, 0xD260, 0xD260 },
  36803. -{ 0xD261, 0xD261, 0xD261 },
  36804. -{ 0xD262, 0xD262, 0xD262 },
  36805. -{ 0xD263, 0xD263, 0xD263 },
  36806. -{ 0xD264, 0xD264, 0xD264 },
  36807. -{ 0xD265, 0xD265, 0xD265 },
  36808. -{ 0xD266, 0xD266, 0xD266 },
  36809. -{ 0xD267, 0xD267, 0xD267 },
  36810. -{ 0xD268, 0xD268, 0xD268 },
  36811. -{ 0xD269, 0xD269, 0xD269 },
  36812. -{ 0xD26A, 0xD26A, 0xD26A },
  36813. -{ 0xD26B, 0xD26B, 0xD26B },
  36814. -{ 0xD26C, 0xD26C, 0xD26C },
  36815. -{ 0xD26D, 0xD26D, 0xD26D },
  36816. -{ 0xD26E, 0xD26E, 0xD26E },
  36817. -{ 0xD26F, 0xD26F, 0xD26F },
  36818. -{ 0xD270, 0xD270, 0xD270 },
  36819. -{ 0xD271, 0xD271, 0xD271 },
  36820. -{ 0xD272, 0xD272, 0xD272 },
  36821. -{ 0xD273, 0xD273, 0xD273 },
  36822. -{ 0xD274, 0xD274, 0xD274 },
  36823. -{ 0xD275, 0xD275, 0xD275 },
  36824. -{ 0xD276, 0xD276, 0xD276 },
  36825. -{ 0xD277, 0xD277, 0xD277 },
  36826. -{ 0xD278, 0xD278, 0xD278 },
  36827. -{ 0xD279, 0xD279, 0xD279 },
  36828. -{ 0xD27A, 0xD27A, 0xD27A },
  36829. -{ 0xD27B, 0xD27B, 0xD27B },
  36830. -{ 0xD27C, 0xD27C, 0xD27C },
  36831. -{ 0xD27D, 0xD27D, 0xD27D },
  36832. -{ 0xD27E, 0xD27E, 0xD27E },
  36833. -{ 0xD27F, 0xD27F, 0xD27F },
  36834. -{ 0xD280, 0xD280, 0xD280 },
  36835. -{ 0xD281, 0xD281, 0xD281 },
  36836. -{ 0xD282, 0xD282, 0xD282 },
  36837. -{ 0xD283, 0xD283, 0xD283 },
  36838. -{ 0xD284, 0xD284, 0xD284 },
  36839. -{ 0xD285, 0xD285, 0xD285 },
  36840. -{ 0xD286, 0xD286, 0xD286 },
  36841. -{ 0xD287, 0xD287, 0xD287 },
  36842. -{ 0xD288, 0xD288, 0xD288 },
  36843. -{ 0xD289, 0xD289, 0xD289 },
  36844. -{ 0xD28A, 0xD28A, 0xD28A },
  36845. -{ 0xD28B, 0xD28B, 0xD28B },
  36846. -{ 0xD28C, 0xD28C, 0xD28C },
  36847. -{ 0xD28D, 0xD28D, 0xD28D },
  36848. -{ 0xD28E, 0xD28E, 0xD28E },
  36849. -{ 0xD28F, 0xD28F, 0xD28F },
  36850. -{ 0xD290, 0xD290, 0xD290 },
  36851. -{ 0xD291, 0xD291, 0xD291 },
  36852. -{ 0xD292, 0xD292, 0xD292 },
  36853. -{ 0xD293, 0xD293, 0xD293 },
  36854. -{ 0xD294, 0xD294, 0xD294 },
  36855. -{ 0xD295, 0xD295, 0xD295 },
  36856. -{ 0xD296, 0xD296, 0xD296 },
  36857. -{ 0xD297, 0xD297, 0xD297 },
  36858. -{ 0xD298, 0xD298, 0xD298 },
  36859. -{ 0xD299, 0xD299, 0xD299 },
  36860. -{ 0xD29A, 0xD29A, 0xD29A },
  36861. -{ 0xD29B, 0xD29B, 0xD29B },
  36862. -{ 0xD29C, 0xD29C, 0xD29C },
  36863. -{ 0xD29D, 0xD29D, 0xD29D },
  36864. -{ 0xD29E, 0xD29E, 0xD29E },
  36865. -{ 0xD29F, 0xD29F, 0xD29F },
  36866. -{ 0xD2A0, 0xD2A0, 0xD2A0 },
  36867. -{ 0xD2A1, 0xD2A1, 0xD2A1 },
  36868. -{ 0xD2A2, 0xD2A2, 0xD2A2 },
  36869. -{ 0xD2A3, 0xD2A3, 0xD2A3 },
  36870. -{ 0xD2A4, 0xD2A4, 0xD2A4 },
  36871. -{ 0xD2A5, 0xD2A5, 0xD2A5 },
  36872. -{ 0xD2A6, 0xD2A6, 0xD2A6 },
  36873. -{ 0xD2A7, 0xD2A7, 0xD2A7 },
  36874. -{ 0xD2A8, 0xD2A8, 0xD2A8 },
  36875. -{ 0xD2A9, 0xD2A9, 0xD2A9 },
  36876. -{ 0xD2AA, 0xD2AA, 0xD2AA },
  36877. -{ 0xD2AB, 0xD2AB, 0xD2AB },
  36878. -{ 0xD2AC, 0xD2AC, 0xD2AC },
  36879. -{ 0xD2AD, 0xD2AD, 0xD2AD },
  36880. -{ 0xD2AE, 0xD2AE, 0xD2AE },
  36881. -{ 0xD2AF, 0xD2AF, 0xD2AF },
  36882. -{ 0xD2B0, 0xD2B0, 0xD2B0 },
  36883. -{ 0xD2B1, 0xD2B1, 0xD2B1 },
  36884. -{ 0xD2B2, 0xD2B2, 0xD2B2 },
  36885. -{ 0xD2B3, 0xD2B3, 0xD2B3 },
  36886. -{ 0xD2B4, 0xD2B4, 0xD2B4 },
  36887. -{ 0xD2B5, 0xD2B5, 0xD2B5 },
  36888. -{ 0xD2B6, 0xD2B6, 0xD2B6 },
  36889. -{ 0xD2B7, 0xD2B7, 0xD2B7 },
  36890. -{ 0xD2B8, 0xD2B8, 0xD2B8 },
  36891. -{ 0xD2B9, 0xD2B9, 0xD2B9 },
  36892. -{ 0xD2BA, 0xD2BA, 0xD2BA },
  36893. -{ 0xD2BB, 0xD2BB, 0xD2BB },
  36894. -{ 0xD2BC, 0xD2BC, 0xD2BC },
  36895. -{ 0xD2BD, 0xD2BD, 0xD2BD },
  36896. -{ 0xD2BE, 0xD2BE, 0xD2BE },
  36897. -{ 0xD2BF, 0xD2BF, 0xD2BF },
  36898. -{ 0xD2C0, 0xD2C0, 0xD2C0 },
  36899. -{ 0xD2C1, 0xD2C1, 0xD2C1 },
  36900. -{ 0xD2C2, 0xD2C2, 0xD2C2 },
  36901. -{ 0xD2C3, 0xD2C3, 0xD2C3 },
  36902. -{ 0xD2C4, 0xD2C4, 0xD2C4 },
  36903. -{ 0xD2C5, 0xD2C5, 0xD2C5 },
  36904. -{ 0xD2C6, 0xD2C6, 0xD2C6 },
  36905. -{ 0xD2C7, 0xD2C7, 0xD2C7 },
  36906. -{ 0xD2C8, 0xD2C8, 0xD2C8 },
  36907. -{ 0xD2C9, 0xD2C9, 0xD2C9 },
  36908. -{ 0xD2CA, 0xD2CA, 0xD2CA },
  36909. -{ 0xD2CB, 0xD2CB, 0xD2CB },
  36910. -{ 0xD2CC, 0xD2CC, 0xD2CC },
  36911. -{ 0xD2CD, 0xD2CD, 0xD2CD },
  36912. -{ 0xD2CE, 0xD2CE, 0xD2CE },
  36913. -{ 0xD2CF, 0xD2CF, 0xD2CF },
  36914. -{ 0xD2D0, 0xD2D0, 0xD2D0 },
  36915. -{ 0xD2D1, 0xD2D1, 0xD2D1 },
  36916. -{ 0xD2D2, 0xD2D2, 0xD2D2 },
  36917. -{ 0xD2D3, 0xD2D3, 0xD2D3 },
  36918. -{ 0xD2D4, 0xD2D4, 0xD2D4 },
  36919. -{ 0xD2D5, 0xD2D5, 0xD2D5 },
  36920. -{ 0xD2D6, 0xD2D6, 0xD2D6 },
  36921. -{ 0xD2D7, 0xD2D7, 0xD2D7 },
  36922. -{ 0xD2D8, 0xD2D8, 0xD2D8 },
  36923. -{ 0xD2D9, 0xD2D9, 0xD2D9 },
  36924. -{ 0xD2DA, 0xD2DA, 0xD2DA },
  36925. -{ 0xD2DB, 0xD2DB, 0xD2DB },
  36926. -{ 0xD2DC, 0xD2DC, 0xD2DC },
  36927. -{ 0xD2DD, 0xD2DD, 0xD2DD },
  36928. -{ 0xD2DE, 0xD2DE, 0xD2DE },
  36929. -{ 0xD2DF, 0xD2DF, 0xD2DF },
  36930. -{ 0xD2E0, 0xD2E0, 0xD2E0 },
  36931. -{ 0xD2E1, 0xD2E1, 0xD2E1 },
  36932. -{ 0xD2E2, 0xD2E2, 0xD2E2 },
  36933. -{ 0xD2E3, 0xD2E3, 0xD2E3 },
  36934. -{ 0xD2E4, 0xD2E4, 0xD2E4 },
  36935. -{ 0xD2E5, 0xD2E5, 0xD2E5 },
  36936. -{ 0xD2E6, 0xD2E6, 0xD2E6 },
  36937. -{ 0xD2E7, 0xD2E7, 0xD2E7 },
  36938. -{ 0xD2E8, 0xD2E8, 0xD2E8 },
  36939. -{ 0xD2E9, 0xD2E9, 0xD2E9 },
  36940. -{ 0xD2EA, 0xD2EA, 0xD2EA },
  36941. -{ 0xD2EB, 0xD2EB, 0xD2EB },
  36942. -{ 0xD2EC, 0xD2EC, 0xD2EC },
  36943. -{ 0xD2ED, 0xD2ED, 0xD2ED },
  36944. -{ 0xD2EE, 0xD2EE, 0xD2EE },
  36945. -{ 0xD2EF, 0xD2EF, 0xD2EF },
  36946. -{ 0xD2F0, 0xD2F0, 0xD2F0 },
  36947. -{ 0xD2F1, 0xD2F1, 0xD2F1 },
  36948. -{ 0xD2F2, 0xD2F2, 0xD2F2 },
  36949. -{ 0xD2F3, 0xD2F3, 0xD2F3 },
  36950. -{ 0xD2F4, 0xD2F4, 0xD2F4 },
  36951. -{ 0xD2F5, 0xD2F5, 0xD2F5 },
  36952. -{ 0xD2F6, 0xD2F6, 0xD2F6 },
  36953. -{ 0xD2F7, 0xD2F7, 0xD2F7 },
  36954. -{ 0xD2F8, 0xD2F8, 0xD2F8 },
  36955. -{ 0xD2F9, 0xD2F9, 0xD2F9 },
  36956. -{ 0xD2FA, 0xD2FA, 0xD2FA },
  36957. -{ 0xD2FB, 0xD2FB, 0xD2FB },
  36958. -{ 0xD2FC, 0xD2FC, 0xD2FC },
  36959. -{ 0xD2FD, 0xD2FD, 0xD2FD },
  36960. -{ 0xD2FE, 0xD2FE, 0xD2FE },
  36961. -{ 0xD2FF, 0xD2FF, 0xD2FF },
  36962. -{ 0xD300, 0xD300, 0xD300 },
  36963. -{ 0xD301, 0xD301, 0xD301 },
  36964. -{ 0xD302, 0xD302, 0xD302 },
  36965. -{ 0xD303, 0xD303, 0xD303 },
  36966. -{ 0xD304, 0xD304, 0xD304 },
  36967. -{ 0xD305, 0xD305, 0xD305 },
  36968. -{ 0xD306, 0xD306, 0xD306 },
  36969. -{ 0xD307, 0xD307, 0xD307 },
  36970. -{ 0xD308, 0xD308, 0xD308 },
  36971. -{ 0xD309, 0xD309, 0xD309 },
  36972. -{ 0xD30A, 0xD30A, 0xD30A },
  36973. -{ 0xD30B, 0xD30B, 0xD30B },
  36974. -{ 0xD30C, 0xD30C, 0xD30C },
  36975. -{ 0xD30D, 0xD30D, 0xD30D },
  36976. -{ 0xD30E, 0xD30E, 0xD30E },
  36977. -{ 0xD30F, 0xD30F, 0xD30F },
  36978. -{ 0xD310, 0xD310, 0xD310 },
  36979. -{ 0xD311, 0xD311, 0xD311 },
  36980. -{ 0xD312, 0xD312, 0xD312 },
  36981. -{ 0xD313, 0xD313, 0xD313 },
  36982. -{ 0xD314, 0xD314, 0xD314 },
  36983. -{ 0xD315, 0xD315, 0xD315 },
  36984. -{ 0xD316, 0xD316, 0xD316 },
  36985. -{ 0xD317, 0xD317, 0xD317 },
  36986. -{ 0xD318, 0xD318, 0xD318 },
  36987. -{ 0xD319, 0xD319, 0xD319 },
  36988. -{ 0xD31A, 0xD31A, 0xD31A },
  36989. -{ 0xD31B, 0xD31B, 0xD31B },
  36990. -{ 0xD31C, 0xD31C, 0xD31C },
  36991. -{ 0xD31D, 0xD31D, 0xD31D },
  36992. -{ 0xD31E, 0xD31E, 0xD31E },
  36993. -{ 0xD31F, 0xD31F, 0xD31F },
  36994. -{ 0xD320, 0xD320, 0xD320 },
  36995. -{ 0xD321, 0xD321, 0xD321 },
  36996. -{ 0xD322, 0xD322, 0xD322 },
  36997. -{ 0xD323, 0xD323, 0xD323 },
  36998. -{ 0xD324, 0xD324, 0xD324 },
  36999. -{ 0xD325, 0xD325, 0xD325 },
  37000. -{ 0xD326, 0xD326, 0xD326 },
  37001. -{ 0xD327, 0xD327, 0xD327 },
  37002. -{ 0xD328, 0xD328, 0xD328 },
  37003. -{ 0xD329, 0xD329, 0xD329 },
  37004. -{ 0xD32A, 0xD32A, 0xD32A },
  37005. -{ 0xD32B, 0xD32B, 0xD32B },
  37006. -{ 0xD32C, 0xD32C, 0xD32C },
  37007. -{ 0xD32D, 0xD32D, 0xD32D },
  37008. -{ 0xD32E, 0xD32E, 0xD32E },
  37009. -{ 0xD32F, 0xD32F, 0xD32F },
  37010. -{ 0xD330, 0xD330, 0xD330 },
  37011. -{ 0xD331, 0xD331, 0xD331 },
  37012. -{ 0xD332, 0xD332, 0xD332 },
  37013. -{ 0xD333, 0xD333, 0xD333 },
  37014. -{ 0xD334, 0xD334, 0xD334 },
  37015. -{ 0xD335, 0xD335, 0xD335 },
  37016. -{ 0xD336, 0xD336, 0xD336 },
  37017. -{ 0xD337, 0xD337, 0xD337 },
  37018. -{ 0xD338, 0xD338, 0xD338 },
  37019. -{ 0xD339, 0xD339, 0xD339 },
  37020. -{ 0xD33A, 0xD33A, 0xD33A },
  37021. -{ 0xD33B, 0xD33B, 0xD33B },
  37022. -{ 0xD33C, 0xD33C, 0xD33C },
  37023. -{ 0xD33D, 0xD33D, 0xD33D },
  37024. -{ 0xD33E, 0xD33E, 0xD33E },
  37025. -{ 0xD33F, 0xD33F, 0xD33F },
  37026. -{ 0xD340, 0xD340, 0xD340 },
  37027. -{ 0xD341, 0xD341, 0xD341 },
  37028. -{ 0xD342, 0xD342, 0xD342 },
  37029. -{ 0xD343, 0xD343, 0xD343 },
  37030. -{ 0xD344, 0xD344, 0xD344 },
  37031. -{ 0xD345, 0xD345, 0xD345 },
  37032. -{ 0xD346, 0xD346, 0xD346 },
  37033. -{ 0xD347, 0xD347, 0xD347 },
  37034. -{ 0xD348, 0xD348, 0xD348 },
  37035. -{ 0xD349, 0xD349, 0xD349 },
  37036. -{ 0xD34A, 0xD34A, 0xD34A },
  37037. -{ 0xD34B, 0xD34B, 0xD34B },
  37038. -{ 0xD34C, 0xD34C, 0xD34C },
  37039. -{ 0xD34D, 0xD34D, 0xD34D },
  37040. -{ 0xD34E, 0xD34E, 0xD34E },
  37041. -{ 0xD34F, 0xD34F, 0xD34F },
  37042. -{ 0xD350, 0xD350, 0xD350 },
  37043. -{ 0xD351, 0xD351, 0xD351 },
  37044. -{ 0xD352, 0xD352, 0xD352 },
  37045. -{ 0xD353, 0xD353, 0xD353 },
  37046. -{ 0xD354, 0xD354, 0xD354 },
  37047. -{ 0xD355, 0xD355, 0xD355 },
  37048. -{ 0xD356, 0xD356, 0xD356 },
  37049. -{ 0xD357, 0xD357, 0xD357 },
  37050. -{ 0xD358, 0xD358, 0xD358 },
  37051. -{ 0xD359, 0xD359, 0xD359 },
  37052. -{ 0xD35A, 0xD35A, 0xD35A },
  37053. -{ 0xD35B, 0xD35B, 0xD35B },
  37054. -{ 0xD35C, 0xD35C, 0xD35C },
  37055. -{ 0xD35D, 0xD35D, 0xD35D },
  37056. -{ 0xD35E, 0xD35E, 0xD35E },
  37057. -{ 0xD35F, 0xD35F, 0xD35F },
  37058. -{ 0xD360, 0xD360, 0xD360 },
  37059. -{ 0xD361, 0xD361, 0xD361 },
  37060. -{ 0xD362, 0xD362, 0xD362 },
  37061. -{ 0xD363, 0xD363, 0xD363 },
  37062. -{ 0xD364, 0xD364, 0xD364 },
  37063. -{ 0xD365, 0xD365, 0xD365 },
  37064. -{ 0xD366, 0xD366, 0xD366 },
  37065. -{ 0xD367, 0xD367, 0xD367 },
  37066. -{ 0xD368, 0xD368, 0xD368 },
  37067. -{ 0xD369, 0xD369, 0xD369 },
  37068. -{ 0xD36A, 0xD36A, 0xD36A },
  37069. -{ 0xD36B, 0xD36B, 0xD36B },
  37070. -{ 0xD36C, 0xD36C, 0xD36C },
  37071. -{ 0xD36D, 0xD36D, 0xD36D },
  37072. -{ 0xD36E, 0xD36E, 0xD36E },
  37073. -{ 0xD36F, 0xD36F, 0xD36F },
  37074. -{ 0xD370, 0xD370, 0xD370 },
  37075. -{ 0xD371, 0xD371, 0xD371 },
  37076. -{ 0xD372, 0xD372, 0xD372 },
  37077. -{ 0xD373, 0xD373, 0xD373 },
  37078. -{ 0xD374, 0xD374, 0xD374 },
  37079. -{ 0xD375, 0xD375, 0xD375 },
  37080. -{ 0xD376, 0xD376, 0xD376 },
  37081. -{ 0xD377, 0xD377, 0xD377 },
  37082. -{ 0xD378, 0xD378, 0xD378 },
  37083. -{ 0xD379, 0xD379, 0xD379 },
  37084. -{ 0xD37A, 0xD37A, 0xD37A },
  37085. -{ 0xD37B, 0xD37B, 0xD37B },
  37086. -{ 0xD37C, 0xD37C, 0xD37C },
  37087. -{ 0xD37D, 0xD37D, 0xD37D },
  37088. -{ 0xD37E, 0xD37E, 0xD37E },
  37089. -{ 0xD37F, 0xD37F, 0xD37F },
  37090. -{ 0xD380, 0xD380, 0xD380 },
  37091. -{ 0xD381, 0xD381, 0xD381 },
  37092. -{ 0xD382, 0xD382, 0xD382 },
  37093. -{ 0xD383, 0xD383, 0xD383 },
  37094. -{ 0xD384, 0xD384, 0xD384 },
  37095. -{ 0xD385, 0xD385, 0xD385 },
  37096. -{ 0xD386, 0xD386, 0xD386 },
  37097. -{ 0xD387, 0xD387, 0xD387 },
  37098. -{ 0xD388, 0xD388, 0xD388 },
  37099. -{ 0xD389, 0xD389, 0xD389 },
  37100. -{ 0xD38A, 0xD38A, 0xD38A },
  37101. -{ 0xD38B, 0xD38B, 0xD38B },
  37102. -{ 0xD38C, 0xD38C, 0xD38C },
  37103. -{ 0xD38D, 0xD38D, 0xD38D },
  37104. -{ 0xD38E, 0xD38E, 0xD38E },
  37105. -{ 0xD38F, 0xD38F, 0xD38F },
  37106. -{ 0xD390, 0xD390, 0xD390 },
  37107. -{ 0xD391, 0xD391, 0xD391 },
  37108. -{ 0xD392, 0xD392, 0xD392 },
  37109. -{ 0xD393, 0xD393, 0xD393 },
  37110. -{ 0xD394, 0xD394, 0xD394 },
  37111. -{ 0xD395, 0xD395, 0xD395 },
  37112. -{ 0xD396, 0xD396, 0xD396 },
  37113. -{ 0xD397, 0xD397, 0xD397 },
  37114. -{ 0xD398, 0xD398, 0xD398 },
  37115. -{ 0xD399, 0xD399, 0xD399 },
  37116. -{ 0xD39A, 0xD39A, 0xD39A },
  37117. -{ 0xD39B, 0xD39B, 0xD39B },
  37118. -{ 0xD39C, 0xD39C, 0xD39C },
  37119. -{ 0xD39D, 0xD39D, 0xD39D },
  37120. -{ 0xD39E, 0xD39E, 0xD39E },
  37121. -{ 0xD39F, 0xD39F, 0xD39F },
  37122. -{ 0xD3A0, 0xD3A0, 0xD3A0 },
  37123. -{ 0xD3A1, 0xD3A1, 0xD3A1 },
  37124. -{ 0xD3A2, 0xD3A2, 0xD3A2 },
  37125. -{ 0xD3A3, 0xD3A3, 0xD3A3 },
  37126. -{ 0xD3A4, 0xD3A4, 0xD3A4 },
  37127. -{ 0xD3A5, 0xD3A5, 0xD3A5 },
  37128. -{ 0xD3A6, 0xD3A6, 0xD3A6 },
  37129. -{ 0xD3A7, 0xD3A7, 0xD3A7 },
  37130. -{ 0xD3A8, 0xD3A8, 0xD3A8 },
  37131. -{ 0xD3A9, 0xD3A9, 0xD3A9 },
  37132. -{ 0xD3AA, 0xD3AA, 0xD3AA },
  37133. -{ 0xD3AB, 0xD3AB, 0xD3AB },
  37134. -{ 0xD3AC, 0xD3AC, 0xD3AC },
  37135. -{ 0xD3AD, 0xD3AD, 0xD3AD },
  37136. -{ 0xD3AE, 0xD3AE, 0xD3AE },
  37137. -{ 0xD3AF, 0xD3AF, 0xD3AF },
  37138. -{ 0xD3B0, 0xD3B0, 0xD3B0 },
  37139. -{ 0xD3B1, 0xD3B1, 0xD3B1 },
  37140. -{ 0xD3B2, 0xD3B2, 0xD3B2 },
  37141. -{ 0xD3B3, 0xD3B3, 0xD3B3 },
  37142. -{ 0xD3B4, 0xD3B4, 0xD3B4 },
  37143. -{ 0xD3B5, 0xD3B5, 0xD3B5 },
  37144. -{ 0xD3B6, 0xD3B6, 0xD3B6 },
  37145. -{ 0xD3B7, 0xD3B7, 0xD3B7 },
  37146. -{ 0xD3B8, 0xD3B8, 0xD3B8 },
  37147. -{ 0xD3B9, 0xD3B9, 0xD3B9 },
  37148. -{ 0xD3BA, 0xD3BA, 0xD3BA },
  37149. -{ 0xD3BB, 0xD3BB, 0xD3BB },
  37150. -{ 0xD3BC, 0xD3BC, 0xD3BC },
  37151. -{ 0xD3BD, 0xD3BD, 0xD3BD },
  37152. -{ 0xD3BE, 0xD3BE, 0xD3BE },
  37153. -{ 0xD3BF, 0xD3BF, 0xD3BF },
  37154. -{ 0xD3C0, 0xD3C0, 0xD3C0 },
  37155. -{ 0xD3C1, 0xD3C1, 0xD3C1 },
  37156. -{ 0xD3C2, 0xD3C2, 0xD3C2 },
  37157. -{ 0xD3C3, 0xD3C3, 0xD3C3 },
  37158. -{ 0xD3C4, 0xD3C4, 0xD3C4 },
  37159. -{ 0xD3C5, 0xD3C5, 0xD3C5 },
  37160. -{ 0xD3C6, 0xD3C6, 0xD3C6 },
  37161. -{ 0xD3C7, 0xD3C7, 0xD3C7 },
  37162. -{ 0xD3C8, 0xD3C8, 0xD3C8 },
  37163. -{ 0xD3C9, 0xD3C9, 0xD3C9 },
  37164. -{ 0xD3CA, 0xD3CA, 0xD3CA },
  37165. -{ 0xD3CB, 0xD3CB, 0xD3CB },
  37166. -{ 0xD3CC, 0xD3CC, 0xD3CC },
  37167. -{ 0xD3CD, 0xD3CD, 0xD3CD },
  37168. -{ 0xD3CE, 0xD3CE, 0xD3CE },
  37169. -{ 0xD3CF, 0xD3CF, 0xD3CF },
  37170. -{ 0xD3D0, 0xD3D0, 0xD3D0 },
  37171. -{ 0xD3D1, 0xD3D1, 0xD3D1 },
  37172. -{ 0xD3D2, 0xD3D2, 0xD3D2 },
  37173. -{ 0xD3D3, 0xD3D3, 0xD3D3 },
  37174. -{ 0xD3D4, 0xD3D4, 0xD3D4 },
  37175. -{ 0xD3D5, 0xD3D5, 0xD3D5 },
  37176. -{ 0xD3D6, 0xD3D6, 0xD3D6 },
  37177. -{ 0xD3D7, 0xD3D7, 0xD3D7 },
  37178. -{ 0xD3D8, 0xD3D8, 0xD3D8 },
  37179. -{ 0xD3D9, 0xD3D9, 0xD3D9 },
  37180. -{ 0xD3DA, 0xD3DA, 0xD3DA },
  37181. -{ 0xD3DB, 0xD3DB, 0xD3DB },
  37182. -{ 0xD3DC, 0xD3DC, 0xD3DC },
  37183. -{ 0xD3DD, 0xD3DD, 0xD3DD },
  37184. -{ 0xD3DE, 0xD3DE, 0xD3DE },
  37185. -{ 0xD3DF, 0xD3DF, 0xD3DF },
  37186. -{ 0xD3E0, 0xD3E0, 0xD3E0 },
  37187. -{ 0xD3E1, 0xD3E1, 0xD3E1 },
  37188. -{ 0xD3E2, 0xD3E2, 0xD3E2 },
  37189. -{ 0xD3E3, 0xD3E3, 0xD3E3 },
  37190. -{ 0xD3E4, 0xD3E4, 0xD3E4 },
  37191. -{ 0xD3E5, 0xD3E5, 0xD3E5 },
  37192. -{ 0xD3E6, 0xD3E6, 0xD3E6 },
  37193. -{ 0xD3E7, 0xD3E7, 0xD3E7 },
  37194. -{ 0xD3E8, 0xD3E8, 0xD3E8 },
  37195. -{ 0xD3E9, 0xD3E9, 0xD3E9 },
  37196. -{ 0xD3EA, 0xD3EA, 0xD3EA },
  37197. -{ 0xD3EB, 0xD3EB, 0xD3EB },
  37198. -{ 0xD3EC, 0xD3EC, 0xD3EC },
  37199. -{ 0xD3ED, 0xD3ED, 0xD3ED },
  37200. -{ 0xD3EE, 0xD3EE, 0xD3EE },
  37201. -{ 0xD3EF, 0xD3EF, 0xD3EF },
  37202. -{ 0xD3F0, 0xD3F0, 0xD3F0 },
  37203. -{ 0xD3F1, 0xD3F1, 0xD3F1 },
  37204. -{ 0xD3F2, 0xD3F2, 0xD3F2 },
  37205. -{ 0xD3F3, 0xD3F3, 0xD3F3 },
  37206. -{ 0xD3F4, 0xD3F4, 0xD3F4 },
  37207. -{ 0xD3F5, 0xD3F5, 0xD3F5 },
  37208. -{ 0xD3F6, 0xD3F6, 0xD3F6 },
  37209. -{ 0xD3F7, 0xD3F7, 0xD3F7 },
  37210. -{ 0xD3F8, 0xD3F8, 0xD3F8 },
  37211. -{ 0xD3F9, 0xD3F9, 0xD3F9 },
  37212. -{ 0xD3FA, 0xD3FA, 0xD3FA },
  37213. -{ 0xD3FB, 0xD3FB, 0xD3FB },
  37214. -{ 0xD3FC, 0xD3FC, 0xD3FC },
  37215. -{ 0xD3FD, 0xD3FD, 0xD3FD },
  37216. -{ 0xD3FE, 0xD3FE, 0xD3FE },
  37217. -{ 0xD3FF, 0xD3FF, 0xD3FF },
  37218. -{ 0xD400, 0xD400, 0xD400 },
  37219. -{ 0xD401, 0xD401, 0xD401 },
  37220. -{ 0xD402, 0xD402, 0xD402 },
  37221. -{ 0xD403, 0xD403, 0xD403 },
  37222. -{ 0xD404, 0xD404, 0xD404 },
  37223. -{ 0xD405, 0xD405, 0xD405 },
  37224. -{ 0xD406, 0xD406, 0xD406 },
  37225. -{ 0xD407, 0xD407, 0xD407 },
  37226. -{ 0xD408, 0xD408, 0xD408 },
  37227. -{ 0xD409, 0xD409, 0xD409 },
  37228. -{ 0xD40A, 0xD40A, 0xD40A },
  37229. -{ 0xD40B, 0xD40B, 0xD40B },
  37230. -{ 0xD40C, 0xD40C, 0xD40C },
  37231. -{ 0xD40D, 0xD40D, 0xD40D },
  37232. -{ 0xD40E, 0xD40E, 0xD40E },
  37233. -{ 0xD40F, 0xD40F, 0xD40F },
  37234. -{ 0xD410, 0xD410, 0xD410 },
  37235. -{ 0xD411, 0xD411, 0xD411 },
  37236. -{ 0xD412, 0xD412, 0xD412 },
  37237. -{ 0xD413, 0xD413, 0xD413 },
  37238. -{ 0xD414, 0xD414, 0xD414 },
  37239. -{ 0xD415, 0xD415, 0xD415 },
  37240. -{ 0xD416, 0xD416, 0xD416 },
  37241. -{ 0xD417, 0xD417, 0xD417 },
  37242. -{ 0xD418, 0xD418, 0xD418 },
  37243. -{ 0xD419, 0xD419, 0xD419 },
  37244. -{ 0xD41A, 0xD41A, 0xD41A },
  37245. -{ 0xD41B, 0xD41B, 0xD41B },
  37246. -{ 0xD41C, 0xD41C, 0xD41C },
  37247. -{ 0xD41D, 0xD41D, 0xD41D },
  37248. -{ 0xD41E, 0xD41E, 0xD41E },
  37249. -{ 0xD41F, 0xD41F, 0xD41F },
  37250. -{ 0xD420, 0xD420, 0xD420 },
  37251. -{ 0xD421, 0xD421, 0xD421 },
  37252. -{ 0xD422, 0xD422, 0xD422 },
  37253. -{ 0xD423, 0xD423, 0xD423 },
  37254. -{ 0xD424, 0xD424, 0xD424 },
  37255. -{ 0xD425, 0xD425, 0xD425 },
  37256. -{ 0xD426, 0xD426, 0xD426 },
  37257. -{ 0xD427, 0xD427, 0xD427 },
  37258. -{ 0xD428, 0xD428, 0xD428 },
  37259. -{ 0xD429, 0xD429, 0xD429 },
  37260. -{ 0xD42A, 0xD42A, 0xD42A },
  37261. -{ 0xD42B, 0xD42B, 0xD42B },
  37262. -{ 0xD42C, 0xD42C, 0xD42C },
  37263. -{ 0xD42D, 0xD42D, 0xD42D },
  37264. -{ 0xD42E, 0xD42E, 0xD42E },
  37265. -{ 0xD42F, 0xD42F, 0xD42F },
  37266. -{ 0xD430, 0xD430, 0xD430 },
  37267. -{ 0xD431, 0xD431, 0xD431 },
  37268. -{ 0xD432, 0xD432, 0xD432 },
  37269. -{ 0xD433, 0xD433, 0xD433 },
  37270. -{ 0xD434, 0xD434, 0xD434 },
  37271. -{ 0xD435, 0xD435, 0xD435 },
  37272. -{ 0xD436, 0xD436, 0xD436 },
  37273. -{ 0xD437, 0xD437, 0xD437 },
  37274. -{ 0xD438, 0xD438, 0xD438 },
  37275. -{ 0xD439, 0xD439, 0xD439 },
  37276. -{ 0xD43A, 0xD43A, 0xD43A },
  37277. -{ 0xD43B, 0xD43B, 0xD43B },
  37278. -{ 0xD43C, 0xD43C, 0xD43C },
  37279. -{ 0xD43D, 0xD43D, 0xD43D },
  37280. -{ 0xD43E, 0xD43E, 0xD43E },
  37281. -{ 0xD43F, 0xD43F, 0xD43F },
  37282. -{ 0xD440, 0xD440, 0xD440 },
  37283. -{ 0xD441, 0xD441, 0xD441 },
  37284. -{ 0xD442, 0xD442, 0xD442 },
  37285. -{ 0xD443, 0xD443, 0xD443 },
  37286. -{ 0xD444, 0xD444, 0xD444 },
  37287. -{ 0xD445, 0xD445, 0xD445 },
  37288. -{ 0xD446, 0xD446, 0xD446 },
  37289. -{ 0xD447, 0xD447, 0xD447 },
  37290. -{ 0xD448, 0xD448, 0xD448 },
  37291. -{ 0xD449, 0xD449, 0xD449 },
  37292. -{ 0xD44A, 0xD44A, 0xD44A },
  37293. -{ 0xD44B, 0xD44B, 0xD44B },
  37294. -{ 0xD44C, 0xD44C, 0xD44C },
  37295. -{ 0xD44D, 0xD44D, 0xD44D },
  37296. -{ 0xD44E, 0xD44E, 0xD44E },
  37297. -{ 0xD44F, 0xD44F, 0xD44F },
  37298. -{ 0xD450, 0xD450, 0xD450 },
  37299. -{ 0xD451, 0xD451, 0xD451 },
  37300. -{ 0xD452, 0xD452, 0xD452 },
  37301. -{ 0xD453, 0xD453, 0xD453 },
  37302. -{ 0xD454, 0xD454, 0xD454 },
  37303. -{ 0xD455, 0xD455, 0xD455 },
  37304. -{ 0xD456, 0xD456, 0xD456 },
  37305. -{ 0xD457, 0xD457, 0xD457 },
  37306. -{ 0xD458, 0xD458, 0xD458 },
  37307. -{ 0xD459, 0xD459, 0xD459 },
  37308. -{ 0xD45A, 0xD45A, 0xD45A },
  37309. -{ 0xD45B, 0xD45B, 0xD45B },
  37310. -{ 0xD45C, 0xD45C, 0xD45C },
  37311. -{ 0xD45D, 0xD45D, 0xD45D },
  37312. -{ 0xD45E, 0xD45E, 0xD45E },
  37313. -{ 0xD45F, 0xD45F, 0xD45F },
  37314. -{ 0xD460, 0xD460, 0xD460 },
  37315. -{ 0xD461, 0xD461, 0xD461 },
  37316. -{ 0xD462, 0xD462, 0xD462 },
  37317. -{ 0xD463, 0xD463, 0xD463 },
  37318. -{ 0xD464, 0xD464, 0xD464 },
  37319. -{ 0xD465, 0xD465, 0xD465 },
  37320. -{ 0xD466, 0xD466, 0xD466 },
  37321. -{ 0xD467, 0xD467, 0xD467 },
  37322. -{ 0xD468, 0xD468, 0xD468 },
  37323. -{ 0xD469, 0xD469, 0xD469 },
  37324. -{ 0xD46A, 0xD46A, 0xD46A },
  37325. -{ 0xD46B, 0xD46B, 0xD46B },
  37326. -{ 0xD46C, 0xD46C, 0xD46C },
  37327. -{ 0xD46D, 0xD46D, 0xD46D },
  37328. -{ 0xD46E, 0xD46E, 0xD46E },
  37329. -{ 0xD46F, 0xD46F, 0xD46F },
  37330. -{ 0xD470, 0xD470, 0xD470 },
  37331. -{ 0xD471, 0xD471, 0xD471 },
  37332. -{ 0xD472, 0xD472, 0xD472 },
  37333. -{ 0xD473, 0xD473, 0xD473 },
  37334. -{ 0xD474, 0xD474, 0xD474 },
  37335. -{ 0xD475, 0xD475, 0xD475 },
  37336. -{ 0xD476, 0xD476, 0xD476 },
  37337. -{ 0xD477, 0xD477, 0xD477 },
  37338. -{ 0xD478, 0xD478, 0xD478 },
  37339. -{ 0xD479, 0xD479, 0xD479 },
  37340. -{ 0xD47A, 0xD47A, 0xD47A },
  37341. -{ 0xD47B, 0xD47B, 0xD47B },
  37342. -{ 0xD47C, 0xD47C, 0xD47C },
  37343. -{ 0xD47D, 0xD47D, 0xD47D },
  37344. -{ 0xD47E, 0xD47E, 0xD47E },
  37345. -{ 0xD47F, 0xD47F, 0xD47F },
  37346. -{ 0xD480, 0xD480, 0xD480 },
  37347. -{ 0xD481, 0xD481, 0xD481 },
  37348. -{ 0xD482, 0xD482, 0xD482 },
  37349. -{ 0xD483, 0xD483, 0xD483 },
  37350. -{ 0xD484, 0xD484, 0xD484 },
  37351. -{ 0xD485, 0xD485, 0xD485 },
  37352. -{ 0xD486, 0xD486, 0xD486 },
  37353. -{ 0xD487, 0xD487, 0xD487 },
  37354. -{ 0xD488, 0xD488, 0xD488 },
  37355. -{ 0xD489, 0xD489, 0xD489 },
  37356. -{ 0xD48A, 0xD48A, 0xD48A },
  37357. -{ 0xD48B, 0xD48B, 0xD48B },
  37358. -{ 0xD48C, 0xD48C, 0xD48C },
  37359. -{ 0xD48D, 0xD48D, 0xD48D },
  37360. -{ 0xD48E, 0xD48E, 0xD48E },
  37361. -{ 0xD48F, 0xD48F, 0xD48F },
  37362. -{ 0xD490, 0xD490, 0xD490 },
  37363. -{ 0xD491, 0xD491, 0xD491 },
  37364. -{ 0xD492, 0xD492, 0xD492 },
  37365. -{ 0xD493, 0xD493, 0xD493 },
  37366. -{ 0xD494, 0xD494, 0xD494 },
  37367. -{ 0xD495, 0xD495, 0xD495 },
  37368. -{ 0xD496, 0xD496, 0xD496 },
  37369. -{ 0xD497, 0xD497, 0xD497 },
  37370. -{ 0xD498, 0xD498, 0xD498 },
  37371. -{ 0xD499, 0xD499, 0xD499 },
  37372. -{ 0xD49A, 0xD49A, 0xD49A },
  37373. -{ 0xD49B, 0xD49B, 0xD49B },
  37374. -{ 0xD49C, 0xD49C, 0xD49C },
  37375. -{ 0xD49D, 0xD49D, 0xD49D },
  37376. -{ 0xD49E, 0xD49E, 0xD49E },
  37377. -{ 0xD49F, 0xD49F, 0xD49F },
  37378. -{ 0xD4A0, 0xD4A0, 0xD4A0 },
  37379. -{ 0xD4A1, 0xD4A1, 0xD4A1 },
  37380. -{ 0xD4A2, 0xD4A2, 0xD4A2 },
  37381. -{ 0xD4A3, 0xD4A3, 0xD4A3 },
  37382. -{ 0xD4A4, 0xD4A4, 0xD4A4 },
  37383. -{ 0xD4A5, 0xD4A5, 0xD4A5 },
  37384. -{ 0xD4A6, 0xD4A6, 0xD4A6 },
  37385. -{ 0xD4A7, 0xD4A7, 0xD4A7 },
  37386. -{ 0xD4A8, 0xD4A8, 0xD4A8 },
  37387. -{ 0xD4A9, 0xD4A9, 0xD4A9 },
  37388. -{ 0xD4AA, 0xD4AA, 0xD4AA },
  37389. -{ 0xD4AB, 0xD4AB, 0xD4AB },
  37390. -{ 0xD4AC, 0xD4AC, 0xD4AC },
  37391. -{ 0xD4AD, 0xD4AD, 0xD4AD },
  37392. -{ 0xD4AE, 0xD4AE, 0xD4AE },
  37393. -{ 0xD4AF, 0xD4AF, 0xD4AF },
  37394. -{ 0xD4B0, 0xD4B0, 0xD4B0 },
  37395. -{ 0xD4B1, 0xD4B1, 0xD4B1 },
  37396. -{ 0xD4B2, 0xD4B2, 0xD4B2 },
  37397. -{ 0xD4B3, 0xD4B3, 0xD4B3 },
  37398. -{ 0xD4B4, 0xD4B4, 0xD4B4 },
  37399. -{ 0xD4B5, 0xD4B5, 0xD4B5 },
  37400. -{ 0xD4B6, 0xD4B6, 0xD4B6 },
  37401. -{ 0xD4B7, 0xD4B7, 0xD4B7 },
  37402. -{ 0xD4B8, 0xD4B8, 0xD4B8 },
  37403. -{ 0xD4B9, 0xD4B9, 0xD4B9 },
  37404. -{ 0xD4BA, 0xD4BA, 0xD4BA },
  37405. -{ 0xD4BB, 0xD4BB, 0xD4BB },
  37406. -{ 0xD4BC, 0xD4BC, 0xD4BC },
  37407. -{ 0xD4BD, 0xD4BD, 0xD4BD },
  37408. -{ 0xD4BE, 0xD4BE, 0xD4BE },
  37409. -{ 0xD4BF, 0xD4BF, 0xD4BF },
  37410. -{ 0xD4C0, 0xD4C0, 0xD4C0 },
  37411. -{ 0xD4C1, 0xD4C1, 0xD4C1 },
  37412. -{ 0xD4C2, 0xD4C2, 0xD4C2 },
  37413. -{ 0xD4C3, 0xD4C3, 0xD4C3 },
  37414. -{ 0xD4C4, 0xD4C4, 0xD4C4 },
  37415. -{ 0xD4C5, 0xD4C5, 0xD4C5 },
  37416. -{ 0xD4C6, 0xD4C6, 0xD4C6 },
  37417. -{ 0xD4C7, 0xD4C7, 0xD4C7 },
  37418. -{ 0xD4C8, 0xD4C8, 0xD4C8 },
  37419. -{ 0xD4C9, 0xD4C9, 0xD4C9 },
  37420. -{ 0xD4CA, 0xD4CA, 0xD4CA },
  37421. -{ 0xD4CB, 0xD4CB, 0xD4CB },
  37422. -{ 0xD4CC, 0xD4CC, 0xD4CC },
  37423. -{ 0xD4CD, 0xD4CD, 0xD4CD },
  37424. -{ 0xD4CE, 0xD4CE, 0xD4CE },
  37425. -{ 0xD4CF, 0xD4CF, 0xD4CF },
  37426. -{ 0xD4D0, 0xD4D0, 0xD4D0 },
  37427. -{ 0xD4D1, 0xD4D1, 0xD4D1 },
  37428. -{ 0xD4D2, 0xD4D2, 0xD4D2 },
  37429. -{ 0xD4D3, 0xD4D3, 0xD4D3 },
  37430. -{ 0xD4D4, 0xD4D4, 0xD4D4 },
  37431. -{ 0xD4D5, 0xD4D5, 0xD4D5 },
  37432. -{ 0xD4D6, 0xD4D6, 0xD4D6 },
  37433. -{ 0xD4D7, 0xD4D7, 0xD4D7 },
  37434. -{ 0xD4D8, 0xD4D8, 0xD4D8 },
  37435. -{ 0xD4D9, 0xD4D9, 0xD4D9 },
  37436. -{ 0xD4DA, 0xD4DA, 0xD4DA },
  37437. -{ 0xD4DB, 0xD4DB, 0xD4DB },
  37438. -{ 0xD4DC, 0xD4DC, 0xD4DC },
  37439. -{ 0xD4DD, 0xD4DD, 0xD4DD },
  37440. -{ 0xD4DE, 0xD4DE, 0xD4DE },
  37441. -{ 0xD4DF, 0xD4DF, 0xD4DF },
  37442. -{ 0xD4E0, 0xD4E0, 0xD4E0 },
  37443. -{ 0xD4E1, 0xD4E1, 0xD4E1 },
  37444. -{ 0xD4E2, 0xD4E2, 0xD4E2 },
  37445. -{ 0xD4E3, 0xD4E3, 0xD4E3 },
  37446. -{ 0xD4E4, 0xD4E4, 0xD4E4 },
  37447. -{ 0xD4E5, 0xD4E5, 0xD4E5 },
  37448. -{ 0xD4E6, 0xD4E6, 0xD4E6 },
  37449. -{ 0xD4E7, 0xD4E7, 0xD4E7 },
  37450. -{ 0xD4E8, 0xD4E8, 0xD4E8 },
  37451. -{ 0xD4E9, 0xD4E9, 0xD4E9 },
  37452. -{ 0xD4EA, 0xD4EA, 0xD4EA },
  37453. -{ 0xD4EB, 0xD4EB, 0xD4EB },
  37454. -{ 0xD4EC, 0xD4EC, 0xD4EC },
  37455. -{ 0xD4ED, 0xD4ED, 0xD4ED },
  37456. -{ 0xD4EE, 0xD4EE, 0xD4EE },
  37457. -{ 0xD4EF, 0xD4EF, 0xD4EF },
  37458. -{ 0xD4F0, 0xD4F0, 0xD4F0 },
  37459. -{ 0xD4F1, 0xD4F1, 0xD4F1 },
  37460. -{ 0xD4F2, 0xD4F2, 0xD4F2 },
  37461. -{ 0xD4F3, 0xD4F3, 0xD4F3 },
  37462. -{ 0xD4F4, 0xD4F4, 0xD4F4 },
  37463. -{ 0xD4F5, 0xD4F5, 0xD4F5 },
  37464. -{ 0xD4F6, 0xD4F6, 0xD4F6 },
  37465. -{ 0xD4F7, 0xD4F7, 0xD4F7 },
  37466. -{ 0xD4F8, 0xD4F8, 0xD4F8 },
  37467. -{ 0xD4F9, 0xD4F9, 0xD4F9 },
  37468. -{ 0xD4FA, 0xD4FA, 0xD4FA },
  37469. -{ 0xD4FB, 0xD4FB, 0xD4FB },
  37470. -{ 0xD4FC, 0xD4FC, 0xD4FC },
  37471. -{ 0xD4FD, 0xD4FD, 0xD4FD },
  37472. -{ 0xD4FE, 0xD4FE, 0xD4FE },
  37473. -{ 0xD4FF, 0xD4FF, 0xD4FF },
  37474. -{ 0xD500, 0xD500, 0xD500 },
  37475. -{ 0xD501, 0xD501, 0xD501 },
  37476. -{ 0xD502, 0xD502, 0xD502 },
  37477. -{ 0xD503, 0xD503, 0xD503 },
  37478. -{ 0xD504, 0xD504, 0xD504 },
  37479. -{ 0xD505, 0xD505, 0xD505 },
  37480. -{ 0xD506, 0xD506, 0xD506 },
  37481. -{ 0xD507, 0xD507, 0xD507 },
  37482. -{ 0xD508, 0xD508, 0xD508 },
  37483. -{ 0xD509, 0xD509, 0xD509 },
  37484. -{ 0xD50A, 0xD50A, 0xD50A },
  37485. -{ 0xD50B, 0xD50B, 0xD50B },
  37486. -{ 0xD50C, 0xD50C, 0xD50C },
  37487. -{ 0xD50D, 0xD50D, 0xD50D },
  37488. -{ 0xD50E, 0xD50E, 0xD50E },
  37489. -{ 0xD50F, 0xD50F, 0xD50F },
  37490. -{ 0xD510, 0xD510, 0xD510 },
  37491. -{ 0xD511, 0xD511, 0xD511 },
  37492. -{ 0xD512, 0xD512, 0xD512 },
  37493. -{ 0xD513, 0xD513, 0xD513 },
  37494. -{ 0xD514, 0xD514, 0xD514 },
  37495. -{ 0xD515, 0xD515, 0xD515 },
  37496. -{ 0xD516, 0xD516, 0xD516 },
  37497. -{ 0xD517, 0xD517, 0xD517 },
  37498. -{ 0xD518, 0xD518, 0xD518 },
  37499. -{ 0xD519, 0xD519, 0xD519 },
  37500. -{ 0xD51A, 0xD51A, 0xD51A },
  37501. -{ 0xD51B, 0xD51B, 0xD51B },
  37502. -{ 0xD51C, 0xD51C, 0xD51C },
  37503. -{ 0xD51D, 0xD51D, 0xD51D },
  37504. -{ 0xD51E, 0xD51E, 0xD51E },
  37505. -{ 0xD51F, 0xD51F, 0xD51F },
  37506. -{ 0xD520, 0xD520, 0xD520 },
  37507. -{ 0xD521, 0xD521, 0xD521 },
  37508. -{ 0xD522, 0xD522, 0xD522 },
  37509. -{ 0xD523, 0xD523, 0xD523 },
  37510. -{ 0xD524, 0xD524, 0xD524 },
  37511. -{ 0xD525, 0xD525, 0xD525 },
  37512. -{ 0xD526, 0xD526, 0xD526 },
  37513. -{ 0xD527, 0xD527, 0xD527 },
  37514. -{ 0xD528, 0xD528, 0xD528 },
  37515. -{ 0xD529, 0xD529, 0xD529 },
  37516. -{ 0xD52A, 0xD52A, 0xD52A },
  37517. -{ 0xD52B, 0xD52B, 0xD52B },
  37518. -{ 0xD52C, 0xD52C, 0xD52C },
  37519. -{ 0xD52D, 0xD52D, 0xD52D },
  37520. -{ 0xD52E, 0xD52E, 0xD52E },
  37521. -{ 0xD52F, 0xD52F, 0xD52F },
  37522. -{ 0xD530, 0xD530, 0xD530 },
  37523. -{ 0xD531, 0xD531, 0xD531 },
  37524. -{ 0xD532, 0xD532, 0xD532 },
  37525. -{ 0xD533, 0xD533, 0xD533 },
  37526. -{ 0xD534, 0xD534, 0xD534 },
  37527. -{ 0xD535, 0xD535, 0xD535 },
  37528. -{ 0xD536, 0xD536, 0xD536 },
  37529. -{ 0xD537, 0xD537, 0xD537 },
  37530. -{ 0xD538, 0xD538, 0xD538 },
  37531. -{ 0xD539, 0xD539, 0xD539 },
  37532. -{ 0xD53A, 0xD53A, 0xD53A },
  37533. -{ 0xD53B, 0xD53B, 0xD53B },
  37534. -{ 0xD53C, 0xD53C, 0xD53C },
  37535. -{ 0xD53D, 0xD53D, 0xD53D },
  37536. -{ 0xD53E, 0xD53E, 0xD53E },
  37537. -{ 0xD53F, 0xD53F, 0xD53F },
  37538. -{ 0xD540, 0xD540, 0xD540 },
  37539. -{ 0xD541, 0xD541, 0xD541 },
  37540. -{ 0xD542, 0xD542, 0xD542 },
  37541. -{ 0xD543, 0xD543, 0xD543 },
  37542. -{ 0xD544, 0xD544, 0xD544 },
  37543. -{ 0xD545, 0xD545, 0xD545 },
  37544. -{ 0xD546, 0xD546, 0xD546 },
  37545. -{ 0xD547, 0xD547, 0xD547 },
  37546. -{ 0xD548, 0xD548, 0xD548 },
  37547. -{ 0xD549, 0xD549, 0xD549 },
  37548. -{ 0xD54A, 0xD54A, 0xD54A },
  37549. -{ 0xD54B, 0xD54B, 0xD54B },
  37550. -{ 0xD54C, 0xD54C, 0xD54C },
  37551. -{ 0xD54D, 0xD54D, 0xD54D },
  37552. -{ 0xD54E, 0xD54E, 0xD54E },
  37553. -{ 0xD54F, 0xD54F, 0xD54F },
  37554. -{ 0xD550, 0xD550, 0xD550 },
  37555. -{ 0xD551, 0xD551, 0xD551 },
  37556. -{ 0xD552, 0xD552, 0xD552 },
  37557. -{ 0xD553, 0xD553, 0xD553 },
  37558. -{ 0xD554, 0xD554, 0xD554 },
  37559. -{ 0xD555, 0xD555, 0xD555 },
  37560. -{ 0xD556, 0xD556, 0xD556 },
  37561. -{ 0xD557, 0xD557, 0xD557 },
  37562. -{ 0xD558, 0xD558, 0xD558 },
  37563. -{ 0xD559, 0xD559, 0xD559 },
  37564. -{ 0xD55A, 0xD55A, 0xD55A },
  37565. -{ 0xD55B, 0xD55B, 0xD55B },
  37566. -{ 0xD55C, 0xD55C, 0xD55C },
  37567. -{ 0xD55D, 0xD55D, 0xD55D },
  37568. -{ 0xD55E, 0xD55E, 0xD55E },
  37569. -{ 0xD55F, 0xD55F, 0xD55F },
  37570. -{ 0xD560, 0xD560, 0xD560 },
  37571. -{ 0xD561, 0xD561, 0xD561 },
  37572. -{ 0xD562, 0xD562, 0xD562 },
  37573. -{ 0xD563, 0xD563, 0xD563 },
  37574. -{ 0xD564, 0xD564, 0xD564 },
  37575. -{ 0xD565, 0xD565, 0xD565 },
  37576. -{ 0xD566, 0xD566, 0xD566 },
  37577. -{ 0xD567, 0xD567, 0xD567 },
  37578. -{ 0xD568, 0xD568, 0xD568 },
  37579. -{ 0xD569, 0xD569, 0xD569 },
  37580. -{ 0xD56A, 0xD56A, 0xD56A },
  37581. -{ 0xD56B, 0xD56B, 0xD56B },
  37582. -{ 0xD56C, 0xD56C, 0xD56C },
  37583. -{ 0xD56D, 0xD56D, 0xD56D },
  37584. -{ 0xD56E, 0xD56E, 0xD56E },
  37585. -{ 0xD56F, 0xD56F, 0xD56F },
  37586. -{ 0xD570, 0xD570, 0xD570 },
  37587. -{ 0xD571, 0xD571, 0xD571 },
  37588. -{ 0xD572, 0xD572, 0xD572 },
  37589. -{ 0xD573, 0xD573, 0xD573 },
  37590. -{ 0xD574, 0xD574, 0xD574 },
  37591. -{ 0xD575, 0xD575, 0xD575 },
  37592. -{ 0xD576, 0xD576, 0xD576 },
  37593. -{ 0xD577, 0xD577, 0xD577 },
  37594. -{ 0xD578, 0xD578, 0xD578 },
  37595. -{ 0xD579, 0xD579, 0xD579 },
  37596. -{ 0xD57A, 0xD57A, 0xD57A },
  37597. -{ 0xD57B, 0xD57B, 0xD57B },
  37598. -{ 0xD57C, 0xD57C, 0xD57C },
  37599. -{ 0xD57D, 0xD57D, 0xD57D },
  37600. -{ 0xD57E, 0xD57E, 0xD57E },
  37601. -{ 0xD57F, 0xD57F, 0xD57F },
  37602. -{ 0xD580, 0xD580, 0xD580 },
  37603. -{ 0xD581, 0xD581, 0xD581 },
  37604. -{ 0xD582, 0xD582, 0xD582 },
  37605. -{ 0xD583, 0xD583, 0xD583 },
  37606. -{ 0xD584, 0xD584, 0xD584 },
  37607. -{ 0xD585, 0xD585, 0xD585 },
  37608. -{ 0xD586, 0xD586, 0xD586 },
  37609. -{ 0xD587, 0xD587, 0xD587 },
  37610. -{ 0xD588, 0xD588, 0xD588 },
  37611. -{ 0xD589, 0xD589, 0xD589 },
  37612. -{ 0xD58A, 0xD58A, 0xD58A },
  37613. -{ 0xD58B, 0xD58B, 0xD58B },
  37614. -{ 0xD58C, 0xD58C, 0xD58C },
  37615. -{ 0xD58D, 0xD58D, 0xD58D },
  37616. -{ 0xD58E, 0xD58E, 0xD58E },
  37617. -{ 0xD58F, 0xD58F, 0xD58F },
  37618. -{ 0xD590, 0xD590, 0xD590 },
  37619. -{ 0xD591, 0xD591, 0xD591 },
  37620. -{ 0xD592, 0xD592, 0xD592 },
  37621. -{ 0xD593, 0xD593, 0xD593 },
  37622. -{ 0xD594, 0xD594, 0xD594 },
  37623. -{ 0xD595, 0xD595, 0xD595 },
  37624. -{ 0xD596, 0xD596, 0xD596 },
  37625. -{ 0xD597, 0xD597, 0xD597 },
  37626. -{ 0xD598, 0xD598, 0xD598 },
  37627. -{ 0xD599, 0xD599, 0xD599 },
  37628. -{ 0xD59A, 0xD59A, 0xD59A },
  37629. -{ 0xD59B, 0xD59B, 0xD59B },
  37630. -{ 0xD59C, 0xD59C, 0xD59C },
  37631. -{ 0xD59D, 0xD59D, 0xD59D },
  37632. -{ 0xD59E, 0xD59E, 0xD59E },
  37633. -{ 0xD59F, 0xD59F, 0xD59F },
  37634. -{ 0xD5A0, 0xD5A0, 0xD5A0 },
  37635. -{ 0xD5A1, 0xD5A1, 0xD5A1 },
  37636. -{ 0xD5A2, 0xD5A2, 0xD5A2 },
  37637. -{ 0xD5A3, 0xD5A3, 0xD5A3 },
  37638. -{ 0xD5A4, 0xD5A4, 0xD5A4 },
  37639. -{ 0xD5A5, 0xD5A5, 0xD5A5 },
  37640. -{ 0xD5A6, 0xD5A6, 0xD5A6 },
  37641. -{ 0xD5A7, 0xD5A7, 0xD5A7 },
  37642. -{ 0xD5A8, 0xD5A8, 0xD5A8 },
  37643. -{ 0xD5A9, 0xD5A9, 0xD5A9 },
  37644. -{ 0xD5AA, 0xD5AA, 0xD5AA },
  37645. -{ 0xD5AB, 0xD5AB, 0xD5AB },
  37646. -{ 0xD5AC, 0xD5AC, 0xD5AC },
  37647. -{ 0xD5AD, 0xD5AD, 0xD5AD },
  37648. -{ 0xD5AE, 0xD5AE, 0xD5AE },
  37649. -{ 0xD5AF, 0xD5AF, 0xD5AF },
  37650. -{ 0xD5B0, 0xD5B0, 0xD5B0 },
  37651. -{ 0xD5B1, 0xD5B1, 0xD5B1 },
  37652. -{ 0xD5B2, 0xD5B2, 0xD5B2 },
  37653. -{ 0xD5B3, 0xD5B3, 0xD5B3 },
  37654. -{ 0xD5B4, 0xD5B4, 0xD5B4 },
  37655. -{ 0xD5B5, 0xD5B5, 0xD5B5 },
  37656. -{ 0xD5B6, 0xD5B6, 0xD5B6 },
  37657. -{ 0xD5B7, 0xD5B7, 0xD5B7 },
  37658. -{ 0xD5B8, 0xD5B8, 0xD5B8 },
  37659. -{ 0xD5B9, 0xD5B9, 0xD5B9 },
  37660. -{ 0xD5BA, 0xD5BA, 0xD5BA },
  37661. -{ 0xD5BB, 0xD5BB, 0xD5BB },
  37662. -{ 0xD5BC, 0xD5BC, 0xD5BC },
  37663. -{ 0xD5BD, 0xD5BD, 0xD5BD },
  37664. -{ 0xD5BE, 0xD5BE, 0xD5BE },
  37665. -{ 0xD5BF, 0xD5BF, 0xD5BF },
  37666. -{ 0xD5C0, 0xD5C0, 0xD5C0 },
  37667. -{ 0xD5C1, 0xD5C1, 0xD5C1 },
  37668. -{ 0xD5C2, 0xD5C2, 0xD5C2 },
  37669. -{ 0xD5C3, 0xD5C3, 0xD5C3 },
  37670. -{ 0xD5C4, 0xD5C4, 0xD5C4 },
  37671. -{ 0xD5C5, 0xD5C5, 0xD5C5 },
  37672. -{ 0xD5C6, 0xD5C6, 0xD5C6 },
  37673. -{ 0xD5C7, 0xD5C7, 0xD5C7 },
  37674. -{ 0xD5C8, 0xD5C8, 0xD5C8 },
  37675. -{ 0xD5C9, 0xD5C9, 0xD5C9 },
  37676. -{ 0xD5CA, 0xD5CA, 0xD5CA },
  37677. -{ 0xD5CB, 0xD5CB, 0xD5CB },
  37678. -{ 0xD5CC, 0xD5CC, 0xD5CC },
  37679. -{ 0xD5CD, 0xD5CD, 0xD5CD },
  37680. -{ 0xD5CE, 0xD5CE, 0xD5CE },
  37681. -{ 0xD5CF, 0xD5CF, 0xD5CF },
  37682. -{ 0xD5D0, 0xD5D0, 0xD5D0 },
  37683. -{ 0xD5D1, 0xD5D1, 0xD5D1 },
  37684. -{ 0xD5D2, 0xD5D2, 0xD5D2 },
  37685. -{ 0xD5D3, 0xD5D3, 0xD5D3 },
  37686. -{ 0xD5D4, 0xD5D4, 0xD5D4 },
  37687. -{ 0xD5D5, 0xD5D5, 0xD5D5 },
  37688. -{ 0xD5D6, 0xD5D6, 0xD5D6 },
  37689. -{ 0xD5D7, 0xD5D7, 0xD5D7 },
  37690. -{ 0xD5D8, 0xD5D8, 0xD5D8 },
  37691. -{ 0xD5D9, 0xD5D9, 0xD5D9 },
  37692. -{ 0xD5DA, 0xD5DA, 0xD5DA },
  37693. -{ 0xD5DB, 0xD5DB, 0xD5DB },
  37694. -{ 0xD5DC, 0xD5DC, 0xD5DC },
  37695. -{ 0xD5DD, 0xD5DD, 0xD5DD },
  37696. -{ 0xD5DE, 0xD5DE, 0xD5DE },
  37697. -{ 0xD5DF, 0xD5DF, 0xD5DF },
  37698. -{ 0xD5E0, 0xD5E0, 0xD5E0 },
  37699. -{ 0xD5E1, 0xD5E1, 0xD5E1 },
  37700. -{ 0xD5E2, 0xD5E2, 0xD5E2 },
  37701. -{ 0xD5E3, 0xD5E3, 0xD5E3 },
  37702. -{ 0xD5E4, 0xD5E4, 0xD5E4 },
  37703. -{ 0xD5E5, 0xD5E5, 0xD5E5 },
  37704. -{ 0xD5E6, 0xD5E6, 0xD5E6 },
  37705. -{ 0xD5E7, 0xD5E7, 0xD5E7 },
  37706. -{ 0xD5E8, 0xD5E8, 0xD5E8 },
  37707. -{ 0xD5E9, 0xD5E9, 0xD5E9 },
  37708. -{ 0xD5EA, 0xD5EA, 0xD5EA },
  37709. -{ 0xD5EB, 0xD5EB, 0xD5EB },
  37710. -{ 0xD5EC, 0xD5EC, 0xD5EC },
  37711. -{ 0xD5ED, 0xD5ED, 0xD5ED },
  37712. -{ 0xD5EE, 0xD5EE, 0xD5EE },
  37713. -{ 0xD5EF, 0xD5EF, 0xD5EF },
  37714. -{ 0xD5F0, 0xD5F0, 0xD5F0 },
  37715. -{ 0xD5F1, 0xD5F1, 0xD5F1 },
  37716. -{ 0xD5F2, 0xD5F2, 0xD5F2 },
  37717. -{ 0xD5F3, 0xD5F3, 0xD5F3 },
  37718. -{ 0xD5F4, 0xD5F4, 0xD5F4 },
  37719. -{ 0xD5F5, 0xD5F5, 0xD5F5 },
  37720. -{ 0xD5F6, 0xD5F6, 0xD5F6 },
  37721. -{ 0xD5F7, 0xD5F7, 0xD5F7 },
  37722. -{ 0xD5F8, 0xD5F8, 0xD5F8 },
  37723. -{ 0xD5F9, 0xD5F9, 0xD5F9 },
  37724. -{ 0xD5FA, 0xD5FA, 0xD5FA },
  37725. -{ 0xD5FB, 0xD5FB, 0xD5FB },
  37726. -{ 0xD5FC, 0xD5FC, 0xD5FC },
  37727. -{ 0xD5FD, 0xD5FD, 0xD5FD },
  37728. -{ 0xD5FE, 0xD5FE, 0xD5FE },
  37729. -{ 0xD5FF, 0xD5FF, 0xD5FF },
  37730. -{ 0xD600, 0xD600, 0xD600 },
  37731. -{ 0xD601, 0xD601, 0xD601 },
  37732. -{ 0xD602, 0xD602, 0xD602 },
  37733. -{ 0xD603, 0xD603, 0xD603 },
  37734. -{ 0xD604, 0xD604, 0xD604 },
  37735. -{ 0xD605, 0xD605, 0xD605 },
  37736. -{ 0xD606, 0xD606, 0xD606 },
  37737. -{ 0xD607, 0xD607, 0xD607 },
  37738. -{ 0xD608, 0xD608, 0xD608 },
  37739. -{ 0xD609, 0xD609, 0xD609 },
  37740. -{ 0xD60A, 0xD60A, 0xD60A },
  37741. -{ 0xD60B, 0xD60B, 0xD60B },
  37742. -{ 0xD60C, 0xD60C, 0xD60C },
  37743. -{ 0xD60D, 0xD60D, 0xD60D },
  37744. -{ 0xD60E, 0xD60E, 0xD60E },
  37745. -{ 0xD60F, 0xD60F, 0xD60F },
  37746. -{ 0xD610, 0xD610, 0xD610 },
  37747. -{ 0xD611, 0xD611, 0xD611 },
  37748. -{ 0xD612, 0xD612, 0xD612 },
  37749. -{ 0xD613, 0xD613, 0xD613 },
  37750. -{ 0xD614, 0xD614, 0xD614 },
  37751. -{ 0xD615, 0xD615, 0xD615 },
  37752. -{ 0xD616, 0xD616, 0xD616 },
  37753. -{ 0xD617, 0xD617, 0xD617 },
  37754. -{ 0xD618, 0xD618, 0xD618 },
  37755. -{ 0xD619, 0xD619, 0xD619 },
  37756. -{ 0xD61A, 0xD61A, 0xD61A },
  37757. -{ 0xD61B, 0xD61B, 0xD61B },
  37758. -{ 0xD61C, 0xD61C, 0xD61C },
  37759. -{ 0xD61D, 0xD61D, 0xD61D },
  37760. -{ 0xD61E, 0xD61E, 0xD61E },
  37761. -{ 0xD61F, 0xD61F, 0xD61F },
  37762. -{ 0xD620, 0xD620, 0xD620 },
  37763. -{ 0xD621, 0xD621, 0xD621 },
  37764. -{ 0xD622, 0xD622, 0xD622 },
  37765. -{ 0xD623, 0xD623, 0xD623 },
  37766. -{ 0xD624, 0xD624, 0xD624 },
  37767. -{ 0xD625, 0xD625, 0xD625 },
  37768. -{ 0xD626, 0xD626, 0xD626 },
  37769. -{ 0xD627, 0xD627, 0xD627 },
  37770. -{ 0xD628, 0xD628, 0xD628 },
  37771. -{ 0xD629, 0xD629, 0xD629 },
  37772. -{ 0xD62A, 0xD62A, 0xD62A },
  37773. -{ 0xD62B, 0xD62B, 0xD62B },
  37774. -{ 0xD62C, 0xD62C, 0xD62C },
  37775. -{ 0xD62D, 0xD62D, 0xD62D },
  37776. -{ 0xD62E, 0xD62E, 0xD62E },
  37777. -{ 0xD62F, 0xD62F, 0xD62F },
  37778. -{ 0xD630, 0xD630, 0xD630 },
  37779. -{ 0xD631, 0xD631, 0xD631 },
  37780. -{ 0xD632, 0xD632, 0xD632 },
  37781. -{ 0xD633, 0xD633, 0xD633 },
  37782. -{ 0xD634, 0xD634, 0xD634 },
  37783. -{ 0xD635, 0xD635, 0xD635 },
  37784. -{ 0xD636, 0xD636, 0xD636 },
  37785. -{ 0xD637, 0xD637, 0xD637 },
  37786. -{ 0xD638, 0xD638, 0xD638 },
  37787. -{ 0xD639, 0xD639, 0xD639 },
  37788. -{ 0xD63A, 0xD63A, 0xD63A },
  37789. -{ 0xD63B, 0xD63B, 0xD63B },
  37790. -{ 0xD63C, 0xD63C, 0xD63C },
  37791. -{ 0xD63D, 0xD63D, 0xD63D },
  37792. -{ 0xD63E, 0xD63E, 0xD63E },
  37793. -{ 0xD63F, 0xD63F, 0xD63F },
  37794. -{ 0xD640, 0xD640, 0xD640 },
  37795. -{ 0xD641, 0xD641, 0xD641 },
  37796. -{ 0xD642, 0xD642, 0xD642 },
  37797. -{ 0xD643, 0xD643, 0xD643 },
  37798. -{ 0xD644, 0xD644, 0xD644 },
  37799. -{ 0xD645, 0xD645, 0xD645 },
  37800. -{ 0xD646, 0xD646, 0xD646 },
  37801. -{ 0xD647, 0xD647, 0xD647 },
  37802. -{ 0xD648, 0xD648, 0xD648 },
  37803. -{ 0xD649, 0xD649, 0xD649 },
  37804. -{ 0xD64A, 0xD64A, 0xD64A },
  37805. -{ 0xD64B, 0xD64B, 0xD64B },
  37806. -{ 0xD64C, 0xD64C, 0xD64C },
  37807. -{ 0xD64D, 0xD64D, 0xD64D },
  37808. -{ 0xD64E, 0xD64E, 0xD64E },
  37809. -{ 0xD64F, 0xD64F, 0xD64F },
  37810. -{ 0xD650, 0xD650, 0xD650 },
  37811. -{ 0xD651, 0xD651, 0xD651 },
  37812. -{ 0xD652, 0xD652, 0xD652 },
  37813. -{ 0xD653, 0xD653, 0xD653 },
  37814. -{ 0xD654, 0xD654, 0xD654 },
  37815. -{ 0xD655, 0xD655, 0xD655 },
  37816. -{ 0xD656, 0xD656, 0xD656 },
  37817. -{ 0xD657, 0xD657, 0xD657 },
  37818. -{ 0xD658, 0xD658, 0xD658 },
  37819. -{ 0xD659, 0xD659, 0xD659 },
  37820. -{ 0xD65A, 0xD65A, 0xD65A },
  37821. -{ 0xD65B, 0xD65B, 0xD65B },
  37822. -{ 0xD65C, 0xD65C, 0xD65C },
  37823. -{ 0xD65D, 0xD65D, 0xD65D },
  37824. -{ 0xD65E, 0xD65E, 0xD65E },
  37825. -{ 0xD65F, 0xD65F, 0xD65F },
  37826. -{ 0xD660, 0xD660, 0xD660 },
  37827. -{ 0xD661, 0xD661, 0xD661 },
  37828. -{ 0xD662, 0xD662, 0xD662 },
  37829. -{ 0xD663, 0xD663, 0xD663 },
  37830. -{ 0xD664, 0xD664, 0xD664 },
  37831. -{ 0xD665, 0xD665, 0xD665 },
  37832. -{ 0xD666, 0xD666, 0xD666 },
  37833. -{ 0xD667, 0xD667, 0xD667 },
  37834. -{ 0xD668, 0xD668, 0xD668 },
  37835. -{ 0xD669, 0xD669, 0xD669 },
  37836. -{ 0xD66A, 0xD66A, 0xD66A },
  37837. -{ 0xD66B, 0xD66B, 0xD66B },
  37838. -{ 0xD66C, 0xD66C, 0xD66C },
  37839. -{ 0xD66D, 0xD66D, 0xD66D },
  37840. -{ 0xD66E, 0xD66E, 0xD66E },
  37841. -{ 0xD66F, 0xD66F, 0xD66F },
  37842. -{ 0xD670, 0xD670, 0xD670 },
  37843. -{ 0xD671, 0xD671, 0xD671 },
  37844. -{ 0xD672, 0xD672, 0xD672 },
  37845. -{ 0xD673, 0xD673, 0xD673 },
  37846. -{ 0xD674, 0xD674, 0xD674 },
  37847. -{ 0xD675, 0xD675, 0xD675 },
  37848. -{ 0xD676, 0xD676, 0xD676 },
  37849. -{ 0xD677, 0xD677, 0xD677 },
  37850. -{ 0xD678, 0xD678, 0xD678 },
  37851. -{ 0xD679, 0xD679, 0xD679 },
  37852. -{ 0xD67A, 0xD67A, 0xD67A },
  37853. -{ 0xD67B, 0xD67B, 0xD67B },
  37854. -{ 0xD67C, 0xD67C, 0xD67C },
  37855. -{ 0xD67D, 0xD67D, 0xD67D },
  37856. -{ 0xD67E, 0xD67E, 0xD67E },
  37857. -{ 0xD67F, 0xD67F, 0xD67F },
  37858. -{ 0xD680, 0xD680, 0xD680 },
  37859. -{ 0xD681, 0xD681, 0xD681 },
  37860. -{ 0xD682, 0xD682, 0xD682 },
  37861. -{ 0xD683, 0xD683, 0xD683 },
  37862. -{ 0xD684, 0xD684, 0xD684 },
  37863. -{ 0xD685, 0xD685, 0xD685 },
  37864. -{ 0xD686, 0xD686, 0xD686 },
  37865. -{ 0xD687, 0xD687, 0xD687 },
  37866. -{ 0xD688, 0xD688, 0xD688 },
  37867. -{ 0xD689, 0xD689, 0xD689 },
  37868. -{ 0xD68A, 0xD68A, 0xD68A },
  37869. -{ 0xD68B, 0xD68B, 0xD68B },
  37870. -{ 0xD68C, 0xD68C, 0xD68C },
  37871. -{ 0xD68D, 0xD68D, 0xD68D },
  37872. -{ 0xD68E, 0xD68E, 0xD68E },
  37873. -{ 0xD68F, 0xD68F, 0xD68F },
  37874. -{ 0xD690, 0xD690, 0xD690 },
  37875. -{ 0xD691, 0xD691, 0xD691 },
  37876. -{ 0xD692, 0xD692, 0xD692 },
  37877. -{ 0xD693, 0xD693, 0xD693 },
  37878. -{ 0xD694, 0xD694, 0xD694 },
  37879. -{ 0xD695, 0xD695, 0xD695 },
  37880. -{ 0xD696, 0xD696, 0xD696 },
  37881. -{ 0xD697, 0xD697, 0xD697 },
  37882. -{ 0xD698, 0xD698, 0xD698 },
  37883. -{ 0xD699, 0xD699, 0xD699 },
  37884. -{ 0xD69A, 0xD69A, 0xD69A },
  37885. -{ 0xD69B, 0xD69B, 0xD69B },
  37886. -{ 0xD69C, 0xD69C, 0xD69C },
  37887. -{ 0xD69D, 0xD69D, 0xD69D },
  37888. -{ 0xD69E, 0xD69E, 0xD69E },
  37889. -{ 0xD69F, 0xD69F, 0xD69F },
  37890. -{ 0xD6A0, 0xD6A0, 0xD6A0 },
  37891. -{ 0xD6A1, 0xD6A1, 0xD6A1 },
  37892. -{ 0xD6A2, 0xD6A2, 0xD6A2 },
  37893. -{ 0xD6A3, 0xD6A3, 0xD6A3 },
  37894. -{ 0xD6A4, 0xD6A4, 0xD6A4 },
  37895. -{ 0xD6A5, 0xD6A5, 0xD6A5 },
  37896. -{ 0xD6A6, 0xD6A6, 0xD6A6 },
  37897. -{ 0xD6A7, 0xD6A7, 0xD6A7 },
  37898. -{ 0xD6A8, 0xD6A8, 0xD6A8 },
  37899. -{ 0xD6A9, 0xD6A9, 0xD6A9 },
  37900. -{ 0xD6AA, 0xD6AA, 0xD6AA },
  37901. -{ 0xD6AB, 0xD6AB, 0xD6AB },
  37902. -{ 0xD6AC, 0xD6AC, 0xD6AC },
  37903. -{ 0xD6AD, 0xD6AD, 0xD6AD },
  37904. -{ 0xD6AE, 0xD6AE, 0xD6AE },
  37905. -{ 0xD6AF, 0xD6AF, 0xD6AF },
  37906. -{ 0xD6B0, 0xD6B0, 0xD6B0 },
  37907. -{ 0xD6B1, 0xD6B1, 0xD6B1 },
  37908. -{ 0xD6B2, 0xD6B2, 0xD6B2 },
  37909. -{ 0xD6B3, 0xD6B3, 0xD6B3 },
  37910. -{ 0xD6B4, 0xD6B4, 0xD6B4 },
  37911. -{ 0xD6B5, 0xD6B5, 0xD6B5 },
  37912. -{ 0xD6B6, 0xD6B6, 0xD6B6 },
  37913. -{ 0xD6B7, 0xD6B7, 0xD6B7 },
  37914. -{ 0xD6B8, 0xD6B8, 0xD6B8 },
  37915. -{ 0xD6B9, 0xD6B9, 0xD6B9 },
  37916. -{ 0xD6BA, 0xD6BA, 0xD6BA },
  37917. -{ 0xD6BB, 0xD6BB, 0xD6BB },
  37918. -{ 0xD6BC, 0xD6BC, 0xD6BC },
  37919. -{ 0xD6BD, 0xD6BD, 0xD6BD },
  37920. -{ 0xD6BE, 0xD6BE, 0xD6BE },
  37921. -{ 0xD6BF, 0xD6BF, 0xD6BF },
  37922. -{ 0xD6C0, 0xD6C0, 0xD6C0 },
  37923. -{ 0xD6C1, 0xD6C1, 0xD6C1 },
  37924. -{ 0xD6C2, 0xD6C2, 0xD6C2 },
  37925. -{ 0xD6C3, 0xD6C3, 0xD6C3 },
  37926. -{ 0xD6C4, 0xD6C4, 0xD6C4 },
  37927. -{ 0xD6C5, 0xD6C5, 0xD6C5 },
  37928. -{ 0xD6C6, 0xD6C6, 0xD6C6 },
  37929. -{ 0xD6C7, 0xD6C7, 0xD6C7 },
  37930. -{ 0xD6C8, 0xD6C8, 0xD6C8 },
  37931. -{ 0xD6C9, 0xD6C9, 0xD6C9 },
  37932. -{ 0xD6CA, 0xD6CA, 0xD6CA },
  37933. -{ 0xD6CB, 0xD6CB, 0xD6CB },
  37934. -{ 0xD6CC, 0xD6CC, 0xD6CC },
  37935. -{ 0xD6CD, 0xD6CD, 0xD6CD },
  37936. -{ 0xD6CE, 0xD6CE, 0xD6CE },
  37937. -{ 0xD6CF, 0xD6CF, 0xD6CF },
  37938. -{ 0xD6D0, 0xD6D0, 0xD6D0 },
  37939. -{ 0xD6D1, 0xD6D1, 0xD6D1 },
  37940. -{ 0xD6D2, 0xD6D2, 0xD6D2 },
  37941. -{ 0xD6D3, 0xD6D3, 0xD6D3 },
  37942. -{ 0xD6D4, 0xD6D4, 0xD6D4 },
  37943. -{ 0xD6D5, 0xD6D5, 0xD6D5 },
  37944. -{ 0xD6D6, 0xD6D6, 0xD6D6 },
  37945. -{ 0xD6D7, 0xD6D7, 0xD6D7 },
  37946. -{ 0xD6D8, 0xD6D8, 0xD6D8 },
  37947. -{ 0xD6D9, 0xD6D9, 0xD6D9 },
  37948. -{ 0xD6DA, 0xD6DA, 0xD6DA },
  37949. -{ 0xD6DB, 0xD6DB, 0xD6DB },
  37950. -{ 0xD6DC, 0xD6DC, 0xD6DC },
  37951. -{ 0xD6DD, 0xD6DD, 0xD6DD },
  37952. -{ 0xD6DE, 0xD6DE, 0xD6DE },
  37953. -{ 0xD6DF, 0xD6DF, 0xD6DF },
  37954. -{ 0xD6E0, 0xD6E0, 0xD6E0 },
  37955. -{ 0xD6E1, 0xD6E1, 0xD6E1 },
  37956. -{ 0xD6E2, 0xD6E2, 0xD6E2 },
  37957. -{ 0xD6E3, 0xD6E3, 0xD6E3 },
  37958. -{ 0xD6E4, 0xD6E4, 0xD6E4 },
  37959. -{ 0xD6E5, 0xD6E5, 0xD6E5 },
  37960. -{ 0xD6E6, 0xD6E6, 0xD6E6 },
  37961. -{ 0xD6E7, 0xD6E7, 0xD6E7 },
  37962. -{ 0xD6E8, 0xD6E8, 0xD6E8 },
  37963. -{ 0xD6E9, 0xD6E9, 0xD6E9 },
  37964. -{ 0xD6EA, 0xD6EA, 0xD6EA },
  37965. -{ 0xD6EB, 0xD6EB, 0xD6EB },
  37966. -{ 0xD6EC, 0xD6EC, 0xD6EC },
  37967. -{ 0xD6ED, 0xD6ED, 0xD6ED },
  37968. -{ 0xD6EE, 0xD6EE, 0xD6EE },
  37969. -{ 0xD6EF, 0xD6EF, 0xD6EF },
  37970. -{ 0xD6F0, 0xD6F0, 0xD6F0 },
  37971. -{ 0xD6F1, 0xD6F1, 0xD6F1 },
  37972. -{ 0xD6F2, 0xD6F2, 0xD6F2 },
  37973. -{ 0xD6F3, 0xD6F3, 0xD6F3 },
  37974. -{ 0xD6F4, 0xD6F4, 0xD6F4 },
  37975. -{ 0xD6F5, 0xD6F5, 0xD6F5 },
  37976. -{ 0xD6F6, 0xD6F6, 0xD6F6 },
  37977. -{ 0xD6F7, 0xD6F7, 0xD6F7 },
  37978. -{ 0xD6F8, 0xD6F8, 0xD6F8 },
  37979. -{ 0xD6F9, 0xD6F9, 0xD6F9 },
  37980. -{ 0xD6FA, 0xD6FA, 0xD6FA },
  37981. -{ 0xD6FB, 0xD6FB, 0xD6FB },
  37982. -{ 0xD6FC, 0xD6FC, 0xD6FC },
  37983. -{ 0xD6FD, 0xD6FD, 0xD6FD },
  37984. -{ 0xD6FE, 0xD6FE, 0xD6FE },
  37985. -{ 0xD6FF, 0xD6FF, 0xD6FF },
  37986. -{ 0xD700, 0xD700, 0xD700 },
  37987. -{ 0xD701, 0xD701, 0xD701 },
  37988. -{ 0xD702, 0xD702, 0xD702 },
  37989. -{ 0xD703, 0xD703, 0xD703 },
  37990. -{ 0xD704, 0xD704, 0xD704 },
  37991. -{ 0xD705, 0xD705, 0xD705 },
  37992. -{ 0xD706, 0xD706, 0xD706 },
  37993. -{ 0xD707, 0xD707, 0xD707 },
  37994. -{ 0xD708, 0xD708, 0xD708 },
  37995. -{ 0xD709, 0xD709, 0xD709 },
  37996. -{ 0xD70A, 0xD70A, 0xD70A },
  37997. -{ 0xD70B, 0xD70B, 0xD70B },
  37998. -{ 0xD70C, 0xD70C, 0xD70C },
  37999. -{ 0xD70D, 0xD70D, 0xD70D },
  38000. -{ 0xD70E, 0xD70E, 0xD70E },
  38001. -{ 0xD70F, 0xD70F, 0xD70F },
  38002. -{ 0xD710, 0xD710, 0xD710 },
  38003. -{ 0xD711, 0xD711, 0xD711 },
  38004. -{ 0xD712, 0xD712, 0xD712 },
  38005. -{ 0xD713, 0xD713, 0xD713 },
  38006. -{ 0xD714, 0xD714, 0xD714 },
  38007. -{ 0xD715, 0xD715, 0xD715 },
  38008. -{ 0xD716, 0xD716, 0xD716 },
  38009. -{ 0xD717, 0xD717, 0xD717 },
  38010. -{ 0xD718, 0xD718, 0xD718 },
  38011. -{ 0xD719, 0xD719, 0xD719 },
  38012. -{ 0xD71A, 0xD71A, 0xD71A },
  38013. -{ 0xD71B, 0xD71B, 0xD71B },
  38014. -{ 0xD71C, 0xD71C, 0xD71C },
  38015. -{ 0xD71D, 0xD71D, 0xD71D },
  38016. -{ 0xD71E, 0xD71E, 0xD71E },
  38017. -{ 0xD71F, 0xD71F, 0xD71F },
  38018. -{ 0xD720, 0xD720, 0xD720 },
  38019. -{ 0xD721, 0xD721, 0xD721 },
  38020. -{ 0xD722, 0xD722, 0xD722 },
  38021. -{ 0xD723, 0xD723, 0xD723 },
  38022. -{ 0xD724, 0xD724, 0xD724 },
  38023. -{ 0xD725, 0xD725, 0xD725 },
  38024. -{ 0xD726, 0xD726, 0xD726 },
  38025. -{ 0xD727, 0xD727, 0xD727 },
  38026. -{ 0xD728, 0xD728, 0xD728 },
  38027. -{ 0xD729, 0xD729, 0xD729 },
  38028. -{ 0xD72A, 0xD72A, 0xD72A },
  38029. -{ 0xD72B, 0xD72B, 0xD72B },
  38030. -{ 0xD72C, 0xD72C, 0xD72C },
  38031. -{ 0xD72D, 0xD72D, 0xD72D },
  38032. -{ 0xD72E, 0xD72E, 0xD72E },
  38033. -{ 0xD72F, 0xD72F, 0xD72F },
  38034. -{ 0xD730, 0xD730, 0xD730 },
  38035. -{ 0xD731, 0xD731, 0xD731 },
  38036. -{ 0xD732, 0xD732, 0xD732 },
  38037. -{ 0xD733, 0xD733, 0xD733 },
  38038. -{ 0xD734, 0xD734, 0xD734 },
  38039. -{ 0xD735, 0xD735, 0xD735 },
  38040. -{ 0xD736, 0xD736, 0xD736 },
  38041. -{ 0xD737, 0xD737, 0xD737 },
  38042. -{ 0xD738, 0xD738, 0xD738 },
  38043. -{ 0xD739, 0xD739, 0xD739 },
  38044. -{ 0xD73A, 0xD73A, 0xD73A },
  38045. -{ 0xD73B, 0xD73B, 0xD73B },
  38046. -{ 0xD73C, 0xD73C, 0xD73C },
  38047. -{ 0xD73D, 0xD73D, 0xD73D },
  38048. -{ 0xD73E, 0xD73E, 0xD73E },
  38049. -{ 0xD73F, 0xD73F, 0xD73F },
  38050. -{ 0xD740, 0xD740, 0xD740 },
  38051. -{ 0xD741, 0xD741, 0xD741 },
  38052. -{ 0xD742, 0xD742, 0xD742 },
  38053. -{ 0xD743, 0xD743, 0xD743 },
  38054. -{ 0xD744, 0xD744, 0xD744 },
  38055. -{ 0xD745, 0xD745, 0xD745 },
  38056. -{ 0xD746, 0xD746, 0xD746 },
  38057. -{ 0xD747, 0xD747, 0xD747 },
  38058. -{ 0xD748, 0xD748, 0xD748 },
  38059. -{ 0xD749, 0xD749, 0xD749 },
  38060. -{ 0xD74A, 0xD74A, 0xD74A },
  38061. -{ 0xD74B, 0xD74B, 0xD74B },
  38062. -{ 0xD74C, 0xD74C, 0xD74C },
  38063. -{ 0xD74D, 0xD74D, 0xD74D },
  38064. -{ 0xD74E, 0xD74E, 0xD74E },
  38065. -{ 0xD74F, 0xD74F, 0xD74F },
  38066. -{ 0xD750, 0xD750, 0xD750 },
  38067. -{ 0xD751, 0xD751, 0xD751 },
  38068. -{ 0xD752, 0xD752, 0xD752 },
  38069. -{ 0xD753, 0xD753, 0xD753 },
  38070. -{ 0xD754, 0xD754, 0xD754 },
  38071. -{ 0xD755, 0xD755, 0xD755 },
  38072. -{ 0xD756, 0xD756, 0xD756 },
  38073. -{ 0xD757, 0xD757, 0xD757 },
  38074. -{ 0xD758, 0xD758, 0xD758 },
  38075. -{ 0xD759, 0xD759, 0xD759 },
  38076. -{ 0xD75A, 0xD75A, 0xD75A },
  38077. -{ 0xD75B, 0xD75B, 0xD75B },
  38078. -{ 0xD75C, 0xD75C, 0xD75C },
  38079. -{ 0xD75D, 0xD75D, 0xD75D },
  38080. -{ 0xD75E, 0xD75E, 0xD75E },
  38081. -{ 0xD75F, 0xD75F, 0xD75F },
  38082. -{ 0xD760, 0xD760, 0xD760 },
  38083. -{ 0xD761, 0xD761, 0xD761 },
  38084. -{ 0xD762, 0xD762, 0xD762 },
  38085. -{ 0xD763, 0xD763, 0xD763 },
  38086. -{ 0xD764, 0xD764, 0xD764 },
  38087. -{ 0xD765, 0xD765, 0xD765 },
  38088. -{ 0xD766, 0xD766, 0xD766 },
  38089. -{ 0xD767, 0xD767, 0xD767 },
  38090. -{ 0xD768, 0xD768, 0xD768 },
  38091. -{ 0xD769, 0xD769, 0xD769 },
  38092. -{ 0xD76A, 0xD76A, 0xD76A },
  38093. -{ 0xD76B, 0xD76B, 0xD76B },
  38094. -{ 0xD76C, 0xD76C, 0xD76C },
  38095. -{ 0xD76D, 0xD76D, 0xD76D },
  38096. -{ 0xD76E, 0xD76E, 0xD76E },
  38097. -{ 0xD76F, 0xD76F, 0xD76F },
  38098. -{ 0xD770, 0xD770, 0xD770 },
  38099. -{ 0xD771, 0xD771, 0xD771 },
  38100. -{ 0xD772, 0xD772, 0xD772 },
  38101. -{ 0xD773, 0xD773, 0xD773 },
  38102. -{ 0xD774, 0xD774, 0xD774 },
  38103. -{ 0xD775, 0xD775, 0xD775 },
  38104. -{ 0xD776, 0xD776, 0xD776 },
  38105. -{ 0xD777, 0xD777, 0xD777 },
  38106. -{ 0xD778, 0xD778, 0xD778 },
  38107. -{ 0xD779, 0xD779, 0xD779 },
  38108. -{ 0xD77A, 0xD77A, 0xD77A },
  38109. -{ 0xD77B, 0xD77B, 0xD77B },
  38110. -{ 0xD77C, 0xD77C, 0xD77C },
  38111. -{ 0xD77D, 0xD77D, 0xD77D },
  38112. -{ 0xD77E, 0xD77E, 0xD77E },
  38113. -{ 0xD77F, 0xD77F, 0xD77F },
  38114. -{ 0xD780, 0xD780, 0xD780 },
  38115. -{ 0xD781, 0xD781, 0xD781 },
  38116. -{ 0xD782, 0xD782, 0xD782 },
  38117. -{ 0xD783, 0xD783, 0xD783 },
  38118. -{ 0xD784, 0xD784, 0xD784 },
  38119. -{ 0xD785, 0xD785, 0xD785 },
  38120. -{ 0xD786, 0xD786, 0xD786 },
  38121. -{ 0xD787, 0xD787, 0xD787 },
  38122. -{ 0xD788, 0xD788, 0xD788 },
  38123. -{ 0xD789, 0xD789, 0xD789 },
  38124. -{ 0xD78A, 0xD78A, 0xD78A },
  38125. -{ 0xD78B, 0xD78B, 0xD78B },
  38126. -{ 0xD78C, 0xD78C, 0xD78C },
  38127. -{ 0xD78D, 0xD78D, 0xD78D },
  38128. -{ 0xD78E, 0xD78E, 0xD78E },
  38129. -{ 0xD78F, 0xD78F, 0xD78F },
  38130. -{ 0xD790, 0xD790, 0xD790 },
  38131. -{ 0xD791, 0xD791, 0xD791 },
  38132. -{ 0xD792, 0xD792, 0xD792 },
  38133. -{ 0xD793, 0xD793, 0xD793 },
  38134. -{ 0xD794, 0xD794, 0xD794 },
  38135. -{ 0xD795, 0xD795, 0xD795 },
  38136. -{ 0xD796, 0xD796, 0xD796 },
  38137. -{ 0xD797, 0xD797, 0xD797 },
  38138. -{ 0xD798, 0xD798, 0xD798 },
  38139. -{ 0xD799, 0xD799, 0xD799 },
  38140. -{ 0xD79A, 0xD79A, 0xD79A },
  38141. -{ 0xD79B, 0xD79B, 0xD79B },
  38142. -{ 0xD79C, 0xD79C, 0xD79C },
  38143. -{ 0xD79D, 0xD79D, 0xD79D },
  38144. -{ 0xD79E, 0xD79E, 0xD79E },
  38145. -{ 0xD79F, 0xD79F, 0xD79F },
  38146. -{ 0xD7A0, 0xD7A0, 0xD7A0 },
  38147. -{ 0xD7A1, 0xD7A1, 0xD7A1 },
  38148. -{ 0xD7A2, 0xD7A2, 0xD7A2 },
  38149. -{ 0xD7A3, 0xD7A3, 0xD7A3 },
  38150. -{ 0xF900, 0xF900, 0xF900 },
  38151. -{ 0xF901, 0xF901, 0xF901 },
  38152. -{ 0xF902, 0xF902, 0xF902 },
  38153. -{ 0xF903, 0xF903, 0xF903 },
  38154. -{ 0xF904, 0xF904, 0xF904 },
  38155. -{ 0xF905, 0xF905, 0xF905 },
  38156. -{ 0xF906, 0xF906, 0xF906 },
  38157. -{ 0xF907, 0xF907, 0xF907 },
  38158. -{ 0xF908, 0xF908, 0xF908 },
  38159. -{ 0xF909, 0xF909, 0xF909 },
  38160. -{ 0xF90A, 0xF90A, 0xF90A },
  38161. -{ 0xF90B, 0xF90B, 0xF90B },
  38162. -{ 0xF90C, 0xF90C, 0xF90C },
  38163. -{ 0xF90D, 0xF90D, 0xF90D },
  38164. -{ 0xF90E, 0xF90E, 0xF90E },
  38165. -{ 0xF90F, 0xF90F, 0xF90F },
  38166. -{ 0xF910, 0xF910, 0xF910 },
  38167. -{ 0xF911, 0xF911, 0xF911 },
  38168. -{ 0xF912, 0xF912, 0xF912 },
  38169. -{ 0xF913, 0xF913, 0xF913 },
  38170. -{ 0xF914, 0xF914, 0xF914 },
  38171. -{ 0xF915, 0xF915, 0xF915 },
  38172. -{ 0xF916, 0xF916, 0xF916 },
  38173. -{ 0xF917, 0xF917, 0xF917 },
  38174. -{ 0xF918, 0xF918, 0xF918 },
  38175. -{ 0xF919, 0xF919, 0xF919 },
  38176. -{ 0xF91A, 0xF91A, 0xF91A },
  38177. -{ 0xF91B, 0xF91B, 0xF91B },
  38178. -{ 0xF91C, 0xF91C, 0xF91C },
  38179. -{ 0xF91D, 0xF91D, 0xF91D },
  38180. -{ 0xF91E, 0xF91E, 0xF91E },
  38181. -{ 0xF91F, 0xF91F, 0xF91F },
  38182. -{ 0xF920, 0xF920, 0xF920 },
  38183. -{ 0xF921, 0xF921, 0xF921 },
  38184. -{ 0xF922, 0xF922, 0xF922 },
  38185. -{ 0xF923, 0xF923, 0xF923 },
  38186. -{ 0xF924, 0xF924, 0xF924 },
  38187. -{ 0xF925, 0xF925, 0xF925 },
  38188. -{ 0xF926, 0xF926, 0xF926 },
  38189. -{ 0xF927, 0xF927, 0xF927 },
  38190. -{ 0xF928, 0xF928, 0xF928 },
  38191. -{ 0xF929, 0xF929, 0xF929 },
  38192. -{ 0xF92A, 0xF92A, 0xF92A },
  38193. -{ 0xF92B, 0xF92B, 0xF92B },
  38194. -{ 0xF92C, 0xF92C, 0xF92C },
  38195. -{ 0xF92D, 0xF92D, 0xF92D },
  38196. -{ 0xF92E, 0xF92E, 0xF92E },
  38197. -{ 0xF92F, 0xF92F, 0xF92F },
  38198. -{ 0xF930, 0xF930, 0xF930 },
  38199. -{ 0xF931, 0xF931, 0xF931 },
  38200. -{ 0xF932, 0xF932, 0xF932 },
  38201. -{ 0xF933, 0xF933, 0xF933 },
  38202. -{ 0xF934, 0xF934, 0xF934 },
  38203. -{ 0xF935, 0xF935, 0xF935 },
  38204. -{ 0xF936, 0xF936, 0xF936 },
  38205. -{ 0xF937, 0xF937, 0xF937 },
  38206. -{ 0xF938, 0xF938, 0xF938 },
  38207. -{ 0xF939, 0xF939, 0xF939 },
  38208. -{ 0xF93A, 0xF93A, 0xF93A },
  38209. -{ 0xF93B, 0xF93B, 0xF93B },
  38210. -{ 0xF93C, 0xF93C, 0xF93C },
  38211. -{ 0xF93D, 0xF93D, 0xF93D },
  38212. -{ 0xF93E, 0xF93E, 0xF93E },
  38213. -{ 0xF93F, 0xF93F, 0xF93F },
  38214. -{ 0xF940, 0xF940, 0xF940 },
  38215. -{ 0xF941, 0xF941, 0xF941 },
  38216. -{ 0xF942, 0xF942, 0xF942 },
  38217. -{ 0xF943, 0xF943, 0xF943 },
  38218. -{ 0xF944, 0xF944, 0xF944 },
  38219. -{ 0xF945, 0xF945, 0xF945 },
  38220. -{ 0xF946, 0xF946, 0xF946 },
  38221. -{ 0xF947, 0xF947, 0xF947 },
  38222. -{ 0xF948, 0xF948, 0xF948 },
  38223. -{ 0xF949, 0xF949, 0xF949 },
  38224. -{ 0xF94A, 0xF94A, 0xF94A },
  38225. -{ 0xF94B, 0xF94B, 0xF94B },
  38226. -{ 0xF94C, 0xF94C, 0xF94C },
  38227. -{ 0xF94D, 0xF94D, 0xF94D },
  38228. -{ 0xF94E, 0xF94E, 0xF94E },
  38229. -{ 0xF94F, 0xF94F, 0xF94F },
  38230. -{ 0xF950, 0xF950, 0xF950 },
  38231. -{ 0xF951, 0xF951, 0xF951 },
  38232. -{ 0xF952, 0xF952, 0xF952 },
  38233. -{ 0xF953, 0xF953, 0xF953 },
  38234. -{ 0xF954, 0xF954, 0xF954 },
  38235. -{ 0xF955, 0xF955, 0xF955 },
  38236. -{ 0xF956, 0xF956, 0xF956 },
  38237. -{ 0xF957, 0xF957, 0xF957 },
  38238. -{ 0xF958, 0xF958, 0xF958 },
  38239. -{ 0xF959, 0xF959, 0xF959 },
  38240. -{ 0xF95A, 0xF95A, 0xF95A },
  38241. -{ 0xF95B, 0xF95B, 0xF95B },
  38242. -{ 0xF95C, 0xF95C, 0xF95C },
  38243. -{ 0xF95D, 0xF95D, 0xF95D },
  38244. -{ 0xF95E, 0xF95E, 0xF95E },
  38245. -{ 0xF95F, 0xF95F, 0xF95F },
  38246. -{ 0xF960, 0xF960, 0xF960 },
  38247. -{ 0xF961, 0xF961, 0xF961 },
  38248. -{ 0xF962, 0xF962, 0xF962 },
  38249. -{ 0xF963, 0xF963, 0xF963 },
  38250. -{ 0xF964, 0xF964, 0xF964 },
  38251. -{ 0xF965, 0xF965, 0xF965 },
  38252. -{ 0xF966, 0xF966, 0xF966 },
  38253. -{ 0xF967, 0xF967, 0xF967 },
  38254. -{ 0xF968, 0xF968, 0xF968 },
  38255. -{ 0xF969, 0xF969, 0xF969 },
  38256. -{ 0xF96A, 0xF96A, 0xF96A },
  38257. -{ 0xF96B, 0xF96B, 0xF96B },
  38258. -{ 0xF96C, 0xF96C, 0xF96C },
  38259. -{ 0xF96D, 0xF96D, 0xF96D },
  38260. -{ 0xF96E, 0xF96E, 0xF96E },
  38261. -{ 0xF96F, 0xF96F, 0xF96F },
  38262. -{ 0xF970, 0xF970, 0xF970 },
  38263. -{ 0xF971, 0xF971, 0xF971 },
  38264. -{ 0xF972, 0xF972, 0xF972 },
  38265. -{ 0xF973, 0xF973, 0xF973 },
  38266. -{ 0xF974, 0xF974, 0xF974 },
  38267. -{ 0xF975, 0xF975, 0xF975 },
  38268. -{ 0xF976, 0xF976, 0xF976 },
  38269. -{ 0xF977, 0xF977, 0xF977 },
  38270. -{ 0xF978, 0xF978, 0xF978 },
  38271. -{ 0xF979, 0xF979, 0xF979 },
  38272. -{ 0xF97A, 0xF97A, 0xF97A },
  38273. -{ 0xF97B, 0xF97B, 0xF97B },
  38274. -{ 0xF97C, 0xF97C, 0xF97C },
  38275. -{ 0xF97D, 0xF97D, 0xF97D },
  38276. -{ 0xF97E, 0xF97E, 0xF97E },
  38277. -{ 0xF97F, 0xF97F, 0xF97F },
  38278. -{ 0xF980, 0xF980, 0xF980 },
  38279. -{ 0xF981, 0xF981, 0xF981 },
  38280. -{ 0xF982, 0xF982, 0xF982 },
  38281. -{ 0xF983, 0xF983, 0xF983 },
  38282. -{ 0xF984, 0xF984, 0xF984 },
  38283. -{ 0xF985, 0xF985, 0xF985 },
  38284. -{ 0xF986, 0xF986, 0xF986 },
  38285. -{ 0xF987, 0xF987, 0xF987 },
  38286. -{ 0xF988, 0xF988, 0xF988 },
  38287. -{ 0xF989, 0xF989, 0xF989 },
  38288. -{ 0xF98A, 0xF98A, 0xF98A },
  38289. -{ 0xF98B, 0xF98B, 0xF98B },
  38290. -{ 0xF98C, 0xF98C, 0xF98C },
  38291. -{ 0xF98D, 0xF98D, 0xF98D },
  38292. -{ 0xF98E, 0xF98E, 0xF98E },
  38293. -{ 0xF98F, 0xF98F, 0xF98F },
  38294. -{ 0xF990, 0xF990, 0xF990 },
  38295. -{ 0xF991, 0xF991, 0xF991 },
  38296. -{ 0xF992, 0xF992, 0xF992 },
  38297. -{ 0xF993, 0xF993, 0xF993 },
  38298. -{ 0xF994, 0xF994, 0xF994 },
  38299. -{ 0xF995, 0xF995, 0xF995 },
  38300. -{ 0xF996, 0xF996, 0xF996 },
  38301. -{ 0xF997, 0xF997, 0xF997 },
  38302. -{ 0xF998, 0xF998, 0xF998 },
  38303. -{ 0xF999, 0xF999, 0xF999 },
  38304. -{ 0xF99A, 0xF99A, 0xF99A },
  38305. -{ 0xF99B, 0xF99B, 0xF99B },
  38306. -{ 0xF99C, 0xF99C, 0xF99C },
  38307. -{ 0xF99D, 0xF99D, 0xF99D },
  38308. -{ 0xF99E, 0xF99E, 0xF99E },
  38309. -{ 0xF99F, 0xF99F, 0xF99F },
  38310. -{ 0xF9A0, 0xF9A0, 0xF9A0 },
  38311. -{ 0xF9A1, 0xF9A1, 0xF9A1 },
  38312. -{ 0xF9A2, 0xF9A2, 0xF9A2 },
  38313. -{ 0xF9A3, 0xF9A3, 0xF9A3 },
  38314. -{ 0xF9A4, 0xF9A4, 0xF9A4 },
  38315. -{ 0xF9A5, 0xF9A5, 0xF9A5 },
  38316. -{ 0xF9A6, 0xF9A6, 0xF9A6 },
  38317. -{ 0xF9A7, 0xF9A7, 0xF9A7 },
  38318. -{ 0xF9A8, 0xF9A8, 0xF9A8 },
  38319. -{ 0xF9A9, 0xF9A9, 0xF9A9 },
  38320. -{ 0xF9AA, 0xF9AA, 0xF9AA },
  38321. -{ 0xF9AB, 0xF9AB, 0xF9AB },
  38322. -{ 0xF9AC, 0xF9AC, 0xF9AC },
  38323. -{ 0xF9AD, 0xF9AD, 0xF9AD },
  38324. -{ 0xF9AE, 0xF9AE, 0xF9AE },
  38325. -{ 0xF9AF, 0xF9AF, 0xF9AF },
  38326. -{ 0xF9B0, 0xF9B0, 0xF9B0 },
  38327. -{ 0xF9B1, 0xF9B1, 0xF9B1 },
  38328. -{ 0xF9B2, 0xF9B2, 0xF9B2 },
  38329. -{ 0xF9B3, 0xF9B3, 0xF9B3 },
  38330. -{ 0xF9B4, 0xF9B4, 0xF9B4 },
  38331. -{ 0xF9B5, 0xF9B5, 0xF9B5 },
  38332. -{ 0xF9B6, 0xF9B6, 0xF9B6 },
  38333. -{ 0xF9B7, 0xF9B7, 0xF9B7 },
  38334. -{ 0xF9B8, 0xF9B8, 0xF9B8 },
  38335. -{ 0xF9B9, 0xF9B9, 0xF9B9 },
  38336. -{ 0xF9BA, 0xF9BA, 0xF9BA },
  38337. -{ 0xF9BB, 0xF9BB, 0xF9BB },
  38338. -{ 0xF9BC, 0xF9BC, 0xF9BC },
  38339. -{ 0xF9BD, 0xF9BD, 0xF9BD },
  38340. -{ 0xF9BE, 0xF9BE, 0xF9BE },
  38341. -{ 0xF9BF, 0xF9BF, 0xF9BF },
  38342. -{ 0xF9C0, 0xF9C0, 0xF9C0 },
  38343. -{ 0xF9C1, 0xF9C1, 0xF9C1 },
  38344. -{ 0xF9C2, 0xF9C2, 0xF9C2 },
  38345. -{ 0xF9C3, 0xF9C3, 0xF9C3 },
  38346. -{ 0xF9C4, 0xF9C4, 0xF9C4 },
  38347. -{ 0xF9C5, 0xF9C5, 0xF9C5 },
  38348. -{ 0xF9C6, 0xF9C6, 0xF9C6 },
  38349. -{ 0xF9C7, 0xF9C7, 0xF9C7 },
  38350. -{ 0xF9C8, 0xF9C8, 0xF9C8 },
  38351. -{ 0xF9C9, 0xF9C9, 0xF9C9 },
  38352. -{ 0xF9CA, 0xF9CA, 0xF9CA },
  38353. -{ 0xF9CB, 0xF9CB, 0xF9CB },
  38354. -{ 0xF9CC, 0xF9CC, 0xF9CC },
  38355. -{ 0xF9CD, 0xF9CD, 0xF9CD },
  38356. -{ 0xF9CE, 0xF9CE, 0xF9CE },
  38357. -{ 0xF9CF, 0xF9CF, 0xF9CF },
  38358. -{ 0xF9D0, 0xF9D0, 0xF9D0 },
  38359. -{ 0xF9D1, 0xF9D1, 0xF9D1 },
  38360. -{ 0xF9D2, 0xF9D2, 0xF9D2 },
  38361. -{ 0xF9D3, 0xF9D3, 0xF9D3 },
  38362. -{ 0xF9D4, 0xF9D4, 0xF9D4 },
  38363. -{ 0xF9D5, 0xF9D5, 0xF9D5 },
  38364. -{ 0xF9D6, 0xF9D6, 0xF9D6 },
  38365. -{ 0xF9D7, 0xF9D7, 0xF9D7 },
  38366. -{ 0xF9D8, 0xF9D8, 0xF9D8 },
  38367. -{ 0xF9D9, 0xF9D9, 0xF9D9 },
  38368. -{ 0xF9DA, 0xF9DA, 0xF9DA },
  38369. -{ 0xF9DB, 0xF9DB, 0xF9DB },
  38370. -{ 0xF9DC, 0xF9DC, 0xF9DC },
  38371. -{ 0xF9DD, 0xF9DD, 0xF9DD },
  38372. -{ 0xF9DE, 0xF9DE, 0xF9DE },
  38373. -{ 0xF9DF, 0xF9DF, 0xF9DF },
  38374. -{ 0xF9E0, 0xF9E0, 0xF9E0 },
  38375. -{ 0xF9E1, 0xF9E1, 0xF9E1 },
  38376. -{ 0xF9E2, 0xF9E2, 0xF9E2 },
  38377. -{ 0xF9E3, 0xF9E3, 0xF9E3 },
  38378. -{ 0xF9E4, 0xF9E4, 0xF9E4 },
  38379. -{ 0xF9E5, 0xF9E5, 0xF9E5 },
  38380. -{ 0xF9E6, 0xF9E6, 0xF9E6 },
  38381. -{ 0xF9E7, 0xF9E7, 0xF9E7 },
  38382. -{ 0xF9E8, 0xF9E8, 0xF9E8 },
  38383. -{ 0xF9E9, 0xF9E9, 0xF9E9 },
  38384. -{ 0xF9EA, 0xF9EA, 0xF9EA },
  38385. -{ 0xF9EB, 0xF9EB, 0xF9EB },
  38386. -{ 0xF9EC, 0xF9EC, 0xF9EC },
  38387. -{ 0xF9ED, 0xF9ED, 0xF9ED },
  38388. -{ 0xF9EE, 0xF9EE, 0xF9EE },
  38389. -{ 0xF9EF, 0xF9EF, 0xF9EF },
  38390. -{ 0xF9F0, 0xF9F0, 0xF9F0 },
  38391. -{ 0xF9F1, 0xF9F1, 0xF9F1 },
  38392. -{ 0xF9F2, 0xF9F2, 0xF9F2 },
  38393. -{ 0xF9F3, 0xF9F3, 0xF9F3 },
  38394. -{ 0xF9F4, 0xF9F4, 0xF9F4 },
  38395. -{ 0xF9F5, 0xF9F5, 0xF9F5 },
  38396. -{ 0xF9F6, 0xF9F6, 0xF9F6 },
  38397. -{ 0xF9F7, 0xF9F7, 0xF9F7 },
  38398. -{ 0xF9F8, 0xF9F8, 0xF9F8 },
  38399. -{ 0xF9F9, 0xF9F9, 0xF9F9 },
  38400. -{ 0xF9FA, 0xF9FA, 0xF9FA },
  38401. -{ 0xF9FB, 0xF9FB, 0xF9FB },
  38402. -{ 0xF9FC, 0xF9FC, 0xF9FC },
  38403. -{ 0xF9FD, 0xF9FD, 0xF9FD },
  38404. -{ 0xF9FE, 0xF9FE, 0xF9FE },
  38405. -{ 0xF9FF, 0xF9FF, 0xF9FF },
  38406. -{ 0xFA00, 0xFA00, 0xFA00 },
  38407. -{ 0xFA01, 0xFA01, 0xFA01 },
  38408. -{ 0xFA02, 0xFA02, 0xFA02 },
  38409. -{ 0xFA03, 0xFA03, 0xFA03 },
  38410. -{ 0xFA04, 0xFA04, 0xFA04 },
  38411. -{ 0xFA05, 0xFA05, 0xFA05 },
  38412. -{ 0xFA06, 0xFA06, 0xFA06 },
  38413. -{ 0xFA07, 0xFA07, 0xFA07 },
  38414. -{ 0xFA08, 0xFA08, 0xFA08 },
  38415. -{ 0xFA09, 0xFA09, 0xFA09 },
  38416. -{ 0xFA0A, 0xFA0A, 0xFA0A },
  38417. -{ 0xFA0B, 0xFA0B, 0xFA0B },
  38418. -{ 0xFA0C, 0xFA0C, 0xFA0C },
  38419. -{ 0xFA0D, 0xFA0D, 0xFA0D },
  38420. -{ 0xFA0E, 0xFA0E, 0xFA0E },
  38421. -{ 0xFA0F, 0xFA0F, 0xFA0F },
  38422. -{ 0xFA10, 0xFA10, 0xFA10 },
  38423. -{ 0xFA11, 0xFA11, 0xFA11 },
  38424. -{ 0xFA12, 0xFA12, 0xFA12 },
  38425. -{ 0xFA13, 0xFA13, 0xFA13 },
  38426. -{ 0xFA14, 0xFA14, 0xFA14 },
  38427. -{ 0xFA15, 0xFA15, 0xFA15 },
  38428. -{ 0xFA16, 0xFA16, 0xFA16 },
  38429. -{ 0xFA17, 0xFA17, 0xFA17 },
  38430. -{ 0xFA18, 0xFA18, 0xFA18 },
  38431. -{ 0xFA19, 0xFA19, 0xFA19 },
  38432. -{ 0xFA1A, 0xFA1A, 0xFA1A },
  38433. -{ 0xFA1B, 0xFA1B, 0xFA1B },
  38434. -{ 0xFA1C, 0xFA1C, 0xFA1C },
  38435. -{ 0xFA1D, 0xFA1D, 0xFA1D },
  38436. -{ 0xFA1E, 0xFA1E, 0xFA1E },
  38437. -{ 0xFA1F, 0xFA1F, 0xFA1F },
  38438. -{ 0xFA20, 0xFA20, 0xFA20 },
  38439. -{ 0xFA21, 0xFA21, 0xFA21 },
  38440. -{ 0xFA22, 0xFA22, 0xFA22 },
  38441. -{ 0xFA23, 0xFA23, 0xFA23 },
  38442. -{ 0xFA24, 0xFA24, 0xFA24 },
  38443. -{ 0xFA25, 0xFA25, 0xFA25 },
  38444. -{ 0xFA26, 0xFA26, 0xFA26 },
  38445. -{ 0xFA27, 0xFA27, 0xFA27 },
  38446. -{ 0xFA28, 0xFA28, 0xFA28 },
  38447. -{ 0xFA29, 0xFA29, 0xFA29 },
  38448. -{ 0xFA2A, 0xFA2A, 0xFA2A },
  38449. -{ 0xFA2B, 0xFA2B, 0xFA2B },
  38450. -{ 0xFA2C, 0xFA2C, 0xFA2C },
  38451. -{ 0xFA2D, 0xFA2D, 0xFA2D },
  38452. -{ 0xFA30, 0xFA30, 0xFA30 },
  38453. -{ 0xFA31, 0xFA31, 0xFA31 },
  38454. -{ 0xFA32, 0xFA32, 0xFA32 },
  38455. -{ 0xFA33, 0xFA33, 0xFA33 },
  38456. -{ 0xFA34, 0xFA34, 0xFA34 },
  38457. -{ 0xFA35, 0xFA35, 0xFA35 },
  38458. -{ 0xFA36, 0xFA36, 0xFA36 },
  38459. -{ 0xFA37, 0xFA37, 0xFA37 },
  38460. -{ 0xFA38, 0xFA38, 0xFA38 },
  38461. -{ 0xFA39, 0xFA39, 0xFA39 },
  38462. -{ 0xFA3A, 0xFA3A, 0xFA3A },
  38463. -{ 0xFA3B, 0xFA3B, 0xFA3B },
  38464. -{ 0xFA3C, 0xFA3C, 0xFA3C },
  38465. -{ 0xFA3D, 0xFA3D, 0xFA3D },
  38466. -{ 0xFA3E, 0xFA3E, 0xFA3E },
  38467. -{ 0xFA3F, 0xFA3F, 0xFA3F },
  38468. -{ 0xFA40, 0xFA40, 0xFA40 },
  38469. -{ 0xFA41, 0xFA41, 0xFA41 },
  38470. -{ 0xFA42, 0xFA42, 0xFA42 },
  38471. -{ 0xFA43, 0xFA43, 0xFA43 },
  38472. -{ 0xFA44, 0xFA44, 0xFA44 },
  38473. -{ 0xFA45, 0xFA45, 0xFA45 },
  38474. -{ 0xFA46, 0xFA46, 0xFA46 },
  38475. -{ 0xFA47, 0xFA47, 0xFA47 },
  38476. -{ 0xFA48, 0xFA48, 0xFA48 },
  38477. -{ 0xFA49, 0xFA49, 0xFA49 },
  38478. -{ 0xFA4A, 0xFA4A, 0xFA4A },
  38479. -{ 0xFA4B, 0xFA4B, 0xFA4B },
  38480. -{ 0xFA4C, 0xFA4C, 0xFA4C },
  38481. -{ 0xFA4D, 0xFA4D, 0xFA4D },
  38482. -{ 0xFA4E, 0xFA4E, 0xFA4E },
  38483. -{ 0xFA4F, 0xFA4F, 0xFA4F },
  38484. -{ 0xFA50, 0xFA50, 0xFA50 },
  38485. -{ 0xFA51, 0xFA51, 0xFA51 },
  38486. -{ 0xFA52, 0xFA52, 0xFA52 },
  38487. -{ 0xFA53, 0xFA53, 0xFA53 },
  38488. -{ 0xFA54, 0xFA54, 0xFA54 },
  38489. -{ 0xFA55, 0xFA55, 0xFA55 },
  38490. -{ 0xFA56, 0xFA56, 0xFA56 },
  38491. -{ 0xFA57, 0xFA57, 0xFA57 },
  38492. -{ 0xFA58, 0xFA58, 0xFA58 },
  38493. -{ 0xFA59, 0xFA59, 0xFA59 },
  38494. -{ 0xFA5A, 0xFA5A, 0xFA5A },
  38495. -{ 0xFA5B, 0xFA5B, 0xFA5B },
  38496. -{ 0xFA5C, 0xFA5C, 0xFA5C },
  38497. -{ 0xFA5D, 0xFA5D, 0xFA5D },
  38498. -{ 0xFA5E, 0xFA5E, 0xFA5E },
  38499. -{ 0xFA5F, 0xFA5F, 0xFA5F },
  38500. -{ 0xFA60, 0xFA60, 0xFA60 },
  38501. -{ 0xFA61, 0xFA61, 0xFA61 },
  38502. -{ 0xFA62, 0xFA62, 0xFA62 },
  38503. -{ 0xFA63, 0xFA63, 0xFA63 },
  38504. -{ 0xFA64, 0xFA64, 0xFA64 },
  38505. -{ 0xFA65, 0xFA65, 0xFA65 },
  38506. -{ 0xFA66, 0xFA66, 0xFA66 },
  38507. -{ 0xFA67, 0xFA67, 0xFA67 },
  38508. -{ 0xFA68, 0xFA68, 0xFA68 },
  38509. -{ 0xFA69, 0xFA69, 0xFA69 },
  38510. -{ 0xFA6A, 0xFA6A, 0xFA6A },
  38511. -{ 0xFA70, 0xFA70, 0xFA70 },
  38512. -{ 0xFA71, 0xFA71, 0xFA71 },
  38513. -{ 0xFA72, 0xFA72, 0xFA72 },
  38514. -{ 0xFA73, 0xFA73, 0xFA73 },
  38515. -{ 0xFA74, 0xFA74, 0xFA74 },
  38516. -{ 0xFA75, 0xFA75, 0xFA75 },
  38517. -{ 0xFA76, 0xFA76, 0xFA76 },
  38518. -{ 0xFA77, 0xFA77, 0xFA77 },
  38519. -{ 0xFA78, 0xFA78, 0xFA78 },
  38520. -{ 0xFA79, 0xFA79, 0xFA79 },
  38521. -{ 0xFA7A, 0xFA7A, 0xFA7A },
  38522. -{ 0xFA7B, 0xFA7B, 0xFA7B },
  38523. -{ 0xFA7C, 0xFA7C, 0xFA7C },
  38524. -{ 0xFA7D, 0xFA7D, 0xFA7D },
  38525. -{ 0xFA7E, 0xFA7E, 0xFA7E },
  38526. -{ 0xFA7F, 0xFA7F, 0xFA7F },
  38527. -{ 0xFA80, 0xFA80, 0xFA80 },
  38528. -{ 0xFA81, 0xFA81, 0xFA81 },
  38529. -{ 0xFA82, 0xFA82, 0xFA82 },
  38530. -{ 0xFA83, 0xFA83, 0xFA83 },
  38531. -{ 0xFA84, 0xFA84, 0xFA84 },
  38532. -{ 0xFA85, 0xFA85, 0xFA85 },
  38533. -{ 0xFA86, 0xFA86, 0xFA86 },
  38534. -{ 0xFA87, 0xFA87, 0xFA87 },
  38535. -{ 0xFA88, 0xFA88, 0xFA88 },
  38536. -{ 0xFA89, 0xFA89, 0xFA89 },
  38537. -{ 0xFA8A, 0xFA8A, 0xFA8A },
  38538. -{ 0xFA8B, 0xFA8B, 0xFA8B },
  38539. -{ 0xFA8C, 0xFA8C, 0xFA8C },
  38540. -{ 0xFA8D, 0xFA8D, 0xFA8D },
  38541. -{ 0xFA8E, 0xFA8E, 0xFA8E },
  38542. -{ 0xFA8F, 0xFA8F, 0xFA8F },
  38543. -{ 0xFA90, 0xFA90, 0xFA90 },
  38544. -{ 0xFA91, 0xFA91, 0xFA91 },
  38545. -{ 0xFA92, 0xFA92, 0xFA92 },
  38546. -{ 0xFA93, 0xFA93, 0xFA93 },
  38547. -{ 0xFA94, 0xFA94, 0xFA94 },
  38548. -{ 0xFA95, 0xFA95, 0xFA95 },
  38549. -{ 0xFA96, 0xFA96, 0xFA96 },
  38550. -{ 0xFA97, 0xFA97, 0xFA97 },
  38551. -{ 0xFA98, 0xFA98, 0xFA98 },
  38552. -{ 0xFA99, 0xFA99, 0xFA99 },
  38553. -{ 0xFA9A, 0xFA9A, 0xFA9A },
  38554. -{ 0xFA9B, 0xFA9B, 0xFA9B },
  38555. -{ 0xFA9C, 0xFA9C, 0xFA9C },
  38556. -{ 0xFA9D, 0xFA9D, 0xFA9D },
  38557. -{ 0xFA9E, 0xFA9E, 0xFA9E },
  38558. -{ 0xFA9F, 0xFA9F, 0xFA9F },
  38559. -{ 0xFAA0, 0xFAA0, 0xFAA0 },
  38560. -{ 0xFAA1, 0xFAA1, 0xFAA1 },
  38561. -{ 0xFAA2, 0xFAA2, 0xFAA2 },
  38562. -{ 0xFAA3, 0xFAA3, 0xFAA3 },
  38563. -{ 0xFAA4, 0xFAA4, 0xFAA4 },
  38564. -{ 0xFAA5, 0xFAA5, 0xFAA5 },
  38565. -{ 0xFAA6, 0xFAA6, 0xFAA6 },
  38566. -{ 0xFAA7, 0xFAA7, 0xFAA7 },
  38567. -{ 0xFAA8, 0xFAA8, 0xFAA8 },
  38568. -{ 0xFAA9, 0xFAA9, 0xFAA9 },
  38569. -{ 0xFAAA, 0xFAAA, 0xFAAA },
  38570. -{ 0xFAAB, 0xFAAB, 0xFAAB },
  38571. -{ 0xFAAC, 0xFAAC, 0xFAAC },
  38572. -{ 0xFAAD, 0xFAAD, 0xFAAD },
  38573. -{ 0xFAAE, 0xFAAE, 0xFAAE },
  38574. -{ 0xFAAF, 0xFAAF, 0xFAAF },
  38575. -{ 0xFAB0, 0xFAB0, 0xFAB0 },
  38576. -{ 0xFAB1, 0xFAB1, 0xFAB1 },
  38577. -{ 0xFAB2, 0xFAB2, 0xFAB2 },
  38578. -{ 0xFAB3, 0xFAB3, 0xFAB3 },
  38579. -{ 0xFAB4, 0xFAB4, 0xFAB4 },
  38580. -{ 0xFAB5, 0xFAB5, 0xFAB5 },
  38581. -{ 0xFAB6, 0xFAB6, 0xFAB6 },
  38582. -{ 0xFAB7, 0xFAB7, 0xFAB7 },
  38583. -{ 0xFAB8, 0xFAB8, 0xFAB8 },
  38584. -{ 0xFAB9, 0xFAB9, 0xFAB9 },
  38585. -{ 0xFABA, 0xFABA, 0xFABA },
  38586. -{ 0xFABB, 0xFABB, 0xFABB },
  38587. -{ 0xFABC, 0xFABC, 0xFABC },
  38588. -{ 0xFABD, 0xFABD, 0xFABD },
  38589. -{ 0xFABE, 0xFABE, 0xFABE },
  38590. -{ 0xFABF, 0xFABF, 0xFABF },
  38591. -{ 0xFAC0, 0xFAC0, 0xFAC0 },
  38592. -{ 0xFAC1, 0xFAC1, 0xFAC1 },
  38593. -{ 0xFAC2, 0xFAC2, 0xFAC2 },
  38594. -{ 0xFAC3, 0xFAC3, 0xFAC3 },
  38595. -{ 0xFAC4, 0xFAC4, 0xFAC4 },
  38596. -{ 0xFAC5, 0xFAC5, 0xFAC5 },
  38597. -{ 0xFAC6, 0xFAC6, 0xFAC6 },
  38598. -{ 0xFAC7, 0xFAC7, 0xFAC7 },
  38599. -{ 0xFAC8, 0xFAC8, 0xFAC8 },
  38600. -{ 0xFAC9, 0xFAC9, 0xFAC9 },
  38601. -{ 0xFACA, 0xFACA, 0xFACA },
  38602. -{ 0xFACB, 0xFACB, 0xFACB },
  38603. -{ 0xFACC, 0xFACC, 0xFACC },
  38604. -{ 0xFACD, 0xFACD, 0xFACD },
  38605. -{ 0xFACE, 0xFACE, 0xFACE },
  38606. -{ 0xFACF, 0xFACF, 0xFACF },
  38607. -{ 0xFAD0, 0xFAD0, 0xFAD0 },
  38608. -{ 0xFAD1, 0xFAD1, 0xFAD1 },
  38609. -{ 0xFAD2, 0xFAD2, 0xFAD2 },
  38610. -{ 0xFAD3, 0xFAD3, 0xFAD3 },
  38611. -{ 0xFAD4, 0xFAD4, 0xFAD4 },
  38612. -{ 0xFAD5, 0xFAD5, 0xFAD5 },
  38613. -{ 0xFAD6, 0xFAD6, 0xFAD6 },
  38614. -{ 0xFAD7, 0xFAD7, 0xFAD7 },
  38615. -{ 0xFAD8, 0xFAD8, 0xFAD8 },
  38616. -{ 0xFAD9, 0xFAD9, 0xFAD9 },
  38617. -{ 0xFB00, 0xFB00, 0xFB00 },
  38618. -{ 0xFB01, 0xFB01, 0xFB01 },
  38619. -{ 0xFB02, 0xFB02, 0xFB02 },
  38620. -{ 0xFB03, 0xFB03, 0xFB03 },
  38621. -{ 0xFB04, 0xFB04, 0xFB04 },
  38622. -{ 0xFB05, 0xFB05, 0xFB05 },
  38623. -{ 0xFB06, 0xFB06, 0xFB06 },
  38624. -{ 0xFB13, 0xFB13, 0xFB13 },
  38625. -{ 0xFB14, 0xFB14, 0xFB14 },
  38626. -{ 0xFB15, 0xFB15, 0xFB15 },
  38627. -{ 0xFB16, 0xFB16, 0xFB16 },
  38628. -{ 0xFB17, 0xFB17, 0xFB17 },
  38629. -{ 0xFB1D, 0xFB1D, 0xFB1D },
  38630. -{ 0xFB1E, 0xFB1E, 0xFB1E },
  38631. -{ 0xFB1F, 0xFB1F, 0xFB1F },
  38632. -{ 0xFB20, 0xFB20, 0xFB20 },
  38633. -{ 0xFB21, 0xFB21, 0xFB21 },
  38634. -{ 0xFB22, 0xFB22, 0xFB22 },
  38635. -{ 0xFB23, 0xFB23, 0xFB23 },
  38636. -{ 0xFB24, 0xFB24, 0xFB24 },
  38637. -{ 0xFB25, 0xFB25, 0xFB25 },
  38638. -{ 0xFB26, 0xFB26, 0xFB26 },
  38639. -{ 0xFB27, 0xFB27, 0xFB27 },
  38640. -{ 0xFB28, 0xFB28, 0xFB28 },
  38641. -{ 0xFB2A, 0xFB2A, 0xFB2A },
  38642. -{ 0xFB2B, 0xFB2B, 0xFB2B },
  38643. -{ 0xFB2C, 0xFB2C, 0xFB2C },
  38644. -{ 0xFB2D, 0xFB2D, 0xFB2D },
  38645. -{ 0xFB2E, 0xFB2E, 0xFB2E },
  38646. -{ 0xFB2F, 0xFB2F, 0xFB2F },
  38647. -{ 0xFB30, 0xFB30, 0xFB30 },
  38648. -{ 0xFB31, 0xFB31, 0xFB31 },
  38649. -{ 0xFB32, 0xFB32, 0xFB32 },
  38650. -{ 0xFB33, 0xFB33, 0xFB33 },
  38651. -{ 0xFB34, 0xFB34, 0xFB34 },
  38652. -{ 0xFB35, 0xFB35, 0xFB35 },
  38653. -{ 0xFB36, 0xFB36, 0xFB36 },
  38654. -{ 0xFB38, 0xFB38, 0xFB38 },
  38655. -{ 0xFB39, 0xFB39, 0xFB39 },
  38656. -{ 0xFB3A, 0xFB3A, 0xFB3A },
  38657. -{ 0xFB3B, 0xFB3B, 0xFB3B },
  38658. -{ 0xFB3C, 0xFB3C, 0xFB3C },
  38659. -{ 0xFB3E, 0xFB3E, 0xFB3E },
  38660. -{ 0xFB40, 0xFB40, 0xFB40 },
  38661. -{ 0xFB41, 0xFB41, 0xFB41 },
  38662. -{ 0xFB43, 0xFB43, 0xFB43 },
  38663. -{ 0xFB44, 0xFB44, 0xFB44 },
  38664. -{ 0xFB46, 0xFB46, 0xFB46 },
  38665. -{ 0xFB47, 0xFB47, 0xFB47 },
  38666. -{ 0xFB48, 0xFB48, 0xFB48 },
  38667. -{ 0xFB49, 0xFB49, 0xFB49 },
  38668. -{ 0xFB4A, 0xFB4A, 0xFB4A },
  38669. -{ 0xFB4B, 0xFB4B, 0xFB4B },
  38670. -{ 0xFB4C, 0xFB4C, 0xFB4C },
  38671. -{ 0xFB4D, 0xFB4D, 0xFB4D },
  38672. -{ 0xFB4E, 0xFB4E, 0xFB4E },
  38673. -{ 0xFB4F, 0xFB4F, 0xFB4F },
  38674. -{ 0xFB50, 0xFB50, 0xFB50 },
  38675. -{ 0xFB51, 0xFB51, 0xFB51 },
  38676. -{ 0xFB52, 0xFB52, 0xFB52 },
  38677. -{ 0xFB53, 0xFB53, 0xFB53 },
  38678. -{ 0xFB54, 0xFB54, 0xFB54 },
  38679. -{ 0xFB55, 0xFB55, 0xFB55 },
  38680. -{ 0xFB56, 0xFB56, 0xFB56 },
  38681. -{ 0xFB57, 0xFB57, 0xFB57 },
  38682. -{ 0xFB58, 0xFB58, 0xFB58 },
  38683. -{ 0xFB59, 0xFB59, 0xFB59 },
  38684. -{ 0xFB5A, 0xFB5A, 0xFB5A },
  38685. -{ 0xFB5B, 0xFB5B, 0xFB5B },
  38686. -{ 0xFB5C, 0xFB5C, 0xFB5C },
  38687. -{ 0xFB5D, 0xFB5D, 0xFB5D },
  38688. -{ 0xFB5E, 0xFB5E, 0xFB5E },
  38689. -{ 0xFB5F, 0xFB5F, 0xFB5F },
  38690. -{ 0xFB60, 0xFB60, 0xFB60 },
  38691. -{ 0xFB61, 0xFB61, 0xFB61 },
  38692. -{ 0xFB62, 0xFB62, 0xFB62 },
  38693. -{ 0xFB63, 0xFB63, 0xFB63 },
  38694. -{ 0xFB64, 0xFB64, 0xFB64 },
  38695. -{ 0xFB65, 0xFB65, 0xFB65 },
  38696. -{ 0xFB66, 0xFB66, 0xFB66 },
  38697. -{ 0xFB67, 0xFB67, 0xFB67 },
  38698. -{ 0xFB68, 0xFB68, 0xFB68 },
  38699. -{ 0xFB69, 0xFB69, 0xFB69 },
  38700. -{ 0xFB6A, 0xFB6A, 0xFB6A },
  38701. -{ 0xFB6B, 0xFB6B, 0xFB6B },
  38702. -{ 0xFB6C, 0xFB6C, 0xFB6C },
  38703. -{ 0xFB6D, 0xFB6D, 0xFB6D },
  38704. -{ 0xFB6E, 0xFB6E, 0xFB6E },
  38705. -{ 0xFB6F, 0xFB6F, 0xFB6F },
  38706. -{ 0xFB70, 0xFB70, 0xFB70 },
  38707. -{ 0xFB71, 0xFB71, 0xFB71 },
  38708. -{ 0xFB72, 0xFB72, 0xFB72 },
  38709. -{ 0xFB73, 0xFB73, 0xFB73 },
  38710. -{ 0xFB74, 0xFB74, 0xFB74 },
  38711. -{ 0xFB75, 0xFB75, 0xFB75 },
  38712. -{ 0xFB76, 0xFB76, 0xFB76 },
  38713. -{ 0xFB77, 0xFB77, 0xFB77 },
  38714. -{ 0xFB78, 0xFB78, 0xFB78 },
  38715. -{ 0xFB79, 0xFB79, 0xFB79 },
  38716. -{ 0xFB7A, 0xFB7A, 0xFB7A },
  38717. -{ 0xFB7B, 0xFB7B, 0xFB7B },
  38718. -{ 0xFB7C, 0xFB7C, 0xFB7C },
  38719. -{ 0xFB7D, 0xFB7D, 0xFB7D },
  38720. -{ 0xFB7E, 0xFB7E, 0xFB7E },
  38721. -{ 0xFB7F, 0xFB7F, 0xFB7F },
  38722. -{ 0xFB80, 0xFB80, 0xFB80 },
  38723. -{ 0xFB81, 0xFB81, 0xFB81 },
  38724. -{ 0xFB82, 0xFB82, 0xFB82 },
  38725. -{ 0xFB83, 0xFB83, 0xFB83 },
  38726. -{ 0xFB84, 0xFB84, 0xFB84 },
  38727. -{ 0xFB85, 0xFB85, 0xFB85 },
  38728. -{ 0xFB86, 0xFB86, 0xFB86 },
  38729. -{ 0xFB87, 0xFB87, 0xFB87 },
  38730. -{ 0xFB88, 0xFB88, 0xFB88 },
  38731. -{ 0xFB89, 0xFB89, 0xFB89 },
  38732. -{ 0xFB8A, 0xFB8A, 0xFB8A },
  38733. -{ 0xFB8B, 0xFB8B, 0xFB8B },
  38734. -{ 0xFB8C, 0xFB8C, 0xFB8C },
  38735. -{ 0xFB8D, 0xFB8D, 0xFB8D },
  38736. -{ 0xFB8E, 0xFB8E, 0xFB8E },
  38737. -{ 0xFB8F, 0xFB8F, 0xFB8F },
  38738. -{ 0xFB90, 0xFB90, 0xFB90 },
  38739. -{ 0xFB91, 0xFB91, 0xFB91 },
  38740. -{ 0xFB92, 0xFB92, 0xFB92 },
  38741. -{ 0xFB93, 0xFB93, 0xFB93 },
  38742. -{ 0xFB94, 0xFB94, 0xFB94 },
  38743. -{ 0xFB95, 0xFB95, 0xFB95 },
  38744. -{ 0xFB96, 0xFB96, 0xFB96 },
  38745. -{ 0xFB97, 0xFB97, 0xFB97 },
  38746. -{ 0xFB98, 0xFB98, 0xFB98 },
  38747. -{ 0xFB99, 0xFB99, 0xFB99 },
  38748. -{ 0xFB9A, 0xFB9A, 0xFB9A },
  38749. -{ 0xFB9B, 0xFB9B, 0xFB9B },
  38750. -{ 0xFB9C, 0xFB9C, 0xFB9C },
  38751. -{ 0xFB9D, 0xFB9D, 0xFB9D },
  38752. -{ 0xFB9E, 0xFB9E, 0xFB9E },
  38753. -{ 0xFB9F, 0xFB9F, 0xFB9F },
  38754. -{ 0xFBA0, 0xFBA0, 0xFBA0 },
  38755. -{ 0xFBA1, 0xFBA1, 0xFBA1 },
  38756. -{ 0xFBA2, 0xFBA2, 0xFBA2 },
  38757. -{ 0xFBA3, 0xFBA3, 0xFBA3 },
  38758. -{ 0xFBA4, 0xFBA4, 0xFBA4 },
  38759. -{ 0xFBA5, 0xFBA5, 0xFBA5 },
  38760. -{ 0xFBA6, 0xFBA6, 0xFBA6 },
  38761. -{ 0xFBA7, 0xFBA7, 0xFBA7 },
  38762. -{ 0xFBA8, 0xFBA8, 0xFBA8 },
  38763. -{ 0xFBA9, 0xFBA9, 0xFBA9 },
  38764. -{ 0xFBAA, 0xFBAA, 0xFBAA },
  38765. -{ 0xFBAB, 0xFBAB, 0xFBAB },
  38766. -{ 0xFBAC, 0xFBAC, 0xFBAC },
  38767. -{ 0xFBAD, 0xFBAD, 0xFBAD },
  38768. -{ 0xFBAE, 0xFBAE, 0xFBAE },
  38769. -{ 0xFBAF, 0xFBAF, 0xFBAF },
  38770. -{ 0xFBB0, 0xFBB0, 0xFBB0 },
  38771. -{ 0xFBB1, 0xFBB1, 0xFBB1 },
  38772. -{ 0xFBD3, 0xFBD3, 0xFBD3 },
  38773. -{ 0xFBD4, 0xFBD4, 0xFBD4 },
  38774. -{ 0xFBD5, 0xFBD5, 0xFBD5 },
  38775. -{ 0xFBD6, 0xFBD6, 0xFBD6 },
  38776. -{ 0xFBD7, 0xFBD7, 0xFBD7 },
  38777. -{ 0xFBD8, 0xFBD8, 0xFBD8 },
  38778. -{ 0xFBD9, 0xFBD9, 0xFBD9 },
  38779. -{ 0xFBDA, 0xFBDA, 0xFBDA },
  38780. -{ 0xFBDB, 0xFBDB, 0xFBDB },
  38781. -{ 0xFBDC, 0xFBDC, 0xFBDC },
  38782. -{ 0xFBDD, 0xFBDD, 0xFBDD },
  38783. -{ 0xFBDE, 0xFBDE, 0xFBDE },
  38784. -{ 0xFBDF, 0xFBDF, 0xFBDF },
  38785. -{ 0xFBE0, 0xFBE0, 0xFBE0 },
  38786. -{ 0xFBE1, 0xFBE1, 0xFBE1 },
  38787. -{ 0xFBE2, 0xFBE2, 0xFBE2 },
  38788. -{ 0xFBE3, 0xFBE3, 0xFBE3 },
  38789. -{ 0xFBE4, 0xFBE4, 0xFBE4 },
  38790. -{ 0xFBE5, 0xFBE5, 0xFBE5 },
  38791. -{ 0xFBE6, 0xFBE6, 0xFBE6 },
  38792. -{ 0xFBE7, 0xFBE7, 0xFBE7 },
  38793. -{ 0xFBE8, 0xFBE8, 0xFBE8 },
  38794. -{ 0xFBE9, 0xFBE9, 0xFBE9 },
  38795. -{ 0xFBEA, 0xFBEA, 0xFBEA },
  38796. -{ 0xFBEB, 0xFBEB, 0xFBEB },
  38797. -{ 0xFBEC, 0xFBEC, 0xFBEC },
  38798. -{ 0xFBED, 0xFBED, 0xFBED },
  38799. -{ 0xFBEE, 0xFBEE, 0xFBEE },
  38800. -{ 0xFBEF, 0xFBEF, 0xFBEF },
  38801. -{ 0xFBF0, 0xFBF0, 0xFBF0 },
  38802. -{ 0xFBF1, 0xFBF1, 0xFBF1 },
  38803. -{ 0xFBF2, 0xFBF2, 0xFBF2 },
  38804. -{ 0xFBF3, 0xFBF3, 0xFBF3 },
  38805. -{ 0xFBF4, 0xFBF4, 0xFBF4 },
  38806. -{ 0xFBF5, 0xFBF5, 0xFBF5 },
  38807. -{ 0xFBF6, 0xFBF6, 0xFBF6 },
  38808. -{ 0xFBF7, 0xFBF7, 0xFBF7 },
  38809. -{ 0xFBF8, 0xFBF8, 0xFBF8 },
  38810. -{ 0xFBF9, 0xFBF9, 0xFBF9 },
  38811. -{ 0xFBFA, 0xFBFA, 0xFBFA },
  38812. -{ 0xFBFB, 0xFBFB, 0xFBFB },
  38813. -{ 0xFBFC, 0xFBFC, 0xFBFC },
  38814. -{ 0xFBFD, 0xFBFD, 0xFBFD },
  38815. -{ 0xFBFE, 0xFBFE, 0xFBFE },
  38816. -{ 0xFBFF, 0xFBFF, 0xFBFF },
  38817. -{ 0xFC00, 0xFC00, 0xFC00 },
  38818. -{ 0xFC01, 0xFC01, 0xFC01 },
  38819. -{ 0xFC02, 0xFC02, 0xFC02 },
  38820. -{ 0xFC03, 0xFC03, 0xFC03 },
  38821. -{ 0xFC04, 0xFC04, 0xFC04 },
  38822. -{ 0xFC05, 0xFC05, 0xFC05 },
  38823. -{ 0xFC06, 0xFC06, 0xFC06 },
  38824. -{ 0xFC07, 0xFC07, 0xFC07 },
  38825. -{ 0xFC08, 0xFC08, 0xFC08 },
  38826. -{ 0xFC09, 0xFC09, 0xFC09 },
  38827. -{ 0xFC0A, 0xFC0A, 0xFC0A },
  38828. -{ 0xFC0B, 0xFC0B, 0xFC0B },
  38829. -{ 0xFC0C, 0xFC0C, 0xFC0C },
  38830. -{ 0xFC0D, 0xFC0D, 0xFC0D },
  38831. -{ 0xFC0E, 0xFC0E, 0xFC0E },
  38832. -{ 0xFC0F, 0xFC0F, 0xFC0F },
  38833. -{ 0xFC10, 0xFC10, 0xFC10 },
  38834. -{ 0xFC11, 0xFC11, 0xFC11 },
  38835. -{ 0xFC12, 0xFC12, 0xFC12 },
  38836. -{ 0xFC13, 0xFC13, 0xFC13 },
  38837. -{ 0xFC14, 0xFC14, 0xFC14 },
  38838. -{ 0xFC15, 0xFC15, 0xFC15 },
  38839. -{ 0xFC16, 0xFC16, 0xFC16 },
  38840. -{ 0xFC17, 0xFC17, 0xFC17 },
  38841. -{ 0xFC18, 0xFC18, 0xFC18 },
  38842. -{ 0xFC19, 0xFC19, 0xFC19 },
  38843. -{ 0xFC1A, 0xFC1A, 0xFC1A },
  38844. -{ 0xFC1B, 0xFC1B, 0xFC1B },
  38845. -{ 0xFC1C, 0xFC1C, 0xFC1C },
  38846. -{ 0xFC1D, 0xFC1D, 0xFC1D },
  38847. -{ 0xFC1E, 0xFC1E, 0xFC1E },
  38848. -{ 0xFC1F, 0xFC1F, 0xFC1F },
  38849. -{ 0xFC20, 0xFC20, 0xFC20 },
  38850. -{ 0xFC21, 0xFC21, 0xFC21 },
  38851. -{ 0xFC22, 0xFC22, 0xFC22 },
  38852. -{ 0xFC23, 0xFC23, 0xFC23 },
  38853. -{ 0xFC24, 0xFC24, 0xFC24 },
  38854. -{ 0xFC25, 0xFC25, 0xFC25 },
  38855. -{ 0xFC26, 0xFC26, 0xFC26 },
  38856. -{ 0xFC27, 0xFC27, 0xFC27 },
  38857. -{ 0xFC28, 0xFC28, 0xFC28 },
  38858. -{ 0xFC29, 0xFC29, 0xFC29 },
  38859. -{ 0xFC2A, 0xFC2A, 0xFC2A },
  38860. -{ 0xFC2B, 0xFC2B, 0xFC2B },
  38861. -{ 0xFC2C, 0xFC2C, 0xFC2C },
  38862. -{ 0xFC2D, 0xFC2D, 0xFC2D },
  38863. -{ 0xFC2E, 0xFC2E, 0xFC2E },
  38864. -{ 0xFC2F, 0xFC2F, 0xFC2F },
  38865. -{ 0xFC30, 0xFC30, 0xFC30 },
  38866. -{ 0xFC31, 0xFC31, 0xFC31 },
  38867. -{ 0xFC32, 0xFC32, 0xFC32 },
  38868. -{ 0xFC33, 0xFC33, 0xFC33 },
  38869. -{ 0xFC34, 0xFC34, 0xFC34 },
  38870. -{ 0xFC35, 0xFC35, 0xFC35 },
  38871. -{ 0xFC36, 0xFC36, 0xFC36 },
  38872. -{ 0xFC37, 0xFC37, 0xFC37 },
  38873. -{ 0xFC38, 0xFC38, 0xFC38 },
  38874. -{ 0xFC39, 0xFC39, 0xFC39 },
  38875. -{ 0xFC3A, 0xFC3A, 0xFC3A },
  38876. -{ 0xFC3B, 0xFC3B, 0xFC3B },
  38877. -{ 0xFC3C, 0xFC3C, 0xFC3C },
  38878. -{ 0xFC3D, 0xFC3D, 0xFC3D },
  38879. -{ 0xFC3E, 0xFC3E, 0xFC3E },
  38880. -{ 0xFC3F, 0xFC3F, 0xFC3F },
  38881. -{ 0xFC40, 0xFC40, 0xFC40 },
  38882. -{ 0xFC41, 0xFC41, 0xFC41 },
  38883. -{ 0xFC42, 0xFC42, 0xFC42 },
  38884. -{ 0xFC43, 0xFC43, 0xFC43 },
  38885. -{ 0xFC44, 0xFC44, 0xFC44 },
  38886. -{ 0xFC45, 0xFC45, 0xFC45 },
  38887. -{ 0xFC46, 0xFC46, 0xFC46 },
  38888. -{ 0xFC47, 0xFC47, 0xFC47 },
  38889. -{ 0xFC48, 0xFC48, 0xFC48 },
  38890. -{ 0xFC49, 0xFC49, 0xFC49 },
  38891. -{ 0xFC4A, 0xFC4A, 0xFC4A },
  38892. -{ 0xFC4B, 0xFC4B, 0xFC4B },
  38893. -{ 0xFC4C, 0xFC4C, 0xFC4C },
  38894. -{ 0xFC4D, 0xFC4D, 0xFC4D },
  38895. -{ 0xFC4E, 0xFC4E, 0xFC4E },
  38896. -{ 0xFC4F, 0xFC4F, 0xFC4F },
  38897. -{ 0xFC50, 0xFC50, 0xFC50 },
  38898. -{ 0xFC51, 0xFC51, 0xFC51 },
  38899. -{ 0xFC52, 0xFC52, 0xFC52 },
  38900. -{ 0xFC53, 0xFC53, 0xFC53 },
  38901. -{ 0xFC54, 0xFC54, 0xFC54 },
  38902. -{ 0xFC55, 0xFC55, 0xFC55 },
  38903. -{ 0xFC56, 0xFC56, 0xFC56 },
  38904. -{ 0xFC57, 0xFC57, 0xFC57 },
  38905. -{ 0xFC58, 0xFC58, 0xFC58 },
  38906. -{ 0xFC59, 0xFC59, 0xFC59 },
  38907. -{ 0xFC5A, 0xFC5A, 0xFC5A },
  38908. -{ 0xFC5B, 0xFC5B, 0xFC5B },
  38909. -{ 0xFC5C, 0xFC5C, 0xFC5C },
  38910. -{ 0xFC5D, 0xFC5D, 0xFC5D },
  38911. -{ 0xFC5E, 0xFC5E, 0xFC5E },
  38912. -{ 0xFC5F, 0xFC5F, 0xFC5F },
  38913. -{ 0xFC60, 0xFC60, 0xFC60 },
  38914. -{ 0xFC61, 0xFC61, 0xFC61 },
  38915. -{ 0xFC62, 0xFC62, 0xFC62 },
  38916. -{ 0xFC63, 0xFC63, 0xFC63 },
  38917. -{ 0xFC64, 0xFC64, 0xFC64 },
  38918. -{ 0xFC65, 0xFC65, 0xFC65 },
  38919. -{ 0xFC66, 0xFC66, 0xFC66 },
  38920. -{ 0xFC67, 0xFC67, 0xFC67 },
  38921. -{ 0xFC68, 0xFC68, 0xFC68 },
  38922. -{ 0xFC69, 0xFC69, 0xFC69 },
  38923. -{ 0xFC6A, 0xFC6A, 0xFC6A },
  38924. -{ 0xFC6B, 0xFC6B, 0xFC6B },
  38925. -{ 0xFC6C, 0xFC6C, 0xFC6C },
  38926. -{ 0xFC6D, 0xFC6D, 0xFC6D },
  38927. -{ 0xFC6E, 0xFC6E, 0xFC6E },
  38928. -{ 0xFC6F, 0xFC6F, 0xFC6F },
  38929. -{ 0xFC70, 0xFC70, 0xFC70 },
  38930. -{ 0xFC71, 0xFC71, 0xFC71 },
  38931. -{ 0xFC72, 0xFC72, 0xFC72 },
  38932. -{ 0xFC73, 0xFC73, 0xFC73 },
  38933. -{ 0xFC74, 0xFC74, 0xFC74 },
  38934. -{ 0xFC75, 0xFC75, 0xFC75 },
  38935. -{ 0xFC76, 0xFC76, 0xFC76 },
  38936. -{ 0xFC77, 0xFC77, 0xFC77 },
  38937. -{ 0xFC78, 0xFC78, 0xFC78 },
  38938. -{ 0xFC79, 0xFC79, 0xFC79 },
  38939. -{ 0xFC7A, 0xFC7A, 0xFC7A },
  38940. -{ 0xFC7B, 0xFC7B, 0xFC7B },
  38941. -{ 0xFC7C, 0xFC7C, 0xFC7C },
  38942. -{ 0xFC7D, 0xFC7D, 0xFC7D },
  38943. -{ 0xFC7E, 0xFC7E, 0xFC7E },
  38944. -{ 0xFC7F, 0xFC7F, 0xFC7F },
  38945. -{ 0xFC80, 0xFC80, 0xFC80 },
  38946. -{ 0xFC81, 0xFC81, 0xFC81 },
  38947. -{ 0xFC82, 0xFC82, 0xFC82 },
  38948. -{ 0xFC83, 0xFC83, 0xFC83 },
  38949. -{ 0xFC84, 0xFC84, 0xFC84 },
  38950. -{ 0xFC85, 0xFC85, 0xFC85 },
  38951. -{ 0xFC86, 0xFC86, 0xFC86 },
  38952. -{ 0xFC87, 0xFC87, 0xFC87 },
  38953. -{ 0xFC88, 0xFC88, 0xFC88 },
  38954. -{ 0xFC89, 0xFC89, 0xFC89 },
  38955. -{ 0xFC8A, 0xFC8A, 0xFC8A },
  38956. -{ 0xFC8B, 0xFC8B, 0xFC8B },
  38957. -{ 0xFC8C, 0xFC8C, 0xFC8C },
  38958. -{ 0xFC8D, 0xFC8D, 0xFC8D },
  38959. -{ 0xFC8E, 0xFC8E, 0xFC8E },
  38960. -{ 0xFC8F, 0xFC8F, 0xFC8F },
  38961. -{ 0xFC90, 0xFC90, 0xFC90 },
  38962. -{ 0xFC91, 0xFC91, 0xFC91 },
  38963. -{ 0xFC92, 0xFC92, 0xFC92 },
  38964. -{ 0xFC93, 0xFC93, 0xFC93 },
  38965. -{ 0xFC94, 0xFC94, 0xFC94 },
  38966. -{ 0xFC95, 0xFC95, 0xFC95 },
  38967. -{ 0xFC96, 0xFC96, 0xFC96 },
  38968. -{ 0xFC97, 0xFC97, 0xFC97 },
  38969. -{ 0xFC98, 0xFC98, 0xFC98 },
  38970. -{ 0xFC99, 0xFC99, 0xFC99 },
  38971. -{ 0xFC9A, 0xFC9A, 0xFC9A },
  38972. -{ 0xFC9B, 0xFC9B, 0xFC9B },
  38973. -{ 0xFC9C, 0xFC9C, 0xFC9C },
  38974. -{ 0xFC9D, 0xFC9D, 0xFC9D },
  38975. -{ 0xFC9E, 0xFC9E, 0xFC9E },
  38976. -{ 0xFC9F, 0xFC9F, 0xFC9F },
  38977. -{ 0xFCA0, 0xFCA0, 0xFCA0 },
  38978. -{ 0xFCA1, 0xFCA1, 0xFCA1 },
  38979. -{ 0xFCA2, 0xFCA2, 0xFCA2 },
  38980. -{ 0xFCA3, 0xFCA3, 0xFCA3 },
  38981. -{ 0xFCA4, 0xFCA4, 0xFCA4 },
  38982. -{ 0xFCA5, 0xFCA5, 0xFCA5 },
  38983. -{ 0xFCA6, 0xFCA6, 0xFCA6 },
  38984. -{ 0xFCA7, 0xFCA7, 0xFCA7 },
  38985. -{ 0xFCA8, 0xFCA8, 0xFCA8 },
  38986. -{ 0xFCA9, 0xFCA9, 0xFCA9 },
  38987. -{ 0xFCAA, 0xFCAA, 0xFCAA },
  38988. -{ 0xFCAB, 0xFCAB, 0xFCAB },
  38989. -{ 0xFCAC, 0xFCAC, 0xFCAC },
  38990. -{ 0xFCAD, 0xFCAD, 0xFCAD },
  38991. -{ 0xFCAE, 0xFCAE, 0xFCAE },
  38992. -{ 0xFCAF, 0xFCAF, 0xFCAF },
  38993. -{ 0xFCB0, 0xFCB0, 0xFCB0 },
  38994. -{ 0xFCB1, 0xFCB1, 0xFCB1 },
  38995. -{ 0xFCB2, 0xFCB2, 0xFCB2 },
  38996. -{ 0xFCB3, 0xFCB3, 0xFCB3 },
  38997. -{ 0xFCB4, 0xFCB4, 0xFCB4 },
  38998. -{ 0xFCB5, 0xFCB5, 0xFCB5 },
  38999. -{ 0xFCB6, 0xFCB6, 0xFCB6 },
  39000. -{ 0xFCB7, 0xFCB7, 0xFCB7 },
  39001. -{ 0xFCB8, 0xFCB8, 0xFCB8 },
  39002. -{ 0xFCB9, 0xFCB9, 0xFCB9 },
  39003. -{ 0xFCBA, 0xFCBA, 0xFCBA },
  39004. -{ 0xFCBB, 0xFCBB, 0xFCBB },
  39005. -{ 0xFCBC, 0xFCBC, 0xFCBC },
  39006. -{ 0xFCBD, 0xFCBD, 0xFCBD },
  39007. -{ 0xFCBE, 0xFCBE, 0xFCBE },
  39008. -{ 0xFCBF, 0xFCBF, 0xFCBF },
  39009. -{ 0xFCC0, 0xFCC0, 0xFCC0 },
  39010. -{ 0xFCC1, 0xFCC1, 0xFCC1 },
  39011. -{ 0xFCC2, 0xFCC2, 0xFCC2 },
  39012. -{ 0xFCC3, 0xFCC3, 0xFCC3 },
  39013. -{ 0xFCC4, 0xFCC4, 0xFCC4 },
  39014. -{ 0xFCC5, 0xFCC5, 0xFCC5 },
  39015. -{ 0xFCC6, 0xFCC6, 0xFCC6 },
  39016. -{ 0xFCC7, 0xFCC7, 0xFCC7 },
  39017. -{ 0xFCC8, 0xFCC8, 0xFCC8 },
  39018. -{ 0xFCC9, 0xFCC9, 0xFCC9 },
  39019. -{ 0xFCCA, 0xFCCA, 0xFCCA },
  39020. -{ 0xFCCB, 0xFCCB, 0xFCCB },
  39021. -{ 0xFCCC, 0xFCCC, 0xFCCC },
  39022. -{ 0xFCCD, 0xFCCD, 0xFCCD },
  39023. -{ 0xFCCE, 0xFCCE, 0xFCCE },
  39024. -{ 0xFCCF, 0xFCCF, 0xFCCF },
  39025. -{ 0xFCD0, 0xFCD0, 0xFCD0 },
  39026. -{ 0xFCD1, 0xFCD1, 0xFCD1 },
  39027. -{ 0xFCD2, 0xFCD2, 0xFCD2 },
  39028. -{ 0xFCD3, 0xFCD3, 0xFCD3 },
  39029. -{ 0xFCD4, 0xFCD4, 0xFCD4 },
  39030. -{ 0xFCD5, 0xFCD5, 0xFCD5 },
  39031. -{ 0xFCD6, 0xFCD6, 0xFCD6 },
  39032. -{ 0xFCD7, 0xFCD7, 0xFCD7 },
  39033. -{ 0xFCD8, 0xFCD8, 0xFCD8 },
  39034. -{ 0xFCD9, 0xFCD9, 0xFCD9 },
  39035. -{ 0xFCDA, 0xFCDA, 0xFCDA },
  39036. -{ 0xFCDB, 0xFCDB, 0xFCDB },
  39037. -{ 0xFCDC, 0xFCDC, 0xFCDC },
  39038. -{ 0xFCDD, 0xFCDD, 0xFCDD },
  39039. -{ 0xFCDE, 0xFCDE, 0xFCDE },
  39040. -{ 0xFCDF, 0xFCDF, 0xFCDF },
  39041. -{ 0xFCE0, 0xFCE0, 0xFCE0 },
  39042. -{ 0xFCE1, 0xFCE1, 0xFCE1 },
  39043. -{ 0xFCE2, 0xFCE2, 0xFCE2 },
  39044. -{ 0xFCE3, 0xFCE3, 0xFCE3 },
  39045. -{ 0xFCE4, 0xFCE4, 0xFCE4 },
  39046. -{ 0xFCE5, 0xFCE5, 0xFCE5 },
  39047. -{ 0xFCE6, 0xFCE6, 0xFCE6 },
  39048. -{ 0xFCE7, 0xFCE7, 0xFCE7 },
  39049. -{ 0xFCE8, 0xFCE8, 0xFCE8 },
  39050. -{ 0xFCE9, 0xFCE9, 0xFCE9 },
  39051. -{ 0xFCEA, 0xFCEA, 0xFCEA },
  39052. -{ 0xFCEB, 0xFCEB, 0xFCEB },
  39053. -{ 0xFCEC, 0xFCEC, 0xFCEC },
  39054. -{ 0xFCED, 0xFCED, 0xFCED },
  39055. -{ 0xFCEE, 0xFCEE, 0xFCEE },
  39056. -{ 0xFCEF, 0xFCEF, 0xFCEF },
  39057. -{ 0xFCF0, 0xFCF0, 0xFCF0 },
  39058. -{ 0xFCF1, 0xFCF1, 0xFCF1 },
  39059. -{ 0xFCF2, 0xFCF2, 0xFCF2 },
  39060. -{ 0xFCF3, 0xFCF3, 0xFCF3 },
  39061. -{ 0xFCF4, 0xFCF4, 0xFCF4 },
  39062. -{ 0xFCF5, 0xFCF5, 0xFCF5 },
  39063. -{ 0xFCF6, 0xFCF6, 0xFCF6 },
  39064. -{ 0xFCF7, 0xFCF7, 0xFCF7 },
  39065. -{ 0xFCF8, 0xFCF8, 0xFCF8 },
  39066. -{ 0xFCF9, 0xFCF9, 0xFCF9 },
  39067. -{ 0xFCFA, 0xFCFA, 0xFCFA },
  39068. -{ 0xFCFB, 0xFCFB, 0xFCFB },
  39069. -{ 0xFCFC, 0xFCFC, 0xFCFC },
  39070. -{ 0xFCFD, 0xFCFD, 0xFCFD },
  39071. -{ 0xFCFE, 0xFCFE, 0xFCFE },
  39072. -{ 0xFCFF, 0xFCFF, 0xFCFF },
  39073. -{ 0xFD00, 0xFD00, 0xFD00 },
  39074. -{ 0xFD01, 0xFD01, 0xFD01 },
  39075. -{ 0xFD02, 0xFD02, 0xFD02 },
  39076. -{ 0xFD03, 0xFD03, 0xFD03 },
  39077. -{ 0xFD04, 0xFD04, 0xFD04 },
  39078. -{ 0xFD05, 0xFD05, 0xFD05 },
  39079. -{ 0xFD06, 0xFD06, 0xFD06 },
  39080. -{ 0xFD07, 0xFD07, 0xFD07 },
  39081. -{ 0xFD08, 0xFD08, 0xFD08 },
  39082. -{ 0xFD09, 0xFD09, 0xFD09 },
  39083. -{ 0xFD0A, 0xFD0A, 0xFD0A },
  39084. -{ 0xFD0B, 0xFD0B, 0xFD0B },
  39085. -{ 0xFD0C, 0xFD0C, 0xFD0C },
  39086. -{ 0xFD0D, 0xFD0D, 0xFD0D },
  39087. -{ 0xFD0E, 0xFD0E, 0xFD0E },
  39088. -{ 0xFD0F, 0xFD0F, 0xFD0F },
  39089. -{ 0xFD10, 0xFD10, 0xFD10 },
  39090. -{ 0xFD11, 0xFD11, 0xFD11 },
  39091. -{ 0xFD12, 0xFD12, 0xFD12 },
  39092. -{ 0xFD13, 0xFD13, 0xFD13 },
  39093. -{ 0xFD14, 0xFD14, 0xFD14 },
  39094. -{ 0xFD15, 0xFD15, 0xFD15 },
  39095. -{ 0xFD16, 0xFD16, 0xFD16 },
  39096. -{ 0xFD17, 0xFD17, 0xFD17 },
  39097. -{ 0xFD18, 0xFD18, 0xFD18 },
  39098. -{ 0xFD19, 0xFD19, 0xFD19 },
  39099. -{ 0xFD1A, 0xFD1A, 0xFD1A },
  39100. -{ 0xFD1B, 0xFD1B, 0xFD1B },
  39101. -{ 0xFD1C, 0xFD1C, 0xFD1C },
  39102. -{ 0xFD1D, 0xFD1D, 0xFD1D },
  39103. -{ 0xFD1E, 0xFD1E, 0xFD1E },
  39104. -{ 0xFD1F, 0xFD1F, 0xFD1F },
  39105. -{ 0xFD20, 0xFD20, 0xFD20 },
  39106. -{ 0xFD21, 0xFD21, 0xFD21 },
  39107. -{ 0xFD22, 0xFD22, 0xFD22 },
  39108. -{ 0xFD23, 0xFD23, 0xFD23 },
  39109. -{ 0xFD24, 0xFD24, 0xFD24 },
  39110. -{ 0xFD25, 0xFD25, 0xFD25 },
  39111. -{ 0xFD26, 0xFD26, 0xFD26 },
  39112. -{ 0xFD27, 0xFD27, 0xFD27 },
  39113. -{ 0xFD28, 0xFD28, 0xFD28 },
  39114. -{ 0xFD29, 0xFD29, 0xFD29 },
  39115. -{ 0xFD2A, 0xFD2A, 0xFD2A },
  39116. -{ 0xFD2B, 0xFD2B, 0xFD2B },
  39117. -{ 0xFD2C, 0xFD2C, 0xFD2C },
  39118. -{ 0xFD2D, 0xFD2D, 0xFD2D },
  39119. -{ 0xFD2E, 0xFD2E, 0xFD2E },
  39120. -{ 0xFD2F, 0xFD2F, 0xFD2F },
  39121. -{ 0xFD30, 0xFD30, 0xFD30 },
  39122. -{ 0xFD31, 0xFD31, 0xFD31 },
  39123. -{ 0xFD32, 0xFD32, 0xFD32 },
  39124. -{ 0xFD33, 0xFD33, 0xFD33 },
  39125. -{ 0xFD34, 0xFD34, 0xFD34 },
  39126. -{ 0xFD35, 0xFD35, 0xFD35 },
  39127. -{ 0xFD36, 0xFD36, 0xFD36 },
  39128. -{ 0xFD37, 0xFD37, 0xFD37 },
  39129. -{ 0xFD38, 0xFD38, 0xFD38 },
  39130. -{ 0xFD39, 0xFD39, 0xFD39 },
  39131. -{ 0xFD3A, 0xFD3A, 0xFD3A },
  39132. -{ 0xFD3B, 0xFD3B, 0xFD3B },
  39133. -{ 0xFD3C, 0xFD3C, 0xFD3C },
  39134. -{ 0xFD3D, 0xFD3D, 0xFD3D },
  39135. -{ 0xFD50, 0xFD50, 0xFD50 },
  39136. -{ 0xFD51, 0xFD51, 0xFD51 },
  39137. -{ 0xFD52, 0xFD52, 0xFD52 },
  39138. -{ 0xFD53, 0xFD53, 0xFD53 },
  39139. -{ 0xFD54, 0xFD54, 0xFD54 },
  39140. -{ 0xFD55, 0xFD55, 0xFD55 },
  39141. -{ 0xFD56, 0xFD56, 0xFD56 },
  39142. -{ 0xFD57, 0xFD57, 0xFD57 },
  39143. -{ 0xFD58, 0xFD58, 0xFD58 },
  39144. -{ 0xFD59, 0xFD59, 0xFD59 },
  39145. -{ 0xFD5A, 0xFD5A, 0xFD5A },
  39146. -{ 0xFD5B, 0xFD5B, 0xFD5B },
  39147. -{ 0xFD5C, 0xFD5C, 0xFD5C },
  39148. -{ 0xFD5D, 0xFD5D, 0xFD5D },
  39149. -{ 0xFD5E, 0xFD5E, 0xFD5E },
  39150. -{ 0xFD5F, 0xFD5F, 0xFD5F },
  39151. -{ 0xFD60, 0xFD60, 0xFD60 },
  39152. -{ 0xFD61, 0xFD61, 0xFD61 },
  39153. -{ 0xFD62, 0xFD62, 0xFD62 },
  39154. -{ 0xFD63, 0xFD63, 0xFD63 },
  39155. -{ 0xFD64, 0xFD64, 0xFD64 },
  39156. -{ 0xFD65, 0xFD65, 0xFD65 },
  39157. -{ 0xFD66, 0xFD66, 0xFD66 },
  39158. -{ 0xFD67, 0xFD67, 0xFD67 },
  39159. -{ 0xFD68, 0xFD68, 0xFD68 },
  39160. -{ 0xFD69, 0xFD69, 0xFD69 },
  39161. -{ 0xFD6A, 0xFD6A, 0xFD6A },
  39162. -{ 0xFD6B, 0xFD6B, 0xFD6B },
  39163. -{ 0xFD6C, 0xFD6C, 0xFD6C },
  39164. -{ 0xFD6D, 0xFD6D, 0xFD6D },
  39165. -{ 0xFD6E, 0xFD6E, 0xFD6E },
  39166. -{ 0xFD6F, 0xFD6F, 0xFD6F },
  39167. -{ 0xFD70, 0xFD70, 0xFD70 },
  39168. -{ 0xFD71, 0xFD71, 0xFD71 },
  39169. -{ 0xFD72, 0xFD72, 0xFD72 },
  39170. -{ 0xFD73, 0xFD73, 0xFD73 },
  39171. -{ 0xFD74, 0xFD74, 0xFD74 },
  39172. -{ 0xFD75, 0xFD75, 0xFD75 },
  39173. -{ 0xFD76, 0xFD76, 0xFD76 },
  39174. -{ 0xFD77, 0xFD77, 0xFD77 },
  39175. -{ 0xFD78, 0xFD78, 0xFD78 },
  39176. -{ 0xFD79, 0xFD79, 0xFD79 },
  39177. -{ 0xFD7A, 0xFD7A, 0xFD7A },
  39178. -{ 0xFD7B, 0xFD7B, 0xFD7B },
  39179. -{ 0xFD7C, 0xFD7C, 0xFD7C },
  39180. -{ 0xFD7D, 0xFD7D, 0xFD7D },
  39181. -{ 0xFD7E, 0xFD7E, 0xFD7E },
  39182. -{ 0xFD7F, 0xFD7F, 0xFD7F },
  39183. -{ 0xFD80, 0xFD80, 0xFD80 },
  39184. -{ 0xFD81, 0xFD81, 0xFD81 },
  39185. -{ 0xFD82, 0xFD82, 0xFD82 },
  39186. -{ 0xFD83, 0xFD83, 0xFD83 },
  39187. -{ 0xFD84, 0xFD84, 0xFD84 },
  39188. -{ 0xFD85, 0xFD85, 0xFD85 },
  39189. -{ 0xFD86, 0xFD86, 0xFD86 },
  39190. -{ 0xFD87, 0xFD87, 0xFD87 },
  39191. -{ 0xFD88, 0xFD88, 0xFD88 },
  39192. -{ 0xFD89, 0xFD89, 0xFD89 },
  39193. -{ 0xFD8A, 0xFD8A, 0xFD8A },
  39194. -{ 0xFD8B, 0xFD8B, 0xFD8B },
  39195. -{ 0xFD8C, 0xFD8C, 0xFD8C },
  39196. -{ 0xFD8D, 0xFD8D, 0xFD8D },
  39197. -{ 0xFD8E, 0xFD8E, 0xFD8E },
  39198. -{ 0xFD8F, 0xFD8F, 0xFD8F },
  39199. -{ 0xFD92, 0xFD92, 0xFD92 },
  39200. -{ 0xFD93, 0xFD93, 0xFD93 },
  39201. -{ 0xFD94, 0xFD94, 0xFD94 },
  39202. -{ 0xFD95, 0xFD95, 0xFD95 },
  39203. -{ 0xFD96, 0xFD96, 0xFD96 },
  39204. -{ 0xFD97, 0xFD97, 0xFD97 },
  39205. -{ 0xFD98, 0xFD98, 0xFD98 },
  39206. -{ 0xFD99, 0xFD99, 0xFD99 },
  39207. -{ 0xFD9A, 0xFD9A, 0xFD9A },
  39208. -{ 0xFD9B, 0xFD9B, 0xFD9B },
  39209. -{ 0xFD9C, 0xFD9C, 0xFD9C },
  39210. -{ 0xFD9D, 0xFD9D, 0xFD9D },
  39211. -{ 0xFD9E, 0xFD9E, 0xFD9E },
  39212. -{ 0xFD9F, 0xFD9F, 0xFD9F },
  39213. -{ 0xFDA0, 0xFDA0, 0xFDA0 },
  39214. -{ 0xFDA1, 0xFDA1, 0xFDA1 },
  39215. -{ 0xFDA2, 0xFDA2, 0xFDA2 },
  39216. -{ 0xFDA3, 0xFDA3, 0xFDA3 },
  39217. -{ 0xFDA4, 0xFDA4, 0xFDA4 },
  39218. -{ 0xFDA5, 0xFDA5, 0xFDA5 },
  39219. -{ 0xFDA6, 0xFDA6, 0xFDA6 },
  39220. -{ 0xFDA7, 0xFDA7, 0xFDA7 },
  39221. -{ 0xFDA8, 0xFDA8, 0xFDA8 },
  39222. -{ 0xFDA9, 0xFDA9, 0xFDA9 },
  39223. -{ 0xFDAA, 0xFDAA, 0xFDAA },
  39224. -{ 0xFDAB, 0xFDAB, 0xFDAB },
  39225. -{ 0xFDAC, 0xFDAC, 0xFDAC },
  39226. -{ 0xFDAD, 0xFDAD, 0xFDAD },
  39227. -{ 0xFDAE, 0xFDAE, 0xFDAE },
  39228. -{ 0xFDAF, 0xFDAF, 0xFDAF },
  39229. -{ 0xFDB0, 0xFDB0, 0xFDB0 },
  39230. -{ 0xFDB1, 0xFDB1, 0xFDB1 },
  39231. -{ 0xFDB2, 0xFDB2, 0xFDB2 },
  39232. -{ 0xFDB3, 0xFDB3, 0xFDB3 },
  39233. -{ 0xFDB4, 0xFDB4, 0xFDB4 },
  39234. -{ 0xFDB5, 0xFDB5, 0xFDB5 },
  39235. -{ 0xFDB6, 0xFDB6, 0xFDB6 },
  39236. -{ 0xFDB7, 0xFDB7, 0xFDB7 },
  39237. -{ 0xFDB8, 0xFDB8, 0xFDB8 },
  39238. -{ 0xFDB9, 0xFDB9, 0xFDB9 },
  39239. -{ 0xFDBA, 0xFDBA, 0xFDBA },
  39240. -{ 0xFDBB, 0xFDBB, 0xFDBB },
  39241. -{ 0xFDBC, 0xFDBC, 0xFDBC },
  39242. -{ 0xFDBD, 0xFDBD, 0xFDBD },
  39243. -{ 0xFDBE, 0xFDBE, 0xFDBE },
  39244. -{ 0xFDBF, 0xFDBF, 0xFDBF },
  39245. -{ 0xFDC0, 0xFDC0, 0xFDC0 },
  39246. -{ 0xFDC1, 0xFDC1, 0xFDC1 },
  39247. -{ 0xFDC2, 0xFDC2, 0xFDC2 },
  39248. -{ 0xFDC3, 0xFDC3, 0xFDC3 },
  39249. -{ 0xFDC4, 0xFDC4, 0xFDC4 },
  39250. -{ 0xFDC5, 0xFDC5, 0xFDC5 },
  39251. -{ 0xFDC6, 0xFDC6, 0xFDC6 },
  39252. -{ 0xFDC7, 0xFDC7, 0xFDC7 },
  39253. -{ 0xFDF0, 0xFDF0, 0xFDF0 },
  39254. -{ 0xFDF1, 0xFDF1, 0xFDF1 },
  39255. -{ 0xFDF2, 0xFDF2, 0xFDF2 },
  39256. -{ 0xFDF3, 0xFDF3, 0xFDF3 },
  39257. -{ 0xFDF4, 0xFDF4, 0xFDF4 },
  39258. -{ 0xFDF5, 0xFDF5, 0xFDF5 },
  39259. -{ 0xFDF6, 0xFDF6, 0xFDF6 },
  39260. -{ 0xFDF7, 0xFDF7, 0xFDF7 },
  39261. -{ 0xFDF8, 0xFDF8, 0xFDF8 },
  39262. -{ 0xFDF9, 0xFDF9, 0xFDF9 },
  39263. -{ 0xFDFA, 0xFDFA, 0xFDFA },
  39264. -{ 0xFDFB, 0xFDFB, 0xFDFB },
  39265. -{ 0xFE00, 0xFE00, 0xFE00 },
  39266. -{ 0xFE01, 0xFE01, 0xFE01 },
  39267. -{ 0xFE02, 0xFE02, 0xFE02 },
  39268. -{ 0xFE03, 0xFE03, 0xFE03 },
  39269. -{ 0xFE04, 0xFE04, 0xFE04 },
  39270. -{ 0xFE05, 0xFE05, 0xFE05 },
  39271. -{ 0xFE06, 0xFE06, 0xFE06 },
  39272. -{ 0xFE07, 0xFE07, 0xFE07 },
  39273. -{ 0xFE08, 0xFE08, 0xFE08 },
  39274. -{ 0xFE09, 0xFE09, 0xFE09 },
  39275. -{ 0xFE0A, 0xFE0A, 0xFE0A },
  39276. -{ 0xFE0B, 0xFE0B, 0xFE0B },
  39277. -{ 0xFE0C, 0xFE0C, 0xFE0C },
  39278. -{ 0xFE0D, 0xFE0D, 0xFE0D },
  39279. -{ 0xFE0E, 0xFE0E, 0xFE0E },
  39280. -{ 0xFE0F, 0xFE0F, 0xFE0F },
  39281. -{ 0xFE20, 0xFE20, 0xFE20 },
  39282. -{ 0xFE21, 0xFE21, 0xFE21 },
  39283. -{ 0xFE22, 0xFE22, 0xFE22 },
  39284. -{ 0xFE23, 0xFE23, 0xFE23 },
  39285. -{ 0xFE70, 0xFE70, 0xFE70 },
  39286. -{ 0xFE71, 0xFE71, 0xFE71 },
  39287. -{ 0xFE72, 0xFE72, 0xFE72 },
  39288. -{ 0xFE73, 0xFE73, 0xFE73 },
  39289. -{ 0xFE74, 0xFE74, 0xFE74 },
  39290. -{ 0xFE76, 0xFE76, 0xFE76 },
  39291. -{ 0xFE77, 0xFE77, 0xFE77 },
  39292. -{ 0xFE78, 0xFE78, 0xFE78 },
  39293. -{ 0xFE79, 0xFE79, 0xFE79 },
  39294. -{ 0xFE7A, 0xFE7A, 0xFE7A },
  39295. -{ 0xFE7B, 0xFE7B, 0xFE7B },
  39296. -{ 0xFE7C, 0xFE7C, 0xFE7C },
  39297. -{ 0xFE7D, 0xFE7D, 0xFE7D },
  39298. -{ 0xFE7E, 0xFE7E, 0xFE7E },
  39299. -{ 0xFE7F, 0xFE7F, 0xFE7F },
  39300. -{ 0xFE80, 0xFE80, 0xFE80 },
  39301. -{ 0xFE81, 0xFE81, 0xFE81 },
  39302. -{ 0xFE82, 0xFE82, 0xFE82 },
  39303. -{ 0xFE83, 0xFE83, 0xFE83 },
  39304. -{ 0xFE84, 0xFE84, 0xFE84 },
  39305. -{ 0xFE85, 0xFE85, 0xFE85 },
  39306. -{ 0xFE86, 0xFE86, 0xFE86 },
  39307. -{ 0xFE87, 0xFE87, 0xFE87 },
  39308. -{ 0xFE88, 0xFE88, 0xFE88 },
  39309. -{ 0xFE89, 0xFE89, 0xFE89 },
  39310. -{ 0xFE8A, 0xFE8A, 0xFE8A },
  39311. -{ 0xFE8B, 0xFE8B, 0xFE8B },
  39312. -{ 0xFE8C, 0xFE8C, 0xFE8C },
  39313. -{ 0xFE8D, 0xFE8D, 0xFE8D },
  39314. -{ 0xFE8E, 0xFE8E, 0xFE8E },
  39315. -{ 0xFE8F, 0xFE8F, 0xFE8F },
  39316. -{ 0xFE90, 0xFE90, 0xFE90 },
  39317. -{ 0xFE91, 0xFE91, 0xFE91 },
  39318. -{ 0xFE92, 0xFE92, 0xFE92 },
  39319. -{ 0xFE93, 0xFE93, 0xFE93 },
  39320. -{ 0xFE94, 0xFE94, 0xFE94 },
  39321. -{ 0xFE95, 0xFE95, 0xFE95 },
  39322. -{ 0xFE96, 0xFE96, 0xFE96 },
  39323. -{ 0xFE97, 0xFE97, 0xFE97 },
  39324. -{ 0xFE98, 0xFE98, 0xFE98 },
  39325. -{ 0xFE99, 0xFE99, 0xFE99 },
  39326. -{ 0xFE9A, 0xFE9A, 0xFE9A },
  39327. -{ 0xFE9B, 0xFE9B, 0xFE9B },
  39328. -{ 0xFE9C, 0xFE9C, 0xFE9C },
  39329. -{ 0xFE9D, 0xFE9D, 0xFE9D },
  39330. -{ 0xFE9E, 0xFE9E, 0xFE9E },
  39331. -{ 0xFE9F, 0xFE9F, 0xFE9F },
  39332. -{ 0xFEA0, 0xFEA0, 0xFEA0 },
  39333. -{ 0xFEA1, 0xFEA1, 0xFEA1 },
  39334. -{ 0xFEA2, 0xFEA2, 0xFEA2 },
  39335. -{ 0xFEA3, 0xFEA3, 0xFEA3 },
  39336. -{ 0xFEA4, 0xFEA4, 0xFEA4 },
  39337. -{ 0xFEA5, 0xFEA5, 0xFEA5 },
  39338. -{ 0xFEA6, 0xFEA6, 0xFEA6 },
  39339. -{ 0xFEA7, 0xFEA7, 0xFEA7 },
  39340. -{ 0xFEA8, 0xFEA8, 0xFEA8 },
  39341. -{ 0xFEA9, 0xFEA9, 0xFEA9 },
  39342. -{ 0xFEAA, 0xFEAA, 0xFEAA },
  39343. -{ 0xFEAB, 0xFEAB, 0xFEAB },
  39344. -{ 0xFEAC, 0xFEAC, 0xFEAC },
  39345. -{ 0xFEAD, 0xFEAD, 0xFEAD },
  39346. -{ 0xFEAE, 0xFEAE, 0xFEAE },
  39347. -{ 0xFEAF, 0xFEAF, 0xFEAF },
  39348. -{ 0xFEB0, 0xFEB0, 0xFEB0 },
  39349. -{ 0xFEB1, 0xFEB1, 0xFEB1 },
  39350. -{ 0xFEB2, 0xFEB2, 0xFEB2 },
  39351. -{ 0xFEB3, 0xFEB3, 0xFEB3 },
  39352. -{ 0xFEB4, 0xFEB4, 0xFEB4 },
  39353. -{ 0xFEB5, 0xFEB5, 0xFEB5 },
  39354. -{ 0xFEB6, 0xFEB6, 0xFEB6 },
  39355. -{ 0xFEB7, 0xFEB7, 0xFEB7 },
  39356. -{ 0xFEB8, 0xFEB8, 0xFEB8 },
  39357. -{ 0xFEB9, 0xFEB9, 0xFEB9 },
  39358. -{ 0xFEBA, 0xFEBA, 0xFEBA },
  39359. -{ 0xFEBB, 0xFEBB, 0xFEBB },
  39360. -{ 0xFEBC, 0xFEBC, 0xFEBC },
  39361. -{ 0xFEBD, 0xFEBD, 0xFEBD },
  39362. -{ 0xFEBE, 0xFEBE, 0xFEBE },
  39363. -{ 0xFEBF, 0xFEBF, 0xFEBF },
  39364. -{ 0xFEC0, 0xFEC0, 0xFEC0 },
  39365. -{ 0xFEC1, 0xFEC1, 0xFEC1 },
  39366. -{ 0xFEC2, 0xFEC2, 0xFEC2 },
  39367. -{ 0xFEC3, 0xFEC3, 0xFEC3 },
  39368. -{ 0xFEC4, 0xFEC4, 0xFEC4 },
  39369. -{ 0xFEC5, 0xFEC5, 0xFEC5 },
  39370. -{ 0xFEC6, 0xFEC6, 0xFEC6 },
  39371. -{ 0xFEC7, 0xFEC7, 0xFEC7 },
  39372. -{ 0xFEC8, 0xFEC8, 0xFEC8 },
  39373. -{ 0xFEC9, 0xFEC9, 0xFEC9 },
  39374. -{ 0xFECA, 0xFECA, 0xFECA },
  39375. -{ 0xFECB, 0xFECB, 0xFECB },
  39376. -{ 0xFECC, 0xFECC, 0xFECC },
  39377. -{ 0xFECD, 0xFECD, 0xFECD },
  39378. -{ 0xFECE, 0xFECE, 0xFECE },
  39379. -{ 0xFECF, 0xFECF, 0xFECF },
  39380. -{ 0xFED0, 0xFED0, 0xFED0 },
  39381. -{ 0xFED1, 0xFED1, 0xFED1 },
  39382. -{ 0xFED2, 0xFED2, 0xFED2 },
  39383. -{ 0xFED3, 0xFED3, 0xFED3 },
  39384. -{ 0xFED4, 0xFED4, 0xFED4 },
  39385. -{ 0xFED5, 0xFED5, 0xFED5 },
  39386. -{ 0xFED6, 0xFED6, 0xFED6 },
  39387. -{ 0xFED7, 0xFED7, 0xFED7 },
  39388. -{ 0xFED8, 0xFED8, 0xFED8 },
  39389. -{ 0xFED9, 0xFED9, 0xFED9 },
  39390. -{ 0xFEDA, 0xFEDA, 0xFEDA },
  39391. -{ 0xFEDB, 0xFEDB, 0xFEDB },
  39392. -{ 0xFEDC, 0xFEDC, 0xFEDC },
  39393. -{ 0xFEDD, 0xFEDD, 0xFEDD },
  39394. -{ 0xFEDE, 0xFEDE, 0xFEDE },
  39395. -{ 0xFEDF, 0xFEDF, 0xFEDF },
  39396. -{ 0xFEE0, 0xFEE0, 0xFEE0 },
  39397. -{ 0xFEE1, 0xFEE1, 0xFEE1 },
  39398. -{ 0xFEE2, 0xFEE2, 0xFEE2 },
  39399. -{ 0xFEE3, 0xFEE3, 0xFEE3 },
  39400. -{ 0xFEE4, 0xFEE4, 0xFEE4 },
  39401. -{ 0xFEE5, 0xFEE5, 0xFEE5 },
  39402. -{ 0xFEE6, 0xFEE6, 0xFEE6 },
  39403. -{ 0xFEE7, 0xFEE7, 0xFEE7 },
  39404. -{ 0xFEE8, 0xFEE8, 0xFEE8 },
  39405. -{ 0xFEE9, 0xFEE9, 0xFEE9 },
  39406. -{ 0xFEEA, 0xFEEA, 0xFEEA },
  39407. -{ 0xFEEB, 0xFEEB, 0xFEEB },
  39408. -{ 0xFEEC, 0xFEEC, 0xFEEC },
  39409. -{ 0xFEED, 0xFEED, 0xFEED },
  39410. -{ 0xFEEE, 0xFEEE, 0xFEEE },
  39411. -{ 0xFEEF, 0xFEEF, 0xFEEF },
  39412. -{ 0xFEF0, 0xFEF0, 0xFEF0 },
  39413. -{ 0xFEF1, 0xFEF1, 0xFEF1 },
  39414. -{ 0xFEF2, 0xFEF2, 0xFEF2 },
  39415. -{ 0xFEF3, 0xFEF3, 0xFEF3 },
  39416. -{ 0xFEF4, 0xFEF4, 0xFEF4 },
  39417. -{ 0xFEF5, 0xFEF5, 0xFEF5 },
  39418. -{ 0xFEF6, 0xFEF6, 0xFEF6 },
  39419. -{ 0xFEF7, 0xFEF7, 0xFEF7 },
  39420. -{ 0xFEF8, 0xFEF8, 0xFEF8 },
  39421. -{ 0xFEF9, 0xFEF9, 0xFEF9 },
  39422. -{ 0xFEFA, 0xFEFA, 0xFEFA },
  39423. -{ 0xFEFB, 0xFEFB, 0xFEFB },
  39424. -{ 0xFEFC, 0xFEFC, 0xFEFC },
  39425. -{ 0xFF21, 0xFF21, 0xFF41 },
  39426. -{ 0xFF22, 0xFF22, 0xFF42 },
  39427. -{ 0xFF23, 0xFF23, 0xFF43 },
  39428. -{ 0xFF24, 0xFF24, 0xFF44 },
  39429. -{ 0xFF25, 0xFF25, 0xFF45 },
  39430. -{ 0xFF26, 0xFF26, 0xFF46 },
  39431. -{ 0xFF27, 0xFF27, 0xFF47 },
  39432. -{ 0xFF28, 0xFF28, 0xFF48 },
  39433. -{ 0xFF29, 0xFF29, 0xFF49 },
  39434. -{ 0xFF2A, 0xFF2A, 0xFF4A },
  39435. -{ 0xFF2B, 0xFF2B, 0xFF4B },
  39436. -{ 0xFF2C, 0xFF2C, 0xFF4C },
  39437. -{ 0xFF2D, 0xFF2D, 0xFF4D },
  39438. -{ 0xFF2E, 0xFF2E, 0xFF4E },
  39439. -{ 0xFF2F, 0xFF2F, 0xFF4F },
  39440. -{ 0xFF30, 0xFF30, 0xFF50 },
  39441. -{ 0xFF31, 0xFF31, 0xFF51 },
  39442. -{ 0xFF32, 0xFF32, 0xFF52 },
  39443. -{ 0xFF33, 0xFF33, 0xFF53 },
  39444. -{ 0xFF34, 0xFF34, 0xFF54 },
  39445. -{ 0xFF35, 0xFF35, 0xFF55 },
  39446. -{ 0xFF36, 0xFF36, 0xFF56 },
  39447. -{ 0xFF37, 0xFF37, 0xFF57 },
  39448. -{ 0xFF38, 0xFF38, 0xFF58 },
  39449. -{ 0xFF39, 0xFF39, 0xFF59 },
  39450. -{ 0xFF3A, 0xFF3A, 0xFF5A },
  39451. -{ 0xFF41, 0xFF21, 0xFF41 },
  39452. -{ 0xFF42, 0xFF22, 0xFF42 },
  39453. -{ 0xFF43, 0xFF23, 0xFF43 },
  39454. -{ 0xFF44, 0xFF24, 0xFF44 },
  39455. -{ 0xFF45, 0xFF25, 0xFF45 },
  39456. -{ 0xFF46, 0xFF26, 0xFF46 },
  39457. -{ 0xFF47, 0xFF27, 0xFF47 },
  39458. -{ 0xFF48, 0xFF28, 0xFF48 },
  39459. -{ 0xFF49, 0xFF29, 0xFF49 },
  39460. -{ 0xFF4A, 0xFF2A, 0xFF4A },
  39461. -{ 0xFF4B, 0xFF2B, 0xFF4B },
  39462. -{ 0xFF4C, 0xFF2C, 0xFF4C },
  39463. -{ 0xFF4D, 0xFF2D, 0xFF4D },
  39464. -{ 0xFF4E, 0xFF2E, 0xFF4E },
  39465. -{ 0xFF4F, 0xFF2F, 0xFF4F },
  39466. -{ 0xFF50, 0xFF30, 0xFF50 },
  39467. -{ 0xFF51, 0xFF31, 0xFF51 },
  39468. -{ 0xFF52, 0xFF32, 0xFF52 },
  39469. -{ 0xFF53, 0xFF33, 0xFF53 },
  39470. -{ 0xFF54, 0xFF34, 0xFF54 },
  39471. -{ 0xFF55, 0xFF35, 0xFF55 },
  39472. -{ 0xFF56, 0xFF36, 0xFF56 },
  39473. -{ 0xFF57, 0xFF37, 0xFF57 },
  39474. -{ 0xFF58, 0xFF38, 0xFF58 },
  39475. -{ 0xFF59, 0xFF39, 0xFF59 },
  39476. -{ 0xFF5A, 0xFF3A, 0xFF5A },
  39477. -{ 0xFF66, 0xFF66, 0xFF66 },
  39478. -{ 0xFF67, 0xFF67, 0xFF67 },
  39479. -{ 0xFF68, 0xFF68, 0xFF68 },
  39480. -{ 0xFF69, 0xFF69, 0xFF69 },
  39481. -{ 0xFF6A, 0xFF6A, 0xFF6A },
  39482. -{ 0xFF6B, 0xFF6B, 0xFF6B },
  39483. -{ 0xFF6C, 0xFF6C, 0xFF6C },
  39484. -{ 0xFF6D, 0xFF6D, 0xFF6D },
  39485. -{ 0xFF6E, 0xFF6E, 0xFF6E },
  39486. -{ 0xFF6F, 0xFF6F, 0xFF6F },
  39487. -{ 0xFF70, 0xFF70, 0xFF70 },
  39488. -{ 0xFF71, 0xFF71, 0xFF71 },
  39489. -{ 0xFF72, 0xFF72, 0xFF72 },
  39490. -{ 0xFF73, 0xFF73, 0xFF73 },
  39491. -{ 0xFF74, 0xFF74, 0xFF74 },
  39492. -{ 0xFF75, 0xFF75, 0xFF75 },
  39493. -{ 0xFF76, 0xFF76, 0xFF76 },
  39494. -{ 0xFF77, 0xFF77, 0xFF77 },
  39495. -{ 0xFF78, 0xFF78, 0xFF78 },
  39496. -{ 0xFF79, 0xFF79, 0xFF79 },
  39497. -{ 0xFF7A, 0xFF7A, 0xFF7A },
  39498. -{ 0xFF7B, 0xFF7B, 0xFF7B },
  39499. -{ 0xFF7C, 0xFF7C, 0xFF7C },
  39500. -{ 0xFF7D, 0xFF7D, 0xFF7D },
  39501. -{ 0xFF7E, 0xFF7E, 0xFF7E },
  39502. -{ 0xFF7F, 0xFF7F, 0xFF7F },
  39503. -{ 0xFF80, 0xFF80, 0xFF80 },
  39504. -{ 0xFF81, 0xFF81, 0xFF81 },
  39505. -{ 0xFF82, 0xFF82, 0xFF82 },
  39506. -{ 0xFF83, 0xFF83, 0xFF83 },
  39507. -{ 0xFF84, 0xFF84, 0xFF84 },
  39508. -{ 0xFF85, 0xFF85, 0xFF85 },
  39509. -{ 0xFF86, 0xFF86, 0xFF86 },
  39510. -{ 0xFF87, 0xFF87, 0xFF87 },
  39511. -{ 0xFF88, 0xFF88, 0xFF88 },
  39512. -{ 0xFF89, 0xFF89, 0xFF89 },
  39513. -{ 0xFF8A, 0xFF8A, 0xFF8A },
  39514. -{ 0xFF8B, 0xFF8B, 0xFF8B },
  39515. -{ 0xFF8C, 0xFF8C, 0xFF8C },
  39516. -{ 0xFF8D, 0xFF8D, 0xFF8D },
  39517. -{ 0xFF8E, 0xFF8E, 0xFF8E },
  39518. -{ 0xFF8F, 0xFF8F, 0xFF8F },
  39519. -{ 0xFF90, 0xFF90, 0xFF90 },
  39520. -{ 0xFF91, 0xFF91, 0xFF91 },
  39521. -{ 0xFF92, 0xFF92, 0xFF92 },
  39522. -{ 0xFF93, 0xFF93, 0xFF93 },
  39523. -{ 0xFF94, 0xFF94, 0xFF94 },
  39524. -{ 0xFF95, 0xFF95, 0xFF95 },
  39525. -{ 0xFF96, 0xFF96, 0xFF96 },
  39526. -{ 0xFF97, 0xFF97, 0xFF97 },
  39527. -{ 0xFF98, 0xFF98, 0xFF98 },
  39528. -{ 0xFF99, 0xFF99, 0xFF99 },
  39529. -{ 0xFF9A, 0xFF9A, 0xFF9A },
  39530. -{ 0xFF9B, 0xFF9B, 0xFF9B },
  39531. -{ 0xFF9C, 0xFF9C, 0xFF9C },
  39532. -{ 0xFF9D, 0xFF9D, 0xFF9D },
  39533. -{ 0xFF9E, 0xFF9E, 0xFF9E },
  39534. -{ 0xFF9F, 0xFF9F, 0xFF9F },
  39535. -{ 0xFFA0, 0xFFA0, 0xFFA0 },
  39536. -{ 0xFFA1, 0xFFA1, 0xFFA1 },
  39537. -{ 0xFFA2, 0xFFA2, 0xFFA2 },
  39538. -{ 0xFFA3, 0xFFA3, 0xFFA3 },
  39539. -{ 0xFFA4, 0xFFA4, 0xFFA4 },
  39540. -{ 0xFFA5, 0xFFA5, 0xFFA5 },
  39541. -{ 0xFFA6, 0xFFA6, 0xFFA6 },
  39542. -{ 0xFFA7, 0xFFA7, 0xFFA7 },
  39543. -{ 0xFFA8, 0xFFA8, 0xFFA8 },
  39544. -{ 0xFFA9, 0xFFA9, 0xFFA9 },
  39545. -{ 0xFFAA, 0xFFAA, 0xFFAA },
  39546. -{ 0xFFAB, 0xFFAB, 0xFFAB },
  39547. -{ 0xFFAC, 0xFFAC, 0xFFAC },
  39548. -{ 0xFFAD, 0xFFAD, 0xFFAD },
  39549. -{ 0xFFAE, 0xFFAE, 0xFFAE },
  39550. -{ 0xFFAF, 0xFFAF, 0xFFAF },
  39551. -{ 0xFFB0, 0xFFB0, 0xFFB0 },
  39552. -{ 0xFFB1, 0xFFB1, 0xFFB1 },
  39553. -{ 0xFFB2, 0xFFB2, 0xFFB2 },
  39554. -{ 0xFFB3, 0xFFB3, 0xFFB3 },
  39555. -{ 0xFFB4, 0xFFB4, 0xFFB4 },
  39556. -{ 0xFFB5, 0xFFB5, 0xFFB5 },
  39557. -{ 0xFFB6, 0xFFB6, 0xFFB6 },
  39558. -{ 0xFFB7, 0xFFB7, 0xFFB7 },
  39559. -{ 0xFFB8, 0xFFB8, 0xFFB8 },
  39560. -{ 0xFFB9, 0xFFB9, 0xFFB9 },
  39561. -{ 0xFFBA, 0xFFBA, 0xFFBA },
  39562. -{ 0xFFBB, 0xFFBB, 0xFFBB },
  39563. -{ 0xFFBC, 0xFFBC, 0xFFBC },
  39564. -{ 0xFFBD, 0xFFBD, 0xFFBD },
  39565. -{ 0xFFBE, 0xFFBE, 0xFFBE },
  39566. -{ 0xFFC2, 0xFFC2, 0xFFC2 },
  39567. -{ 0xFFC3, 0xFFC3, 0xFFC3 },
  39568. -{ 0xFFC4, 0xFFC4, 0xFFC4 },
  39569. -{ 0xFFC5, 0xFFC5, 0xFFC5 },
  39570. -{ 0xFFC6, 0xFFC6, 0xFFC6 },
  39571. -{ 0xFFC7, 0xFFC7, 0xFFC7 },
  39572. -{ 0xFFCA, 0xFFCA, 0xFFCA },
  39573. -{ 0xFFCB, 0xFFCB, 0xFFCB },
  39574. -{ 0xFFCC, 0xFFCC, 0xFFCC },
  39575. -{ 0xFFCD, 0xFFCD, 0xFFCD },
  39576. -{ 0xFFCE, 0xFFCE, 0xFFCE },
  39577. -{ 0xFFCF, 0xFFCF, 0xFFCF },
  39578. -{ 0xFFD2, 0xFFD2, 0xFFD2 },
  39579. -{ 0xFFD3, 0xFFD3, 0xFFD3 },
  39580. -{ 0xFFD4, 0xFFD4, 0xFFD4 },
  39581. -{ 0xFFD5, 0xFFD5, 0xFFD5 },
  39582. -{ 0xFFD6, 0xFFD6, 0xFFD6 },
  39583. -{ 0xFFD7, 0xFFD7, 0xFFD7 },
  39584. -{ 0xFFDA, 0xFFDA, 0xFFDA },
  39585. -{ 0xFFDB, 0xFFDB, 0xFFDB },
  39586. -{ 0xFFDC, 0xFFDC, 0xFFDC }
  39587. -};
  39588. diff --git a/src/hunspell/w_char.hxx b/src/hunspell/w_char.hxx
  39589. deleted file mode 100644
  39590. index 3719dd3b77..0000000000
  39591. --- a/src/hunspell/w_char.hxx
  39592. +++ /dev/null
  39593. @@ -1,21 +0,0 @@
  39594. -#ifndef __WCHARHXX__
  39595. -#define __WCHARHXX__
  39596. -
  39597. -#ifndef GCC
  39598. -typedef struct {
  39599. -#else
  39600. -typedef struct __attribute__ ((packed)) {
  39601. -#endif
  39602. - unsigned char l;
  39603. - unsigned char h;
  39604. -} w_char;
  39605. -
  39606. -// two character arrays
  39607. -struct replentry {
  39608. - char * pattern;
  39609. - char * pattern2;
  39610. - bool start;
  39611. - bool end;
  39612. -};
  39613. -
  39614. -#endif