diff options
author | cvs2svn <cvs2svn@FreeBSD.org> | 1999-05-24 16:47:10 +0000 |
---|---|---|
committer | cvs2svn <cvs2svn@FreeBSD.org> | 1999-05-24 16:47:10 +0000 |
commit | c37538200ebdef38051ba82b76e6b2dab3bd2fdc (patch) | |
tree | 3c937e1c39e039ed95d3b8ead3defc46cf60cc04 | |
parent | a21d905bae94bc358756957b1c26e2ec3f487e82 (diff) |
This commit was manufactured by cvs2svn to create tagrelease/3.2.0
'RELENG_3_2_0_RELEASE'.
Notes
Notes:
svn path=/stable/3/; revision=47462
svn path=/release/3.2.0/; revision=47463; tag=release/3.2.0
70 files changed, 2138 insertions, 29499 deletions
diff --git a/contrib/groff/tmac/doc-common b/contrib/groff/tmac/doc-common index 1e8724fc5a58..2797fc3d72a0 100644 --- a/contrib/groff/tmac/doc-common +++ b/contrib/groff/tmac/doc-common @@ -230,6 +230,10 @@ .if "\\$1"FreeBSD" \{\ . if "\\$2"2" .ds oS FreeBSD 2.0 . ie \\n(.$==1 \c +. el .ie "\\$2"1.0" \c +. el .ie "\\$2"1.1" \c +. el .ie "\\$2"1.1.5" \c +. el .ie "\\$2"1.1.5.1" \c . el .ie "\\$2"2" \c . el .ie "\\$2"2.0" \c . el .ie "\\$2"2.0.5" \c @@ -238,12 +242,15 @@ . el .ie "\\$2"2.1.6" \c . el .ie "\\$2"2.1.7" \c . el .ie "\\$2"2.2" \c +. el .ie "\\$2"2.2.1" \c +. el .ie "\\$2"2.2.2" \c . el .ie "\\$2"2.2.5" \c . el .ie "\\$2"2.2.6" \c . el .ie "\\$2"2.2.7" \c . el .ie "\\$2"2.2.8" \c . el .ie "\\$2"3.0" \c . el .ie "\\$2"3.1" \c +. el .ie "\\$2"3.2" \c . el .ie "\\$2"4.0" \c . el .tm Unknown FreeBSD version ``\\$2'' at line \\n(c. .\} diff --git a/contrib/groff/tmac/doc-syms b/contrib/groff/tmac/doc-syms index c3cd7c50bd7c..a1b216397c91 100644 --- a/contrib/groff/tmac/doc-syms +++ b/contrib/groff/tmac/doc-syms @@ -171,6 +171,7 @@ .el .ie "\\$1"2.2.8" \c .el .ie "\\$1"3.0" \c .el .ie "\\$1"3.1" \c +.el .ie "\\$1"3.2" \c .el .ie "\\$1"4.0" \c .el .ie "\\$1"," .rm ab \" Allow ".Fx ," .el .ie "\\$1"." .rm ab \" Allow ".Fx ." diff --git a/contrib/groff/tmac/hyphen.us-ru b/contrib/groff/tmac/hyphen.us-ru deleted file mode 100644 index 3ccef48465fe..000000000000 --- a/contrib/groff/tmac/hyphen.us-ru +++ /dev/null @@ -1,4833 +0,0 @@ -% Hyphenation patterns for US English and Russian (koi8-r). -% These are the standard Plain TeX hyphenation patterns (in hyphen.tex). -.ach4 -.ad4der -.af1t -.al3t -.am5at -.an5c -.ang4 -.ani5m -.ant4 -.an3te -.anti5s -.ar5s -.ar4tie -.ar4ty -.as3c -.as1p -.as1s -.aster5 -.atom5 -.au1d -.av4i -.awn4 -.ba4g -.ba5na -.bas4e -.ber4 -.be5ra -.be3sm -.be5sto -.bri2 -.but4ti -.cam4pe -.can5c -.capa5b -.car5ol -.ca4t -.ce4la -.ch4 -.chill5i -.ci2 -.cit5r -.co3e -.co4r -.cor5ner -.de4moi -.de3o -.de3ra -.de3ri -.des4c -.dictio5 -.do4t -.du4c -.dumb5 -.earth5 -.eas3i -.eb4 -.eer4 -.eg2 -.el5d -.el3em -.enam3 -.en3g -.en3s -.eq5ui5t -.er4ri -.es3 -.eu3 -.eye5 -.fes3 -.for5mer -.ga2 -.ge2 -.gen3t4 -.ge5og -.gi5a -.gi4b -.go4r -.hand5i -.han5k -.he2 -.hero5i -.hes3 -.het3 -.hi3b -.hi3er -.hon5ey -.hon3o -.hov5 -.id4l -.idol3 -.im3m -.im5pin -.in1 -.in3ci -.ine2 -.in2k -.in3s -.ir5r -.is4i -.ju3r -.la4cy -.la4m -.lat5er -.lath5 -.le2 -.leg5e -.len4 -.lep5 -.lev1 -.li4g -.lig5a -.li2n -.li3o -.li4t -.mag5a5 -.mal5o -.man5a -.mar5ti -.me2 -.mer3c -.me5ter -.mis1 -.mist5i -.mon3e -.mo3ro -.mu5ta -.muta5b -.ni4c -.od2 -.odd5 -.of5te -.or5ato -.or3c -.or1d -.or3t -.os3 -.os4tl -.oth3 -.out3 -.ped5al -.pe5te -.pe5tit -.pi4e -.pio5n -.pi2t -.pre3m -.ra4c -.ran4t -.ratio5na -.ree2 -.re5mit -.res2 -.re5stat -.ri4g -.rit5u -.ro4q -.ros5t -.row5d -.ru4d -.sci3e -.self5 -.sell5 -.se2n -.se5rie -.sh2 -.si2 -.sing4 -.st4 -.sta5bl -.sy2 -.ta4 -.te4 -.ten5an -.th2 -.ti2 -.til4 -.tim5o5 -.ting4 -.tin5k -.ton4a -.to4p -.top5i -.tou5s -.trib5ut -.un1a -.un3ce -.under5 -.un1e -.un5k -.un5o -.un3u -.up3 -.ure3 -.us5a -.ven4de -.ve5ra -.wil5i -.ye4 -4ab. -a5bal -a5ban -abe2 -ab5erd -abi5a -ab5it5ab -ab5lat -ab5o5liz -4abr -ab5rog -ab3ul -a4car -ac5ard -ac5aro -a5ceou -ac1er -a5chet -4a2ci -a3cie -ac1in -a3cio -ac5rob -act5if -ac3ul -ac4um -a2d -ad4din -ad5er. -2adi -a3dia -ad3ica -adi4er -a3dio -a3dit -a5diu -ad4le -ad3ow -ad5ran -ad4su -4adu -a3duc -ad5um -ae4r -aeri4e -a2f -aff4 -a4gab -aga4n -ag5ell -age4o -4ageu -ag1i -4ag4l -ag1n -a2go -3agog -ag3oni -a5guer -ag5ul -a4gy -a3ha -a3he -ah4l -a3ho -ai2 -a5ia -a3ic. -ai5ly -a4i4n -ain5in -ain5o -ait5en -a1j -ak1en -al5ab -al3ad -a4lar -4aldi -2ale -al3end -a4lenti -a5le5o -al1i -al4ia. -ali4e -al5lev -4allic -4alm -a5log. -a4ly. -4alys -5a5lyst -5alyt -3alyz -4ama -am5ab -am3ag -ama5ra -am5asc -a4matis -a4m5ato -am5era -am3ic -am5if -am5ily -am1in -ami4no -a2mo -a5mon -amor5i -amp5en -a2n -an3age -3analy -a3nar -an3arc -anar4i -a3nati -4and -ande4s -an3dis -an1dl -an4dow -a5nee -a3nen -an5est. -a3neu -2ang -ang5ie -an1gl -a4n1ic -a3nies -an3i3f -an4ime -a5nimi -a5nine -an3io -a3nip -an3ish -an3it -a3niu -an4kli -5anniz -ano4 -an5ot -anoth5 -an2sa -an4sco -an4sn -an2sp -ans3po -an4st -an4sur -antal4 -an4tie -4anto -an2tr -an4tw -an3ua -an3ul -a5nur -4ao -apar4 -ap5at -ap5ero -a3pher -4aphi -a4pilla -ap5illar -ap3in -ap3ita -a3pitu -a2pl -apoc5 -ap5ola -apor5i -apos3t -aps5es -a3pu -aque5 -2a2r -ar3act -a5rade -ar5adis -ar3al -a5ramete -aran4g -ara3p -ar4at -a5ratio -ar5ativ -a5rau -ar5av4 -araw4 -arbal4 -ar4chan -ar5dine -ar4dr -ar5eas -a3ree -ar3ent -a5ress -ar4fi -ar4fl -ar1i -ar5ial -ar3ian -a3riet -ar4im -ar5inat -ar3io -ar2iz -ar2mi -ar5o5d -a5roni -a3roo -ar2p -ar3q -arre4 -ar4sa -ar2sh -4as. -as4ab -as3ant -ashi4 -a5sia. -a3sib -a3sic -5a5si4t -ask3i -as4l -a4soc -as5ph -as4sh -as3ten -as1tr -asur5a -a2ta -at3abl -at5ac -at3alo -at5ap -ate5c -at5ech -at3ego -at3en. -at3era -ater5n -a5terna -at3est -at5ev -4ath -ath5em -a5then -at4ho -ath5om -4ati. -a5tia -at5i5b -at1ic -at3if -ation5ar -at3itu -a4tog -a2tom -at5omiz -a4top -a4tos -a1tr -at5rop -at4sk -at4tag -at5te -at4th -a2tu -at5ua -at5ue -at3ul -at3ura -a2ty -au4b -augh3 -au3gu -au4l2 -aun5d -au3r -au5sib -aut5en -au1th -a2va -av3ag -a5van -ave4no -av3era -av5ern -av5ery -av1i -avi4er -av3ig -av5oc -a1vor -3away -aw3i -aw4ly -aws4 -ax4ic -ax4id -ay5al -aye4 -ays4 -azi4er -azz5i -5ba. -bad5ger -ba4ge -bal1a -ban5dag -ban4e -ban3i -barbi5 -bari4a -bas4si -1bat -ba4z -2b1b -b2be -b3ber -bbi4na -4b1d -4be. -beak4 -beat3 -4be2d -be3da -be3de -be3di -be3gi -be5gu -1bel -be1li -be3lo -4be5m -be5nig -be5nu -4bes4 -be3sp -be5str -3bet -bet5iz -be5tr -be3tw -be3w -be5yo -2bf -4b3h -bi2b -bi4d -3bie -bi5en -bi4er -2b3if -1bil -bi3liz -bina5r4 -bin4d -bi5net -bi3ogr -bi5ou -bi2t -3bi3tio -bi3tr -3bit5ua -b5itz -b1j -bk4 -b2l2 -blath5 -b4le. -blen4 -5blesp -b3lis -b4lo -blun4t -4b1m -4b3n -bne5g -3bod -bod3i -bo4e -bol3ic -bom4bi -bon4a -bon5at -3boo -5bor. -4b1ora -bor5d -5bore -5bori -5bos4 -b5ota -both5 -bo4to -bound3 -4bp -4brit -broth3 -2b5s2 -bsor4 -2bt -bt4l -b4to -b3tr -buf4fer -bu4ga -bu3li -bumi4 -bu4n -bunt4i -bu3re -bus5ie -buss4e -5bust -4buta -3butio -b5uto -b1v -4b5w -5by. -bys4 -1ca -cab3in -ca1bl -cach4 -ca5den -4cag4 -2c5ah -ca3lat -cal4la -call5in -4calo -can5d -can4e -can4ic -can5is -can3iz -can4ty -cany4 -ca5per -car5om -cast5er -cas5tig -4casy -ca4th -4cativ -cav5al -c3c -ccha5 -cci4a -ccompa5 -ccon4 -ccou3t -2ce. -4ced. -4ceden -3cei -5cel. -3cell -1cen -3cenc -2cen4e -4ceni -3cent -3cep -ce5ram -4cesa -3cessi -ces5si5b -ces5t -cet4 -c5e4ta -cew4 -2ch -4ch. -4ch3ab -5chanic -ch5a5nis -che2 -cheap3 -4ched -che5lo -3chemi -ch5ene -ch3er. -ch3ers -4ch1in -5chine. -ch5iness -5chini -5chio -3chit -chi2z -3cho2 -ch4ti -1ci -3cia -ci2a5b -cia5r -ci5c -4cier -5cific. -4cii -ci4la -3cili -2cim -2cin -c4ina -3cinat -cin3em -c1ing -c5ing. -5cino -cion4 -4cipe -ci3ph -4cipic -4cista -4cisti -2c1it -cit3iz -5ciz -ck1 -ck3i -1c4l4 -4clar -c5laratio -5clare -cle4m -4clic -clim4 -cly4 -c5n -1co -co5ag -coe2 -2cog -co4gr -coi4 -co3inc -col5i -5colo -col3or -com5er -con4a -c4one -con3g -con5t -co3pa -cop3ic -co4pl -4corb -coro3n -cos4e -cov1 -cove4 -cow5a -coz5e -co5zi -c1q -cras5t -5crat. -5cratic -cre3at -5cred -4c3reta -cre4v -cri2 -cri5f -c4rin -cris4 -5criti -cro4pl -crop5o -cros4e -cru4d -4c3s2 -2c1t -cta4b -ct5ang -c5tant -c2te -c3ter -c4ticu -ctim3i -ctu4r -c4tw -cud5 -c4uf -c4ui -cu5ity -5culi -cul4tis -3cultu -cu2ma -c3ume -cu4mi -3cun -cu3pi -cu5py -cur5a4b -cu5ria -1cus -cuss4i -3c4ut -cu4tie -4c5utiv -4cutr -1cy -cze4 -1d2a -5da. -2d3a4b -dach4 -4daf -2dag -da2m2 -dan3g -dard5 -dark5 -4dary -3dat -4dativ -4dato -5dav4 -dav5e -5day -d1b -d5c -d1d4 -2de. -deaf5 -deb5it -de4bon -decan4 -de4cil -de5com -2d1ed -4dee. -de5if -deli4e -del5i5q -de5lo -d4em -5dem. -3demic -dem5ic. -de5mil -de4mons -demor5 -1den -de4nar -de3no -denti5f -de3nu -de1p -de3pa -depi4 -de2pu -d3eq -d4erh -5derm -dern5iz -der5s -des2 -d2es. -de1sc -de2s5o -des3ti -de3str -de4su -de1t -de2to -de1v -dev3il -4dey -4d1f -d4ga -d3ge4t -dg1i -d2gy -d1h2 -5di. -1d4i3a -dia5b -di4cam -d4ice -3dict -3did -5di3en -d1if -di3ge -di4lato -d1in -1dina -3dine. -5dini -di5niz -1dio -dio5g -di4pl -dir2 -di1re -dirt5i -dis1 -5disi -d4is3t -d2iti -1di1v -d1j -d5k2 -4d5la -3dle. -3dled -3dles. -4dless -2d3lo -4d5lu -2dly -d1m -4d1n4 -1do -3do. -do5de -5doe -2d5of -d4og -do4la -doli4 -do5lor -dom5iz -do3nat -doni4 -doo3d -dop4p -d4or -3dos -4d5out -do4v -3dox -d1p -1dr -drag5on -4drai -dre4 -drea5r -5dren -dri4b -dril4 -dro4p -4drow -5drupli -4dry -2d1s2 -ds4p -d4sw -d4sy -d2th -1du -d1u1a -du2c -d1uca -duc5er -4duct. -4ducts -du5el -du4g -d3ule -dum4be -du4n -4dup -du4pe -d1v -d1w -d2y -5dyn -dy4se -dys5p -e1a4b -e3act -ead1 -ead5ie -ea4ge -ea5ger -ea4l -eal5er -eal3ou -eam3er -e5and -ear3a -ear4c -ear5es -ear4ic -ear4il -ear5k -ear2t -eart3e -ea5sp -e3ass -east3 -ea2t -eat5en -eath3i -e5atif -e4a3tu -ea2v -eav3en -eav5i -eav5o -2e1b -e4bel. -e4bels -e4ben -e4bit -e3br -e4cad -ecan5c -ecca5 -e1ce -ec5essa -ec2i -e4cib -ec5ificat -ec5ifie -ec5ify -ec3im -eci4t -e5cite -e4clam -e4clus -e2col -e4comm -e4compe -e4conc -e2cor -ec3ora -eco5ro -e1cr -e4crem -ec4tan -ec4te -e1cu -e4cul -ec3ula -2e2da -4ed3d -e4d1er -ede4s -4edi -e3dia -ed3ib -ed3ica -ed3im -ed1it -edi5z -4edo -e4dol -edon2 -e4dri -e4dul -ed5ulo -ee2c -eed3i -ee2f -eel3i -ee4ly -ee2m -ee4na -ee4p1 -ee2s4 -eest4 -ee4ty -e5ex -e1f -e4f3ere -1eff -e4fic -5efici -efil4 -e3fine -ef5i5nite -3efit -efor5es -e4fuse. -4egal -eger4 -eg5ib -eg4ic -eg5ing -e5git5 -eg5n -e4go. -e4gos -eg1ul -e5gur -5egy -e1h4 -eher4 -ei2 -e5ic -ei5d -eig2 -ei5gl -e3imb -e3inf -e1ing -e5inst -eir4d -eit3e -ei3th -e5ity -e1j -e4jud -ej5udi -eki4n -ek4la -e1la -e4la. -e4lac -elan4d -el5ativ -e4law -elaxa4 -e3lea -el5ebra -5elec -e4led -el3ega -e5len -e4l1er -e1les -el2f -el2i -e3libe -e4l5ic. -el3ica -e3lier -el5igib -e5lim -e4l3ing -e3lio -e2lis -el5ish -e3liv3 -4ella -el4lab -ello4 -e5loc -el5og -el3op. -el2sh -el4ta -e5lud -el5ug -e4mac -e4mag -e5man -em5ana -em5b -e1me -e2mel -e4met -em3ica -emi4e -em5igra -em1in2 -em5ine -em3i3ni -e4mis -em5ish -e5miss -em3iz -5emniz -emo4g -emoni5o -em3pi -e4mul -em5ula -emu3n -e3my -en5amo -e4nant -ench4er -en3dic -e5nea -e5nee -en3em -en5ero -en5esi -en5est -en3etr -e3new -en5ics -e5nie -e5nil -e3nio -en3ish -en3it -e5niu -5eniz -4enn -4eno -eno4g -e4nos -en3ov -en4sw -ent5age -4enthes -en3ua -en5uf -e3ny. -4en3z -e5of -eo2g -e4oi4 -e3ol -eop3ar -e1or -eo3re -eo5rol -eos4 -e4ot -eo4to -e5out -e5ow -e2pa -e3pai -ep5anc -e5pel -e3pent -ep5etitio -ephe4 -e4pli -e1po -e4prec -ep5reca -e4pred -ep3reh -e3pro -e4prob -ep4sh -ep5ti5b -e4put -ep5uta -e1q -equi3l -e4q3ui3s -er1a -era4b -4erand -er3ar -4erati. -2erb -er4bl -er3ch -er4che -2ere. -e3real -ere5co -ere3in -er5el. -er3emo -er5ena -er5ence -4erene -er3ent -ere4q -er5ess -er3est -eret4 -er1h -er1i -e1ria4 -5erick -e3rien -eri4er -er3ine -e1rio -4erit -er4iu -eri4v -e4riva -er3m4 -er4nis -4ernit -5erniz -er3no -2ero -er5ob -e5roc -ero4r -er1ou -er1s -er3set -ert3er -4ertl -er3tw -4eru -eru4t -5erwau -e1s4a -e4sage. -e4sages -es2c -e2sca -es5can -e3scr -es5cu -e1s2e -e2sec -es5ecr -es5enc -e4sert. -e4serts -e4serva -4esh -e3sha -esh5en -e1si -e2sic -e2sid -es5iden -es5igna -e2s5im -es4i4n -esis4te -esi4u -e5skin -es4mi -e2sol -es3olu -e2son -es5ona -e1sp -es3per -es5pira -es4pre -2ess -es4si4b -estan4 -es3tig -es5tim -4es2to -e3ston -2estr -e5stro -estruc5 -e2sur -es5urr -es4w -eta4b -eten4d -e3teo -ethod3 -et1ic -e5tide -etin4 -eti4no -e5tir -e5titio -et5itiv -4etn -et5ona -e3tra -e3tre -et3ric -et5rif -et3rog -et5ros -et3ua -et5ym -et5z -4eu -e5un -e3up -eu3ro -eus4 -eute4 -euti5l -eu5tr -eva2p5 -e2vas -ev5ast -e5vea -ev3ell -evel3o -e5veng -even4i -ev1er -e5verb -e1vi -ev3id -evi4l -e4vin -evi4v -e5voc -e5vu -e1wa -e4wag -e5wee -e3wh -ewil5 -ew3ing -e3wit -1exp -5eyc -5eye. -eys4 -1fa -fa3bl -fab3r -fa4ce -4fag -fain4 -fall5e -4fa4ma -fam5is -5far -far5th -fa3ta -fa3the -4fato -fault5 -4f5b -4fd -4fe. -feas4 -feath3 -fe4b -4feca -5fect -2fed -fe3li -fe4mo -fen2d -fend5e -fer1 -5ferr -fev4 -4f1f -f4fes -f4fie -f5fin. -f2f5is -f4fly -f2fy -4fh -1fi -fi3a -2f3ic. -4f3ical -f3ican -4ficate -f3icen -fi3cer -fic4i -5ficia -5ficie -4fics -fi3cu -fi5del -fight5 -fil5i -fill5in -4fily -2fin -5fina -fin2d5 -fi2ne -f1in3g -fin4n -fis4ti -f4l2 -f5less -flin4 -flo3re -f2ly5 -4fm -4fn -1fo -5fon -fon4de -fon4t -fo2r -fo5rat -for5ay -fore5t -for4i -fort5a -fos5 -4f5p -fra4t -f5rea -fres5c -fri2 -fril4 -frol5 -2f3s -2ft -f4to -f2ty -3fu -fu5el -4fug -fu4min -fu5ne -fu3ri -fusi4 -fus4s -4futa -1fy -1ga -gaf4 -5gal. -3gali -ga3lo -2gam -ga5met -g5amo -gan5is -ga3niz -gani5za -4gano -gar5n4 -gass4 -gath3 -4gativ -4gaz -g3b -gd4 -2ge. -2ged -geez4 -gel4in -ge5lis -ge5liz -4gely -1gen -ge4nat -ge5niz -4geno -4geny -1geo -ge3om -g4ery -5gesi -geth5 -4geto -ge4ty -ge4v -4g1g2 -g2ge -g3ger -gglu5 -ggo4 -gh3in -gh5out -gh4to -5gi. -1gi4a -gia5r -g1ic -5gicia -g4ico -gien5 -5gies. -gil4 -g3imen -3g4in. -gin5ge -5g4ins -5gio -3gir -gir4l -g3isl -gi4u -5giv -3giz -gl2 -gla4 -glad5i -5glas -1gle -gli4b -g3lig -3glo -glo3r -g1m -g4my -gn4a -g4na. -gnet4t -g1ni -g2nin -g4nio -g1no -g4non -1go -3go. -gob5 -5goe -3g4o4g -go3is -gon2 -4g3o3na -gondo5 -go3ni -5goo -go5riz -gor5ou -5gos. -gov1 -g3p -1gr -4grada -g4rai -gran2 -5graph. -g5rapher -5graphic -4graphy -4gray -gre4n -4gress. -4grit -g4ro -gruf4 -gs2 -g5ste -gth3 -gu4a -3guard -2gue -5gui5t -3gun -3gus -4gu4t -g3w -1gy -2g5y3n -gy5ra -h3ab4l -hach4 -hae4m -hae4t -h5agu -ha3la -hala3m -ha4m -han4ci -han4cy -5hand. -han4g -hang5er -hang5o -h5a5niz -han4k -han4te -hap3l -hap5t -ha3ran -ha5ras -har2d -hard3e -har4le -harp5en -har5ter -has5s -haun4 -5haz -haz3a -h1b -1head -3hear -he4can -h5ecat -h4ed -he5do5 -he3l4i -hel4lis -hel4ly -h5elo -hem4p -he2n -hena4 -hen5at -heo5r -hep5 -h4era -hera3p -her4ba -here5a -h3ern -h5erou -h3ery -h1es -he2s5p -he4t -het4ed -heu4 -h1f -h1h -hi5an -hi4co -high5 -h4il2 -himer4 -h4ina -hion4e -hi4p -hir4l -hi3ro -hir4p -hir4r -his3el -his4s -hith5er -hi2v -4hk -4h1l4 -hlan4 -h2lo -hlo3ri -4h1m -hmet4 -2h1n -h5odiz -h5ods -ho4g -hoge4 -hol5ar -3hol4e -ho4ma -home3 -hon4a -ho5ny -3hood -hoon4 -hor5at -ho5ris -hort3e -ho5ru -hos4e -ho5sen -hos1p -1hous -house3 -hov5el -4h5p -4hr4 -hree5 -hro5niz -hro3po -4h1s2 -h4sh -h4tar -ht1en -ht5es -h4ty -hu4g -hu4min -hun5ke -hun4t -hus3t4 -hu4t -h1w -h4wart -hy3pe -hy3ph -hy2s -2i1a -i2al -iam4 -iam5ete -i2an -4ianc -ian3i -4ian4t -ia5pe -iass4 -i4ativ -ia4tric -i4atu -ibe4 -ib3era -ib5ert -ib5ia -ib3in -ib5it. -ib5ite -i1bl -ib3li -i5bo -i1br -i2b5ri -i5bun -4icam -5icap -4icar -i4car. -i4cara -icas5 -i4cay -iccu4 -4iceo -4ich -2ici -i5cid -ic5ina -i2cip -ic3ipa -i4cly -i2c5oc -4i1cr -5icra -i4cry -ic4te -ictu2 -ic4t3ua -ic3ula -ic4um -ic5uo -i3cur -2id -i4dai -id5anc -id5d -ide3al -ide4s -i2di -id5ian -idi4ar -i5die -id3io -idi5ou -id1it -id5iu -i3dle -i4dom -id3ow -i4dr -i2du -id5uo -2ie4 -ied4e -5ie5ga -ield3 -ien5a4 -ien4e -i5enn -i3enti -i1er. -i3esc -i1est -i3et -4if. -if5ero -iff5en -if4fr -4ific. -i3fie -i3fl -4ift -2ig -iga5b -ig3era -ight3i -4igi -i3gib -ig3il -ig3in -ig3it -i4g4l -i2go -ig3or -ig5ot -i5gre -igu5i -ig1ur -i3h -4i5i4 -i3j -4ik -i1la -il3a4b -i4lade -i2l5am -ila5ra -i3leg -il1er -ilev4 -il5f -il1i -il3ia -il2ib -il3io -il4ist -2ilit -il2iz -ill5ab -4iln -il3oq -il4ty -il5ur -il3v -i4mag -im3age -ima5ry -imenta5r -4imet -im1i -im5ida -imi5le -i5mini -4imit -im4ni -i3mon -i2mu -im3ula -2in. -i4n3au -4inav -incel4 -in3cer -4ind -in5dling -2ine -i3nee -iner4ar -i5ness -4inga -4inge -in5gen -4ingi -in5gling -4ingo -4ingu -2ini -i5ni. -i4nia -in3io -in1is -i5nite. -5initio -in3ity -4ink -4inl -2inn -2i1no -i4no4c -ino4s -i4not -2ins -in3se -insur5a -2int. -2in4th -in1u -i5nus -4iny -2io -4io. -ioge4 -io2gr -i1ol -io4m -ion3at -ion4ery -ion3i -io5ph -ior3i -i4os -io5th -i5oti -io4to -i4our -2ip -ipe4 -iphras4 -ip3i -ip4ic -ip4re4 -ip3ul -i3qua -iq5uef -iq3uid -iq3ui3t -4ir -i1ra -ira4b -i4rac -ird5e -ire4de -i4ref -i4rel4 -i4res -ir5gi -ir1i -iri5de -ir4is -iri3tu -5i5r2iz -ir4min -iro4g -5iron. -ir5ul -2is. -is5ag -is3ar -isas5 -2is1c -is3ch -4ise -is3er -3isf -is5han -is3hon -ish5op -is3ib -isi4d -i5sis -is5itiv -4is4k -islan4 -4isms -i2so -iso5mer -is1p -is2pi -is4py -4is1s -is4sal -issen4 -is4ses -is4ta. -is1te -is1ti -ist4ly -4istral -i2su -is5us -4ita. -ita4bi -i4tag -4ita5m -i3tan -i3tat -2ite -it3era -i5teri -it4es -2ith -i1ti -4itia -4i2tic -it3ica -5i5tick -it3ig -it5ill -i2tim -2itio -4itis -i4tism -i2t5o5m -4iton -i4tram -it5ry -4itt -it3uat -i5tud -it3ul -4itz. -i1u -2iv -iv3ell -iv3en. -i4v3er. -i4vers. -iv5il. -iv5io -iv1it -i5vore -iv3o3ro -i4v3ot -4i5w -ix4o -4iy -4izar -izi4 -5izont -5ja -jac4q -ja4p -1je -jer5s -4jestie -4jesty -jew3 -jo4p -5judg -3ka. -k3ab -k5ag -kais4 -kal4 -k1b -k2ed -1kee -ke4g -ke5li -k3en4d -k1er -kes4 -k3est. -ke4ty -k3f -kh4 -k1i -5ki. -5k2ic -k4ill -kilo5 -k4im -k4in. -kin4de -k5iness -kin4g -ki4p -kis4 -k5ish -kk4 -k1l -4kley -4kly -k1m -k5nes -1k2no -ko5r -kosh4 -k3ou -kro5n -4k1s2 -k4sc -ks4l -k4sy -k5t -k1w -lab3ic -l4abo -laci4 -l4ade -la3dy -lag4n -lam3o -3land -lan4dl -lan5et -lan4te -lar4g -lar3i -las4e -la5tan -4lateli -4lativ -4lav -la4v4a -2l1b -lbin4 -4l1c2 -lce4 -l3ci -2ld -l2de -ld4ere -ld4eri -ldi4 -ld5is -l3dr -l4dri -le2a -le4bi -left5 -5leg. -5legg -le4mat -lem5atic -4len. -3lenc -5lene. -1lent -le3ph -le4pr -lera5b -ler4e -3lerg -3l4eri -l4ero -les2 -le5sco -5lesq -3less -5less. -l3eva -lev4er. -lev4era -lev4ers -3ley -4leye -2lf -l5fr -4l1g4 -l5ga -lgar3 -l4ges -lgo3 -2l3h -li4ag -li2am -liar5iz -li4as -li4ato -li5bi -5licio -li4cor -4lics -4lict. -l4icu -l3icy -l3ida -lid5er -3lidi -lif3er -l4iff -li4fl -5ligate -3ligh -li4gra -3lik -4l4i4l -lim4bl -lim3i -li4mo -l4im4p -l4ina -1l4ine -lin3ea -lin3i -link5er -li5og -4l4iq -lis4p -l1it -l2it. -5litica -l5i5tics -liv3er -l1iz -4lj -lka3 -l3kal -lka4t -l1l -l4law -l2le -l5lea -l3lec -l3leg -l3lel -l3le4n -l3le4t -ll2i -l2lin4 -l5lina -ll4o -lloqui5 -ll5out -l5low -2lm -l5met -lm3ing -l4mod -lmon4 -2l1n2 -3lo. -lob5al -lo4ci -4lof -3logic -l5ogo -3logu -lom3er -5long -lon4i -l3o3niz -lood5 -5lope. -lop3i -l3opm -lora4 -lo4rato -lo5rie -lor5ou -5los. -los5et -5losophiz -5losophy -los4t -lo4ta -loun5d -2lout -4lov -2lp -lpa5b -l3pha -l5phi -lp5ing -l3pit -l4pl -l5pr -4l1r -2l1s2 -l4sc -l2se -l4sie -4lt -lt5ag -ltane5 -l1te -lten4 -ltera4 -lth3i -l5ties. -ltis4 -l1tr -ltu2 -ltur3a -lu5a -lu3br -luch4 -lu3ci -lu3en -luf4 -lu5id -lu4ma -5lumi -l5umn. -5lumnia -lu3o -luo3r -4lup -luss4 -lus3te -1lut -l5ven -l5vet4 -2l1w -1ly -4lya -4lyb -ly5me -ly3no -2lys4 -l5yse -1ma -2mab -ma2ca -ma5chine -ma4cl -mag5in -5magn -2mah -maid5 -4mald -ma3lig -ma5lin -mal4li -mal4ty -5mania -man5is -man3iz -4map -ma5rine. -ma5riz -mar4ly -mar3v -ma5sce -mas4e -mas1t -5mate -math3 -ma3tis -4matiza -4m1b -mba4t5 -m5bil -m4b3ing -mbi4v -4m5c -4me. -2med -4med. -5media -me3die -m5e5dy -me2g -mel5on -mel4t -me2m -mem1o3 -1men -men4a -men5ac -men4de -4mene -men4i -mens4 -mensu5 -3ment -men4te -me5on -m5ersa -2mes -3mesti -me4ta -met3al -me1te -me5thi -m4etr -5metric -me5trie -me3try -me4v -4m1f -2mh -5mi. -mi3a -mid4a -mid4g -mig4 -3milia -m5i5lie -m4ill -min4a -3mind -m5inee -m4ingl -min5gli -m5ingly -min4t -m4inu -miot4 -m2is -mis4er. -mis5l -mis4ti -m5istry -4mith -m2iz -4mk -4m1l -m1m -mma5ry -4m1n -mn4a -m4nin -mn4o -1mo -4mocr -5mocratiz -mo2d1 -mo4go -mois2 -moi5se -4mok -mo5lest -mo3me -mon5et -mon5ge -moni3a -mon4ism -mon4ist -mo3niz -monol4 -mo3ny. -mo2r -4mora. -mos2 -mo5sey -mo3sp -moth3 -m5ouf -3mous -mo2v -4m1p -mpara5 -mpa5rab -mpar5i -m3pet -mphas4 -m2pi -mpi4a -mp5ies -m4p1in -m5pir -mp5is -mpo3ri -mpos5ite -m4pous -mpov5 -mp4tr -m2py -4m3r -4m1s2 -m4sh -m5si -4mt -1mu -mula5r4 -5mult -multi3 -3mum -mun2 -4mup -mu4u -4mw -1na -2n1a2b -n4abu -4nac. -na4ca -n5act -nag5er. -nak4 -na4li -na5lia -4nalt -na5mit -n2an -nanci4 -nan4it -nank4 -nar3c -4nare -nar3i -nar4l -n5arm -n4as -nas4c -nas5ti -n2at -na3tal -nato5miz -n2au -nau3se -3naut -nav4e -4n1b4 -ncar5 -n4ces. -n3cha -n5cheo -n5chil -n3chis -nc1in -nc4it -ncour5a -n1cr -n1cu -n4dai -n5dan -n1de -nd5est. -ndi4b -n5d2if -n1dit -n3diz -n5duc -ndu4r -nd2we -2ne. -n3ear -ne2b -neb3u -ne2c -5neck -2ned -ne4gat -neg5ativ -5nege -ne4la -nel5iz -ne5mi -ne4mo -1nen -4nene -3neo -ne4po -ne2q -n1er -nera5b -n4erar -n2ere -n4er5i -ner4r -1nes -2nes. -4nesp -2nest -4nesw -3netic -ne4v -n5eve -ne4w -n3f -n4gab -n3gel -nge4n4e -n5gere -n3geri -ng5ha -n3gib -ng1in -n5git -n4gla -ngov4 -ng5sh -n1gu -n4gum -n2gy -4n1h4 -nha4 -nhab3 -nhe4 -3n4ia -ni3an -ni4ap -ni3ba -ni4bl -ni4d -ni5di -ni4er -ni2fi -ni5ficat -n5igr -nik4 -n1im -ni3miz -n1in -5nine. -nin4g -ni4o -5nis. -nis4ta -n2it -n4ith -3nitio -n3itor -ni3tr -n1j -4nk2 -n5kero -n3ket -nk3in -n1kl -4n1l -n5m -nme4 -nmet4 -4n1n2 -nne4 -nni3al -nni4v -nob4l -no3ble -n5ocl -4n3o2d -3noe -4nog -noge4 -nois5i -no5l4i -5nologis -3nomic -n5o5miz -no4mo -no3my -no4n -non4ag -non5i -n5oniz -4nop -5nop5o5li -nor5ab -no4rary -4nosc -nos4e -nos5t -no5ta -1nou -3noun -nov3el3 -nowl3 -n1p4 -npi4 -npre4c -n1q -n1r -nru4 -2n1s2 -ns5ab -nsati4 -ns4c -n2se -n4s3es -nsid1 -nsig4 -n2sl -ns3m -n4soc -ns4pe -n5spi -nsta5bl -n1t -nta4b -nter3s -nt2i -n5tib -nti4er -nti2f -n3tine -n4t3ing -nti4p -ntrol5li -nt4s -ntu3me -nu1a -nu4d -nu5en -nuf4fe -n3uin -3nu3it -n4um -nu1me -n5umi -3nu4n -n3uo -nu3tr -n1v2 -n1w4 -nym4 -nyp4 -4nz -n3za -4oa -oad3 -o5a5les -oard3 -oas4e -oast5e -oat5i -ob3a3b -o5bar -obe4l -o1bi -o2bin -ob5ing -o3br -ob3ul -o1ce -och4 -o3chet -ocif3 -o4cil -o4clam -o4cod -oc3rac -oc5ratiz -ocre3 -5ocrit -octor5a -oc3ula -o5cure -od5ded -od3ic -odi3o -o2do4 -odor3 -od5uct. -od5ucts -o4el -o5eng -o3er -oe4ta -o3ev -o2fi -of5ite -ofit4t -o2g5a5r -og5ativ -o4gato -o1ge -o5gene -o5geo -o4ger -o3gie -1o1gis -og3it -o4gl -o5g2ly -3ogniz -o4gro -ogu5i -1ogy -2ogyn -o1h2 -ohab5 -oi2 -oic3es -oi3der -oiff4 -oig4 -oi5let -o3ing -oint5er -o5ism -oi5son -oist5en -oi3ter -o5j -2ok -o3ken -ok5ie -o1la -o4lan -olass4 -ol2d -old1e -ol3er -o3lesc -o3let -ol4fi -ol2i -o3lia -o3lice -ol5id. -o3li4f -o5lil -ol3ing -o5lio -o5lis. -ol3ish -o5lite -o5litio -o5liv -olli4e -ol5ogiz -olo4r -ol5pl -ol2t -ol3ub -ol3ume -ol3un -o5lus -ol2v -o2ly -om5ah -oma5l -om5atiz -om2be -om4bl -o2me -om3ena -om5erse -o4met -om5etry -o3mia -om3ic. -om3ica -o5mid -om1in -o5mini -5ommend -omo4ge -o4mon -om3pi -ompro5 -o2n -on1a -on4ac -o3nan -on1c -3oncil -2ond -on5do -o3nen -on5est -on4gu -on1ic -o3nio -on1is -o5niu -on3key -on4odi -on3omy -on3s -onspi4 -onspir5a -onsu4 -onten4 -on3t4i -ontif5 -on5um -onva5 -oo2 -ood5e -ood5i -oo4k -oop3i -o3ord -oost5 -o2pa -ope5d -op1er -3opera -4operag -2oph -o5phan -o5pher -op3ing -o3pit -o5pon -o4posi -o1pr -op1u -opy5 -o1q -o1ra -o5ra. -o4r3ag -or5aliz -or5ange -ore5a -o5real -or3ei -ore5sh -or5est. -orew4 -or4gu -4o5ria -or3ica -o5ril -or1in -o1rio -or3ity -o3riu -or2mi -orn2e -o5rof -or3oug -or5pe -3orrh -or4se -ors5en -orst4 -or3thi -or3thy -or4ty -o5rum -o1ry -os3al -os2c -os4ce -o3scop -4oscopi -o5scr -os4i4e -os5itiv -os3ito -os3ity -osi4u -os4l -o2so -os4pa -os4po -os2ta -o5stati -os5til -os5tit -o4tan -otele4g -ot3er. -ot5ers -o4tes -4oth -oth5esi -oth3i4 -ot3ic. -ot5ica -o3tice -o3tif -o3tis -oto5s -ou2 -ou3bl -ouch5i -ou5et -ou4l -ounc5er -oun2d -ou5v -ov4en -over4ne -over3s -ov4ert -o3vis -oviti4 -o5v4ol -ow3der -ow3el -ow5est -ow1i -own5i -o4wo -oy1a -1pa -pa4ca -pa4ce -pac4t -p4ad -5pagan -p3agat -p4ai -pain4 -p4al -pan4a -pan3el -pan4ty -pa3ny -pa1p -pa4pu -para5bl -par5age -par5di -3pare -par5el -p4a4ri -par4is -pa2te -pa5ter -5pathic -pa5thy -pa4tric -pav4 -3pay -4p1b -pd4 -4pe. -3pe4a -pear4l -pe2c -2p2ed -3pede -3pedi -pedia4 -ped4ic -p4ee -pee4d -pek4 -pe4la -peli4e -pe4nan -p4enc -pen4th -pe5on -p4era. -pera5bl -p4erag -p4eri -peri5st -per4mal -perme5 -p4ern -per3o -per3ti -pe5ru -per1v -pe2t -pe5ten -pe5tiz -4pf -4pg -4ph. -phar5i -phe3no -ph4er -ph4es. -ph1ic -5phie -ph5ing -5phisti -3phiz -ph2l -3phob -3phone -5phoni -pho4r -4phs -ph3t -5phu -1phy -pi3a -pian4 -pi4cie -pi4cy -p4id -p5ida -pi3de -5pidi -3piec -pi3en -pi4grap -pi3lo -pi2n -p4in. -pind4 -p4ino -3pi1o -pion4 -p3ith -pi5tha -pi2tu -2p3k2 -1p2l2 -3plan -plas5t -pli3a -pli5er -4plig -pli4n -ploi4 -plu4m -plum4b -4p1m -2p3n -po4c -5pod. -po5em -po3et5 -5po4g -poin2 -5point -poly5t -po4ni -po4p -1p4or -po4ry -1pos -pos1s -p4ot -po4ta -5poun -4p1p -ppa5ra -p2pe -p4ped -p5pel -p3pen -p3per -p3pet -ppo5site -pr2 -pray4e -5preci -pre5co -pre3em -pref5ac -pre4la -pre3r -p3rese -3press -pre5ten -pre3v -5pri4e -prin4t3 -pri4s -pris3o -p3roca -prof5it -pro3l -pros3e -pro1t -2p1s2 -p2se -ps4h -p4sib -2p1t -pt5a4b -p2te -p2th -pti3m -ptu4r -p4tw -pub3 -pue4 -puf4 -pul3c -pu4m -pu2n -pur4r -5pus -pu2t -5pute -put3er -pu3tr -put4ted -put4tin -p3w -qu2 -qua5v -2que. -3quer -3quet -2rab -ra3bi -rach4e -r5acl -raf5fi -raf4t -r2ai -ra4lo -ram3et -r2ami -rane5o -ran4ge -r4ani -ra5no -rap3er -3raphy -rar5c -rare4 -rar5ef -4raril -r2as -ration4 -rau4t -ra5vai -rav3el -ra5zie -r1b -r4bab -r4bag -rbi2 -rbi4f -r2bin -r5bine -rb5ing. -rb4o -r1c -r2ce -rcen4 -r3cha -rch4er -r4ci4b -rc4it -rcum3 -r4dal -rd2i -rdi4a -rdi4er -rdin4 -rd3ing -2re. -re1al -re3an -re5arr -5reav -re4aw -r5ebrat -rec5oll -rec5ompe -re4cre -2r2ed -re1de -re3dis -red5it -re4fac -re2fe -re5fer. -re3fi -re4fy -reg3is -re5it -re1li -re5lu -r4en4ta -ren4te -re1o -re5pin -re4posi -re1pu -r1er4 -r4eri -rero4 -re5ru -r4es. -re4spi -ress5ib -res2t -re5stal -re3str -re4ter -re4ti4z -re3tri -reu2 -re5uti -rev2 -re4val -rev3el -r5ev5er. -re5vers -re5vert -re5vil -rev5olu -re4wh -r1f -rfu4 -r4fy -rg2 -rg3er -r3get -r3gic -rgi4n -rg3ing -r5gis -r5git -r1gl -rgo4n -r3gu -rh4 -4rh. -4rhal -ri3a -ria4b -ri4ag -r4ib -rib3a -ric5as -r4ice -4rici -5ricid -ri4cie -r4ico -rid5er -ri3enc -ri3ent -ri1er -ri5et -rig5an -5rigi -ril3iz -5riman -rim5i -3rimo -rim4pe -r2ina -5rina. -rin4d -rin4e -rin4g -ri1o -5riph -riph5e -ri2pl -rip5lic -r4iq -r2is -r4is. -ris4c -r3ish -ris4p -ri3ta3b -r5ited. -rit5er. -rit5ers -rit3ic -ri2tu -rit5ur -riv5el -riv3et -riv3i -r3j -r3ket -rk4le -rk4lin -r1l -rle4 -r2led -r4lig -r4lis -rl5ish -r3lo4 -r1m -rma5c -r2me -r3men -rm5ers -rm3ing -r4ming. -r4mio -r3mit -r4my -r4nar -r3nel -r4ner -r5net -r3ney -r5nic -r1nis4 -r3nit -r3niv -rno4 -r4nou -r3nu -rob3l -r2oc -ro3cr -ro4e -ro1fe -ro5fil -rok2 -ro5ker -5role. -rom5ete -rom4i -rom4p -ron4al -ron4e -ro5n4is -ron4ta -1room -5root -ro3pel -rop3ic -ror3i -ro5ro -ros5per -ros4s -ro4the -ro4ty -ro4va -rov5el -rox5 -r1p -r4pea -r5pent -rp5er. -r3pet -rp4h4 -rp3ing -r3po -r1r4 -rre4c -rre4f -r4reo -rre4st -rri4o -rri4v -rron4 -rros4 -rrys4 -4rs2 -r1sa -rsa5ti -rs4c -r2se -r3sec -rse4cr -rs5er. -rs3es -rse5v2 -r1sh -r5sha -r1si -r4si4b -rson3 -r1sp -r5sw -rtach4 -r4tag -r3teb -rten4d -rte5o -r1ti -rt5ib -rti4d -r4tier -r3tig -rtil3i -rtil4l -r4tily -r4tist -r4tiv -r3tri -rtroph4 -rt4sh -ru3a -ru3e4l -ru3en -ru4gl -ru3in -rum3pl -ru2n -runk5 -run4ty -r5usc -ruti5n -rv4e -rvel4i -r3ven -rv5er. -r5vest -r3vey -r3vic -rvi4v -r3vo -r1w -ry4c -5rynge -ry3t -sa2 -2s1ab -5sack -sac3ri -s3act -5sai -salar4 -sal4m -sa5lo -sal4t -3sanc -san4de -s1ap -sa5ta -5sa3tio -sat3u -sau4 -sa5vor -5saw -4s5b -scan4t5 -sca4p -scav5 -s4ced -4scei -s4ces -sch2 -s4cho -3s4cie -5scin4d -scle5 -s4cli -scof4 -4scopy -scour5a -s1cu -4s5d -4se. -se4a -seas4 -sea5w -se2c3o -3sect -4s4ed -se4d4e -s5edl -se2g -seg3r -5sei -se1le -5self -5selv -4seme -se4mol -sen5at -4senc -sen4d -s5ened -sen5g -s5enin -4sentd -4sentl -sep3a3 -4s1er. -s4erl -ser4o -4servo -s1e4s -se5sh -ses5t -5se5um -5sev -sev3en -sew4i -5sex -4s3f -2s3g -s2h -2sh. -sh1er -5shev -sh1in -sh3io -3ship -shiv5 -sho4 -sh5old -shon3 -shor4 -short5 -4shw -si1b -s5icc -3side. -5sides -5sidi -si5diz -4signa -sil4e -4sily -2s1in -s2ina -5sine. -s3ing -1sio -5sion -sion5a -si2r -sir5a -1sis -3sitio -5siu -1siv -5siz -sk2 -4ske -s3ket -sk5ine -sk5ing -s1l2 -s3lat -s2le -slith5 -2s1m -s3ma -small3 -sman3 -smel4 -s5men -5smith -smol5d4 -s1n4 -1so -so4ce -soft3 -so4lab -sol3d2 -so3lic -5solv -3som -3s4on. -sona4 -son4g -s4op -5sophic -s5ophiz -s5ophy -sor5c -sor5d -4sov -so5vi -2spa -5spai -spa4n -spen4d -2s5peo -2sper -s2phe -3spher -spho5 -spil4 -sp5ing -4spio -s4ply -s4pon -spor4 -4spot -squal4l -s1r -2ss -s1sa -ssas3 -s2s5c -s3sel -s5seng -s4ses. -s5set -s1si -s4sie -ssi4er -ss5ily -s4sl -ss4li -s4sn -sspend4 -ss2t -ssur5a -ss5w -2st. -s2tag -s2tal -stam4i -5stand -s4ta4p -5stat. -s4ted -stern5i -s5tero -ste2w -stew5a -s3the -st2i -s4ti. -s5tia -s1tic -5stick -s4tie -s3tif -st3ing -5stir -s1tle -5stock -stom3a -5stone -s4top -3store -st4r -s4trad -5stratu -s4tray -s4trid -4stry -4st3w -s2ty -1su -su1al -su4b3 -su2g3 -su5is -suit3 -s4ul -su2m -sum3i -su2n -su2r -4sv -sw2 -4swo -s4y -4syc -3syl -syn5o -sy5rin -1ta -3ta. -2tab -ta5bles -5taboliz -4taci -ta5do -4taf4 -tai5lo -ta2l -ta5la -tal5en -tal3i -4talk -tal4lis -ta5log -ta5mo -tan4de -tanta3 -ta5per -ta5pl -tar4a -4tarc -4tare -ta3riz -tas4e -ta5sy -4tatic -ta4tur -taun4 -tav4 -2taw -tax4is -2t1b -4tc -t4ch -tch5et -4t1d -4te. -tead4i -4teat -tece4 -5tect -2t1ed -te5di -1tee -teg4 -te5ger -te5gi -3tel. -teli4 -5tels -te2ma2 -tem3at -3tenan -3tenc -3tend -4tenes -1tent -ten4tag -1teo -te4p -te5pe -ter3c -5ter3d -1teri -ter5ies -ter3is -teri5za -5ternit -ter5v -4tes. -4tess -t3ess. -teth5e -3teu -3tex -4tey -2t1f -4t1g -2th. -than4 -th2e -4thea -th3eas -the5at -the3is -3thet -th5ic. -th5ica -4thil -5think -4thl -th5ode -5thodic -4thoo -thor5it -tho5riz -2ths -1tia -ti4ab -ti4ato -2ti2b -4tick -t4ico -t4ic1u -5tidi -3tien -tif2 -ti5fy -2tig -5tigu -till5in -1tim -4timp -tim5ul -2t1in -t2ina -3tine. -3tini -1tio -ti5oc -tion5ee -5tiq -ti3sa -3tise -tis4m -ti5so -tis4p -5tistica -ti3tl -ti4u -1tiv -tiv4a -1tiz -ti3za -ti3zen -2tl -t5la -tlan4 -3tle. -3tled -3tles. -t5let. -t5lo -4t1m -tme4 -2t1n2 -1to -to3b -to5crat -4todo -2tof -to2gr -to5ic -to2ma -tom4b -to3my -ton4ali -to3nat -4tono -4tony -to2ra -to3rie -tor5iz -tos2 -5tour -4tout -to3war -4t1p -1tra -tra3b -tra5ch -traci4 -trac4it -trac4te -tras4 -tra5ven -trav5es5 -tre5f -tre4m -trem5i -5tria -tri5ces -5tricia -4trics -2trim -tri4v -tro5mi -tron5i -4trony -tro5phe -tro3sp -tro3v -tru5i -trus4 -4t1s2 -t4sc -tsh4 -t4sw -4t3t2 -t4tes -t5to -ttu4 -1tu -tu1a -tu3ar -tu4bi -tud2 -4tue -4tuf4 -5tu3i -3tum -tu4nis -2t3up. -3ture -5turi -tur3is -tur5o -tu5ry -3tus -4tv -tw4 -4t1wa -twis4 -4two -1ty -4tya -2tyl -type3 -ty5ph -4tz -tz4e -4uab -uac4 -ua5na -uan4i -uar5ant -uar2d -uar3i -uar3t -u1at -uav4 -ub4e -u4bel -u3ber -u4bero -u1b4i -u4b5ing -u3ble. -u3ca -uci4b -uc4it -ucle3 -u3cr -u3cu -u4cy -ud5d -ud3er -ud5est -udev4 -u1dic -ud3ied -ud3ies -ud5is -u5dit -u4don -ud4si -u4du -u4ene -uens4 -uen4te -uer4il -3ufa -u3fl -ugh3en -ug5in -2ui2 -uil5iz -ui4n -u1ing -uir4m -uita4 -uiv3 -uiv4er. -u5j -4uk -u1la -ula5b -u5lati -ulch4 -5ulche -ul3der -ul4e -u1len -ul4gi -ul2i -u5lia -ul3ing -ul5ish -ul4lar -ul4li4b -ul4lis -4ul3m -u1l4o -4uls -uls5es -ul1ti -ultra3 -4ultu -u3lu -ul5ul -ul5v -um5ab -um4bi -um4bly -u1mi -u4m3ing -umor5o -um2p -unat4 -u2ne -un4er -u1ni -un4im -u2nin -un5ish -uni3v -un3s4 -un4sw -unt3ab -un4ter. -un4tes -unu4 -un5y -un5z -u4ors -u5os -u1ou -u1pe -uper5s -u5pia -up3ing -u3pl -up3p -upport5 -upt5ib -uptu4 -u1ra -4ura. -u4rag -u4ras -ur4be -urc4 -ur1d -ure5at -ur4fer -ur4fr -u3rif -uri4fic -ur1in -u3rio -u1rit -ur3iz -ur2l -url5ing. -ur4no -uros4 -ur4pe -ur4pi -urs5er -ur5tes -ur3the -urti4 -ur4tie -u3ru -2us -u5sad -u5san -us4ap -usc2 -us3ci -use5a -u5sia -u3sic -us4lin -us1p -us5sl -us5tere -us1tr -u2su -usur4 -uta4b -u3tat -4ute. -4utel -4uten -uten4i -4u1t2i -uti5liz -u3tine -ut3ing -ution5a -u4tis -5u5tiz -u4t1l -ut5of -uto5g -uto5matic -u5ton -u4tou -uts4 -u3u -uu4m -u1v2 -uxu3 -uz4e -1va -5va. -2v1a4b -vac5il -vac3u -vag4 -va4ge -va5lie -val5o -val1u -va5mo -va5niz -va5pi -var5ied -3vat -4ve. -4ved -veg3 -v3el. -vel3li -ve4lo -v4ely -ven3om -v5enue -v4erd -5vere. -v4erel -v3eren -ver5enc -v4eres -ver3ie -vermi4n -3verse -ver3th -v4e2s -4ves. -ves4te -ve4te -vet3er -ve4ty -vi5ali -5vian -5vide. -5vided -4v3iden -5vides -5vidi -v3if -vi5gn -vik4 -2vil -5vilit -v3i3liz -v1in -4vi4na -v2inc -vin5d -4ving -vio3l -v3io4r -vi1ou -vi4p -vi5ro -vis3it -vi3so -vi3su -4viti -vit3r -4vity -3viv -5vo. -voi4 -3vok -vo4la -v5ole -5volt -3volv -vom5i -vor5ab -vori4 -vo4ry -vo4ta -4votee -4vv4 -v4y -w5abl -2wac -wa5ger -wag5o -wait5 -w5al. -wam4 -war4t -was4t -wa1te -wa5ver -w1b -wea5rie -weath3 -wed4n -weet3 -wee5v -wel4l -w1er -west3 -w3ev -whi4 -wi2 -wil2 -will5in -win4de -win4g -wir4 -3wise -with3 -wiz5 -w4k -wl4es -wl3in -w4no -1wo2 -wom1 -wo5ven -w5p -wra4 -wri4 -writa4 -w3sh -ws4l -ws4pe -w5s4t -4wt -wy4 -x1a -xac5e -x4ago -xam3 -x4ap -xas5 -x3c2 -x1e -xe4cuto -x2ed -xer4i -xe5ro -x1h -xhi2 -xhil5 -xhu4 -x3i -xi5a -xi5c -xi5di -x4ime -xi5miz -x3o -x4ob -x3p -xpan4d -xpecto5 -xpe3d -x1t2 -x3ti -x1u -xu3a -xx4 -y5ac -3yar4 -y5at -y1b -y1c -y2ce -yc5er -y3ch -ych4e -ycom4 -ycot4 -y1d -y5ee -y1er -y4erf -yes4 -ye4t -y5gi -4y3h -y1i -y3la -ylla5bl -y3lo -y5lu -ymbol5 -yme4 -ympa3 -yn3chr -yn5d -yn5g -yn5ic -5ynx -y1o4 -yo5d -y4o5g -yom4 -yo5net -y4ons -y4os -y4ped -yper5 -yp3i -y3po -y4poc -yp2ta -y5pu -yra5m -yr5ia -y3ro -yr4r -ys4c -y3s2e -ys3ica -ys3io -3ysis -y4so -yss4 -ys1t -ys3ta -ysur4 -y3thin -yt3ic -y1w -za1 -z5a2b -zar2 -4zb -2ze -ze4n -ze4p -z1er -ze3ro -zet4 -2z1i -z4il -z4is -5zl -4zm -1zo -zo4m -zo5ol -zte4 -4z1z2 -z4zy -Á1Á -Á1Å -Á1É -Á1Ï -Á1Õ -Á1Ù -Á1Ü -Á1À -Á1Ñ -Å1Á -Å1Å -Å1É -Å1Ï -Å1Õ -Å1Ù -Å1Ü -Å1À -Å1Ñ -É1Á -É1Å -É1É -É1Ï -É1Õ -É1Ù -É1Ü -É1À -É1Ñ -Ï1Á -Ï1Å -Ï1É -Ï1Ï -Ï1Õ -Ï1Ù -Ï1Ü -Ï1À -Ï1Ñ -Õ1Á -Õ1Å -Õ1É -Õ1Ï -Õ1Õ -Õ1Ù -Õ1Ü -Õ1À -Õ1Ñ -Ù1Á -Ù1Å -Ù1É -Ù1Ï -Ù1Õ -Ù1Ù -Ù1Ü -Ù1À -Ù1Ñ -Ü1Á -Ü1Å -Ü1É -Ü1Ï -Ü1Õ -Ü1Ù -Ü1Ü -Ü1À -Ü1Ñ -À1Á -À1Å -À1É -À1Ï -À1Õ -À1Ù -À1Ü -À1À -À1Ñ -Ñ1Á -Ñ1Å -Ñ1É -Ñ1Ï -Ñ1Õ -Ñ1Ù -Ñ1Ü -Ñ1À -Ñ1Ñ -.ÂÄ2 -.ÂÌ2 -.ÂÒ2 -.ÂØ2 -.×Â2 -.×ÂÌ2 -.×ÂÒ2 -.××2 -.××Ò2 -.×ÇÌ2 -.×Ä2 -.×Ä×2 -.×ÄÒ2 -.×Ú2 -.×ÚÂ2 -.×Ú×2 -.×ÚÇ2 -.×ÚÇÌ2 -.×ÚÇÒ2 -.×ÚÄ2 -.×ÚÄÒ2 -.×ÚÌ2 -.×ÚÍ2 -.×ÚÒ2 -.×Úß2 -.×Ë2 -.×ËÌ2 -.×ËÒ2 -.×Ì2 -.×Í2 -.×Î2 -.×Ð2 -.×ÐÌ2 -.×ÐÒ2 -.×Ò2 -.×Ó2 -.×ÓË2 -.×ÓËÒ2 -.×ÓÌ2 -.×ÓÍ2 -.×ÓÐ2 -.×ÓÐÌ2 -.×ÓÐÒ2 -.×ÓÔ2 -.×ÓÔÒ2 -.×ÓÈ2 -.×ÓÈÌ2 -.×Ô2 -.×ÔÒ2 -.×È2 -.×Ã2 -.×Þ2 -.×Ø2 -.Ç×2 -.ÇÄ2 -.ÇÌ2 -.ÇÎ2 -.ÇÒ2 -.Ä×2 -.ÄÌ2 -.ÄÎ2 -.ÄÒ2 -.ÄØ2 -.Ö×2 -.ÖÇ2 -.ÖÇÌ2 -.ÖÄ2 -.ÖÖ2 -.ÖÒ2 -.Ú×2 -.ÚÄ2 -.ÚÄÒ2 -.ÚÌ2 -.ÚÍ2 -.ÚÎ2 -.ÚÒ2 -.Ë×2 -.ËÌ2 -.ËÎ2 -.ËÒ2 -.ËÓÔ2 -.ËÔ2 -.ÌÂ2 -.ÌÇ2 -.ÌÖ2 -.ÌØ2 -.ÌØ×2 -.ÍÇÌ2 -.ÍÇÎ2 -.ÍÌ2 -.ÍÎ2 -.ÍÒ2 -.ÍÓÔ2 -.ÍÈ2 -.ÍÞ2 -.ÍÝ2 -.ÎÒ2 -.ÐÌ2 -.ÐÎ2 -.ÐÒ2 -.ÐÓ2 -.ÐÔ2 -.ÐÈ2 -.ÐÞ2 -.ÐÛ2 -.ÐØ2 -.Ò×2 -.ÒÖ2 -.ÒÔ2 -.ÓÂ2 -.ÓÂÌ2 -.ÓÂÒ2 -.Ó×2 -.Ó×ÓÔ2 -.ÓÇ2 -.ÓÇÎ2 -.ÓÇÒ2 -.ÓÄ2 -.ÓÄ×2 -.ÓÄÒ2 -.ÓÖ2 -.ÓÚ2 -.ÓË2 -.ÓË×2 -.ÓËÌ2 -.ÓËÒ2 -.ÓÌ2 -.ÓÍ2 -.ÓÎ2 -.ÓÐ2 -.ÓÐÌ2 -.ÓÐÒ2 -.ÓÒ2 -.ÓÓ2 -.ÓÔ2 -.ÓÔ×2 -.ÓÔÌ2 -.ÓÔÒ2 -.ÓÆ2 -.ÓÈ2 -.ÓÈ×2 -.ÓÈÌ2 -.ÓÞ2 -.ÓÛ2 -.Óß2 -.Ô×2 -.ÔË2 -.ÔËÎ2 -.ÔÌ2 -.ÔÒ2 -.ÔÝ2 -.ÔØÍ2 -.ÔØÆ2 -.ÆÌ2 -.ÆÒ2 -.È×2 -.ÈÌ2 -.ÈÍ2 -.ÈÎ2 -.ÈÒ2 -.Ã×2 -.ÞÌ2 -.ÞÒ2 -.ÞÔ2 -.ÞØ2 -.Û×2 -.ÛË2 -.ÛË×2 -.ÛÌ2 -.ÛÎ2 -.ÛÐ2 -.ÛÒ2 -.ÛÔ2 -.ÛÔÒ2 -1ÂÁ -1ÂÅ -1ÂÉ -1ÂÏ -1ÂÕ -1ÂÙ -1ÂÑ -1×Á -1×Å -1×É -1×Ï -1×Õ -1×Ù -1×Ñ -1ÇÁ -1ÇÅ -1ÇÉ -1ÇÏ -1ÇÕ -1ÄÁ -1ÄÅ -1ÄÉ -1ÄÏ -1ÄÕ -1ÄÙ -1ÄÀ -1ÄÑ -1ÖÁ -1ÖÅ -1ÖÉ -1ÖÏ -1ÖÕ -1ÖÙ -1ÚÁ -1ÚÅ -1ÚÉ -1ÚÏ -1ÚÕ -1ÚÙ -1ÚÑ -1ËÁ -1ËÅ -1ËÉ -1ËÏ -1ËÕ -1ÌÁ -1ÌÅ -1ÌÉ -1ÌÏ -1ÌÕ -1ÌÙ -1ÌÀ -1ÌÑ -1ÍÁ -1ÍÅ -1ÍÉ -1ÍÏ -1ÍÕ -1ÍÙ -1ÍÑ -1ÎÁ -1ÎÅ -1ÎÉ -1ÎÏ -1ÎÕ -1ÎÙ -1ÎÀ -1ÎÑ -1ÐÁ -1ÐÅ -1ÐÉ -1ÐÏ -1ÐÕ -1ÐÙ -1ÐÑ -1ÒÁ -1ÒÅ -1ÒÉ -1ÒÏ -1ÒÕ -1ÒÙ -1ÒÀ -1ÒÑ -1ÓÁ -1ÓÅ -1ÓÉ -1ÓÏ -1ÓÕ -1ÓÙ -1ÓÑ -1ÔÁ -1ÔÅ -1ÔÉ -1ÔÏ -1ÔÕ -1ÔÙ -1ÔÀ -1ÔÑ -1ÆÁ -1ÆÅ -1ÆÉ -1ÆÏ -1ÆÕ -1ÆÙ -1ÈÁ -1ÈÅ -1ÈÉ -1ÈÏ -1ÈÕ -1ÃÁ -1ÃÅ -1ÃÉ -1ÃÏ -1ÃÕ -1ÃÙ -1ÞÁ -1ÞÅ -1ÞÉ -1ÞÏ -1ÞÕ -1ÛÁ -1ÛÅ -1ÛÉ -1ÛÏ -1ÛÕ -1ÝÁ -1ÝÅ -1ÝÉ -1ÝÏ diff --git a/contrib/groff/tmac/locale/hyphen.us-ru b/contrib/groff/tmac/locale/hyphen.us-ru deleted file mode 100644 index 3ccef48465fe..000000000000 --- a/contrib/groff/tmac/locale/hyphen.us-ru +++ /dev/null @@ -1,4833 +0,0 @@ -% Hyphenation patterns for US English and Russian (koi8-r). -% These are the standard Plain TeX hyphenation patterns (in hyphen.tex). -.ach4 -.ad4der -.af1t -.al3t -.am5at -.an5c -.ang4 -.ani5m -.ant4 -.an3te -.anti5s -.ar5s -.ar4tie -.ar4ty -.as3c -.as1p -.as1s -.aster5 -.atom5 -.au1d -.av4i -.awn4 -.ba4g -.ba5na -.bas4e -.ber4 -.be5ra -.be3sm -.be5sto -.bri2 -.but4ti -.cam4pe -.can5c -.capa5b -.car5ol -.ca4t -.ce4la -.ch4 -.chill5i -.ci2 -.cit5r -.co3e -.co4r -.cor5ner -.de4moi -.de3o -.de3ra -.de3ri -.des4c -.dictio5 -.do4t -.du4c -.dumb5 -.earth5 -.eas3i -.eb4 -.eer4 -.eg2 -.el5d -.el3em -.enam3 -.en3g -.en3s -.eq5ui5t -.er4ri -.es3 -.eu3 -.eye5 -.fes3 -.for5mer -.ga2 -.ge2 -.gen3t4 -.ge5og -.gi5a -.gi4b -.go4r -.hand5i -.han5k -.he2 -.hero5i -.hes3 -.het3 -.hi3b -.hi3er -.hon5ey -.hon3o -.hov5 -.id4l -.idol3 -.im3m -.im5pin -.in1 -.in3ci -.ine2 -.in2k -.in3s -.ir5r -.is4i -.ju3r -.la4cy -.la4m -.lat5er -.lath5 -.le2 -.leg5e -.len4 -.lep5 -.lev1 -.li4g -.lig5a -.li2n -.li3o -.li4t -.mag5a5 -.mal5o -.man5a -.mar5ti -.me2 -.mer3c -.me5ter -.mis1 -.mist5i -.mon3e -.mo3ro -.mu5ta -.muta5b -.ni4c -.od2 -.odd5 -.of5te -.or5ato -.or3c -.or1d -.or3t -.os3 -.os4tl -.oth3 -.out3 -.ped5al -.pe5te -.pe5tit -.pi4e -.pio5n -.pi2t -.pre3m -.ra4c -.ran4t -.ratio5na -.ree2 -.re5mit -.res2 -.re5stat -.ri4g -.rit5u -.ro4q -.ros5t -.row5d -.ru4d -.sci3e -.self5 -.sell5 -.se2n -.se5rie -.sh2 -.si2 -.sing4 -.st4 -.sta5bl -.sy2 -.ta4 -.te4 -.ten5an -.th2 -.ti2 -.til4 -.tim5o5 -.ting4 -.tin5k -.ton4a -.to4p -.top5i -.tou5s -.trib5ut -.un1a -.un3ce -.under5 -.un1e -.un5k -.un5o -.un3u -.up3 -.ure3 -.us5a -.ven4de -.ve5ra -.wil5i -.ye4 -4ab. -a5bal -a5ban -abe2 -ab5erd -abi5a -ab5it5ab -ab5lat -ab5o5liz -4abr -ab5rog -ab3ul -a4car -ac5ard -ac5aro -a5ceou -ac1er -a5chet -4a2ci -a3cie -ac1in -a3cio -ac5rob -act5if -ac3ul -ac4um -a2d -ad4din -ad5er. -2adi -a3dia -ad3ica -adi4er -a3dio -a3dit -a5diu -ad4le -ad3ow -ad5ran -ad4su -4adu -a3duc -ad5um -ae4r -aeri4e -a2f -aff4 -a4gab -aga4n -ag5ell -age4o -4ageu -ag1i -4ag4l -ag1n -a2go -3agog -ag3oni -a5guer -ag5ul -a4gy -a3ha -a3he -ah4l -a3ho -ai2 -a5ia -a3ic. -ai5ly -a4i4n -ain5in -ain5o -ait5en -a1j -ak1en -al5ab -al3ad -a4lar -4aldi -2ale -al3end -a4lenti -a5le5o -al1i -al4ia. -ali4e -al5lev -4allic -4alm -a5log. -a4ly. -4alys -5a5lyst -5alyt -3alyz -4ama -am5ab -am3ag -ama5ra -am5asc -a4matis -a4m5ato -am5era -am3ic -am5if -am5ily -am1in -ami4no -a2mo -a5mon -amor5i -amp5en -a2n -an3age -3analy -a3nar -an3arc -anar4i -a3nati -4and -ande4s -an3dis -an1dl -an4dow -a5nee -a3nen -an5est. -a3neu -2ang -ang5ie -an1gl -a4n1ic -a3nies -an3i3f -an4ime -a5nimi -a5nine -an3io -a3nip -an3ish -an3it -a3niu -an4kli -5anniz -ano4 -an5ot -anoth5 -an2sa -an4sco -an4sn -an2sp -ans3po -an4st -an4sur -antal4 -an4tie -4anto -an2tr -an4tw -an3ua -an3ul -a5nur -4ao -apar4 -ap5at -ap5ero -a3pher -4aphi -a4pilla -ap5illar -ap3in -ap3ita -a3pitu -a2pl -apoc5 -ap5ola -apor5i -apos3t -aps5es -a3pu -aque5 -2a2r -ar3act -a5rade -ar5adis -ar3al -a5ramete -aran4g -ara3p -ar4at -a5ratio -ar5ativ -a5rau -ar5av4 -araw4 -arbal4 -ar4chan -ar5dine -ar4dr -ar5eas -a3ree -ar3ent -a5ress -ar4fi -ar4fl -ar1i -ar5ial -ar3ian -a3riet -ar4im -ar5inat -ar3io -ar2iz -ar2mi -ar5o5d -a5roni -a3roo -ar2p -ar3q -arre4 -ar4sa -ar2sh -4as. -as4ab -as3ant -ashi4 -a5sia. -a3sib -a3sic -5a5si4t -ask3i -as4l -a4soc -as5ph -as4sh -as3ten -as1tr -asur5a -a2ta -at3abl -at5ac -at3alo -at5ap -ate5c -at5ech -at3ego -at3en. -at3era -ater5n -a5terna -at3est -at5ev -4ath -ath5em -a5then -at4ho -ath5om -4ati. -a5tia -at5i5b -at1ic -at3if -ation5ar -at3itu -a4tog -a2tom -at5omiz -a4top -a4tos -a1tr -at5rop -at4sk -at4tag -at5te -at4th -a2tu -at5ua -at5ue -at3ul -at3ura -a2ty -au4b -augh3 -au3gu -au4l2 -aun5d -au3r -au5sib -aut5en -au1th -a2va -av3ag -a5van -ave4no -av3era -av5ern -av5ery -av1i -avi4er -av3ig -av5oc -a1vor -3away -aw3i -aw4ly -aws4 -ax4ic -ax4id -ay5al -aye4 -ays4 -azi4er -azz5i -5ba. -bad5ger -ba4ge -bal1a -ban5dag -ban4e -ban3i -barbi5 -bari4a -bas4si -1bat -ba4z -2b1b -b2be -b3ber -bbi4na -4b1d -4be. -beak4 -beat3 -4be2d -be3da -be3de -be3di -be3gi -be5gu -1bel -be1li -be3lo -4be5m -be5nig -be5nu -4bes4 -be3sp -be5str -3bet -bet5iz -be5tr -be3tw -be3w -be5yo -2bf -4b3h -bi2b -bi4d -3bie -bi5en -bi4er -2b3if -1bil -bi3liz -bina5r4 -bin4d -bi5net -bi3ogr -bi5ou -bi2t -3bi3tio -bi3tr -3bit5ua -b5itz -b1j -bk4 -b2l2 -blath5 -b4le. -blen4 -5blesp -b3lis -b4lo -blun4t -4b1m -4b3n -bne5g -3bod -bod3i -bo4e -bol3ic -bom4bi -bon4a -bon5at -3boo -5bor. -4b1ora -bor5d -5bore -5bori -5bos4 -b5ota -both5 -bo4to -bound3 -4bp -4brit -broth3 -2b5s2 -bsor4 -2bt -bt4l -b4to -b3tr -buf4fer -bu4ga -bu3li -bumi4 -bu4n -bunt4i -bu3re -bus5ie -buss4e -5bust -4buta -3butio -b5uto -b1v -4b5w -5by. -bys4 -1ca -cab3in -ca1bl -cach4 -ca5den -4cag4 -2c5ah -ca3lat -cal4la -call5in -4calo -can5d -can4e -can4ic -can5is -can3iz -can4ty -cany4 -ca5per -car5om -cast5er -cas5tig -4casy -ca4th -4cativ -cav5al -c3c -ccha5 -cci4a -ccompa5 -ccon4 -ccou3t -2ce. -4ced. -4ceden -3cei -5cel. -3cell -1cen -3cenc -2cen4e -4ceni -3cent -3cep -ce5ram -4cesa -3cessi -ces5si5b -ces5t -cet4 -c5e4ta -cew4 -2ch -4ch. -4ch3ab -5chanic -ch5a5nis -che2 -cheap3 -4ched -che5lo -3chemi -ch5ene -ch3er. -ch3ers -4ch1in -5chine. -ch5iness -5chini -5chio -3chit -chi2z -3cho2 -ch4ti -1ci -3cia -ci2a5b -cia5r -ci5c -4cier -5cific. -4cii -ci4la -3cili -2cim -2cin -c4ina -3cinat -cin3em -c1ing -c5ing. -5cino -cion4 -4cipe -ci3ph -4cipic -4cista -4cisti -2c1it -cit3iz -5ciz -ck1 -ck3i -1c4l4 -4clar -c5laratio -5clare -cle4m -4clic -clim4 -cly4 -c5n -1co -co5ag -coe2 -2cog -co4gr -coi4 -co3inc -col5i -5colo -col3or -com5er -con4a -c4one -con3g -con5t -co3pa -cop3ic -co4pl -4corb -coro3n -cos4e -cov1 -cove4 -cow5a -coz5e -co5zi -c1q -cras5t -5crat. -5cratic -cre3at -5cred -4c3reta -cre4v -cri2 -cri5f -c4rin -cris4 -5criti -cro4pl -crop5o -cros4e -cru4d -4c3s2 -2c1t -cta4b -ct5ang -c5tant -c2te -c3ter -c4ticu -ctim3i -ctu4r -c4tw -cud5 -c4uf -c4ui -cu5ity -5culi -cul4tis -3cultu -cu2ma -c3ume -cu4mi -3cun -cu3pi -cu5py -cur5a4b -cu5ria -1cus -cuss4i -3c4ut -cu4tie -4c5utiv -4cutr -1cy -cze4 -1d2a -5da. -2d3a4b -dach4 -4daf -2dag -da2m2 -dan3g -dard5 -dark5 -4dary -3dat -4dativ -4dato -5dav4 -dav5e -5day -d1b -d5c -d1d4 -2de. -deaf5 -deb5it -de4bon -decan4 -de4cil -de5com -2d1ed -4dee. -de5if -deli4e -del5i5q -de5lo -d4em -5dem. -3demic -dem5ic. -de5mil -de4mons -demor5 -1den -de4nar -de3no -denti5f -de3nu -de1p -de3pa -depi4 -de2pu -d3eq -d4erh -5derm -dern5iz -der5s -des2 -d2es. -de1sc -de2s5o -des3ti -de3str -de4su -de1t -de2to -de1v -dev3il -4dey -4d1f -d4ga -d3ge4t -dg1i -d2gy -d1h2 -5di. -1d4i3a -dia5b -di4cam -d4ice -3dict -3did -5di3en -d1if -di3ge -di4lato -d1in -1dina -3dine. -5dini -di5niz -1dio -dio5g -di4pl -dir2 -di1re -dirt5i -dis1 -5disi -d4is3t -d2iti -1di1v -d1j -d5k2 -4d5la -3dle. -3dled -3dles. -4dless -2d3lo -4d5lu -2dly -d1m -4d1n4 -1do -3do. -do5de -5doe -2d5of -d4og -do4la -doli4 -do5lor -dom5iz -do3nat -doni4 -doo3d -dop4p -d4or -3dos -4d5out -do4v -3dox -d1p -1dr -drag5on -4drai -dre4 -drea5r -5dren -dri4b -dril4 -dro4p -4drow -5drupli -4dry -2d1s2 -ds4p -d4sw -d4sy -d2th -1du -d1u1a -du2c -d1uca -duc5er -4duct. -4ducts -du5el -du4g -d3ule -dum4be -du4n -4dup -du4pe -d1v -d1w -d2y -5dyn -dy4se -dys5p -e1a4b -e3act -ead1 -ead5ie -ea4ge -ea5ger -ea4l -eal5er -eal3ou -eam3er -e5and -ear3a -ear4c -ear5es -ear4ic -ear4il -ear5k -ear2t -eart3e -ea5sp -e3ass -east3 -ea2t -eat5en -eath3i -e5atif -e4a3tu -ea2v -eav3en -eav5i -eav5o -2e1b -e4bel. -e4bels -e4ben -e4bit -e3br -e4cad -ecan5c -ecca5 -e1ce -ec5essa -ec2i -e4cib -ec5ificat -ec5ifie -ec5ify -ec3im -eci4t -e5cite -e4clam -e4clus -e2col -e4comm -e4compe -e4conc -e2cor -ec3ora -eco5ro -e1cr -e4crem -ec4tan -ec4te -e1cu -e4cul -ec3ula -2e2da -4ed3d -e4d1er -ede4s -4edi -e3dia -ed3ib -ed3ica -ed3im -ed1it -edi5z -4edo -e4dol -edon2 -e4dri -e4dul -ed5ulo -ee2c -eed3i -ee2f -eel3i -ee4ly -ee2m -ee4na -ee4p1 -ee2s4 -eest4 -ee4ty -e5ex -e1f -e4f3ere -1eff -e4fic -5efici -efil4 -e3fine -ef5i5nite -3efit -efor5es -e4fuse. -4egal -eger4 -eg5ib -eg4ic -eg5ing -e5git5 -eg5n -e4go. -e4gos -eg1ul -e5gur -5egy -e1h4 -eher4 -ei2 -e5ic -ei5d -eig2 -ei5gl -e3imb -e3inf -e1ing -e5inst -eir4d -eit3e -ei3th -e5ity -e1j -e4jud -ej5udi -eki4n -ek4la -e1la -e4la. -e4lac -elan4d -el5ativ -e4law -elaxa4 -e3lea -el5ebra -5elec -e4led -el3ega -e5len -e4l1er -e1les -el2f -el2i -e3libe -e4l5ic. -el3ica -e3lier -el5igib -e5lim -e4l3ing -e3lio -e2lis -el5ish -e3liv3 -4ella -el4lab -ello4 -e5loc -el5og -el3op. -el2sh -el4ta -e5lud -el5ug -e4mac -e4mag -e5man -em5ana -em5b -e1me -e2mel -e4met -em3ica -emi4e -em5igra -em1in2 -em5ine -em3i3ni -e4mis -em5ish -e5miss -em3iz -5emniz -emo4g -emoni5o -em3pi -e4mul -em5ula -emu3n -e3my -en5amo -e4nant -ench4er -en3dic -e5nea -e5nee -en3em -en5ero -en5esi -en5est -en3etr -e3new -en5ics -e5nie -e5nil -e3nio -en3ish -en3it -e5niu -5eniz -4enn -4eno -eno4g -e4nos -en3ov -en4sw -ent5age -4enthes -en3ua -en5uf -e3ny. -4en3z -e5of -eo2g -e4oi4 -e3ol -eop3ar -e1or -eo3re -eo5rol -eos4 -e4ot -eo4to -e5out -e5ow -e2pa -e3pai -ep5anc -e5pel -e3pent -ep5etitio -ephe4 -e4pli -e1po -e4prec -ep5reca -e4pred -ep3reh -e3pro -e4prob -ep4sh -ep5ti5b -e4put -ep5uta -e1q -equi3l -e4q3ui3s -er1a -era4b -4erand -er3ar -4erati. -2erb -er4bl -er3ch -er4che -2ere. -e3real -ere5co -ere3in -er5el. -er3emo -er5ena -er5ence -4erene -er3ent -ere4q -er5ess -er3est -eret4 -er1h -er1i -e1ria4 -5erick -e3rien -eri4er -er3ine -e1rio -4erit -er4iu -eri4v -e4riva -er3m4 -er4nis -4ernit -5erniz -er3no -2ero -er5ob -e5roc -ero4r -er1ou -er1s -er3set -ert3er -4ertl -er3tw -4eru -eru4t -5erwau -e1s4a -e4sage. -e4sages -es2c -e2sca -es5can -e3scr -es5cu -e1s2e -e2sec -es5ecr -es5enc -e4sert. -e4serts -e4serva -4esh -e3sha -esh5en -e1si -e2sic -e2sid -es5iden -es5igna -e2s5im -es4i4n -esis4te -esi4u -e5skin -es4mi -e2sol -es3olu -e2son -es5ona -e1sp -es3per -es5pira -es4pre -2ess -es4si4b -estan4 -es3tig -es5tim -4es2to -e3ston -2estr -e5stro -estruc5 -e2sur -es5urr -es4w -eta4b -eten4d -e3teo -ethod3 -et1ic -e5tide -etin4 -eti4no -e5tir -e5titio -et5itiv -4etn -et5ona -e3tra -e3tre -et3ric -et5rif -et3rog -et5ros -et3ua -et5ym -et5z -4eu -e5un -e3up -eu3ro -eus4 -eute4 -euti5l -eu5tr -eva2p5 -e2vas -ev5ast -e5vea -ev3ell -evel3o -e5veng -even4i -ev1er -e5verb -e1vi -ev3id -evi4l -e4vin -evi4v -e5voc -e5vu -e1wa -e4wag -e5wee -e3wh -ewil5 -ew3ing -e3wit -1exp -5eyc -5eye. -eys4 -1fa -fa3bl -fab3r -fa4ce -4fag -fain4 -fall5e -4fa4ma -fam5is -5far -far5th -fa3ta -fa3the -4fato -fault5 -4f5b -4fd -4fe. -feas4 -feath3 -fe4b -4feca -5fect -2fed -fe3li -fe4mo -fen2d -fend5e -fer1 -5ferr -fev4 -4f1f -f4fes -f4fie -f5fin. -f2f5is -f4fly -f2fy -4fh -1fi -fi3a -2f3ic. -4f3ical -f3ican -4ficate -f3icen -fi3cer -fic4i -5ficia -5ficie -4fics -fi3cu -fi5del -fight5 -fil5i -fill5in -4fily -2fin -5fina -fin2d5 -fi2ne -f1in3g -fin4n -fis4ti -f4l2 -f5less -flin4 -flo3re -f2ly5 -4fm -4fn -1fo -5fon -fon4de -fon4t -fo2r -fo5rat -for5ay -fore5t -for4i -fort5a -fos5 -4f5p -fra4t -f5rea -fres5c -fri2 -fril4 -frol5 -2f3s -2ft -f4to -f2ty -3fu -fu5el -4fug -fu4min -fu5ne -fu3ri -fusi4 -fus4s -4futa -1fy -1ga -gaf4 -5gal. -3gali -ga3lo -2gam -ga5met -g5amo -gan5is -ga3niz -gani5za -4gano -gar5n4 -gass4 -gath3 -4gativ -4gaz -g3b -gd4 -2ge. -2ged -geez4 -gel4in -ge5lis -ge5liz -4gely -1gen -ge4nat -ge5niz -4geno -4geny -1geo -ge3om -g4ery -5gesi -geth5 -4geto -ge4ty -ge4v -4g1g2 -g2ge -g3ger -gglu5 -ggo4 -gh3in -gh5out -gh4to -5gi. -1gi4a -gia5r -g1ic -5gicia -g4ico -gien5 -5gies. -gil4 -g3imen -3g4in. -gin5ge -5g4ins -5gio -3gir -gir4l -g3isl -gi4u -5giv -3giz -gl2 -gla4 -glad5i -5glas -1gle -gli4b -g3lig -3glo -glo3r -g1m -g4my -gn4a -g4na. -gnet4t -g1ni -g2nin -g4nio -g1no -g4non -1go -3go. -gob5 -5goe -3g4o4g -go3is -gon2 -4g3o3na -gondo5 -go3ni -5goo -go5riz -gor5ou -5gos. -gov1 -g3p -1gr -4grada -g4rai -gran2 -5graph. -g5rapher -5graphic -4graphy -4gray -gre4n -4gress. -4grit -g4ro -gruf4 -gs2 -g5ste -gth3 -gu4a -3guard -2gue -5gui5t -3gun -3gus -4gu4t -g3w -1gy -2g5y3n -gy5ra -h3ab4l -hach4 -hae4m -hae4t -h5agu -ha3la -hala3m -ha4m -han4ci -han4cy -5hand. -han4g -hang5er -hang5o -h5a5niz -han4k -han4te -hap3l -hap5t -ha3ran -ha5ras -har2d -hard3e -har4le -harp5en -har5ter -has5s -haun4 -5haz -haz3a -h1b -1head -3hear -he4can -h5ecat -h4ed -he5do5 -he3l4i -hel4lis -hel4ly -h5elo -hem4p -he2n -hena4 -hen5at -heo5r -hep5 -h4era -hera3p -her4ba -here5a -h3ern -h5erou -h3ery -h1es -he2s5p -he4t -het4ed -heu4 -h1f -h1h -hi5an -hi4co -high5 -h4il2 -himer4 -h4ina -hion4e -hi4p -hir4l -hi3ro -hir4p -hir4r -his3el -his4s -hith5er -hi2v -4hk -4h1l4 -hlan4 -h2lo -hlo3ri -4h1m -hmet4 -2h1n -h5odiz -h5ods -ho4g -hoge4 -hol5ar -3hol4e -ho4ma -home3 -hon4a -ho5ny -3hood -hoon4 -hor5at -ho5ris -hort3e -ho5ru -hos4e -ho5sen -hos1p -1hous -house3 -hov5el -4h5p -4hr4 -hree5 -hro5niz -hro3po -4h1s2 -h4sh -h4tar -ht1en -ht5es -h4ty -hu4g -hu4min -hun5ke -hun4t -hus3t4 -hu4t -h1w -h4wart -hy3pe -hy3ph -hy2s -2i1a -i2al -iam4 -iam5ete -i2an -4ianc -ian3i -4ian4t -ia5pe -iass4 -i4ativ -ia4tric -i4atu -ibe4 -ib3era -ib5ert -ib5ia -ib3in -ib5it. -ib5ite -i1bl -ib3li -i5bo -i1br -i2b5ri -i5bun -4icam -5icap -4icar -i4car. -i4cara -icas5 -i4cay -iccu4 -4iceo -4ich -2ici -i5cid -ic5ina -i2cip -ic3ipa -i4cly -i2c5oc -4i1cr -5icra -i4cry -ic4te -ictu2 -ic4t3ua -ic3ula -ic4um -ic5uo -i3cur -2id -i4dai -id5anc -id5d -ide3al -ide4s -i2di -id5ian -idi4ar -i5die -id3io -idi5ou -id1it -id5iu -i3dle -i4dom -id3ow -i4dr -i2du -id5uo -2ie4 -ied4e -5ie5ga -ield3 -ien5a4 -ien4e -i5enn -i3enti -i1er. -i3esc -i1est -i3et -4if. -if5ero -iff5en -if4fr -4ific. -i3fie -i3fl -4ift -2ig -iga5b -ig3era -ight3i -4igi -i3gib -ig3il -ig3in -ig3it -i4g4l -i2go -ig3or -ig5ot -i5gre -igu5i -ig1ur -i3h -4i5i4 -i3j -4ik -i1la -il3a4b -i4lade -i2l5am -ila5ra -i3leg -il1er -ilev4 -il5f -il1i -il3ia -il2ib -il3io -il4ist -2ilit -il2iz -ill5ab -4iln -il3oq -il4ty -il5ur -il3v -i4mag -im3age -ima5ry -imenta5r -4imet -im1i -im5ida -imi5le -i5mini -4imit -im4ni -i3mon -i2mu -im3ula -2in. -i4n3au -4inav -incel4 -in3cer -4ind -in5dling -2ine -i3nee -iner4ar -i5ness -4inga -4inge -in5gen -4ingi -in5gling -4ingo -4ingu -2ini -i5ni. -i4nia -in3io -in1is -i5nite. -5initio -in3ity -4ink -4inl -2inn -2i1no -i4no4c -ino4s -i4not -2ins -in3se -insur5a -2int. -2in4th -in1u -i5nus -4iny -2io -4io. -ioge4 -io2gr -i1ol -io4m -ion3at -ion4ery -ion3i -io5ph -ior3i -i4os -io5th -i5oti -io4to -i4our -2ip -ipe4 -iphras4 -ip3i -ip4ic -ip4re4 -ip3ul -i3qua -iq5uef -iq3uid -iq3ui3t -4ir -i1ra -ira4b -i4rac -ird5e -ire4de -i4ref -i4rel4 -i4res -ir5gi -ir1i -iri5de -ir4is -iri3tu -5i5r2iz -ir4min -iro4g -5iron. -ir5ul -2is. -is5ag -is3ar -isas5 -2is1c -is3ch -4ise -is3er -3isf -is5han -is3hon -ish5op -is3ib -isi4d -i5sis -is5itiv -4is4k -islan4 -4isms -i2so -iso5mer -is1p -is2pi -is4py -4is1s -is4sal -issen4 -is4ses -is4ta. -is1te -is1ti -ist4ly -4istral -i2su -is5us -4ita. -ita4bi -i4tag -4ita5m -i3tan -i3tat -2ite -it3era -i5teri -it4es -2ith -i1ti -4itia -4i2tic -it3ica -5i5tick -it3ig -it5ill -i2tim -2itio -4itis -i4tism -i2t5o5m -4iton -i4tram -it5ry -4itt -it3uat -i5tud -it3ul -4itz. -i1u -2iv -iv3ell -iv3en. -i4v3er. -i4vers. -iv5il. -iv5io -iv1it -i5vore -iv3o3ro -i4v3ot -4i5w -ix4o -4iy -4izar -izi4 -5izont -5ja -jac4q -ja4p -1je -jer5s -4jestie -4jesty -jew3 -jo4p -5judg -3ka. -k3ab -k5ag -kais4 -kal4 -k1b -k2ed -1kee -ke4g -ke5li -k3en4d -k1er -kes4 -k3est. -ke4ty -k3f -kh4 -k1i -5ki. -5k2ic -k4ill -kilo5 -k4im -k4in. -kin4de -k5iness -kin4g -ki4p -kis4 -k5ish -kk4 -k1l -4kley -4kly -k1m -k5nes -1k2no -ko5r -kosh4 -k3ou -kro5n -4k1s2 -k4sc -ks4l -k4sy -k5t -k1w -lab3ic -l4abo -laci4 -l4ade -la3dy -lag4n -lam3o -3land -lan4dl -lan5et -lan4te -lar4g -lar3i -las4e -la5tan -4lateli -4lativ -4lav -la4v4a -2l1b -lbin4 -4l1c2 -lce4 -l3ci -2ld -l2de -ld4ere -ld4eri -ldi4 -ld5is -l3dr -l4dri -le2a -le4bi -left5 -5leg. -5legg -le4mat -lem5atic -4len. -3lenc -5lene. -1lent -le3ph -le4pr -lera5b -ler4e -3lerg -3l4eri -l4ero -les2 -le5sco -5lesq -3less -5less. -l3eva -lev4er. -lev4era -lev4ers -3ley -4leye -2lf -l5fr -4l1g4 -l5ga -lgar3 -l4ges -lgo3 -2l3h -li4ag -li2am -liar5iz -li4as -li4ato -li5bi -5licio -li4cor -4lics -4lict. -l4icu -l3icy -l3ida -lid5er -3lidi -lif3er -l4iff -li4fl -5ligate -3ligh -li4gra -3lik -4l4i4l -lim4bl -lim3i -li4mo -l4im4p -l4ina -1l4ine -lin3ea -lin3i -link5er -li5og -4l4iq -lis4p -l1it -l2it. -5litica -l5i5tics -liv3er -l1iz -4lj -lka3 -l3kal -lka4t -l1l -l4law -l2le -l5lea -l3lec -l3leg -l3lel -l3le4n -l3le4t -ll2i -l2lin4 -l5lina -ll4o -lloqui5 -ll5out -l5low -2lm -l5met -lm3ing -l4mod -lmon4 -2l1n2 -3lo. -lob5al -lo4ci -4lof -3logic -l5ogo -3logu -lom3er -5long -lon4i -l3o3niz -lood5 -5lope. -lop3i -l3opm -lora4 -lo4rato -lo5rie -lor5ou -5los. -los5et -5losophiz -5losophy -los4t -lo4ta -loun5d -2lout -4lov -2lp -lpa5b -l3pha -l5phi -lp5ing -l3pit -l4pl -l5pr -4l1r -2l1s2 -l4sc -l2se -l4sie -4lt -lt5ag -ltane5 -l1te -lten4 -ltera4 -lth3i -l5ties. -ltis4 -l1tr -ltu2 -ltur3a -lu5a -lu3br -luch4 -lu3ci -lu3en -luf4 -lu5id -lu4ma -5lumi -l5umn. -5lumnia -lu3o -luo3r -4lup -luss4 -lus3te -1lut -l5ven -l5vet4 -2l1w -1ly -4lya -4lyb -ly5me -ly3no -2lys4 -l5yse -1ma -2mab -ma2ca -ma5chine -ma4cl -mag5in -5magn -2mah -maid5 -4mald -ma3lig -ma5lin -mal4li -mal4ty -5mania -man5is -man3iz -4map -ma5rine. -ma5riz -mar4ly -mar3v -ma5sce -mas4e -mas1t -5mate -math3 -ma3tis -4matiza -4m1b -mba4t5 -m5bil -m4b3ing -mbi4v -4m5c -4me. -2med -4med. -5media -me3die -m5e5dy -me2g -mel5on -mel4t -me2m -mem1o3 -1men -men4a -men5ac -men4de -4mene -men4i -mens4 -mensu5 -3ment -men4te -me5on -m5ersa -2mes -3mesti -me4ta -met3al -me1te -me5thi -m4etr -5metric -me5trie -me3try -me4v -4m1f -2mh -5mi. -mi3a -mid4a -mid4g -mig4 -3milia -m5i5lie -m4ill -min4a -3mind -m5inee -m4ingl -min5gli -m5ingly -min4t -m4inu -miot4 -m2is -mis4er. -mis5l -mis4ti -m5istry -4mith -m2iz -4mk -4m1l -m1m -mma5ry -4m1n -mn4a -m4nin -mn4o -1mo -4mocr -5mocratiz -mo2d1 -mo4go -mois2 -moi5se -4mok -mo5lest -mo3me -mon5et -mon5ge -moni3a -mon4ism -mon4ist -mo3niz -monol4 -mo3ny. -mo2r -4mora. -mos2 -mo5sey -mo3sp -moth3 -m5ouf -3mous -mo2v -4m1p -mpara5 -mpa5rab -mpar5i -m3pet -mphas4 -m2pi -mpi4a -mp5ies -m4p1in -m5pir -mp5is -mpo3ri -mpos5ite -m4pous -mpov5 -mp4tr -m2py -4m3r -4m1s2 -m4sh -m5si -4mt -1mu -mula5r4 -5mult -multi3 -3mum -mun2 -4mup -mu4u -4mw -1na -2n1a2b -n4abu -4nac. -na4ca -n5act -nag5er. -nak4 -na4li -na5lia -4nalt -na5mit -n2an -nanci4 -nan4it -nank4 -nar3c -4nare -nar3i -nar4l -n5arm -n4as -nas4c -nas5ti -n2at -na3tal -nato5miz -n2au -nau3se -3naut -nav4e -4n1b4 -ncar5 -n4ces. -n3cha -n5cheo -n5chil -n3chis -nc1in -nc4it -ncour5a -n1cr -n1cu -n4dai -n5dan -n1de -nd5est. -ndi4b -n5d2if -n1dit -n3diz -n5duc -ndu4r -nd2we -2ne. -n3ear -ne2b -neb3u -ne2c -5neck -2ned -ne4gat -neg5ativ -5nege -ne4la -nel5iz -ne5mi -ne4mo -1nen -4nene -3neo -ne4po -ne2q -n1er -nera5b -n4erar -n2ere -n4er5i -ner4r -1nes -2nes. -4nesp -2nest -4nesw -3netic -ne4v -n5eve -ne4w -n3f -n4gab -n3gel -nge4n4e -n5gere -n3geri -ng5ha -n3gib -ng1in -n5git -n4gla -ngov4 -ng5sh -n1gu -n4gum -n2gy -4n1h4 -nha4 -nhab3 -nhe4 -3n4ia -ni3an -ni4ap -ni3ba -ni4bl -ni4d -ni5di -ni4er -ni2fi -ni5ficat -n5igr -nik4 -n1im -ni3miz -n1in -5nine. -nin4g -ni4o -5nis. -nis4ta -n2it -n4ith -3nitio -n3itor -ni3tr -n1j -4nk2 -n5kero -n3ket -nk3in -n1kl -4n1l -n5m -nme4 -nmet4 -4n1n2 -nne4 -nni3al -nni4v -nob4l -no3ble -n5ocl -4n3o2d -3noe -4nog -noge4 -nois5i -no5l4i -5nologis -3nomic -n5o5miz -no4mo -no3my -no4n -non4ag -non5i -n5oniz -4nop -5nop5o5li -nor5ab -no4rary -4nosc -nos4e -nos5t -no5ta -1nou -3noun -nov3el3 -nowl3 -n1p4 -npi4 -npre4c -n1q -n1r -nru4 -2n1s2 -ns5ab -nsati4 -ns4c -n2se -n4s3es -nsid1 -nsig4 -n2sl -ns3m -n4soc -ns4pe -n5spi -nsta5bl -n1t -nta4b -nter3s -nt2i -n5tib -nti4er -nti2f -n3tine -n4t3ing -nti4p -ntrol5li -nt4s -ntu3me -nu1a -nu4d -nu5en -nuf4fe -n3uin -3nu3it -n4um -nu1me -n5umi -3nu4n -n3uo -nu3tr -n1v2 -n1w4 -nym4 -nyp4 -4nz -n3za -4oa -oad3 -o5a5les -oard3 -oas4e -oast5e -oat5i -ob3a3b -o5bar -obe4l -o1bi -o2bin -ob5ing -o3br -ob3ul -o1ce -och4 -o3chet -ocif3 -o4cil -o4clam -o4cod -oc3rac -oc5ratiz -ocre3 -5ocrit -octor5a -oc3ula -o5cure -od5ded -od3ic -odi3o -o2do4 -odor3 -od5uct. -od5ucts -o4el -o5eng -o3er -oe4ta -o3ev -o2fi -of5ite -ofit4t -o2g5a5r -og5ativ -o4gato -o1ge -o5gene -o5geo -o4ger -o3gie -1o1gis -og3it -o4gl -o5g2ly -3ogniz -o4gro -ogu5i -1ogy -2ogyn -o1h2 -ohab5 -oi2 -oic3es -oi3der -oiff4 -oig4 -oi5let -o3ing -oint5er -o5ism -oi5son -oist5en -oi3ter -o5j -2ok -o3ken -ok5ie -o1la -o4lan -olass4 -ol2d -old1e -ol3er -o3lesc -o3let -ol4fi -ol2i -o3lia -o3lice -ol5id. -o3li4f -o5lil -ol3ing -o5lio -o5lis. -ol3ish -o5lite -o5litio -o5liv -olli4e -ol5ogiz -olo4r -ol5pl -ol2t -ol3ub -ol3ume -ol3un -o5lus -ol2v -o2ly -om5ah -oma5l -om5atiz -om2be -om4bl -o2me -om3ena -om5erse -o4met -om5etry -o3mia -om3ic. -om3ica -o5mid -om1in -o5mini -5ommend -omo4ge -o4mon -om3pi -ompro5 -o2n -on1a -on4ac -o3nan -on1c -3oncil -2ond -on5do -o3nen -on5est -on4gu -on1ic -o3nio -on1is -o5niu -on3key -on4odi -on3omy -on3s -onspi4 -onspir5a -onsu4 -onten4 -on3t4i -ontif5 -on5um -onva5 -oo2 -ood5e -ood5i -oo4k -oop3i -o3ord -oost5 -o2pa -ope5d -op1er -3opera -4operag -2oph -o5phan -o5pher -op3ing -o3pit -o5pon -o4posi -o1pr -op1u -opy5 -o1q -o1ra -o5ra. -o4r3ag -or5aliz -or5ange -ore5a -o5real -or3ei -ore5sh -or5est. -orew4 -or4gu -4o5ria -or3ica -o5ril -or1in -o1rio -or3ity -o3riu -or2mi -orn2e -o5rof -or3oug -or5pe -3orrh -or4se -ors5en -orst4 -or3thi -or3thy -or4ty -o5rum -o1ry -os3al -os2c -os4ce -o3scop -4oscopi -o5scr -os4i4e -os5itiv -os3ito -os3ity -osi4u -os4l -o2so -os4pa -os4po -os2ta -o5stati -os5til -os5tit -o4tan -otele4g -ot3er. -ot5ers -o4tes -4oth -oth5esi -oth3i4 -ot3ic. -ot5ica -o3tice -o3tif -o3tis -oto5s -ou2 -ou3bl -ouch5i -ou5et -ou4l -ounc5er -oun2d -ou5v -ov4en -over4ne -over3s -ov4ert -o3vis -oviti4 -o5v4ol -ow3der -ow3el -ow5est -ow1i -own5i -o4wo -oy1a -1pa -pa4ca -pa4ce -pac4t -p4ad -5pagan -p3agat -p4ai -pain4 -p4al -pan4a -pan3el -pan4ty -pa3ny -pa1p -pa4pu -para5bl -par5age -par5di -3pare -par5el -p4a4ri -par4is -pa2te -pa5ter -5pathic -pa5thy -pa4tric -pav4 -3pay -4p1b -pd4 -4pe. -3pe4a -pear4l -pe2c -2p2ed -3pede -3pedi -pedia4 -ped4ic -p4ee -pee4d -pek4 -pe4la -peli4e -pe4nan -p4enc -pen4th -pe5on -p4era. -pera5bl -p4erag -p4eri -peri5st -per4mal -perme5 -p4ern -per3o -per3ti -pe5ru -per1v -pe2t -pe5ten -pe5tiz -4pf -4pg -4ph. -phar5i -phe3no -ph4er -ph4es. -ph1ic -5phie -ph5ing -5phisti -3phiz -ph2l -3phob -3phone -5phoni -pho4r -4phs -ph3t -5phu -1phy -pi3a -pian4 -pi4cie -pi4cy -p4id -p5ida -pi3de -5pidi -3piec -pi3en -pi4grap -pi3lo -pi2n -p4in. -pind4 -p4ino -3pi1o -pion4 -p3ith -pi5tha -pi2tu -2p3k2 -1p2l2 -3plan -plas5t -pli3a -pli5er -4plig -pli4n -ploi4 -plu4m -plum4b -4p1m -2p3n -po4c -5pod. -po5em -po3et5 -5po4g -poin2 -5point -poly5t -po4ni -po4p -1p4or -po4ry -1pos -pos1s -p4ot -po4ta -5poun -4p1p -ppa5ra -p2pe -p4ped -p5pel -p3pen -p3per -p3pet -ppo5site -pr2 -pray4e -5preci -pre5co -pre3em -pref5ac -pre4la -pre3r -p3rese -3press -pre5ten -pre3v -5pri4e -prin4t3 -pri4s -pris3o -p3roca -prof5it -pro3l -pros3e -pro1t -2p1s2 -p2se -ps4h -p4sib -2p1t -pt5a4b -p2te -p2th -pti3m -ptu4r -p4tw -pub3 -pue4 -puf4 -pul3c -pu4m -pu2n -pur4r -5pus -pu2t -5pute -put3er -pu3tr -put4ted -put4tin -p3w -qu2 -qua5v -2que. -3quer -3quet -2rab -ra3bi -rach4e -r5acl -raf5fi -raf4t -r2ai -ra4lo -ram3et -r2ami -rane5o -ran4ge -r4ani -ra5no -rap3er -3raphy -rar5c -rare4 -rar5ef -4raril -r2as -ration4 -rau4t -ra5vai -rav3el -ra5zie -r1b -r4bab -r4bag -rbi2 -rbi4f -r2bin -r5bine -rb5ing. -rb4o -r1c -r2ce -rcen4 -r3cha -rch4er -r4ci4b -rc4it -rcum3 -r4dal -rd2i -rdi4a -rdi4er -rdin4 -rd3ing -2re. -re1al -re3an -re5arr -5reav -re4aw -r5ebrat -rec5oll -rec5ompe -re4cre -2r2ed -re1de -re3dis -red5it -re4fac -re2fe -re5fer. -re3fi -re4fy -reg3is -re5it -re1li -re5lu -r4en4ta -ren4te -re1o -re5pin -re4posi -re1pu -r1er4 -r4eri -rero4 -re5ru -r4es. -re4spi -ress5ib -res2t -re5stal -re3str -re4ter -re4ti4z -re3tri -reu2 -re5uti -rev2 -re4val -rev3el -r5ev5er. -re5vers -re5vert -re5vil -rev5olu -re4wh -r1f -rfu4 -r4fy -rg2 -rg3er -r3get -r3gic -rgi4n -rg3ing -r5gis -r5git -r1gl -rgo4n -r3gu -rh4 -4rh. -4rhal -ri3a -ria4b -ri4ag -r4ib -rib3a -ric5as -r4ice -4rici -5ricid -ri4cie -r4ico -rid5er -ri3enc -ri3ent -ri1er -ri5et -rig5an -5rigi -ril3iz -5riman -rim5i -3rimo -rim4pe -r2ina -5rina. -rin4d -rin4e -rin4g -ri1o -5riph -riph5e -ri2pl -rip5lic -r4iq -r2is -r4is. -ris4c -r3ish -ris4p -ri3ta3b -r5ited. -rit5er. -rit5ers -rit3ic -ri2tu -rit5ur -riv5el -riv3et -riv3i -r3j -r3ket -rk4le -rk4lin -r1l -rle4 -r2led -r4lig -r4lis -rl5ish -r3lo4 -r1m -rma5c -r2me -r3men -rm5ers -rm3ing -r4ming. -r4mio -r3mit -r4my -r4nar -r3nel -r4ner -r5net -r3ney -r5nic -r1nis4 -r3nit -r3niv -rno4 -r4nou -r3nu -rob3l -r2oc -ro3cr -ro4e -ro1fe -ro5fil -rok2 -ro5ker -5role. -rom5ete -rom4i -rom4p -ron4al -ron4e -ro5n4is -ron4ta -1room -5root -ro3pel -rop3ic -ror3i -ro5ro -ros5per -ros4s -ro4the -ro4ty -ro4va -rov5el -rox5 -r1p -r4pea -r5pent -rp5er. -r3pet -rp4h4 -rp3ing -r3po -r1r4 -rre4c -rre4f -r4reo -rre4st -rri4o -rri4v -rron4 -rros4 -rrys4 -4rs2 -r1sa -rsa5ti -rs4c -r2se -r3sec -rse4cr -rs5er. -rs3es -rse5v2 -r1sh -r5sha -r1si -r4si4b -rson3 -r1sp -r5sw -rtach4 -r4tag -r3teb -rten4d -rte5o -r1ti -rt5ib -rti4d -r4tier -r3tig -rtil3i -rtil4l -r4tily -r4tist -r4tiv -r3tri -rtroph4 -rt4sh -ru3a -ru3e4l -ru3en -ru4gl -ru3in -rum3pl -ru2n -runk5 -run4ty -r5usc -ruti5n -rv4e -rvel4i -r3ven -rv5er. -r5vest -r3vey -r3vic -rvi4v -r3vo -r1w -ry4c -5rynge -ry3t -sa2 -2s1ab -5sack -sac3ri -s3act -5sai -salar4 -sal4m -sa5lo -sal4t -3sanc -san4de -s1ap -sa5ta -5sa3tio -sat3u -sau4 -sa5vor -5saw -4s5b -scan4t5 -sca4p -scav5 -s4ced -4scei -s4ces -sch2 -s4cho -3s4cie -5scin4d -scle5 -s4cli -scof4 -4scopy -scour5a -s1cu -4s5d -4se. -se4a -seas4 -sea5w -se2c3o -3sect -4s4ed -se4d4e -s5edl -se2g -seg3r -5sei -se1le -5self -5selv -4seme -se4mol -sen5at -4senc -sen4d -s5ened -sen5g -s5enin -4sentd -4sentl -sep3a3 -4s1er. -s4erl -ser4o -4servo -s1e4s -se5sh -ses5t -5se5um -5sev -sev3en -sew4i -5sex -4s3f -2s3g -s2h -2sh. -sh1er -5shev -sh1in -sh3io -3ship -shiv5 -sho4 -sh5old -shon3 -shor4 -short5 -4shw -si1b -s5icc -3side. -5sides -5sidi -si5diz -4signa -sil4e -4sily -2s1in -s2ina -5sine. -s3ing -1sio -5sion -sion5a -si2r -sir5a -1sis -3sitio -5siu -1siv -5siz -sk2 -4ske -s3ket -sk5ine -sk5ing -s1l2 -s3lat -s2le -slith5 -2s1m -s3ma -small3 -sman3 -smel4 -s5men -5smith -smol5d4 -s1n4 -1so -so4ce -soft3 -so4lab -sol3d2 -so3lic -5solv -3som -3s4on. -sona4 -son4g -s4op -5sophic -s5ophiz -s5ophy -sor5c -sor5d -4sov -so5vi -2spa -5spai -spa4n -spen4d -2s5peo -2sper -s2phe -3spher -spho5 -spil4 -sp5ing -4spio -s4ply -s4pon -spor4 -4spot -squal4l -s1r -2ss -s1sa -ssas3 -s2s5c -s3sel -s5seng -s4ses. -s5set -s1si -s4sie -ssi4er -ss5ily -s4sl -ss4li -s4sn -sspend4 -ss2t -ssur5a -ss5w -2st. -s2tag -s2tal -stam4i -5stand -s4ta4p -5stat. -s4ted -stern5i -s5tero -ste2w -stew5a -s3the -st2i -s4ti. -s5tia -s1tic -5stick -s4tie -s3tif -st3ing -5stir -s1tle -5stock -stom3a -5stone -s4top -3store -st4r -s4trad -5stratu -s4tray -s4trid -4stry -4st3w -s2ty -1su -su1al -su4b3 -su2g3 -su5is -suit3 -s4ul -su2m -sum3i -su2n -su2r -4sv -sw2 -4swo -s4y -4syc -3syl -syn5o -sy5rin -1ta -3ta. -2tab -ta5bles -5taboliz -4taci -ta5do -4taf4 -tai5lo -ta2l -ta5la -tal5en -tal3i -4talk -tal4lis -ta5log -ta5mo -tan4de -tanta3 -ta5per -ta5pl -tar4a -4tarc -4tare -ta3riz -tas4e -ta5sy -4tatic -ta4tur -taun4 -tav4 -2taw -tax4is -2t1b -4tc -t4ch -tch5et -4t1d -4te. -tead4i -4teat -tece4 -5tect -2t1ed -te5di -1tee -teg4 -te5ger -te5gi -3tel. -teli4 -5tels -te2ma2 -tem3at -3tenan -3tenc -3tend -4tenes -1tent -ten4tag -1teo -te4p -te5pe -ter3c -5ter3d -1teri -ter5ies -ter3is -teri5za -5ternit -ter5v -4tes. -4tess -t3ess. -teth5e -3teu -3tex -4tey -2t1f -4t1g -2th. -than4 -th2e -4thea -th3eas -the5at -the3is -3thet -th5ic. -th5ica -4thil -5think -4thl -th5ode -5thodic -4thoo -thor5it -tho5riz -2ths -1tia -ti4ab -ti4ato -2ti2b -4tick -t4ico -t4ic1u -5tidi -3tien -tif2 -ti5fy -2tig -5tigu -till5in -1tim -4timp -tim5ul -2t1in -t2ina -3tine. -3tini -1tio -ti5oc -tion5ee -5tiq -ti3sa -3tise -tis4m -ti5so -tis4p -5tistica -ti3tl -ti4u -1tiv -tiv4a -1tiz -ti3za -ti3zen -2tl -t5la -tlan4 -3tle. -3tled -3tles. -t5let. -t5lo -4t1m -tme4 -2t1n2 -1to -to3b -to5crat -4todo -2tof -to2gr -to5ic -to2ma -tom4b -to3my -ton4ali -to3nat -4tono -4tony -to2ra -to3rie -tor5iz -tos2 -5tour -4tout -to3war -4t1p -1tra -tra3b -tra5ch -traci4 -trac4it -trac4te -tras4 -tra5ven -trav5es5 -tre5f -tre4m -trem5i -5tria -tri5ces -5tricia -4trics -2trim -tri4v -tro5mi -tron5i -4trony -tro5phe -tro3sp -tro3v -tru5i -trus4 -4t1s2 -t4sc -tsh4 -t4sw -4t3t2 -t4tes -t5to -ttu4 -1tu -tu1a -tu3ar -tu4bi -tud2 -4tue -4tuf4 -5tu3i -3tum -tu4nis -2t3up. -3ture -5turi -tur3is -tur5o -tu5ry -3tus -4tv -tw4 -4t1wa -twis4 -4two -1ty -4tya -2tyl -type3 -ty5ph -4tz -tz4e -4uab -uac4 -ua5na -uan4i -uar5ant -uar2d -uar3i -uar3t -u1at -uav4 -ub4e -u4bel -u3ber -u4bero -u1b4i -u4b5ing -u3ble. -u3ca -uci4b -uc4it -ucle3 -u3cr -u3cu -u4cy -ud5d -ud3er -ud5est -udev4 -u1dic -ud3ied -ud3ies -ud5is -u5dit -u4don -ud4si -u4du -u4ene -uens4 -uen4te -uer4il -3ufa -u3fl -ugh3en -ug5in -2ui2 -uil5iz -ui4n -u1ing -uir4m -uita4 -uiv3 -uiv4er. -u5j -4uk -u1la -ula5b -u5lati -ulch4 -5ulche -ul3der -ul4e -u1len -ul4gi -ul2i -u5lia -ul3ing -ul5ish -ul4lar -ul4li4b -ul4lis -4ul3m -u1l4o -4uls -uls5es -ul1ti -ultra3 -4ultu -u3lu -ul5ul -ul5v -um5ab -um4bi -um4bly -u1mi -u4m3ing -umor5o -um2p -unat4 -u2ne -un4er -u1ni -un4im -u2nin -un5ish -uni3v -un3s4 -un4sw -unt3ab -un4ter. -un4tes -unu4 -un5y -un5z -u4ors -u5os -u1ou -u1pe -uper5s -u5pia -up3ing -u3pl -up3p -upport5 -upt5ib -uptu4 -u1ra -4ura. -u4rag -u4ras -ur4be -urc4 -ur1d -ure5at -ur4fer -ur4fr -u3rif -uri4fic -ur1in -u3rio -u1rit -ur3iz -ur2l -url5ing. -ur4no -uros4 -ur4pe -ur4pi -urs5er -ur5tes -ur3the -urti4 -ur4tie -u3ru -2us -u5sad -u5san -us4ap -usc2 -us3ci -use5a -u5sia -u3sic -us4lin -us1p -us5sl -us5tere -us1tr -u2su -usur4 -uta4b -u3tat -4ute. -4utel -4uten -uten4i -4u1t2i -uti5liz -u3tine -ut3ing -ution5a -u4tis -5u5tiz -u4t1l -ut5of -uto5g -uto5matic -u5ton -u4tou -uts4 -u3u -uu4m -u1v2 -uxu3 -uz4e -1va -5va. -2v1a4b -vac5il -vac3u -vag4 -va4ge -va5lie -val5o -val1u -va5mo -va5niz -va5pi -var5ied -3vat -4ve. -4ved -veg3 -v3el. -vel3li -ve4lo -v4ely -ven3om -v5enue -v4erd -5vere. -v4erel -v3eren -ver5enc -v4eres -ver3ie -vermi4n -3verse -ver3th -v4e2s -4ves. -ves4te -ve4te -vet3er -ve4ty -vi5ali -5vian -5vide. -5vided -4v3iden -5vides -5vidi -v3if -vi5gn -vik4 -2vil -5vilit -v3i3liz -v1in -4vi4na -v2inc -vin5d -4ving -vio3l -v3io4r -vi1ou -vi4p -vi5ro -vis3it -vi3so -vi3su -4viti -vit3r -4vity -3viv -5vo. -voi4 -3vok -vo4la -v5ole -5volt -3volv -vom5i -vor5ab -vori4 -vo4ry -vo4ta -4votee -4vv4 -v4y -w5abl -2wac -wa5ger -wag5o -wait5 -w5al. -wam4 -war4t -was4t -wa1te -wa5ver -w1b -wea5rie -weath3 -wed4n -weet3 -wee5v -wel4l -w1er -west3 -w3ev -whi4 -wi2 -wil2 -will5in -win4de -win4g -wir4 -3wise -with3 -wiz5 -w4k -wl4es -wl3in -w4no -1wo2 -wom1 -wo5ven -w5p -wra4 -wri4 -writa4 -w3sh -ws4l -ws4pe -w5s4t -4wt -wy4 -x1a -xac5e -x4ago -xam3 -x4ap -xas5 -x3c2 -x1e -xe4cuto -x2ed -xer4i -xe5ro -x1h -xhi2 -xhil5 -xhu4 -x3i -xi5a -xi5c -xi5di -x4ime -xi5miz -x3o -x4ob -x3p -xpan4d -xpecto5 -xpe3d -x1t2 -x3ti -x1u -xu3a -xx4 -y5ac -3yar4 -y5at -y1b -y1c -y2ce -yc5er -y3ch -ych4e -ycom4 -ycot4 -y1d -y5ee -y1er -y4erf -yes4 -ye4t -y5gi -4y3h -y1i -y3la -ylla5bl -y3lo -y5lu -ymbol5 -yme4 -ympa3 -yn3chr -yn5d -yn5g -yn5ic -5ynx -y1o4 -yo5d -y4o5g -yom4 -yo5net -y4ons -y4os -y4ped -yper5 -yp3i -y3po -y4poc -yp2ta -y5pu -yra5m -yr5ia -y3ro -yr4r -ys4c -y3s2e -ys3ica -ys3io -3ysis -y4so -yss4 -ys1t -ys3ta -ysur4 -y3thin -yt3ic -y1w -za1 -z5a2b -zar2 -4zb -2ze -ze4n -ze4p -z1er -ze3ro -zet4 -2z1i -z4il -z4is -5zl -4zm -1zo -zo4m -zo5ol -zte4 -4z1z2 -z4zy -Á1Á -Á1Å -Á1É -Á1Ï -Á1Õ -Á1Ù -Á1Ü -Á1À -Á1Ñ -Å1Á -Å1Å -Å1É -Å1Ï -Å1Õ -Å1Ù -Å1Ü -Å1À -Å1Ñ -É1Á -É1Å -É1É -É1Ï -É1Õ -É1Ù -É1Ü -É1À -É1Ñ -Ï1Á -Ï1Å -Ï1É -Ï1Ï -Ï1Õ -Ï1Ù -Ï1Ü -Ï1À -Ï1Ñ -Õ1Á -Õ1Å -Õ1É -Õ1Ï -Õ1Õ -Õ1Ù -Õ1Ü -Õ1À -Õ1Ñ -Ù1Á -Ù1Å -Ù1É -Ù1Ï -Ù1Õ -Ù1Ù -Ù1Ü -Ù1À -Ù1Ñ -Ü1Á -Ü1Å -Ü1É -Ü1Ï -Ü1Õ -Ü1Ù -Ü1Ü -Ü1À -Ü1Ñ -À1Á -À1Å -À1É -À1Ï -À1Õ -À1Ù -À1Ü -À1À -À1Ñ -Ñ1Á -Ñ1Å -Ñ1É -Ñ1Ï -Ñ1Õ -Ñ1Ù -Ñ1Ü -Ñ1À -Ñ1Ñ -.ÂÄ2 -.ÂÌ2 -.ÂÒ2 -.ÂØ2 -.×Â2 -.×ÂÌ2 -.×ÂÒ2 -.××2 -.××Ò2 -.×ÇÌ2 -.×Ä2 -.×Ä×2 -.×ÄÒ2 -.×Ú2 -.×ÚÂ2 -.×Ú×2 -.×ÚÇ2 -.×ÚÇÌ2 -.×ÚÇÒ2 -.×ÚÄ2 -.×ÚÄÒ2 -.×ÚÌ2 -.×ÚÍ2 -.×ÚÒ2 -.×Úß2 -.×Ë2 -.×ËÌ2 -.×ËÒ2 -.×Ì2 -.×Í2 -.×Î2 -.×Ð2 -.×ÐÌ2 -.×ÐÒ2 -.×Ò2 -.×Ó2 -.×ÓË2 -.×ÓËÒ2 -.×ÓÌ2 -.×ÓÍ2 -.×ÓÐ2 -.×ÓÐÌ2 -.×ÓÐÒ2 -.×ÓÔ2 -.×ÓÔÒ2 -.×ÓÈ2 -.×ÓÈÌ2 -.×Ô2 -.×ÔÒ2 -.×È2 -.×Ã2 -.×Þ2 -.×Ø2 -.Ç×2 -.ÇÄ2 -.ÇÌ2 -.ÇÎ2 -.ÇÒ2 -.Ä×2 -.ÄÌ2 -.ÄÎ2 -.ÄÒ2 -.ÄØ2 -.Ö×2 -.ÖÇ2 -.ÖÇÌ2 -.ÖÄ2 -.ÖÖ2 -.ÖÒ2 -.Ú×2 -.ÚÄ2 -.ÚÄÒ2 -.ÚÌ2 -.ÚÍ2 -.ÚÎ2 -.ÚÒ2 -.Ë×2 -.ËÌ2 -.ËÎ2 -.ËÒ2 -.ËÓÔ2 -.ËÔ2 -.ÌÂ2 -.ÌÇ2 -.ÌÖ2 -.ÌØ2 -.ÌØ×2 -.ÍÇÌ2 -.ÍÇÎ2 -.ÍÌ2 -.ÍÎ2 -.ÍÒ2 -.ÍÓÔ2 -.ÍÈ2 -.ÍÞ2 -.ÍÝ2 -.ÎÒ2 -.ÐÌ2 -.ÐÎ2 -.ÐÒ2 -.ÐÓ2 -.ÐÔ2 -.ÐÈ2 -.ÐÞ2 -.ÐÛ2 -.ÐØ2 -.Ò×2 -.ÒÖ2 -.ÒÔ2 -.ÓÂ2 -.ÓÂÌ2 -.ÓÂÒ2 -.Ó×2 -.Ó×ÓÔ2 -.ÓÇ2 -.ÓÇÎ2 -.ÓÇÒ2 -.ÓÄ2 -.ÓÄ×2 -.ÓÄÒ2 -.ÓÖ2 -.ÓÚ2 -.ÓË2 -.ÓË×2 -.ÓËÌ2 -.ÓËÒ2 -.ÓÌ2 -.ÓÍ2 -.ÓÎ2 -.ÓÐ2 -.ÓÐÌ2 -.ÓÐÒ2 -.ÓÒ2 -.ÓÓ2 -.ÓÔ2 -.ÓÔ×2 -.ÓÔÌ2 -.ÓÔÒ2 -.ÓÆ2 -.ÓÈ2 -.ÓÈ×2 -.ÓÈÌ2 -.ÓÞ2 -.ÓÛ2 -.Óß2 -.Ô×2 -.ÔË2 -.ÔËÎ2 -.ÔÌ2 -.ÔÒ2 -.ÔÝ2 -.ÔØÍ2 -.ÔØÆ2 -.ÆÌ2 -.ÆÒ2 -.È×2 -.ÈÌ2 -.ÈÍ2 -.ÈÎ2 -.ÈÒ2 -.Ã×2 -.ÞÌ2 -.ÞÒ2 -.ÞÔ2 -.ÞØ2 -.Û×2 -.ÛË2 -.ÛË×2 -.ÛÌ2 -.ÛÎ2 -.ÛÐ2 -.ÛÒ2 -.ÛÔ2 -.ÛÔÒ2 -1ÂÁ -1ÂÅ -1ÂÉ -1ÂÏ -1ÂÕ -1ÂÙ -1ÂÑ -1×Á -1×Å -1×É -1×Ï -1×Õ -1×Ù -1×Ñ -1ÇÁ -1ÇÅ -1ÇÉ -1ÇÏ -1ÇÕ -1ÄÁ -1ÄÅ -1ÄÉ -1ÄÏ -1ÄÕ -1ÄÙ -1ÄÀ -1ÄÑ -1ÖÁ -1ÖÅ -1ÖÉ -1ÖÏ -1ÖÕ -1ÖÙ -1ÚÁ -1ÚÅ -1ÚÉ -1ÚÏ -1ÚÕ -1ÚÙ -1ÚÑ -1ËÁ -1ËÅ -1ËÉ -1ËÏ -1ËÕ -1ÌÁ -1ÌÅ -1ÌÉ -1ÌÏ -1ÌÕ -1ÌÙ -1ÌÀ -1ÌÑ -1ÍÁ -1ÍÅ -1ÍÉ -1ÍÏ -1ÍÕ -1ÍÙ -1ÍÑ -1ÎÁ -1ÎÅ -1ÎÉ -1ÎÏ -1ÎÕ -1ÎÙ -1ÎÀ -1ÎÑ -1ÐÁ -1ÐÅ -1ÐÉ -1ÐÏ -1ÐÕ -1ÐÙ -1ÐÑ -1ÒÁ -1ÒÅ -1ÒÉ -1ÒÏ -1ÒÕ -1ÒÙ -1ÒÀ -1ÒÑ -1ÓÁ -1ÓÅ -1ÓÉ -1ÓÏ -1ÓÕ -1ÓÙ -1ÓÑ -1ÔÁ -1ÔÅ -1ÔÉ -1ÔÏ -1ÔÕ -1ÔÙ -1ÔÀ -1ÔÑ -1ÆÁ -1ÆÅ -1ÆÉ -1ÆÏ -1ÆÕ -1ÆÙ -1ÈÁ -1ÈÅ -1ÈÉ -1ÈÏ -1ÈÕ -1ÃÁ -1ÃÅ -1ÃÉ -1ÃÏ -1ÃÕ -1ÃÙ -1ÞÁ -1ÞÅ -1ÞÉ -1ÞÏ -1ÞÕ -1ÛÁ -1ÛÅ -1ÛÉ -1ÛÏ -1ÛÕ -1ÝÁ -1ÝÅ -1ÝÉ -1ÝÏ diff --git a/contrib/tcpdump/print-token.c b/contrib/tcpdump/print-token.c deleted file mode 100644 index e1dff5b27e74..000000000000 --- a/contrib/tcpdump/print-token.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - * Copyright (c) 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, 1996 - * The Regents of the University of California. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that: (1) source code distributions - * retain the above copyright notice and this paragraph in its entirety, (2) - * distributions including binary code include the above copyright notice and - * this paragraph in its entirety in the documentation or other materials - * provided with the distribution, and (3) all advertising materials mentioning - * features or use of this software display the following acknowledgement: - * ``This product includes software developed by the University of California, - * Lawrence Berkeley Laboratory and its contributors.'' Neither the name of - * the University nor the names of its contributors may be used to endorse - * or promote products derived from this software without specific prior - * written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF - * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * Hacked version of print-ether.c Larry Lile <lile@stdio.com> - */ -#ifndef lint -static const char rcsid[] = - "@(#) $Header$"; -#endif - -#include <sys/param.h> -#include <sys/time.h> -#include <sys/socket.h> - -#if __STDC__ -struct mbuf; -struct rtentry; -#endif -#include <net/if.h> - -#include "token.h" - -#include <netinet/in.h> -#include <net/ethernet.h> -#include <netinet/in_systm.h> -#include <netinet/ip.h> -#include <netinet/ip_var.h> -#include <netinet/udp.h> -#include <netinet/udp_var.h> -#include <netinet/tcp.h> -#include <netinet/tcpip.h> - -#include <stdio.h> -#include <pcap.h> - -#include "interface.h" -#include "addrtoname.h" -#include "ethertype.h" -#include "llc.h" - -const u_char *packetp; -const u_char *snapend; - -static inline void -token_print(register const u_char *bp, u_int length) -{ - register const struct token_header *tp; - register const struct llc *lp; - u_short ether_type; - - tp = (const struct token_header *)bp; - lp = (struct llc *)(bp + TOKEN_HDR_LEN); - if (IS_SOURCE_ROUTED) - lp = (struct llc *)(bp + TOKEN_HDR_LEN + RIF_LENGTH); - - /* - * Ethertype on ethernet is a short, but ethertype in an llc-snap has - * been defined as 2 u_chars. This is a stupid little hack to fix - * this for now but something better should be done using ntohs() - * XXX - */ - ether_type = ((u_short)lp->ethertype[1] << 16) | lp->ethertype[0]; - - if (qflag) - (void)printf("%s %s %d: ", - etheraddr_string(ESRC(tp)), - etheraddr_string(EDST(tp)), - length); - else - (void)printf("%s %s %s %d: ", - etheraddr_string(ESRC(tp)), - etheraddr_string(EDST(tp)), - etherproto_string(ether_type), - length); -} - -/* - * This is the top level routine of the printer. 'p' is the points - * to the ether header of the packet, 'tvp' is the timestamp, - * 'length' is the length of the packet off the wire, and 'caplen' - * is the number of bytes actually captured. - */ -void -token_if_print(u_char *user, const struct pcap_pkthdr *h, const u_char *p) -{ - u_int caplen = h->caplen; - u_int length = h->len; - struct token_header *tp; - u_short ether_type; - extern u_short extracted_ethertype; - u_int route_len = 0; - struct llc *lp; - - tp = (struct token_header *)p; - - ts_print(&h->ts); - - if (caplen < TOKEN_HDR_LEN) { - printf("[|token-ring]"); - goto out; - } - - if (eflag) - token_print(p, length); - - /* - * Some printers want to get back at the ethernet addresses, - * and/or check that they're not walking off the end of the packet. - * Rather than pass them all the way down, we set these globals. - */ - tp = (struct token_header *)p; - - /* Adjust for source routing information in the MAC header */ - if (IS_SOURCE_ROUTED) { - route_len = RIF_LENGTH; - } - - /* Set pointer to llc header, adjusted for routing information */ - lp = (struct llc *)(p + TOKEN_HDR_LEN + route_len); - - packetp = p; - snapend = p + caplen; - - /* Skip over token ring MAC header */ - length -= TOKEN_HDR_LEN + route_len; - caplen -= TOKEN_HDR_LEN + route_len; - p += TOKEN_HDR_LEN + route_len; - - ether_type = ntohs((int)lp->ethertype); - - extracted_ethertype = 0; - /* Try to print the LLC-layer header & higher layers */ - if (llc_print(p, length, caplen, ESRC(tp), EDST(tp)) == 0) { - /* ether_type not known, print raw packet */ - if (!eflag) - token_print((u_char *)tp, length); - if (extracted_ethertype) { - printf("(LLC %s) ", - etherproto_string(htons(extracted_ethertype))); - } - if (!xflag && !qflag) - default_print(p, caplen); - } - if (xflag) - default_print(p, caplen); - out: - putchar('\n'); -} diff --git a/contrib/tcpdump/token.h b/contrib/tcpdump/token.h deleted file mode 100644 index 6f28a1ed1224..000000000000 --- a/contrib/tcpdump/token.h +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (c) 1998, Larry Lile - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice unmodified, this list of conditions, and the following - * disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ - -#define TOKEN_HDR_LEN 14 -#define IS_SOURCE_ROUTED (tp->ether_shost[0] & 0x80) -#define RIF_LENGTH ((ntohs(tp->rcf) & 0x1f00) >> 8) -#define TOKEN_RING_MAC_LEN 6 -#define ROUTING_SEGMENT_MAX 16 - -struct token_header { - u_char ac; - u_char fc; - u_char ether_dhost[TOKEN_RING_MAC_LEN]; - u_char ether_shost[TOKEN_RING_MAC_LEN]; - u_short rcf; - u_short rseg[ROUTING_SEGMENT_MAX]; -}; - diff --git a/etc/dhclient.conf b/etc/dhclient.conf deleted file mode 100644 index b3608a3af703..000000000000 --- a/etc/dhclient.conf +++ /dev/null @@ -1,8 +0,0 @@ -# $Id$ -# -# This file is required by the ISC DHCP client. -# See ``man 5 dhclient.conf'' for details. -# -# In most cases an empty file is suffient for most people as the -# defaults are usually fine. -# diff --git a/lib/compat/compat22/Makefile b/lib/compat/compat22/Makefile index 5061805fd6e5..0cd693c132f9 100644 --- a/lib/compat/compat22/Makefile +++ b/lib/compat/compat22/Makefile @@ -1,4 +1,4 @@ -# $Id: Makefile,v 1.1 1999/05/08 17:53:43 obrien Exp $ +# $Id: Makefile,v 1.3 1999/05/21 18:37:33 obrien Exp $ DISTRIBUTION= compat22 @@ -12,16 +12,18 @@ LIBS= libalias.so.2.4 libc.so.3.1 libc_r.so.3.0 libcalendar.so.2.0 \ libtelnet.so.2.0 libtermcap.so.2.1 libutil.so.2.2 libvgl.so.1.0 \ libxpg4.so.2.0 libz.so.2.0 -CLEANFILES+= ${LIBS} +CLEANFILES+= ${LIBS} ld.so -all: ${LIBS} +all: ${LIBS} ld.so -.for lib in ${LIBS} +.for lib in ${LIBS} ld.so ${lib}: ${lib}.gz.uu uudecode -p ${.CURDIR}/${lib}.gz.uu | gunzip > ${lib} .endfor beforeinstall: + ${INSTALL} ${COPY} -o ${BINOWN} -g ${BINGRP} -m ${BINMODE} ld.so \ + ${DESTDIR}/usr/libexec ${INSTALL} ${COPY} -o ${LIBOWN} -g ${LIBGRP} -m ${LIBMODE} ${LIBS} \ ${DESTDIR}${LIBCOMPATDIR}/aout @${ECHO} "libcrypt.so.2.0 -> libscrypt.so.2.0" ; \ diff --git a/lib/compat/compat22/ld.so.gz.uu b/lib/compat/compat22/ld.so.gz.uu new file mode 100644 index 000000000000..a689daed330a --- /dev/null +++ b/lib/compat/compat22/ld.so.gz.uu @@ -0,0 +1,702 @@ +begin 555 ld.so.gz +M'XL("+G*_38"`VQD+G-O`.V]#7Q4Q=4X?/<CR28L[((K!(VZ:E`0A`016`1, +M`AL^RD*(;()?C8%L()@ODGN30-DD>!/-Y;*Z?8#6MK8/[8,M;:E2$8G*1X(T +M`8L:@2IHT$AIO>NF&FV$A:[L>\[,W/T(H#Y]GO?__G^_UX7)W/D^<^;,F3,S +M9V:.<H^W<7T<QUDY;BE'?U8N\G-*?[M/P8\'U[\V!>+)=J/,R8,T[8M#@C$D +M&'2B'@)#7>(AXX-'7H/8CZ2WR8*^6(X7/XW/R5.:((UXR"#9]85'7J/YR7:# +M[#2?RTC(X.-DAU&3=.2U687EY16\M=K%6Y=5N0H?K:PH*>>MHT=5C^%84)7K +MSLJJ"MZU_/(8F&=^7AC*'WZ&4!K$MDMB0%,S0G0;]/Q0^*OA![6&X.?;I^4X +MK^PPRYD&*%ZG@4\)/BLMZ$J7ZY)U-MNEZIN]7G$FQU\GQY-(.:'T/.5>2"YV +M&*"NMDM5'T&>NOHA\B8#E`MQY,P420M^VGHC<25+8I<.0DBX.(T3#![Q!'B0 +M2)#0(_;J2$(IT^HW89+%1NHG91EET<AR76R6S$HVU$D2S==RG#*+?%KP,X-\ +M)N/G#/*9`I^>75;XFWY,)M%M)*8P1";1;"0&'_>*!C*7ABO_O(64$5IM7,7A +MO]`NA%CIAR:5.N3LE%!&,OQMG)NB"0EFC)B.L6@U<I0W,-I!.8M$R\)H6O'0 +M:%*Y%$@F#]?EC).SD^4,@R['P"?F*EL_15K04_O5-`"%XTU*1R*X`B$A3CD* +MA)>GG$DBL:C7RU:,.HE$M4"5D-;2E$T`_RI.>>13AGBCG&.@@4";&0;`\*NI +MF,2TI6U4"&R@P^E&0H<TU^76<,)*O2Q:2$(IVR+6ZSE34PLZUUC6?\SUA4*K +M$E9RD'&^\J]_8`9&S&`$Q9-'O,T<"N6LTB@?0YC7Z_5DFW,(.BW*:?!9%<>2 +MMI&D%DQJ49-FLJ0[_L%`L4C91EH'<2K')W1F&["1E*>361,9E!]"U%:@7<[C +MZG_P^P5'7ELPNV!);N8L>\&"19FS[;,+%F7-M\]:<E]!3NZB.0LS'7:.NUJ, +M;,>2="[QSM)1%>-'E5EGS+2.JH2^5#<FZ>M23.021U6P:-@EBRN$\B)N5#4W +M"OY6TKXM]J9$=<7X7JSJ0]=`597WX5NR]T/+-K<)B9Y=;O"5A'Z/6$^"]Y+@ +M8#CX9R0XZ!%WDN"?D^!`./@-$AP`8H,&FP9(D06#7&.4A+[F<Z:F9/28+`F] +MZ)N=(M;I.7Z(G*&7<U)D3I<U3F,G(35Z25":SV%^[Y+\%-D=D(6^<]EZC:FI +M$_`ONX.^`QIL7/'"*%/36]@Z%Q[BL^1-R=@.54LEX6QH_B-K!LM9C]BR*ANN +M;;R0Q)MEX:P\O.5PBS84[UL/J4/"V<7*7_V$`'V5)#NO:;]).BQ>*.=O;#`W +M'S$UW0_>OOMHF!C@^;M\V<3!2LI:"L74#9&SEG9P2:&LI;[1$)JS*DG9"-GZ +MDFDZ%G<^QEUC8"`-D34=7&)(XSO'8:3%JQ*5I9CF+!<#AZGIU^#18!4O%/+5 +M#4/%"YG\(PVW(60'P-^?(@;*^%K_M0!;I:E)!J]U#XN!.E/31NPL5\'&-8B- +M(5'8\`M>@HMW/X$LB^$;FO\CP+Q_B5?M%\1I]T)8+W-,]4*3F`YD&W(\XEGT +MN)VZDU3WB)"@L+A&B&L(3?:('Q.JJ?V$X'P.5'(.5*5YRJ50B#2\01(,0"C- +M'5^%0A[72=*;!HXC\WS0A7.4>SY!9NBIMT*/Q!!93&'L8IR\"3\I30ZB?5>: +MZ!_F#4>I--!/*4UV6*0A2*W\$!@TE4\A;RE;[S=X.[/U'.7TTD(8-Y*EA<E2 +M?4KG',0HUSDGA0::I47ZSCD&ZF>E5BJU1J.5WB:Z+9QPC>A.YOC!D(UHTPEQ +MK<A^I#GCI#Z58Y`Z1JI8K-".LS!%7&/D!).\B?#0;."@_D%`3XN-^)UE$.L- +MG#"85A>8)H1B`/8F<&090S5Z)=6'O/M&'W*GP(/?/_+:<C:D\X6\]991U;=8 +MIUF!5514NLJMQ84EI:XBX!]542$K785%KBH8YPN+!D;@EH%?6>&*DN76<J%L +M&<0J*:<!966%E5?.KDR5%JX82O"POK<)/J)://]C:$UH(QPN"2+2?'_`7J*Z +MFL_QLX&=G,M(T0GC<*S@;Y/S]++;L"%!NN!/\F[09C6U\2,W:#*G:ODO3"\- +M,[V4&;(=Y!.`X(#-'$**JP+6Y+%OS4$J"'P<'I-29-%*QS8_>&*H1[PP`BAZ +M)?;K2/FCY;R4<UE0OEG.LMCLVZ#QLLPV^U:UC!XL8XB6H\,YE+$-LI.:UZ'@ +M0@>OV\(EK0^79$K&WO+&2"0D7Y`PDU56C[TQ)[0;4RHK/F9CGY4?01*,(0F> +M@02^EQD?V>-L]#QV`3H82EV%ZR\.@FSX^]=?/(I#]V+9WOAX3_MA\^,]Q3,2 +M-'QFM!LDL_1H]R`-?W.T^RC'#R6EVDFIMT&I_FQ2/P+=*NVJ.-G>I+.WZ.P; +M<T`L:/\[]ECQ4(IX*21,"%?W/_ZN5O?[))\/H(NQ^DWY.ZFY5A/V&04^JQ)" +M0HO4I[,WY2A?_0TQ8&YN`X%0S3`SG&$=9.C/\E(12@$^MG*8F:;?2-(#;#G* +M'7_'+%*P#2:&\\!\HX&:A\-]N#)Y)#R]S?^HE^2CJ33DY($H1D5O9<&_8-#J +M`(J`%%*65;:W2%FILGVCE#5:MF^5LLRR?9N490'1(RS+`:@:X?H\Q:T)"UF# +M5T'';=>1<G10CN?92L``81?34/J^'?I027F1%22#G%P[B@76ZI6%5="G2DN6 +M5156K:%=41W_#='C_UGDERCHP=`.\I&X[WJHI,<>S%'&0<6D3J#^YA#?D'ZN +MTQ[`-(WW<GSJJ@GYRK4$WP;`=Q+(3Y`-L$IOOE(^C(`M=0"I7YOO$0]@?HIE +M!(GL'PETB&T`?"@(F+$'\A3/6=)NHCL(,I5L#W9DA*:)[@!G:JZ`2I+Y@%^; +MWN9Q]9(*1U5W8!WA8U3U^&H0F(K@_RW<?;'AE87\2FN94$TX7A5OK2T!]RT3 +M;HDPL=K"JO*2\A41_B/V6J)P]=X9P)73(.>F2,Z@>-`@.0.RPP#3"!!H070! +MT:FYS=14@IT3HV6ER$FZN>.DP[*S7W-0<O9)';J)Z:%.>R_F=RY+K^%GFPYD +M)>7`'R`:9:F9XMO8'!(>8!*UX)`=,))F8J1,B.01GTM!?!ZZEB#-/QYED5>M +M1/@>T3AS`C\,HIPB47YY+47YH#SEEK_2G/70DLE`EB&A+U_Y^45L@-Y\Q?A7 +MU@"]''_K*H/22ZK9*YD[,]C`%Y`T8IN>"G?^.:JP/X(Q,,@-NO2R`/(OBW\T +MP#.:A$]09EIP:C"55,0,LD#2#0C8V3,$,-G9)^<:)6=_\S%3\U'D2NY^CA_O +MOQXRG:P<)Z.<7G8&87#+4U:2-##Z!N75R$3?CZ*+GBO*!G=^A+*A0;H$=9[O +MI6."%N8%@C%/^:F&D:X[@>:33EGS*1([!?DYBY^8IPAQA*!IC(_SE2-QV`_5 +MX7H\4&()5U!`+)CONJK*"TNMKJHJH*GT:4!NY9'QCQL(H]1#"6IM2FA1LJGY +M"22+.2D&/LLCSK@)4)6K],:%QY\[/>(L]$2V\I<XUIV0S4Q6?@UU`&1)<P!3 +M,S^BF*HE8XWH!J%AHCS'JIN3JILS.@=*"TU4YG^DUM_D$>??1*<Y?P)@O)CY +MNO,H<='JA7M$>46YM5*H<EF75Q2Y<'`?56T%L6%47<P20&%I:<7R0MYEK5Y3 +MMJRBU+J\</E*2&ZM@6$>$((=#;J6L[S(!?B"KLFBD5&?Y#D-@['?38U"T[(/ +M*9JJDN7Y*9+CI#Q,MWB<O-`@S[-H7L=.F`>=+7ELEB4UH+,'H!MBKQPJ.TZJ +MT5(P6A]FD20[3^KFC\,4N:,U;TN.WDZ[@O-X<69"?0)\,^E*GCMZ[-P4Z?!/ +MSKN5]AZ=9#\JVX^..22YS@+^SRIC>D@L;)FZ21QO#>U*)1U%909#=3EFJ2LG +M1S'T,+KMMSD")O&79%W#&1"GP9QHLY8F2=0E28YNA&XB5(/P$I`C!$,<RH;` +M[S5]-GNW28S7D*YX+C/!P#\4S5\<77)NLN0\(<\W2([#\N+1&F<71)17Z]?_ +M'0B#H&Z:KFZ<[#BL6Y,B.T^(TQ+JDZ2^]AZ])N!/\'KT-1[]$S*GL7>!=`YC +M@$PF?HXNM>O>)KXZG?3H&T)"%T`?F@A@AU;K/6**%3OT-1\2!@+EG,NR:(1% +MJQ)H/4*5:;(6!&\JY>8H#WX0GI^/#0^OOP#/'#6_.C+"?@RQ2;]$#I>$O+1Q +MOD63W@;<=>.."!9,33>"H],>).PT,\'*)R&YFYK&8AP@BRS]**R_Z7F[HK/W +M-=;I;Q#BH20)F(BS5V>6G#V(IDP:2W:>E:<?A.YOE&<?!%X7!&D!^(`CL"$S +MH4V)$WLT9%0,"3W*"EP`ZHPJ07:<E::WR[GZ]6>(TQZ49K^M)YS<U*1!:&H- +M9'P#*2BH2Z/P6W&>T9VG_.,T[<MUX`H)`>5OX-9T$`89.)<%DE@<P#PV'5R- +M:Q,X]RB2T4TRPE)KA+GR'$,.BC'="%FB%O-*]H]#QMR=YQ]););Q1EH0Y(9K +M9>`AGJ:,WQZ`LOIMSH#IL4=@M@41SF5:-'P5"&V9:CMJHMIQ4W>X'>>$V_&= +M;FQ'8"]5X7:\R<3:T3^&-C"=00*@'G$UH9ROA@"%=R.>H8V762XA7]W+V/D` +M7OGP^X2?LZ4@%+3)V%=O!JS:ZLW"2#D>6CA!&!JJ-(8J#:$:H_)["J=<HX?N +M])<PQP9.S0/')E;,7.OB>W2N17B_09C2.#<%^C=,"`=!ALJ=="+I$3]+!=#S +ME,5<F#4/]HA?4L_I7'AV%9OW+VC>9$HR"&=C'Q#ZU@/WK@LAOPVG$7OUX50K +MWR,+I4"-JS24^HR*#V>K!Y&XC@D&BM[!7B`'7#8QA+K2V^2'`U?`WPT4@/1C +MC3,Y_GJIJSTPQ*//,>T?GMXE'02ZO9?CLB%(^)O4];(-DOSD_`6/F(&KE=.] +M(LA\@[SRO6*G`3Z%<ZLL2O[[*,&O,BL+\2,>QXV][Y'%QGC)3!9DI;D&.7Z# +MP]PR5X_N9&FN$:?8.(5.D1::PW-U=6F/K?)):=*4R&R8X&-T5#7R3H6[/-!4 +M^KE&&[`E+\C$I#Z5IOU#H3X=P/B@/ID0"/7I.T#K$Y+>IC62)[4`^<P"J)P@ +MPYV4#60Z*(Q`.G2?W)`P1W*?A%GBM>B=P/?"D!&>*`KQ4A^9=Q-I8!_R)!!: +M.=^GV,G9\B;(22@'/D?D0+>1(`]ZKVV$J5DB"U8!>0YE\ZE,9*Q"[SE$XC`U +MN\"1?@2:"AO*1-9_XCW&N:1Q^M=_!.W=0,:E?NEMS*HA17)W(R\:ILL?AQZU +MR3A^P23BHN3L]1A?AP%3M`$?&LRXXC39V:U;.T[.2=&\*[G[,,D(V=V-J3-& +MHYRJ=-K/1@V)9\F"I_LD,-;7.3(0;QC6XNP!'-C/`KI,SR?(0I^F0W8JNN&2 +MLQM:)7,#<%9W]]01@@7*@BDW>`,^T^BLNQ>"3"_=2_#9R5\/V!770J=8+:_5 +M>_1?8</J[+V2_:3PGU@H?W]CO7Z0,`*SSP.6C5P1D"J-\)T$D=&+RQ[\9(BB +M$6XAWRF-]7%:WBR[@[9Z0TT*64<*^BVBVXQK!E!7IU&:!FV8@3PG(.>B$(\" +MZ'U$``7..@I99A!$6PU:&J7F).GF1.SZ'<Q99,ZO]WJ141UE\Y'24BM?85T& +M,Q(7B#A5%656H?S1\HK:<BL1ADHJRF%"<6M=TE7DGN60`:Y^8$(B`!&YZM8Z +MR@O,4;3_P#L1VJ>T-A7&J]L9-8T`F</F--08Y8Q)J0%-E\UNJ$J0&V#V)IP& +M0^?G,\=086_[NZ3_F/;,BY<<_;))KDW1+1R'M`.24=5HS><2C(P)\J(47>8X +M6>CWZ/ND=KG*(L\>PD:\*1BV>AS,A33O2$*?O"A9M"74&U"FZ(,QVZ//`*KP +MZ!]'L2*@,J^`,BY(5CE@,+D!9PZUX2$AX!%+&&Q&A*TN:L"<FD]F&0;E%4"` +M%/"XSA+,3Z@IK)I0)91/*"W"21\(FGQU>(YKC<+;+7_!:4CJ<-QN:/X0J?E5 +M`Y%G!M/=IC?I^@C=.&F]`P<F\SML+B:&0OP\7&GIR<E7M.^HBRS"A/7NGI*Y +MLQ<(MT$WF"L&-+4W8/K\51HDG`!,B$[_)6J-8T2^(H"[4\2"<=>`,N[\?.7[ +M&&T7`@>HUWPA;1J-GR)ZZ"K-TJYQ82<N!M3I-?56\54CD<M&2%_H<E)`SE1\ +M)S!O(\L;B?,$'46C]P:O/Q%&`S^29AFJ3,Y1IA/`B#_2U,-!-G:A;"H88<`` +M%GLCX"<R9@R-C!F,QY(@2PX*E09-7SH+E+ID`7++*BRREA>6X;2AR%7'.@-Z +MDAEYM"=MNZ*HMBL^CM1!UE)6`L9@?"$U^,GY!J/'D@OE]NAA6KUK-,&/P4NK +M)0^WY5@:!N5ZQ,)QN/KL5?WS]!@P#`)JQF$SWP\H\7DI5Y-E1+5N"%"OEZT3 +M#ANX3BA\#W@/,!9A%BX0RB))D:W/4;J.J\(`/_L5(KK6C];4Z^0\HVPWPX#X +M*HE9K\]7?G0<1TF_%667<2%^N)P]#CI+5#5\4R$Y-J$W=@8&O,%:5E(.4Z@: +M5U4U<!7KJ")K12DR'7YE8;G555<)LRS@)*.*QEF%:IQVE<",K'Q-;>&:R]=] +MAAQCXM0XNO1#UG<0<!C0LF+7@5*/4X'#T'R,OQVZB#T`_L:<_%QEU7%*XI:8 +MQ1L86]M@<)RJ5`<Q.V$8IH`VS%=NO(2K8=C_SPDCHW)2QK",S)#V%MEAALF2 +M^SIU^C%T,72H/(_XBSNQR7X-@*-\0%>#)G!7H)F);P^L&U1J:4R=<HY%ZC0S +MWR/N'4^FV[\]1G82[,^`*/?LL?"6X*`\Y6/(,_T<=L$!5?TM3M7RE0:2$@'S +M1LFO(,M%P?73KJB]"7L0)BM:T^8VTTL!=24XR1?&#W\KW=;5LP3.H,W,7YN? +MIPS_##DH$3OCT]O\B5ZO,@*7TJ#D/E+RO/*:PM*2(FMAU0JAS%7.X^!45+J\ +MM*+:%:LK,*B+TCT36P!'([VV+JA;A@%:[4MP)\(<$X02O6#QB&]-0.POT*FL +M:Q#PRUQEW&=(JX1GY"Y9,+M@H7WI$BO95!`J*RNJD!R7K0'Z+*D.4VU%L76" +M4%TUH;1DV83E57S:^(H!.@S5;U'M`.A+9L2+,4=I!K;F'XIS4W%.&EG_TB*; +M(^6RI8<B%^^J@O[AH@-JU>W5ZOI@Q;)5T#&XA176<E<='^M+EB3"D%\V0E_> +M;]YYDP`GN\T`GZEY<V0LQBG)-'DX2.5QK^`\21Z"8VBV.J$_(B2P";W.'K!= +MK-7;.JO8CL#K8)(\X@&HF7\MDRU!A*%+4+R.1DKTB!]CA/N]'G?0*Z%LDH_3 +M@??ZU1'U>S3B6?\XX-4=3%"`G(PT)SVO(ZG4><0OPPF'><1!Z8C5<@U98AX& +M,.1$C;]FJ4OM;[%SBB-O('-6U[J[HGKWC+0VX)3!EY%4OGA..GR^*R-'N?4M +M'%0[$@H@@6>.)D?)?8NDQ^%=^0^2.E^I?Y/V[[#\'R[MP3<0UWH]CE9Z??1H +M%4L_=T&\59JP)H+4"T(;1B-B@KH4%UGCC9K_'<7M364BH$+>A;M[ZSMV<KAG +M]@+`I*PF$S9<[QZ:`_.]B62^]_2;=(I)MU<?P^BA#:WPMVZH3%RX%TP^_(-P +M+[CQ#3).@)13_"8*'3'EK\7R@1\".E9RN`FU*VTX%C\+4;(+JZQ.$^G>&`[V +M4:UQ3W1R"/+LY@#D/$4/R=/:I//1K3$W)P]@^`*@\3S;?XGM)4`OR,_,75BP +M<-'"@AQGKKU@UJ+9]AFH;W"?,R<GUW[??21\WL(Y]Q'?K'D+H=\LRI]Q-94$ +M$C!OSL)%D)=CWGWW0<J8(+990;X7S,O*S<R]OR`G<\G<&9?SSN__&1O?J/). +M>:IH#^)R=HG7VWCO`N&^Q@;-;,'1V*`M$.;(NT:3Z0O'3U?7QN/)_N@HF'CG +MPXQ;2UH!2?\:.5O?.'TJQP^3LXTP/DM3_0:QPPQIA4/`<^5IXD&]Y`R"_/P3 +ME;]>SA,.OHYMM3,9Q2O\RPF"\INC1!M"$M&CE6M$D65FCE*G8[O1IJ9=6!=[ +M8.ZM8AJF;-./L0?6),HR)M`X`K@%`@S8'="\BN'IYUXA2DJD`$/-$."%FF/9 +MMDWHK/U2VO4B[DJ1M&)[$!B/S6&H'4:2D)$]&&)R$$D@D^C^!,R#'Y\-4)#I +M0NWGGE>G0H`$TR3C'LD1!*8U/$^9BH!.WR.Y$0TXYMP,?'C35*+U$I0UDOZ% +M#LUGTN<PY6I9I`%^`551V07%E3$*5S\Z0@8=\:"NE6@XO7V\!YH3\/$D:BS8 +M"+KJA\H$FU(?3'.#4J??Y`4Y4D?\4-4#"&$2?(XEB+-UU(_SD(I#K3&%#2;5 +MKR#"I2YPR(Y^3?MB!;N3=!`&^]'R)DREV85_/2*MA4&RM/@3`71-EZ25#BYJ +M#C5\X7$I5]Q7^,MALHX"?#7%4Q]LK`]^)EQC>FGA5PPC^@U2=E":OB&RG3\@ +M_19(GQZB>]C(AI_["F8@Q\D>M@"D%\25L+60:>(<TTM97_G'PKQ$DZ?LY=05 +M^^M`K"&,+4_Y3=@SKO5&Y#]S=?L1/<?_;B.XJHF#_/R)\(?B#KK+3&!?5L]< +M+4'^\1Z&[SBQ#>.U!77$;1.,M4DVN[$&N+_!/XWL@U^BJU4`\%<H;=#-)$$/ +MU'"=S6W@KY'M1EM?C5;JRR'</.T(G:GU7Q&'/^RD`AK,+H[`7/H8:P=]"T!G +M\=J^X$VV@*"7#ON'9:%<(OPC4[QP0_V[1/!0\RRKJ')5%JYP58<W6495JML0 +MZ"HLKRA?4U8A5%O+7!!WS4`8!C,8HDF)U-X]0R;$07&V4":>YT_>W$&CCND# +MMI]X6-W[-(-@^M)4'#SW43\:?Z[4<2O)A6CMA59J<;-9)P5,SY-@W`/?UXGZ +M@*3ODRUG_J9PL(YX2Z0\2JE2P#_$(_Z9%/30X>@-J('UNKL#Z=-H>EXPY"F+ +M_Q5N*SXA+U]9W1G;+.2G2F/<9;3J^Q/!4?HY/^Z)Y<MB&N&_H4D[E0\[50S, +MSP;$8-]-:SA-OT+`8-)H-R7QVWNT.<!U7\3"X_.5S0"AU,X"S6JFT@)O4`5L +M6NRXO.Q/5.F#GX*DY>P@DC9T%ER,_8]I*-([#;F*NR.\'YVC3$)^]X'7FZ>, +M[X@:-@?4+_%/C*&DGR,Z',CIL'+G*+5GVRZM^^1J>'[C$"9+#^$ZF+$11I"\ +MQJGC!5W(#C,^HVF_>?U%5&NL'2Z+N"8LMDW:,-NK:5>T8H_&K_/BPB'AI;=` +M_TZBH[91^6D'Y4;Z/V;#\#1'#"74_RHB"RTOJP3QM-:U9AJ(N"#7KRRLK'25 +M7];^A\)]ZYCM"_=-7J_-::E/EO4_QGF5_H<-4^$3['4CLVQ?K/NK3;`0.&[W +M8K]+@;A"`F$._FL]XO9[Z(K,VC^AK!+3_2[#Y;[7L%P+T,HHI)6P6!A--#\B +M#,L"51\<(9H3$5J>0,>+1Z+G_Z\AN_1G>E'?S.`1-TQ'Z2R<9ZMR[A"=LFV% +M;OG%(77*QN,Z;3)I?^*GG\/*F]K0BN5M)N4AT5=7C.<*J3RU5!LC3_D/<F16 +M9OP3ZN>T?D5H`D?N5"T*5`/DV[E2\UZ(TMF\$_YB#AW-/4!&:*&'9TL;6-*6 +M':C.YNB1/-OA`^JT&_-5_HB5:'XQ4D2CADR(.PR7"6[R%BQ&/!AGZZIJ7Z7S +MB!>G$TF4UA-EFM^'=F,40+],LVP;E*.8PL$;Y2WH*WLP4N.ZH8/&FYH%;-EU +M24;,[Q+FEZ]\\!I+8&I&2<4S1Y<3VHW0*_U!*N>C>E[3/;CU[#2+TT+\G7(S +MUM&F-37C&J'LL(BV$#]"O*0Q/6E!C^9#&*PQ/16/]=F-B`KM1CSDL9PG$@28 +M41KX*^H!,O`-.1Z"Q!SE9@#*H]^-Z,VA25G*-F@KB>0([>_[-2X->U'3SM3T +M4YQ77/*\JIT1"KV,JKG![=P_?VUJ?FQ@`9>P`,P'54"++F'6I&UN((C0-^XC +M[8AZ3SU084DK[L/B-/4&7`=W6"0-!=(_'&)BPPL)T*U0WX7ES6@7*2KK(,K= +MSWS%Y&XN]N<LCTR>JUSJ&K*UNF2M"V8M=3%SG3EMJKX_G0A%AXW%,"=;@(K, +MD_)PSN\PRH)Y0U9":GQC8<(%0V8"V6G4-\Y+T)SO0*F1?&><[S"KWXUX:$`M +M`V?`#C-D+AZ,/_]><2?G58JE'&W[)V:P],72W'@J^V%1=K/8=G&LW5C<J?7Z +MBJ4L;;L"L;+TQ9U9\1PW8(VR]@"IC]AV"?"4DZ,@SXF"'8,X;>,C"1<:YR;H +MP5C/V<T&'K\RHN*`TQP)4*.'83=&9=!(YIBXU`F8TDC:#LW1@0TR0/[;SW%$ +M.9^,2$.1#QC"'?3U\\=P"YJ_]C+VX%FB#>$F!`TR#PS*57#XQ<DQ6>;%K)%Y +MYBN_::,+BYBKD2RB;5%](+-$G#TK8EOTJ#ZK0B@MLL9H8Z@2T(#UG_V4OVT\ +MH&K(#O6(;V52EO_$`:JO?(7Y]?%]X279H6ULS!6&1)(N.!"9E^/OZX2RZ'Q_ +ML(\LK<2%3!PWBBCV1\M.*#)MV!_6SQON$1_)PAZ[\`#.]I41L?!&_\(%7`<% +M^(I)1$_<6/#[*08D<%6G7[MB_$]`ZO9-9O%'?G/\5S!^/(L_X9OC;\#X[^RG +M\9._.?X#&/_7+/[^;XY_!\:O8?'G?W/\BZ]"_&P6?]XWQW\=XP]G\?=^<_R? +M8OR_[Z/QX[\Y_BJ,_Q*+'_?-\:=A_,=9?-TWQT_"^'DLOOZJ\3UQFDC897+@ +MGUXA\\%037*>,@PI>&8G&=Z8UCC10W@55W&>)7_/[\7C)B6O1HZ(Q/*_5T@? +MP+5726S%2?HU[,S`^H.XBB1M0L_P'DTXW;TTG23N#0?'A-_T"JX-F7-8OQV, +M\TW<4.#@_ZCJI`%U^OQEE.6,5+=#3A-?;26K&DG0!1=1M059-)!)J$<,V'%0 +MVX4QE`VO4IDAQ*>293WJ:]R+,^VOHN(M(_$L><HO`2P8&+GL2%CVJU0IY56L +M"=7%ETFM\`";GLACK\36;=;+,75#0O$F7:[_\+(J%T=7I_'2UU3GU5=H=<[Q +MPZ`Z><QW!JVD1SP1!;7W%<J4&=3&_"B8\Y4'7F9K?6%HGFH-K]4IAMAUS"B8 +M2UK9'/7R=NC\ZFL`U[X2U0Y&M1V:7AG8#N^]S-IAY,N7M</^EZ-(-);_[[DJ +M[!'0G]M#]5VB0+9\'<B+7H["M5'%]=LO7P'7J2]'S^C8/HLQ7/(D!&]3&UF- +M:R.%3^ZT]R.[Z;0'$H@5Q*Y)MGOMP9S<55J/O3]'*7N9'G)C.C4),!]L(YVI +M;\"(<ME^T\&72%WI'*1C#QL23<U?0G"Q;-]>#*-9\0PN@Q]*6[*30T47WSL( +MA#Y/V;8'EPJ?H9LZ]#!/>H@>0'A&^;`UG%W+P.R&1&?G+UVE6:7%)"^VJNI9 +M_-)5*<H?]D24?^<JIE8\;V+^;0CX(Y_0.<?,`2Y"M6;E<8PVQT@$`=XJ.Y^1 +M1G3.T=,#+)@_<*WE)&VR%/!;59+,5]Y\":6!9Y0?(1*(KY06V;V\7'[:LIL@ +MB^ANZ3GA>D^V)2=48P8^&9JL)&()J%<)<X#ZJ7*VWI9M:!C$6*G_31C?%QIU +M"_7GVG7"=<7B&CW'7V/:DZF7\_3SY7KSF'>EB[:N>I2[AY+S#IEZ3;9>M''\ +M9NGPE6DY87=8EMFRAY$R60]95E(^C?Y!5S7Y(G\OX_\O4J4Q8)=.LVRWX,F> +MF0:DXI3%.;GY>8H=\O7-@R&D^0B>CZ0MAB.*;P([2Q:"&=,(5$E&-991S<?X +M.''JC36C.KF;<`/G&)^VZB:/:/X>V:$,`9K]-WG!URQ.U=4.:L4E<=\GR/,Z +ML2DAOI"4WN8[274:Y(5ZL?V2>&&8Z0F<-4DGQS;)`<@IU./U[H5YW3-@T'X1 +M#*Y(;V=^I6"\S._K3!V+VZE=CBWT>*<6SU;X?@`E>#NU6%=?!?WFH-?[EM/O +M<4DZSI?/_#'.]^@WZ1;WTF^<0_ONPF\59\-5M8D!ZU>7[15,!(!669077\0Y +M--F5>_40,F,1_TKU>J(\:P$ZD[/T4K91RC-+%\2/;O)L.LQ6<..E21LD5(U5 +MUSSZ8O9TH]?^.UZ@+-INE-K#>7@L&R1G4)X(95=ZO;9L/8SF0E">W'Q.^`+\ +M'I+SC+9\/1!-GL&6;^'O786Z']+;[1=N6IP;FJ+<NILH@TCY%M8#<3RL-W+U +MP[WYRN,O,FF=-\CY>EN>L<$O#Y<=06EHGI*U"SEC[Q77JVYX@;`5D<`WJ14W +M*F$NZS#8YIN%H;)6BL]5=+M0=0)U_/\JO2,/\Y_V>N>(H9OJ7X]%^`#Z_R-9 +ML_+H)8\^TZ/_DPGGYLI4R`IF!;@^/,F38VH\$^SDF,Z>-%<OY1A"#D/==5ZO +M]*YGUUP0K8,O8^O^\UGQX%((6:-$[?]%Z3]A46(&/7\KQ"E((O*NV63M'!H3 +MF$"=&6B^6*R#R=(HL6WI_#7_Q)T<\ZHD90XJC\13Q,7+DY&7`&R+BSLSC!J. +MPM:904_OT5,/G1EF:EFH14[[0?0A(-IEI%&_2=2:3:VY7$3Y,P;N7X'DIN3M +M4H$=FPU`U%]/SJXGRI.)L^$+\#+D*%MQM2(^9KTRLO\)V81V82G*T%V,5T6' +MW[,3T;.`G/;,P<YNILBBW"8R,XKA?SMC9*?"%V*G;MP5SPP=>SZBA[8):^2_ +M`W7IUAKD*OW"NI'%8H.1B$!.0^A8(CDP+'8N7;CF8Z*E2/3MA+=D>S!J3SDB +M_SX?EBUD,9DLG"[-45[_XP#X8^')>IZ*X&3)T70@;TBNLG0G#GK-H74W2A=) +MQX)B4>_;'M!DYT#90[.7H.J$MWA]L3'T&4Z>>R^GMT^>(_F>RQZLX:]9I46! +MP70@>TB.\M@?29^DB=5B,>"7.V/W:*/T?Y]C,%IPF'`8<Q=30*?\D4H=0\2+ +M(2&1YN@?#'`M-')F*3M'REL2I1L<SF[1<T3>-QW(@%*O?SZFU6+*O8V4:R2Z +MD=?E81N?!AB9\JTZL":I9UQQX%;I=WWO4GW,>NC[?R!;=\5RKK'QS%?%DO-% +MZ,W%<N:08LG^$EZM8#\D9XZ3["<\S=MQW\&^7;*W=MIWXK#4:=]+K38R*2(H +M\[BWYRO7ZZCF#TA^ZTSYRMR=R#?XN/W(=\_97\S@$XCZOS$#3[T]\R]UQ2R6 +M!V52R&2[61:2`;EB((F_MF&0&##PN;[UR!_$@)E?X5_C%2\FU@Z:UW@PK66H +MOQK:?_U%U*>ML<R3N@[@G"']V/GS-#3.*W5YO?.([T_.AX@G<+1/_=/GM72E +M)NC36C3MG^B$+_!4+S]Z>AJ?.J]#D^:_$=)(76*/:0.-H1=0'=*K(&&C#EVL +M'"+V)D=58^T.;%0S50WB:D>`"!$2DH%DB*B=B*J*OT<QP6U)XF]I,(-M,#4- +MP5/IJ%?L!;?9U(1GTGUKJ!LRF2C$BVY#8NT=(0<JM2:QCM[W',J<BN3LW>!4 +MH&XP@+0,]<TG`LEZMY$@95%LDGW/$:*7[/W0ES8X^]5445%^I4;!C&4G_%7P +M()FSUV\B9RD,DD-!S7!';SCKWI"@*%5?FS6)DG^UK$6WP@D[\?":\#N?A&T- +M>6]P&!H_2FAL3Y.=P98DNN!IVO&ZKMVGDYP`A9'LO[Y#3D=UD1/9N5!@HRV- +MGS\/V`0V9";F@SO59TRR(V6#,2DV*WV[3Q^5U7&2U1NH&NY5Y#]0V0M97#?3 +MR2KF%A8NY-+2)]XUZ>[)4Z;:"I<M+W(5<Z/+A=+2,5'^F5FS9MNSN30N;3PW +MGNEY;(W=E[CO=\AWE]`K2_A!B'CL`#BUPI,;1@,?+ZXQ<\($#)GP!U5<L$;2 +M$&7:&_[`Q"G?X1LIO+1O%XMG0+:^F"3,PNXMKAG"K;-%DB8N5L[N(%E&%'_> +M@F[I$TDFG<UZ7#G'7&^^D9QU,DI;DB_AOLBX2W1?I+.Y"]?-V:%YSU'<$''N +MD+88<>AS]L)<C<2R]]'(>I;,X^B5/(=QTT0F&4I;S/#7M#])\EC@`X1KW'<2 +M]Z%C%#\RU(R1:%33_F'2%A+IF/"!O!N]QN[&U/PR>0OFK_F"\@'3$]-QO9GD +M+'L(0$.EU2"4]XOM!HEXA.Q]HKLOH?Z6T.[#9)/%H&R\R!2#3,UWWH"`[J!1 +M-;LQ;PH19VKZ/`487S/%A2&,BYZOU"\N[!?\BJ*PH_DF]!M0"5:S9OP6VWK$ +MP%+3$T.'0G=^;^QF\01*U6>\WL._YKC1/Z9F1]3W0+,5PBJ?I=\-8!>Q[Z/_ +MQ7%MW\)<+=^!9MNO..[:7S+W+R\/GQ25UZ2?7SF/HS^-?#?]Y-N7K8>\?\[* +M)S"@87YJG!16?N4O..Y.*+_W9QQG9GZ-/Z/VGZ+*YZ'\QGVD>4S-#UY2V\KJ +M6T2VGKR-'FQBC2\#_J:?DSV$8CV48H=*9"^0[I:)![MP3+H5]XF,YSS\D"Y- +M1ZB9$"`C<*UG;I=X(;&FAWHT3DL5W/(^[$/B/M*GA%2/)XWDCT[/%OR;&]I] +ME.X!*E]>1Y8#I-U12?AK9!)9-OY1!G"0]/QFT6[6XZ[.O*#D01^)%$)+S:*] +MF.S#JGG<)'MH!)K3!C6G$.G@_N'4'IBKN(\0NLDS"@+/_QP=%%EZWS5D2]1+ +M43G6I__JL@Y,:5^\>(>I>3CJ*GX+S-[\W\#KZO\.7G\^\@IX-47PFHZ'*4GM +M0>"K"C)L$D@S)0*V_^XP+J^7M]!@DMKR0WDBP^(PKS<6CZN#TFYD$,WG3)XS +M_T)FHK(+W_%_$?P!5@BR&`(F>RQ0_^%=TFZ"F]T8I*/?'HK<1,I"&7+;"59> +MCY3RP]A2'L-2:),U^A[Y%](WT.Z_50;EC:G"C!@DFIJ3_H7X)K@G6/<0M"R. +MX/YFHC5C]'T$K-<K[48B\GUR,0R7P7?XHDI6&;Z]X6^S;V?XV^K;=A%+R0F/ +M)3(A#[5%;AY`W1N&MA#B8NV2/*!=-LP+MG@P?`.)U6+V_6H0C'^L7)E8Y]JM +M?(V:_YB!+0X#V5GTF`\S:252D#52#M[))L\/J/&"-)ZX#_]"A\)IWOF?8YBX +MA7B=_SE:OH]PJ-U"`#AHYFTJ`);+NJ]_EO?R/MN+63Q%YM@LCPS>KN9A'9"' +MZ0!TP=X(\`_$Y&<ZH&8X@(]<CHFH/*+Y"-0_-TA+$/?A7\X]^/S/\8,RC3M; +M45SWV1+)?5#[D&8Y(8D2+]FS)5XAU0L7A=6F,?"S5(!N&0#0^W><_GE_!*#[ +MO5%M;X1ZO5_23R/X9UZM3J>U,5D,CVG3TUD!%KH[0/[BM]+\7ZH^T_A3GW:3 +M\`][&L_:A0165\^FY4Z5=@_@=I?O'E+OF%SFA'-)]L@KG"JOI/$'D?CK"0:( +MQO`6*^5Q%L+P4M'AV3*6^AF(2D1P()A)-Z#J"NDYAZRT0Z_@$^G''&&&N`]S +M"=8/D;=@4AO)M#ZEU4Y:@\06XEI=N%Q!)!J0H#O)QXIP!%>#(^1)):43%K(; +MOSW.0*ZR@93=AXHUG;I]UDOT!AWRH3$]]=.HUM70:[!\CX=S+1;NH;!Q];?) +MY$.EET$JH6OX!V4/^GG6V33^13()%SNU_ME>N1E3V)JQJ(9A4F<DR6@_E4-) +MU@W7R!2L3NU8XH.+#M1K3N.^L50P;$Y`92'2I+XU"1&8K;Q#):>4@5U$RPCI +M&N_`\2$S2&5:NNIAEN;J?7_N)^."FJ\YTG__G7S-OA_$YI?Q;^973#,LAAS' +M8(Z1L7``8])<<2P$7I`5E#T$)H/OXW]&R5UFM3FL_`-JKG=>05HA?'2Q7MH2 +MX;>^`%DXC^J?`.OB@!HW2./ZCD715@Q/'<C*8GEJ%/]B//5R'%H'Y&':$\L/ +M'XC)S[1'S?`;9;.K\-0H/M^*JT*^?M11_Q_QYE9<.O7(CQ)V<P(C/(O5_)"V +MCI9V\#HLJ^4;RC)?^KJRZ'AM)L*:T2.O"[,WUI773:<,"^^A0F\E\Q=,J8VW +M2)UC24H;B6KR!/"F3_+M^X>.S(?3VF02(UJ[Q[,VY'L3@K^CL_\1G9%1>B.. +M.)M$,H8AD?B'X-TC$:*)(/=^M;AQWQ*YY\DZT/\_<6N.$O<T_!V(OVO%?6?) +MT'8M$Q8%HW^HETE0?`+KENIR`QGR)`^N3#0?69>TGO3=AA!;IJ%K(^H(M4C- +M>9B:<R+K>_SJT.Y(*XIG-+DYM!.&=I.&VHWIE,`G4!23'I+],U68(KF,O6HN +MO407U1=);Y$^&4O`\ZS=X;]+70N"`;9V$(HV$4%_`YF*M'C0AZA_AQ=:>HB. +M;C<**A?=\=(^_&+3?-X0:NXFHY!:>RV?(!(OK4SFO=*6DZ3-2?+7(;F'N,D@ +MIR-AZBK3.[V0GBP"-9F:7\+V(E.8L;N[Z93KR5^AF'+)7._T;!H]#*F4KD5U +M9NK)90SV?O/7+4C]Z^/P@M0ST-/"JVMB1Q]DVOX5(`-1*W))")GLIL9EI:96U7P>B(0+B;Q.CJDSI9OT9O$9R_<5& +M<@/`RU=`^+,,X4O)_4=3H]`#`(1Q_C4`//'W,`"C$Z-P%,;YIJE1#?G-BXI3 +M(OF=-$17:#?2Z)A+"/0V!G3^OPGS\;^%R^`-_PLPBY'\4F-@ID3P)XV02M<_ +MPJ2W5J]Q1TC/]V,]G;<1J=_TY`%PGOKT=#/.,][SX>1G=F-_AJGY7X3#$0&< +M3%@:1H;YG3#$(V^&$<0WCX[AGDT_<D;6<J'_A(GI:^KQZMEP/1Y*B,$]EK80 +M43\E_G](+_F1,@+QWQ+WOG(=Q0^96YB>PGNN/#*IX'^OM[SWUW#A/X@N7"93 +MJ_,?8`W_BQ%7GC<6E&_)@VHC123'7Y$'3?UO\:#;(_D=CHL&.8:@9$(/#-3% +M>NKTW:>G^QM1)&-Z"O>ZOD5BC?-K2=Y[)@Q6>MQEF!Q+".8R_O+OX//V2$&' +M]?\+^'SWHW!^=?IHP-6>9&JZ#V][EG_BO!)GC_19+:')@9A,C<5DZC=C,CL" +MT,>Z&(!(8CJP?Q,T5\CWTYYPOD_IOH%PQL;"?06(34_.T.(-M.'VC^2>KHMJ +M%M]P+=7MHHL1#::HA8@BI#PJB`QK(4,>79CN:+X!_H[W$*__)LLR1.#XK3:J +MEK'LT]X8S.`G#:BY!R&<)\T'2;1_OH[@08**-QO)0JK$],@BK._SB&SR;]!Q +MP8=A0,D1]W^+CE='\C-%\MNIB:JXWS&`)K\=M;1]$,ZN4!,%GL<94"LJ;R$+ +M3E<DC^BLA$A6PS57Z&%Z4],OKR")>")\-T9,^Y;C2NATN-2MW!7'E=&7C2MJ +M-M=&LFE5LQ$>EHGHJB%B++FB-2K:#\/1)K,-VW"!/N<97-/!!-=XG+VY&'U9 +M.'H"BT[NC#1F\$F1C>,!6]LU3]*;C]BD:"3=%["121'$V(VV,F\C9$5R\#R[ +M1#U61?0KQD5MG%\G4P4T1Z^'7!,*,!C(5C->M,^1H].K#*NX'.66)ZG:L:-/ +M<G1['/V2XR317^@U[1_:?,S4]$H\&8<OCN('A^R]JK_P*8;](AZ)#*\5I?IN +M&):)1:[M$4-+34_4Q%,US%<;!:J&Z=VV@>.2FZB)_AYH4J1(.-J'6B+?P2>^ +MV5PMWX%F'<3M>9Q^JW:T.1J5%_?XE?/(:(Y\MS5]^[*?@;SK6/FJ:6-^:IP7 +MV??3$!:$<AK!;&=^C[!RIP\H/_V8[.[U#_%Z],<\L[5=IOTC-`?GF/8GB&U= +M8B"Q1FF\-]6$"^Z<)/1([]B$O@83N37S9)[RVSAZQ8>]OT,?K\^V"6?=.DDX +M*PL]_E7>2/N23<D?<JPHTWX-6?/\FO*$*9)P8D!9,ZY6UHDYDKO7]QS9((U) +M,>BR%";/$\B?A+.^!KJ?ZLG",DU/K"5W>X;ID?C6?.I;CK'P'+-''_+,3NCR +M3-=>%NNL>!'P8\-\+_E&XZ38H1A\-]'\X3M#W;N%;[,O(?QM]?TK2+YC8,[7 +M1\/L6X3K:9!.=BBXI&"-B3LV.FZ2[U;R'H^""S:Q\731\1)\_]*R>!D#XKVO +MBXJG\1W7XG4'4>&OZF)@VZ7F8QB0SZ;H>$-\\L!\JJ/#!_L>5?,96+_O1<<S +M^F9IKU*_6Z/C)?JNOUK]_J6-BJ?S_5,S`*[WH\/C?<<U7X/[YZ/C#O+]1G,5 +MV)Z(CF?P-:CQ,DQ-2P>6_V!T7"UY3B4F_)[H<+/OKH'AUT>'FWS7?!W\GVEB +MX/^8NPK\G9H8^`]P$?B?Y@:4_S--#/R;N*NT:W5,V?YR,GY<H>SOQ93MSU;C +M#6S76V/*137#V#ZEBPZ/HWS@>Q<H'YAU@?1!O.9RZ@4<Q,\FU"?+CK,>O4=/ +MM+4W-%-E+`W1(3/+&JH03=;&;.ZSIHU/<.P]+@VJ[QE;H1C32Y8$\:*YUH6# +MV:8%Z^A@]H@(//A;F$IFU.^546&BW6C`M6"PC?YX8NOG(!B>M2$F@IAA`+?9 +M^U&1K5]9T(1*MX<C8W[T68#;1-3/QZ/*J'H<E$=X)CF)2OU%@W!CGN)M(F>D +M)6UH2DY(""IU3?1>?0O@*P\U#28TLPCX0EK?V(2<51SDH=]"[RDUYBCG(((T +M13TB<)EN\J\?0]0FBVYKL9#T"NZZXC4\(!=977P\_+7CE1'F5U#&/_5I]\,& +MNL5K/FTWG.HY_;"A0W,GHL#;H6&WY>'=72DAP9S+=.\:L/AVR&@%R6Z.,$@6 +M+.<[L.7XI;+3K'F=%#VZT98FW`BS`;LA:BHPF+3P6$"/D"+-A#^ZX5%1<+%% +M,$G.`-[!;0]T<&DAP+HS4/6%[`Z,>4L64J69J,\:==Y@?>\D<B<58&R#W2R[ +M#2T)LF#(;C[F'G+^O8XYFCO)'3=:O[XC?FRVY!,O)M:G>U7=6U7+5CH(_@T^ +MJJ5K\U5?A_<Q:EKB,[-MOJIS_D$=\6G9+5WZM);X;&@1N\'S["$0_&+.)XB] +M2R--<.MZIAUL)*=!=)[LT`RBX!J'ZH\-Q9WVET(A^/NB02LYMTO.5LF^4[+O +MQ9?`!""T[3G*?)'<'G2.CY?MV_'ZD2Z/:VOT^;.H!M_=J)XSE+.3I6S#N6RB +MD%EOYH3!><I643UK/5NZ8'KI@CQ\;)[9EF=I,.4I"\)AH]./A18:Y'CI0HLA +M%)\%X?P@R$?#)XNA).&:/.5FD:A))]*C:GJO=\!=.U'TWTB/)T4=FU@"B1$J +M82[\-:OGW59[P:7GT\3Z-%S1S<ZP9:?A3=5I2F\C@:LSFYQZ:"PVOJ^^B)1M +MEN(;%QH-I';Q>8J6YJSA+>KMSGF6\^])><GD/%9Z&X1I!9V<C6=OPJKF[/Q. +M!.3J!O4<`SZSII>Y4%>G/?@AOB/#>81@WBJ=\DOH5:OBE5\]AMQKVV/D,%^\ +M\E_D`\/7/X8@CP:_!A(%W:LTRK$&=@XSJKWB2&E+U=MT1P+_K=4OK,,[GF?O +M,82Z%JXY+]_;'!)\`T`B^LZ-++_8/O]"/;T=@+["16\M0]3?Z*]G5Y@Y`V/- +M>&>JEK`6J<^_@NI'XU6K@QIM,_AX<J_JEV/I;?7A>\\"Y);!J22NC/=Q\<D@ +M9\WD^,$;AF9NB,^>VB7H%L$\)"0D@&OZ#/XIT1[0X[F+B7C/8.05E<ONY;KD +M5F%^(@;FZ_QK59C[&<R2/0@0NZX*;R`";W\,O(%OAG<3S&]Q(2("KW+9%1FQ +M[6=WD_[FV=5X$WQ8]C<?XY-DK:3?C]>4><FD3KIP_.\>_6X+&>M^48]]65JK +MEZH,G5GTC$\6PDMZ]97."/YU'9DVDN-[F7K/)E*0_C%)`R[)^)AZ#B?VKN;G +MUE$VD&\&!NJIM4A"'SLRX\6'3[2F/8=-SSN,.H>Y73&;G@?>]&;[IV9-GW2P +M_1-(8F[O,9OV'-$<EH4^*5[LT$/ZD#V(UX@[@^OVD<L?YMOR#0U3Y#GZC!Q% +MP>F\O4^N-;/K4<0V@^SH$]N-GGQC3NYBY:D&(A_D*[?@%-O=A]N80D!:LL>2 +M+=6:(Y<JA\_31M7ES`_8$4<+N<S#`'3X<B*](AX^PPK;0:)A%=#4F[W>MUW! +M$+2^/6BS!QJ^P%$ZFT#8+]59H'D!\1CY0"*]4U]T&Q/K1XL=B7C7.4R1<K)1 +M[[]?^35-@W<AV=S&AC/9_E0<.SN2R'U4L7'71L<U-YP!$26*>.A=).EMY_%. +M'SSCBPW??L:,;BXD0$:&]C,&XNI#E[[]C)ZXVM"E;3^C;3ZV;E@&\<H0$EOQ +M1.*1U[Q>]4X1?'#DW,$$_G;<<XU/;\.P<P>U_*"W/Y&&DON4CKS6_HD6OK7D +M.[VMF%S?3\#XQ-QTC(+PB>'<01,M_Q/]N8,Z6O@G6MS9,&:\_8F0P$J6A@XX +MJS1S+6DC8'*G\7J>2DMG!D%QY#Q/[)LJ0]:&CZUFFVUSS/5X3[IT"9@*OKJ# +M-ZT'Y$5FR=%/GDZQY1G<&B"S]>31IB",T`<MDO,L4)C'N$%R]-A>KQX!='V6 +M'N<D=R9"('A7?2)V`.WW`.%Z+#^2G-UBIT5RGY0=_1[C4Y+CA(P/*4%67;:W +M3.(P]D:BXZ1I3Z+D4*#'K9:=/9B7NXL]FT3"SYKV:/!5#].>$9HN<EO\4:F] +MW0?@]N(S'EK:I139!'[8A7HU'10FZ0O2NWJ+I5IML>PX6BR9Q$[@-]TVY]FJ +MW\"T5S+)SI/R,!)+X2NA#I(CJG1Y"CDG`>5KHPI@$!QD>9-\%VF+I2DD[P@\ +MICVF*T(C.[IM#B@?$MA/ZD5[%Z0Z87.>-#WV.:X7.J"S!CWK-EB:C]2GBIU! +M?((A99[DZ`.W!62SD`.7[[AZ`PWC/Z,II/EF<@+E*N]I#*XC@JUX1L?C5<SB +MDF%X]QEY`&@".;V%;^BVNXU:_E%Y5]M->).L<,/*U=#`BHCK`"+Z21V=\?2` +MJA[;Q7BN7<./)*?,9**4AU]_Q'>FW)C;VVXC?Z,<CS?.YN4I)1@CGLXT4+CN +M\._',S.&Z'LQ8M_?>J"6G&5KOX0OHLCS]-#<>.VD0;?(G(G#Y!R#K;U^D#=D +M[]6TV>S!AG,AH5=Y\P)Y9TSJ))37E]X&L-KZW,,1WCZ<^>&-F9!57X:M;UTO +MN9K2@HR[`3CI/@S5="%;<1EOXF?B4[?<6'*`*?V<5]9"C8_W)/8!.Y42H*WQ +M-86)0$3'/X7VM3G[:T]+4_">2&#<Y.Y-+8UX4$_C8@P_=+A%^,#6&C/BJAF` +M!5%[P)M69/`TPE`B9YK'=`DVSVH+FX%X+&F>V5-ALB(>#(IM03G)9N`MY'8B +MFZ$FCEQ$+G7ANVRV+VJ[B<05S>.C[\B_))#QBMPP]`0FL_?0E=J;\=Z=`.GV +MC*4`;75FD5.QOL'TG%D/YQXN`><`((&)",9.>P^Y0L[@A2]RX*]6K]AI)MBA +M<XPP4.';L)T6CV4//LTD&`F?Z,5Y6JZ9U0Y&0^ACCJ#8;F'Y>$U[8$+1:]HS +M>4R?SMZ#X\G!]HOD)9\$Z&00)$^&871,GZ9+M/<2/+/P8BD3>KS07RRE0W/+ +M3L7F[*WZH\W=5W,/Y,GRZFB_9$9FA7EI^JZ:&E+5ON[7A1P!L3V(UPM\B1(6 +MU#R/]K@3T??$`HVL_PA&E8;U[3":!*'/FH!6V6-Z_H7`3\Z?:K]@$2]<TS"\ +ME>,,W/$`HIJ%XQLW3&X0VWO%"S<V7-N*MP*,.2RULSL\@;C]"1`?7:?M`<;K +MH\\5WL*3PZ*>'&"T_7(&R!9:SSIS4`9`^A8K'V&[=!#2'O,YRJ-)XJ6DAFDO +M#Z(>]K[C>%U,W[T`E<W=7QTGSPF2=]<67@N"S/$S+-YQ)?&@ST,8-,8:!+Q( +M'H$G_Y`&".\4.[[D'X$DTN?'SP!S)0/9F#X\Q-=^_!.IBY0QR*ZP8I+DAB#T +M$=27#6\5]`Y,VD>3DE0!_[5D;.A;?X1`2QYY@E'L-':G[AC9)AHW\=5D9K#] +M2RJ=M`.MX2CB-J[_.!0RX56XZUWD."2T8[L/POIPBG:$3UCO@!8RL]=Y8"[V +M,+E7ON\\O1M/#_W^)A5.=P#@_%@*#`+J!Y:E@6J4!?P&?+/'W2LE0(='[TP] +MZ;AX^I4L!\CN?@FE1P7O\\;)O[*)9,ZB:R"\<P[ID)UVA8A>'58B2_6A_AF, +MS$WI;_P+93VSE'#@;H3D/%Y39_.G43Q!^)MJN.Q0`)00_U10.7:.O+)@5]I[ +MXL9TD8OMB"C5'9DW1..O8[4ZW<7ZYRNXYGSZX3Z$-T^I(@X%&,98Z"!SS&.S +M@?;B-`>;C]4GX=,-%HV]WV\@7V/LO:?M?=V"$M58])=!K9Y[M]R]=7,H].&] +M=__M^;LC[K?N)>L.+;'OQ$Y8C6AII8+IB]3:2:T`DU8)30D@]NP@[_[LV#"B +M\>)8_KH&8],Q4]-F'72^&V&N<O%.800DI5N'.V1A!S[#,\/'XSJTL,/TTI#U +M%_#47LV0Q<HDGKY\>1#?8]KT$&8_3%ZR8=+Z,U@'W@#I_3^F937>FR;<#H!A +MMG,DZAZDYI\&_`2]8"[VVT&D&$G8WDD>B*6@;Z;67FH=0LNT?Z:T#Q^2$D,3 +MZI?AOC,Z;`WYHON0H6&D+&SV6,YIOI")MV?)B"[)N=E_*ZY#'3(U7"^3%U4' +MQMB"GB'[(0J7:?]D:3<IX=*$AJVR^Y#D;J.EC#<U6S4J>L+18$Z7+5Y*$Y)A +M/&[%,#>$W:L"F<;[Y"WD\^!;XD6#Z8D/.+6FLKM5X][+&@_7`6E$WTZBTVEO +M%9O1V65J>I(D:=4(>PDGA$%],LAF`.XAR+%AL.R&.H?PC:/-_A%03W/#T$@] +MWY'(9X;-WMKPYTBB9#613.J@.8^);R'K=9!^I+R/IH^.0+P8M`.J*5VD1[!, +MC]M)G"["!DF0BQ],/^RFYB'D3/<AF&N+[E9.L(CN%_&M(D*:OM\D4IG7O0-D +MJ$X[/M5+*,:T?XK:'&-Y@WCI3F%8R'YT```JB@D03VP-EYY&WKJZK%W3^-[H +M1JDMECW$U=XE`^DFJS1UJ\=R1/,Z18!GP?"NRQIW0@/(]3O&'$2,&M9?N&DA +MQ]4G0?7QPZ_WXLN"[J,</_+\PUVXT,H00^YCH+4FV+`B-DS-OS8@=EZ$KV<, +M]$5/]P[?#PWDONR]8X0N$,Y9N>XV3HB7A4.2T$;(\[`8,N,#5H>)1JRP.3TD +M?2%=6)S[X;A4$&U..P.B^W!B_9V>32FX(^X^W&V\>/KA`*61V+C=]@"$X#K; +MZ9.DQZP3W5W0/9,`C/H<^![><)UG4]$P,@`#0#0GGS^!M%TK7HDRUG[(DS/< +MYNQJR!AC[PI'[C8>/(VR`R3Y`I.T)F!MNSY9=YWLZ#I_*A)OTNL8_),$LGYP +M:*SSL(:V%*DZ9WH2-9YETC/$'A-OBBG@X8#X+(;TF9I.`JVM)VEPH;8^5=Y$ +M[M;1WD+N\G@$_R;AK3@.%$)\=Y`*M)/X>E/3S\C+9+1(3?V=E%6<)S(TEIAR +M#2L10<U\>U\$/DW#\?7(<'<&!\0"H6G]WU$XHMUQ_26.V[K.]$0Q^_:NJQD. +MG#H4^JR!O4[C&T'GB"2[')W/H%%IFC-Y4"_P_,\)X5\)$Y-B,(&//K&:?4V= +M9G]=G2#@M%.)B>0,G/KT]$?JZOGI4T+QJ?8/#IXZ`@$T.&II_9X!8U%44_AV +MQA$Y&V8&N8N572"<4!+$JVG+XO"N)YJ&B7U^_>F3IT^&A,TAX5!(:`L)VY4I +MGZ)`TX+/<@HM^-Y@1R]Z;)3KS1[+/CI+-XAM1MG1(K8;<Q?G*&5E5.G!V9?K +M<?;GADL_@@*!W0M"DOP9?C6)AY*1_->-2#\6&96`A"6A6Q).^D?*SJ[S[]'1 +MH]-^DH+934IT]W/K@"_W:PC3Q'D)R-1CA&[*5R7W"9`T=/:^N3.TT.;N0;*C +M?WW[77J<2+P\F<R\^C0>C*EQ=,ND9)N]VZV3[=TV^PFT3S2WU1O'D)`Q]NXQ +MX#Y6?WMN2&A2N,\)Z"'!BZY/$3D=X%`LB!7!BY=&$QBX>@M]7AP#?T`2><EE +MJR>Y^J$A`7"\47FQCV"2>'<3[V[T=GP>\3Y!O$]@69,_9TB#N=5&S'7]%^C1 +M*%<:*=_MS##2.U$`ND9ET!?L"F3W;'PGOA&W?<ECV#7P=1[[@@D<)3J./%#7 +MJ+Q+@&EDJ=_XG*5N>-AG1\4\U`-J#?-]CI\"S8J/E)HXU$4W<<(#D'M(6$*\ +MR2SE($JUDE.=@?@N$44V5K(P%H$11L&D+#*IZ0NM/T)D93*M(;WT""8Z!\1I +M:MJOC?30YC&H@J`25C=4M;LL@(SXD.'4IY%]*5/3&2C-UZ0-8Z7Y2Q0DMT(\ +MSZM//PG?"=T/;\7H<:9F3U3UDCOM6RG!;<-)P&G[5C8G(6`GLEKPZ>#4"$GX +MPHVIJ2:(=!J=K-/^-'4]`ZX#_L7`;TXIK$"[8(Z.W'.O_P[/KJT(4GRW8RO` +MZ+\NVNT$KZ<9=((!X,%=O:<C;$_8C'RNIT&HPBFD(PCB/DP_&+,,8^H%:-9N +MQ].4!X2;"K"!C?B?ZVK&K`?A'9@D5DD)F9INNXA5BN&;0V/XIK\&O]T@2&;H +M:A='*G?I**"_.L/SZE:*9(#7?59VG-UME!P]I\IZQ%[]^RFI#YPJ.YO[OAY& +M1OUI9Z1VI&I^'8R18<`O]$4!CH\CQ/)[F[!9^,%I6HCS[$M&F&FS0BRI]T,A +MB]]+)85`R[-"3+$-.<ZS:SO%-:L`G^MY=6<T@0`]:?@99&[HV=4:&_<V[([# +M%.SL&Y4D8C<I6F(W*A=A_N?;AV?*,5;OQS36V8]IK&YBMR@G/J:QC^+Y`[RC +M&:JX`]^GG`(#@NC>R?':4SV>9TM#T3IIJ5$3E<>+Z`7>&7CM#T@WMCEF-][? +M]R%;"\6[L"V27<'+:-S!]H^UDKM'`X/S6;*3:D$)M5?F,B1[#TRWN]*/G1=Z +M)'L?7B&_/WJVTZ^NG;H5>019?E),>PZ:GK?WD0=2<!WR7=/S[C[I=?C$ET.[ +M85:FX(T\ICTS37O>'O,N-*CF@G2X/6#&;:B9[9^937N<W7CEHN8@;@NA=[&4 +MIRV6AH@=>ME]UN96:@#^7MQ%NIM"*[8%)7NOK:\F!3V)#.H(BO;>H$WHK3'` +M#!27+WO)O-@@S5&OEPGTXC-RIHU'B(3=%ULGFG$83;'U"]?M+0#W?Z]6/U4+ +M#7KTCTNTAA/^FW63[7T>5Y=Z.1"^1;R&WA"D3GL#]Q;.JEC^FR>.W;OK\"/R +MZ`T=]_YKS7_F7#/[^+TT/)7-BU.8;0G/D^F=0;'SX9N6(:I2Q%?K</6(OU?> +MM`YWL61THH:VB$ZR_B"U'S^C^AM"N_!#^?0L\!.1)`UOV'!N4R<^2<ZQ]1%_ +M/%T*EIU&-I)<Q+^"4W8D=VI,M]/M16'X>;N1C"2#/9L:?XZJQDUX:9)'EM#A +M:!+=5H[/D9U-C6MUT)ND+K'-@'>QP@C:II,=5DGCGPBX1?V(3Z-DJ=ME9W*G +MEFQXR)ZHG.(S9:=52H+D/C\,LUZ/([#8XPRJVA/_^`>.GD_3M9WU'X42\!6A +M+AQ!C_#CZ%U/DK-/`CG$U4\&34<_#A#K[5T:,FH\0R8N%>0M61WPY8,305J1 +MG##?LM:GMF*+C.G")37`*;Z%V25V].";PY\?_R213'V\9(EHK+T+?4DDZ6#Z +MD?`4Y>&^]4CEYDM0(*[E0(&TBEZHXFG-:7O?!Q]Y-CV-#NT'1SSR5N+]0;MG +MTW;B]YZCZX/V4V[44$4.KIPJ4]YW[CU5UGOJTY.GZ&@V_'W[WBB-D,208R^= +MY[#5"=&]=WAMJBI$`T+V=J>\KC)603]/<NQE"RRR$!@K="VL,S)I#Z;R?N/Y +M#T`J[+1OI^+?7F[=,"82RLZ]DG.;QKG=/PSR'./H/G]*<IPD8RK&-"?6P,S- +M'-9"`I^X^GC1;@ZFA]AR#'J9GB`*6$ZS=&KLQDU=6X$0/_(F%W`<FL#W.>X$ +MF,_!O/%]<OD<N9C;?IA:7<,(&[&H"[%LA0@O=&N`PBUTK1LWIR1GF^0\[+\C +M'$=V6*`"G@5)&B`7R7$8T-"&,C&FZ\)T^U%!HI/T*IIG5W(-.0-/O#3G/'D6 +MF`O6]H5VH5L9\Q'NJ)!.9V\DTB)TL<-#3$_<J,-GFTQ-PW4(:I=ZA::CCURC +MUD^PV"H[#DN.0YWVHUIR_VO],NEM\2-UXJ-_'>;)[9?T["F'R>+?3=".W;NF +MXZ3E85Q2($I)-X*,1[6&3"'[43I-@RDH3%K>OA2R=S6?$WH@V0>?0Q+_`AQ' +M]I[_D)^%]Z:&9U@&,DLR2)>@-'YT.+]KP_D1^NFBL=1<W\.Y/3\911"F^W0' +MU!QFICB=-SV)9P1D@GT@3(^\DQ!XMP.ZA@&R?=]^]+2SASA[/)M:"<UWVT$, +MZ5F/.MUM0<Q*F-5IWTA'C!:R9R*WL=YC^."CTTY#M[.'%&QJDN,0QIY3/1^< +M8CZ/@H]O'5F?V0FBX@N8?--#PS"3PR030#U,S;M=6"9KGU,P(R1P:AF?BNE_ +M5(+Z/O1!",I3Y1N#]`6Y\ZZI!;5NFQ"7#_>HO<S4]"GPI5/MW:Y8WUZRZ`:L +MXS"0DLGS-EG_[SEY!$"!#-`V^,AZE?P0:1]@/8>[C6]32"D?H96(P.GL12'L +MZ^#\G%RJU]22E`6<&VIO<W0)65AL.Y;Y-H'N]"E3TR(HX-010`S#I6";#PD: +MI^$ZIZ-))I_\ER'@R]<FD'6]KMC6]:W"JW^].*^5G8VD+.##0#_]DL,H.ULE +MYU[9<0BZ'A'B-TXB;;1WB.FI.\BI<J1(X"M`_=B=W=.1$!HFQQ("^IDV/JXC +MUX4S'LJH,,[45$GN,=:1N3;!%N+HY.=7:\U3;7GO&1%)W66&R]J3-I&P"G-H +M`Y)C>.+OC#[5.!B&3]IE3$V:>'+S/XXKC39G$Y^*2H!DC@^9.9H:;3;^;X## +M2_BT>I/O>!R1[4)V0$DCWEUXUJN2("+3.6!R]:LX0C>^<>21GF[)`0(K<%XO +M1<U&BAJ07!\%#JMI&"6ZG\%[K7!TNXN.;OY[O&P^'@#VY[^3K-L=7F@[OTX_ +MYKP_:<PEC;!-(YQ,AZG>88C>?,R=-,:Y(\R^NF#ZKG%L7Z51IGW(ILS`[79P +M];>([NU<?8KLW`&I9,=VV^OU.BA`=G:-`9G,N6.,<SN9B"\BX$UM#M7?GH]" +M^:T?D6Q"PM/H&OHAG=P_K4SIQLG]TS"YEX638R[Q(_*(+B69QC^M_*.'C/WT +M-<Z='[#E$H!D&YF\;T/Q_D@/\S807*01$>96582Y#CY0QN&'ANS=(?MVF!AJ +MV$(FFR-B9OP$V=$BSS.W?Z25/#QY+JDEQ`\U*RM/T_OP'=O%=NL8O#T:L3D( +MVGQ[EGCF)A0C8$CA![%=YRZR;MJEK[]&M'?!W+!+X^S6.'?@$#H"YK==N@8S +M!*2H^-T!*(Y:GWA:^4.XO@3-X+T=J_BCJ"H")[:#'\86U>-X[KN`\]*+.)]6 +MKGV?Y6$D33",^F]4OGJ/-:21,FO2W>X#G&GK'?B];A3$C,/BCI.8+3F8VTVD +M#$MS6\-P*G/`L'K^;9`H?*_A^@'V_*8.;3K2.-"V[SFMRH?/D-Z^@U1B!Y;_ +MMDI(P"`V2@Y`QU:.SPRMUBMOG:++7DZOG&MN/Z.5MO!D@9NN?7G9VM?J!\C: +M%RZI;%2:U,R,:L]'FB%8F8&K,VUIDOT$64EZ6GFHAQ+;1JS;;P@J-^/Z6)V1 +M$ZXAE9Q&3^9)G;C<Y27"3$C8K/SL%'WK*X3KW&:@I7-V@P;7_D_8^,KF<_6Z +MD/W$!N<)_P^\WN9SZX8(N236`A(K&RA_$L+ZM'*2T.W3#+PW/Z3/_9F;0PU) +MPE#9>0+5D1(A*\AW&I^\`15N@'?[LG!V";F,QO($D,":.C0VY%2^!#KOA*(O +M'23\RX>OGZ![`#<S-6VCCR@0P@B>5`D#&L#F\`K#,62Q<I;X;R2K:$;_+5X: +MWZL</4D7%1G][#O)4)Z,C.DI>H>BBGU6N?8^%??1P&"3$WC<R2HLE6%8(#-_ +MNY=BZKG3T9C:]@'=IS4WGVL8(<R0'2=0=>5N<G\K,%&;HXE/5L<I&_\/*.Z2 +M!HO#O5CDL\Y&1IC^Z[TJ3TX3C-[8L0V)XH5W24.+[HT<?Z?H]N+=BP1%>+S- +MJVQZESVLN5%IH9]X[3SE]0`G_R[R"QP#A"$=VC0LD6W\D3;#,0YF.,E2$IGM +M`/4WL?E.H^?9):&KO"^&:Q`I49-#[1*.[6.SK78<=X(;AK4X`R%[T/32ZY$] +MSIQ\NL?9CGN<(MGCY.0%+9/6?X1[G,+A1G?@3@%D_#XB/-N#&[@6>\!O\H+_ +M6&%05*Y$@S$>_IJ%VR$P3;@98C=.K>/C&J<NQ4NR@QMR-1!5M`>U,!$P4X&? +M$RS@0&5QD@:G"/0$7S].0<G6=P)=&&B4[?VX&H(;Z##?QUD#T4(PO60GJR>. +ML[]MA#2FYL])?6D-:Y.C7FMLP=<:\5)_\E[C$9@1QC?:`UU^WO22(\`P8EZL +MS,Q3,4+N.([%B08'\Z=(L4)`^GS])8K'/,60=U4\-N)>,<I91V"T0ONW+8X` +MEFESF.NS\:+C=4:;N[\J01AB<RCN1*@84>`>"A]$>GC>;<9::CIC&_%\.ZEP +MTU"R5];+N6\Z$$9:W`&",O;0PBUT$",AVO,?DG4MX!$&3,7#>!6<A[KT!E0: +M/7D%`HO5,WMV,7TL,?)(VIOGW\E31MP7>95D2!YYZJQW"7GG5!O]MBG^(I<C +M,]J-/M.9O9@]8E^$6\#FFB'RJRL1F_H?^Y?AFI_C)([9;MWY][Q15WQ+'1LV +M7[?UN5`(F<@7S<>$OY)8^@[-G9D>L0[F*O,V#&W),7ERS![[25M[S6"/<'+> +M!DV+-LOV>>VY#BU'8ZG'3F+JG[K0Q6?=-WN:==GRBLHUX^\;5V--'S_9FFZS +M39Z0GCXA?:(U+6W:W6G3TB9;5_'+K?:Z2FLJ\MR\?)E/-<KK4LWR@E2+%!C3 +M9SM<-2S8[M/^\UGT$3_2_7-;P?=?T[RE>?,K<"Q:^,]MZ`\1Q$]UXF>Z?SY; +M\/W@:USJO"(H>ZVKJH*5/1'+OGM"6OJ$B7=9T]*G39PZ[>Z)UJ+"FI*B%:SX +M_/N@7"/D!A/L-O&"J?YZZ>+Y]\0S.NG/8XY+;__S=](IA./WTBF$XG</%D15 +MF917YBI;OK**%7CW%0J<&EL@>4]V7:I!GDV+;3X;_.(YP>"9$RIXC9P5B)3P +M/\`GUHF/P>?P`?C$\K\>IS1&\#7N_UIX&/ZK7?S5&MPV+6W2Y?@G;6YZ:38% +M*#^([9[:<D@ZV-YC3NSZ6@)8&D4!I/QJOFIYX=>5;[M*^R])->8#S3'FX%D4 +M\F[0MFB:VO@%&[(T+9GXE;4A2]N2J86OJ1NR="V9.O@:OR%+WY*IAZ_4#5EQ +M+9EQ\'7=AJSXELQX^,*G+5LR$U#,:S<TM0D[EA8,P!?"&Z;7*\";/O$R>.\# +MS!LV+$@UHGR4//44GY#1]+[P97K;@P/ZOYI_6>77Y']Y>T#V>D"'`67AC*P- +MAJ8C_-*I2<(2]KT`ON>R[PSXGLZ^)\%W&OL>#=^I[#L%OI/9MQF^C>Q;/S6) +MWVIZ"8:D86.Z7HN&-TS,5X)WRN7P+J#PXO[8_RMM]EHL/LLC"+WK<@`GI@\$ +MD+07`&D$(,W-Q\C<+R-S/M^P(;GI?;YLZDBA!)V5Q/E]<#Z`SD+B7`3.[Z$S +MES@SP#D=G;.(,QV<=Z)S$G'>`LX;T3F*.*\!IPF=PXE3/W4DWT+PG3CF\(.O +M(6][\/+W5?3Y>:A&EX!W(Z2W^5'/'.0QKVE_6H;L,'KQ.+;M"R$9ABI\4T?? +MD1$BNC`)(#7A^Q+@W^T_!N.=J__R\0CQM]Q5556ATOOD\1/'IR,*IR+#`M:0 +M-G7:I(G3TM*MO(J^'*7,P7'W/RC1XV%$E3BF/4I65%95+"\KK'Z493J)<L`T +M:):[K6E3IMT]>5JZS5KIXEU5+,_(^^_S.,YW^GNHR[(@U2!>P#MZ@?C)Y#E> +M3I3`TQ.7%O4@XY^P&2$>KY4TZ6V7RQOAG*?,P^E5^(V55?C`Z2IN)6J9*]L6 +M7.%QFP'IS\]%<<(J.U)HXF1Z"I!N%T!&?\*,'EPP\+V5</H]<]57T"(1(N]? +MSL7W+^?3]R;O_Q;O7V+\EUA\R[=X_Q+C/\[BC_H6[U]B_#P6O^.;X[\W!^+? +MQN*__LWQ?X?QS\VC\1_ZYOAK,7X'B[_OF^//Q_@_8O$/737^O/+"2J#5RJH2 +M?`NWN*349>775+JL%576XHJJLD*>RQ;*EY,WEO&=VI*RRE)7F:N<=Q5Q"RNL +MI17+'ZVV%M84EI06+BMU<5F%15:D?%>14.7"#-"UHJJPC,NAMK7&556-F=56 +M592OX')S9I$8X^F3O)@/\;L\%K`X83F47VU=5EC$+:FHL)85EJ^QEKIJ7*75 +MUHIB:Y6KK`)J4%)NK2SD5W+W\850E879]]$ZK2PL+P+X9I=4+[>N%BKX0JNK +M;KG+5>2*RDNHAE(C3E*/ZFI7-:2J<BWG*ZK6$"A=996X'5EAK:H0H$"^PKJR +MHIKGYL(?!*^HHK:<R\8RRPO+,!BQ!)6X`LC5:\J65926++>6EI0_6LW-JB@O +M=U%45[F*`9HB;E&EJXH^<,V7E+F*K%!B)".(Y*IRE0.0Y,W[VWEK=27DYL(W +MA='A*B^R%A8CAZF&9G*!STJ!)^#=1]T`+59H.2T7BHOX%Y96N0J+UD2%0867 +M"<7%F%MEX7)75*/'P`UREG49(,_EJH+LBOG:0B"$Y858&S4SC%BXK***YT!6 +MK*VH>M1:!`18&1M!S2P<!X`2R@&HY2M)H5'>I$JTSH75P'HQY6K!58U/A!<6 +M%4$VU5PFM</U`C(!D,+>Q85E):6T>2//BR\C-,!7+*\H91&0BJ/=L0FB6BO6 +MGZ&5]*O8D'!^7^,=0738FW0+FA_V,=J\G`-J4K@BBN1F`PY*RBE$#!$$-4#. +M8:`JPC`3L,OO9)E%ZA*%,M*9$9W1-:V-"<EU55<(54`?//23BJK"*D234!ZI +M!$002GD*9&'5"FA)H<Q55;*\L-0*3@%Y"Y(Y]H^BBK+"DG(NJZKB41<445+I +MBNI%I,OD`F1W5I1#$:275Z^!1B_CYI66NE9`?M4NUZ-(MY1@2UW%/%:RR%6# +MG81TT0@42UQU/,UDF5"]9@!;+*E8SI<25+/$83``?>4D6?65_!`S*DSE-86E +M)47A.G+S@!BM12IG`3#Y&/=5:`F)DL$PJZJBNOI.ZB#HH%5RU954\\"SJ#^I +M3!:R:98L0@#(J]7ND>.J*BNI)BRWR%5>`J'L7?*!KZ2'F[<(,$^R+:RI*"FB +M_&'YRI+2HBB^B240E!:YJI=7E51"Q3A[G6LY&UFL1.KB,M56+P7`HXF7@,L8 +M5'')"@&!GE=>*?`3@#[`8NGGP6!45254(G8HLH'?E):2AA>6KU3A";L)1-B4 +M5\%U)>*"QV[H+"]R%9>40[ZDI&E6D+IRKK1>F!Q9<D$-%#PZ:C>2.[1B=5A+ +M<5]Q88B=36K6XAI=$/>E/78E!]_9S5-29^$IEW60@4+6Q-D;FSWJA0I$OBRI +M+BDO'K\\(NV#9#D%Y];I4Z?=/6G:1)A;/[J2R944QO1CQ;)]2/&HOH;B&7T- +M@D7=I<'WSS@^CBJW=-%S6>G'`/I1N/PU@RBI#"(;.U%QKB8?OCN3+3=58LRL +MT;+(DX]Q=!$/GURL"S^YF-YVV1N-/YY)EEI!/B4/AEF:CX%(JPVO`&:D^0?C +MVZYQGKD:*0DF#5%O*^,I0*=1MEO(TNDP3-F2U-S&#\N2S)`*Y@!M/#M.R0X< +M1^#'`\FQ[1E]OEO+*N4PRH)9=EN:C[A'P-S_;>[\*?IL8J>]7T,/8X3=F+0Y +MY+X&U>19W$:A7X.3+/1:Q2W.#0G!D!!09F12S5\^X?Q)\1AW_KV!9_HO6X^N +MFJ'"`Y",#$.">CALC=./[WR&?:CVB9E<E&61!(5L^5Y#ZW+^`_%=[OR'$":Y +M%7PT(B0H(>%L2.@/"7W*+S.P.5"EDJQM1B`\^>"`^T0,,#_#X])F1O``G,T1 +M<-M>QI7I,1<`*5[9$3#ML2R4+AP_0SYG+]3*CN#Q0''B07`72Y:%F7@Y`DFX +M[AB)HL?8/214O]#CZHN<&^2C\+%L.EO\GH$U$Z;(FP(6W(A]AK0SKG(_(]E/ +M2/:3^)*=J:E%3ZZ<P>FA#541U^A]@IZ^Q69S6FJ3A/'X[*O#7',;>?ENB.Q. +M1O6C$:BHE*\G!UE>(:J_=GIO*KD`K\OC5B3W48^S6W(>)BHH)X@*RLEB0@RR +M^V3[9V;)_4RQ['RF6'*>*Y8A"*OK/A$3<!$"3A3CZ3RW&16^W>0XN/,D.0D- +MD1P0R?%),>17C)J-SA,Q`9]"`*1V]W7:6U'#IEAT?\*9FMOH7?J.5M'=JC$U +M_R=1W#EJVI.KEYR;94>7:4^F%M&T67JG6++O:/\[T,K3ICWS]%)?XN%(P'8: +M0!+,BX^$=;2?,5-/@]2E>CHW$^R-E)V;TX](3MQU)$C?B$CW`M(!Y!WM'Z$^ +MX?;$MP%1TN?$U>7[*^YCVH]J`<1B<:T66BP+.-'+>K++VRHY]LKNKF*Q0<L) +MPZ!.>T5[%T3M(E'YS_:CMLY886_=8"CN<'&G?C7'+5S3?X"D=N^5G8<]EK70 +M1*I2E@/0,$\K.3:OOQ!JX+C:H;A_]>+;KLWKW9O1H^9SW/:MORTDO"@[]^J< +MK=!!NI1$<K\C^+3.SP4PQ8/:7.5+HO%&U9_<1XOE!BTTQ"'3GG<EYS9:C%YR +M;"4ZICL17GG2VF)Y]EIML;Q@K1[:;G.Q33@D#"%/@&HXTYX^/-PJG6__V#P* +MCQ`D!A"OVZ1W)'N;;-]J>M[>!F@W[7%L3GS;=KCF-FS?-IVP;3UY)J]VN.R$ +M.,XVAE7[YL1VV^NUW>QPG"RT-I^KGXWZLSLU?8!/TY[I<PA)6*HPU9AWQ[HW +M2^[-0$Y('\72]$QH1R"UEQ&V,6^;]ER`T(7-YQKVR\Z=I.TMB\<ZL=6!CC=# +M#:$[KY$=F]M]9CX'`(LI-YW@0',>L`#IUA+DZ%?C.?*G-7;(P+$9\2,9U[:7 +M;39C(6\3/XHVC1'0YF@CKL,8:8Z$GWMM[YJ>_!6Y@A/[>!-'3T7Q.=([.J'5 +M]D[]3'*7Q%C[BUX"KG&U]);L>/%X2'(_3>!84G6):!AB7W(^73S(^0R2F62I +M76@3]J[[,V*!$!.@Y!RT"9!M(/%=Z)L`S$6"8G<P\0*YL2$9>K"4!/U;FH]$ +M_@$E\AY"Y.`^0]UGT7U"MD."DQY78RP_#;.V)Z;@'K+LM,@.<^YB'-\<AMS% +M2N(]40LHE/^&DRR9@O>R!G(O2W1BFLK,Y8?[8\<[=0Q5;3(>1KFCF.V7D\DI +ML^:08&*/+6^SP8"3@WM[2]@%0(GYRELVLH%W;HXQ61BN;ISA=2;DY5H\MNC- +M5W`CC9P&CB2-SR?Y27TQ=\U$E2],)H.?Z4"6<;N!QT>4Y;7FYA#OP*^)8RY) +MT[;KA&1\OSS+X)_$'L>E5SB-(V]X=F:1JY?\R7GD!>:J%#EK7*B+O'I2WS6F +M0],)!'<V>H_MLKMKOKB;C&_B&KP.Z'?DIL'H=T6O(?='3V6759F:-Y$81CD1 +MV7TBLG:PU^CQ;EP<[C"IEO^^WR)?(1@JIDB!]2%\'+@FKA4MO(<-4H56I\B9 +M`#A['-CTY"@H1B,$\12S4<XTC.F3,@W"`5\2.9]"BP'>_U>L^K7>JY6%0M1J +MB#I8RX^VG:_62I>@O^*-%:3(=&7E5'J-GL,P9K5!DRY=\M>1NXLTMDQS]1VV +M\S6W8=P<)2,<3Y.^6/F/*6%DX.6'^#X4EF.QG:^Z$>-?5I?[-53ETBM=BI3= +M.R6F[(%U-37?@P<YKB,*&K&OI(+L%Q*LJI;_U>J.0I@P(1^5)(+*E"EX#1*" +M<PPD`'MP[IB#($^1,YB>11K)T<=D/MG>9^L$/`4HYG2K+?)0VV)S]6VVOOI; +M$/9<9=*4:%P\/EF]Q:S6GZ'BH6_==5?`0[V3XJ`C@@-E<@P.Q@A]PG`DM[1P +MKC>S:EZ.G@"^M=GFQ\2-\UB?B+K6Z.KOF6OO8N]\&[7"*/6:O3P%IS)XA4E0 +M636)7+*':N'"M8T+C5I/]BPI7LHV=V83+6'_M-AWU]>_A2]-2$.DA7@AA)1M +MP5,K_%#Z1OC=D\DA?YWXEJ8XL=X8<W^>V/M(%%RK)JIW]!2+]4.X=<,\]JTY +M-)/#DS`3-[X^1^\P\5N],/W97CR*ZRN>P5E-F]M&A3CU5D=W#R<,[DS`WM7* +M`7?PI\GV'MP[Z)&R%ZC)7L$02-L(<K.X#G?3LT?#E`@3X<U8F\-X#,/W>CH( +MB<,GT?77\5==?Z5[]N%4F]-Q,GB"O&F=?C=Y_=RTA4'[<->`=\Y7I.-ZOG'E +M-?RX#'+/^=U<])PH5A=@6CH]2^,T;S?S%H_[A/1.D%Q/\<]G&QW=&H_S1.IG +M8D##7]>`[^$949];#&CY:_PW>W-76OAQC?XAN2NO13L^=^5PL+'$'T']_$-5 +M#C^<8X\F1^W\T_V;,!0OIA$H)'L0R6AE#:\G^2R<A)`'PO?=A>,WI2$^(&8M +MKR=U3)VDSH^#D?DQ34KF@3!]S!A-\R'?J>R;7G&8-1H'MRAWZ@#W:.;%TJ^W +M:DZ&0HT&C?B(_M+Z1XR%%P\4K'_$$.H-A=;/-7"`OHX,JZ8CXV8N3*.&",H[ +M)Q`2C:P"-%X7#P/ZRA_PG#5/>>`NTINAA?D[L%^MXN@_9=Y=..RO7$MB3;J+ +M$`&/^UY1ZP%][-ZJ<%D/3B")O@^)$$U?362D,`"?DR80_&/+WM"0@.V=Y!\G +M!G3\]?Y17G9+F7\"O5<%%R;P&@3\#M_->5E;^X=Y20.965.*$]6FI/A(BZ+! +ME\:K?=:3'Q(OZFK=Y'[4TK?I_:A-$%P'9B4S4)\*J`]NX7GANYP@Y%;(WY_G +MQ4Z2IWP:)/J#B*"9'OM9,:03XCWVS_UZK]AF1/6JX]-#_-!5&H_].,3&]1N, +M>@W@TG*ENGA<AP8RQ##L%^^$_HRW/&)_GOS-^R^O8_SA+/[#5XU?!&,4R*M+ +M5H(]$^Q2L+U@5X+]!-A\'YEP+JD#^P=@KP-[&]B-8/\*[":P'P2[!>R7P-X( +M-HA02[Q@`Y1+-H,-;&')TV##4+3D&;"KP=X*-@AP2[:!_2.PMX-="/8.L(>` +MO1/LY6"_V(=`<TM:P889T9*]8$-MEK2![0;[$-AY8!\&^UZPCX+]$-A=8,\& +M^P38UX-]$NS[P>X&>SW8:3!.Q4.4!6`#$YV=P^PES%[*[(>8_0BS5S*;[\?K +M@+C9=<S=Q-PMS+V9N9]F[FW,O9VY7V3N5N8^Q-R'F?L$<P>8.^U+4I_9D[XD +M]9G]D$9#X*\$&^-YP?X!E@OV`U@NV##.S7X&;*CO[*U@PR@X6V'Q>EF\/A:O +MG\4+L'@96AIOMI;&FZNE\19H:;P<+8VW3DOA:&+Q#7H-@=?(;#.S+<Q.9G8* +MLZW,3F7V:&:/8W8:LR<Q>RJSIS,[@]FSF3V7V0N8G</L)<Q>RNR'F/T(LXN8 +MO9+9I<RN9#;/[#IFKV-V([.;F-W"[(W,]C)[,[.?9O8SS-[*[&W,WL[L'<S> +MR>P7F=W*[+W,;F/V(68?9O919G<Q^P2S3S*[F]D]S#[+;(79O<SN8W8_LP/, +M#C*;BZ.VGMD&9AN9;6:VA=G)S$YAMI79J<P>S>QQS$YC]B1F3V7V=&9G,'LV +ML[GO?M_]OOO]VS\4P%#+.HNYD]@E7P\S=PJ8>\#<SA%Y@1O-D?&4PRT7?!AQ +M!!A\/AJ/;Q82@8/CIJ'B,TL?!P8D*!Q3N!I<G0<S(ZK\A6#JP1B9&V0!#J;S +MW"R.C/_<#0R6<<P/EU-P/I2..M)@\$PGR!G<4%8&B.O<]S@R9I)?(HN+,#U( +MGT@A/YPAS0.#FCGXX#4*GWC:"@7/"7@LA%VE8F8PXHRR`DPR*R.>Y8%+O;C) +M-);A$'&`.L_7@LD$<P<NC$?EAS,@5*8:S!%YB;L&#-YWC1I%('H3V1`7ND:" +MF0_F.H[(4]R->-44&)0@\=#YS1R1NXAZ>#Z86SDB%W&X`9<-YC:.[AV"5,BM +M8'7*967/9FVRF)7Y""O#P6!:P'!:PMKB(5:6D]$"QVCF"=:6RQAM/,I@6\1H +M:#G#014KLX#1RO<9C$M8G<I9G>]C;?(LJ_L>UI9E#+;5+._[6=U6L3H4L;K] +MF.6QB>7-,9C7,-QP#%<_8CBO9'G]@-$&S^KZ,H-18C`_R7#D9G456-VJ6=E/ +M,1JJ96U=RG#.,5IXAN%R+8/Y/QFN.!:78W7T,%QPC-9:69V;&0Y_S\I\CL'* +M,5A:6-]J8C"(C"9_RNJ^@97]0U97CO6AQUF=.-8''V-];BOK6[]A?7TS"WN: +MY<VQLF0&&\=HX0\,%H[A[C]8V1R+NX7UL5^PNGH9;CF&0X[Y;6.P<BP/CK7I +M'QDLNUA>/V=M^1-F?J;.>MCW;H;[[2SN+UG9'&N#7[.Z_I:%_1?C:<^S;X[! +M\@*C28ZEX1AN.)8WQ_+X'3,OL;;:P0S'<,.QMN-8&3N9X5C=.%;6BZR.'/OF +M6%TXEC?'^@;':.051K/AS4+V0U[,]47X>APPN9Y*ZA[*W&FL`48R]]3)U'TC +M<^OO9GJFS)W#"IK*W&W[(Q=#XG&U[5HBEQ&>B>&629%^2/)C"'N8N<_>1=TN +MYLYX@;JKF+MI8H1>2?D,42+C[:GDTDU*1QC>,I:&/\W<J7^,M#>ZE?^,M"/) +MCY6WD^'K$8:O3C5\'W4?9V[K'=3]/G,OJ:+NOZKX983B9^X76?W^J>;W#'7_ +MB[FW3Z5N?#*&X(?!<PUSMTUCXS!S6QM8>S!W'\/_!.;.8.V3P=Q+F?L^YE[" +MX'F(N6>W,3ZENEE[53%W(VO_-<Q]\E?4O9ZY<]B`L$&%]W;67YE;81WI9\R] +MF;7_L\S=PL+_P-R&="[\W`VZG][&VH.Y)S%X3Z#[E@@]GF'A12S_?S!W-^NP +M%YF[=QR3"[2,OA@^AFFIK"*P^"-9^$[&,&[64GH;S>@MC;G',3>^1(GTS^;O +MW'TL/(V%/\+"%1:^FN6_D=6GGKF3F5MF[AYVD\PFYO8R?/^,Y3^)Y?\;EC_. +MQ['M7U33LSML_L3<C2R_-YA[`>M?[V@I/E5Z^2L+;V/]YY\JO$QX^TI-S_K; +M$!UU][/^<9..PC>5P3>6A6]C]#J9N1L9`YS)W%-9_YG#W*69U+V8N5,9?K[/ +MW(\P>EG-W`KKKV[F-K+X&YC[F78VKC!W<"9U_T3-_[>,K^LH/N8R?+RBPO=+ +MZGX-W5"URIVT/=]@X6D5-/PD<R]@^,=G5+%]'M%0_O@E"S<PP3NDH_2WD/'N +MP7J*O^D,?R/T-/U#+#T^Q4;JQ_C9W7H*;[C_L_!M!ZE[+G/WL/!<YO:R_OT0 +M<P?9C4;%S)W#Z*6"N4^P@:^>N=/8>"(Q=Q'+SZOFS^K_2^;&?36"7^:>RO#_ +M"G,O9>WU)^;N8P-A%W.7,OKJ4?,?1=V*FI[QISZUO@R>2\Q]F+5??!R#]T[J +M'A['^L^7P"-A,G('"W^$#:B3F7OK`>K.9.YQK'X+F3O(X,]7XS-\/<K<R6Q\ +M7</<)[<R?LK*YW%]#^PG6'@/&P]^R,+GQI'U/^[G:OZ,WGX=1^DE@]'+3A9N +M9OWG9>9N9>Z#S&VU4?=;S*T*$N\Q]R%&CSW,O8V-#W]G[B8V?OV#E3^;E1]D +MX8V,?QCB&3P,7R.8V\KX\2W,/971QQCF7L#Z]SW,S3-ZSHJG_:7T+#M7P,*] +MK#ZY\12>N0R>!UEX$</W,N8>Q_+GF7OK:NIN4..S]FIF[L,,/CF>M@>NA^+< +M=7,\E9G4WYOQ=&ZM_MYCZ5]D_>OOS#V)T6<O<W>U4O=YYFYE^$I(H&Z5']W( +MW-V,?Z<RMY7QYSN9NY'5[V[F3F;TFY%`\;.`X6<."U=O,,MAX3DLO$#-G_'/ +ME<QM8?@H9^Z@G;KKF+N?C<<-S/T(ZP_-S)W#\"TS-\_H:Y.:?RIU/\/<@9%, +M+E?KQ^2-WZGPL?S_R-PG6'ZMS-W%ZO^:"@_#YY\3*/]4^^L)%CZ)P?]>`I4/ +M5\91?'R40-L?]P=PKN1G\0^Q^%\P]].,OK]B^%S*\*DU4/<2%;\%L^]?F.F8 +M-XLKH&<5"@H*BOB*0J[`557%%:".-W@5\U5K4`L:=8H+JGEA&5=04EW(\VLP +M>DDUOQ)5YUU%7$%I-5\(>:QP\94E1<06T(9?E5#N0DU^KJ`.(J.Z->914EZ, +MH<M+787E0B5)4.2J=:W!L/)"*)H<KR5`E=04E=P%7W,6+,K*7%"P*#O[/ON2 +M@B6960OL!1BANJSP4=<R`?);SK*'S%SE-1P`7%7MHIFO0&C`S5>4<@4UM855 +MY760MKRB'*I5*?`()%>`E2DJJ6(1(0&_'))"=:L0%0/P4%`LE`_PPG))0<N+ +MJUU\=:4+,5.&9RQ<RQ'!KKH2GF2^''&%VONDM#!:Z+%14J<UU<OY4NJS$J*4 +M%15@+0M606ZN<%Q$$"FJA)45W5QJ-J@J7A!U8`]BE907%926+"N@T1!J;"QZ +M2)#D7(1-4@X0%D+QT`)5U=P`!U]87E18513K6Y!3R*]<4`%%NL*U*JB&\%(D +M)GXYGMA9!OZ/(M@K(F!75I64\]!^:JT+"O"X!1XO(GY(D:@[3]"P#($'-%27 +M5B!*BVL+2R&[NC*&PJA&";<OE$3;-X+R:CX,.CE-50`-'^L!D8M*BO!J1H*] +M0G)JAWR6%]*&*5?;JK:JA'>QEJA06QVSXPM(;2LKH'HTYLI"GE(J5E^-RR\' +MVJHE$8I95RBI<I7S526NZAC"*P(R7P%YN\K**FH8;LI)=ZVI+E>1J)(*HY." +M@K)E!<N%*O"L(T4L+ZVHAK2(1U=5`1:#W0SJ!<F1SF<)55AX+F!,;4JH+*.- +MX@ARJUVEE*H!ZE*A&E!&<B;HC?3K8A4LK!6/!V2J2]92VJP%!&$4AKXH$J=M +M2WHIQ*QR+2\M+"DKX%VEI23WY<48L:J0H&PU\(<J5UE,"Y)8*D70L_&$K9$F +MH=#CC078?5@*[`T4\MFNXD*A-*;Z6,,:!B42,5^YHJJ2`$QP7$C]BZKP+`]$ +M)J@J$,HCS%$MFO9_>ED"R3:;M$]%$65P!27J7:`$/810"@H@>Y(,O#`_\D$. +M_A!F6[@BC%!!S:B*+R7,#ID,XW1X?`8P4EFPDF9!.@8E;J@&9(3H@]X)R"VK +M+&><N`;@KHLT#."+T10Y+@35`LAX.E00W`'/+:G"3D*NGX@D7%'!AXD1>0_A +MS36$;ED30Q\M%5P<NDK*5TRS\BM+JM63E7B.K=I:#"R!,I318\99:U>6+%^) +M1^.`[\)X,Q[H+!P>^ZVB3%"'$0"JN*0NFH/$=B_&RJN750&&(R1744YX-FE^ +M.B``_.45!':*QS"*>3SD23HUZ144B37ACE!,&Z8,HG(J10CEQ%6GQJ&=$^)6 +MN5PXMI+F9AV7C$F4`HM9$8SFN()'2Y#9NXH*>1C'@?67`S!0F>+EY=A>B/OJ +ME4#JV%1%2"<%](0FI8KO?M_]OOM]]_ON]]WON]]WO^]^W_V^^_U__<.U=W,? +MQXWN^_9I<$^Y!TS;08[K>IWCMG=1?]0?6MK-<18#W:>?JZ/V(;:OAVO7N)Z. +M:X2X+X!KL;A>BWM$N.Z(>XFX_XA[DKCOB'L7N-^&:]*XSX-[X[B?@WORN"^` +M>T>X?X![5KA/B'M+N+^'>\ZX+X5[`U[?1:*IY/4EC:'VIUG4?IS9SS$[F]D? +MV*@]?AJU[VBD]O!9U-;:J7U+!K6?9/[QZZD]OY[:CRVB]M]9O*P_,#@F4_LV +MENYQYE_#W+]@]L'=U'Z3P37Q16H?^R.U.[)9_.>H_<E,EO^]+#YS9S/[(BOG +MIW<Q^*=2>PBK3]X]#&Y6[V4LGT\SJ;U?]7^!VL,64GL:@_?,.I8?<[_'XKW" +MX'R`E?.+=&JO8O6XQ,HY^%L&)XM_RUQ6+U;_.W:R^MU-[3V[J+V!Q5OU/8;7 +M^ZC]`O,?\A*UWV'XO&,^B\?\'V?NQUGX+0R?6H;OYYB=ZV#I.UF\#H9/-ROO +M3]1>R^S'#C#X][-V8_ZO,#R]Q]RO[Z/VC_;%TLDK#(X-/Z5V^0)6WA%JW\CJ +M/Y/!5\SLW^UEY;)\'F#EO\#BE[-XOWZ=Q6-POL#<[S$[[TUJUQ.;W"2#^@+0 +M+R<(U5438)[OJG,MGU!:-+ZZ@NH#XN/!"ZP<=Q9,\!;HK[=RW,9;V/Y[*M4] +MQ-V!C=!GWTVENH/D$F9P[TVENH'H;@'W?Z52W43\;0;WCU(C.I5-X&Y,I3J) +M1#<&W"6I5->0[*W$:2[C6?J!/.R.6#<NR#D*5Y3@RM77\3Z5OWR%VH_:;V&R +MM%21,MIH_Y=,1CPTB/[?-\8X3@-&"T8'1@\F#DP\F`0P!C")8+XNCR0ICAL$ +MQ@AF,)@A8$Q@R`;Z_Z:Y6ODCH7PP1C"#P0P!8P+#C=3_[YJ!96N_DQV^^U%^ +MA:2@8SP&]_!1ESJ!R5:X)XJZBLCKD'^AGC3JA*,^.?)#U%M$77/4FT:=:>1I +MR,=0#QWY'VX/(U]$_6_474?]<=R71SUQ8+-$;QI9+.I+X]8RJH^@KC1N(Z-N +M.^JG(ZM#M2;<NKV3R6FH/XU;\;B=CEONJ#:&6\NX?8\J`K@-CJH0J'Z`*GNH +MIH4ZTK@=CRHNN.V/6^NH'XXZQ*@_C&N\R#Q19QCUA5%7&/6$44<8]8-1-QCU +M@G$@034/5+7![7)4.40]8-0!1OU?U/U%O5_4^45]7]3U17UFU&5&/4O4948] +MYD?^#Y:/>L:HLXGZQ:A;C&J+N$^.^L2H2XSZFZA#C/K#J(>,^L.H.XQZPZ@S +MC/K"J"N,>L*HVXGZP:@;C'K!J!.,^L"H"XQZP*@#C+K?J/.)>L"H`XSZOZAJ +MB7J_J,*':E*H^H'J/Z@BA&J'J%J(ZF:H\H?;_KAUK^KQJOJ[J+>+.KNJOBZJ +MLZ!*#JHEH6XNZN6B3B[JX[8R]1E4&7H5##X-@.IHJ/*&:@=M8%!]`E58\%`F +MROEXARG>]HGZIH?!X+MZ>)OGG\'@^])OH"X)F+?`X+0!'Q8ZQE%]U!-@_@+F +M'3#O@L&WO$ZAK@)']5/QY:_38/`Y[P_!]*#>`I@S'-571=69OZ$N"IB/P>!1 +M4A^83SBJOXIW.?T#S*=@/J-3$PYOZ/^"H_JL>/0?IAS<.=17`8/'CB^`N<A1 +M_5:\A>PK,)?`A+[K_Z3_9S*1!L^RX)D(5)?!LQ!X#@+/0.#Y!SS[@.<>\!P& +MGGO`^1Z>>\`S#WC>`<\ZX#D'/..`>M5XM@'/->"9!CS/\,#7]/__4^5_U_^_ +MZ_]7ZO]?N[;R9:S.'/9U+DGSM?,2HB^91?4<<?U"U1?^[Z_KQ)9S]'\IWZ0! +M@F^J]M_/=R7`I&-UM@[XI0WX#4P;QWBC.^S3-^#MTONIG?$4M5M>H_:J`+$; +MF\832+N&+2=VT[L_)K;KC3?0MA9LU2);46KF3D'[5YNO*P,[XV_/I/T*;.^- +MA_:^`_:DV[Y\U#B+:^R9LN:US%G<UI/-^9-J9G&'%ZXH:__]+&[&#Q\YN_2C +M61D;=]?=\/RULW,^._/.V>N^-_L__N*(?ZNO<;::;D1YW.[=K9NRO[QPKT^W +M:*ICX@UI%^;6/O;`]`/5#:<772OLE4[^^(5CSTR_ZS?;_W+KN7FV&;_IG_V5 +MZ=F)/__QQK<,KSPX:E;%CJ+1\8>3HO'C+'^TO**V7+UY\QO;XJ&=>%@;Q@HP +MUX'1@OD,F,0I,`?![`3S#!@)3`68I6"RP4P#DPHF&8P1S$5@+B?!'`;S,ICM +M8#:`J0&3#V8N&!N8F\%8P%P"AO09F+^".0CFCV"\8&K`+`5C`Y,"9A"87F!@ +M?P&S'\PV,!O!E(.9">9V,`8P`6!T'X'9!^89,"*8$C`.,'>#L8#Y`ACB!V#^ +M#.:W8'X$1@)3!Z8(S&(P66#&@TD&<PZ8Z%DPQ\#L![,=S)-@?@!F&9B,WX9I +EL.&[&=%WO^]^W_V^^WWW^^[WW>^[WW>__YM__P\[+-(F`!`!``!F +` +end diff --git a/lib/libc_r/test/mutex/Makefile b/lib/libc_r/test/mutex/Makefile deleted file mode 100644 index 334d2a7a86ae..000000000000 --- a/lib/libc_r/test/mutex/Makefile +++ /dev/null @@ -1,8 +0,0 @@ -# $Id:$ - -PROG= mutex -SRCS= mutex.c -NOMAN= 1 -LDFLAGS= -pthread - -.include <bsd.prog.mk> diff --git a/lib/libc_r/test/mutex/mutex.c b/lib/libc_r/test/mutex/mutex.c deleted file mode 100644 index 1fe45027b49b..000000000000 --- a/lib/libc_r/test/mutex/mutex.c +++ /dev/null @@ -1,1548 +0,0 @@ -/* - * Copyright (c) 1998 Daniel M. Eischen <eischen@vigrid.com> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Daniel M. Eischen. - * 4. Neither the name of the author nor the names of any co-contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY DANIEL M. EISCHEN AND CONTRIBUTORS ``AS IS'' - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - */ -#include <stdlib.h> -#include <unistd.h> - -#include <sys/ioctl.h> -#include <assert.h> -#include <errno.h> -#include "pthread.h" -#include <sched.h> -#include <signal.h> -#include <stdarg.h> -#include <stdio.h> -#include <string.h> -#include <sysexits.h> - -#if defined(__FreeBSD__) -#include <pthread_np.h> -#endif - -#ifndef NELEMENTS -#define NELEMENTS(arr) (sizeof (arr) / sizeof (arr[0])) -#endif - -#ifndef NUM_THREADS -#define NUM_THREADS 10 -#endif - -#define MAX_THREAD_CMDS 10 - - -/*------------------------------------------------------------ - * Types - *----------------------------------------------------------*/ - -typedef enum { - STAT_INITIAL, /* initial state */ - STAT_WAITCONDVAR, /* waiting for condition variable signal */ - STAT_WAITMUTEX /* waiting for mutex lock */ -} thread_status_t; - -typedef enum { - FLAGS_REPORT_WAITCONDMUTEX = 0x01, - FLAGS_REPORT_WAITCONDVAR = 0x02, - FLAGS_REPORT_WAITMUTEX = 0x04, - FLAGS_REPORT_BUSY_LOOP = 0x08, - FLAGS_IS_BUSY = 0x10, - FLAGS_WAS_BUSY = 0x20 -} thread_flags_t; - -typedef enum { - CMD_NONE, - CMD_TAKE_MUTEX, - CMD_RELEASE_MUTEX, - CMD_WAIT_FOR_SIGNAL, - CMD_BUSY_LOOP, - CMD_PROTECTED_OP, - CMD_RELEASE_ALL -} thread_cmd_id_t; - -typedef struct { - thread_cmd_id_t cmd_id; - pthread_mutex_t *mutex; - pthread_cond_t *cond; -} thread_cmd_t; - -typedef struct { - pthread_cond_t cond_var; - thread_status_t status; - thread_cmd_t cmd; - int flags; - int priority; - int ret; - pthread_t tid; - u_int8_t id; -} thread_state_t; - -typedef enum { - M_POSIX, - M_SS2_DEFAULT, - M_SS2_ERRORCHECK, - M_SS2_NORMAL, - M_SS2_RECURSIVE -} mutex_kind_t; - - -/*------------------------------------------------------------ - * Constants - *----------------------------------------------------------*/ - -const char *protocol_strs[] = { - "PTHREAD_PRIO_NONE", - "PTHREAD_PRIO_INHERIT", - "PTHREAD_PRIO_PROTECT" -}; - -const int protocols[] = { - PTHREAD_PRIO_NONE, - PTHREAD_PRIO_INHERIT, - PTHREAD_PRIO_PROTECT -}; - -const char *mutextype_strs[] = { - "POSIX (type not specified)", - "SS2 PTHREAD_MUTEX_DEFAULT", - "SS2 PTHREAD_MUTEX_ERRORCHECK", - "SS2 PTHREAD_MUTEX_NORMAL", - "SS2 PTHREAD_MUTEX_RECURSIVE" -}; - -const int mutex_types[] = { - 0, /* M_POSIX */ - PTHREAD_MUTEX_DEFAULT, /* M_SS2_DEFAULT */ - PTHREAD_MUTEX_ERRORCHECK, /* M_SS2_ERRORCHECK */ - PTHREAD_MUTEX_NORMAL, /* M_SS2_NORMAL */ - PTHREAD_MUTEX_RECURSIVE /* M_SS2_RECURSIVE */ -}; - - -/*------------------------------------------------------------ - * Objects - *----------------------------------------------------------*/ - -static int done = 0; -static int trace_enabled = 0; -static int use_global_condvar = 0; -static thread_state_t states[NUM_THREADS]; -static int pipefd[2]; - -static pthread_mutex_t waiter_mutex; -static pthread_mutex_t cond_mutex; -static pthread_cond_t cond_var; - -static FILE *logfile = stdout; -static int error_count = 0, pass_count = 0, total = 0; - - -/*------------------------------------------------------------ - * Prototypes - *----------------------------------------------------------*/ -extern char *strtok_r(char *str, const char *sep, char **last); - - -/*------------------------------------------------------------ - * Functions - *----------------------------------------------------------*/ - -#ifdef DEBUG -static void -kern_switch (pthread_t pthread_out, pthread_t pthread_in) -{ - if (pthread_out != NULL) - printf ("Swapping out thread 0x%x, ", (int) pthread_out); - else - printf ("Swapping out kernel thread, "); - - if (pthread_in != NULL) - printf ("swapping in thread 0x%x\n", (int) pthread_in); - else - printf ("swapping in kernel thread.\n"); -} -#endif - - -static void -log_error (const char *fmt, ...) -{ - va_list ap; - - va_start (ap, fmt); - fprintf (logfile, "FAIL: "); - vfprintf (logfile, fmt, ap); - error_count = error_count + 1; - total = total + 1; -} - - -static void -log_pass (void) -{ - fprintf (logfile, "PASS\n"); - pass_count = pass_count + 1; - total = total + 1; -} - - -static void -log_trace (const char *fmt, ...) -{ - va_list ap; - - if (trace_enabled) { - va_start (ap, fmt); - vfprintf (logfile, fmt, ap); - } -} - - -static void -log (const char *fmt, ...) -{ - va_list ap; - - va_start (ap, fmt); - vfprintf (logfile, fmt, ap); -} - - -static void -check_result (int expected, int actual) -{ - if (expected != actual) - log_error ("expected %d, returned %d\n", expected, actual); - else - log_pass (); -} - - -/* - * Check to see that the threads ran in the specified order. - */ -static void -check_run_order (char *order) -{ - const char *sep = ":,"; - char *tok, *last, *idstr, *endptr; - int expected_id, bytes, count = 0, errors = 0; - u_int8_t id; - - assert ((tok = (char *) malloc (strlen(order) + 1)) != NULL); - strcpy (tok, order); /* tok has to be larger than order */ - assert (ioctl (pipefd[0], FIONREAD, &bytes) == 0); - log_trace ("%d bytes read from FIFO.\n", bytes); - - for (idstr = strtok_r (tok, sep, &last); - (idstr != NULL) && (count < bytes); - idstr = strtok_r (NULL, sep, &last)) { - - /* Get the expected id: */ - expected_id = (int) strtol (idstr, &endptr, 10); - assert ((endptr != NULL) && (*endptr == '\0')); - - /* Read the actual id from the pipe: */ - assert (read (pipefd[0], &id, sizeof (id)) == sizeof (id)); - count = count + sizeof (id); - - if (id != expected_id) { - log_trace ("Thread %d ran out of order.\n", id); - errors = errors + 1; - } - else { - log_trace ("Thread %d at priority %d reporting.\n", - (int) id, states[id].priority); - } - } - - if (count < bytes) { - /* Clear the pipe: */ - while (count < bytes) { - read (pipefd[0], &id, sizeof (id)); - count = count + 1; - errors = errors + 1; - } - } - else if (bytes < count) - errors = errors + count - bytes; - - if (errors == 0) - log_pass (); - else - log_error ("%d threads ran out of order", errors); -} - - -static void * -waiter (void *arg) -{ - thread_state_t *statep = (thread_state_t *) arg; - pthread_mutex_t *held_mutex[MAX_THREAD_CMDS]; - int held_mutex_owned[MAX_THREAD_CMDS]; - sigset_t mask; - struct timeval tv1, tv2; - thread_cmd_t cmd; - int i, mutex_count = 0; - - statep->status = STAT_INITIAL; - - /* Block all signals except for interrupt.*/ - sigfillset (&mask); - sigdelset (&mask, SIGINT); - sigprocmask (SIG_BLOCK, &mask, NULL); - - while (done == 0) { - /* Wait for signal from the main thread to continue. */ - statep->status = STAT_WAITMUTEX; - log_trace ("Thread %d: locking cond_mutex.\n", - (int) statep->id); - pthread_mutex_lock (&cond_mutex); - - /* Do we report our status. */ - if (statep->flags & FLAGS_REPORT_WAITCONDMUTEX) - write (pipefd[1], &statep->id, sizeof (statep->id)); - log_trace ("Thread %d: waiting for cond_var.\n", - (int) statep->id); - - /* Wait for a command. */ - statep->status = STAT_WAITCONDVAR; - - /* - * The threads are allowed commanded to wait either on - * their own unique condition variable (so they may be - * separately signaled) or on one global condition variable - * (so they may be signaled together). - */ - if (use_global_condvar != 0) - pthread_cond_wait (&cond_var, &cond_mutex); - else - pthread_cond_wait (&statep->cond_var, &cond_mutex); - - /* Do we report our status? */ - if (statep->flags & FLAGS_REPORT_WAITCONDVAR) { - write (pipefd[1], &statep->id, sizeof (statep->id)); - log_trace ("Thread %d: wrote %d to pipe.\n", - (int) statep->id); - } - log_trace ("Thread %d: received cond_var signal.\n", - (int) statep->id); - - /* Get a copy of the command before releasing the mutex. */ - cmd = statep->cmd; - - /* Clear the command after copying it. */ - statep->cmd.cmd_id = CMD_NONE; - - /* Unlock the condition variable mutex. */ - assert (pthread_mutex_unlock (&cond_mutex) == 0); - - /* Peform the command.*/ - switch (cmd.cmd_id) { - case CMD_TAKE_MUTEX: - statep->ret = pthread_mutex_lock (cmd.mutex); - if (statep->ret == 0) { - assert (mutex_count < sizeof (held_mutex)); - held_mutex[mutex_count] = cmd.mutex; - held_mutex_owned[mutex_count] = 1; - mutex_count++; - } - else { - held_mutex_owned[mutex_count] = 0; - log_trace ("Thread id %d unable to lock mutex, " - "error = %d\n", (int) statep->id, - statep->ret); - } - break; - - case CMD_RELEASE_MUTEX: - assert ((mutex_count <= sizeof (held_mutex)) && - (mutex_count > 0)); - mutex_count--; - if (held_mutex_owned[mutex_count] != 0) - assert (pthread_mutex_unlock - (held_mutex[mutex_count]) == 0); - break; - - case CMD_WAIT_FOR_SIGNAL: - assert (pthread_mutex_lock (cmd.mutex) == 0); - assert (pthread_cond_wait (cmd.cond, cmd.mutex) == 0); - assert (pthread_mutex_unlock (cmd.mutex) == 0); - break; - - case CMD_BUSY_LOOP: - log_trace ("Thread %d: Entering busy loop.\n", - (int) statep->id); - /* Spin for 15 seconds. */ - assert (gettimeofday (&tv2, NULL) == 0); - tv1.tv_sec = tv2.tv_sec + 5; - tv1.tv_usec = tv2.tv_usec; - statep->flags |= FLAGS_IS_BUSY; - while (timercmp (&tv2, &tv1,<)) { - assert (gettimeofday (&tv2, NULL) == 0); - } - statep->flags &= ~FLAGS_IS_BUSY; - statep->flags |= FLAGS_WAS_BUSY; - - /* Do we report our status? */ - if (statep->flags & FLAGS_REPORT_BUSY_LOOP) - write (pipefd[1], &statep->id, - sizeof (statep->id)); - - log_trace ("Thread %d: Leaving busy loop.\n", - (int) statep->id); - break; - - case CMD_PROTECTED_OP: - assert (pthread_mutex_lock (cmd.mutex) == 0); - statep->flags |= FLAGS_WAS_BUSY; - /* Do we report our status? */ - if (statep->flags & FLAGS_REPORT_BUSY_LOOP) - write (pipefd[1], &statep->id, - sizeof (statep->id)); - - assert (pthread_mutex_unlock (cmd.mutex) == 0); - break; - - case CMD_RELEASE_ALL: - assert ((mutex_count <= sizeof (held_mutex)) && - (mutex_count > 0)); - for (i = mutex_count - 1; i >= 0; i--) { - if (held_mutex_owned[i] != 0) - assert (pthread_mutex_unlock - (held_mutex[i]) == 0); - } - mutex_count = 0; - break; - - case CMD_NONE: - default: - break; - } - - /* Wait for the big giant waiter lock. */ - statep->status = STAT_WAITMUTEX; - log_trace ("Thread %d: waiting for big giant lock.\n", - (int) statep->id); - pthread_mutex_lock (&waiter_mutex); - if (statep->flags & FLAGS_REPORT_WAITMUTEX) - write (pipefd[1], &statep->id, sizeof (statep->id)); - log_trace ("Thread %d: got big giant lock.\n", - (int) statep->id); - statep->status = STAT_INITIAL; - pthread_mutex_unlock (&waiter_mutex); - } - - log_trace ("Thread %d: Exiting thread 0x%x\n", (int) statep->id, - (int) pthread_self()); - pthread_exit (arg); - return (NULL); -} - - -static void * -lock_twice (void *arg) -{ - thread_state_t *statep = (thread_state_t *) arg; - sigset_t mask; - - statep->status = STAT_INITIAL; - - /* Block all signals except for interrupt.*/ - sigfillset (&mask); - sigdelset (&mask, SIGINT); - sigprocmask (SIG_BLOCK, &mask, NULL); - - /* Wait for a signal to continue. */ - log_trace ("Thread %d: locking cond_mutex.\n", (int) statep->id); - pthread_mutex_lock (&cond_mutex); - - log_trace ("Thread %d: waiting for cond_var.\n", (int) statep->id); - statep->status = STAT_WAITCONDVAR; - pthread_cond_wait (&cond_var, &cond_mutex); - - log_trace ("Thread %d: received cond_var signal.\n", (int) statep->id); - - /* Unlock the condition variable mutex. */ - assert (pthread_mutex_unlock (&cond_mutex) == 0); - - statep->status = STAT_WAITMUTEX; - /* Lock the mutex once. */ - assert (pthread_mutex_lock (statep->cmd.mutex) == 0); - - /* Lock it again and capture the error. */ - statep->ret = pthread_mutex_lock (statep->cmd.mutex); - statep->status = 0; - - assert (pthread_mutex_unlock (statep->cmd.mutex) == 0); - - /* Unlock it again if it is locked recursively. */ - if (statep->ret == 0) - pthread_mutex_unlock (statep->cmd.mutex); - - log_trace ("Thread %d: Exiting thread 0x%x\n", (int) statep->id, - (int) pthread_self()); - pthread_exit (arg); - return (NULL); -} - - -static void -sighandler (int signo) -{ - log ("Signal handler caught signal %d, thread id 0x%x\n", - signo, (int) pthread_self()); - - if (signo == SIGINT) - done = 1; -} - - -static void -send_cmd (int id, thread_cmd_id_t cmd) -{ - assert (pthread_mutex_lock (&cond_mutex) == 0); - assert (states[id].status == STAT_WAITCONDVAR); - states[id].cmd.cmd_id = cmd; - states[id].cmd.mutex = NULL; - states[id].cmd.cond = NULL; - /* Clear the busy flags. */ - states[id].flags &= ~(FLAGS_WAS_BUSY | FLAGS_IS_BUSY); - assert (pthread_cond_signal (&states[id].cond_var) == 0); - assert (pthread_mutex_unlock (&cond_mutex) == 0); -} - - -static void -send_mutex_cmd (int id, thread_cmd_id_t cmd, pthread_mutex_t *m) -{ - assert (pthread_mutex_lock (&cond_mutex) == 0); - assert (states[id].status == STAT_WAITCONDVAR); - states[id].cmd.cmd_id = cmd; - states[id].cmd.mutex = m; - states[id].cmd.cond = NULL; - /* Clear the busy flags. */ - states[id].flags &= ~(FLAGS_WAS_BUSY | FLAGS_IS_BUSY); - assert (pthread_cond_signal (&states[id].cond_var) == 0); - assert (pthread_mutex_unlock (&cond_mutex) == 0); -} - - -static void -send_mutex_cv_cmd (int id, thread_cmd_id_t cmd, pthread_mutex_t *m, - pthread_cond_t *cv) -{ - assert (pthread_mutex_lock (&cond_mutex) == 0); - assert (states[id].status == STAT_WAITCONDVAR); - states[id].cmd.cmd_id = cmd; - states[id].cmd.mutex = m; - states[id].cmd.cond = cv; - /* Clear the busy flags. */ - states[id].flags &= ~(FLAGS_WAS_BUSY | FLAGS_IS_BUSY); - assert (pthread_cond_signal (&states[id].cond_var) == 0); - assert (pthread_mutex_unlock (&cond_mutex) == 0); -} - - -static void -mutex_init_test (void) -{ - pthread_mutexattr_t mattr; - pthread_mutex_t mutex; - mutex_kind_t mkind; - int mproto, ret; - - /* - * Initialize a mutex attribute. - * - * pthread_mutexattr_init not tested for: ENOMEM - */ - assert (pthread_mutexattr_init (&mattr) == 0); - - /* - * Initialize a mutex. - * - * pthread_mutex_init not tested for: EAGAIN ENOMEM EPERM EBUSY - */ - log ("Testing pthread_mutex_init\n"); - log ("--------------------------\n"); - - for (mproto = 0; mproto < NELEMENTS(protocols); mproto++) { - for (mkind = M_POSIX; mkind <= M_SS2_RECURSIVE; mkind++) { - /* Initialize the mutex attribute. */ - assert (pthread_mutexattr_init (&mattr) == 0); - assert (pthread_mutexattr_setprotocol (&mattr, - protocols[mproto]) == 0); - - /* - * Ensure that the first mutex type is a POSIX - * compliant mutex. - */ - if (mkind != M_POSIX) { - assert (pthread_mutexattr_settype (&mattr, - mutex_types[mkind]) == 0); - } - - log (" Protocol %s, Type %s - ", - protocol_strs[mproto], mutextype_strs[mkind]); - ret = pthread_mutex_init (&mutex, &mattr); - check_result (/* expected */ 0, ret); - assert (pthread_mutex_destroy (&mutex) == 0); - - /* - * Destroy a mutex attribute. - * - * XXX - There should probably be a magic number - * associated with a mutex attribute so that - * destroy can be reasonably sure the attribute - * is valid. - * - * pthread_mutexattr_destroy not tested for: EINVAL - */ - assert (pthread_mutexattr_destroy (&mattr) == 0); - } - } -} - - -static void -mutex_destroy_test (void) -{ - pthread_mutexattr_t mattr; - pthread_mutex_t mutex; - pthread_condattr_t cattr; - pthread_cond_t cv; - pthread_attr_t pattr; - int mproto, ret; - mutex_kind_t mkind; - thread_state_t state; - - /* - * Destroy a mutex. - * - * XXX - There should probably be a magic number associated - * with a mutex so that destroy can be reasonably sure - * the mutex is valid. - * - * pthread_mutex_destroy not tested for: - */ - log ("Testing pthread_mutex_destroy\n"); - log ("-----------------------------\n"); - - assert (pthread_attr_init (&pattr) == 0); - assert (pthread_attr_setdetachstate (&pattr, - PTHREAD_CREATE_DETACHED) == 0); - state.flags = 0; /* No flags yet. */ - - for (mproto = 0; mproto < NELEMENTS(protocols); mproto++) { - for (mkind = M_POSIX; mkind <= M_SS2_RECURSIVE; mkind++) { - /* Initialize the mutex attribute. */ - assert (pthread_mutexattr_init (&mattr) == 0); - assert (pthread_mutexattr_setprotocol (&mattr, - protocols[mproto]) == 0); - - /* - * Ensure that the first mutex type is a POSIX - * compliant mutex. - */ - if (mkind != M_POSIX) { - assert (pthread_mutexattr_settype (&mattr, - mutex_types[mkind]) == 0); - } - - /* Create the mutex. */ - assert (pthread_mutex_init (&mutex, &mattr) == 0); - - log (" Protocol %s, Type %s\n", - protocol_strs[mproto], mutextype_strs[mkind]); - - log (" Destruction of unused mutex - "); - assert (pthread_mutex_init (&mutex, &mattr) == 0); - ret = pthread_mutex_destroy (&mutex); - check_result (/* expected */ 0, ret); - - log (" Destruction of mutex locked by self - "); - assert (pthread_mutex_init (&mutex, &mattr) == 0); - assert (pthread_mutex_lock (&mutex) == 0); - ret = pthread_mutex_destroy (&mutex); - check_result (/* expected */ EBUSY, ret); - assert (pthread_mutex_unlock (&mutex) == 0); - assert (pthread_mutex_destroy (&mutex) == 0); - - log (" Destruction of mutex locked by another " - "thread - "); - assert (pthread_mutex_init (&mutex, &mattr) == 0); - send_mutex_cmd (0, CMD_TAKE_MUTEX, &mutex); - sleep (1); - ret = pthread_mutex_destroy (&mutex); - check_result (/* expected */ EBUSY, ret); - send_cmd (0, CMD_RELEASE_ALL); - sleep (1); - assert (pthread_mutex_destroy (&mutex) == 0); - - log (" Destruction of mutex while being used in " - "cond_wait - "); - assert (pthread_mutex_init (&mutex, &mattr) == 0); - assert (pthread_condattr_init (&cattr) == 0); - assert (pthread_cond_init (&cv, &cattr) == 0); - send_mutex_cv_cmd (0, CMD_WAIT_FOR_SIGNAL, &mutex, &cv); - sleep (1); - ret = pthread_mutex_destroy (&mutex); - check_result (/* expected */ EBUSY, ret); - pthread_cond_signal (&cv); - sleep (1); - assert (pthread_mutex_destroy (&mutex) == 0); - } - } -} - - -static void -mutex_lock_test (void) -{ - pthread_mutexattr_t mattr; - pthread_mutex_t mutex; - pthread_attr_t pattr; - int mproto, ret; - mutex_kind_t mkind; - thread_state_t state; - - /* - * Lock a mutex. - * - * pthread_lock not tested for: - */ - log ("Testing pthread_mutex_lock\n"); - log ("--------------------------\n"); - - assert (pthread_attr_init (&pattr) == 0); - assert (pthread_attr_setdetachstate (&pattr, - PTHREAD_CREATE_DETACHED) == 0); - state.flags = 0; /* No flags yet. */ - - for (mproto = 0; mproto < NELEMENTS(protocols); mproto++) { - for (mkind = M_POSIX; mkind <= M_SS2_RECURSIVE; mkind++) { - /* Initialize the mutex attribute. */ - assert (pthread_mutexattr_init (&mattr) == 0); - assert (pthread_mutexattr_setprotocol (&mattr, - protocols[mproto]) == 0); - - /* - * Ensure that the first mutex type is a POSIX - * compliant mutex. - */ - if (mkind != M_POSIX) { - assert (pthread_mutexattr_settype (&mattr, - mutex_types[mkind]) == 0); - } - - /* Create the mutex. */ - assert (pthread_mutex_init (&mutex, &mattr) == 0); - - log (" Protocol %s, Type %s\n", - protocol_strs[mproto], mutextype_strs[mkind]); - - log (" Lock on unlocked mutex - "); - ret = pthread_mutex_lock (&mutex); - check_result (/* expected */ 0, ret); - pthread_mutex_unlock (&mutex); - - log (" Lock on invalid mutex - "); - ret = pthread_mutex_lock (NULL); - check_result (/* expected */ EINVAL, ret); - - log (" Lock on mutex held by self - "); - assert (pthread_create (&state.tid, &pattr, lock_twice, - (void *) &state) == 0); - /* Let the thread start. */ - sleep (1); - state.cmd.mutex = &mutex; - state.ret = 0xdeadbeef; - assert (pthread_mutex_lock (&cond_mutex) == 0); - assert (pthread_cond_signal (&cond_var) == 0); - assert (pthread_mutex_unlock (&cond_mutex) == 0); - /* Let the thread receive and process the command. */ - sleep (1); - - switch (mkind) { - case M_POSIX: - check_result (/* expected */ EDEADLK, - state.ret); - break; - case M_SS2_DEFAULT: - check_result (/* expected */ EDEADLK, - state.ret); - break; - case M_SS2_ERRORCHECK: - check_result (/* expected */ EDEADLK, - state.ret); - break; - case M_SS2_NORMAL: - check_result (/* expected */ 0xdeadbeef, - state.ret); - break; - case M_SS2_RECURSIVE: - check_result (/* expected */ 0, state.ret); - break; - } - pthread_mutex_destroy (&mutex); - pthread_mutexattr_destroy (&mattr); - } - } -} - - -static void -mutex_unlock_test (void) -{ - const int test_thread_id = 0; /* ID of test thread */ - pthread_mutexattr_t mattr; - pthread_mutex_t mutex; - int mproto, ret; - mutex_kind_t mkind; - - /* - * Unlock a mutex. - * - * pthread_unlock not tested for: - */ - log ("Testing pthread_mutex_unlock\n"); - log ("----------------------------\n"); - - for (mproto = 0; mproto < NELEMENTS(protocols); mproto++) { - for (mkind = M_POSIX; mkind <= M_SS2_RECURSIVE; mkind++) { - /* Initialize the mutex attribute. */ - assert (pthread_mutexattr_init (&mattr) == 0); - assert (pthread_mutexattr_setprotocol (&mattr, - protocols[mproto]) == 0); - - /* - * Ensure that the first mutex type is a POSIX - * compliant mutex. - */ - if (mkind != M_POSIX) { - assert (pthread_mutexattr_settype (&mattr, - mutex_types[mkind]) == 0); - } - - /* Create the mutex. */ - assert (pthread_mutex_init (&mutex, &mattr) == 0); - - log (" Protocol %s, Type %s\n", - protocol_strs[mproto], mutextype_strs[mkind]); - - log (" Unlock on mutex held by self - "); - assert (pthread_mutex_lock (&mutex) == 0); - ret = pthread_mutex_unlock (&mutex); - check_result (/* expected */ 0, ret); - - log (" Unlock on invalid mutex - "); - ret = pthread_mutex_unlock (NULL); - check_result (/* expected */ EINVAL, ret); - - log (" Unlock on mutex locked by another thread - "); - send_mutex_cmd (test_thread_id, CMD_TAKE_MUTEX, &mutex); - sleep (1); - ret = pthread_mutex_unlock (&mutex); - switch (mkind) { - case M_POSIX: - check_result (/* expected */ EPERM, ret); - break; - case M_SS2_DEFAULT: - check_result (/* expected */ EPERM, ret); - break; - case M_SS2_ERRORCHECK: - check_result (/* expected */ EPERM, ret); - break; - case M_SS2_NORMAL: - check_result (/* expected */ EPERM, ret); - break; - case M_SS2_RECURSIVE: - check_result (/* expected */ EPERM, ret); - break; - } - if (ret == 0) { - /* - * If for some reason we were able to unlock - * the mutex, relock it so that the test - * thread has no problems releasing the mutex. - */ - pthread_mutex_lock (&mutex); - } - send_cmd (test_thread_id, CMD_RELEASE_ALL); - sleep (1); - - pthread_mutex_destroy (&mutex); - pthread_mutexattr_destroy (&mattr); - } - } -} - - -static void -queueing_order_test (void) -{ - int i; - - log ("Testing queueing order\n"); - log ("----------------------\n"); - assert (pthread_mutex_lock (&waiter_mutex) == 0); - /* - * Tell the threads to report when they take the waiters mutex. - */ - assert (pthread_mutex_lock (&cond_mutex) == 0); - for (i = 0; i < NUM_THREADS; i++) { - states[i].flags = FLAGS_REPORT_WAITMUTEX; - assert (pthread_cond_signal (&states[i].cond_var) == 0); - } - assert (pthread_mutex_unlock (&cond_mutex) == 0); - - /* Signal the threads to continue. */ - sleep (1); - - /* Use the global condition variable next time. */ - use_global_condvar = 1; - - /* Release the waiting threads and allow them to run again. */ - assert (pthread_mutex_unlock (&waiter_mutex) == 0); - sleep (1); - - log (" Queueing order on a mutex - "); - check_run_order ("9,8,7,6,5,4,3,2,1,0"); - for (i = 0; i < NUM_THREADS; i = i + 1) { - /* Tell the threads to report when they've been signaled. */ - states[i].flags = FLAGS_REPORT_WAITCONDVAR; - } - - /* - * Prevent the threads from continuing their loop after we - * signal them. - */ - assert (pthread_mutex_lock (&waiter_mutex) == 0); - - - log (" Queueing order on a condition variable - "); - /* - * Signal one thread to run and see that the highest priority - * thread executes. - */ - assert (pthread_mutex_lock (&cond_mutex) == 0); - assert (pthread_cond_signal (&cond_var) == 0); - assert (pthread_mutex_unlock (&cond_mutex) == 0); - sleep (1); - if (states[NUM_THREADS - 1].status != STAT_WAITMUTEX) - log_error ("highest priority thread does not run.\n"); - - /* Signal the remaining threads. */ - assert (pthread_mutex_lock (&cond_mutex) == 0); - assert (pthread_cond_broadcast (&cond_var) == 0); - assert (pthread_mutex_unlock (&cond_mutex) == 0); - sleep (1); - - check_run_order ("9,8,7,6,5,4,3,2,1,0"); - for (i = 0; i < NUM_THREADS; i = i + 1) { - /* Tell the threads not to report anything. */ - states[i].flags = 0; - } - - /* Use the thread unique condition variable next time. */ - use_global_condvar = 0; - - /* Allow the threads to continue their loop. */ - assert (pthread_mutex_unlock (&waiter_mutex) == 0); - sleep (1); -} - - -static void -mutex_prioceiling_test (void) -{ - const int test_thread_id = 0; /* ID of test thread */ - pthread_mutexattr_t mattr; - struct sched_param param; - pthread_mutex_t m[3]; - mutex_kind_t mkind; - int i, ret, policy, my_prio, old_ceiling; - - log ("Testing priority ceilings\n"); - log ("-------------------------\n"); - for (mkind = M_POSIX; mkind <= M_SS2_RECURSIVE; mkind++) { - - log (" Protype PTHREAD_PRIO_PROTECT, Type %s\n", - mutextype_strs[mkind]); - - /* - * Initialize and create a mutex. - */ - assert (pthread_mutexattr_init (&mattr) == 0); - - /* Get this threads current priority. */ - assert (pthread_getschedparam (pthread_self(), &policy, - ¶m) == 0); - my_prio = param.sched_priority; /* save for later use */ - log_trace ("Current scheduling policy %d, priority %d\n", - policy, my_prio); - - /* - * Initialize and create 3 priority protection mutexes with - * default (max priority) ceilings. - */ - assert (pthread_mutexattr_setprotocol(&mattr, - PTHREAD_PRIO_PROTECT) == 0); - - /* - * Ensure that the first mutex type is a POSIX - * compliant mutex. - */ - if (mkind != M_POSIX) { - assert (pthread_mutexattr_settype (&mattr, - mutex_types[mkind]) == 0); - } - - for (i = 0; i < 3; i++) - assert (pthread_mutex_init (&m[i], &mattr) == 0); - - /* - * Set the ceiling priorities for the 3 priority protection - * mutexes to, 5 less than, equal to, and 5 greater than, - * this threads current priority. - */ - for (i = 0; i < 3; i++) - assert (pthread_mutex_setprioceiling (&m[i], - my_prio - 5 + 5*i, &old_ceiling) == 0); - - /* - * Check that if we attempt to take a mutex whose priority - * ceiling is lower than our priority, we get an error. - */ - log (" Lock with ceiling priority < thread priority - "); - ret = pthread_mutex_lock (&m[0]); - check_result (/* expected */ EINVAL, ret); - if (ret == 0) - pthread_mutex_unlock (&m[0]); - - /* - * Check that we can take a mutex whose priority ceiling - * is equal to our priority. - */ - log (" Lock with ceiling priority = thread priority - "); - ret = pthread_mutex_lock (&m[1]); - check_result (/* expected */ 0, ret); - if (ret == 0) - pthread_mutex_unlock (&m[1]); - - /* - * Check that we can take a mutex whose priority ceiling - * is higher than our priority. - */ - log (" Lock with ceiling priority > thread priority - "); - ret = pthread_mutex_lock (&m[2]); - check_result (/* expected */ 0, ret); - if (ret == 0) - pthread_mutex_unlock (&m[2]); - - /* - * Have the test thread go into a busy loop for 5 seconds - * and see that it doesn't block this thread (since the - * priority ceiling of mutex 0 and the priority of the test - * thread are both less than the priority of this thread). - */ - log (" Preemption with ceiling priority < thread " - "priority - "); - /* Have the test thread take mutex 0. */ - send_mutex_cmd (test_thread_id, CMD_TAKE_MUTEX, &m[0]); - sleep (1); - - log_trace ("Sending busy command.\n"); - send_cmd (test_thread_id, CMD_BUSY_LOOP); - log_trace ("Busy sent, yielding\n"); - pthread_yield (); - log_trace ("Returned from yield.\n"); - if (states[test_thread_id].flags & - (FLAGS_IS_BUSY | FLAGS_WAS_BUSY)) - log_error ("test thread inproperly preempted us.\n"); - else { - /* Let the thread finish its busy loop. */ - sleep (6); - if ((states[test_thread_id].flags & FLAGS_WAS_BUSY) == 0) - log_error ("test thread never finished.\n"); - else - log_pass (); - } - states[test_thread_id].flags &= ~FLAGS_WAS_BUSY; - - /* Have the test thread release mutex 0. */ - send_cmd (test_thread_id, CMD_RELEASE_ALL); - sleep (1); - - /* - * Have the test thread go into a busy loop for 5 seconds - * and see that it preempts this thread (since the priority - * ceiling of mutex 1 is the same as the priority of this - * thread). The test thread should not run to completion - * as its time quantum should expire before the 5 seconds - * are up. - */ - log (" Preemption with ceiling priority = thread " - "priority - "); - - /* Have the test thread take mutex 1. */ - send_mutex_cmd (test_thread_id, CMD_TAKE_MUTEX, &m[1]); - sleep (1); - - log_trace ("Sending busy\n"); - send_cmd (test_thread_id, CMD_BUSY_LOOP); - log_trace ("Busy sent, yielding\n"); - pthread_yield (); - log_trace ("Returned from yield.\n"); - if ((states[test_thread_id].flags & FLAGS_IS_BUSY) == 0) - log_error ("test thread did not switch in on yield.\n"); - else if (states[test_thread_id].flags & FLAGS_WAS_BUSY) - log_error ("test thread ran to completion.\n"); - else { - /* Let the thread finish its busy loop. */ - sleep (6); - if ((states[test_thread_id].flags & FLAGS_WAS_BUSY) == 0) - log_error ("test thread never finished.\n"); - else - log_pass (); - } - states[test_thread_id].flags &= ~FLAGS_WAS_BUSY; - - /* Have the test thread release mutex 1. */ - send_cmd (test_thread_id, CMD_RELEASE_ALL); - sleep (1); - - /* - * Set the scheduling policy of the test thread to SCHED_FIFO - * and have it go into a busy loop for 5 seconds. This - * thread is SCHED_RR, and since the priority ceiling of - * mutex 1 is the same as the priority of this thread, the - * test thread should run to completion once it is switched - * in. - */ - log (" SCHED_FIFO scheduling and ceiling priority = " - "thread priority - "); - param.sched_priority = states[test_thread_id].priority; - assert (pthread_setschedparam (states[test_thread_id].tid, - SCHED_FIFO, ¶m) == 0); - - /* Have the test thread take mutex 1. */ - send_mutex_cmd (test_thread_id, CMD_TAKE_MUTEX, &m[1]); - sleep (1); - - log_trace ("Sending busy\n"); - send_cmd (test_thread_id, CMD_BUSY_LOOP); - log_trace ("Busy sent, yielding\n"); - pthread_yield (); - log_trace ("Returned from yield.\n"); - if ((states[test_thread_id].flags & FLAGS_WAS_BUSY) == 0) { - log_error ("test thread did not run to completion.\n"); - /* Let the thread finish it's busy loop. */ - sleep (6); - } - else - log_pass (); - states[test_thread_id].flags &= ~FLAGS_WAS_BUSY; - - /* Restore the test thread scheduling parameters. */ - param.sched_priority = states[test_thread_id].priority; - assert (pthread_setschedparam (states[test_thread_id].tid, - SCHED_RR, ¶m) == 0); - - /* Have the test thread release mutex 1. */ - send_cmd (test_thread_id, CMD_RELEASE_ALL); - sleep (1); - - /* - * Have the test thread go into a busy loop for 5 seconds - * and see that it preempts this thread (since the priority - * ceiling of mutex 2 is the greater than the priority of - * this thread). The test thread should run to completion - * and block this thread because its active priority is - * higher. - */ - log (" SCHED_FIFO scheduling and ceiling priority > " - "thread priority - "); - /* Have the test thread take mutex 2. */ - send_mutex_cmd (test_thread_id, CMD_TAKE_MUTEX, &m[2]); - sleep (1); - - log_trace ("Sending busy\n"); - send_cmd (test_thread_id, CMD_BUSY_LOOP); - log_trace ("Busy sent, yielding\n"); - pthread_yield (); - log_trace ("Returned from yield.\n"); - if ((states[test_thread_id].flags & FLAGS_IS_BUSY) != 0) { - log_error ("test thread did not run to completion.\n"); - /* Let the thread finish it's busy loop. */ - sleep (6); - } - else if ((states[test_thread_id].flags & FLAGS_WAS_BUSY) == 0) - log_error ("test thread never finished.\n"); - else - log_pass (); - states[test_thread_id].flags &= ~FLAGS_WAS_BUSY; - - /* Have the test thread release mutex 2. */ - send_cmd (test_thread_id, CMD_RELEASE_ALL); - sleep (1); - - /* Destroy the mutexes. */ - for (i = 0; i < 3; i++) - assert (pthread_mutex_destroy (&m[i]) == 0); - } -} - - -static void -mutex_prioinherit_test (void) -{ - pthread_mutexattr_t mattr; - struct sched_param param; - pthread_mutex_t m[3]; - mutex_kind_t mkind; - int i, policy, my_prio; - - /* Get this threads current priority. */ - assert (pthread_getschedparam (pthread_self(), &policy, - ¶m) == 0); - my_prio = param.sched_priority; /* save for later use */ - log_trace ("Current scheduling policy %d, priority %d\n", - policy, my_prio); - - log ("Testing priority inheritence\n"); - log ("----------------------------\n"); - for (mkind = M_POSIX; mkind <= M_SS2_RECURSIVE; mkind++) { - - log (" Protype PTHREAD_PRIO_INHERIT, Type %s\n", - mutextype_strs[mkind]); - - /* - * Initialize and create a mutex. - */ - assert (pthread_mutexattr_init (&mattr) == 0); - - /* - * Initialize and create 3 priority inheritence mutexes with - * default (max priority) ceilings. - */ - assert (pthread_mutexattr_setprotocol(&mattr, - PTHREAD_PRIO_INHERIT) == 0); - - /* - * Ensure that the first mutex type is a POSIX - * compliant mutex. - */ - if (mkind != M_POSIX) { - assert (pthread_mutexattr_settype (&mattr, - mutex_types[mkind]) == 0); - } - - for (i = 0; i < 3; i++) - assert (pthread_mutex_init (&m[i], &mattr) == 0); - - /* - * Test setup: - * Thread 4 - take mutex 0, 1 - * Thread 2 - enter protected busy loop with mutex 0 - * Thread 3 - enter protected busy loop with mutex 1 - * Thread 4 - enter protected busy loop with mutex 2 - * Thread 5 - enter busy loop - * Thread 6 - enter protected busy loop with mutex 0 - * Thread 4 - releases mutexes 1 and 0. - * - * Expected results: - * Threads complete in order 4, 6, 5, 3, 2 - */ - log (" Simple inheritence test - "); - - /* - * Command thread 4 to take mutexes 0 and 1. - */ - send_mutex_cmd (4, CMD_TAKE_MUTEX, &m[0]); - sleep (1); /* Allow command to be received. */ - send_mutex_cmd (4, CMD_TAKE_MUTEX, &m[1]); - sleep (1); - - /* - * Tell the threads to report themselves when they are - * at the bottom of their loop (waiting on wait_mutex). - */ - for (i = 0; i < NUM_THREADS; i++) - states[i].flags |= FLAGS_REPORT_WAITMUTEX; - - /* - * Command thread 2 to take mutex 0 and thread 3 to take - * mutex 1, both via a protected operation command. Since - * thread 4 owns mutexes 0 and 1, both threads 2 and 3 - * will block until the mutexes are released by thread 4. - */ - log_trace ("Commanding protected operation to thread 2.\n"); - send_mutex_cmd (2, CMD_PROTECTED_OP, &m[0]); - log_trace ("Commanding protected operation to thread 3.\n"); - send_mutex_cmd (3, CMD_PROTECTED_OP, &m[1]); - sleep (1); - - /* - * Command thread 4 to take mutex 2 via a protected operation - * and thread 5 to enter a busy loop for 5 seconds. Since - * thread 5 has higher priority than thread 4, thread 5 will - * enter the busy loop before thread 4 is activated. - */ - log_trace ("Commanding protected operation to thread 4.\n"); - send_mutex_cmd (4, CMD_PROTECTED_OP, &m[2]); - log_trace ("Commanding busy loop to thread 5.\n"); - send_cmd (5, CMD_BUSY_LOOP); - sleep (1); - if ((states[5].flags & FLAGS_IS_BUSY) == 0) - log_error ("thread 5 is not running.\n"); - log_trace ("Commanding protected operation thread 6.\n"); - send_mutex_cmd (6, CMD_PROTECTED_OP, &m[0]); - sleep (1); - if ((states[4].flags & FLAGS_WAS_BUSY) == 0) - log_error ("thread 4 failed to inherit priority.\n"); - states[4].flags = 0; - send_cmd (4, CMD_RELEASE_ALL); - sleep (5); - check_run_order ("4,6,5,3,2"); - - /* - * Clear the flags. - */ - for (i = 0; i < NUM_THREADS; i++) - states[i].flags = 0; - - /* - * Test setup: - * Thread 2 - enter busy loop (SCHED_FIFO) - * Thread 4 - take mutex 0 - * Thread 4 - priority change to same priority as thread 2 - * Thread 4 - release mutex 0 - * - * Expected results: - * Since thread 4 owns a priority mutex, it should be - * placed at the front of the run queue (for its new - * priority slot) when its priority is lowered to the - * same priority as thread 2. If thread 4 did not own - * a priority mutex, then it would have been added to - * the end of the run queue and thread 2 would have - * executed until it blocked (because it's scheduling - * policy is SCHED_FIFO). - * - */ - log (" Inheritence test with change of priority - "); - - /* - * Change threads 2 and 4 scheduling policies to be - * SCHED_FIFO. - */ - param.sched_priority = states[2].priority; - assert (pthread_setschedparam (states[2].tid, SCHED_FIFO, - ¶m) == 0); - param.sched_priority = states[4].priority; - assert (pthread_setschedparam (states[4].tid, SCHED_FIFO, - ¶m) == 0); - - /* - * Command thread 4 to take mutex 0. - */ - send_mutex_cmd (4, CMD_TAKE_MUTEX, &m[0]); - sleep (1); - - /* - * Command thread 2 to enter busy loop. - */ - send_cmd (2, CMD_BUSY_LOOP); - sleep (1); /* Allow command to be received. */ - - /* - * Command thread 4 to enter busy loop. - */ - send_cmd (4, CMD_BUSY_LOOP); - sleep (1); /* Allow command to be received. */ - - /* Have threads 2 and 4 report themselves. */ - states[2].flags = FLAGS_REPORT_WAITMUTEX; - states[4].flags = FLAGS_REPORT_WAITMUTEX; - - /* Change the priority of thread 4. */ - param.sched_priority = states[2].priority; - assert (pthread_setschedparam (states[4].tid, SCHED_FIFO, - ¶m) == 0); - sleep (5); - check_run_order ("4,2"); - - /* Clear the flags */ - states[2].flags = 0; - states[4].flags = 0; - - /* Reset the policies. */ - param.sched_priority = states[2].priority; - assert (pthread_setschedparam (states[2].tid, SCHED_RR, - ¶m) == 0); - param.sched_priority = states[4].priority; - assert (pthread_setschedparam (states[4].tid, SCHED_RR, - ¶m) == 0); - - send_cmd (4, CMD_RELEASE_MUTEX); - sleep (1); - - /* Destroy the mutexes. */ - for (i = 0; i < 3; i++) - assert (pthread_mutex_destroy (&m[i]) == 0); - } -} - - -int main (int argc, char *argv[]) -{ - pthread_mutexattr_t mattr; - pthread_condattr_t cattr; - pthread_attr_t pattr; - int i, policy, main_prio; - void * exit_status; - sigset_t mask; - struct sigaction act; - struct sched_param param; - - assert (pthread_getschedparam (pthread_self (), &policy, ¶m) == 0); - main_prio = param.sched_priority; - - /* Setupt our signal mask. */ - sigfillset (&mask); - sigdelset (&mask, SIGINT); - sigprocmask (SIG_SETMASK, &mask, NULL); - - /* Install a signal handler for SIGINT */ - sigemptyset (&act.sa_mask); - sigaddset (&act.sa_mask, SIGINT); - act.sa_handler = sighandler; - act.sa_flags = SA_RESTART; - sigaction (SIGINT, &act, NULL); - - /* - * Initialize the thread attribute. - */ - assert (pthread_attr_init (&pattr) == 0); - assert (pthread_attr_setdetachstate (&pattr, - PTHREAD_CREATE_JOINABLE) == 0); - - /* - * Initialize and create the waiter and condvar mutexes. - */ - assert (pthread_mutexattr_init (&mattr) == 0); - assert (pthread_mutex_init (&waiter_mutex, &mattr) == 0); - assert (pthread_mutex_init (&cond_mutex, &mattr) == 0); - - /* - * Initialize and create a condition variable. - */ - assert (pthread_condattr_init (&cattr) == 0); - assert (pthread_cond_init (&cond_var, &cattr) == 0); - - /* Create a pipe to catch the results of thread wakeups. */ - assert (pipe (pipefd) == 0); - -#ifdef DEBUG - assert (pthread_switch_add_np (kern_switch) == 0); -#endif - - /* - * Create the waiting threads. - */ - for (i = 0; i < NUM_THREADS; i++) { - assert (pthread_cond_init (&states[i].cond_var, &cattr) == 0); - states[i].id = (u_int8_t) i; /* NUM_THREADS must be <= 256 */ - states[i].status = 0; - states[i].cmd.cmd_id = CMD_NONE; - states[i].flags = 0; /* No flags yet. */ - assert (pthread_create (&states[i].tid, &pattr, waiter, - (void *) &states[i]) == 0); - param.sched_priority = main_prio - 10 + i; - states[i].priority = param.sched_priority; - assert (pthread_setschedparam (states[i].tid, SCHED_OTHER, - ¶m) == 0); -#if defined(__FreeBSD__) - { - char buf[30]; - - snprintf (buf, sizeof(buf), "waiter_%d", i); - pthread_set_name_np (states[i].tid, buf); - } -#endif - } - - /* Allow the threads to start. */ - sleep (1); - log_trace ("Done creating threads.\n"); - - log ("\n"); - mutex_init_test (); - log ("\n"); - mutex_destroy_test (); - log ("\n"); - mutex_lock_test (); - log ("\n"); - mutex_unlock_test (); - log ("\n"); - queueing_order_test (); - log ("\n"); - mutex_prioinherit_test (); - log ("\n"); - mutex_prioceiling_test (); - log ("\n"); - - log ("Total tests %d, passed %d, failed %d\n", - total, pass_count, error_count); - - /* Set the done flag and signal the threads to exit. */ - log_trace ("Setting done flag.\n"); - done = 1; - - /* - * Wait for the threads to finish. - */ - log_trace ("Trying to join threads.\n"); - for (i = 0; i < NUM_THREADS; i++) { - send_cmd (i, CMD_NONE); - assert (pthread_join (states[i].tid, &exit_status) == 0); - } - - /* Clean up after ourselves. */ - close (pipefd[0]); - close (pipefd[1]); - - if (error_count != 0) - exit (EX_OSERR); /* any better ideas??? */ - else - exit (EX_OK); -} diff --git a/lib/libc_r/uthread/uthread_exit.c b/lib/libc_r/uthread/uthread_exit.c index 93b8b8358494..c54dbda2fd90 100644 --- a/lib/libc_r/uthread/uthread_exit.c +++ b/lib/libc_r/uthread/uthread_exit.c @@ -164,12 +164,18 @@ pthread_exit(void *status) if (pthread_cond_signal(&_gc_cond) != 0) PANIC("Cannot signal gc cond"); + /* + * Mark the thread as dead so it will not return if it + * gets context switched out when the mutex is unlocked. + */ + PTHREAD_SET_STATE(_thread_run, PS_DEAD); + /* Unlock the garbage collector mutex: */ if (pthread_mutex_unlock(&_gc_mutex) != 0) PANIC("Cannot lock gc mutex"); /* This this thread will never be re-scheduled. */ - _thread_kern_sched_state(PS_DEAD, __FILE__, __LINE__); + _thread_kern_sched(NULL); /* This point should not be reached. */ PANIC("Dead thread has resumed"); diff --git a/lib/libc_r/uthread/uthread_priority_queue.c b/lib/libc_r/uthread/uthread_priority_queue.c index cc2b6e670a98..516a1e0a37b2 100644 --- a/lib/libc_r/uthread/uthread_priority_queue.c +++ b/lib/libc_r/uthread/uthread_priority_queue.c @@ -29,7 +29,6 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: uthread_priority_queue.c,v 1.2 1999/06/20 08:28:37 jb Exp $ */ #include <stdlib.h> #include <sys/queue.h> @@ -41,51 +40,9 @@ /* Prototypes: */ static void pq_insert_prio_list(pq_queue_t *pq, int prio); -#if defined(_PTHREADS_INVARIANTS) - -static int _pq_active = 0; - -#define _PQ_IN_SCHEDQ (PTHREAD_FLAGS_IN_PRIOQ | PTHREAD_FLAGS_IN_WAITQ | PTHREAD_FLAGS_IN_WORKQ) - -#define _PQ_SET_ACTIVE() _pq_active = 1 -#define _PQ_CLEAR_ACTIVE() _pq_active = 0 -#define _PQ_ASSERT_ACTIVE(msg) do { \ - if (_pq_active == 0) \ - PANIC(msg); \ -} while (0) -#define _PQ_ASSERT_INACTIVE(msg) do { \ - if (_pq_active != 0) \ - PANIC(msg); \ -} while (0) -#define _PQ_ASSERT_IN_WAITQ(thrd, msg) do { \ - if (((thrd)->flags & PTHREAD_FLAGS_IN_WAITQ) == 0) \ - PANIC(msg); \ -} while (0) -#define _PQ_ASSERT_IN_PRIOQ(thrd, msg) do { \ - if (((thrd)->flags & PTHREAD_FLAGS_IN_PRIOQ) == 0) \ - PANIC(msg); \ -} while (0) -#define _PQ_ASSERT_NOT_QUEUED(thrd, msg) do { \ - if ((thrd)->flags & _PQ_IN_SCHEDQ) \ - PANIC(msg); \ -} while (0) - -#else - -#define _PQ_SET_ACTIVE() -#define _PQ_CLEAR_ACTIVE() -#define _PQ_ASSERT_ACTIVE(msg) -#define _PQ_ASSERT_INACTIVE(msg) -#define _PQ_ASSERT_IN_WAITQ(thrd, msg) -#define _PQ_ASSERT_IN_PRIOQ(thrd, msg) -#define _PQ_ASSERT_NOT_QUEUED(thrd, msg) -#define _PQ_CHECK_PRIO() - -#endif - int -_pq_alloc(pq_queue_t *pq, int minprio, int maxprio) +_pq_init(pq_queue_t *pq, int minprio, int maxprio) { int i, ret = 0; int prioslots = maxprio - minprio + 1; @@ -99,26 +56,8 @@ _pq_alloc(pq_queue_t *pq, int minprio, int maxprio) ret = -1; else { - /* Remember the queue size: */ - pq->pq_size = prioslots; - - ret = _pq_init(pq); - - } - return (ret); -} - -int -_pq_init(pq_queue_t *pq) -{ - int i, ret = 0; - - if ((pq == NULL) || (pq->pq_lists == NULL)) - ret = -1; - - else { /* Initialize the queue for each priority slot: */ - for (i = 0; i < pq->pq_size; i++) { + for (i = 0; i < prioslots; i++) { TAILQ_INIT(&pq->pq_lists[i].pl_head); pq->pq_lists[i].pl_prio = i; pq->pq_lists[i].pl_queued = 0; @@ -126,7 +65,9 @@ _pq_init(pq_queue_t *pq) /* Initialize the priority queue: */ TAILQ_INIT(&pq->pq_queue); - _PQ_CLEAR_ACTIVE(); + + /* Remember the queue size: */ + pq->pq_size = prioslots; } return (ret); } @@ -136,27 +77,7 @@ _pq_remove(pq_queue_t *pq, pthread_t pthread) { int prio = pthread->active_priority; - /* - * Make some assertions when debugging is enabled: - */ - _PQ_ASSERT_INACTIVE("_pq_remove: pq_active"); - _PQ_SET_ACTIVE(); - _PQ_ASSERT_IN_PRIOQ(pthread, "_pq_remove: Not in priority queue"); - - /* - * Remove this thread from priority list. Note that if - * the priority list becomes empty, it is not removed - * from the priority queue because another thread may be - * added to the priority list (resulting in a needless - * removal/insertion). Priority lists are only removed - * from the priority queue when _pq_first is called. - */ TAILQ_REMOVE(&pq->pq_lists[prio].pl_head, pthread, pqe); - - /* This thread is now longer in the priority queue. */ - pthread->flags &= ~PTHREAD_FLAGS_IN_PRIOQ; - - _PQ_CLEAR_ACTIVE(); } @@ -165,23 +86,10 @@ _pq_insert_head(pq_queue_t *pq, pthread_t pthread) { int prio = pthread->active_priority; - /* - * Make some assertions when debugging is enabled: - */ - _PQ_ASSERT_INACTIVE("_pq_insert_head: pq_active"); - _PQ_SET_ACTIVE(); - _PQ_ASSERT_NOT_QUEUED(pthread, - "_pq_insert_head: Already in priority queue"); - TAILQ_INSERT_HEAD(&pq->pq_lists[prio].pl_head, pthread, pqe); if (pq->pq_lists[prio].pl_queued == 0) /* Insert the list into the priority queue: */ pq_insert_prio_list(pq, prio); - - /* Mark this thread as being in the priority queue. */ - pthread->flags |= PTHREAD_FLAGS_IN_PRIOQ; - - _PQ_CLEAR_ACTIVE(); } @@ -190,23 +98,10 @@ _pq_insert_tail(pq_queue_t *pq, pthread_t pthread) { int prio = pthread->active_priority; - /* - * Make some assertions when debugging is enabled: - */ - _PQ_ASSERT_INACTIVE("_pq_insert_tail: pq_active"); - _PQ_SET_ACTIVE(); - _PQ_ASSERT_NOT_QUEUED(pthread, - "_pq_insert_tail: Already in priority queue"); - TAILQ_INSERT_TAIL(&pq->pq_lists[prio].pl_head, pthread, pqe); if (pq->pq_lists[prio].pl_queued == 0) /* Insert the list into the priority queue: */ pq_insert_prio_list(pq, prio); - - /* Mark this thread as being in the priority queue. */ - pthread->flags |= PTHREAD_FLAGS_IN_PRIOQ; - - _PQ_CLEAR_ACTIVE(); } @@ -216,12 +111,6 @@ _pq_first(pq_queue_t *pq) pq_list_t *pql; pthread_t pthread = NULL; - /* - * Make some assertions when debugging is enabled: - */ - _PQ_ASSERT_INACTIVE("_pq_first: pq_active"); - _PQ_SET_ACTIVE(); - while (((pql = TAILQ_FIRST(&pq->pq_queue)) != NULL) && (pthread == NULL)) { if ((pthread = TAILQ_FIRST(&pql->pl_head)) == NULL) { @@ -235,8 +124,6 @@ _pq_first(pq_queue_t *pq) pql->pl_queued = 0; } } - - _PQ_CLEAR_ACTIVE(); return (pthread); } @@ -247,14 +134,9 @@ pq_insert_prio_list(pq_queue_t *pq, int prio) pq_list_t *pql; /* - * Make some assertions when debugging is enabled: - */ - _PQ_ASSERT_ACTIVE("pq_insert_prio_list: pq_active"); - - /* * The priority queue is in descending priority order. Start at * the beginning of the queue and find the list before which the - * new list should be inserted. + * new list should to be inserted. */ pql = TAILQ_FIRST(&pq->pq_queue); while ((pql != NULL) && (pql->pl_prio > prio)) @@ -270,66 +152,4 @@ pq_insert_prio_list(pq_queue_t *pq, int prio) pq->pq_lists[prio].pl_queued = 1; } -#if defined(_PTHREADS_INVARIANTS) -void -_waitq_insert(pthread_t pthread) -{ - pthread_t tid; - - /* - * Make some assertions when debugging is enabled: - */ - _PQ_ASSERT_INACTIVE("_waitq_insert: pq_active"); - _PQ_SET_ACTIVE(); - _PQ_ASSERT_NOT_QUEUED(pthread, "_waitq_insert: Already in queue"); - - if (pthread->wakeup_time.tv_sec == -1) - TAILQ_INSERT_TAIL(&_waitingq, pthread, pqe); - else { - tid = TAILQ_FIRST(&_waitingq); - while ((tid != NULL) && (tid->wakeup_time.tv_sec != -1) && - ((tid->wakeup_time.tv_sec < pthread->wakeup_time.tv_sec) || - ((tid->wakeup_time.tv_sec == pthread->wakeup_time.tv_sec) && - (tid->wakeup_time.tv_nsec <= pthread->wakeup_time.tv_nsec)))) - tid = TAILQ_NEXT(tid, pqe); - if (tid == NULL) - TAILQ_INSERT_TAIL(&_waitingq, pthread, pqe); - else - TAILQ_INSERT_BEFORE(tid, pthread, pqe); - } - pthread->flags |= PTHREAD_FLAGS_IN_WAITQ; - - _PQ_CLEAR_ACTIVE(); -} - -void -_waitq_remove(pthread_t pthread) -{ - /* - * Make some assertions when debugging is enabled: - */ - _PQ_ASSERT_INACTIVE("_waitq_remove: pq_active"); - _PQ_SET_ACTIVE(); - _PQ_ASSERT_IN_WAITQ(pthread, "_waitq_remove: Not in queue"); - - TAILQ_REMOVE(&_waitingq, pthread, pqe); - pthread->flags &= ~PTHREAD_FLAGS_IN_WAITQ; - - _PQ_CLEAR_ACTIVE(); -} - -void -_waitq_setactive(void) -{ - _PQ_ASSERT_INACTIVE("_waitq_setactive: pq_active"); - _PQ_SET_ACTIVE(); -} - -void -_waitq_clearactive(void) -{ - _PQ_ASSERT_ACTIVE("_waitq_clearactive: ! pq_active"); - _PQ_CLEAR_ACTIVE(); -} -#endif #endif diff --git a/lib/libc_r/uthread/uthread_setschedparam.c b/lib/libc_r/uthread/uthread_setschedparam.c index f1ce72ec3538..93635da449cd 100644 --- a/lib/libc_r/uthread/uthread_setschedparam.c +++ b/lib/libc_r/uthread/uthread_setschedparam.c @@ -29,7 +29,6 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: uthread_setschedparam.c,v 1.2 1999/06/20 08:28:44 jb Exp $ */ #include <errno.h> #include <sys/param.h> @@ -51,10 +50,10 @@ pthread_setschedparam(pthread_t pthread, int policy, struct sched_param *param) /* Find the thread in the list of active threads: */ else if ((ret = _find_thread(pthread)) == 0) { /* - * Defer signals to protect the scheduling queues from - * access by the signal handler: + * Guard against being preempted by a scheduling + * signal: */ - _thread_kern_sig_defer(); + _thread_kern_sched_defer(); if (param->sched_priority != pthread->base_priority) { /* @@ -62,7 +61,8 @@ pthread_setschedparam(pthread_t pthread, int policy, struct sched_param *param) * queue before any adjustments are made to its * active priority: */ - if ((pthread->flags & PTHREAD_FLAGS_IN_PRIOQ) != 0) { + if ((pthread != _thread_run) && + (pthread->state == PS_RUNNING)) { in_readyq = 1; old_prio = pthread->active_priority; PTHREAD_PRIOQ_REMOVE(pthread); @@ -103,10 +103,10 @@ pthread_setschedparam(pthread_t pthread, int policy, struct sched_param *param) pthread->attr.sched_policy = policy; /* - * Undefer and handle pending signals, yielding if - * necessary: + * Renable preemption and yield if a scheduling signal + * arrived while in the critical region: */ - _thread_kern_sig_undefer(); + _thread_kern_sched_undefer(); } return(ret); } diff --git a/lib/libutil/login_class.c b/lib/libutil/login_class.c index 15b16d384d83..3887541a409e 100644 --- a/lib/libutil/login_class.c +++ b/lib/libutil/login_class.c @@ -21,7 +21,7 @@ * * High-level routines relating to use of the user capabilities database * - * $Id$ + * $Id: login_class.c,v 1.9 1998/07/28 01:30:16 ache Exp $ */ #include <stdio.h> @@ -163,7 +163,7 @@ substvar(char * var, const struct passwd * pwd, int hlen, int pch, int nlen) while (*(p += strcspn(p, "~$")) != '\0') { int l = strlen(p); - if (p > np && *(p-1) == '\\') /* Escaped: */ + if (p > var && *(p-1) == '\\') /* Escaped: */ memmove(p - 1, p, l + 1); /* Slide-out the backslash */ else if (*p == '~') { int v = pch && *(p+1) != '/'; /* Avoid double // */ diff --git a/release/sysinstall/config.c b/release/sysinstall/config.c index 97c81b14894a..d39c48cd4251 100644 --- a/release/sysinstall/config.c +++ b/release/sysinstall/config.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: config.c,v 1.115.2.17 1999/05/14 15:04:45 jkh Exp $ + * $Id: config.c,v 1.115.2.19 1999/05/15 15:05:23 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -514,7 +514,7 @@ configXDesktop(dialogMenuItem *self) else if (!strcmp(desk, "windowmaker")) { ret = package_add("windowmaker"); if (DITEM_STATUS(ret) != DITEM_FAILURE && gotit("wmaker.inst")) { - write_root_xprofile("xterm &\n[ ! -d $HOME/GNUstep/Library/WindowMaker ] && /usr/X11R6/bin/wmaker.inst && exec /usr/X11R6/bin/wmaker\n"); + write_root_xprofile("xterm &\n[ ! -d $HOME/GNUstep/Library/WindowMaker ] && /usr/X11R6/bin/wmaker.inst\nexec /usr/X11R6/bin/wmaker\n"); } } else if (!strcmp(desk, "enlightenment")) { @@ -552,9 +552,11 @@ tryagain: } if (file_readable("/var/run/ld.so.hints")) - systemExecute("/sbin/ldconfig -m /usr/lib /usr/X11R6/lib /usr/local/lib /usr/lib/compat"); + vsystem("/sbin/ldconfig -m /usr/lib /usr/X11R6/lib /usr/local/lib /usr/lib/compat"); else - systemExecute("/sbin/ldconfig /usr/lib /usr/X11R6/lib /usr/local/lib /usr/lib/compat"); + vsystem("/sbin/ldconfig /usr/lib /usr/X11R6/lib /usr/local/lib /usr/lib/compat"); + vsystem("/sbin/ldconfig -aout /usr/lib/compat/aout /usr/lib/aout /usr/X11R6/lib/aout /usr/local/lib/aout"); + vsystem("/sbin/ifconfig lo0 127.0.0.1"); execfile = string_concat("/usr/X11R6/bin/", config); if (file_executable(execfile)) { dialog_clear_norefresh(); diff --git a/release/sysinstall/package.c b/release/sysinstall/package.c index d7f8588d939d..f41b3ddff8f6 100644 --- a/release/sysinstall/package.c +++ b/release/sysinstall/package.c @@ -4,7 +4,7 @@ * This is probably the last program in the `sysinstall' line - the next * generation being essentially a complete rewrite. * - * $Id: package.c,v 1.65.2.7 1999/05/14 14:58:17 jkh Exp $ + * $Id: package.c,v 1.65.2.8 1999/05/15 14:38:44 jkh Exp $ * * Copyright (c) 1995 * Jordan Hubbard. All rights reserved. @@ -126,6 +126,7 @@ package_extract(Device *dev, char *name, Boolean depended) /* If necessary, initialize the ldconfig hints */ if (!file_readable("/var/run/ld.so.hints")) vsystem("ldconfig /usr/lib /usr/local/lib /usr/X11R6/lib"); + vsystem("/sbin/ldconfig -aout /usr/lib/compat/aout /usr/lib/aout /usr/X11R6/lib/aout /usr/local/lib/aout"); /* Be initially optimistic */ ret = DITEM_SUCCESS | DITEM_RESTORE; diff --git a/share/examples/bootforth/loader.rc b/share/examples/bootforth/loader.rc deleted file mode 100644 index ef0f96063fab..000000000000 --- a/share/examples/bootforth/loader.rc +++ /dev/null @@ -1,34 +0,0 @@ -\ Example of the file which is automatically loaded by /boot/loader -\ on startup. -\ $Id: loader.rc,v 1.1 1999/05/14 18:06:27 dcs Exp $ - -cr .( Loading Forth extensions:) - -\ Load configuration file words - -cr .( - loader.4th...) - -include /boot/loader.4th - -\ Load the screen manipulation words - -cr .( - screen.4th...) -s" /boot/screen.4th" fopen dup fload fclose - -\ Load frame support -cr .( - frames.4th...) -s" /boot/frames.4th" fopen dup fload fclose - -\ Load our little menu -cr .( - menuconf.4th...) -s" /boot/menuconf.4th" fopen dup fload fclose - -\ Initialize loader.4th stuff - -cr cr .( Initializing loader.4th...) -initialize drop - -\ Show the menu -cr -main_menu - diff --git a/share/examples/bootforth/menuconf.4th b/share/examples/bootforth/menuconf.4th deleted file mode 100644 index 2711204f89ce..000000000000 --- a/share/examples/bootforth/menuconf.4th +++ /dev/null @@ -1,110 +0,0 @@ -\ Simple greeting screen, presenting basic options. -\ XXX This is far too trivial - I don't have time now to think -\ XXX about something more fancy... :-/ -\ $Id$ - -: title - f_single - 60 11 10 4 box - 29 4 at-xy 15 fg 7 bg - ." Welcome to BootFORTH!" - me -; - -: menu - 2 fg - 20 7 at-xy - ." 1. Start FreeBSD with /boot/stable.conf." - 20 8 at-xy - ." 2. Start FreeBSD with /boot/current.conf." - 20 9 at-xy - ." 3. Start FreeBSD with standard configuration. " - 20 10 at-xy - ." 4. Reboot." - me -; - -: tkey ( d -- flag | char ) - seconds + - begin 1 while - dup seconds u< if - drop - -1 - exit - then - key? if - drop - key - exit - then - repeat -; - -: prompt - 14 fg - 20 12 at-xy - ." Enter your option (1,2,3,4): " - 10 tkey - dup 32 = if - drop key - then - dup 0< if - drop 51 - then - dup emit - me -; - -: help_text - 10 18 at-xy ." * Choose 1 or 2 to run special configuration file." - 10 19 at-xy ." * Choose 3 to proceed with standard bootstrapping." - 12 20 at-xy ." See '?' for available commands, and 'words' for" - 12 21 at-xy ." complete list of Forth words." - 10 22 at-xy ." * Choose 4 in order to warm boot your machine." -; - -: (reboot) 0 reboot ; - -: main_menu - begin 1 while - clear - f_double - 79 23 1 1 box - title - menu - help_text - prompt - cr cr cr - dup 49 = if - drop - 1 25 at-xy cr - ." Loading /boot/stable.conf. Please wait..." cr - s" /boot/stable.conf" read-conf - boot-conf - then - dup 50 = if - drop - 1 25 at-xy cr - ." Loading /boot/current.conf. Please wait..." cr - s" /boot/current.conf" read-conf - boot-conf - then - dup 51 = if - drop - 1 25 at-xy cr - ." Proceeding with standard boot. Please wait..." cr - boot-conf - then - dup 52 = if - drop - 1 25 at-xy cr - ['] (reboot) catch abort" Error rebooting" - then - 20 12 at-xy - ." Key " emit ." is not a valid option!" - 20 13 at-xy - ." Press any key to continue..." - key drop - repeat -; - diff --git a/share/examples/diskless/209.157.86.12/README b/share/examples/diskless/209.157.86.12/README deleted file mode 100644 index 0b52492979f2..000000000000 --- a/share/examples/diskless/209.157.86.12/README +++ /dev/null @@ -1,27 +0,0 @@ - - kernel, rc.local, and xdm-config are typically softlinks. Plus other - files, of course, depending on how you setup your system. - - rc.local and xdm-config might be softlinks into HT.DISKLESS, allowing - you to ease system administration when managing many diskless - workstations. You can also play other tricks, such as I play in - rc.conf.local by having it source ../HT.DISKLESS/rc.conf.local to get - class-based defaults. - - Note: the ttys file below contains an example of how to have X startup - on boot. - -apollo:/conf/209.157.86.12# ls -la -total 7 -drwxr-xr-x 2 root wheel 512 Feb 9 00:27 . -drwxr-xr-x 8 root wheel 512 Feb 8 22:48 .. -lrwxr-xr-x 1 root wheel 20 Feb 8 22:04 fstab -> ../HT.DISKLESS/fstab -lrwxr-xr-x 1 root wheel 17 Jan 24 23:33 kernel -> /kernel.diskless2 --rw-r--r-- 1 root wheel 133 Feb 8 22:04 rc.conf.local -lrwxr-xr-x 1 root wheel 23 Jan 25 00:41 rc.local -> ../HT.DISKLESS/rc.local --rw------- 1 root wheel 539 Jan 17 15:29 ssh_host_key --rw-r--r-- 1 root wheel 343 Jan 17 15:29 ssh_host_key.pub -lrwxr-xr-x 1 root wheel 26 Feb 9 00:27 syslog.conf -> ../HT.DISKLESS/syslog.conf --rw-r--r-- 1 root wheel 1408 Feb 8 19:54 ttys -lrwxr-xr-x 1 root wheel 25 Jan 25 00:38 xdm-config -> ../HT.DISKLESS/xdm-config - diff --git a/share/examples/diskless/209.157.86.12/rc.conf.local b/share/examples/diskless/209.157.86.12/rc.conf.local deleted file mode 100644 index 181c6723708f..000000000000 --- a/share/examples/diskless/209.157.86.12/rc.conf.local +++ /dev/null @@ -1,9 +0,0 @@ -# DISKLESS RC.CONF.LOCAL -# -# Override system standard /etc/rc.conf - -. /conf/HT.DISKLESS/rc.conf.local - -hostname=test2.backplane.com -start_xdm=NO - diff --git a/share/examples/diskless/209.157.86.12/ssh_host_key b/share/examples/diskless/209.157.86.12/ssh_host_key Binary files differdeleted file mode 100644 index ee90cd252e87..000000000000 --- a/share/examples/diskless/209.157.86.12/ssh_host_key +++ /dev/null diff --git a/share/examples/diskless/209.157.86.12/ssh_host_key.pub b/share/examples/diskless/209.157.86.12/ssh_host_key.pub deleted file mode 100644 index 7c99d2c0eb3b..000000000000 --- a/share/examples/diskless/209.157.86.12/ssh_host_key.pub +++ /dev/null @@ -1 +0,0 @@ -1024 33 131532587310298436102876167134780549224884868848048954510241288010381123823834489593599651234236801895942903979896941799980786675282403650831462626987993609590967535749256449810953893747928248417183421903403076895749793372279190481189373438759742396152779236777836204647146078686957945395785442097357022574693 root@apollo.backplane.com diff --git a/share/examples/diskless/HT.DISKLESS/fstab b/share/examples/diskless/HT.DISKLESS/fstab deleted file mode 100644 index f1ee38f2c2bd..000000000000 --- a/share/examples/diskless/HT.DISKLESS/fstab +++ /dev/null @@ -1,5 +0,0 @@ -# fstab for diskless machine. Root is already mounted, as is swap. -# -209.157.86.2:/usr /usr nfs ro 0 0 -209.157.86.2:/var /var nfs ro 0 0 -proc /proc procfs rw 0 0 diff --git a/share/examples/diskless/HT.DISKLESS/rc.conf.local b/share/examples/diskless/HT.DISKLESS/rc.conf.local deleted file mode 100644 index 16ddd1d7f18e..000000000000 --- a/share/examples/diskless/HT.DISKLESS/rc.conf.local +++ /dev/null @@ -1,34 +0,0 @@ -# DISKLESS RC.CONF.LOCAL -# -# Override system standard /etc/rc.conf - -ldconfig_paths="$ldconfig_paths /usr/krb5/lib" -ldconfig_paths_aout="$ldconfig_paths_aout /usr/krb5/lib/aout" - -# Must do NFS mounts early -# Must not attempt to mount root rw -# -early_nfs_mounts="YES" -root_rw_mount="NO" - -inetd_enable="NO" -portmap_enable="NO" -router_enable="NO" -cron_enable="NO" -sendmail_enable="NO" - -# Enable additional services -# - -nfs_client_enable="YES" -lpd_enable="YES" -ntpdate_enable="YES" -ntpdate_flags="apollo.backplane.com" -xntpd_enable="YES" - -if [ -f /etc/ipfw.conf ]; then - firewall_enable="YES" - firewall_type="/etc/ipfw.conf" - firewall_quiet="NO" -fi - diff --git a/share/examples/diskless/HT.DISKLESS/rc.local b/share/examples/diskless/HT.DISKLESS/rc.local deleted file mode 100755 index f473d4152168..000000000000 --- a/share/examples/diskless/HT.DISKLESS/rc.local +++ /dev/null @@ -1,77 +0,0 @@ -#!/bin/sh - -if [ -f /etc/rc.conf ]; then - . /etc/rc.conf -fi - -# Firewall helper - if we configure the firewall to let through -# ports > 4000, we need to configure the machines as such. -# - -sysctl -w net.inet.ip.portrange.first=4000 - -# Setup spool -# - -cat >> /var/spool/lpd/ljet4.ps << EOF -#!/bin/sh -# - -gs -q -dSAFER -dNOPAUSE -sDEVICE=ljet4 -r600x600 -dBitsPerPixel=1 \ - -sOutputFile=- - -EOF - -chmod 755 /var/spool/lpd/ljet4.ps - -mkdir /var/spool/ljet4 -chown daemon /var/spool/ljet4 - -# Setup remote source -# - -mount_mfs -s 600000 -T qp120at dummy /src -mount apollo:/FreeBSD /FreeBSD -mkdir /src/u3 -mkdir /src/u3/usr.obj - -# Copy of ssh_host_key* files to where sshd -# expects them, assuming you add to /usr/local/etc/sshd_config: -# -# HostKey /var/db/ssh_host_key -# -# Then restart sshd ( the /usr/local/etc/rc.d script installed by -# the port probably failed due to the lack of host keys ) - -if [ -f /conf/ME/ssh_host_key ]; then - cp /conf/ME/ssh_host_key* /var/db -else - (cd /var/db; ssh-keygen -f ssh_host_key -P "") -fi -chmod 400 /var/db/ssh_host_key -chmod 644 /var/db/ssh_host_key.pub -/usr/local/sbin/sshd - -# Copy home directory so you can login -# -# - -mount_mfs -s 65536 -T qp120at dummy /home - -if [ -d /home.diskless ]; then - cd /home.diskless - for i in *; do - if [ -f $i/home.tgz ]; then - mkdir /home/$i - chown $i /home/$i - chmod 700 /home/$i - (cd /home/$i; tar xzpf /home.diskless/$i/home.tgz) - homeok=1 - fi - done -fi - -if [ "${homeok:=0}" = "0" ]; then - echo "ERROR, NO /home.diskless DIRECTORY TO COPY TO /HOME" - sleep 10 -fi - diff --git a/share/examples/diskless/HT.DISKLESS/syslog.conf b/share/examples/diskless/HT.DISKLESS/syslog.conf deleted file mode 100644 index a7df1e96deea..000000000000 --- a/share/examples/diskless/HT.DISKLESS/syslog.conf +++ /dev/null @@ -1,3 +0,0 @@ -*.err;kern.debug;auth.notice;mail.crit;lpr.info /dev/console -*.err;kern.debug;auth.notice;mail.crit root -*.emerg * diff --git a/share/examples/diskless/HT.DISKLESS/ttys b/share/examples/diskless/HT.DISKLESS/ttys deleted file mode 100644 index 2c357d4b3b3b..000000000000 --- a/share/examples/diskless/HT.DISKLESS/ttys +++ /dev/null @@ -1,52 +0,0 @@ -# -# @(#)ttys 5.1 (Berkeley) 4/17/89 -# -# name getty type status comments -# -# This entry needed for asking password when init goes to single-user mode -# If you want to be asked for password, change "secure" to "insecure" here -console none unknown off secure -# -ttyv0 "/usr/X11R6/bin/xdm -nodaemon -config /conf/209.157.86.6/xdm-config" cons25 on secure -# Virtual terminals -ttyv1 "/usr/libexec/getty Pc" cons25 on secure -ttyv2 "/usr/libexec/getty Pc" cons25 on secure -ttyv3 "/usr/libexec/getty Pc" cons25 on secure -# Serial terminals -ttyd0 "/usr/libexec/getty std.9600" unknown off secure -ttyd1 "/usr/libexec/getty std.9600" unknown off secure -ttyd2 "/usr/libexec/getty std.9600" unknown off secure -ttyd3 "/usr/libexec/getty std.9600" unknown off secure -# Pseudo terminals -ttyp0 none network -ttyp1 none network -ttyp2 none network -ttyp3 none network -ttyp4 none network -ttyp5 none network -ttyp6 none network -ttyp7 none network -ttyp8 none network -ttyp9 none network -ttypa none network -ttypb none network -ttypc none network -ttypd none network -ttype none network -ttypf none network -ttypg none network -ttyph none network -ttypi none network -ttypj none network -ttypk none network -ttypl none network -ttypm none network -ttypn none network -ttypo none network -ttypp none network -ttypq none network -ttypr none network -ttyps none network -ttypt none network -ttypu none network -ttypv none network diff --git a/share/examples/diskless/HT.DISKLESS/xdm-config b/share/examples/diskless/HT.DISKLESS/xdm-config deleted file mode 100644 index 88ad35fbeea7..000000000000 --- a/share/examples/diskless/HT.DISKLESS/xdm-config +++ /dev/null @@ -1,15 +0,0 @@ -! $XConsortium: xdm-conf.cpp,v 1.2 93/09/28 14:30:32 gildea Exp $ -DisplayManager.errorLogFile: /var/run/xdm-errors -DisplayManager.pidFile: /var/run/xdm-pid -DisplayManager.servers: /usr/X11R6/lib/X11/xdm/Xservers-1 -DisplayManager.keyFile: /usr/X11R6/lib/X11/xdm/xdm-keys -DisplayManager.servers: /usr/X11R6/lib/X11/xdm/Xservers -DisplayManager.accessFile: /usr/X11R6/lib/X11/xdm/Xaccess -DisplayManager._0.authorize: true -DisplayManager._0.setup: /usr/X11R6/lib/X11/xdm/Xsetup_0 -DisplayManager._0.startup: /usr/X11R6/lib/X11/xdm/GiveConsole -DisplayManager._0.reset: /usr/X11R6/lib/X11/xdm/TakeConsole -DisplayManager*resources: /usr/X11R6/lib/X11/xdm/Xresources -DisplayManager*session: /usr/X11R6/lib/X11/xdm/Xsession -DisplayManager*authComplain: false - diff --git a/share/examples/diskless/HT.STD/aliases b/share/examples/diskless/HT.STD/aliases deleted file mode 100644 index 5988f793f814..000000000000 --- a/share/examples/diskless/HT.STD/aliases +++ /dev/null @@ -1,30 +0,0 @@ -# -# @(#)aliases 5.3 (Berkeley) 5/24/90 -# -# Aliases in this file will NOT be expanded in the header from -# Mail, but WILL be visible over networks or from /bin/mail. -# -# >>>>>>>>>> The program "newaliases" must be run after -# >> NOTE >> this file is updated for any changes to -# >>>>>>>>>> show through to sendmail. -# - -# Basic system aliases -- these MUST be present -MAILER-DAEMON: postmaster -postmaster: root - -# General redirections for pseudo accounts -bin: root -daemon: root -games: root -ingres: root -nobody: root -system: root -toor: root -uucp: root -usenet: root -root: root@backplane.com - -diablo: dillon -diablo-bugs: dillon - diff --git a/share/examples/diskless/HT.STD/forward.map b/share/examples/diskless/HT.STD/forward.map deleted file mode 100644 index d4253f8734c6..000000000000 --- a/share/examples/diskless/HT.STD/forward.map +++ /dev/null @@ -1,6 +0,0 @@ -# @(#)forward.map 1.1 1/17/95 -# -# Put addresses to be forwarded here. Example: -# -# garyw@mojosoft.com charliex@best.com -# diff --git a/share/examples/diskless/HT.STD/ndomain.map b/share/examples/diskless/HT.STD/ndomain.map deleted file mode 100644 index 63011d08ca91..000000000000 --- a/share/examples/diskless/HT.STD/ndomain.map +++ /dev/null @@ -1,11 +0,0 @@ -# -# example: -# fofs.com markl@shellx.best.com -# -# NOTE: FORWARD.MAP can be used to override NDOMAIN.MAP for specific -# users. NDOMAIN.MAP would then act as a catch-all -# -# NOTE: NDOMAIN.MAP only works to two levels. I.E. if you have an -# entry for fubar.com, then user@fubar.com will work and -# user@host.fubar.com will work, but NOT user@host.dom.fubar.com -# diff --git a/share/examples/diskless/HT.STD/syslog.conf b/share/examples/diskless/HT.STD/syslog.conf deleted file mode 100644 index cb92c6e6db07..000000000000 --- a/share/examples/diskless/HT.STD/syslog.conf +++ /dev/null @@ -1,11 +0,0 @@ -*.err;kern.debug;auth.notice;mail.crit /dev/console -# *.notice;kern.debug;lpr,auth.info;mail.crit /var/log/messages -*.debug;kern.debug;lpr,auth.info;mail.crit;news.crit /var/log/messages -mail.info /var/log/maillog -news.info /var/log/news -lpr.info /var/log/lpd-errs -cron.* /var/log/cron -#*.err root -#*.notice;auth.debug root -#*.alert root -*.emerg * diff --git a/share/examples/diskless/HT.STD/ttys b/share/examples/diskless/HT.STD/ttys deleted file mode 100644 index bcd059bd9091..000000000000 --- a/share/examples/diskless/HT.STD/ttys +++ /dev/null @@ -1,52 +0,0 @@ -# -# @(#)ttys 5.1 (Berkeley) 4/17/89 -# -# name getty type status comments -# -# This entry needed for asking password when init goes to single-user mode -# If you want to be asked for password, change "secure" to "insecure" here -console none unknown off secure -# -ttyv0 "/usr/libexec/getty Pc" cons25 on secure -# Virtual terminals -ttyv1 "/usr/libexec/getty Pc" cons25 on secure -ttyv2 "/usr/libexec/getty Pc" cons25 on secure -ttyv3 "/usr/libexec/getty Pc" cons25 on secure -# Serial terminals -ttyd0 "/usr/libexec/getty std.9600" unknown off secure -ttyd1 "/usr/libexec/getty std.9600" unknown off secure -ttyd2 "/usr/libexec/getty std.9600" unknown off secure -ttyd3 "/usr/libexec/getty std.9600" unknown off secure -# Pseudo terminals -ttyp0 none network -ttyp1 none network -ttyp2 none network -ttyp3 none network -ttyp4 none network -ttyp5 none network -ttyp6 none network -ttyp7 none network -ttyp8 none network -ttyp9 none network -ttypa none network -ttypb none network -ttypc none network -ttypd none network -ttype none network -ttypf none network -ttypg none network -ttyph none network -ttypi none network -ttypj none network -ttypk none network -ttypl none network -ttypm none network -ttypn none network -ttypo none network -ttypp none network -ttypq none network -ttypr none network -ttyps none network -ttypt none network -ttypu none network -ttypv none network diff --git a/share/examples/diskless/ME b/share/examples/diskless/ME deleted file mode 100644 index 85178e088a54..000000000000 --- a/share/examples/diskless/ME +++ /dev/null @@ -1,37 +0,0 @@ - -When templating, /conf/ME is typically a softlink to -/conf/<appropriate-machine>. When doing a diskless boot, /conf/ME is -retargeted by /etc/rc.diskless1 from pointing to the server to pointing -to the client's directory, /conf/<ip-address-of-client>. The retargeting -is accomplished through an MFS -o union mount. - -When templating, this softlink should be different for each machine. -When doing a diskless boot, this softlink is typically part of the / NFS -mount from the server and points to the server's conf directory, but gets -retargeted during the /etc/rc.diskless1 phase. - -System-wide configuration files must generally be targeted through /conf/ME. -For example, your /etc/rc.conf.local should become a softlink to -/conf/ME/rc.conf.local and your real rc.conf.local should go into the -appropriate /conf/<appropriate-machine> directory. This is also true of -/etc/rc.local, /etc/fstab, /etc/syslog.conf, /etc/ccd.conf, /etc/ipfw.conf, -/etc/motd, /etc/resolv.conf, and possibly even /etc/ttys ( if you want -to start an X session up on boot on certain of your machines ). - -When templating, you duplicate your / and /usr partitions on each machine's -local disk from a single master ( assuming /var and /home reside elsewhere ), -EXCEPT for the /conf/ME softlink. The /conf/ME softlink is the only thing -on / that should be different for each machine. - -There are often categories of configuration files. For example, all of your -shell machines may use one resolv.conf while all of your mail proxies may -use another. Configuration files can be categorized fairly easily through -/conf/HT.<category> directories. You put the actual configuration file in -/conf/HT.<category> and make a softlink from -/conf/ME/<appropriate-machines>/config-file to "../HT.<category/config-file". -This means that access to these files tends to run through more then one -softlink. The advantage is that for all the complexity of your /conf -directory hierarchy, most of your common config files exist in only one place -in reality. - - diff --git a/share/examples/diskless/README.BOOTP b/share/examples/diskless/README.BOOTP deleted file mode 100644 index 0032e80230e7..000000000000 --- a/share/examples/diskless/README.BOOTP +++ /dev/null @@ -1,157 +0,0 @@ - - BOOTP configuration mechanism - - Matthew Dillon - dillon@backplane.com - - BOOTP kernels automatically configure the machine's IP address, netmask, - optional NFS based swap, and NFS based root mount. The NFS server will - typically export a shared read-only /, /usr, and /var to any number of - workstations. The shared read-only root is typically either the server's - own root or, if you are more security concious, a contrived root. - - The key issue with starting up a BOOTP kernel is that you typically want - to export read-only NFS partitions from the server, yet still be able to - customize each workstation ( or not ). - - /etc/rc.diskless1 is responsible for doing core mounts and for retargeting - /conf/ME ( part of the read-only root NFS mount ) to /conf/$IP_OF_CLIENT. - /etc/rc.conf.local and /etc/rc.local, along with other machine-specific - configuration files, are typically softlinks to /conf/ME/<filename>. - - In the BOOTP workstation /conf/$IP/rc.conf.local, you must typically - turn *OFF* most of the system option defaults in /etc/rc.conf as well - as do additional custom configuration of your environment - - The /usr/src/share/examples/diskless directory contains a typical - X session / sshd based workstation configuration. The directories - involved are HT.DISKLESS/ and 192.157.86.12/. - - Essentially, the $IP/ directory ( which rc.diskless looks for in - /conf/$IP/ ) contains all the junk. The HT.DISKLESS directory exists - to hold common elements of your custom configuration so you do not have - to repeat those elements for each workstation. The example /conf - structure included here shows how to create a working sshd setup ( so - you can sshd into the diskless workstation ), retarget xdm's pid and error - files to R+W directories if /usr is mounted read-only, and retarget - syslogd and other programs. This example is not designed to run out of - the box and some modifications are required. - - >> NOTE << HT.DISKLESS/ttys contains the typical configuration required - to bring X up at boot time. Essentially, it runs xdm in the foreground - with the appropriate arguments rather then a getty on ttyv0. You must - run xdm on ttyv0 in order to prevent xdm racing with getty on a virtual - terminal. Such a race can cause your keyboard to be directed away from - the X session, essentially making the session unusable. - - Typically you should start with a clean slate by tar-copying this example - directory to /conf and then hack on it in /conf rather then in - /usr/share/examples/diskless. - - BOOTP CLIENT SETUP - - Here is a typical kernel configuration. If you have only one ethernet - interface you do not need to wire BOOTP to a specific interface name. - BOOTP requires NFS and NFS_ROOT, and our boot scripts require MFS. If - your /tmp is *not* a softlink to /var/tmp, the scripts also require NULLFS - -# BootP -# -options BOOTP # Use BOOTP to obtain IP address/hostname -options BOOTP_NFSROOT # NFS mount root filesystem using BOOTP info -options "BOOTP_NFSV3" # Use NFS v3 to NFS mount rootoptions -options BOOTP_COMPAT # Workaround for broken bootp daemons. -#options "BOOTP_WIRED_TO=de0" - -options MFS # Memory File System -options NFS # Network Filesystem -options NFS_ROOT # Nfs can be root -options NULLFS # nullfs to map /var/tmp to /tmp - - BOOTP SERVER SETUP - - The BOOTP server must be running on the same logical LAN as the the - BOOTP client(s). You need to setup two things: - - (1) You need to NFS-export /, /usr, and /var. - - (2) You need to run a BOOTP server. DHCPD can do this. - - - NFS Export: - - Here is an example "/etc/exports" file. - -/ -ro -maproot=root: -network 192.157.86.0 -mask 255.255.255.192 -/usr -ro -maproot=root: -network 192.157.86.0 -mask 255.255.255.192 -/var -ro -maproot=root: -network 192.157.86.0 -mask 255.255.255.192 - - In order to be an NFS server, the server must run portmap, mountd, - nfsd, and rpc.statd. The standard NFS server options in /etc/rc.conf - will work ( you should put your overrides in /etc/rc.conf.local on the - server and not edit the distribution /etc/rc.conf, though ). - - BOOTP Server: - - This configuration file "/etc/dhcpd.conf" example is for - the '/usr/ports/net/isc-dhcp' dhcpd port. - - subnet 192.157.86.0 netmask 255.255.255.192 { - # range if you want to run the core dhcpd service of - # dynamic IP assignment, but it is not used with BOOTP - # workstations - range 192.157.86.32 192.157.86.62; - - # misc configuration. - # - option routers 192.157.86.2; - option domain-name-servers 192.157.86.2; - - server-name "apollo.fubar.com"; - option subnet-mask 255.255.255.192; - option domain-name-servers 192.157.86.2; - option domain-name "fubar.com"; - option broadcast-address 192.157.86.63; - option routers 192.157.86.2; - } - - host test1 { - hardware ethernet 00:a0:c9:d3:38:25; - fixed-address 192.157.86.11; - option root-path "192.157.86.2:/"; - option option-128 "192.157.86.2:/images/swap"; - } - - host test2 { - # hardware ethernet 00:e0:29:1d:16:09; - hardware ethernet 00:10:5a:a8:94:0e; - fixed-address 192.157.86.12; - option root-path "192.157.86.2:/"; - option option-128 "192.157.86.2:/images/swap"; - } - - SWAP. This example includes options to automatically BOOTP configure - NFS swap on each workstation. In order to use this capabilities you - need to NFS-export a swap directory READ+WRITE to the workstations. - - You must then create a swap directory for each workstation you wish to - assign swap to. In this example I created a dummy user 'lander' and - did an NFS export of /images/swap enforcing a UID of 'lander' for - all accesses. - - apollo:/usr/ports/net# ls -la /images/swap - total 491786 - drwxr-xr-x 2 root wheel 512 Dec 28 07:00 . - drwxr-xr-x 8 root wheel 512 Jan 20 10:54 .. - -rw-r--r-- 1 lander wheel 33554432 Dec 23 14:35 swap.192.157.86.11 - -rw-r--r-- 1 lander wheel 335544320 Jan 24 16:55 swap.192.157.86.12 - -rw-r--r-- 1 lander wheel 134217728 Jan 21 17:19 swap.192.157.86.6 - - A swap file is best created with dd: - - # create a 32MB swap file for a BOOTP workstation - dd if=/dev/zero of=swap.IPADDRESS bs=1m count=32 - - It is generally a good idea to give your workstations some swap space, - but not a requirement if they have a lot of memory. - diff --git a/share/examples/diskless/README.TEMPLATING b/share/examples/diskless/README.TEMPLATING deleted file mode 100644 index babf670c1eee..000000000000 --- a/share/examples/diskless/README.TEMPLATING +++ /dev/null @@ -1,286 +0,0 @@ - - TEMPLATING machine configurations - - Matthew Dillon - dillon@backplane.com - - This document describes a general mechanism by which you can template - / and /usr. That is, to keep a 'master template' of / and /usr on a - separate machine which is then used to update the rest of your machines. - - Generally speaking, you can't simply mirror /. You might be able to - get away with mirroring /usr. There are two main problems involved with - templating: - - (1) Avoiding overwriting run-time generated files - - By default, the system maintains a number of files in the root - partition. For example, sendmail will dbm /etc/aliases into - /etc/aliases.db. vipw or chpass or other password related routines - will regenerate the password dbm's /etc/spwd.db, /etc/pwd.db, and - passwd. /etc/namedb/s might contain generated secondaries. And - so forth. - - The templating mechanism must avoid copying over such files. - - (2) Customizing machines. - - Customizing machines is actually considerably simpler. You create - a configuration hierarchy and convert the configuration files that - have to be customized into softlinks that run through a special - softlink in the configuration directory. This will work for every - configuration file except possibly /etc/master.passwd - - For example, /etc/resolv.conf would be turned into a softlink to - /conf/ME/resolv.conf, and /conf/ME itself would be a softlink to - /conf/<HOSTNAME>. The actual resolv.conf configuration file - would reside in /conf/<HOSTNAME>. - - If you have a lot of hosts, some configuration files may be commonly - classified. For example, all your shell machines might have the - same /etc/resolv.conf. The solution is to make - /conf/<HOSTNAME>/resolv.conf a softlink to a common directory, say - /conf/HT.SHELL/resolv.conf. It may sound a little messy, but this - sort of categorization actually makes the sysadmins job much, much - easier. - - The /conf/ directory hierarchy is stored on the template and - distributed to all the machines along with the rest of the root - partition. - - This type of customization is taken from my direct experience - instituting such a system at BEST. At the time, BEST had over 45 - machines managed from a single template. - - RUN-TIME GENERATED OR MODIFIED FILES IN / or /USR - - /etc/aliases.db - /etc/master.passwd - /etc/spwd.db - /etc/pwd.db - /etc/passwd - /etc/namedb/s - /root/.history - /root/.ssh/identity - /root/.ssh/identity.pub - /root/.ssh/random_seed - /root/.ssh/known_hosts - /conf/ME - /kernel* ( note 2 ) - /dev ( note 3 ) - /var ( note 4 ) - /home ( note 4 ) - /lost+found - - /usr/lost+found - /usr/home ( note 4 ) - /usr/crash ( note 5 ) - /usr/obj ( note 5 ) - /usr/ports ( note 5 ) - /usr/src ( note 5 ) - /usr/local/crack ( note 5 ) - /usr/X11R6/lib/X11/xdm/xdm-errors ( note 6 ) - /usr/X11R6/lib/X11/xdm/xdm-pid ( note 6 ) - /usr/local/etc/ssh_host_key ( note 6 ) - /usr/local/etc/ssh_host_key.pub ( note 6 ) - /usr/local/etc/ssh_random_seed ( note 6 ) - - /conf/ME ( note 7 ) - - note 2: You typically want to update kernels manually and *NOT* - template them as a safety measure. This also allows you to run - different kernels on different machines or. - - note 3: /dev must be updated manually. Some devices, such as tty's and - pty's, use the access and/or modify time and/or user/group - operationally and regenerating the devices on the fly would be - bad. - - note 4: /var and /home are usually separately mounted partitions and - thus would not fall under the template, but as a safety measure - the template copier refuse to copy directories named 'home'. - - note 5: These are directories that are as often created directly on - /usr as they are separately-mounted partitions. You typically - do not want to template such directories. - - note 6: Note that you can solve the problem of xdm and sshd creating - files in /usr. With xdm, edit /usr/X11R6/lib/xdm/xdm-config - and change the errorLogFile and pidFile config lines. - - With sshd, add 'HostKey' and 'RandomSeed' directives to specify - /var/db for the location of the host key and run-time sshd - random seed: - - HostKey /var/db/ssh_host_key - RandomSeed /var/db/ssh_random_seed - - note 7: In this example, /conf/ME is the machine customizer and must - be pointed to the /conf/<full-host-name>/ directory, which is - different for each machine. Thus, the /conf/ME softlink - should never be overwritten by the templating copy. - - - TYPICAL CUSTOMIZED CONFIGRATION SOFTLINKS - - The following files typically need to be turned into softlinks - to /conf/ME/<filename>: - - /etc/ccd.conf -> /conf/ME/ccd.conf - /etc/ipfw.conf ... - /etc/fstab - /etc/motd - /etc/resolv.conf - /etc/aliases - /etc/sendmail.cw - /etc/organization - /etc/named.conf - /etc/rc.conf.local - /etc/printcap - /etc/inetd.conf - /etc/login.conf - /etc/gettytab - /etc/ntp.conf - /etc/exports - /root/.k5login -> /conf/ME/root/.k5login - - And, of course, /conf/ME is usually a softlink to the appropriate - /conf/<full-host-name>/. Depending on your system configuration, - there may be other files not listed above that you have to worry about. - - In many cases, /conf/ME/filename is itself a softlink to - "../HT.xxxx/filename", where HT.xxxx is something like HT.STD ... this - added complexity actually makes it easier to manage multiple - classifications of machines. - - DELETION OF FILES - - Any file found on the template destination that does not exist in the - source and is not listed as an exception by the source should be deleted. - However, deletion can be dangerous and cpdup will ask for confirmation - by default. Once you know you aren't going to blow things up, you can - turn this feature off and update your systems automatically from cron. - - By formalizing the delete operation, you can be 100% sure that it is - possible to recreate / and /usr on any machine with only the original - template and a backup of the ( relatively few ) explicitly-excepted - files. The most common mistake a sysop makes is to make a change to a - file in / or /usr on a target machine instead of the template machine. - If the target machine is updated once a night from cron, the sysop - quickly learns not to do this ( because his changes get overwritten - overnight ). With a manual update, these sorts of mistakes can propogate - for weeks or months before they are caught. - - TEMPLATE COPYING AND SAFETY - THE CPDUP PROGRAM - - The 'cpdup' program is a program which efficiently duplicates a directory - tree. The program copies source to destination, duplicating devices, - softlinks, hardlinks, files, modification times, uid, gid, flags, perms, - and so forth. The program incorporates several major features: - - * The program refuses, absolutely, to cross partition boundries. - i.e. if you were copying the template /usr from an NFS mount to - your /usr, and you had a mount point called /usr/home, the - template copying program would *NOT* descend into /usr/home on - the destination. - - This is a safety. - - * The program accesses a file called .cpignore in each directory - it descending into on the source to obtain a list of exceptions - for that directory -- that is, files not to copy or mess with. - - This is a templating function. - - * The program refuses to delete a directory on the destination - being replaced by a softlink or file on the source. - - This is a safety mechanism - - * The program is capable of maintaing MD5 check cache files and - doing an MD5 check between source and destination during the - scan. - - * The program is capable of deleting files/directories on the - destination that do not exist on the source, but asks for - confirmation by default. - - This is a templating and a safety mechanism. - - * The program uses a copy-to-tmp-and-rename methodology allowing - it to be used to update live filesystems. - - This is a templating mechanism. - - * The program, by default, tries to determine if a copy is required - by checking modify times, file size, perms, and other stat - elements. If the elements match, it does not bother to copy - ( unless an MD5 check is being made, in which case it must read - the destination file ). - - You typically run cpdup on the target machine. The target machine - temporarily mounts the template machine's / and /usr via NFS, read-only, - and runs cpdup to update / and /usr. If you use this methodology note - that THERE ARE SECURITY CONSIDERATIONS! See 'SECURITY CONSIDERATIONS WITH - NFS' below. - - Whatever script you use that does the NFS mounts should ensure that the - mount succeeded before continuing with the cpdup. - - You should create .cpignore files in the appropriate directories on the - template machine's / and /usr partitions so as not to overwrite active - files on the target. The most critical .cpignore files should be - protected with 'chflags schg .cpignore'. Specifically, the ones in / - and /etc, but possibly others as well. For example, the .cpignore - hierarchy for protect /root is: - - # /root/.cpignore contains - .history - - # /root/.ssh/.cpignore contains - random_seed - known_hosts - authorized_keys - identity - identity.pub - - WHEN INITIALLY CONVERTING A TARGET MACHINE TO USE TEMPLATING, ALWAYS - MAKE A FULL BACKUP OF THE TARGET MACHINE FIRST! You may accidently delete - files on the target during the conversion due to forgetting to enter - items into appropriate .cpignore files on the source. - - SECURITY CONSIDERATIONS WITH NFS ROOT EXPORT FROM TEMPLATE MACHINE - SECURITY CONSIDERATIONS WITH NFS USR EXPORT FROM TEMPLATE MACHINE - - There are some serious security considerations that must be taken into - account when exporting / and /usr on the template machine. - - * only export read-only - - * the password file ( aka vipw ) may not contain any crypted passwords - at all. You MUST use ssh or kerberos to access the template machine. - - You can get away with giving only root a crypted password, but only - if you disallow network root logins and only allow direct root - logins on the console. - - * The machine's private ssh_host_key usually resides in /usr/local/etc. - You must move this key to /var/db. You can softlink link so no - modification of sshd_config is required. - - * The machine's private ~root/.ssh/identity file is also exposed by - the NFS export, you should move this file to /var/db as well and - put a softlink in ~root/.ssh. - - * DON'T EXPORT /var ! Either that, or don't put the private keys - in /var/db ... put them somewhere else. - - * You may want to redirect the location of the random_seed file, which - can be done by editing ~root/.ssh/sshd_config and - /usr/local/etc/sshd_config so it is not exposed either. - - -Matt - Matthew Dillon - dillon@backplane.com - diff --git a/sys/conf/newvers.sh b/sys/conf/newvers.sh index e3a5dda7d67c..a57167741638 100644 --- a/sys/conf/newvers.sh +++ b/sys/conf/newvers.sh @@ -32,11 +32,11 @@ # SUCH DAMAGE. # # @(#)newvers.sh 8.1 (Berkeley) 4/20/94 -# $Id: newvers.sh,v 1.41.2.6 1999/05/14 14:31:56 jkh Exp $ +# $Id: newvers.sh,v 1.41.2.5 1999/05/08 21:55:41 obrien Exp $ TYPE="FreeBSD" REVISION="3.2" -BRANCH="STABLE" +BRANCH="RELEASE" RELEASE="${REVISION}-${BRANCH}" SNAPDATE="" if [ "X${SNAPDATE}" != "X" ]; then diff --git a/sys/contrib/dev/oltr/COPYRIGHT b/sys/contrib/dev/oltr/COPYRIGHT deleted file mode 100644 index 668a6413c450..000000000000 --- a/sys/contrib/dev/oltr/COPYRIGHT +++ /dev/null @@ -1,62 +0,0 @@ -The oltr driver uses objects and microcode from Olicom's -OC-3300 PowerMACH Works Kit. - -As the Linux driver says.. -================================================================== -* -* This driver uses the Token Ring Low Level Driver (TRlld, -* PowerMach Works) as the lower level driver. The PMW kit is -* (C) Olicom. The executable object may be distributed along -* with this driver for the purpose of linking this driver. -* -================================================================= -The low level driver is combined with a FreeBSD specific driver -supplied in source, which provides all OS dependent functions. - -files from olicom are: - -trlld.o - Olicom low-level driver interface - -trlldmac.o - TMS 380 Microcode for Olicom TMS380 based cards -trlldbm.o - "bullseye" Microcode for Olicom "bullseye" based cards -trlldhm.o - "hawkeye" Microcode for Olicom "hawkeye" based cards - -The file trlld.o is stored in uuencode format as trlld.o.uu -It represents a state machine of some kind that has no OS dependencies -and communicates with the firmware on the cards via a proprietary interface. -All communication with this module is achieved via functions supplied in -the FreeBSD specific driver. - -The other 3 files have been encoded using file2c(1) -and represent only microcode to be loaded into the appropriate board -when found. - -Here is the release notice from Olicom regarding these files: -------------------------------------------------------------------------------- -OC-3300 PowerMach Works and its components are wholly owned products of -Olicom A/S -Nybrovej 114 -2800 Lyngby -Denmark -(45) 45 27 00 00 -and are used and distributed with permission. (#SS022499) -------------------------------------------------------------------------------- - -A supporting email is also included. ----------- Forwarded message ---------- -Date: Wed, 24 Feb 1999 17:07:14 +0100 -From: Starla Scott <sscott@olicom.com> -To: 'Larry Lile' <lile@stdio.com> -Subject: RE: FreeBSD Token-ring driver - -Larry, - -You may freely distribute the driver and/or kit. However, we do request that -you include an acknowledgement of Olicom's copyright and ownership as -related to your driver. - -Thanks, -Starla -Olicom Tech Support ------------------------------------------------------------------------------- - diff --git a/sys/contrib/dev/oltr/i386-elf.trlld.o.uu b/sys/contrib/dev/oltr/i386-elf.trlld.o.uu deleted file mode 100644 index c0aceefd4ffc..000000000000 --- a/sys/contrib/dev/oltr/i386-elf.trlld.o.uu +++ /dev/null @@ -1,1840 +0,0 @@ -begin 644 trlld.o -M?T5,1@$!`0````````````$``P`!```````````````P00$``````#0````` -M`"@`"P`'`````````````````(/L%%>+?"0<5E-5BT0D+"7__P``@\`$B]@E -M__\``%#_5QR+\('C__\``$.!X___``!3_U<<P>`(@\0(9@OP@>;__P``9O?& -M`0!FB70D(`^%>`(``(M$)"PE__\``%#_5QR(1"0G@\0$BT0D+"7__P``@\`" -MB]@E__\``%#_5QR+\('C__\``$.!X___``!3_U<<BU0D*(/$",'@"('B__\` -M`&8+\(M$)"`E__\``('F__\``(/``H/""HOH)?__```[P@^-\0```(M$)"PE -M__\``(/`!&:+\(M$)"`E__\``(/`"HE$)!B+QB7__P``4/]7'(O8B\8E__\` -M`$`E__\``%#_5QS!X`B#Q`AF"]B+Q8'C__\``"7__P``.\,/A:@!``"+1"0L -M)?__``"#P`HE__\``%!7Z/1M``"#Q`B+U8'B__\``#O0#X5]`0``BT0D+"7_ -M_P``4/]7'(A$)"=J8?]7'(M$)#0E__\``(/``B7__P``4/]7'#/2@\0,BE0D -M(SO0#X5!`0``BT0D+"7__P``@\`#)?__``!0_U<<BU0D'(/$!&:#Q0*+Q27_ -M_P``.\(/C"[___]F,_:-7QR)?"00BVPD+('E__\``(M$)"R#Q00E__\``(/` -M"F:)1"0<C4<$B_B+QB7_````4(O%)?__``!0_Q=J8?\3BT0D*"7__P``4/\3 -MBM`SP(K"]]`E_P```%"+1"0P)?__``!0_Q=J8?\3B\4E__\``%#_$XK0,\"* -MPHO6-?X```"#Q"`E__\``('B__\``#O"=7R#Q@)F@?X``7*-BW0D+(M\)!"+ -M1"0@@>;__P``)?\```"#Q@10B\8E__\``%#_5P2+1"0H@>;__P``)?__``!& -MP?@(@>;__P``)?\```!05O]7!#/`@\00BD0D(U"+1"0P)?__``!0_U<$N`$` -M``"#Q`A=6UY?@\04PSO_75M>,\!?@\04PSO_._^!_P````"#[%!7BWPD6%93 -M56:+AW(+``!FJ1``=$0SP&:+1Q:#P`PE__\``%"+AUP+``#_4!R+\#/`9HM' -M%H/`#27__P``4(N'7`L``/]0','@"&8+\('F__\``(/$".LDD#/`9HM'%H/` -M#"7__P``4(N'7`L``/]0((OP@>;__P``@\0$9HN'<@L``&:I$`!FB70D7G1# -M,\!FBT<6@\`*)?__``!0BX=<"P``_U`<B_`SP&:+1Q:#P`LE__\``%"+AUP+ -M``#_4!S!X`AF"_"!YO__``"#Q`CK(S/`9HM'%H/`"B7__P``4(N'7`L``/]0 -M((OP@>;__P``@\0$9HN'<@L``&:I$`!FB70D7'0[:@$SP&:+1Q:#P`PE__\` -M`%"+AUP+``#_4`1J`#/`9HM'%H/`#27__P``4(N'7`L``/]0!(/$$.L?._]J -M`3/`9HM'%H/`#"7__P``4(N'7`L``/]0"(/$"&:+=S2+QH'F__\``,'F""7_ -M_P``P?@(@>8`_P``)?\````+QHOP9HN'<@L``('F__\``&:I$`!T3HO&)?\` -M``!0,\!FBT<6@\`*)?__``!0BX=<"P``_U`$@>;__P``,\#!_@B!YO\```!6 -M9HM'%H/`"R7__P``4(N'7`L``/]0!(/$$.LCD('F__\``#/`5F:+1Q:#P`HE -M__\``%"+AUP+``#_4`B#Q`AJ"HN'7`L``/]0-+Z\____@\0$O1````!FA:]R -M"P``=$4SP&:+1Q:#P`(E__\``%"+AUP+``#_4!R+V#/`9HM'%H/``R7__P`` -M4(N'7`L``/]0','@"&8+V('C__\``(/$".LE._\SP&:+1Q:#P`(E__\``%"+ -MAUP+``#_4""+V('C__\``(/$!(O#@>/__P``P>,()?__``#!^`B!XP#_```E -M_P````O#9HE$-%2#Q@(/C&'___]FBX=R"P``OD0```!FJ1``=$TSP(I$)%Y0 -M,\!FBT<6@\`,)?__``!0BX=<"P``_U`$,\!FBT0D9L'X""7_````4#/`9HM' -M%H/`#27__P``4(N'7`L``/]0!(/$$.LDD#/`9HM$)%Y0,\!FBT<6@\`,)?__ -M``!0BX=<"P``_U`(@\0(9HN'<@L``&:I$`!T5(M$)%PE_P```%`SP&:+1Q:# -MP`HE__\``%"+AUP+``#_4`2+1"1D)?__``#!^`@E_P```%`SP&:+1Q:#P`LE -M__\``%"+AUP+``#_4`2#Q!#K*(/'`(M$)%PE__\``%`SP&:+1Q:#P`HE__\` -M`%"+AUP+``#_4`B#Q`B+1"04B(?<$```BD0D%8B'W1```(I$)!:(A]X0``"* -M1"07B(??$```BT0D&(B'X!```(I$)!F(A^$0``"+1"0\9HF'XA```&:+1"0V -M9JD`0'11BD0D1HB'Y!```(I$)$>(A^40``"+1"1(B(?F$```BD0D28B'YQ`` -M`(I$)$J(A^@0``"*1"1+B(?I$```9HM$)#9FB8>."P``75M>7X/$4,.0,\F( -MC^00``"(C^40``"(C^80``"(C^<0``"(C^@0``"(C^D0``#KPX'_`````('_ -M`````(/L&%>+?"0@9HN'H`L``&:I(``/A(\```!FQT<0``G'1V@`````9B7? -M_V:)AZ`+``"+AY0+``")1Q(SP&B0````9HM'%H/`!R7__P``4(N'7`L``/]0 -M!(/$"%^#Q!C#D&;'1Q``",=':`````!F);__9HF'H`L``(N'D`L``(E'$C/` -M:)````!FBT<6@\`')?__``!0BX=<"P``_U`$@\0(7X/$&,,[_V:+AZ`+``!F -MJ4``=:MFBX>@"P``9JF``'1F9B5__V:)AZ`+``!FBX=R"P``9JD`@'0&C4=8 -MZPJ0BX=D"P``@\!84.A!9P``9L='$``*B4<2,\"Z`````(/$!(E7:&B0```` -M9HM'%H/`!R7__P``4(N'7`L``/]0!(/$"%^#Q!C#9HN'H`L``&:I`(!T;V8E -M_W]FB8>@"P``9HN'F@L``&:I`@!T"S/`9HN'F`L``.L.,\!FBX>8"P``#0`` -M`(!0Z,1F``!FQT<0``;'1V@`````B4<2,\"#Q`1HD````&:+1Q:#P`<E__\` -M`%"+AUP+``#_4`2#Q`A?@\08PV:+AZ`+``!FJ0`!#X3L_O__9B7__C/)9HF' -MH`L``&:+AW(+``!FJ0$`=01FN1``,\"*AWT+``")1"04J0$```!T!&:#R0*+ -M1"04J0(```!T!&:#R01FBX>:"P``9JD$`'4.9H/)0&:I"`!T!&:#R2!FQT<0 -M``W'1V@`````B\&!X?__``#!X0@E__\``,'X"('A`/\``"7_````"\$E__\` -M`(E'$C/`:)````!FBT<6@\`')?__``!0BX=<"P``_U`$@\0(7X/$&,,[_X/L -M"%>+?"009HM'"F8]@`!T8F:+1P)F/4,`=%@SP&:+1PQ0,\!FBT<*4#/`9HM' -M"%!J!&H!:@97Z(-<``"#Q!Q?@\0(PX/&`,=';`````!HB````#/`9HM'%H/` -M!R7__P``4(N'7`L``/]0!(/$"%^#Q`C#BT=HA<!T#<=':`````!7_]"#Q`1F -MBX>@"P``9H7`=-MFBT<"9CU0`'+19HM'$&:%P'6A5^CC_/__@\0$7X/$",.# -MQP`[_X'_`````(/L$%>+?"085E-59HN'<@L``&:I$`!T/&H!,\!FBT<6@\`, -M)?__``!0BX=<"P``_U`$:@`SP&:+1Q:#P`TE__\``%"+AUP+``#_4`2#Q!#K -M((/'`&H!,\!FBT<6@\`,)?__``!0BX=<"P``_U`(@\0(9HN'<@L``&:I$`!T -M/FC@````,\!FBT<6@\`*)?__``!0BX=<"P``_U`$:@4SP&:+1Q:#P`LE__\` -M`%"+AUP+``#_4`2#Q!#K(CO_:.`%```SP&:+1Q:#P`HE__\``%"+AUP+``#_ -M4`B#Q`B^^/___[T0````9H6O<@L``'1%,\!FBT<6@\`")?__``!0BX=<"P`` -M_U`<B]@SP&:+1Q:#P`,E__\``%"+AUP+``#_4!S!X`AF"]B!X___``"#Q`CK -M)3O_,\!FBT<6@\`")?__``!0BX=<"P``_U`@B]B!X___``"#Q`1FB5PT&(/& -M`GR%,\"^"````&:+1"064(M$)!@E__\``%`SP&:+1"0:4(M$)!PE__\``%!J -M`6H$5^AL6@``@\0<75M>7X/$$,.0@^PX5XM\)$!64U5FBX=R"P``9JD0`'0\ -M:(`````SP&:+1Q:#P`HE__\``%"+AUP+``#_4`1J$#/`9HM'%H/`"R7__P`` -M4(N'7`L``/]0!(/$$.L@:(`0```SP&:+1Q:#P`HE__\``%"+AUP+``#_4`B# -MQ`AFBX=R"P``9JD0`'0W,\!FBT<6@\`")?__``!0BX=<"P``_U`<,\!FBT<6 -M@\`#)?__``!0BX=<"P``_U`<@\0(ZQT[_S/`9HM'%H/``B7__P``4(N'7`L` -M`/]0((/$!&:+AW(+``!FJ1``=$0SP&:+1Q:#P`(E__\``%"+AUP+``#_4!R+ -M\#/`9HM'%H/``R7__P``4(N'7`L``/]0','@"&8+\('F__\``(/$".LDD#/` -M9HM'%H/``B7__P``4(N'7`L``/]0((OP@>;__P``@\0$B\:(1"1&9HN'<@L` -M`&:I$`!T1C/`9HM'%H/``B7__P``4(N'7`L``/]0'(OP,\!FBT<6@\`#)?__ -M``!0BX=<"P``_U`<P>`(9@OP@>;__P``@\0(ZR:#QP`SP&:+1Q:#P`(E__\` -M`%"+AUP+``#_4""+\('F__\``(/$!(O&B$0D16:+AYH+``!FJ0$`='MFBX=R -M"P``9JD0`'1%,\!FBT<6@\`")?__``!0BX=<"P``_U`<B_`SP&:+1Q:#P`,E -M__\``%"+AUP+``#_4!S!X`AF"_"!YO__``"#Q`CK)3O_,\!FBT<6@\`")?__ -M``!0BX=<"P``_U`@B_"!YO__``"#Q`2+QHA$)$3&1"1#`3/`,]**1"1&BI>Z -M"P``.\(/A%X#``"+[XV%F@L``(V]MPL``(E$)"R-A;H+``")1"0TB40D*(V% -MF`L``(E$)#"+1"0TNA\```"*""+1BD0D0XORA,!U"(7V#X6.````C02UJ!`` -M`&:+\&:+A7(+``!FJ1``=%"+QB7_````4#/`9HM%%H/`"B7__P``4(N%7`L` -M`/]0!('F__\``#/`P?X(@>;_````5F:+11:#P`LE__\``%"+A5P+``#_4`2# -MQ!#K)8/'`('F__\``#/`5F:+11:#P`HE__\``%"+A5P+``#_4`B#Q`C&1"1# -M`(M$)"C^`+H?````(A>-%%+!X@.-A!6\"P``B40D'&:+A7(+``!FJ1``=$8S -MP&:+11:#P`(E__\``%"+A5P+``#_4!R+V#/`9HM%%H/``R7__P``4(N%7`L` -M`/]0','@"&8+V('C__\``(/$".LF@\<`,\!FBT46@\`")?__``!0BX5<"P`` -M_U`@B]B!X___``"#Q`2+1"0<9HE8"F:+A7(+``!FJ1``=$0SP&:+11:#P`(E -M__\``%"+A5P+``#_4!R+V#/`9HM%%H/``R7__P``4(N%7`L``/]0','@"&8+ -MV('C__\``(/$".LDD#/`9HM%%H/``B7__P``4(N%7`L``/]0((O8@>/__P`` -M@\0$9O?#`/YU"HM$)!S&0`X`ZR"*A7T+``"H!'0*N`(```#K"(/'`+@!```` -MBU0D'(A"#HM$)!R+5"0P9HM`"F:+$B7__P``@>+__P``.\)^#HM$)!S&0`X# -M_X7$$```9O?#`!YU#6;WPP!`=`;_A<@0``!F]\,`$'0&_X7,$```N@,```"+ -M1"0<9B/3B%`/BT0D+&;W``(`=11F]\,`_G0NBT0D'&:+0`IFA<!U(8J5MPL` -M`(M$)!S^PHB5MPL``,=`$`$```#ID0```(/'`#/2BT0D',=`$`````"+1"0P -M9HL0BT0D'&:+2`J!X?__``"+PCO(?P*+P8O(BT0D'(E$)#B%R7Y&C9VW"P`` -MC7`0BT0D.+H?````9HM`""7__P``*\B*`_[`B`.*!R+0C112P>(#C805O`L` -M`(E$)#B+1"0<BT`00(7)B09_PXM$)!QFBU`*9H/J!&:)4`HSP(M4)#2*1"1& -MBA*!XO\````[P@^%SOS__XO]9HN'F@L``&:I`0`/A!$"``"*AYP+```\`G5S -M,]*+1"1$)?\```"*E\,.```[PG16B7PD-(V?PPX``(VWPPX``(''O@X``(H+ -MN!\````BP8M,)#2-%$"*!L'B`O[`B`:-C!'$#@``9L=!!@``BA>*000"PC/2 -MB`>+1"1$)?\```"*$SO"=<!=6UY?@\0XP\9$)$,!,]*+1"1$)?\```"*E\,. -M```[PG3>B^^-A;X.``"-G<,.``")1"0LC446C;W##@``B40D,(H3N!\````B -MPHOPC11VP>("C805Q`X``(E$)"2*1"1#A,!U"(7V#X6*````C8:($```9HOP -M9HN%<@L``&:I$`!T38O&)?\```!0,\!FBT46@\`*)?__``!0BX5<"P``_U`$ -M@>;__P``,\#!_@B!YO\```!69HM%%H/`"R7__P``4(N%7`L``/]0!(/$$.LB -M@>;__P``,\!69HM%%H/`"B7__P``4(N%7`L``/]0"(/$",9$)$,`_@>+1"0P -M9HL`)?__``"#P`(E__\``%"+A5P+``#_4!R#Q`0EB````#V(````=`Z+1"0D -M9L=`!@(`ZSP[_XM$)#!FBP`E__\``(/``B7__P``4(N%7`L``/]0'(/$!(/@ -M1(/X1'0'N`,```#K`C/`BU0D)&:)0@:+1"0LBTPD)(H0BDD$`LHSTH@(BA.+ -M1"1$)?\````[P@^%K?[__UU;7E^#Q#C#,]*X'P```(J/PPX``(J7P`X``"+! -MC01`P>`"C9P'Q`X``#/`BD0D13O"#X0T_O__B^N-G[X.``")?"0PC8?##@`` -MB40D-(VWP`X``(''P`X``#/`BE4%_L**PHA5!3/2BE4$.\)U*&;'108``(ML -M)#"Y'P```/Z%PPX``(M4)#0B"HT,2<'A`HVL#<0.```STHM$)#"*@+X.``#^ -MP(@#BT0D,(J`P`X``/[`B`<SP(I$)$6*%CO"=9E=6UY?@\0XPX/'`%=6BW0D -M#&:+?@J+QX'G__\``,'G""7__P``P?@(@><`_P``)?\````+QXOX@>?__P`` -M9O?'``5T7VH`:@!J`('G__\``%=J`&H#5NA@40``5N@:4```9L=&`D4`:@!6 -MBX9L"P``_U`$9L=&!`,`@\0H7E_#5NCV3P``9L=&`D4`:@!6BX9L"P``_U`$ -M9L=&!`,`@\0,7E_#:@!J`&H`B\<E__\``%!J`&H#5N@`40``@\0<9O?'``AU -MNL:&CQ````=>7\.!_P````"!_P````"#[!0SP%>+?"0<5E/&1QH`QT0D%`$` -M``!FBT<6@\`&)?__``!0BX=<"P``_U`<@\0$BMCVPX!U##/`6UY?@\04PX/' -M`+A_````(L,E_P```%`SP&:+1Q:#P`8E__\``%"+AUP+``#_4`1FBX=R"P`` -M@\0(9JD"``^$F@$``&:I$`!T23/`9HM'%H/`""7__P``4(N'7`L``/]0'(OP -M,\!FBT<6@\`))?__``!0BX=<"P``_U`<P>`(9@OP@>;__P``B70D&(/$".LF -M._\SP&:+1Q:#P`@E__\``%"+AUP+``#_4"`E__\``(E$)!2#Q`2+1"009HE$ -M)!XE__\```T`"```9HE$)!IFBX=R"P``9JD0`'1/,\"*1"0:4#/`9HM'%H/` -M""7__P``4(N'7`L``/]0!#/`9HM$)"+!^`@E_P```%`SP&:+1Q:#P`DE__\` -M`%"+AUP+``#_4`2#Q!#K)H/'`#/`9HM$)!I0,\!FBT<6@\`()?__``!0BX=< -M"P``_U`(@\0(,\!FBT0D'@T``0``9HE$)!IFBX=R"P``9JD0`'1/,\"*1"0: -M4#/`9HM'%H/`""7__P``4(N'7`L``/]0!#/`9HM$)"+!^`@E_P```%`SP&:+ -M1Q:#P`DE__\``%"+AUP+``#_4`2#Q!#K)H/'`#/`9HM$)!I0,\!FBT<6@\`( -M)?__``!0BX=<"P``_U`(@\0(N`\````BPX/X#'=V_R2%D````#O_5^BN\O__ -M@\0$ZV*05^A"]/__:@$SP&:+1Q:#P`<E__\``%"+AUP+``#_4`17Z"+T___' -M1"0D`@```(/$$.LND%?HKO'__X/$!.LBD(M';(7`=!K'1VP`````5__0@\0$ -MZPL[_U?HFOS__X/$!&H@,\!FBT<6@\`')?__``!0BX=<"P``_U`$,\!FBT<6 -M@\`')?__``!0BX=<"P``_U`<@\0,J00```!U(&B$````,\!FBT<6@\`')?__ -M``!0BX=<"P``_U`$@\0(6UZ+1"0,7X/$%,.#["Q7BWPD-%:+="0\4XM<)$15 -MBH=Z"P``/`1U#XN':`L``&:+0!#K#8/&`(N':`L``&:+0!)FB4<8,\!H@``` -M`&:+1Q:#P`@E__\``%"+AUP+``#_4`1J#XN'7`L``/]0-#/`9HM'%H/`""7_ -M_P``4(N'7`L``/]0'(/@9(/$$(/(`8A$)#MFBX=R"P``9JD!`'4+BE0D.X#* -M`HA4)#LSP(I$)#M0,\!FBT<6@\`()?__``!0BX=<"P``_U`$:AZ+AUP+``#_ -M4#1J`#/`9HM'%H/`"27__P``4(N'7`L``/]0!&H>BX=<"P``_U`T9L=$)%`` -MP&:+AW(+``"#Q!AFJ0`$="-FJ0`(=21F@4PD.``(9HM'!F8]"P!T$V:!3"0X -M``SK"H/'`&:!3"0X`!"+ZXU<)#:-0P%05?_6@\0(A<!U"U-5_]:#Q`B%P'0* -MQT0D(`$```#K",=$)"``````BT0D((7`#X3<````Z=\#``"#QP"-;"0VN`$` -M```#Q5!3_]:#Q`B%P'4+55/_UH/$"(7`=`>]`0```.L",^V%[0^$<@(``.FE -M`P``D(M$)#!F_TPD,&:%P`^$6@(``(OKC5PD-K@!`````\-05?_6@\0(A<!U -M"U-5_]:#Q`B%P'0'NP$```#K`C/;A=L/A5X#``"+1"0P9O],)#!FA<!UP.M& -M._]FBT0D+F:%P'2>Z6'___^0:B8SP&:+1Q:#P`@E__\``%"+AUP+``#_4`1F -MQT<"(@!FQT<$```SP(/$"%U;7E^#Q"S#D(O=Z<D!``"0C6PD-K@!`````\50 -M4__6@\0(A<!U"U53_]:#Q`B%P'0'O0$```#K`C/MA>T/A<X"``"+1"0P9O], -M)#!FA<`/A(0!``")="00OA````!FA;=R"P``B^MFBUPD-G1+,\"*PU`SP&:+ -M1Q:#P`(E__\``%"+AUP+``#_4`2!X___```SP,'["('C_P```%-FBT<6@\`# -M)?__``!0BX=<"P``_U`$@\00ZR.0@>/__P``,\!39HM'%H/``B7__P``4(N' -M7`L``/]0"(/$"(M$)#"+W6;_3"0P9H7`#X5O____BW0D$.GA````D(M$)#!F -M_TPD,&:%P`^$S@```(OKC5PD-K@!`````\-05?_6@\0(A<!U"U-5_]:#Q`B% -MP'0'NP$```#K`C/;A=L/A=(!``!FBX=R"P``9JD0`&:+7"0V=$PSP(K#4#/` -M9HM'%H/``B7__P``4(N'7`L``/]0!('C__\``#/`P?L(@>/_````4V:+1Q:# -MP`,E__\``%"+AUP+``#_4`2#Q!#K)#O_@>/__P``,\!39HM'%H/``B7__P`` -M4(N'7`L``/]0"(/$"(M$)#!F_TPD,&:%P`^%//___^DS_O__@\<`C6PD,K@! -M`````\504__6@\0(A<!U"U53_]:#Q`B%P'0'O0$```#K`C/MA>T/A08!``"- -M;"0TN`$````#Q5!3_]:#Q`B%P'4+55/_UH/$"(7`=`F]`0```.L$._\S[87M -M#X72````C6PD,+@!`````\504__6@\0(A<!U"U53_]:#Q`B%P'0)O0$```#K -M!#O_,^V%[0^%G@```+@!````9B-$)#!FB40D+HM$)#`E__\``,'X`6:)1"0P -M9H7`#X0Y_?__BT0D.&:%1"0R#X4:_?__9HM$)#)FB40D*F:+AW(+``!FJ1`` -M=%\SP(I$)"I0,\!FBT<6@\`,)?__``!0BX=<"P``_U`$,\!FBT0D,L'X""7_ -M````4#/`9HM'%H/`#27__P``4(N'7`L``/]0!(/$$.LV@\<`75M>N`$```!? -M@\0LPX/'`#/`9HM$)"I0,\!FBT<6@\`,)?__``!0BX=<"P``_U`(@\0(BT0D -M-&:)1"0J9HN'<@L``&:I$`!T3S/`BD0D*E`SP&:+1Q:#P`HE__\``%"+AUP+ -M``#_4`0SP&:+1"0RP?@()?\```!0,\!FBT<6@\`+)?__``!0BX=<"P``_U`$ -M@\00ZR:#QP`SP&:+1"0J4#/`9HM'%H/`"B7__P``4(N'7`L``/]0"(/$"&:+ -M1"0N9H7`#X0?_?__Z3+\__\[_X/L(%>+1"0LQT0D$`````!6BW0D+%-5QD0D -M+P%FBP`S_V:%P`^$Q`,``(V&F@L``(E$)!2+1"0XC5@$9HM#"&:%P`^$C@,` -M`+@?````BHZ_#@``(L&+5"0<9HE$)"R*1"0O0H3`B50D'`^$P0```(M$)!1F -M]P`0`'0*BT,$N@@```#K!8M#!#/2B!"+1"0L)?__``"-!,4`$@``9HE$)"AF -MBX9R"P``9JD0`'13BT0D*"7_````4#/`9HM&%H/`!"7__P``4(N&7`L``/]0 -M!(M$)#`E__\``,'X""7_````4#/`9HM&%H/`!27__P``4(N&7`L``/]0!(/$ -M$.LG._^+1"0H)?__``!0,\!FBT86@\`$)?__``!0BX9<"P``_U`(@\0(QD0D -M+P#IV0```)!FBX9R"P``9JD0`'0[:@`SP&:+1A:#P`(E__\``%"+AEP+``#_ -M4`1J$#/`9HM&%H/``R7__P``4(N&7`L``/]0!(/$$.LB._]H`!```#/`9HM& -M%H/``B7__P``4(N&7`L``/]0"(/$"(M$)"QFA<!U9V:+AG(+``!FJ1``=#IJ -M`#/`9HM&%H/`!"7__P``4(N&7`L``/]0!&H2,\!FBT86@\`%)?__``!0BX9< -M"P``_U`$@\00ZR&0:``2```SP&:+1A:#P`0E__\``%"+AEP+``#_4`B#Q`@S -MR6:+CG(+``#WP2((``!T!XMK!.L$._^+*XO%P>@0]\$0````9HE$)"AT5(M$ -M)"@E_P```%`SP&:+1A:#P`(E__\``%"+AEP+``#_4`2+1"0P)?__``#!^`@E -M_P```%`SP&:+1A:#P`,E__\``%"+AEP+``#_4`2#Q!#K*(/'`(M$)"@E__\` -M`%`SP&:+1A:#P`(E__\``%"+AEP+``#_4`B#Q`AFBX9R"P``9JD0`&:);"0H -M=%&+1"0H)?\```!0,\!FBT86@\`")?__``!0BX9<"P``_U`$@>7__P``,\#! -M_0B!Y?\```!59HM&%H/``R7__P``4(N&7`L``/]0!(/$$.LG._^+1"0H)?__ -M``!0,\!FBT86@\`")?__``!0BX9<"P``_U`(@\0(9HM#"&:)1"0H9HN&<@L` -M`&:I$`!T48M$)"@E_P```%`SP&:+1A:#P`(E__\``%"+AEP+``#_4`2+1"0P -M)?__``#!^`@E_P```%`SP&:+1A:#P`,E__\``%"+AEP+``#_4`2#Q!#K)8M$ -M)"@E__\``%`SP&:+1A:#P`(E__\``%"+AEP+``#_4`B#Q`AF_XZ\#@``BH:_ -M#@``_L"(AK\.``"#PPR+1"0X1V:+`"7__P``._@/C$W\__]FBX::"P``9JD! -M`'0)9K\`<.L'@\<`9K\`T&:+AG(+``!FJ1``=%>+QR7_````4#/`9HM&%H/` -M`B7__P``4(N&7`L``/]0!('G__\``#/`P?\(@>?_````5V:+1A:#P`,E__\` -M`%"+AEP+``#_4`2#Q!!=6UZ+1"007X/$(,.!Y___```SP%=FBT86@\`")?__ -M``!0BX9<"P``_U`(@\0(Z]"#[!2X'P```%>+?"0<5E.*E[D+``"+7"0H(L(# -MP(T$0`4H$0``9HOP9HN'<@L``&:I$`!T3XO&)?\```!0,\!FBT<6@\`$)?__ -M``!0BX=<"P``_U`$@>;__P``,\#!_@B!YO\```!69HM'%H/`!27__P``4(N' -M7`L``/]0!(/$$.LD._^!YO__```SP%9FBT<6@\`$)?__``!0BX=<"P``_U`( -M@\0(_H>Y"P``,\!FBX=R"P``B40D%*D""```=`2+,^L#BW,$B\;!Z!!FB40D -M'(M$)!2I$````'14BT0D'"7_````4#/`9HM'%H/``B7__P``4(N'7`L``/]0 -M!(M$)"0E__\``,'X""7_````4#/`9HM'%H/``R7__P``4(N'7`L``/]0!(/$ -M$.LH@\<`BT0D'"7__P``4#/`9HM'%H/``B7__P``4(N'7`L``/]0"(/$"&:+ -MAW(+``!FJ1``=$Z+QB7_````4#/`9HM'%H/``B7__P``4(N'7`L``/]0!(O& -M)?__``#!^`@E_P```%`SP&:+1Q:#P`,E__\``%"+AUP+``#_4`2#Q!#K))"+ -MQB7__P``4#/`9HM'%H/``B7__P``4(N'7`L``/]0"(/$"&:+AW(+``!FJ1`` -M9HMS"'10B\8E_P```%`SP&:+1Q:#P`(E__\``%"+AUP+``#_4`2+QB7__P`` -MP?@()?\```!0,\!FBT<6@\`#)?__``!0BX=<"P``_U`$@\00ZR:#QP"+QB7_ -M_P``4#/`9HM'%H/``B7__P``4(N'7`L``/]0"(/$"&:+1P)F/5``#X6*```` -M:@$SP&:+1Q:#P`<E__\``%"+AUP+``#_4`1FB[>@"P``@\0(B\9F#0"`9H7V -M9HF'H`L``'5.9HM'`F8]4`!R1,:'NPL```!FBT<09H7`="O'1VP`````:(@` -M```SP&:+1Q:#P`<E__\``%"+AUP+``#_4`2#Q`CK"SO_5^@:X?__@\0$9L=' -M`F``6UY?@\04PSO_._^!_P````"#[!!7BWPD&%939HN'<@L``&:I$`!T.6H! -M,\!FBT<6@\`,)?__``!0BX=<"P``_U`$:@`SP&:+1Q:#P`TE__\``%"+AUP+ -M``#_4`2#Q!#K'6H!,\!FBT<6@\`,)?__``!0BX=<"P``_U`(@\0(9HN'<@L` -M`&:I$`!T.FH`,\!FBT<6@\`*)?__``!0BX=<"P``_U`$:@HSP&:+1Q:#P`LE -M__\``%"+AUP+``#_4`2#Q!#K(9!H``H``#/`9HM'%H/`"B7__P``4(N'7`L` -M`/]0"(/$"&:+AW(+``!FJ1``=#]J`#/`9HM'%H/``B7__P``4(N'7`L``/]0 -M!&B?````,\!FBT<6@\`#)?__``!0BX=<"P``_U`$@\00ZR.#QP!H`)\``#/` -M9HM'%H/``B7__P``4(N'7`L``/]0"(/$"&:+AW(+``!FJ1``=#MJ`#/`9HM' -M%H/``B7__P``4(N'7`L``/]0!&H`,\!FBT<6@\`#)?__``!0BX=<"P``_U`$ -M@\00ZQ\[_VH`,\!FBT<6@\`")?__``!0BX=<"P``_U`(@\0(9HN'<@L``&:I -M$`!T.FH`,\!FBT<6@\`")?__``!0BX=<"P``_U`$:@`SP&:+1Q:#P`,E__\` -M`%"+AUP+``#_4`2#Q!#K'I!J`#/`9HM'%H/``B7__P``4(N'7`L``/]0"(/$ -M"&:+AW(+``!FJ1``=#IJ`#/`9HM'%H/``B7__P``4(N'7`L``/]0!&H`,\!F -MBT<6@\`#)?__``!0BX=<"P``_U`$@\00ZQZ0:@`SP&:+1Q:#P`(E__\``%"+ -MAUP+``#_4`B#Q`AFBX=R"P``9JD0`&:+=QAT3HO&)?\```!0,\!FBT<6@\`" -M)?__``!0BX=<"P``_U`$B\8E__\``,'X""7_````4#/`9HM'%H/``R7__P`` -M4(N'7`L``/]0!(/$$.LDD(O&)?__``!0,\!FBT<6@\`")?__``!0BX=<"P`` -M_U`(@\0(9HN'<@L``&:I$`!FBW<8=%"+QB7_````4#/`9HM'%H/``B7__P`` -M4(N'7`L``/]0!('F__\``#/`P?X(@>;_````5F:+1Q:#P`,E__\``%"+AUP+ -M``#_4`2#Q!#K)8/'`('F__\``#/`5F:+1Q:#P`(E__\``%"+AUP+``#_4`B# -MQ`AFBX=R"P``9JD0`'0Y:@4SP&:+1Q:#P`(E__\``%"+AUP+``#_4`1J!3/` -M9HM'%H/``R7__P``4(N'7`L``/]0!(/$$.L@:`4%```SP&:+1Q:#P`(E__\` -M`%"+AUP+``#_4`B#Q`@STF:+EW(+``#WP@"```!T"XUW$(U?".L/@\8`BX=D -M"P``C7`0C5@(B\;!Z!#WPA````!FB40D&'12BT0D&"7_````4#/`9HM'%H/` -M`B7__P``4(N'7`L``/]0!(M$)"`E__\``,'X""7_````4#/`9HM'%H/``R7_ -M_P``4(N'7`L``/]0!(/$$.LFD(M$)!@E__\``%`SP&:+1Q:#P`(E__\``%"+ -MAUP+``#_4`B#Q`AFBX=R"P``9JD0`'1.B\8E_P```%`SP&:+1Q:#P`(E__\` -M`%"+AUP+``#_4`2+QB7__P``P?@()?\```!0,\!FBT<6@\`#)?__``!0BX=< -M"P``_U`$@\00ZR20B\8E__\``%`SP&:+1Q:#P`(E__\``%"+AUP+``#_4`B# -MQ`B+P\'H$&:+\&:+AW(+``!FJ1``=%"+QB7_````4#/`9HM'%H/``B7__P`` -M4(N'7`L``/]0!(O&)?__``#!^`@E_P```%`SP&:+1Q:#P`,E__\``%"+AUP+ -M``#_4`2#Q!#K)H/'`(O&)?__``!0,\!FBT<6@\`")?__``!0BX=<"P``_U`( -M@\0(9HN'<@L``&:I$`!FB_-T38O&)?\```!0,\!FBT<6@\`")?__``!0BX=< -M"P``_U`$@>;__P``,\#!_@B!YO\```!69HM'%H/``R7__P``4(N'7`L``/]0 -M!(/$$.LB@>;__P``,\!69HM'%H/``B7__P``4(N'7`L``/]0"(/$"&:+AW(+ -M``!FJ1``=$5H@````#/`9HM'%H/`!B7__P``4(N'7`L``/]0!&B0````,\!F -MBT<6@\`')?__``!0BX=<"P``_U`$@\006UY?@\00PY!H@)```#/`9HM'%H/` -M!B7__P``4(N'7`L``/]0"(/$"%M>7X/$$,.0._^!_P````"#[`Q7BWPD%%93 -M9HN'<@L``&:I$`!T13/`9HM'%H/`#"7__P``4(N'7`L``/]0'(OP,\!FBT<6 -M@\`-)?__``!0BX=<"P``_U`<P>`(9@OP@>;__P``@\0(ZR4[_S/`9HM'%H/` -M#"7__P``4(N'7`L``/]0((OP@>;__P``@\0$9HN'<@L``&:I$`!T1#/`9HM' -M%H/`"B7__P``4(N'7`L``/]0'(O8,\!FBT<6@\`+)?__``!0BX=<"P``_U`< -MP>`(9@O8@>/__P``@\0(ZR20,\!FBT<6@\`*)?__``!0BX=<"P``_U`@B]B! -MX___``"#Q`1FBX=R"P``9JD0`&:)7"06=#MJ`3/`9HM'%H/`#"7__P``4(N' -M7`L``/]0!&H`,\!FBT<6@\`-)?__``!0BX=<"P``_U`$@\00ZQ\[_VH!,\!F -MBT<6@\`,)?__``!0BX=<"P``_U`(@\0(9HN'<@L``&:I$`!T/FCN````,\!F -MBT<6@\`*)?__``!0BX=<"P``_U`$:@4SP&:+1Q:#P`LE__\``%"+AUP+``#_ -M4`2#Q!#K(CO_:.X%```SP&:+1Q:#P`HE__\``%"+AUP+``#_4`B#Q`AJ"HN' -M7`L``/]0-&:+AW(+``"#Q`1FJ1``=#DSP&:+1Q90BX=<"P``_U`<B]@SP&:+ -M1Q9`)?__``!0BX=<"P``_U`<P>`(9@O8@>/__P``@\0(ZQLSP&:+1Q90BX=< -M"P``_U`@B]B!X___``"#Q`1FBX=R"P``9JD0`'10B\8E_P```%`SP&:+1Q:# -MP`PE__\``%"+AUP+``#_4`2!YO__```SP,'^"('F_P```%9FBT<6@\`-)?__ -M``!0BX=<"P``_U`$@\00ZR6#QP"!YO__```SP%9FBT<6@\`,)?__``!0BX=< -M"P``_U`(@\0(9HN'<@L``&:I$`!T63/`BD0D%E`SP&:+1Q:#P`HE__\``%"+ -MAUP+``#_4`0SP&:+1"0>P?@()?\```!0,\!FBT<6@\`+)?__``!0BX=<"P`` -M_U`$@\00B\-;7B7__P``7X/$#,.0,\!FBT0D%E`SP&:+1Q:#P`HE__\``%"+ -MAUP+``#_4`B#Q`CKS(/'`('_`````('_`````(/L#%>+?"045E-59HN'H`L` -M`&:%P'0^9HM'$&:%P'0LQT=L`````&B(````,\!FBT<6@\`')?__``!0BX=< -M"P``_U`$@\0(ZPR#QP!7Z,[6__^#Q`1FBX>T"P``9H7`#X3/````,^VX'P`` -M`"*'M@L``(OP9HN'M`L``&:%P'XIC9^T"P``C01VP>`#C80'O`L``%!7Z(;R -M__]&@\0(@^8?10^_`SOH?-UJ`3/`9HM'%H/`!R7__P``4(N'7`L``/]0!&;' -M1P)@`&:+MZ`+``"#Q`B+QF8-`(!FA?9FB8>@"P``=55FBT<"9CU0`')+QH>[ -M"P```&:+1Q!FA<!T*<=';`````!HB````#/`9HM'%H/`!R7__P``4(N'7`L` -M`/]0!(/$".L25^CRU?__@\0$ZP>09L='`E``5^A`T?__9HNWC@L``(/$!(O& -M@>;__P``P>8(:@`E__\``('F`/\``,'X""7_````"\:+\#/`@>;__P``BH>< -M"P``4&:+AW(+``!FJ0$`=`JX$````.L(@\<`N`0````E__\``%"+QB7__P`` -M4&H`:@!7Z)\T``"#Q!R*AWT+``"H`W1J5^CL^O__9HF'D!```(/$!&:+MZ`+ -M``"+QF8-``%FA?9FB8>@"P``=4%FBT<"9CU0`'(WQH>["P```&:+1Q!FA<!T -M+\=';`````!HB````#/`9HM'%H/`!R7__P``4(N'7`L``/]0!(/$"%U;7E^# -MQ`S#5^CJU/__@\0$75M>7X/$#,.#QP"!_P````"!_P````!0BU0D"(M$)`QF -MBXJ@"P``9@O!9H7)9HF"H`L``'5!9HM"`F8]4`!R-\:"NPL```!FBT(09H7` -M="O'0FP`````:(@````SP&:+0A:#P`<E__\``%"+@EP+``#_4`2#Q`B#Q`3# -M4NAFU/__@\0$@\0$PX/'`('_`````('_`````(/L%+C_````5XM\)!Q39B-' -M"HK8,\"*PSV`````#X2!````@_@"="1J`&H`:@`-``8``"7__P``4&H!:@)7 -MZ#TS``"#Q!Q;7X/$%,-J`&H`:@`SP&:+1PK!^`@-``<``"7__P``4&H`:@)7 -MZ!`S``!H_P```#/`9HM'%H/`!R7__P``4(N'7`L``/]0!&;'1P)%`&;'1P0% -M`(/$)%M?@\04PSO_9HM'"F:I`(!T"L:'G`L```+K")#&AYP+```!9HN'<@L` -M`&:I`@AT!#/`ZP6X`$```(E$)`AFBX>:"P``9JD!`'0*N`"```#K!8/'`#/` -M9L='$``$QT=H``````M$)`B+R"7__P``P?@(@>'__P``P>$()?\```"!X0#_ -M```+P8E'$C/`:)````!FBT<6@\`')?__``!0BX=<"P``_U`$@\0(,\#'1VP` -M````9L='!`$`9L='`D0`:(@```!FBT<6@\`')?__``!0BX=<"P``_U`$@\0( -M6U^#Q!3#D(/L#%>+?"045E-FBX=R"P``9JD!`'0)9L='.```ZP>09L='.``0 -M9HN'F@L``&:I!`!U(F:+1SAF#0!`9HN7F@L``&;WP@@`9HE'.'0(9@T`(&:) -M1SAFB[>8"P``N0`:``!FB4](BH>("P``9HE/2KD9````B$<ZBH>)"P``B$<[ -MBH>*"P``B$<\BH>+"P``B$<]BH>,"P``B$<^BH>-"P``B$<_BX>0"P``B4=` -MBX>4"P``B4=$B\8E__\``('F__\``,'X"(A/4L'F""7_````@>8`_P``B$]3 -M"\8SR6:)1TR^`@```&:)3TYFB4]0H`````"(1QR@`0```(A''8J&`````(A$ -M-QR*A@$```"(1#<=BH8"````B$0W'HJ&`P```(/&!(/^$HA$-QM\T&:+AW(+ -M``!FJ0"`#X28````C7<<B]:+QL'J",'H&('B`/\```O"B];!X@C!YAB!X@`` -M_P`+P@O&C7<XB4=49L='$``#9L='!#P`9L='`D,`B]:+QL'H&+L`````P>H( -MB5]H@>(`_P``"\*+UL'B",'F&('B``#_``O""\:)1Q(SP&B0````9HM'%H/` -M!R7__P``4(N'7`L``/]0!(/$"%M>7X/$#,.#Q@"+AV0+``"^'`````/PB]:+ -MQL'J",'H&('B`/\```O"B];!X@C!YAB!X@``_P`+P@O&B4=4BX=D"P``C7`X -MZ5/___\[_XUT)@"#[!@SP%>+?"0@5E-59HM'`H/X0P^$@00```^/6`0``(/X -M)'1O#X\M`0``@_@B#X2(````#X^>````@_@A#X6=!P``,\!FBT<6@\`&)?__ -M``!0BX=<"P``_U`<BMBX<````(/$!"+#@_AP#X1D`@``5^@J,```9L='!``` -M9L='`B0`N.@#``"#Q`1=6UY?@\08PSO_9HM'!&;_1P1F/0(`=@QFQT<$``!F -MQT<")0!=6UZXZ`,``%^#Q!C#D&:+1P1F_T<$9CT"`';D9L='!```9L='`B,` -MZ]:#^",/A?\&``!FBT<$9O]'!&8]'@`/AXL````SP&:+1Q:#P`8E__\``%"+ -MAUP+``#_4!R*V+@P````@\0$(L.#^#`/A+4```"X?P```"+#@_A`#X6D`0`` -M9L='`C``:@!J`&H`:@!J`&H!5^B8+@``@\0<N.@#``!=6UY?@\08PX/X00^$ -MYP````^/V0(``(/X)0^%<`8``&:+1P1F_T<$9CT>`'8N9L='`A``:@!J`&H` -M:``"``!J`&H!5^A'+@``@\0<N.@#``!=6UY?@\08PX/'`#/`9HM'%H/`!B7_ -M_P``4(N'7`L``/]0'(K8N#````"#Q`0BPX/X,'4[9L='`A``:@!J`&H`N!\` -M```BPPT``0``)?__``!0:@!J`5?HXRT``(/$'+CH`P``75M>7X/$&,.#QP"X -M?P```"+#@_A`#X6T````9L='`C``BY=@"P``4HN'7`L``/]0/(/$!+CH`P`` -M75M>7X/$&,,[_S/`9HM'%H/`!B7__P``4(N'7`L``/]0'(/$!(K8]L,0=#)J -M`&H`:@"X#P```"+##0`!```E__\``%!J`6H"5^A4+0``@\0<N.@#``!=6UY? -M@\08P_;#8'1#9HM'!&;_1P1F/60`=B5J`&H`:@!H``(``&H!:@)7Z!PM``"# -MQ!RXZ`,``%U;7E^#Q!C#75M>N&0```!?@\08PX/&`&:+1Q!FA<!U/HM'$CW! -MXM2+=30SP&:+1P@]__\``'4G,\!FBT<*/='7``!U&C/`9HM'##W%V0``=0TS -MP&:+1PX]P]0``'1%:@!J`&H`9HN'<@L``&:I`(!T"K@`!```ZPB#QP"X``,` -M`"7__P``4&H!:@)7Z(,L``"#Q!RXZ`,``%U;7E^#Q!C#@\<`:B`SP&:+1Q:# -MP`<E__\``%"+AUP+``#_4`1HA````#/`9HM'%H/`!R7__P``4(N'7`L``/]0 -M!&;'1RX`"F;'1S`*`&:+AW(+``"#Q!!FJ0"`=`6-1R[K"8N'9`L``(/`+F;' -M1Q``"V;'1P0"`&;'1P)"`(O(P>@8B]'!Z@B!X@#_```+PHO1P>((P>$8@>(` -M`/\`"\*Z``````O!B5=HB4<2,\!HD````&:+1Q:#P`<E__\``%"+AUP+``#_ -M4`2#Q`BXZ`,``%U;7E^#Q!C#D(/X0@^%EP,``&:+1P1F_T\$9H7`#X54_/__ -M:@!J`&H`:``$``!J`6H"5^AQ*P``@\0<Z3?\__^0@_A0#X30`0``#X_!`0`` -M@_A%='P/CTX#``"#^$0/A44#``!FBT<$9O]/!&:%P`^%`OS__V:+AW(+``!F -MJ1``#X3'````,\!FBT<6@\`()?__``!0BX=<"P``_U`<B_`SP&:+1Q:#P`DE -M__\``%"+AUP+``#_4!S!X`AF"_"!YO__``")="0@@\0(Z:$```"09HM'!&;_ -M3P1FA<`/A97[__]FBT<&9CT+`'4\,\!FBT<6@\`()?__``!0BX=<"P``_U`< -M@\@()?\```!0,\!FBT<6@\`()?__``!0BX=<"P``_U`$@\0,5^A+ZO__9L=' -M!```9L='`D$`@\0$N&0```!=6UY?@\08PX/'`#/`9HM'%H/`""7__P``4(N' -M7`L``/]0("7__P``B40D'(/$!&:+AW(+``!FJ1``=$,SP&:+1Q:#P`8E__\` -M`%"+AUP+``#_4!R+Z#/`9HM'%H/`!R7__P``4(N'7`L``/]0','@"&8+Z('E -M__\``(/$".LC,\!FBT<6@\`&)?__``!0BX=<"P``_U`@B^B!Y?__``"#Q`2! -MY?__``"+1"08527__P``4&H`:``%``!J`6H"5^BC*0``@\0<Z6GZ__^#QP"# -M^&`/A8\!``!FBX>@"P``9H7`#X0_`0``BH>["P``BLC^P3P"B(^["P``#XXG -M`0``9HN'<@L``&:I$`!T2C/`9HM'%H/`""7__P``4(N'7`L``/]0'(OP,\!F -MBT<6@\`))?__``!0BX=<"P``_U`<P>`(9@OP@>;__P``B70D((/$".LG@\<` -M,\!FBT<6@\`()?__``!0BX=<"P``_U`@)?__``")1"0<@\0$9HN'<@L``&:I -M$`!T0S/`9HM'%H/`!B7__P``4(N'7`L``/]0'(OH,\!FBT<6@\`')?__``!0 -MBX=<"P``_U`<P>`(9@OH@>7__P``@\0(ZR,SP&:+1Q:#P`8E__\``%"+AUP+ -M``#_4""+Z('E__\``(/$!('E__\``(M$)!A5)?__``!0,\!FBX>@"P``4&H! -M:@%J!U?H4B@``(/$'+CH`P``75M>7X/$&,,[_XI'&X3`#X0#^?__BD<:BM#^ -MPCP"B%<:#X[Q^/__:@!J`&H`:@-J`6H'5^@1*```@\0<N.@#``!=6UY?@\08 -MPY!=6UXSP%^#Q!C#._^-="8`@^P85XM\)"!6BW0D*%-5B\8E__\``%#_5QPS -MTB7^````BA4`````"\(E^P```(K8,\"*PU"+QB7__P``4/]7!+@!````@\0, -M(L.B`````(O&)?__``!0_U<<,](E_@```(H5``````O")?T```"*V#/`BL-0 -MB\8E__\``%#_5P2X`0```(/$#"+#H@````"+QB7__P``4/]7'#/2)?X```"* -M%0`````+PB7^````BM@SP(K#4(O&)?__``!0_U<$N`$```"#Q`PBPZ(````` -MB\8E__\``%#_5QPSTB7^````BA4`````"\(E[P```(K8,\"*PU"+QB7__P`` -M4/]7!+@!````@\0,(L.B`````(O&)?__``!0_U<<B\:#Q`0E__\``%#_5QR+ -MQH/$!"7__P``4/]7'(O&@\0$)?__``!0_U<<B\:#Q`0E__\``%#_5QPSTB7^ -M````BA4`````"\*#R!"*V#/`BL-0B\8E__\``%#_5P2X`0```(/$#"+#H@`` -M``"+QB7__P``4/]7'(O&@\0$)?__``!0_U<<B\:#Q`0E__\``%#_5QR+QH/$ -M!"7__P``4/]7'(O&@\0$)?__``!0_U<<,](E_@```(H5``````O"@\@"BM@S -MP(K#4(O&)?__``!0_U<$N`$```"#Q`PBPZ(`````B\8E__\``%#_5QR+QH/$ -M!"7__P``4/]7'(O&@\0$)?__``!0_U<<B\:#Q`0E__\``%#_5QR+7"0X@\0$ -M@>/_````QT0D'`$```#!XPB!RX````!FA=L/A'<!``"+1"0<A<!T(8O&B^LE -M__\``%#_5QPSTB7^````BA4`````"\*#R`'K(8O&B^LE__\``%#_5QPSTB7^ -M````BA4`````"\(E_@```(K8,\"*PU"+QB7__P``4/]7!+@!````@\0,(L.B -M`````(O&)?__``!0_U<<,](E_@```(H5``````O")?T```"*V#/`BL-0B\8E -M__\``%#_5P2X`0```(/$#"+#H@````"+QB7__P``4/]7'(O&@\0$)?__``!0 -M_U<<B\:#Q`0E__\``%#_5QR+QH/$!"7__P``4/]7'(O&@\0$)?__``!0_U<< -M,](E_@```(H5``````O"@\@"BM@SP(K#4(O&)?__``!0_U<$N`$```"#Q`PB -MPZ(`````B\8E__\``%#_5QR+QH/$!"7__P``4/]7'(O&@\0$)?__``!0_U<< -MB\:#Q`0E__\``%#_5QR+Q8'E__\``"4`@```@\0$C5PM`(E$)!QFA=L/A8G^ -M__]=6UY?@\08PSO_._^!_P````"#[!17BWPD'%:+="0D4U6+QB7__P``4/]7 -M'(A$)"<E_P```(/(("7_````4(O&)?__``!0_U<$Q@4``````(M4)#RX/P`` -M`"+"#8`````E_P```%"+QB7__P``4%?HOOO__XM$)$R#Q!B%P(U0_XE4)#0/ -MA$P!```S[8EL)!B+QB7__P``4/]7'#/2)?X```"*%0`````+PB7]````BM@S -MP(K#4(O&)?__``!0_U<$N`$```"#Q`PBPZ(`````B\8E__\``%#_5QR+QH/$ -M!"7__P``4/]7'(O&@\0$)?__``!0_U<<B\:#Q`0E__\``%#_5QR+QH/$!"7_ -M_P``4/]7'#/2)?X```"*%0`````+PH/(`HK8,\"*PU"+QB7__P``4/]7!+@! -M````@\0,(L.B`````(O&)?__``!0_U<<B\:#Q`0E__\``%#_5QR+QH/$!"7_ -M_P``4/]7'(O&@\0$)?__``!0_U<<B\:#Q`0E__\``('E__\``%#_5QP#[8/@ -M`3/;@\0$BMB%VW0$9H/-`8M,)!A!B4PD&(/Y$`^,V_[__XM$)#AFB2B-2`*+ -M1"0TB4PD.(7`C5#_B50D-`^%M/[__XO&)?__``!0_U<<,](E_@```(H5```` -M``O")>\```"*V#/`BL-0B\8E__\``%#_5P2X`0```(/$#"+#H@````"+QB7_ -M_P``4/]7'#/2)?X```"*%0`````+PB7[````BM@SP(K#4(O&)?__``!0_U<$ -MN`$```"#Q`PBPX'F__\``*(`````,\"*1"0C4%;_5P2#Q`A=6UY?@\04PX/L -M#%>+?"045HMT)!R+QB7__P``4/]7'(O&@\0$)?__``!0_U<<B\:#Q`0E__\` -M`%#_5QR#Q`2!YO__``!6_U<<@\0$7E^#Q`S#._^-="8`@^P(5U93BUPD&&8S -M_X/#`HO/@\,"@\,"9HMS^HO&@>;__P``P>8()?__``#!^`B!Y@#_```E_P`` -M``O&B_!FBT/Z@>;__P``9@/^9@O(9HMS_(O&@>;__P``P>8()?__``#!^`B! -MY@#_```E_P````O&B_!FBT/\@>;__P``9@/^9@O(9HMS_HO&@>;__P``P>8( -M)?__``#!^`B!Y@#_```E_P````O&B_!FBT/^@>;__P``9@/^9@O(@>?__P`` -M9HLSB\:!YO__``#!Y@@E__\``,'X"('F`/\``"7_````"\:+\('F__\``#O^ -M=`DSP%M>7X/$",,STHO!9HL36R7__P``7@O"7X/$",.#QP"#["17BWPD+%93 -M58ML)$"+1"0\)?__``!0_U<<B$0D-X/$!(M$)#PE__\``(/`#&:)1"0JB]@E -M__\``%#_5QR+\('C__\``$.!X___``!3_U<<P>`(@\0(9@OPBT0D/('F__\` -M`&:)="0P)?__``"#P`IFB40D+(O8)?__``!0_U<<B_"!X___``!#@>/__P`` -M4_]7','@"(/$"&8+\&H`@>;__P``9HET)#)FBW0D+HO&)?__``!0_U<$:@"! -MYO__``!&@>;__P``5O]7!(MT)#R#Q!"+QFH`)?__``!0_U<$:@"!YO__``!& -M@>;__P``5O]7!(M$)$R#Q!`E__\``#/V@\`"C5\<9HO0BT0D/(EL)!`E__\` -M`(E\)!2+^HUH`XO')?__``!0_Q.+Q27__P``4/\3B$0T((/$"$:#_@A\WV:+ -M="0JBWPD%(M$)#"+;"00)?\```!0B\8E__\``%#_5P2+1"0X@>;__P``)?__ -M``!&P?@(@>;__P``)?\```!05O]7!(MT)#R#Q!`SP(I$)"Y0B\8E__\``%#_ -M5P0SP('F__\``&:+1"0V1L'X"('F__\``"7_````4%;_5P0SP(/$$(I$)#-0 -MBT0D0"7__P``4/]7!(U$)"!0Z`W]__^#Q`R%P'0^B\5%BU0D&(@0B\5%BE0D -M&8@0B\5%BE0D&H@0B\6*5"0;18@018M4)!R(5?^*5"0=B%4`75M>7X/$),.# -MQP"X!@```(O]O@4```"%P'3EB\9.Q@<`1X7`=?5=6UY?@\0DPY"-="8`@^P< -M,\E7BWPD+%9358M$)#1FBV@0BT0D-,9'`03&1S`!9L='$B``9HE/%H'E_/\` -M`&:);Q!FB4\4BT`4@^#PB4<8A<!T#F;'1QP`(,9''F#K##O_9L=''```QD<> -M(,9''P"-1"04B]U0:@1J/('C__\``(/#$8M4)#R!X___``"-=R)34NAF^?__ -MC40D*%#H#/S__X/$&(7`=#5&C5PD%$-&0T9#1D-#1HI#^XA&^XI#_(A&_(I# -M_8A&_8I#_HA&_HI#_XA&_XH#B`;K'(/'`+@&````NP4```"%P'0+B\-+Q@8` -M1H7`=?6+Q27__P``@\`0)?__``!0BT0D-/]0'(/$!*F`````=`;&1RP0ZP3& -M1RP$B@^`^0IU)<9'(01=6UXSP%^#Q!S#@\8`QD<?`<9'(00SP%U;7E^#Q!S# -M._^-1"0F@>7__P``4(M$)#1J`6H&@\41@>7__P``55#HC?C__S/`@\049HM$ -M)":I``$``'0<J0`"``!U#HM$)#1FBT`$9JD$`'4'N`$```#K`C/`A<!UEL9' -M'P#&1R'_BD<>#`*(1QZ+1"0T9HM`!&:I!`!U$%U;7K@"````7X/$',.#QP!= -M6UXSP%^#Q!S#._^#[`Q7BWPD((U$)`2+5"044(M$)"!J!"7_````4(M$)"0E -M__\``%!2Z//W__^-1"084.B9^O__@\08A<!T-D>-3"0$04=!1T%'04%'BD'[ -MB$?[BD'\B$?\BD']B$?]BD'^B$?^BD'_B$?_B@&(!U^#Q`S#D+@&````N04` -M``"%P'3LB\%)Q@<`1X7`=?5?@\0,PSO_@?\`````@?\`````@^P(5S/_5HMT -M)!135<9&&P!J"%;HIR0``(/$"*D`"```#X2L````O1````"+QT<]Z`,``'XB -M:@!J`&H`:@%J`6H&5NA(&P``N`$```"#Q!Q=6UY?@\0(PV:%KG(+``!T0S/` -M9HM&%H/`""7__P``4(N&7`L``/]0'(O8,\!FBT86@\`))?__``!0BX9<"P`` -M_U`<P>`(9@O8@>/__P``@\0(ZR,SP&:+1A:#P`@E__\``%"+AEP+``#_4""+ -MV('C__\``(/$!/?#``@```^%6?___UU;7C/`7X/$",.#QP"#[`A7BWPD$%9F -MBX=R"P``9JD0`'1&,\!FBT<6@\`&)?__``!0BX=<"P``_U`<B_`SP&:+1Q:# -MP`<E__\``%"+AUP+``#_4!S!X`AF"_"+_H'G__\``(/$".LDD#/`9HM'%H/` -M!B7__P``4(N'7`L``/]0((OX@>?__P``@\0$]\>`````7K@`````#Y7`7X/$ -M",.0@?\`````@?\`````@^P(5XM\)!!69HN'<@L``&:I$`!T1C/`9HM'%H/` -M""7__P``4(N'7`L``/]0'(OP,\!FBT<6@\`))?__``!0BX=<"P``_U`<P>`( -M9@OP@>;__P``@\0(ZR:#QP`SP&:+1Q:#P`@E__\``%"+AUP+``#_4""+\('F -M__\``(/$!(O&@^#W9HOP9HN'<@L``&:I$`!T4(O&)?\```!0,\!FBT<6@\`( -M)?__``!0BX=<"P``_U`$@>;__P``,\#!_@B!YO\```!69HM'%H/`"27__P`` -M4(N'7`L``/]0!(/$$.LE@\<`@>;__P``,\!69HM'%H/`""7__P``4(N'7`L` -M`/]0"(/$"&:+AW(+``!FJ1``=$4SP&:+1Q:#P`8E__\``%"+AUP+``#_4!R+ -M\#/`9HM'%H/`!R7__P``4(N'7`L``/]0','@"&8+\(O^@>?__P``@\0(ZR,S -MP&:+1Q:#P`8E__\``%"+AUP+``#_4""+^('G__\``(/$!/?'@````%ZX```` -M``^5P%^#Q`C#D(/L"%>+?"005F:+AW(+``!FJ1``=$8SP&:+1Q:#P`@E__\` -M`%"+AUP+``#_4!R+\#/`9HM'%H/`"27__P``4(N'7`L``/]0','@"&8+\('F -M__\``(/$".LF@\<`,\!FBT<6@\`()?__``!0BX=<"P``_U`@B_"!YO__``"# -MQ`2+QH/("&:+\&:+AW(+``!FJ1``=%2+QB7_````4#/`9HM'%H/`""7__P`` -M4(N'7`L``/]0!('F__\``#/`P?X(@>;_````5F:+1Q:#P`DE__\``%"+AUP+ -M``#_4`2#Q!!>7X/$",.#QP"!YO__```SP%9FBT<6@\`()?__``!0BX=<"P`` -M_U`(@\0(7E^#Q`C#@^P,5XM\)!16BD<;A,`/A9@```!FBX=R"P``9JD0`'1' -M,\!FBT<6@\`()?__``!0BX=<"P``_U`<B_`SP&:+1Q:#P`DE__\``%"+AUP+ -M``#_4!S!X`AF"_"!YO__``")="04@\0(ZR0SP&:+1Q:#P`@E__\``%"+AUP+ -M``#_4"`E__\``(E$)!"#Q`2+1"0,)0`+```]``,``'4<N`$```"(1QM>7X/$ -M#,,[_[@!````7E^#Q`S#D&:+AW(+``!FJ1``=$<SP&:+1Q:#P`8E__\``%"+ -MAUP+``#_4!R+\#/`9HM'%H/`!R7__P``4(N'7`L``/]0','@"&8+\(O^@>?_ -M_P``@\0(ZR4[_S/`9HM'%H/`!B7__P``4(N'7`L``/]0((OX@>?__P``@\0$ -M]\>`````#X5Q____7C/`7X/$#,.0@?\`````@?\`````@^P85XM\)"!64U5F -MBX=R"P``9JD0`'1$,\!FBT<6@\`()?__``!0BX=<"P``_U`<B_`SP&:+1Q:# -MP`DE__\``%"+AUP+``#_4!S!X`AF"_"!YO__``"#Q`CK))`SP&:+1Q:#P`@E -M__\``%"+AUP+``#_4""+\('F__\``(/$!+@``P``9B/&/0`#```/A6P#``!F -MBX=R"P``B]Z!X_?_``"!RP`(``!FJ1``=$LSP(K#4#/`9HM'%H/`""7__P`` -M4(N'7`L``/]0!('C__\``#/`P?L(@>/_````4V:+1Q:#P`DE__\``%"+AUP+ -M``#_4`2#Q!#K(Y"!X___```SP%-FBT<6@\`()?__``!0BX=<"P``_U`(@\0( -M9HN'<@L``&:I$`!T13/`9HM'%H/`#B7__P``4(N'7`L``/]0'(OH,\!FBT<6 -M@\`/)?__``!0BX=<"P``_U`<P>`(9@OH@>7__P``@\0(ZR4[_S/`9HM'%H/` -M#B7__P``4(N'7`L``/]0((OH@>7__P``@\0$9HEL)"9FA>T/A$\!``!FBX=R -M"P``9JD0`'1&,\!FBT<6@\`&)?__``!0BX=<"P``_U`<B^@SP&:+1Q:#P`<E -M__\``%"+AUP+``#_4!S!X`AF"^B!Y?__``"#Q`CK)H/'`#/`9HM'%H/`!B7_ -M_P``4(N'7`L``/]0((OH@>7__P``@\0$9HN'<@L``&:I$`!FB6PD)'1#,\!F -MBT<6@\`$)?__``!0BX=<"P``_U`<B^@SP&:+1Q:#P`4E__\``%"+AUP+``#_ -M4!S!X`AF"^B!Y?__``"#Q`CK(S/`9HM'%H/`!"7__P``4(N'7`L``/]0((OH -M@>7__P``@\0$@>7__P``BT0D)"7__P``P>`0"\5F]\8`!(E$)!AT(C/`BU0D -M&&:+1"0F4#/`4F:+1Q90BX=<"P``_U`H@\0,ZR`SP(M,)!AFBT0D)E`SP%%F -MBT<64(N'7`L``/]0$(/$#%?HGO?__X/$!(7`=`LSP%U;7E^#Q!C#D&:+AW(+ -M``!FJ1``=$,SP&:+1Q:#P`@E__\``%"+AUP+``#_4!R+\#/`9HM'%H/`"27_ -M_P``4(N'7`L``/]0','@"&8+\('F__\``(/$".LC,\!FBT<6@\`()?__``!0 -MBX=<"P``_U`@B_"!YO__``"#Q`2+QH/("&:+\&:+AW(+``!FJ1``=%"+QB7_ -M````4#/`9HM'%H/`""7__P``4(N'7`L``/]0!('F__\``#/`P?X(@>;_```` -M5F:+1Q:#P`DE__\``%"+AUP+``#_4`2#Q!#K)8/'`('F__\``#/`5F:+1Q:# -MP`@E__\``%"+AUP+``#_4`B#Q`A7Z#S!__^#Q`2#R`%=6UY?@\08PSO_@?\` -M````@?\`````@^P(5XM\)!!69HN'H`L``&:%P`^$[@(``#/`9HN'/@L``(/` -M!`T```"`4#/`9HN'<`L``(/`%"7__P``4(N'7`L``/]0#&:+AZ`+``"#Q`AF -MJ0(`=!YFQX>B"P```@!7Z<``"^`0```(/$!.DJ`@``._]FBX>@"P``9JD$ -M`'039L>'H@L```0`O@(```#I"`(``&:+AZ`+``!FJ0@`=!]FQX>B"P``"`!7 -MZ%`U``"^`P```(/$!.G?`0``@\8`9HN'H`L``&:I(`!T'V;'AZ(+```@`%?H -MU#8``+X%````@\0$Z;,!``"#Q@!FBX>@"P``9JE``'0?9L>'H@L``$``5^CX -M-@``O@8```"#Q`3IAP$``(/&`&:+AZ`+``!FJ8``=$=FQX>B"P``@`!J$C/` -M9HN'<`L``(/`&"7__P``4(N'7`L``/]0#(/$"+X'````9HN'H`L``&8-`0!F -MB8>@"P``Z3(!```[_V:+AZ`+``!FJ0`!=!]FQX>B"P````%7Z'@X``"^"``` -M`(/$!.D'`0``@\8`9HN'H`L``&:I$`!T,V;'AZ(+```0`&H(,\!FBX=P"P`` -M@\`8)?__``!0BX=<"P``_U`,@\0(O@0```#IQ````&:+AZ`+``!FJ0!`=#-F -MQX>B"P```$!J"#/`9HN'<`L``(/`&"7__P``4(N'7`L``/]0#(/$"+X.```` -MZ80```!FBX>@"P``9JD!`'0O9L>'H@L```$`:@@SP&:+AW`+``"#P!@E__\` -M`%"+AUP+``#_4`R#Q`@S]NM*._]J`VH`,\!FBX>@"P``4&H%:@!J!E?HD@\` -M`(/$'#/`9L>'H@L```$`:@AFBX=P"P``@\`8)?__``!0BX=<"P``_U`,@\0( -M,_8SP&:+ASX+``!0,\!FBX=P"P``@\`4)?__``!0BX=<"P``_U`,5C/`9HN' -M<`L``(/`&"7__P``4(N'7`L``/]0##/`,\EFBX>B"P``B(^["P``]]!F(X>@ -M"P``@\009HF'H`L``(B/3`L``%Y?@\0(PX/'`(/L"#/`BTPD#&:+00*#^$%T -M=H/X0G1]@_A##X2`````@_A$#X2#````@_A%#X2&````@_A)````@_A0 -M=`6#^&!U/F;'00(S`&:+D:`+``!F@\H09HN!H@L``&:)D:`+``!FA<!U&F:+ -M00)F/3``<A#&@;L+````4>AP_/__@\0$@\0(PY!FQT$",0"#Q`C#._]FQT$" -M,@"#Q`C#._]FQT$",P"#Q`C#._]FQT$"-`"#Q`C#._]FQT$"-0"#Q`C#._]F -MQT$"-@"#Q`C#._^#[!@SP%>+?"0@4V:+1P*#^$0/A(P````/C]("``"#^#8/ -MA.$!```/CY\"``"#^#1T<@^/6`(``(/X(0^%LP0``&:+1P1F_T<$9CT*``^& -MH00``#/`9HN'<`L``(/`,B7__P``4(N'7`L``/]0((/(#R7__P``4%>+AVP+ -M``#_4#1FQT<"$`!J`&H`:@!H``(``&H`:@%7Z(0-``"#Q"CI4`0``#/`9HN' -M<`L``(/`,B7__P``4(N'7`L``/]0((/$!(O09O?"`@`/A?$```"*A[L+``"* -MR/[!/`.(C[L+```/C@T$``!FQT<"$`!7Z.T-``"+AV`+``!0BX=<"P``_U`\ -M@\0(,\!J!&H`9HM'`E!J!6H`:@97Z`,-```SP&:+ASX+``!0,\!FBX=P"P`` -M@\`4)?__``!0BX=<"P``_U`,,\!FBX=`"P``4#/`9HN'<`L``(/`%"7__P`` -M4(N'7`L``/]0#(/$+&H/5XN';`L``/]0-&H`,\!FBX=P"P``@\`()?__``!0 -MBX=<"P``_U`,@\005^A$#0``BY=@"P``4HN'7`L``/]0/,>'4`L```````"# -MQ`CI-@,``#O_@>+__P``@\H!@>+__P``4E>+AVP+``#_4#1F_T<",\EFB4\$ -MB8]0"P``5XN';`L``/]0+&;'1P0``&;_1P*#Q`SI[@(``#O_9HM'!&;_1P1F -M/0H`#X;:`@``,\!FBX=P"P``@\`R)?__``!0BX=<"P``_U`@@\@!)?__``!0 -M5XN';`L``/]0-,>'4`L```````!FQT<"$`!J`&H`:@!H``(``&H`:@%7Z+,+ -M``"#Q"A7Z&H,``"+CV`+``!1BX=<"P``_U`\@\0(Z68"```[_X/X-0^%6P(` -M`&:+1P1F_T<$9CT!``^&20(``%>+AVP+``#_4"QFQT<"-@!FQT<$``"#Q`3I -M*P(``(/'`(/X0G0/#X\=`@``@_A!#X44`@``9HM'!&;_1P3I!P(``(/'`(/X -M4`^$,P$``'\U@_A%#X7P`0``9HM'!&;_1P1F/04`#X;>`0``5XN';`L``/]0 -M+&;'1P)&`(/$!.G&`0``._^#^&`/A;L!``!FBX=R"P``BI=,"P``_L)FJ8`` -MB)=,"P``#X34````9HN'M`L``&:%P`^$Q````(J'3@L``*@!#X2V````:@$S -MP&:+AW`+``"#P"XE__\``%"+AUP+``#_4`0SP&:+AW`+``"#P!HE__\``%"+ -MAUP+``#_4"!J`"4`#P``B]@SP&:+AW`+``"#P"XE__\``%"+AUP+``#_4`2# -MQ!1F@_L!=E%FQT<"0P#_A]@0``!FBX>@"P``9@T0`&:)AZ`+``!FBX>B"P`` -M9H7`#X7K````9HM'`F8],``/@MT```#&A[L+````5^C\]___@\0$Z<@```!F -MBX>@"P``9H7`=$2*A[L+``"*T/["/!Z(E[L+``!^,&H`,\!FBX>B"P``4#/` -M9HN'H`L``%!J`6H!:@=7Z+()``"XZ`,``(/$'%M?@\08PS/`,]**A\$.``"* -ME\(.```[PG0&_H=-"P``BX=$"P``J0$```"-4`&)ET0+``!T2&@4`P``,\!F -MBX=P"P``@\`4)?__``!0BX=<"P``_U`,BX=$"P``P>@!4#/`9HN'<`L``(/` -M&"7__P``4(N'7`L``/]0#(/$$%NXZ`,``%^#Q!C#D(/L#%>+?"04:@]7BX=L -M"P``_U`TBT0D((/$"(7`=#EJ`#/`9HN'<`L``(/`""7__P``4(N'7`L``/]0 -M#(/$"%?HFPD``(N78`L``%*+AUP+``#_4#R#Q`C'AU`+````````7X/$#,.0 -M._^!_P````"#[#17BWPD/%9356:+1P)F/2$`=7)H``,`@#/`9HN'<`L``(/` -M%"7__P``4(N'7`L``/]0#&H%C40D(%`SP&:+AW`+``"#P!@E__\``%"+AUP+ -M``#_4#"+1"0L9HF'/`L``&:+1"0N9HF'/@L``(M$)#!FB8=`"P``BT0D.&:) -MAT(+``"#Q!0SP&:+AT`+```-````@%`SP&:+AW`+``"#P!0E__\``%"+AUP+ -M``#_4`PSP&:+AW`+``"#P!@E__\``%"+AUP+``#_4"2+\+C_````9B/&@\0, -M2(/X!G=O_R2%Q````#O_,\!FBX=P"P``@\`8)?__``!0BX=<"P``_U`D@\0$ -MB]"#^@@/A)L```!FQT<"$`!J`"7__P``P>H04('B__\``%)H``$``&H`:@%7 -MZ'@'``"#Q!SK$8/'`(/X1G4)5^@E.```@\0$,\!FBX=`"P``4#/`9HN'<`L` -M`(/`%"7__P``4(N'7`L``/]0#('F__\``#/`@<X`@```@>;__P``5F:+AW`+ -M``"#P!@E__\``%"+AUP+``#_4`B#Q!!=6UY?@\0TPS/`9HM'`H/X(70I@_@V -M=81FQT<",`!7Z*@'``"+EV`+``!2BX=<"P``_U`\@\0(Z6[___]FQT<",`!J -M`&H`:@!J`&H`:@%7Z+@&``"#Q!SI3O___S/`9HN'<`L``(/`&"7__P``4(N' -M7`L``/]0),'H$&:)1"1$,\!FBT<"@\0$@_@R=#N#^$(/A((```"#^%!T"8/X -M8`^%,`,``(M$)$!FJ0"`#X0B`P``9JD`"`^$'`(``,:'GPL``&3I+P(``(M$ -M)$!FJ0"`=#AFBX>@"P``9@T0`&:)AZ`+``!FBX>B"P``9H7`=1IFBT<"9CTP -M`'(0QH>["P```%?H!?3__X/$!&;'1P(S`.F5_O__@\<`BT0D0&:I`(`/A"H! -M``!FJ0`(=`S&AY\+``!DZR*#QP"+1"1`9JD``70*N!````#K"(/'`+@$```` -MB(>?"P``BT0D0&:I``)T"\:'G`L```+K"3O_QH><"P```6;'1P)0`,>'1`L` -M``````"+AR@+``"-CR@+``")AS`+```STHF'+`L``(J'M@L``(B'MPL``(N? -M*`L``&:)4P2+`8M;*#O8=?-FBX>T"P``9H7`=$\SV[@?````(H>V"P``B^AF -MBX>T"P``9H7`?C2)="00C8>T"P``B_"-1&T`P>`#C80'O`L``%!7Z#@T``!% -M@\0(@^4?0P^_!CO8?-R+="005^B?)@``:@`SP(J'G`L``%`SP(J'GPL``%`S -MP&:+AXX+``!0:@!J`%?HQP0``(/$(.E=_?__@\8`9L='`D,`N`\```!F(T0D -M0(/X#74SBH>>"P``B(>?"P``BH>>"P``A,!U46H`:@!J`&@`"```:@!J`E?H -M?`0``(/$'.LW@\8`BH>="P``B(>?"P``:@!J`&H`N/\```!F(T0D3`T`!P`` -M)?__``!0:@!J`E?H0P0``(/$'&;'1P0``.G3_/__D(M$)$!FJ0`!=`JX$``` -M`.L(@\<`N`0```"(AY\+``"+1"1`9JD``G0+QH><"P```NL).__&AYP+```! -M:@`SP(J'G`L``%`SP(J'GPL``%`SP&:+AXX+``!0:@!J`%?HT0,``(/$'.EG -M_/__D#/`9HM'`H/X,W0Y@_A#="*#^%!T!8/X8'5V:@!J`&H`:``(``!J`&H# -M5^B9`P``@\0<9L='`D0`5^A*`@``@\0$ZP>09L='`C0`9HN'H`L``&8-`$!F -MB8>@"P``9HN'H@L``&:%P`^%^OO__V:+1P)F/3``#X+L^___QH>["P```%?H -M0?'__X/$!.G7^___D&H`B\8E__\``%`SP&:+1P)0:@5J`&H&5^@;`P``@\0< -MZ;'[__^#QP`SP&:+AW`+``"#P!@E__\``%"+AUP+``#_4"1J`&H`P>@0:@"+ -MV"7__P``4&H`:@-7Z-H"``!FBT<"@\0@9CU0``^"9_O__V;WPPL/=`YFQT<" -M0P#I5?O__X/&`,:'CQ````?I1OO__\:'3`L```#I.OO__X'_`````('_```` -M`(/L##/`5XM\)!164V:+ASX+```-````@%`SP&:+AW`+``"#P!0E__\``%"+ -MAUP+``#_4`PSP&:+AW`+``"#P!@E__\``%"+AUP+``#_4"2+\#/`9HN'<`L` -M`(/`&"7__P``4(N'7`L``/]0)#/2@\009HN7H@L``(O.@^%_N`$```#3X(O8 -M)?__```[PG0?:@$SP&:+PE"+PR7__P``4&H%:@!J!E?HY0$``(/$'&;'AZ(+ -M`````&:+1P)F/3$`=5-FQT<",`!7Z(,"``"+EV`+``!2BX=<"P``_U`\@\0( -M6UY?@\0,PY"+QH/@?X/X!W4)5^CH)P``@\0$@^9_@_X.=`E7Z(?O__^#Q`1; -M7E^#Q`S#D(O&P>@0J0`@``!UR&H"@>/__P``P>X0@>;__P``5E-J!6H`:@97 -MZ%$!``"#Q!Q;7E^#Q`S#@\<`C70F`(/L%#/2,\E7BWPD'%9358J7P0X``(J' -MM@L``(B/N0L``(B'MPL``#/`BH?"#@``B(^Z"P``.\(/A(D```"+[XV%8`L` -M`(VUP@X``(E$)!R-A<(.``"-O<$.``")1"08C9V\#@``BI7"#@``N1\````B -MRFH!C0Q)P>$"C80-Q`X``(E$)!B+"(M$)"!1BP!0BX5<"P``_U!$BT0D)(/$ -M#(J5P@X``/["B!`STHM$)!1F#[9`!&8#`V:)`S/`B@:*%SO"=:&+_6:+E[P. -M``"*A\(.``!F@_H@B(?##@``="0E_P```%`SP(J'P0X``%`SP&:+PE!J`FH! -M:@97Z$````"#Q!QFQX>\#@``(``SR8B/O@X``(B/OPX``(B/P`X``(B/P0X` -M`(B/PPX``(B/P@X``%U;7E^#Q!3#._^-="8`@^P05XM$)!Q6BW0D'&:)1"0( -MBT0D)#/_B$0D"F:+AI@+``!FB40D#(M$)"AFB40D$(M$)"QFB40D$HM$)#!F -MB40D%(M$)#1FB40D%HM$)"2$P'0NQH:<"P```&:+1@)FQT8",`!F/4``N``` -M```/E\!J`(OX5HN&;`L``/]0!(/$"(J&G`L``(A$)`N-1"0(4(N68`L``%*+ -MAEP+``#_4#B#Q`B%_W0)5N@2````@\0$7E^#Q!##D#O_@?\`````@^P4,\`S -MTE>+?"0<5E-5BI>X"P``BH>V"P``.\(/A(@```"+[XV%7`L``(VUM@L``(E$ -M)""-A6`+``")1"0<C86V"P``C;VX"P``B40D&(V=M`L``(J5M@L``+D?```` -M(LIJ`8T,2<'A`XV$#;P+``"+2!2+1"0@46H!:@"+`%"+1"0TBP#_4$B+1"0L -M@\04BI6V"P``_L*($#/29O\+,\"*!HH7.\)UK(O]9HN'M`L``&:%P'0K,\"* -MA[H+``!0,\"*A[<+``!0,\!FBX>T"P``4&H#:@%J!E?H8?[__X/$'#/)9HF/ -MM`L``(B/M@L``(B/MPL``(B/N`L``%?H_?S__X/$!%U;7E^#Q!3#._]75HMT -M)`RX'P```(M,)!`BAL$.``"-!$#!X`*-O`;$#@``BT0D%(D'BD0D&,9'!0"( -M1PB*AL$.``#^P(B&P0X``%%6BX9L"P``_U`@B$<$@\0(7E_#@\<`._^!_P`` -M``#'!?P#``````#_@^P,5[^`````5E/'1"04`````%6+]X'F@("`@#/^B];! -MZ@\#_S/Z]\:`````=`:!]P3!';>+3"08O@$```#3YKL``0``*]Z!^P`!```/ -MC:,```"+PXL,G0`````KQHO7,]%#B12%`````('[_0```'U=B\.+#)T````` -M*\:+US/1B12%`````(O7B\.#PP0KQHTLA0````"+!)WT____,]")E00```"+ -MUS,4G?C___^)E0@```"+UXL,G?S___\ST8'[_0```(F5#````'RC@?L``0`` -M?1^+PXL,G0`````KQHO7,]%#B12%`````('[``$``'SABU0D&$*)5"08@_H( -M#XP,____75M>7X/$#,,[_XUT)@!75E.+1"0858MT)!B+7"04@_X0BS@/C)(` -M``#WPP,```!T)(O',]+!Z`B*$X'G_P```$XSUT,S!)4`````]\,#````B_AU -MW(O&P?@"A<"-:/]T5X/#!#-[_(O'@>?_````P>@(,P2]`````(OXP>@(@>?_ -M````,P2]`````(OXP>@(@>?_````,P2]`````(OXP>@(@>?_````,P2]```` -M`(OXB\5-A<!UJ8/F`XO&3H7`="*+QS/2P>@(BA.!Y_\```!#,]<S!)4````` -MB_B+QDZ%P'7>BT0D'(DX75M>7\.#QP"!_P````"!_P````!0BT0D%,<$)``` -M``!7OP$```!6C7#_4U6+;"0@A<!T4XM4)!R+7"08C40D$(U*`8/B'XE,)!R- -M%%)0P>(#A?:-G!.\"P``=`@SP&:+0PCK`HO%*\=0BPL#^5?HL?[__S/`@\0, -M9HM#"#/_*^B+QDZ%P'6M75M>BT0D!#TX^R*$N``````/E<!?@\0$PXUT)@!7 -M5E.+1"04BTPD$(LXBD`/J`$/A(<```"*1PBH@'0-NQ\```"*5PXBVNL#D#/; -MBT0D%(U3%6:+0`HE__\``#O"=5V^^O___S/`,]**A#&("P``BE0W"#O"=4)& -M?.HSP(U\'PZ^!@```(H')>\````]Y````'4I,\"*1P$E[P```#WD````=1B* -M1P(\`W41BT<#/0`$D`=T$.L%._^#Q@8SP%M>7\.#QP!;7K@!````7\.#QP"! -M_P````"!_P````!7BWPD#%:+="0,9HM'"&8]-0!S,HJ&?0L``"3\B(9]"P`` -M:``!``!6BX9L"P``_U`<:@!J`&H`:@-J`&H%5N@M^O__@\0D,\"+%XI"`27` -M````@_A`=5E75NCB_O__@\0(A<!T,HJ&?0L``"3\B(9]"P``:``!``!6BX9L -M"P``_U`<:@!J`&H`:@%J`&H%5NC<^?__@\0DBH9]"P``J`%U"XI'#Z@#=03& -M1PX!7E_#D(J&?0L``*@"=?+K[(UT)@"#[!@SP#/25XM\)"!64U6*E\,.``"* -MA\(.```[P@^$@@```(E\)""+QP7"#@``B40D)(ML)""-,(UX`8U8^HJ5P@X` -M`+D?````(LJ-#$G!X0*-C`W$#@``9@^V001F`P-FB0.+1"0DBI7"#@``_L*( -M$(I!"(3`=1TSP&:+0090BPE1BX5@"P``4(N%7`L``/]01(/$##/`,]**!HH7 -M.\)UG8M\)"`SP#/2BH>V"P``BI>W"P``.\(/A!H!``")?"00C8=@"P``B40D -M((V'MPL``(E$)!R-AW(+``")1"08B\>-G[8+``"-N'T+``"-L+0+``"+5"00 -MN1\```"*@K8+```BR(M$)!B-#$G!X0-F]P"``(VL"KP+``!T4(I%#H3`=4F+ -M31`SP%%FBT4*4#/`BH*V"P``4%+HL_S__X/$$(7`=!R+1"00_X#($```BA?V -MP@1T!\9%#@+K!9#&10X!9HM5"F:#Z@1FB54*BD40B@L"P8@#9HL&9BM%$&:) -M!HH'J`-T#E6+5"044NBP_?__@\0(,\"*10Y0BTT448M%$%`SP&:+10I0BT0D -M,(L0BT0D(%*+@%P+``#_4$B+5"0P@\04,\"*$HH#@>+_````.\(/A1S___]= -M6UY?@\08PY"+1"0(BU0D!(7`C4C_=`N+P4G&`@!"A<!U]<.0C70F`&:+3"0$ -MB\&!X?__``#!X0@E__\``,'X"('A`/\``"7_````"\$E__\``,.0C70F`%<S -MP&:+1"0,4(M$)`S_4!R+^#/`9HM$)!!`)?__``!0BT0D$/]0','@"&8+^(O' -M)?__``"#Q`A?PX/'`(UT)@`SP(I$)`Q0,\!FBT0D#%"+1"0,_U`$,\!FBT0D -M%,'X""7_````4#/`9HM$)!1`)?__``!0BT0D%/]0!(/$$,.0BTPD!(O1B\'! -MZ@C!Z!B!X@#_```+PHO1P>((P>$8@>(``/\`"\(+P<.#QP"-="8`5XM\)`A6 -M9HN'<@L``&:I$`!T53/`,])FBT<69HM4)!`#PB7__P``4(N'7`L``/]0'(OP -M,\!FBT<6,])FBU0D%(U$$`$E__\``%"+AUP+``#_4!S!X`AF"_"+QB7__P`` -M@\0(7E_#._\SP#/29HM'%F:+5"00`\(E__\``%"+AUP+``#_4"`E__\``(/$ -M!%Y?PX/'`('_`````('_`````%>+?"0(9HN'<@L``&:I$`!T6C/`,])FBU0D -M#(I$)!!0,\!FBT<6`\(E__\``%"+AUP+``#_4`0SP#/29HM$)!C!^`AFBU0D -M%"7_````4#/`9HM'%HU$`@$E__\``%"+AUP+``#_4`2#Q!!?PS/`,])FBT0D -M$%`SP&:+1Q9FBU0D$`/")?__``!0BX=<"P``_U`(@\0(7\.0._^!_P````!7 -MBWPD"&C_````,\!FBT<6@\`')?__``!0BX=<"P``_U`$BT0D%(/$"(7`=%XS -MP&:+1P:#^`)T6(/X`W5.:/X````SP&:+AW`+``"#P!TE__\``%"+AUP+``#_ -M4`1H@````#/`9HN'<`L``(/`'R7__P``4(N'7`L``/]0!&HRBX=<"P``_U`T -M@\047\.#QP!J!S/`9HN'<`L``(/``B7__P``4(N'7`L``/]0!&B`````,\!F -MBX=P"P``@\`#)?__``!0BX=<"P``_U`$:C*+AUP+``#_4#2#Q!1?PX/'`(M4 -M)`0SP&:+0A90BY)<"P``4NCIC?__@\0(PY"-="8`4%>+?"0,5^BTD/__,\"# -MQ`2+EY00``"*1U@#PHN7H!```(F'E!```#/`BX^<$```BD=:`\&+CZP0``") -MAYP0```SP(I'6P/"BY>H$```B8>@$```,\"*1UX#PHN7L!```(F'J!```#/` -MBD=?`\&+C[P0``")AZP0```SP(I'8`/"BY>X$```B8>P$```,\"*1V(#PHN7 -MP!```(F'N!```#/`BD=D`\&)A[P0```SP(I'90/"B8?`$```BH=^"P``A,!T -M(<:'?@L```"-AY00``!0BY=@"P``4HN'7`L``/]00(/$"%^#Q`3#._^-="8` -M9HM,)`B+5"0$B\&!X?__``#!X0@E__\``,'X"('A`/\``"7_````"\%FB4(0 -MBT0D#(E"$HM$)!")0F@SP&B0````9HM"%H/`!R7__P``4(N"7`L``/]0!(/$ -M",.-="8`BU0D!&:+0A!FA<!T*\=";`````!HB````#/`9HM"%H/`!R7__P`` -M4(N"7`L``/]0!(/$",.#QP!2Z-*3__^#Q`3#._^!_P````"!_P````!0BU0D -M"(M";(7`=`W'0FP`````4O_0@\0$@\0$PX/'`(M$)`R+5"0(0%!2_U0D#(/$ -M"(7`=16+3"0,BT0D"%%0_U0D#(/$"(7`=`FX`0```,.#QP`SP,.0._^!_P`` -M``!7BWPD"#/`,\EFBT<6B4]H9HF/H`L``(/`"(E/;"7__P``4(N'7`L``/]0 -M'(/(""7_````4#/`9HM'%H/`""7__P``4(N'7`L``/]0!&:+AW(+``"#Q`QF -MJ0(`=#PSP&:+1Q:#P`DE__\``%"+AUP+``#_4!R#R`$E_P```%`SP&:+1Q:# -MP`DE__\``%"+AUP+``#_4`2#Q`Q7Z,&Q__]FQT<"00!FQT<$``"#Q`1?PXM4 -M)`B+3"0$4E'H0?S__XM$)`QFQT`"(0"#Q`C#@\<`4(M$)`A75E.-6!Q5BVPD -M'&8S_S/VB\4E__\``%#_$\'X!('G__\``,'G!(/$!`OX1H/^!'S?OOS___^+ -M3"0@B\>+T27__P``@>+__P``.\)T+HO'@>?__P``P?\$)?__``#!X`P+QT:+ -M^'S3O@0````SP%U;7E^#Q`3#D.L%._^#Q@1=6UZX`0```%^#Q`3#4S/`9HM$ -M)`Q0BT0D#/]0'#/2)?X```"*%0`````+PC/2BE0D%`O"BM@SP(K#4#/`9HM$ -M)!10BT0D%/]0!+@!````(L.#Q`RB`````%O#._]3,\!FBT0D#%"+1"0,_U`< -M,](E_@```(H5``````O",]**5"04]]*!XO\````CPHK8,\"*PU`SP&:+1"04 -M4(M$)!3_4`2X`0```"+#@\0,H@````!;PSO_._^!_P`````SP&:+1"0(4(M$ -M)`C_4!R#X`&#Q`3#._\[_X'_`````(/L&%=64U5H-I0``(M$)#0E__\``(M4 -M)#"#P!XE__\``%!2Z'C^__^#Q`R%P'0=75M>N`,```!?@\08P[@"````75M> -M7X/$&,.#QP!H1I(``(M$)#0E__\``(M,)#"#P`(E__\``%!1Z#/^__^#Q`R% -MP'7(BT0D,"7__P``@\`#9HE$)"`E__\``%"+1"0P_U`<QD0D*0>*V(A$)"N+ -M1"0PBW0D)(/`!(E$)!R->!@SP(K#@^"_B40D&(/$!#/`,]**5"0EBL,SPB7_ -M````4(O&)?__``!0BT0D(/\0:F'_%XO&)?__``!0_Q<STH/$$(I4)"4SPHM4 -M)!2*V#/`BL.#X+\[T'4Q_DPD)76P,\"*1"0G4(M$)"0E__\``%"+1"0T_U`$ -M@\0(N`$```!=6UY?@\08PX/'`#/`BD0D)U"+1"0D)?__``!0BT0D-/]0!(M$ -M)#@E__\``(/``B7__P``4(M$)#C_4!R*V#/`B%PD,[D_````(MF(3"0QB%PD -M,HK#4(M$)$`E__\``(/``B7__P``4(M$)$#_4`2+?"1$BT0D0('G__\``(/' -M`HUP'(/`!(E$)"R#Q!0SP#/2BE0D)8K#,\(E_P```%"+QR7__P``4(M$)"#_ -M$&IA_Q:+QR7__P``4/\6,]*#Q!"*5"0E,\(STHK8,\"*1"0FBM,[P@^%J0`` -M`/Y,)"5UK3/`BD0D)U"+1"0T)?__``"#P`(E__\``%"+1"0T_U`$BT0D*"7_ -M_P``4(M$)#C_4!R*T(M$)#B_]O___X/$#(UP'(E<)!"+VHML)""+Q27__P`` -M4/\6,]*#Q`2*TSO"=3)'?.B+7"00OPH```#VPP9U#5U;7K@)````7X/$&,/V -MPP1T0EU;7C/`7X/$&,.0ZP4[_X/'"EU;7KAC````7X/$&,,SP(I$)"=0BT0D -M-"7__P``@\`")?__``!0BT0D-/]0!(/$"(M$)#`E__\``$!FB40D(B7__P`` -M4(M$)##_4!S&1"0I!XK8BT0D,&:+;"0FB%PD*XUX'(UP!#/`BL.#X+^)1"0< -M@\0$,\`STHI4)"6*PS/")?\```!0B\4E__\``%#_%FIA_Q>+Q27__P``4/\7 -MBE0D-8/$$(K8B\,RPHM4)!B*V#/`BL.#X+\[T`^%Z0```/Y,)"5UKC/`BD0D -M)U`SP&:+1"0F4(M$)#3_4`2_^/___XM$)#1FBVPD*HI<)"^(7"0NC7`<@\`$ -MB40D((/$"(I$)"8T0(A$)"8SP(K#@_!`)?\```!0B\4E__\``%"+1"0@_Q!J -M8?\6B\4E__\``%#_%HK8@\00,\`STHI$)":*TSO"=31'?+<SP+\(````BD0D -M)U`SP&:+1"0F4(M$)#3_4`2#Q`BX!P```%U;7E^#Q!C#.__K!3O_@\<(,\"* -M1"0G);\```!0,\!FBT0D)E"+1"0T_U`$@\0(N`4```!=6UY?@\08PSO_,\"* -M1"0G4#/`9HM$)"90BT0D-/]0!(/$"+AC````75M>7X/$&,,[_X'_`````('_ -M`````(/L"#/`5U:+="049HM&%H/`""7__P``4(N&7`L``/]0((/$!(OX9O?' -M0`$/A18!``!H@````#/`9HM&%H/`""7__P``4(N&7`L``/]0!&@L`0``BX9< -M"P``_U`T,\!FBT86@\`()?__``!0BX9<"P``_U`<N@,```"#X&1F(]<+T#/` -MBL)0,\!FBT86@\`()?__``!0BX9<"P``_U`$,\!FBT86@\`5)?__``!0BX9< -M"P``_U`<)?\```!0,\!FBT86@\`5)?__``!0BX9<"P``_U`$,\!FBT86@\`0 -M)?__``!0BX9<"P``_U`@@\0H)0@!```]"`$``'5,O^C___\SP&:+1A:#P!PE -M__\``%"+AEP+``#_4"0SP&:+1A:#P!`E__\``%"+AEP+``#_4""#Q`BI``$` -M`'0*1WS#OQ@```#K`X/'&#/`9HN&<`L``(/`$B7__P``4(N&7`L``/]0'(/@ -M/U`SP&:+AG`+``"#P!(E__\``%"+AEP+``#_4`2#Q`Q>7X/$",,[_XUT)@"# -M[!0SP%>+?"0<5E-59HM'%H/`%27__P``4(N'7`L``/]0'(/$!(K8]L-`#X5G -M`0``,\!FBT<6@\`0)?__``!0BX=<"P``_U`@@\0$B_!FJ0`!#X0S`0``,\!F -MBT<6@\`8)?__``!0BX=<"P``_U`D,\!FBT<6@\`8)?__``!0BX=<"P``_U`D -M,\!FBT<6@\`8)?__``!0BX=<"P``_U`D,\!FBT<6@\`8)?__``!0BX=<"P`` -M_U`D,\!FBT<6@\`8)?__``!0BX=<"P``_U`D,\!FBT<6@\`8)?__``!0BX=< -M"P``_U`D@\08B^AF]\8(`'5TON+___\SP&:+1Q:#P!`E__\``%"+AUP+``#_ -M4"2#Q`0E"`$``#T``0``=6@SP&:+1Q:#P!@E__\``%"+AUP+``#_4"2#Q`0[ -MQ75)1GRW,\"^'@```&:+1Q:#P!4E__\``%"+AUP+``#_4!R*V(/$!.LR._]F -MBX=R"P``9JD`"'4C._UW$HV'[!```#O%<Q7K!H/'`(/&'C/`75M>7X/$%,.# -MQP`SP(K#4#/`9HM'%H/`%27__P``4(N'7`L``/]0!(/$"+@!````75M>7X/$ -M%,.#QP`[_X'_`````(/L)#/`5XM\)"Q64U7&1QL`9HM'%H/`$"7__P``4(N' -M7`L``/]0'(A$)#<SP&:+1Q:#P`XE__\``%"+AUP+``#_4""+\#/`9HM'%H/` -M&"7__P``4(N'7`L``/]0)(O8@\0,BD0D,Z@(#X5V`0``,\"*1"0SP?@$@^`# -MB$0D,8J'>`L``(I4)#&$T`^$$`$``(/#!(M#_(E$)"0SP(K"]]B#X`-FB40D -M*B7__P``@_@!=&J#^`(/A)4```"#^`,/A;L````SP#/29HM'%HI4)#&-1!`? -M)?__``!0BX=<"P``_U`<BLB+1"0HP>@(,]**T<'B&`O",])0,\!FBT<6BE0D -M.8U$$!PE__\``%"+AUP+``#_4`R#Q`SK93O_BT0D)#/2P>@8)?\```!0,\!F -MBT<6BE0D-8U$$!PE__\``%"+AUP+``#_4`2#Q`CK,H/'`(M$)"0STL'H$"7_ -M_P``4#/`9HM'%HI4)#6-1!`<)?__``!0BX=<"P``_U`(@\0(,]*+QF:+5"0J -M)?__```[PGP'9BORZP4[_V8S]L9$)#$`,\"*1"0Q@\`#9@/P9O?&_/]T)H'F -M__\``#/`P?X"5E-FBT<6@\`<)?__``!0BX=<"P``_U`8@\0,75M>7X/$),.# -MQP`SP(I$)#/!^`2#X`,+V&:%]G4-9L=$)"@!`.G=````D&;'1"0H``"+TXO& -M@>+__P``)?__``#WVH/B`X/"7#O"#X^V````:F&+AUP+``#_4!QJ88N'7`L` -M`/]0'#/`9HM'%H/`#B7__P``4(N'7`L``/]0((O()?__``"#Q`R+UH'B__\` -M`#O"='*)7"00B]F]^/___V:%VW16:F&+AUP+``#_4!QJ88N'7`L``/]0'&IA -MBX=<"P``_U`<:F&+AUP+``#_4!PSP&:+1Q:#P`XE__\``%"+AUP+``#_4""# -MQ!1%B]A\K[T(````ZP:#QP"#Q0AF_T0D*(M<)!"+1"0H9H7`#X2"````,\!F -MBT<6@\`$)?__``!0BX=<"P``_U`@B^@SP&@0`0``9HM'%H/`!"7__P``4(N' -M7`L``/]0"#/`9HM'%E"+AUP+``#_4""+R(O#]]AF`\@SP('E__\``+K_```` -M58'F`/\``&:+1Q9F(]&#P`0+\B7__P``4(N'7`L``/]0"(/$&/?#`P```'1- -M,\!FBT<6@\`<)?__``!0BX=<"P``_U`DB40D*(/$!(O#N@,```"#X`.-;"0D -M9B/3`^B#^@1T%KD$````14-F3HI%_XA#_W0%0CO1=>]F]\;\_W0GB\8E__\` -M`,'X`E`SP%-FBT<6@\`<)?__``!0BX=<"P``_U`P@\0,B\8E_/\```/89O?& -M`P`/A-/]__\SP&:+1Q:#P!PE__\``%"+AUP+``#_4"2)1"0H@\0$,])F]\8# -M`(U$)"0/CJ/]__^-:`&_`P```&8C_D**`(E4)!R-=_V(`T,[UGTKN00```"* -M10!%B`-#BD4`18@#0XI%`$6(`T.*10`#T46(`T,[UGS>B50D'(M4)!P[UP^- -M4/W__XM,)!R*10!%08@#B4PD'$,[SWSL75M>7X/$),.#QP`[_X'_`````&C` -M````,\"+5"0(9HM"%H/`%"7__P``4(N"7`L``/]0!(/$",.#QP`[_X'_```` -M`%>+?"0(5HJ'?`L``(3`=1UJ`#/`9HM'%H/`%"7__P``4(N'7`L``/]0!(/$ -M"#/`,_9FBT<6@\`&)?__``!0BX=<"P``_U`@@\0$J8````!T$U?H:9+__X/( -M`8/$!(OPZR6#Q@"*1QN$P'4-5^C?^/__@\0$A<!T#E?HHOK__[X!````@\0$ -MBH=\"P``A,!U(&C`````,\!FBT<6@\`4)?__``!0BX=<"P``_U`$@\0(B\9> -M7\.#QP`[_X'_`````&C`````,\"+5"0(9HM"%H/`%"7__P``4(N"7`L``/]0 -M!(/$",.#QP`[_X'_`````%>+?"0(:@`SP&:+AW`+``"#P"XE__\``%"+AUP+ -M``#_4`1H````@#/`9HN'<`L``(/`%"7__P``4(N'7`L``/]0##/`9HN'<`L` -M`(/`&"7__P``4(N'7`L``/]0)#/`9HN'<`L``(/`%"7__P``4(N'7`L``/]0 -M)(/$&#T$``"`N``````/E,!?PSO_C70F`%>+?"005C/V4XM<)!!5BVPD&(O' -M1U!5_].#Q`B%P'0,N`$```!=6UY?PSO_1H/^!'S@75M>,\!?PX/'`(UT)@"# -M["175E-5BT0D.(J03@L``(#BR(B03@L``&:+D'(+``!F]\*``'1`BX`4"P`` -M,]*)1"0P]]B#X`>)1"0DBT0D.(M,)"2+@!`+``")1"0LBT0D.(N`&`L``"O! -MN2P```#W\8E$)"#K+<=$)"`@````BT0D.(N`9`L``(/`"(E$)##WV(/@!XE$ -M)"2+1"0X@\`(B40D+(M4)#`S]HM\)"0#UXE4)#"+5"0@.]8/CN````"+1"0X -MBUPD,(E\)!"->O^)="04C;!R"P``BVPD)(M,)"P#Z3/2C5P3$(M,)!"+1"0L -M`\AF]P:``'099L=!!@``9L=!!`"`9L<!$`")60CK$X/'`#/29HE1!F:)$8E1 -M"&:)402+5"00BT0D%(/"+#O'B50D$'459L=!`@``BU0D,(EI*(/*`XE1#.L] -MBU0D%$*-!%*-%-4``````]#!X@*+1"0P`]")40QF]P:``'4&@\H#B5$,9L=! -M`@``BU0D$(M$)"P#T(E1*(/#+(M,)!1!BT0D((E,)!0[R`^,2?___XM<)"2+ -M1"0XBU0D+#/V`]J+3"0@B9@H"P``.\Z+0RB+0"B+0"B+0"B+>"A^>HE?((M# -M*(MO*$:)6"2->?V+6R@[]WU#B5T@BVTHBT,H@\8$._>)6"2+6RB)72"+;2B+ -M0RB)6"2+6RB)72"+;2B+0RB)6"2+6RB)72"+0RB+;2B)6"2+6RA\O8M$)"`[ -M\'T8B5T@BT,HBVTH1HE8)(M4)""+6R@[\GSHBT0D.(M4)#")D#0+``!FBX!R -M"P``9JF``'0%,__K!I"_@`4``#/VBT0D.(N(9`L``(M$)#B-3#D(`_B+V??9 -M@^$'`]F-?`\(B7PD*#/_B5PD,#/)@\<LBU0D*(/^'XUL.M1FB4T"B4T(9HE- -M`(E='&:)301U%F:)30:+5"0P@\H#B54,BU0D*.L:._]FB4T&BT0D,(T4.(M$ -M)"B#R@.)50R-%#B#PRQ&B54H@_X@?*2+7"0HBT0D.+[@____B9@<"P``BT,H -MBT`HBT`HBT`HBW@HB5\@BW\HBT,H@\8$B5@DBULHB5\@BW\HBT,HB5@DBULH -MB5\@BW\HBT,HB5@DBULHB5\@BT,HBW\HB5@DBULH?+^+1"0XOB````"+5"0P -MB9`X"P``BI!."P``@,H(BX@<"P``B8@D"P``B8@@"P``B)!."P``75M>7X/$ -M),.0._^!_P````"#[$@SP%>+?"109HN'/`L```T```"`4#/`9HN'<`L``(/` -M%"7__P``4(N'7`L``/]0#&H1C40D$%`SP&:+AW`+``"#P!@E__\``%"+AUP+ -M``#_4#"+1"0<@\04B(?<$```BD0D"8B'W1```(I$)`J(A]X0``"*1"0+B(?? -M$```BT0D#(B'X!```(I$)`V(A^$0``"+1"0P9HF'XA```&:+1"0J9JD`0'1/ -MBD0D.HB'Y!```(I$)#N(A^40``"+1"0\B(?F$```BD0D/8B'YQ```(I$)#Z( -MA^@0``"*1"0_B(?I$```9HM$)"IFB8>."P``7X/$2,,[_S/)B(_D$```B(_E -M$```B(_F$```B(_G$```B(_H$```B(_I$```Z\57BWPD"&H<,\!FBX=P"P`` -M@\`8)?__``!0BX=<"P``_U`,BI=X"P``N`$````BPB7_````4#/`9HN'F@L` -M`%`SP(J'GPL``%"+AVP+``#_4#!0,\!FBX=P"P``@\`8)?__``!0BX=<"P`` -M_U`,BX^""P``,\!19HN'<`L``(/`&"7__P``4(N'7`L``/]0##/2,\!FBY>8 -M"P``9HN'A@L``(/"!,'B$`O"4#/`9HN'<`L``(/`&"7__P``4(N'7`L``/]0 -M#&@```\`,\!FBX=P"P``@\`8)?__``!0BX=<"P``_U`,,\!FBX=P"P``@\`H -M)?__``!0BX=<"P``_U`@)?#P``!0,\!FBX=P"P``@\`8)?__``!0BX=<"P`` -M_U`,@\1`7\,[_SO_@?\`````@^P(,\!7BWPD$%93:BIFBX=P"P``@\`8)?__ -M``!0BX=<"P``_U`,,_:#Q`AFB[>("P``BH>?"P``P>80@<X``0``/`1T`X/. -M$#/;BI]]"P``]\,"````=`.#S@3WPP$```!T`X/.`C/;9HN?F@L``/?#0``` -M`'0&@<X`!```]\,@````=`:!S@"```!6,\!FBX=P"P``@\`8)?__``!0BX=< -M"P``_U`,BY>*"P``,\!29HN'<`L``(/`&"7__P``4(N'7`L``/]0#(N/D`L` -M`#/`46:+AW`+``"#P!@E__\``%"+AUP+``#_4`R+AY0+``!0,\!FBX=P"P`` -M@\`8)?__``!0BX=<"P``_U`,,_:#Q""+E@`````SP%)FBX=P"P``@\`8)?__ -M``!0BX=<"P``_U`,@\0(@\8$@_X2?--FQT<"0@!;7E^#Q`C#@\<`:@@SP(M4 -M)`AFBX)P"P``@\`8)?__``!0BX)<"P``_U`,@\0(PX/'`#O_@?\`````:@@S -MP(M4)`AFBX)P"P``@\`8)?__``!0BX)<"P``_U`,@\0(PX/'`#O_@?\````` -M5XM\)`AJ"C/`9HN'<`L``(/`&"7__P``4(N'7`L``/]0#(N7E`L``#/`4F:+ -MAW`+``"#P!@E__\``%"+AUP+``#_4`R#Q!!?PX/'`(UT)@!7BWPD"&H*,\!F -MBX=P"P``@\`8)?__``!0BX=<"P``_U`,BY>0"P``,\!29HN'<`L``(/`&"7_ -M_P``4(N'7`L``/]0#(/$$%_#@\<`C70F`%`SP%=6BW0D$&:+AG`+``"#P!@E -M__\``%"+AEP+``#_4"2+^"7_````BY:4$```BXZ8$````\*+EIP0``")AI00 -M``"+Q\'H""7_`````\&)AI@0``"+Q\'H$,'O&"7_`````\*+EJ`0``")AIP0 -M```SP&:+AG`+``"!Y_\````#^H/`&(F^H!```"7__P``4(N&7`L``/]0)(OX -M)?\```"+CJ00``"+EJ@0```#P8N.L!```(F&I!```(O'P>@()?\````#PHN6 -MK!```(F&J!```(O'P>@0P>\8)?\````#PH'G_P```(F&K!```#/`9HN&<`L` -M``/Y@\`8B;ZP$```)?__``!0BX9<"P``_U`DB_@E_P```,'O"(N6M!````/" -MBY:X$```@>?_````B8:T$````_J)OK@0``!6Z![Z__^#Q!"*AGX+``"$P'0A -MQH9^"P```(V&E!```%"+CF`+``!1BX9<"P``_U!`@\0(7E^#Q`3#._\[_X'_ -M`````&H2,\"+5"0(9HN"<`L``(/`&"7__P``4(N"7`L``/]0#(/$",.#QP`[ -M_X'_`````%>+?"0(:@HSP&:+AW`+``"#P!@E__\``%"+AUP+``#_4`R#Q`B* -MAY\+``"Z``$``#P$=`1F@\H0,\F*CWT+``#WP0(```!T!&:#R@3WP0$```!T -M!&:#R@*!XO__```SP%)FBX=P"P``@\`8)?__``!0BX=<"P``_U`(@\0(7\.0 -M:@@SP(M4)`AFBX)P"P``@\`8)?__``!0BX)<"P``_U`,@\0(PX/'`#O_@?\` -M````9HM$)`B+5"0$9@N"H`L``&:)@J`+``!FBX*B"P``9H7`=1IFBT("9CTP -M`'(0QH*["P```%+H%L7__X/$!,,[_U>+?"0(5^C%U___BY=@"P``4HN'7`L` -M`/]0/(/$"%_#@^P(5XM\)!!3,ML/OH=."P``J8````!T**D$````=!"*ATX+ -M```,((B'3@L``.L1BH=."P``)%^`RP2(ATX+``"*ATX+``"H0'0TJ`)T#0P0 -MB(=."P``ZR:#Q@"*ATX+```DKXB'3@L``(J'>`L``*@"=`B`RP'K!H/'`(#+ -M`H3;=",SP(K#4#/`9HN'<`L``(/`*"7__P``4(N'7`L``/]0!(/$"#/`BI=/ -M"P``BL/WT"+"B(=/"P``6U^#Q`C#@^P@5U935<=$)"P`````QT0D'`@````S -M]HM$)#2+N"0+``"+1"0XB7PD*&:+`&:%P`^$T0```(M$)#@SR8U8!&:+0PB) -M7"0@9H7`#X2;````,\!!9HM#"(M4)!R#P`8#T(M$)!2)1"00BT0D&(E$)!2) -M5"0<9HM#"(E<)!AFB0>+`XE'"&:+1P9F)0`!9HE'!HM$)"B)1Q@[^'4X9HM' -M!F8-``1FB4<&BT0D-&:+@)H+``!FJ1``=`QFBT<&9@T`0&:)1P9FBT<&9@T` -M.&:)1P;K%)!FQT<$`("+1R2#P`R+$(/B_(D0B^^+?RB#PPR+1"0X1F:+`"7_ -M_P``._`/C#S___^)3"0L,_8SP&:+=0"+30AFBT4``_&#Y@,[\'X%,_9FB_"+ -M1"0TBU0D'(N`5`L``,'@`CO0#X;"`@``@_X##XVY`@``A?8/CK$"``!F@WT` -M!'9B9HM5`(M$)!AF@^H$9HE5`(M5#(/B_(E5#(M4)!B+[V;'!P0`BT`$9HM2 -M"('B__\``(M$$/QFQT<$`(")1Q2+1"0HB4<8BU0D+&:+1P9F)0`!0F:)1P:) -M5"0LZ4("``"#QP!F@WT``G91BT0D&&:+0`AF/0,`=2^+3"08BU0D&(M)!(M2 -M!&:+$HI)`H'A_P```('B__\``,'A$`O1B544Z?T!```[_XM4)!B+4@2+$HE5 -M%.GJ`0``@\<`,_^+121FBWT`9HLPB]:!XO__```#^H/_!'YMC5;^9HD0BT0D -M&&:+50"#P@)FB54`9HM`"&8]`0!U$HM$)!B+0`2*`"7_````ZQ$[_XM$)!B+ -M0`1FBP`E__\``(M,)!2+5"04P>`09HM)"(M2!('A__\``&:+5`K^@>+__P`` -M"]")513I7P$``(/_`@^.@P```(O]BVTDBTPD+(M$)!1)BU4,@\H#B4PD+(E5 -M#&:+0`AF/0$`=2:+5"04BTPD&(M2!(M)!&:+"8H2@>+_````@>'__P``P>$( -MZR0[_XM4)!2+3"08BU($BTD$9HL2B@F!XO__``"!X?\```#!X1`+T8E5%&:+ -M#V8#30!FB4T`Z=0```"0BT0D%(M4)!B+;22+0`2+4@2*"(H2@>'_````BT0D -M+('B_P```$B)1"0LBT4DP>((B_D+^HM5#(/*`XE5#&:#.`)V/8M,)!"+5"00 -MP><0BT4D9HM)"(M2!('A__\``&:+5`K^@>+__P``"_J)?11FBQ!F@^H"9HD0 -M9L=%``0`ZU.+5"0LBVTD2HE4)"R+50R#R@-F@WT``8E5#'44P><(BTPD$(M) -M!(H)@>'_````ZQ/!YQ"+3"00BTD$9HL)@>'__P``9HM5``OY@\("B7T49HE5 -M`(M5'(/"%(E5",9%$`"+1"0T9HN`<@L``&:I@`!T5XM5#(M,)"R#XOR)50QF -MBU4&9H'*``)FB54&BVTHBU0D(&;'10`!`(L29L=%!`"`B54(9HM5!F:!X@`! -M9HE5!F:!RH!&06:)50:+5"0HB548B4PD+.L.D&:+509F@<J``F:)50:+52B+ -M1"0TB9`D"P``BT0D*&;'0`0`@(M5#(/*`XE5#(M`)(/`#(L0@^+\B1"+1"0T -MBI!."P``]L((='>`XO>(D$X+``"+D#@+``!2BH!X"P``J`)T";@X````ZP<[ -M_[@T````BU0D.&:+DG`+``"!XO__```#T(M$)#B!XO__``!2BX!<"P``_U`, -M@\0(BT0D-&:+D+P.``!F*U0D+&:)D+P.``!=6UZ+1"0@7X/$(,,[_XM$)#2* -MD$X+``"`RD"(D$X+``"+1"0HBT`@9HM`!&:I`(!UMXM,)#11Z.;Y__^#Q`3K -MJ)!7BWPD#%:+="0,,\E39HE/"HE/$(A/#F:+AG(+``!FJ8``="AFQT<,``!F -MBT8"9CU0``^%A````(N>*`L``(V^*`L``.F)````@\8`9HM'"(N>,`L``&:) -M`XM'!&;'0P0`@(E#"(M##(/(`XE##(M#)(/`#(L0@^+\B1"+0RB)AC`+``!F -MBT8"9CU0`'1M9HM&`F8]8`!U)(J&3@L```R`B(9."P``BT,@9HM`!&:I`(!U -M"5;H)_G__X/$!%M>7\-FQT,"``"+0PR#X/R)0PR+6RAFQT,&``!FQT,$`(!F -MQP,0`(M3*(L'.]!UU&;'0P(``(M##(/(`XE##(N.-`L``#/`46:+AG`+``"# -MP#PE__\``%"+AEP+``#_4`QFQT8"8`"*ADX+```,!(/$"(B&3@L``%M>7\,[ -M_X'_`````%>+?"0(,\!FBX=""P``4#/`9HN'<`L``(/`%"7__P``4(N'7`L` -M`/]0##/`9HN'<`L``(/`&"7__P``4(N'7`L``/]0)"7__P``@\0,7\.05XM\ -M)`@SR6;'1P)!`&:)CZ(+``"*AYT+``"(AY\+```SP&;'AZ`+```.`&:)3P11 -M9HN'<`L``(/`+B7__P``4(N'7`L``/]0!%?H\;S__X/$#%_#@?\`````@?\` -M````@^P@,])7BWPD*%9358E4)!@/OX>T"P``B50D$(E$)!R%P'0YBH^W"P`` -M@>'_````B\&#X!^-!$#!X`.-K`>\"P```TT0B4PD((/A'XT$2<'@`XV$![P+ -M``")1"0HB[<L"P``9HM&!&:I`$`/A.0"``"-GTX+``"+1"0<A<`/A%P!``"+ -M5"0HBT0D*#/)9HM2#&:+0`B!XO__``!FBPXE__\```/1.\(/C?<```!FBX>: -M"P``9JD"`'1*BT0D*(M4)"C&10X#9HM`"&:+4@PE__\``('B__\``"O"#X3S -M````4(M$)"PSTF:+4`R+"`/1C4804E#H_/___X/$#.G2````._^+1"0<BU40 -M0DB)1"0<A<")51!_#,9%#@'ILP```(/'`(M$)"B+5"0H9HM`"&:+4@PE__\` -M`('B__\``"O"4(E$)"B+1"0LBP@#T8U&$%)0Z/S___^+1"0LBTPD,$`STHE$ -M)"R#X!]FBQ8KT8T$0,'@`XU,#A"-A`>\"P``B40D-&:)4`R!XO__``!2BT0D -M.(L`4%'H_/___X/$&.LS@\<`,\`STF:+!E"+1"0L9HM0#(L(`]&-1A!24.C\ -M____9HL.BT0D-&8#2`R#Q`QFB4@,9HL.9@--"F:)30J*`R3^B`-FBT8$9JF` -M&71-BT0D'(7`=!6*AWT+``"H!'0'QD4.`NL%D,9%#@%FBT8$9JF``'0&_X?, -M$```9HM&!&:I``%T!O^'R!```&:+1@1FJ0`0=`;_A\00``!FBT8$9JD``@^$ -MLP```(M,)!"+1"0<087`B4PD$`^$G@```#/29HM6!H'B`/```,'Z"(A5#V:+ -M1@9FJ0`"=`:`R@*(50]FBT8&9JD`\'0)BE4/@,H!B%4/9HM&!F:I$`!T"8I5 -M#X#*!(A5#XM5$(M$)!Q"2(E5$(E$)!R*11"*E[<+```"PHB'MPL``+@?```` -M(H>W"P``C01`P>`#C:P'O`L``(M$)"!`B40D((/@'XT$0,'@`XV$![P+``") -M1"0H9L=&!`"`9L<&$`"+1@R#R`.)1@R+1B2#P`R+$(/B_(D0BT8@9HM`!&:I -M`(!T!/]$)!B*$XMV*/;"!'0.@.+[]L(@B!-T!/]$)!AFBT8$9JD`0`^%(OW_ -M_XM$)!B)MRP+``"%P'0)5^B']/__@\0$75M>BT0D!%^#Q"##._^!_P````"# -M[`RX'P```%=64XM<)!S'1"04`````%6+LRP+```B@[<+``"-!$#!X`.-O`.\ -M"P``9HM&!&:I`$`/A$$!``"+[HVSMPL``(E<)!2!PTX+``#_1Q"*`R3^B`-F -MBT4$9JF`&714BT0D%(J`?0L``*@$=`;&1PX"ZP3&1PX!9HM%!&:I@`!T"HM$ -M)!3_@,P0``!FBT4$9JD``70*BT0D%/^`R!```&:+101FJ0`0=`J+1"04_X#$ -M$```9HM%`&8#1PIFB4<*9HM%!&:I``)T<XH6BD<0`L*+3"08B`8SP&:+109! -M)0#P``")3"08P?@(B$</9HM5!F;WP@`"=`4,`HA'#V:+109FJ0#P=`B*1P\, -M`8A'#V:+109FJ1``=`B*1P\,!(A'#XM\)!2Y'P```"*/MPL``(T,2<'A`XV\ -M#[P+``!FBU4$9H'B_[]FB54$B@.H!(MM*'05)/NH((@#=`V+5"044N@'\___ -M@\0$9HM%!&:I`$`/A=?^__^+]8M<)!2)LRP+``!=6UZ+1"0,7X/$#,,[_X'_ -M`````('_`````(/L++@?````5XM\)#164U6+KR`+``#'1"0X`````"*'PPX` -M`(T$0,'@`HV$!\0.``")1"0T9HM%!&:I`$!U#8M%*&:+0`1FJ0!`=`BX`0`` -M`.L#D#/`A<`/A%0!``"-ATX+``"-GR`+``"-MTT+``")1"08BX<@"P``9HM` -M!&:I`$!U!O^'U!```,8&`(N'(`L``&:+0`1FJ0`@#X0?`0``_X?0$```BT0D -M-,9`!0"+AR`+``"+<!B),XM&'#/;B40D,#/`9HN'<`L``(/`*27__P``4(N' -M7`L``/]0'(OHBH=X"P``@\0$J`)T![@!````ZP6X`@```(7H=4B)="00C8=X -M"P``B_`SP$-FBX=P"P``@\`I)?__``!0BX=<"P``_U`<@\0$B@[VP0*+Z'0' -MN`$```#K!;@"````A>ATR(MT)!`SVXM$)#2*0`2$P'0<BTPD-+H`@```@\$$ -M9HE6!#/`0XH!BW8H.]A\\(M$)#!0BH=X"P``J`)T![@X````ZP6X-````#/2 -M9HN7<`L```/0@>+__P``4HN'7`L``/]0#(M$)""*$(#*`H/$"(@075M>BT0D -M+%^#Q"S#._^+1"08BA#VP@)T$X#B_?;"$(@0=`E7Z/7P__^#Q`2+1"0TBE`% -M_L*(4`4SP(K"BU0D-(I2!('B_P```#O"=2O^A\,.``"X'P```"*'PPX``(T$ -M0,'@`HV$!\0.``")1"0TBT0D.$")1"0XBX<@"P``9L=`!```BX<@"P``BT`H -MB0.+KR`+``!FBT4$9JD`0'47BT4H9HM`!&:I`$"X``````^4P.L$._\SP(7` -M#X0"_O__Z3O___^0._^!_P````"#[`A7BWPD$%93QT0D$``````SVV8YGT@+ -M``!T$V:+MT@+``!FB9]("P``ZR.#QP`SP&:+AW`+``"#P!`E__\``%"+AUP+ -M``#_4""+\(/$!&;WQO]N=15;7C/`7X/$",.X`@```%M>7X/$",-FBT<"9CU@ -M`'4E9HN'<@L``&:I@`!T#5?HU_?__XO8@\0$ZPM7Z$K[__^+V(/$!&;WQ@@` -M=`E7Z`C$__^#Q`1F]\8@`'0SBH=X"P``J`)T"+@!````ZP:0N`(```"#R`2( -MAT\+``"*ATX+``"HP'0)5^AN[___@\0$9HM'`F8]4`!R#5?HB_S__XE$)!2# -MQ`1F]\8`('0)5^B'O?__@\0$9O?&`0!T?0^_A[0+```[PW889HM'`F8]8`!U -M#HJ'3@L```P!B(=."P``:@$SP&:+AW`+``"#P"XE__\``%"+AUP+``#_4`1J -M`#/`9HN'<`L``(/`&B7__P``4(N'7`L``/]0"&H`,\!FBX=P"P``@\`N)?__ -M``!0BX=<"P``_U`$@\08A=L/A<C^__^+1"00A<`/A;S^__];7E^X`0```(/$ -M",-7BWPD"&:+AT@+``!FA<!U*C/`9HN'<`L``(/`$"7__P``4(N'7`L``/]0 -M((/$!&:%P&:)AT@+``!T";@!````7\,[_S/`7\,[_X'_`````&H`,\"+5"0( -M9HN"<`L``(/`""7__P``4(N"7`L``/]0##/`@\0(PY`[_X'_`````(/L#%>+ -M?"045E.*1P2H"'0C,\"+-XI'!(/@]XA'!(K8,\"*PU`SP&:+1@10BP;_4`2# -MQ`B+%U+H%!@``(L/4>@,&```BS<SP(/$"&:+1@10BP;_4!PE_P```(/$!(I? -M!(A$)!<SP(#+`8LWB%\$BL-0,\!FBT8$4(L&_U`$BP>#Q`A0Z,@7``"+%U+H -MP!<``(L/@\0(4>BU%P``,\"+-XI?!(/$!(#C_HA?!(K#4#/`9HM&!%"+!O]0 -M!(L'@\0(4.B+%P``BQ=2Z(,7``"*1"0?@\0(J(!T"+@!````ZP.0,\!;7B7_ -M````7X/$#,,[_X/L&%>+?"0@5E/&1"0C`(M$)"R+-R7_````P?@(BM@SP(I' -M!(/@]XA'!(K0,\"*PE`SP&:+1@10BP;_4`0SP(LWBE<$@\0(@,H!B%<$BL)0 -M,\!FBT8$4(L&_U`$BQ>#Q`A2Z/D6``"+#U'H\18``(L'@\0(4.CF%@``,\"+ -M-XI'!(/$!(/("(A'!(K0,\"*PE`SP&:+1@10BP;_4`2+%X/$"%+HN!8``#/` -MBS>*5P2#Q`2`XOZ(5P2*PE`SP&:+1@10BP;_4`2+#X/$"%'HCA8``(L'4.B& -M%@``N`<```"#Q`@BPP/`B$0D(HK0,\"*P@V@````)?\```!05^@O"@``5^@) -M_O__@\0,A<!T"KX"````Z>D```#&1"0?`(M<)"PSP(K#)8````"$P'0*,\"* -M1P2#X/?K"#/`BD<$@\@(BM"+-XA'!#/`BL)0,\!FBT8$4(L&_U`$BQ>#Q`A2 -MZ/T5```SP(LWBE<$@\0$@,H!B%<$BL)0,\!FBT8$4(L&_U`$BP^#Q`A1Z-,5 -M``"+!U#HRQ4``(L7@\0(4NC`%0``,\"+-XI7!(/$!(#B_HA7!(K"4#/`9HM& -M!%"+!O]0!(L/@\0(4>B6%0``BP=0Z(X5``"*5"0G@\0(,\#^PHK#B%0D'P/` -M@/H(BM@/@C'___]7Z!K]__^+\('F_P```(/$!(7V#X7F````,\"+-XI'!(/@ -M]XA'!(K8,\"*PU`SP&:+1@10BP;_4`0SP(LWBE\$@\0(@,L!B%\$BL-0,\!F -MBT8$4(L&_U`$BP^#Q`A1Z`T5``"+!U#H!14``(L7@\0(4NCZ%```,\"+-XI' -M!(/$!(/("(A'!(K8,\"*PU`SP&:+1@10BP;_4`2+#X/$"%'HS!0``#/`BS>* -M7P2#Q`2`X_Z(7P2*PU`SP&:+1@10BP;_4`2+!X/$"%#HHA0``(L74NB:%``` -MBEPD*H/$"#/`BL,-H0```"7_````4%?H3@@``%?H*/S__X/$#(7`=`VX_P`` -M`%M>7X/$&,.0,MLSP(I$)",#P(A$)"-7Z`#\__^*3"0G@\0$"LC^PXA,)".` -M^PARVC/`BS>*1P2#X/>(1P2*V#/`BL-0,\!FBT8$4(L&_U`$,\"+-XI?!(/$ -M"(#+`8A?!(K#4#/`9HM&!%"+!O]0!(L'@\0(4.CR$P``BQ=2Z.H3``"+#X/$ -M"%'HWQ,``#/`BS>*7P2#Q`2`X_Z(7P2*PU`SP&:+1@10BP;_4`2+!X/$"%#H -MM1,``(L74NBM$P``,\"+-XI'!(/$"(/("(A'!(K8,\"*PU`SP&:+1@10BP;_ -M4`0SP(LWBE\$@\0(@,L!B%\$BL-0,\!FBT8$4(L&_U`$BP^#Q`A1Z&`3``"+ -M!U#H6!,``(L7@\0(4NA-$P``,\"+-XI'!(/$!(/@]XA'!(K8,\"*PU`SP&:+ -M1@10BP;_4`2+#X/$"%'H'Q,``#/`BS>*7P2#Q`2`X_Z(7P2*PU`SP&:+1@10 -MBP;_4`2+!X/$"%#H]1(``(L74NCM$@``@\0(,\!;7HI$)!M?@\08PY"!_P`` -M``"!_P````"#[!`SP%>+?"085E.*1P2+-X/@]XA'!(K8,\"*PU`SP&:+1@10 -MBP;_4`0SP(LWBE\$@\0(@,L!B%\$BL-0,\!FBT8$4(L&_U`$BQ>#Q`A2Z'P2 -M``"+#U'H=!(``(L'@\0(4.AI$@``,\"+-XI'!(/$!(/("(A'!(K8,\"*PU`S -MP&:+1@10BP;_4`2+%X/$"%+H.Q(``#/`BS>*7P2#Q`2`X_Z(7P2*PU`SP&:+ -M1@10BP;_4`2+#X/$"%'H$1(``(L'4.@)$@``BU0D,(/$"+@'````(L(#P(K0 -M,\"*P@V@````)?\```!05^BR!0``5^B,^?__@\0,A<!T#;@"````6UY?@\00 -MPY"+7"0DB%PD&S+;,\"*1"0;)8````"$P'0+,\"*1P2#X/?K"9`SP(I'!(/( -M"(K0BS>(1P0SP(K"4#/`9HM&!%"+!O]0!(L/@\0(4>AY$0``,\"+-XI7!(/$ -M!(#*`8A7!(K"4#/`9HM&!%"+!O]0!(L'@\0(4.A/$0``BQ=2Z$<1``"+#X/$ -M"%'H/!$``#/`BS>*5P2#Q`2`XOZ(5P2*PE`SP&:+1@10BP;_4`2+!X/$"%#H -M$A$``(L74N@*$0``,\"#Q`C^PXI$)!L#P(#["(A$)!L/@C+___]7Z)KX__^# -MQ`0E_P```%M>7X/$$,.#QP`[_X'_`````(/L"#/`5XM\)!!64XI'!(LW@^#W -MB$<$BM@SP(K#4#/`9HM&!%"+!O]0!#/`BS>*7P2#Q`B`RP&(7P2*PU`SP&:+ -M1@10BP;_4`2+%X/$"%+H?!```(L/4>AT$```BP>#Q`A0Z&D0```SP(LWBD<$ -M@\0$@\@(B$<$BM@SP(K#4#/`9HM&!%"+!O]0!(L7@\0(4N@[$```,\"+-XI? -M!(/$!(#C_HA?!(K#4#/`9HM&!%"+!O]0!(L/@\0(4>@1$```BP=0Z`D0``"# -MQ`A;7E^#Q`C#@\<`@?\`````@?\`````@^P0,\!75E.+7"0D58ML)"2+="0P -M9HM%!%"+10#_4!R);"04@\0$)?\```#&1"04!(A$)!\SP&H$9HM%!%"+10#_ -M4`0SP(/$"(K#`\"*V(M$)"R+T/[*A,"(5"0L=$F*P_[#)?\```!0C40D%%#H -M'?C__XOXBL,E_P```/[#4(U$)!Q0Z`?X___!X`B#Q!!F"_AFB3Z+1"0L@\8" -MB\C^R83`B$PD+'6W,\"*1"0?4#/`9HM%!%"+10#_4`2#Q`A=6UY?@\00PY`[ -M_X'_`````(/L$%>+?"085E-FBW0D)(O&@>;_````)?__``#!^`@E_P```%!6 -M5^@D_/__@\0,A<!T%5M>0%^#Q!##D+@!````6UY?@\00PXM<)"B(7"0;,MLS -MP(I$)!LE@````(3`=`LSP(I'!(/@]^L)D#/`BD<$@\@(BM"+-XA'!#/`BL)0 -M,\!FBT8$4(L&_U`$BQ>#Q`A2Z(D.```SP(LWBE<$@\0$@,H!B%<$BL)0,\!F -MBT8$4(L&_U`$BP^#Q`A1Z%\.``"+!U#H5PX``(L7@\0(4NA,#@``,\"+-XI7 -M!(/$!(#B_HA7!(K"4#/`9HM&!%"+!O]0!(L/@\0(4>@B#@``BP=0Z!H.```S -MP(/$"/[#BD0D&P/`@/L(B$0D&P^",O___U?HJO7__X/$!(7`#X4+____,\"+ -M-XI'!(/("(A'!(K8,\"*PU`SP&:+1@10BP;_4`0SP(LWBE\$@\0(@,L!B%\$ -MBL-0,\!FBT8$4(L&_U`$BQ>#Q`A2Z*4-``"+#U'HG0T``(L'@\0(4.B2#0`` -M,\"+-XI'!(/$!(/@]XA'!(K8,\"*PU`SP&:+1@10BP;_4`2+%X/$"%+H9`T` -M`#/`BS>*7P2#Q`2`X_Z(7P2*PU`SP&:+1@10BP;_4`2+#X/$"%'H.@T``(L' -M4.@R#0``BS^#Q`AJ"HL'_U`T@\0$,\!;7E^#Q!##._\[_X'_`````(/L"#/` -M5XM\)!!64XI'!(LW@\@(B$<$BM@SP(K#4#/`9HM&!%"+!O]0!#/`BS>*7P2# -MQ`B`RP&(7P2*PU`SP&:+1@10BP;_4`2+%X/$"%+HO`P``(L/4>BT#```BP># -MQ`A0Z*D,```SP(LWBD<$@\0$@^#WB$<$BM@SP(K#4#/`9HM&!%"+!O]0!(L7 -M@\0(4NA[#```,\"+-XI?!(/$!(#C_HA?!(K#4#/`9HM&!%"+!O]0!(L/@\0( -M4>A1#```BP=0Z$D,``"#Q`A;7E^#Q`C#@\<`@?\`````@?\`````@^P,5XM\ -M)!164\9$)!<`BT0D("6`````A,!T##/`BD<$@^#WZPH[_S/`BD<$@\@(BMB+ -M-XA'!#/`BL-0,\!FBT8$4(L&_U`$BQ>#Q`A2Z-T+```SP(LWBE\$@\0$@,L! -MB%\$BL-0,\!FBT8$4(L&_U`$BP^#Q`A1Z+,+``"+!U#HJPL``(L7@\0(4NB@ -M"P``,\"+-XI?!(/$!(#C_HA?!(K#4#/`9HM&!%"+!O]0!(L/@\0(4>AV"P`` -MBP=0Z&X+``"+1"0H@\0()?\````#P(I4)!?^PHA$)""(5"07@/H(#X(H____ -M6UY?@\0,PSO_4#/`5XM\)`Q64XI?!(LW@,L!B%\$BL-0,\!FBT8$4(L&_U`$ -MBQ>#Q`A2Z!$+``"+#U'H"0L``(L'@\0(4.C^"@``,\"+-XI?!(/$!(#C_HA? -M!(K#4#/`9HM&!%"+!O]0!(L7@\0(4NC4"@``BP]1Z,P*``"#Q`A;7E^#Q`3# -M._]7BWPD"%93,\"+-XI?!(#+`8A?!(K#4#/`9HM&!%"+!O]0!(L7@\0(4NB2 -M"@``BP]1Z(H*``"#Q`A;7E_#@\<`5XM\)`A64S/`BS>*7P2`X_Z(7P2*PU`S -MP&:+1@10BP;_4`2+%X/$"%+H4@H``(L/4>A*"@``@\0(6UY?PX/'`(I$)`A3 -MBTPD"(3`="<SP(I!!(/@]XK8BQ&(000SP(K#4#/`9HM"!%"+`O]0!(/$"%O# -M._\SP(I!!(/(".O7._^#[!`SP%=64XM<)"15BVPD)(MT)#!FBT4$4(M%`/]0 -M'(EL)!2#Q`0E_P```,9$)!0$B$0D'S/`:@1FBT4$4(M%`/]0!(M$)#2#Q`B+ -MT/[*A,"(5"0L=&$SP(H&4(K#)?\```!&4(U$)!A0Z''Z___^PX/$#(OXA?]T -M+C/`BD0D'U`SP&:+1010BT4`_U`$BT0D-(/$",'G""7_````0`O'75M>7X/$ -M$,.+1"0LB\C^R83`B$PD+'6?,\"*1"0?4#/`9HM%!%"+10#_4`2#Q`@SP%U; -M7E^#Q!##@\<`C70F`(/L-#/)5XM\)$16BT0D1%-5BW0D2,9'`03&1S`#9HM` -M$&;'1Q)``&:)3Q8E_/\``&:)1Q"+1"1,9HE/%(M`%&;'1QP`0,9''J*#X/") -M1QB+1"1,BT`PB4<HBT<8A<!T%HM$)$QFBT`$9JD"`'0(BD<>#$"(1QYJ`#/` -M9HM'$(/`+B7__P``4/]6!,9''Q`SP&:+1Q"#P`(E__\``%#_5AR#R`8E_P`` -M`%`SP&:+1Q"#P`(E__\``%#_5@0SP&:+1Q"#P!(E__\``%#_5B!FB40D5B7_ -M_P``@\@@)?__``!0,\!FBT<0@\`2)?__``!0_U8(B70D0#/`9HM'$&H"@\`P -M9HE$)$@SP&:+1Q"#P"XE__\``%#_5@2-1"1`4(U$)$QJ!&H@4.@%^/__BT0D -M4(/$.#/2)?__``!FBU0D&@/"BU0D'('B__\```/",])FBU0D'B7__P``.\)U -M+(M$)!B(1R**1"09B$<CBD0D&HA')(I$)!N(1R6+1"0<B$<FBD0D'8A')^L. -M,\EFB4\B9HE/)&:)3R:-;"0@,\#&1"1"`6:+102S%XET)#"-="1#4(M%`/]0 -M'(EL)!2#Q`2*T#/`QD0D%`2*PHA$)$$SP&H$9HM%!%"+10#_4`2#Q`BP`8K0 -M_LJ$P(A4)$)T*HK#_L,E_P```%"-1"044.C`[___B`:#Q`A&BD0D0HK(_LF$ -MP(A,)$)UUC/`BD0D05`SP&:+1010BT4`_U`$BW0D.(/$"+@'````(D0D0XJ` -M`````,9'(?^(1RQJ`#/`9HM'$(/`+B7__P``4/]6!#/`9HM$)$90,\!FBT<0 -M@\`2)?__``!0_U8(BT0D7(/$$&:+0`1FJ00`=`HSP%U;7E^#Q#3#75M>N`(` -M``!?@\0TPX/'`(/L%#/`5XM\)"A6BW0D(%.+7"0L9HM&!%"+!O]0'(ET)!"# -MQ`2*T#/`QD0D$`2*PHA$)!\SP&H$9HM&!%"+!O]0!(K#_LN#Q`B$P'0JBT0D -M*(O0)?\```!0C40D$/["B%0D+%#HM^[__X@'BL.#Q`A'_LN$P'76,\"*1"0? -M4#/`9HM&!%"+!O]0!(/$"%M>7X/$%,.!_P````"!_P````"#[!!7BWPD&%93 -M58ML)"AFBT<"9CTP`'0?75M>N`$```!?@\00PSO_N`0```!=6UY?@\00PX/& -M`(N'&`L``(7`=0UFBX=R"P``9JE``'79QH=]"P```(M$)"R)AY`+``"+1"0P -MB8>4"P``9HN'<@L``&:I`0!T#6;'AY@+``!01NL+._]FQX>8"P``E!$SP(M4 -M)#1FBX>8"P``@>+__P``.\)^"XM$)#1FB8>8"P``N`D```!F(T0D.(/X"70/ -MN`P```!F(T0D.(/X#'4/75M>N`,```!?@\00PSO_BT0D.(7M9HF'F@L``'1% -M5>A_1@``@\0$A<!U.(I%`$5%B(>("P``145%BD7\B(>)"P``BD7]B(>*"P`` -MBD7^B(>+"P``BD7_B(>,"P``BD4`ZT.0BH>""P``B(>("P``BH>#"P``B(>) -M"P``BH>$"P``B(>*"P``BH>%"P``B(>+"P``BH>&"P``B(>,"P``BH>'"P`` -M,_8STHB'C0L``(V?B`L``$.*2_\ZRG06B50D&.L>75M>N`(```!?@\00PX/' -M`$:#_@9\W,=$)!@!````BT0D&(7`==J*AX@+``"H@'70BX=H"P``BT@\A<ET -M!U?_4#R#Q`2+AV@+``"*0`N(AW@+``!7BX=L"P``_U`49L>'O`X``"``,\F# -MQ`0SP(B/M@L``&:)C[0+``"(C[<+``"(C[@+``"(C[H+``"(C[D+``"(C[X. -M``"(C[\.``"(C\`.``"(C\$.``"(C\(.``"(C\,.``!=6UY?@\00PSO_@^P< -M5U9358ML)#"+50"!^B"!``!T6EU;7C/`7X/$',-&@_X1<F@S]HM$)#B+WJD$ -M````#X3^````A=L/A/8```!FO@`*B\8E__\``%!5Z)U-``"#Q`B%P'16BT0D -M*"7__P``]]!F(_CIJP```(/'`,=$)!P`````9L=$)"@PSHM$)#2_#P```(E$ -M)!0S]HL<M0````"%VW2-9HM#"&8]`P`/A7G___^+\^EZ____._]H-I0``(O& -M)?__``"#P!XE__\``%!5Z,6]__^#Q`R%P'1&BTPD%(O&427__P``4%7_4Q2+ -M1"0H@\0,0(E$)!R+1"0\BU0D'#O0#XU&`0``BT0D*(M,)!0E__\``/?09B/X -M@\$TB4PD%(M$)"B#QB`E__\``,'X!&:)1"0H9H'^X`L/A@[____'1"08```` -M`&;WQP$`#X3@````:$:2``"+1"0<9HL$10````!FB40D*B7__P``@\`")?__ -M``!05>@<O?__@\0,A<!U-V:+1"0F9JD$`'0*N!P```#K"(/'`+@0````,])F -MBU0D)@/0@>+__P``4E7H]4?__X/$"(7`='@SP&:+1"0F4%7H,+[__X/$"#/V -MB\B+'+4`````A=MT&#/`B]%FBT,(@>+__P``.\)T"$:#_A%RW3/;A=MT.HM$ -M)#B+$X70=#"+5"04,\!FBT0D)E)05?]3%(M,)"B#Q`Q!BT0D/(E,)!P[R'TF -MBU0D%(/"-(E4)!2!Y___``"+3"08P?\!08E,)!B#^00/C/K^__^+1"0<75M> -M7X/$',.#QP"!_P````"!_P````"#[`A75HM$)!2+$('Z(($``'057KC_____ -M7X/$",,[_S/`7E^#Q`C#N.`/``"+3"049B-$)!PE__\``%!1Z$Y+``"#Q`B% -MP'77BT0D'"7__P``4(M$)!A0Z#.]__^#Q`B+R&:#^6-TN#/VBSRU`````(7_ -M=!@SP(O19HM'"('B__\``#O"=`A&@_X1<MTS_X7_=(V+5"08BT0D'%(E__\` -M`%"+3"0<4?]7%(/$#%Y?@\0(PY"!_P````"!_P````"+3"0$,\"+D5`+``!2 -M9HN!<`L``(/`""7__P``4(N!7`L``/]0#(/$",,[_XUT)@"+5"0$,\!FBT($ -M4(L"_U`<)?\```"#Q`3#@\<`C70F`#/`BU0D!(I$)`A0,\!FBT($4(L"_U`$ -M@\0(PY"-="8`5XM\)`AJ88L'_U`<:F&+!_]0'&IABP?_4!QJ88L'_U`<@\00 -M7\,[_SO_@?\`````,\!FBT0D"%"+1"0(BP#_4#2#Q`3#@\<`._^!_P````"# -M[!PSP%=64XMT)"Q5BUPD-&:+AG`+``"#P#(E__\``%"+AEP+``#_4""+TR7_ -M_P``@>+__P``(\*#R`*+^"7__P``4#/`9HN&<`L``(/`,B7__P``4(N&7`L` -M`/]0"('C__\``#/`@\L"9HE<)#9H4```@&:+AG`+``"#P!0E__\``%"+AEP+ -M``#_4`R[]/___X/$%#/`9HN&<`L``(/`&"7__P``4(N&7`L``/]0)(E$'""# -MQ`2#PP1\V<=$)"0`````,]*+QV:+5"0J)?__``"[#````#O"#X0B`0``B^\S -M_V:+^L'G$('/QP<``&A0``"`,\!FBX9P"P``@\`4)?__``!0BX9<"P``_U`, -M:+A`8(XSP&:+AG`+``"#P!@E__\``%"+AEP+``#_4`QHV+MR`#/`9HN&<`L` -M`(/`&"7__P``4(N&7`L``/]0#%<SP&:+AG`+``"#P!@E__\``%"+AEP+``#_ -M4`R!Y?W_```SP%5FBX9P"P``@\`R)?__``!0BX9<"P``_U`(NT3]__^#Q"@S -MP&:+AG`+``"#P!(E__\``%"+AEP+``#_4""#Q`1#?-\SP+N\`@``9HN&<`L` -M`(/`,B7__P``4(N&7`L``/]0((M4)"B#Q`2+Z"7__P``0HE4)"0STF:+5"0J -M.\)T#8M$)"2#^&0/C.[^__]H4```@#/`9HN&<`L``(/`%"7__P``4(N&7`L` -M`/]0#+OT____@\0(BTP<'#/`46:+AG`+``"#P!@E__\``%"+AEP+``#_4`R# -MQ`B#PP1\V%V[#````%M>7X/$',,[_X/L##/`5XM\)!164VH`9HN'<`L``(/` -M+B7__P``4(N'7`L``/]0!#/`9HN'<`L``(/`,B7__P``4(N'7`L``/]0((OP -M9H'F_O^+QB7__P``4#/`9HN'<`L``(/`,B7__P``4(N'7`L``/]0"&:!YOW_ -M,\"!YO__``!69HN'<`L``(/`,B7__P``4(N'7`L``/]0"(J'3@L``"3^B(=. -M"P``,\!FBX=P"P``@\`2)?__``!0BX=<"P``_U`@@\0@B_!F@<X``KL/```` -M9H/.$&8CWH/[!WX%NP<```"%VW0,C4O_NP$```#3X^L%NP$```!F@>;_XXJ' -M?PL``(3`="HSTHO#)?__``"*EW\+```[PGP79H'.`!AFBX>`"P``9JD0`'0% -M9H'.``2!YO__```SP%9FBX=P"P``@\`2)?__``!0BX=<"P``_U`(@\0(BH=\ -M"P``A,!U(VB<(```,\!FBX=P"P``@\`()?__``!0BX=<"P``_U`,@\0(QX=0 -M"P``G"```('C__\``#/`0XJ'?PL``&:)7"04B_,[PWX)9@^VP&:)1"04@>;_ -M_P``N/T````KQHO8)?__``")AU0+``"+1"04)?__``#!X`@+QB7__P``4#/` -M9HN'<`L``(/`(B7__P``4(N'7`L``/]0"('C__\``#/`@<L`?P``@>/__P`` -M4V:+AW`+``"#P"`E__\``%"+AUP+``#_4`AJ`#/`9HN'<`L``(/`'B7__P`` -M4(N'7`L``/]0"(/$&+Y<````9HN'<@L``&:I@`!U`X/.`E8SP&:+AW`+``"# -MP"0E__\``%"+AUP+``#_4`QJ`#/`9HN'<`L``(/`!B7__P``4(N'7`L``/]0 -M"(N''`L``(/FXXF')`L``(F'(`L``(J'3@L```P(B(=."P``,\!69HN'<`L` -M`(/`)"7__P``4(N'7`L``/]0#&;'AT@+`````(/$&%M>7X/$#,.#[`Q75E-5 -MC40D&(ML)"A058M4)"R+="0H4NCQQ/__@\0,A<`/A<8```!H````@(M$)!PE -M__\``(UX`S/`9HN&<`L``,'_`H/`%"7__P``4(N&7`L``/]0#(M,)"`SP%%F -MBX9P"P``@\`8)?__``!0BX9<"P``_U`,@\00NP$````[^WY&C40D&%"+1"0H -M55#H>\3__X/$#(7`=`>-1_\[V'5-BU0D&#/`4F:+AG`+``"#P!@E__\``%"+ -MAEP+``#_4`R#Q`A#.]]\NE:+AFP+``#_4"QFQT8"(0!FQT8$```SP(/$!%U; -M7E^#Q`S#._]=6UZX`0```%^#Q`S#@\<`4XI<)`AFBU0D#+G"````A-MU"8') -M``(``.L,D(#[$'4&@<D``0``P>$0@<D`<P``9O?""`!T!H'A_^___V;WP@0` -M=`:!X?_?__\SP(K#@_@0=`6#^`1U!H'A_[___XI$)!"$P'0#@\D$B\%;PX/' -M`(/L'#/`,\E7BWPD+%:+="0L4XM<)"S&1P$$QD<P`F:+1A!FQT<20`!FB4\6 -M)?S_``!FB4<09HE/%(M&%&;'1QP`0,9''J*#X/")1QB+1C")1RB+1QB%P'02 -M9HM&!&:I`@!T"(I''@Q`B$<>:@`SP&:+1Q"#P"XE__\``%#_4P0SP&:+1Q"# -MP"DE__\``%#_4QR#Q`PE\````(/X$'4&QD<?&.L$QD<?`#/`9HM'$(/`$B7_ -M_P``4/]3(&:)1"0H)?__``"#R"`E__\``%`SP&:+1Q"#P!(E__\``%#_4PB) -M7"0D9HM'$&:)1"0HC40D'%"-1"0H:@1J(%#H$>C__XM$)"R#Q!PSTB7__P`` -M9HM4)!(#PHM4)!2!XO__```#PC/29HM4)!8E__\``#O"=2R+1"00B$<BBD0D -M$8A'(XI$)!*(1R2*1"03B$<EBT0D%(A')HI$)!6(1R?K#C/)9HE/(F:)3R1F -MB4\FC40D)E"-1"0<:@%J#5#HD^?__S/`@\009HM$)":)1"0,J0$```!T!C/` -MZQL[_XM$)`RI`@```'0)N!````#K!SO_N`0```#&1R'_B$<LBT0D)"7__P`` -M4#/`9HM'$(/`$B7__P``4/]3"&:+1@2#Q`AFJ00`=`LSP%M>7X/$',,[_UM> -M7[@"````@\0<PSO_@?\`````BT0D!,>`4`L```````##D(/L"#/`5U:+="04 -M9HN&<`L``(/`$B7__P``4(N&7`L``/]0((OX)?__``"#R"`E__\``%`SP&:+ -MAG`+``"#P!(E__\``%"+AEP+``#_4`B+AEP+``"+5"0DB40D%&:+AG`+``!2 -M:@AJ.&:)1"0DC40D(%#H^.___X'G__\``#/`5V:+AG`+``"#P!(E__\``%"+ -MAEP+``#_4`B#Q"1>7X/$",.0@?\`````@?\`````@^P(,\!75E.+="089HN& -M<`L``(/`$B7__P``4(N&7`L``/]0((OX)?__``"#R"`E__\``%`SP&:+AG`+ -M``"#P!(E__\``%"+AEP+``#_4`B+AEP+``"+5"0HB40D&&:+AG`+``!2:@AJ -M.&:)1"0HC40D)%#HQ^O__XO8,\"!Y___``!79HN&<`L``(/`$B7__P``4(N& -M7`L``/]0"(/$)(O#6UY?@\0(PX/'`(UT)@"#[!!7,_]6BW0D'%-5BVPD*&:+ -M13!FJ0"`="2-73!J9(N&7`L``/]0-(O'1X/$!(/X9`^/D`(``&;W`P"`==]J -M9(N&7`L``/]0-&H",\!FBX9P"P``@\`N)?__``!0BX9<"P``_U`$:A8SP&:+ -MAG`+``"#P!8E__\``%"+AEP+``#_4`1J!C/`9HN&<`L``(/`%B7__P``4(N& -M7`L``/]0!&H`,\!FBX9P"P``@\`N)?__``!0BX9<"P``_U`$N0"````SP&:) -M35QFB8V(````:@%FBX9P"P``@\`H)?__``!0BX9<"P``_U`(@\0L,_]FBX6( -M````9JD`@'0GC9V(````:F2+AEP+``#_4#2+QT>#Q`2#^&0/CYL!``!F]P,` -M@'7?:F2+AEP+``#_4#1J`C/`9HN&<`L``(/`+B7__P``4(N&7`L``/]0!&H6 -M,\!FBX9P"P``@\`6)?__``!0BX9<"P``_U`$:@8SP&:+AG`+``"#P!8E__\` -M`%"+AEP+``#_4`1J`#/`9HN&<`L``(/`+B7__P``4(N&7`L``/]0!&;'A;0` -M````@#/;@\0DC;W@````9O<'`(!U"8/'+$.#^P5\\(/[!74",]N-%%N-%-K! -MX@*-A!7>````9HL09H'B``%FB1"-%%N-%-K!X@)FQX05X@``````C11;C13: -MP>("C805X````(E$)!QFQP``@#/`:@5FBX9P"P``@\`H)?__``!0BX9<"P`` -M_U`(BT0D)(/$"#/_9O<``(!T)XE<)!"+V&IDBX9<"P``_U`TB\='@\0$@_AD -M?TIF]P,`@'7CBUPD$#/`C0Q;9HN%L````#/2C0S9@\`$P>$"9HN4#=P````[ -MPG00N`0```!=6UY?@\00PX/'`%U;7C/`7X/$$,,[_UU;7K@#````7X/$$,.# -MQP!=6UZX`@```%^#Q!##@\<`75M>N`$```!?@\00PX/'`#O_@?\`````@^QH -M,\!7BWPD<%9356:+AW`+``!0BX=<"P``_U`@9HE$)'@SP&:+AW`+``"#P"0E -M__\``%"+AUP+``#_4"2)1"1@,\!FBX=P"P``@\`$)?__``!0BX=<"P``_U`D -MB40D8#/`9HN'<`L``(/`""7__P``4(N'7`L``/]0(&:)A"2"````,\!FBX=P -M"P``@\`J)?__``!0BX=<"P``_U`@9HF$)(0````SP&:+AW`+``"#P!(E__\` -M`%"+AUP+``#_4"!FB80DA@```#/`9HN'<`L``(/`#"7__P``4(N'7`L``/]0 -M)(N?%`L``(N7$`L``/?;B40D;#/`9HN'<`L``(/C!X/`$(N/%`L``(TT&B7_ -M_P``4(N'7`L```/9B9PD@````/]0(&C__P``,\!FBX=P"P``@\`0)?__``!0 -MBX=<"P``_U`(:@`SP&:+AW`+``!0BX=<"P``_U`(:!W@!P`SP&:+AW`+``"# -MP"0E__\``%"+AUP+``#_4`QJ`#/`9HN'<`L``(/`!"7__P``4(N'7`L``/]0 -M#&H`,\!FBX=P"P``@\`()?__``!0BX=<"P``_U`(:@`SP&:+AW`+``"#P"HE -M__\``%"+AUP+``#_4`@SP&:+AW`+``"#P#(E__\``%"+AUP+``#_4"`E_W\` -M`%`SP&:+AW`+``"#P#(E__\``%"+AUP+``#_4`@SP&:+AW`+``"#P!(E__\` -M`%"+AUP+``#_4"`E\.P``(/(`27__P``4#/`9HN'<`L``(/`$B7__P``4(N' -M7`L``/]0"&H",\!FBX=P"P``@\`N)?__``!0BX=<"P``_U`$,\!FBX=P"P`` -M@\`6)?__``!0BX=<"P``_U`<BM@SP(K#@\@0B(0DZ@```"7_````4#/`9HN' -M<`L``(/`%B7__P``4(N'7`L``/]0!&H`,\!FBX=P"P``@\`N)?__``!0BX=< -M"P``_U`$,\!FBX=P"P``@\`,)?__``!0BX=<"P``_U`D)?__```-```#`%`S -MP&:+AW`+``"#P`PE__\``%"+AUP+``#_4`QJ`C/`9HN'<`L``(/`+B7__P`` -M4(N'7`L``/]0!#/`BL.#X.^(A"0/`0``)?\```!0,\!FBX=P"P``@\`6)?__ -M``!0BX=<"P``_U`$:@`SP&:+AW`+``"#P"XE__\``%"+AUP+``#_4`2!Q*@` -M```SVXJ#`````$.#^PJ(A!ZW`0``<NTSVXE\)!"+1"1@C:[H````B40D:`7< -M````B40D9(M$)&`%N`$``(ET)!2)1"1,BT0D8`7(`0``N2P```")1"1(C8;D -M````B40D'(V&X@```(E$)""-AN````")1"0DC8;>````B40D*(V&W````(E$ -M)"R-1@R)1"0PC48(B40D-(U&!HE$)#B-1@2)1"0\C48"B_B+1"0\0V;'!A`` -MBU0D3&;'!P```_%FQP```(M$)#@#^6;'```&BT0D-(D0BT0D:`/!B40D:(M$ -M)#"+5"1H@\H!B1"+5"1(BT0D+&;'`!@`BT0D*&;'````BT0D)&;'``"`BT0D -M(&;'````BT0D'(D0BU0D9`/1BT0D/`/!B54`B40D/(M$)#B)5"1DBU0D-`/! -M`]&)1"0XBT0D,(E4)#2+5"0H`\$#T8E$)#"+1"0LB50D*(M4)!P#P0/1B40D -M+(M$)"0#P0/IB40D)(M$)"`#P8/[!8E$)"")5"0<#XP>____BT0D8(MT)!2+ -M?"00@\@!B8:\````N0"```!FBX:V````9@T``6:)AK8```"+1"1@9HE.!`7< -M````9HE.,(F&F`$``&:+AHX!``!F#0`!9HF&C@$``(M$)&`%W````%`SP&:+ -MAW`+``"#P#PE__\``%"+AUP+``#_4`R+3"1H,\!19HN'<`L``(/`."7__P`` -M4(N'7`L``/]0#%97Z&SW__^+\#/`9HN'<`L``(/`)"7__P``4(N'7`L``/]0 -M)`T````%4#/`9HN'<`L``(/`)"7__P``4(N'7`L``/]0#&IDBX=<"P``_U`T -MBX0DG````"7__P``4#/`9HN'<`L``%"+AUP+``#_4`B+A"2(````4#/`9HN' -M<`L``(/`)"7__P``4(N'7`L``/]0#(N4)(P````SP%)FBX=P"P``@\`$)?__ -M``!0BX=<"P``_U`,,\!FBX0DL@```%`SP&:+AW`+``"#P`@E__\``%"+AUP+ -M``#_4`B+A"2X````)?__``!0,\!FBX=P"P``@\`J)?__``!0BX=<"P``_U`( -M,\!FBX0DO@```%`SP&:+AW`+``"#P!(E__\``%"+AUP+``#_4`AJ`C/`9HN' -M<`L``(/`+B7__P``4(N'7`L``/]0!#/`BH0DU@```%`SP&:+AW`+``"#P!8E -M__\``%"+AUP+``#_4`1J`#/`9HN'<`L``(/`+B7__P``4(N'7`L``/]0!(N, -M),`````SP%%FBX=P"P``@\`,)?__``!0BX=<"P``_U`,:@(SP&:+AW`+``"# -MP"XE__\``%"+AUP+``#_4`0SP(J$)/<```!0,\!FBX=P"P``@\`6)?__``!0 -MBX=<"P``_U`$:@`SP&:+AW`+``"#P"XE__\``%"+AUP+``#_4`2!Q)````"% -M]G0:75N+QEY?@\1HP[@&````75M>7X/$:,.#QP`SP&:+AW`+``"#P"0E__\` -M`%"+AUP+``#_4"2#Q`2#X!2#^!1UREU;7C/`7X/$:,.-="8`,\"+5"0$9HM$ -M)`A0,\!FBX)P"P``@\`R)?__``!0BX)<"P``_U`(@\0(PY"-="8`@^P4,\!7 -MBWPD'%93:@!FBX=P"P``@\`N)?__``!0BX=<"P``_U`$,\!FBX=P"P``@\`R -M)?__``!0BX=<"P``_U`@B_!F@>;^_XO&)?__``!0,\!FBX=P"P``@\`R)?__ -M``!0BX=<"P``_U`(9H'F_?\SP('F__\``%9FBX=P"P``@\`R)?__``!0BX=< -M"P``_U`(BH=."P``)/Z(ATX+```SP&:+AW`+``"#P!(E__\``%"+AUP+``#_ -M4""#Q""+\&:#SA"[#P```&8CWH/["WX%NPL```"%VW0-C4O_NP$```#3X^L& -MD+L!````9H'F_^.*AW\+``"$P'0J,]*+PR7__P``BI=_"P``.\)\%V:!S@`8 -M9HN'@`L``&:I$`!T!6:!S@`$@>;__P``,\!69HN'<`L``(/`$B7__P``4(N' -M7`L``/]0"(/$"(J'?`L``(3`=2-H7"```#/`9HN'<`L``(/`""7__P``4(N' -M7`L``/]0#(/$",>'4`L``%P@``"+\X'C__\``('F__\``#/`1HJ'?PL``$.) -M="04.\-^!(E$)!2[``@``#/`*]Z)GU0+``!J`F:+AW`+``"#P"XE__\``%"+ -MAUP+``#_4`0SP&:+AW`+``"#P!8E__\``%"+AUP+``#_4!R(1"0K)?\```"# -MR!`E_P```%`SP&:+AW`+``"#P!8E__\``%"+AUP+``#_4`1H#Q`/`#/`9HN' -M<`L``(/`)"7__P``4(N'7`L``/]0#&@?$```,\!FBX=P"P``@\`H)?__``!0 -MBX=<"P``_U`,:@`SP&:+AW`+``"#P"XE__\``%"+AUP+``#_4`2+1"1`P>@! -M0,'@$`T``@``4#/`9HN'<`L``(/`#"7__P``4(N'7`L``/]0#,'K`C/`P>X! -MNOH#``#!XQ`KU@O:4V:+AW`+``"#P"`E__\``%"+AUP+``#_4`QJ`C/`9HN' -M<`L``(/`+B7__P``4(N'7`L``/]0!#/`BD0D8R7O````4#/`9HN'<`L``(/` -M%B7__P``4(N'7`L``/]0!&H`,\!FBX=P"P``@\`N)?__``!0BX=<"P``_U`$ -M:@`SP&:+AW`+``!0BX=<"P``_U`(@\1<OD````!FBX=R"P``9JF``'4#@\X" -M5C/`9HN'<`L``(/`)"7__P``4(N'7`L``/]0#&H`,\!FBX=P"P``@\`$)?__ -M``!0BX=<"P``_U`,@\00BX<<"P``B8<D"P``B8<@"P``BH=."P``#`B(ATX+ -M``"+AQ@+```]Z`$``'()5^CT\___@\0$@<X````',\!69HN'<`L``(/`)"7_ -M_P``4(N'7`L``/]0#&;'AT@+`````(/$"%M>7X/$%,.!_P````"!_P````"# -M[`Q75E-5C40D&(M4)"A04HM,)"R+="0H4>CAL/__@\0,A<`/A2X!``!H```` -M@(M$)!PE__\``(UX`S/`9HN&<`L``,'_`H/`%"7__P``4(N&7`L``/]0#(M$ -M)"!0,\!FBX9P"P``@\`8)?__``!0BX9<"P``_U`,@\00NP$````[^WY1C:YP -M"P``C40D&(M4)"A04HM,)"Q1Z&&P__^#Q`R%P'0+C4?_.]@/A:<```"+1"08 -M4#/`9HM%`(/`&"7__P``4(N&7`L``/]0#(/$"$,[WWRU:/"_`(`SP&:+AG`+ -M``"#P!0E__\``%"+AEP+``#_4`QHD.I0`#/`9HN&<`L``(/`&"7__P``4(N& -M7`L``/]0#&H`,\!FBX9P"P``@\`8)?__``!0BX9<"P``_U`,5HN&;`L``/]0 -M+&;'1@(A`&;'1@0``#/`@\0<75M>7X/$#,,[_UU;7K@!````7X/$#,.#QP`[ -M_X'_`````%.*7"0(9HM4)`RYP@```(3;=0F!R0`0``#K')"`^Q!U"X')``$` -M`.L.@\<`@/MD=0:!R0`"``#!X1"!R0!S``!F]\((`'0&@>'_[___9O?"!`!T -M!H'A_]___S/`BL.#^!!T!8/X!'4&@>'_O___BD0D$(3`=`.#R02+P5O#@\<` -M5XM\)`@SP,>'4`L```````!J`&:+AW`+``"#P"XE__\``%"+AUP+``#_4`0S -MP&:+AW`+``"#P`(E__\``%"+AUP+``#_4!R#R`8E_P```%`SP&:+AW`+``"# -MP`(E__\``%"+AUP+``#_4`2#Q!1?PX/L"#/`5U:+="049HN&<`L``(/`$B7_ -M_P``4(N&7`L``/]0((OX)?__``"#R"`E__\``%`SP&:+AG`+``"#P!(E__\` -M`%"+AEP+``#_4`B+AEP+``")1"04,\!FBX9P"P``:@*#P#!FB40D'#/`9HN& -M<`L``(/`+B7__P``4(N&7`L``/]0!(M4)"R-1"0<4FH(:CA0Z.;<__]J`#/` -M9HN&<`L``(/`+B7__P``4(N&7`L``/]0!('G__\``#/`5V:+AG`+``"#P!(E -M__\``%"+AEP+``#_4`B#Q#1>7X/$",,[_X'_`````('_`````(/L"#/`5U93 -MBW0D&&:+AG`+``"#P!(E__\``%"+AEP+``#_4""+^"7__P``@\@@)?__``!0 -M,\!FBX9P"P``@\`2)?__``!0BX9<"P``_U`(BX9<"P``B40D&#/`9HN&<`L` -M`&H"@\`P9HE$)"`SP&:+AG`+``"#P"XE__\``%"+AEP+``#_4`2+5"0PC40D -M(%)J"&HX4.AUV/__B]@SP&H`9HN&<`L``(/`+B7__P``4(N&7`L``/]0!('G -M__\``#/`5V:+AG`+``"#P!(E__\``%"+AEP+``#_4`B#Q#2+PUM>7X/$",,[ -M_X'_`````%!75HM\)!A3N0$```"+="08B$\PB`^(3P%FB7<0N00```!FB4\2 -M9H7.=`FX'````.L'._^X$````&;'1Q80`(O6,\EFB4\<@>+__P```]"+QF:) -M5Q0E__\``(/``HE/&"7__P``4(M$)!C_4!R*V(O&)?__``"#P`,E__\``%"+ -M1"0<_U`<B$0D%X/$"+@#````(L.*@`````"(1R"*1"0/J(!T$S/`BL,E_``` -M``T``0``B_#K!)!F,_:!YO__``#!Y@N)=RB*1"0/J`AT"<9'+!#K!X/&`,9' -M+`3&1QX$,\!FBT<4@\`()?__``!0BT0D&/]0'(/$!*D"````=##&1R$$BD<> -M#!B(1QZ-1R*+5"044#/`9HM'%%!2Z&]M__^#Q`RX`0```%M>7X/$!,,SP(I$ -M)`_!^`2#X`.*@`````"(1R$\!'4+BD<>#!"(1Q[KN9"*1QX,`XA''NNN._^# -M[`RY`0```%>+?"0<5HMT)!A358A/`8A/,(M$)"2Y!````&:)1Q!FA<AFB4\2 -MQ@<"=`FX'````.L'._^X$````&;'1Q80`(M4)"0SR6:)3QR!XO__```#T(M$ -M)"1FB5<4)?__``"#P`*)3QB+V"7__P``4/]6'(A$)!MJ!8O#)?__``!0_U8$ -MBT0D,"7__P``@\`#B^@E__\``%#_5AR(1"0KB\-J!B7__P``4/]6!(O%)?__ -M``!0_U8<BE0D-X/$'/;"`8A$)!IU!*B`="7&1QX`:@*+PR7__P``4/]6!(O% -M)?__``!0_U8<B$0D)6H#ZR.0QD<>!&H`B\,E__\``%#_5@2+Q27__P``4/]6 -M'(A$)"5J`8O#)?__``!0_U8$B\4E__\``%#_5AR(1"0P@\08N`<````B1"09 -MBH``````B$<@BT0D&*@!=`?&1RP0ZP60QD<L!(M$)!BH@'08N'@```"+5"08 -M(L(-``,``&:)1"04ZPB09L=$)!0``(M$)!0E__\``,'@"HE'*(I$)!JH0'0. -MQD<A!(I''@P(B$<>ZQ4SP(I$)!G!^`.#X`>*@`````"(1R&*1R$\!'5,BD<> -M#!"(1QYJ!HO#)?__``!0_U8$C4<B@>7__P``4&H\55;H:&___S/`@>/__P`` -MBD0D+U!3_U8$@\0@N`$```!=6UY?@\0,PX/&`(I''@P#Z[*0@?\`````@?\` -M````5XM\)`@SP&:+AW`+``"#P`(E__\``%"+AUP+``#_4!PE]P```%`SP&:+ -MAW`+``"#P`(E__\``%"+AUP+``#_4`2#Q`Q?PSO_._^!_P````!7BWPD"&H% -M,\!FBX=P"P``@\`")?__``!0BX=<"P``_U`$,\!FBX=P"P``@\`#)?__``!0 -MBX=<"P``_U`<)?<```!0,\!FBX=P"P``@\`#)?__``!0BX=<"P``_U`$@\04 -M7\.0@?\`````@?\`````4#/`5XM\)`QJ`F:+AW`+``"#P`(E__\``%"+AUP+ -M``#_4`0SP&:+AW`+``"#P`,E__\``%"+AUP+``#_4!R+5"0<@\0,BLBX!P`` -M`"+!@>+_````BH``````)?\````[PG16BT0D$"7_````BH``````B$0D!SP' -M=@JX`P```%^#Q`3#,\`STHK!BE0D!R7X````"\(E_P```%`SP&:+AW`+``"# -MP`,E__\``%"+AUP+``#_4`2#Q`@SP%^#Q`3#5XM\)`AJ`C/`9HN'<`L``(/` -M`B7__P``4(N'7`L``/]0!#/`9HN'<`L``(/``R7__P``4(N'7`L``/]0'(K( -M,\"#Q`R*P<'X`S/2@^`'BE0D#(J``````"7_````.\)T/HJ2`````#/`BL&! -MXO\```#!X@,EQP````O")?\```!0,\!FBX=P"P``@\`#)?__``!0BX=<"P`` -M_U`$@\0(7\.#QP"!_P````"!_P````!7BWPD"&H`,\!FBT<6@\`>)?__``!0 -MBX=<"P``_U`$:@A7Z#F2__^#Q!`E``L``#T``P``=1*X`0```(A'&U_#N`$` -M``!?PY!J!E?H$)+__X/$"*F`````=>8SP%_#._]J!#/`BU0D"&:+0A:#P!XE -M__\``%"+@EP+``#_4`2#Q`C#._^!_P````"!_P````"#[!`SP%>+?"085E-5 -M9HN'<`L``(/`'B7__P``4(N'7`L``/]0'(K8N`$````BPR7_````4#/`9HN' -M<`L``(/`'B7__P``4(N'7`L``/]0!#/`9HM'%H/`""7__P``4(N'7`L``/]0 -M((OPN``#``!F(\:#Q!`]``,```^%@`(``(O&)?__```-``@``"7__P``4#/` -M9HM'%H/`""7__P``4(N'7`L``/]0"#/`9HM'%H/`#B7__P``4(N'7`L``/]0 -M(&:)1"0J@\0,9H7`#X0.`@``,\!FBT<6@\`&)?__``!0BX=<"P``_U`@9HE$ -M)"`SP&:+1Q:#P`0E__\``%"+AUP+``#_4""+;"0D@\0(@>7__P``)?__``#! -MY1`+Z&:+AW(+``!FJ1``=%QF]\8`!'0I,\!FBT0D'E`SP%5FBT<6@\`0)?__ -M``!0BX=<"P``_U`H@\0,Z84!```SP&:+1"0>4#/`56:+1Q:#P!`E__\``%"+ -MAUP+``#_4!"#Q`SI7`$``(/'`#/`9HM$)![!^`)FB40D&+@#````9B-$)!YF -M]\8`!&:)1"06#X2;````BT0D&&:%P'0P)?__``!0,\!59HM'%H/`$"7__P`` -M4(N'7`L``/]0,#/`9HM$)"HE_/\```/H@\0,9HM$)!9FJ0(`="(SP&:+1Q:# -MP!`E__\``%"+AUP+``#_4""#Q0*#Q`1FB47^9HM$)!9FJ0$`#X2[````,\!F -MBT<6@\`0)?__``!0BX=<"P``_U`<B$4`@\0$Z9@```"#QP"+1"089H7`=#`E -M__\``%`SP%5FBT<6@\`0)?__``!0BX=<"P``_U`8,\!FBT0D*B7\_P```^B# -MQ`QFBT0D%F:I`@!T)3/`9HM%`%`SP&:+1Q:#P!`E__\``%"+AUP+``#_4`B# -MQ0*#Q`AFBT0D%F:I`0!T(3/`BD4`4#/`9HM'%H/`$"7__P``4(N'7`L``/]0 -M!(/$"%?H*6K__X/$!(7`=`HSP%U;7E^#Q!##O@$```#K#)!7Z+HT__^+\(/$ -M!#/`BL-0,\!FBX=P"P``@\`>)?__``!0BX=<"P``_U`$@\0(B\9=6UY?@\00 -MPSO_@?\`````5XM\)`AJ<3/`9HN'<`L``(/`'27__P``4(N'7`L``/]0!&H" -M,\!FBX=P"P``@\`?)?__``!0BX=<"P``_U`$:/$````SP&:+AW`+``"#P!TE -M__\``%"+AUP+``#_4`0SP&:+AW`+``"#P!\E__\``%"+AUP+``#_4!R#R`0E -M_P```%`SP&:+AW`+``"#P!\E__\``%"+AUP+``#_4`0SP&:+AW`+``"#P!XE -M__\``%"+AUP+``#_4!R#R`0E_P```%`SP&:+AW`+``"#P!XE__\``%"+AUP+ -M``#_4`2#Q#!?PSO_@?\`````@?\`````@^P@N0$```!7BWPD,%:+="0L4U6+ -M1"0XQ@<#)?__``"(3P&(3S!H-I0``(/`'6:)1"0NBT0D/"7__P``@\`>9HE$ -M)"R+1"0\)?__``"#P!]FB40D*HM$)"PE__\``%!6Z$N2__^#Q`R%P'4\75M> -M,\!?@\0@PSO_0X'[``$```^,(P$``(MT)!2+?"00,\"*1"0N4#/`9HM$)"I0 -M_U8$@\0(Z4D!``"09L='!(T09L='!@$`BT0D*"7__P``4/]6'(A$)#,E]P`` -M`%"+1"0P)?__``!0_U8$:@8SP&:+1"0Z4/]6!#/`9HM$)#I0_U8<9L='$B`` -M9HE'#(M$)%!FB4<0,\!FBT0D0C/)9HE/%F:)3Q2)3QAFB4\<:G!0_U8$,\!F -MBT0D1E#_5AR(1R!H^````#/`9HM$)%)0_U8$,\!FBT0D4E#_5AR(1"1>@\0P -MJ"#'1"0@``````^$C````,9''P(EWP```%`SP&:+1"0J4/]6!(M$)$`E__\` -M`%#_5AR-;AR)?"0<B70D((U6!(M$)$2[J@```"7__P``B_*#P`N#Q`R+^#/` -MBL-0B\<E__\``%#_%FIA_U4`B\<E__\``%#_50`STH/$$(K3.\(/A*+^___' -M1"0@`0```(MT)!2+?"00Z:+^__^0QD<?`(M$)"@E__\``%#_5AR#Q`2I`0`` -M`'4(BT0D((7`=!'&1QX(QD<?`L9'(03K)8/&`,9''@!J=#/`9HM$)"Y0_U8$ -M,\!FBT0D+E#_5AR(1R&#Q`R*1R$\!'0(BD<>#`.(1QYH_0```#/`9HM$)"Y0 -M_U8$C4<B4#/`9HM$)#)J/%!6Z,ME__]J0#/`9HM$)$90_U8$,\!FBT0D1E#_ -M5AS!X!")1RAJ03/`9HM$)%)0_U8$,\!FBT0D4E#_5AS!X`B+5R@+PHE'*&CW -M````,\!FBT0D7E#_5@0SP&:+1"1>4/]6'(/$/*D!````=`G&1RP0ZP>#Q@#& -M1RP$,\"*1"0O4(M$)"PE__\``%#_5@2X`0```(/$"%U;7E^#Q"##C70F`%>+ -M?"0(,\!FBX=P"P``@\`>)?__``!0BX=<"P``_U`<)?<```!0,\!FBX=P"P`` -M@\`>)?__``!0BX=<"P``_U`$:/X````SP&:+AW`+``"#P!TE__\``%"+AUP+ -M``#_4`0SP&:+AW`+``"#P!\E__\``%"+AUP+``#_4!R#R$`E_P```%`SP&:+ -MAW`+``"#P!\E__\``%"+AUP+``#_4`1J%(N'7`L``/]0-(/$)%_#5XM\)`AJ -M<#/`9HN'<`L``(/`'27__P``4(N'7`L``/]0!#/`BD0D%%`SP&:+AW`+``"# -MP!\E__\``%"+AUP+``#_4`0SP(/$$%_#D(UT)@!7BWPD"%,SP&:+AW`+``"# -MP!XE__\``%"+AUP+``#_4!R*V#/`BL,E]P```%`SP&:+AW`+``"#P!XE__\` -M`%"+AUP+``#_4`1J=#/`9HN'<`L``(/`'27__P``4(N'7`L``/]0!#/`BD0D -M)%`SP&:+AW`+``"#P!\E__\``%"+AUP+``#_4`0SP(K#4#/`9HN'<`L``(/` -M'B7__P``4(N'7`L``/]0!(/$)%M?PX/'`%"+1"085XM\)"!6BW0D%%.Y!``` -M`,9'`0/&1S`!B`>+1"0@9HE'!(M$)!QFB4<,9H7.9HEW$&:)3Q)T"+@<```` -MZP:0N!````!FQT<6$`"+UC/)9HE/'('B__\```/0B\9FB5<4)?__``")3QA0 -MBT0D&/]0'(K8B\8E__\``$`E__\``%"+1"0<_U`<B$0D%X/$"+AP````(D0D -M#X/X<'4+QD<>,,9'(03K&I#&1QXBBT0D(&8]A`IU![`B#`&(1Q[&1R'_N`,` -M```BPXJ``````(A'((I$)`^H@'03,\"*PR7\````#0`!``"+\.L$D&8S]H'F -M__\``,'F"XEW*(I$)`^H"'0EQD<L$(U'(HM,)!10,\!FBT<44%'H0%[__X/$ -M#%M>7X/$!,,[_\9'+`3KV3O_@?\`````@?\`````@^P,5[\!````5E-5BVPD -M(,=$)!@`````C74$BU0D)#OZ=&6-1P<E_P```%!HE@```/\6:`$!``#_51S! -MX`AH``$``(O8_U4<@\00"\,]A`H```^$I````#V%"@``=`<]A@H``'4B:`(! -M``#_51S!^`2#X`.+R+@!````T^`+1"0<B40D'(/$!$>#_PA^C6H`B_5HE@`` -M`/]6!#/;@\0(BVPD)(M\)"B+R[@!````T^"+5"08A=!U7#/`9HL$70````!0 -M5NA'C?__@\0(@_@%=4-7:@1HA`H``%4SP&:+!%T`````4%;HU?W__[@!```` -M@\0875M>7X/$#,.0:@!HE@```/\6@\0(,\!=6UY?@\0,PSO_0X/[!'R-75M> -M,\!?@\0,PX'_`````('_`````%>+?"0(BT0D#(/`!R7_````4&B6````_U<$ -MBU0D&(M,)!12:@5HA0H``%%H`@$``/]7','X!%F#X`-FBP1%`````"7__P`` -M4%?H0OW__X/$(+@!````7\,[_X'_`````%>+?"0(BT0D#(/`!R7_````4&B6 -M````_U<$BU0D&(M,)!12:@9HA@H``%%H`@$``/]7','X!%F#X`-FBP1%```` -M`"7__P``4%?HXOS__VH`:)8```#_5P2#Q"BX`0```%_#._^!_P````"!_P`` -M``"#[!17OP$```!64U6+;"0HQT0D&`````"-=02-71R-1P<E_P```%!HE@`` -M`/\6:`$!``#_$\'@"(E$)!QH``$``/\3BU0D((/$$`O"9HE$)"(SP&:+1"0B -M/80*```/A(T````]A0H```^$E@```#V&"@``#X2W````Z1H!```[_XM,)#"+ -M1"0<46H$:(0*``!0BT0D/"7__P``4%/H'_S__X/$&+@!````75M>7X/$%,.# -MQP!J`&B6````_Q:+3"0X,\!1:@5FBT0D,E"+1"1`5R7__P``4%7HX_O__[@! -M````@\0@75M>7X/$%,.#QP"+5"08B7PD'$*)5"08Z98````[_V@"`0``_U4< -MBU0D,(/$!,'X!('B__\``(/@`V:+!$4`````)?__```[PG2$:`(!``#_51R+ -M5"0P@\0$P?@$@>+__P``@^`#9HL$10`````E__\``#O"=3QJ`&B6````_Q:+ -M1"0X4#/`:@9FBT0D,E"+1"1`5R7__P``4%7H._O__X/$(+@!````75M>7X/$ -M%,.#QP!'@_\(#XY\_O__:@"+W6B6````_U,$BT0D((/$"(7`=#>#^`$/A+[^ -M__^+5"0PBT0D+%)J!&B$"@``:@`E__\``%!3Z.#Z__^#Q!BX`0```%U;7E^# -MQ!3#75M>,\!?@\04PSO_C70F`%>+?"0(9HN'<@L``&:I`@!T5S/`BH=["P`` -M@\`')?\```!0:)8```"+AUP+``#_4`1H`@$``(N'7`L``/]0'(/(#B7_```` -M4&@"`0``BX=<"P``_U`$:@!HE@```(N'7`L``/]0!(/$'%_#D(UT)@!05U:+ -M="044XM<)""+?"0D@?L]@PD!=0C&!P?K!H/&`,8'",9'`0+&1S`!9HEW$+D$ -M````9HE/$F:%SHM$)!R)7P1FB4<,=`BX'````.L&D+@0````9L='%A``B]8S -MR6:)3QR!XO__```#T(O&9HE7%"7__P``B4\84(M$)!C_4!R(1"03B\8E__\` -M`$`E__\``%"+1"0<_U`<BM@SP(/$"(K#P?@$B]:#X`.!XO__``!FBP1%```` -M`"7__P``.\)T"C/`6UY?@\0$PY"X`P```(I4)`\BPO;#0(J``````(A'('0+ -MQD<>,,9'(03K"9#&1QXBQD<A__;#@'07,\"*1"0/)?P````-``$``(OPZP:# -MQP!F,_:!YO__``#!Y@OVPPB)=RAT",9'+!#K!CO_QD<L!(U'(HM,)!10,\!F -MBT<44%'H9UC__X/$#+@!````6UY?@\0$PSO_@?\`````5U:+1"00P>`,B_@E -M__\```6`#```)?__``!0BT0D$/]0)(/$!(OP@?X]@PD!=`B!_CV#"0)U(XO' -M)?__```%A`P``"7__P``4(M$)!#_4!R#Q`2I`0```'4*N`$```!>7\,[_X'G -M__\``(M$)`R!QX<,``"!Y___``!7_U`<P?@$BU0D&%)6@^`#BTPD'%%FBP1% -M`````"7__P``4(M$)"!0Z/G]__^#Q!A>7\.#QP!7BT0D"%9353/_C5@DB\?! -MX`R+\"7__P``!8`,```E__\``%#_$X/$!(OH@?T]@PD!=`R!_3V#"0(/A8$` -M``"+QB7__P``!80,```E__\``%"+1"08_U`<@\0$J0$```!T7H'F__\``(M$ -M)!2!QH<,``"!YO__``!6_U`<P?@$@\0$@^`#,])FBU0D&&:+!$4`````)?__ -M```[PG4CBU0D'#/`4E57BTPD(&:+1"0D4%'H.OW__X/$%%U;7E_#._]'@_\0 -M#XQ#____75M>,\!?PX/'`('_`````('_`````%>+?"0(9HN'<@L``&:I`@!T -M/C/`9HN'<`L``$`E__\``%"+AUP+``#_4!R#R$`E_P```%`SP&:+AW`+``!` -M)?__``!0BX=<"P``_U`$@\0,7\,[_X'_`````('_`````%>+?"0(:@`SP&:+ -M1Q:#P!0E__\``%"+AUP+``#_4`0SP&:+1Q:#P`@E__\``%"+AUP+``#_4""# -MQ`PE``L``#T``P``=1*X`0```(A'&U_#N`$```!?PY`SP&:+1Q:#P`8E__\` -M`%"+AUP+``#_4""#Q`2I@````'76,\!?PSO_5XM\)`B*1QN$P'4B,\!FBT<6 -M@\`&)?__``!0BX=<"P``_U`@@\0$J8````!T'K@!````7\.#Q@#&1QL!5^AN -MC?__N`$```"#Q`1?PU?HCHO__X/$!(7`==\SP%_#@\<`:@`SP(M4)`AFBT(6 -M@\`4)?__``!0BX)<"P``_U`$,\"#Q`C#@?\`````@?\`````:,`````SP(M4 -M)`AFBT(6@\`4)?__``!0BX)<"P``_U`$@\0(PX/'`#O_@?\`````5XM\)`@S -MP&:+AW`+``"#P!(E__\``%"+AUP+``#_4!R#X#]0,\!FBX=P"P``@\`2)?__ -M``!0BX=<"P``_U`$@\0,7\.!_P````"!_P````!0BT0D"(I`&X3`=2J+1"0( -M9HM`%B7__P``@\`5)?__``!0BT0D#(N`7`L``/]0'(/$!*C`=`JX`0```(/$ -M!,.0,\"#Q`3#._\[_X'_`````%>+?"0(:@`SP&:+1Q:#P!0E__\``%"+AUP+ -M``#_4`0SP&:+1Q:#P!4E__\``%"+AUP+``#_4!R#Q`RHP+@`````7P^5P,,[ -M_SO_@?\`````5S/_4V:+7"0,BPR]`````(7)=!@SP(O39HM!"('B__\``#O" -M=`Y'@_\1<MTSP%M?PX/'`%N+P5_#@\<`C70F`%<S_U.+7"0,BPR]`````(7) -M=`V+400[TW0.1X/_$7+H,\!;7\.#QP!;B\%?PX/'`%<S_U93,]**3"089HM\ -M)!3!YQ!FBU0D$`OZ,_:+'+4`````A=MT-XL3]\+`CP``=">+0P2+UR4`____ -M@>(`____.\)U$S/`,]**0PJ*T3O"=0:+PUM>7\-&@_X1<KY;7C/`7\.!_P`` -M``"!_P````"X[!```,,[_SO_@?\`````@^P(5XM$)!!6BW0D)(L0BWPD&('Z -M(($``'097K@$````7X/$",,[_[@"````7E^#Q`C#D&CL$```5^B!>___9L=' -M`@``9L<'4I0SR8M$)!R(CYP+``")AUP+``"+1"0DB8=D"P``BT0D*(F'8`L` -M`#/`B8\8"P``B@90Z)#^__^#Q`R%P(F':`L``'2;9@^V!F:)1P:+AV@+``"+ -M0$")AVP+``!FBT809HF'<`L``(N':`L``(M`0&:#.`)U&F:+1A1FA<!T"6:) -M1Q;K"X/'`&:+1A!FB4<69HM&+F:)AX`+``"*1BV(AW\+``"+AVP+``"%P'0) -M:@!7_U`$@\0(BX=H"P``BT@XA<ET!U?_4#B#Q`2*1B*(AX(+``"*1B.(AX,+ -M``"*1B2(AX0+``"*1B6(AX4+``"*1B:(AX8+``"*1B>(AX<+``"*1B&(AWH+ -M``"*1AZ(AWD+``"*1@R(AWL+``"*1BP\!'4-9L>'<@L`````ZPL[_V;'AW(+ -M```!`(I&'J@!="AFBX=R"P``9@T``6:)AW(+``"+1"0</13O_P!V"UZX`P`` -M`%^#Q`C#BD8>J`AT$F:+AW(+``!F#00`9HF'<@L``(I&'J@$=!)FBX=R"P`` -M9@T`(&:)AW(+``"*1A^H$'029HN'<@L``&8-0`!FB8=R"P``9HM'!F8]`P!U -M-&:+1@QFA<!T$F:+AW(+``!F#0@`9HF'<@L``(I&'Z@"=!)FBX=R"P``9@T0 -M`&:)AW(+```SP&:+1P:#^`MT!8/X#'4'N`$```#K`C/`A<!T&8I&'Z@!=!)F -MBX=R"P``9@T`$&:)AW(+``!FBT<&9CT-`'(>BD8?J`AT%V:+AW(+``!F#8`` -M9HF'<@L``.@I<___BX=L"P``A<!T%U?_4`R#Q`2%P'4,7K@!````7X/$",.0 -M9L='`A``BX=L"P``9H,X`74$QD<:`%XSP%^#Q`C#._\[_X'_`````%:+="0( -M9HN&<@L``&:I`$!T"K@!````7L.#QP`SP&:+!CU2E```=21FBT8"9CT@`'8: -MBH9\"P``A,!U"E;_EJ0+``"#Q`3^AGP+```SP%[#,\"+5"0$9HL"/5*4``!U -M*F:+0@)F/2``=B"*@GP+``"$P'06_LB(@GP+``"$P'4*4O^2J`L``(/$!,.0 -MC70F`#/`BU0D!&:+`CU2E```=1AFBT("9CT@`'8.4O^2K`L``(/$!,.#QP`S -MP,.0C70F`%<S_U:+="0,,\!FBP8]4I0``'4D9HM&`F8](`!V&E;_EK`+``"# -MQ`2+^(/_`7X)5N@+=O__@\0$B\=>7\.#QP`SP(M4)`1FBP(]4I0``'4@9HM" -M`F8](`!V%E+_DK`+``"#Q`2%P+@`````#Y7`PY`SP,.0@?\`````@?\````` -M,\"+5"0$9HL"/5*4``!U$V:+0@)F/2``=@E2Z*!U__^#Q`3#@?\`````@?\` -M````@^P0,\F+5"04BH$`````08/Y2XB$"D,0``!R[8J"@@L``(B"3!```(J" -M@@L``(B"=1```(J"W!```(B"7Q```(J"@PL``(B"31```(J"@PL``(B"=A`` -M`(J"W1```(B"8!```(J"A`L``(B"3A```(J"A`L``(B"=Q```(J"WA```(B" -M81```(J"A0L``(B"3Q```(J"A0L``(B">!```(J"WQ```(B"8A```(J"A@L` -M`(B"4!```(J"A@L``(B">1```(J"X!```(B"8Q```(J"APL``(B"41```(J" -MAPL``(B">A```(J"X1```(B"9!```(J"3!````R`B(),$```9L<$)`$`BX)D -M"P``9L=$)`Q+``5$$```B40D!(V"1!```(E$)`AFBX*\#@``9H7`=!)J`6H` -MC40D"%!2Z,UO__^#Q!"#Q!##._^-="8`4#/`5XM\)`Q69HM'`H7`#X2;```` -M@_@0#X2:````@_@P#X21````@_A0=`F#^&`/A<\```"*AWT+``"H`P^$FP`` -M`%>+AVP+``#_4"@STH/$!(OP)?__``!FBY>0$```*\)FB40D"&8]H`]V5XJ' -M?0L``"3\B(=]"P``:``!``!7BX=L"P``_U`<:@`SP&:+AY`0``"!YO__``!0 -M5FH":@!J!5?H1VW__X/$).LP._\SP%Y?@\0$PUZXZ`,``%^#Q`3#D(M$)`AF -M/;@+=A!FB;>0$```5^C5_?__@\0$BI>/$```BL+^PJ@'B)>/$```=1)H@``` -M`%>+AVP+``#_4!R#Q`A7BX=L"P``_U`0@\0$7E^#Q`3#D#O_@?\`````4XM$ -M)`AFBU`$9O](!&:%TG4*N/____];PX/'`(M4)`B+1"0,BPJ[`0````/9B1J* -M$8@06S/`PY`[_X'_`````(/L#%:+="049HM&`F8]$`!U"HN&;`L``(7`=1A> -MN`(```"#Q`S#._^X`0```%Z#Q`S#._^+1"089HL`)?__```]4I0``'7ABT0D -M&(N6;`L``&:+0`)FBQ(E__\``('B__\``#O"=<&+1"08@\`$B40D!(M$)!AF -MBT`$9HE$)`B*AGH+```\!'5?BXYH"P``BY9H"P``9HM)#('A__\``(')`(`` -M`&8+CG(+``!FB8YR"P``BU(@B9:L"P``BY9H"P``BU(8B9:P"P``BY9H"P`` -MBU(HB9:D"P``BY9H"P``BU(PZU&#QP"+CF@+``"+EF@+``!FBTD.9@N.<@L` -M`&:)CG(+``"+4B2)EJP+``"+EF@+``"+4AR)EK`+``"+EF@+``"+4BR)EJ0+ -M``"+EF@+``"+4C2)EJ@+``"-1"0$4&@`````5HN&;`L``/]0&(/$#%Z#Q`S# -M._^!_P````!0BT0D"%>*$(UX`832=29'BD__A,EU'D>*5_^$TG461XI7_X32 -M=0Y'BD__A,EU!HH'A,!T!S/`7X/$!,-?N`$```"#Q`3#._\[_X'_`````%>+ -M?"0(9HM'`F8]00!V/XM4)`Q25XN';`L``/]0"(M$)!2#Q`B%P'0E5^AQ:___ -MBX]@"P``48N'7`L``/]0/&;'1P0``&;'1P(B`(/$"%_#BU0D!(M$)`B)@I`+ -M``!FBT("9CU!`'(/:D!2BX)L"P``_U`<@\0(PSO_@?\`````BU0D!(M$)`B) -M@I0+``!FBT("9CU!`'8/:B!2BX)L"P``_U`<@\0(PSO_@?\`````5XM\)`A3 -MBD0D$(J??0L``(B'?0L``&:+1P)F/4$`=D4/OL,STHI4)!`SPJD#````=!)H -M``$``%>+AVP+``#_4!R#Q`B*1"00J`-T&?;#`W445XN';`L``/]0*&:)AY`0 -M``"#Q`1;7\,[_X'_`````%>+?"0(5F:+1P)F/4$`=BR+1"04A<!U),:'?@L` -M``%H@````%>+AVP+``#_4!RX`0```(/$"%Y?PX/'`%>-MY00``"+1"04N18` -M``"+^#/`\Z5?7E_#._\[_X'_`````(M$)`0/OX"\#@``PXUT)@"+3"0$9HM! -M`F8]4`!S#K@!````P[@"````PSO_#[^1O`X``(M$)`A*9HL`)?__```[PGW@ -M:@"+5"004HM$)!!04>C::O__,\"#Q!##C70F`(M4)`2X(`````^_DK0+```K -MPL.0@?\`````@?\`````5U:+="0,9HN&M`L``&8](`!\$5ZX`@```%_#D+@$ -M````7E_#9HN&<@L``&:I``%T$8M$)!B+5"04`\(]`````7?:9HM&`F8]00!S -M"%ZX`0```%_#9HN&F@L``&:I`@!T&S/`BTPD&&:+AI@+```[R'T*7K@#```` -M7\,[_XJ&N`L``+D?````(LB+5"00C0Q)P>$#C;P.O`L``(D7BU0D%(E7!&:+ -M5"089HE7"(M4)!R)5Q1FBT8"9CU0`'(.5U:+AFP+``#_4"2#Q`AF_X:T"P`` -MBI:X"P``_L(SP(B6N`L``%Y?PX/'`#O_@?\`````:@&+5"0(4HN";`L``/]0 -M!(/$",.!_P````"!_P````!05E.+="00BGPD%&:+1@)F/1``=`M;N`$```!> -M@\0$PV:+AG(+``!FJ0`@=4\SP(K'A<!T)X/X!'0L@_@0=">#^&1U"F:+1@9F -M/1,`=!BX`@```%M>@\0$PX/'`(J&>0L``*B`=!8SP&:+1@9(@_@2=PK_)(4D -M!P``@\<`6[@#````7H/$!,.0:@,SP&:+AG`+``"#P`(E__\``%"+AEP+``#_ -M4`0SP&:+AG`+``"#P`,E__\``%"+AEP+``#_4!R(1"07@\0,J`%T";@0```` -MZP<[_[@$````,]**USO"#X2?`0``,\"*1"0+@_`!)?\```!0,\!FBX9P"P`` -M@\`#)?__``!0BX9<"P``_U`$@\0(Z6T!``"0:/<````SP&:+AG`+``"#P!TE -M__\``%"+AEP+``#_4`0SP&:+AG`+``"#P!\E__\``%"+AEP+``#_4!R#Q`R* -MV/;#`70'N!````#K!;@$````,]**USO"#X0/`0``,\"*PX/P`27_````4#/` -M9HN&<`L``(/`'R7__P``4(N&7`L``/]0!(/$".G?````@\<`,\!FBX9P"P`` -M0"7__P``4(N&7`L``/]0'(/$!(K8]L,(=`FX$````.L'._^X!````#/2BM<[ -MP@^$GP```#/`BL.#\`@E_P```%`SP&:+AG`+``!`)?__``!0BX9<"P``_U`$ -M@\0(ZW0SP&:+AG`+``"#P!`E__\``%"+AEP+``#_4!R#Q`2*V/;#@'0'N!`` -M``#K!;@$````,]**USO"=#LSP(K#-8`````E_P```%`SP&:+AG`+``"#P!`E -M__\``%"+AEP+``#_4`2#Q`CK#(B^G0L``(B^G@L``(#_$'4/9HN6<@L``&:# -MR@'K#CO_9HN6<@L``&:!XO[_9HF6<@L``%LSP%Z#Q`3#D('_`````('_```` -M`(M4)`2*3"0(9HM"`F8]$`!T#K@!````P[@"````PSO_9HN"<@L``&:I""!U -M$H#Y#W?FBX)H"P``BT!$A<!U";@#````PX/'`#/`BL%04HN":`L``/]01#/` -M@\0(PX/'`%:+="0(4XI<)!!FBT8"9CT0`'006[@!````7L.X`P```%M>PV:+ -MAG(+``!FJ0`@=>LSP(K#@_@'?@L]_P````^%ZP$``#/`9HM&!DB#^`MWR_\D -MA7`'```SP(K#@_@"#X3+`0``@_@$#X2^````/?\````/A+<!``!FBX9R"P`` -M9JD$`'66BX9D"P``/13O_P!WB8J6>0L``(#*`XB6>0L``(#B[XB6>0L``.DW -M`0``,\"*PX/X!'1#/?\````/A&P!``!FBX9R"P``9JD,``^%1____XN&9`L` -M`#T4[_\`#X<V____BI9Y"P``@,H#B)9Y"P``Z>T````[_XJ6>0L``(#B_(B6 -M>0L``.G7````,\"*PX/X!'03/?\````/A&+____I!P$``(/'`(J6>0L``(#B -M_(B6>0L``(#*$(B6>0L``.F>````@\<`,\"*PX/X!'0G/?\````/A=````"* -MEGD+``"`R@*(EGD+``"`XN^(EGD+``#K;3O_BI9Y"P``@.+]B)9Y"P``@,H0 -MB)9Y"P``ZU$[_X#[!'1*Z8X````[_S/`BL.#^`1T*SW_````=7QFBX9R"P`` -M9JD`$`^%5_[__XJ6>0L``(#*`HB6>0L``.L1._^*EGD+``"`XOV(EGD+``"+ -MAF@+``"+0$B%P'02,\"*PU!6BX9H"P``_U!(@\0(BT0D%(B>>@L``(J6>0L` -M`(@0BH9Y"P``J`%T%F:+EG(+``!F@<H``>L46[@"````7L-FBY9R"P``9H'B -M__YFB99R"P``6S/`7L-0N/\#``!75E.+7"04BW0D&&8CQB7__P``/4`"```/ -MA/,````]@`(```^$Z````#W``@``#X3=````/0`#```/A-(````](`,```^$ -MQP```#U``P``#X2\````/6`#```/A+$```"+QB7__P``4/]3'(/$!"7B```` -M@_@B#X65````B\8E__\``(/``R7__P``4/]3'(/$!"7`````@_A`=76+QB7_ -M_P``@\`$)?__``!0_U,<@\0$J2````!U6(O&)?__``"#P`DE__\``%#_4QS! -MX`B+^(O&)?__``"#P`@E__\``%#_4QR#Q`@+QV:%P'0C9JD!`'4=@>;__P`` -M@\8,@>;__P``5O]3'(/$!*D(````=`DSP%M>7X/$!,-;7E^X`0```(/$!,.- -M="8`@^P05U9358U$)!^+;"0DB40D%&CX#```_U4<,_^#Q`2*V(UU'&IA_Q9H -M^`P``/\6,]*#Q`B*TSO0=`F_`0```.L0._]'@_\R?-N+1"04,_^(&(7_#X7) -M````BD0D'Z@!#X6]````C40D'XE$)!1H^@P``/]5'#/_@\0$BMB-=1QJ8?\6 -M:/H,``#_%C/2@\0(BM,[T'0*OP$```#K$8/'`$>#_S)\VHM$)!0S_X@8A?]U -M<6CX#```_U4<B$0D(X/$!"7_````J?````!T$X/@#H/X"+@`````#Y3`ZP6# -MQP`SP(7`=3UJ#FCX#```_U4$:F'_51QH^`P``/]5'(/$$(/X#G4>:@!H^`P` -M`/]5!&IA_U4<:/@,``#_51R#Q!"%P'0-,\!=6UY?@\00PX/'`%U;7K@!```` -M7X/$$,.#QP"#[`Q6BW0D%%-6Z`$&``"#Q`2%P'4C5NBD_O__@\0$A<!T";H" -M````ZQ@[_U;H7@8``(/$!(7`=`>Z`0```.L",]*%TG1"@_H!=$&#^@)U+FH0 -M:/@,``#_5@2+5"0LBTPD*%)1BT0D+%!6Z.$#``!J`(O8:/@,``#_5@2#Q""+ -MPUM>@\0,PSO_,]OK\HM4)"2+3"0@4E&+1"0D4%;HCP(``(O8@\00Z]8[_X'_ -M`````%>+1"0(5HMT)!2+$(M\)!"!^B"!``!T$%ZX`P```%_#N`$```!>7\,S -MP(I&"%`SP&:+1@)0,\!FBP90Z/#J__^#Q`R+R(7)=->*1@Z$P'709HM&!&:I -M`0!TQF:+%HM$)`QFB5<$9HM6`F:)5P:*5CR(5R"+5C"#XOR)5RB*5@R(5RUF -MBU8$9HE7+HI1"(@75U90_U$4@\0,7E_#D(UT)@"#[`Q3BT0D%(L0@?H@@0`` -M=!);N/____^#Q`S#,\!;@\0,PY"+1"0<P>`,B]@E__\```6`#```)?__``!0 -MBT0D&/]0)%#H%NK__XE$)`R#Q`B%P'3',\!FB\,%A`P``"7__P``4(M$)!C_ -M4!R#Q`2I`0```'2FBTPD&(M$)!Q14(M4)!R+1"0,4O]03(/$#%N#Q`S#@?\` -M````@?\`````@^P,5XM\)!13BQ>!^B"!``!T%5NX_____U^#Q`S#._\SP%M? -M@\0,PXM$)""#P`<E_P```%!HE@```/]7!&@!`0``_U<<P>`(:``!``"+V/]7 -M'&H`"\.+V&B6````_U<$@>/__P``4^A4Z?__B40D*(/$'(7`=*F+3"0<BT0D -M(%%05XM$)!C_4$R#Q`Q;7X/$#,,[_X'_`````('_`````%=64XMT)!0SP(M< -M)"2*1@A0,\!FBT8"4#/`9HL&4.@MZ?__@\0,B_B%_W0*BT0D((L7A=!U"K@! -M````6UY?PY!FBQ:+3"009HE3!&:+5@)FB5,&9@^V5"089HE3#&8/ME0D'&:) -M4PZ*5CR(4R"+5C"#XOR)4RB*5@R(4RUFBU8$9HE3+HI7"(@34U91_U<4@\0, -M6UY?PSO_._^!_P````"#[%@SR5=64U6+1"1PBW0D=(E$)&"+1"1LB4PD9('F -MP(\``(E,)%B-6`R->"2+1"18P>`+#0```(!0B40D8&CX#```_Q,S[8/$"(ET -M)!"+="1<C44`"\90:/@,``#_$VC\#```_Q>)1"P@@\0,@\4$@_U`?-V+5"1@ -MBW0D$%)6BT0D8(M,)'2#X!]0BT0D9,'X!27_````4(U$)"104>B]_O__@\08 -MA<!T-8/X`G5+BT0D7(/(!%!H^`P``/\3BT0D("7__P``@\@$)?\```!0BT0D -M>&C\#```_U`$@\00_T0D9(M$)'B+5"1D.]!]'XM,)&"#P32)3"1@BT0D6$") -M1"18/0`"```/C!____]=6UZ+1"187X/$6,,[_XUT)@"#[&`SR5=64U6+1"1X -MB4PD:(E$)&"+1"1TB4PD9(UP!(UX((M$)&0E_P```%!H^@P``/\6QT0D9``` -M``"#Q`B+1"1<P>`(#0#```"+Z"7__P``4/\7@\0$/8T0```/A<H```")?"00 -MBT0D=(ET)!0S]HU8)+\0````B\6-%+4`````)?__```+PB7__P``4/\3B42T -M'(/$!$8[]WS<B\Z+="04BU0D8('A_P```%*+A"2`````)<"/``"+?"044(M$ -M)&11BXPD@````"7_````4(U$)"A04>AD_?__@\08A<!T+(/X`G5%BT0D'('E -M__\``"7__P``@\T$@\@$@>7__P``)?\```!05?\6@\0(_T0D:(N$)(````"+ -M5"1H.]!],HM,)&"#P32)3"1@BT0D7$")1"1<@_@0#XP`____BU0D9$*)5"1D -M@?H``0``#XS/_O__75M>BT0D7%^#Q&##5U9356:+;"08BW0D%(O%)?__``!0 -M_U8<,_^#QAR*V(/$!&IA_Q:+Q27__P``4/\6,]*#Q`B*TSO0=`VX`0```%U; -M7E_#@\<`1X/_,GS4BT0D'(@875M>,\!?PY"-="8`5XM\)`AH^`P``/]7)(/$ -M!*D```!_=4AH````@&CX#```_U<,:F'_5QQH^`P``/]7)(/$$#T```"`=21H -MIP,`@&CX#```_U<,:F'_5QQH^`P``/]7)(/$$#VD`P"`=`4SP%_#D&H`:/@, -M``#_5PR#Q`BX`0```%_#._^!_P````!7BWPD"&CX#```_U<D@\0$J0```']U -M2&@```"`:/@,``#_5PQJ8?]7'&CX#```_U<D@\00/0```(!U)&BD`P"`:/@, -M``#_5PQJ8?]7'&CX#```_U<D@\00/:0#`(!T!3/`7\.0:@!H^`P``/]7#(/$ -M"+@!````7\,[_X'_`````(M4)`12Z/;^__^#Q`2%P'47BTPD!%'HE??__X/$ -M!(7`=`ZX`@```,.X`0```,,[_XM$)`10Z$;___^#Q`2%P'7G,\##@?\````` -M@?\`````BTPD!&:+00)F/1``=`ZX`0```,.X`P```,,[_V:+009F/0T`<NZ+ -M5"0(,\")D1`+``"+5"0,B9$4"P``BU0D$(F1&`L``,.058OL5E>+=0B+?0R+ -M31#SI%]>7<-`*",I=')L;&0N8R`D4F5V:7-I;VXZ("`@,2XP("`D`$]L:6-O -M;2!44DQ,1"`Q+C(N,"`*)`I0"E0*,`I`"F`*<`H)`PH+0`*``L`"``,@`T`# -M8`,"```````````````````````````````````````````````````````` -M``````````````````````#\%P``:1@``&D8``!I&```8!@``&D8``!(&``` -M:1@``#P8``!I&```:1@``&D8```(&```Z%X```!@``#H8@``H&,``$Y?```( -M9```3E\```,````````````````````````````````````````````````` -M`````````````````````````$#_______\`````!``````````````````` -M````````````````````````````````````````````````````````!!`` -M9`````D#"@L%!@<$`0`````````!````$D`0``P`#``````````````````` -M```````````````````````````````````````````````````````````` -M```)"@L,#P,%!P4&!P`!`P0$"`@`!0@&"`<(``$"`P@(!`,$!P4&``$"`@`` -M`$:2```"````$D`0``P`#``````````````````````````````````````` -M```````````````````````````````````````````$````-I0```,````" -M```````````````````````````````````````````````````````````` -M``````````````````````````````@```"$"@``!`````)````````````` -M```````````````````````````````````````````````````````````` -M````````````````"````(4*```%`````D`````````````````````````` -M```````````````````````````````````````````````````````````` -M```(````A@H```8````"0``````````````````````````````````````` -M`````````````````````````````````````````````````!`````]@PD! -M!P```!)`$``,``P````````````````````````````````````````````` -M````````````````````````````````````$````#V#"0((````$D`0``P` -M#``````````````````````````````````````````````````````````` -M``````````````````````!`````C1`!``H``0`(#``````````````````` -M```````````````````````````````````````````````````````````` -M`````````$````"-$`$`"P`"`P@,*(3^__[_```````````````````````` -M````````````````````````````````````````````````````````@``` -M`(T0`0`,``,`"`P(!/[_```````````````````````````````````````` -M`````````````````````````````````````````````0``C1`$``T``@`` -M``@````````````````````````````````````````````````````````` -M```````````````````````````````"``"-$`0`#@`#````"``````````` -M```````````````````````````````````````````````````````````` -M``````````````````0``(T0!P`/``$!```(```````````````````````` -M```````````````````````````````````````````````````````````` -M````@```C1`%`!(``@````@````````````````````````````````````` -M```````````````````````````````````````````````````(``"-$`@` -M$P`!`@``"``````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````````````````````````````````````````````````````````` -M```````00,`````@`(```````,)P]/0#`#B$`0`*0`,`````````!L`!``$` -M!L`"@```#,`+$`!:>&M1````$D`,`#(P,C`R,#DV6#4W-@``7/\``&C_``#X -M_P``B``!`(@``0"(``$`B``!`(@``0!<_P``\``!`/```0#P``$`6`$!`%@! -M`0!8`0$`7/\``%S_``!8`0$`6`$!`!P"`0!8`@$`L`(!`!`#`0!,`P$`3`,! -M`$P#`0!,`P$`'`(!`)@#`0"D`P$`I`,!``0````,`````0```%-#3P`!``$` -M`0````@``0(``````````````````````0``````````````!`#Q_P`````` -M``````````,``0`````````````````#``(``````````````````P`#```` -M``````````````,`!``````````````````#``4``````````````````P`& -M``````````````````,`!P`````````````````#``@````````````````` -M`P`)``````````````````,`"@`,```````````````$`/'_%````-`-`0!$ -M`````@`!`",```!P#`$`7`````(``0`O````4`D!`)@````"``$`-@```/`) -M`0`<`0```@`!`$`````0"P$`8`$```(``0!*````4`T!`'@````"``$`60`` -M`-`,`0!X`````@`!`&4```"`!0$`0`$```(``0!Q````X/D``#@````"``$` -M>0```'#W``!,`0```@`!`(8```"@\@``9`````(``0"0````</(``#`````" -M``$`F0```##R```\`````@`!`*0```"P[```6`$```(``0"U`````.<``#0! -M```"``$`Q@```.#6``#H`````@`!`-T```#PU0``Y`````(``0#S````0,<` -M``P(```"``$`_P```&#$``#8`@```@`!``H!``"PPP``K`````(``0`@`0`` -M`,,``*0````"``$`-0$``""Z```8`````@`!`#\!``#0N0``'`````(``0!) -M`0``L+D``!P````"``$`4@$``%`$`0`L`0```@`!`&`!``"`^P``2`````(` -M`0!G`0``<+,``)0````"``$`<P$``/"O``#<`````@`!`'\!``"PKP``0``` -M``(``0"*`0``<*\``$`````"``$`E@$``#"O``!``````@`!`*`!``"PK@`` -M@`````(``0"M`0``X*P``-0````"``$`N0$``-"J```(`@```@`!`,<!```` -MJ@``R`````(``0#3`0``(*D``-0````"``$`X`$``""G``#X`0```@`!`.T! -M``#`K0``\`````(``0#Y`0``D*(``(0$```"``$`!`(``/"Y```H`````@`! -M``P"``"@H0``\`````(``0`6`@``V`8``$L````!``(`)P(``)0&``!$```` -M`0`"`#,"``"`U0``<`````(``0!(`@``T+```*`"```"``$`6@(``$0&``!0 -M`````0`"`&8"``#T!0``4`````$``@!R`@``I`4``%`````!``(`?@(``%0% -M``!0`````0`"`(H"``#PP@``$`````(``0">`@``@+D``"P````"``$`J0(` -M`/#```#X`0```@`!`+H"```$!0``4`````$``@#&`@``X/$``$@````"``$` -MT@(``)#Q``!(`````@`!`-X"``"T!```4`````$``@#H`@``$/$``"@````" -M``$`\P(``.#P```D`````@`!`/\"``"`\```8`````(``0`+`P``9`0``%`` -M```!``(`%0,``$#Q``!$`````@`!`"8#````\```@`````(``0`R`P``%`0` -M`%`````!``(`/`,``,0#``!0`````0`"`$<#```0[@``L`````(``0!4`P`` -MH.\``%0````"``$`80,``,#N``#4`````@`!`&H#``!T`P``4`````$``@!U -M`P``T.D``&0````"``$`A`,``"0#``!0`````0`"`(X#``!PZ0``6`````(` -M`0"=`P``U`(``%`````!``(`IP,``$#H```D`0```@`!`+8#``!`[```;``` -M``(``0#"`P``0.H``/P!```"``$`RP,``(0"``!0`````0`"`-4#``!0Y@`` -ML`````(``0#@`P```.8``$P````"``$`\0,``%#A``#D`````@`!```$``!0 -MY0``L`````(``0`1!```X-T``"0````"``$`'P0``(#=``!@`````@`!`"X$ -M```0W@``.`,```(``0`_!```0.(```P#```"``$`2`0``#0"``!0`````0`" -M`%($``#0W```I`````(``0!=!```$-P``,`````"``$`;@0``*#;``!D```` -M`@`!`'T$``!0VP``2`````(``0".!```,-D``!0"```"``$`EP0``.0!``!0 -M`````0`"`*$$``#<`0``"`````$``@"M!```S`$``!`````!``(`N00``,0! -M```(`````0`"`,$$``"\`0``"`````$``@#.!```T-<``&`!```"``$`UP0` -M`&P!``!0`````0`"`.$$``!H`0``!`````$``@#H!```9`$```0````!``(` -M]`0``%P!```(`````0`"`/T$``!0SP``+`````(``0`0!0```-4``(`````" -M``$`)P4``(#/```$!````@`!`#<%``"0TP``:`$```(``0!,!0``)`$``#@` -M```!``(`7@4``!@!```*`````0`"`'$%``!`N@``8`(```(``0"#!0``@,`` -M`'`````"``$`F04``*"\``#@`@```@`!`*@%``"`OP````$```(``0"\!0`` -MX````#@````!``(`S04``'"A```H`````@`!`-D%```@H0``2`````(``0#E -M!0``<)\``+`!```"``$`]@4``/"<``!X`@```@`!``@&``!0FP``E`$```(` -M`0`>!@``T)<``'@#```"``$`-`8``""7``!0`````@`!`$@&``"`D```8`4` -M``(``0!=!@``P(\``,`````"``$`;P8``*"/```@`````@`!`(4&``!@CP`` -M0`````(``0"9!@``,(\``"@````"``$`K`8``(".```H`````@`!`,4&```P -MC```*`````(``0#5!@```(P``"@````"``$`X@8``-"$``"(`P```@`!`/0& -M``"0A```/`````(``0#\!@```(0``(P````"``$`!@<``-"#```H`````@`! -M`!0'```0@P``N`````(``0`D!P``X((``"@````"``$`+@<``#!^``"H!``` -M`@`!`#<'``!@?```R`$```(``0!%!P``T'H``(P!```"``$`50<``%!V``!T -M!````@`!`%T'```P=@``&`````(``0!E!P``T'4``%@````"``$`;0<``(!U -M``!0`````@`!`','``#P=```D`````(``0![!P``X',``#@````"``$`AP<` -M`,!S```@`````@`!`)`'``!P<P``1`````(``0"=!P``$',``%P````"``$` -MJ`<``(!P``"8`````@`!`+$'``!P;P``0`````(``0"W!P```&\``"P````" -M``$`P`<``.!N```<`````@`!`,P'````;0``X`$```(``0#C!P``0&P``+P` -M```"``$`]`<``(!K``"T`````@`!``0(``#P:@``C`````(``0`-"````&H` -M`.0````"``$`&`@`````````!````0`#`"$(``#@:```'`$```(``0`I"``` -M@&@``%@````"``$`-P@```"-``!X`0```@`!`$8(```@9```3`$```(``0!4 -M"```8(@``"`!```"``$`:@@``."5```X`0```@`!`'X(``!PEP``5`````(` -M`0"-"````%X``!0&```"``$`G0@``)!=``!H`````@`!`*H(``"06`````4` -M``(``0"V"```P%<``-`````"``$`QP@``+".``"``````@`!`-4(``"PC``` -M3`````(``0#E"```8(P``$P````"``$`^@@``+"*``!0`0```@`!``8)``"` -MB0``*`$```(``0`2"0``L%0``!`#```"``$`)@D``)!0```4!````@`!`#8) -M``!`3P``1`$```(``0!$"0``,$X``!`!```"``$`40D``*!,``"0`0```@`! -M`%\)````3```E`````(``0!M"0``X&\``)0````"``$`=0D``"!+``#@```` -M`@`!`'T)``"`2@``E`````(``0"'"0``L$@``-`!```"``$`E`D``&!&``!, -M`@```@`!`)P)``!010``$`$```(``0"E"0```$4``$P````"``$`K0D``*!" -M``!@`@```@`!`+0)``#`/@``V`,```(``0#!"0``<&<``!`!```"``$`SPD` -M`+`T```<`@```@`!`-P)```P,P``@`$```(``0#I"0``8#```$0"```"``$` -M]@D``(`F``"(!@```@`!``@*``#0%0````,```(``0`5"@``<&4``#P!```" -M``$`(@H````5``#$`````@`!`"T*``!0#```L`@```(``0`W"@``L`H``*`! -M```"``$`1`H``+!F``"X`````@`!`$\*``#P"0``N`````(``0!@"@``('(` -M`.P````"``$`<`H``+!O```L`````@`!`'@*``"`!P``<`(```(``0"""@`` -MX`(``)0$```"``$`D0H``#!O```\`````@`!`)8*````````V`(```(``0"? -M"@``C`````$````!``(`J`H``!`M``!$`P```@`!`+@*``"`(P``^`(```(` -M`0#("@``\!X``)`$```"``$`V0H``+`R``!T`````@`!`.D*``#0&```(`8` -M``(``0#Y"@``('0``+`````"``$`!`L``-`V``#L!P```@`!``P+````<@`` -M'`````(``0`6"P``T'0``"`````"``$`(PL``"!Q``#@`````@`!`"P+``!4 -M````.`````$``@!#"P``1@````X````!``(`40L``$(````$`````0`"`%H+ -M```Z````"`````$``@!F"P``,@````@````!``(`;PL``"`````2`````0`" -M`'<+````````(`````$``@!["P``8+8``%0"```2``$`A0L``$#W```D```` -M$@`!`)\+``!0_0``#````!(``0"Q"P``L/T``!0````2``$`P@L``%#V```\ -M````$@`!`,X+``#0^P``4````!(``0#9"P``\/P``%@````2``$`[`L``,`& -M`0"H````$@`!`/D+``!0_```*````!(``0`3#```$+0``%`"```2``$`'0P` -M`-#]``#H````$@`!`#(,``#`_@``%````!(``0!!#```(/P``"@````2``$` -M5@P``+`(`0"4````$@`!`&D,``#`^```&`$``!(``0!S#```(`X!`$@````2 -M``$`@@P``&@.`0``````$``!`(P,````]P``-````!(``0"E#```X/X``+0" -M```2``$`LPP``!`(`0"4````$@`!`,<,```@\P``V`(``!(``0#8#```<`<! -M`)P````2``$`YPP``!#S```(````$@`!`/@,```@^@``6`$``!(``0`�`` -M@/P``&@````2``$`'@T``&#]``!,````$@`!`#$-``"@`0$`8````!(``0!# -M#0``D/8``"P````2``$`60T``,"X``"T````$@`!`&X-````]@``4````!(` -M`0![#0````(!`%`"```2``$`APT``,#V``!`````$@`!``!T<FQL9&5L9BYO -M`'1R;&QD+F,`4$-)0DE/4U!R97-E;G0`4$-)0VAE8VM296<`06-C97!T`%!# -M23%3=V5E<`!00TDR4W=E97``3VQD4$-),5!R97-E;G0`4$-),5!R97-E;G0` -M4$-),E!R97-E;G0`1V5T0V]D90!396YD5%101G)A;64`4$-)3&]O:W5P`$QO -M;VMU<$E$`$QO;VMU<%1Y<&4`0V]N9C,Q,S-3;&]T0F%S90!#;VYF,S$R.5-L -M;W1"87-E`$)U;&QS97EE5W)I=&524$Q%15!R;VT`0G5L;'-E>65296%D4E!, -M1450<F]M`$1R86EN4EA&:69O`&1R86EN7W1X<G@`2&%W:V5Y95=R:71E4E!, -M1450<F]M`$AA=VME>65296%D4E!,1450<F]M`$5%35-$96QA>0!%15!O<G1/ -M=70`1450;W)T26X`3D4R,#`P4')E<V5N=`!Z97)O97,`07-I8T5%4F5A9$(` -M07-I8T5%5W)I=&4`1457<FET94)I=`!%14-L;V-K1&]W;@!%14-L;V-K57`` -M145#;&]C:U!U;'-E`$5%5W)I=&53=&]P`$5%5W)I=&5286YD;VT`07-I8T5% -M4F5A9%<`1457<FET95-T87)T`$5%1'5M;7E7<FET90!%15=R:71E0GET90!% -M15)E861">71E`$5%1&5L87D`145296%D0FET`%12;&QD5%105&5M<&QA=&4` -M061A<'1E<DQI<W0`0G5L;'-E>65(5T-O;F9I9TEN:70`0G5L;'-E>6500TE# -M;VYF:6<`3T,S-30P5&%B;&4`3T,S,C4P5&%B;&4`3T,S,30Q5&%B;&4`3T,S -M,30P5&%B;&4`2&%W:V5Y94A70V]N9FEG26YI=`!%;F%B;&500TDT`$AA=VME -M>6500TE#;VYF:6<`3T,S,3,Y5&%B;&4`1&ES86)L95!#23,`4')E<V5N=%!# -M23,`4$-),U1A8FQE`$5N86)L95!#23(`1&ES86)L95!#23(`4')E<V5N=%!# -M23(`4$-),E1A8FQE`%!#23%(5T-O;F9I9TEN:70`1&ES86)L95!#23$`4$-) -M,51A8FQE`$5)4T$R5&%B;&4`0V]N9C,Q,S-3;&]T`$5)4T%/<&5N26YI=`!# -M;VYF,S$S,P!%25-!,51A8FQE`$U#03-3;&]T0V]N9FEG`$U#03-486)L90!- -M0T$R4VQO=$-O;F9I9P!-0T$R5&%B;&4`34-!,5-L;W1#;VYF:6<`34-!3W!E -M;DEN:70`0V]N9C,Q,CD`34-!,51A8FQE`$E303-3971$34$`25-!,U-E=$EN -M=&5R<G5P=`!)4T$S2%=/<&5N26YI=`!)4T$S2%=#;VYF:6=);FET`$5N86)L -M93,Q,3A024\`1&ES86)L93,Q,3A024\`25-!,U!)3TEN=&5R<G5P=`!#;VYF -M,S$Q.`!)4T$S5&%B;&4`25-!,E-E=$1-00!)4T$R4V5T26YT97)R=7!T`$E3 -M03)(5T]P96Y);FET`$E303)(5T-O;F9I9TEN:70`0V]N9C,Q,3<`25-!,E1A -M8FQE`$E303)$34%":71S`$E303));G1":71S`$E303)$34$`25-!,DEN=$QE -M=F5L`$-O;F8S,3$U`$E303%486)L90!)4T%$34$`25-!26YT3&5V96P`145? -M4U!%140`0G5L;'-E>65"87-I8U)E<V5T`$)U;&QS97EE0V]N;F5C=$]P=&EO -M;G,`0G5L;'-E>65297-T87)T`$)U;&QS97EE0V]D941O=VYL;V%D`$)U;&QS -M97EE26YT97)F86-E`%181')A:6Y&<F%M94AE861E<@!(87=K97EE0F%S:6-2 -M97-E=`!(87=K97EE0V]N;F5C=$]P=&EO;G,`2&%W:V5Y95)E<W1A<G0`2&%W -M:V5Y94-O9&5$;W=N;&]A9`!(87=K97EE26YT97)F86-E`$1I<V%B;&500TDT -M`%!R97-E;G100TDT`$AA=VME>65);G1E<G)U<'0`5')A;G-M:71);G1E<G)U -M<'0`4W!I;C-296-E:79E26YT97)R=7!T`%-P:6XR4F5C96EV94EN=&5R<G5P -M=`!(87=K97EE4F5A9$U!0U1I;65R`$AA=VME>653971U<%1R86YS;6ET`%-E -M;F10;VQL26UM961I871E`$AA=VME>65#;&]S94-O;7!L971E9`!(87=K97EE -M4V5T=7!#;VUM86YD`$AA=VME>65.;T]P97)A=&EO;@!(87=K97EE4F5A9$5R -M<F]R0V]U;G1E<G,`2&%W:V5Y94U!0U)E<V5T`$AA=VME>65#;&]S90!(87=K -M97EE2%=/<&5N26YI=`!'971,;VYG`$%S:6-#:&5C:P!00TE(5T]P96Y);FET -M`%!#25!)3TEN=&5R<G5P=`!%;F%B;&500TD`1&]00TE024\`4$-)4$E/4')E -M<V5N=`!00TE(5T-O;F9I9TEN:70`061P5'EP90!%14=E=$1/`$5%0VQE87(` -M1453970`0VAE8VM)9`!'971435-3:&]R=`!30T)#;&5A<@!3=&%R=$-O;6UA -M;F0`5$U30V]M;6%N9`!T;7-?;W5T,@!D;W5T,@!T;7-S:&]R=`!3=&]R95IE -M<F]E<P!2971U<FY#;VUP;&5T961"=69F97)S`%!R;VUI<V-U;W5S0VAE8VL` -M5')A8V54;V]L4F5M;W9E`$-20T-H96-K`$-O;7!U=&5#4D,`0U)#5&%B;&4` -M0U)#26YI=`!3971U<%1R86YS;6ET`%5P9&%T94-O=6YT97)S`$5X96-);G1E -M<G)U<'0`2&%W:V5Y95)E861087)A;65T97)S`$AA=VME>653971U<%)E8V5I -M=F4`2&%W:V5Y94U!0TEN:70`4W1A='5S26YT97)R=7!T`$AA=VME>65297-E -M=`!(87=K97EE4&]L;`!(87=K97EE57-E<D-L;W-E`$AA=VME>65296]P96X` -M2&%W:V5Y95-E=$=R;W5P`$AA=VME>653971&=6YC=&EO;F%L`$AA=VME>65/ -M<&5N`$EN:71#;VUM86YD`$AA=VME>653=&%R=$-O;6UA;F0`3VQD4$E/26YT -M97)R=7!T`%!R97-E;G1/;&1024\`16YA8FQE36%S=&5R`$1I<V%B;&5-87-T -M97(`4')E<V5N=$UA<W1E<@!T;7-?:6XR`%=A:71024\`4F5A9$5%0DE!`%1- -M4U!#24-O;F9I9P!296%D0DE!`$-H96-K0DE!`$5%4&%U<V4`145296%D`$5% -M3W5T3F]R;4-M9`!2971U<FY"=69F97)S`%)E;W!E;E!H87-E,@!296]P96Y0 -M:&%S934`4F5O<&5N4&AA<V4V`%1R86YS9F5R26YI=$)L;V-K`%1-4TEN=&5R -M<G5P=`!297-E=$)U9F9E<G,`4FEN9U-T871U<P!4>%)X4W=E97``061A<'1E -M<D-H96-K`%-E;F13=&%T=7,`0V]M;6%N9$-O;7!L971E9`!297-P;VYD17)R -M;W)L;V<`=&US;&]N9P!$;T-O;6UA;F0`4F5A9%!A<F%M971E<G,`9&EN,@!4 -M35-#:&5C:P!%141)0V]P>0!435-296%D34%#5&EM97(`5$U34V5T=7!296-E -M:79E`%1-4U-E='5P5')A;G-M:70`5$U34V5T=7!#;VUM86YD`%1-4T-O9&5$ -M;W=N;&]A9`!435--04-);FET`%1-4U!O;&P`5$U37T-H96-K`%1-4U5S97)# -M;&]S90!435-297-E=`!0;W=E<DU!0TA?5$U326YT97)F86-E`$Y%,C`P,%!O -M<G1486(`26YT3&5V96P`:7AT;W1M<V)A<V4`:7AT;V)A<V4`5%)L;&1)1`!? -M5E\`5%)L;&1&:6YD`%12;&QD26YT97)R=7!T4&]S=%-E<G9I8V4`5%)L;&14 -M<F%N<VUI=$9R964`5%)L;&1296-E:79E1G)E90!44FQL9$5N86)L90!44FQL -M9$-L;W-E`%12;&QD1V5T4W1A=&ES=&EC<P!44FQL9$9I;F100TD`5%)L;&13 -M971&=6YC=&EO;F%L061D<F5S<P!44FQL9$]P96X`5%)L;&1296-E:79E1G)A -M9VUE;G0`5%)L;&1%;65R9V5N8WD`5%)L;&13971'<F]U<$%D9')E<W,`5%)L -M;&1-0T%3;&]T0V]N9FEG`%12;&QD4&]L;`!44FQL9$%D9$UE;6]R>0!44FQL -M9$-O<'D`5%)L;&1);G1E<G)U<'10<F5397)V:6-E`%12;&QD4V5T4W!E960` -M5%)L;&1%25-!4VQO=$-O;F9I9P!44FQL9$%D87!T97));FET`%12;&QD4$-) -M0V]N9FEG`%12;&QD061A<'1E<E-I>F4`5%)L;&1$;W=N;&]A9`!44FQL9%-E -M=%!R;VUI<V-U;W5S36]D90!44FQL9%1R86YS;6ET1G)A;64`5%)L;&13971) -M;G1E<G)U<'0`5%)L;&1);G1E<G)U<'10<F5S96YT`%12;&QD24]!9&1R97-S -M0V]N9FEG`%12;&QD1&ES86)L90!44FQL9%-E=$1-00!44FQL9$EN=&5R<G5P -M=%-E<G9I8V4``"YT97AT`"YD871A`"YB<W,`+FYO=&4`+G-Y;71A8@`N<W1R -M=&%B`"YS:'-T<G1A8@`N<F5L+G1E>'0`+G)E;"YD871A`"YC;VUM96YT`'L( -M```!T@``.PH```'4``#V%P```0,``#@F```!U```@S````'4``!B,0```=0` -M`&0R```!U```[#(```'4``![-````<D``*`U```!Z```J#4```'H``"Q-0`` -M`>@``+LU```!Z```Q34```'H``#/-0```>@``#<V```!R```UCH```''``#C -M/@```=@```L_```!V```(S\```'8``!+/P```=@``&,_```!V```BS\```'8 -M``"C/P```=@``,L_```!V```&T````'8``!!0````=@``)%````!V```MT`` -M``'8```U00```=@``%9!```!V```?D$```'8``"600```=@``+Y!```!V``` -M#D(```'8```T0@```=@``-E"```!V```,D,```'8``!:0P```=@``*I#```! -MV```T$,```'8``!X1````=@``*!$```!V```N$0```'8``#F1````=@``.)> -M```!`P``XF@```&F``!":0```:8``%!I```!I@``86D```&F``!N:0```:8` -M`(5I```!I@``C6D```&F``"6:0```:8``)QI```!I@``I6D```&F``"S:0`` -M`:8``,9I```!I@``U&D```&F```Y:@```:8``&=J```!I@``>6H```&F``"+ -M:@```:8``)UJ```!I@``R6H```&F``"`<P```=0``)EU```!V```R'4```'8 -M``#I=0```=@``"!V```!V```Q8L```'H``#&F````OH``"29```"^@``:)D` -M``+Z``".F0```OH```RS```!<```\;8```$W``"WMP```><``"JX```!-P`` -M+;D```$W``#-R@```78``&;8```!;P``#MD```%N``!NV@```6L``.+:```! -M:@``9MP```%K``!^W````6D``"3=```!:@``,]T```%H``#.YP```>4``/[H -M```!YP``(.D```'G``"NZ0```><```[J```!YP``8^L```'G``"/ZP```><` -M`&7M```!YP``C.T```'E``"C[@```><``%#O```!YP``//(```$W``![\@`` -M`3<``+_R```!-P``>_<```$V``!B^P```14``%7_```!`P``5`(!``$#``!8 -M`````>(``%P````!X0``8`````'@``!D`````=\``&@````!W@``;`````'= -M``!P`````=P``'0````!VP``>`````':``!\`````=D``)`````!`@``E``` -M``$"``"8`````0(``)P````!`@``H`````$"``"D`````0(``*@````!`@`` -MK`````$"``"P`````0(``+0````!`@``N`````$"``"\`````0(``,`````! -M`@``Q`````$"``#(`````0(``,P````!`@``T`````$"``#4`````0(``-@` -M```!`@``W`````$"``#D`````:\``.@````!L0``[`````&-``#P`````;`` -M`/0````!K0``^`````%Z``#\`````88````!```!@P``!`$```&L```(`0`` -M`8(```P!```!>0``$`$```%X```4`0```7<``"@!```!KP``+`$```&Q```P -M`0```8T``#0!```!L```.`$```&M```\`0```70``$`!```!A@``1`$```&# -M``!(`0```:P``$P!```!@@``4`$```%S``!4`0```7(``%@!```!<0``@`$` -M``%L``"$`0```;@``(@!```!RP``C`$```&Y``"0`0```;P``)@!```!NP`` -MH`$```&Z``"L`0```>,``/@!```!9@``_`$```&X`````@```<L```0"```! -MN0``"`(```&\```0`@```;L``!@"```!N@``'`(```%E```@`@```60``"0" -M```!XP``*`(```%C```L`@```6(``$@"```!8```3`(```%?``!0`@```<L` -M`%0"```!N0``6`(```&\``!<`@```5X``&`"```!NP``9`(```%=``!H`@`` -M`;H``&P"```!7```<`(```%;``!T`@```>,``'@"```!6@``?`(```%9``"8 -M`@```5<``)P"```!N```H`(```'+``"D`@```;D``*@"```!O```L`(```&[ -M``"X`@```;H``,`"```!5@``Q`(```'C``#0`@```54``.@"```!5P``[`(` -M``&X``#P`@```<L``/0"```!N0``^`(```&\`````P```;L```@#```!N@`` -M$`,```%6```4`P```>,``"`#```!4P``.`,```%7```\`P```;@``$`#```! -MRP``1`,```&Y``!(`P```;P``%`#```!NP``6`,```&Z``!@`P```58``&0# -M```!XP``<`,```%1``"(`P```4\``(P#```!N```D`,```'+``"4`P```;D` -M`)@#```!O```H`,```&[``"H`P```;H``+`#```!3@``M`,```'C``#``P`` -M`4T``-@#```!3P``W`,```&X``#@`P```<L``.0#```!N0``Z`,```&\``#P -M`P```;L``/@#```!N@````0```%.```$!````>,``!`$```!30``*`0```'` -M```L!````8\``#0$```!N0``/`0```%*``!$!````9```$P$```!20``4`0` -M``&.``!4!````>,``'@$```!P```?`0```&/``"`!````8\``(0$```!1P`` -MB`0```%'``",!````48``)`$```!1@``E`0```%%``"8!````44``)P$```! -MDP``H`0```&.``"D!````>,``,@$```!P```S`0```&/``#0!````<L``-0$ -M```!0P``V`0```%#``#<!````4(``.`$```!0@``Y`0```&0``#H!````9`` -M`.P$```!DP``\`0```&.``#T!````>,``!@%```!0```(`4```%^```H!0`` -M`7T``#`%```!?```.`4```$_```\!0```3X``$`%```!BP``1`4```%[``!H -M!0```4```'`%```!?@``>`4```%]``"`!0```7P``(@%```!/P``C`4```$^ -M``"0!0```8L``)0%```!>P``N`4```%```#`!0```7X``,@%```!?0``T`4` -M``%\``#8!0```3\``-P%```!/@``X`4```&+``#D!0```7L```@&```!0``` -M$`8```%^```8!@```7T``"`&```!?```*`8```$_```L!@```3X``#`&```! -MBP``-`8```%[``!8!@```3D``&`&```!?@``:`8```%]``!P!@```7P``'@& -M```!/P``?`8```$X``"`!@```8L``(0&```!=0``E`8```%M``"8!@```6<` -M`)P&```!80``H`8```%8``"D!@```50``*@&```!4@``K`8```%0``"P!@`` -M`4P``+0&```!2P``N`8```%(``"\!@```40``,`&```!00``Q`8```$]``#( -M!@```3P``,P&```!.P``T`8```$Z```D!P```0(``"@'```!`@``+`<```$" -M```P!P```0(``#0'```!`@``.`<```$"```\!P```0(``$`'```!`@``1`<` -M``$"``!(!P```0(``$P'```!`@``4`<```$"``!4!P```0(``%@'```!`@`` -M7`<```$"``!@!P```0(``&0'```!`@``:`<```$"``!L!P```0(``'`'```! -M`@``=`<```$"``!X!P```0(``'P'```!`@``@`<```$"``"$!P```0(``(@' -M```!`@``C`<```$"``"0!P```0(``)0'```!`@``F`<```$"``"<!P```0(` -M`'AP9S1P;'5S($`H(RD@<W1D9&5F+F@@,C`N,2`Y-"\Q,B\P-"``86-O;7`Z -M(%)E;&5A<V4@-2XP+C!A(#$V36%R.34`;W!T:6TZ(%)E;&5A<V4@-2XP+C!A -M(#$V36%R.34`:3,X-F%S.B!296QE87-E(#4N,"XP82`Q-DUA<CDU`$`H(RD@ -M=&-O<'DN<R`Q+C`@.3@O,#@O,3$`:3,X-F%S.B!296QE87-E(#4N,"XP82`Q -M-DUA<CDU```````````````````````````````````````````````````` -M``````$````!````!@````````!`````?`X!````````````$``````````' -M`````0````,`````````O`X!`*`'``````````````0`````````#0````@` -M```#`````````%P6`0``!``````````````$`````````!(````'```````` -M``````!<%@$`'````````````````0`````````8`````@`````````````` -M>!8!`*`0```&````Z@````0````0````(`````,``````````````!@G`0"= -M#0`````````````!`````````"@````#``````````````"U-`$`3P`````` -M`````````0`````````R````"0``````````````!#4!`%@#```%`````0`` -M``0````(````/`````D``````````````%PX`0`8"```!0````(````$```` -L"````$8````!``````````````!T0`$`N@```````````````0`````````` -` -end diff --git a/sys/contrib/dev/oltr/if_oltr.c b/sys/contrib/dev/oltr/if_oltr.c deleted file mode 100644 index 268ad8a80204..000000000000 --- a/sys/contrib/dev/oltr/if_oltr.c +++ /dev/null @@ -1,1515 +0,0 @@ -/* - * Copyright (c) 1998, Larry Lile - * All rights reserved. - * - * For latest sources and information on this driver, please - * go to http://anarchy.stdio.com. - * - * Questions, comments or suggestions should be directed to - * Larry Lile <lile@stdio.com>. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice unmodified, this list of conditions, and the following - * disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id: if_oltr.c,v 1.4 1999/04/24 20:24:02 peter Exp $ - */ - - -#include "pci.h" -#include "oltr.h" -#include "opt_inet.h" -#include "bpfilter.h" - -#if (NOLTR + NPCI) > 0 - -/*#define TRlldInlineIO*/ - -#define ISA_ADAPTERS (OC_3115 | OC_3117 | OC_3118) -#define PCI_ADAPTERS (OC_3133 | OC_3136 | OC_3137 | \ - OC_3139 | OC_3140 | OC_3141 | \ - OC_3250 | OC_3540 ) - -#define PCI_VENDOR_OLICOM 0x108D - -char *AdapterName[] = { - /* 0 */ "Olicom XT Adapter [unsupported]", - /* 1 */ "Olicom OC-3115", - /* 2 */ "Olicom ISA 16/4 Adapter (OC-3117)", - /* 3 */ "Olicom ISA 16/4 Adapter (OC-3118)", - /* 4 */ "Olicom MCA 16/4 Adapter (OC-3129) [unsupported]", - /* 5 */ "Olicom MCA 16/4 Adapter (OC-3129) [unsupported]", - /* 6 */ "Olicom MCA 16/4 Adapter (OC-3129) [unsupported]", - /* 7 */ "Olicom EISA 16/4 Adapter (OC-3133)", - /* 8 */ "Olicom EISA 16/4 Adapter (OC-3133)", - /* 9 */ "Olicom EISA 16/4 Server Adapter (OC-3135)", - /* 10 */ "Olicom PCI 16/4 Adapter (OC-3136)", - /* 11 */ "Olicom PCI 16/4 Adapter (OC-3136)", - /* 12 */ "Olicom PCI/II 16/4 Adapter (OC-3137)", - /* 13 */ "Olicom PCI 16/4 Adapter (OC-3139)", - /* 14 */ "Olicom RapidFire 3140 16/4 PCI Adapter (OC-3140)", - /* 15 */ "Olicom RapidFire 3141 Fiber Adapter (OC-3141)", - /* 16 */ "Olicom PCMCIA 16/4 Adapter (OC-3220) [unsupported]", - /* 17 */ "Olicom PCMCIA 16/4 Adapter (OC-3121, OC-3230, OC-3232) [unsupported]", - /* 18 */ "Olicom PCMCIA 16/4 Adapter (OC-3250)", - /* 19 */ "Olicom RapidFire 3540 4/16/100 Adapter (OC-3540)" -}; - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/proc.h> -#include <sys/sockio.h> -#include <sys/malloc.h> -#include <sys/mbuf.h> -#include <sys/socket.h> -#include <sys/syslog.h> -#include <sys/kernel.h> -#include <sys/interrupt.h> - -#include <net/ethernet.h> -#include <net/if.h> -#include <net/if_arp.h> -#include <net/iso88025.h> -#include <net/if_media.h> - -#if NBPFILTER > 0 -#include <net/bpf.h> -#endif - -#if NPNP > 0 -#include <i386/isa/pnp.h> -#endif - -#include <machine/clock.h> -#include <machine/md_var.h> -#include <i386/isa/isa_device.h> - -#if NPCI > 0 -#include <pci/pcivar.h> -#include <pci/pcireg.h> -#endif - -#include "contrib/dev/oltr/trlld.h" - -#ifndef TRLLD_SPEED_AUTO -#define TRLLD_SPEED_AUTO 0 -#endif - -#define MIN(A,B) (((A) < (B)) ? (A) : (B)) -#define MIN3(A,B,C) (MIN(A, (MIN(B, C)))) - -void *oltr_malloc(ssize_t, TRlldAdapterConfig_t *); - -/* - * Glue functions prototypes for PMW kit IO - */ - -#ifndef TRlldInlineIO -static void DriverOutByte __P((unsigned short, unsigned char)); -static void DriverOutWord __P((unsigned short, unsigned short)); -static void DriverOutDword __P((unsigned short, unsigned long)); -static void DriverRepOutByte __P((unsigned short, unsigned char *, int)); -static void DriverRepOutWord __P((unsigned short, unsigned short *, int)); -static void DriverRepOutDword __P((unsigned short, unsigned long *, int)); -static unsigned char DriverInByte __P((unsigned short)); -static unsigned short DriverInWord __P((unsigned short)); -static unsigned long DriverInDword __P((unsigned short)); -static void DriverRepInByte __P((unsigned short, unsigned char *, int)); -static void DriverRepInWord __P((unsigned short, unsigned short *, int)); -static void DriverRepInDword __P((unsigned short, unsigned long *, int)); -#endif /*TRlldInlineIO*/ -static void DriverSuspend __P((unsigned short)); -static void DriverStatus __P((void *, TRlldStatus_t *)); -static void DriverCloseCompleted __P((void *)); -static void DriverStatistics __P((void *, TRlldStatistics_t *)); -static void DriverTransmitFrameCompleted __P((void *, void *, int)); -static void DriverReceiveFrameCompleted __P((void *, int, int, void *, int)); - -typedef struct tx_buf { - int index; - int count; - char *buf; - struct mbuf *m; -} tx_buf_t; - -typedef struct rx_buf { - int index; - char *buf; -} rx_buf_t; - -#ifndef EXTRA_OLTR -#if NPCI > 0 -#define EXTRA_OLTR 8 -#else -#define EXTRA_OLTR 0 -#endif /* NPCI */ -#endif /* EXTRA_OLTR */ - -#ifndef OLTR_PROMISC_MODE -#define OLTR_PROMISC_MODE (TRLLD_PROM_LLC) -#endif - -#define ALL_OPTIONS (IFM_TOK_ETR | IFM_TOK_SRCRT | IFM_TOK_ALLR | IFM_TOK_DTR | IFM_TOK_CLASSIC | IFM_TOK_AUTO) - -/* List sizes MUST be a power of 2 */ -#define TX_LIST_SIZE 16 -#define RX_LIST_SIZE 16 -#define TX_LIST_MASK (TX_LIST_SIZE - 1) -#define RX_LIST_MASK (RX_LIST_SIZE - 1) -#define RX_BUFFER_LEN (8*1024) -#define TX_BUFFER_LEN (8*1024) - -struct oltr_softc { - struct arpcom arpcom; - struct ifmedia ifmedia; - TRlldAdapterConfig_t *config; - TRlldAdapter_t *TRlldAdapter; - int unit; - u_short PromiscMode; - u_short AdapterMode; - int hw_state; -#define HW_UNKNOWN 0 /* initial/absent state */ -#define HW_FOUND 1 /* found, not initialized */ -#define HW_BAD 2 /* fatal error */ -#define HW_FAILED 3 /* closed eg. by remove, allow manual reopen */ -#define HW_LOADING 4 -#define HW_CLOSING 5 -#define HW_CLOSING2 6 -#define HW_CLOSED 7 -#define HW_OPENING 8 -#define HW_OPEN 9 -#define HW_ERROR 10 /* temporary error */ - - u_long GroupAddress; - u_long FunctionalAddress; - int poll_adapter; - - int tx_next; - int tx_avail; - tx_buf_t tx_buffer[TX_LIST_SIZE]; - TRlldTransmit_t tx_frame; - - int rx_next; - int rx_avail; - rx_buf_t rx_buffer[RX_LIST_SIZE]; - - struct callout_handle oltr_ch; - struct callout_handle poll_ch; - -}; - -static struct oltr_softc oltr_softc[NOLTR + EXTRA_OLTR]; - -/* - * Driver function prototypes - */ - -static int oltr_probe __P((struct isa_device *)); -static int oltr_attach __P((struct isa_device *)); -static void oltr_init __P((struct oltr_softc *)); -static void oltr_intr __P((int)); -static void oltr_start __P((struct ifnet *)); -static void oltr_stop __P((struct oltr_softc *)); -static int oltr_ioctl __P((struct ifnet *, u_long, caddr_t)); - -static int oltr_attach_common __P((struct oltr_softc *)); - -void oltr_timeout __P((void *)); -void adapter_poll __P((void *)); - -struct isa_driver oltrdriver = { - oltr_probe, - oltr_attach, - "oltr", - 0 -}; - -int isa_cards = 0; - -#if NPCI > 0 -static u_long oltr_count = NOLTR; -static const char *oltr_pci_probe __P((pcici_t, pcidi_t)); -static void oltr_pci_attach __P((pcici_t, int)); -static void oltr_pci_intr __P((void *)); -static void oltr_pci_shutdown __P((int, void *)); - -static struct pci_device oltr_device = { - "oltr", - oltr_pci_probe, - oltr_pci_attach, - &oltr_count, - NULL -}; - -COMPAT_PCI_DRIVER(oltr_pci, oltr_device); -int pci_cards = 0; -#endif /* NPCI */ - -static int oltr_ifmedia_upd __P((struct ifnet *)); -static void oltr_ifmedia_sts __P((struct ifnet *, struct ifmediareq *)); - -static TRlldDriver_t oltrLldDriver = { - TRLLD_VERSION, -#ifndef TRlldInlineIO - DriverOutByte, - DriverOutWord, - DriverOutDword, - DriverRepOutByte, - DriverRepOutWord, - DriverRepOutDword, - DriverInByte, - DriverInWord, - DriverInDword, - DriverRepInByte, - DriverRepInWord, - DriverRepInDword, -#endif /*TRlldInlineIO*/ - DriverSuspend, - DriverStatus, - DriverCloseCompleted, - DriverStatistics, - DriverTransmitFrameCompleted, - DriverReceiveFrameCompleted, -}; - -TRlldAdapterConfig_t oltr_config[NOLTR + EXTRA_OLTR]; - -void * -oltr_malloc(Size, Adapter) - ssize_t Size; - TRlldAdapterConfig_t *Adapter; -{ - - /* If the adapter needs memory below 16M for DMA then use contigmalloc */ - if (Adapter->mode & TRLLD_MODE_16M) /* Adapter using ISA DMA buffer below 16M */ - return(contigmalloc(Size, M_DEVBUF, M_NOWAIT, 0ul, 0xfffffful, 1ul, 0x10000ul)); - else - return(malloc(Size, M_DEVBUF, M_NOWAIT)); -} - -/* - * Driver Functions - */ - -static int -oltr_probe(is) - struct isa_device *is; -{ - static int find_completed = 0, assigned[NOLTR]; - struct oltr_softc *sc = &oltr_softc[is->id_unit]; - int i; - - printf("oltr%d: oltr_probe\n", is->id_unit); - - /* Make life easy, use the Olicom supplied find function on the first probe - * to probe all of the ISA adapters. Then give them to each unit as requested. - * Try to match the adapters to units based on the iobase, but if iobase? then - * just give out the next available adapter. - */ - if (!find_completed) { - isa_cards = TRlldFind(&oltrLldDriver, &oltr_config[0], ISA_ADAPTERS, NOLTR); - /*for (i = 0; i < isa_cards; i++) { - printf("TRlldFind: card %d - %s MAC %6D\n", i + 1, AdapterName[oltr_config[i].type], oltr_config[i].macaddress, ":"); - }*/ - for (i = 0; i < NOLTR; i++) - assigned[i] = 0; - find_completed = 1; - } - - sc->unit = is->id_unit; - sc->hw_state = HW_UNKNOWN; - - if (find_completed && ((isa_cards == 0) || (is->id_unit > isa_cards))) - return(0); - - if (((is->id_iobase < 0xa00) || (is->id_iobase > 0xbe0)) && (is->id_iobase != 0xffffffff)) { - printf("oltr%d: port address impossible (0x%X)\n", is->id_unit, is->id_iobase); - return(0); - } - - /* Auto assign lowest available card not already in use */ - if (is->id_iobase == 0xffffffff) { - printf("oltr%d: auto assigning card.\n", is->id_unit); - for (i = 0; assigned[i]; i++); - assigned[i] = 1; - sc->config = &oltr_config[i]; - is->id_iobase = sc->config->iobase0; /* Claim our port space */ - if (!is->id_irq) - is->id_irq = (1 << sc->config->interruptlevel); /* Claim our interrupt */ - is->id_intr = (inthand2_t *)oltr_intr; - if ((is->id_drq == 0xffffffff) && (sc->config->dmalevel != TRLLD_DMA_PIO)) - is->id_drq = sc->config->dmalevel; /* Claim our dma channel */ - printf("oltr%d: <%s> [%6D]\n", is->id_unit, AdapterName[sc->config->type], sc->config->macaddress, ":"); - sc->hw_state = HW_FOUND; - return(1); - } else { - /* Assign based on iobase address provided in kernel config */ - for (i = 0; i < NOLTR; i++) { - if (is->id_iobase == oltr_config[i].iobase0) { - if (assigned[i]) { - printf("oltr%d: adapter (0x%X) already assigned.\n", is->id_unit, is->id_iobase); - return(0); - } - assigned[i] = 1; - sc->config = &oltr_config[i]; - if (is->id_irq == 0) - is->id_irq = (1 << sc->config->interruptlevel); /* Claim our interrupt */ - is->id_intr = (inthand2_t *)oltr_intr; - if ((is->id_drq == 0xffffffff) && (sc->config->dmalevel != TRLLD_DMA_PIO)) - is->id_drq = sc->config->dmalevel; /* Claim our dma channel */ - printf("oltr%d: <%s> [%6D]\n", is->id_unit, AdapterName[sc->config->type], sc->config->macaddress, ":"); - sc->hw_state = HW_FOUND; - return(1); - } - } - } - return(0); /* Card was not found */ -} - -#if NPCI > 0 -static const char * -oltr_pci_probe(config_id, device_id) - pcici_t config_id; - pcidi_t device_id; -{ - u_char PCIConfigurationSpace[64]; - u_long command; - int i, j, rc; - - printf("oltr: oltr_pci_probe\n"); - - j = NOLTR + pci_cards; - - if (pci_cards == EXTRA_OLTR) - return(NULL); - - if (((device_id & 0xffff) == PCI_VENDOR_OLICOM) && - ((((device_id >> 16) & 0xffff) == 0x0001) || - (((device_id >> 16) & 0xffff) == 0x0004) || - (((device_id >> 16) & 0xffff) == 0x0005) || - (((device_id >> 16) & 0xffff) == 0x0007) || - (((device_id >> 16) & 0xffff) == 0x0008))) { - - for (i = 0; i < 64; i++) - PCIConfigurationSpace[i] = pci_cfgread(config_id, i, /*bytes*/1); - - rc = TRlldPCIConfig(&oltrLldDriver, &oltr_config[j], PCIConfigurationSpace); - - if ((rc == TRLLD_PCICONFIG_OK) || (rc == TRLLD_PCICONFIG_SET_COMMAND)) { - if (rc == TRLLD_PCICONFIG_SET_COMMAND) { - printf("oltr: setting bus-master mode\n"); - command = pci_conf_read(config_id, PCIR_COMMAND); - pci_conf_write(config_id, PCIR_COMMAND, (command | PCIM_CMD_BUSMASTEREN)); - } - pci_cards++; - return (AdapterName[oltr_config[j].type]); - } else { - if (rc == TRLLD_PCICONFIG_FAIL) - printf("oltr: TRlldPCIConfig failed!\n"); - if (rc == TRLLD_PCICONFIG_VERSION) - printf("oltr: wrong LLD version\n"); - } - } - return(NULL); -} -#endif /* NPCI */ - -static int -oltr_attach(is) - struct isa_device *is; -{ - struct oltr_softc *sc = &oltr_softc[is->id_unit]; - int rc; - - sc->unit = is->id_unit; - - if (!oltr_attach_common(sc)) - return(0); - - /* If the kernel config does not match the current card configuration then - * adjust the card settings to match the kernel. - */ - if ((ffs(is->id_irq) - 1) != sc->config->interruptlevel) { - rc = TRlldSetInterrupt(sc->TRlldAdapter, is->id_irq); - if (rc != TRLLD_CONFIG_OK) { - printf("oltr%d: Unable to change adapter interrupt level (%x)\n", sc->unit, rc); - return(0); - } - } - - /* Set dma level, fall back to pio if possible. (following SCO driver example) */ - if (is->id_drq != sc->config->dmalevel) { - rc = TRlldSetDMA(sc->TRlldAdapter, is->id_drq, &sc->config->mode); - if (rc != TRLLD_CONFIG_OK) { - if ((sc->config->dmalevel != TRLLD_DMA_PIO) && - (TRlldSetDMA(sc->TRlldAdapter, TRLLD_DMA_PIO, &sc->config->mode) != TRLLD_CONFIG_OK)) { - printf("oltr%d: unable to change dma level from %d to %d (%x)\n", sc->unit, - sc->config->dmalevel, is->id_drq, rc); - } - printf("oltr%d: Unable to change adapter dma level, using PIO mode (%x)\n", sc->unit, rc); - sc->config->dmalevel = TRLLD_DMA_PIO; - rc = TRlldSetDMA(sc->TRlldAdapter, is->id_drq, &sc->config->mode); - } - is->id_irq = sc->config->dmalevel; - } - return(1); -} - -#if NPCI > 0 -static void -oltr_pci_attach(config_id, unit) - pcici_t config_id; - int unit; -{ - struct oltr_softc *sc = &oltr_softc[unit]; - - sc->unit = unit; - sc->config = &oltr_config[unit]; - sc->hw_state = HW_FOUND; - - printf("oltr%d: mac address [%6D]\n", sc->unit, sc->config->macaddress, ":"); - - if (!oltr_attach_common(sc)) - return; - - /* Map our interrupt */ - if (!pci_map_int(config_id, oltr_pci_intr, sc, &net_imask)) { - printf("oltr%d: couldn't map interrupt\n", unit); - return; - } -} -#endif /* NPCI */ - -static int -oltr_attach_common(sc) - struct oltr_softc *sc; -{ - struct ifnet *ifp = &sc->arpcom.ac_if; - u_int bufsize; - int rc, i, j; - - /*printf("oltr%d: attach_common called\n", sc->unit);*/ - - /* Allocate adapter memory buffer */ - bufsize = TRlldAdapterSize(); - sc->TRlldAdapter = (TRlldAdapter_t *)oltr_malloc(bufsize, sc->config); - if (sc->TRlldAdapter == NULL) { - printf("oltr%d: Unable to allocate adapter memory block (%d bytes)\n", sc->unit, bufsize); - } - /*printf("oltr%d: Adapter memory block (%p %d bytes)\n", sc->unit, sc->TRlldAdapter, bufsize);*/ - - /* Setup transmit pool */ - for (i = 0; i < TX_LIST_SIZE; i++) { - sc->tx_buffer[i].index = i; - sc->tx_buffer[i].buf = (char *)oltr_malloc(TX_BUFFER_LEN, sc->config); - /* If we have a failure then free everything and get out */ - if (!sc->tx_buffer[i].buf) { - printf("oltr%d: Unable to allocate transmit buffers.\n", sc->unit); - for (j = 0; j < i; j++) - free(sc->tx_buffer[j].buf, M_DEVBUF); - return(0); - } - } - sc->tx_next = 0; - sc->tx_avail = TX_LIST_SIZE; - sc->tx_frame.FragmentCount = 0; - - /* Setup receive pool */ - for (i = 0; i < RX_LIST_SIZE; i++) { - sc->rx_buffer[i].index = i; - sc->rx_buffer[i].buf = (char *)oltr_malloc(RX_BUFFER_LEN, sc->config); - /* If we have a failure then free everything and get out */ - if (!sc->rx_buffer[i].buf) { - printf("oltr%d: Unable to allocate receive buffers.\n", sc->unit); - for (j = 0; j < i; j++) - free(sc->rx_buffer[j].buf, M_DEVBUF); - return(0); - } - } - sc->rx_next = 0; - sc->rx_avail = RX_LIST_SIZE; - /*printf("oltr%d: Allocated receive buffers\n", sc->unit); */ - - /* Set up adapter polling mechanism */ - sc->poll_adapter = 1; - callout_handle_init(&sc->poll_ch); - sc->poll_ch = timeout(adapter_poll, (void *)sc->unit, (1*hz)/1000); - callout_handle_init(&sc->oltr_ch); - - /* Initialize adapter */ - rc = TRlldAdapterInit(&oltrLldDriver, sc->TRlldAdapter, kvtop(sc->TRlldAdapter), - (void *)sc->unit, sc->config); - if (rc != TRLLD_INIT_OK) { - switch (rc) { - case TRLLD_INIT_NOT_FOUND: - printf("oltr%d: Adapter not found or malfunctioning.\n", sc->unit); - sc->hw_state = HW_BAD; - return(0); - case TRLLD_INIT_UNSUPPORTED: - printf("oltr%d: Adapter not supported by low level driver.\n", sc->unit); - sc->hw_state = HW_UNKNOWN; - return(0); - case TRLLD_INIT_PHYS16: - printf("oltr%d: Adapter memory block above 16M, must be below 16M.\n", sc->unit); - return(0); - case TRLLD_INIT_VERSION: - printf("oltr%d: Low level driver version mismatch.\n", sc->unit); - return(0); - default: - printf("oltr%d: Unknown initilization error occoured (%x).\n", sc->unit, rc); - return(0); - } - } - - /* Download Adapter Microcode */ - /*printf("oltr%d: Downloading adapter microcode...", sc->unit);*/ - sc->hw_state = HW_LOADING; - switch(sc->config->mactype) { - case TRLLD_MAC_TMS: /* TMS microcode */ - rc = TRlldDownload(sc->TRlldAdapter, TRlldMacCode); - break; - case TRLLD_MAC_HAWKEYE: /* Hawkeye microcode */ - rc = TRlldDownload(sc->TRlldAdapter, TRlldHawkeyeMac); - break; - case TRLLD_MAC_BULLSEYE: /* Bullseye microcode */ - rc = TRlldDownload(sc->TRlldAdapter, TRlldBullseyeMac); - break; - default: - printf("oltr%d: unknown mactype %d\n", sc->unit, sc->config->mactype); - return(0); - } - /*if (rc == TRLLD_DOWNLOAD_OK) - printf("done\n");*/ - if ((rc == TRLLD_DOWNLOAD_ERROR) || (rc == TRLLD_STATE)) { - printf("oltr%d: Adapter microcode download failed! (rc = %x)\n", sc->unit, rc); - sc->hw_state = HW_BAD; - return(0); - } - - TRlldSetSpeed(sc->TRlldAdapter, TRLLD_SPEED_AUTO); - - sc->PromiscMode = 0; - sc->AdapterMode = 0; - - /* Do the ifnet initialization */ - ifp->if_softc = sc; - ifp->if_unit = sc->unit; - ifp->if_name = "oltr"; - ifp->if_output = iso88025_output; - ifp->if_init = (if_init_f_t *)oltr_init; - ifp->if_start = oltr_start; - ifp->if_ioctl = oltr_ioctl; - ifp->if_flags = IFF_BROADCAST | IFF_MULTICAST | IFF_SIMPLEX; - bcopy(sc->config->macaddress, sc->arpcom.ac_enaddr, sizeof(sc->config->macaddress)); - - /* Set up common ifmedia options */ - ifmedia_init(&sc->ifmedia, 0, oltr_ifmedia_upd, oltr_ifmedia_sts); - - ifmedia_add(&sc->ifmedia, IFM_TOKEN | IFM_AUTO, 0 , NULL); - ifmedia_add(&sc->ifmedia, IFM_TOKEN | IFM_TOK_UTP4, 0 , NULL); - ifmedia_add(&sc->ifmedia, IFM_TOKEN | IFM_TOK_UTP16, 0 , NULL); - - ifmedia_set(&sc->ifmedia, IFM_TOKEN | IFM_AUTO); - - if_attach(ifp); - iso88025_ifattach(ifp); - -#if NBPFILTER > 0 - bpfattach(ifp, DLT_IEEE802, sizeof(struct iso88025_header)); -#endif - - printf("oltr%d: Adapter modes - ", sc->unit); - if (sc->config->mode & TRLLD_MODE_16M) printf("TRLLD_MODE_16M "); - if (sc->config->mode & TRLLD_MODE_PHYSICAL) printf("TRLLD_MODE_PHYSICAL "); - if (sc->config->mode & TRLLD_MODE_FIXED_CFG) printf("TRLLD_MODE_FIXED_CFG "); - if (sc->config->mode & TRLLD_MODE_SHORT_SLOT) printf("TRLLD_MODE_SHORT_SLOT "); - if (sc->config->mode & TRLLD_MODE_CANNOT_DISABLE) printf("TRLLD_MODE_CANNOT_DISABLE "); - if (sc->config->mode & TRLLD_MODE_SHARE_INTERRUPT) printf("TRLLD_MODE_SHARE_INTERRUPT "); - if (sc->config->mode & TRLLD_MODE_MEMORY) printf("TRLLD_MODE_MEMORY "); - printf("\n"); - - return(1); -} - -#if NPCI > 0 -static void -oltr_pci_shutdown(howto, sc) - int howto; - void *sc; -{ - printf("oltr: oltr_pci_shutdown called\n"); -} -#endif /* NPCI */ - -static int -oltr_ifmedia_upd(ifp) - struct ifnet *ifp; -{ - struct oltr_softc *sc = ifp->if_softc; - struct ifmedia *ifm = &sc->ifmedia; - - if (IFM_TYPE(ifm->ifm_media) != IFM_TOKEN) - return(EINVAL); - - switch(IFM_SUBTYPE(ifm->ifm_media)) { - case IFM_AUTO: - TRlldSetSpeed(sc->TRlldAdapter, TRLLD_SPEED_AUTO); - break; - case IFM_TOK_UTP4: - TRlldSetSpeed(sc->TRlldAdapter, TRLLD_SPEED_4MBPS); - break; - case IFM_TOK_UTP16: - TRlldSetSpeed(sc->TRlldAdapter, TRLLD_SPEED_16MBPS); - break; - default: - return(EINVAL); - } - - if (IFM_TYPE_OPTIONS(ifm->ifm_media) & IFM_TOK_ETR) - printf("oltr%d: ETR not implemented\n", sc->unit); - if (IFM_TYPE_OPTIONS(ifm->ifm_media) & IFM_TOK_SRCRT) - printf("oltr%d: source-routing not implemented\n", sc->unit); - if (IFM_TYPE_OPTIONS(ifm->ifm_media) & IFM_TOK_ALLR) - printf("oltr%d: all source routes not implemented\n", sc->unit); - if (IFM_TYPE_OPTIONS(ifm->ifm_media) & IFM_TOK_DTR) { - sc->AdapterMode |= TRLLD_MODE_FORCE_TXI; - sc->AdapterMode &= ~TRLLD_MODE_FORCE_TKP; - } - if (IFM_TYPE_OPTIONS(ifm->ifm_media) & IFM_TOK_CLASSIC) { - sc->AdapterMode |= TRLLD_MODE_FORCE_TKP; - sc->AdapterMode &= ~TRLLD_MODE_FORCE_TXI; - } - if (IFM_TYPE_OPTIONS(ifm->ifm_media) & IFM_TOK_AUTO) - sc->AdapterMode &= ~(TRLLD_MODE_FORCE_TXI | TRLLD_MODE_FORCE_TKP); - - if (IFM_TYPE_OPTIONS(ifm->ifm_media) & ~ALL_OPTIONS) - return(EINVAL); - - return(0); -} - -static void -oltr_ifmedia_sts(ifp, ifmr) - struct ifnet *ifp; - struct ifmediareq *ifmr; -{ - struct oltr_softc *sc = ifp->if_softc; - struct ifmedia *ifm = &sc->ifmedia; - - ifmr->ifm_active = IFM_TYPE(ifm->ifm_media)|IFM_SUBTYPE(ifm->ifm_media)|IFM_TYPE_OPTIONS(ifm->ifm_media); - - return; -} - -void -oltr_timeout(token) - void *token; -{ - struct oltr_softc *sc = &oltr_softc[(int)token]; - int unit = (int)token, s; - - s = splimp(); - - printf("oltr%d: adapter timed out (%x)\n", unit, sc->hw_state); - - splx(s); -} - - -void -adapter_poll(token) - void *token; -{ - int unit = (int)token, poll_timeout = 0, s; - struct oltr_softc *sc = &oltr_softc[unit]; -#if 0 - static int rx_buffers = 0, tx_buffers = 0, rc; -#endif - - s = splimp(); - - /* Check to make sure we are not polling a dead card */ - if ((sc->hw_state == HW_BAD) || (sc->hw_state == HW_UNKNOWN)) { - sc->poll_adapter = -1; - splx(s); - return; - } - - /*printf("oltr%d: adapter poll.\n", unit);*/ - - /* If the adapter is to be polled again, then set up - * next timeout poll - */ - if (sc->poll_adapter) { - poll_timeout = TRlldPoll(sc->TRlldAdapter); - sc->poll_ch = timeout(adapter_poll, (void *)unit, (poll_timeout * hz)/1000); - } -#if 0 - rc = TRlldReceiveFree(sc->TRlldAdapter); - if (rx_buffers != rc) { - printf("oltr%d: %d receive buffers available\n", sc->unit, rc); - rx_buffers = rc; - } - rc = TRlldTransmitFree(sc->TRlldAdapter); - if (tx_buffers != rc) { - printf("oltr%d: %d transmit buffers available\n", sc->unit, rc); - tx_buffers = rc; - } -#endif - - splx(s); -} - -static void -oltr_init(sc) - struct oltr_softc *sc; -{ - struct ifnet *ifp = &sc->arpcom.ac_if; - int i, rc; - - /*printf("oltr%d: oltr_init\n", sc->unit);*/ - - /* - * Adapter should be freshly downloaded or previously closed before - * bringing it back on line. - */ - if ((sc->hw_state != HW_CLOSED) && (sc->hw_state != HW_LOADING) && (sc->hw_state != HW_CLOSING2)) { - printf("oltr%d: adapter not ready to be opened (%d).\n", sc->unit, sc->hw_state); - return; - } - - /* Allocate and set up the DMA channel */ - if (sc->config->dmalevel != TRLLD_DMA_PIO) { - rc = isa_dma_acquire(sc->config->dmalevel); - isa_dmacascade(sc->config->dmalevel); - } - - /* Open the adapter */ - sc->hw_state = HW_OPENING; - rc = TRlldOpen(sc->TRlldAdapter, sc->arpcom.ac_enaddr, sc->GroupAddress, - sc->FunctionalAddress, ifp->if_mtu + 52, sc->AdapterMode); - if (rc != TRLLD_OPEN_OK) { - printf("oltr%d: Adapter failed to open (rc = %x)\n", sc->unit, rc); - sc->hw_state = HW_FAILED; - } else { - /*printf("oltr%d: adapter opening...\n", sc->unit);*/ - /*ifp->if_flags |= (IFF_UP | IFF_RUNNING);*/ - ifp->if_flags &= ~IFF_OACTIVE; - } - sc->oltr_ch = timeout(oltr_timeout, (void *)sc->unit, 30*hz); - tsleep((void *)sc->unit, 1, "oltrop", 30*hz); - - /* Give the receive buffers to the adapter */ - for (i = 0; i < RX_LIST_SIZE; i++) { - rc = TRlldReceiveFragment(sc->TRlldAdapter, - (void *)sc->rx_buffer[sc->rx_next & RX_LIST_MASK].buf, - kvtop(sc->rx_buffer[sc->rx_next & RX_LIST_MASK].buf), - RX_BUFFER_LEN, - (void *)sc->rx_buffer[sc->rx_next & RX_LIST_MASK].index); - if (rc != TRLLD_RECEIVE_OK) { - printf("oltr%d: Adapter refused fragment %d (rc = %d).\n", sc->unit, i, rc); - break; - } else { - sc->rx_avail--; - } - sc->rx_next++; - } - sc->tx_frame.FragmentCount = 0; - - return; -} - -static void -oltr_intr(unit) - int unit; -{ - struct oltr_softc *sc = &oltr_softc[unit]; - int rc; - - /*printf("oltr%d: oltr_intr\n", unit);*/ /* Too noisy */ - rc= TRlldInterruptService(sc->TRlldAdapter); - if (rc == TRLLD_NO_INTERRUPT) - printf("oltr%d: interrupt not serviced.\n", unit); -} - -#if NPCI > 0 -static void -oltr_pci_intr(psc) - void *psc; -{ - struct oltr_softc *sc = (struct oltr_softc *)psc; - int rc = 0; - - /*printf("oltr%d: oltr_pci_intr\n", sc->unit);*/ /* Too noisy */ - rc = TRlldInterruptService(sc->TRlldAdapter); - if (rc == TRLLD_NO_INTERRUPT) - printf("oltr%d: pci interrupt not serviced.\n", sc->unit); -} -#endif /* NPCI */ - -static void -oltr_start(ifp) - struct ifnet *ifp; -{ - struct oltr_softc *sc = &oltr_softc[ifp->if_unit]; - struct mbuf *m0, *m; - int len, i, k, rc; - - /*printf("oltr%d: oltr_start\n", sc->unit);*/ - -outloop: - - i = (sc->tx_next & TX_LIST_MASK); /* Just to shorten thing up */ - - /* Check to see if we have enough room to transmit */ - if (sc->tx_avail <= 0) { - /* No free buffers, hold off the upper layers */ - /*printf("oltr%d: transmit queue full.\n", sc->unit);*/ - ifp->if_flags |= IFF_OACTIVE; - return; - } - - if (sc->tx_frame.FragmentCount > 0) { - if (!(sc->config->mode & TRLLD_MODE_16M)) { - sc->tx_next++; - m0 = sc->tx_buffer[i].m; - goto restart; - } - } - - IF_DEQUEUE(&ifp->if_snd, m); - if (m == 0) { - /*printf("oltr%d: oltr_start NULL packet dequeued.\n", sc->unit);*/ - ifp->if_flags &= ~IFF_OACTIVE; - return; - } - - /* Keep a pointer to the head of the packet */ - m0 = m; - - if (sc->config->mode & TRLLD_MODE_16M) { /* ISA Adapters - bounce buffers */ - - for (len = 0; m != 0; m = m->m_next) { - sc->tx_frame.TransmitFragment[0].VirtualAddress = sc->tx_buffer[i].buf; - sc->tx_frame.TransmitFragment[0].PhysicalAddress = kvtop(sc->tx_buffer[i].buf); - bcopy(mtod(m, caddr_t), sc->tx_buffer[i].buf + len, m->m_len); - len += m->m_len; - } - sc->tx_frame.FragmentCount = 1; - sc->tx_frame.TransmitFragment[0].count = len; - - sc->tx_next++; - sc->tx_avail--; - - } else { /* PCI Adapters w/DMA */ - - for (k = 0; m!= 0; m = m->m_next) { - sc->tx_frame.TransmitFragment[k].VirtualAddress = mtod(m, caddr_t); - sc->tx_frame.TransmitFragment[k].PhysicalAddress = kvtop(mtod(m, caddr_t)); - sc->tx_frame.TransmitFragment[k].count = m->m_len; - k++; - sc->tx_avail--; - } - sc->tx_frame.FragmentCount = k; - sc->tx_buffer[i].count = k; - sc->tx_buffer[i].m = m0; - - if (sc->tx_avail < 0) { - /*printf("oltr%d: transmit buffers exhausted.\n", sc->unit);*/ - goto nobuffers; - } - sc->tx_next++; - } - -restart: - rc = TRlldTransmitFrame(sc->TRlldAdapter, &sc->tx_frame, (void *)sc->tx_buffer[i].index); - sc->tx_frame.FragmentCount = 0; - - if (rc != TRLLD_TRANSMIT_OK) { - printf("oltr%d: TRlldTransmitFrame returned (%x)\n", sc->unit, rc); - ifp->if_oerrors++; - goto bad; - } - -#if NBPFILTER > 0 - if (ifp->if_bpf) - bpf_mtap(ifp, m0); -#endif - -bad: - - if (sc->config->mode & TRLLD_MODE_16M) { - m_freem(m0); - } - - goto outloop; - -nobuffers: - - ifp->if_flags |= IFF_OACTIVE; - - return; -} - -static void -oltr_stop(sc) - struct oltr_softc *sc; -{ - struct ifnet *ifp = &sc->arpcom.ac_if; - printf("oltr%d: otlr_stop\n", sc->unit); - ifp->if_flags &= ~(IFF_UP | IFF_RUNNING | IFF_OACTIVE); - sc->hw_state = HW_CLOSING; - TRlldClose(sc->TRlldAdapter, 0); - sc->oltr_ch = timeout(oltr_timeout, (void *)sc->unit, 30*hz); - tsleep((void *)sc->unit, 1, "oltrcl", 30*hz); -} - -static int -oltr_ioctl(ifp, cmd, data) - struct ifnet *ifp; - u_long cmd; - caddr_t data; -{ - struct oltr_softc *sc = &oltr_softc[ifp->if_unit]; - struct ifreq *ifr = (struct ifreq *)data; - int error = 0, s; - - /*printf("oltr%d: oltr_ioctl\n", ifp->if_unit);*/ - - s = splimp(); - - switch (cmd) { - - case SIOCSIFADDR: - case SIOCGIFADDR: - case SIOCSIFMTU: - error = iso88025_ioctl(ifp, cmd, data); - break; - - case SIOCSIFFLAGS: - /* - * If the interface is marked up and stopped, then start it. - * If it is marked down and running, then stop it. - */ - if (ifp->if_flags & IFF_UP) { - if ((ifp->if_flags & IFF_RUNNING) == 0) - oltr_init(sc); - } else { - if (ifp->if_flags & IFF_RUNNING) { - oltr_stop(sc); - ifp->if_flags &= ~IFF_RUNNING; - } - } - - if ((ifp->if_flags & IFF_PROMISC) != sc->PromiscMode) { - if (ifp->if_flags & IFF_PROMISC) - TRlldSetPromiscuousMode(sc->TRlldAdapter, OLTR_PROMISC_MODE); - else - TRlldSetPromiscuousMode(sc->TRlldAdapter, 0); - sc->PromiscMode = (ifp->if_flags & IFF_PROMISC); - } - - break; - case SIOCGIFMEDIA: - case SIOCSIFMEDIA: - error = ifmedia_ioctl(ifp, ifr, &sc->ifmedia, cmd); - break; - default: - error = EINVAL; - } - splx(s); - return(error); -} - -/* - * PMW Callback functions ---------------------------------------------------- - */ - -static void -DriverSuspend(MicroSeconds) - unsigned short MicroSeconds; -{ - DELAY(MicroSeconds); -} - - -static void -DriverStatus(DriverHandle, Status) - void *DriverHandle; - TRlldStatus_t *Status; -{ - struct oltr_softc *sc = &oltr_softc[(int)DriverHandle]; - struct ifnet *ifp = &sc->arpcom.ac_if; - - switch (Status->Type) { - case TRLLD_STS_ON_WIRE: - if (sc->hw_state == HW_OPENING) { - sc->hw_state = HW_OPEN; - ifp->if_flags |= (IFF_UP | IFF_RUNNING); - /*printf("oltr%d: Adapter inserted.\n", sc->unit);*/ - untimeout(oltr_timeout, (void *)sc->unit, sc->oltr_ch); - wakeup_one((void *)sc->unit); - } - break; - case TRLLD_STS_SELFTEST_STATUS: - if (Status->Specification.SelftestStatus == TRLLD_ST_OK) { - printf("oltr%d: adapter status good. (close completed/self-test)\n", sc->unit); - if ((sc->hw_state == HW_LOADING) || (sc->hw_state == HW_CLOSING) || (sc->hw_state == HW_CLOSING2)) { - sc->hw_state = HW_CLOSED; - break; - } - } else { - printf("oltr%d: Self test failed: ", sc->unit); - switch (Status->Specification.SelftestStatus) { - case TRLLD_ST_ERROR + 0: printf("Initial Test Error\n"); break; - case TRLLD_ST_ERROR + 1: printf("Adapter Software Checksum Error\n"); break; - case TRLLD_ST_ERROR + 2: printf("Adapter RAM Error\n"); break; - case TRLLD_ST_ERROR + 4: printf("Instruction Test Error\n"); break; - case TRLLD_ST_ERROR + 5: printf("Protocol Handler/RI Hw Error\n"); break; - case TRLLD_ST_ERROR + 6: printf("System Interface Register Error\n"); break; - case TRLLD_ST_TIMEOUT: printf("Selftest did not complete\n"); break; - default: printf("Unknown error (%x)\n", Status->Specification.SelftestStatus); - } - } - break; - case TRLLD_STS_INIT_STATUS: - printf("oltr%d: Adapter initialization failed: ", sc->unit); - switch(Status->Specification.InitStatus) { - case TRLLD_INIT_ERROR + 0x01: printf("Invalid init block (LLD error)\n"); break; - case TRLLD_INIT_ERROR + 0x02: printf("Invalid options (LLD error)\n"); break; - case TRLLD_INIT_ERROR + 0x03: printf("Invalid rcv burst (LLD error)\n"); break; - case TRLLD_INIT_ERROR + 0x04: printf("Invalid xmt burst (LLD error)\n"); break; - case TRLLD_INIT_ERROR + 0x05: printf("Invalid DMA threshold (LLD error)\n"); break; - case TRLLD_INIT_ERROR + 0x06: printf("Invalid scb addr\n"); break; - case TRLLD_INIT_ERROR + 0x07: printf("Invalid ssb addr\n"); break; - case TRLLD_INIT_ERROR + 0x08: printf("DIO parity error (HW error)\n"); break; - case TRLLD_INIT_ERROR + 0x09: printf("DMA timeout (May be interrupt failing if PIO mode or PCI2)\n"); break; - case TRLLD_INIT_ERROR + 0x0A: printf("DMA parity error (HW error)\n"); break; - case TRLLD_INIT_ERROR + 0x0B: printf("DMA bus error (HW error)\n"); break; - case TRLLD_INIT_ERROR + 0x0C: printf("DMA data error\n"); break; - case TRLLD_INIT_ERROR + 0x0D: printf("Adapter Check\n"); break; - case TRLLD_INIT_TIMEOUT: printf("Adapter initialization did not complete\n"); break; - case TRLLD_INIT_DMA_ERROR: printf("Adapter cannot access system memory\n"); break; - case TRLLD_INIT_INTR_ERROR: printf("Adapter cannot interrupt\n"); break; - case TRLLD_OPEN_TIMEOUT: printf("Adapter did not complete open within 30 seconds\n"); break; - case TRLLD_OPEN_ERROR + 0x01: printf("Invalid open options (LLD error)\n"); break; - case TRLLD_OPEN_ERROR + 0x04: printf("TxBuffer count error (LLD error)\n"); break; - case TRLLD_OPEN_ERROR + 0x10: printf("Buffer size error (LLD error)\n"); break; - case TRLLD_OPEN_ERROR + 0x20: printf("List size error (LLD error)\n"); break; - default: - if (Status->Specification.InitStatus & 0x700) { - switch (Status->Specification.InitStatus & 0x70F) { - case TRLLD_OPEN_REPEAT + 0x01: printf("Lobe media test - "); break; - case TRLLD_OPEN_REPEAT + 0x02: printf("Physical insertion - "); break; - case TRLLD_OPEN_REPEAT + 0x03: printf("Address verification - "); break; - case TRLLD_OPEN_REPEAT + 0x04: printf("Participation in ring poll - "); break; - case TRLLD_OPEN_REPEAT + 0x05: printf("Request initialization - "); break; - case TRLLD_OPEN_REPEAT + 0x09: printf("Request registration (TXI) - "); break; - case TRLLD_OPEN_REPEAT + 0x0A: printf("Lobe media test (TXI) - "); break; - default: printf("Unknown phase (%x) - ", Status->Specification.InitStatus & 0x00F); - } - switch (Status->Specification.InitStatus & 0x7F0) { - case TRLLD_OPEN_REPEAT + 0x10: printf("Function failure (No cable?)\n"); break; - case TRLLD_OPEN_REPEAT + 0x20: printf("Signal loss\n"); break; - case TRLLD_OPEN_REPEAT + 0x50: printf("Timeout\n"); break; - case TRLLD_OPEN_REPEAT + 0x60: printf("Ring failure (TKP) / Protocol error (TXI)\n"); break; - case TRLLD_OPEN_REPEAT + 0x70: printf("Ring beaconing\n"); break; - case TRLLD_OPEN_REPEAT + 0x80: printf("Duplicate node address (TKP) / Insert denied (TXI)\n"); break; - case TRLLD_OPEN_REPEAT + 0x90: printf("Request initialization (TKP)\n"); break; - case TRLLD_OPEN_REPEAT + 0xa0: printf("Remove received\n"); break; - case TRLLD_OPEN_REPEAT + 0xb0: printf("C-port address changed (TXI)\n"); break; - default: printf("Unknown type (%x)\n", Status->Specification.InitStatus & 0x0F0); - } - } else { - printf("Unknown error (%x)\n", Status->Specification.InitStatus); - } - } - break; - case TRLLD_STS_RING_STATUS: - if (Status->Specification.RingStatus != 0) { - printf("oltr%d: Ring status change: ", sc->unit); - if (Status->Specification.RingStatus & TRLLD_RS_HARD_ERROR) printf("[Hard error] "); - if (Status->Specification.RingStatus & TRLLD_RS_SOFT_ERROR) printf("[Soft error] "); - if (Status->Specification.RingStatus & TRLLD_RS_TRANSMIT_BEACON) printf("[Transmit beacon] "); - if (Status->Specification.RingStatus & TRLLD_RS_LOBE_WIRE_FAULT) printf("[Wire fault] "); - if (Status->Specification.RingStatus & TRLLD_RS_AUTO_REMOVAL_ERROR) printf("[Auto removal] "); - if (Status->Specification.RingStatus & TRLLD_RS_REMOVE_RECEIVED) printf("[Remove received] "); - if (Status->Specification.RingStatus & TRLLD_RS_COUNTER_OVERFLOW) printf("[Counter overflow] "); - if (Status->Specification.RingStatus & TRLLD_RS_SINGLE_STATION) printf("[Single station] "); - if (Status->Specification.RingStatus & TRLLD_RS_RING_RECOVERY) printf("[Ring recovery] "); - printf("\n"); - } - break; - case TRLLD_STS_ADAPTER_CHECK: - printf("oltr%d: Adapter check (%x %x %x %x)\n", sc->unit, Status->Specification.AdapterCheck[0], - Status->Specification.AdapterCheck[1], Status->Specification.AdapterCheck[2], - Status->Specification.AdapterCheck[3]); - break; - case TRLLD_STS_PROMISCUOUS_STOPPED: - printf("oltr%d: Promiscuous mode stopped: ", sc->unit); - switch(Status->Specification.PromRemovedCause) { - case TRLLD_PROM_REMOVE_RECEIVED: printf("Remove received\n"); break; - case TRLLD_PROM_POLL_FAILURE: printf("Poll failure\n"); break; - default: printf("Unknown (%x)\n", Status->Specification.PromRemovedCause); - } - break; - case TRLLD_STS_LLD_ERROR: - printf("oltr%d: LLD error (%x %x %x %x) ", sc->unit, Status->Specification.InternalError[0], - Status->Specification.InternalError[1], Status->Specification.InternalError[2], - Status->Specification.InternalError[3]); - break; - case TRLLD_STS_ADAPTER_TIMEOUT: - printf("oltr%d: Adapter operation timed out: ", sc->unit); - switch(Status->Specification.AdapterTimeout) { - case TRLLD_COMMAND_TIMEOUT: printf("Command\n"); - case TRLLD_TRANSMIT_TIMEOUT: printf("Transmit\n"); - case TRLLD_INTERRUPT_TIMEOUT: printf("Interrupt\n"); - default: printf("Unknown (%x)\n", Status->Specification.AdapterTimeout); - } - break; - default: - printf("oltr%d: Unknown status type (%x)\n", sc->unit, Status->Type); - - } - if (Status->Closed) { - if (sc->hw_state > HW_BAD) { - sc->hw_state = HW_FAILED; - printf("oltr%d: closing adapter due to failure.\n", sc->unit); - oltr_stop(sc); - } - } -} - -static void -DriverCloseCompleted(DriverHandle) - void *DriverHandle; -{ - struct oltr_softc *sc = &oltr_softc[(int)DriverHandle]; - - printf("oltr%d: DriverCloseCompleted\n", sc->unit); - - untimeout(oltr_timeout, (void *)sc->unit, sc->oltr_ch); - wakeup_one((void *)sc->unit); - - if ((sc->hw_state != HW_CLOSING) && (sc->hw_state != HW_CLOSING2) && (sc->hw_state != HW_CLOSED)) { - printf("oltr%d: adapter close complete called in wrong state (%d)\n", sc->unit, sc->hw_state); - return; - } - sc->hw_state = HW_CLOSING2; - if (sc->config->dmalevel != TRLLD_DMA_PIO) - isa_dma_release(sc->config->dmalevel); - -} - -static void -DriverStatistics(DriverHandle, Statistics) - void *DriverHandle; - TRlldStatistics_t *Statistics; -{ - printf("oltr: DriverStatistics\n"); -} - -static void -DriverTransmitFrameCompleted(DriverHandle, FrameHandle, TransmitStatus) - void *DriverHandle; - void *FrameHandle; - int TransmitStatus; -{ - int frame = (int)FrameHandle; - struct oltr_softc *sc = &oltr_softc[(int)DriverHandle]; - struct ifnet *ifp = &sc->arpcom.ac_if; - - /*printf("oltr%d: transmit complete frame %d\n", sc->unit, frame);*/ - if (TransmitStatus == TRLLD_TRANSMIT_OK) { - ifp->if_opackets++; - } else { - printf("oltr%d: DriverTransmitFrameCompleted (frame %d status %x)\n", sc->unit, frame, TransmitStatus); - ifp->if_oerrors++; - } - - if ((frame < 0) || (frame > TX_LIST_SIZE)) { - printf("oltr%d: bogus transmit frame. (%d)\n", sc->unit, frame); - return; - } - - if (sc->config->mode & TRLLD_MODE_16M) { - sc->tx_avail++; - } else { - m_freem(sc->tx_buffer[frame].m); - sc->tx_avail += sc->tx_buffer[frame].count; - } - - if ((ifp->if_flags & IFF_OACTIVE) && (sc->tx_avail > 0)) { - ifp->if_flags &= ~(IFF_OACTIVE); - oltr_start(ifp); - } - -} - -static void -DriverReceiveFrameCompleted(DriverHandle, ByteCount, FragmentCount, FragmentHandle, ReceiveStatus) - void *DriverHandle; - int ByteCount; - int FragmentCount; - void *FragmentHandle; - int ReceiveStatus; -{ - struct oltr_softc *sc = &oltr_softc[(int)DriverHandle]; - struct ifnet *ifp = &sc->arpcom.ac_if; - struct iso88025_header *th; - struct mbuf *m0, *m1, *m; - int j = (int)FragmentHandle, rc, frame_len = ByteCount, mac_hdr_len; - int mbuf_offset, mbuf_size, frag_offset, length; - char *frag = sc->rx_buffer[j].buf; - - /*printf("oltr%d: ReceiveFrameCompleted (Size %d Count %d Start %d)\n", sc->unit, ByteCount, FragmentCount, j);*/ - - if (sc->hw_state >= HW_OPEN) { /* Hardware operating normally */ - if (frag != sc->rx_buffer[sc->rx_next & RX_LIST_MASK].buf) { - printf("oltr%d: ring buffer pointer blown\n", sc->unit); - oltr_stop(sc); - return; - } - if (ReceiveStatus == TRLLD_RCV_OK) { /* Receive good frame */ - MGETHDR(m0, M_DONTWAIT, MT_DATA); - mbuf_size = MHLEN; - if (m0 == NULL) { - ifp->if_ierrors++; - goto out; - } - if (ByteCount + 2 > MHLEN) { - MCLGET(m0, M_DONTWAIT); - mbuf_size = MCLBYTES; - if ((m0->m_flags & M_EXT) == 0) { - m_freem(m0); - ifp->if_ierrors++; - goto out; - } - } - - m0->m_pkthdr.rcvif = &sc->arpcom.ac_if; - m0->m_pkthdr.len = ByteCount; - m0->m_len = 0; - m0->m_data += 2; - mbuf_size -=2; - th = mtod(m0, struct iso88025_header *); - m0->m_pkthdr.header = (void *)th; - - m = m0; mbuf_offset = 0; frag_offset = 0; - while (frame_len > 0) { - length = MIN3(frame_len, (RX_BUFFER_LEN - frag_offset), (mbuf_size - mbuf_offset)); - bcopy(frag + frag_offset, mtod(m, char *) + mbuf_offset, length); - m->m_len += length; - mbuf_offset += length; - frag_offset += length; - frame_len -= length; - if (frag_offset == RX_BUFFER_LEN) { - frag = sc->rx_buffer[++j].buf; - frag_offset = 0; - } - if ((mbuf_offset == mbuf_size) && (frame_len > 0)) { - MGET(m1, M_DONTWAIT, MT_DATA); - mbuf_size = MHLEN; - if (m1 == NULL) { - ifp->if_ierrors++; - m_freem(m0); - goto out; - } - if (frame_len > MHLEN) { - MCLGET(m1, M_DONTWAIT); - mbuf_size = MCLBYTES; - if ((m1->m_flags & M_EXT) == 0) { - m_freem(m0); - m_freem(m1); - ifp->if_ierrors++; - goto out; - } - } - m->m_next = m1; - m = m1; - mbuf_offset = 0; - m->m_len = 0; - } - } - ifp->if_ipackets++; - -#if NBPFILTER > 0 - if (ifp->if_bpf) - bpf_mtap(ifp, m0); -#endif - - if (ifp->if_flags & IFF_PROMISC) - if (bcmp(th->iso88025_dhost, etherbroadcastaddr, sizeof(th->iso88025_dhost)) != 0) { - if (((th->iso88025_dhost[0] & 0x7f) != sc->arpcom.ac_enaddr[0]) || - (bcmp(th->iso88025_dhost + 1, sc->arpcom.ac_enaddr + 1, ISO88025_ADDR_LEN - 1))) { - m_freem(m0); - goto out; - } - } - - mac_hdr_len = ISO88025_HDR_LEN; - if (th->iso88025_shost[0] & 0x80) /* Check for source routing info */ - mac_hdr_len += (ntohs(th->rcf) & 0x1f00) >> 8; - - m0->m_pkthdr.len -= mac_hdr_len; - m0->m_len -= mac_hdr_len; - m0->m_data += mac_hdr_len; - - iso88025_input(&sc->arpcom.ac_if, th, m0); - - } else { - if (ReceiveStatus != TRLLD_RCV_NO_DATA) { - printf("oltr%d: receive error. (ReceiveStatus=%d)\n", sc->unit, ReceiveStatus); - ifp->if_ierrors++; - } - } -out: - while (FragmentCount > 0) { - rc = TRlldReceiveFragment(sc->TRlldAdapter, - (void *)sc->rx_buffer[sc->rx_next & RX_LIST_MASK].buf, - kvtop(sc->rx_buffer[sc->rx_next & RX_LIST_MASK].buf), - RX_BUFFER_LEN, - (void *)sc->rx_buffer[sc->rx_next & RX_LIST_MASK].index); - if (rc == TRLLD_RECEIVE_OK) { - sc->rx_next++; - FragmentCount--; - } else { - printf("oltr%d: Adapter refused fragment (%d).\n", sc->unit, sc->rx_next - 1); - sc->rx_avail += FragmentCount; - break; - } - } - } else { /* Hardware being closed */ - if (frag != sc->rx_buffer[sc->rx_next++ & RX_LIST_MASK].buf) { - printf("oltr%d: ring buffer pointer blown\n", sc->unit); - } - sc->rx_avail += FragmentCount; - } - -} - - -/* - * ---------------------------- PMW Glue ------------------------------- - */ - -#ifndef TRlldInlineIO - -static void -DriverOutByte(IOAddress, value) - unsigned short IOAddress; - unsigned char value; -{ - outb(IOAddress, value); -} - -static void -DriverOutWord(IOAddress, value) - unsigned short IOAddress; - unsigned short value; -{ - outw(IOAddress, value); -} - -static void -DriverOutDword(IOAddress, value) - unsigned short IOAddress; - unsigned long value; -{ - outl(IOAddress, value); -} - -static void -DriverRepOutByte(IOAddress, DataPointer, ByteCount) - unsigned short IOAddress; - unsigned char *DataPointer; - int ByteCount; -{ - outsb(IOAddress, (void *)DataPointer, ByteCount); -} - -static void -DriverRepOutWord(IOAddress, DataPointer, WordCount) - unsigned short IOAddress; - unsigned short *DataPointer; - int WordCount; -{ - outsw(IOAddress, (void *)DataPointer, WordCount); -} - -static void -DriverRepOutDword(IOAddress, DataPointer, DWordCount) - unsigned short IOAddress; - unsigned long *DataPointer; - int DWordCount; -{ - outsl(IOAddress, (void *)DataPointer, DWordCount); -} - -static unsigned char -DriverInByte(IOAddress) - unsigned short IOAddress; -{ - return(inb(IOAddress)); -} - -static unsigned short -DriverInWord(IOAddress) - unsigned short IOAddress; -{ - return(inw(IOAddress)); -} - -static unsigned long -DriverInDword(IOAddress) - unsigned short IOAddress; -{ - return(inl(IOAddress)); -} - -static void -DriverRepInByte(IOAddress, DataPointer, ByteCount) - unsigned short IOAddress; - unsigned char *DataPointer; - int ByteCount; -{ - insb(IOAddress, (void *)DataPointer, ByteCount); -} - -static void -DriverRepInWord(IOAddress, DataPointer, WordCount) - unsigned short IOAddress; - unsigned short *DataPointer; - int WordCount; -{ - insw(IOAddress, (void *)DataPointer, WordCount); -} -static void -DriverRepInDword(IOAddress, DataPointer, DWordCount) - unsigned short IOAddress; - unsigned long *DataPointer; - int DWordCount; -{ - insl(IOAddress, (void *)DataPointer, DWordCount); -} -#endif /* TRlldInlineIO */ - -#endif /* NOLTR */ diff --git a/sys/contrib/dev/oltr/trlld.h b/sys/contrib/dev/oltr/trlld.h deleted file mode 100644 index d61893e2ab77..000000000000 --- a/sys/contrib/dev/oltr/trlld.h +++ /dev/null @@ -1,892 +0,0 @@ -/* - ****************************** trlld.h *********************************** - * - * Copyright (c) 1997 - * OLICOM A/S - * Denmark - * - * All Rights Reserved - * - * This source file is subject to the terms and conditions of the - * OLICOM Software License Agreement which restricts the manner - * in which it may be used. - * - *--------------------------------------------------------------------------- - * - * Description: PowerMACH Works header file - * - *--------------------------------------------------------------------------- - * $Log: O:/USR/PROJECT/trlld/libsrc/include/trlld.h_v $ - * - * Rev 1.8 10 Dec 1998 12:24:52 JHM - * version 1.2.0,prominfo structure with shorts. - * - * Rev 1.7 25 Nov 1998 16:18:48 JHM - * Bullseye mac, 100MBPS, mactype in config structure, - * 3540 adapter, TRlldTransmitFree, TRlldReceiveFree, - * TRlldAdapterName - * - * Rev 1.6 23 Oct 1998 16:00:36 JHM - * hawkeye adapter types - * - * Rev 1.5 11 Aug 1998 12:22:06 JHM - * split hawkeye types into PCI4,5,6 - * - * Rev 1.4 10 Jul 1998 14:39:22 JHM - * OC_3140,OC_3250 - * - * Rev 1.3 18 Jun 1998 11:32:20 JHM - * AddMemory,OC_3250 - * - * Rev 1.2 18 Apr 1998 15:11:20 JHM - * - * Rev 1.1 09 Dec 1997 18:17:52 JHM - * rel111: TRlldDataPtr_t - * - * Rev 1.0 24 Nov 1997 11:08:58 JHM - * Initial revision. - - Rev 1.5 18 Jun 1997 11:31:36 JHM - Checks for version - - Rev 1.4 13 Jun 1997 13:47:34 JHM - - Rev 1.3 13 Jun 1997 13:27:56 JHM - DTR support, version change - - Rev 1.2 12 Jun 1997 11:43:20 JHM - TRLLD_INTERRUPT_TIMEOUT defined - - Rev 1.1 11 Apr 1997 15:24:18 JHM - replaced tabs with spaces - - Rev 1.0 11 Apr 1997 14:43:04 JHM - Initial revision. - * - **************************************************************************** -*/ - -#ifndef TRLLD_H -#define TRLLD_H - -/* Data buffer pointers are always 32 bits. - For 16:16 it is segment:offset while it for 32:32 is a linear address. */ - -#ifdef TRlldSmall -#define TRlldDataPtr_t unsigned char far * -#define TRlldWordDataPtr_t unsigned short far * -#define TRlldDWordDataPtr_t unsigned long far * -#else -#define TRlldDataPtr_t unsigned char * -#define TRlldWordDataPtr_t unsigned short * -#define TRlldDWordDataPtr_t unsigned long * -#endif - -#ifdef __WATCOMC__ -#define CDECL _cdecl -#else -#define CDECL -#endif - -/*****************************************************************************/ -/* */ -/* Firmware */ -/* */ -/*****************************************************************************/ - -extern unsigned char TRlldMacCode[]; /* 3115,17,18,29,33,36,37 */ -extern unsigned char TRlldHawkeyeMac[]; /* 3139,3140,3141,3250 */ -extern unsigned char TRlldBullseyeMac[]; /* 3540 */ - -/*****************************************************************************/ -/* */ -/* Maximal numbers of concurrent receive and transmit slots */ -/* */ -/*****************************************************************************/ - -#define TRLLD_MAX_RECEIVE 32 -#define TRLLD_MAX_TRANSMIT 32 - -/*****************************************************************************/ -/* */ -/* Maximal frame sizes */ -/* */ -/*****************************************************************************/ - -#define TRLLD_MAXFRAME_100MBPS 18000 -#define TRLLD_MAXFRAME_16MBPS 18000 -#define TRLLD_MAXFRAME_4MBPS 4500 - -/*****************************************************************************/ -/* */ -/* TRlldStatus contains the adapter status used in a DriverStatus call-back. */ -/* */ -/*****************************************************************************/ - -struct OnWireInformation { - unsigned short RingStatus; - unsigned short Speed; - unsigned short AccessProtocol; - unsigned short Reserved; -}; - -typedef struct TRlldStatus { - unsigned short Type; - unsigned char Closed; - unsigned char AccessProtocol; - unsigned short MaxFrameSize; - unsigned short Reserved; - union { - unsigned short OnWireRingStatus; /* for compability */ - unsigned short SelftestStatus; - unsigned short InitStatus; - unsigned short RingStatus; - unsigned short AdapterCheck[4]; - unsigned short InternalError[4]; - unsigned short PromRemovedCause; - unsigned short AdapterTimeout; - struct OnWireInformation OnWireInformation; - } Specification; -} TRlldStatus_t; - -/* values of TRlldStatus.Type */ - -#define TRLLD_STS_ON_WIRE 0 -#define TRLLD_STS_SELFTEST_STATUS 1 -#define TRLLD_STS_INIT_STATUS 2 -#define TRLLD_STS_RING_STATUS 3 -#define TRLLD_STS_ADAPTER_CHECK 4 -#define TRLLD_STS_PROMISCUOUS_STOPPED 5 -#define TRLLD_STS_LLD_ERROR 6 -#define TRLLD_STS_ADAPTER_TIMEOUT 7 - -/* values of TRlldStatus.Closed */ - -#define TRLLD_STS_STATUS_OK 0 -#define TRLLD_STS_STATUS_CLOSED 1 - -/* values of TRlldStatus.AccessProtocol */ - -#define TRLLD_ACCESS_UNKNOWN 0 -#define TRLLD_ACCESS_TKP 1 -#define TRLLD_ACCESS_TXI 2 - -/* values of TRlldStatus.SelftestStatus */ - -#define TRLLD_ST_OK 0 -#define TRLLD_ST_ERROR 0x0100 /* actual errors are 010x, where x is */ - /* 0: Initial Test Error */ - /* 1: Adapter Software Checksum Error */ - /* 2: Adapter RAM Error */ - /* 4: Instruction Test Error */ - /* 5: Protocol Handler/RI Hw Error */ - /* 6: System Interface Register Error */ - -#define TRLLD_ST_TIMEOUT 0x0200 /* The adapter did not complete */ - /* selftest after download */ - -/* values of TRlldStatus.Specification.InitStatus */ - -/* the most likely cause of an init error (whatever the code) is a wrong */ -/* physical or virtual address of the adapter block in TRlldAdapterInit */ - -#define TRLLD_INIT_ERROR 0x100 /* actual errors are 010x, where x is */ - /* 1: Invalid init block (LLD error) */ - /* 2: Invalid options (LLD error) */ - /* 3: Invalid rcv burst (LLD error) */ - /* 4: Invalid xmt burst (LLD error) */ - /* 5: Invalid DMA threshold (LLDerror)*/ - /* 6: Invalid scb addr */ - /* 7: Invalid ssb addr */ - /* 8: DIO parity error (HW error) */ - /* 9: DMA timeout (May be interrupt - failing if PIO mode or PCI2) */ - /* A: DMA parity error (HW error) */ - /* B: DMA bus error (HW error) */ - /* C: DMA data error */ - /* D: Adapter check */ - -#define TRLLD_INIT_TIMEOUT 0x200 /* adapter init did not complete */ -#define TRLLD_INIT_DMA_ERROR 0x300 /* adapter cannot access sys memory */ -#define TRLLD_INIT_INTR_ERROR 0x400 /* adapter cannot interrupt */ -#define TRLLD_OPEN_TIMEOUT 0x500 /* adapter open did not complete */ - /* within 30 seconds */ - -#define TRLLD_OPEN_ERROR 0x600 /* actual errors are 06xx, where the */ - /* bits in x mean: */ - /* 01: Invalid open options (LLDerror)*/ - /* 04: TxBuffer count error (LLDerror)*/ - /* 10: Buffer size error (LLD error) */ - /* 20: List size error (LLD error) */ - /* 40: Node address error */ - -#define TRLLD_OPEN_REPEAT 0x700 /* actual errors are 07xy, where */ - /* x is the open phase: */ - /* 1: Lobe media test */ - /* 2: Physical Insertion */ - /* 3: Address verification */ - /* 4: Participation in ring poll */ - /* 5: Request Initialization */ - /* 9: Request registration (TXI) */ - /* A: Lobe Media Test (TXI) */ - /* B: Address verification (TXI) */ - /* y is the type of error: */ - /* 1: Function failure (No Cable ?) */ - /* 2: Signal loss */ - /* 5: Timeout */ - /* 6: Ring failure (TKP) */ - /* 6: Protocol error (TXI) */ - /* 7: Ring beaconing */ - /* 8: Duplicate Node Address (TKP) */ - /* 8: Insert Denied (TXI) */ - /* 9: Request Initialization (TKP) */ - /* 9: Heart beat failure (TXI) */ - /* A: Remove received */ - /* B: C-port address changed (TXI) */ - /* C: Wire Fault (TKP) */ - /* D: Auto Speed, 1. on ring (TKP) */ - /* E: Speed sense failed */ - -/* When opening with FORCE_TXI and only classic token ring attachment is */ -/* possible, the error is Request Registration/Timeout or 0x795 */ - -#define TRLLD_OPEN_1ST_ON_RING 0x800 /* Speed sense is active, but no other*/ - /* station is present to set the speed*/ - - -/* values of TRlldStatus.Specification.RingStatus */ - -#define TRLLD_RS_SIGNAL_LOSS 0x8000 -#define TRLLD_RS_HARD_ERROR 0x4000 -#define TRLLD_RS_SOFT_ERROR 0x2000 -#define TRLLD_RS_TRANSMIT_BEACON 0x1000 -#define TRLLD_RS_LOBE_WIRE_FAULT 0x0800 -#define TRLLD_RS_AUTO_REMOVAL_ERROR 0x0400 -#define TRLLD_RS_REMOVE_RECEIVED 0x0100 -#define TRLLD_RS_COUNTER_OVERFLOW 0x0080 -#define TRLLD_RS_SINGLE_STATION 0x0040 -#define TRLLD_RS_RING_RECOVERY 0x0020 - -/* values of TRlldStatus.Specification.AdapterCheck */ -/* MISSING */ - -/* values of TRlldStatus.Specification.PromRemovedCause */ - -#define TRLLD_PROM_REMOVE_RECEIVED 1 -#define TRLLD_PROM_POLL_FAILURE 2 -#define TRLLD_PROM_BUFFER_SIZE 3 - -/* values of TRlldStatus.Specification.InternalError */ - -#define TRLLD_INTERNAL_PIO 1 /* A PIO transfer to or from adapter */ - /* did not complete */ -#define TRLLD_INTERNAL_TX 2 /* Trouble with clean up of tx frames */ -#define TRLLD_INTERNAL_RX 3 /* Trouble with clean up of receive */ - /* fragments */ -#define TRLLD_INTERNAL_CMD 4 /* error response from adapter */ -#define TRLLD_INTERNAL_STATE 5 /* event happened in unexpected state */ - -/* values of TRlldStatus.Specification.AdapterTimeout */ - -#define TRLLD_COMMAND_TIMEOUT 1 -#define TRLLD_TRANSMIT_TIMEOUT 2 -#define TRLLD_INTERRUPT_TIMEOUT 3 - - -/*****************************************************************************/ -/* */ -/* TRlldStatistics contains the adapter statistics returned to Driver */ -/* in TRlldStatistics calls and DriverStatistics call-backs */ -/* */ -/*****************************************************************************/ - -typedef struct TRlldStatistics { - unsigned long LineErrors; - unsigned long InternalErrors; /* Not maintained by TMS based boards */ - unsigned long BurstErrors; - unsigned long ARIFCIErrors; - unsigned long AbortDelimiters; /* Not maintained by TMS based boards */ - unsigned long LostFrames; - unsigned long CongestionErrors; - unsigned long FrameCopiedErrors; - unsigned long FrequencyErrors; /* Not maintained by TMS based boards */ - unsigned long TokenErrors; - unsigned long DMABusErrors; /* Not maintained by 3139 */ - unsigned long DMAParityErrors; /* Not maintained by 3139 */ - unsigned long ReceiveLongFrame; /* Not maintained by TMS based boards */ - unsigned long ReceiveCRCErrors; /* Not maintained by TMS based boards */ - unsigned long ReceiveOverflow; /* Not maintained by TMS based boards */ - unsigned long TransmitUnderrun; /* Not maintained by TMS based boards */ - unsigned long UnderrunLock; /* Not maintained by TMS based boards */ - unsigned long OverflowReset; - unsigned char UpstreamNeighbour[6]; - unsigned short RingNumber; - unsigned char BeaconingUpstreamNeighbour[6]; - unsigned short padding; -} TRlldStatistics_t; - - -/*****************************************************************************/ -/* */ -/* TRlldDriver contains the Driver call-backs */ -/* */ -/*****************************************************************************/ - -typedef struct TRlldDriver { - unsigned long TRlldVersion; -#ifndef TRlldInlineIO - void (CDECL * DriverOutByte)(unsigned short IOAddress, - unsigned char Value); - void (CDECL * DriverOutWord)(unsigned short IOAddress, - unsigned short Value); - void (CDECL * DriverOutDWord)(unsigned short IOAddress, - unsigned long Value); - void (CDECL * DriverRepOutByte)(unsigned short IOAddress, - TRlldDataPtr_t DataPointer, - int ByteCount); - void (CDECL * DriverRepOutWord)(unsigned short IOAddress, - TRlldWordDataPtr_t DataPointer, - int WordCount); - void (CDECL * DriverRepOutDWord)(unsigned short IOAddress, - TRlldDWordDataPtr_t DataPointer, - int DWordCount); - unsigned char (CDECL * DriverInByte)(unsigned short IOAddress); - unsigned short (CDECL * DriverInWord)(unsigned short IOAddress); - unsigned long (CDECL * DriverInDWord)(unsigned short IOAddress); - void (CDECL * DriverRepInByte)(unsigned short IOAddress, - TRlldDataPtr_t DataPointer, - int ByteCount); - void (CDECL * DriverRepInWord)(unsigned short IOAddress, - TRlldWordDataPtr_t DataPointer, - int WordCount); - void (CDECL * DriverRepInDWord)(unsigned short IOAddress, - TRlldDWordDataPtr_t DataPointer, - int DWordCount); -#endif - void (CDECL * DriverSuspend)(unsigned short MicroSeconds); - void (CDECL * DriverStatus)(void * DriverHandle, - TRlldStatus_t * Status); - void (CDECL * DriverCloseCmpltd)(void * DriverHandle); - void (CDECL * DriverStatistics)(void * DriverHandle, - TRlldStatistics_t * Statistics); - void (CDECL * DriverTxFrameCmpltd)(void * DriverHandle, - void * FrameHandle, - int TxStatus); - void (CDECL * DriverRcvFrameCmpltd)(void * DriverHandle, - int ByteCount, - int FragmentCount, - void * FragmentHandle, - int RcvStatus); -} TRlldDriver_t; - -/* Version and model control */ - -#define TRLLD_VERSION_INLINEIO 0x8000 -#define TRLLD_VERSION_SMALL 0x4000 -#ifdef TRlldInlineIO -#ifdef TRlldSmall -#define TRLLD_VERSION 0x4120 -#else -#define TRLLD_VERSION 0x0120 -#endif -#else -#ifdef TRlldSmall -#define TRLLD_VERSION 0xC120 -#else -#define TRLLD_VERSION 0x8120 -#endif -#endif - - -/*****************************************************************************/ -/* */ -/* TRlldAdapterConfig contains the properties found for an adapter */ -/* used when finding and defining adapters to use */ -/* */ -/*****************************************************************************/ - - -struct pnp_id { - unsigned short vendor; - unsigned short device; -}; - -struct pci_id { - unsigned short vendor; - unsigned short device; - unsigned char revision; - unsigned char reserved_byte; - unsigned short reserved_word; -}; - -struct pcmcia_id { - /* unknown as yet */ - unsigned char x; -}; - -struct pci_slot { - unsigned short bus_no; - unsigned short device_no; -}; - -struct pcmcia_socket { - /* unknown as yet */ - unsigned char x; -}; - -typedef struct TRlldAdapterConfig { - unsigned char type; - unsigned char bus; - unsigned short magic; - union { - struct pnp_id pnp; - unsigned long eisa; - unsigned short mca; - struct pci_id pci; - struct pcmcia_id pcmcia; - } id; - union { - unsigned short csn; - unsigned short eisa; - unsigned short mca; - struct pci_slot pci; - struct pcmcia_socket pcmcia; - } slot; - unsigned short iobase0; - unsigned short iolength0; - unsigned short iobase1; - unsigned short iolength1; - unsigned long memorybase; - unsigned short memorylength; - unsigned char mode; - unsigned char xmode; - unsigned char interruptlevel; - unsigned char dmalevel; - unsigned char macaddress[6]; - unsigned long prombase; - unsigned char speed; - unsigned char cachelinesize; - unsigned short pcicommand; - unsigned char mactype; - unsigned char reserved[3]; -} TRlldAdapterConfig_t; - -/* values of TRlldAdapterConfig.Type */ - -#define TRLLD_ADAPTER_XT 0 /* not supported */ -#define TRLLD_ADAPTER_ISA1 1 /* OC-3115 */ -#define TRLLD_ADAPTER_ISA2 2 /* OC-3117 */ -#define TRLLD_ADAPTER_ISA3 3 /* OC-3118 */ -#define TRLLD_ADAPTER_MCA1 4 /* OC-3129 id A84 */ -#define TRLLD_ADAPTER_MCA2 5 /* OC-3129 id A85 */ -#define TRLLD_ADAPTER_MCA3 6 /* OC-3129 id A86 */ -#define TRLLD_ADAPTER_EISA1 7 /* OC-3133 id 0109833D */ -#define TRLLD_ADAPTER_EISA2 8 /* OC-3133 id 0209833D */ -#define TRLLD_ADAPTER_EISA3 9 /* OC-3135 not supported */ -#define TRLLD_ADAPTER_PCI1 10 /* OC-3136 id 108d0001 rev 1 */ -#define TRLLD_ADAPTER_PCI2 11 /* OC-3136 id 108d0001 rev 2 */ -#define TRLLD_ADAPTER_PCI3 12 /* OC-3137 id 108d0001 rev 3 */ -#define TRLLD_ADAPTER_PCI4 13 /* OC-3139 id 108d0004 rev 2 */ -#define TRLLD_ADAPTER_PCI5 14 /* OC-3140 id 108d0004 rev 3 */ -#define TRLLD_ADAPTER_PCI6 15 /* OC-3141 id 108d0007 rev 1 */ -#define TRLLD_ADAPTER_PCI7 19 /* OC-3540 id 108d0008 rev 1 */ -#ifdef PCMCIA -#define TRLLD_ADAPTER_PCCARD1 16 /* OC-3220 */ -#define TRLLD_ADAPTER_PCCARD2 17 /* OC-3221,OC-3230,OC-3232 */ -#endif -#define TRLLD_ADAPTER_PCCARD3 18 /* OC-3250 id 108d0005 rev 1 */ - -/* values of TRlldAdapterConfig.Bus */ - -#define TRLLD_BUS_ISA 1 -#define TRLLD_BUS_EISA 2 -#define TRLLD_BUS_MCA 3 -#define TRLLD_BUS_PCI 4 -#define TRLLD_BUS_PCMCIA 5 - -/* values of TRlldAdapterConfig.mode */ - -#define TRLLD_MODE_16M 0x01 /* needs data buffers below 16 M */ -#define TRLLD_MODE_PHYSICAL 0x02 /* needs valid physical addresses */ -#define TRLLD_MODE_FIXED_CFG 0x04 /* cannot be reconfigured */ -#define TRLLD_MODE_SHORT_SLOT 0x08 /* in short ISA slot, cannot use DMA */ -#define TRLLD_MODE_CANNOT_DISABLE 0x10 /* can not disable interrupt */ -#define TRLLD_MODE_SHARE_INTERRUPT 0x20 /* may share interrupt */ -#define TRLLD_MODE_MEMORY 0x40 /* is configured with a memory window*/ - -/* values of TRlldAdapterConfig.dma */ - -#define TRLLD_DMA_PIO 4 /* other values signifies the DMA channel */ -#define TRLLD_DMA_MASTER 0xff /* to use */ - -/* values of TRlldAdapterConfig.mactype */ - - /* download with: */ -#define TRLLD_MAC_TMS 1 /* TRlldMACCode */ -#define TRLLD_MAC_HAWKEYE 2 /* TRlldHawkeyeMAC */ -#define TRLLD_MAC_BULLSEYE 3 /* TRlldBullseyeMAC */ - - -typedef void * TRlldAdapter_t; -typedef void * TRlldAdapterType_t; - -#ifndef MAX_FRAGMENTS -#define MAX_FRAGMENTS 32 -#endif - -typedef struct TRlldTransmit { - unsigned short FragmentCount; - unsigned short TRlldTransmitReserved; - struct TRlldTransmitFragment { - unsigned long PhysicalAddress; - TRlldDataPtr_t VirtualAddress; - unsigned short count; - unsigned short TRlldTransmitFragmentReserved; - } TransmitFragment[MAX_FRAGMENTS]; -} TRlldTransmit_t; - -int CDECL TRlldAdapterSize(void); - -int CDECL TRlldInit(int TypeCount, - TRlldAdapterType_t * AdapterTypeTable); - -extern TRlldAdapterType_t CDECL TRlld3115; /* ISA adapters */ -extern TRlldAdapterType_t CDECL TRlld3117; -extern TRlldAdapterType_t CDECL TRlld3118; -extern TRlldAdapterType_t CDECL TRlld3129; /* MCA adapters */ -extern TRlldAdapterType_t CDECL TRlld3133; /* EISA adapters */ -extern TRlldAdapterType_t CDECL TRlld3136; /* PCI adapters */ -extern TRlldAdapterType_t CDECL TRlld3137; -extern TRlldAdapterType_t CDECL TRlld3139; /* Hawkeye adapters */ -extern TRlldAdapterType_t CDECL TRlld3540; /* BUllseye adapter */ - -#define T3115 &TRlld3115 -#define T3117 &TRlld3117 -#define T3118 &TRlld3118 -#define T3129 &TRlld3129 -#define T3133 &TRlld3133 -#define T3136 &TRlld3136 -#define T3137 &TRlld3137 -#define T3139 &TRlld3139 -#define T3540 &TRlld3540 - -/* Only for Boot Prom Page Zero code */ - -extern TRlldAdapterType_t CDECL TRlld3115Boot; /* ISA adapters */ -extern TRlldAdapterType_t CDECL TRlld3117Boot; -extern TRlldAdapterType_t CDECL TRlld3118Boot; -extern TRlldAdapterType_t CDECL TRlld3129Boot; /* MCA adapters */ -extern TRlldAdapterType_t CDECL TRlld3133Boot; /* EISA adapters */ -extern TRlldAdapterType_t CDECL TRlld3136Boot; /* PCI adapters */ -extern TRlldAdapterType_t CDECL TRlld3137Boot; -extern TRlldAdapterType_t CDECL TRlld3139Boot; /* Hawkeye adapters */ -extern TRlldAdapterType_t CDECL TRlld3540Boot; /* Bullseye adapters */ - -#define B3115 &TRlld3115Boot -#define B3117 &TRlld3117Boot -#define B3118 &TRlld3118Boot -#define B3129 &TRlld3129Boot -#define B3133 &TRlld3133Boot -#define B3136 &TRlld3136Boot -#define B3137 &TRlld3137Boot -#define B3139 &TRlld3139Boot -#define B3540 &TRlld3540Boot - -#define TRLLD_INIT_OK 0 -#define TRLLD_INIT_UNKNOWN 5 - -int CDECL TRlldAdapterInit(TRlldDriver_t * DriverDefinition, - TRlldAdapter_t * TRlldAdapter, - unsigned long TRlldAdapterPhysical, - void * DriverHandle, - TRlldAdapterConfig_t * config); - -#define TRLLD_INIT_OK 0 -#define TRLLD_INIT_NOT_FOUND 1 -#define TRLLD_INIT_UNSUPPORTED 2 -#define TRLLD_INIT_PHYS16 3 -#define TRLLD_INIT_VERSION 4 - -int CDECL TRlldSetSpeed(TRlldAdapter_t * adapter, - unsigned char speed); - -#define TRLLD_SPEED_4MBPS 4 -#define TRLLD_SPEED_16MBPS 16 -#define TRLLD_SPEED_100MBPS 100 - -int CDECL TRlldSetInterrupt(TRlldAdapter_t * adapter, - unsigned char interruptlevel); - -int CDECL TRlldSetDMA(TRlldAdapter_t * adapter, - unsigned char dma, unsigned char * mode); - -#define TRLLD_CONFIG_OK 0 -#define TRLLD_CONFIG_STATE 1 -#define TRLLD_CONFIG_ILLEGAL 2 -#define TRLLD_CONFIG_FAILED 3 - -int CDECL TRlldSetSpecial(TRlldAdapter_t * adapter, - unsigned short param1, unsigned short param2, - unsigned short param3, unsigned short param4); - -int CDECL TRlldAddMemory(TRlldAdapter_t * adapter, - TRlldDataPtr_t virtual, - unsigned long physical, - long size); - -int CDECL TRlldDisable(TRlldAdapter_t * adapter); - -#define TRLLD_OK 0 -#define TRLLD_NOT_SUPPORTED 1 - -void CDECL TRlldEnable(TRlldAdapter_t * adapter); - -int CDECL TRlldInterruptPresent(TRlldAdapter_t * adapter); - -#define TRLLD_NO_INTERRUPT 0 -#define TRLLD_INTERRUPT 1 - -int CDECL TRlldInterruptService(TRlldAdapter_t * adapter); - -int CDECL TRlldInterruptPreService(TRlldAdapter_t * adapter); - -void CDECL TRlldInterruptPostService(TRlldAdapter_t * adapter); - - -int CDECL TRlldPoll(TRlldAdapter_t * adapter); - -int CDECL TRlldDownload(TRlldAdapter_t * adapter, - char * DownLoadCode); - -#define TRLLD_DOWNLOAD_OK 0 -#define TRLLD_DOWNLOAD_ERROR 1 -#define TRLLD_STATE 2 - -typedef int (CDECL * GetCode_t)(void * handle, unsigned char * maccodebyte); - -int CDECL TRlldStreamDownload(TRlldAdapter_t * adapter, - GetCode_t procedure, void * handle); - -int CDECL TRlldOpen(TRlldAdapter_t * adapter, - unsigned char * MACAddress, - unsigned long GroupAddress, - unsigned long FunctionalAddress, - unsigned short MaxFrameSize, - unsigned short OpenModes); - -#define TRLLD_OPEN_OK 0 -#define TRLLD_OPEN_STATE 1 -#define TRLLD_OPEN_ADDRESS_ERROR 2 -#define TRLLD_OPEN_MODE_ERROR 3 -#define TRLLD_OPEN_MEMORY 4 - -#define TRLLD_MODE_TX_STATUS 0x01 -#define TRLLD_MODE_RX_SINGLE 0x02 -#define TRLLD_MODE_FORCE_TKP 0x04 -#define TRLLD_MODE_FORCE_TXI 0x08 -#define TRLLD_MODE_TX_CRC 0x10 - -void CDECL TRlldClose(TRlldAdapter_t * adapter, int immediate); - -void CDECL TRlldSetGroupAddress(TRlldAdapter_t * adapter, - unsigned long GroupAddress); - -void CDECL TRlldSetFunctionalAddress(TRlldAdapter_t * adapter, - unsigned long FunctionalAddress); - -void CDECL TRlldSetPromiscuousMode(TRlldAdapter_t * adapter, - unsigned char mode); - -/* mode bits */ - -#define TRLLD_PROM_LLC 1 -#define TRLLD_PROM_MAC 2 -#define TRLLD_PROM_ERRORFRAMES 4 - -int CDECL TRlldGetStatistics(TRlldAdapter_t * adapter, - TRlldStatistics_t * statistics, - int immediate); - -#define TRLLD_IMMEDIATE_STATISTICS 1 - -#define TRLLD_STATISTICS_RETRIEVED 0 -#define TRLLD_STATISTICS_PENDING 1 - -int CDECL TRlldTransmitFrame(TRlldAdapter_t * adapter, - TRlldTransmit_t * TransmitFrame, - void * FrameHandle); - -#define TRLLD_TRANSMIT_OK 0 -#define TRLLD_TRANSMIT_NOT_OPEN 1 -#define TRLLD_TRANSMIT_TOO_MANY 2 -#define TRLLD_TRANSMIT_MAX16 3 -#define TRLLD_TRANSMIT_SIZE 4 -#define TRLLD_TRANSMIT_EMPTY 5 - -/* completion flags */ - -#define TRLLD_TX_OK 0 -#define TRLLD_TX_NOT_PROCESSED 1 -#define TRLLD_TX_NOT_RECOGNIZED 2 -#define TRLLD_TX_NOT_COPIED 3 - -/* number of free transmit fragments */ - -int CDECL TRlldTransmitFree(TRlldAdapter_t * adapter); - -int CDECL TRlldReceiveFragment(TRlldAdapter_t * adapter, - TRlldDataPtr_t FragmentStart, - unsigned long FragmentPhysical, - int count, - void * FragmentHandle); - -#define TRLLD_RECEIVE_OK 0 -#define TRLLD_RECEIVE_NOT_OPEN 1 -#define TRLLD_RECEIVE_TOO_MANY 2 -#define TRLLD_RECEIVE_SIZE 3 -#define TRLLD_RECEIVE_MAX16 4 - -/* completion flags */ - -#define TRLLD_RCV_OK 0 -#define TRLLD_RCV_NO_DATA 1 -#define TRLLD_RCV_ERROR 2 /* Only when TRLLD_PROM_ERRORFRAMES */ -#define TRLLD_RCV_LONG 3 - -/* number of free receive fragments */ - -int CDECL TRlldReceiveFree(TRlldAdapter_t * adapter); - -int CDECL TRlldFind(TRlldDriver_t * driver, - TRlldAdapterConfig_t * config_table, - unsigned long type_mask, - int max); - -/* type mask bits */ - -#define OC_3115 0x0001 -#define OC_3117 0x0002 -#define OC_3118 0x0004 -#define OC_3129 0x0008 -#define OC_3133 0x0010 -#define OC_3136 0x0040 -#define OC_3137 0x0080 -#define OC_3139 0x0100 -#define OC_3140 0x0200 -#define OC_3141 0x0400 -#define OC_3540 0x0800 - -#ifdef PCMCIA -#define OC_3220 0x0800 -#define OC_3221 0x1000 -#define OC_3230 0x2000 -#define OC_3232 0x4000 -#endif - -#define OC_3250 0x8000 - -int CDECL TRlldIOAddressConfig(TRlldDriver_t * driver, - TRlldAdapterConfig_t * config, - unsigned short address); - - -#define TRLLD_FIND_OK 1 -#define TRLLD_FIND_ERROR 0 -#define TRLLD_FIND_VERSION -1 - -int CDECL TRlldEISASlotConfig(TRlldDriver_t * driver, - TRlldAdapterConfig_t * config, - int slot); - -int CDECL TRlldMCASlotConfig(TRlldDriver_t * driver, - TRlldAdapterConfig_t * config, - int slot); - -int CDECL TRlldPCIConfig(TRlldDriver_t * driver, - TRlldAdapterConfig_t * config, - char * PCIConfigurationSpace); - -#define TRLLD_PCICONFIG_OK 0 -#define TRLLD_PCICONFIG_FAIL 1 -#define TRLLD_PCICONFIG_SET_COMMAND 2 -#define TRLLD_PCICONFIG_VERSION 3 - - -int CDECL TRlldFindPCI(TRlldDriver_t * driver, - TRlldAdapterConfig_t * config_table, - unsigned long type_mask, - int max); - -#ifdef PCMCIA -typedef void * PCCardHandle_t; - -typedef int (CDECL * GetTupleData_t)(PCCardHandle_t handle, - unsigned short TupleIdent, - char * TupleData, - int length); - -int CDECL TRlldPCCardConfig(TRlldDriver_t * driver, - TRlldAdapterConfig_t * config, - unsigned short address, - int irq, - GetTupleData_t GetTuple, - PCCardHandle_t handle); - -#define TRLLD_PCCARD_CONFIG_OK 0 -#define TRLLD_PCCARD_CONFIG_FAIL 1 -#endif - -/* Boot Prom Support */ - -typedef struct TRlldPromInfo { - unsigned short PromIdent; - short PromPages; - short PromPageSize; -} TRlldPromInfo_t; - -int CDECL TRlldMapBootProm(TRlldAdapter_t * adapter, - TRlldDataPtr_t prompointer); - -#define TRLLD_PROM_OK 0 -#define TRLLD_PROM_FAILED 3 - -int CDECL TRlldGetPromInfo(TRlldAdapter_t * adapter, TRlldPromInfo_t * info); - -#define TRLLD_PROM_OK 0 -#define TRLLD_PROM_NOT_MOUNTED 1 -#define TRLLD_PROM_NOT_MAPPED 2 - -void CDECL TRlldSetPromPage(TRlldAdapter_t * adapter, int page); - -int CDECL TRlldSetMemoryUse(TRlldAdapter_t * adapter, int use); - -#define TRLLD_PROM_TO_MEMORY 0 -#define TRLLD_REGISTERS_TO_MEMORY 1 - -#define TRLLD_MEMORY_USE_OK 0 -#define TRLLD_MEMORY_USE_NO_MEMORY 1 -#define TRLLD_MEMORY_USE_STATE 2 -#define TRLLD_MEMORY_USE_ILLEGAL 3 - -int CDECL TRlldPromErase(TRlldAdapter_t * adapter, - void (CDECL * delay)(int milliseconds)); - -#define TRLLD_PROM_OK 0 -#define TRLLD_PROM_NOT_MOUNTED 1 -#define TRLLD_PROM_NOT_MAPPED 2 -#define TRLLD_PROM_FAILED 3 - -int CDECL TRlldPromWrite(TRlldAdapter_t * adapter, char * data, - int offset, int count); - -#define TRLLD_PROM_OK 0 -#define TRLLD_PROM_NOT_MOUNTED 1 -#define TRLLD_PROM_NOT_MAPPED 2 -#define TRLLD_PROM_FAILED 3 -#define TRLLD_PROM_ILLEGAL 4 - -void CDECL TRlldEmergency(TRlldAdapter_t * adapter); - -/* Convert from TRlldAdapterConfig.type to name string */ -char * CDECL TRlldAdapterName(int type); -#endif diff --git a/sys/contrib/dev/oltr/trlldbm.c b/sys/contrib/dev/oltr/trlldbm.c deleted file mode 100644 index c4400f383e11..000000000000 --- a/sys/contrib/dev/oltr/trlldbm.c +++ /dev/null @@ -1,2011 +0,0 @@ -/* - ****************************** trlld.h *********************************** - * - * Copyright (c) 1997 - * OLICOM A/S - * Denmark - * - * All Rights Reserved - * - * This source file is subject to the terms and conditions of the - * OLICOM Software License Agreement which restricts the manner - * in which it may be used. - * - *--------------------------------------------------------------------------- - * - * Description: Olicom Bullseye adapter micro-code - * - *--------------------------------------------------------------------------- - */ - -#include "opt_oltr.h" - -#ifndef OLTR_NO_BULLSEYE_MAC - -unsigned char TRlldBullseyeMac[] = { 0x52, 0x94, 0x03, 0x00, 0x02, 0x7c, 0x7d, 0xb7, 0x4f, 0x43, 0x53, 0x4d, 0x41, 0x43, 0x2e, 0x42, - 0x55, 0x4c, 0x4c, 0x53, 0x45, 0x59, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xea, 0x55, 0x00, 0x00, 0x00, 0xfc, 0xfa, 0xb8, 0x00, 0x00, 0xbb, 0x00, - 0x00, 0xb9, 0x00, 0x00, 0xba, 0x00, 0x00, 0xbe, 0x00, 0x00, 0xbf, 0x00, 0x00, 0xbd, 0x00, 0x00, - 0x8c, 0xc8, 0x8e, 0xd8, 0x8e, 0xc0, 0x8e, 0xd0, 0xb8, 0x7e, 0x5e, 0x8b, 0xe0, 0x83, 0x3e, 0x4e, - 0x00, 0x00, 0x75, 0x1c, 0x2b, 0xdb, 0x8b, 0xf3, 0xad, 0x8b, 0xd8, 0x8b, 0xc8, 0xd1, 0xe9, 0x49, - 0x49, 0xad, 0x03, 0xd8, 0xe2, 0xfb, 0x0b, 0xdb, 0x74, 0x06, 0xc7, 0x06, 0x50, 0x5d, 0x01, 0x00, - 0xb8, 0x00, 0x00, 0x8e, 0xd8, 0xc7, 0x06, 0x0c, 0x00, 0x9a, 0x01, 0x8c, 0x0e, 0x0e, 0x00, 0xc7, - 0x06, 0x04, 0x00, 0x9a, 0x01, 0x8c, 0x0e, 0x06, 0x00, 0xc7, 0x06, 0x14, 0x00, 0x9a, 0x01, 0x8c, - 0x0e, 0x14, 0x00, 0xc7, 0x06, 0x08, 0x00, 0x9a, 0x01, 0x8c, 0x0e, 0x08, 0x00, 0x90, 0x90, 0x90, - 0xc7, 0x06, 0x20, 0x00, 0xf2, 0x23, 0x8c, 0x0e, 0x22, 0x00, 0x2b, 0xc0, 0xe7, 0x06, 0xc7, 0x06, - 0x30, 0x00, 0xe4, 0x0d, 0x8c, 0x0e, 0x32, 0x00, 0xc7, 0x06, 0x34, 0x00, 0xde, 0x0e, 0x8c, 0x0e, - 0x36, 0x00, 0xc7, 0x06, 0x38, 0x00, 0x10, 0x0f, 0x8c, 0x0e, 0x3a, 0x00, 0xc7, 0x06, 0x3c, 0x00, - 0x9a, 0x01, 0x8c, 0x0e, 0x3e, 0x00, 0xc7, 0x06, 0x08, 0x00, 0x9a, 0x01, 0x8c, 0x0e, 0x0a, 0x00, - 0xc7, 0x06, 0x14, 0x00, 0x9a, 0x01, 0x8c, 0x0e, 0x16, 0x00, 0xbb, 0x40, 0x60, 0x8e, 0xc3, 0x26, - 0x83, 0x0e, 0x32, 0x00, 0x08, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x26, 0x83, 0x26, - 0x32, 0x00, 0xf7, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x26, 0x83, 0x0e, 0x32, 0x00, - 0x08, 0x2a, 0xe4, 0xb0, 0x13, 0xe6, 0x10, 0x90, 0x90, 0x90, 0xb0, 0x08, 0xe6, 0x12, 0x90, 0x90, - 0x90, 0xb0, 0x09, 0xe6, 0x12, 0x90, 0x90, 0x90, 0xb0, 0xff, 0xe6, 0x12, 0x90, 0x90, 0x90, 0x26, - 0x83, 0x26, 0x32, 0x00, 0xf7, 0x90, 0x90, 0x90, 0x33, 0xc0, 0x26, 0xc7, 0x06, 0x44, 0x00, 0xff, - 0xff, 0x26, 0xc7, 0x06, 0x46, 0x00, 0xff, 0xff, 0x26, 0x09, 0x06, 0x48, 0x00, 0x26, 0x09, 0x06, - 0x4a, 0x00, 0xb8, 0x00, 0x00, 0xe7, 0x06, 0xb8, 0x0f, 0x27, 0xe7, 0x00, 0xb8, 0x09, 0x00, 0xe7, - 0x06, 0xb0, 0x11, 0xe8, 0x7f, 0x0a, 0xe8, 0xbd, 0x0a, 0xfb, 0xe9, 0x67, 0x0b, 0x90, 0x50, 0xb0, - 0xa0, 0xe6, 0x10, 0x58, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0a, 0xf0, 0xf0, 0xf0, 0xf0, 0xe7, 0xe7, 0xe7, 0x31, 0x36, - 0x31, 0x32, 0x39, 0x38, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, - 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x38, 0x20, 0x4f, 0x6c, 0x69, 0x63, 0x6f, 0x6d, 0x2e, 0x20, - 0x41, 0x6c, 0x6c, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x64, 0x20, 0x2c, 0x21, 0x2c, 0x21, 0x6e, 0x37, 0x1f, 0x3b, 0x1b, 0x3d, 0x61, 0x3e, - 0xa3, 0x3f, 0xeb, 0x42, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x54, 0x41, 0xaa, 0x41, 0x3b, 0x42, - 0xb8, 0x42, 0xbd, 0x42, 0xc2, 0x42, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x83, 0x3a, - 0x2c, 0x21, 0x2c, 0x21, 0x03, 0x39, 0x63, 0x39, 0x63, 0x39, 0x40, 0x3a, 0x63, 0x39, 0x68, 0x3a, - 0xa4, 0x3a, 0x2c, 0x21, 0x2c, 0x21, 0x54, 0x41, 0xaa, 0x41, 0x3b, 0x42, 0xb8, 0x42, 0xbd, 0x42, - 0xc2, 0x42, 0x2c, 0x21, 0x7d, 0x39, 0x2c, 0x21, 0x08, 0x3a, 0x2c, 0x21, 0xd9, 0x3a, 0xff, 0x3a, - 0xaa, 0x34, 0xaa, 0x34, 0xaa, 0x34, 0xaa, 0x34, 0x74, 0x35, 0x9f, 0x36, 0xaa, 0x34, 0x86, 0x35, - 0x32, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, - 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, - 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, 0xf1, 0x36, - 0xde, 0x35, 0xaa, 0x34, 0xaa, 0x34, 0xaa, 0x34, 0xaa, 0x34, 0xaa, 0x34, 0x11, 0x36, 0xaa, 0x34, - 0xaa, 0x34, 0x23, 0x36, 0xaa, 0x34, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, - 0xff, 0x04, 0x04, 0x05, 0xff, 0xff, 0xff, 0x00, 0x03, 0x00, 0x03, 0x03, 0x00, 0x03, 0x0d, 0x06, - 0xff, 0xff, 0x18, 0x06, 0x28, 0x06, 0x28, 0x06, 0x28, 0x06, 0x28, 0x06, 0x00, 0x00, 0x33, 0x06, - 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x39, 0x06, 0x58, 0x06, 0x9e, 0x06, 0x9e, 0x06, 0x9e, 0x06, - 0x6d, 0x06, 0x7d, 0x06, 0x00, 0x00, 0x83, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0x2c, 0x21, 0x73, 0x43, 0x3e, 0x17, 0x5f, 0x34, 0xd5, 0x27, 0x0d, 0x4a, 0x2c, 0x21, 0xad, 0x43, - 0x86, 0x47, 0xcf, 0x45, 0xcf, 0x43, 0x42, 0x45, 0x47, 0x47, 0x0b, 0x45, 0xff, 0x46, 0x0d, 0x48, - 0x57, 0x48, 0x44, 0x48, 0x26, 0x47, 0x64, 0x48, 0x89, 0x48, 0xb4, 0x48, 0x47, 0x48, 0xd2, 0x48, - 0x16, 0x03, 0x3c, 0x03, 0x5c, 0x03, 0x88, 0x03, 0xae, 0x03, 0x26, 0x04, 0x8c, 0x04, 0xc6, 0x04, - 0x10, 0x05, 0x02, 0x06, 0xe8, 0x01, 0x10, 0x03, 0x36, 0x03, 0x64, 0x03, 0x82, 0x03, 0xa8, 0x03, - 0x86, 0x04, 0xc0, 0x04, 0x0a, 0x05, 0xfc, 0x05, 0xe4, 0x01, 0x2e, 0x04, 0x94, 0x04, 0x00, 0x03, - 0x2a, 0x03, 0x50, 0x03, 0x76, 0x03, 0x9c, 0x03, 0xc2, 0x03, 0xbc, 0x03, 0xda, 0x03, 0x98, 0x05, - 0x0e, 0x04, 0x7a, 0x04, 0xb4, 0x04, 0xda, 0x04, 0xfa, 0x04, 0xe0, 0x05, 0x24, 0x05, 0x48, 0x05, - 0x64, 0x05, 0x7c, 0x05, 0xf4, 0x03, 0xb0, 0x05, 0xc8, 0x05, 0x20, 0x5c, 0x28, 0x5c, 0x34, 0x5c, - 0x3c, 0x5c, 0x44, 0x5c, 0x6a, 0x5c, 0x7e, 0x5c, 0x86, 0x5c, 0x92, 0x5c, 0xb8, 0x5c, 0xcc, 0x5c, - 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7, 0xf8, 0xf9, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, - 0xe6, 0x1d, 0x50, 0x1e, 0x7c, 0x1e, 0xf2, 0x1e, 0x14, 0x1f, 0xa6, 0x1f, 0x04, 0x20, 0x2c, 0x21, - 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x30, 0x20, 0x58, 0x20, 0xc4, 0x20, 0xe8, 0x20, 0x24, 0x21, - 0x2c, 0x21, 0x2c, 0x21, 0xde, 0x16, 0x0e, 0x18, 0x92, 0x18, 0x94, 0x18, 0xb0, 0x18, 0xd6, 0x18, - 0xf2, 0x18, 0x80, 0x19, 0xf8, 0x19, 0x48, 0x1b, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, - 0x58, 0x22, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, - 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, - 0x2c, 0x21, 0x2c, 0x21, 0x84, 0x1b, 0xf4, 0x1b, 0x9e, 0x1c, 0xea, 0x1c, 0x6c, 0x1d, 0x8c, 0x1d, - 0xba, 0x1d, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, 0x2c, 0x21, - 0xaa, 0x55, 0x00, 0xff, 0xf6, 0x46, 0x01, 0x01, 0x75, 0x48, 0xc6, 0x86, 0x0e, 0x01, 0x05, 0xe8, - 0x73, 0x01, 0xe8, 0x0d, 0x06, 0xe8, 0x02, 0x03, 0xe8, 0x5c, 0x03, 0x73, 0x19, 0xfe, 0x8e, 0x0e, - 0x01, 0x74, 0x0d, 0xe8, 0xaa, 0x03, 0x8b, 0x86, 0x0f, 0x01, 0x26, 0xa3, 0x42, 0x00, 0xeb, 0xdf, - 0xc7, 0x06, 0x50, 0x5d, 0x02, 0x00, 0x32, 0xe4, 0x8a, 0x46, 0x00, 0xe8, 0x48, 0x04, 0x83, 0x3e, - 0x4e, 0x00, 0x02, 0x72, 0x03, 0xe8, 0x61, 0x03, 0xa1, 0x50, 0x5d, 0xe8, 0xb3, 0x42, 0xc6, 0x46, - 0x01, 0x01, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x74, 0x27, 0xf6, 0x86, 0x6c, 0x01, 0x01, 0x74, 0x03, - 0xe8, 0x16, 0x55, 0xf6, 0x86, 0x6d, 0x01, 0x01, 0x74, 0x03, 0xe8, 0x64, 0x55, 0xf7, 0x86, 0x82, - 0x01, 0x01, 0x00, 0x75, 0x08, 0xf7, 0x86, 0x8a, 0x01, 0x01, 0x00, 0x74, 0x03, 0xe8, 0x40, 0x52, - 0xe8, 0x5a, 0x05, 0xe8, 0x26, 0x05, 0xe8, 0x9e, 0x04, 0xe8, 0x43, 0x04, 0xf6, 0x86, 0x95, 0x02, - 0x01, 0x74, 0x03, 0xe8, 0x78, 0x1c, 0x33, 0xdb, 0xf6, 0x86, 0xae, 0x02, 0x01, 0x74, 0x16, 0x8a, - 0x5e, 0x09, 0x8a, 0x7e, 0x08, 0x38, 0xfb, 0x75, 0x30, 0x80, 0xfb, 0x00, 0x74, 0x07, 0x80, 0xfb, - 0x1e, 0x74, 0x02, 0xeb, 0x22, 0x80, 0x7e, 0x06, 0x1e, 0x74, 0x1e, 0x33, 0xdb, 0x8a, 0x5e, 0x07, - 0x3a, 0x5e, 0x06, 0x74, 0x14, 0xfa, 0x50, 0x8b, 0x46, 0x06, 0x89, 0x46, 0x0c, 0x58, 0x88, 0x5e, - 0x06, 0x32, 0xff, 0xff, 0x97, 0x9e, 0x05, 0xeb, 0x32, 0x8a, 0x5e, 0x09, 0x3a, 0x5e, 0x08, 0x74, - 0x2a, 0x50, 0x8b, 0x46, 0x08, 0x89, 0x46, 0x0e, 0x58, 0x80, 0xfb, 0x1e, 0x74, 0x12, 0x80, 0xfb, - 0x00, 0x74, 0x0d, 0x80, 0xfb, 0x0c, 0x74, 0x08, 0x80, 0xfb, 0x16, 0x74, 0x03, 0xe8, 0x31, 0x2c, - 0x88, 0x5e, 0x08, 0x32, 0xff, 0xfa, 0xff, 0x97, 0x7c, 0x05, 0xfb, 0xfa, 0xf7, 0x86, 0xf0, 0x00, - 0xff, 0xff, 0x74, 0x0f, 0x8b, 0xb6, 0xf0, 0x00, 0x8b, 0x4c, 0x04, 0xe8, 0xce, 0x09, 0xfb, 0xff, - 0xd1, 0xeb, 0x5c, 0xfb, 0xf7, 0x46, 0x16, 0xff, 0xff, 0x74, 0x27, 0x8d, 0x7e, 0x16, 0xe8, 0x64, - 0x06, 0x56, 0x8b, 0x5c, 0x02, 0xd1, 0xe3, 0xff, 0x97, 0xcc, 0x04, 0x5e, 0xe8, 0x68, 0x06, 0xf7, - 0x86, 0xcc, 0x01, 0x01, 0x00, 0x74, 0x09, 0xe8, 0xbf, 0x25, 0xc7, 0x86, 0xcc, 0x01, 0x00, 0x00, - 0xeb, 0x2d, 0xfa, 0xf7, 0x86, 0x0a, 0x01, 0x01, 0x00, 0x75, 0x13, 0xf6, 0x86, 0xc4, 0x15, 0x80, - 0x75, 0x0c, 0xc7, 0x86, 0x0a, 0x01, 0x01, 0x00, 0xfb, 0xe8, 0x0b, 0x3c, 0xeb, 0x11, 0xfa, 0x8b, - 0x86, 0x67, 0x02, 0x38, 0xc4, 0x74, 0x07, 0x88, 0x86, 0x68, 0x02, 0xe8, 0xe5, 0x1a, 0xfb, 0xe8, - 0xcd, 0x05, 0xe9, 0xcd, 0xfe, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x44, 0x00, 0xff, 0xcb, 0x8e, - 0x46, 0x02, 0x26, 0xc7, 0x06, 0x48, 0x00, 0xff, 0xfb, 0xe8, 0xa1, 0x02, 0x33, 0xc0, 0x88, 0x86, - 0xb8, 0x01, 0x88, 0x86, 0xb9, 0x01, 0x8e, 0x46, 0x02, 0x26, 0xa2, 0x5a, 0x00, 0x89, 0x86, 0x18, - 0x02, 0x89, 0x86, 0x0a, 0x02, 0x89, 0x86, 0x3a, 0x02, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x4c, - 0x00, 0x30, 0x01, 0x8d, 0x86, 0xa8, 0x08, 0x89, 0x86, 0xc0, 0x01, 0x89, 0x86, 0xc2, 0x01, 0xc7, - 0x86, 0xc4, 0x01, 0x01, 0x00, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0xbe, 0x58, 0x02, 0xb9, - 0x52, 0x00, 0xd1, 0xe9, 0xf3, 0xab, 0xd1, 0xd1, 0xf3, 0xaa, 0x8d, 0xbe, 0xec, 0x05, 0xab, 0xab, - 0xaa, 0x8d, 0xbe, 0xf4, 0x05, 0xab, 0xab, 0xaa, 0x8d, 0xbe, 0xb8, 0x02, 0xb9, 0x0b, 0x00, 0xf3, - 0xab, 0xc7, 0x86, 0xc8, 0x01, 0x14, 0x00, 0xc7, 0x86, 0xc0, 0x02, 0x04, 0x00, 0xbb, 0xfc, 0x04, - 0xb9, 0x0b, 0x00, 0x8b, 0x3f, 0x03, 0xfd, 0xab, 0xab, 0xab, 0x43, 0x43, 0xe2, 0xf5, 0xbb, 0x12, - 0x05, 0xb9, 0x0a, 0x00, 0x8b, 0x3f, 0x03, 0xfd, 0xab, 0xab, 0x43, 0x43, 0xe2, 0xf6, 0xb8, 0x02, - 0x00, 0x03, 0x06, 0x2a, 0x5d, 0xe8, 0x19, 0x05, 0x39, 0x06, 0x2a, 0x5d, 0x75, 0xf7, 0x8e, 0x46, - 0x02, 0x26, 0x83, 0x0e, 0x4c, 0x00, 0x02, 0xc7, 0x86, 0x0c, 0x02, 0xc8, 0x00, 0xc7, 0x86, 0xfc, - 0x01, 0xff, 0xff, 0xc7, 0x86, 0xfa, 0x01, 0x07, 0x00, 0xc6, 0x86, 0x8c, 0x02, 0x00, 0xe8, 0x01, - 0x00, 0xc3, 0x8e, 0x46, 0x02, 0x33, 0xc0, 0xfa, 0x89, 0x86, 0xb6, 0x01, 0x8e, 0x46, 0x02, 0x26, - 0xa3, 0x50, 0x00, 0x8b, 0x86, 0xa8, 0x15, 0x26, 0xa3, 0x70, 0x00, 0x89, 0x86, 0xb2, 0x01, 0x93, - 0xc7, 0x07, 0x00, 0x00, 0xc7, 0x47, 0x02, 0xff, 0xff, 0x93, 0xc1, 0xe8, 0x08, 0x26, 0xa3, 0x74, - 0x00, 0x8b, 0x86, 0xaa, 0x15, 0x26, 0xa3, 0x78, 0x00, 0x26, 0xa1, 0x78, 0x00, 0x93, 0xc7, 0x47, - 0xfc, 0xde, 0xad, 0xc7, 0x47, 0xfe, 0xbe, 0xaf, 0x93, 0xc1, 0xe8, 0x08, 0x26, 0xa3, 0x76, 0x00, - 0x33, 0xc0, 0xc6, 0x86, 0x87, 0x02, 0x01, 0x8d, 0xb6, 0xa8, 0x09, 0xc7, 0x86, 0xa6, 0x01, 0xb0, - 0x09, 0x01, 0xae, 0xa6, 0x01, 0x89, 0xb6, 0xa8, 0x01, 0x89, 0xb6, 0xaa, 0x01, 0xc7, 0x04, 0x30, - 0x80, 0xc7, 0x44, 0x04, 0x00, 0x00, 0xc6, 0x86, 0x8a, 0x02, 0x01, 0xfb, 0xe8, 0xa7, 0x08, 0x80, - 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x33, 0xb8, 0x00, 0x40, 0x80, 0xbe, 0xfe, 0x00, 0x00, 0x74, 0x13, - 0x25, 0xff, 0x1f, 0x0d, 0x00, 0xa0, 0x83, 0xe0, 0xfd, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x4c, - 0x00, 0x80, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x40, 0x00, 0xa1, 0x2a, 0x5d, 0x83, 0xc0, 0x02, - 0xe8, 0x3e, 0x04, 0x39, 0x06, 0x2a, 0x5d, 0x75, 0xf7, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, - 0x40, 0x00, 0x08, 0xbe, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x42, 0x00, 0xc8, 0x8e, 0x46, 0x02, - 0x26, 0xc7, 0x06, 0x4c, 0x00, 0xa0, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x50, 0x00, 0x04, - 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x40, 0x00, 0x7f, 0xff, 0x90, 0x90, 0x8e, 0x46, 0x02, - 0x26, 0x81, 0x0e, 0x40, 0x00, 0x80, 0x00, 0x90, 0x90, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x40, - 0x00, 0x7f, 0xff, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x68, 0x00, 0x18, 0x00, 0x8e, 0x46, 0x02, - 0x26, 0x83, 0x0e, 0x4c, 0x00, 0x01, 0xc3, 0xc6, 0x86, 0x0c, 0x01, 0x01, 0xc6, 0x86, 0x0d, 0x01, - 0x00, 0xe8, 0xcc, 0x27, 0xa1, 0x2a, 0x5d, 0x83, 0xc0, 0x02, 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xc0, - 0x0b, 0xc0, 0x39, 0x06, 0x2a, 0x5d, 0x72, 0xf2, 0x80, 0xbe, 0x0d, 0x01, 0x01, 0x74, 0x03, 0xf9, - 0xeb, 0x01, 0xf8, 0xc6, 0x86, 0x0c, 0x01, 0x00, 0xc3, 0xb8, 0x00, 0x00, 0x88, 0x86, 0x06, 0x01, - 0x88, 0x86, 0x07, 0x01, 0x88, 0x86, 0x08, 0x01, 0x88, 0x86, 0x09, 0x01, 0x89, 0x86, 0x0a, 0x01, - 0x88, 0x86, 0xb8, 0x01, 0x88, 0x86, 0xb9, 0x01, 0x88, 0x86, 0xd1, 0x01, 0xa2, 0x81, 0x5e, 0xc3, - 0xb8, 0x40, 0x60, 0x8e, 0xc0, 0x26, 0x83, 0x0e, 0x32, 0x00, 0x08, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, - 0xc0, 0x2b, 0xc0, 0x26, 0x83, 0x26, 0x32, 0x00, 0xf7, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, - 0xc0, 0x2b, 0xc0, 0x26, 0x83, 0x0e, 0x32, 0x00, 0x08, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, - 0xc0, 0x26, 0x83, 0x26, 0x32, 0x00, 0xf7, 0xc3, 0x50, 0x53, 0x52, 0xc6, 0x46, 0x01, 0x00, 0x32, - 0xe4, 0x8a, 0x46, 0x00, 0xbb, 0x00, 0xbd, 0x81, 0xeb, 0x00, 0x7c, 0x81, 0xe3, 0x00, 0xff, 0x89, - 0x9e, 0xac, 0x15, 0x81, 0xc3, 0x00, 0x01, 0xf7, 0xe3, 0x05, 0x00, 0x7c, 0x89, 0x86, 0xa8, 0x15, - 0x03, 0x86, 0xac, 0x15, 0x48, 0x89, 0x86, 0xaa, 0x15, 0x5a, 0x5b, 0x58, 0xc3, 0x51, 0x8e, 0x46, - 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, 0xfc, 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x54, 0x00, 0x80, - 0x00, 0x75, 0x1e, 0xb9, 0xf4, 0x01, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x4c, 0x00, 0x00, 0x08, - 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x54, 0x00, 0x80, 0x00, 0x75, 0x05, 0xe8, 0xe2, 0x02, 0xe2, - 0xe5, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x4c, 0x00, 0xff, 0xf7, 0x59, 0x8e, 0x46, 0x02, 0x26, - 0x83, 0x0e, 0x4c, 0x00, 0x02, 0xc3, 0x50, 0x53, 0xc1, 0xe0, 0x05, 0x05, 0x00, 0x03, 0x8b, 0xd8, - 0x8d, 0x86, 0x00, 0x01, 0x89, 0x07, 0x8d, 0x86, 0xd4, 0x01, 0x89, 0x47, 0x02, 0x8d, 0x86, 0xe4, - 0x01, 0x89, 0x47, 0x04, 0x8d, 0x86, 0xb0, 0x15, 0x89, 0x47, 0x08, 0x8d, 0x86, 0xc4, 0x15, 0x89, - 0x47, 0x06, 0x8d, 0x86, 0xc0, 0x01, 0x89, 0x47, 0x0a, 0xc7, 0x47, 0x0c, 0x94, 0x5e, 0x8d, 0x86, - 0x40, 0x02, 0x89, 0x47, 0x0e, 0x8d, 0x06, 0x2a, 0x5d, 0x89, 0x47, 0x10, 0x5b, 0x58, 0xc3, 0x50, - 0xf7, 0x86, 0xf6, 0x00, 0x02, 0x00, 0x75, 0x02, 0xeb, 0x4b, 0xf6, 0x86, 0x64, 0x02, 0x01, 0x75, - 0x07, 0xf6, 0x86, 0x72, 0x02, 0x01, 0x74, 0x3d, 0xf6, 0x86, 0x89, 0x02, 0x01, 0x74, 0x36, 0xc6, - 0x86, 0x89, 0x02, 0x00, 0x8b, 0x86, 0x0a, 0x02, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x40, 0x74, 0x03, - 0x25, 0xff, 0xaf, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x20, 0x74, 0x03, 0x25, 0xff, 0xdf, 0x89, 0x86, - 0x0a, 0x02, 0x3b, 0x86, 0x3a, 0x02, 0x74, 0x0d, 0x89, 0x86, 0x3a, 0x02, 0x81, 0xa6, 0x3a, 0x02, - 0x7f, 0xdf, 0xe8, 0xe0, 0x3e, 0x58, 0xc3, 0x57, 0x56, 0x50, 0x8b, 0x86, 0xe6, 0x02, 0xa9, 0xff, - 0xff, 0x74, 0x40, 0x8d, 0xbe, 0xdc, 0x02, 0x8d, 0xb6, 0xec, 0x05, 0xb9, 0x0a, 0x00, 0x83, 0xf9, - 0x05, 0x75, 0x04, 0x8d, 0xb6, 0xf4, 0x05, 0xa9, 0x01, 0x00, 0x74, 0x1e, 0x80, 0x3d, 0xff, 0x74, - 0x12, 0xfe, 0x05, 0x80, 0x3d, 0xff, 0x75, 0x0b, 0x81, 0x8e, 0x0a, 0x02, 0x80, 0x00, 0xc6, 0x86, - 0x89, 0x02, 0x01, 0x80, 0x3c, 0xff, 0x74, 0x02, 0xfe, 0x04, 0xd1, 0xe8, 0x47, 0x46, 0xe2, 0xce, - 0xe8, 0x0a, 0x00, 0xc7, 0x86, 0xe6, 0x02, 0x00, 0x00, 0x58, 0x5e, 0x5f, 0xc3, 0xf6, 0x86, 0x5a, - 0x02, 0x01, 0x75, 0x27, 0xf6, 0x86, 0xaf, 0x02, 0x01, 0x75, 0x07, 0xf6, 0x86, 0x64, 0x02, 0x01, - 0x74, 0x19, 0xc6, 0x86, 0x5a, 0x02, 0x01, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x80, 0x75, 0x0c, 0xbe, - 0x07, 0x4c, 0xe8, 0xa1, 0x03, 0xc7, 0x86, 0xc0, 0x02, 0x04, 0x00, 0xc3, 0xf7, 0x86, 0xb0, 0x15, - 0x00, 0x80, 0x75, 0x02, 0xeb, 0x26, 0x8b, 0xb6, 0x60, 0x01, 0x3b, 0xb6, 0x5e, 0x01, 0x74, 0x1c, - 0x46, 0x83, 0xe6, 0x07, 0x89, 0xb6, 0x60, 0x01, 0x8b, 0xce, 0xd1, 0xe1, 0xd1, 0xe1, 0x8d, 0xb6, - 0x3e, 0x01, 0x03, 0xf1, 0x8b, 0x04, 0x8b, 0x54, 0x02, 0xe9, 0xd0, 0x3e, 0xc3, 0xbb, 0x00, 0x03, - 0x83, 0x7f, 0x12, 0x00, 0x74, 0x08, 0xe8, 0x4b, 0x3e, 0xc7, 0x47, 0x12, 0x00, 0x00, 0xc3, 0x53, - 0x50, 0x33, 0xc0, 0x88, 0x86, 0xcf, 0x01, 0xa3, 0x92, 0x5e, 0xbb, 0x94, 0x5e, 0x89, 0x1e, 0x8a, - 0x5e, 0x89, 0x07, 0x89, 0x47, 0x02, 0x89, 0x47, 0x04, 0xa3, 0x8c, 0x5e, 0xa3, 0x8e, 0x5e, 0xa3, - 0x90, 0x5e, 0x58, 0x5b, 0xc3, 0x50, 0x8a, 0xe0, 0xe4, 0x12, 0xf6, 0xd4, 0x22, 0xc4, 0xe6, 0x12, - 0x58, 0xc3, 0xc6, 0x46, 0x06, 0x00, 0xc6, 0x46, 0x07, 0x00, 0xc6, 0x46, 0x08, 0x00, 0xc6, 0x46, - 0x09, 0x00, 0xc6, 0x86, 0xc4, 0x15, 0x80, 0x8d, 0xbe, 0x16, 0x03, 0x8c, 0xd8, 0x8e, 0xc0, 0xab, - 0xab, 0xab, 0xc3, 0x51, 0x53, 0xb9, 0x10, 0x00, 0xd1, 0xe0, 0xd1, 0xdb, 0xe2, 0xfa, 0x8b, 0xc3, - 0x86, 0xc4, 0x5b, 0x59, 0xc3, 0x90, 0x50, 0x53, 0x51, 0x52, 0x57, 0x56, 0x8d, 0x1e, 0x6c, 0x05, - 0xb8, 0x40, 0x60, 0x8e, 0xc0, 0xff, 0x06, 0x4e, 0x00, 0xc7, 0x06, 0x46, 0x5d, 0x00, 0x00, 0xc6, - 0x06, 0x4a, 0x5d, 0x00, 0xc7, 0x06, 0x4e, 0x5d, 0x30, 0x00, 0x8d, 0x3e, 0x48, 0x5d, 0xb8, 0xa4, - 0x65, 0x89, 0x05, 0x06, 0x33, 0xc0, 0x8e, 0xc0, 0xa3, 0x2a, 0x5d, 0xa3, 0x2c, 0x5d, 0xa3, 0x2e, - 0x5d, 0x8d, 0x3e, 0x3e, 0x5d, 0xb9, 0x04, 0x00, 0xd1, 0xe9, 0xf3, 0xab, 0x8d, 0x3e, 0x42, 0x5d, - 0xb9, 0x04, 0x00, 0xd1, 0xe9, 0xf3, 0xab, 0x07, 0x8b, 0xd4, 0xb9, 0x01, 0x00, 0xbb, 0x00, 0x00, - 0xbd, 0xa4, 0x65, 0x88, 0x5e, 0x00, 0x8b, 0xc3, 0xd1, 0xe0, 0xd1, 0xe0, 0x05, 0x40, 0x60, 0x89, - 0x46, 0x02, 0x06, 0x51, 0x8c, 0xd8, 0x8e, 0xc0, 0xbe, 0x80, 0x03, 0x8d, 0xbe, 0x1a, 0x04, 0xb9, - 0x05, 0x00, 0xf3, 0xa5, 0x59, 0x07, 0xe8, 0x2f, 0xfd, 0xe8, 0xe2, 0x00, 0x8b, 0xc5, 0x05, 0xa4, - 0x08, 0x89, 0x86, 0xa6, 0x08, 0x83, 0xc0, 0x02, 0x8b, 0xe0, 0x68, 0x00, 0x06, 0x81, 0xc5, 0x44, - 0x16, 0x43, 0xe2, 0xbf, 0x8b, 0xe2, 0x33, 0xed, 0x5e, 0x5f, 0x5a, 0x59, 0x5b, 0x58, 0xc3, 0x3e, - 0x89, 0xa6, 0xa6, 0x08, 0x33, 0xed, 0xbc, 0x7e, 0x5e, 0xfa, 0x83, 0x0e, 0x42, 0x5d, 0x00, 0x74, - 0x0d, 0x8b, 0x36, 0x42, 0x5d, 0x8b, 0x4c, 0x04, 0xe8, 0xd1, 0x03, 0xfb, 0xff, 0xd1, 0xfb, 0x32, - 0xff, 0x8a, 0x1e, 0x46, 0x5d, 0x80, 0x8f, 0x4c, 0x5d, 0x00, 0x75, 0x21, 0xd1, 0xe3, 0x8b, 0xaf, - 0x48, 0x5d, 0x81, 0xbe, 0xa4, 0x06, 0xa5, 0xa5, 0x74, 0x0c, 0xd1, 0xeb, 0xc6, 0x87, 0x4c, 0x5d, - 0x01, 0xe8, 0xdb, 0x06, 0xeb, 0x07, 0x8b, 0x86, 0xa6, 0x08, 0x8b, 0xe0, 0xc3, 0xeb, 0xb5, 0xeb, - 0xae, 0x60, 0x9c, 0xe8, 0xa9, 0xff, 0x0e, 0xe8, 0x02, 0x00, 0xeb, 0x01, 0xcf, 0x61, 0xc3, 0x50, - 0xfa, 0x8b, 0x76, 0x1a, 0xf7, 0xc6, 0xff, 0xff, 0x74, 0x10, 0x8b, 0x04, 0x89, 0x46, 0x1a, 0x0b, - 0xc0, 0x75, 0x03, 0x89, 0x46, 0x1c, 0xc7, 0x04, 0x00, 0x00, 0xfb, 0x58, 0xc3, 0x53, 0xfa, 0xc7, - 0x04, 0x00, 0x00, 0x8b, 0x5d, 0x02, 0x89, 0x37, 0x89, 0x75, 0x02, 0x83, 0x3d, 0x00, 0x75, 0x02, - 0x89, 0x35, 0xfb, 0x5b, 0xc3, 0x50, 0xfa, 0x8b, 0x35, 0x8b, 0x04, 0x89, 0x05, 0x0b, 0xc0, 0x75, - 0x03, 0x89, 0x45, 0x02, 0xfb, 0x58, 0xc3, 0x50, 0xfa, 0x8b, 0x46, 0x1a, 0x89, 0x04, 0x89, 0x76, - 0x1a, 0xf7, 0x46, 0x1a, 0xff, 0xff, 0x75, 0x03, 0x89, 0x76, 0x1a, 0xfb, 0x58, 0xc3, 0x50, 0x53, - 0x51, 0x8b, 0xc5, 0x83, 0xc0, 0x1e, 0x89, 0x46, 0x1a, 0x83, 0xc0, 0x48, 0x89, 0x46, 0x1c, 0xb9, - 0x09, 0x00, 0x8b, 0xdd, 0x8b, 0xc5, 0x83, 0xc0, 0x26, 0x89, 0x47, 0x1e, 0x83, 0xc3, 0x08, 0x83, - 0xc0, 0x08, 0xe2, 0xf5, 0x59, 0x5b, 0x58, 0xc3, 0x60, 0x06, 0x1e, 0xfa, 0x33, 0xdb, 0x8e, 0xdb, - 0x83, 0x06, 0x2a, 0x5d, 0x01, 0x73, 0x04, 0x11, 0x1e, 0x2c, 0x5d, 0xb9, 0x01, 0x00, 0x8b, 0xaf, - 0x48, 0x5d, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x75, 0x03, 0xe8, 0x60, 0x46, 0xf7, 0x86, 0xa8, 0x02, - 0x01, 0x00, 0x74, 0x30, 0xfe, 0x86, 0x6b, 0x01, 0x80, 0xbe, 0x6b, 0x01, 0x02, 0x73, 0x02, 0xeb, - 0x23, 0xc6, 0x86, 0x6b, 0x01, 0x00, 0xf7, 0x86, 0x1c, 0x01, 0x01, 0x00, 0x75, 0x0a, 0x8e, 0x46, - 0x02, 0x26, 0x81, 0x26, 0x44, 0x00, 0x32, 0xfe, 0x81, 0xa6, 0x18, 0x01, 0x32, 0xfe, 0xc7, 0x86, - 0xa8, 0x02, 0x00, 0x00, 0xc6, 0x86, 0x6a, 0x01, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x48, 0x00, - 0x25, 0x00, 0x02, 0x74, 0x03, 0xe8, 0x30, 0x17, 0xf6, 0x86, 0x58, 0x02, 0x01, 0x74, 0x03, 0xe8, - 0x2e, 0x46, 0x8b, 0x86, 0xf6, 0x00, 0x25, 0xd0, 0xe3, 0x89, 0x86, 0x30, 0x02, 0x8a, 0x46, 0x08, - 0x3c, 0x06, 0x74, 0x08, 0x3c, 0x0a, 0x74, 0x04, 0x3c, 0x18, 0x75, 0x04, 0xff, 0x86, 0x4a, 0x02, - 0x83, 0xc3, 0x02, 0x49, 0x74, 0x03, 0xe9, 0x75, 0xff, 0xf7, 0x06, 0x3e, 0x5d, 0xff, 0xff, 0x74, - 0x1f, 0xff, 0x0e, 0x2e, 0x5d, 0x75, 0x19, 0xe8, 0x14, 0x02, 0x8b, 0x1e, 0x3e, 0x5d, 0x0b, 0xdb, - 0x74, 0x0e, 0x8b, 0x47, 0x08, 0xa3, 0x2e, 0x5d, 0xf7, 0x06, 0x2e, 0x5d, 0xff, 0xff, 0x74, 0xe7, - 0x50, 0xb0, 0xa0, 0xe6, 0x10, 0x58, 0x1f, 0x07, 0x61, 0xcf, 0x60, 0x06, 0x1e, 0xfa, 0x8d, 0x36, - 0x32, 0x5d, 0x83, 0x04, 0x01, 0x83, 0x54, 0x02, 0x00, 0xe8, 0x64, 0x4a, 0xa0, 0x30, 0x5d, 0xfe, - 0xc0, 0x3c, 0x04, 0x72, 0x08, 0xc6, 0x06, 0x30, 0x5d, 0x00, 0xe9, 0x0f, 0xff, 0xa2, 0x30, 0x5d, - 0xeb, 0xce, 0x50, 0x57, 0x56, 0xfa, 0x8d, 0x36, 0x36, 0x5d, 0x83, 0x04, 0x01, 0x83, 0x54, 0x02, - 0x00, 0x80, 0x3e, 0x81, 0x5e, 0x01, 0x75, 0x0d, 0x8b, 0x36, 0x84, 0x5e, 0x83, 0xfe, 0x14, 0x77, - 0x0e, 0xff, 0x94, 0x56, 0x05, 0x50, 0xb0, 0xa0, 0xe6, 0x10, 0x58, 0x5e, 0x5f, 0x58, 0xcf, 0xe8, - 0x12, 0x4d, 0xeb, 0xf1, 0x57, 0x56, 0x50, 0xfa, 0x8d, 0x36, 0x3a, 0x5d, 0x83, 0x04, 0x01, 0x83, - 0x54, 0x02, 0x00, 0x80, 0x3e, 0x81, 0x5e, 0x01, 0x75, 0x0d, 0x8b, 0x36, 0x84, 0x5e, 0x83, 0xfe, - 0x14, 0x77, 0x0e, 0xff, 0x94, 0x56, 0x05, 0x50, 0xb0, 0xa0, 0xe6, 0x10, 0x58, 0x58, 0x5e, 0x5f, - 0xcf, 0xe8, 0xe0, 0x4c, 0xeb, 0xf1, 0x50, 0x53, 0x51, 0x57, 0xe8, 0xab, 0x00, 0xfa, 0x8b, 0x3c, - 0x03, 0xfd, 0x89, 0x6d, 0x02, 0x8b, 0x44, 0x02, 0x89, 0x45, 0x04, 0x8b, 0x44, 0x04, 0x89, 0x45, - 0x06, 0x0b, 0xc0, 0x75, 0x0e, 0x8b, 0x86, 0x0c, 0x02, 0x0b, 0xc0, 0x75, 0x03, 0xb8, 0xc8, 0x00, - 0x89, 0x45, 0x06, 0xf7, 0x06, 0x3e, 0x5d, 0xff, 0xff, 0x75, 0x14, 0x89, 0x3e, 0x3e, 0x5d, 0x89, - 0x3e, 0x40, 0x5d, 0xc7, 0x05, 0x00, 0x00, 0x89, 0x45, 0x08, 0xa3, 0x2e, 0x5d, 0xeb, 0x63, 0x8b, - 0x3e, 0x3e, 0x5d, 0x8b, 0x0e, 0x2e, 0x5d, 0x33, 0xdb, 0x3b, 0xc8, 0x72, 0x35, 0x0b, 0xdb, 0x75, - 0x17, 0x2b, 0xc8, 0x89, 0x4d, 0x08, 0x8b, 0x34, 0x03, 0xf5, 0x89, 0x44, 0x08, 0x89, 0x3c, 0x89, - 0x36, 0x3e, 0x5d, 0xa3, 0x2e, 0x5d, 0xeb, 0x3a, 0x2b, 0x4d, 0x08, 0x2b, 0xc1, 0x8b, 0x34, 0x03, - 0xf5, 0x89, 0x44, 0x08, 0x8b, 0x4d, 0x08, 0x2b, 0xc8, 0x89, 0x4d, 0x08, 0x89, 0x37, 0x89, 0x3c, - 0xeb, 0x20, 0x8b, 0xdf, 0x8b, 0x3d, 0x0b, 0xff, 0x74, 0x05, 0x03, 0x4d, 0x08, 0xeb, 0xba, 0x2b, - 0xc1, 0x8b, 0x34, 0x03, 0xf5, 0x89, 0x44, 0x08, 0x89, 0x37, 0xc7, 0x04, 0x00, 0x00, 0x89, 0x36, - 0x40, 0x5d, 0xfb, 0x5f, 0x59, 0x5b, 0x58, 0xc3, 0x57, 0x53, 0x50, 0x56, 0xfa, 0x8b, 0x1e, 0x3e, - 0x5d, 0x33, 0xff, 0x8b, 0x34, 0x03, 0xf5, 0x83, 0x7c, 0x02, 0xff, 0x74, 0x4b, 0x3b, 0xde, 0x75, - 0x49, 0x0b, 0xff, 0x74, 0x18, 0x8b, 0x07, 0x89, 0x05, 0x0b, 0xc0, 0x75, 0x06, 0x89, 0x3e, 0x40, - 0x5d, 0xeb, 0x2c, 0x8b, 0x4f, 0x08, 0x8b, 0xf8, 0x01, 0x4d, 0x08, 0xeb, 0x22, 0x8b, 0x3f, 0x89, - 0x3e, 0x3e, 0x5d, 0x0b, 0xff, 0x75, 0x0c, 0x89, 0x3e, 0x40, 0x5d, 0xc7, 0x06, 0x2e, 0x5d, 0xff, - 0xff, 0xeb, 0x0c, 0xa1, 0x2e, 0x5d, 0x01, 0x45, 0x08, 0x8b, 0x45, 0x08, 0xa3, 0x2e, 0x5d, 0xc7, - 0x47, 0x02, 0xff, 0xff, 0xc7, 0x07, 0x00, 0x00, 0xeb, 0x4e, 0x83, 0xcb, 0x00, 0x74, 0x06, 0x8b, - 0xfb, 0x8b, 0x1f, 0xeb, 0xa8, 0x83, 0xfd, 0x00, 0x75, 0x05, 0xbb, 0x42, 0x5d, 0xeb, 0x04, 0x8d, - 0x9e, 0xf0, 0x00, 0x8b, 0x1f, 0x83, 0xfb, 0x00, 0x74, 0x2e, 0x3b, 0xde, 0x75, 0x05, 0xe8, 0x6b, - 0x00, 0xeb, 0x25, 0x8b, 0xfb, 0x8b, 0x1f, 0x83, 0xcb, 0x00, 0x74, 0x1c, 0x3b, 0xde, 0x75, 0xf3, - 0x8b, 0x07, 0x89, 0x05, 0x83, 0xc8, 0x00, 0x75, 0x04, 0x89, 0xbe, 0xf2, 0x00, 0xc7, 0x07, 0x00, - 0x00, 0xc7, 0x47, 0x02, 0xff, 0xff, 0xeb, 0x00, 0xfb, 0x5e, 0x58, 0x5b, 0x5f, 0xc3, 0x50, 0x53, - 0x56, 0x55, 0x8b, 0x1e, 0x3e, 0x5d, 0x8b, 0x6f, 0x02, 0x0b, 0xed, 0x74, 0x06, 0x81, 0xc5, 0xf0, - 0x00, 0xeb, 0x03, 0xbd, 0x42, 0x5d, 0x8b, 0x76, 0x02, 0x8b, 0x07, 0xa3, 0x3e, 0x5d, 0x0b, 0xc0, - 0x75, 0x03, 0xa3, 0x40, 0x5d, 0x89, 0x5e, 0x02, 0x89, 0x1c, 0xc7, 0x07, 0x00, 0x00, 0x83, 0x4e, - 0x00, 0x00, 0x75, 0x03, 0x89, 0x5e, 0x00, 0x5d, 0x5e, 0x5b, 0x58, 0xc3, 0x55, 0x53, 0x50, 0x0b, - 0xed, 0x74, 0x06, 0x81, 0xc5, 0xf0, 0x00, 0xeb, 0x03, 0xbd, 0x42, 0x5d, 0x8b, 0x5e, 0x00, 0xc7, - 0x47, 0x02, 0xff, 0xff, 0x8b, 0x07, 0xc7, 0x07, 0x00, 0x00, 0x8b, 0xd8, 0x89, 0x5e, 0x00, 0x0b, - 0xdb, 0x75, 0x03, 0x89, 0x5e, 0x02, 0x58, 0x5b, 0x5d, 0xc3, 0x50, 0x53, 0x51, 0x57, 0x56, 0xfa, - 0x8b, 0x1e, 0x3e, 0x5d, 0x33, 0xff, 0x83, 0xcb, 0x00, 0x74, 0x54, 0x8b, 0xc3, 0x39, 0x6f, 0x02, - 0x75, 0x47, 0x0b, 0xff, 0x74, 0x18, 0x8b, 0x37, 0x89, 0x35, 0x8b, 0xc7, 0x0b, 0xf6, 0x75, 0x06, - 0x89, 0x3e, 0x40, 0x5d, 0xeb, 0x2c, 0x8b, 0x4f, 0x08, 0x01, 0x4c, 0x08, 0xeb, 0x24, 0x8b, 0x37, - 0x89, 0x36, 0x3e, 0x5d, 0x0b, 0xf6, 0x75, 0x0c, 0x89, 0x36, 0x40, 0x5d, 0xc7, 0x06, 0x2e, 0x5d, - 0xff, 0xff, 0xeb, 0x0e, 0xa1, 0x2e, 0x5d, 0x01, 0x44, 0x08, 0x8b, 0x44, 0x08, 0xa3, 0x2e, 0x5d, - 0x33, 0xc0, 0xc7, 0x47, 0x02, 0xff, 0xff, 0xeb, 0x00, 0x8b, 0xf8, 0x8b, 0x1f, 0xeb, 0xa7, 0xfb, - 0x5e, 0x5f, 0x59, 0x5b, 0x58, 0xc3, 0x50, 0x53, 0x51, 0x52, 0x8a, 0x8e, 0xad, 0x02, 0x8e, 0x46, - 0x02, 0x26, 0xa1, 0x32, 0x00, 0x8a, 0x9e, 0x7d, 0x02, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x75, 0x57, - 0xf6, 0x86, 0xb3, 0x02, 0x01, 0x75, 0x4e, 0x0d, 0x74, 0x80, 0x25, 0x7f, 0x9f, 0x26, 0xa3, 0x32, - 0x00, 0xb8, 0x01, 0x00, 0xe8, 0x16, 0x05, 0x26, 0x83, 0x0e, 0x42, 0x00, 0x04, 0xc6, 0x86, 0xb4, - 0x02, 0x00, 0x26, 0xa1, 0x32, 0x00, 0x0d, 0x00, 0x60, 0x26, 0xa3, 0x32, 0x00, 0xb8, 0x00, 0x00, - 0xe8, 0xfa, 0x04, 0x26, 0xa1, 0x32, 0x00, 0x83, 0xe0, 0xdf, 0x26, 0xa3, 0x32, 0x00, 0xb8, 0x00, - 0x00, 0xe8, 0xe9, 0x04, 0xe8, 0x6c, 0x01, 0x26, 0xa1, 0x8c, 0x00, 0x25, 0xff, 0x07, 0x0d, 0x00, - 0xd0, 0x26, 0xa3, 0x8c, 0x00, 0xeb, 0x3c, 0xf6, 0x86, 0xb4, 0x02, 0x01, 0x75, 0x35, 0x26, 0x83, - 0x26, 0x42, 0x00, 0xfb, 0x26, 0xa1, 0x32, 0x00, 0x0d, 0xb4, 0x80, 0x25, 0xbf, 0x9f, 0x26, 0xa3, - 0x32, 0x00, 0xc6, 0x86, 0xb3, 0x02, 0x00, 0xb8, 0x01, 0x00, 0xe8, 0xb0, 0x04, 0x26, 0xa1, 0x32, - 0x00, 0x83, 0xe0, 0xef, 0x26, 0xa3, 0x32, 0x00, 0xc6, 0x86, 0xb4, 0x02, 0x01, 0xb8, 0x00, 0x00, - 0xe8, 0x9a, 0x04, 0x26, 0xa1, 0x40, 0x00, 0x8b, 0xd8, 0x80, 0xbe, 0xfe, 0x00, 0x01, 0x75, 0x10, - 0x83, 0xe0, 0xfd, 0xc6, 0x86, 0x7d, 0x02, 0x01, 0x25, 0xff, 0x1f, 0x0d, 0x00, 0x80, 0xeb, 0x0e, - 0x25, 0xff, 0x1f, 0x0d, 0x00, 0x20, 0x83, 0xc8, 0x02, 0xc6, 0x86, 0x7d, 0x02, 0x00, 0xe8, 0x96, - 0x02, 0x0d, 0x00, 0x08, 0xf6, 0x86, 0xaf, 0x02, 0x01, 0x75, 0x03, 0x25, 0xff, 0xf7, 0x33, 0xd8, - 0x74, 0x04, 0x26, 0xa3, 0x40, 0x00, 0x26, 0xa1, 0x4c, 0x00, 0x8a, 0x9e, 0x7d, 0x02, 0x8b, 0xd8, - 0xf7, 0x86, 0x12, 0x01, 0x10, 0x00, 0x74, 0x05, 0x0d, 0x00, 0x10, 0xeb, 0x03, 0x25, 0xff, 0xef, - 0x8a, 0xae, 0x6d, 0x02, 0x80, 0xf9, 0x01, 0x75, 0x04, 0x8a, 0xae, 0x6e, 0x02, 0xf6, 0xc5, 0x01, - 0x74, 0x05, 0x83, 0xc8, 0x10, 0xeb, 0x03, 0x83, 0xe0, 0xef, 0xf6, 0x86, 0x6f, 0x02, 0x01, 0x74, - 0x0a, 0x83, 0xc8, 0x20, 0xc6, 0x86, 0x7e, 0x02, 0x00, 0xeb, 0x08, 0x83, 0xe0, 0xdf, 0xc6, 0x86, - 0x7e, 0x02, 0x01, 0xf6, 0x86, 0x58, 0x02, 0x01, 0x74, 0x0a, 0xc6, 0x86, 0x7e, 0x02, 0x00, 0x83, - 0xc8, 0x40, 0xeb, 0x03, 0x83, 0xe0, 0xbf, 0xf6, 0x86, 0x7d, 0x02, 0x01, 0x74, 0x05, 0x0d, 0x80, - 0x00, 0xeb, 0x03, 0x25, 0x7f, 0xff, 0xf6, 0x86, 0x7c, 0x02, 0x01, 0x74, 0x05, 0x0d, 0x00, 0x01, - 0xeb, 0x03, 0x25, 0xff, 0xfe, 0xf6, 0x86, 0x7e, 0x02, 0x01, 0x74, 0x05, 0x0d, 0x00, 0x20, 0xeb, - 0x03, 0x25, 0xff, 0xdf, 0x33, 0xd8, 0x74, 0x12, 0xf7, 0xc3, 0x20, 0x00, 0x74, 0x05, 0xc6, 0x06, - 0x4e, 0x13, 0x01, 0x25, 0xff, 0xf7, 0x26, 0xa3, 0x4c, 0x00, 0x26, 0xa1, 0x50, 0x00, 0x8b, 0xd8, - 0x33, 0xd8, 0x74, 0x04, 0x26, 0xa3, 0x50, 0x00, 0xf6, 0x06, 0x4e, 0x13, 0x01, 0x74, 0x1e, 0xc6, - 0x06, 0x4e, 0x13, 0x00, 0x26, 0x81, 0x26, 0x40, 0x00, 0x7f, 0xff, 0x90, 0x90, 0x26, 0x81, 0x0e, - 0x40, 0x00, 0x80, 0x00, 0x90, 0x90, 0x26, 0x81, 0x26, 0x40, 0x00, 0x7f, 0xff, 0x5a, 0x59, 0x5b, - 0x58, 0xc3, 0x00, 0xf6, 0x86, 0xb3, 0x02, 0x01, 0x75, 0x42, 0x50, 0xe8, 0x50, 0x03, 0xb3, 0x00, - 0x8a, 0x3e, 0x80, 0x5e, 0xb8, 0x00, 0x80, 0xe8, 0xdf, 0x02, 0x8b, 0xc0, 0x8b, 0xc0, 0x8b, 0xc0, - 0xb3, 0x00, 0x8a, 0x3e, 0x80, 0x5e, 0xb8, 0x00, 0x21, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x04, 0x74, - 0x03, 0x0d, 0x00, 0x40, 0xe8, 0xc2, 0x02, 0xb3, 0x1b, 0x8a, 0x3e, 0x80, 0x5e, 0xe8, 0x12, 0x02, - 0x83, 0xc8, 0x10, 0xe8, 0xb3, 0x02, 0xc6, 0x86, 0xb3, 0x02, 0x01, 0x58, 0xc3, 0x8e, 0x46, 0x02, - 0xf7, 0x86, 0xf4, 0x00, 0x04, 0x00, 0x74, 0x0b, 0xc6, 0x06, 0x81, 0x5e, 0x01, 0x26, 0x83, 0x0e, - 0x42, 0x00, 0x02, 0xc6, 0x86, 0xb0, 0x02, 0x00, 0xc6, 0x86, 0xb1, 0x02, 0x00, 0xa8, 0x02, 0x74, - 0x26, 0x26, 0x83, 0x26, 0x42, 0x00, 0xcf, 0xf7, 0x86, 0xf4, 0x00, 0x04, 0x00, 0x75, 0x14, 0xf7, - 0x86, 0x12, 0x01, 0x00, 0x84, 0x75, 0x0c, 0x80, 0xbe, 0xfe, 0x00, 0x01, 0x77, 0x05, 0xc6, 0x86, - 0xb0, 0x02, 0x01, 0xb0, 0x02, 0xeb, 0x2a, 0xa8, 0x04, 0x74, 0x0e, 0x26, 0x83, 0x0e, 0x42, 0x00, - 0x20, 0x26, 0x83, 0x26, 0x42, 0x00, 0xef, 0xeb, 0x18, 0xa8, 0x08, 0x74, 0x08, 0x26, 0x83, 0x0e, - 0x42, 0x00, 0x30, 0xeb, 0x0c, 0xa8, 0x10, 0x74, 0x08, 0x26, 0x83, 0x0e, 0x42, 0x00, 0x30, 0xeb, - 0x00, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x74, 0x06, 0x26, 0x83, 0x26, 0x42, 0x00, 0xcf, 0xc3, 0xc3, - 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x4c, 0x00, 0x00, 0x01, 0x90, 0x90, 0x90, 0x90, 0x8e, 0x46, - 0x02, 0x26, 0x81, 0x26, 0x4c, 0x00, 0xff, 0xfe, 0xc3, 0x8e, 0x46, 0x02, 0x80, 0xbe, 0xfe, 0x00, - 0x02, 0x74, 0x1e, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x75, 0x0f, 0x80, 0xbe, 0xb0, 0x02, 0x01, 0x75, - 0x10, 0x26, 0x83, 0x0e, 0x42, 0x00, 0x02, 0xeb, 0x08, 0xc6, 0x86, 0x6c, 0x01, 0x01, 0xe8, 0x18, - 0x47, 0xc3, 0x8e, 0x46, 0x02, 0xf7, 0x86, 0xf4, 0x00, 0x02, 0x00, 0x74, 0x09, 0x26, 0x81, 0x26, - 0x42, 0x00, 0xff, 0xef, 0xeb, 0x07, 0x26, 0x81, 0x0e, 0x42, 0x00, 0x00, 0x10, 0xc3, 0x8e, 0x46, - 0x02, 0xf7, 0x86, 0xf4, 0x00, 0x02, 0x00, 0x74, 0x09, 0x26, 0x81, 0x0e, 0x42, 0x00, 0x00, 0x10, - 0xeb, 0x07, 0x26, 0x81, 0x26, 0x42, 0x00, 0xff, 0xef, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, - 0x42, 0x00, 0x00, 0x80, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x42, 0x00, 0xff, 0x7f, 0xc3, - 0xf7, 0x86, 0xf4, 0x00, 0x08, 0x00, 0x74, 0x13, 0xe8, 0xdf, 0xff, 0xeb, 0x39, 0x80, 0x7e, 0x06, - 0x0e, 0x74, 0x1d, 0x80, 0x7e, 0x06, 0x48, 0x74, 0x23, 0xeb, 0x2b, 0xe8, 0xd7, 0xff, 0x8e, 0x46, - 0x02, 0xf7, 0x86, 0xf4, 0x00, 0x10, 0x00, 0x75, 0xe4, 0x80, 0xbe, 0xfe, 0x00, 0x00, 0x75, 0x0c, - 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x42, 0x00, 0x00, 0x40, 0xeb, 0x0a, 0x8e, 0x46, 0x02, 0x26, - 0x81, 0x26, 0x42, 0x00, 0xff, 0xbf, 0xc3, 0x83, 0xe0, 0xf7, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x04, - 0x74, 0x03, 0x83, 0xc8, 0x08, 0xc3, 0x80, 0xbe, 0xfe, 0x00, 0x01, 0x77, 0x0a, 0x8e, 0x46, 0x02, - 0x26, 0x83, 0x0e, 0x50, 0x00, 0x04, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x90, 0x00, 0x04, - 0xc3, 0x80, 0xbe, 0xfe, 0x00, 0x01, 0x77, 0x0a, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x50, 0x00, - 0xfb, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x90, 0x00, 0xfb, 0xc3, 0x51, 0x50, 0xfa, 0x8e, - 0x46, 0x02, 0x26, 0x83, 0x26, 0x92, 0x00, 0xfb, 0x26, 0x83, 0x26, 0x92, 0x00, 0xfe, 0x90, 0x90, - 0x90, 0x90, 0x26, 0x83, 0x0e, 0x92, 0x00, 0x01, 0x90, 0x90, 0x90, 0x90, 0x26, 0xa1, 0x92, 0x00, - 0x83, 0xc8, 0x02, 0xb9, 0x20, 0x00, 0xe8, 0x06, 0x00, 0xe2, 0xfb, 0xfb, 0x58, 0x59, 0xc3, 0x53, - 0x8e, 0x46, 0x02, 0x24, 0xfe, 0x26, 0xa3, 0x92, 0x00, 0x90, 0x90, 0x90, 0x90, 0x0c, 0x01, 0x26, - 0xa3, 0x92, 0x00, 0x90, 0x90, 0x90, 0x5b, 0xc3, 0x51, 0xb1, 0x03, 0xd2, 0xe5, 0xb1, 0x05, 0xd0, - 0xe5, 0x72, 0x04, 0x24, 0xfd, 0xeb, 0x02, 0x0c, 0x02, 0xe8, 0xd3, 0xff, 0xfe, 0xc9, 0x75, 0xef, - 0x59, 0xc3, 0x9c, 0xfa, 0x51, 0x52, 0xfa, 0x8e, 0x46, 0x02, 0xe8, 0x8f, 0xff, 0x26, 0xa1, 0x92, - 0x00, 0x83, 0xe0, 0xfd, 0x83, 0xc8, 0x01, 0x26, 0xa3, 0x92, 0x00, 0x83, 0xc8, 0x04, 0x26, 0xa3, - 0x92, 0x00, 0xe8, 0xaa, 0xff, 0x83, 0xc8, 0x02, 0xe8, 0xa4, 0xff, 0x83, 0xc8, 0x02, 0xe8, 0x9e, - 0xff, 0x83, 0xe0, 0xfd, 0xe8, 0x98, 0xff, 0x8a, 0xef, 0xe8, 0xac, 0xff, 0x8a, 0xeb, 0xe8, 0xa7, - 0xff, 0x83, 0xe0, 0xfb, 0xe8, 0x88, 0xff, 0x83, 0xe0, 0xfe, 0x26, 0xa3, 0x92, 0x00, 0x90, 0x90, - 0x26, 0x8b, 0x0e, 0x92, 0x00, 0xf7, 0xc1, 0x02, 0x00, 0x74, 0x12, 0xa8, 0x02, 0x74, 0x0e, 0xb9, - 0x12, 0x00, 0xe8, 0x6a, 0xff, 0xe2, 0xfb, 0xfb, 0x5a, 0x59, 0x9d, 0xf9, 0xc3, 0x0c, 0x01, 0x26, - 0xa3, 0x92, 0x00, 0x90, 0x90, 0x90, 0x90, 0xb1, 0x10, 0x53, 0x33, 0xdb, 0x24, 0xfe, 0x26, 0xa3, - 0x92, 0x00, 0x26, 0xa1, 0x92, 0x00, 0xd1, 0xe3, 0xa8, 0x02, 0x74, 0x03, 0x83, 0xcb, 0x01, 0x0c, - 0x01, 0x26, 0xa3, 0x92, 0x00, 0x90, 0x90, 0x90, 0x90, 0xfe, 0xc9, 0x75, 0xdf, 0xe8, 0x2f, 0xff, - 0x8b, 0xc3, 0x5b, 0xfb, 0x5a, 0x59, 0x9d, 0xf8, 0xc3, 0x9c, 0xfa, 0x51, 0x53, 0x52, 0x50, 0xfa, - 0xe8, 0xe9, 0xfe, 0x26, 0xa1, 0x92, 0x00, 0x83, 0xe0, 0xfd, 0x83, 0xc8, 0x01, 0x26, 0xa3, 0x92, - 0x00, 0x83, 0xc8, 0x04, 0x26, 0xa3, 0x92, 0x00, 0xe8, 0x04, 0xff, 0x83, 0xc8, 0x02, 0xe8, 0xfe, - 0xfe, 0x24, 0xfd, 0xe8, 0xf9, 0xfe, 0x0c, 0x02, 0xe8, 0xf4, 0xfe, 0x8a, 0xef, 0xe8, 0x08, 0xff, - 0x8a, 0xeb, 0xe8, 0x03, 0xff, 0x0c, 0x02, 0xe8, 0xe5, 0xfe, 0x24, 0xfd, 0xe8, 0xe0, 0xfe, 0x5b, - 0xb1, 0x10, 0xd1, 0xe3, 0x72, 0x04, 0x24, 0xfd, 0xeb, 0x02, 0x0c, 0x02, 0xe8, 0xd0, 0xfe, 0xfe, - 0xc9, 0x75, 0xef, 0x24, 0xfb, 0xe8, 0xc7, 0xfe, 0xfb, 0x5a, 0x5b, 0x59, 0x9d, 0xc3, 0x50, 0xe8, - 0x8a, 0xfe, 0xb7, 0x00, 0xb3, 0x02, 0xe8, 0xe9, 0xfe, 0x83, 0xf8, 0xff, 0x75, 0x09, 0xfe, 0xc7, - 0x80, 0xff, 0x20, 0x75, 0xf1, 0xb7, 0xff, 0x88, 0x3e, 0x80, 0x5e, 0x58, 0xc3, 0x53, 0x40, 0x03, - 0x06, 0x2a, 0x5d, 0x8b, 0xd8, 0xe8, 0x79, 0xf6, 0xa1, 0x2a, 0x5d, 0x3b, 0xc3, 0x75, 0xf6, 0x5b, - 0xc3, 0x90, 0xe8, 0xa0, 0xf0, 0xc6, 0x86, 0x6d, 0x02, 0x01, 0xc6, 0x86, 0x6f, 0x02, 0x01, 0x8e, - 0x46, 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0x80, - 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x0b, 0xc6, 0x86, 0x7c, 0x02, 0x00, 0xe8, 0x78, 0xfa, 0xe8, 0xf5, - 0xfd, 0x33, 0xc0, 0x88, 0x86, 0x8d, 0x02, 0x88, 0x86, 0x8e, 0x02, 0xc6, 0x86, 0x63, 0x01, 0x01, - 0xc7, 0x86, 0x64, 0x01, 0xfc, 0x05, 0xc6, 0x86, 0x69, 0x01, 0x02, 0xbe, 0x67, 0x4c, 0xe8, 0x15, - 0xf8, 0xbe, 0x61, 0x4c, 0xe8, 0x0f, 0xf8, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x44, 0x00, 0x32, - 0xfe, 0xc3, 0xc6, 0x86, 0x63, 0x01, 0x00, 0x80, 0xbe, 0x62, 0x01, 0x01, 0x75, 0x0d, 0xe8, 0x34, - 0xf0, 0xe8, 0x4b, 0x30, 0xc6, 0x46, 0x07, 0x00, 0xe9, 0xb6, 0x00, 0xbe, 0x19, 0x4c, 0xe8, 0x97, - 0xf8, 0xbe, 0x61, 0x4c, 0xe8, 0x91, 0xf8, 0xc6, 0x86, 0x8d, 0x02, 0x01, 0x80, 0x7e, 0x06, 0x02, - 0x74, 0x08, 0x80, 0x7e, 0x06, 0x44, 0x74, 0x09, 0xeb, 0x1c, 0xc6, 0x46, 0x07, 0x04, 0xe9, 0x90, - 0x00, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x84, 0x74, 0x07, 0xc6, 0x46, 0x07, 0x4e, 0xe9, 0x81, 0x00, - 0xc6, 0x46, 0x07, 0x46, 0xeb, 0x7b, 0x80, 0x7e, 0x08, 0x08, 0x75, 0xf8, 0xc6, 0x86, 0x85, 0x02, - 0x01, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xc6, 0x86, 0x61, 0x02, 0x00, 0xc6, 0x86, 0x60, 0x02, 0x00, - 0xc6, 0x86, 0x63, 0x02, 0x01, 0xc6, 0x86, 0x6c, 0x02, 0x01, 0xc6, 0x86, 0x70, 0x02, 0x01, 0xf6, - 0x86, 0x5c, 0x02, 0x01, 0x74, 0x17, 0x80, 0xbe, 0xab, 0x02, 0x01, 0x74, 0x2c, 0xc6, 0x46, 0x09, - 0x0a, 0xc6, 0x86, 0x6f, 0x02, 0x00, 0xc6, 0x86, 0x5d, 0x02, 0x01, 0xeb, 0x1c, 0xf6, 0x86, 0x5d, - 0x02, 0x01, 0x74, 0x15, 0x80, 0xbe, 0xab, 0x02, 0x01, 0x74, 0x0e, 0xc6, 0x46, 0x09, 0x06, 0xc6, - 0x86, 0x5c, 0x02, 0x01, 0xc6, 0x86, 0x6f, 0x02, 0x01, 0xe8, 0x8a, 0xf9, 0xe8, 0x3a, 0xfc, 0xbe, - 0x49, 0x4c, 0xe8, 0x41, 0xf7, 0xbe, 0x0d, 0x4c, 0xe8, 0x3b, 0xf7, 0xbe, 0x4f, 0x4c, 0xe8, 0x35, - 0xf7, 0xc3, 0xc6, 0x46, 0x09, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x44, 0x00, 0x32, 0xfe, - 0xbe, 0x6d, 0x4c, 0xe8, 0x20, 0xf7, 0xc7, 0x86, 0xc8, 0x01, 0x14, 0x00, 0xc7, 0x86, 0xcc, 0x02, - 0x00, 0x00, 0xbe, 0x55, 0x4c, 0xe8, 0x0e, 0xf7, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xc6, 0x86, 0x6f, - 0x02, 0x00, 0xc6, 0x86, 0x6c, 0x02, 0x01, 0xc6, 0x86, 0x70, 0x02, 0x01, 0xe8, 0x37, 0xf9, 0xbe, - 0x13, 0x4c, 0xe8, 0xf1, 0xf6, 0xbe, 0x49, 0x4c, 0xe8, 0xeb, 0xf6, 0x33, 0xc0, 0x89, 0x86, 0xf2, - 0x01, 0x89, 0x86, 0xf4, 0x01, 0x89, 0x86, 0xf6, 0x01, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x74, 0x0a, - 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x44, 0x00, 0xff, 0xf7, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x20, - 0x74, 0x10, 0xbe, 0x4f, 0x4c, 0xe8, 0xbe, 0xf6, 0xc6, 0x86, 0x61, 0x02, 0x00, 0xc6, 0x86, 0x60, - 0x02, 0x00, 0xe8, 0xa4, 0xfb, 0xc3, 0xc3, 0x90, 0xc6, 0x86, 0x5b, 0x02, 0x01, 0xc7, 0x86, 0xce, - 0x02, 0x00, 0x00, 0xc7, 0x86, 0xd0, 0x02, 0x00, 0x00, 0xbe, 0x13, 0x4c, 0xe8, 0x97, 0xf6, 0xe8, - 0xc7, 0x14, 0xc3, 0x90, 0xc6, 0x86, 0x5f, 0x02, 0x01, 0xf6, 0x86, 0x88, 0x02, 0x01, 0x74, 0x08, - 0xe8, 0x0a, 0x17, 0xc6, 0x86, 0x88, 0x02, 0x00, 0xbe, 0x13, 0x4c, 0xe8, 0x78, 0xf6, 0xf6, 0x86, - 0x67, 0x02, 0x01, 0x74, 0x04, 0xc6, 0x46, 0x07, 0x0c, 0xc3, 0xbe, 0x13, 0x4c, 0xe8, 0x66, 0xf6, - 0xbe, 0x31, 0x4c, 0xe8, 0x60, 0xf6, 0xc7, 0x86, 0xc2, 0x02, 0x01, 0x00, 0xc7, 0x86, 0xc4, 0x02, - 0x01, 0x00, 0xe8, 0x50, 0x15, 0xc3, 0xc7, 0x86, 0xcc, 0x02, 0x00, 0x00, 0xc7, 0x86, 0xc8, 0x01, - 0x14, 0x00, 0xc6, 0x86, 0x08, 0x01, 0x00, 0x81, 0xa6, 0x0a, 0x02, 0xdf, 0xbf, 0xc6, 0x86, 0x64, - 0x02, 0x01, 0xc7, 0x86, 0x2a, 0x02, 0xff, 0xff, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x20, 0x75, 0x18, - 0xf7, 0x86, 0x12, 0x01, 0x00, 0x84, 0x75, 0x10, 0xbe, 0x4f, 0x4c, 0xe8, 0x18, 0xf6, 0xc6, 0x86, - 0x61, 0x02, 0x00, 0xc6, 0x86, 0x60, 0x02, 0x00, 0xbe, 0x13, 0x4c, 0xe8, 0xba, 0xf6, 0x8e, 0x46, - 0x02, 0x26, 0x83, 0x0e, 0x4c, 0x00, 0x01, 0x26, 0x81, 0x26, 0x32, 0x00, 0xff, 0x7f, 0xb8, 0x00, - 0x80, 0xe8, 0xb6, 0x2f, 0xe8, 0x59, 0xfb, 0xe8, 0x08, 0xfb, 0xc6, 0x86, 0x62, 0x02, 0x01, 0xc6, - 0x86, 0xce, 0x01, 0x00, 0xf7, 0x86, 0xf6, 0x00, 0x04, 0x00, 0x74, 0x05, 0xc6, 0x86, 0xce, 0x01, - 0x01, 0xf6, 0x86, 0x58, 0x02, 0x01, 0x75, 0x06, 0xbe, 0x1f, 0x4c, 0xe8, 0xc8, 0xf5, 0xff, 0x86, - 0xfc, 0x00, 0xc3, 0x90, 0xe8, 0x9a, 0xfb, 0xc6, 0x86, 0x08, 0x01, 0x00, 0xc6, 0x46, 0x09, 0x00, - 0xc6, 0x46, 0x0b, 0x00, 0xc6, 0x86, 0x58, 0x02, 0x00, 0xc6, 0x86, 0x6c, 0x02, 0x00, 0xc6, 0x86, - 0x62, 0x02, 0x00, 0xc6, 0x86, 0x64, 0x02, 0x00, 0xc6, 0x86, 0x5f, 0x02, 0x00, 0xc6, 0x86, 0x67, - 0x02, 0x00, 0xc6, 0x86, 0x6f, 0x02, 0x00, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xc6, 0x86, 0x6e, 0x02, - 0x00, 0xe8, 0xc2, 0xf7, 0xf6, 0x86, 0x70, 0x02, 0x01, 0x74, 0x0c, 0x83, 0xbe, 0x22, 0x01, 0x0e, - 0x75, 0x28, 0xe8, 0x65, 0x08, 0xeb, 0x23, 0x8e, 0x46, 0x02, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x75, - 0x08, 0x26, 0x83, 0x26, 0x42, 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xe8, 0xe0, - 0x41, 0xe8, 0x26, 0xf7, 0xbe, 0x2b, 0x4c, 0xe8, 0x4c, 0xf5, 0xc3, 0x90, 0xc7, 0x86, 0x32, 0x02, - 0x02, 0x00, 0xe8, 0x1c, 0xfb, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, 0xfe, 0x26, 0x81, - 0x0e, 0x32, 0x00, 0x00, 0x80, 0x8e, 0x46, 0x02, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x75, 0x08, 0x26, - 0x83, 0x26, 0x42, 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xe8, 0xa2, 0x41, 0xc6, - 0x86, 0x08, 0x01, 0x00, 0xc7, 0x86, 0x22, 0x01, 0x00, 0x00, 0xe8, 0x41, 0xfa, 0xe8, 0x65, 0xfa, - 0xf7, 0x86, 0xf4, 0x00, 0x10, 0x00, 0x74, 0x14, 0xf7, 0x86, 0xf4, 0x00, 0x02, 0x00, 0x74, 0x0c, - 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x42, 0x00, 0x00, 0x40, 0xeb, 0x0a, 0x8e, 0x46, 0x02, 0x26, - 0x81, 0x26, 0x42, 0x00, 0xff, 0xbf, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x75, 0x05, 0xc6, 0x86, 0xfe, - 0x00, 0x01, 0xf6, 0x86, 0xbd, 0x01, 0x01, 0x75, 0x02, 0xeb, 0x71, 0x26, 0xff, 0x36, 0x5e, 0x00, - 0x26, 0xff, 0x36, 0x60, 0x00, 0x26, 0xff, 0x36, 0x62, 0x00, 0x26, 0xff, 0x36, 0x64, 0x00, 0x26, - 0xff, 0x36, 0x66, 0x00, 0x26, 0xff, 0x36, 0x7a, 0x00, 0x26, 0xff, 0x36, 0x7c, 0x00, 0x26, 0xff, - 0x36, 0x7e, 0x00, 0x26, 0xff, 0x36, 0x52, 0x00, 0x26, 0xff, 0x36, 0x6a, 0x00, 0x26, 0xff, 0x36, - 0x68, 0x00, 0xe8, 0x1b, 0xef, 0x26, 0x8f, 0x06, 0x68, 0x00, 0x26, 0x8f, 0x06, 0x6a, 0x00, 0x26, - 0x8f, 0x06, 0x52, 0x00, 0x26, 0x8f, 0x06, 0x7e, 0x00, 0x26, 0x8f, 0x06, 0x7c, 0x00, 0x26, 0x8f, - 0x06, 0x7a, 0x00, 0x26, 0x8f, 0x06, 0x66, 0x00, 0x26, 0x8f, 0x06, 0x64, 0x00, 0x26, 0x8f, 0x06, - 0x62, 0x00, 0x26, 0x8f, 0x06, 0x60, 0x00, 0x26, 0x8f, 0x06, 0x5e, 0x00, 0xe8, 0x96, 0xec, 0xe8, - 0xb5, 0x2e, 0xc6, 0x86, 0xb2, 0x02, 0x00, 0x8d, 0xbe, 0x16, 0x03, 0x8c, 0xd8, 0x8e, 0xc0, 0xab, - 0xab, 0xab, 0xf6, 0x86, 0xab, 0x02, 0x01, 0x74, 0x12, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x42, - 0x00, 0x04, 0xc6, 0x86, 0xb4, 0x02, 0x00, 0xc6, 0x46, 0x09, 0x1e, 0x8e, 0x46, 0x02, 0x26, 0xc7, - 0x06, 0x44, 0x00, 0xff, 0xfb, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x02, 0x74, 0x10, 0xf7, 0x86, 0x20, - 0x01, 0x80, 0x00, 0x75, 0x08, 0xbe, 0xd3, 0x4c, 0xe8, 0x0b, 0xf4, 0xeb, 0x0d, 0x8e, 0x46, 0x02, - 0x33, 0xc0, 0x26, 0xa3, 0x64, 0x00, 0x26, 0xa3, 0x66, 0x00, 0xc3, 0x90, 0x33, 0xc0, 0x88, 0x86, - 0x5f, 0x02, 0x88, 0x86, 0x62, 0x02, 0x88, 0x86, 0x64, 0x02, 0x88, 0x86, 0x67, 0x02, 0x88, 0x86, - 0x6c, 0x02, 0xbe, 0x5b, 0x4c, 0xe8, 0xde, 0xf3, 0xc6, 0x86, 0xb2, 0x02, 0x01, 0x8e, 0x46, 0x02, - 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x42, 0x00, 0xfd, 0xeb, 0x08, 0xc6, - 0x86, 0x6d, 0x01, 0x01, 0xe8, 0x4a, 0x40, 0xc3, 0xc7, 0x86, 0x32, 0x02, 0x03, 0x00, 0xe8, 0xf4, - 0xeb, 0xc6, 0x86, 0x6d, 0x02, 0x01, 0xc6, 0x86, 0x6f, 0x02, 0x01, 0xe8, 0xe8, 0xf5, 0x8e, 0x46, - 0x02, 0x26, 0x81, 0x0e, 0x40, 0x00, 0x00, 0x1e, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x10, 0x74, 0x15, - 0xf7, 0x86, 0xf4, 0x00, 0x00, 0x40, 0x74, 0x0d, 0xf7, 0x86, 0xf6, 0x00, 0x20, 0x00, 0x74, 0x05, - 0xc6, 0x86, 0x78, 0x02, 0x01, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x75, 0x06, 0xbe, 0xc7, 0x4c, 0xe8, - 0x74, 0xf3, 0xe8, 0x31, 0xf9, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x84, 0x74, 0x06, 0xc6, 0x46, 0x07, - 0x44, 0xeb, 0x06, 0xbe, 0x79, 0x4c, 0xe8, 0x5d, 0xf3, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x44, - 0x00, 0x32, 0xfe, 0xe8, 0x8f, 0x06, 0xc3, 0x90, 0xc7, 0x86, 0x32, 0x02, 0x04, 0x00, 0x8e, 0x46, - 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0xc6, 0x86, - 0x6f, 0x02, 0x01, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xc6, 0x86, 0x7c, 0x02, 0x00, 0xe8, 0x66, 0xf5, - 0xe8, 0xe3, 0xf8, 0xb0, 0x00, 0xe8, 0x2a, 0x17, 0x33, 0xc0, 0x88, 0x86, 0x8d, 0x02, 0x88, 0x86, - 0x8e, 0x02, 0xc6, 0x86, 0x63, 0x01, 0x01, 0xc7, 0x86, 0x64, 0x01, 0xfc, 0x05, 0xc6, 0x86, 0x69, - 0x01, 0x02, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x75, 0x2c, 0xc6, 0x86, 0x68, 0x01, 0x02, 0xc7, 0x86, - 0x66, 0x01, 0x60, 0x04, 0xc6, 0x86, 0x76, 0x02, 0x01, 0xbe, 0xc7, 0x4c, 0xe8, 0xe7, 0xf2, 0xbe, - 0x19, 0x4c, 0xe8, 0xe1, 0xf2, 0xbe, 0x73, 0x4c, 0xe8, 0xdb, 0xf2, 0xbe, 0xc1, 0x4c, 0xe8, 0xd5, - 0xf2, 0xe8, 0x80, 0x14, 0xc3, 0xc6, 0x86, 0x68, 0x01, 0x02, 0xc7, 0x86, 0x66, 0x01, 0x20, 0x03, - 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x5c, 0x00, 0x00, 0x00, 0xbe, 0x19, 0x4c, 0xe8, 0xb6, 0xf2, - 0xbe, 0x73, 0x4c, 0xe8, 0xb0, 0xf2, 0x8b, 0xb6, 0x64, 0x01, 0xb9, 0xe8, 0x03, 0xe8, 0xf2, 0x10, - 0xc3, 0x90, 0xc7, 0x86, 0x32, 0x02, 0x05, 0x00, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x08, 0xc6, - 0x86, 0x6d, 0x02, 0x01, 0xe8, 0xcf, 0xf4, 0xf6, 0x86, 0x72, 0x02, 0x01, 0x75, 0x04, 0xc6, 0x46, - 0x09, 0x16, 0xc6, 0x86, 0x73, 0x02, 0x01, 0xbe, 0x97, 0x4c, 0xe8, 0x79, 0xf2, 0xbe, 0x9d, 0x4c, - 0xe8, 0x73, 0xf2, 0xbe, 0x85, 0x4c, 0xe8, 0x6d, 0xf2, 0xbe, 0xaf, 0x4c, 0xe8, 0x67, 0xf2, 0xc7, - 0x86, 0xd6, 0x02, 0x01, 0x00, 0xc6, 0x86, 0x7a, 0x02, 0x01, 0xe8, 0xcd, 0x13, 0xc3, 0xc7, 0x86, - 0x32, 0x02, 0x07, 0x00, 0xc6, 0x86, 0x6c, 0x02, 0x01, 0xc6, 0x86, 0x60, 0x02, 0x00, 0xc6, 0x86, - 0x61, 0x02, 0x00, 0xbe, 0x4f, 0x4c, 0xe8, 0x3d, 0xf2, 0xf6, 0x86, 0x72, 0x02, 0x01, 0x75, 0x0d, - 0xc6, 0x86, 0x72, 0x02, 0x01, 0xb8, 0x00, 0x80, 0xe8, 0xef, 0x2b, 0xeb, 0x0a, 0x83, 0xa6, 0x0a, - 0x02, 0xdf, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xc6, 0x86, 0x08, 0x01, 0x00, 0xe8, 0x81, 0xf7, 0xe8, - 0x30, 0xf7, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x74, 0x0a, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x44, - 0x00, 0xff, 0xf7, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x4c, 0x00, 0x01, 0x26, 0x81, 0x26, 0x32, - 0x00, 0xff, 0x7f, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x15, 0xe8, 0xdc, 0xf6, 0xc7, 0x86, 0xc8, - 0x01, 0x14, 0x00, 0xc7, 0x86, 0xcc, 0x02, 0x00, 0x00, 0xbe, 0x55, 0x4c, 0xe8, 0xd7, 0xf1, 0xc3, - 0xbe, 0xb5, 0x4c, 0xe8, 0xd0, 0xf1, 0xc6, 0x86, 0x78, 0x02, 0x00, 0xc6, 0x86, 0x74, 0x02, 0x00, - 0xc6, 0x86, 0xfe, 0x00, 0x02, 0xe8, 0xfe, 0xf3, 0xbe, 0xc7, 0x4c, 0xe8, 0xb8, 0xf1, 0xc3, 0x90, - 0xc6, 0x86, 0x6c, 0x02, 0x00, 0xc6, 0x46, 0x09, 0x1e, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x4c, - 0x00, 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0xc7, 0x86, 0xda, 0x02, 0x05, 0x00, 0xbe, - 0xbb, 0x4c, 0xe8, 0x91, 0xf1, 0xb0, 0x00, 0xe8, 0x98, 0x15, 0xe8, 0x53, 0x13, 0xc3, 0xb8, 0x00, - 0x80, 0xe8, 0x46, 0x2b, 0xc6, 0x86, 0x08, 0x01, 0x00, 0xe8, 0xe4, 0xf6, 0xe8, 0x93, 0xf6, 0x8e, - 0x46, 0x02, 0x26, 0xc7, 0x06, 0x68, 0x00, 0x18, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x4c, - 0x00, 0x01, 0x26, 0x81, 0x26, 0x32, 0x00, 0xff, 0x7f, 0xc3, 0xc7, 0x86, 0x36, 0x02, 0x01, 0x00, - 0xc7, 0x86, 0xc6, 0x01, 0xff, 0xff, 0xc7, 0x86, 0xcc, 0x02, 0x00, 0x00, 0xc7, 0x86, 0xc8, 0x01, - 0x14, 0x00, 0x80, 0x7e, 0x07, 0x10, 0x74, 0x4b, 0xb0, 0x00, 0xe8, 0x45, 0x15, 0x80, 0x7e, 0x06, - 0x0e, 0x74, 0x02, 0xeb, 0x3e, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x4c, 0x00, 0x01, 0x26, 0x81, - 0x26, 0x32, 0x00, 0xff, 0x7f, 0x83, 0xa6, 0x0a, 0x02, 0xdf, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xf6, - 0x86, 0x5f, 0x02, 0x01, 0x74, 0x1d, 0xf6, 0x86, 0x6a, 0x02, 0x01, 0x74, 0x16, 0xf6, 0x86, 0x67, - 0x02, 0x01, 0x75, 0x0f, 0xc6, 0x86, 0x67, 0x02, 0x01, 0xf6, 0x86, 0x58, 0x02, 0x01, 0x75, 0x03, - 0xe8, 0xfb, 0x0e, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, 0xfe, 0x26, 0x81, 0x0e, - 0x32, 0x00, 0x00, 0x80, 0xc7, 0x86, 0x36, 0x02, 0x02, 0x00, 0xc6, 0x86, 0x6d, 0x02, 0x01, 0xe8, - 0x14, 0xf3, 0xe8, 0xab, 0xf5, 0xbe, 0x37, 0x4c, 0xe8, 0xcb, 0xf0, 0xe8, 0x8b, 0x0e, 0xc3, 0x90, - 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, - 0xc7, 0x86, 0x36, 0x02, 0x03, 0x00, 0xc7, 0x86, 0xcc, 0x02, 0x00, 0x00, 0xc7, 0x86, 0xc8, 0x01, - 0x0a, 0x00, 0xf6, 0x86, 0x58, 0x02, 0x01, 0x74, 0x0f, 0xc6, 0x86, 0x58, 0x02, 0x00, 0x8e, 0x46, - 0x02, 0x26, 0x81, 0x26, 0x64, 0x00, 0xff, 0x7f, 0xc6, 0x86, 0x5e, 0x02, 0x00, 0xc6, 0x86, 0x6d, - 0x02, 0x01, 0xc6, 0x86, 0x6f, 0x02, 0x01, 0xe8, 0xbc, 0xf2, 0x81, 0xa6, 0x0a, 0x02, 0xff, 0x2f, - 0x83, 0x8e, 0x0a, 0x02, 0x20, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xbe, 0x01, 0x4c, 0xe8, 0x66, 0xf0, - 0xbe, 0x25, 0x4c, 0xe8, 0x60, 0xf0, 0xc7, 0x86, 0xbc, 0x02, 0x01, 0x00, 0xc7, 0x86, 0xbe, 0x02, - 0x01, 0x00, 0xe8, 0xc3, 0x0d, 0xc3, 0xff, 0x86, 0x48, 0x02, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, - 0x4c, 0x00, 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0xe8, 0xf9, 0xf5, 0xf6, 0x86, 0x63, - 0x02, 0x01, 0x75, 0x03, 0xe8, 0x67, 0x0d, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, - 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0x80, 0xbe, 0xab, 0x02, 0x01, 0x75, 0x20, 0xc6, - 0x86, 0x6c, 0x02, 0x00, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xc6, 0x86, 0x6f, 0x02, 0x00, 0xe8, 0x45, - 0xf2, 0xe8, 0xd6, 0xf1, 0xbe, 0x2b, 0x4c, 0xe8, 0xfc, 0xef, 0xe8, 0xd4, 0xf5, 0xeb, 0x59, 0xc6, - 0x86, 0x71, 0x02, 0x01, 0xf6, 0x86, 0x70, 0x02, 0x01, 0x75, 0x4d, 0xe8, 0xbc, 0xf1, 0xe8, 0x01, - 0xe9, 0xc6, 0x86, 0x6c, 0x02, 0x00, 0xc6, 0x86, 0x71, 0x02, 0x00, 0xbe, 0x2b, 0x4c, 0xe8, 0xd5, - 0xef, 0x8e, 0x46, 0x02, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x42, 0x00, - 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xe8, 0x46, 0x3c, 0xe8, 0x78, 0xf5, 0x33, 0xc0, - 0x88, 0x86, 0x8d, 0x02, 0x88, 0x86, 0x8e, 0x02, 0xc6, 0x86, 0x63, 0x01, 0x01, 0xc7, 0x86, 0x64, - 0x01, 0xfc, 0x05, 0xc6, 0x86, 0x69, 0x01, 0x02, 0xc3, 0x90, 0xff, 0x86, 0x48, 0x02, 0x8e, 0x46, - 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0xe8, 0x45, - 0xf5, 0xc7, 0x86, 0xb8, 0x02, 0x02, 0x00, 0xc7, 0x86, 0xba, 0x02, 0x08, 0x00, 0xc6, 0x86, 0x58, - 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x64, 0x00, 0xff, 0x7f, 0xc6, 0x86, 0x6d, 0x02, - 0x00, 0xc6, 0x86, 0x6f, 0x02, 0x00, 0xe8, 0x9d, 0xf1, 0xf6, 0x86, 0x85, 0x02, 0x01, 0x75, 0x06, - 0xbe, 0xf5, 0x4b, 0xe8, 0x50, 0xef, 0x81, 0xa6, 0x0a, 0x02, 0xff, 0x6f, 0x81, 0x8e, 0x0a, 0x02, - 0x00, 0x40, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, - 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0x83, 0xbe, 0xca, 0x01, 0x00, 0x74, 0x0d, 0x8b, - 0x86, 0xca, 0x01, 0xc7, 0x86, 0xca, 0x01, 0x00, 0x00, 0xe8, 0xfc, 0x0f, 0xbe, 0x01, 0x4c, 0xe8, - 0x14, 0xef, 0xc3, 0x90, 0xc7, 0x86, 0x36, 0x02, 0x01, 0x00, 0xc7, 0x86, 0x34, 0x02, 0x02, 0x00, - 0xb0, 0x00, 0xe8, 0x0d, 0x13, 0x80, 0x7e, 0x06, 0x48, 0x75, 0x10, 0x8e, 0x46, 0x02, 0x26, 0x83, - 0x0e, 0x4c, 0x00, 0x01, 0x26, 0x81, 0x26, 0x32, 0x00, 0xff, 0x7f, 0xc3, 0xc7, 0x86, 0x34, 0x02, - 0x03, 0x00, 0xff, 0x86, 0x48, 0x02, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, 0xfe, 0x26, - 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0xc6, 0x86, 0x6c, 0x02, 0x00, 0xc6, 0x86, 0x73, 0x02, 0x00, - 0xbe, 0x7f, 0x4c, 0xe8, 0xc0, 0xee, 0xbe, 0x8b, 0x4c, 0xe8, 0xba, 0xee, 0xbe, 0xa3, 0x4c, 0xe8, - 0xb4, 0xee, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x08, 0xc6, 0x86, 0x6f, 0x02, 0x01, 0xe8, 0xe5, - 0xf0, 0x81, 0x8e, 0x0a, 0x02, 0x04, 0x50, 0xc6, 0x86, 0x89, 0x02, 0x01, 0x80, 0xbe, 0xfe, 0x00, - 0x02, 0x74, 0x0d, 0xf6, 0x86, 0x65, 0x02, 0x01, 0x74, 0x06, 0x81, 0x8e, 0x0a, 0x02, 0x00, 0x80, - 0xe8, 0xcd, 0x2f, 0xe8, 0xb8, 0x0b, 0xc3, 0x90, 0xc7, 0x86, 0x34, 0x02, 0x04, 0x00, 0xbe, 0x7f, - 0x4c, 0xe8, 0x72, 0xee, 0xbe, 0x8b, 0x4c, 0xe8, 0x6c, 0xee, 0x81, 0xa6, 0x0a, 0x02, 0xfb, 0x6f, - 0x81, 0x8e, 0x0a, 0x02, 0x00, 0x40, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xc3, 0xc7, 0x86, 0x34, 0x02, - 0x05, 0x00, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x1a, 0x8e, 0x46, 0x02, 0xf6, 0x06, 0x81, 0x5e, - 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x42, 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, 0x01, 0x01, - 0xe8, 0xbe, 0x3a, 0x81, 0xa6, 0x0a, 0x02, 0xfb, 0x2f, 0x83, 0x8e, 0x0a, 0x02, 0x20, 0xc6, 0x86, - 0x89, 0x02, 0x01, 0xe8, 0x5e, 0x01, 0xc3, 0x90, 0xc7, 0x86, 0x34, 0x02, 0x01, 0x00, 0xc3, 0x90, - 0xc3, 0x53, 0x50, 0x89, 0x86, 0x22, 0x01, 0x80, 0xbe, 0x62, 0x01, 0x01, 0x75, 0x0f, 0x50, 0xe8, - 0x43, 0xe6, 0xe8, 0x67, 0x26, 0xc6, 0x46, 0x07, 0x00, 0x58, 0xe9, 0xea, 0x00, 0xf6, 0x86, 0x08, - 0x01, 0x01, 0x74, 0x05, 0xe8, 0xb3, 0x27, 0xeb, 0x6c, 0x83, 0xf8, 0x10, 0x75, 0x08, 0x81, 0x8e, - 0x1e, 0x01, 0x00, 0x80, 0xeb, 0x5f, 0x83, 0x8e, 0x1e, 0x01, 0x02, 0x8b, 0x9e, 0x0a, 0x02, 0x83, - 0xf8, 0x01, 0x75, 0x04, 0x81, 0xcb, 0x00, 0x04, 0x83, 0xf8, 0x0c, 0x75, 0x04, 0x81, 0xcb, 0x00, - 0x08, 0x83, 0xf8, 0x0b, 0x75, 0x03, 0x83, 0xcb, 0x02, 0x83, 0xf8, 0x09, 0x75, 0x03, 0x83, 0xcb, - 0x04, 0x83, 0xf8, 0x0a, 0x75, 0x09, 0x81, 0xcb, 0x00, 0x01, 0x83, 0x8e, 0x1e, 0x01, 0x04, 0x83, - 0xf8, 0x06, 0x75, 0x03, 0x83, 0xcb, 0x01, 0x83, 0xf8, 0x0f, 0x74, 0x19, 0x83, 0xf8, 0x02, 0x75, - 0x03, 0x83, 0xcb, 0x08, 0x83, 0xf8, 0x03, 0x75, 0x03, 0x83, 0xcb, 0x08, 0x89, 0x9e, 0x0a, 0x02, - 0xc6, 0x86, 0x89, 0x02, 0x01, 0x8a, 0x4e, 0x06, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x72, 0x2e, 0xf7, - 0x86, 0x0a, 0x02, 0x08, 0x00, 0x75, 0x1c, 0x80, 0xf9, 0x48, 0x74, 0x11, 0xf6, 0x86, 0x72, 0x02, - 0x01, 0x74, 0x10, 0x80, 0xf9, 0x44, 0x74, 0x05, 0x80, 0xf9, 0x46, 0x75, 0x06, 0xc6, 0x46, 0x07, - 0x4c, 0xeb, 0x44, 0xc6, 0x46, 0x07, 0x12, 0xc6, 0x46, 0x09, 0x1e, 0xeb, 0x3a, 0xc6, 0x46, 0x07, - 0x12, 0xc6, 0x46, 0x09, 0x1e, 0xf6, 0x86, 0xac, 0x02, 0x01, 0x74, 0x1a, 0x8e, 0x46, 0x02, 0xf6, - 0x06, 0x81, 0x5e, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x42, 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, - 0x6d, 0x01, 0x01, 0xe8, 0xab, 0x39, 0xf6, 0x86, 0xaa, 0x02, 0x01, 0x75, 0x02, 0xeb, 0x08, 0xc6, - 0x46, 0x07, 0x10, 0xc6, 0x46, 0x09, 0x00, 0x58, 0x5b, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, - 0x40, 0x00, 0x02, 0x00, 0x74, 0x0b, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x40, 0x00, 0xfd, 0xeb, - 0x09, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x40, 0x00, 0x02, 0xc3, 0x90, 0xc7, 0x86, 0x32, 0x02, - 0x01, 0x00, 0xc3, 0xb9, 0x01, 0x01, 0x38, 0xc8, 0x75, 0x19, 0x8b, 0xb6, 0xf6, 0x00, 0x81, 0xe6, - 0x00, 0xc0, 0x81, 0xfe, 0x00, 0x80, 0x75, 0x0b, 0xc6, 0x86, 0x5a, 0x02, 0x01, 0xbe, 0x07, 0x4c, - 0xe8, 0xc3, 0xec, 0xc3, 0xc3, 0x50, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x18, 0xf7, 0x86, 0xf6, - 0x00, 0x00, 0x10, 0x74, 0x05, 0xc6, 0x86, 0xfe, 0x00, 0x01, 0xc6, 0x86, 0x95, 0x02, 0x01, 0xe8, - 0x05, 0x00, 0xe8, 0xe1, 0xee, 0x58, 0xc3, 0xc7, 0x86, 0x98, 0x02, 0x00, 0x00, 0xc7, 0x86, 0x9c, - 0x02, 0x05, 0x00, 0xc6, 0x86, 0x96, 0x02, 0x00, 0xa1, 0x2a, 0x5d, 0x89, 0x86, 0x9a, 0x02, 0x40, - 0x89, 0x86, 0x9e, 0x02, 0xc3, 0xc6, 0x86, 0x95, 0x02, 0x00, 0xc6, 0x86, 0x96, 0x02, 0x00, 0xc3, - 0x50, 0x53, 0xf6, 0x86, 0x96, 0x02, 0x01, 0x75, 0x1c, 0xa1, 0x2a, 0x5d, 0x8b, 0x9e, 0x9a, 0x02, - 0x3b, 0xc3, 0x74, 0x11, 0x43, 0x3b, 0xc3, 0x74, 0x0c, 0x83, 0xc0, 0x04, 0x89, 0x86, 0x9a, 0x02, - 0xc6, 0x86, 0x96, 0x02, 0x01, 0x5b, 0x58, 0xc3, 0xc7, 0x86, 0x98, 0x02, 0x00, 0x00, 0xa1, 0x2a, - 0x5d, 0x83, 0xc0, 0x04, 0x89, 0x86, 0x9a, 0x02, 0xc6, 0x86, 0x96, 0x02, 0x01, 0xc3, 0xa1, 0x2a, - 0x5d, 0x3b, 0x86, 0x9e, 0x02, 0x74, 0x3a, 0x40, 0x3b, 0x86, 0x9e, 0x02, 0x74, 0x33, 0x48, 0xf6, - 0x86, 0x96, 0x02, 0x01, 0x74, 0x42, 0x3b, 0x86, 0x9a, 0x02, 0x75, 0x3c, 0x81, 0xbe, 0x98, 0x02, - 0x04, 0x01, 0x75, 0x0a, 0x80, 0xbe, 0xfe, 0x00, 0x00, 0x75, 0x03, 0xe9, 0xa5, 0x00, 0x83, 0xbe, - 0x98, 0x02, 0x04, 0x75, 0x11, 0x80, 0x7e, 0x06, 0x04, 0x75, 0x09, 0xe8, 0xaa, 0xff, 0xe9, 0xa4, - 0x00, 0xe9, 0xa1, 0x00, 0xeb, 0x0c, 0x80, 0x7e, 0x06, 0x04, 0x75, 0x06, 0xe8, 0x26, 0xff, 0xe9, - 0x93, 0x00, 0xe8, 0x60, 0xff, 0xe9, 0x8d, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x54, 0x00, 0x25, - 0x24, 0x01, 0x8b, 0xd8, 0x33, 0x86, 0x98, 0x02, 0x75, 0x02, 0xeb, 0x79, 0xa9, 0x04, 0x00, 0x74, - 0x15, 0xe8, 0x4c, 0xff, 0xf7, 0xc3, 0x04, 0x00, 0x74, 0x07, 0xc6, 0x86, 0x97, 0x02, 0x01, 0xeb, - 0x05, 0xc6, 0x86, 0x97, 0x02, 0x00, 0xa9, 0x00, 0x01, 0x74, 0x14, 0xf7, 0xc3, 0x00, 0x01, 0x74, - 0x0b, 0xf7, 0xc3, 0x20, 0x00, 0x75, 0x20, 0xe8, 0x26, 0xff, 0xeb, 0x03, 0xe8, 0x21, 0xff, 0xa9, - 0x20, 0x00, 0x74, 0x2d, 0xf7, 0xc3, 0x20, 0x00, 0x74, 0x34, 0xf6, 0x86, 0x96, 0x02, 0x01, 0x74, - 0x30, 0xf7, 0xc3, 0x00, 0x01, 0x74, 0x2a, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x10, 0x74, 0x14, 0x80, - 0xbe, 0xfe, 0x00, 0x00, 0x74, 0x0d, 0xe8, 0x1f, 0xff, 0xc6, 0x86, 0xfe, 0x00, 0x00, 0xe8, 0xa5, - 0xed, 0xeb, 0x0e, 0xe8, 0xdf, 0xfe, 0xb8, 0x0e, 0x00, 0xe8, 0x45, 0xfd, 0xeb, 0x03, 0xe8, 0xdf, - 0xfe, 0x89, 0x9e, 0x98, 0x02, 0xc3, 0x55, 0x1e, 0x06, 0x33, 0xed, 0x8e, 0xdd, 0x8b, 0x2e, 0x48, - 0x5d, 0x8e, 0x46, 0x02, 0xeb, 0x00, 0x60, 0xfa, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x44, 0x00, 0x89, - 0x86, 0x18, 0x01, 0xc7, 0x86, 0x1c, 0x01, 0x01, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x46, 0x00, - 0x89, 0x86, 0x1a, 0x01, 0xb8, 0x07, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x46, 0x00, 0xb8, 0xff, - 0xff, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x44, 0x00, 0xfb, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x48, 0x00, - 0x8b, 0xd8, 0x81, 0xe3, 0xff, 0xfc, 0x8e, 0x46, 0x02, 0x26, 0x89, 0x1e, 0x48, 0x00, 0x8e, 0x46, - 0x02, 0x26, 0x8b, 0x1e, 0x4a, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x89, 0x1e, 0x4a, 0x00, 0x50, 0xb0, - 0xa0, 0xe6, 0x10, 0x58, 0xa9, 0x00, 0x08, 0x74, 0x0f, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x74, 0x05, - 0xe8, 0xe8, 0x35, 0xeb, 0x03, 0xe8, 0x74, 0x30, 0xa9, 0x00, 0x01, 0x75, 0x22, 0xf7, 0x86, 0xa8, - 0x02, 0x01, 0x00, 0x75, 0x21, 0xa9, 0xcd, 0x01, 0x74, 0x1c, 0x80, 0xbe, 0x6a, 0x01, 0x0a, 0x72, - 0x0e, 0xc7, 0x86, 0xa8, 0x02, 0x01, 0x00, 0x81, 0x8e, 0x18, 0x01, 0xcd, 0x00, 0xeb, 0x07, 0xfe, - 0x86, 0x6a, 0x01, 0xe8, 0x6c, 0x32, 0xa9, 0x00, 0x04, 0x74, 0x29, 0xf7, 0x86, 0x0a, 0x01, 0x01, - 0x00, 0x75, 0x21, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x44, 0x00, 0x00, 0x04, 0xe8, 0x9f, 0xe8, - 0xc7, 0x44, 0x02, 0x01, 0x00, 0x89, 0x44, 0x04, 0xc7, 0x86, 0x0a, 0x01, 0x01, 0x00, 0x8d, 0x7e, - 0x16, 0xe8, 0xa9, 0xe8, 0xa9, 0x00, 0x10, 0x74, 0x27, 0x80, 0xbe, 0x0c, 0x01, 0x01, 0x74, 0x20, - 0xf6, 0x86, 0xb8, 0x01, 0x01, 0x75, 0x19, 0xe8, 0x75, 0xe8, 0xf7, 0xc6, 0xff, 0xff, 0x74, 0x10, - 0xc7, 0x44, 0x02, 0x03, 0x00, 0xc6, 0x86, 0xb8, 0x01, 0x01, 0x8d, 0x7e, 0x16, 0xe8, 0x7d, 0xe8, - 0xa9, 0x00, 0x20, 0x74, 0x61, 0x80, 0xbe, 0x0c, 0x01, 0x01, 0x75, 0x07, 0xc6, 0x86, 0x0d, 0x01, - 0x01, 0xeb, 0x53, 0x50, 0x26, 0xa1, 0x78, 0x00, 0x26, 0x8b, 0x1e, 0x70, 0x00, 0x3b, 0xc3, 0x77, - 0x10, 0x2b, 0x86, 0xa8, 0x15, 0x8b, 0xc8, 0x8b, 0x86, 0xaa, 0x15, 0x2b, 0xc3, 0x03, 0xc1, 0xeb, - 0x02, 0x2b, 0xc3, 0x3d, 0x00, 0x02, 0x77, 0x0d, 0xe8, 0xe6, 0xef, 0xc6, 0x86, 0xbc, 0x01, 0x01, - 0x83, 0x8e, 0xe6, 0x02, 0x40, 0x58, 0xf6, 0x86, 0xb9, 0x01, 0x01, 0x75, 0x19, 0xe8, 0x0f, 0xe8, - 0xf7, 0xc6, 0xff, 0xff, 0x74, 0x10, 0xc7, 0x44, 0x02, 0x04, 0x00, 0xc6, 0x86, 0xb9, 0x01, 0x01, - 0x8d, 0x7e, 0x16, 0xe8, 0x17, 0xe8, 0xfa, 0x8b, 0x86, 0x18, 0x01, 0x8e, 0x46, 0x02, 0x26, 0xa3, - 0x44, 0x00, 0xc7, 0x86, 0x1c, 0x01, 0x00, 0x00, 0x8b, 0x86, 0x1a, 0x01, 0x8e, 0x46, 0x02, 0x26, - 0xa3, 0x46, 0x00, 0x61, 0x07, 0x1f, 0x5d, 0xcf, 0x50, 0x25, 0x00, 0x02, 0x8e, 0x46, 0x02, 0x26, - 0xa3, 0x48, 0x00, 0x8b, 0x86, 0xcc, 0x02, 0x40, 0x89, 0x86, 0xcc, 0x02, 0x83, 0xf8, 0x01, 0x75, - 0x08, 0x56, 0xbe, 0x55, 0x4c, 0xe8, 0x9e, 0xe9, 0x5e, 0x3b, 0x86, 0xc8, 0x01, 0x76, 0x0a, 0x80, - 0xbe, 0x65, 0x02, 0x01, 0x74, 0x03, 0xe8, 0x3e, 0x32, 0x58, 0xc3, 0x8d, 0x71, 0x18, 0x8b, 0x49, - 0x14, 0x86, 0xcd, 0x83, 0xe9, 0x04, 0x7e, 0x1b, 0x33, 0xc0, 0x03, 0xf0, 0x8a, 0x04, 0x0a, 0xc0, - 0x74, 0x11, 0x3a, 0x54, 0x01, 0x74, 0x17, 0x32, 0xe4, 0x3c, 0xff, 0x74, 0x0a, 0x2b, 0xc8, 0x72, - 0x02, 0x77, 0xe7, 0x33, 0xc0, 0xf9, 0xc3, 0x8b, 0x44, 0x02, 0x86, 0xc4, 0xeb, 0xef, 0x0a, 0xe4, - 0x75, 0xf1, 0x38, 0xf0, 0x75, 0xed, 0x8d, 0x74, 0x02, 0xf8, 0xc3, 0x8c, 0xd8, 0x8e, 0xc0, 0x8b, - 0xb6, 0xa8, 0x15, 0x8b, 0xbe, 0xaa, 0x15, 0x47, 0xa5, 0xa5, 0xa5, 0x8b, 0x4f, 0x04, 0x83, 0xc1, - 0x07, 0x80, 0xe1, 0xfe, 0x8b, 0xc7, 0x2b, 0xc3, 0x2b, 0xc8, 0x76, 0x0a, 0x81, 0xf9, 0x00, 0x01, - 0x73, 0x09, 0xd1, 0xe9, 0xf3, 0xa5, 0x8b, 0x07, 0xe9, 0xd1, 0x01, 0xb9, 0x19, 0x00, 0xf3, 0xa5, - 0x33, 0xff, 0xf6, 0x47, 0x0e, 0x80, 0x74, 0x0e, 0x8b, 0x47, 0x14, 0x83, 0xe0, 0x1f, 0x74, 0x0f, - 0xa8, 0x01, 0x75, 0x0b, 0x8b, 0xf8, 0xba, 0x80, 0x09, 0x68, 0xe9, 0x28, 0xe9, 0x65, 0x05, 0xe9, - 0x9b, 0x02, 0xc3, 0x80, 0x7f, 0x17, 0x02, 0x75, 0xf9, 0x50, 0x56, 0x8b, 0xb6, 0x1a, 0x06, 0x8b, - 0x04, 0x5e, 0x3b, 0x86, 0xc6, 0x01, 0x74, 0x07, 0x89, 0x86, 0xc6, 0x01, 0x58, 0xeb, 0x3d, 0x58, - 0xeb, 0x12, 0x8a, 0x4f, 0x07, 0x80, 0xe1, 0x3f, 0x74, 0xd8, 0x8a, 0xe9, 0x86, 0x8e, 0xfe, 0x01, - 0x38, 0xcd, 0x75, 0x18, 0x57, 0x51, 0x8d, 0xbe, 0x00, 0x02, 0x8d, 0x77, 0x0e, 0x8c, 0xd9, 0x8e, - 0xc1, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x75, 0x06, 0x59, 0x5f, 0xeb, 0xb6, 0x57, 0x51, 0x8d, 0xbe, - 0x00, 0x02, 0x8d, 0x77, 0x0e, 0xb9, 0x03, 0x00, 0xf3, 0xa5, 0x59, 0x5f, 0xeb, 0x0d, 0x8b, 0x7e, - 0x04, 0x58, 0xc3, 0xf7, 0x86, 0xf6, 0x00, 0x01, 0x00, 0x74, 0xf7, 0x80, 0x7e, 0x06, 0x0e, 0x74, - 0x08, 0x80, 0x7e, 0x06, 0x48, 0x74, 0x02, 0xeb, 0xe9, 0x50, 0x8c, 0xd8, 0x8e, 0xc0, 0x8b, 0x07, - 0xa9, 0x00, 0x40, 0x75, 0xdc, 0x0d, 0x00, 0x40, 0x89, 0x07, 0xe8, 0x8a, 0x00, 0x8b, 0x4f, 0x04, - 0x83, 0xc1, 0x03, 0x80, 0xe1, 0xfe, 0x89, 0x7e, 0x04, 0x8b, 0xbe, 0xc2, 0x01, 0x3b, 0xfe, 0x72, - 0x11, 0x8d, 0x86, 0xa8, 0x08, 0x05, 0xff, 0x00, 0x2b, 0xc7, 0x3b, 0xc1, 0x7d, 0x0a, 0x8d, 0xbe, - 0xa8, 0x08, 0x2b, 0xf7, 0x3b, 0xf1, 0x7c, 0xa6, 0x8b, 0xd7, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, - 0x8b, 0xf3, 0xd1, 0xe9, 0x83, 0xc7, 0x02, 0x49, 0xad, 0xf3, 0xa5, 0x8b, 0xcf, 0xc7, 0x05, 0x00, - 0x00, 0x8b, 0xfa, 0x89, 0x4d, 0x02, 0x51, 0x8b, 0x4d, 0x04, 0x83, 0xe9, 0x04, 0x89, 0x4d, 0x04, - 0x59, 0x89, 0x05, 0x8d, 0x86, 0xa8, 0x08, 0x3b, 0xf8, 0x75, 0x0e, 0x8b, 0x86, 0xc0, 0x01, 0x3b, - 0x86, 0xc2, 0x01, 0x75, 0x1c, 0x89, 0xbe, 0xc0, 0x01, 0x89, 0x8e, 0xc2, 0x01, 0x8b, 0x7e, 0x04, - 0xc7, 0x86, 0xc4, 0x01, 0x00, 0x00, 0xb9, 0x40, 0x60, 0x8e, 0xc1, 0xe8, 0xd1, 0x22, 0xe9, 0x4d, - 0xff, 0x97, 0x89, 0x45, 0x02, 0xeb, 0xe2, 0x8b, 0xb6, 0xc0, 0x01, 0xf7, 0x86, 0xc4, 0x01, 0x01, - 0x00, 0x75, 0x0f, 0x81, 0x3c, 0x00, 0x80, 0x75, 0x05, 0x8b, 0x74, 0x02, 0xeb, 0xf5, 0x89, 0xb6, - 0xc0, 0x01, 0xc3, 0xf7, 0x07, 0x01, 0x09, 0x74, 0x03, 0xe9, 0x61, 0x01, 0xf7, 0x07, 0x00, 0x10, - 0x75, 0x34, 0x68, 0xf8, 0x27, 0xe9, 0xae, 0x26, 0xa8, 0x02, 0x74, 0x22, 0x80, 0x7e, 0x08, 0x00, - 0x75, 0x1c, 0x80, 0xbe, 0x62, 0x02, 0x00, 0x74, 0x15, 0x24, 0x28, 0x3c, 0x28, 0x75, 0x0f, 0xf6, - 0x47, 0x0e, 0x80, 0x75, 0x64, 0x81, 0x8e, 0xe6, 0x02, 0x80, 0x00, 0xeb, 0x5c, 0x90, 0xeb, 0x59, - 0xe9, 0x38, 0xfe, 0x90, 0xeb, 0xd2, 0xeb, 0x34, 0x8b, 0x47, 0x14, 0x83, 0xe0, 0x1f, 0x74, 0x06, - 0xa8, 0x01, 0x8b, 0xf8, 0x74, 0x4b, 0xe9, 0x14, 0x01, 0x50, 0x8b, 0x9e, 0xb2, 0x01, 0x8b, 0x07, - 0xa9, 0x00, 0x80, 0x75, 0x02, 0x58, 0xc3, 0xa9, 0x00, 0x20, 0x74, 0x0b, 0xff, 0x86, 0x40, 0x02, - 0x8b, 0x4f, 0x04, 0x01, 0x8e, 0x42, 0x02, 0xe8, 0x92, 0x03, 0x75, 0xc4, 0xf7, 0x86, 0xb6, 0x01, - 0x00, 0x02, 0x75, 0x11, 0xa9, 0x01, 0x09, 0x75, 0x40, 0x80, 0x7e, 0x07, 0x10, 0x74, 0x3a, 0x80, - 0x7e, 0x07, 0x12, 0x74, 0x34, 0xa8, 0x28, 0x75, 0xab, 0x33, 0xff, 0xf6, 0x47, 0x0e, 0x80, 0x75, - 0xa7, 0x8b, 0x47, 0x04, 0x83, 0xf8, 0x12, 0x77, 0x05, 0x33, 0xc0, 0xe9, 0x99, 0x01, 0x83, 0xe8, - 0x12, 0x2b, 0xc7, 0x83, 0xf8, 0x04, 0x7c, 0x38, 0x8b, 0x49, 0x16, 0x88, 0xae, 0x08, 0x02, 0x51, - 0x80, 0xe1, 0xf0, 0x80, 0xf9, 0x00, 0x74, 0x04, 0x59, 0xe9, 0xa1, 0x00, 0x59, 0x0b, 0xff, 0x74, - 0x0f, 0xf6, 0xc1, 0x0f, 0x74, 0xf3, 0x80, 0xf9, 0x33, 0x74, 0xee, 0x80, 0xf9, 0x03, 0x74, 0xe9, - 0x86, 0xc4, 0x39, 0x41, 0x14, 0x86, 0xc4, 0x75, 0x03, 0xeb, 0x0d, 0x90, 0xe9, 0x53, 0x01, 0x90, - 0xe9, 0x54, 0x01, 0x90, 0xe9, 0x5c, 0x01, 0x90, 0xf6, 0x86, 0x95, 0x02, 0x01, 0x74, 0x03, 0xe8, - 0x43, 0xfa, 0x80, 0xfd, 0x17, 0x77, 0x11, 0x80, 0xfd, 0x01, 0x74, 0xe8, 0x80, 0xfd, 0x09, 0x74, - 0xe3, 0x80, 0xfd, 0x0a, 0x74, 0xde, 0xeb, 0x11, 0x80, 0xfd, 0x20, 0x72, 0xd7, 0x80, 0xfd, 0x29, - 0x77, 0xd2, 0x80, 0xfd, 0x21, 0x74, 0xcd, 0xeb, 0xa0, 0x80, 0xfd, 0x10, 0x76, 0x02, 0xeb, 0x05, - 0x80, 0xfd, 0x0e, 0x73, 0x1d, 0x53, 0x8b, 0xd9, 0xc1, 0xeb, 0x08, 0x80, 0xe1, 0x0f, 0x3a, 0x8f, - 0x72, 0x04, 0x74, 0x23, 0x83, 0xfb, 0x0b, 0x74, 0x19, 0x83, 0xfb, 0x0c, 0x74, 0x14, 0x5b, 0xe9, - 0xfa, 0x00, 0x80, 0xe1, 0x0f, 0x80, 0xf9, 0x00, 0x74, 0xf5, 0x80, 0xf9, 0x03, 0x74, 0xf0, 0xe9, - 0xa1, 0x01, 0x80, 0xf9, 0x08, 0x75, 0xe7, 0x5b, 0xe9, 0x98, 0x01, 0x5b, 0x5f, 0x8b, 0x9e, 0xb2, - 0x01, 0xf7, 0x86, 0xf6, 0x00, 0x01, 0x00, 0x74, 0x28, 0x80, 0x7e, 0x06, 0x0e, 0x74, 0x06, 0x80, - 0x7e, 0x06, 0x48, 0x75, 0x1c, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x08, 0x74, 0x06, 0x68, 0x1d, 0x29, - 0xe9, 0x5f, 0xfd, 0xf7, 0x86, 0x12, 0x01, 0x80, 0x00, 0x74, 0x06, 0x68, 0x1d, 0x29, 0xe9, 0x32, - 0xfd, 0x8b, 0x5f, 0x02, 0x89, 0x9e, 0xb2, 0x01, 0x8b, 0xc3, 0x83, 0xe8, 0x02, 0x3b, 0x86, 0xa8, - 0x15, 0x77, 0x04, 0x8b, 0x86, 0xaa, 0x15, 0x8e, 0x46, 0x02, 0x53, 0x26, 0x8b, 0x1e, 0x78, 0x00, - 0x81, 0x7f, 0xfc, 0xde, 0xad, 0x75, 0x07, 0x81, 0x7f, 0xfe, 0xbe, 0xaf, 0x74, 0x05, 0xc6, 0x86, - 0xbd, 0x01, 0x01, 0x5b, 0x26, 0xa3, 0x78, 0x00, 0x26, 0xa1, 0x78, 0x00, 0x93, 0xc7, 0x47, 0xfc, - 0xde, 0xad, 0xc7, 0x47, 0xfe, 0xbe, 0xaf, 0x93, 0xfa, 0x8b, 0x07, 0xa9, 0x00, 0x80, 0x74, 0x17, - 0xfb, 0xff, 0x86, 0x3c, 0x01, 0x83, 0xbe, 0x3c, 0x01, 0x05, 0x77, 0x2b, 0x8a, 0x4e, 0x09, 0x3a, - 0x4e, 0x08, 0x75, 0x23, 0xe9, 0x60, 0xfe, 0xc6, 0x86, 0xb9, 0x01, 0x00, 0xfb, 0xf6, 0x86, 0xbc, - 0x01, 0x01, 0x74, 0x08, 0xc6, 0x86, 0xbc, 0x01, 0x00, 0xe8, 0x6a, 0xeb, 0xc7, 0x86, 0x3c, 0x01, - 0x00, 0x00, 0x58, 0xc3, 0xe9, 0x46, 0xff, 0xe8, 0xb5, 0xe3, 0xf7, 0xc6, 0xff, 0xff, 0x74, 0xd7, - 0xc7, 0x44, 0x02, 0x04, 0x00, 0xc6, 0x86, 0xb9, 0x01, 0x01, 0x8d, 0x7e, 0x16, 0xe8, 0xbd, 0xe3, - 0xeb, 0xcb, 0xba, 0x80, 0x02, 0xeb, 0x1d, 0xba, 0x80, 0x01, 0xeb, 0x18, 0xba, 0x80, 0x04, 0xeb, - 0x13, 0x5f, 0x5b, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x10, 0x74, 0x06, 0x68, 0x1d, 0x29, 0xe9, 0xd2, - 0xfc, 0xba, 0x80, 0x03, 0x33, 0xc0, 0x8e, 0xc0, 0x68, 0xe9, 0x28, 0xe9, 0xc6, 0x01, 0x33, 0xd2, - 0x32, 0xed, 0x8a, 0x4d, 0xff, 0x89, 0x55, 0x02, 0x83, 0xc7, 0x05, 0xe2, 0xf8, 0xf6, 0x86, 0x63, - 0x02, 0x01, 0x74, 0x38, 0x80, 0x7e, 0x08, 0x0a, 0x75, 0x0b, 0xc6, 0x46, 0x09, 0x04, 0xc6, 0x86, - 0x63, 0x02, 0x00, 0xeb, 0x24, 0x80, 0x7e, 0x08, 0x06, 0x75, 0x21, 0xc6, 0x86, 0x63, 0x02, 0x00, - 0xc6, 0x86, 0x6d, 0x02, 0x01, 0xe8, 0x5e, 0xe7, 0xbe, 0x25, 0x4c, 0xe8, 0x18, 0xe5, 0x50, 0x53, - 0x33, 0xc0, 0x8e, 0xc0, 0xe8, 0x47, 0x02, 0x5b, 0x58, 0xbb, 0x00, 0x00, 0x8b, 0xf8, 0x8b, 0xf3, - 0x5b, 0x57, 0x53, 0x68, 0xe7, 0x28, 0xff, 0x66, 0x12, 0xeb, 0x87, 0x8b, 0xc7, 0x8b, 0xbf, 0x8a, - 0x04, 0x0b, 0xff, 0x78, 0xf4, 0x74, 0xa6, 0x03, 0xfd, 0xf6, 0x45, 0x01, 0x80, 0x75, 0x02, 0xeb, - 0x8d, 0xe9, 0x21, 0x01, 0xe9, 0x03, 0x01, 0x5f, 0x5b, 0xba, 0x80, 0x08, 0xe9, 0x75, 0xff, 0x8b, - 0x54, 0x02, 0x86, 0xd6, 0x83, 0xc6, 0x02, 0xb0, 0x04, 0xeb, 0x51, 0x5f, 0x5b, 0xba, 0x80, 0x05, - 0xe9, 0x61, 0xff, 0x53, 0x8d, 0x71, 0x18, 0x32, 0xff, 0x8a, 0xdd, 0xd1, 0xe3, 0x83, 0xe8, 0x04, - 0x0b, 0xc0, 0x74, 0xb7, 0x89, 0x46, 0x04, 0x57, 0x8b, 0xbf, 0x8a, 0x04, 0x0b, 0xff, 0x74, 0xc4, - 0x79, 0x03, 0xe9, 0x2c, 0xff, 0x03, 0xfd, 0x8e, 0xc7, 0x33, 0xc0, 0x32, 0xed, 0x8a, 0x4d, 0xff, - 0x89, 0x45, 0x02, 0x83, 0xc7, 0x05, 0xe2, 0xf8, 0x33, 0xd2, 0x03, 0xf2, 0x8a, 0x4c, 0x01, 0x8a, - 0x14, 0x0a, 0xd2, 0x74, 0xb6, 0x80, 0xfa, 0xff, 0x74, 0xa5, 0xb0, 0x02, 0x29, 0x56, 0x04, 0x72, - 0xaa, 0x0a, 0xc9, 0x78, 0x92, 0x8a, 0xe1, 0x80, 0xe1, 0x3f, 0x8c, 0xc7, 0x8a, 0x6d, 0xff, 0xeb, - 0x12, 0x80, 0x7d, 0x04, 0xff, 0x74, 0x15, 0xeb, 0x92, 0xe9, 0x7b, 0xff, 0xfe, 0xcd, 0x74, 0xf9, - 0x83, 0xc7, 0x05, 0x3a, 0x0d, 0x75, 0xf5, 0x3a, 0x55, 0x04, 0x75, 0xe5, 0x8d, 0x44, 0x02, 0x87, - 0x45, 0x02, 0x0b, 0xc0, 0x74, 0x09, 0xf6, 0x45, 0x01, 0x80, 0x75, 0xdd, 0x89, 0x45, 0x02, 0x83, - 0x7e, 0x04, 0x00, 0x75, 0xa5, 0x33, 0xc0, 0x8c, 0xc6, 0xf6, 0x44, 0x01, 0x80, 0x74, 0x0e, 0x39, - 0x44, 0x02, 0x74, 0x60, 0x83, 0xc6, 0x05, 0xf6, 0x44, 0x01, 0x80, 0x75, 0xf2, 0xf6, 0x86, 0x63, - 0x02, 0x01, 0x74, 0x36, 0x80, 0x7e, 0x08, 0x0a, 0x75, 0x0b, 0xc6, 0x86, 0x63, 0x02, 0x00, 0xc6, - 0x46, 0x09, 0x04, 0xeb, 0x22, 0x80, 0x7e, 0x08, 0x06, 0x75, 0x1f, 0xc6, 0x86, 0x63, 0x02, 0x00, - 0xc6, 0x86, 0x6d, 0x02, 0x01, 0xe8, 0x2e, 0xe6, 0xbe, 0x25, 0x4c, 0xe8, 0xe8, 0xe3, 0x33, 0xc0, - 0x8e, 0xc0, 0x53, 0xe8, 0x18, 0x01, 0x5b, 0xbb, 0x00, 0x00, 0x89, 0x5e, 0x04, 0x8b, 0xf3, 0x5f, - 0x5b, 0x33, 0xc0, 0x8e, 0xc0, 0x3b, 0xb6, 0xba, 0x01, 0x73, 0x06, 0x68, 0xe9, 0x28, 0xff, 0x66, - 0x12, 0xe9, 0x69, 0xfd, 0x5f, 0x5b, 0xba, 0x80, 0x07, 0xe9, 0x58, 0xfe, 0x56, 0x57, 0x50, 0x33, - 0xc0, 0x8e, 0xc0, 0x8b, 0xb6, 0xa8, 0x15, 0x8b, 0xbe, 0xaa, 0x15, 0x83, 0xc7, 0x01, 0xa5, 0xa5, - 0xa5, 0x8b, 0xc3, 0x03, 0x47, 0x04, 0x8b, 0xbe, 0xaa, 0x15, 0x3b, 0xc7, 0x7f, 0x02, 0x32, 0xc0, - 0x58, 0x5f, 0x5e, 0xc3, 0x8c, 0xd8, 0x8e, 0xc0, 0xf6, 0x41, 0x16, 0x0f, 0x74, 0x60, 0x89, 0x96, - 0xee, 0x02, 0x81, 0xfa, 0x80, 0x02, 0x74, 0x13, 0xba, 0x09, 0x04, 0xe8, 0xed, 0xf9, 0x72, 0x0b, - 0xad, 0x86, 0xe0, 0x89, 0x86, 0x18, 0x02, 0x86, 0xe0, 0xeb, 0x06, 0x8b, 0x86, 0x18, 0x02, 0x86, - 0xe0, 0x89, 0x86, 0xea, 0x02, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0x4d, 0x22, 0x57, 0x53, 0xe8, 0x2b, - 0x06, 0x5a, 0x5f, 0x72, 0x29, 0x57, 0xe8, 0x26, 0x00, 0xb8, 0x00, 0x0e, 0xab, 0x47, 0xb0, 0x00, - 0xaa, 0x8d, 0xb6, 0xe8, 0x02, 0xa5, 0xa5, 0x8d, 0xb6, 0xec, 0x02, 0xa5, 0xa5, 0x55, 0x8b, 0xea, - 0x8a, 0x47, 0x16, 0x8a, 0x66, 0x17, 0xab, 0x5d, 0xe8, 0xa1, 0x06, 0x8b, 0xda, 0x5f, 0xc3, 0x55, - 0x8b, 0xea, 0x8a, 0x43, 0x16, 0xc0, 0xe0, 0x04, 0x88, 0x41, 0x16, 0xc7, 0x47, 0x06, 0xe0, 0x00, - 0x83, 0xe9, 0x06, 0x89, 0x4f, 0x04, 0x0b, 0xff, 0x75, 0x18, 0x8d, 0x76, 0x0e, 0x8d, 0x7f, 0x08, - 0x8c, 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, 0x8b, 0xd5, 0x5d, 0x8d, 0xb6, 0x00, 0x03, 0xa5, 0xa5, - 0xa5, 0xc3, 0x8b, 0xcf, 0xd1, 0xe9, 0x8d, 0x76, 0x0e, 0x8d, 0x7f, 0x08, 0x8c, 0xd8, 0x8e, 0xc0, - 0xad, 0x24, 0x7f, 0xab, 0xa5, 0xa5, 0x8b, 0xd5, 0x5d, 0x56, 0x8d, 0xb6, 0x00, 0x03, 0xad, 0x0c, - 0x80, 0xab, 0xa5, 0xa5, 0x5e, 0xad, 0x80, 0xcc, 0x80, 0xab, 0x49, 0xf3, 0xa5, 0xc3, 0x8b, 0x86, - 0x0c, 0x03, 0x86, 0xe0, 0x89, 0x86, 0x14, 0x02, 0x89, 0x86, 0x06, 0x02, 0x8c, 0xd8, 0x8e, 0xc0, - 0x8d, 0xbe, 0x00, 0x02, 0x8d, 0xb6, 0x00, 0x03, 0xb9, 0x03, 0x00, 0xf3, 0xa5, 0xb9, 0x2a, 0x00, - 0xe8, 0x5f, 0x05, 0x72, 0xd8, 0x8d, 0xb6, 0xf2, 0x02, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, - 0xe9, 0xf3, 0xa5, 0xe9, 0x0d, 0x06, 0xeb, 0x6a, 0xb9, 0x26, 0x00, 0xe8, 0x44, 0x05, 0x72, 0xf6, - 0x8d, 0xb6, 0x1c, 0x03, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0xf2, - 0x05, 0x8d, 0x7f, 0x08, 0x8b, 0x4f, 0x04, 0x83, 0xc1, 0x03, 0x80, 0xe1, 0xfe, 0x57, 0xe8, 0x21, - 0x05, 0x5f, 0x8b, 0xd7, 0x72, 0x22, 0x83, 0xe9, 0x08, 0x8d, 0x7f, 0x04, 0x8c, 0xd8, 0x8e, 0xc0, - 0x8b, 0xc1, 0xab, 0x8b, 0x86, 0x22, 0x03, 0xab, 0x8b, 0xf2, 0xd1, 0xe9, 0x49, 0xf3, 0xa5, 0xbe, - 0x01, 0x4c, 0xe8, 0x41, 0xe2, 0xe9, 0xbb, 0x05, 0xc3, 0xb9, 0x26, 0x00, 0xe8, 0xf3, 0x04, 0x72, - 0x11, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0xb6, 0x42, 0x03, 0x8b, 0xfb, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, - 0xa1, 0x05, 0xc3, 0xb9, 0x26, 0x00, 0xe8, 0xf3, 0x04, 0x72, 0xf7, 0x8d, 0xb6, 0x68, 0x03, 0x8b, - 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xc6, 0x86, 0x67, 0x02, 0x01, 0x80, 0xbe, - 0x87, 0x02, 0x01, 0x75, 0x03, 0xe9, 0x74, 0x05, 0x68, 0x6d, 0x31, 0xe9, 0x6e, 0x05, 0xb9, 0x26, - 0x00, 0xe8, 0xc8, 0x04, 0x72, 0xcc, 0x8d, 0xb6, 0x8e, 0x03, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, - 0xd1, 0xe9, 0xf3, 0xa5, 0xc6, 0x86, 0x67, 0x02, 0x01, 0x80, 0xbe, 0x87, 0x02, 0x01, 0x75, 0x03, - 0xe9, 0x49, 0x05, 0x68, 0x6d, 0x31, 0xe9, 0x43, 0x05, 0xb9, 0x18, 0x00, 0xe8, 0x9d, 0x04, 0x72, - 0xa1, 0x8d, 0xb6, 0xb4, 0x03, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, - 0x2a, 0x05, 0x83, 0xc1, 0x1c, 0x56, 0x57, 0x52, 0xe8, 0x81, 0x04, 0x5a, 0x5f, 0x5e, 0x72, 0x53, - 0x56, 0x8c, 0xd8, 0x8e, 0xc0, 0x83, 0xe9, 0x08, 0x8b, 0xc1, 0x8d, 0x7f, 0x04, 0xab, 0xba, 0xe0, - 0x00, 0x8b, 0xc2, 0xab, 0x8d, 0xb6, 0xd4, 0x03, 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, 0x00, 0x03, 0x80, - 0xbe, 0x62, 0x01, 0x01, 0x75, 0x04, 0x8d, 0xb6, 0x00, 0x01, 0xa5, 0xa5, 0xa5, 0x83, 0xe9, 0x0e, - 0x80, 0xbe, 0x63, 0x01, 0x02, 0x75, 0x03, 0x83, 0xe9, 0x04, 0x8b, 0xc1, 0x86, 0xe0, 0xab, 0xb8, - 0x00, 0x08, 0xab, 0x83, 0xe9, 0x04, 0xb8, 0xff, 0x26, 0xab, 0x8b, 0xc1, 0x86, 0xe0, 0xab, 0x5e, - 0xe9, 0xc9, 0x04, 0xeb, 0x69, 0xf6, 0x86, 0x8b, 0x02, 0x01, 0x75, 0x03, 0xe9, 0xfb, 0x04, 0x83, - 0xc1, 0x1a, 0x57, 0x52, 0xe8, 0x15, 0x04, 0x5a, 0x5f, 0x72, 0x53, 0x8c, 0xd8, 0x8e, 0xc0, 0x83, - 0xe9, 0x08, 0x8b, 0xc1, 0x8d, 0x7f, 0x04, 0xab, 0xb9, 0x07, 0x00, 0x8d, 0xb6, 0xec, 0x03, 0xf3, - 0xa5, 0x83, 0xe8, 0x0e, 0x8b, 0xc8, 0x86, 0xe0, 0xab, 0xb8, 0x00, 0x08, 0xab, 0x83, 0xe9, 0x04, - 0x8b, 0xc1, 0xb4, 0x26, 0xab, 0xbe, 0x80, 0x03, 0xb9, 0x20, 0x00, 0xf3, 0xa5, 0xc6, 0x86, 0x8b, - 0x02, 0x00, 0xe9, 0x77, 0x04, 0xb9, 0x44, 0x00, 0xe8, 0xd1, 0x03, 0x72, 0x11, 0x8d, 0xb6, 0x00, - 0x04, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe8, 0x5e, 0x04, 0xc3, 0xb9, - 0x36, 0x00, 0xe8, 0xb7, 0x03, 0x72, 0xf7, 0xff, 0x86, 0x56, 0x02, 0x8d, 0xb6, 0xd2, 0x05, 0x8b, - 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0x33, 0xc0, 0x8d, 0xbe, 0xec, 0x05, 0xab, - 0xab, 0xaa, 0x8d, 0xbe, 0xf4, 0x05, 0xab, 0xab, 0xaa, 0xe9, 0x30, 0x04, 0x8d, 0x4d, 0x3a, 0x57, - 0x53, 0xe8, 0x88, 0x03, 0x5a, 0x5f, 0x72, 0x5b, 0x57, 0xe8, 0x83, 0xfd, 0x8c, 0xd8, 0x8e, 0xc0, - 0xb8, 0x00, 0x26, 0xab, 0x47, 0xb0, 0x22, 0xaa, 0x8d, 0xb6, 0xe8, 0x02, 0xa5, 0xa5, 0x8d, 0xb6, - 0x0e, 0x03, 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, 0x14, 0x03, 0xa5, 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, 0x44, - 0x04, 0xa5, 0xa5, 0x8d, 0xb6, 0x48, 0x04, 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, 0x4e, 0x04, 0xa5, 0x53, - 0x8c, 0xdb, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x66, 0x00, 0xe8, 0x67, 0xdd, 0x8e, 0xc3, 0xab, 0x8e, - 0x46, 0x02, 0x26, 0xa1, 0x64, 0x00, 0xe8, 0x5a, 0xdd, 0x8e, 0xc3, 0xab, 0x5b, 0xe8, 0xcc, 0x03, - 0x8b, 0xda, 0x5f, 0xc3, 0x8d, 0x4d, 0x38, 0x57, 0x53, 0xe8, 0x20, 0x03, 0x5a, 0x5f, 0x72, 0xf3, - 0x57, 0xe8, 0x1b, 0xfd, 0x8c, 0xd8, 0x8e, 0xc0, 0xb8, 0x00, 0x24, 0xab, 0x47, 0xb0, 0x23, 0xaa, - 0x8d, 0xb6, 0xe8, 0x02, 0xa5, 0xa5, 0x8d, 0xb6, 0x18, 0x04, 0xb9, 0x06, 0x00, 0xf3, 0xa5, 0x8d, - 0xb6, 0x5c, 0x04, 0xa5, 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, 0x54, 0x04, 0xa5, 0xa5, 0xa5, 0xa5, 0xe8, - 0x8a, 0x03, 0x8b, 0xda, 0x5f, 0xc3, 0x8d, 0x4d, 0x3e, 0x57, 0x53, 0xe8, 0xde, 0x02, 0x5a, 0x5f, - 0x72, 0x64, 0x57, 0xe8, 0xd9, 0xfc, 0x8c, 0xd8, 0x8e, 0xc0, 0xb8, 0x00, 0x2a, 0xab, 0x47, 0xb0, - 0x24, 0xaa, 0x8d, 0xb6, 0xe8, 0x02, 0xa5, 0xa5, 0x8d, 0xb6, 0x2c, 0x04, 0xb9, 0x0a, 0x00, 0xf3, - 0xa5, 0x8d, 0xb6, 0x4e, 0x04, 0xa5, 0x53, 0x8c, 0xdb, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x66, 0x00, - 0xe8, 0xd0, 0xdc, 0x8e, 0xc3, 0xab, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x64, 0x00, 0xe8, 0xc3, 0xdc, - 0x8e, 0xc3, 0xab, 0x5b, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0xb6, 0x64, 0x04, 0xa5, 0x8b, 0x86, 0xfc, - 0x01, 0x86, 0xc4, 0xab, 0x8d, 0xb6, 0x68, 0x04, 0xa5, 0x8b, 0x86, 0xfa, 0x01, 0x86, 0xc4, 0xab, - 0xe8, 0x19, 0x03, 0x8b, 0xda, 0x5f, 0xc3, 0xb9, 0x3a, 0x00, 0xe8, 0x6f, 0x02, 0x72, 0xf7, 0x8d, - 0xb6, 0x6c, 0x04, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0x80, 0xbe, 0x87, - 0x02, 0x01, 0x75, 0x03, 0xe9, 0xf5, 0x02, 0x68, 0x6d, 0x31, 0xe9, 0xef, 0x02, 0xb9, 0x26, 0x00, - 0xe8, 0x49, 0x02, 0x72, 0xd1, 0xff, 0x86, 0x52, 0x02, 0x8d, 0xb6, 0xa6, 0x04, 0x8b, 0xfb, 0x8c, - 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0x80, 0xbe, 0x87, 0x02, 0x01, 0x75, 0x03, 0xe9, 0xcb, - 0x02, 0x68, 0x6d, 0x31, 0xe9, 0xc5, 0x02, 0xb9, 0x20, 0x00, 0xe8, 0x1f, 0x02, 0x72, 0xa7, 0x8d, - 0xb6, 0xf2, 0x01, 0x8d, 0xbe, 0xe6, 0x04, 0x8c, 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, - 0xcc, 0x04, 0x8b, 0xfb, 0xd1, 0xe9, 0xf3, 0xa5, 0x80, 0xbe, 0x87, 0x02, 0x01, 0x75, 0x03, 0xe9, - 0x9a, 0x02, 0x68, 0x6d, 0x31, 0xe9, 0x94, 0x02, 0x89, 0x86, 0x06, 0x05, 0x86, 0xc4, 0x89, 0x86, - 0x12, 0x02, 0xb9, 0x2a, 0x00, 0xe8, 0xe4, 0x01, 0x72, 0x18, 0x8d, 0xb6, 0xec, 0x04, 0x8b, 0xfb, - 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0x80, 0xbe, 0x87, 0x02, 0x01, 0x75, 0x07, 0xe9, - 0x6a, 0x02, 0xe9, 0x5a, 0x01, 0x90, 0x68, 0x6d, 0x31, 0xe9, 0x60, 0x02, 0xb9, 0x18, 0x00, 0xe8, - 0xba, 0x01, 0x73, 0x03, 0xe9, 0x3f, 0xff, 0x8d, 0xb6, 0x8a, 0x05, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, - 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0x44, 0x02, 0xb9, 0x24, 0x00, 0xe8, 0x9e, 0x01, 0x73, 0x03, - 0xe9, 0x23, 0xff, 0x8b, 0x86, 0x34, 0x05, 0x86, 0xc4, 0x89, 0x86, 0x2a, 0x02, 0x8d, 0xb6, 0x16, - 0x05, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0x1e, 0x02, 0xb9, 0x1c, - 0x00, 0xe8, 0x78, 0x01, 0x73, 0x03, 0xe9, 0xfd, 0xfe, 0x8d, 0xb6, 0x3a, 0x05, 0x8b, 0xfb, 0x8c, - 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0x02, 0x02, 0xb9, 0x18, 0x00, 0xe8, 0x5c, 0x01, - 0x73, 0x03, 0xe9, 0xe1, 0xfe, 0x8d, 0xb6, 0x56, 0x05, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, - 0xe9, 0xf3, 0xa5, 0xe9, 0xe6, 0x01, 0xb9, 0x1c, 0x00, 0x50, 0xe8, 0x3f, 0x01, 0x58, 0x73, 0x03, - 0xe9, 0xc3, 0xfe, 0x8d, 0xb6, 0x6e, 0x05, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, - 0xa5, 0xe9, 0xc8, 0x01, 0xb9, 0x18, 0x00, 0xe8, 0x22, 0x01, 0x73, 0x03, 0xe9, 0xa7, 0xfe, 0x8d, - 0xb6, 0xa2, 0x05, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0xac, 0x01, - 0xb9, 0x18, 0x00, 0xe8, 0x06, 0x01, 0x73, 0x03, 0xe9, 0x8b, 0xfe, 0x8d, 0xb6, 0xba, 0x05, 0x8b, - 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0x90, 0x01, 0x8b, 0x4f, 0x04, 0x53, - 0xe8, 0xe9, 0x00, 0x5e, 0x72, 0x17, 0x89, 0x9e, 0x3c, 0x02, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, - 0xd1, 0xe9, 0xf3, 0xa5, 0xc7, 0x86, 0x3e, 0x02, 0x01, 0x00, 0xe9, 0x6f, 0x01, 0xe9, 0x61, 0x12, - 0xb9, 0x18, 0x00, 0xe8, 0xc6, 0x00, 0x8d, 0xb6, 0xb4, 0x03, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, - 0xd1, 0xe9, 0xf3, 0xa5, 0x33, 0xc0, 0x8d, 0x7f, 0x08, 0xb9, 0x06, 0x00, 0xf3, 0xab, 0xe9, 0x4b, - 0x01, 0x53, 0x8b, 0x9e, 0xb0, 0x01, 0x8b, 0xb6, 0xae, 0x01, 0x3b, 0xde, 0x74, 0x15, 0x8a, 0x47, - 0x17, 0xf6, 0x44, 0x0e, 0x80, 0x75, 0x0e, 0x38, 0x44, 0x17, 0x75, 0x09, 0x8b, 0x74, 0x02, 0x89, - 0xb6, 0xae, 0x01, 0xeb, 0x1a, 0x8b, 0xfe, 0x8b, 0x74, 0x02, 0x3b, 0xde, 0x74, 0x11, 0xf6, 0x44, - 0x0e, 0x80, 0x75, 0xf1, 0x38, 0x44, 0x17, 0x75, 0xec, 0x8b, 0x44, 0x02, 0x89, 0x45, 0x02, 0x5b, - 0xc3, 0xe8, 0x89, 0xd8, 0xc6, 0x86, 0x87, 0x02, 0x00, 0x8d, 0xb6, 0xa6, 0x01, 0x8d, 0xbe, 0xac, - 0x01, 0x8c, 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x40, 0x00, - 0x00, 0x16, 0x8d, 0x9e, 0xa8, 0x12, 0x89, 0x9e, 0xa8, 0x01, 0x89, 0x9e, 0xaa, 0x01, 0xc7, 0x07, - 0x30, 0x80, 0xc7, 0x47, 0x04, 0x00, 0x00, 0x83, 0xc3, 0x08, 0x89, 0x9e, 0xa6, 0x01, 0xc6, 0x86, - 0x8a, 0x02, 0x01, 0x83, 0xc1, 0x02, 0xeb, 0x4a, 0x8b, 0x9e, 0xac, 0x01, 0x8b, 0xb6, 0xae, 0x01, - 0xeb, 0x29, 0x80, 0xbe, 0x87, 0x02, 0x01, 0x74, 0xa8, 0x8d, 0x96, 0xa8, 0x15, 0x8d, 0xbe, 0xa8, - 0x12, 0x8b, 0x9e, 0xa6, 0x01, 0x8b, 0xb6, 0xa8, 0x01, 0xeb, 0x18, 0x90, 0x8b, 0x9e, 0xa6, 0x01, - 0x8b, 0xb6, 0xa8, 0x01, 0x80, 0xbe, 0x87, 0x02, 0x01, 0x75, 0xcd, 0x8d, 0x96, 0xa8, 0x12, 0x8d, - 0xbe, 0xa8, 0x09, 0x83, 0xc1, 0x02, 0x3b, 0xde, 0x73, 0x17, 0x8b, 0xc6, 0x2b, 0xc3, 0x3b, 0xc1, - 0x72, 0x25, 0xc7, 0x07, 0x00, 0x00, 0x83, 0xc3, 0x02, 0xc7, 0x07, 0x00, 0x00, 0x83, 0xe9, 0x02, - 0xc3, 0x8b, 0xc2, 0x2b, 0xc3, 0x3b, 0xc1, 0x72, 0x02, 0xeb, 0xe7, 0x8b, 0xdf, 0x8b, 0xc6, 0x2b, - 0xc3, 0x3b, 0xc1, 0x72, 0x02, 0xeb, 0xdb, 0x3b, 0xb6, 0xae, 0x01, 0x74, 0x11, 0x80, 0xbe, 0x62, - 0x02, 0x01, 0x75, 0x05, 0x83, 0x8e, 0xe6, 0x02, 0x02, 0xe8, 0x82, 0x01, 0xf9, 0xc3, 0x8b, 0x74, - 0x02, 0x89, 0xb6, 0xae, 0x01, 0x3b, 0xdd, 0x74, 0x04, 0x3b, 0xde, 0x77, 0xc4, 0x8b, 0xc6, 0x2b, - 0xc3, 0x3b, 0xc1, 0x72, 0xe9, 0x89, 0xb6, 0xae, 0x01, 0xeb, 0xa7, 0x8b, 0xb6, 0xb0, 0x01, 0x89, - 0x5c, 0x02, 0x80, 0x4c, 0x05, 0x80, 0x89, 0x9e, 0xb0, 0x01, 0x03, 0x5f, 0x04, 0x83, 0xc3, 0x06, - 0x89, 0x9e, 0xac, 0x01, 0xc6, 0x86, 0x8c, 0x02, 0x01, 0xc3, 0xeb, 0xdf, 0x80, 0xbe, 0x87, 0x02, - 0x01, 0x75, 0xf7, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x4c, 0x00, 0x0c, 0x02, 0x80, 0xbe, 0x8a, 0x02, - 0x01, 0x74, 0x45, 0x8b, 0xb6, 0xaa, 0x01, 0x89, 0x5c, 0x02, 0x80, 0x4c, 0x05, 0x80, 0x83, 0xc8, - 0x04, 0x25, 0xff, 0xf7, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x4c, 0x00, 0x89, 0x9e, 0xaa, 0x01, 0x03, - 0x5f, 0x04, 0x83, 0xc3, 0x06, 0x89, 0x9e, 0xa6, 0x01, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x4c, - 0x00, 0x0c, 0x02, 0x8b, 0x9e, 0xaa, 0x01, 0xc7, 0x07, 0x00, 0x00, 0x26, 0x89, 0x1e, 0x6c, 0x00, - 0x83, 0xc8, 0x08, 0x25, 0xff, 0xf7, 0xeb, 0xcc, 0x8e, 0x46, 0x02, 0x89, 0x9e, 0xa8, 0x01, 0x26, - 0x89, 0x1e, 0x6c, 0x00, 0x83, 0xc8, 0x08, 0x25, 0xff, 0xf7, 0xc6, 0x86, 0x8a, 0x02, 0x00, 0xeb, - 0xb3, 0x53, 0xf6, 0x86, 0x87, 0x02, 0x01, 0x74, 0x13, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x4c, - 0x00, 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0xe8, 0x65, 0xfe, 0x5b, 0xc3, 0xe9, 0xac, - 0x00, 0x90, 0x80, 0xbe, 0x87, 0x02, 0x00, 0x75, 0xf5, 0x50, 0xfa, 0x8d, 0xb6, 0xac, 0x01, 0x8d, - 0xbe, 0xa6, 0x01, 0x8c, 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, 0x80, 0xbe, 0x63, 0x01, 0x01, 0x75, - 0x16, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x40, 0x00, 0x00, 0x02, 0x8e, 0x46, 0x02, 0x26, 0x81, - 0x26, 0x40, 0x00, 0xff, 0xe3, 0xeb, 0x27, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x40, 0x00, 0x00, - 0x02, 0xf6, 0x86, 0xaf, 0x02, 0x01, 0x74, 0x0c, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x40, 0x00, - 0x00, 0x1c, 0xeb, 0x0a, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x40, 0x00, 0xff, 0xe3, 0x33, 0xc0, - 0x89, 0x86, 0xae, 0x01, 0x40, 0x88, 0x86, 0x87, 0x02, 0x58, 0xf6, 0x86, 0x58, 0x02, 0x01, 0x74, - 0x0a, 0xe8, 0x5c, 0xe0, 0x8e, 0x46, 0x02, 0x26, 0xa2, 0x5c, 0x00, 0x8b, 0x9e, 0xa8, 0x01, 0x83, - 0x3f, 0x00, 0x74, 0x03, 0xe8, 0x90, 0x00, 0xf6, 0x86, 0x8c, 0x02, 0x01, 0x74, 0x19, 0x8e, 0x46, - 0x02, 0x26, 0x89, 0x1e, 0x6c, 0x00, 0xc6, 0x86, 0x8c, 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, - 0x0e, 0x4c, 0x00, 0x08, 0xfb, 0xeb, 0x06, 0xc6, 0x86, 0x8a, 0x02, 0x01, 0xfb, 0xc3, 0x56, 0x8d, - 0xb6, 0xa8, 0x09, 0xc7, 0x86, 0xa6, 0x01, 0xb0, 0x09, 0x01, 0xae, 0xa6, 0x01, 0x89, 0xb6, 0xa8, - 0x01, 0x89, 0xb6, 0xaa, 0x01, 0xc7, 0x04, 0x30, 0x80, 0xc7, 0x44, 0x04, 0x00, 0x00, 0xc6, 0x86, - 0x8a, 0x02, 0x01, 0x5e, 0xc3, 0xff, 0xa4, 0x1c, 0x04, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x32, - 0x80, 0x7e, 0x06, 0x46, 0x75, 0x1c, 0xf6, 0x86, 0x7a, 0x02, 0x01, 0x74, 0x15, 0xff, 0x8e, 0xd6, - 0x02, 0x75, 0x0f, 0xc6, 0x86, 0x7a, 0x02, 0x00, 0xc6, 0x86, 0x6f, 0x02, 0x00, 0xe8, 0x36, 0xdd, - 0xeb, 0x10, 0x83, 0xfe, 0x10, 0x74, 0x07, 0x83, 0xfe, 0x0e, 0x74, 0x02, 0xeb, 0x04, 0xff, 0xa4, - 0x1c, 0x04, 0xc3, 0x8b, 0x9e, 0xa8, 0x01, 0x8b, 0x07, 0xfb, 0xa9, 0x00, 0x80, 0x75, 0x46, 0x8b, - 0x77, 0x17, 0x81, 0xe6, 0xff, 0x00, 0xf7, 0x86, 0x3e, 0x02, 0x01, 0x00, 0x74, 0x1b, 0x3b, 0x9e, - 0x3c, 0x02, 0x75, 0x15, 0x89, 0x86, 0xcc, 0x15, 0x50, 0x53, 0x56, 0xe8, 0x23, 0x0f, 0x5e, 0x5b, - 0x58, 0xc7, 0x86, 0x3e, 0x02, 0x00, 0x00, 0xeb, 0x18, 0xf7, 0x46, 0x14, 0xff, 0xff, 0x74, 0x11, - 0x83, 0xfe, 0x2a, 0x77, 0x0c, 0xd1, 0xe6, 0x68, 0xad, 0x34, 0xff, 0x66, 0x14, 0x5b, 0x83, 0xc4, - 0x02, 0x81, 0x0f, 0x00, 0x80, 0xfa, 0xf6, 0x47, 0x05, 0x80, 0x74, 0x1a, 0x8b, 0x5f, 0x02, 0x89, - 0x9e, 0xa8, 0x01, 0xf7, 0x07, 0x10, 0x00, 0x74, 0x0d, 0xff, 0x86, 0x3a, 0x01, 0x83, 0xbe, 0x3a, - 0x01, 0x06, 0x77, 0x0f, 0xeb, 0x91, 0xc6, 0x86, 0xb8, 0x01, 0x00, 0xc7, 0x86, 0x3a, 0x01, 0x00, - 0x00, 0xfb, 0xc3, 0xe8, 0x79, 0xd8, 0xf7, 0xc6, 0xff, 0xff, 0x74, 0xea, 0xc7, 0x44, 0x02, 0x03, - 0x00, 0xc6, 0x86, 0xb8, 0x01, 0x01, 0x8d, 0x7e, 0x16, 0xe8, 0x81, 0xd8, 0xeb, 0xdd, 0xa9, 0x20, - 0x00, 0x75, 0x74, 0xf7, 0x47, 0x04, 0x00, 0x80, 0x74, 0x05, 0xe8, 0x08, 0x00, 0x72, 0x9f, 0x53, - 0x68, 0xa9, 0x34, 0xff, 0xe6, 0x8a, 0x47, 0x17, 0x8b, 0xfb, 0x8b, 0x7d, 0x02, 0x38, 0x45, 0x17, - 0x74, 0x09, 0xf7, 0x45, 0x04, 0x00, 0x80, 0x75, 0xf1, 0xf8, 0xc3, 0xf9, 0xc3, 0xa9, 0x20, 0x00, - 0x75, 0x05, 0xa9, 0x00, 0x10, 0x75, 0x0c, 0x33, 0xc9, 0xa9, 0x05, 0x00, 0x75, 0x0a, 0xa9, 0x0a, - 0x04, 0x74, 0x05, 0x8b, 0x0d, 0xe3, 0x01, 0x49, 0x89, 0x0d, 0xc3, 0x53, 0x8b, 0x4f, 0x04, 0x80, - 0xe5, 0x7f, 0x89, 0x4f, 0x04, 0x83, 0xc1, 0x06, 0xe8, 0xc1, 0xfc, 0x72, 0x19, 0x5e, 0x56, 0x8b, - 0xfb, 0xd1, 0xe9, 0x83, 0xe9, 0x02, 0x83, 0xc6, 0x04, 0x83, 0xc7, 0x04, 0x8c, 0xd8, 0x8e, 0xc0, - 0xf3, 0xa5, 0xe8, 0x47, 0xfd, 0xf8, 0x5b, 0xc3, 0x80, 0x7e, 0x08, 0x02, 0x75, 0x0b, 0xa9, 0x20, - 0x00, 0x75, 0x06, 0xc7, 0x86, 0xcc, 0x01, 0x01, 0x00, 0xc3, 0x8a, 0x56, 0x06, 0x80, 0xfa, 0x02, - 0x74, 0x17, 0x80, 0xfa, 0x44, 0x74, 0x12, 0x83, 0x7e, 0x08, 0x08, 0x75, 0x18, 0x80, 0xfa, 0x0c, - 0x74, 0x07, 0x80, 0xfa, 0x0e, 0x74, 0x02, 0xeb, 0x0b, 0xa9, 0x20, 0x00, 0x75, 0x06, 0xb8, 0x01, - 0x00, 0xe8, 0x7d, 0xeb, 0xc3, 0xb9, 0x05, 0x00, 0xa9, 0x20, 0x00, 0x74, 0x09, 0xb9, 0x08, 0x00, - 0xa9, 0x0f, 0x00, 0x75, 0x01, 0xc3, 0xff, 0x86, 0xce, 0x02, 0x83, 0xbe, 0xce, 0x02, 0x02, 0x72, - 0x06, 0x8b, 0xc1, 0xe8, 0x5b, 0xeb, 0xc3, 0xe8, 0x9f, 0xf7, 0xc3, 0x53, 0x68, 0xa9, 0x34, 0xe9, - 0x63, 0xf8, 0x80, 0x7e, 0x06, 0x0c, 0x75, 0x1d, 0xa9, 0x00, 0x10, 0x75, 0xee, 0xa9, 0x20, 0x00, - 0x75, 0x00, 0xa8, 0x0a, 0x75, 0x10, 0xff, 0x86, 0xc4, 0x02, 0x83, 0xbe, 0xc4, 0x02, 0x04, 0x72, - 0xda, 0xc6, 0x46, 0x07, 0x0e, 0xc3, 0x83, 0xbe, 0xc2, 0x02, 0x04, 0x73, 0xf8, 0xbe, 0x31, 0x4c, - 0xe8, 0x33, 0xd9, 0xeb, 0xf0, 0x8d, 0xbe, 0xc8, 0x02, 0xe8, 0x11, 0xff, 0x0b, 0xc9, 0x74, 0xe5, - 0x53, 0x68, 0xa9, 0x34, 0xe9, 0x1e, 0xf8, 0x8d, 0xbe, 0xc0, 0x02, 0xe8, 0xff, 0xfe, 0x0b, 0xc9, - 0x74, 0x03, 0xe9, 0x16, 0xff, 0xc3, 0x53, 0x8a, 0x56, 0x06, 0x80, 0xfa, 0x02, 0x74, 0x17, 0x80, - 0xfa, 0x44, 0x74, 0x12, 0x80, 0x7e, 0x08, 0x08, 0x75, 0x34, 0x80, 0xfa, 0x0c, 0x74, 0x07, 0x80, - 0xfa, 0x0e, 0x74, 0x02, 0xeb, 0x28, 0xa9, 0x20, 0x00, 0x74, 0x25, 0x80, 0xbe, 0xfe, 0x00, 0x02, - 0x74, 0x1c, 0x8b, 0x96, 0x66, 0x01, 0x4a, 0x89, 0x96, 0x66, 0x01, 0x83, 0xfa, 0x01, 0x77, 0x1b, - 0xbe, 0x19, 0x4c, 0xe8, 0xd0, 0xd8, 0xc6, 0x86, 0x8a, 0x02, 0x01, 0xe8, 0xfb, 0xf6, 0x5b, 0xc3, - 0xfe, 0x8e, 0x68, 0x01, 0x75, 0x05, 0xe8, 0x15, 0x20, 0xeb, 0xf3, 0xbe, 0x19, 0x4c, 0xe8, 0xb5, - 0xd8, 0x8b, 0xb6, 0x64, 0x01, 0xb9, 0xe8, 0x03, 0xc6, 0x86, 0x8a, 0x02, 0x01, 0xfa, 0xe8, 0xf1, - 0xf6, 0xeb, 0xdb, 0xa9, 0x20, 0x00, 0x74, 0x41, 0xa9, 0x0f, 0x00, 0x75, 0x25, 0xc6, 0x86, 0x69, - 0x02, 0x01, 0xc6, 0x86, 0x6a, 0x02, 0x01, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0x77, 0x0e, - 0x8d, 0xbe, 0xf2, 0x01, 0xab, 0xab, 0xab, 0x8b, 0x86, 0x0a, 0x02, 0x83, 0x8e, 0x0a, 0x02, 0x40, - 0xeb, 0x17, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xf2, 0x01, 0x8c, 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, - 0x8b, 0x86, 0x0a, 0x02, 0x83, 0xa6, 0x0a, 0x02, 0xbf, 0x33, 0x86, 0x0a, 0x02, 0x74, 0x05, 0xc6, - 0x86, 0x89, 0x02, 0x01, 0xc3, 0xfb, 0xc3, 0xff, 0xa4, 0xc0, 0x03, 0x53, 0x56, 0x8b, 0xc7, 0xf7, - 0x07, 0x00, 0x10, 0x75, 0x18, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xd4, 0x01, 0x8c, 0xd9, 0x8e, 0xc1, - 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x8b, 0xf8, 0x75, 0x0c, 0x81, 0x0f, 0x00, 0x10, 0x80, 0x7e, 0x06, - 0x44, 0x74, 0x47, 0xeb, 0x42, 0x8b, 0x49, 0x16, 0x80, 0xf9, 0x00, 0x74, 0x05, 0x80, 0xf9, 0x03, - 0x75, 0x38, 0x8d, 0xbe, 0x16, 0x03, 0x83, 0x3d, 0x00, 0x75, 0x0c, 0x83, 0x7d, 0x02, 0x00, 0x75, - 0x06, 0x83, 0x7d, 0x04, 0x00, 0x74, 0x23, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0x16, 0x03, 0x8c, 0xd9, - 0x8e, 0xc1, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x8b, 0xf8, 0x74, 0x0f, 0xc7, 0x86, 0x2e, 0x02, 0x0e, - 0x00, 0xb8, 0x0b, 0x00, 0xe8, 0xca, 0xe9, 0x5e, 0x5b, 0xc3, 0x8b, 0xf8, 0x5e, 0x5b, 0xff, 0xa4, - 0xec, 0x03, 0xff, 0x86, 0x4c, 0x02, 0xc7, 0x86, 0x2e, 0x02, 0x06, 0x00, 0x8c, 0xd8, 0x8e, 0xc0, - 0x8d, 0xbe, 0x00, 0x02, 0x8d, 0x77, 0x0e, 0xb9, 0x03, 0x00, 0xf3, 0xa5, 0x8b, 0xb6, 0x1a, 0x06, - 0x8b, 0x04, 0x86, 0xe0, 0x89, 0x86, 0x06, 0x02, 0x89, 0x86, 0x16, 0x02, 0x8b, 0xb6, 0x1f, 0x06, - 0x8b, 0x04, 0x89, 0x86, 0x1a, 0x02, 0x8b, 0x44, 0x02, 0x89, 0x86, 0x1c, 0x02, 0x8b, 0x44, 0x04, - 0x89, 0x86, 0x1e, 0x02, 0x8b, 0xb6, 0x24, 0x06, 0x8b, 0x04, 0x89, 0x86, 0x24, 0x02, 0x8b, 0x44, - 0x02, 0x89, 0x86, 0x26, 0x02, 0x8b, 0xb6, 0x1a, 0x06, 0x8b, 0x04, 0x80, 0x7e, 0x08, 0x06, 0x75, - 0x56, 0xf7, 0x07, 0x00, 0x10, 0x74, 0x14, 0xf6, 0x47, 0x06, 0x08, 0x75, 0x0b, 0x80, 0xbe, 0x63, - 0x02, 0x00, 0x75, 0x04, 0xc6, 0x46, 0x09, 0x04, 0xe9, 0x1b, 0x01, 0x3b, 0x86, 0x0c, 0x03, 0x77, - 0xf7, 0x80, 0xbe, 0x62, 0x02, 0x01, 0x74, 0x10, 0x80, 0x7e, 0x06, 0x0c, 0x75, 0xea, 0xc6, 0x46, - 0x07, 0x10, 0xc6, 0x46, 0x09, 0x1e, 0xeb, 0xe0, 0x80, 0xbe, 0x63, 0x02, 0x00, 0x75, 0xd9, 0xc6, - 0x46, 0x09, 0x0a, 0xf6, 0x86, 0x0b, 0x02, 0x10, 0x74, 0xce, 0x80, 0xa6, 0x0b, 0x02, 0x6f, 0xc6, - 0x86, 0x89, 0x02, 0x01, 0xe9, 0xdf, 0x00, 0x80, 0x7e, 0x08, 0x0a, 0x75, 0x5b, 0xc6, 0x86, 0x58, - 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x4c, 0x00, 0xbf, 0xbe, 0xf5, 0x4b, 0xe8, 0x05, - 0xd7, 0x8b, 0xb6, 0x1f, 0x06, 0x8d, 0xbe, 0x00, 0x03, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x03, 0x00, - 0xf3, 0xa7, 0x75, 0x21, 0x83, 0xf8, 0x01, 0x74, 0x1c, 0xff, 0x8e, 0xba, 0x02, 0x75, 0x13, 0xf6, - 0x86, 0x5c, 0x02, 0x01, 0x75, 0x0c, 0xc6, 0x86, 0x5c, 0x02, 0x01, 0xc6, 0x46, 0x09, 0x08, 0xe9, - 0x94, 0x00, 0xe9, 0x91, 0x00, 0xc7, 0x86, 0xba, 0x02, 0x08, 0x00, 0x83, 0xf8, 0x01, 0x75, 0x0a, - 0xc7, 0x86, 0xb8, 0x02, 0x02, 0x00, 0xeb, 0x7e, 0xeb, 0x2e, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0x16, - 0x03, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x75, 0xe4, 0xff, 0x8e, 0xb8, 0x02, - 0x75, 0x14, 0xc7, 0x86, 0xb8, 0x02, 0x02, 0x00, 0xc6, 0x86, 0x58, 0x02, 0x01, 0x8e, 0x46, 0x02, - 0x26, 0x83, 0x0e, 0x4c, 0x00, 0x40, 0xeb, 0x4e, 0x80, 0xbe, 0x62, 0x02, 0x00, 0x74, 0x0c, 0x80, - 0x7e, 0x08, 0x08, 0x74, 0x41, 0xc6, 0x46, 0x09, 0x0a, 0xeb, 0x3b, 0xb7, 0x10, 0x8a, 0x5e, 0x06, - 0x80, 0xfb, 0x06, 0x74, 0x1f, 0x80, 0xfb, 0x08, 0x74, 0x1a, 0x80, 0xfb, 0x04, 0x74, 0x15, 0x80, - 0xfb, 0x0c, 0x74, 0x10, 0x80, 0xfb, 0x0a, 0x75, 0x07, 0xc6, 0x86, 0x5f, 0x02, 0x00, 0xeb, 0x04, - 0xb7, 0x12, 0xeb, 0x12, 0x88, 0x7e, 0x07, 0x80, 0xff, 0x12, 0x75, 0x04, 0xc6, 0x46, 0x09, 0x1e, - 0xb8, 0x07, 0x00, 0xe8, 0x2b, 0xe8, 0xc3, 0xff, 0x86, 0x4c, 0x02, 0xc7, 0x86, 0x2e, 0x02, 0x06, - 0x00, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0xbe, 0x00, 0x02, 0x8d, 0x77, 0x0e, 0xb9, 0x03, 0x00, 0xf3, - 0xa5, 0x80, 0x7e, 0x06, 0x48, 0x74, 0x08, 0xb8, 0x06, 0x00, 0xe8, 0x04, 0xe8, 0xeb, 0x37, 0xf6, - 0x86, 0x72, 0x02, 0x01, 0x74, 0x26, 0x80, 0x7e, 0x08, 0x16, 0x75, 0x20, 0xc6, 0x46, 0x09, 0x1a, - 0xc6, 0x86, 0x73, 0x02, 0x00, 0xc6, 0x86, 0x6c, 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, - 0x4c, 0x00, 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0xeb, 0x0a, 0x80, 0x7e, 0x08, 0x18, - 0x75, 0x04, 0xc6, 0x46, 0x09, 0x1a, 0xc3, 0x8a, 0x4e, 0x06, 0x80, 0xbe, 0xac, 0x02, 0x01, 0x74, - 0x02, 0xeb, 0x06, 0xb8, 0x06, 0x00, 0xe8, 0xb8, 0xe7, 0xc3, 0xe9, 0x8e, 0x00, 0xeb, 0x6e, 0xeb, - 0x64, 0x80, 0x7e, 0x06, 0x42, 0x75, 0xf3, 0x8b, 0x47, 0x1a, 0x83, 0xf8, 0x00, 0x75, 0xee, 0x80, - 0xbe, 0xfe, 0x00, 0x02, 0x74, 0xe9, 0xf6, 0x86, 0x78, 0x02, 0x01, 0x74, 0x29, 0xc6, 0x86, 0x78, - 0x02, 0x00, 0xc6, 0x86, 0xb0, 0x02, 0x01, 0xc7, 0x86, 0x34, 0x05, 0x00, 0x02, 0xc7, 0x86, 0xd8, - 0x02, 0x05, 0x00, 0xbe, 0xa9, 0x4c, 0xe8, 0x8d, 0xd5, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x08, 0x74, - 0x03, 0xe8, 0xb4, 0xf6, 0xeb, 0x45, 0xf6, 0x86, 0x82, 0x02, 0x01, 0x75, 0x18, 0xf7, 0x86, 0xf4, - 0x00, 0x00, 0x10, 0x74, 0x10, 0xb8, 0x02, 0x00, 0xe8, 0x9a, 0x11, 0xc6, 0x46, 0x09, 0x1e, 0xc6, - 0x46, 0x07, 0x02, 0xeb, 0x26, 0xb8, 0x06, 0x00, 0xe8, 0x46, 0xe7, 0xeb, 0x1e, 0x3d, 0x00, 0x02, - 0x75, 0x10, 0xc6, 0x86, 0x7b, 0x02, 0x01, 0xe8, 0xf1, 0x06, 0xbe, 0x91, 0x4c, 0xe8, 0x46, 0xd5, - 0xeb, 0x09, 0x3d, 0x00, 0x04, 0x75, 0x04, 0xc6, 0x46, 0x07, 0x4a, 0xc3, 0xc7, 0x86, 0x2e, 0x02, - 0x02, 0x00, 0x80, 0x7e, 0x06, 0x46, 0x75, 0x2b, 0x8b, 0x47, 0x1a, 0x83, 0xf8, 0x00, 0x75, 0x10, - 0xc6, 0x46, 0x07, 0x48, 0x80, 0x7e, 0x08, 0x1c, 0x75, 0x19, 0xc6, 0x46, 0x09, 0x16, 0xeb, 0x13, - 0x86, 0xc4, 0x3d, 0x20, 0x80, 0x75, 0x0c, 0xc7, 0x86, 0x2e, 0x02, 0x11, 0x00, 0xb8, 0x08, 0x00, - 0xe8, 0xee, 0xe6, 0xc3, 0xc7, 0x86, 0x2e, 0x02, 0x0f, 0x00, 0x80, 0x7e, 0x06, 0x44, 0x74, 0x06, - 0x80, 0x7e, 0x06, 0x42, 0x75, 0x08, 0xb8, 0x06, 0x00, 0xe8, 0xd5, 0xe6, 0xeb, 0x0d, 0xf6, 0x86, - 0x73, 0x02, 0x01, 0x74, 0x06, 0xbe, 0x9d, 0x4c, 0xe8, 0xdb, 0xd4, 0xc3, 0x80, 0x7e, 0x06, 0x44, - 0x75, 0x14, 0xe8, 0xea, 0xd2, 0xc7, 0x44, 0x02, 0x02, 0x00, 0x8d, 0x7e, 0x16, 0xe8, 0xfd, 0xd2, - 0xbe, 0x19, 0x4c, 0xe8, 0x72, 0xd5, 0xc3, 0xf7, 0x86, 0xf6, 0x00, 0x40, 0x00, 0x74, 0x18, 0xf7, - 0x86, 0xf4, 0x00, 0x00, 0x20, 0x74, 0x10, 0x80, 0x7e, 0x06, 0x08, 0x72, 0x0a, 0x80, 0x7e, 0x06, - 0x0e, 0x77, 0x04, 0xc6, 0x46, 0x07, 0x14, 0xc3, 0x80, 0x7e, 0x06, 0x44, 0x75, 0x2e, 0xff, 0x8e, - 0x66, 0x01, 0x75, 0x1d, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x64, 0x00, 0xfd, 0xf7, 0x86, 0x12, - 0x01, 0x00, 0x84, 0x74, 0x06, 0xc6, 0x46, 0x07, 0x4e, 0xeb, 0x11, 0xc6, 0x46, 0x07, 0x46, 0xeb, - 0x0b, 0xc6, 0x86, 0x77, 0x02, 0x01, 0xb9, 0x5a, 0x00, 0xe8, 0x19, 0xf3, 0xc3, 0x80, 0x7e, 0x06, - 0x44, 0x75, 0x1f, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x64, 0x00, 0x02, 0xc6, 0x86, 0x76, 0x02, - 0x00, 0xbe, 0x19, 0x4c, 0xe8, 0x4f, 0xd4, 0xb9, 0x5a, 0x00, 0xc6, 0x86, 0x8b, 0x02, 0x01, 0xe8, - 0xf3, 0xf2, 0xc3, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x72, 0x18, 0x8a, 0x4e, 0x06, 0x80, 0xf9, 0x44, - 0x74, 0x0a, 0x80, 0xf9, 0x46, 0x74, 0x05, 0x80, 0xf9, 0x48, 0x75, 0x06, 0xb8, 0x03, 0x00, 0xe8, - 0x0f, 0xe6, 0xc3, 0xff, 0x86, 0x50, 0x02, 0xc7, 0x86, 0x2e, 0x02, 0x0b, 0x00, 0x8a, 0x86, 0x58, - 0x02, 0x88, 0x86, 0x84, 0x02, 0xc7, 0x86, 0xcc, 0x02, 0x00, 0x00, 0xc6, 0x86, 0x65, 0x02, 0x00, - 0x83, 0x8e, 0x0a, 0x02, 0x20, 0x81, 0xa6, 0x0a, 0x02, 0xff, 0x2f, 0xc6, 0x86, 0x89, 0x02, 0x01, - 0xf6, 0x86, 0x58, 0x02, 0x01, 0x74, 0x38, 0xc6, 0x86, 0x84, 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, - 0x81, 0x26, 0x64, 0x00, 0xff, 0x7f, 0x80, 0x7e, 0x0a, 0x00, 0x75, 0x0a, 0xc6, 0x86, 0x6d, 0x02, - 0x00, 0xc6, 0x86, 0x6f, 0x02, 0x00, 0x8a, 0xa6, 0x84, 0x02, 0x88, 0xa6, 0x58, 0x02, 0xe8, 0x05, - 0xd6, 0x88, 0x86, 0x58, 0x02, 0xc6, 0x46, 0x09, 0x0c, 0xc7, 0x86, 0xca, 0x01, 0x00, 0x01, 0x80, - 0x7e, 0x06, 0x04, 0x75, 0x04, 0xc6, 0x46, 0x07, 0x06, 0x80, 0x7e, 0x08, 0x02, 0x75, 0x04, 0xc6, - 0x46, 0x09, 0x0c, 0x80, 0x7e, 0x08, 0x06, 0x74, 0x05, 0xc6, 0x86, 0x5e, 0x02, 0x01, 0x8d, 0x77, - 0x0e, 0x8d, 0xbe, 0x00, 0x03, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x06, 0x00, 0xf3, 0xa6, 0x74, 0x08, - 0x77, 0x03, 0xe9, 0x95, 0x00, 0xe9, 0xfe, 0x00, 0xf6, 0x47, 0x06, 0x08, 0x75, 0x59, 0x80, 0x7e, - 0x08, 0x04, 0x75, 0x53, 0x8b, 0xb6, 0x2a, 0x06, 0x8d, 0xbe, 0x16, 0x03, 0x8c, 0xd9, 0x8e, 0xc1, - 0xb9, 0x03, 0x00, 0xb8, 0x01, 0x00, 0xf3, 0xa7, 0x74, 0x02, 0xeb, 0x3e, 0xff, 0x86, 0xbe, 0x02, - 0x83, 0xbe, 0xbe, 0x02, 0x03, 0x72, 0x30, 0x83, 0xbe, 0xbc, 0x02, 0x03, 0x72, 0x29, 0xc6, 0x46, - 0x09, 0x02, 0xc6, 0x86, 0x84, 0x02, 0x01, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x64, 0x00, 0x00, - 0x80, 0x8a, 0x86, 0x58, 0x02, 0x8a, 0xa6, 0x84, 0x02, 0x88, 0xa6, 0x58, 0x02, 0xe8, 0x66, 0xd5, - 0x88, 0x86, 0x58, 0x02, 0xe8, 0x80, 0xf3, 0xe9, 0xec, 0x00, 0x80, 0x7e, 0x0a, 0x00, 0x75, 0x1d, - 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xc6, 0x86, 0x6f, 0x02, 0x00, 0x8a, 0x86, 0x58, 0x02, 0x8a, 0xa6, - 0x84, 0x02, 0x88, 0xa6, 0x58, 0x02, 0xe8, 0x3d, 0xd5, 0x88, 0x86, 0x58, 0x02, 0xc6, 0x46, 0x09, - 0x0c, 0xb8, 0x00, 0x03, 0xe8, 0xd1, 0xf3, 0xe9, 0xbc, 0x00, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x3d, - 0xf6, 0x86, 0x58, 0x02, 0x01, 0x75, 0x16, 0xf6, 0x86, 0x6c, 0x02, 0x01, 0x74, 0x16, 0xf6, 0x86, - 0x62, 0x02, 0x01, 0x74, 0x08, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x01, 0x75, 0x16, 0xc6, 0x46, 0x09, - 0x0c, 0xe9, 0x92, 0x00, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x9c, 0xf7, 0x86, 0x12, 0x01, 0x00, - 0x01, 0x74, 0x94, 0xc6, 0x46, 0x09, 0x04, 0xff, 0x86, 0x4e, 0x02, 0xeb, 0x79, 0x80, 0x7e, 0x08, - 0x0a, 0x75, 0x73, 0xf6, 0x86, 0x63, 0x02, 0x01, 0x75, 0x0e, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x01, - 0x75, 0x06, 0xc6, 0x46, 0x09, 0x0c, 0xeb, 0x5e, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x01, 0x74, 0x56, - 0xc6, 0x46, 0x09, 0x04, 0xeb, 0x50, 0x80, 0x7e, 0x08, 0x04, 0x75, 0x2c, 0xc6, 0x46, 0x09, 0x0c, - 0x80, 0x7e, 0x0a, 0x00, 0x75, 0x1d, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xc6, 0x86, 0x6f, 0x02, 0x00, - 0x8a, 0x86, 0x58, 0x02, 0x8a, 0xa6, 0x84, 0x02, 0x88, 0xa6, 0x58, 0x02, 0xe8, 0x97, 0xd4, 0x88, - 0x86, 0x58, 0x02, 0xe8, 0xdb, 0xef, 0xeb, 0x1e, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x09, 0xf6, 0x86, - 0x6c, 0x02, 0x01, 0x74, 0x02, 0xeb, 0xab, 0x80, 0x7e, 0x08, 0x0a, 0x75, 0x09, 0xf6, 0x86, 0x63, - 0x02, 0x01, 0x75, 0x02, 0xeb, 0x9c, 0x8a, 0x86, 0x84, 0x02, 0x88, 0x86, 0x58, 0x02, 0xc3, 0xc7, - 0x86, 0xc6, 0x02, 0x02, 0x00, 0xff, 0x86, 0x46, 0x02, 0xc7, 0x86, 0x2e, 0x02, 0x0c, 0x00, 0x80, - 0x7e, 0x06, 0x04, 0x74, 0x06, 0x80, 0x7e, 0x06, 0x06, 0x75, 0x04, 0xc6, 0x46, 0x07, 0x08, 0x80, - 0x7e, 0x08, 0x00, 0x75, 0x56, 0xf6, 0x86, 0x58, 0x02, 0x01, 0x74, 0x3b, 0xc6, 0x86, 0x58, 0x02, - 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x64, 0x00, 0xff, 0x7f, 0xb8, 0x00, 0x02, 0xe8, 0xc7, - 0xf2, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x0c, 0xbe, 0x1f, 0x4c, 0xe8, 0xd8, 0xd1, 0xbe, 0x3d, - 0x4c, 0xe8, 0xd2, 0xd1, 0x80, 0x7e, 0x0a, 0x00, 0x75, 0x0d, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xc6, - 0x86, 0x6f, 0x02, 0x00, 0xe8, 0xff, 0xd3, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x34, 0xc6, 0x86, - 0x5c, 0x02, 0x00, 0xc6, 0x86, 0x5d, 0x02, 0x00, 0xe9, 0xc9, 0x00, 0x80, 0x7e, 0x08, 0x0c, 0x75, - 0x24, 0xc6, 0x46, 0x09, 0x00, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x16, 0xbe, 0x1f, 0x4c, 0xe8, - 0x94, 0xd1, 0xbe, 0x3d, 0x4c, 0xe8, 0x8e, 0xd1, 0xc6, 0x86, 0x5c, 0x02, 0x00, 0xc6, 0x86, 0x5d, - 0x02, 0x00, 0xe9, 0x9f, 0x00, 0x80, 0x7e, 0x08, 0x02, 0x75, 0xf7, 0xc7, 0x86, 0xcc, 0x01, 0x00, - 0x00, 0xc6, 0x46, 0x09, 0x00, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x0a, 0xc6, 0x86, 0x5c, 0x02, - 0x00, 0xc6, 0x86, 0x5d, 0x02, 0x00, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0x00, 0x03, 0x8c, 0xd9, 0x8e, - 0xc1, 0xb9, 0x06, 0x00, 0xf3, 0xa6, 0x74, 0x2e, 0xc6, 0x86, 0x58, 0x02, 0x00, 0x8e, 0x46, 0x02, - 0x26, 0x81, 0x26, 0x64, 0x00, 0xff, 0x7f, 0x80, 0x7e, 0x0a, 0x00, 0x75, 0x0a, 0xc6, 0x86, 0x6d, - 0x02, 0x00, 0xc6, 0x86, 0x6f, 0x02, 0x00, 0xe8, 0x6c, 0xd3, 0xb8, 0x00, 0x02, 0xe8, 0x08, 0xf2, - 0xc6, 0x46, 0x09, 0x00, 0xeb, 0x3e, 0x8e, 0x46, 0x02, 0x26, 0xa0, 0x5c, 0x00, 0xc6, 0x46, 0x09, - 0x00, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xc6, 0x86, 0x59, 0x02, 0x00, 0xc6, 0x86, 0x69, 0x02, 0x00, - 0xe8, 0x43, 0xd3, 0x24, 0x07, 0xe8, 0x0a, 0xf5, 0xbe, 0xef, 0x4b, 0xe8, 0xf8, 0xd0, 0x8c, 0xd8, - 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0xbe, 0xf2, 0x01, 0xab, 0xab, 0xab, 0xe8, 0xc5, 0xee, 0xbe, 0x3d, - 0x4c, 0xe8, 0xe2, 0xd0, 0xc3, 0x8c, 0xd8, 0x8e, 0xc0, 0xff, 0x86, 0x54, 0x02, 0xc7, 0x86, 0x2e, - 0x02, 0x0f, 0x00, 0xf6, 0x86, 0xce, 0x01, 0x01, 0x74, 0x3b, 0xb8, 0x94, 0x5e, 0xa3, 0x8a, 0x5e, - 0x8d, 0x77, 0x0e, 0x8b, 0xf8, 0xa5, 0xa5, 0xa5, 0xc7, 0x06, 0x92, 0x5e, 0x01, 0x00, 0xc6, 0x86, - 0xcf, 0x01, 0x00, 0x33, 0xff, 0xba, 0x02, 0x08, 0xe8, 0x20, 0xe7, 0xbf, 0x8c, 0x5e, 0xb9, 0x03, - 0x00, 0xf3, 0xa5, 0x8d, 0x77, 0x0e, 0xbf, 0x8c, 0x5e, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x75, 0x05, - 0xe8, 0x8b, 0x04, 0xeb, 0x00, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xf2, 0x01, 0xa5, 0xa5, 0xa5, 0x80, - 0x7e, 0x06, 0x04, 0x75, 0x04, 0xc6, 0x46, 0x07, 0x08, 0x8b, 0x8e, 0xc6, 0x02, 0xe3, 0x05, 0x49, - 0x89, 0x8e, 0xc6, 0x02, 0xf7, 0x07, 0x3c, 0x00, 0x75, 0x0a, 0xf6, 0x86, 0x6c, 0x02, 0x01, 0x74, - 0x03, 0xe8, 0x07, 0x02, 0xf6, 0x86, 0x58, 0x02, 0x01, 0x75, 0x03, 0xe9, 0x93, 0x00, 0xbe, 0x3d, - 0x4c, 0xe8, 0x52, 0xd0, 0xf7, 0x07, 0x00, 0x10, 0x75, 0x37, 0xc6, 0x86, 0x58, 0x02, 0x00, 0x8e, - 0x46, 0x02, 0x26, 0x81, 0x26, 0x64, 0x00, 0xff, 0x7f, 0xb8, 0x00, 0x02, 0xe8, 0x19, 0xf1, 0xf6, - 0x86, 0x62, 0x02, 0x01, 0x74, 0x06, 0xbe, 0x1f, 0x4c, 0xe8, 0x2a, 0xd0, 0x80, 0x7e, 0x0a, 0x00, - 0x75, 0x38, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xc6, 0x86, 0x6f, 0x02, 0x00, 0xe8, 0x57, 0xd2, 0xeb, - 0x29, 0xf7, 0x07, 0x3c, 0x00, 0x75, 0x33, 0xc6, 0x86, 0x69, 0x02, 0x01, 0xc6, 0x86, 0x6a, 0x02, - 0x01, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xf2, 0x01, 0xab, 0xab, - 0xab, 0x8b, 0x86, 0x0a, 0x02, 0xa9, 0x40, 0x00, 0x74, 0x02, 0xeb, 0x48, 0x83, 0xc8, 0x40, 0x89, - 0x86, 0x0a, 0x02, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xeb, 0x3a, 0x83, 0xa6, 0x0a, 0x02, 0xbf, 0x8c, - 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xf2, 0x01, 0xa5, 0xa5, 0xa5, 0xeb, - 0x23, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x06, 0xbe, 0x3d, 0x4c, 0xe8, 0xb8, 0xcf, 0xc6, 0x86, - 0x6b, 0x02, 0x00, 0xf7, 0x07, 0x3c, 0x00, 0x75, 0x0b, 0xc6, 0x86, 0x6b, 0x02, 0x01, 0xbe, 0x25, - 0x4c, 0xe8, 0xa2, 0xcf, 0xc3, 0xeb, 0x61, 0x8c, 0xd8, 0x8e, 0xc0, 0xc7, 0x86, 0x2e, 0x02, 0x0d, - 0x00, 0xf6, 0x86, 0xce, 0x01, 0x01, 0x74, 0x50, 0x33, 0xff, 0xba, 0x02, 0x08, 0xe8, 0xfb, 0xe5, - 0x8b, 0x3e, 0x8a, 0x5e, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x75, 0x3d, 0x81, 0xff, 0xa2, 0x65, 0x73, - 0x6f, 0x89, 0x3e, 0x8a, 0x5e, 0x8d, 0x77, 0x0e, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x74, 0x05, 0xc6, - 0x86, 0xd0, 0x01, 0x01, 0x81, 0xff, 0xa2, 0x65, 0x73, 0x56, 0x89, 0x3e, 0x8a, 0x5e, 0x8d, 0x77, - 0x0e, 0xa5, 0xa5, 0xa5, 0xff, 0x06, 0x92, 0x5e, 0x8d, 0x77, 0x0e, 0xbf, 0x8c, 0x5e, 0xb9, 0x03, - 0x00, 0xf3, 0xa7, 0x75, 0x03, 0xe8, 0x36, 0x03, 0x8a, 0x86, 0x0a, 0x02, 0xa8, 0x40, 0x75, 0x3d, - 0x80, 0x7e, 0x06, 0x04, 0x75, 0x04, 0xc6, 0x46, 0x07, 0x08, 0xf7, 0x07, 0x3c, 0x00, 0x75, 0x3a, - 0xf6, 0x86, 0x6c, 0x02, 0x01, 0x74, 0x35, 0xf6, 0x86, 0x58, 0x02, 0x01, 0x74, 0x07, 0xf6, 0x86, - 0x69, 0x02, 0x01, 0x75, 0x27, 0xe8, 0xb3, 0x00, 0xc7, 0x86, 0xc8, 0x02, 0x01, 0x00, 0xeb, 0x1c, - 0xbf, 0x9c, 0x65, 0x33, 0xc0, 0xab, 0xab, 0xab, 0xe8, 0xf3, 0x02, 0xeb, 0xbb, 0x24, 0xbf, 0x88, - 0x86, 0x0a, 0x02, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xeb, 0xb6, 0xeb, 0x79, 0xf6, 0x86, 0x58, 0x02, - 0x01, 0x74, 0x3c, 0xf6, 0x86, 0x69, 0x02, 0x01, 0x74, 0x19, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, - 0x12, 0x83, 0xbe, 0xc6, 0x02, 0x00, 0x75, 0x0b, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x05, 0x83, 0x8e, - 0xe6, 0x02, 0x08, 0xc6, 0x86, 0x69, 0x02, 0x01, 0xc6, 0x86, 0x6a, 0x02, 0x01, 0x8c, 0xd8, 0x8e, - 0xc0, 0x33, 0xc0, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xf2, 0x01, 0xab, 0xab, 0xab, 0xeb, 0x4b, 0xf6, - 0x86, 0x6c, 0x02, 0x01, 0x74, 0x44, 0xf6, 0x86, 0x6b, 0x02, 0x01, 0x75, 0x0d, 0xc6, 0x86, 0x6b, - 0x02, 0x01, 0xbe, 0x25, 0x4c, 0xe8, 0x8e, 0xce, 0xeb, 0x30, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, - 0x12, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x0c, 0x83, 0xbe, 0xc6, 0x02, 0x00, 0x75, 0x05, 0x83, 0x8e, - 0xe6, 0x02, 0x08, 0xeb, 0x15, 0xf6, 0x86, 0x58, 0x02, 0x01, 0x74, 0x0e, 0x8c, 0xd8, 0x8e, 0xc0, - 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xf2, 0x01, 0xa5, 0xa5, 0xa5, 0xc3, 0x53, 0x8c, 0xd8, 0x8e, 0xc0, - 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0x16, 0x03, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x03, 0x00, 0xf3, 0xa7, - 0x74, 0x54, 0x8b, 0x44, 0xfe, 0x89, 0x45, 0xfe, 0xf3, 0xa5, 0xbb, 0xfc, 0x04, 0xb9, 0x0b, 0x00, - 0x8d, 0xb6, 0x16, 0x03, 0xad, 0x8b, 0x14, 0x8b, 0x74, 0x02, 0x8b, 0x3f, 0x03, 0xfd, 0xab, 0x89, - 0x15, 0x89, 0x75, 0x02, 0x83, 0xc3, 0x02, 0xe2, 0xf1, 0xf6, 0x86, 0xaf, 0x02, 0x01, 0x75, 0x26, - 0x8b, 0xb6, 0x2f, 0x06, 0x8d, 0xbe, 0xee, 0x01, 0xa5, 0xa5, 0x80, 0x7e, 0x06, 0x08, 0x76, 0x0b, - 0xc7, 0x86, 0xc8, 0x02, 0x04, 0x00, 0xe8, 0x84, 0xee, 0xeb, 0x0b, 0xc6, 0x86, 0x88, 0x02, 0x01, - 0xc7, 0x86, 0xc8, 0x02, 0x01, 0x00, 0x5b, 0xc3, 0xb8, 0x80, 0x0a, 0xf6, 0x86, 0xab, 0x02, 0x01, - 0x75, 0x45, 0xf6, 0x86, 0xad, 0x02, 0x01, 0x75, 0x3e, 0xf7, 0x86, 0xf6, 0x00, 0x10, 0x00, 0x75, - 0x36, 0xf7, 0x07, 0x82, 0x00, 0x74, 0x2f, 0xc7, 0x86, 0x2e, 0x02, 0x07, 0x00, 0xc6, 0x86, 0x16, - 0x01, 0x00, 0x81, 0x8e, 0x0a, 0x02, 0x00, 0x01, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xf6, 0x86, 0xac, - 0x02, 0x01, 0x75, 0x0c, 0x80, 0x7e, 0x06, 0x08, 0x72, 0x0c, 0x80, 0x7e, 0x06, 0x0e, 0x77, 0x06, - 0xb8, 0x0a, 0x00, 0xe8, 0x8b, 0xdf, 0xc3, 0x89, 0x86, 0xee, 0x02, 0xe9, 0x37, 0xea, 0xf7, 0x07, - 0x02, 0x00, 0x74, 0x0f, 0x80, 0x7e, 0x06, 0x0c, 0x75, 0x09, 0xc6, 0x86, 0x64, 0x02, 0x01, 0xc6, - 0x46, 0x07, 0x0e, 0x8b, 0x86, 0x18, 0x02, 0x86, 0xe0, 0x8b, 0xb6, 0x54, 0x06, 0x0b, 0xf6, 0x74, - 0x09, 0xad, 0x86, 0xe0, 0x89, 0x86, 0x18, 0x02, 0x86, 0xe0, 0x89, 0x86, 0xea, 0x02, 0x8b, 0xb6, - 0x3b, 0x06, 0x0b, 0xf6, 0x74, 0x07, 0xad, 0x86, 0xc4, 0x89, 0x86, 0x10, 0x02, 0x8b, 0xb6, 0x40, - 0x06, 0x0b, 0xf6, 0x74, 0x05, 0x8b, 0xc6, 0xe8, 0xa2, 0x00, 0x8b, 0xb6, 0x45, 0x06, 0x0b, 0xf6, - 0x74, 0x07, 0xad, 0x86, 0xe0, 0x89, 0x86, 0x0c, 0x02, 0x8b, 0xb6, 0x4a, 0x06, 0x0b, 0xf6, 0x74, - 0x07, 0xad, 0x86, 0xc4, 0x89, 0x86, 0xfc, 0x01, 0x8b, 0xb6, 0x4f, 0x06, 0x0b, 0xf6, 0x74, 0x07, - 0xad, 0x86, 0xc4, 0x89, 0x86, 0xfa, 0x01, 0x8b, 0x07, 0xa9, 0x02, 0x00, 0x75, 0x07, 0xa8, 0x28, - 0x74, 0x03, 0xe9, 0x71, 0xff, 0xc7, 0x86, 0xee, 0x02, 0x00, 0x01, 0xe9, 0xa7, 0xe9, 0xc3, 0xf7, - 0x07, 0x02, 0x02, 0x74, 0xf9, 0x8b, 0x86, 0x18, 0x02, 0x86, 0xe0, 0x8b, 0xb6, 0x69, 0x06, 0x0b, - 0xf6, 0x74, 0x09, 0xad, 0x86, 0xe0, 0x89, 0x86, 0x18, 0x02, 0x86, 0xe0, 0x89, 0x86, 0xea, 0x02, - 0x8b, 0xb6, 0x5a, 0x06, 0x0b, 0xf6, 0x74, 0x07, 0xad, 0x86, 0xc4, 0x89, 0x86, 0x10, 0x02, 0x8b, - 0xb6, 0x5f, 0x06, 0x0b, 0xf6, 0x74, 0x05, 0x8b, 0xc6, 0xe8, 0x20, 0x00, 0x8b, 0xb6, 0x64, 0x06, - 0x0b, 0xf6, 0x74, 0x07, 0xad, 0x86, 0xe0, 0x89, 0x86, 0x0c, 0x02, 0x80, 0x7e, 0x06, 0x0c, 0x75, - 0x96, 0xc6, 0x86, 0x64, 0x02, 0x01, 0xc6, 0x46, 0x07, 0x0e, 0xeb, 0x8b, 0x53, 0x57, 0x8c, 0xdb, - 0x8e, 0xc3, 0xbb, 0x12, 0x05, 0xb9, 0x0a, 0x00, 0x8b, 0xf0, 0xad, 0x8b, 0x34, 0x8b, 0x3f, 0x03, - 0xfd, 0xab, 0x89, 0x35, 0x83, 0xc3, 0x02, 0xe2, 0xf4, 0x5f, 0x5b, 0xc3, 0x68, 0x88, 0x2e, 0xeb, - 0x08, 0x68, 0xf0, 0x2e, 0xeb, 0x03, 0x68, 0x32, 0x2f, 0xf7, 0x07, 0x82, 0x02, 0x74, 0x1c, 0x8b, - 0x86, 0x18, 0x02, 0x86, 0xe0, 0x8b, 0xb6, 0xa0, 0x06, 0x0b, 0xf6, 0x74, 0x09, 0xad, 0x86, 0xe0, - 0x89, 0x86, 0x18, 0x02, 0x86, 0xe0, 0x89, 0x86, 0xea, 0x02, 0xc3, 0x83, 0xc4, 0x02, 0xc3, 0x8b, - 0x07, 0xf6, 0x86, 0x63, 0x01, 0x01, 0x74, 0x1e, 0xa9, 0x00, 0x20, 0x74, 0x40, 0x56, 0x57, 0xe8, - 0x5d, 0xca, 0xc7, 0x44, 0x02, 0x02, 0x00, 0x8d, 0x7e, 0x16, 0xe8, 0x70, 0xca, 0xbe, 0x19, 0x4c, - 0xe8, 0xe5, 0xcc, 0x5f, 0x5e, 0xc3, 0x80, 0x7e, 0x06, 0x08, 0x75, 0x21, 0xa9, 0x00, 0x10, 0x74, - 0x1c, 0xa9, 0x3c, 0x00, 0x75, 0x17, 0xff, 0x86, 0xd2, 0x02, 0xff, 0x86, 0xd0, 0x02, 0x83, 0xbe, - 0xd0, 0x02, 0x02, 0x72, 0x05, 0xc6, 0x46, 0x07, 0x0a, 0xc3, 0xe8, 0x3c, 0xea, 0xc3, 0x8c, 0xd8, - 0x8e, 0xc0, 0x33, 0xc0, 0x8b, 0x3e, 0x8a, 0x5e, 0x83, 0xc7, 0x06, 0x81, 0xff, 0xa2, 0x65, 0x72, - 0x03, 0xbf, 0x9c, 0x65, 0xab, 0xab, 0xab, 0xf6, 0x86, 0xd0, 0x01, 0x01, 0x74, 0x18, 0xc6, 0x86, - 0xcf, 0x01, 0x01, 0xe8, 0xf9, 0xc9, 0xc7, 0x44, 0x02, 0x05, 0x00, 0x8d, 0x7e, 0x16, 0xe8, 0x0c, - 0xca, 0xc6, 0x86, 0xce, 0x01, 0x00, 0xc3, 0xf7, 0x86, 0xf6, 0x00, 0x08, 0x00, 0x74, 0x06, 0xbe, - 0xdf, 0x4c, 0xe8, 0xc1, 0xcb, 0x8d, 0xb6, 0xc4, 0x15, 0x8e, 0x46, 0x02, 0x8a, 0x1c, 0xf6, 0xc3, - 0x80, 0x75, 0x0d, 0x80, 0xfb, 0x10, 0x77, 0x14, 0x32, 0xff, 0xd1, 0xe3, 0xff, 0xa7, 0xda, 0x04, - 0xc7, 0x86, 0x0a, 0x01, 0x00, 0x00, 0xc3, 0xb8, 0x00, 0x80, 0xeb, 0x08, 0xb8, 0x00, 0x80, 0xeb, - 0x03, 0xb8, 0x00, 0x20, 0x8d, 0xb6, 0xc4, 0x15, 0x89, 0x44, 0x02, 0x80, 0x0c, 0x80, 0xb8, 0x40, - 0x60, 0x8e, 0xc0, 0xc7, 0x86, 0x0a, 0x01, 0x00, 0x00, 0x26, 0xc7, 0x06, 0x30, 0x00, 0x08, 0x00, - 0xc3, 0xeb, 0xe1, 0xb8, 0x04, 0x00, 0x80, 0xbe, 0x06, 0x01, 0x01, 0x75, 0xf4, 0xb8, 0x05, 0x00, - 0x80, 0xbe, 0x07, 0x01, 0x01, 0x74, 0xea, 0xc6, 0x86, 0x08, 0x01, 0x01, 0xc6, 0x86, 0xd1, 0x01, - 0x00, 0xc6, 0x86, 0x09, 0x01, 0x00, 0x8b, 0x86, 0xf8, 0x00, 0x89, 0x86, 0xf6, 0x00, 0x8d, 0xb6, - 0xce, 0x15, 0xb8, 0x03, 0x00, 0xf6, 0x04, 0x80, 0x75, 0xc7, 0x33, 0xc0, 0x39, 0x04, 0x75, 0x1e, - 0x39, 0x44, 0x02, 0x75, 0x19, 0x39, 0x44, 0x04, 0x75, 0x14, 0x8b, 0x86, 0x00, 0x01, 0x89, 0x04, - 0x8b, 0x86, 0x02, 0x01, 0x89, 0x44, 0x02, 0x8b, 0x86, 0x04, 0x01, 0x89, 0x44, 0x04, 0xad, 0x8b, - 0x14, 0x8b, 0x74, 0x02, 0x89, 0x86, 0xd4, 0x01, 0x89, 0x96, 0xd6, 0x01, 0x89, 0xb6, 0xd8, 0x01, - 0x8e, 0x46, 0x02, 0x50, 0xe8, 0xfc, 0xc7, 0x26, 0xa3, 0x5e, 0x00, 0x8b, 0xc2, 0xe8, 0xf3, 0xc7, - 0x26, 0xa3, 0x60, 0x00, 0x8b, 0xc6, 0xe8, 0xea, 0xc7, 0x26, 0xa3, 0x62, 0x00, 0x58, 0xbb, 0x2a, - 0x05, 0xb9, 0x16, 0x00, 0x1e, 0x07, 0x8b, 0x3f, 0x03, 0xfd, 0xab, 0x89, 0x15, 0x89, 0x75, 0x02, - 0x83, 0xc3, 0x02, 0xe2, 0xf1, 0xbb, 0x26, 0x05, 0x8d, 0x96, 0xdc, 0x15, 0xb8, 0x02, 0x00, 0x8b, - 0x3f, 0x03, 0xfd, 0x8b, 0xf2, 0xb9, 0x09, 0x00, 0xf3, 0xa5, 0x83, 0xc3, 0x02, 0x48, 0x75, 0xef, - 0xf7, 0x86, 0xf6, 0x00, 0x08, 0x00, 0x74, 0x06, 0xbe, 0xdf, 0x4c, 0xe8, 0xa8, 0xca, 0x8d, 0xb6, - 0xc4, 0x15, 0x8b, 0x44, 0x08, 0x89, 0x86, 0x12, 0x01, 0x89, 0x86, 0x14, 0x01, 0xf7, 0x86, 0x12, - 0x01, 0x01, 0x00, 0x74, 0x08, 0xc7, 0x06, 0x17, 0x4c, 0x58, 0x02, 0xeb, 0x06, 0xc7, 0x06, 0x17, - 0x4c, 0x08, 0x07, 0x8e, 0x46, 0x02, 0x26, 0x8b, 0x1e, 0x68, 0x00, 0x81, 0xe3, 0xff, 0xf4, 0xa9, - 0x04, 0x00, 0x74, 0x04, 0x81, 0xcb, 0x00, 0x08, 0xa9, 0x02, 0x00, 0x74, 0x04, 0x81, 0xcb, 0x00, - 0x03, 0x8e, 0x46, 0x02, 0x26, 0x89, 0x1e, 0x68, 0x00, 0x8d, 0xb6, 0xd8, 0x15, 0xe8, 0x64, 0x02, - 0x8d, 0xb6, 0xd4, 0x15, 0xe8, 0x23, 0x00, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x74, 0x03, 0xe8, 0x5e, - 0x16, 0xc6, 0x86, 0x07, 0x01, 0x01, 0xe8, 0xd0, 0x03, 0xe8, 0xc7, 0x05, 0xe9, 0xa2, 0xfe, 0x56, - 0x83, 0xc6, 0x08, 0xe8, 0x04, 0x00, 0x5e, 0xe9, 0x97, 0xfe, 0x8e, 0x46, 0x02, 0xb8, 0xc0, 0x00, - 0xe8, 0x20, 0xc7, 0x26, 0xa3, 0x7a, 0x00, 0x8b, 0x04, 0x0d, 0x80, 0x00, 0x89, 0x86, 0xda, 0x01, - 0xe8, 0x10, 0xc7, 0x26, 0xa3, 0x7c, 0x00, 0x8b, 0x44, 0x02, 0x89, 0x86, 0xdc, 0x01, 0xe8, 0x02, - 0xc7, 0x26, 0xa3, 0x7e, 0x00, 0xc3, 0x83, 0x8e, 0x1e, 0x01, 0x01, 0xc6, 0x86, 0x16, 0x01, 0x00, - 0x8a, 0x46, 0x06, 0x3c, 0x00, 0x74, 0x46, 0x3c, 0x10, 0x75, 0x03, 0xe9, 0x53, 0xfe, 0x3c, 0x12, - 0x74, 0x3b, 0x3c, 0x4c, 0x75, 0x03, 0xe9, 0x48, 0xfe, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x72, 0x1a, - 0x3c, 0x48, 0x74, 0x0f, 0xf6, 0x86, 0x72, 0x02, 0x01, 0x74, 0x17, 0x3c, 0x44, 0x74, 0x04, 0x3c, - 0x46, 0x75, 0x28, 0xc6, 0x46, 0x07, 0x4c, 0xe9, 0x27, 0xfe, 0x3c, 0x0e, 0x74, 0x17, 0x3c, 0x48, - 0x74, 0x19, 0xe8, 0x1c, 0xfe, 0xb8, 0x0f, 0x00, 0xe8, 0x96, 0xdb, 0xeb, 0x35, 0xe8, 0x11, 0xfe, - 0xe8, 0x04, 0x04, 0xeb, 0x2d, 0xc6, 0x46, 0x07, 0x10, 0xeb, 0x20, 0x8e, 0x46, 0x02, 0xf6, 0x06, - 0x81, 0x5e, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x42, 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, - 0x01, 0x01, 0xe8, 0x0c, 0x16, 0xc6, 0x46, 0x07, 0x12, 0xeb, 0x00, 0xc6, 0x46, 0x09, 0x1e, 0xe9, - 0xdf, 0xfd, 0xc3, 0xc6, 0x86, 0x06, 0x01, 0x00, 0xb8, 0x05, 0x00, 0x80, 0xbe, 0x07, 0x01, 0x01, - 0x75, 0x03, 0xe9, 0xcf, 0xfd, 0x8b, 0x44, 0x08, 0x89, 0x86, 0xf4, 0x00, 0x8b, 0x44, 0x0a, 0xa9, - 0x00, 0x10, 0x74, 0x03, 0x0d, 0x00, 0x01, 0x89, 0x86, 0xf6, 0x00, 0x89, 0x86, 0xf8, 0x00, 0x8b, - 0x44, 0x12, 0x0b, 0xc0, 0x75, 0x21, 0xf7, 0x86, 0xf4, 0x00, 0x00, 0x40, 0x74, 0x0b, 0xb8, 0x1f, - 0x47, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x12, 0x75, 0x0e, 0xb8, 0x18, 0x47, 0xf7, 0x86, 0xf6, 0x00, - 0x00, 0x01, 0x75, 0x03, 0xb8, 0xc6, 0x11, 0x89, 0x86, 0xfa, 0x00, 0xe8, 0xab, 0x02, 0x8d, 0xbe, - 0x56, 0x04, 0x8b, 0x44, 0x0c, 0x89, 0x05, 0x89, 0x86, 0x00, 0x01, 0x8b, 0x44, 0x0e, 0x89, 0x45, - 0x02, 0x89, 0x86, 0x02, 0x01, 0x8b, 0x44, 0x10, 0x89, 0x45, 0x04, 0x89, 0x86, 0x04, 0x01, 0x80, - 0xbe, 0x62, 0x01, 0x01, 0x75, 0x21, 0x8b, 0x44, 0x0c, 0x89, 0x86, 0xbc, 0x03, 0x89, 0x86, 0xc2, - 0x03, 0x8b, 0x44, 0x0e, 0x89, 0x86, 0xbe, 0x03, 0x89, 0x86, 0xc4, 0x03, 0x8b, 0x44, 0x10, 0x89, - 0x86, 0xc0, 0x03, 0x89, 0x86, 0xc6, 0x03, 0x8e, 0x46, 0x02, 0x8b, 0x86, 0xfa, 0x00, 0x26, 0xa3, - 0x52, 0x00, 0x8b, 0x44, 0x14, 0x26, 0xa3, 0x6a, 0x00, 0x8b, 0x44, 0x16, 0x25, 0xff, 0xf4, 0x83, - 0xc8, 0x30, 0x26, 0xa3, 0x68, 0x00, 0x8d, 0x1e, 0x6c, 0x05, 0x8b, 0x44, 0x18, 0xc1, 0xe8, 0x04, - 0x83, 0xe0, 0x0f, 0xd7, 0xa2, 0x87, 0x03, 0x8b, 0x44, 0x18, 0xc1, 0xe8, 0x0c, 0x83, 0xe0, 0x0f, - 0xd7, 0xa2, 0x88, 0x03, 0x33, 0xc0, 0xd7, 0xa2, 0x89, 0x03, 0x06, 0x51, 0x8c, 0xd8, 0x8e, 0xc0, - 0xbe, 0x80, 0x03, 0x8d, 0xbe, 0x1a, 0x04, 0xb9, 0x05, 0x00, 0xf3, 0xa5, 0x59, 0x07, 0x8b, 0x86, - 0xf4, 0x00, 0x25, 0xff, 0xfe, 0xc1, 0xe8, 0x08, 0x89, 0x86, 0x28, 0x02, 0xf7, 0x86, 0xf4, 0x00, - 0x04, 0x00, 0x74, 0x0f, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x75, 0x08, 0xc6, 0x06, 0x81, 0x5e, 0x01, - 0xe8, 0xa7, 0x11, 0x80, 0xbe, 0x62, 0x01, 0x01, 0x75, 0x01, 0xc3, 0xc6, 0x86, 0x06, 0x01, 0x01, - 0xe9, 0xae, 0xfc, 0x56, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0x7c, 0x08, 0x8d, 0xb6, 0xdc, 0x02, 0xb9, - 0x05, 0x00, 0x8b, 0xd1, 0xf3, 0xa5, 0x8d, 0xbe, 0xdc, 0x02, 0x33, 0xc0, 0x8b, 0xca, 0xf3, 0xab, - 0x81, 0xa6, 0x0a, 0x02, 0x7f, 0xdf, 0x5e, 0xe9, 0x87, 0xfc, 0x56, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, - 0x7c, 0x08, 0x8d, 0xb6, 0x40, 0x02, 0xb9, 0x0c, 0x00, 0x8b, 0xd1, 0xf3, 0xa5, 0x8d, 0xbe, 0x40, - 0x02, 0x33, 0xc0, 0x8b, 0xca, 0xf3, 0xab, 0x5e, 0xe9, 0x66, 0xfc, 0x83, 0xc6, 0x08, 0xe8, 0x03, - 0x00, 0xe9, 0x5d, 0xfc, 0x06, 0x8e, 0x46, 0x02, 0x8b, 0x04, 0x89, 0x86, 0xde, 0x01, 0xe8, 0xe2, - 0xc4, 0x26, 0xa3, 0x66, 0x00, 0x8b, 0x44, 0x02, 0x23, 0x86, 0xfc, 0x01, 0xe8, 0xd4, 0xc4, 0x25, - 0xff, 0x7f, 0x26, 0x8b, 0x0e, 0x64, 0x00, 0x81, 0xe1, 0x00, 0x80, 0x0b, 0xc1, 0x26, 0xa3, 0x64, - 0x00, 0xe8, 0xbf, 0xc4, 0x89, 0x86, 0xe0, 0x01, 0x07, 0xc3, 0xb8, 0x05, 0x00, 0x80, 0xbe, 0x07, - 0x01, 0x01, 0x75, 0x03, 0xe9, 0x1d, 0xfc, 0xc6, 0x86, 0x62, 0x01, 0x01, 0xe8, 0x34, 0xfe, 0xc6, - 0x86, 0x62, 0x01, 0x00, 0xc6, 0x86, 0x06, 0x01, 0x01, 0xe9, 0x05, 0xfc, 0xb8, 0x11, 0x00, 0xc6, - 0x86, 0x62, 0x01, 0x00, 0xe9, 0xfd, 0xfb, 0xc3, 0x8b, 0xd8, 0x26, 0x8b, 0x04, 0x50, 0x33, 0xc0, - 0x50, 0x23, 0xc3, 0x8b, 0xc8, 0x26, 0x89, 0x04, 0x26, 0x8b, 0x04, 0x23, 0xc3, 0x3b, 0xc1, 0x58, - 0x75, 0x3c, 0x05, 0x55, 0x55, 0x73, 0xe9, 0xb8, 0x01, 0x00, 0x50, 0x23, 0xc3, 0x8b, 0xc8, 0x26, - 0x89, 0x04, 0x26, 0x8b, 0x04, 0x23, 0xc3, 0x3b, 0xc1, 0x58, 0x75, 0x22, 0xd1, 0xc0, 0x73, 0xea, - 0xf7, 0xd0, 0x50, 0x23, 0xc3, 0x8b, 0xc8, 0x26, 0x89, 0x04, 0x26, 0x8b, 0x04, 0x23, 0xc3, 0x3b, - 0xc1, 0x58, 0x75, 0x0a, 0xd1, 0xc0, 0x72, 0xea, 0xf8, 0x58, 0x26, 0x89, 0x04, 0xc3, 0xf9, 0xeb, - 0xf8, 0x8b, 0x44, 0x08, 0x25, 0xff, 0x7b, 0x89, 0x86, 0x12, 0x01, 0x89, 0x86, 0x14, 0x01, 0x8e, - 0x46, 0x02, 0x26, 0x8b, 0x1e, 0x68, 0x00, 0x81, 0xe3, 0xff, 0xf4, 0xa9, 0x04, 0x00, 0x74, 0x04, - 0x81, 0xcb, 0x00, 0x08, 0xa9, 0x02, 0x00, 0x74, 0x04, 0x81, 0xcb, 0x00, 0x03, 0x8e, 0x46, 0x02, - 0x26, 0x89, 0x1e, 0x68, 0x00, 0xe9, 0x69, 0xfb, 0xe9, 0x61, 0xfb, 0x8b, 0x44, 0x08, 0x89, 0x86, - 0x30, 0x01, 0xbe, 0xcd, 0x4c, 0xe8, 0xee, 0xc6, 0xe9, 0x56, 0xfb, 0x8b, 0x44, 0x08, 0x8e, 0x46, - 0x02, 0x26, 0xa3, 0x6a, 0x00, 0xe9, 0x49, 0xfb, 0x80, 0x7e, 0x06, 0x0e, 0x74, 0x06, 0x80, 0x7e, - 0x06, 0x48, 0x75, 0x13, 0x80, 0x7e, 0x08, 0x00, 0x74, 0x06, 0x80, 0x7e, 0x08, 0x16, 0x75, 0x07, - 0x8d, 0x5c, 0x08, 0xe8, 0xa6, 0xe8, 0xc3, 0xb8, 0x00, 0x10, 0xe9, 0x27, 0xfb, 0xb8, 0x04, 0x00, - 0xf6, 0x86, 0x07, 0x01, 0x01, 0x74, 0x1e, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x68, 0x00, 0x8b, 0x5c, - 0x08, 0x81, 0xe3, 0xff, 0xf4, 0x25, 0x00, 0x0b, 0x0b, 0xd8, 0x8e, 0x46, 0x02, 0x26, 0x89, 0x1e, - 0x68, 0x00, 0xb8, 0x00, 0x20, 0xe9, 0xfc, 0xfa, 0xb8, 0x05, 0x00, 0xf6, 0x86, 0x07, 0x01, 0x01, - 0x75, 0x11, 0xfa, 0xe8, 0x54, 0xc8, 0xfa, 0xe8, 0xe7, 0xfa, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, - 0x32, 0x00, 0x02, 0xe9, 0xde, 0xfa, 0xe9, 0xd8, 0xfa, 0xf7, 0x86, 0xf4, 0x00, 0x00, 0x40, 0x74, - 0x0d, 0xc6, 0x86, 0xfe, 0x00, 0x02, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x12, 0x75, 0x12, 0xc6, 0x86, - 0xfe, 0x00, 0x01, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x11, 0x75, 0x05, 0xc6, 0x86, 0xfe, 0x00, 0x00, - 0xc3, 0x8b, 0xd0, 0xb8, 0x01, 0x00, 0xe9, 0xa3, 0x01, 0xc3, 0x80, 0xbe, 0xb2, 0x02, 0x01, 0x74, - 0x0e, 0x80, 0xbe, 0x07, 0x01, 0x01, 0x75, 0xf1, 0x80, 0xbe, 0x09, 0x01, 0x01, 0x74, 0xea, 0xc6, - 0x86, 0x09, 0x01, 0x01, 0xc6, 0x86, 0xb2, 0x02, 0x00, 0x80, 0xbe, 0xfe, 0x00, 0x01, 0x74, 0x0c, - 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x75, 0x08, 0x0d, 0x00, 0x08, 0xeb, 0x03, 0x0d, 0x00, 0x01, 0x80, - 0xbe, 0xaa, 0x02, 0x01, 0x74, 0x0a, 0x80, 0xbe, 0xac, 0x02, 0x01, 0x74, 0x03, 0x0d, 0x00, 0x04, - 0x80, 0xbe, 0xaa, 0x02, 0x01, 0x74, 0x0a, 0x80, 0xbe, 0xab, 0x02, 0x01, 0x74, 0x03, 0x0d, 0x00, - 0x02, 0xf7, 0x86, 0xa6, 0x02, 0x01, 0x00, 0x74, 0x03, 0x0d, 0x00, 0x08, 0xa9, 0x00, 0x80, 0x74, - 0x1d, 0xc7, 0x86, 0x2e, 0x01, 0x02, 0x00, 0xf6, 0x86, 0x2c, 0x01, 0x01, 0x74, 0x1d, 0x53, 0xbb, - 0x40, 0x60, 0x8e, 0xc3, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x02, 0x5b, 0xeb, 0x0d, 0x8a, 0x56, - 0x06, 0xd0, 0xe2, 0xd0, 0xe2, 0xd0, 0xe2, 0x24, 0x0f, 0x0a, 0xc2, 0x89, 0x86, 0x38, 0x02, 0x8b, - 0xd0, 0xb8, 0x02, 0x00, 0xe9, 0x92, 0x00, 0x8b, 0x96, 0x1e, 0x01, 0x8b, 0x86, 0x12, 0x01, 0xa9, - 0x00, 0x02, 0x74, 0x06, 0xf7, 0xc2, 0x05, 0x80, 0x74, 0x0e, 0xc6, 0x86, 0x07, 0x01, 0x00, 0xc6, - 0x86, 0x16, 0x01, 0x00, 0x81, 0xca, 0x80, 0x00, 0x33, 0xc0, 0x89, 0x86, 0x1e, 0x01, 0x89, 0x96, - 0x20, 0x01, 0xc7, 0x86, 0x38, 0x02, 0x00, 0x00, 0xf7, 0xc2, 0x01, 0x00, 0x75, 0x22, 0x83, 0xbe, - 0x2e, 0x01, 0x03, 0x74, 0x1b, 0xc7, 0x86, 0x2e, 0x01, 0x03, 0x00, 0xf6, 0x86, 0x2c, 0x01, 0x01, - 0x74, 0x0e, 0x53, 0xbb, 0x40, 0x60, 0x8e, 0xc3, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x02, 0x5b, - 0xb8, 0x03, 0x00, 0xeb, 0x34, 0x3b, 0xc0, 0x74, 0x00, 0x8b, 0xd0, 0xb8, 0x04, 0x00, 0xeb, 0x29, - 0xc3, 0xc6, 0x86, 0xce, 0x01, 0x00, 0xc6, 0x86, 0xcf, 0x01, 0x00, 0x55, 0x33, 0xed, 0xbe, 0x7a, - 0x5d, 0xe8, 0x22, 0xc5, 0x5d, 0xb8, 0x05, 0x00, 0xeb, 0x0f, 0xb8, 0x06, 0x00, 0xeb, 0x0a, 0xb8, - 0x07, 0x00, 0xeb, 0x05, 0xb8, 0x08, 0x00, 0xeb, 0x00, 0x8b, 0xb6, 0x60, 0x01, 0x3b, 0xb6, 0x5e, - 0x01, 0x75, 0x0a, 0xf7, 0x86, 0xb0, 0x15, 0x00, 0x80, 0x74, 0x02, 0xeb, 0x5f, 0x8b, 0x8e, 0x5e, - 0x01, 0x41, 0x80, 0xe1, 0x07, 0x3b, 0xf1, 0x75, 0x20, 0x46, 0x83, 0xe6, 0x07, 0x89, 0xb6, 0x60, - 0x01, 0x51, 0x8b, 0xce, 0xd1, 0xe1, 0xd1, 0xe1, 0x8d, 0xb6, 0x3e, 0x01, 0x03, 0xf1, 0x8b, 0x0c, - 0x83, 0xf9, 0x05, 0x74, 0x03, 0x0d, 0x00, 0x01, 0x59, 0x83, 0xf8, 0x04, 0x75, 0x1a, 0x51, 0xb9, - 0x08, 0x00, 0x8d, 0xb6, 0x3e, 0x01, 0x39, 0x04, 0x74, 0x08, 0x83, 0xc6, 0x04, 0xe2, 0xf7, 0x59, - 0xeb, 0x06, 0x89, 0x54, 0x02, 0x59, 0xeb, 0x13, 0x89, 0x8e, 0x5e, 0x01, 0xd1, 0xe1, 0xd1, 0xe1, - 0x8d, 0xb6, 0x3e, 0x01, 0x03, 0xf1, 0x89, 0x04, 0x89, 0x54, 0x02, 0xc3, 0x8d, 0xb6, 0xb0, 0x15, - 0x89, 0x54, 0x06, 0xc7, 0x44, 0x04, 0x08, 0x00, 0x3c, 0x05, 0x75, 0x05, 0xc7, 0x44, 0x04, 0x06, - 0x00, 0x25, 0xff, 0x7f, 0x89, 0x04, 0xb8, 0x40, 0x60, 0x8e, 0xc0, 0x26, 0xc7, 0x06, 0x30, 0x00, - 0x00, 0x20, 0xc3, 0x8b, 0x86, 0x14, 0x01, 0x89, 0x86, 0x12, 0x01, 0xc6, 0x46, 0x09, 0x1e, 0xc6, - 0x46, 0x08, 0x1e, 0xc6, 0x46, 0x0b, 0x00, 0xc7, 0x86, 0x28, 0x01, 0x00, 0x00, 0xc7, 0x86, 0x2a, - 0x01, 0x00, 0x00, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0xbe, 0xe4, 0x01, 0xb9, 0x2b, 0x00, - 0xf3, 0xab, 0xc7, 0x86, 0x2a, 0x02, 0xff, 0xff, 0x8e, 0x46, 0x02, 0xb8, 0x02, 0x00, 0xf7, 0x86, - 0xf4, 0x00, 0x80, 0x00, 0x74, 0x03, 0x83, 0xc8, 0x01, 0xf7, 0x86, 0xf4, 0x00, 0x40, 0x00, 0x74, - 0x03, 0x83, 0xc8, 0x04, 0xf7, 0x86, 0xf4, 0x00, 0x20, 0x00, 0x74, 0x03, 0x83, 0xc8, 0x08, 0x26, - 0xa3, 0x4e, 0x00, 0xb0, 0x02, 0xe8, 0x65, 0xc8, 0xf7, 0x86, 0xf4, 0x00, 0x00, 0x20, 0x74, 0x28, - 0xf7, 0x86, 0x12, 0x01, 0x00, 0x84, 0x74, 0x0c, 0xb8, 0x05, 0x00, 0xe8, 0x27, 0x00, 0xc6, 0x46, - 0x07, 0x42, 0xeb, 0x20, 0xf7, 0x86, 0xf6, 0x00, 0x80, 0x00, 0x74, 0x0c, 0xb8, 0x05, 0x00, 0xe8, - 0x13, 0x00, 0xc6, 0x46, 0x07, 0x42, 0xeb, 0x0c, 0xb8, 0x02, 0x00, 0xe8, 0x07, 0x00, 0xc6, 0x46, - 0x07, 0x02, 0xeb, 0x00, 0xc3, 0x50, 0xb0, 0x00, 0x88, 0x86, 0xaa, 0x02, 0x88, 0x86, 0xab, 0x02, - 0x88, 0x86, 0xac, 0x02, 0x88, 0x86, 0xad, 0x02, 0x88, 0x86, 0xaf, 0x02, 0x88, 0x86, 0xae, 0x02, - 0x58, 0x9c, 0xfa, 0x83, 0xf8, 0x02, 0x74, 0x13, 0x83, 0xf8, 0x05, 0x74, 0x0c, 0xc7, 0x46, 0x12, - 0x2c, 0x21, 0xc7, 0x46, 0x14, 0x2c, 0x21, 0xeb, 0x42, 0xeb, 0x21, 0xc6, 0x86, 0xaa, 0x02, 0x01, - 0xc6, 0x86, 0xae, 0x02, 0x01, 0xc6, 0x86, 0xaf, 0x02, 0x00, 0xc7, 0x46, 0x12, 0xf3, 0x36, 0xc7, - 0x46, 0x14, 0x21, 0x34, 0xc7, 0x86, 0xba, 0x01, 0x2c, 0x00, 0xeb, 0x1f, 0xc6, 0x86, 0xac, 0x02, - 0x01, 0xc6, 0x86, 0xae, 0x02, 0x00, 0xc6, 0x86, 0xaf, 0x02, 0x01, 0xc7, 0x46, 0x12, 0xf7, 0x36, - 0xc7, 0x46, 0x14, 0x25, 0x34, 0xc7, 0x86, 0xba, 0x01, 0x30, 0x00, 0x0e, 0xe8, 0x02, 0x00, 0xeb, - 0x01, 0xcf, 0xc3, 0x8c, 0x00, 0xf8, 0x4c, 0xbc, 0x02, 0x96, 0x00, 0x2e, 0x4d, 0x14, 0x00, 0x96, - 0x00, 0x42, 0x4d, 0x08, 0x07, 0x96, 0x00, 0x80, 0x4d, 0x6e, 0x00, 0x78, 0x00, 0xd2, 0x4f, 0x00, - 0x00, 0x6e, 0x00, 0x42, 0x4e, 0xf4, 0x01, 0x6e, 0x00, 0x72, 0x4e, 0x08, 0x07, 0x6e, 0x00, 0x8a, - 0x51, 0x02, 0x00, 0xaa, 0x00, 0xa6, 0x4e, 0xfa, 0x00, 0x8c, 0x00, 0xf6, 0x4e, 0x02, 0x00, 0x8c, - 0x00, 0x0c, 0x4e, 0x3c, 0x00, 0x78, 0x00, 0x62, 0x4f, 0x04, 0x01, 0x96, 0x00, 0x8e, 0x4f, 0x64, - 0x00, 0x96, 0x00, 0xb2, 0x4f, 0xdc, 0x05, 0xbe, 0x00, 0xe0, 0x50, 0xf4, 0x01, 0xa0, 0x00, 0x5c, - 0x52, 0xf4, 0x01, 0xbe, 0x00, 0x0a, 0x51, 0xf4, 0x01, 0x82, 0x00, 0x22, 0x55, 0x19, 0x00, 0x6e, - 0x00, 0x42, 0x52, 0x14, 0x00, 0x78, 0x00, 0x1e, 0x51, 0xc4, 0x09, 0x6e, 0x00, 0x32, 0x51, 0x02, - 0x00, 0xd2, 0x00, 0xac, 0x55, 0x2c, 0x01, 0x78, 0x00, 0x34, 0x54, 0xf0, 0x00, 0x6e, 0x00, 0xb4, - 0x52, 0x32, 0x00, 0xa0, 0x00, 0x16, 0x53, 0xbc, 0x02, 0x6e, 0x00, 0x28, 0x53, 0x08, 0x07, 0x6e, - 0x00, 0x36, 0x53, 0xe8, 0x03, 0x6e, 0x00, 0x48, 0x53, 0x14, 0x00, 0x96, 0x00, 0x54, 0x53, 0x64, - 0x00, 0xa0, 0x00, 0x42, 0x54, 0xf4, 0x01, 0xc8, 0x00, 0xe0, 0x4e, 0x02, 0x00, 0x6e, 0x00, 0x84, - 0x53, 0x04, 0x00, 0x8c, 0x00, 0x0c, 0x54, 0x14, 0x00, 0x6e, 0x00, 0xe6, 0x55, 0x84, 0x03, 0x96, - 0x00, 0xf4, 0x55, 0x02, 0x00, 0x82, 0x00, 0x34, 0x52, 0x14, 0x00, 0xb4, 0x00, 0x20, 0x56, 0x02, - 0x00, 0xdc, 0x00, 0xdc, 0x55, 0x64, 0x00, 0xa0, 0x00, 0x47, 0x55, 0x64, 0x00, 0xc8, 0x00, 0x5e, - 0x55, 0x03, 0x00, 0xd2, 0x00, 0xb0, 0x55, 0xf4, 0x01, 0xd2, 0x00, 0xc2, 0x55, 0x4c, 0x04, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x80, 0xbe, 0x58, 0x02, - 0x01, 0x75, 0x28, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x22, 0xf6, 0x86, 0x69, 0x02, 0x01, 0x74, 0x1c, - 0xe8, 0x10, 0xe0, 0xbe, 0xef, 0x4b, 0xe8, 0x2d, 0xc2, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8d, - 0xbe, 0xf2, 0x01, 0xab, 0xab, 0xab, 0xc6, 0x86, 0x69, 0x02, 0x00, 0xc3, 0xe8, 0xc8, 0xe2, 0xeb, - 0xdf, 0x90, 0x8a, 0x46, 0x08, 0x3c, 0x0a, 0x75, 0x0b, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x04, - 0xc6, 0x46, 0x09, 0x04, 0xc3, 0x90, 0x80, 0xbe, 0xab, 0x02, 0x01, 0x74, 0x32, 0x80, 0x7e, 0x08, - 0x06, 0x75, 0x2c, 0x80, 0x7e, 0x06, 0x0c, 0x75, 0x0f, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x08, - 0xb8, 0x07, 0x00, 0xe8, 0xcb, 0xd3, 0xeb, 0x17, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x10, 0xf6, - 0x86, 0x5d, 0x02, 0x01, 0x75, 0x09, 0xc6, 0x86, 0x5d, 0x02, 0x01, 0xc6, 0x46, 0x09, 0x08, 0xc3, - 0xe9, 0x84, 0x00, 0x90, 0x8a, 0x4e, 0x06, 0x8a, 0x56, 0x08, 0x80, 0xf9, 0x06, 0x74, 0xf1, 0x80, - 0xf9, 0x08, 0x74, 0x05, 0x80, 0xf9, 0x0a, 0x75, 0x0a, 0x80, 0xfa, 0x0c, 0x74, 0xe2, 0x80, 0xfa, - 0x04, 0x74, 0xdd, 0x80, 0xfa, 0x0c, 0x74, 0x05, 0x80, 0xfa, 0x04, 0x75, 0x59, 0xf6, 0x86, 0x67, - 0x02, 0x01, 0x74, 0x52, 0xe8, 0xd9, 0x02, 0xf6, 0x86, 0x65, 0x02, 0x01, 0x74, 0x0b, 0x81, 0x8e, - 0x0a, 0x02, 0x00, 0x80, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xc6, 0x46, 0x09, 0x06, 0x81, 0x8e, 0x0a, - 0x02, 0x00, 0x50, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xc6, 0x86, 0x6e, 0x02, 0x01, 0xc6, 0x86, 0x6d, - 0x02, 0x01, 0xc6, 0x86, 0x6f, 0x02, 0x01, 0xe8, 0x9c, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, - 0x4c, 0x00, 0xfe, 0x26, 0x81, 0x0e, 0x32, 0x00, 0x00, 0x80, 0xbe, 0xfb, 0x4b, 0xe8, 0x46, 0xc1, - 0xbe, 0x25, 0x4c, 0xe8, 0x40, 0xc1, 0xc3, 0xb8, 0x07, 0x00, 0xe8, 0x24, 0xd3, 0xeb, 0xf7, 0x90, - 0x80, 0xbe, 0xaa, 0x02, 0x01, 0x74, 0x02, 0xeb, 0x2b, 0x80, 0x7e, 0x06, 0x10, 0x75, 0x06, 0xc6, - 0x46, 0x07, 0x12, 0xeb, 0x1f, 0x80, 0x7e, 0x08, 0x08, 0x75, 0x19, 0xc6, 0x86, 0x6d, 0x02, 0x01, - 0xc6, 0x86, 0x6f, 0x02, 0x01, 0xe8, 0x4e, 0xc3, 0xbe, 0x61, 0x4c, 0xe8, 0x08, 0xc1, 0xbe, 0x67, - 0x4c, 0xe8, 0x02, 0xc1, 0xc3, 0x90, 0xf6, 0x86, 0x63, 0x02, 0x01, 0x74, 0x28, 0xc6, 0x86, 0x63, - 0x02, 0x00, 0x80, 0x7e, 0x08, 0x0a, 0x75, 0x06, 0xc6, 0x46, 0x09, 0x04, 0xeb, 0x17, 0x80, 0x7e, - 0x08, 0x06, 0x75, 0x11, 0xc6, 0x86, 0x6d, 0x02, 0x01, 0xe8, 0x1a, 0xc3, 0xbe, 0x25, 0x4c, 0xe8, - 0xd4, 0xc0, 0xe8, 0x09, 0xde, 0xc3, 0x8a, 0x46, 0x06, 0x3c, 0x04, 0x75, 0x1e, 0xf7, 0x86, 0xf6, - 0x00, 0x00, 0x10, 0x75, 0x0e, 0xc6, 0x46, 0x07, 0x06, 0xc6, 0x46, 0x06, 0x06, 0xc6, 0x46, 0x09, - 0x04, 0xeb, 0x16, 0xb8, 0x0d, 0x00, 0xe8, 0x98, 0xd2, 0xeb, 0x0e, 0x3c, 0x08, 0x72, 0x0a, 0x3c, - 0x0c, 0x77, 0x06, 0xb8, 0x05, 0x00, 0xe8, 0x88, 0xd2, 0xc3, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x33, - 0xf6, 0x86, 0x58, 0x02, 0x01, 0x75, 0x2c, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x25, 0x8e, 0x46, - 0x02, 0x26, 0xf7, 0x06, 0x54, 0x00, 0x03, 0x00, 0x74, 0x11, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, - 0x54, 0x00, 0x03, 0xbe, 0x1f, 0x4c, 0xe8, 0x6d, 0xc0, 0xeb, 0x08, 0xc6, 0x46, 0x09, 0x04, 0xff, - 0x86, 0x4e, 0x02, 0xc3, 0x80, 0x7e, 0x08, 0x18, 0x75, 0x0e, 0xbe, 0xa3, 0x4c, 0xe8, 0x56, 0xc0, - 0xe8, 0x9d, 0x01, 0xe8, 0x88, 0xdd, 0xeb, 0x00, 0xc3, 0x90, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x35, - 0x80, 0xbe, 0x5f, 0x02, 0x01, 0x75, 0x58, 0x80, 0xbe, 0x58, 0x02, 0x01, 0x74, 0x1f, 0xe8, 0x3d, - 0xde, 0x80, 0x7e, 0x06, 0x0a, 0x75, 0x16, 0xc6, 0x86, 0x67, 0x02, 0x01, 0xc6, 0x46, 0x07, 0x0c, - 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x40, 0x75, 0x05, 0xc6, 0x86, 0x62, 0x02, 0x01, 0xc3, 0xbe, 0x25, - 0x4c, 0xe8, 0x12, 0xc0, 0xc3, 0x8a, 0x46, 0x08, 0x3c, 0x04, 0x75, 0x0e, 0xbe, 0x25, 0x4c, 0xe8, - 0x04, 0xc0, 0xff, 0x86, 0xbc, 0x02, 0xe8, 0x6f, 0xdd, 0xc3, 0x3c, 0x06, 0x75, 0xdf, 0xf6, 0x86, - 0x63, 0x02, 0x01, 0x75, 0xd8, 0xbe, 0x25, 0x4c, 0xe8, 0xeb, 0xbf, 0xe8, 0x20, 0xdd, 0xc3, 0xc6, - 0x86, 0x6a, 0x02, 0x01, 0xc3, 0x90, 0x80, 0xbe, 0xab, 0x02, 0x01, 0x74, 0x22, 0x80, 0x7e, 0x06, - 0x0c, 0x75, 0x1b, 0xff, 0x86, 0xc2, 0x02, 0x83, 0xbe, 0xc2, 0x02, 0x04, 0x77, 0x0a, 0xbe, 0x31, - 0x4c, 0xe8, 0xc2, 0xbf, 0xe8, 0xbe, 0xde, 0xc3, 0xb8, 0x09, 0x00, 0xe8, 0xa3, 0xd1, 0xc3, 0xeb, - 0xfd, 0x90, 0x80, 0x7e, 0x08, 0x02, 0x75, 0x1d, 0x80, 0xbe, 0x62, 0x02, 0x01, 0x74, 0x08, 0xb8, - 0x05, 0x00, 0xe8, 0x8c, 0xd1, 0xeb, 0x0e, 0xff, 0x86, 0x4e, 0x02, 0xc6, 0x46, 0x09, 0x04, 0xb8, - 0x00, 0x01, 0xe8, 0x73, 0xe0, 0xc3, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x16, 0x80, 0xbe, 0x58, 0x02, - 0x01, 0x74, 0x07, 0x80, 0xbe, 0x62, 0x02, 0x00, 0x74, 0x08, 0xff, 0x86, 0x4e, 0x02, 0xc6, 0x46, - 0x09, 0x04, 0xc3, 0xe9, 0xb8, 0x00, 0xf6, 0x86, 0xaf, 0x02, 0x01, 0x75, 0x07, 0xf6, 0x86, 0x62, - 0x02, 0x01, 0x74, 0xef, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x80, 0x74, 0x06, 0xbe, 0x07, 0x4c, 0xe8, - 0x54, 0xbf, 0x8d, 0xbe, 0xdc, 0x02, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x05, 0x00, 0x33, 0xc0, 0xf3, - 0xaf, 0x74, 0xd0, 0x80, 0xbe, 0xaa, 0x02, 0x01, 0x74, 0x45, 0x80, 0xbe, 0xab, 0x02, 0x01, 0x74, - 0x5f, 0x80, 0xbe, 0xac, 0x02, 0x01, 0x74, 0x09, 0x80, 0xbe, 0xad, 0x02, 0x01, 0x74, 0x51, 0xeb, - 0x6d, 0xc7, 0x86, 0xc0, 0x02, 0x04, 0x00, 0x81, 0x8e, 0x0a, 0x02, 0x00, 0x20, 0xc6, 0x86, 0x89, - 0x02, 0x01, 0xf6, 0x86, 0x72, 0x02, 0x01, 0x74, 0x14, 0x80, 0x7e, 0x08, 0x16, 0x75, 0x0e, 0xc6, - 0x86, 0x5a, 0x02, 0x00, 0xe8, 0x18, 0xde, 0xc7, 0x86, 0x2e, 0x02, 0x03, 0x00, 0xeb, 0x3f, 0xc7, - 0x86, 0xc0, 0x02, 0x04, 0x00, 0xc6, 0x86, 0x5a, 0x02, 0x00, 0xe8, 0x02, 0xde, 0xc7, 0x86, 0x2e, - 0x02, 0x03, 0x00, 0x81, 0x8e, 0x0a, 0x02, 0x00, 0x20, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xeb, 0x1e, - 0xc7, 0x86, 0xc0, 0x02, 0x04, 0x00, 0x81, 0x8e, 0x0a, 0x02, 0x00, 0x20, 0xc6, 0x86, 0x89, 0x02, - 0x01, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x80, 0x75, 0x05, 0xc6, 0x86, 0x5a, 0x02, 0x00, 0xc3, 0x90, - 0xc7, 0x86, 0x36, 0x02, 0x06, 0x00, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x18, 0xb8, 0x00, 0x02, - 0x80, 0xbe, 0x65, 0x02, 0x01, 0x74, 0x37, 0xf6, 0x86, 0xac, 0x02, 0x01, 0x75, 0x07, 0xf6, 0x86, - 0xad, 0x02, 0x01, 0x74, 0x05, 0xb8, 0x00, 0x05, 0xeb, 0x24, 0xb8, 0x00, 0x04, 0xc7, 0x86, 0x36, - 0x02, 0x04, 0x00, 0x8a, 0x4e, 0x08, 0x80, 0xf9, 0x0c, 0x74, 0x13, 0xb8, 0x00, 0x04, 0x80, 0xbe, - 0x5e, 0x02, 0x01, 0x74, 0x09, 0xb8, 0x00, 0x03, 0xc7, 0x86, 0x36, 0x02, 0x07, 0x00, 0x89, 0x86, - 0x0c, 0x03, 0xc3, 0x90, 0x80, 0x7e, 0x08, 0x08, 0x74, 0x23, 0x8a, 0x46, 0x06, 0x3c, 0x04, 0x72, - 0x1c, 0x3c, 0x48, 0x74, 0x04, 0x3c, 0x0e, 0x77, 0x14, 0xf6, 0x86, 0x61, 0x02, 0x01, 0x74, 0x0d, - 0xf6, 0x86, 0x60, 0x02, 0x01, 0x74, 0x06, 0xb8, 0x0c, 0x00, 0xe8, 0x24, 0xd0, 0xc3, 0xc6, 0x86, - 0x61, 0x02, 0x01, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x44, 0x00, 0xff, 0xf7, 0xe8, 0xcc, 0x03, - 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x02, 0x74, 0x06, 0x80, 0x7e, 0x08, 0x08, 0x75, 0x06, 0xb8, 0x01, - 0x00, 0xe8, 0xfd, 0xcf, 0xc3, 0x90, 0x51, 0x52, 0x56, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x75, 0x02, - 0xeb, 0x48, 0x33, 0xd2, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xe8, 0x3a, 0xc0, 0x8d, 0xb6, 0xa6, 0x01, - 0x8d, 0xbe, 0xac, 0x01, 0x8c, 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, 0xc6, 0x86, 0x87, 0x02, 0x00, - 0xb0, 0x00, 0xe8, 0xed, 0xe1, 0xc6, 0x86, 0x68, 0x01, 0x02, 0xc7, 0x86, 0x66, 0x01, 0x20, 0x03, - 0xbe, 0x19, 0x4c, 0xe8, 0xd0, 0xbd, 0x8b, 0xb6, 0x64, 0x01, 0xb9, 0xe8, 0x03, 0x8e, 0x46, 0x02, - 0x26, 0xc7, 0x06, 0x5c, 0x00, 0x00, 0x00, 0xe8, 0x08, 0xdc, 0x5e, 0x5a, 0x59, 0xc3, 0x80, 0x7e, - 0x06, 0x02, 0x74, 0x0f, 0x80, 0x7e, 0x06, 0x44, 0x74, 0x09, 0x80, 0x7e, 0x08, 0x08, 0x74, 0x03, - 0xe9, 0x94, 0x00, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x75, 0x26, 0xf6, 0x86, 0x76, 0x02, 0x01, 0x74, - 0x0b, 0xbe, 0x19, 0x4c, 0xe8, 0x8f, 0xbd, 0xe8, 0x3a, 0xdf, 0xeb, 0x7b, 0xf6, 0x86, 0x77, 0x02, - 0x01, 0x74, 0x0d, 0xc6, 0x86, 0x77, 0x02, 0x00, 0xbe, 0x19, 0x4c, 0xe8, 0x78, 0xbd, 0xeb, 0x67, - 0xfe, 0x8e, 0x68, 0x01, 0x75, 0x05, 0xe8, 0xc5, 0x04, 0xeb, 0x5c, 0xbe, 0x19, 0x4c, 0xe8, 0x65, - 0xbd, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x75, 0x08, 0xb9, 0x5a, 0x00, 0xe8, 0x07, 0xdc, 0xeb, 0x47, - 0xe8, 0x4a, 0xb8, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x4c, 0x00, 0x00, 0x01, 0x90, 0x8e, 0x46, - 0x02, 0x26, 0x81, 0x26, 0x4c, 0x00, 0xff, 0xfe, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x5c, 0x00, - 0x00, 0x00, 0x8b, 0xb6, 0x64, 0x01, 0xb9, 0xe8, 0x03, 0xc6, 0x86, 0x8a, 0x02, 0x01, 0x83, 0xbe, - 0x66, 0x01, 0x01, 0x75, 0x07, 0xe8, 0x51, 0xdb, 0xeb, 0x0d, 0xeb, 0x05, 0xe8, 0x63, 0xdb, 0xeb, - 0x06, 0xb8, 0x01, 0x00, 0xe8, 0xfa, 0xce, 0xc3, 0x80, 0x7e, 0x06, 0x44, 0x75, 0x07, 0xf6, 0x86, - 0x76, 0x02, 0x01, 0x75, 0xec, 0xc3, 0xf7, 0x86, 0xf6, 0x00, 0x80, 0x00, 0x74, 0x10, 0x80, 0x7e, - 0x06, 0x14, 0x75, 0x0a, 0xb8, 0x05, 0x00, 0xe8, 0x1b, 0xf9, 0xc6, 0x46, 0x07, 0x42, 0xc3, 0x90, - 0x80, 0xbe, 0xab, 0x02, 0x01, 0x74, 0x4e, 0xc6, 0x86, 0x70, 0x02, 0x00, 0x80, 0x7e, 0x08, 0x08, - 0x75, 0x2c, 0xf6, 0x86, 0x71, 0x02, 0x01, 0x74, 0x25, 0xe9, 0xdf, 0xcc, 0xbe, 0x2b, 0x4c, 0xe8, - 0xc4, 0xbc, 0x8e, 0x46, 0x02, 0xf6, 0x06, 0x81, 0x5e, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x42, - 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xe8, 0x35, 0x09, 0xeb, 0x16, 0x80, 0x7e, - 0x06, 0x10, 0x75, 0x10, 0xc6, 0x46, 0x09, 0x00, 0xc6, 0x86, 0x58, 0x02, 0x00, 0xc6, 0x86, 0x6c, - 0x02, 0x00, 0xeb, 0xc8, 0xc3, 0xeb, 0xfd, 0x90, 0x80, 0x7e, 0x06, 0x42, 0x75, 0x14, 0x80, 0xbe, - 0xfe, 0x00, 0x02, 0x72, 0x27, 0xf6, 0x86, 0x74, 0x02, 0x01, 0x75, 0x08, 0xb8, 0x02, 0x00, 0xe8, - 0x02, 0x04, 0xeb, 0x45, 0xc7, 0x86, 0x34, 0x05, 0x00, 0x02, 0xc7, 0x86, 0x30, 0x05, 0x00, 0x02, - 0xc6, 0x86, 0x79, 0x02, 0x01, 0xc6, 0x86, 0xb0, 0x02, 0x00, 0xeb, 0x1e, 0xc6, 0x86, 0xb0, 0x02, - 0x01, 0xc7, 0x86, 0x34, 0x05, 0x00, 0x02, 0xc7, 0x86, 0x30, 0x05, 0x00, 0x01, 0xf6, 0x86, 0x78, - 0x02, 0x01, 0x74, 0x06, 0xc7, 0x86, 0x34, 0x05, 0x00, 0x06, 0xc7, 0x86, 0xd8, 0x02, 0x05, 0x00, - 0xbe, 0xa9, 0x4c, 0xe8, 0x30, 0xbc, 0xe8, 0x5f, 0xdd, 0xc3, 0x80, 0x7e, 0x08, 0x18, 0x74, 0x06, - 0x80, 0x7e, 0x08, 0x1a, 0x75, 0x04, 0xc6, 0x46, 0x09, 0x1c, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x46, - 0x75, 0x06, 0xb8, 0x05, 0x00, 0xe8, 0xf9, 0xcd, 0xc3, 0x90, 0x80, 0x7e, 0x08, 0x1c, 0x75, 0x0a, - 0x80, 0x7e, 0x06, 0x48, 0x75, 0x04, 0xc6, 0x46, 0x07, 0x44, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x42, - 0x75, 0x04, 0xc6, 0x46, 0x07, 0x44, 0xc3, 0x90, 0xf6, 0x86, 0x73, 0x02, 0x01, 0x74, 0x27, 0xf6, - 0x46, 0x06, 0x46, 0x75, 0x18, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x11, 0xc6, 0x86, 0x6f, 0x02, - 0x01, 0xc6, 0x86, 0x7a, 0x02, 0x01, 0xe8, 0x0d, 0xbe, 0xff, 0x86, 0xd6, 0x02, 0xe8, 0xce, 0xd9, - 0xbe, 0x97, 0x4c, 0xe8, 0xc0, 0xbb, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x42, 0x75, 0x35, 0xf6, 0x86, - 0x7b, 0x02, 0x01, 0x75, 0x2e, 0x83, 0xbe, 0xd8, 0x02, 0x00, 0x74, 0x29, 0xff, 0x8e, 0xd8, 0x02, - 0xbe, 0xa9, 0x4c, 0xe8, 0xa0, 0xbb, 0x80, 0xbe, 0xfe, 0x00, 0x01, 0x77, 0x13, 0xc7, 0x86, 0x34, - 0x05, 0x00, 0x02, 0xf6, 0x86, 0x78, 0x02, 0x01, 0x74, 0x06, 0xc7, 0x86, 0x34, 0x05, 0x00, 0x06, - 0xe8, 0xb5, 0xdc, 0xeb, 0x49, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x10, 0x74, 0x1c, 0x80, 0xbe, 0xfe, - 0x00, 0x00, 0x74, 0x08, 0xb8, 0x06, 0x00, 0xe8, 0xfa, 0x02, 0xeb, 0x32, 0xf7, 0x86, 0xf6, 0x00, - 0x00, 0x10, 0x74, 0x05, 0xc6, 0x86, 0xfe, 0x00, 0x01, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x18, - 0xf7, 0x86, 0xf4, 0x00, 0x00, 0x10, 0x74, 0x10, 0xb8, 0x02, 0x00, 0xe8, 0x77, 0xf7, 0xc6, 0x46, - 0x09, 0x1e, 0xc6, 0x46, 0x07, 0x02, 0xeb, 0x06, 0xb8, 0x06, 0x00, 0xe8, 0x23, 0xcd, 0xc3, 0x90, - 0x80, 0x7e, 0x06, 0x46, 0x75, 0x21, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x74, 0x11, 0xc6, 0x86, 0x6f, - 0x02, 0x01, 0xc6, 0x86, 0x7a, 0x02, 0x01, 0xe8, 0x5c, 0xbd, 0xff, 0x86, 0xd6, 0x02, 0xbe, 0xaf, - 0x4c, 0xe8, 0x12, 0xbb, 0xe8, 0x83, 0xdc, 0xc3, 0x80, 0x7e, 0x06, 0x44, 0x75, 0x06, 0xb8, 0x05, - 0x00, 0xe8, 0xed, 0xcc, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x46, 0x75, 0x08, 0xb8, 0x06, 0x00, 0xe8, - 0xdf, 0xcc, 0xeb, 0x17, 0x80, 0x7e, 0x08, 0x16, 0x75, 0x11, 0xc7, 0x86, 0x2e, 0x02, 0x04, 0x00, - 0xf6, 0x86, 0x72, 0x02, 0x01, 0x74, 0x04, 0xc6, 0x46, 0x09, 0x18, 0xc3, 0x8e, 0x46, 0x02, 0x26, - 0x8b, 0x16, 0x42, 0x00, 0xf7, 0xc2, 0x02, 0x00, 0x74, 0x14, 0x8b, 0xc2, 0x83, 0xe0, 0xfd, 0x8e, - 0x46, 0x02, 0x26, 0xa3, 0x42, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x89, 0x16, 0x42, 0x00, 0xc3, 0x90, - 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x54, 0x00, 0x03, 0x00, 0x74, 0x10, 0x8e, 0x46, 0x02, 0x26, - 0x83, 0x26, 0x54, 0x00, 0x03, 0xc6, 0x86, 0x59, 0x02, 0x01, 0xeb, 0x00, 0xf6, 0x86, 0x59, 0x02, - 0x01, 0x75, 0x14, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x0e, 0xc6, 0x46, 0x09, 0x02, 0xff, 0x86, 0x44, - 0x02, 0x81, 0x8e, 0xe6, 0x02, 0x00, 0x02, 0xc6, 0x86, 0x59, 0x02, 0x00, 0xc3, 0x90, 0xf7, 0x86, - 0xf4, 0x00, 0x00, 0x10, 0x75, 0x15, 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x54, 0x00, 0x03, 0x00, - 0x74, 0x09, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x54, 0x00, 0x03, 0xc3, 0x80, 0xbe, 0xb0, 0x02, - 0x01, 0x75, 0x32, 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x54, 0x00, 0x08, 0x00, 0x74, 0x21, 0xf6, - 0x86, 0x61, 0x02, 0x01, 0x74, 0x1f, 0xf6, 0x86, 0x60, 0x02, 0x01, 0x75, 0x18, 0xc7, 0x86, 0x2e, - 0x02, 0x0a, 0x00, 0xbe, 0x43, 0x4c, 0xe8, 0x2d, 0xba, 0xc6, 0x86, 0x60, 0x02, 0x01, 0xeb, 0x05, - 0xc6, 0x86, 0x60, 0x02, 0x00, 0xc3, 0xbe, 0x55, 0x4c, 0xe8, 0x1a, 0xba, 0x33, 0xc0, 0x87, 0x86, - 0xcc, 0x02, 0x0b, 0xc0, 0x75, 0x14, 0x80, 0xbe, 0x65, 0x02, 0x00, 0x74, 0x0d, 0xc6, 0x86, 0x65, - 0x02, 0x00, 0x80, 0xa6, 0x0b, 0x02, 0x7f, 0xe8, 0x46, 0xfb, 0xc3, 0x80, 0x7e, 0x06, 0x12, 0x75, - 0x10, 0xc6, 0x86, 0x08, 0x01, 0x01, 0xc6, 0x86, 0x09, 0x01, 0x00, 0xe8, 0x7b, 0xf3, 0xe8, 0x72, - 0xf5, 0xc3, 0xf6, 0x86, 0x6e, 0x01, 0x01, 0x74, 0x15, 0x80, 0xbe, 0x70, 0x01, 0x03, 0x73, 0x07, - 0xc6, 0x86, 0x6c, 0x01, 0x01, 0xeb, 0x23, 0xc6, 0x86, 0x6e, 0x01, 0x00, 0xeb, 0x1c, 0xf6, 0x86, - 0x6f, 0x01, 0x01, 0x74, 0x15, 0x80, 0xbe, 0x71, 0x01, 0x03, 0x73, 0x07, 0xc6, 0x86, 0x6d, 0x01, - 0x01, 0xeb, 0x07, 0xc6, 0x86, 0x6f, 0x01, 0x00, 0xeb, 0x00, 0xc3, 0xf7, 0x86, 0xb0, 0x15, 0x00, - 0x80, 0x75, 0x07, 0x83, 0xbe, 0xb0, 0x15, 0x05, 0x74, 0x05, 0xc6, 0x86, 0xce, 0x01, 0x01, 0xc3, - 0xe8, 0xd2, 0xcc, 0xc3, 0xf7, 0x86, 0xf6, 0x00, 0x08, 0x00, 0x74, 0x09, 0xe8, 0x6b, 0xf4, 0xbe, - 0xe5, 0x4c, 0xe8, 0x81, 0xb9, 0xc3, 0xf7, 0x86, 0xf6, 0x00, 0x08, 0x00, 0x74, 0x11, 0x81, 0x8e, - 0x0a, 0x02, 0x00, 0x04, 0xc6, 0x86, 0x89, 0x02, 0x01, 0xb8, 0x10, 0x00, 0xe8, 0x52, 0xcb, 0xc3, - 0x8b, 0x86, 0x30, 0x01, 0x88, 0xa6, 0x2c, 0x01, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x4a, 0x75, 0x06, - 0xb8, 0x04, 0x00, 0xe8, 0x3b, 0xcb, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x4c, 0x75, 0x25, 0xf6, 0x86, - 0x74, 0x02, 0x01, 0x74, 0x07, 0x83, 0xbe, 0xda, 0x02, 0x00, 0x75, 0x0a, 0xc6, 0x46, 0x07, 0x12, - 0xc6, 0x46, 0x09, 0x1e, 0xeb, 0x0d, 0xff, 0x8e, 0xda, 0x02, 0xbe, 0xbb, 0x4c, 0xe8, 0x26, 0xb9, - 0xe8, 0xed, 0xda, 0xc3, 0x80, 0xbe, 0xfe, 0x00, 0x02, 0x75, 0x2e, 0x8a, 0x3e, 0x80, 0x5e, 0xb3, - 0x01, 0xe8, 0x6e, 0xbf, 0xf6, 0x86, 0x74, 0x02, 0x01, 0x74, 0x24, 0xa9, 0x04, 0x00, 0x75, 0x1d, - 0xff, 0x8e, 0xb5, 0x02, 0x75, 0x15, 0xc6, 0x86, 0x74, 0x02, 0x00, 0x8a, 0x4e, 0x06, 0x80, 0xf9, - 0x42, 0x74, 0x08, 0xb8, 0x02, 0x00, 0xe8, 0xd8, 0xca, 0xeb, 0x41, 0xeb, 0x39, 0xeb, 0x31, 0xa9, - 0x04, 0x00, 0x74, 0x2c, 0xc6, 0x86, 0x74, 0x02, 0x01, 0x8a, 0x4e, 0x06, 0x80, 0xf9, 0x4a, 0x75, - 0x1d, 0xc6, 0x46, 0x07, 0x42, 0xc6, 0x46, 0x06, 0x42, 0xe8, 0x8a, 0xbe, 0xbe, 0x79, 0x4c, 0xe8, - 0xc4, 0xb8, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x44, 0x00, 0x32, 0xfe, 0xeb, 0x08, 0xeb, 0x06, - 0xc7, 0x86, 0xb5, 0x02, 0x02, 0x00, 0xbe, 0xc7, 0x4c, 0xe8, 0xaa, 0xb8, 0xc3, 0x90, 0xf7, 0x86, - 0xf6, 0x00, 0x00, 0x10, 0x74, 0x26, 0x80, 0x8e, 0xfe, 0x00, 0x00, 0x74, 0x1f, 0xfe, 0x8e, 0xfe, - 0x00, 0xc6, 0x86, 0x6d, 0x02, 0x01, 0xc6, 0x86, 0x6f, 0x02, 0x01, 0xe8, 0xc8, 0xba, 0xbe, 0x61, - 0x4c, 0xe8, 0x82, 0xb8, 0xbe, 0x67, 0x4c, 0xe8, 0x7c, 0xb8, 0xeb, 0x06, 0xb8, 0x01, 0x00, 0xe8, - 0x5f, 0xca, 0xc3, 0x90, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x10, 0x74, 0x32, 0x80, 0x8e, 0xfe, 0x00, - 0x00, 0x74, 0x2b, 0xfe, 0x8e, 0xfe, 0x00, 0xbe, 0x79, 0x4c, 0xe8, 0x59, 0xb8, 0xb0, 0x02, 0xe8, - 0xab, 0xbc, 0xc6, 0x86, 0x6d, 0x02, 0x01, 0xc6, 0x86, 0x6f, 0x02, 0x01, 0xe8, 0x87, 0xba, 0x8e, - 0x46, 0x02, 0x26, 0x81, 0x0e, 0x40, 0x00, 0x00, 0x1e, 0xe8, 0xfa, 0xbd, 0xeb, 0x03, 0xe8, 0x20, - 0xca, 0xc3, 0xf6, 0x86, 0x95, 0x02, 0x01, 0x74, 0x07, 0xa8, 0x24, 0x74, 0x03, 0xe8, 0xb0, 0xcb, - 0xf6, 0x86, 0xae, 0x02, 0x01, 0x74, 0x09, 0x80, 0xbe, 0x62, 0x02, 0x01, 0x75, 0x58, 0xeb, 0x09, - 0xf6, 0x86, 0x72, 0x02, 0x01, 0x75, 0x10, 0xeb, 0x52, 0x80, 0x7e, 0x06, 0x0e, 0x74, 0x02, 0xeb, - 0x45, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x3f, 0xa8, 0x01, 0x74, 0x05, 0x83, 0x8e, 0xe6, 0x02, 0x10, - 0xa8, 0x04, 0x74, 0x05, 0x83, 0x8e, 0xe6, 0x02, 0x04, 0xa8, 0x08, 0x74, 0x05, 0x83, 0x8e, 0xe6, - 0x02, 0x40, 0xa8, 0x20, 0x74, 0x10, 0x81, 0x8e, 0xe6, 0x02, 0x00, 0x01, 0xf6, 0x86, 0x58, 0x02, - 0x01, 0x75, 0x03, 0xe8, 0xaa, 0xbc, 0xa8, 0x40, 0x74, 0x05, 0x83, 0x8e, 0xe6, 0x02, 0x01, 0xa8, - 0x80, 0x74, 0x03, 0xe8, 0x52, 0x00, 0xa9, 0x00, 0x01, 0x75, 0x01, 0xc3, 0x50, 0x80, 0x7e, 0x08, - 0x0a, 0x75, 0x06, 0xc6, 0x46, 0x09, 0x04, 0xeb, 0x1b, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x23, 0xc6, - 0x46, 0x09, 0x02, 0xff, 0x86, 0x44, 0x02, 0xf6, 0x86, 0x62, 0x02, 0x01, 0x74, 0x06, 0x81, 0x8e, - 0xe6, 0x02, 0x00, 0x02, 0xc6, 0x86, 0x6d, 0x02, 0x01, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x4c, - 0x00, 0x10, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x48, 0x00, 0x00, 0x00, 0x8e, 0x46, 0x02, 0x26, - 0xc7, 0x06, 0x48, 0x00, 0x00, 0x01, 0x58, 0xc3, 0x83, 0x8e, 0xe6, 0x02, 0x20, 0x83, 0x7e, 0x06, - 0x08, 0x75, 0x13, 0x8b, 0x8e, 0xce, 0x02, 0x41, 0x89, 0x8e, 0xce, 0x02, 0x80, 0xf9, 0x02, 0x75, - 0x05, 0x50, 0xe8, 0x84, 0xd5, 0x58, 0xc3, 0x50, 0x53, 0x51, 0x8a, 0x4e, 0x06, 0x80, 0xf9, 0x0e, - 0x74, 0x1e, 0x80, 0xf9, 0x48, 0x74, 0x19, 0x80, 0xbe, 0x58, 0x02, 0x01, 0x74, 0x46, 0x80, 0xf9, - 0x08, 0x72, 0x41, 0x80, 0xf9, 0x0e, 0x77, 0x3c, 0xb8, 0x02, 0x00, 0xe8, 0x13, 0xc9, 0xeb, 0x34, - 0xc7, 0x86, 0x2e, 0x02, 0x05, 0x00, 0xc6, 0x86, 0x65, 0x02, 0x01, 0x8a, 0x46, 0x08, 0x3c, 0x06, - 0x74, 0x26, 0x3c, 0x02, 0x74, 0x51, 0x3c, 0x08, 0x74, 0x1a, 0x3c, 0x04, 0x74, 0x16, 0xf6, 0x86, - 0xac, 0x02, 0x01, 0x75, 0x13, 0xf6, 0x86, 0xad, 0x02, 0x01, 0x75, 0x0c, 0xc6, 0x46, 0x09, 0x04, - 0xff, 0x86, 0x4e, 0x02, 0x59, 0x5b, 0x58, 0xc3, 0x8b, 0x86, 0x0a, 0x02, 0xf6, 0xc4, 0x80, 0x75, - 0x0c, 0x80, 0xcc, 0x80, 0x89, 0x86, 0x0a, 0x02, 0xc6, 0x86, 0x89, 0x02, 0x01, 0x81, 0xbe, 0x0c, - 0x03, 0x00, 0x02, 0x74, 0xdf, 0xc7, 0x86, 0x0c, 0x03, 0x00, 0x02, 0xf6, 0x86, 0xaa, 0x02, 0x01, - 0x74, 0xd2, 0xe8, 0xf9, 0xd3, 0xeb, 0xcd, 0xb8, 0x00, 0x01, 0xe8, 0x9b, 0xd7, 0xf6, 0x86, 0x62, - 0x02, 0x01, 0x74, 0xc0, 0xc6, 0x46, 0x09, 0x04, 0xeb, 0xba, 0xfa, 0xc7, 0x06, 0x30, 0x00, 0xb6, - 0x0e, 0x8c, 0x0e, 0x32, 0x00, 0xb8, 0x00, 0x00, 0xe7, 0x06, 0xb8, 0xea, 0x09, 0xe7, 0x00, 0xb8, - 0x09, 0x00, 0xe7, 0x06, 0xb0, 0x7f, 0xe8, 0x5c, 0xb3, 0xc6, 0x06, 0x82, 0x5e, 0x80, 0xfb, 0xc3, - 0xf7, 0x86, 0x82, 0x01, 0x01, 0x00, 0x74, 0x1a, 0xc7, 0x86, 0x82, 0x01, 0x00, 0x00, 0xf6, 0x86, - 0x6e, 0x01, 0x01, 0x74, 0x0d, 0xc6, 0x86, 0x6e, 0x01, 0x00, 0xbe, 0xd9, 0x4c, 0xe8, 0x18, 0xb7, - 0xeb, 0x00, 0xf7, 0x86, 0x8a, 0x01, 0x01, 0x00, 0x74, 0x45, 0xc7, 0x86, 0x8a, 0x01, 0x00, 0x00, - 0xf6, 0x86, 0x6f, 0x01, 0x01, 0x74, 0x0d, 0xc6, 0x86, 0x6f, 0x01, 0x00, 0xbe, 0xd9, 0x4c, 0xe8, - 0xf6, 0xb6, 0xeb, 0x2b, 0x80, 0x7e, 0x06, 0x0e, 0x74, 0x06, 0x80, 0x7e, 0x06, 0x48, 0x75, 0x1f, - 0xf6, 0x86, 0x61, 0x02, 0x01, 0x74, 0x18, 0xf6, 0x86, 0x60, 0x02, 0x01, 0x75, 0x11, 0xc6, 0x86, - 0x60, 0x02, 0x01, 0xc7, 0x86, 0x2e, 0x02, 0x0a, 0x00, 0xb8, 0x0c, 0x00, 0xe8, 0x02, 0xc8, 0xc3, - 0xb9, 0x01, 0x00, 0x33, 0xdb, 0x8b, 0xaf, 0x48, 0x5d, 0x8e, 0x46, 0x02, 0x26, 0x8b, 0x16, 0x54, - 0x00, 0x83, 0xe2, 0x08, 0x26, 0xa1, 0x72, 0x00, 0xd1, 0xe8, 0xd0, 0xe8, 0x86, 0xe0, 0xf7, 0xc2, - 0x08, 0x00, 0x75, 0x02, 0xeb, 0x67, 0x83, 0xbe, 0x74, 0x01, 0x00, 0x75, 0x04, 0x88, 0xa6, 0x78, - 0x01, 0x81, 0xbe, 0x74, 0x01, 0xbc, 0x02, 0x72, 0x06, 0xc7, 0x86, 0x74, 0x01, 0xf4, 0x01, 0x8a, - 0xc4, 0x2a, 0xe4, 0x83, 0xf8, 0x7f, 0x75, 0x12, 0x8b, 0x86, 0x74, 0x01, 0xbe, 0xeb, 0x09, 0xf7, - 0xe6, 0xbe, 0x20, 0x00, 0xf7, 0xf6, 0x03, 0x86, 0x78, 0x01, 0x89, 0x86, 0x7c, 0x01, 0xff, 0x86, - 0x74, 0x01, 0x83, 0xbe, 0x7c, 0x01, 0x7d, 0x72, 0x21, 0x83, 0xbe, 0x88, 0x01, 0x01, 0x74, 0x1a, - 0xc7, 0x86, 0x88, 0x01, 0x01, 0x00, 0xc7, 0x86, 0x8a, 0x01, 0x01, 0x00, 0xa1, 0x32, 0x5d, 0x89, - 0x86, 0x8c, 0x01, 0xa1, 0x34, 0x5d, 0x89, 0x86, 0x8e, 0x01, 0xe9, 0x94, 0x00, 0x83, 0xbe, 0x76, - 0x01, 0x00, 0x75, 0x04, 0x88, 0x86, 0x7a, 0x01, 0x81, 0xbe, 0x76, 0x01, 0xbc, 0x02, 0x72, 0x06, - 0xc7, 0x86, 0x76, 0x01, 0xf4, 0x01, 0x2a, 0xe4, 0x83, 0xf8, 0x7f, 0x75, 0x12, 0x8b, 0x86, 0x76, - 0x01, 0xbe, 0xeb, 0x09, 0xf7, 0xe6, 0xbe, 0x20, 0x00, 0xf7, 0xf6, 0x03, 0x86, 0x7a, 0x01, 0x89, - 0x86, 0x7e, 0x01, 0xff, 0x86, 0x76, 0x01, 0x83, 0xbe, 0x80, 0x01, 0x01, 0x74, 0x53, 0x83, 0xf8, - 0x1f, 0x72, 0x4e, 0x8d, 0xb6, 0x96, 0x01, 0x83, 0x3c, 0x12, 0x72, 0x45, 0x83, 0x3c, 0x23, 0x77, - 0x40, 0x83, 0x7c, 0x02, 0x1f, 0x72, 0x3a, 0x83, 0x7c, 0x02, 0x45, 0x77, 0x34, 0x83, 0x7c, 0x04, - 0x12, 0x72, 0x2e, 0x90, 0x83, 0x7c, 0x04, 0x23, 0x77, 0x27, 0x81, 0x7c, 0x06, 0x9c, 0x00, 0x72, - 0x20, 0xc7, 0x86, 0x80, 0x01, 0x01, 0x00, 0xc7, 0x86, 0x82, 0x01, 0x01, 0x00, 0xc7, 0x86, 0x88, - 0x01, 0x00, 0x00, 0xa1, 0x32, 0x5d, 0x89, 0x86, 0x84, 0x01, 0xa1, 0x34, 0x5d, 0x89, 0x86, 0x86, - 0x01, 0x83, 0xc3, 0x02, 0x49, 0x74, 0x03, 0xe9, 0xdb, 0xfe, 0xc3, 0x50, 0x51, 0x52, 0x56, 0x57, - 0x8e, 0x46, 0x02, 0x83, 0x86, 0x90, 0x01, 0x01, 0x83, 0x96, 0x92, 0x01, 0x00, 0xc7, 0x86, 0x80, - 0x01, 0x00, 0x00, 0x26, 0xa1, 0x72, 0x00, 0xd1, 0xe8, 0xd0, 0xe8, 0x86, 0xe0, 0x8d, 0xb6, 0x96, - 0x01, 0x26, 0x8b, 0x0e, 0x54, 0x00, 0x83, 0xe1, 0x08, 0x89, 0x8e, 0x94, 0x01, 0xf7, 0xc1, 0x08, - 0x00, 0x74, 0x4f, 0x8b, 0x4c, 0x0a, 0x89, 0x4c, 0x0e, 0x8b, 0x4c, 0x06, 0x89, 0x4c, 0x0a, 0x8b, - 0x4c, 0x02, 0x89, 0x4c, 0x06, 0x2a, 0xe4, 0x8b, 0xc8, 0x83, 0xf8, 0x7f, 0x75, 0x19, 0xb0, 0x0a, - 0xe6, 0x10, 0xe5, 0x00, 0xb1, 0x05, 0xd3, 0xe8, 0x03, 0x86, 0x7e, 0x01, 0x8b, 0xc8, 0xe4, 0x10, - 0xa8, 0x10, 0x74, 0x03, 0x83, 0xc1, 0x4f, 0x8b, 0xc1, 0x89, 0x44, 0x02, 0xc7, 0x86, 0x7e, 0x01, - 0x00, 0x00, 0xc7, 0x86, 0x76, 0x01, 0x00, 0x00, 0xeb, 0x7f, 0xc7, 0x86, 0x88, 0x01, 0x00, 0x00, - 0xeb, 0x77, 0x8b, 0x4c, 0x08, 0x89, 0x4c, 0x0c, 0x8b, 0x4c, 0x04, 0x89, 0x4c, 0x08, 0x8b, 0x0c, - 0x89, 0x4c, 0x04, 0x8a, 0xc4, 0x2a, 0xe4, 0x8b, 0xc8, 0x83, 0xf8, 0x7f, 0x75, 0x25, 0xb0, 0x0a, - 0xe6, 0x10, 0xe5, 0x00, 0xb1, 0x05, 0xd3, 0xe8, 0x03, 0x86, 0x7c, 0x01, 0x8b, 0xc8, 0xe4, 0x10, - 0xa8, 0x10, 0x74, 0x03, 0x83, 0xc1, 0x4f, 0x8b, 0x96, 0x7c, 0x01, 0x83, 0xf9, 0x7f, 0x77, 0x03, - 0x83, 0xc1, 0x4f, 0x8b, 0xc1, 0x89, 0x04, 0xc7, 0x86, 0x7c, 0x01, 0x00, 0x00, 0xc7, 0x86, 0x74, - 0x01, 0x00, 0x00, 0x83, 0xf8, 0x7d, 0x72, 0xa2, 0x83, 0xbe, 0x88, 0x01, 0x01, 0x74, 0x1a, 0xc7, - 0x86, 0x88, 0x01, 0x01, 0x00, 0xc7, 0x86, 0x8a, 0x01, 0x01, 0x00, 0xa1, 0x32, 0x5d, 0x89, 0x86, - 0x84, 0x01, 0xa1, 0x34, 0x5d, 0x89, 0x86, 0x86, 0x01, 0x5f, 0x5e, 0x5a, 0x59, 0x58, 0xc3, 0x50, - 0x51, 0x57, 0x06, 0xfa, 0x8c, 0xd8, 0x8e, 0xc0, 0x2b, 0xc0, 0x8d, 0xbe, 0x72, 0x01, 0xb9, 0x1a, - 0x00, 0xf3, 0xab, 0xfb, 0x07, 0x5f, 0x59, 0x58, 0xc3, 0xfa, 0xf6, 0x06, 0x82, 0x5e, 0x80, 0x74, - 0x4e, 0xc6, 0x86, 0x6c, 0x01, 0x00, 0xc6, 0x86, 0x6e, 0x01, 0x01, 0xfe, 0x86, 0x70, 0x01, 0x8a, - 0x46, 0x00, 0xa2, 0x82, 0x5e, 0xc7, 0x06, 0x84, 0x5e, 0x02, 0x00, 0xc7, 0x06, 0x86, 0x5e, 0x01, - 0x00, 0xe5, 0x06, 0x83, 0xe0, 0x09, 0xe7, 0x06, 0x8b, 0xc8, 0xb8, 0xd6, 0x13, 0xe7, 0x02, 0xb8, - 0x4e, 0x03, 0xe7, 0x04, 0x83, 0xc9, 0x46, 0x8b, 0xc1, 0xe7, 0x06, 0x8e, 0x46, 0x02, 0x26, 0x83, - 0x0e, 0x42, 0x00, 0x01, 0xbe, 0xd9, 0x4c, 0xe8, 0x7c, 0xb3, 0xc6, 0x86, 0x61, 0x02, 0x01, 0xfb, - 0xc3, 0xfa, 0xf6, 0x06, 0x82, 0x5e, 0x80, 0x74, 0x49, 0xc6, 0x86, 0x6d, 0x01, 0x00, 0xc6, 0x86, - 0x6f, 0x01, 0x01, 0xfe, 0x86, 0x71, 0x01, 0x8a, 0x46, 0x00, 0xa2, 0x82, 0x5e, 0xc7, 0x06, 0x84, - 0x5e, 0x0e, 0x00, 0xc7, 0x06, 0x86, 0x5e, 0x02, 0x00, 0xe5, 0x06, 0x83, 0xe0, 0x09, 0xe7, 0x06, - 0x8b, 0xc8, 0xb8, 0xf7, 0x03, 0xe7, 0x02, 0xb8, 0xd6, 0x13, 0xe7, 0x04, 0x83, 0xc9, 0x46, 0x8b, - 0xc1, 0xe7, 0x06, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x42, 0x00, 0x01, 0xbe, 0xd9, 0x4c, 0xe8, - 0x24, 0xb3, 0xfb, 0xc3, 0xe5, 0x06, 0x83, 0xe0, 0x09, 0xe7, 0x06, 0xc3, 0xb8, 0x9d, 0x06, 0xe7, - 0x02, 0xc7, 0x06, 0x84, 0x5e, 0x04, 0x00, 0xc3, 0xc7, 0x06, 0x84, 0x5e, 0x06, 0x00, 0xc3, 0x90, - 0xc7, 0x06, 0x84, 0x5e, 0x08, 0x00, 0xc3, 0x90, 0x53, 0xc7, 0x06, 0x84, 0x5e, 0x0a, 0x00, 0x33, - 0xdb, 0x8a, 0x1e, 0x82, 0x5e, 0xd0, 0xe3, 0x8b, 0x9f, 0x48, 0x5d, 0x06, 0x8e, 0x47, 0x02, 0x26, - 0x83, 0x26, 0x42, 0x00, 0xfe, 0x07, 0xb8, 0x9d, 0x06, 0xe7, 0x02, 0x5b, 0xc3, 0x90, 0xe5, 0x06, - 0x83, 0xe0, 0x09, 0xe7, 0x06, 0xc7, 0x06, 0x84, 0x5e, 0x0c, 0x00, 0xc6, 0x06, 0x82, 0x5e, 0x80, - 0xc3, 0x90, 0xe5, 0x06, 0x83, 0xe0, 0x09, 0xe7, 0x06, 0xc3, 0xb8, 0xf7, 0x03, 0xe7, 0x02, 0xc7, - 0x06, 0x84, 0x5e, 0x10, 0x00, 0xc3, 0x53, 0xc7, 0x06, 0x84, 0x5e, 0x12, 0x00, 0x33, 0xdb, 0x8a, - 0x1e, 0x82, 0x5e, 0xd0, 0xe3, 0x8b, 0x9f, 0x48, 0x5d, 0x06, 0x8e, 0x47, 0x02, 0x26, 0x83, 0x26, - 0x42, 0x00, 0xfe, 0x07, 0xb8, 0x9d, 0x06, 0xe7, 0x02, 0x5b, 0xc3, 0x90, 0xe5, 0x06, 0x83, 0xe0, - 0x09, 0xe7, 0x06, 0xc7, 0x06, 0x84, 0x5e, 0x14, 0x00, 0xc6, 0x06, 0x82, 0x5e, 0x80, 0xc3, 0x90, - 0xe5, 0x06, 0x83, 0xe0, 0x09, 0xe7, 0x06, 0xc3, 0x4e, 0x6f, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, - 0x78, 0x74, 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x12, 0x45, 0x23, - 0x56, 0x34, 0x00, 0x00, 0x00, 0x00, 0xcd, 0xab, 0xde, 0xbc, 0xef, 0xcd, 0x00, 0x00, 0x00, 0x00, - 0x4e, 0x6f, 0x74, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x00, 0x54, - 0x69, 0x6d, 0x65, 0x72, 0x30, 0x00, 0x00, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x31, 0x00, 0x00, 0x54, - 0x65, 0x73, 0x74, 0x31, 0x00, 0x00, 0x54, 0x65, 0x73, 0x74, 0x32, 0x00, 0x00, 0x90, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x66, 0x5d, - 0x97, 0x55, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x09, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, - 0xe0, 0x02, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, - 0x00, 0x02, 0x04, 0x01, 0x00, 0x00, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x03, 0xc0, 0x00, 0xff, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x03, 0x06, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - 0xe0, 0x04, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x04, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x05, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x05, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x06, 0xc0, 0x00, - 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x06, 0x0b, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x12, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x08, 0x02, 0x26, 0x00, 0x00, - 0x00, 0x00, 0x14, 0x00, 0xe0, 0x08, 0xc0, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x08, 0x1c, 0x26, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0xe0, 0x00, - 0xc0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x50, 0x20, - 0x0c, 0x23, 0x30, 0x30, 0x30, 0x30, 0xf3, 0xf0, 0xf0, 0xf8, 0xf9, 0xf6, 0x08, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x14, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x21, 0x00, 0x00, 0x04, 0x21, 0x00, 0x00, - 0x06, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x2c, 0x00, 0x00, 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x29, 0x20, 0x00, 0x08, 0x00, 0x01, 0x00, 0x04, 0x06, 0x00, 0x00, - 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, 0x40, 0x25, 0x06, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x20, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x12, 0x40, 0x26, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x60, 0x27, 0x08, 0x0a, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x60, 0x28, 0x04, 0x30, 0x00, 0x00, - 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x1e, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x10, 0x30, 0x11, 0x04, 0x0c, 0x00, 0x01, 0x04, 0x0e, 0x00, 0x02, 0x04, 0x21, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x12, 0x04, 0x0f, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x12, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x04, 0x30, 0x13, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0xe0, 0x00, 0xc0, 0x00, - 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x14, 0x04, 0x0d, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x15, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, - 0xe0, 0x08, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x16, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0xe0, 0x07, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x17, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, - 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, - 0x60, 0x29, 0x08, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x2e, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x2a, 0x00, 0x00, 0x02, 0x20, 0x80, 0x00, 0x00, 0x06, 0x09, 0x00, 0x00, 0x00, 0x04, 0x03, - 0x01, 0x80, 0x00, 0x00, 0x04, 0x02, 0x80, 0x00, 0x00, 0x08, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x02, - 0x02, 0x80, 0x00, 0x00, 0x08, 0x0b, 0x00, 0x00, 0x00, 0x06, 0x01, 0x26, 0x80, 0x00, 0x00, 0xff, - 0x06, 0x03, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x06, 0x05, 0x00, 0x00, 0x00, 0x04, - 0x06, 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x04, 0x04, - 0x03, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x06, 0x05, 0x00, 0x00, 0x00, 0x04, 0x09, - 0x00, 0x00, 0x00, 0x04, 0x03, 0x0c, 0x80, 0x00, 0x00, 0x04, 0x0e, 0x80, 0x00, 0x00, 0x04, 0x21, - 0x00, 0x00, 0x00, 0x04, 0x01, 0x0f, 0x80, 0x00, 0x00, 0x04, 0x01, 0x0d, 0x80, 0x00, 0x00, 0x04, - 0x04, 0x02, 0x80, 0x00, 0x00, 0x08, 0x22, 0x00, 0x00, 0x00, 0xff, 0x23, 0x00, 0x00, 0x00, 0xff, - 0x21, 0x00, 0x00, 0x00, 0x04, 0x01, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0xa5, 0xa5, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - -#endif /* OLTR_NO_BULLSEYE_MAC */ diff --git a/sys/contrib/dev/oltr/trlldhm.c b/sys/contrib/dev/oltr/trlldhm.c deleted file mode 100644 index 633eea215421..000000000000 --- a/sys/contrib/dev/oltr/trlldhm.c +++ /dev/null @@ -1,1899 +0,0 @@ -/* - ****************************** trlld.h *********************************** - * - * Copyright (c) 1997 - * OLICOM A/S - * Denmark - * - * All Rights Reserved - * - * This source file is subject to the terms and conditions of the - * OLICOM Software License Agreement which restricts the manner - * in which it may be used. - * - *--------------------------------------------------------------------------- - * - * Description: Olicom Hawkeye adapter micro-code - * - *--------------------------------------------------------------------------- - */ - -#include "opt_oltr.h" - -#ifndef OLTR_NO_HAWKEYE_MAC - -unsigned char TRlldHawkeyeMac[] = { 0x52, 0x94, 0x03, 0x00, 0x02, 0x75, 0xfb, 0xbb, 0x4f, 0x43, 0x53, 0x4d, 0x41, 0x43, 0x2e, 0x48, - 0x41, 0x57, 0x4b, 0x45, 0x59, 0x45, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xea, 0x55, 0x00, 0x00, 0x00, 0xfc, 0xfa, 0xb8, 0x00, 0x00, 0xbb, 0x00, - 0x00, 0xb9, 0x00, 0x00, 0xba, 0x00, 0x00, 0xbe, 0x00, 0x00, 0xbf, 0x00, 0x00, 0xbd, 0x00, 0x00, - 0x8c, 0xc8, 0x8e, 0xd8, 0x8e, 0xc0, 0x8e, 0xd0, 0xb8, 0x1c, 0x56, 0x8b, 0xe0, 0x83, 0x3e, 0x4e, - 0x00, 0x00, 0x75, 0x1c, 0x2b, 0xdb, 0x8b, 0xf3, 0xad, 0x8b, 0xd8, 0x8b, 0xc8, 0xd1, 0xe9, 0x49, - 0x49, 0xad, 0x03, 0xd8, 0xe2, 0xfb, 0x0b, 0xdb, 0x74, 0x06, 0xc7, 0x06, 0xee, 0x54, 0x01, 0x00, - 0xc7, 0x06, 0x0c, 0x00, 0xa8, 0x01, 0x8c, 0x0e, 0x0e, 0x00, 0xc7, 0x06, 0x04, 0x00, 0xa8, 0x01, - 0x8c, 0x0e, 0x06, 0x00, 0xc7, 0x06, 0x14, 0x00, 0xa8, 0x01, 0x8c, 0x0e, 0x14, 0x00, 0xc7, 0x06, - 0x08, 0x00, 0xa8, 0x01, 0x8c, 0x0e, 0x08, 0x00, 0x90, 0x90, 0x90, 0xc7, 0x06, 0x20, 0x00, 0x6e, - 0x1f, 0x8c, 0x0e, 0x22, 0x00, 0x2b, 0xc0, 0xe7, 0x06, 0xc7, 0x06, 0x30, 0x00, 0x20, 0x0e, 0x8c, - 0x0e, 0x32, 0x00, 0xc7, 0x06, 0x34, 0x00, 0x32, 0x0f, 0x8c, 0x0e, 0x36, 0x00, 0xc7, 0x06, 0x38, - 0x00, 0x64, 0x0f, 0x8c, 0x0e, 0x3a, 0x00, 0xc7, 0x06, 0x3c, 0x00, 0xa8, 0x01, 0x8c, 0x0e, 0x3e, - 0x00, 0xc7, 0x06, 0x08, 0x00, 0xa8, 0x01, 0x8c, 0x0e, 0x0a, 0x00, 0xc7, 0x06, 0x14, 0x00, 0xa8, - 0x01, 0x8c, 0x0e, 0x16, 0x00, 0xbb, 0x40, 0x60, 0x8e, 0xc3, 0x26, 0xa1, 0x02, 0x00, 0x25, 0x00, - 0x50, 0x89, 0x86, 0x0f, 0x01, 0x26, 0x83, 0x0e, 0x72, 0x00, 0x08, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, - 0xc0, 0x2b, 0xc0, 0x26, 0x83, 0x26, 0x72, 0x00, 0xf7, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, 0xc0, 0x2b, - 0xc0, 0x26, 0x83, 0x0e, 0x72, 0x00, 0x08, 0x2a, 0xe4, 0xb0, 0x13, 0xe6, 0x10, 0x90, 0x90, 0x90, - 0xb0, 0x08, 0xe6, 0x12, 0x90, 0x90, 0x90, 0xb0, 0x09, 0xe6, 0x12, 0x90, 0x90, 0x90, 0xb0, 0xff, - 0xe6, 0x12, 0x90, 0x90, 0x90, 0x26, 0x83, 0x26, 0x72, 0x00, 0xf7, 0x8b, 0x86, 0x0f, 0x01, 0x26, - 0xa3, 0x02, 0x00, 0x90, 0x90, 0x90, 0x33, 0xc0, 0x26, 0xc7, 0x06, 0x04, 0x00, 0xff, 0xff, 0x26, - 0xc7, 0x06, 0x06, 0x00, 0xff, 0xff, 0x26, 0x09, 0x06, 0x08, 0x00, 0x26, 0x09, 0x06, 0x0a, 0x00, - 0xb8, 0x00, 0x00, 0xe7, 0x06, 0xb8, 0x0f, 0x27, 0xe7, 0x00, 0xb8, 0x09, 0x00, 0xe7, 0x06, 0xb0, - 0x11, 0xe8, 0xae, 0x0a, 0xe8, 0xeb, 0x0a, 0xfb, 0xe9, 0x94, 0x0b, 0x90, 0x50, 0xb0, 0xa0, 0xe6, - 0x10, 0x58, 0xcf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0f, 0xf0, 0xf0, 0xf0, 0xf0, 0xe7, 0xe7, 0xe7, 0x31, 0x36, - 0x31, 0x32, 0x39, 0x38, 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x28, - 0x63, 0x29, 0x20, 0x31, 0x39, 0x39, 0x37, 0x2c, 0x20, 0x31, 0x39, 0x39, 0x38, 0x20, 0x4f, 0x6c, - 0x69, 0x63, 0x6f, 0x6d, 0x2e, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, - 0x20, 0x72, 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x20, 0xf8, 0x1c, 0xf8, 0x1c, 0x2e, 0x32, - 0x14, 0x35, 0x10, 0x37, 0x56, 0x38, 0x98, 0x39, 0xe0, 0x3c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, - 0x49, 0x3b, 0x9f, 0x3b, 0x30, 0x3c, 0xad, 0x3c, 0xb2, 0x3c, 0xb7, 0x3c, 0xf8, 0x1c, 0xf8, 0x1c, - 0xf8, 0x1c, 0xf8, 0x1c, 0xf3, 0x34, 0xf8, 0x1c, 0xf8, 0x1c, 0xc3, 0x33, 0x1c, 0x34, 0x1c, 0x34, - 0xb0, 0x34, 0x1c, 0x34, 0xd8, 0x34, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0x49, 0x3b, 0x9f, 0x3b, - 0x30, 0x3c, 0xad, 0x3c, 0xb2, 0x3c, 0xb7, 0x3c, 0xf8, 0x1c, 0x2f, 0x34, 0xf8, 0x1c, 0x78, 0x34, - 0xf8, 0x1c, 0x7f, 0x2f, 0x7f, 0x2f, 0x7f, 0x2f, 0x7f, 0x2f, 0x49, 0x30, 0x75, 0x31, 0x7f, 0x2f, - 0x5b, 0x30, 0x07, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, - 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, - 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, 0xc7, 0x31, - 0xc7, 0x31, 0xb3, 0x30, 0x7f, 0x2f, 0x7f, 0x2f, 0x7f, 0x2f, 0x7f, 0x2f, 0x7f, 0x2f, 0xe6, 0x30, - 0x7f, 0x2f, 0x7f, 0x2f, 0xf8, 0x30, 0x7f, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0xff, 0xff, 0x04, 0x04, 0x05, 0xff, 0xff, 0xff, 0x00, 0x03, 0x00, 0x03, 0x03, 0xb7, 0x05, - 0xff, 0xff, 0xc2, 0x05, 0xd2, 0x05, 0xd2, 0x05, 0xd2, 0x05, 0xd2, 0x05, 0x00, 0x00, 0xdd, 0x05, - 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0xe3, 0x05, 0x02, 0x06, 0x48, 0x06, 0x48, 0x06, 0x48, 0x06, - 0x17, 0x06, 0x27, 0x06, 0x00, 0x00, 0x2d, 0x06, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, - 0xf8, 0x1c, 0x68, 0x3d, 0xde, 0x14, 0x34, 0x2f, 0x1b, 0x23, 0xac, 0x43, 0xf8, 0x1c, 0xa2, 0x3d, - 0x2e, 0x41, 0xab, 0x3f, 0xc4, 0x3d, 0x49, 0x3f, 0xef, 0x40, 0x12, 0x3f, 0xa7, 0x40, 0xb5, 0x41, - 0x1d, 0x42, 0xec, 0x41, 0xce, 0x40, 0x2a, 0x42, 0x4f, 0x42, 0x7a, 0x42, 0x0d, 0x42, 0x98, 0x42, - 0x0a, 0x03, 0x30, 0x03, 0x50, 0x03, 0x7c, 0x03, 0xa2, 0x03, 0x00, 0x04, 0x66, 0x04, 0xa0, 0x04, - 0xea, 0x04, 0xac, 0x05, 0xe4, 0x01, 0x04, 0x03, 0x2a, 0x03, 0x58, 0x03, 0x76, 0x03, 0x9c, 0x03, - 0x60, 0x04, 0x9a, 0x04, 0xe4, 0x04, 0xa6, 0x05, 0xe0, 0x01, 0x08, 0x04, 0x6e, 0x04, 0xf4, 0x02, - 0x1e, 0x03, 0x44, 0x03, 0x6a, 0x03, 0x90, 0x03, 0xb6, 0x03, 0xb0, 0x03, 0xce, 0x03, 0x72, 0x05, - 0xe8, 0x03, 0x54, 0x04, 0x8e, 0x04, 0xb4, 0x04, 0xd4, 0x04, 0x8a, 0x05, 0xfe, 0x04, 0x22, 0x05, - 0x3e, 0x05, 0x56, 0x05, 0xbe, 0x53, 0xc6, 0x53, 0xd2, 0x53, 0xda, 0x53, 0xe2, 0x53, 0x08, 0x54, - 0x1c, 0x54, 0x24, 0x54, 0x30, 0x54, 0x56, 0x54, 0x6a, 0x54, 0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, - 0xf6, 0xf7, 0xf8, 0xf9, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xec, 0x19, 0x50, 0x1a, 0x74, 0x1a, - 0xe4, 0x1a, 0x06, 0x1b, 0x9e, 0x1b, 0xfc, 0x1b, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, - 0x20, 0x1c, 0x42, 0x1c, 0x98, 0x1c, 0xbc, 0x1c, 0xf0, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0x7c, 0x14, - 0xa0, 0x15, 0x24, 0x16, 0x26, 0x16, 0x42, 0x16, 0x68, 0x16, 0x84, 0x16, 0x0e, 0x17, 0x8c, 0x17, - 0x3e, 0x18, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xd6, 0x1d, 0xf8, 0x1c, 0xf8, 0x1c, - 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, - 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0x7a, 0x18, - 0xb8, 0x18, 0x2e, 0x19, 0x74, 0x19, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, - 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xf8, 0x1c, 0xaa, 0x55, 0x00, 0xff, 0xf6, 0x46, - 0x01, 0x01, 0x75, 0x6a, 0xc6, 0x86, 0x0e, 0x01, 0x05, 0xe8, 0x90, 0x01, 0xe8, 0x50, 0x06, 0xe8, - 0xfc, 0x02, 0xe8, 0x56, 0x03, 0x73, 0x3a, 0xfe, 0x8e, 0x0e, 0x01, 0x74, 0x2e, 0x26, 0x83, 0x0e, - 0x72, 0x00, 0x08, 0x2b, 0xc0, 0x2b, 0xc0, 0x26, 0x83, 0x26, 0x72, 0x00, 0xf7, 0x2b, 0xc0, 0x2b, - 0xc0, 0x26, 0x83, 0x0e, 0x72, 0x00, 0x08, 0x2b, 0xc0, 0x2b, 0xc0, 0x26, 0x83, 0x26, 0x72, 0x00, - 0xf7, 0x8b, 0x86, 0x0f, 0x01, 0x26, 0xa3, 0x02, 0x00, 0xeb, 0xbe, 0xc7, 0x06, 0xee, 0x54, 0x02, - 0x00, 0x32, 0xe4, 0x8a, 0x46, 0x00, 0xe8, 0xf6, 0x03, 0x83, 0x3e, 0x4e, 0x00, 0x02, 0x72, 0x03, - 0xe8, 0x3a, 0x03, 0xa1, 0xee, 0x54, 0xe8, 0x36, 0x3c, 0xc6, 0x46, 0x01, 0x01, 0x90, 0xf6, 0x06, - 0x1e, 0x56, 0x01, 0x74, 0x27, 0xf6, 0x86, 0x6c, 0x01, 0x01, 0x74, 0x03, 0xe8, 0x98, 0x4c, 0xf6, - 0x86, 0x6d, 0x01, 0x01, 0x74, 0x03, 0xe8, 0xe6, 0x4c, 0xf7, 0x86, 0x82, 0x01, 0x01, 0x00, 0x75, - 0x08, 0xf7, 0x86, 0x8a, 0x01, 0x01, 0x00, 0x74, 0x03, 0xe8, 0xc2, 0x49, 0xe8, 0x7b, 0x05, 0xe8, - 0x47, 0x05, 0xe8, 0xbf, 0x04, 0xe8, 0x64, 0x04, 0xf6, 0x86, 0x90, 0x02, 0x01, 0x74, 0x03, 0xe8, - 0xd4, 0x17, 0x33, 0xdb, 0xf6, 0x86, 0xa9, 0x02, 0x01, 0x74, 0x16, 0x8a, 0x5e, 0x09, 0x8a, 0x7e, - 0x08, 0x38, 0xfb, 0x75, 0x30, 0x80, 0xfb, 0x00, 0x74, 0x07, 0x80, 0xfb, 0x1e, 0x74, 0x02, 0xeb, - 0x22, 0x80, 0x7e, 0x06, 0x1e, 0x74, 0x1e, 0x33, 0xdb, 0x8a, 0x5e, 0x07, 0x3a, 0x5e, 0x06, 0x74, - 0x14, 0xfa, 0x50, 0x8b, 0x46, 0x06, 0x89, 0x46, 0x0c, 0x58, 0x88, 0x5e, 0x06, 0x32, 0xff, 0xff, - 0x97, 0x98, 0x05, 0xeb, 0x2d, 0x8a, 0x5e, 0x09, 0x3a, 0x5e, 0x08, 0x74, 0x25, 0x50, 0x8b, 0x46, - 0x08, 0x89, 0x46, 0x0e, 0x58, 0x80, 0xfb, 0x1e, 0x74, 0x0d, 0x80, 0xfb, 0x00, 0x74, 0x08, 0x80, - 0xfb, 0x16, 0x74, 0x03, 0xe8, 0xfc, 0x26, 0x88, 0x5e, 0x08, 0x32, 0xff, 0xfa, 0xff, 0x97, 0x76, - 0x05, 0xfb, 0xfa, 0xf7, 0x86, 0xf0, 0x00, 0xff, 0xff, 0x74, 0x0f, 0x8b, 0xb6, 0xf0, 0x00, 0x8b, - 0x4c, 0x04, 0xe8, 0x0b, 0x0a, 0xfb, 0xff, 0xd1, 0xeb, 0x5c, 0xfb, 0xf7, 0x46, 0x16, 0xff, 0xff, - 0x74, 0x27, 0x8d, 0x7e, 0x16, 0xe8, 0x88, 0x06, 0x56, 0x8b, 0x5c, 0x02, 0xd1, 0xe3, 0xff, 0x97, - 0xcc, 0x04, 0x5e, 0xe8, 0x8c, 0x06, 0xf7, 0x86, 0xc8, 0x01, 0x01, 0x00, 0x74, 0x09, 0xe8, 0x33, - 0x21, 0xc7, 0x86, 0xc8, 0x01, 0x00, 0x00, 0xeb, 0x2d, 0xfa, 0xf7, 0x86, 0x0a, 0x01, 0x01, 0x00, - 0x75, 0x13, 0xf6, 0x86, 0x6c, 0x15, 0x80, 0x75, 0x0c, 0xc7, 0x86, 0x0a, 0x01, 0x01, 0x00, 0xfb, - 0xe8, 0xe9, 0x35, 0xeb, 0x11, 0xfa, 0x8b, 0x86, 0x63, 0x02, 0x38, 0xc4, 0x74, 0x07, 0x88, 0x86, - 0x64, 0x02, 0xe8, 0x4c, 0x16, 0xfb, 0xe8, 0xf1, 0x05, 0xe9, 0xd2, 0xfe, 0x8e, 0x46, 0x02, 0x26, - 0xc7, 0x06, 0x04, 0x00, 0xff, 0xcb, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x08, 0x00, 0xff, 0xfb, - 0xe8, 0x53, 0x02, 0x33, 0xc0, 0x88, 0x86, 0xb8, 0x01, 0x88, 0x86, 0xb9, 0x01, 0x8e, 0x46, 0x02, - 0x26, 0xa2, 0x1a, 0x00, 0x89, 0x86, 0x14, 0x02, 0x89, 0x86, 0x06, 0x02, 0x89, 0x86, 0x36, 0x02, - 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x0c, 0x00, 0x30, 0x01, 0x8d, 0x86, 0x52, 0x08, 0x89, 0x86, - 0xbc, 0x01, 0x89, 0x86, 0xbe, 0x01, 0xc7, 0x86, 0xc0, 0x01, 0x01, 0x00, 0x8c, 0xd8, 0x8e, 0xc0, - 0x33, 0xc0, 0x8d, 0xbe, 0x54, 0x02, 0xb9, 0x51, 0x00, 0xd1, 0xe9, 0xf3, 0xab, 0xd1, 0xd1, 0xf3, - 0xaa, 0x8d, 0xbe, 0x96, 0x05, 0xab, 0xab, 0xaa, 0x8d, 0xbe, 0x9e, 0x05, 0xab, 0xab, 0xaa, 0x8d, - 0xbe, 0xae, 0x02, 0xb9, 0x0b, 0x00, 0xf3, 0xab, 0xc7, 0x86, 0xc4, 0x01, 0x14, 0x00, 0xc7, 0x86, - 0xb6, 0x02, 0x04, 0x00, 0xbb, 0xfc, 0x04, 0xb9, 0x0b, 0x00, 0x8b, 0x3f, 0x03, 0xfd, 0xab, 0xab, - 0xab, 0x43, 0x43, 0xe2, 0xf5, 0xbb, 0x12, 0x05, 0xb9, 0x0a, 0x00, 0x8b, 0x3f, 0x03, 0xfd, 0xab, - 0xab, 0x43, 0x43, 0xe2, 0xf6, 0xb8, 0x02, 0x00, 0x03, 0x06, 0xc8, 0x54, 0xe8, 0x3d, 0x05, 0x39, - 0x06, 0xc8, 0x54, 0x75, 0xf7, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x0c, 0x00, 0x02, 0xc7, 0x86, - 0x08, 0x02, 0xc8, 0x00, 0xc7, 0x86, 0xf8, 0x01, 0xff, 0xff, 0xc7, 0x86, 0xf6, 0x01, 0x07, 0x00, - 0xc6, 0x86, 0x87, 0x02, 0x00, 0xe8, 0x01, 0x00, 0xc3, 0x8e, 0x46, 0x02, 0x33, 0xc0, 0x89, 0x86, - 0xb6, 0x01, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x10, 0x00, 0x8b, 0x86, 0x52, 0x15, 0x26, 0xa3, 0x30, - 0x00, 0x89, 0x86, 0xb2, 0x01, 0xc1, 0xe8, 0x08, 0x26, 0xa3, 0x34, 0x00, 0x8b, 0x86, 0x54, 0x15, - 0x26, 0xa3, 0x38, 0x00, 0xc1, 0xe8, 0x08, 0x26, 0xa3, 0x36, 0x00, 0x33, 0xc0, 0xc6, 0x86, 0x83, - 0x02, 0x01, 0x8d, 0xb6, 0x52, 0x09, 0xc7, 0x86, 0xa6, 0x01, 0x5a, 0x09, 0x01, 0xae, 0xa6, 0x01, - 0x89, 0xb6, 0xa8, 0x01, 0x89, 0xb6, 0xaa, 0x01, 0xc7, 0x04, 0x30, 0x80, 0xc7, 0x44, 0x04, 0x00, - 0x00, 0xc6, 0x86, 0x86, 0x02, 0x01, 0xe8, 0x01, 0x09, 0xb8, 0x00, 0x40, 0xf7, 0x86, 0xf6, 0x00, - 0x00, 0x01, 0x74, 0x13, 0x25, 0xff, 0x1f, 0x0d, 0x00, 0xa0, 0x83, 0xe0, 0xfd, 0x8e, 0x46, 0x02, - 0x26, 0x81, 0x0e, 0x0c, 0x00, 0x80, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x00, 0x00, 0xa1, 0xc8, - 0x54, 0x83, 0xc0, 0x02, 0xe8, 0x85, 0x04, 0x39, 0x06, 0xc8, 0x54, 0x75, 0xf7, 0xc3, 0x8e, 0x46, - 0x02, 0x26, 0xc7, 0x06, 0x00, 0x00, 0x08, 0xbe, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x02, 0x00, - 0xc8, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x0c, 0x00, 0xa0, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xc7, - 0x06, 0x10, 0x00, 0x04, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x00, 0x00, 0x7f, 0xff, 0x90, - 0x90, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x00, 0x00, 0x80, 0x00, 0x90, 0x90, 0x8e, 0x46, 0x02, - 0x26, 0x81, 0x26, 0x00, 0x00, 0x7f, 0xff, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x28, 0x00, 0x18, - 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x0c, 0x00, 0x01, 0xc3, 0xc6, 0x86, 0x0c, 0x01, 0x01, - 0xc6, 0x86, 0x0d, 0x01, 0x00, 0xe8, 0xda, 0x22, 0xa1, 0xc8, 0x54, 0x83, 0xc0, 0x02, 0x0b, 0xc0, - 0x0b, 0xc0, 0x0b, 0xc0, 0x0b, 0xc0, 0x39, 0x06, 0xc8, 0x54, 0x72, 0xf2, 0x80, 0xbe, 0x0d, 0x01, - 0x01, 0x74, 0x03, 0xf9, 0xeb, 0x01, 0xf8, 0xc6, 0x86, 0x0c, 0x01, 0x00, 0xc3, 0xb8, 0x00, 0x00, - 0x88, 0x86, 0x06, 0x01, 0x88, 0x86, 0x07, 0x01, 0x88, 0x86, 0x08, 0x01, 0x88, 0x86, 0x09, 0x01, - 0x89, 0x86, 0x0a, 0x01, 0x88, 0x86, 0xb8, 0x01, 0x88, 0x86, 0xb9, 0x01, 0x88, 0x86, 0xcd, 0x01, - 0xa2, 0x1e, 0x56, 0xc3, 0x50, 0x53, 0x52, 0xc6, 0x46, 0x01, 0x00, 0x32, 0xe4, 0x8a, 0x46, 0x00, - 0xbb, 0x00, 0xfd, 0xbb, 0x00, 0xee, 0x83, 0x3e, 0xec, 0x54, 0x20, 0x75, 0x03, 0xbb, 0x00, 0x7d, - 0x81, 0xeb, 0x00, 0x75, 0x81, 0xe3, 0x00, 0xff, 0x89, 0x9e, 0x56, 0x15, 0x81, 0xc3, 0x00, 0x01, - 0xf7, 0xe3, 0x05, 0x00, 0x75, 0x89, 0x86, 0x52, 0x15, 0x03, 0x86, 0x56, 0x15, 0x48, 0x89, 0x86, - 0x54, 0x15, 0x5a, 0x5b, 0x58, 0xc3, 0x51, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x0c, 0x00, 0xfc, - 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x14, 0x00, 0x80, 0x00, 0x75, 0x1e, 0xb9, 0xf4, 0x01, 0x8e, - 0x46, 0x02, 0x26, 0x81, 0x0e, 0x0c, 0x00, 0x00, 0x08, 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x14, - 0x00, 0x80, 0x00, 0x75, 0x05, 0xe8, 0x54, 0x03, 0xe2, 0xe5, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, - 0x0c, 0x00, 0xff, 0xf7, 0x59, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x0c, 0x00, 0x02, 0xc3, 0x50, - 0x53, 0xc1, 0xe0, 0x05, 0x05, 0x00, 0x03, 0x8b, 0xd8, 0x8d, 0x86, 0x00, 0x01, 0x89, 0x07, 0x8d, - 0x86, 0xd0, 0x01, 0x89, 0x47, 0x02, 0x8d, 0x86, 0xe0, 0x01, 0x89, 0x47, 0x04, 0x8d, 0x86, 0x58, - 0x15, 0x89, 0x47, 0x08, 0x8d, 0x86, 0x6c, 0x15, 0x89, 0x47, 0x06, 0x8d, 0x86, 0xbc, 0x01, 0x89, - 0x47, 0x0a, 0xc7, 0x47, 0x0c, 0x30, 0x56, 0x8d, 0x86, 0x3c, 0x02, 0x89, 0x47, 0x0e, 0x8d, 0x06, - 0xc8, 0x54, 0x89, 0x47, 0x10, 0xc7, 0x47, 0x14, 0x00, 0x00, 0xc7, 0x47, 0x16, 0x00, 0x00, 0x8d, - 0x86, 0xec, 0x15, 0x89, 0x47, 0x18, 0x5b, 0x58, 0xc3, 0x8e, 0x46, 0x02, 0x80, 0xbe, 0x2d, 0x01, - 0x01, 0x75, 0x40, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x10, 0x00, 0xfb, 0x26, 0xa1, 0x38, 0x00, - 0x2d, 0x00, 0x02, 0x3b, 0x86, 0x52, 0x15, 0x73, 0x0c, 0x8b, 0xd8, 0x2b, 0x9e, 0x52, 0x15, 0x8b, - 0x86, 0x54, 0x15, 0x2b, 0xc3, 0x26, 0xa3, 0x6c, 0x00, 0x26, 0xa1, 0x12, 0x00, 0x89, 0x86, 0x32, - 0x01, 0x26, 0xc7, 0x06, 0x12, 0x00, 0x00, 0x01, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x10, 0x00, - 0x05, 0xeb, 0x18, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x10, 0x00, 0xfe, 0x8b, 0x86, 0x32, 0x01, - 0x26, 0xa3, 0x12, 0x00, 0xb8, 0xff, 0xff, 0x26, 0xa3, 0x6c, 0x00, 0xc3, 0x50, 0xf7, 0x86, 0xf6, - 0x00, 0x02, 0x00, 0x75, 0x02, 0xeb, 0x4b, 0xf6, 0x86, 0x60, 0x02, 0x01, 0x75, 0x07, 0xf6, 0x86, - 0x6e, 0x02, 0x01, 0x74, 0x3d, 0xf6, 0x86, 0x85, 0x02, 0x01, 0x74, 0x36, 0xc6, 0x86, 0x85, 0x02, - 0x00, 0x8b, 0x86, 0x06, 0x02, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x40, 0x74, 0x03, 0x25, 0xff, 0xaf, - 0xf7, 0x86, 0x12, 0x01, 0x00, 0x20, 0x74, 0x03, 0x25, 0xff, 0xdf, 0x89, 0x86, 0x06, 0x02, 0x3b, - 0x86, 0x36, 0x02, 0x74, 0x0d, 0x89, 0x86, 0x36, 0x02, 0x81, 0xa6, 0x36, 0x02, 0x7f, 0xdf, 0xe8, - 0x42, 0x38, 0x58, 0xc3, 0x57, 0x56, 0x50, 0x8b, 0x86, 0xda, 0x02, 0xa9, 0xff, 0xff, 0x74, 0x40, - 0x8d, 0xbe, 0xd0, 0x02, 0x8d, 0xb6, 0x96, 0x05, 0xb9, 0x0a, 0x00, 0x83, 0xf9, 0x05, 0x75, 0x04, - 0x8d, 0xb6, 0x9e, 0x05, 0xa9, 0x01, 0x00, 0x74, 0x1e, 0x80, 0x3d, 0xff, 0x74, 0x12, 0xfe, 0x05, - 0x80, 0x3d, 0xff, 0x75, 0x0b, 0x81, 0x8e, 0x06, 0x02, 0x80, 0x00, 0xc6, 0x86, 0x85, 0x02, 0x01, - 0x80, 0x3c, 0xff, 0x74, 0x02, 0xfe, 0x04, 0xd1, 0xe8, 0x47, 0x46, 0xe2, 0xce, 0xe8, 0x0a, 0x00, - 0xc7, 0x86, 0xda, 0x02, 0x00, 0x00, 0x58, 0x5e, 0x5f, 0xc3, 0xf6, 0x86, 0x56, 0x02, 0x01, 0x75, - 0x27, 0xf6, 0x86, 0xaa, 0x02, 0x01, 0x75, 0x07, 0xf6, 0x86, 0x60, 0x02, 0x01, 0x74, 0x19, 0xc6, - 0x86, 0x56, 0x02, 0x01, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x80, 0x75, 0x0c, 0xbe, 0x5b, 0x45, 0xe8, - 0xb8, 0x03, 0xc7, 0x86, 0xb6, 0x02, 0x04, 0x00, 0xc3, 0xf7, 0x86, 0x58, 0x15, 0x00, 0x80, 0x75, - 0x02, 0xeb, 0x26, 0x8b, 0xb6, 0x60, 0x01, 0x3b, 0xb6, 0x5e, 0x01, 0x74, 0x1c, 0x46, 0x83, 0xe6, - 0x07, 0x89, 0xb6, 0x60, 0x01, 0x8b, 0xce, 0xd1, 0xe1, 0xd1, 0xe1, 0x8d, 0xb6, 0x3e, 0x01, 0x03, - 0xf1, 0x8b, 0x04, 0x8b, 0x54, 0x02, 0xe9, 0x32, 0x38, 0xc3, 0xbb, 0x00, 0x03, 0x83, 0x7f, 0x12, - 0x00, 0x74, 0x08, 0xe8, 0xad, 0x37, 0xc7, 0x47, 0x12, 0x00, 0x00, 0xc3, 0x53, 0x50, 0x33, 0xc0, - 0x88, 0x86, 0xcb, 0x01, 0xa3, 0x2e, 0x56, 0xbb, 0x30, 0x56, 0x89, 0x1e, 0x26, 0x56, 0x89, 0x07, - 0x89, 0x47, 0x02, 0x89, 0x47, 0x04, 0xa3, 0x28, 0x56, 0xa3, 0x2a, 0x56, 0xa3, 0x2c, 0x56, 0x58, - 0x5b, 0xc3, 0x50, 0x8a, 0xe0, 0xe4, 0x12, 0xf6, 0xd4, 0x22, 0xc4, 0xe6, 0x12, 0x58, 0xc3, 0xc6, - 0x46, 0x06, 0x00, 0xc6, 0x46, 0x07, 0x00, 0xc6, 0x46, 0x08, 0x00, 0xc6, 0x46, 0x09, 0x00, 0xc6, - 0x86, 0x6c, 0x15, 0x80, 0x8d, 0xbe, 0x0a, 0x03, 0x8c, 0xd8, 0x8e, 0xc0, 0xab, 0xab, 0xab, 0xc3, - 0x51, 0x53, 0xb9, 0x10, 0x00, 0xd1, 0xe0, 0xd1, 0xdb, 0xe2, 0xfa, 0x8b, 0xc3, 0x86, 0xc4, 0x5b, - 0x59, 0xc3, 0x50, 0x53, 0x51, 0x52, 0x57, 0x56, 0x8d, 0x1e, 0x66, 0x05, 0xb8, 0x40, 0x60, 0x8e, - 0xc0, 0xff, 0x06, 0x4e, 0x00, 0xc7, 0x06, 0xe4, 0x54, 0x00, 0x00, 0xc6, 0x06, 0xe8, 0x54, 0x00, - 0xc7, 0x06, 0xec, 0x54, 0x20, 0x00, 0xbb, 0xfe, 0x0c, 0x8b, 0x07, 0x81, 0xc3, 0x00, 0x80, 0x3b, - 0x07, 0x74, 0x06, 0xc7, 0x06, 0xec, 0x54, 0x40, 0x00, 0x8d, 0x3e, 0xe6, 0x54, 0xb8, 0x40, 0x5d, - 0x89, 0x05, 0x06, 0x33, 0xc0, 0x8e, 0xc0, 0xa3, 0xc8, 0x54, 0xa3, 0xca, 0x54, 0xa3, 0xcc, 0x54, - 0x8d, 0x3e, 0xdc, 0x54, 0xb9, 0x04, 0x00, 0xd1, 0xe9, 0xf3, 0xab, 0x8d, 0x3e, 0xe0, 0x54, 0xb9, - 0x04, 0x00, 0xd1, 0xe9, 0xf3, 0xab, 0x07, 0x8b, 0xd4, 0xb9, 0x01, 0x00, 0xbb, 0x00, 0x00, 0xbd, - 0x40, 0x5d, 0x88, 0x5e, 0x00, 0x8b, 0xc3, 0xd1, 0xe0, 0xd1, 0xe0, 0x05, 0x40, 0x60, 0x89, 0x46, - 0x02, 0xe8, 0xb0, 0xfc, 0xe8, 0xe2, 0x00, 0x8b, 0xc5, 0x05, 0x4e, 0x08, 0x89, 0x86, 0x50, 0x08, - 0x83, 0xc0, 0x02, 0x8b, 0xe0, 0x68, 0xfa, 0x05, 0x81, 0xc5, 0xec, 0x16, 0x43, 0xe2, 0xd3, 0x8b, - 0xe2, 0x33, 0xed, 0x5e, 0x5f, 0x5a, 0x59, 0x5b, 0x58, 0xc3, 0x3e, 0x89, 0xa6, 0x50, 0x08, 0x33, - 0xed, 0xbc, 0x1c, 0x56, 0xfa, 0x83, 0x0e, 0xe0, 0x54, 0x00, 0x74, 0x0d, 0x8b, 0x36, 0xe0, 0x54, - 0x8b, 0x4c, 0x04, 0xe8, 0xea, 0x03, 0xfb, 0xff, 0xd1, 0xfb, 0x32, 0xff, 0x8a, 0x1e, 0xe4, 0x54, - 0x80, 0x8f, 0xea, 0x54, 0x00, 0x75, 0x21, 0xd1, 0xe3, 0x8b, 0xaf, 0xe6, 0x54, 0x81, 0xbe, 0x4e, - 0x06, 0xa5, 0xa5, 0x74, 0x0c, 0xd1, 0xeb, 0xc6, 0x87, 0xea, 0x54, 0x01, 0xe8, 0x21, 0x06, 0xeb, - 0x07, 0x8b, 0x86, 0x50, 0x08, 0x8b, 0xe0, 0xc3, 0xeb, 0xb5, 0xeb, 0xae, 0x60, 0x9c, 0xe8, 0xa9, - 0xff, 0x0e, 0xe8, 0x02, 0x00, 0xeb, 0x01, 0xcf, 0x61, 0xc3, 0x50, 0xfa, 0x8b, 0x76, 0x1a, 0xf7, - 0xc6, 0xff, 0xff, 0x74, 0x10, 0x8b, 0x04, 0x89, 0x46, 0x1a, 0x0b, 0xc0, 0x75, 0x03, 0x89, 0x46, - 0x1c, 0xc7, 0x04, 0x00, 0x00, 0xfb, 0x58, 0xc3, 0x53, 0xfa, 0xc7, 0x04, 0x00, 0x00, 0x8b, 0x5d, - 0x02, 0x89, 0x37, 0x89, 0x75, 0x02, 0x83, 0x3d, 0x00, 0x75, 0x02, 0x89, 0x35, 0xfb, 0x5b, 0xc3, - 0x50, 0xfa, 0x8b, 0x35, 0x8b, 0x04, 0x89, 0x05, 0x0b, 0xc0, 0x75, 0x03, 0x89, 0x45, 0x02, 0xfb, - 0x58, 0xc3, 0x50, 0xfa, 0x8b, 0x46, 0x1a, 0x89, 0x04, 0x89, 0x76, 0x1a, 0xf7, 0x46, 0x1a, 0xff, - 0xff, 0x75, 0x03, 0x89, 0x76, 0x1a, 0xfb, 0x58, 0xc3, 0x50, 0x53, 0x51, 0x8b, 0xc5, 0x83, 0xc0, - 0x1e, 0x89, 0x46, 0x1a, 0x83, 0xc0, 0x48, 0x89, 0x46, 0x1c, 0xb9, 0x09, 0x00, 0x8b, 0xdd, 0x8b, - 0xc5, 0x83, 0xc0, 0x26, 0x89, 0x47, 0x1e, 0x83, 0xc3, 0x08, 0x83, 0xc0, 0x08, 0xe2, 0xf5, 0x59, - 0x5b, 0x58, 0xc3, 0x90, 0x60, 0x06, 0x1e, 0xfa, 0x33, 0xdb, 0x8e, 0xdb, 0x83, 0x06, 0xc8, 0x54, - 0x01, 0x73, 0x04, 0x11, 0x1e, 0xca, 0x54, 0xb9, 0x01, 0x00, 0x8b, 0xaf, 0xe6, 0x54, 0xf6, 0x06, - 0x1e, 0x56, 0x01, 0x75, 0x03, 0xe8, 0x80, 0x3e, 0xf7, 0x06, 0xc8, 0x54, 0x07, 0x00, 0x74, 0x10, - 0x80, 0xbe, 0x2d, 0x01, 0x01, 0x75, 0x09, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x10, 0x00, 0x01, - 0xf7, 0x86, 0xa3, 0x02, 0x01, 0x00, 0x74, 0x30, 0xfe, 0x86, 0x6b, 0x01, 0x80, 0xbe, 0x6b, 0x01, - 0x02, 0x73, 0x02, 0xeb, 0x23, 0xc6, 0x86, 0x6b, 0x01, 0x00, 0xf7, 0x86, 0x1c, 0x01, 0x01, 0x00, - 0x75, 0x0a, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x04, 0x00, 0x32, 0xfe, 0x81, 0xa6, 0x18, 0x01, - 0x32, 0xfe, 0xc7, 0x86, 0xa3, 0x02, 0x00, 0x00, 0xc6, 0x86, 0x6a, 0x01, 0x00, 0x8e, 0x46, 0x02, - 0x26, 0xa1, 0x08, 0x00, 0x25, 0x00, 0x02, 0x74, 0x03, 0xe8, 0x23, 0x12, 0xf6, 0x86, 0x54, 0x02, - 0x01, 0x74, 0x03, 0xe8, 0x36, 0x3e, 0x8b, 0x86, 0xf6, 0x00, 0x25, 0xd0, 0xe5, 0x89, 0x86, 0x2c, - 0x02, 0x8a, 0x46, 0x08, 0x3c, 0x06, 0x74, 0x08, 0x3c, 0x0a, 0x74, 0x04, 0x3c, 0x18, 0x75, 0x04, - 0xff, 0x86, 0x46, 0x02, 0x83, 0xc3, 0x02, 0x49, 0x74, 0x03, 0xe9, 0x5d, 0xff, 0xf7, 0x06, 0xdc, - 0x54, 0xff, 0xff, 0x74, 0x1f, 0xff, 0x0e, 0xcc, 0x54, 0x75, 0x19, 0xe8, 0x14, 0x02, 0x8b, 0x1e, - 0xdc, 0x54, 0x0b, 0xdb, 0x74, 0x0e, 0x8b, 0x47, 0x08, 0xa3, 0xcc, 0x54, 0xf7, 0x06, 0xcc, 0x54, - 0xff, 0xff, 0x74, 0xe7, 0x50, 0xb0, 0xa0, 0xe6, 0x10, 0x58, 0x1f, 0x07, 0x61, 0xcf, 0x60, 0x06, - 0x1e, 0xfa, 0x8d, 0x36, 0xd0, 0x54, 0x83, 0x04, 0x01, 0x83, 0x54, 0x02, 0x00, 0xe8, 0xae, 0x41, - 0xa0, 0xce, 0x54, 0xfe, 0xc0, 0x3c, 0x04, 0x72, 0x08, 0xc6, 0x06, 0xce, 0x54, 0x00, 0xe9, 0xf7, - 0xfe, 0xa2, 0xce, 0x54, 0xeb, 0xce, 0x50, 0x57, 0x56, 0xfa, 0x8d, 0x36, 0xd4, 0x54, 0x83, 0x04, - 0x01, 0x83, 0x54, 0x02, 0x00, 0x80, 0x3e, 0x1e, 0x56, 0x01, 0x75, 0x0d, 0x8b, 0x36, 0x20, 0x56, - 0x83, 0xfe, 0x14, 0x77, 0x0e, 0xff, 0x94, 0x50, 0x05, 0x50, 0xb0, 0xa0, 0xe6, 0x10, 0x58, 0x5e, - 0x5f, 0x58, 0xcf, 0xe8, 0x5c, 0x44, 0xeb, 0xf1, 0x57, 0x56, 0x50, 0xfa, 0x8d, 0x36, 0xd8, 0x54, - 0x83, 0x04, 0x01, 0x83, 0x54, 0x02, 0x00, 0x80, 0x3e, 0x1e, 0x56, 0x01, 0x75, 0x0d, 0x8b, 0x36, - 0x20, 0x56, 0x83, 0xfe, 0x14, 0x77, 0x0e, 0xff, 0x94, 0x50, 0x05, 0x50, 0xb0, 0xa0, 0xe6, 0x10, - 0x58, 0x58, 0x5e, 0x5f, 0xcf, 0xe8, 0x2a, 0x44, 0xeb, 0xf1, 0x50, 0x53, 0x51, 0x57, 0xe8, 0xab, - 0x00, 0xfa, 0x8b, 0x3c, 0x03, 0xfd, 0x89, 0x6d, 0x02, 0x8b, 0x44, 0x02, 0x89, 0x45, 0x04, 0x8b, - 0x44, 0x04, 0x89, 0x45, 0x06, 0x0b, 0xc0, 0x75, 0x0e, 0x8b, 0x86, 0x08, 0x02, 0x0b, 0xc0, 0x75, - 0x03, 0xb8, 0xc8, 0x00, 0x89, 0x45, 0x06, 0xf7, 0x06, 0xdc, 0x54, 0xff, 0xff, 0x75, 0x14, 0x89, - 0x3e, 0xdc, 0x54, 0x89, 0x3e, 0xde, 0x54, 0xc7, 0x05, 0x00, 0x00, 0x89, 0x45, 0x08, 0xa3, 0xcc, - 0x54, 0xeb, 0x63, 0x8b, 0x3e, 0xdc, 0x54, 0x8b, 0x0e, 0xcc, 0x54, 0x33, 0xdb, 0x3b, 0xc8, 0x72, - 0x35, 0x0b, 0xdb, 0x75, 0x17, 0x2b, 0xc8, 0x89, 0x4d, 0x08, 0x8b, 0x34, 0x03, 0xf5, 0x89, 0x44, - 0x08, 0x89, 0x3c, 0x89, 0x36, 0xdc, 0x54, 0xa3, 0xcc, 0x54, 0xeb, 0x3a, 0x2b, 0x4d, 0x08, 0x2b, - 0xc1, 0x8b, 0x34, 0x03, 0xf5, 0x89, 0x44, 0x08, 0x8b, 0x4d, 0x08, 0x2b, 0xc8, 0x89, 0x4d, 0x08, - 0x89, 0x37, 0x89, 0x3c, 0xeb, 0x20, 0x8b, 0xdf, 0x8b, 0x3d, 0x0b, 0xff, 0x74, 0x05, 0x03, 0x4d, - 0x08, 0xeb, 0xba, 0x2b, 0xc1, 0x8b, 0x34, 0x03, 0xf5, 0x89, 0x44, 0x08, 0x89, 0x37, 0xc7, 0x04, - 0x00, 0x00, 0x89, 0x36, 0xde, 0x54, 0xfb, 0x5f, 0x59, 0x5b, 0x58, 0xc3, 0x57, 0x53, 0x50, 0x56, - 0xfa, 0x8b, 0x1e, 0xdc, 0x54, 0x33, 0xff, 0x8b, 0x34, 0x03, 0xf5, 0x83, 0x7c, 0x02, 0xff, 0x74, - 0x4b, 0x3b, 0xde, 0x75, 0x49, 0x0b, 0xff, 0x74, 0x18, 0x8b, 0x07, 0x89, 0x05, 0x0b, 0xc0, 0x75, - 0x06, 0x89, 0x3e, 0xde, 0x54, 0xeb, 0x2c, 0x8b, 0x4f, 0x08, 0x8b, 0xf8, 0x01, 0x4d, 0x08, 0xeb, - 0x22, 0x8b, 0x3f, 0x89, 0x3e, 0xdc, 0x54, 0x0b, 0xff, 0x75, 0x0c, 0x89, 0x3e, 0xde, 0x54, 0xc7, - 0x06, 0xcc, 0x54, 0xff, 0xff, 0xeb, 0x0c, 0xa1, 0xcc, 0x54, 0x01, 0x45, 0x08, 0x8b, 0x45, 0x08, - 0xa3, 0xcc, 0x54, 0xc7, 0x47, 0x02, 0xff, 0xff, 0xc7, 0x07, 0x00, 0x00, 0xeb, 0x4e, 0x83, 0xcb, - 0x00, 0x74, 0x06, 0x8b, 0xfb, 0x8b, 0x1f, 0xeb, 0xa8, 0x83, 0xfd, 0x00, 0x75, 0x05, 0xbb, 0xe0, - 0x54, 0xeb, 0x04, 0x8d, 0x9e, 0xf0, 0x00, 0x8b, 0x1f, 0x83, 0xfb, 0x00, 0x74, 0x2e, 0x3b, 0xde, - 0x75, 0x05, 0xe8, 0x6b, 0x00, 0xeb, 0x25, 0x8b, 0xfb, 0x8b, 0x1f, 0x83, 0xcb, 0x00, 0x74, 0x1c, - 0x3b, 0xde, 0x75, 0xf3, 0x8b, 0x07, 0x89, 0x05, 0x83, 0xc8, 0x00, 0x75, 0x04, 0x89, 0xbe, 0xf2, - 0x00, 0xc7, 0x07, 0x00, 0x00, 0xc7, 0x47, 0x02, 0xff, 0xff, 0xeb, 0x00, 0xfb, 0x5e, 0x58, 0x5b, - 0x5f, 0xc3, 0x50, 0x53, 0x56, 0x55, 0x8b, 0x1e, 0xdc, 0x54, 0x8b, 0x6f, 0x02, 0x0b, 0xed, 0x74, - 0x06, 0x81, 0xc5, 0xf0, 0x00, 0xeb, 0x03, 0xbd, 0xe0, 0x54, 0x8b, 0x76, 0x02, 0x8b, 0x07, 0xa3, - 0xdc, 0x54, 0x0b, 0xc0, 0x75, 0x03, 0xa3, 0xde, 0x54, 0x89, 0x5e, 0x02, 0x89, 0x1c, 0xc7, 0x07, - 0x00, 0x00, 0x83, 0x4e, 0x00, 0x00, 0x75, 0x03, 0x89, 0x5e, 0x00, 0x5d, 0x5e, 0x5b, 0x58, 0xc3, - 0x55, 0x53, 0x50, 0x0b, 0xed, 0x74, 0x06, 0x81, 0xc5, 0xf0, 0x00, 0xeb, 0x03, 0xbd, 0xe0, 0x54, - 0x8b, 0x5e, 0x00, 0xc7, 0x47, 0x02, 0xff, 0xff, 0x8b, 0x07, 0xc7, 0x07, 0x00, 0x00, 0x8b, 0xd8, - 0x89, 0x5e, 0x00, 0x0b, 0xdb, 0x75, 0x03, 0x89, 0x5e, 0x02, 0x58, 0x5b, 0x5d, 0xc3, 0x50, 0x53, - 0x51, 0x57, 0x56, 0xfa, 0x8b, 0x1e, 0xdc, 0x54, 0x33, 0xff, 0x83, 0xcb, 0x00, 0x74, 0x54, 0x8b, - 0xc3, 0x39, 0x6f, 0x02, 0x75, 0x47, 0x0b, 0xff, 0x74, 0x18, 0x8b, 0x37, 0x89, 0x35, 0x8b, 0xc7, - 0x0b, 0xf6, 0x75, 0x06, 0x89, 0x3e, 0xde, 0x54, 0xeb, 0x2c, 0x8b, 0x4f, 0x08, 0x01, 0x4c, 0x08, - 0xeb, 0x24, 0x8b, 0x37, 0x89, 0x36, 0xdc, 0x54, 0x0b, 0xf6, 0x75, 0x0c, 0x89, 0x36, 0xde, 0x54, - 0xc7, 0x06, 0xcc, 0x54, 0xff, 0xff, 0xeb, 0x0e, 0xa1, 0xcc, 0x54, 0x01, 0x44, 0x08, 0x8b, 0x44, - 0x08, 0xa3, 0xcc, 0x54, 0x33, 0xc0, 0xc7, 0x47, 0x02, 0xff, 0xff, 0xeb, 0x00, 0x8b, 0xf8, 0x8b, - 0x1f, 0xeb, 0xa7, 0xfb, 0x5e, 0x5f, 0x59, 0x5b, 0x58, 0xc3, 0x50, 0x53, 0x51, 0x52, 0x8a, 0x8e, - 0xa8, 0x02, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x00, 0x00, 0x8b, 0xd8, 0xf7, 0x86, 0xf6, 0x00, 0x00, - 0x01, 0x74, 0x10, 0x83, 0xe0, 0xfd, 0xc6, 0x86, 0x79, 0x02, 0x01, 0x25, 0xff, 0x1f, 0x0d, 0x00, - 0x80, 0xeb, 0x0e, 0x25, 0xff, 0x1f, 0x0d, 0x00, 0x20, 0x83, 0xc8, 0x02, 0xc6, 0x86, 0x79, 0x02, - 0x00, 0xe8, 0x5c, 0x02, 0x0d, 0x00, 0x08, 0xf6, 0x86, 0xaa, 0x02, 0x01, 0x75, 0x03, 0x25, 0xff, - 0xf7, 0x33, 0xd8, 0x74, 0x04, 0x26, 0xa3, 0x00, 0x00, 0x26, 0xa1, 0x0c, 0x00, 0x8b, 0xd8, 0xf7, - 0x86, 0x12, 0x01, 0x10, 0x00, 0x74, 0x05, 0x0d, 0x00, 0x10, 0xeb, 0x03, 0x25, 0xff, 0xef, 0x8a, - 0xae, 0x69, 0x02, 0x80, 0xf9, 0x01, 0x75, 0x04, 0x8a, 0xae, 0x6a, 0x02, 0xf6, 0xc5, 0x01, 0x74, - 0x05, 0x83, 0xc8, 0x10, 0xeb, 0x03, 0x83, 0xe0, 0xef, 0xf6, 0x86, 0x6b, 0x02, 0x01, 0x74, 0x0a, - 0x83, 0xc8, 0x20, 0xc6, 0x86, 0x7a, 0x02, 0x00, 0xeb, 0x08, 0x83, 0xe0, 0xdf, 0xc6, 0x86, 0x7a, - 0x02, 0x01, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x74, 0x0a, 0xc6, 0x86, 0x7a, 0x02, 0x00, 0x83, 0xc8, - 0x40, 0xeb, 0x03, 0x83, 0xe0, 0xbf, 0xf6, 0x86, 0x79, 0x02, 0x01, 0x74, 0x05, 0x0d, 0x80, 0x00, - 0xeb, 0x03, 0x25, 0x7f, 0xff, 0xf6, 0x86, 0x78, 0x02, 0x01, 0x74, 0x05, 0x0d, 0x00, 0x01, 0xeb, - 0x03, 0x25, 0xff, 0xfe, 0xf6, 0x86, 0x7a, 0x02, 0x01, 0x74, 0x05, 0x0d, 0x00, 0x20, 0xeb, 0x03, - 0x25, 0xff, 0xdf, 0x33, 0xd8, 0x74, 0x12, 0xf7, 0xc3, 0x20, 0x00, 0x74, 0x05, 0xc6, 0x06, 0xfd, - 0x12, 0x01, 0x25, 0xff, 0xf7, 0x26, 0xa3, 0x0c, 0x00, 0x26, 0xa1, 0x10, 0x00, 0x8b, 0xd8, 0x33, - 0xd8, 0x74, 0x04, 0x26, 0xa3, 0x10, 0x00, 0xf6, 0x06, 0xfd, 0x12, 0x01, 0x74, 0x1e, 0xc6, 0x06, - 0xfd, 0x12, 0x00, 0x26, 0x81, 0x26, 0x00, 0x00, 0x7f, 0xff, 0x90, 0x90, 0x26, 0x81, 0x0e, 0x00, - 0x00, 0x80, 0x00, 0x90, 0x90, 0x26, 0x81, 0x26, 0x00, 0x00, 0x7f, 0xff, 0x5a, 0x59, 0x5b, 0x58, - 0xc3, 0x00, 0x8e, 0x46, 0x02, 0xf7, 0x86, 0xf4, 0x00, 0x04, 0x00, 0x74, 0x0b, 0xc6, 0x06, 0x1e, - 0x56, 0x01, 0x26, 0x83, 0x0e, 0x02, 0x00, 0x02, 0xc6, 0x86, 0xab, 0x02, 0x00, 0xc6, 0x86, 0xac, - 0x02, 0x00, 0x81, 0xa6, 0xf6, 0x00, 0xff, 0xfb, 0xa8, 0x01, 0x74, 0x19, 0x81, 0x8e, 0xf6, 0x00, - 0x00, 0x04, 0x26, 0x83, 0x0e, 0x02, 0x00, 0x20, 0x26, 0x83, 0x26, 0x02, 0x00, 0xef, 0xc6, 0x86, - 0xac, 0x02, 0x01, 0xeb, 0x4d, 0xa8, 0x02, 0x74, 0x1f, 0x26, 0x83, 0x26, 0x02, 0x00, 0xcf, 0xf7, - 0x86, 0xf4, 0x00, 0x04, 0x00, 0x75, 0x0d, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x84, 0x75, 0x05, 0xc6, - 0x86, 0xab, 0x02, 0x01, 0xb0, 0x02, 0xeb, 0x2a, 0xa8, 0x04, 0x74, 0x0e, 0x26, 0x83, 0x0e, 0x02, - 0x00, 0x20, 0x26, 0x83, 0x26, 0x02, 0x00, 0xef, 0xeb, 0x18, 0xa8, 0x08, 0x74, 0x08, 0x26, 0x83, - 0x0e, 0x02, 0x00, 0x30, 0xeb, 0x0c, 0xa8, 0x10, 0x74, 0x08, 0x26, 0x83, 0x0e, 0x02, 0x00, 0x30, - 0xeb, 0x00, 0xf6, 0x06, 0x1e, 0x56, 0x01, 0x74, 0x06, 0x26, 0x83, 0x26, 0x02, 0x00, 0xcf, 0xc3, - 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x0c, 0x00, 0x00, 0x01, 0x90, 0x90, 0x8e, 0x46, 0x02, - 0x26, 0x81, 0x26, 0x0c, 0x00, 0xff, 0xfe, 0xc3, 0x8e, 0x46, 0x02, 0xf6, 0x06, 0x1e, 0x56, 0x01, - 0x75, 0x0f, 0x80, 0xbe, 0xab, 0x02, 0x01, 0x75, 0x10, 0x26, 0x83, 0x0e, 0x02, 0x00, 0x02, 0xeb, - 0x08, 0xc6, 0x86, 0x6c, 0x01, 0x01, 0xe8, 0x3e, 0x3f, 0xc3, 0x8e, 0x46, 0x02, 0xf7, 0x86, 0xf4, - 0x00, 0x02, 0x00, 0x74, 0x09, 0x26, 0x81, 0x26, 0x02, 0x00, 0xff, 0xef, 0xeb, 0x07, 0x26, 0x81, - 0x0e, 0x02, 0x00, 0x00, 0x10, 0xc3, 0x8e, 0x46, 0x02, 0xf7, 0x86, 0xf4, 0x00, 0x02, 0x00, 0x74, - 0x09, 0x26, 0x81, 0x0e, 0x02, 0x00, 0x00, 0x10, 0xeb, 0x07, 0x26, 0x81, 0x26, 0x02, 0x00, 0xff, - 0xef, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x02, 0x00, 0x00, 0x80, 0xc3, 0x8e, 0x46, 0x02, - 0x26, 0x81, 0x26, 0x02, 0x00, 0xff, 0x7f, 0xc3, 0xf7, 0x86, 0xf4, 0x00, 0x08, 0x00, 0x74, 0x13, - 0xe8, 0xdf, 0xff, 0xeb, 0x3a, 0x80, 0x7e, 0x06, 0x0e, 0x74, 0x1e, 0x80, 0x7e, 0x06, 0x48, 0x74, - 0x24, 0xeb, 0x2c, 0xe8, 0xd7, 0xff, 0x8e, 0x46, 0x02, 0xf7, 0x86, 0xf4, 0x00, 0x10, 0x00, 0x75, - 0xe4, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x01, 0x75, 0x0c, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x02, - 0x00, 0x00, 0x40, 0xeb, 0x0a, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x02, 0x00, 0xff, 0xbf, 0xc3, - 0x83, 0xe0, 0xf7, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x04, 0x74, 0x03, 0x83, 0xc8, 0x08, 0xc3, 0x90, - 0xe8, 0x19, 0xf3, 0xc6, 0x86, 0x69, 0x02, 0x01, 0xc6, 0x86, 0x6b, 0x02, 0x01, 0x8e, 0x46, 0x02, - 0x26, 0x83, 0x26, 0x0c, 0x00, 0xfe, 0xc6, 0x86, 0x78, 0x02, 0x00, 0xe8, 0x3c, 0xfd, 0x8e, 0x46, - 0x02, 0x26, 0xc7, 0x06, 0x10, 0x00, 0x04, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x10, 0x00, - 0x04, 0x33, 0xc0, 0x88, 0x86, 0x88, 0x02, 0x88, 0x86, 0x89, 0x02, 0xc6, 0x86, 0x63, 0x01, 0x01, - 0xc7, 0x86, 0x64, 0x01, 0xf6, 0x05, 0xc6, 0x86, 0x69, 0x01, 0x02, 0xbe, 0xbb, 0x45, 0xe8, 0xc9, - 0xfa, 0xbe, 0xb5, 0x45, 0xe8, 0xc3, 0xfa, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x04, 0x00, 0x32, - 0xfe, 0xc3, 0xc6, 0x86, 0x63, 0x01, 0x00, 0x80, 0xbe, 0x62, 0x01, 0x01, 0x75, 0x0d, 0xe8, 0xab, - 0xf2, 0xe8, 0x53, 0x2c, 0xc6, 0x46, 0x07, 0x00, 0xe9, 0xa7, 0x00, 0xbe, 0x6d, 0x45, 0xe8, 0x4b, - 0xfb, 0xbe, 0xb5, 0x45, 0xe8, 0x45, 0xfb, 0xc6, 0x86, 0x88, 0x02, 0x01, 0x80, 0x7e, 0x06, 0x02, - 0x74, 0x08, 0x80, 0x7e, 0x06, 0x44, 0x74, 0x09, 0xeb, 0x0d, 0xc6, 0x46, 0x07, 0x04, 0xe9, 0x81, - 0x00, 0xc6, 0x46, 0x07, 0x46, 0xeb, 0x7b, 0x80, 0x7e, 0x08, 0x08, 0x75, 0xf8, 0xc6, 0x86, 0x81, - 0x02, 0x01, 0xc6, 0x86, 0x69, 0x02, 0x00, 0xc6, 0x86, 0x5d, 0x02, 0x00, 0xc6, 0x86, 0x5c, 0x02, - 0x00, 0xc6, 0x86, 0x5f, 0x02, 0x01, 0xc6, 0x86, 0x68, 0x02, 0x01, 0xc6, 0x86, 0x6c, 0x02, 0x01, - 0xf6, 0x86, 0x58, 0x02, 0x01, 0x74, 0x17, 0x80, 0xbe, 0xa6, 0x02, 0x01, 0x74, 0x2c, 0xc6, 0x46, - 0x09, 0x0a, 0xc6, 0x86, 0x6b, 0x02, 0x00, 0xc6, 0x86, 0x59, 0x02, 0x01, 0xeb, 0x1c, 0xf6, 0x86, - 0x59, 0x02, 0x01, 0x74, 0x15, 0x80, 0xbe, 0xa6, 0x02, 0x01, 0x74, 0x0e, 0xc6, 0x46, 0x09, 0x06, - 0xc6, 0x86, 0x58, 0x02, 0x01, 0xc6, 0x86, 0x6b, 0x02, 0x01, 0xe8, 0x4d, 0xfc, 0xe8, 0x28, 0xfe, - 0xbe, 0x9d, 0x45, 0xe8, 0x04, 0xfa, 0xbe, 0x61, 0x45, 0xe8, 0xfe, 0xf9, 0xbe, 0xa3, 0x45, 0xe8, - 0xf8, 0xf9, 0xc3, 0x90, 0xc6, 0x46, 0x09, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x04, 0x00, - 0x32, 0xfe, 0xbe, 0xc1, 0x45, 0xe8, 0xe2, 0xf9, 0xc7, 0x86, 0xc4, 0x01, 0x14, 0x00, 0xc7, 0x86, - 0xc2, 0x02, 0x00, 0x00, 0xbe, 0xa9, 0x45, 0xe8, 0xd0, 0xf9, 0xc6, 0x86, 0x69, 0x02, 0x00, 0xc6, - 0x86, 0x6b, 0x02, 0x00, 0xc6, 0x86, 0x68, 0x02, 0x01, 0xc6, 0x86, 0x6c, 0x02, 0x01, 0xe8, 0xf9, - 0xfb, 0xbe, 0x67, 0x45, 0xe8, 0xb3, 0xf9, 0xbe, 0x9d, 0x45, 0xe8, 0xad, 0xf9, 0x33, 0xc0, 0x89, - 0x86, 0xee, 0x01, 0x89, 0x86, 0xf0, 0x01, 0x89, 0x86, 0xf2, 0x01, 0xf6, 0x06, 0x1e, 0x56, 0x01, - 0x74, 0x0a, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x04, 0x00, 0xff, 0xf7, 0xf7, 0x86, 0xf6, 0x00, - 0x00, 0x20, 0x74, 0x10, 0xbe, 0xa3, 0x45, 0xe8, 0x80, 0xf9, 0xc6, 0x86, 0x5d, 0x02, 0x00, 0xc6, - 0x86, 0x5c, 0x02, 0x00, 0xe8, 0x91, 0xfd, 0xc3, 0xc3, 0x90, 0xc6, 0x86, 0x57, 0x02, 0x01, 0xc7, - 0x86, 0xc4, 0x02, 0x00, 0x00, 0xc7, 0x86, 0xc6, 0x02, 0x00, 0x00, 0xbe, 0x67, 0x45, 0xe8, 0x59, - 0xf9, 0xe8, 0xc0, 0x12, 0xc3, 0x90, 0xc6, 0x86, 0x5b, 0x02, 0x01, 0xf6, 0x86, 0x84, 0x02, 0x01, - 0x74, 0x08, 0xe8, 0xb1, 0x14, 0xc6, 0x86, 0x84, 0x02, 0x00, 0xbe, 0x67, 0x45, 0xe8, 0x3a, 0xf9, - 0xf6, 0x86, 0x63, 0x02, 0x01, 0x74, 0x04, 0xc6, 0x46, 0x07, 0x0c, 0xc3, 0xbe, 0x67, 0x45, 0xe8, - 0x28, 0xf9, 0xbe, 0x85, 0x45, 0xe8, 0x22, 0xf9, 0xc7, 0x86, 0xb8, 0x02, 0x01, 0x00, 0xc7, 0x86, - 0xba, 0x02, 0x01, 0x00, 0xe8, 0xf7, 0x12, 0xc3, 0xc7, 0x86, 0xc2, 0x02, 0x00, 0x00, 0xc7, 0x86, - 0xc4, 0x01, 0x14, 0x00, 0xc6, 0x86, 0x08, 0x01, 0x00, 0x81, 0xa6, 0x06, 0x02, 0xdf, 0xbf, 0xc6, - 0x86, 0x60, 0x02, 0x01, 0xc7, 0x86, 0x26, 0x02, 0xff, 0xff, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x20, - 0x75, 0x18, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x84, 0x75, 0x10, 0xbe, 0xa3, 0x45, 0xe8, 0xda, 0xf8, - 0xc6, 0x86, 0x5d, 0x02, 0x00, 0xc6, 0x86, 0x5c, 0x02, 0x00, 0xbe, 0x67, 0x45, 0xe8, 0x7c, 0xf9, - 0xb8, 0x00, 0x80, 0xe8, 0xd2, 0x2b, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x0c, 0x00, 0x01, 0xe8, - 0x46, 0xfd, 0xe8, 0xf5, 0xfc, 0xc6, 0x86, 0x5e, 0x02, 0x01, 0xc6, 0x86, 0xca, 0x01, 0x00, 0xf7, - 0x86, 0xf6, 0x00, 0x04, 0x00, 0x74, 0x05, 0xc6, 0x86, 0xca, 0x01, 0x01, 0xe8, 0xaa, 0xf3, 0xf6, - 0x86, 0x54, 0x02, 0x01, 0x75, 0x06, 0xbe, 0x73, 0x45, 0xe8, 0x8e, 0xf8, 0xff, 0x86, 0xfc, 0x00, - 0xc3, 0x90, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x10, 0x00, 0xfb, 0xc6, 0x86, 0x08, 0x01, 0x00, - 0xc6, 0x46, 0x09, 0x00, 0xc6, 0x46, 0x0b, 0x00, 0xc6, 0x86, 0x54, 0x02, 0x00, 0xc6, 0x86, 0x68, - 0x02, 0x00, 0xc6, 0x86, 0x5e, 0x02, 0x00, 0xc6, 0x86, 0x60, 0x02, 0x00, 0xc6, 0x86, 0x5b, 0x02, - 0x00, 0xc6, 0x86, 0x63, 0x02, 0x00, 0xc6, 0x86, 0x6b, 0x02, 0x00, 0xc6, 0x86, 0x69, 0x02, 0x00, - 0xc6, 0x86, 0x6a, 0x02, 0x00, 0xe8, 0x82, 0xfa, 0xf6, 0x86, 0x6c, 0x02, 0x01, 0x74, 0x0c, 0x83, - 0xbe, 0x22, 0x01, 0x0e, 0x75, 0x28, 0xe8, 0x50, 0x06, 0xeb, 0x23, 0x8e, 0x46, 0x02, 0xf6, 0x06, - 0x1e, 0x56, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x02, 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, - 0x01, 0x01, 0xe8, 0xea, 0x3b, 0xe8, 0xe6, 0xf9, 0xbe, 0x7f, 0x45, 0xe8, 0x0c, 0xf8, 0xc3, 0x90, - 0xc7, 0x86, 0x2e, 0x02, 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x10, 0x00, 0xfb, 0x8e, - 0x46, 0x02, 0xf6, 0x06, 0x1e, 0x56, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x02, 0x00, 0xfd, 0xeb, - 0x08, 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xe8, 0xb6, 0x3b, 0xc6, 0x86, 0x08, 0x01, 0x00, 0xc7, 0x86, - 0x22, 0x01, 0x00, 0x00, 0xe8, 0x2f, 0xfc, 0xe8, 0x53, 0xfc, 0xf7, 0x86, 0xf4, 0x00, 0x10, 0x00, - 0x74, 0x14, 0xf7, 0x86, 0xf4, 0x00, 0x02, 0x00, 0x74, 0x0c, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, - 0x02, 0x00, 0x00, 0x40, 0xeb, 0x0a, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x02, 0x00, 0xff, 0xbf, - 0xe8, 0xa9, 0xef, 0xe8, 0x50, 0x2b, 0xc6, 0x86, 0xad, 0x02, 0x00, 0x8d, 0xbe, 0x0a, 0x03, 0x8c, - 0xd8, 0x8e, 0xc0, 0xab, 0xab, 0xab, 0xf6, 0x86, 0xa6, 0x02, 0x01, 0x74, 0x04, 0xc6, 0x46, 0x09, - 0x1e, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x04, 0x00, 0xff, 0xfb, 0xf7, 0x86, 0x12, 0x01, 0x00, - 0x02, 0x74, 0x10, 0xf7, 0x86, 0x20, 0x01, 0x80, 0x00, 0x75, 0x08, 0xbe, 0x0f, 0x46, 0xe8, 0x69, - 0xf7, 0xeb, 0x0d, 0x8e, 0x46, 0x02, 0x33, 0xc0, 0x26, 0xa3, 0x24, 0x00, 0x26, 0xa3, 0x26, 0x00, - 0xc3, 0x90, 0x33, 0xc0, 0x88, 0x86, 0x5b, 0x02, 0x88, 0x86, 0x5e, 0x02, 0x88, 0x86, 0x60, 0x02, - 0x88, 0x86, 0x63, 0x02, 0x88, 0x86, 0x68, 0x02, 0xbe, 0xaf, 0x45, 0xe8, 0x3c, 0xf7, 0xc6, 0x86, - 0xad, 0x02, 0x01, 0x8e, 0x46, 0x02, 0xf6, 0x06, 0x1e, 0x56, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, - 0x02, 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xe8, 0xf2, 0x3a, 0xc3, 0xc7, 0x86, - 0x2e, 0x02, 0x03, 0x00, 0xe8, 0x15, 0xef, 0xc6, 0x86, 0x69, 0x02, 0x01, 0xc6, 0x86, 0x6b, 0x02, - 0x01, 0xe8, 0x46, 0xf9, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x8e, 0x46, - 0x02, 0x26, 0x83, 0x0e, 0x10, 0x00, 0x04, 0xbe, 0xcd, 0x45, 0xe8, 0xed, 0xf6, 0x8e, 0x46, 0x02, - 0x26, 0x81, 0x26, 0x04, 0x00, 0x32, 0xfe, 0xe8, 0x49, 0x05, 0xc3, 0x90, 0xc7, 0x86, 0x2e, 0x02, - 0x04, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x0c, 0x00, 0xfe, 0xc6, 0x86, 0x6b, 0x02, 0x01, - 0xc6, 0x86, 0x69, 0x02, 0x00, 0xc6, 0x86, 0x78, 0x02, 0x00, 0xe8, 0xfd, 0xf8, 0x8e, 0x46, 0x02, - 0x26, 0xc7, 0x06, 0x10, 0x00, 0x04, 0x00, 0x32, 0xc0, 0xe8, 0x42, 0x15, 0x33, 0xc0, 0x88, 0x86, - 0x88, 0x02, 0x88, 0x86, 0x89, 0x02, 0xc6, 0x86, 0x63, 0x01, 0x01, 0xc7, 0x86, 0x64, 0x01, 0xf6, - 0x05, 0xc6, 0x86, 0x69, 0x01, 0x02, 0xc6, 0x86, 0x68, 0x01, 0x02, 0xc7, 0x86, 0x66, 0x01, 0x20, - 0x03, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x1c, 0x00, 0x00, 0x00, 0xbe, 0x6d, 0x45, 0xe8, 0x79, - 0xf6, 0xbe, 0xc7, 0x45, 0xe8, 0x73, 0xf6, 0x8b, 0xb6, 0x64, 0x01, 0xb9, 0xe8, 0x03, 0xe8, 0xec, - 0x0f, 0xc3, 0xc7, 0x86, 0x2e, 0x02, 0x05, 0x00, 0xc6, 0x86, 0x69, 0x02, 0x01, 0xe8, 0x9a, 0xf8, - 0xf6, 0x86, 0x6e, 0x02, 0x01, 0x75, 0x04, 0xc6, 0x46, 0x09, 0x16, 0xc6, 0x86, 0x72, 0x02, 0x01, - 0xbe, 0xeb, 0x45, 0xe8, 0x44, 0xf6, 0xbe, 0xf1, 0x45, 0xe8, 0x3e, 0xf6, 0xbe, 0xd9, 0x45, 0xe8, - 0x38, 0xf6, 0xbe, 0x03, 0x46, 0xe8, 0x32, 0xf6, 0xc7, 0x86, 0xcc, 0x02, 0x01, 0x00, 0xc6, 0x86, - 0x76, 0x02, 0x01, 0xe8, 0x7e, 0x12, 0xc3, 0x90, 0xc7, 0x86, 0x2e, 0x02, 0x07, 0x00, 0xc6, 0x86, - 0x68, 0x02, 0x01, 0xc6, 0x86, 0x5c, 0x02, 0x00, 0xc6, 0x86, 0x5d, 0x02, 0x00, 0xbe, 0xa3, 0x45, - 0xe8, 0x07, 0xf6, 0xf6, 0x86, 0x6e, 0x02, 0x01, 0x75, 0x0d, 0xc6, 0x86, 0x6e, 0x02, 0x01, 0xb8, - 0x00, 0x80, 0xe8, 0x03, 0x29, 0xeb, 0x0a, 0x83, 0xa6, 0x06, 0x02, 0xdf, 0xc6, 0x86, 0x85, 0x02, - 0x01, 0xc6, 0x86, 0x08, 0x01, 0x00, 0xe8, 0x6f, 0xfa, 0xe8, 0x1e, 0xfa, 0xf6, 0x06, 0x1e, 0x56, - 0x01, 0x74, 0x0a, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x04, 0x00, 0xff, 0xf7, 0xe8, 0xe8, 0xf9, - 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x0c, 0x00, 0x01, 0xe8, 0xcd, 0xf0, 0xc7, 0x86, 0xc4, 0x01, - 0x14, 0x00, 0xc7, 0x86, 0xc2, 0x02, 0x00, 0x00, 0xbe, 0xa9, 0x45, 0xe8, 0xac, 0xf5, 0xc3, 0x90, - 0xc7, 0x86, 0x32, 0x02, 0x01, 0x00, 0xc7, 0x86, 0xc2, 0x01, 0xff, 0xff, 0xc7, 0x86, 0xc2, 0x02, - 0x00, 0x00, 0xc7, 0x86, 0xc4, 0x01, 0x14, 0x00, 0x80, 0x7e, 0x07, 0x10, 0x74, 0x44, 0x32, 0xc0, - 0xe8, 0x1b, 0x14, 0x80, 0x7e, 0x06, 0x0e, 0x74, 0x02, 0xeb, 0x37, 0x8e, 0x46, 0x02, 0x26, 0x83, - 0x0e, 0x0c, 0x00, 0x01, 0x83, 0xa6, 0x06, 0x02, 0xdf, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xf6, 0x86, - 0x5b, 0x02, 0x01, 0x74, 0x1d, 0xf6, 0x86, 0x66, 0x02, 0x01, 0x74, 0x16, 0xf6, 0x86, 0x63, 0x02, - 0x01, 0x75, 0x0f, 0xc6, 0x86, 0x63, 0x02, 0x01, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x75, 0x03, 0xe8, - 0x87, 0x0e, 0xc3, 0x90, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x0c, 0x00, 0xfe, 0xc7, 0x86, 0x32, - 0x02, 0x02, 0x00, 0xc6, 0x86, 0x69, 0x02, 0x01, 0xe8, 0x6f, 0xf7, 0xe8, 0x33, 0xf9, 0xbe, 0x8b, - 0x45, 0xe8, 0x26, 0xf5, 0xe8, 0x1d, 0x0e, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x0c, 0x00, - 0xfe, 0xc7, 0x86, 0x32, 0x02, 0x03, 0x00, 0xc7, 0x86, 0xc2, 0x02, 0x00, 0x00, 0xc7, 0x86, 0xc4, - 0x01, 0x0a, 0x00, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x74, 0x0f, 0xc6, 0x86, 0x54, 0x02, 0x00, 0x8e, - 0x46, 0x02, 0x26, 0x81, 0x26, 0x24, 0x00, 0xff, 0x7f, 0xc6, 0x86, 0x5a, 0x02, 0x00, 0xc6, 0x86, - 0x69, 0x02, 0x01, 0xc6, 0x86, 0x6b, 0x02, 0x01, 0xe8, 0x1f, 0xf7, 0x81, 0xa6, 0x06, 0x02, 0xff, - 0x2f, 0x83, 0x8e, 0x06, 0x02, 0x20, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xbe, 0x55, 0x45, 0xe8, 0xc9, - 0xf4, 0xbe, 0x79, 0x45, 0xe8, 0xc3, 0xf4, 0xc7, 0x86, 0xb2, 0x02, 0x01, 0x00, 0xc7, 0x86, 0xb4, - 0x02, 0x01, 0x00, 0xe8, 0x5d, 0x0d, 0xc3, 0x90, 0xff, 0x86, 0x44, 0x02, 0x8e, 0x46, 0x02, 0x26, - 0x83, 0x26, 0x0c, 0x00, 0xfe, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x10, 0x00, 0x04, 0xf6, 0x86, - 0x5f, 0x02, 0x01, 0x75, 0x03, 0xe8, 0x03, 0x0d, 0xc3, 0x90, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, - 0x0c, 0x00, 0xfe, 0x80, 0xbe, 0xa6, 0x02, 0x01, 0x75, 0x26, 0xc6, 0x86, 0x68, 0x02, 0x00, 0xc6, - 0x86, 0x69, 0x02, 0x00, 0xc6, 0x86, 0x6b, 0x02, 0x00, 0xe8, 0xae, 0xf6, 0xe8, 0x3f, 0xf6, 0xbe, - 0x7f, 0x45, 0xe8, 0x65, 0xf4, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x10, 0x00, 0xfb, 0xeb, 0x60, - 0xc6, 0x86, 0x6d, 0x02, 0x01, 0xf6, 0x86, 0x6c, 0x02, 0x01, 0x75, 0x54, 0xe8, 0x1f, 0xf6, 0xe8, - 0x27, 0xed, 0xc6, 0x86, 0x68, 0x02, 0x00, 0xc6, 0x86, 0x6d, 0x02, 0x00, 0xbe, 0x7f, 0x45, 0xe8, - 0x38, 0xf4, 0x8e, 0x46, 0x02, 0xf6, 0x06, 0x1e, 0x56, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x02, - 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xe8, 0xf3, 0x37, 0x8e, 0x46, 0x02, 0x26, - 0xc7, 0x06, 0x10, 0x00, 0x04, 0x00, 0x33, 0xc0, 0x88, 0x86, 0x88, 0x02, 0x88, 0x86, 0x89, 0x02, - 0xc6, 0x86, 0x63, 0x01, 0x01, 0xc7, 0x86, 0x64, 0x01, 0xf6, 0x05, 0xc6, 0x86, 0x69, 0x01, 0x02, - 0xc3, 0x90, 0xff, 0x86, 0x44, 0x02, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x0c, 0x00, 0xfe, 0x8e, - 0x46, 0x02, 0x26, 0x83, 0x0e, 0x10, 0x00, 0x04, 0xc7, 0x86, 0xae, 0x02, 0x02, 0x00, 0xc7, 0x86, - 0xb0, 0x02, 0x08, 0x00, 0xc6, 0x86, 0x54, 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x24, - 0x00, 0xff, 0x7f, 0xc6, 0x86, 0x69, 0x02, 0x00, 0xc6, 0x86, 0x6b, 0x02, 0x00, 0xe8, 0xfa, 0xf5, - 0xf6, 0x86, 0x81, 0x02, 0x01, 0x75, 0x06, 0xbe, 0x49, 0x45, 0xe8, 0xad, 0xf3, 0x81, 0xa6, 0x06, - 0x02, 0xff, 0x6f, 0x81, 0x8e, 0x06, 0x02, 0x00, 0x40, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xc3, 0x90, - 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x0c, 0x00, 0xfe, 0x83, 0xbe, 0xc6, 0x01, 0x00, 0x74, 0x0d, - 0x8b, 0x86, 0xc6, 0x01, 0xc7, 0x86, 0xc6, 0x01, 0x00, 0x00, 0xe8, 0x44, 0x0f, 0xbe, 0x55, 0x45, - 0xe8, 0x77, 0xf3, 0xc3, 0xc7, 0x86, 0x32, 0x02, 0x01, 0x00, 0xc7, 0x86, 0x30, 0x02, 0x02, 0x00, - 0x32, 0xc0, 0xe8, 0xf9, 0x11, 0x80, 0x7e, 0x06, 0x48, 0x75, 0x09, 0x8e, 0x46, 0x02, 0x26, 0x83, - 0x0e, 0x0c, 0x00, 0x01, 0xc3, 0x90, 0xc7, 0x86, 0x30, 0x02, 0x03, 0x00, 0xff, 0x86, 0x44, 0x02, - 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x0c, 0x00, 0xfe, 0xc6, 0x86, 0x68, 0x02, 0x00, 0xc6, 0x86, - 0x72, 0x02, 0x00, 0xbe, 0xd3, 0x45, 0xe8, 0x31, 0xf3, 0xbe, 0xdf, 0x45, 0xe8, 0x2b, 0xf3, 0xbe, - 0xf7, 0x45, 0xe8, 0x25, 0xf3, 0xc6, 0x86, 0x6b, 0x02, 0x01, 0xe8, 0x5d, 0xf5, 0x81, 0x8e, 0x06, - 0x02, 0x04, 0x50, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xf6, 0x86, 0x61, 0x02, 0x01, 0x74, 0x06, 0x81, - 0x8e, 0x06, 0x02, 0x00, 0x80, 0xe8, 0x54, 0x2d, 0xe8, 0x70, 0x0b, 0xc3, 0xc7, 0x86, 0x30, 0x02, - 0x04, 0x00, 0xbe, 0xd3, 0x45, 0xe8, 0xf2, 0xf2, 0xbe, 0xdf, 0x45, 0xe8, 0xec, 0xf2, 0x81, 0xa6, - 0x06, 0x02, 0xfb, 0x6f, 0x81, 0x8e, 0x06, 0x02, 0x00, 0x40, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xc3, - 0xc7, 0x86, 0x30, 0x02, 0x05, 0x00, 0x8e, 0x46, 0x02, 0xf6, 0x06, 0x1e, 0x56, 0x01, 0x75, 0x08, - 0x26, 0x83, 0x26, 0x02, 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xe8, 0x8f, 0x36, - 0x81, 0xa6, 0x06, 0x02, 0xfb, 0x2f, 0x83, 0x8e, 0x06, 0x02, 0x20, 0xc6, 0x86, 0x85, 0x02, 0x01, - 0xe8, 0x0f, 0x01, 0xc3, 0xc7, 0x86, 0x30, 0x02, 0x01, 0x00, 0xc3, 0x90, 0xc3, 0x53, 0x50, 0x89, - 0x86, 0x22, 0x01, 0x80, 0xbe, 0x62, 0x01, 0x01, 0x75, 0x0f, 0x50, 0xe8, 0x8e, 0xea, 0xe8, 0x43, - 0x24, 0xc6, 0x46, 0x07, 0x00, 0x58, 0xe9, 0x9d, 0x00, 0xf6, 0x86, 0x08, 0x01, 0x01, 0x74, 0x05, - 0xe8, 0x85, 0x25, 0xeb, 0x57, 0x83, 0xf8, 0x10, 0x75, 0x08, 0x81, 0x8e, 0x1e, 0x01, 0x00, 0x80, - 0xeb, 0x4a, 0x83, 0x8e, 0x1e, 0x01, 0x02, 0x8b, 0x9e, 0x06, 0x02, 0x83, 0xf8, 0x01, 0x75, 0x04, - 0x81, 0xcb, 0x00, 0x04, 0x83, 0xf8, 0x0c, 0x75, 0x04, 0x81, 0xcb, 0x00, 0x08, 0x83, 0xf8, 0x0b, - 0x75, 0x03, 0x83, 0xcb, 0x02, 0x83, 0xf8, 0x09, 0x75, 0x03, 0x83, 0xcb, 0x04, 0x83, 0xf8, 0x0a, - 0x75, 0x04, 0x81, 0xcb, 0x00, 0x01, 0x83, 0xf8, 0x06, 0x75, 0x03, 0x83, 0xcb, 0x01, 0x83, 0xf8, - 0x0f, 0x74, 0x09, 0x89, 0x9e, 0x06, 0x02, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xc6, 0x46, 0x07, 0x12, - 0xc6, 0x46, 0x09, 0x1e, 0xf6, 0x86, 0xa7, 0x02, 0x01, 0x74, 0x1a, 0x8e, 0x46, 0x02, 0xf6, 0x06, - 0x1e, 0x56, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x02, 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, - 0x01, 0x01, 0xe8, 0xca, 0x35, 0xf6, 0x86, 0xa5, 0x02, 0x01, 0x75, 0x02, 0xeb, 0x08, 0xc6, 0x46, - 0x07, 0x10, 0xc6, 0x46, 0x09, 0x00, 0x58, 0x5b, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x00, - 0x00, 0x02, 0x00, 0x74, 0x0b, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x00, 0x00, 0xfd, 0xeb, 0x09, - 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x00, 0x00, 0x02, 0xc3, 0xc7, 0x86, 0x2e, 0x02, 0x01, 0x00, - 0xc3, 0xb9, 0x01, 0x01, 0x38, 0xc8, 0x75, 0x19, 0x8b, 0xb6, 0xf6, 0x00, 0x81, 0xe6, 0x00, 0xc0, - 0x81, 0xfe, 0x00, 0x80, 0x75, 0x0b, 0xc6, 0x86, 0x56, 0x02, 0x01, 0xbe, 0x5b, 0x45, 0xe8, 0x99, - 0xf1, 0xc3, 0xc3, 0x50, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x02, 0x74, 0x06, 0x81, 0x8e, 0xf6, 0x00, - 0x00, 0x01, 0xc6, 0x86, 0x90, 0x02, 0x01, 0xe8, 0x05, 0x00, 0xe8, 0xbd, 0xf3, 0x58, 0xc3, 0xc7, - 0x86, 0x93, 0x02, 0x00, 0x00, 0xc7, 0x86, 0x97, 0x02, 0x05, 0x00, 0xc6, 0x86, 0x91, 0x02, 0x00, - 0xa1, 0xc8, 0x54, 0x89, 0x86, 0x95, 0x02, 0x40, 0x89, 0x86, 0x99, 0x02, 0xc3, 0xc6, 0x86, 0x90, - 0x02, 0x00, 0xc6, 0x86, 0x91, 0x02, 0x00, 0xc3, 0x50, 0x53, 0xf6, 0x86, 0x91, 0x02, 0x01, 0x75, - 0x1c, 0xa1, 0xc8, 0x54, 0x8b, 0x9e, 0x95, 0x02, 0x3b, 0xc3, 0x74, 0x11, 0x43, 0x3b, 0xc3, 0x74, - 0x0c, 0x83, 0xc0, 0x04, 0x89, 0x86, 0x95, 0x02, 0xc6, 0x86, 0x91, 0x02, 0x01, 0x5b, 0x58, 0xc3, - 0xc7, 0x86, 0x93, 0x02, 0x00, 0x00, 0xa1, 0xc8, 0x54, 0x83, 0xc0, 0x04, 0x89, 0x86, 0x95, 0x02, - 0xc6, 0x86, 0x91, 0x02, 0x01, 0xc3, 0xa1, 0xc8, 0x54, 0x3b, 0x86, 0x99, 0x02, 0x74, 0x3b, 0x40, - 0x3b, 0x86, 0x99, 0x02, 0x74, 0x34, 0x48, 0xf6, 0x86, 0x91, 0x02, 0x01, 0x74, 0x43, 0x3b, 0x86, - 0x95, 0x02, 0x75, 0x3d, 0x81, 0xbe, 0x93, 0x02, 0x04, 0x01, 0x75, 0x0b, 0xf7, 0x86, 0xf6, 0x00, - 0x00, 0x01, 0x75, 0x03, 0xe9, 0xa7, 0x00, 0x83, 0xbe, 0x93, 0x02, 0x04, 0x75, 0x11, 0x80, 0x7e, - 0x06, 0x04, 0x75, 0x09, 0xe8, 0xa9, 0xff, 0xe9, 0xa6, 0x00, 0xe9, 0xa3, 0x00, 0xeb, 0x0c, 0x80, - 0x7e, 0x06, 0x04, 0x75, 0x06, 0xe8, 0x2b, 0xff, 0xe9, 0x95, 0x00, 0xe8, 0x5f, 0xff, 0xe9, 0x8f, - 0x00, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x14, 0x00, 0x25, 0x24, 0x01, 0x8b, 0xd8, 0x33, 0x86, 0x93, - 0x02, 0x75, 0x02, 0xeb, 0x7b, 0xa9, 0x04, 0x00, 0x74, 0x15, 0xe8, 0x4b, 0xff, 0xf7, 0xc3, 0x04, - 0x00, 0x74, 0x07, 0xc6, 0x86, 0x92, 0x02, 0x01, 0xeb, 0x05, 0xc6, 0x86, 0x92, 0x02, 0x00, 0xa9, - 0x00, 0x01, 0x74, 0x14, 0xf7, 0xc3, 0x00, 0x01, 0x74, 0x0b, 0xf7, 0xc3, 0x20, 0x00, 0x75, 0x20, - 0xe8, 0x25, 0xff, 0xeb, 0x03, 0xe8, 0x20, 0xff, 0xa9, 0x20, 0x00, 0x74, 0x2f, 0xf7, 0xc3, 0x20, - 0x00, 0x74, 0x36, 0xf6, 0x86, 0x91, 0x02, 0x01, 0x74, 0x32, 0xf7, 0xc3, 0x00, 0x01, 0x74, 0x2c, - 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x02, 0x74, 0x16, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x01, 0x74, 0x0e, - 0xe8, 0x1d, 0xff, 0x81, 0xa6, 0xf6, 0x00, 0xff, 0xfe, 0xe8, 0x7e, 0xf2, 0xeb, 0x0e, 0xe8, 0xdc, - 0xfe, 0xb8, 0x0e, 0x00, 0xe8, 0x96, 0xfd, 0xeb, 0x03, 0xe8, 0xdc, 0xfe, 0x89, 0x9e, 0x93, 0x02, - 0xc3, 0x90, 0x55, 0x1e, 0x06, 0x33, 0xed, 0x8e, 0xdd, 0x8b, 0x2e, 0xe6, 0x54, 0x8e, 0x46, 0x02, - 0xeb, 0x00, 0x60, 0xfa, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x04, 0x00, 0x89, 0x86, 0x18, 0x01, 0xc7, - 0x86, 0x1c, 0x01, 0x01, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x06, 0x00, 0x89, 0x86, 0x1a, 0x01, - 0xb8, 0x07, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x06, 0x00, 0xb8, 0xff, 0xff, 0x8e, 0x46, 0x02, - 0x26, 0xa3, 0x04, 0x00, 0xfb, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x08, 0x00, 0x8b, 0xd8, 0x81, 0xe3, - 0xff, 0xfc, 0x8e, 0x46, 0x02, 0x26, 0x89, 0x1e, 0x08, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x8b, 0x1e, - 0x0a, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x89, 0x1e, 0x0a, 0x00, 0x50, 0xb0, 0xa0, 0xe6, 0x10, 0x58, - 0xa9, 0x00, 0x08, 0x74, 0x0f, 0xf6, 0x06, 0x1e, 0x56, 0x01, 0x74, 0x05, 0xe8, 0x0a, 0x32, 0xeb, - 0x03, 0xe8, 0x54, 0x2d, 0xa9, 0x00, 0x01, 0x75, 0x20, 0xf7, 0x86, 0xa3, 0x02, 0x01, 0x00, 0x75, - 0x1f, 0xa9, 0xcd, 0x01, 0x74, 0x1a, 0x80, 0xbe, 0x6a, 0x01, 0x0a, 0x72, 0x0c, 0xc7, 0x86, 0xa3, - 0x02, 0x01, 0x00, 0x81, 0x8e, 0x18, 0x01, 0xcd, 0x00, 0xfe, 0x86, 0x6a, 0x01, 0xe8, 0x90, 0x2e, - 0xa9, 0x00, 0x04, 0x74, 0x29, 0xf7, 0x86, 0x0a, 0x01, 0x01, 0x00, 0x75, 0x21, 0x8e, 0x46, 0x02, - 0x26, 0x81, 0x0e, 0x04, 0x00, 0x00, 0x04, 0xe8, 0x60, 0xed, 0xc7, 0x44, 0x02, 0x01, 0x00, 0x89, - 0x44, 0x04, 0xc7, 0x86, 0x0a, 0x01, 0x01, 0x00, 0x8d, 0x7e, 0x16, 0xe8, 0x6a, 0xed, 0xa9, 0x00, - 0x10, 0x74, 0x27, 0x80, 0xbe, 0x0c, 0x01, 0x01, 0x74, 0x20, 0xf6, 0x86, 0xb8, 0x01, 0x01, 0x75, - 0x19, 0xe8, 0x36, 0xed, 0xf7, 0xc6, 0xff, 0xff, 0x74, 0x10, 0xc7, 0x44, 0x02, 0x03, 0x00, 0xc6, - 0x86, 0xb8, 0x01, 0x01, 0x8d, 0x7e, 0x16, 0xe8, 0x3e, 0xed, 0xa9, 0x00, 0x20, 0x74, 0x2e, 0x80, - 0xbe, 0x0c, 0x01, 0x01, 0x75, 0x07, 0xc6, 0x86, 0x0d, 0x01, 0x01, 0xeb, 0x20, 0xf6, 0x86, 0xb9, - 0x01, 0x01, 0x75, 0x19, 0xe8, 0x03, 0xed, 0xf7, 0xc6, 0xff, 0xff, 0x74, 0x10, 0xc7, 0x44, 0x02, - 0x04, 0x00, 0xc6, 0x86, 0xb9, 0x01, 0x01, 0x8d, 0x7e, 0x16, 0xe8, 0x0b, 0xed, 0xfa, 0x8b, 0x86, - 0x18, 0x01, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x04, 0x00, 0xc7, 0x86, 0x1c, 0x01, 0x00, 0x00, 0x8b, - 0x86, 0x1a, 0x01, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x06, 0x00, 0x61, 0x07, 0x1f, 0x5d, 0xcf, 0x50, - 0x25, 0x00, 0x02, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x08, 0x00, 0x8b, 0x86, 0xc2, 0x02, 0x40, 0x89, - 0x86, 0xc2, 0x02, 0x83, 0xf8, 0x01, 0x75, 0x08, 0x56, 0xbe, 0xa9, 0x45, 0xe8, 0xab, 0xee, 0x5e, - 0x3b, 0x86, 0xc4, 0x01, 0x76, 0x0a, 0x80, 0xbe, 0x61, 0x02, 0x01, 0x74, 0x03, 0xe8, 0x95, 0x2e, - 0x58, 0xc3, 0x8d, 0x71, 0x18, 0x8b, 0x49, 0x14, 0x86, 0xcd, 0x83, 0xe9, 0x04, 0x7e, 0x1b, 0x33, - 0xc0, 0x03, 0xf0, 0x8a, 0x04, 0x0a, 0xc0, 0x74, 0x11, 0x3a, 0x54, 0x01, 0x74, 0x17, 0x32, 0xe4, - 0x3c, 0xff, 0x74, 0x0a, 0x2b, 0xc8, 0x72, 0x02, 0x77, 0xe7, 0x33, 0xc0, 0xf9, 0xc3, 0x8b, 0x44, - 0x02, 0x86, 0xc4, 0xeb, 0xef, 0x0a, 0xe4, 0x75, 0xf1, 0x38, 0xf0, 0x75, 0xed, 0x8d, 0x74, 0x02, - 0xf8, 0xc3, 0x8c, 0xd8, 0x8e, 0xc0, 0x8b, 0xb6, 0x52, 0x15, 0x8b, 0xbe, 0x54, 0x15, 0x47, 0xa5, - 0xa5, 0xa5, 0x8b, 0x4f, 0x04, 0x83, 0xc1, 0x07, 0x80, 0xe1, 0xfe, 0x8b, 0xc7, 0x2b, 0xc3, 0x2b, - 0xc8, 0x76, 0x0a, 0x81, 0xf9, 0x00, 0x01, 0x73, 0x09, 0xd1, 0xe9, 0xf3, 0xa5, 0x8b, 0x07, 0xe9, - 0xc9, 0x01, 0xb9, 0x19, 0x00, 0xf3, 0xa5, 0x33, 0xff, 0xf6, 0x47, 0x0e, 0x80, 0x74, 0x0e, 0x8b, - 0x47, 0x14, 0x83, 0xe0, 0x1f, 0x74, 0x0f, 0xa8, 0x01, 0x75, 0x0b, 0x8b, 0xf8, 0xba, 0x80, 0x09, - 0x68, 0x2e, 0x24, 0xe9, 0xab, 0x05, 0xe9, 0x99, 0x02, 0xc3, 0x80, 0x7f, 0x17, 0x02, 0x75, 0xf9, - 0x50, 0x56, 0x8b, 0xb6, 0xc4, 0x05, 0x8b, 0x04, 0x5e, 0x3b, 0x86, 0xc2, 0x01, 0x74, 0x07, 0x89, - 0x86, 0xc2, 0x01, 0x58, 0xeb, 0x3d, 0x58, 0xeb, 0x12, 0x8a, 0x4f, 0x07, 0x80, 0xe1, 0x3f, 0x74, - 0xd8, 0x8a, 0xe9, 0x86, 0x8e, 0xfa, 0x01, 0x38, 0xcd, 0x75, 0x18, 0x57, 0x51, 0x8d, 0xbe, 0xfc, - 0x01, 0x8d, 0x77, 0x0e, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x75, 0x06, 0x59, - 0x5f, 0xeb, 0xb6, 0x57, 0x51, 0x8d, 0xbe, 0xfc, 0x01, 0x8d, 0x77, 0x0e, 0xb9, 0x03, 0x00, 0xf3, - 0xa5, 0x59, 0x5f, 0xeb, 0x0d, 0x8b, 0x7e, 0x04, 0x58, 0xc3, 0xf7, 0x86, 0xf6, 0x00, 0x01, 0x00, - 0x74, 0xf7, 0x80, 0x7e, 0x06, 0x0e, 0x74, 0x08, 0x80, 0x7e, 0x06, 0x48, 0x74, 0x02, 0xeb, 0xe9, - 0x50, 0x8c, 0xd8, 0x8e, 0xc0, 0x8b, 0x07, 0xa9, 0x00, 0x40, 0x75, 0xdc, 0x0d, 0x00, 0x40, 0x89, - 0x07, 0xe8, 0x8a, 0x00, 0x8b, 0x4f, 0x04, 0x83, 0xc1, 0x03, 0x80, 0xe1, 0xfe, 0x89, 0x7e, 0x04, - 0x8b, 0xbe, 0xbe, 0x01, 0x3b, 0xfe, 0x72, 0x11, 0x8d, 0x86, 0x52, 0x08, 0x05, 0xff, 0x00, 0x2b, - 0xc7, 0x3b, 0xc1, 0x7d, 0x0a, 0x8d, 0xbe, 0x52, 0x08, 0x2b, 0xf7, 0x3b, 0xf1, 0x7c, 0xa6, 0x8b, - 0xd7, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8b, 0xf3, 0xd1, 0xe9, 0x83, 0xc7, 0x02, 0x49, 0xad, - 0xf3, 0xa5, 0x8b, 0xcf, 0xc7, 0x05, 0x00, 0x00, 0x8b, 0xfa, 0x89, 0x4d, 0x02, 0x51, 0x8b, 0x4d, - 0x04, 0x83, 0xe9, 0x04, 0x89, 0x4d, 0x04, 0x59, 0x89, 0x05, 0x8d, 0x86, 0x52, 0x08, 0x3b, 0xf8, - 0x75, 0x0e, 0x8b, 0x86, 0xbc, 0x01, 0x3b, 0x86, 0xbe, 0x01, 0x75, 0x1c, 0x89, 0xbe, 0xbc, 0x01, - 0x89, 0x8e, 0xbe, 0x01, 0x8b, 0x7e, 0x04, 0xc7, 0x86, 0xc0, 0x01, 0x00, 0x00, 0xb9, 0x40, 0x60, - 0x8e, 0xc1, 0xe8, 0x29, 0x21, 0xe9, 0x4d, 0xff, 0x97, 0x89, 0x45, 0x02, 0xeb, 0xe2, 0x8b, 0xb6, - 0xbc, 0x01, 0xf7, 0x86, 0xc0, 0x01, 0x01, 0x00, 0x75, 0x0f, 0x81, 0x3c, 0x00, 0x80, 0x75, 0x05, - 0x8b, 0x74, 0x02, 0xeb, 0xf5, 0x89, 0xb6, 0xbc, 0x01, 0xc3, 0xf7, 0x07, 0x01, 0x09, 0x74, 0x03, - 0xe9, 0x5f, 0x01, 0xf7, 0x07, 0x00, 0x10, 0x75, 0x33, 0x68, 0x42, 0x23, 0xe9, 0x9d, 0x24, 0xa8, - 0x02, 0x74, 0x21, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x1b, 0x80, 0xbe, 0x5e, 0x02, 0x00, 0x74, 0x14, - 0x24, 0x28, 0x3c, 0x28, 0x75, 0x0e, 0xf6, 0x47, 0x0e, 0x80, 0x75, 0x67, 0x81, 0x8e, 0xda, 0x02, - 0x80, 0x00, 0xeb, 0x5f, 0xeb, 0x5d, 0xe9, 0x39, 0xfe, 0x90, 0xeb, 0xd3, 0xeb, 0x38, 0x8b, 0x47, - 0x14, 0x83, 0xe0, 0x1f, 0x74, 0x06, 0xa8, 0x01, 0x8b, 0xf8, 0x74, 0x4f, 0xe9, 0x13, 0x01, 0x50, - 0x8b, 0x9e, 0xb2, 0x01, 0x8b, 0x07, 0xa9, 0x00, 0x20, 0x74, 0x0b, 0xff, 0x86, 0x3c, 0x02, 0x8b, - 0x4f, 0x04, 0x01, 0x8e, 0x3e, 0x02, 0xe8, 0x81, 0x03, 0x75, 0xcb, 0xf6, 0x47, 0x07, 0x40, 0x74, - 0x05, 0xe8, 0x9e, 0x03, 0xeb, 0x78, 0xf7, 0x86, 0xb6, 0x01, 0x00, 0x02, 0x75, 0x11, 0xa9, 0x01, - 0x09, 0x75, 0x6b, 0x80, 0x7e, 0x07, 0x10, 0x74, 0x65, 0x80, 0x7e, 0x07, 0x12, 0x74, 0x5f, 0xa8, - 0x28, 0x75, 0xa7, 0x33, 0xff, 0xf6, 0x47, 0x0e, 0x80, 0x75, 0xa3, 0x8b, 0x47, 0x04, 0x83, 0xf8, - 0x12, 0x77, 0x05, 0x33, 0xc0, 0xe9, 0x7d, 0x01, 0x83, 0xe8, 0x12, 0x2b, 0xc7, 0x83, 0xf8, 0x04, - 0x7c, 0x3e, 0x8b, 0x49, 0x16, 0x88, 0xae, 0x04, 0x02, 0x51, 0x80, 0xe1, 0xf0, 0x80, 0xf9, 0x00, - 0x74, 0x09, 0x80, 0xf9, 0x30, 0x74, 0x04, 0x59, 0xe9, 0x97, 0x00, 0x59, 0x0b, 0xff, 0x74, 0x0f, - 0xf6, 0xc1, 0x0f, 0x74, 0x19, 0x80, 0xf9, 0x33, 0x74, 0x14, 0x80, 0xf9, 0x03, 0x74, 0x0f, 0x86, - 0xc4, 0x39, 0x41, 0x14, 0x86, 0xc4, 0x75, 0x02, 0xeb, 0x0e, 0xe9, 0x33, 0x01, 0x90, 0xeb, 0x72, - 0xe9, 0x32, 0x01, 0x90, 0xe9, 0x3a, 0x01, 0x90, 0xf6, 0x86, 0x90, 0x02, 0x01, 0x74, 0x03, 0xe8, - 0x6b, 0xfa, 0x80, 0xfd, 0x15, 0x77, 0x11, 0x80, 0xfd, 0x01, 0x74, 0xe8, 0x80, 0xfd, 0x09, 0x74, - 0xe3, 0x80, 0xfd, 0x0a, 0x74, 0xde, 0xeb, 0x11, 0x80, 0xfd, 0x20, 0x72, 0xd7, 0x80, 0xfd, 0x29, - 0x77, 0xd2, 0x80, 0xfd, 0x21, 0x74, 0xcd, 0xeb, 0xc5, 0x80, 0xfd, 0x10, 0x76, 0x02, 0xeb, 0x0a, - 0x80, 0xfd, 0x0e, 0x73, 0x28, 0x80, 0xfd, 0x15, 0x77, 0x23, 0x53, 0x8b, 0xd9, 0xc1, 0xeb, 0x08, - 0x80, 0xe1, 0x0f, 0x3a, 0x8f, 0x74, 0x04, 0x74, 0x13, 0x83, 0xfb, 0x0b, 0x74, 0x09, 0x83, 0xfb, - 0x0c, 0x74, 0x04, 0x5b, 0xe9, 0xd3, 0x00, 0x80, 0xf9, 0x08, 0x75, 0xf7, 0x5b, 0xe9, 0x81, 0x01, - 0x5b, 0x5f, 0x8b, 0x9e, 0xb2, 0x01, 0xf7, 0x86, 0xf6, 0x00, 0x01, 0x00, 0x74, 0x28, 0x80, 0x7e, - 0x06, 0x0e, 0x74, 0x06, 0x80, 0x7e, 0x06, 0x48, 0x75, 0x1c, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x08, - 0x74, 0x06, 0x68, 0x62, 0x24, 0xe9, 0x61, 0xfd, 0xf7, 0x86, 0x12, 0x01, 0x80, 0x00, 0x74, 0x06, - 0x68, 0x62, 0x24, 0xe9, 0x34, 0xfd, 0x8b, 0x5f, 0x02, 0x89, 0x9e, 0xb2, 0x01, 0x8b, 0xc3, 0x83, - 0xe8, 0x02, 0x3b, 0x86, 0x52, 0x15, 0x77, 0x04, 0x8b, 0x86, 0x54, 0x15, 0x8e, 0x46, 0x02, 0x26, - 0xa3, 0x38, 0x00, 0x80, 0xbe, 0x2d, 0x01, 0x01, 0x75, 0x1b, 0x2d, 0x00, 0x02, 0x3b, 0x86, 0x52, - 0x15, 0x73, 0x0e, 0x53, 0x8b, 0xd8, 0x2b, 0x9e, 0x52, 0x15, 0x8b, 0x86, 0x54, 0x15, 0x2b, 0xc3, - 0x5b, 0x26, 0xa3, 0x6c, 0x00, 0xfa, 0x8b, 0x07, 0xa9, 0x00, 0x80, 0x74, 0x17, 0xfb, 0xff, 0x86, - 0x3c, 0x01, 0x83, 0xbe, 0x3c, 0x01, 0x05, 0x77, 0x1c, 0x8a, 0x4e, 0x09, 0x3a, 0x4e, 0x08, 0x75, - 0x14, 0xe9, 0x62, 0xfe, 0xc6, 0x86, 0xb9, 0x01, 0x00, 0xfb, 0xc7, 0x86, 0x3c, 0x01, 0x00, 0x00, - 0x58, 0xc3, 0xe9, 0x5d, 0xff, 0xe8, 0xc2, 0xe8, 0xf7, 0xc6, 0xff, 0xff, 0x74, 0xe6, 0xc7, 0x44, - 0x02, 0x04, 0x00, 0xc6, 0x86, 0xb9, 0x01, 0x01, 0x8d, 0x7e, 0x16, 0xe8, 0xca, 0xe8, 0xeb, 0xda, - 0xba, 0x80, 0x02, 0xeb, 0x1d, 0xba, 0x80, 0x01, 0xeb, 0x18, 0xba, 0x80, 0x04, 0xeb, 0x13, 0x5f, - 0x5b, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x10, 0x74, 0x06, 0x68, 0x62, 0x24, 0xe9, 0xeb, 0xfc, 0xba, - 0x80, 0x03, 0x33, 0xc0, 0x8e, 0xc0, 0x68, 0x2e, 0x24, 0xe9, 0x25, 0x02, 0x33, 0xd2, 0x32, 0xed, - 0x8a, 0x4d, 0xff, 0x89, 0x55, 0x02, 0x83, 0xc7, 0x05, 0xe2, 0xf8, 0xf6, 0x86, 0x5f, 0x02, 0x01, - 0x74, 0x38, 0x80, 0x7e, 0x08, 0x0a, 0x75, 0x0b, 0xc6, 0x46, 0x09, 0x04, 0xc6, 0x86, 0x5f, 0x02, - 0x00, 0xeb, 0x24, 0x80, 0x7e, 0x08, 0x06, 0x75, 0x21, 0xc6, 0x86, 0x5f, 0x02, 0x00, 0xc6, 0x86, - 0x69, 0x02, 0x01, 0xe8, 0x84, 0xec, 0xbe, 0x79, 0x45, 0xe8, 0x3e, 0xea, 0x50, 0x53, 0x33, 0xc0, - 0x8e, 0xc0, 0xe8, 0xa6, 0x02, 0x5b, 0x58, 0xbb, 0x00, 0x00, 0x8b, 0xf8, 0x8b, 0xf3, 0x5b, 0x57, - 0x53, 0x68, 0x2c, 0x24, 0xff, 0x66, 0x12, 0xeb, 0x87, 0x8b, 0xc7, 0x8b, 0xbf, 0x8a, 0x04, 0x0b, - 0xff, 0x78, 0xf4, 0x74, 0xa6, 0x03, 0xfd, 0xf6, 0x45, 0x01, 0x80, 0x75, 0x02, 0xeb, 0x8d, 0xe9, - 0x21, 0x01, 0xe9, 0x03, 0x01, 0x5f, 0x5b, 0xba, 0x80, 0x08, 0xe9, 0x75, 0xff, 0x8b, 0x54, 0x02, - 0x86, 0xd6, 0x83, 0xc6, 0x02, 0xb0, 0x04, 0xeb, 0x51, 0x5f, 0x5b, 0xba, 0x80, 0x05, 0xe9, 0x61, - 0xff, 0x53, 0x8d, 0x71, 0x18, 0x32, 0xff, 0x8a, 0xdd, 0xd1, 0xe3, 0x83, 0xe8, 0x04, 0x0b, 0xc0, - 0x74, 0xb7, 0x89, 0x46, 0x04, 0x57, 0x8b, 0xbf, 0x8a, 0x04, 0x0b, 0xff, 0x74, 0xc4, 0x79, 0x03, - 0xe9, 0x2c, 0xff, 0x03, 0xfd, 0x8e, 0xc7, 0x33, 0xc0, 0x32, 0xed, 0x8a, 0x4d, 0xff, 0x89, 0x45, - 0x02, 0x83, 0xc7, 0x05, 0xe2, 0xf8, 0x33, 0xd2, 0x03, 0xf2, 0x8a, 0x4c, 0x01, 0x8a, 0x14, 0x0a, - 0xd2, 0x74, 0xb6, 0x80, 0xfa, 0xff, 0x74, 0xa5, 0xb0, 0x02, 0x29, 0x56, 0x04, 0x72, 0xaa, 0x0a, - 0xc9, 0x78, 0x92, 0x8a, 0xe1, 0x80, 0xe1, 0x3f, 0x8c, 0xc7, 0x8a, 0x6d, 0xff, 0xeb, 0x12, 0x80, - 0x7d, 0x04, 0xff, 0x74, 0x15, 0xeb, 0x92, 0xe9, 0x7b, 0xff, 0xfe, 0xcd, 0x74, 0xf9, 0x83, 0xc7, - 0x05, 0x3a, 0x0d, 0x75, 0xf5, 0x3a, 0x55, 0x04, 0x75, 0xe5, 0x8d, 0x44, 0x02, 0x87, 0x45, 0x02, - 0x0b, 0xc0, 0x74, 0x09, 0xf6, 0x45, 0x01, 0x80, 0x75, 0xdd, 0x89, 0x45, 0x02, 0x83, 0x7e, 0x04, - 0x00, 0x75, 0xa5, 0x33, 0xc0, 0x8c, 0xc6, 0xf6, 0x44, 0x01, 0x80, 0x74, 0x0e, 0x39, 0x44, 0x02, - 0x74, 0x60, 0x83, 0xc6, 0x05, 0xf6, 0x44, 0x01, 0x80, 0x75, 0xf2, 0xf6, 0x86, 0x5f, 0x02, 0x01, - 0x74, 0x36, 0x80, 0x7e, 0x08, 0x0a, 0x75, 0x0b, 0xc6, 0x86, 0x5f, 0x02, 0x00, 0xc6, 0x46, 0x09, - 0x04, 0xeb, 0x22, 0x80, 0x7e, 0x08, 0x06, 0x75, 0x1f, 0xc6, 0x86, 0x5f, 0x02, 0x00, 0xc6, 0x86, - 0x69, 0x02, 0x01, 0xe8, 0x54, 0xeb, 0xbe, 0x79, 0x45, 0xe8, 0x0e, 0xe9, 0x33, 0xc0, 0x8e, 0xc0, - 0x53, 0xe8, 0x77, 0x01, 0x5b, 0xbb, 0x00, 0x00, 0x89, 0x5e, 0x04, 0x8b, 0xf3, 0x5f, 0x5b, 0x33, - 0xc0, 0x8e, 0xc0, 0x3b, 0xb6, 0xba, 0x01, 0x73, 0x06, 0x68, 0x2e, 0x24, 0xff, 0x66, 0x12, 0xe9, - 0x80, 0xfd, 0x5f, 0x5b, 0xba, 0x80, 0x07, 0xe9, 0x58, 0xfe, 0x56, 0x57, 0x50, 0x33, 0xc0, 0x8e, - 0xc0, 0x8b, 0xb6, 0x52, 0x15, 0x8b, 0xbe, 0x54, 0x15, 0x83, 0xc7, 0x01, 0xa5, 0xa5, 0xa5, 0x8b, - 0xc3, 0x03, 0x47, 0x04, 0x8b, 0xbe, 0x54, 0x15, 0x3b, 0xc7, 0x7f, 0x02, 0x32, 0xc0, 0x58, 0x5f, - 0x5e, 0xc3, 0x80, 0xbe, 0x2d, 0x01, 0x01, 0x75, 0x57, 0x53, 0x33, 0xff, 0xf6, 0x47, 0x0e, 0x80, - 0x74, 0x0e, 0x8b, 0x47, 0x14, 0x83, 0xe0, 0x1f, 0x74, 0x45, 0xa8, 0x01, 0x75, 0x41, 0x8b, 0xf8, - 0x83, 0xc3, 0x06, 0x8d, 0xb6, 0xec, 0x15, 0x33, 0xc0, 0x33, 0xc9, 0x8a, 0x0c, 0x80, 0xf9, 0x00, - 0x74, 0x2d, 0x53, 0x46, 0x8a, 0x04, 0x03, 0xd8, 0x80, 0x3c, 0x0e, 0x72, 0x02, 0x03, 0xdf, 0x46, - 0x8a, 0x04, 0x3a, 0x07, 0x75, 0x07, 0x5b, 0xfe, 0xc9, 0x74, 0x0a, 0xeb, 0xe5, 0x5b, 0x03, 0xf1, - 0x03, 0xf1, 0x4e, 0xeb, 0xd6, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x72, 0x00, 0x00, 0x01, 0x5b, - 0xc3, 0x8c, 0xd8, 0x8e, 0xc0, 0xf6, 0x41, 0x16, 0x0f, 0x74, 0x60, 0x89, 0x96, 0xe2, 0x02, 0x81, - 0xfa, 0x80, 0x02, 0x74, 0x13, 0xba, 0x09, 0x04, 0xe8, 0xa7, 0xf9, 0x72, 0x0b, 0xad, 0x86, 0xe0, - 0x89, 0x86, 0x14, 0x02, 0x86, 0xe0, 0xeb, 0x06, 0x8b, 0x86, 0x14, 0x02, 0x86, 0xe0, 0x89, 0x86, - 0xde, 0x02, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0x4d, 0x22, 0x57, 0x53, 0xe8, 0xa0, 0x05, 0x5a, 0x5f, - 0x72, 0x29, 0x57, 0xe8, 0x26, 0x00, 0xb8, 0x00, 0x0e, 0xab, 0x47, 0xb0, 0x00, 0xaa, 0x8d, 0xb6, - 0xdc, 0x02, 0xa5, 0xa5, 0x8d, 0xb6, 0xe0, 0x02, 0xa5, 0xa5, 0x55, 0x8b, 0xea, 0x8a, 0x47, 0x16, - 0x8a, 0x66, 0x17, 0xab, 0x5d, 0xe8, 0x14, 0x06, 0x8b, 0xda, 0x5f, 0xc3, 0x55, 0x8b, 0xea, 0x8a, - 0x43, 0x16, 0xc0, 0xe0, 0x04, 0x88, 0x41, 0x16, 0xc7, 0x47, 0x06, 0xe0, 0x00, 0x83, 0xe9, 0x06, - 0x89, 0x4f, 0x04, 0x0b, 0xff, 0x75, 0x18, 0x8d, 0x76, 0x0e, 0x8d, 0x7f, 0x08, 0x8c, 0xd8, 0x8e, - 0xc0, 0xa5, 0xa5, 0xa5, 0x8b, 0xd5, 0x5d, 0x8d, 0xb6, 0xf4, 0x02, 0xa5, 0xa5, 0xa5, 0xc3, 0x8b, - 0xcf, 0xd1, 0xe9, 0x8d, 0x76, 0x0e, 0x8d, 0x7f, 0x08, 0x8c, 0xd8, 0x8e, 0xc0, 0xad, 0x24, 0x7f, - 0xab, 0xa5, 0xa5, 0x8b, 0xd5, 0x5d, 0x56, 0x8d, 0xb6, 0xf4, 0x02, 0xad, 0x0c, 0x80, 0xab, 0xa5, - 0xa5, 0x5e, 0xad, 0x80, 0xcc, 0x80, 0xab, 0x49, 0xf3, 0xa5, 0xc3, 0x8b, 0x86, 0x00, 0x03, 0x86, - 0xe0, 0x89, 0x86, 0x10, 0x02, 0x89, 0x86, 0x02, 0x02, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0xbe, 0xfc, - 0x01, 0x8d, 0xb6, 0xf4, 0x02, 0xb9, 0x03, 0x00, 0xf3, 0xa5, 0xb9, 0x2a, 0x00, 0xe8, 0xd4, 0x04, - 0x72, 0xd8, 0x8d, 0xb6, 0xe6, 0x02, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, - 0xe9, 0x80, 0x05, 0xb9, 0x26, 0x00, 0xe8, 0xbb, 0x04, 0x72, 0x62, 0x8d, 0xb6, 0x10, 0x03, 0x8b, - 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0x67, 0x05, 0x8d, 0x7f, 0x08, 0x8b, - 0x4f, 0x04, 0x83, 0xc1, 0x03, 0x80, 0xe1, 0xfe, 0x57, 0xe8, 0x98, 0x04, 0x5f, 0x8b, 0xd7, 0x72, - 0x22, 0x83, 0xe9, 0x08, 0x8d, 0x7f, 0x04, 0x8c, 0xd8, 0x8e, 0xc0, 0x8b, 0xc1, 0xab, 0x8b, 0x86, - 0x16, 0x03, 0xab, 0x8b, 0xf2, 0xd1, 0xe9, 0x49, 0xf3, 0xa5, 0xbe, 0x55, 0x45, 0xe8, 0x0a, 0xe7, - 0xe9, 0x30, 0x05, 0xc3, 0xb9, 0x26, 0x00, 0xe8, 0x6a, 0x04, 0x72, 0x11, 0x8c, 0xd8, 0x8e, 0xc0, - 0x8d, 0xb6, 0x36, 0x03, 0x8b, 0xfb, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0x16, 0x05, 0xc3, 0xb9, 0x26, - 0x00, 0xe8, 0x6a, 0x04, 0x72, 0xf7, 0x8d, 0xb6, 0x5c, 0x03, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, - 0xd1, 0xe9, 0xf3, 0xa5, 0xc6, 0x86, 0x63, 0x02, 0x01, 0x80, 0xbe, 0x83, 0x02, 0x01, 0x75, 0x03, - 0xe9, 0xe9, 0x04, 0x68, 0x6f, 0x2c, 0xe9, 0xe3, 0x04, 0xb9, 0x26, 0x00, 0xe8, 0x3f, 0x04, 0x72, - 0xcc, 0x8d, 0xb6, 0x82, 0x03, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xc6, - 0x86, 0x63, 0x02, 0x01, 0x80, 0xbe, 0x83, 0x02, 0x01, 0x75, 0x03, 0xe9, 0xbe, 0x04, 0x68, 0x6f, - 0x2c, 0xe9, 0xb8, 0x04, 0xb9, 0x18, 0x00, 0xe8, 0x14, 0x04, 0x72, 0xa1, 0x8d, 0xb6, 0xa8, 0x03, - 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0x9f, 0x04, 0x83, 0xc1, 0x1c, - 0x56, 0x57, 0x52, 0xe8, 0xf8, 0x03, 0x5a, 0x5f, 0x5e, 0x72, 0x6c, 0x56, 0x8c, 0xd8, 0x8e, 0xc0, - 0x83, 0xe9, 0x08, 0x8b, 0xc1, 0x8d, 0x7f, 0x04, 0xab, 0xba, 0xe0, 0x00, 0x8b, 0xc2, 0xab, 0x8d, - 0xb6, 0xc8, 0x03, 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, 0xf4, 0x02, 0x80, 0xbe, 0x62, 0x01, 0x01, 0x75, - 0x04, 0x8d, 0xb6, 0x00, 0x01, 0xa5, 0xa5, 0xa5, 0x83, 0xe9, 0x0e, 0x80, 0xbe, 0x63, 0x01, 0x02, - 0x75, 0x03, 0x83, 0xe9, 0x04, 0x8b, 0xc1, 0x86, 0xe0, 0xab, 0xb8, 0x00, 0x08, 0xab, 0xb8, 0xff, - 0x26, 0xab, 0x83, 0xe9, 0x04, 0x8b, 0xc1, 0x86, 0xe0, 0xab, 0x5e, 0xe9, 0x3e, 0x04, 0xb9, 0x44, - 0x00, 0xe8, 0x9a, 0x03, 0x72, 0x11, 0x8d, 0xb6, 0xda, 0x03, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, - 0xd1, 0xe9, 0xf3, 0xa5, 0xe8, 0x25, 0x04, 0xc3, 0xb9, 0x36, 0x00, 0xe8, 0x80, 0x03, 0x72, 0xf7, - 0xff, 0x86, 0x52, 0x02, 0x8d, 0xb6, 0x7c, 0x05, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, - 0xf3, 0xa5, 0x33, 0xc0, 0x8d, 0xbe, 0x96, 0x05, 0xab, 0xab, 0xaa, 0x8d, 0xbe, 0x9e, 0x05, 0xab, - 0xab, 0xaa, 0xe9, 0xf7, 0x03, 0x8d, 0x4d, 0x3a, 0x57, 0x53, 0xe8, 0x51, 0x03, 0x5a, 0x5f, 0x72, - 0x5b, 0x57, 0xe8, 0xd7, 0xfd, 0x8c, 0xd8, 0x8e, 0xc0, 0xb8, 0x00, 0x26, 0xab, 0x47, 0xb0, 0x22, - 0xaa, 0x8d, 0xb6, 0xdc, 0x02, 0xa5, 0xa5, 0x8d, 0xb6, 0x02, 0x03, 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, - 0x08, 0x03, 0xa5, 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, 0x1e, 0x04, 0xa5, 0xa5, 0x8d, 0xb6, 0x22, 0x04, - 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, 0x28, 0x04, 0xa5, 0x53, 0x8c, 0xdb, 0x8e, 0x46, 0x02, 0x26, 0xa1, - 0x26, 0x00, 0xe8, 0x6b, 0xe2, 0x8e, 0xc3, 0xab, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x24, 0x00, 0xe8, - 0x5e, 0xe2, 0x8e, 0xc3, 0xab, 0x5b, 0xe8, 0x93, 0x03, 0x8b, 0xda, 0x5f, 0xc3, 0x8d, 0x4d, 0x38, - 0x57, 0x53, 0xe8, 0xe9, 0x02, 0x5a, 0x5f, 0x72, 0xf3, 0x57, 0xe8, 0x6f, 0xfd, 0x8c, 0xd8, 0x8e, - 0xc0, 0xb8, 0x00, 0x24, 0xab, 0x47, 0xb0, 0x23, 0xaa, 0x8d, 0xb6, 0xdc, 0x02, 0xa5, 0xa5, 0x8d, - 0xb6, 0xf2, 0x03, 0xb9, 0x06, 0x00, 0xf3, 0xa5, 0x8d, 0xb6, 0x36, 0x04, 0xa5, 0xa5, 0xa5, 0xa5, - 0x8d, 0xb6, 0x2e, 0x04, 0xa5, 0xa5, 0xa5, 0xa5, 0xe8, 0x51, 0x03, 0x8b, 0xda, 0x5f, 0xc3, 0x8d, - 0x4d, 0x3e, 0x57, 0x53, 0xe8, 0xa7, 0x02, 0x5a, 0x5f, 0x72, 0x64, 0x57, 0xe8, 0x2d, 0xfd, 0x8c, - 0xd8, 0x8e, 0xc0, 0xb8, 0x00, 0x2a, 0xab, 0x47, 0xb0, 0x24, 0xaa, 0x8d, 0xb6, 0xdc, 0x02, 0xa5, - 0xa5, 0x8d, 0xb6, 0x06, 0x04, 0xb9, 0x0a, 0x00, 0xf3, 0xa5, 0x8d, 0xb6, 0x28, 0x04, 0xa5, 0x53, - 0x8c, 0xdb, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x26, 0x00, 0xe8, 0xd4, 0xe1, 0x8e, 0xc3, 0xab, 0x8e, - 0x46, 0x02, 0x26, 0xa1, 0x24, 0x00, 0xe8, 0xc7, 0xe1, 0x8e, 0xc3, 0xab, 0x5b, 0x8c, 0xd8, 0x8e, - 0xc0, 0x8d, 0xb6, 0x3e, 0x04, 0xa5, 0x8b, 0x86, 0xf8, 0x01, 0x86, 0xc4, 0xab, 0x8d, 0xb6, 0x42, - 0x04, 0xa5, 0x8b, 0x86, 0xf6, 0x01, 0x86, 0xc4, 0xab, 0xe8, 0xe0, 0x02, 0x8b, 0xda, 0x5f, 0xc3, - 0xb9, 0x3a, 0x00, 0xe8, 0x38, 0x02, 0x72, 0xf7, 0x8d, 0xb6, 0x46, 0x04, 0x8b, 0xfb, 0x8c, 0xd8, - 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0x80, 0xbe, 0x83, 0x02, 0x01, 0x75, 0x03, 0xe9, 0xbc, 0x02, - 0x68, 0x6f, 0x2c, 0xe9, 0xb6, 0x02, 0xb9, 0x26, 0x00, 0xe8, 0x12, 0x02, 0x72, 0xd1, 0xff, 0x86, - 0x4e, 0x02, 0x8d, 0xb6, 0x80, 0x04, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, - 0x80, 0xbe, 0x83, 0x02, 0x01, 0x75, 0x03, 0xe9, 0x92, 0x02, 0x68, 0x6f, 0x2c, 0xe9, 0x8c, 0x02, - 0xb9, 0x20, 0x00, 0xe8, 0xe8, 0x01, 0x72, 0xa7, 0x8d, 0xb6, 0xee, 0x01, 0x8d, 0xbe, 0xc0, 0x04, - 0x8c, 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, 0x8d, 0xb6, 0xa6, 0x04, 0x8b, 0xfb, 0xd1, 0xe9, 0xf3, - 0xa5, 0x80, 0xbe, 0x83, 0x02, 0x01, 0x75, 0x03, 0xe9, 0x61, 0x02, 0x68, 0x6f, 0x2c, 0xe9, 0x5b, - 0x02, 0x89, 0x86, 0xe0, 0x04, 0x86, 0xc4, 0x89, 0x86, 0x0e, 0x02, 0xb9, 0x2a, 0x00, 0xe8, 0xad, - 0x01, 0x72, 0x19, 0x8d, 0xb6, 0xc6, 0x04, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, - 0xa5, 0x80, 0xbe, 0x83, 0x02, 0x01, 0x75, 0x08, 0xe9, 0x31, 0x02, 0x90, 0xe9, 0x22, 0x01, 0x90, - 0x68, 0x6f, 0x2c, 0xe9, 0x26, 0x02, 0xb9, 0x18, 0x00, 0xe8, 0x82, 0x01, 0x73, 0x03, 0xe9, 0x3e, - 0xff, 0x8d, 0xb6, 0x64, 0x05, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, - 0x0a, 0x02, 0xb9, 0x24, 0x00, 0xe8, 0x66, 0x01, 0x73, 0x03, 0xe9, 0x22, 0xff, 0x8b, 0x86, 0x0e, - 0x05, 0x86, 0xc4, 0x89, 0x86, 0x26, 0x02, 0x8d, 0xb6, 0xf0, 0x04, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, - 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0xe4, 0x01, 0xb9, 0x1c, 0x00, 0xe8, 0x40, 0x01, 0x73, 0x03, - 0xe9, 0xfc, 0xfe, 0x8d, 0xb6, 0x14, 0x05, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, - 0xa5, 0xe9, 0xc8, 0x01, 0xb9, 0x18, 0x00, 0xe8, 0x24, 0x01, 0x73, 0x03, 0xe9, 0xe0, 0xfe, 0x8d, - 0xb6, 0x30, 0x05, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0xac, 0x01, - 0xb9, 0x1c, 0x00, 0x50, 0xe8, 0x07, 0x01, 0x58, 0x73, 0x03, 0xe9, 0xc2, 0xfe, 0x8d, 0xb6, 0x48, - 0x05, 0x8b, 0xfb, 0x8c, 0xd8, 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xe9, 0x8e, 0x01, 0x8b, 0x4f, - 0x04, 0x53, 0xe8, 0xe9, 0x00, 0x5e, 0x72, 0x17, 0x89, 0x9e, 0x38, 0x02, 0x8b, 0xfb, 0x8c, 0xd8, - 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0xc7, 0x86, 0x3a, 0x02, 0x01, 0x00, 0xe9, 0x6d, 0x01, 0xe9, - 0x54, 0x11, 0xb9, 0x18, 0x00, 0xe8, 0xc6, 0x00, 0x8d, 0xb6, 0xa8, 0x03, 0x8b, 0xfb, 0x8c, 0xd8, - 0x8e, 0xc0, 0xd1, 0xe9, 0xf3, 0xa5, 0x33, 0xc0, 0x8d, 0x7f, 0x08, 0xb9, 0x06, 0x00, 0xf3, 0xab, - 0xe9, 0x49, 0x01, 0x53, 0x8b, 0x9e, 0xb0, 0x01, 0x8b, 0xb6, 0xae, 0x01, 0x3b, 0xde, 0x74, 0x15, - 0x8a, 0x47, 0x17, 0xf6, 0x44, 0x0e, 0x80, 0x75, 0x0e, 0x38, 0x44, 0x17, 0x75, 0x09, 0x8b, 0x74, - 0x02, 0x89, 0xb6, 0xae, 0x01, 0xeb, 0x1a, 0x8b, 0xfe, 0x8b, 0x74, 0x02, 0x3b, 0xde, 0x74, 0x11, - 0xf6, 0x44, 0x0e, 0x80, 0x75, 0xf1, 0x38, 0x44, 0x17, 0x75, 0xec, 0x8b, 0x44, 0x02, 0x89, 0x45, - 0x02, 0x5b, 0xc3, 0xe8, 0x50, 0xdd, 0xc6, 0x86, 0x83, 0x02, 0x00, 0x8d, 0xb6, 0xa6, 0x01, 0x8d, - 0xbe, 0xac, 0x01, 0x8c, 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, - 0x00, 0x00, 0x00, 0x16, 0x8d, 0x9e, 0x52, 0x12, 0x89, 0x9e, 0xa8, 0x01, 0x89, 0x9e, 0xaa, 0x01, - 0xc7, 0x07, 0x30, 0x80, 0xc7, 0x47, 0x04, 0x00, 0x00, 0x83, 0xc3, 0x08, 0x89, 0x9e, 0xa6, 0x01, - 0xc6, 0x86, 0x86, 0x02, 0x01, 0x83, 0xc1, 0x02, 0xeb, 0x4a, 0x8b, 0x9e, 0xac, 0x01, 0x8b, 0xb6, - 0xae, 0x01, 0xeb, 0x29, 0x80, 0xbe, 0x83, 0x02, 0x01, 0x74, 0xa8, 0x8d, 0x96, 0x52, 0x15, 0x8d, - 0xbe, 0x52, 0x12, 0x8b, 0x9e, 0xa6, 0x01, 0x8b, 0xb6, 0xa8, 0x01, 0xeb, 0x18, 0x90, 0x8b, 0x9e, - 0xa6, 0x01, 0x8b, 0xb6, 0xa8, 0x01, 0x80, 0xbe, 0x83, 0x02, 0x01, 0x75, 0xcd, 0x8d, 0x96, 0x52, - 0x12, 0x8d, 0xbe, 0x52, 0x09, 0x83, 0xc1, 0x02, 0x3b, 0xde, 0x73, 0x17, 0x8b, 0xc6, 0x2b, 0xc3, - 0x3b, 0xc1, 0x72, 0x25, 0xc7, 0x07, 0x00, 0x00, 0x83, 0xc3, 0x02, 0xc7, 0x07, 0x00, 0x00, 0x83, - 0xe9, 0x02, 0xc3, 0x8b, 0xc2, 0x2b, 0xc3, 0x3b, 0xc1, 0x72, 0x02, 0xeb, 0xe7, 0x8b, 0xdf, 0x8b, - 0xc6, 0x2b, 0xc3, 0x3b, 0xc1, 0x72, 0x02, 0xeb, 0xdb, 0x3b, 0xb6, 0xae, 0x01, 0x74, 0x11, 0x80, - 0xbe, 0x5e, 0x02, 0x01, 0x75, 0x05, 0x83, 0x8e, 0xda, 0x02, 0x02, 0xe8, 0x5c, 0x01, 0xf9, 0xc3, - 0x8b, 0x74, 0x02, 0x89, 0xb6, 0xae, 0x01, 0x3b, 0xdd, 0x74, 0x04, 0x3b, 0xde, 0x77, 0xc4, 0x8b, - 0xc6, 0x2b, 0xc3, 0x3b, 0xc1, 0x72, 0xe9, 0x89, 0xb6, 0xae, 0x01, 0xeb, 0xa7, 0x8b, 0xb6, 0xb0, - 0x01, 0x89, 0x5c, 0x02, 0x80, 0x4c, 0x05, 0x80, 0x89, 0x9e, 0xb0, 0x01, 0x03, 0x5f, 0x04, 0x83, - 0xc3, 0x06, 0x89, 0x9e, 0xac, 0x01, 0xc6, 0x86, 0x87, 0x02, 0x01, 0xc3, 0x80, 0xbe, 0x83, 0x02, - 0x01, 0x75, 0xda, 0x8e, 0x46, 0x02, 0x26, 0xa1, 0x0c, 0x00, 0x0c, 0x02, 0x80, 0xbe, 0x86, 0x02, - 0x01, 0x74, 0x27, 0x8b, 0xb6, 0xaa, 0x01, 0x89, 0x5c, 0x02, 0x80, 0x4c, 0x05, 0x80, 0x83, 0xc8, - 0x04, 0x25, 0xff, 0xf7, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x0c, 0x00, 0x89, 0x9e, 0xaa, 0x01, 0x03, - 0x5f, 0x04, 0x83, 0xc3, 0x06, 0x89, 0x9e, 0xa6, 0x01, 0xc3, 0x8e, 0x46, 0x02, 0x89, 0x9e, 0xa8, - 0x01, 0x26, 0x89, 0x1e, 0x2c, 0x00, 0x83, 0xc8, 0x08, 0x25, 0xff, 0xf7, 0xc6, 0x86, 0x86, 0x02, - 0x00, 0xeb, 0xd1, 0x53, 0xf6, 0x86, 0x83, 0x02, 0x01, 0x74, 0x0c, 0x8e, 0x46, 0x02, 0x26, 0x83, - 0x26, 0x0c, 0x00, 0xfe, 0xe8, 0x8c, 0xfe, 0x5b, 0xc3, 0x90, 0xe9, 0xac, 0x00, 0x90, 0x80, 0xbe, - 0x83, 0x02, 0x00, 0x75, 0xf5, 0x50, 0xfa, 0x8d, 0xb6, 0xac, 0x01, 0x8d, 0xbe, 0xa6, 0x01, 0x8c, - 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, 0x80, 0xbe, 0x63, 0x01, 0x01, 0x75, 0x16, 0x8e, 0x46, 0x02, - 0x26, 0x81, 0x0e, 0x00, 0x00, 0x00, 0x02, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x00, 0x00, 0xff, - 0xe3, 0xeb, 0x27, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x00, 0x00, 0x00, 0x02, 0xf6, 0x86, 0xaa, - 0x02, 0x01, 0x74, 0x0c, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x00, 0x00, 0x00, 0x1c, 0xeb, 0x0a, - 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x00, 0x00, 0xff, 0xe3, 0x33, 0xc0, 0x89, 0x86, 0xae, 0x01, - 0x40, 0x88, 0x86, 0x83, 0x02, 0x58, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x74, 0x0a, 0xe8, 0x01, 0xe5, - 0x8e, 0x46, 0x02, 0x26, 0xa2, 0x1c, 0x00, 0x8b, 0x9e, 0xa8, 0x01, 0x83, 0x3f, 0x00, 0x74, 0x03, - 0xe8, 0x89, 0x00, 0xf6, 0x86, 0x87, 0x02, 0x01, 0x74, 0x19, 0x8e, 0x46, 0x02, 0x26, 0x89, 0x1e, - 0x2c, 0x00, 0xc6, 0x86, 0x87, 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x0c, 0x00, 0x08, - 0xfb, 0xeb, 0x06, 0xc6, 0x86, 0x86, 0x02, 0x01, 0xfb, 0xc3, 0x56, 0x8d, 0xb6, 0x52, 0x09, 0xc7, - 0x86, 0xa6, 0x01, 0x5a, 0x09, 0x01, 0xae, 0xa6, 0x01, 0x89, 0xb6, 0xa8, 0x01, 0x89, 0xb6, 0xaa, - 0x01, 0xc7, 0x04, 0x30, 0x80, 0xc7, 0x44, 0x04, 0x00, 0x00, 0xc6, 0x86, 0x86, 0x02, 0x01, 0x5e, - 0xc3, 0xff, 0xa4, 0x1e, 0x04, 0x80, 0x7e, 0x06, 0x46, 0x75, 0x1c, 0xf6, 0x86, 0x76, 0x02, 0x01, - 0x74, 0x15, 0xff, 0x8e, 0xcc, 0x02, 0x75, 0x0f, 0xc6, 0x86, 0x76, 0x02, 0x00, 0xc6, 0x86, 0x6b, - 0x02, 0x00, 0xe8, 0xb5, 0xe2, 0xeb, 0x10, 0x83, 0xfe, 0x10, 0x74, 0x07, 0x83, 0xfe, 0x0e, 0x74, - 0x02, 0xeb, 0x04, 0xff, 0xa4, 0x1e, 0x04, 0xc3, 0x8b, 0x9e, 0xa8, 0x01, 0x8b, 0x07, 0xfb, 0xa9, - 0x00, 0x80, 0x75, 0x46, 0x8b, 0x77, 0x17, 0x81, 0xe6, 0xff, 0x00, 0xf7, 0x86, 0x3a, 0x02, 0x01, - 0x00, 0x74, 0x1b, 0x3b, 0x9e, 0x38, 0x02, 0x75, 0x15, 0x89, 0x86, 0x74, 0x15, 0x50, 0x53, 0x56, - 0xe8, 0x43, 0x0e, 0x5e, 0x5b, 0x58, 0xc7, 0x86, 0x3a, 0x02, 0x00, 0x00, 0xeb, 0x18, 0xf7, 0x46, - 0x14, 0xff, 0xff, 0x74, 0x11, 0x83, 0xfe, 0x2a, 0x77, 0x0c, 0xd1, 0xe6, 0x68, 0x82, 0x2f, 0xff, - 0x66, 0x14, 0x5b, 0x83, 0xc4, 0x02, 0x81, 0x0f, 0x00, 0x80, 0xfa, 0xf6, 0x47, 0x05, 0x80, 0x74, - 0x1a, 0x8b, 0x5f, 0x02, 0x89, 0x9e, 0xa8, 0x01, 0xf7, 0x07, 0x10, 0x00, 0x74, 0x0d, 0xff, 0x86, - 0x3a, 0x01, 0x83, 0xbe, 0x3a, 0x01, 0x06, 0x77, 0x0f, 0xeb, 0x91, 0xc6, 0x86, 0xb8, 0x01, 0x00, - 0xc7, 0x86, 0x3a, 0x01, 0x00, 0x00, 0xfb, 0xc3, 0xe8, 0xdf, 0xdd, 0xf7, 0xc6, 0xff, 0xff, 0x74, - 0xea, 0xc7, 0x44, 0x02, 0x03, 0x00, 0xc6, 0x86, 0xb8, 0x01, 0x01, 0x8d, 0x7e, 0x16, 0xe8, 0xe7, - 0xdd, 0xeb, 0xdd, 0xa9, 0x20, 0x00, 0x75, 0x74, 0xf7, 0x47, 0x04, 0x00, 0x80, 0x74, 0x05, 0xe8, - 0x08, 0x00, 0x72, 0x9f, 0x53, 0x68, 0x7e, 0x2f, 0xff, 0xe6, 0x8a, 0x47, 0x17, 0x8b, 0xfb, 0x8b, - 0x7d, 0x02, 0x38, 0x45, 0x17, 0x74, 0x09, 0xf7, 0x45, 0x04, 0x00, 0x80, 0x75, 0xf1, 0xf8, 0xc3, - 0xf9, 0xc3, 0xa9, 0x20, 0x00, 0x75, 0x05, 0xa9, 0x00, 0x10, 0x75, 0x0c, 0x33, 0xc9, 0xa9, 0x05, - 0x00, 0x75, 0x0a, 0xa9, 0x0a, 0x04, 0x74, 0x05, 0x8b, 0x0d, 0xe3, 0x01, 0x49, 0x89, 0x0d, 0xc3, - 0x53, 0x8b, 0x4f, 0x04, 0x80, 0xe5, 0x7f, 0x89, 0x4f, 0x04, 0x83, 0xc1, 0x06, 0xe8, 0xee, 0xfc, - 0x72, 0x19, 0x5e, 0x56, 0x8b, 0xfb, 0xd1, 0xe9, 0x83, 0xe9, 0x02, 0x83, 0xc6, 0x04, 0x83, 0xc7, - 0x04, 0x8c, 0xd8, 0x8e, 0xc0, 0xf3, 0xa5, 0xe8, 0x72, 0xfd, 0xf8, 0x5b, 0xc3, 0x80, 0x7e, 0x08, - 0x02, 0x75, 0x0b, 0xa9, 0x20, 0x00, 0x75, 0x06, 0xc7, 0x86, 0xc8, 0x01, 0x01, 0x00, 0xc3, 0x8a, - 0x56, 0x06, 0x80, 0xfa, 0x02, 0x74, 0x17, 0x80, 0xfa, 0x44, 0x74, 0x12, 0x83, 0x7e, 0x08, 0x08, - 0x75, 0x18, 0x80, 0xfa, 0x0c, 0x74, 0x07, 0x80, 0xfa, 0x0e, 0x74, 0x02, 0xeb, 0x0b, 0xa9, 0x20, - 0x00, 0x75, 0x06, 0xb8, 0x01, 0x00, 0xe8, 0x74, 0xec, 0xc3, 0xb9, 0x05, 0x00, 0xa9, 0x20, 0x00, - 0x74, 0x09, 0xb9, 0x08, 0x00, 0xa9, 0x0f, 0x00, 0x75, 0x01, 0xc3, 0xff, 0x86, 0xc4, 0x02, 0x83, - 0xbe, 0xc4, 0x02, 0x02, 0x72, 0x06, 0x8b, 0xc1, 0xe8, 0x52, 0xec, 0xc3, 0xe8, 0x55, 0xf8, 0xc3, - 0x53, 0x68, 0x7e, 0x2f, 0xe9, 0xc7, 0xf8, 0x80, 0x7e, 0x06, 0x0c, 0x75, 0x1d, 0xa9, 0x00, 0x10, - 0x75, 0xee, 0xa9, 0x20, 0x00, 0x75, 0x00, 0xa8, 0x0a, 0x75, 0x10, 0xff, 0x86, 0xba, 0x02, 0x83, - 0xbe, 0xba, 0x02, 0x04, 0x72, 0xda, 0xc6, 0x46, 0x07, 0x0e, 0xc3, 0x83, 0xbe, 0xb8, 0x02, 0x04, - 0x73, 0xf8, 0xbe, 0x85, 0x45, 0xe8, 0xb2, 0xde, 0xeb, 0xf0, 0x8d, 0xbe, 0xbe, 0x02, 0xe8, 0x11, - 0xff, 0x0b, 0xc9, 0x74, 0xe5, 0x53, 0x68, 0x7e, 0x2f, 0xe9, 0x82, 0xf8, 0x8d, 0xbe, 0xb6, 0x02, - 0xe8, 0xff, 0xfe, 0x0b, 0xc9, 0x74, 0x03, 0xe9, 0x16, 0xff, 0xc3, 0x53, 0x8a, 0x56, 0x06, 0x80, - 0xfa, 0x02, 0x74, 0x17, 0x80, 0xfa, 0x44, 0x74, 0x12, 0x80, 0x7e, 0x08, 0x08, 0x75, 0x2d, 0x80, - 0xfa, 0x0c, 0x74, 0x07, 0x80, 0xfa, 0x0e, 0x74, 0x02, 0xeb, 0x21, 0xa9, 0x20, 0x00, 0x74, 0x1e, - 0x8b, 0x96, 0x66, 0x01, 0x4a, 0x89, 0x96, 0x66, 0x01, 0x83, 0xfa, 0x01, 0x77, 0x23, 0xbe, 0x6d, - 0x45, 0xe8, 0x56, 0xde, 0xc6, 0x86, 0x86, 0x02, 0x01, 0xe8, 0xb8, 0xf7, 0x5b, 0xc3, 0xfe, 0x8e, - 0x68, 0x01, 0x80, 0x8e, 0x68, 0x01, 0x00, 0x75, 0x08, 0xb8, 0x01, 0x00, 0xe8, 0x9e, 0xeb, 0xeb, - 0xeb, 0xbe, 0x6d, 0x45, 0xe8, 0x33, 0xde, 0x8b, 0xb6, 0x64, 0x01, 0xb9, 0xe8, 0x03, 0xc6, 0x86, - 0x86, 0x02, 0x01, 0xfa, 0xe8, 0xa6, 0xf7, 0xeb, 0xd3, 0xa9, 0x20, 0x00, 0x74, 0x41, 0xa9, 0x0f, - 0x00, 0x75, 0x25, 0xc6, 0x86, 0x65, 0x02, 0x01, 0xc6, 0x86, 0x66, 0x02, 0x01, 0x8c, 0xd8, 0x8e, - 0xc0, 0x33, 0xc0, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xee, 0x01, 0xab, 0xab, 0xab, 0x8b, 0x86, 0x06, - 0x02, 0x83, 0x8e, 0x06, 0x02, 0x40, 0xeb, 0x17, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xee, 0x01, 0x8c, - 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, 0x8b, 0x86, 0x06, 0x02, 0x83, 0xa6, 0x06, 0x02, 0xbf, 0x33, - 0x86, 0x06, 0x02, 0x74, 0x05, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xc3, 0xfb, 0xc3, 0xff, 0xa4, 0xc6, - 0x03, 0x53, 0x56, 0xf7, 0x07, 0x00, 0x10, 0x74, 0x0a, 0x8b, 0xc7, 0x80, 0x7e, 0x06, 0x44, 0x74, - 0x49, 0xeb, 0x44, 0x8b, 0xc7, 0x8b, 0x49, 0x16, 0x80, 0xf9, 0x00, 0x74, 0x05, 0x80, 0xf9, 0x03, - 0x75, 0x38, 0x8d, 0xbe, 0x0a, 0x03, 0x83, 0x3d, 0x00, 0x75, 0x0c, 0x83, 0x7d, 0x02, 0x00, 0x75, - 0x06, 0x83, 0x7d, 0x04, 0x00, 0x74, 0x23, 0x8b, 0xf8, 0x8d, 0x71, 0x0e, 0x8d, 0xbe, 0x0a, 0x03, - 0x8c, 0xd8, 0x8e, 0xc0, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x74, 0x0f, 0xc7, 0x86, 0x2a, 0x02, 0x0e, - 0x00, 0xb8, 0x0b, 0x00, 0xe8, 0xd6, 0xea, 0x5e, 0x5b, 0xc3, 0x8b, 0xf8, 0x5e, 0x5b, 0xff, 0xa4, - 0xf2, 0x03, 0xff, 0x86, 0x48, 0x02, 0xc7, 0x86, 0x2a, 0x02, 0x06, 0x00, 0x8c, 0xd8, 0x8e, 0xc0, - 0x8d, 0xbe, 0xfc, 0x01, 0x8d, 0x77, 0x0e, 0xb9, 0x03, 0x00, 0xf3, 0xa5, 0x8b, 0xb6, 0xc4, 0x05, - 0x8b, 0x04, 0x86, 0xe0, 0x89, 0x86, 0x02, 0x02, 0x89, 0x86, 0x12, 0x02, 0x8b, 0xb6, 0xc9, 0x05, - 0x8b, 0x04, 0x89, 0x86, 0x16, 0x02, 0x8b, 0x44, 0x02, 0x89, 0x86, 0x18, 0x02, 0x8b, 0x44, 0x04, - 0x89, 0x86, 0x1a, 0x02, 0x8b, 0xb6, 0xce, 0x05, 0x8b, 0x04, 0x89, 0x86, 0x20, 0x02, 0x8b, 0x44, - 0x02, 0x89, 0x86, 0x22, 0x02, 0x8b, 0xb6, 0xc4, 0x05, 0x8b, 0x04, 0x80, 0x7e, 0x08, 0x06, 0x75, - 0x56, 0xf7, 0x07, 0x00, 0x10, 0x74, 0x14, 0xf6, 0x47, 0x06, 0x08, 0x75, 0x0b, 0x80, 0xbe, 0x5f, - 0x02, 0x00, 0x75, 0x04, 0xc6, 0x46, 0x09, 0x04, 0xe9, 0x1b, 0x01, 0x3b, 0x86, 0x00, 0x03, 0x77, - 0xf7, 0x80, 0xbe, 0x5e, 0x02, 0x01, 0x74, 0x10, 0x80, 0x7e, 0x06, 0x0c, 0x75, 0xea, 0xc6, 0x46, - 0x07, 0x10, 0xc6, 0x46, 0x09, 0x1e, 0xeb, 0xe0, 0x80, 0xbe, 0x5f, 0x02, 0x00, 0x75, 0xd9, 0xc6, - 0x46, 0x09, 0x0a, 0xf6, 0x86, 0x07, 0x02, 0x10, 0x74, 0xce, 0x80, 0xa6, 0x07, 0x02, 0x6f, 0xc6, - 0x86, 0x85, 0x02, 0x01, 0xe9, 0xdf, 0x00, 0x80, 0x7e, 0x08, 0x0a, 0x75, 0x5b, 0xc6, 0x86, 0x54, - 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x0c, 0x00, 0xbf, 0xbe, 0x49, 0x45, 0xe8, 0x99, - 0xdc, 0x8b, 0xb6, 0xc9, 0x05, 0x8d, 0xbe, 0xf4, 0x02, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x03, 0x00, - 0xf3, 0xa7, 0x75, 0x21, 0x83, 0xf8, 0x01, 0x74, 0x1c, 0xff, 0x8e, 0xb0, 0x02, 0x75, 0x13, 0xf6, - 0x86, 0x58, 0x02, 0x01, 0x75, 0x0c, 0xc6, 0x86, 0x58, 0x02, 0x01, 0xc6, 0x46, 0x09, 0x08, 0xe9, - 0x94, 0x00, 0xe9, 0x91, 0x00, 0xc7, 0x86, 0xb0, 0x02, 0x08, 0x00, 0x83, 0xf8, 0x01, 0x75, 0x0a, - 0xc7, 0x86, 0xae, 0x02, 0x02, 0x00, 0xeb, 0x7e, 0xeb, 0x2e, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0x0a, - 0x03, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x75, 0xe4, 0xff, 0x8e, 0xae, 0x02, - 0x75, 0x14, 0xc7, 0x86, 0xae, 0x02, 0x02, 0x00, 0xc6, 0x86, 0x54, 0x02, 0x01, 0x8e, 0x46, 0x02, - 0x26, 0x83, 0x0e, 0x0c, 0x00, 0x40, 0xeb, 0x4e, 0x80, 0xbe, 0x5e, 0x02, 0x00, 0x74, 0x0c, 0x80, - 0x7e, 0x08, 0x08, 0x74, 0x41, 0xc6, 0x46, 0x09, 0x0a, 0xeb, 0x3b, 0xb7, 0x10, 0x8a, 0x5e, 0x06, - 0x80, 0xfb, 0x06, 0x74, 0x1f, 0x80, 0xfb, 0x08, 0x74, 0x1a, 0x80, 0xfb, 0x04, 0x74, 0x15, 0x80, - 0xfb, 0x0c, 0x74, 0x10, 0x80, 0xfb, 0x0a, 0x75, 0x07, 0xc6, 0x86, 0x5b, 0x02, 0x00, 0xeb, 0x04, - 0xb7, 0x12, 0xeb, 0x12, 0x88, 0x7e, 0x07, 0x80, 0xff, 0x12, 0x75, 0x04, 0xc6, 0x46, 0x09, 0x1e, - 0xb8, 0x07, 0x00, 0xe8, 0x37, 0xe9, 0xc3, 0xff, 0x86, 0x48, 0x02, 0xc7, 0x86, 0x2a, 0x02, 0x06, - 0x00, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0xbe, 0xfc, 0x01, 0x8d, 0x77, 0x0e, 0xb9, 0x03, 0x00, 0xf3, - 0xa5, 0x80, 0x7e, 0x06, 0x48, 0x74, 0x08, 0xb8, 0x06, 0x00, 0xe8, 0x10, 0xe9, 0xeb, 0x30, 0xf6, - 0x86, 0x6e, 0x02, 0x01, 0x74, 0x1f, 0x80, 0x7e, 0x08, 0x16, 0x75, 0x19, 0xc6, 0x46, 0x09, 0x1a, - 0xc6, 0x86, 0x72, 0x02, 0x00, 0xc6, 0x86, 0x68, 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, - 0x0c, 0x00, 0xfe, 0xeb, 0x0a, 0x80, 0x7e, 0x08, 0x18, 0x75, 0x04, 0xc6, 0x46, 0x09, 0x1a, 0xc3, - 0x8a, 0x4e, 0x06, 0x80, 0xbe, 0xa7, 0x02, 0x01, 0x74, 0x02, 0xeb, 0x06, 0xb8, 0x06, 0x00, 0xe8, - 0xcb, 0xe8, 0xc3, 0x80, 0x7e, 0x06, 0x42, 0x75, 0x42, 0x8b, 0x47, 0x1a, 0x83, 0xf8, 0x00, 0x75, - 0x27, 0xf6, 0x86, 0x7e, 0x02, 0x01, 0x75, 0x18, 0xf7, 0x86, 0xf4, 0x00, 0x00, 0x10, 0x74, 0x10, - 0xb8, 0x02, 0x00, 0xe8, 0x73, 0x10, 0xc6, 0x46, 0x09, 0x1e, 0xc6, 0x46, 0x07, 0x02, 0xeb, 0x1b, - 0xb8, 0x06, 0x00, 0xe8, 0x97, 0xe8, 0xeb, 0x13, 0x3d, 0x00, 0x02, 0x75, 0x0e, 0xc6, 0x86, 0x77, - 0x02, 0x01, 0xe8, 0x6b, 0x06, 0xbe, 0xe5, 0x45, 0xe8, 0x1f, 0xdb, 0xc3, 0xc7, 0x86, 0x2a, 0x02, - 0x02, 0x00, 0x80, 0x7e, 0x06, 0x46, 0x75, 0x2b, 0x8b, 0x47, 0x1a, 0x83, 0xf8, 0x00, 0x75, 0x10, - 0xc6, 0x46, 0x07, 0x48, 0x80, 0x7e, 0x08, 0x1c, 0x75, 0x19, 0xc6, 0x46, 0x09, 0x16, 0xeb, 0x13, - 0x86, 0xc4, 0x3d, 0x20, 0x80, 0x75, 0x0c, 0xc7, 0x86, 0x2a, 0x02, 0x11, 0x00, 0xb8, 0x08, 0x00, - 0xe8, 0x4a, 0xe8, 0xc3, 0xc7, 0x86, 0x2a, 0x02, 0x0f, 0x00, 0x80, 0x7e, 0x06, 0x44, 0x74, 0x06, - 0x80, 0x7e, 0x06, 0x42, 0x75, 0x08, 0xb8, 0x06, 0x00, 0xe8, 0x31, 0xe8, 0xeb, 0x0d, 0xf6, 0x86, - 0x72, 0x02, 0x01, 0x74, 0x06, 0xbe, 0xf1, 0x45, 0xe8, 0xbf, 0xda, 0xc3, 0x80, 0x7e, 0x06, 0x44, - 0x75, 0x14, 0xe8, 0xb5, 0xd8, 0xc7, 0x44, 0x02, 0x02, 0x00, 0x8d, 0x7e, 0x16, 0xe8, 0xc8, 0xd8, - 0xbe, 0x6d, 0x45, 0xe8, 0x56, 0xdb, 0xc3, 0xf7, 0x86, 0xf6, 0x00, 0x40, 0x00, 0x74, 0x18, 0xf7, - 0x86, 0xf4, 0x00, 0x00, 0x20, 0x74, 0x10, 0x80, 0x7e, 0x06, 0x08, 0x72, 0x0a, 0x80, 0x7e, 0x06, - 0x0e, 0x77, 0x04, 0xc6, 0x46, 0x07, 0x14, 0xc3, 0xff, 0x86, 0x4c, 0x02, 0xc7, 0x86, 0x2a, 0x02, - 0x0b, 0x00, 0x8a, 0x86, 0x54, 0x02, 0x88, 0x86, 0x80, 0x02, 0xc7, 0x86, 0xc2, 0x02, 0x00, 0x00, - 0xc6, 0x86, 0x61, 0x02, 0x00, 0x83, 0x8e, 0x06, 0x02, 0x20, 0x81, 0xa6, 0x06, 0x02, 0xff, 0x2f, - 0xc6, 0x86, 0x85, 0x02, 0x01, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x74, 0x38, 0xc6, 0x86, 0x80, 0x02, - 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x24, 0x00, 0xff, 0x7f, 0x80, 0x7e, 0x0a, 0x00, 0x75, - 0x0a, 0xc6, 0x86, 0x69, 0x02, 0x00, 0xc6, 0x86, 0x6b, 0x02, 0x00, 0x8a, 0xa6, 0x80, 0x02, 0x88, - 0xa6, 0x54, 0x02, 0xe8, 0x64, 0xdc, 0x88, 0x86, 0x54, 0x02, 0xc6, 0x46, 0x09, 0x0c, 0xc7, 0x86, - 0xc6, 0x01, 0x00, 0x01, 0x80, 0x7e, 0x06, 0x04, 0x75, 0x04, 0xc6, 0x46, 0x07, 0x06, 0x80, 0x7e, - 0x08, 0x02, 0x75, 0x04, 0xc6, 0x46, 0x09, 0x0c, 0x80, 0x7e, 0x08, 0x06, 0x74, 0x05, 0xc6, 0x86, - 0x5a, 0x02, 0x01, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xf4, 0x02, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x06, - 0x00, 0xf3, 0xa6, 0x74, 0x08, 0x77, 0x03, 0xe9, 0x95, 0x00, 0xe9, 0xfe, 0x00, 0xf6, 0x47, 0x06, - 0x08, 0x75, 0x59, 0x80, 0x7e, 0x08, 0x04, 0x75, 0x53, 0x8b, 0xb6, 0xd4, 0x05, 0x8d, 0xbe, 0x0a, - 0x03, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x03, 0x00, 0xb8, 0x01, 0x00, 0xf3, 0xa7, 0x74, 0x02, 0xeb, - 0x3e, 0xff, 0x86, 0xb4, 0x02, 0x83, 0xbe, 0xb4, 0x02, 0x03, 0x72, 0x30, 0x83, 0xbe, 0xb2, 0x02, - 0x03, 0x72, 0x29, 0xc6, 0x46, 0x09, 0x02, 0xc6, 0x86, 0x80, 0x02, 0x01, 0x8e, 0x46, 0x02, 0x26, - 0x81, 0x0e, 0x24, 0x00, 0x00, 0x80, 0x8a, 0x86, 0x54, 0x02, 0x8a, 0xa6, 0x80, 0x02, 0x88, 0xa6, - 0x54, 0x02, 0xe8, 0xc5, 0xdb, 0x88, 0x86, 0x54, 0x02, 0xe8, 0xc4, 0xf4, 0xe9, 0xec, 0x00, 0x80, - 0x7e, 0x0a, 0x00, 0x75, 0x1d, 0xc6, 0x86, 0x69, 0x02, 0x00, 0xc6, 0x86, 0x6b, 0x02, 0x00, 0x8a, - 0x86, 0x54, 0x02, 0x8a, 0xa6, 0x80, 0x02, 0x88, 0xa6, 0x54, 0x02, 0xe8, 0x9c, 0xdb, 0x88, 0x86, - 0x54, 0x02, 0xc6, 0x46, 0x09, 0x0c, 0xb8, 0x00, 0x03, 0xe8, 0x15, 0xf5, 0xe9, 0xbc, 0x00, 0x80, - 0x7e, 0x08, 0x00, 0x75, 0x3d, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x75, 0x16, 0xf6, 0x86, 0x68, 0x02, - 0x01, 0x74, 0x16, 0xf6, 0x86, 0x5e, 0x02, 0x01, 0x74, 0x08, 0xf7, 0x86, 0x12, 0x01, 0x00, 0x01, - 0x75, 0x16, 0xc6, 0x46, 0x09, 0x0c, 0xe9, 0x92, 0x00, 0xf6, 0x86, 0x5e, 0x02, 0x01, 0x74, 0x9c, - 0xf7, 0x86, 0x12, 0x01, 0x00, 0x01, 0x74, 0x94, 0xc6, 0x46, 0x09, 0x04, 0xff, 0x86, 0x4a, 0x02, - 0xeb, 0x79, 0x80, 0x7e, 0x08, 0x0a, 0x75, 0x73, 0xf6, 0x86, 0x5f, 0x02, 0x01, 0x75, 0x0e, 0xf7, - 0x86, 0x12, 0x01, 0x00, 0x01, 0x75, 0x06, 0xc6, 0x46, 0x09, 0x0c, 0xeb, 0x5e, 0xf7, 0x86, 0x12, - 0x01, 0x00, 0x01, 0x74, 0x56, 0xc6, 0x46, 0x09, 0x04, 0xeb, 0x50, 0x80, 0x7e, 0x08, 0x04, 0x75, - 0x2c, 0xc6, 0x46, 0x09, 0x0c, 0x80, 0x7e, 0x0a, 0x00, 0x75, 0x1d, 0xc6, 0x86, 0x69, 0x02, 0x00, - 0xc6, 0x86, 0x6b, 0x02, 0x00, 0x8a, 0x86, 0x54, 0x02, 0x8a, 0xa6, 0x80, 0x02, 0x88, 0xa6, 0x54, - 0x02, 0xe8, 0xf6, 0xda, 0x88, 0x86, 0x54, 0x02, 0xe8, 0x71, 0xf1, 0xeb, 0x1e, 0x80, 0x7e, 0x08, - 0x00, 0x75, 0x09, 0xf6, 0x86, 0x68, 0x02, 0x01, 0x74, 0x02, 0xeb, 0xab, 0x80, 0x7e, 0x08, 0x0a, - 0x75, 0x09, 0xf6, 0x86, 0x5f, 0x02, 0x01, 0x75, 0x02, 0xeb, 0x9c, 0x8a, 0x86, 0x80, 0x02, 0x88, - 0x86, 0x54, 0x02, 0xc3, 0xc7, 0x86, 0xbc, 0x02, 0x02, 0x00, 0xff, 0x86, 0x42, 0x02, 0xc7, 0x86, - 0x2a, 0x02, 0x0c, 0x00, 0x80, 0x7e, 0x06, 0x04, 0x74, 0x06, 0x80, 0x7e, 0x06, 0x06, 0x75, 0x04, - 0xc6, 0x46, 0x07, 0x08, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x56, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x74, - 0x3b, 0xc6, 0x86, 0x54, 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x24, 0x00, 0xff, 0x7f, - 0xb8, 0x00, 0x02, 0xe8, 0x0b, 0xf4, 0xf6, 0x86, 0x5e, 0x02, 0x01, 0x74, 0x0c, 0xbe, 0x73, 0x45, - 0xe8, 0x37, 0xd8, 0xbe, 0x91, 0x45, 0xe8, 0x31, 0xd8, 0x80, 0x7e, 0x0a, 0x00, 0x75, 0x0d, 0xc6, - 0x86, 0x69, 0x02, 0x00, 0xc6, 0x86, 0x6b, 0x02, 0x00, 0xe8, 0x5e, 0xda, 0xf6, 0x86, 0x5e, 0x02, - 0x01, 0x74, 0x34, 0xc6, 0x86, 0x58, 0x02, 0x00, 0xc6, 0x86, 0x59, 0x02, 0x00, 0xe9, 0xc9, 0x00, - 0x80, 0x7e, 0x08, 0x0c, 0x75, 0x24, 0xc6, 0x46, 0x09, 0x00, 0xf6, 0x86, 0x5e, 0x02, 0x01, 0x74, - 0x16, 0xbe, 0x73, 0x45, 0xe8, 0xf3, 0xd7, 0xbe, 0x91, 0x45, 0xe8, 0xed, 0xd7, 0xc6, 0x86, 0x58, - 0x02, 0x00, 0xc6, 0x86, 0x59, 0x02, 0x00, 0xe9, 0x9f, 0x00, 0x80, 0x7e, 0x08, 0x02, 0x75, 0xf7, - 0xc7, 0x86, 0xc8, 0x01, 0x00, 0x00, 0xc6, 0x46, 0x09, 0x00, 0xf6, 0x86, 0x5e, 0x02, 0x01, 0x74, - 0x0a, 0xc6, 0x86, 0x58, 0x02, 0x00, 0xc6, 0x86, 0x59, 0x02, 0x00, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, - 0xf4, 0x02, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x06, 0x00, 0xf3, 0xa6, 0x74, 0x2e, 0xc6, 0x86, 0x54, - 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x24, 0x00, 0xff, 0x7f, 0x80, 0x7e, 0x0a, 0x00, - 0x75, 0x0a, 0xc6, 0x86, 0x69, 0x02, 0x00, 0xc6, 0x86, 0x6b, 0x02, 0x00, 0xe8, 0xcb, 0xd9, 0xb8, - 0x00, 0x02, 0xe8, 0x4c, 0xf3, 0xc6, 0x46, 0x09, 0x00, 0xeb, 0x3e, 0x8e, 0x46, 0x02, 0x26, 0xa0, - 0x1c, 0x00, 0xc6, 0x46, 0x09, 0x00, 0xc6, 0x86, 0x69, 0x02, 0x00, 0xc6, 0x86, 0x55, 0x02, 0x00, - 0xc6, 0x86, 0x65, 0x02, 0x00, 0xe8, 0xa2, 0xd9, 0x24, 0x07, 0xe8, 0xf1, 0xf5, 0xbe, 0x43, 0x45, - 0xe8, 0x57, 0xd7, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0xbe, 0xee, 0x01, 0xab, 0xab, 0xab, - 0xe8, 0x5b, 0xf0, 0xbe, 0x91, 0x45, 0xe8, 0x41, 0xd7, 0xc3, 0x8c, 0xd8, 0x8e, 0xc0, 0xff, 0x86, - 0x50, 0x02, 0xc7, 0x86, 0x2a, 0x02, 0x0f, 0x00, 0xf6, 0x86, 0xca, 0x01, 0x01, 0x74, 0x3b, 0xb8, - 0x30, 0x56, 0xa3, 0x26, 0x56, 0x8d, 0x77, 0x0e, 0x8b, 0xf8, 0xa5, 0xa5, 0xa5, 0xc7, 0x06, 0x2e, - 0x56, 0x01, 0x00, 0xc6, 0x86, 0xcb, 0x01, 0x00, 0x33, 0xff, 0xba, 0x02, 0x08, 0xe8, 0x72, 0xe8, - 0xbf, 0x28, 0x56, 0xb9, 0x03, 0x00, 0xf3, 0xa5, 0x8d, 0x77, 0x0e, 0xbf, 0x28, 0x56, 0xb9, 0x03, - 0x00, 0xf3, 0xa7, 0x75, 0x05, 0xe8, 0x8b, 0x04, 0xeb, 0x00, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xee, - 0x01, 0xa5, 0xa5, 0xa5, 0x80, 0x7e, 0x06, 0x04, 0x75, 0x04, 0xc6, 0x46, 0x07, 0x08, 0x8b, 0x8e, - 0xbc, 0x02, 0xe3, 0x05, 0x49, 0x89, 0x8e, 0xbc, 0x02, 0xf7, 0x07, 0x3c, 0x00, 0x75, 0x0a, 0xf6, - 0x86, 0x68, 0x02, 0x01, 0x74, 0x03, 0xe8, 0x07, 0x02, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x75, 0x03, - 0xe9, 0x93, 0x00, 0xbe, 0x91, 0x45, 0xe8, 0xb1, 0xd6, 0xf7, 0x07, 0x00, 0x10, 0x75, 0x37, 0xc6, - 0x86, 0x54, 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x24, 0x00, 0xff, 0x7f, 0xb8, 0x00, - 0x02, 0xe8, 0x5d, 0xf2, 0xf6, 0x86, 0x5e, 0x02, 0x01, 0x74, 0x06, 0xbe, 0x73, 0x45, 0xe8, 0x89, - 0xd6, 0x80, 0x7e, 0x0a, 0x00, 0x75, 0x38, 0xc6, 0x86, 0x69, 0x02, 0x00, 0xc6, 0x86, 0x6b, 0x02, - 0x00, 0xe8, 0xb6, 0xd8, 0xeb, 0x29, 0xf7, 0x07, 0x3c, 0x00, 0x75, 0x33, 0xc6, 0x86, 0x65, 0x02, - 0x01, 0xc6, 0x86, 0x66, 0x02, 0x01, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0x77, 0x0e, 0x8d, - 0xbe, 0xee, 0x01, 0xab, 0xab, 0xab, 0x8b, 0x86, 0x06, 0x02, 0xa9, 0x40, 0x00, 0x74, 0x02, 0xeb, - 0x48, 0x83, 0xc8, 0x40, 0x89, 0x86, 0x06, 0x02, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xeb, 0x3a, 0x83, - 0xa6, 0x06, 0x02, 0xbf, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xee, - 0x01, 0xa5, 0xa5, 0xa5, 0xeb, 0x23, 0xf6, 0x86, 0x5e, 0x02, 0x01, 0x74, 0x06, 0xbe, 0x91, 0x45, - 0xe8, 0x17, 0xd6, 0xc6, 0x86, 0x67, 0x02, 0x00, 0xf7, 0x07, 0x3c, 0x00, 0x75, 0x0b, 0xc6, 0x86, - 0x67, 0x02, 0x01, 0xbe, 0x79, 0x45, 0xe8, 0x01, 0xd6, 0xc3, 0xeb, 0x61, 0x8c, 0xd8, 0x8e, 0xc0, - 0xc7, 0x86, 0x2a, 0x02, 0x0d, 0x00, 0xf6, 0x86, 0xca, 0x01, 0x01, 0x74, 0x50, 0x33, 0xff, 0xba, - 0x02, 0x08, 0xe8, 0x4d, 0xe7, 0x8b, 0x3e, 0x26, 0x56, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x75, 0x3d, - 0x81, 0xff, 0x3e, 0x5d, 0x73, 0x6f, 0x89, 0x3e, 0x26, 0x56, 0x8d, 0x77, 0x0e, 0xb9, 0x03, 0x00, - 0xf3, 0xa7, 0x74, 0x05, 0xc6, 0x86, 0xcc, 0x01, 0x01, 0x81, 0xff, 0x3e, 0x5d, 0x73, 0x56, 0x89, - 0x3e, 0x26, 0x56, 0x8d, 0x77, 0x0e, 0xa5, 0xa5, 0xa5, 0xff, 0x06, 0x2e, 0x56, 0x8d, 0x77, 0x0e, - 0xbf, 0x28, 0x56, 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x75, 0x03, 0xe8, 0x36, 0x03, 0x8a, 0x86, 0x06, - 0x02, 0xa8, 0x40, 0x75, 0x3d, 0x80, 0x7e, 0x06, 0x04, 0x75, 0x04, 0xc6, 0x46, 0x07, 0x08, 0xf7, - 0x07, 0x3c, 0x00, 0x75, 0x3a, 0xf6, 0x86, 0x68, 0x02, 0x01, 0x74, 0x35, 0xf6, 0x86, 0x54, 0x02, - 0x01, 0x74, 0x07, 0xf6, 0x86, 0x65, 0x02, 0x01, 0x75, 0x27, 0xe8, 0xb3, 0x00, 0xc7, 0x86, 0xbe, - 0x02, 0x01, 0x00, 0xeb, 0x1c, 0xbf, 0x38, 0x5d, 0x33, 0xc0, 0xab, 0xab, 0xab, 0xe8, 0xf3, 0x02, - 0xeb, 0xbb, 0x24, 0xbf, 0x88, 0x86, 0x06, 0x02, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xeb, 0xb6, 0xeb, - 0x79, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x74, 0x3c, 0xf6, 0x86, 0x65, 0x02, 0x01, 0x74, 0x19, 0xf6, - 0x86, 0x5e, 0x02, 0x01, 0x74, 0x12, 0x83, 0xbe, 0xbc, 0x02, 0x00, 0x75, 0x0b, 0x80, 0x7e, 0x08, - 0x00, 0x75, 0x05, 0x83, 0x8e, 0xda, 0x02, 0x08, 0xc6, 0x86, 0x65, 0x02, 0x01, 0xc6, 0x86, 0x66, - 0x02, 0x01, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xee, 0x01, 0xab, - 0xab, 0xab, 0xeb, 0x4b, 0xf6, 0x86, 0x68, 0x02, 0x01, 0x74, 0x44, 0xf6, 0x86, 0x67, 0x02, 0x01, - 0x75, 0x0d, 0xc6, 0x86, 0x67, 0x02, 0x01, 0xbe, 0x79, 0x45, 0xe8, 0xed, 0xd4, 0xeb, 0x30, 0xf6, - 0x86, 0x5e, 0x02, 0x01, 0x74, 0x12, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x0c, 0x83, 0xbe, 0xbc, 0x02, - 0x00, 0x75, 0x05, 0x83, 0x8e, 0xda, 0x02, 0x08, 0xeb, 0x15, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x74, - 0x0e, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0xee, 0x01, 0xa5, 0xa5, 0xa5, 0xc3, - 0x53, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0x77, 0x0e, 0x8d, 0xbe, 0x0a, 0x03, 0x8c, 0xd9, 0x8e, 0xc1, - 0xb9, 0x03, 0x00, 0xf3, 0xa7, 0x74, 0x54, 0x8b, 0x44, 0xfe, 0x89, 0x45, 0xfe, 0xf3, 0xa5, 0xbb, - 0xfc, 0x04, 0xb9, 0x0b, 0x00, 0x8d, 0xb6, 0x0a, 0x03, 0xad, 0x8b, 0x14, 0x8b, 0x74, 0x02, 0x8b, - 0x3f, 0x03, 0xfd, 0xab, 0x89, 0x15, 0x89, 0x75, 0x02, 0x83, 0xc3, 0x02, 0xe2, 0xf1, 0xf6, 0x86, - 0xaa, 0x02, 0x01, 0x75, 0x26, 0x8b, 0xb6, 0xd9, 0x05, 0x8d, 0xbe, 0xea, 0x01, 0xa5, 0xa5, 0x80, - 0x7e, 0x06, 0x08, 0x76, 0x0b, 0xc7, 0x86, 0xbe, 0x02, 0x04, 0x00, 0xe8, 0xc8, 0xef, 0xeb, 0x0b, - 0xc6, 0x86, 0x84, 0x02, 0x01, 0xc7, 0x86, 0xbe, 0x02, 0x01, 0x00, 0x5b, 0xc3, 0xb8, 0x80, 0x0a, - 0xf6, 0x86, 0xa6, 0x02, 0x01, 0x75, 0x45, 0xf6, 0x86, 0xa8, 0x02, 0x01, 0x75, 0x3e, 0xf7, 0x86, - 0xf6, 0x00, 0x10, 0x00, 0x75, 0x36, 0xf7, 0x07, 0x82, 0x00, 0x74, 0x2f, 0xc7, 0x86, 0x2a, 0x02, - 0x07, 0x00, 0xc6, 0x86, 0x16, 0x01, 0x00, 0x81, 0x8e, 0x06, 0x02, 0x00, 0x01, 0xc6, 0x86, 0x85, - 0x02, 0x01, 0xf6, 0x86, 0xa7, 0x02, 0x01, 0x75, 0x0c, 0x80, 0x7e, 0x06, 0x08, 0x72, 0x0c, 0x80, - 0x7e, 0x06, 0x0e, 0x77, 0x06, 0xb8, 0x0a, 0x00, 0xe8, 0x62, 0xe1, 0xc3, 0x89, 0x86, 0xe2, 0x02, - 0xe9, 0xcf, 0xeb, 0xf7, 0x07, 0x02, 0x00, 0x74, 0x0f, 0x80, 0x7e, 0x06, 0x0c, 0x75, 0x09, 0xc6, - 0x86, 0x60, 0x02, 0x01, 0xc6, 0x46, 0x07, 0x0e, 0x8b, 0x86, 0x14, 0x02, 0x86, 0xe0, 0x8b, 0xb6, - 0xfe, 0x05, 0x0b, 0xf6, 0x74, 0x09, 0xad, 0x86, 0xe0, 0x89, 0x86, 0x14, 0x02, 0x86, 0xe0, 0x89, - 0x86, 0xde, 0x02, 0x8b, 0xb6, 0xe5, 0x05, 0x0b, 0xf6, 0x74, 0x07, 0xad, 0x86, 0xc4, 0x89, 0x86, - 0x0c, 0x02, 0x8b, 0xb6, 0xea, 0x05, 0x0b, 0xf6, 0x74, 0x05, 0x8b, 0xc6, 0xe8, 0xa2, 0x00, 0x8b, - 0xb6, 0xef, 0x05, 0x0b, 0xf6, 0x74, 0x07, 0xad, 0x86, 0xe0, 0x89, 0x86, 0x08, 0x02, 0x8b, 0xb6, - 0xf4, 0x05, 0x0b, 0xf6, 0x74, 0x07, 0xad, 0x86, 0xc4, 0x89, 0x86, 0xf8, 0x01, 0x8b, 0xb6, 0xf9, - 0x05, 0x0b, 0xf6, 0x74, 0x07, 0xad, 0x86, 0xc4, 0x89, 0x86, 0xf6, 0x01, 0x8b, 0x07, 0xa9, 0x02, - 0x00, 0x75, 0x07, 0xa8, 0x28, 0x74, 0x03, 0xe9, 0x71, 0xff, 0xc7, 0x86, 0xe2, 0x02, 0x00, 0x01, - 0xe9, 0x3f, 0xeb, 0xc3, 0xf7, 0x07, 0x02, 0x02, 0x74, 0xf9, 0x8b, 0x86, 0x14, 0x02, 0x86, 0xe0, - 0x8b, 0xb6, 0x13, 0x06, 0x0b, 0xf6, 0x74, 0x09, 0xad, 0x86, 0xe0, 0x89, 0x86, 0x14, 0x02, 0x86, - 0xe0, 0x89, 0x86, 0xde, 0x02, 0x8b, 0xb6, 0x04, 0x06, 0x0b, 0xf6, 0x74, 0x07, 0xad, 0x86, 0xc4, - 0x89, 0x86, 0x0c, 0x02, 0x8b, 0xb6, 0x09, 0x06, 0x0b, 0xf6, 0x74, 0x05, 0x8b, 0xc6, 0xe8, 0x20, - 0x00, 0x8b, 0xb6, 0x0e, 0x06, 0x0b, 0xf6, 0x74, 0x07, 0xad, 0x86, 0xe0, 0x89, 0x86, 0x08, 0x02, - 0x80, 0x7e, 0x06, 0x0c, 0x75, 0x96, 0xc6, 0x86, 0x60, 0x02, 0x01, 0xc6, 0x46, 0x07, 0x0e, 0xeb, - 0x8b, 0x53, 0x57, 0x8c, 0xdb, 0x8e, 0xc3, 0xbb, 0x12, 0x05, 0xb9, 0x0a, 0x00, 0x8b, 0xf0, 0xad, - 0x8b, 0x34, 0x8b, 0x3f, 0x03, 0xfd, 0xab, 0x89, 0x35, 0x83, 0xc3, 0x02, 0xe2, 0xf4, 0x5f, 0x5b, - 0xc3, 0x68, 0xc1, 0x29, 0xeb, 0x08, 0x68, 0x29, 0x2a, 0xeb, 0x03, 0x68, 0x6b, 0x2a, 0xf7, 0x07, - 0x82, 0x02, 0x74, 0x1c, 0x8b, 0x86, 0x14, 0x02, 0x86, 0xe0, 0x8b, 0xb6, 0x4a, 0x06, 0x0b, 0xf6, - 0x74, 0x09, 0xad, 0x86, 0xe0, 0x89, 0x86, 0x14, 0x02, 0x86, 0xe0, 0x89, 0x86, 0xde, 0x02, 0xc3, - 0x83, 0xc4, 0x02, 0xc3, 0x8b, 0x07, 0xf6, 0x86, 0x63, 0x01, 0x01, 0x74, 0x1e, 0xa9, 0x00, 0x20, - 0x74, 0x40, 0x56, 0x57, 0xe8, 0xa3, 0xd0, 0xc7, 0x44, 0x02, 0x02, 0x00, 0x8d, 0x7e, 0x16, 0xe8, - 0xb6, 0xd0, 0xbe, 0x6d, 0x45, 0xe8, 0x44, 0xd3, 0x5f, 0x5e, 0xc3, 0x80, 0x7e, 0x06, 0x08, 0x75, - 0x21, 0xa9, 0x00, 0x10, 0x74, 0x1c, 0xa9, 0x3c, 0x00, 0x75, 0x17, 0xff, 0x86, 0xc8, 0x02, 0xff, - 0x86, 0xc6, 0x02, 0x83, 0xbe, 0xc6, 0x02, 0x02, 0x72, 0x05, 0xc6, 0x46, 0x07, 0x0a, 0xc3, 0xe8, - 0xd2, 0xeb, 0xc3, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, 0xc0, 0x8b, 0x3e, 0x26, 0x56, 0x83, 0xc7, 0x06, - 0x81, 0xff, 0x3e, 0x5d, 0x72, 0x03, 0xbf, 0x38, 0x5d, 0xab, 0xab, 0xab, 0xf6, 0x86, 0xcc, 0x01, - 0x01, 0x74, 0x18, 0xc6, 0x86, 0xcb, 0x01, 0x01, 0xe8, 0x3f, 0xd0, 0xc7, 0x44, 0x02, 0x05, 0x00, - 0x8d, 0x7e, 0x16, 0xe8, 0x52, 0xd0, 0xc6, 0x86, 0xca, 0x01, 0x00, 0xc3, 0xf7, 0x86, 0xf6, 0x00, - 0x08, 0x00, 0x74, 0x06, 0xbe, 0x1b, 0x46, 0xe8, 0x20, 0xd2, 0x8d, 0xb6, 0x6c, 0x15, 0x8e, 0x46, - 0x02, 0x8a, 0x1c, 0xf6, 0xc3, 0x80, 0x75, 0x0d, 0x80, 0xfb, 0x10, 0x77, 0x14, 0x32, 0xff, 0xd1, - 0xe3, 0xff, 0xa7, 0xda, 0x04, 0xc7, 0x86, 0x0a, 0x01, 0x00, 0x00, 0xc3, 0xb8, 0x00, 0x80, 0xeb, - 0x08, 0xb8, 0x00, 0x80, 0xeb, 0x03, 0xb8, 0x00, 0x20, 0x8d, 0xb6, 0x6c, 0x15, 0x89, 0x44, 0x02, - 0x80, 0x0c, 0x80, 0xb8, 0x40, 0x60, 0x8e, 0xc0, 0xc7, 0x86, 0x0a, 0x01, 0x00, 0x00, 0x26, 0xc7, - 0x06, 0x70, 0x00, 0x08, 0x00, 0xc3, 0xeb, 0xe1, 0xb8, 0x04, 0x00, 0x80, 0xbe, 0x06, 0x01, 0x01, - 0x75, 0xf4, 0xb8, 0x05, 0x00, 0x80, 0xbe, 0x07, 0x01, 0x01, 0x74, 0xea, 0xc6, 0x86, 0x08, 0x01, - 0x01, 0xc6, 0x86, 0xcd, 0x01, 0x00, 0xc6, 0x86, 0x09, 0x01, 0x00, 0x8b, 0x86, 0xf8, 0x00, 0x89, - 0x86, 0xf6, 0x00, 0x8d, 0xb6, 0x76, 0x15, 0xb8, 0x03, 0x00, 0xf6, 0x04, 0x80, 0x75, 0xc7, 0x33, - 0xc0, 0x39, 0x04, 0x75, 0x1e, 0x39, 0x44, 0x02, 0x75, 0x19, 0x39, 0x44, 0x04, 0x75, 0x14, 0x8b, - 0x86, 0x00, 0x01, 0x89, 0x04, 0x8b, 0x86, 0x02, 0x01, 0x89, 0x44, 0x02, 0x8b, 0x86, 0x04, 0x01, - 0x89, 0x44, 0x04, 0xad, 0x8b, 0x14, 0x8b, 0x74, 0x02, 0x89, 0x86, 0xd0, 0x01, 0x89, 0x96, 0xd2, - 0x01, 0x89, 0xb6, 0xd4, 0x01, 0x8e, 0x46, 0x02, 0x50, 0xe8, 0x44, 0xce, 0x26, 0xa3, 0x1e, 0x00, - 0x8b, 0xc2, 0xe8, 0x3b, 0xce, 0x26, 0xa3, 0x20, 0x00, 0x8b, 0xc6, 0xe8, 0x32, 0xce, 0x26, 0xa3, - 0x22, 0x00, 0x58, 0xbb, 0x2a, 0x05, 0xb9, 0x13, 0x00, 0x1e, 0x07, 0x8b, 0x3f, 0x03, 0xfd, 0xab, - 0x89, 0x15, 0x89, 0x75, 0x02, 0x83, 0xc3, 0x02, 0xe2, 0xf1, 0xbb, 0x26, 0x05, 0x8d, 0x96, 0x84, - 0x15, 0xb8, 0x02, 0x00, 0x8b, 0x3f, 0x03, 0xfd, 0x8b, 0xf2, 0xb9, 0x09, 0x00, 0xf3, 0xa5, 0x83, - 0xc3, 0x02, 0x48, 0x75, 0xef, 0xf7, 0x86, 0xf6, 0x00, 0x08, 0x00, 0x74, 0x06, 0xbe, 0x1b, 0x46, - 0xe8, 0x07, 0xd1, 0x8d, 0xb6, 0x6c, 0x15, 0x8b, 0x44, 0x08, 0xf7, 0x86, 0xf4, 0x00, 0x00, 0x20, - 0x75, 0x0a, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x0c, 0x75, 0x02, 0xeb, 0x03, 0x25, 0xff, 0x7b, 0x89, - 0x86, 0x12, 0x01, 0x89, 0x86, 0x14, 0x01, 0xf7, 0x86, 0x12, 0x01, 0x01, 0x00, 0x74, 0x08, 0xc7, - 0x06, 0x6b, 0x45, 0x58, 0x02, 0xeb, 0x06, 0xc7, 0x06, 0x6b, 0x45, 0x08, 0x07, 0x8e, 0x46, 0x02, - 0x26, 0x8b, 0x1e, 0x28, 0x00, 0x81, 0xe3, 0xff, 0xf4, 0xa9, 0x04, 0x00, 0x74, 0x04, 0x81, 0xcb, - 0x00, 0x08, 0xa9, 0x02, 0x00, 0x74, 0x04, 0x81, 0xcb, 0x00, 0x03, 0x8e, 0x46, 0x02, 0x26, 0x89, - 0x1e, 0x28, 0x00, 0x8d, 0xb6, 0x80, 0x15, 0xe8, 0x02, 0x02, 0x8d, 0xb6, 0x7c, 0x15, 0xe8, 0x20, - 0x00, 0xf6, 0x06, 0x1e, 0x56, 0x01, 0x74, 0x03, 0xe8, 0xf2, 0x13, 0xc6, 0x86, 0x07, 0x01, 0x01, - 0xe8, 0x5f, 0x05, 0xe9, 0x90, 0xfe, 0x56, 0x83, 0xc6, 0x08, 0xe8, 0x04, 0x00, 0x5e, 0xe9, 0x85, - 0xfe, 0x8e, 0x46, 0x02, 0xb8, 0xc0, 0x00, 0xe8, 0x56, 0xcd, 0x26, 0xa3, 0x3a, 0x00, 0x8b, 0x04, - 0x0d, 0x80, 0x00, 0x89, 0x86, 0xd6, 0x01, 0xe8, 0x46, 0xcd, 0x26, 0xa3, 0x3c, 0x00, 0x8b, 0x44, - 0x02, 0x89, 0x86, 0xd8, 0x01, 0xe8, 0x38, 0xcd, 0x26, 0xa3, 0x3e, 0x00, 0xc3, 0x83, 0x8e, 0x1e, - 0x01, 0x01, 0xc6, 0x86, 0x16, 0x01, 0x00, 0x8a, 0x46, 0x06, 0x3c, 0x00, 0x74, 0x1b, 0x3c, 0x10, - 0x74, 0x17, 0x3c, 0x12, 0x74, 0x13, 0x3c, 0x0e, 0x74, 0x17, 0x3c, 0x48, 0x74, 0x19, 0xe8, 0x35, - 0xfe, 0xb8, 0x0f, 0x00, 0xe8, 0x86, 0xdd, 0xeb, 0x35, 0xe8, 0x2a, 0xfe, 0xe8, 0xc7, 0x03, 0xeb, - 0x2d, 0xc6, 0x46, 0x07, 0x10, 0xeb, 0x20, 0x8e, 0x46, 0x02, 0xf6, 0x06, 0x1e, 0x56, 0x01, 0x75, - 0x08, 0x26, 0x83, 0x26, 0x02, 0x00, 0xfd, 0xeb, 0x08, 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xe8, 0xce, - 0x13, 0xc6, 0x46, 0x07, 0x12, 0xeb, 0x00, 0xc6, 0x46, 0x09, 0x1e, 0xe9, 0xf8, 0xfd, 0xc3, 0xc6, - 0x86, 0x06, 0x01, 0x00, 0xb8, 0x05, 0x00, 0x80, 0xbe, 0x07, 0x01, 0x01, 0x75, 0x03, 0xe9, 0xe8, - 0xfd, 0x8b, 0x44, 0x08, 0x89, 0x86, 0xf4, 0x00, 0x8b, 0x44, 0x0a, 0xa9, 0x00, 0x02, 0x74, 0x03, - 0x0d, 0x00, 0x01, 0x89, 0x86, 0xf6, 0x00, 0x89, 0x86, 0xf8, 0x00, 0xf7, 0x86, 0xf6, 0x00, 0x00, - 0x04, 0x74, 0x06, 0xb8, 0x01, 0x00, 0xe9, 0xc0, 0xfd, 0x8b, 0x44, 0x12, 0x0b, 0xc0, 0x75, 0x16, - 0xb8, 0x18, 0x47, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x01, 0x75, 0x0b, 0xf7, 0x86, 0xf6, 0x00, 0x00, - 0x02, 0x75, 0x03, 0xb8, 0xc6, 0x11, 0x89, 0x86, 0xfa, 0x00, 0x89, 0x86, 0x32, 0x01, 0x8d, 0xbe, - 0x30, 0x04, 0x8b, 0x44, 0x0c, 0x89, 0x05, 0x89, 0x86, 0x00, 0x01, 0x8b, 0x44, 0x0e, 0x89, 0x45, - 0x02, 0x89, 0x86, 0x02, 0x01, 0x8b, 0x44, 0x10, 0x89, 0x45, 0x04, 0x89, 0x86, 0x04, 0x01, 0x80, - 0xbe, 0x62, 0x01, 0x01, 0x75, 0x21, 0x8b, 0x44, 0x0c, 0x89, 0x86, 0xb0, 0x03, 0x89, 0x86, 0xb6, - 0x03, 0x8b, 0x44, 0x0e, 0x89, 0x86, 0xb2, 0x03, 0x89, 0x86, 0xb8, 0x03, 0x8b, 0x44, 0x10, 0x89, - 0x86, 0xb4, 0x03, 0x89, 0x86, 0xba, 0x03, 0x8e, 0x46, 0x02, 0x8b, 0x86, 0xfa, 0x00, 0x26, 0xa3, - 0x12, 0x00, 0x8b, 0x44, 0x14, 0x26, 0xa3, 0x2a, 0x00, 0x8b, 0x44, 0x16, 0x25, 0xff, 0xf4, 0x83, - 0xc8, 0x30, 0x26, 0xa3, 0x28, 0x00, 0x8b, 0x86, 0xf4, 0x00, 0x25, 0xff, 0xfe, 0xc1, 0xe8, 0x08, - 0x89, 0x86, 0x24, 0x02, 0xf7, 0x86, 0xf4, 0x00, 0x04, 0x00, 0x74, 0x0f, 0xf6, 0x06, 0x1e, 0x56, - 0x01, 0x75, 0x08, 0xc6, 0x06, 0x1e, 0x56, 0x01, 0xe8, 0x9d, 0x0f, 0x80, 0xbe, 0x62, 0x01, 0x01, - 0x75, 0x01, 0xc3, 0xc6, 0x86, 0x06, 0x01, 0x01, 0xe9, 0xfb, 0xfc, 0x56, 0x8c, 0xd8, 0x8e, 0xc0, - 0x8d, 0x7c, 0x08, 0x8d, 0xb6, 0xd0, 0x02, 0xb9, 0x05, 0x00, 0x8b, 0xd1, 0xf3, 0xa5, 0x8d, 0xbe, - 0xd0, 0x02, 0x33, 0xc0, 0x8b, 0xca, 0xf3, 0xab, 0x81, 0xa6, 0x06, 0x02, 0x7f, 0xdf, 0x5e, 0xe9, - 0xd4, 0xfc, 0x56, 0x8c, 0xd8, 0x8e, 0xc0, 0x8d, 0x7c, 0x08, 0x8d, 0xb6, 0x3c, 0x02, 0xb9, 0x0c, - 0x00, 0x8b, 0xd1, 0xf3, 0xa5, 0x8d, 0xbe, 0x3c, 0x02, 0x33, 0xc0, 0x8b, 0xca, 0xf3, 0xab, 0x5e, - 0xe9, 0xb3, 0xfc, 0x83, 0xc6, 0x08, 0xe8, 0x03, 0x00, 0xe9, 0xaa, 0xfc, 0x06, 0x8e, 0x46, 0x02, - 0x8b, 0x04, 0x89, 0x86, 0xda, 0x01, 0xe8, 0x77, 0xcb, 0x26, 0xa3, 0x26, 0x00, 0x8b, 0x44, 0x02, - 0x23, 0x86, 0xf8, 0x01, 0xe8, 0x69, 0xcb, 0x25, 0xff, 0x7f, 0x26, 0x8b, 0x0e, 0x24, 0x00, 0x81, - 0xe1, 0x00, 0x80, 0x0b, 0xc1, 0x26, 0xa3, 0x24, 0x00, 0xe8, 0x54, 0xcb, 0x89, 0x86, 0xdc, 0x01, - 0x07, 0xc3, 0xb8, 0x05, 0x00, 0x80, 0xbe, 0x07, 0x01, 0x01, 0x75, 0x03, 0xe9, 0x6a, 0xfc, 0xc6, - 0x86, 0x62, 0x01, 0x01, 0xe8, 0x68, 0xfe, 0xc6, 0x86, 0x62, 0x01, 0x00, 0xc6, 0x86, 0x06, 0x01, - 0x01, 0xe9, 0x52, 0xfc, 0xb8, 0x11, 0x00, 0xc6, 0x86, 0x62, 0x01, 0x00, 0xe9, 0x4a, 0xfc, 0xc3, - 0x8b, 0xd8, 0x26, 0x8b, 0x04, 0x50, 0x33, 0xc0, 0x50, 0x23, 0xc3, 0x8b, 0xc8, 0x26, 0x89, 0x04, - 0x26, 0x8b, 0x04, 0x23, 0xc3, 0x3b, 0xc1, 0x58, 0x75, 0x3c, 0x05, 0x55, 0x55, 0x73, 0xe9, 0xb8, - 0x01, 0x00, 0x50, 0x23, 0xc3, 0x8b, 0xc8, 0x26, 0x89, 0x04, 0x26, 0x8b, 0x04, 0x23, 0xc3, 0x3b, - 0xc1, 0x58, 0x75, 0x22, 0xd1, 0xc0, 0x73, 0xea, 0xf7, 0xd0, 0x50, 0x23, 0xc3, 0x8b, 0xc8, 0x26, - 0x89, 0x04, 0x26, 0x8b, 0x04, 0x23, 0xc3, 0x3b, 0xc1, 0x58, 0x75, 0x0a, 0xd1, 0xc0, 0x72, 0xea, - 0xf8, 0x58, 0x26, 0x89, 0x04, 0xc3, 0xf9, 0xeb, 0xf8, 0x8b, 0x44, 0x08, 0x25, 0xff, 0x7b, 0x89, - 0x86, 0x12, 0x01, 0x89, 0x86, 0x14, 0x01, 0x8e, 0x46, 0x02, 0x26, 0x8b, 0x1e, 0x28, 0x00, 0x81, - 0xe3, 0xff, 0xf4, 0xa9, 0x04, 0x00, 0x74, 0x04, 0x81, 0xcb, 0x00, 0x08, 0xa9, 0x02, 0x00, 0x74, - 0x04, 0x81, 0xcb, 0x00, 0x03, 0x8e, 0x46, 0x02, 0x26, 0x89, 0x1e, 0x28, 0x00, 0xe9, 0xb6, 0xfb, - 0x8b, 0x44, 0x08, 0x89, 0x86, 0x28, 0x02, 0x86, 0xc4, 0x89, 0x86, 0x62, 0x05, 0xf6, 0x86, 0x73, - 0x02, 0x01, 0x75, 0x05, 0xc6, 0x86, 0x74, 0x02, 0x01, 0xc6, 0x86, 0x73, 0x02, 0x00, 0xe9, 0x95, - 0xfb, 0x8b, 0x44, 0x08, 0x89, 0x86, 0x30, 0x01, 0xbe, 0x09, 0x46, 0xe8, 0x7c, 0xcd, 0xe9, 0x85, - 0xfb, 0x8b, 0x44, 0x08, 0x8e, 0x46, 0x02, 0x26, 0xa3, 0x2a, 0x00, 0xe9, 0x78, 0xfb, 0x80, 0x7e, - 0x06, 0x0e, 0x74, 0x06, 0x80, 0x7e, 0x06, 0x48, 0x75, 0x13, 0x80, 0x7e, 0x08, 0x00, 0x74, 0x06, - 0x80, 0x7e, 0x08, 0x16, 0x75, 0x07, 0x8d, 0x5c, 0x08, 0xe8, 0xe2, 0xe9, 0xc3, 0xb8, 0x00, 0x10, - 0xe9, 0x56, 0xfb, 0xb8, 0x04, 0x00, 0xf6, 0x86, 0x07, 0x01, 0x01, 0x74, 0x1e, 0x8e, 0x46, 0x02, - 0x26, 0xa1, 0x28, 0x00, 0x8b, 0x5c, 0x08, 0x81, 0xe3, 0xff, 0xf4, 0x25, 0x00, 0x0b, 0x0b, 0xd8, - 0x8e, 0x46, 0x02, 0x26, 0x89, 0x1e, 0x28, 0x00, 0xb8, 0x00, 0x20, 0xe9, 0x2b, 0xfb, 0xb8, 0x05, - 0x00, 0xf6, 0x86, 0x07, 0x01, 0x01, 0x75, 0x11, 0xfa, 0xe8, 0xe2, 0xce, 0xfa, 0xe8, 0x16, 0xfb, - 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x72, 0x00, 0x02, 0xe9, 0x0d, 0xfb, 0xe9, 0x07, 0xfb, 0x8b, - 0xd0, 0xb8, 0x01, 0x00, 0xe9, 0xa4, 0x01, 0xc3, 0x80, 0xbe, 0xad, 0x02, 0x01, 0x74, 0x0e, 0x80, - 0xbe, 0x07, 0x01, 0x01, 0x75, 0xf1, 0x80, 0xbe, 0x09, 0x01, 0x01, 0x74, 0xea, 0xc6, 0x86, 0x09, - 0x01, 0x01, 0xc6, 0x86, 0xad, 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x00, 0x00, 0x02, - 0x00, 0x74, 0x08, 0xbe, 0x27, 0x46, 0xe8, 0xc1, 0xcc, 0xeb, 0x03, 0x0d, 0x00, 0x01, 0x80, 0xbe, - 0xa5, 0x02, 0x01, 0x74, 0x0a, 0x80, 0xbe, 0xa7, 0x02, 0x01, 0x74, 0x03, 0x0d, 0x00, 0x04, 0x80, - 0xbe, 0xa5, 0x02, 0x01, 0x74, 0x0a, 0x80, 0xbe, 0xa6, 0x02, 0x01, 0x74, 0x03, 0x0d, 0x00, 0x02, - 0xf7, 0x86, 0xa1, 0x02, 0x01, 0x00, 0x74, 0x03, 0x0d, 0x00, 0x08, 0xa9, 0x00, 0x80, 0x74, 0x1d, - 0xc7, 0x86, 0x2e, 0x01, 0x02, 0x00, 0xf6, 0x86, 0x2c, 0x01, 0x01, 0x74, 0x1d, 0x53, 0xbb, 0x40, - 0x60, 0x8e, 0xc3, 0x26, 0x81, 0x0e, 0x72, 0x00, 0x00, 0x02, 0x5b, 0xeb, 0x0d, 0x8a, 0x56, 0x06, - 0xd0, 0xe2, 0xd0, 0xe2, 0xd0, 0xe2, 0x24, 0x0f, 0x0a, 0xc2, 0x89, 0x86, 0x34, 0x02, 0x8b, 0xd0, - 0xb8, 0x02, 0x00, 0xe9, 0x92, 0x00, 0x8b, 0x96, 0x1e, 0x01, 0x8b, 0x86, 0x12, 0x01, 0xa9, 0x00, - 0x02, 0x74, 0x06, 0xf7, 0xc2, 0x05, 0x80, 0x74, 0x0e, 0xc6, 0x86, 0x07, 0x01, 0x00, 0xc6, 0x86, - 0x16, 0x01, 0x00, 0x81, 0xca, 0x80, 0x00, 0x33, 0xc0, 0x89, 0x86, 0x1e, 0x01, 0x89, 0x96, 0x20, - 0x01, 0xc7, 0x86, 0x34, 0x02, 0x00, 0x00, 0xf7, 0xc2, 0x01, 0x00, 0x75, 0x22, 0x83, 0xbe, 0x2e, - 0x01, 0x03, 0x74, 0x1b, 0xc7, 0x86, 0x2e, 0x01, 0x03, 0x00, 0xf6, 0x86, 0x2c, 0x01, 0x01, 0x74, - 0x0e, 0x53, 0xbb, 0x40, 0x60, 0x8e, 0xc3, 0x26, 0x81, 0x0e, 0x72, 0x00, 0x00, 0x02, 0x5b, 0xb8, - 0x03, 0x00, 0xeb, 0x34, 0x3b, 0xc0, 0x74, 0x00, 0x8b, 0xd0, 0xb8, 0x04, 0x00, 0xeb, 0x29, 0xc3, - 0xc6, 0x86, 0xca, 0x01, 0x00, 0xc6, 0x86, 0xcb, 0x01, 0x00, 0x55, 0x33, 0xed, 0xbe, 0x18, 0x55, - 0xe8, 0xd7, 0xcb, 0x5d, 0xb8, 0x05, 0x00, 0xeb, 0x0f, 0xb8, 0x06, 0x00, 0xeb, 0x0a, 0xb8, 0x07, - 0x00, 0xeb, 0x05, 0xb8, 0x08, 0x00, 0xeb, 0x00, 0x8b, 0xb6, 0x60, 0x01, 0x3b, 0xb6, 0x5e, 0x01, - 0x75, 0x0a, 0xf7, 0x86, 0x58, 0x15, 0x00, 0x80, 0x74, 0x02, 0xeb, 0x5f, 0x8b, 0x8e, 0x5e, 0x01, - 0x41, 0x80, 0xe1, 0x07, 0x3b, 0xf1, 0x75, 0x20, 0x46, 0x83, 0xe6, 0x07, 0x89, 0xb6, 0x60, 0x01, - 0x51, 0x8b, 0xce, 0xd1, 0xe1, 0xd1, 0xe1, 0x8d, 0xb6, 0x3e, 0x01, 0x03, 0xf1, 0x8b, 0x0c, 0x83, - 0xf9, 0x05, 0x74, 0x03, 0x0d, 0x00, 0x01, 0x59, 0x83, 0xf8, 0x04, 0x75, 0x1a, 0x51, 0xb9, 0x08, - 0x00, 0x8d, 0xb6, 0x3e, 0x01, 0x39, 0x04, 0x74, 0x08, 0x83, 0xc6, 0x04, 0xe2, 0xf7, 0x59, 0xeb, - 0x06, 0x89, 0x54, 0x02, 0x59, 0xeb, 0x13, 0x89, 0x8e, 0x5e, 0x01, 0xd1, 0xe1, 0xd1, 0xe1, 0x8d, - 0xb6, 0x3e, 0x01, 0x03, 0xf1, 0x89, 0x04, 0x89, 0x54, 0x02, 0xc3, 0x8d, 0xb6, 0x58, 0x15, 0x89, - 0x54, 0x06, 0xc7, 0x44, 0x04, 0x08, 0x00, 0x3c, 0x05, 0x75, 0x05, 0xc7, 0x44, 0x04, 0x06, 0x00, - 0x25, 0xff, 0x7f, 0x89, 0x04, 0xb8, 0x40, 0x60, 0x8e, 0xc0, 0x26, 0xc7, 0x06, 0x70, 0x00, 0x00, - 0x20, 0xc3, 0x8b, 0x86, 0x14, 0x01, 0x89, 0x86, 0x12, 0x01, 0xc6, 0x46, 0x09, 0x1e, 0xc6, 0x46, - 0x08, 0x1e, 0xc7, 0x86, 0x28, 0x01, 0x00, 0x00, 0xc7, 0x86, 0x2a, 0x01, 0x00, 0x00, 0x8c, 0xd8, - 0x8e, 0xc0, 0x33, 0xc0, 0x8d, 0xbe, 0xe0, 0x01, 0xb9, 0x2b, 0x00, 0xf3, 0xab, 0xc7, 0x86, 0x26, - 0x02, 0xff, 0xff, 0xb0, 0x02, 0xe8, 0x5a, 0xce, 0xf7, 0x86, 0xf6, 0x00, 0x80, 0x00, 0x74, 0x0c, - 0xb8, 0x05, 0x00, 0xe8, 0x13, 0x00, 0xc6, 0x46, 0x07, 0x42, 0xeb, 0x0c, 0xb8, 0x02, 0x00, 0xe8, - 0x07, 0x00, 0xc6, 0x46, 0x07, 0x02, 0xeb, 0x00, 0xc3, 0x50, 0xb0, 0x00, 0x88, 0x86, 0xa5, 0x02, - 0x88, 0x86, 0xa6, 0x02, 0x88, 0x86, 0xa7, 0x02, 0x88, 0x86, 0xa8, 0x02, 0x88, 0x86, 0xaa, 0x02, - 0x88, 0x86, 0xa9, 0x02, 0x58, 0x9c, 0xfa, 0x83, 0xf8, 0x02, 0x74, 0x13, 0x83, 0xf8, 0x05, 0x74, - 0x0c, 0xc7, 0x46, 0x12, 0xf8, 0x1c, 0xc7, 0x46, 0x14, 0xf8, 0x1c, 0xeb, 0x42, 0xeb, 0x21, 0xc6, - 0x86, 0xa5, 0x02, 0x01, 0xc6, 0x86, 0xa9, 0x02, 0x01, 0xc6, 0x86, 0xaa, 0x02, 0x00, 0xc7, 0x46, - 0x12, 0xc9, 0x31, 0xc7, 0x46, 0x14, 0xfd, 0x2e, 0xc7, 0x86, 0xba, 0x01, 0x2c, 0x00, 0xeb, 0x1f, - 0xc6, 0x86, 0xa7, 0x02, 0x01, 0xc6, 0x86, 0xa9, 0x02, 0x00, 0xc6, 0x86, 0xaa, 0x02, 0x01, 0xc7, - 0x46, 0x12, 0xcd, 0x31, 0xc7, 0x46, 0x14, 0x01, 0x2f, 0xc7, 0x86, 0xba, 0x01, 0x2c, 0x00, 0x0e, - 0xe8, 0x02, 0x00, 0xeb, 0x01, 0xcf, 0xc3, 0x8c, 0x00, 0x3a, 0x46, 0xbc, 0x02, 0x96, 0x00, 0x70, - 0x46, 0x14, 0x00, 0x96, 0x00, 0x84, 0x46, 0x08, 0x07, 0x96, 0x00, 0xbe, 0x46, 0x6e, 0x00, 0x78, - 0x00, 0x2e, 0x49, 0x00, 0x00, 0x6e, 0x00, 0x78, 0x47, 0xf4, 0x01, 0x6e, 0x00, 0xa8, 0x47, 0x08, - 0x07, 0x6e, 0x00, 0xd6, 0x4a, 0x05, 0x00, 0xaa, 0x00, 0xdc, 0x47, 0xfa, 0x00, 0x8c, 0x00, 0x52, - 0x48, 0x02, 0x00, 0x8c, 0x00, 0x42, 0x47, 0x3c, 0x00, 0x78, 0x00, 0xbe, 0x48, 0x04, 0x01, 0x96, - 0x00, 0xea, 0x48, 0x64, 0x00, 0x96, 0x00, 0x0e, 0x49, 0xdc, 0x05, 0xbe, 0x00, 0x34, 0x4a, 0xf4, - 0x01, 0xa0, 0x00, 0x58, 0x4b, 0xf4, 0x01, 0xbe, 0x00, 0x5e, 0x4a, 0xf4, 0x01, 0x82, 0x00, 0x7e, - 0x4d, 0x19, 0x00, 0x6e, 0x00, 0x3f, 0x4b, 0x14, 0x00, 0x78, 0x00, 0x72, 0x4a, 0xc4, 0x09, 0x6e, - 0x00, 0x86, 0x4a, 0x02, 0x00, 0xd2, 0x00, 0x06, 0x4e, 0x2c, 0x01, 0x78, 0x00, 0x90, 0x4c, 0xf0, - 0x00, 0x6e, 0x00, 0xaf, 0x4b, 0x04, 0x00, 0xa0, 0x00, 0xc6, 0x4b, 0xbc, 0x02, 0x6e, 0x00, 0xd8, - 0x4b, 0x08, 0x07, 0x6e, 0x00, 0xe6, 0x4b, 0xe8, 0x03, 0x6e, 0x00, 0xf8, 0x4b, 0x14, 0x00, 0x96, - 0x00, 0x04, 0x4c, 0x64, 0x00, 0xa0, 0x00, 0x9e, 0x4c, 0xf4, 0x01, 0xc8, 0x00, 0x16, 0x48, 0x02, - 0x00, 0x6e, 0x00, 0x2c, 0x4c, 0x04, 0x00, 0x8c, 0x00, 0x6e, 0x4c, 0x14, 0x00, 0xb4, 0x00, 0x8a, - 0x4e, 0x64, 0x00, 0xa0, 0x00, 0xa3, 0x4d, 0x05, 0x00, 0xc8, 0x00, 0xb8, 0x4d, 0x03, 0x00, 0xd2, - 0x00, 0x0a, 0x4e, 0xf4, 0x01, 0xd2, 0x00, 0x1c, 0x4e, 0x4c, 0x04, 0xdc, 0x00, 0x36, 0x4e, 0xfa, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x90, 0x80, 0xbe, - 0x54, 0x02, 0x01, 0x75, 0x28, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x22, 0xf6, 0x86, 0x65, 0x02, 0x01, - 0x74, 0x1c, 0xe8, 0x59, 0xe2, 0xbe, 0x43, 0x45, 0xe8, 0x3f, 0xc9, 0x8c, 0xd8, 0x8e, 0xc0, 0x33, - 0xc0, 0x8d, 0xbe, 0xee, 0x01, 0xab, 0xab, 0xab, 0xc6, 0x86, 0x65, 0x02, 0x00, 0xc3, 0xe8, 0xbf, - 0xe4, 0xeb, 0xdf, 0x90, 0x8a, 0x46, 0x08, 0x3c, 0x0a, 0x75, 0x0b, 0xf6, 0x86, 0x5e, 0x02, 0x01, - 0x74, 0x04, 0xc6, 0x46, 0x09, 0x04, 0xc3, 0x90, 0x80, 0xbe, 0xa6, 0x02, 0x01, 0x74, 0x32, 0x80, - 0x7e, 0x08, 0x06, 0x75, 0x2c, 0x80, 0x7e, 0x06, 0x0c, 0x75, 0x0f, 0xf6, 0x86, 0x5e, 0x02, 0x01, - 0x74, 0x08, 0xb8, 0x07, 0x00, 0xe8, 0x55, 0xd6, 0xeb, 0x17, 0xf6, 0x86, 0x5e, 0x02, 0x01, 0x74, - 0x10, 0xf6, 0x86, 0x59, 0x02, 0x01, 0x75, 0x09, 0xc6, 0x86, 0x59, 0x02, 0x01, 0xc6, 0x46, 0x09, - 0x08, 0xc3, 0x8a, 0x4e, 0x06, 0x8a, 0x56, 0x08, 0x80, 0xf9, 0x06, 0x74, 0x71, 0x80, 0xf9, 0x08, - 0x74, 0x05, 0x80, 0xf9, 0x0a, 0x75, 0x0a, 0x80, 0xfa, 0x0c, 0x74, 0x62, 0x80, 0xfa, 0x04, 0x74, - 0x5d, 0x80, 0xfa, 0x0c, 0x74, 0x05, 0x80, 0xfa, 0x04, 0x75, 0x52, 0xf6, 0x86, 0x63, 0x02, 0x01, - 0x74, 0x4b, 0xe8, 0xf7, 0x02, 0xf6, 0x86, 0x61, 0x02, 0x01, 0x74, 0x0b, 0x81, 0x8e, 0x06, 0x02, - 0x00, 0x80, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xc6, 0x46, 0x09, 0x06, 0x81, 0x8e, 0x06, 0x02, 0x00, - 0x50, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xc6, 0x86, 0x6a, 0x02, 0x01, 0xc6, 0x86, 0x69, 0x02, 0x01, - 0xc6, 0x86, 0x6b, 0x02, 0x01, 0xe8, 0xb2, 0xca, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x0c, 0x00, - 0xfe, 0xbe, 0x4f, 0x45, 0xe8, 0x63, 0xc8, 0xbe, 0x79, 0x45, 0xe8, 0x5d, 0xc8, 0xc3, 0xb8, 0x07, - 0x00, 0xe8, 0xb9, 0xd5, 0xeb, 0xf7, 0x80, 0xbe, 0xa5, 0x02, 0x01, 0x74, 0x02, 0xeb, 0x2b, 0x80, - 0x7e, 0x06, 0x10, 0x75, 0x06, 0xc6, 0x46, 0x07, 0x12, 0xeb, 0x1f, 0x80, 0x7e, 0x08, 0x08, 0x75, - 0x19, 0xc6, 0x86, 0x69, 0x02, 0x01, 0xc6, 0x86, 0x6b, 0x02, 0x01, 0xe8, 0x6c, 0xca, 0xbe, 0xb5, - 0x45, 0xe8, 0x26, 0xc8, 0xbe, 0xbb, 0x45, 0xe8, 0x20, 0xc8, 0xc3, 0x90, 0xf6, 0x86, 0x5f, 0x02, - 0x01, 0x74, 0x28, 0xc6, 0x86, 0x5f, 0x02, 0x00, 0x80, 0x7e, 0x08, 0x0a, 0x75, 0x06, 0xc6, 0x46, - 0x09, 0x04, 0xeb, 0x17, 0x80, 0x7e, 0x08, 0x06, 0x75, 0x11, 0xc6, 0x86, 0x69, 0x02, 0x01, 0xe8, - 0x38, 0xca, 0xbe, 0x79, 0x45, 0xe8, 0xf2, 0xc7, 0xe8, 0x60, 0xe0, 0xc3, 0x8a, 0x46, 0x06, 0x3c, - 0x04, 0x75, 0x1e, 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x02, 0x75, 0x0e, 0xc6, 0x46, 0x07, 0x06, 0xc6, - 0x46, 0x06, 0x06, 0xc6, 0x46, 0x09, 0x04, 0xeb, 0x16, 0xb8, 0x0d, 0x00, 0xe8, 0x2e, 0xd5, 0xeb, - 0x0e, 0x3c, 0x08, 0x72, 0x0a, 0x3c, 0x0c, 0x77, 0x06, 0xb8, 0x05, 0x00, 0xe8, 0x1e, 0xd5, 0xc3, - 0x80, 0x7e, 0x08, 0x00, 0x75, 0x33, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x75, 0x2c, 0xf6, 0x86, 0x5e, - 0x02, 0x01, 0x74, 0x25, 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x14, 0x00, 0x03, 0x00, 0x74, 0x11, - 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x14, 0x00, 0x03, 0xbe, 0x73, 0x45, 0xe8, 0x8b, 0xc7, 0xeb, - 0x08, 0xc6, 0x46, 0x09, 0x04, 0xff, 0x86, 0x4a, 0x02, 0xc3, 0x80, 0x7e, 0x08, 0x18, 0x75, 0x0e, - 0xbe, 0xf7, 0x45, 0xe8, 0x74, 0xc7, 0xe8, 0xc3, 0x01, 0xe8, 0xdf, 0xdf, 0xeb, 0x00, 0xc3, 0xf6, - 0x86, 0x7c, 0x02, 0x01, 0x75, 0x1e, 0x80, 0xbe, 0x68, 0x02, 0x01, 0x75, 0x17, 0xc6, 0x46, 0x07, - 0x12, 0xc6, 0x46, 0x09, 0x1e, 0x83, 0x8e, 0x06, 0x02, 0x08, 0x83, 0x8e, 0x1e, 0x01, 0x02, 0xc6, - 0x86, 0x85, 0x02, 0x01, 0xc3, 0x90, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x35, 0x80, 0xbe, 0x5b, 0x02, - 0x01, 0x75, 0x58, 0x80, 0xbe, 0x54, 0x02, 0x01, 0x74, 0x1f, 0xe8, 0x6c, 0xe0, 0x80, 0x7e, 0x06, - 0x0a, 0x75, 0x16, 0xc6, 0x86, 0x63, 0x02, 0x01, 0xc6, 0x46, 0x07, 0x0c, 0xf7, 0x86, 0xf6, 0x00, - 0x00, 0x40, 0x75, 0x05, 0xc6, 0x86, 0x5e, 0x02, 0x01, 0xc3, 0xbe, 0x79, 0x45, 0xe8, 0x0a, 0xc7, - 0xc3, 0x8a, 0x46, 0x08, 0x3c, 0x04, 0x75, 0x0e, 0xbe, 0x79, 0x45, 0xe8, 0xfc, 0xc6, 0xff, 0x86, - 0xb2, 0x02, 0xe8, 0x9e, 0xdf, 0xc3, 0x3c, 0x06, 0x75, 0xdf, 0xf6, 0x86, 0x5f, 0x02, 0x01, 0x75, - 0xd8, 0xbe, 0x79, 0x45, 0xe8, 0xe3, 0xc6, 0xe8, 0x51, 0xdf, 0xc3, 0xc6, 0x86, 0x66, 0x02, 0x01, - 0xc3, 0x90, 0x80, 0xbe, 0xa6, 0x02, 0x01, 0x74, 0x22, 0x80, 0x7e, 0x06, 0x0c, 0x75, 0x1b, 0xff, - 0x86, 0xb8, 0x02, 0x83, 0xbe, 0xb8, 0x02, 0x04, 0x77, 0x0a, 0xbe, 0x85, 0x45, 0xe8, 0xba, 0xc6, - 0xe8, 0x9b, 0xe0, 0xc3, 0xb8, 0x09, 0x00, 0xe8, 0x13, 0xd4, 0xc3, 0xeb, 0xfd, 0x90, 0x80, 0x7e, - 0x08, 0x02, 0x75, 0x1d, 0x80, 0xbe, 0x5e, 0x02, 0x01, 0x74, 0x08, 0xb8, 0x05, 0x00, 0xe8, 0xfc, - 0xd3, 0xeb, 0x0e, 0xff, 0x86, 0x4a, 0x02, 0xc6, 0x46, 0x09, 0x04, 0xb8, 0x00, 0x01, 0xe8, 0x50, - 0xe2, 0xc3, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x16, 0x80, 0xbe, 0x54, 0x02, 0x01, 0x74, 0x07, 0x80, - 0xbe, 0x5e, 0x02, 0x00, 0x74, 0x08, 0xff, 0x86, 0x4a, 0x02, 0xc6, 0x46, 0x09, 0x04, 0xc3, 0xe9, - 0xb8, 0x00, 0xf6, 0x86, 0xaa, 0x02, 0x01, 0x75, 0x07, 0xf6, 0x86, 0x5e, 0x02, 0x01, 0x74, 0xef, - 0xf7, 0x86, 0xf6, 0x00, 0x00, 0x80, 0x74, 0x06, 0xbe, 0x5b, 0x45, 0xe8, 0x4c, 0xc6, 0x8d, 0xbe, - 0xd0, 0x02, 0x8c, 0xd9, 0x8e, 0xc1, 0xb9, 0x05, 0x00, 0x33, 0xc0, 0xf3, 0xaf, 0x74, 0xd0, 0x80, - 0xbe, 0xa5, 0x02, 0x01, 0x74, 0x45, 0x80, 0xbe, 0xa6, 0x02, 0x01, 0x74, 0x5f, 0x80, 0xbe, 0xa7, - 0x02, 0x01, 0x74, 0x09, 0x80, 0xbe, 0xa8, 0x02, 0x01, 0x74, 0x51, 0xeb, 0x6d, 0xc7, 0x86, 0xb6, - 0x02, 0x04, 0x00, 0x81, 0x8e, 0x06, 0x02, 0x00, 0x20, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xf6, 0x86, - 0x6e, 0x02, 0x01, 0x74, 0x14, 0x80, 0x7e, 0x08, 0x16, 0x75, 0x0e, 0xc6, 0x86, 0x56, 0x02, 0x00, - 0xe8, 0xf5, 0xdf, 0xc7, 0x86, 0x2a, 0x02, 0x03, 0x00, 0xeb, 0x3f, 0xc7, 0x86, 0xb6, 0x02, 0x04, - 0x00, 0xc6, 0x86, 0x56, 0x02, 0x00, 0xe8, 0xdf, 0xdf, 0xc7, 0x86, 0x2a, 0x02, 0x03, 0x00, 0x81, - 0x8e, 0x06, 0x02, 0x00, 0x20, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xeb, 0x1e, 0xc7, 0x86, 0xb6, 0x02, - 0x04, 0x00, 0x81, 0x8e, 0x06, 0x02, 0x00, 0x20, 0xc6, 0x86, 0x85, 0x02, 0x01, 0xf7, 0x86, 0xf6, - 0x00, 0x00, 0x80, 0x75, 0x05, 0xc6, 0x86, 0x56, 0x02, 0x00, 0xc3, 0x90, 0xb8, 0x00, 0x02, 0xc7, - 0x86, 0x32, 0x02, 0x06, 0x00, 0x80, 0xbe, 0x61, 0x02, 0x01, 0x74, 0x37, 0xf6, 0x86, 0xa7, 0x02, - 0x01, 0x75, 0x07, 0xf6, 0x86, 0xa8, 0x02, 0x01, 0x74, 0x05, 0xb8, 0x00, 0x05, 0xeb, 0x24, 0xb8, - 0x00, 0x04, 0xc7, 0x86, 0x32, 0x02, 0x04, 0x00, 0x8a, 0x4e, 0x08, 0x80, 0xf9, 0x0c, 0x74, 0x13, - 0xb8, 0x00, 0x04, 0x80, 0xbe, 0x5a, 0x02, 0x01, 0x74, 0x09, 0xb8, 0x00, 0x03, 0xc7, 0x86, 0x32, - 0x02, 0x07, 0x00, 0x89, 0x86, 0x00, 0x03, 0xc3, 0x80, 0x7e, 0x08, 0x08, 0x74, 0x23, 0x8a, 0x46, - 0x06, 0x3c, 0x04, 0x72, 0x1c, 0x3c, 0x48, 0x74, 0x04, 0x3c, 0x0e, 0x77, 0x14, 0xf6, 0x86, 0x5d, - 0x02, 0x01, 0x74, 0x0d, 0xf6, 0x86, 0x5c, 0x02, 0x01, 0x74, 0x06, 0xb8, 0x0c, 0x00, 0xe8, 0x9c, - 0xd2, 0xc3, 0xc6, 0x86, 0x5d, 0x02, 0x01, 0x8e, 0x46, 0x02, 0x26, 0x81, 0x26, 0x04, 0x00, 0xff, - 0xf7, 0xe8, 0xd4, 0x02, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x02, 0x74, 0x06, 0x80, 0x7e, 0x08, 0x08, - 0x75, 0x06, 0xb8, 0x01, 0x00, 0xe8, 0x75, 0xd2, 0xc3, 0x90, 0x51, 0x52, 0x56, 0x33, 0xd2, 0xc6, - 0x86, 0x69, 0x02, 0x00, 0xe8, 0x43, 0xc7, 0x8d, 0xb6, 0xa6, 0x01, 0x8d, 0xbe, 0xac, 0x01, 0x8c, - 0xd8, 0x8e, 0xc0, 0xa5, 0xa5, 0xa5, 0xc6, 0x86, 0x83, 0x02, 0x00, 0x32, 0xc0, 0xe8, 0x7e, 0xe3, - 0xc6, 0x86, 0x68, 0x01, 0x02, 0xc7, 0x86, 0x66, 0x01, 0x20, 0x03, 0xbe, 0x6d, 0x45, 0xe8, 0xd9, - 0xc4, 0x8b, 0xb6, 0x64, 0x01, 0xb9, 0xe8, 0x03, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x1c, 0x00, - 0x00, 0x00, 0xe8, 0x48, 0xde, 0x5e, 0x5a, 0x59, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x02, 0x74, 0x0c, - 0x80, 0x7e, 0x06, 0x44, 0x74, 0x06, 0x80, 0x7e, 0x08, 0x08, 0x75, 0x56, 0xfe, 0x8e, 0x68, 0x01, - 0x80, 0x8e, 0x68, 0x01, 0x00, 0x74, 0x45, 0xbe, 0x6d, 0x45, 0xe8, 0x9d, 0xc4, 0xe8, 0x06, 0xbf, - 0x8e, 0x46, 0x02, 0x26, 0x81, 0x0e, 0x0c, 0x00, 0x00, 0x01, 0x90, 0x8e, 0x46, 0x02, 0x26, 0x81, - 0x26, 0x0c, 0x00, 0xff, 0xfe, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x1c, 0x00, 0x00, 0x00, 0x8b, - 0xb6, 0x64, 0x01, 0xb9, 0xe8, 0x03, 0xc6, 0x86, 0x86, 0x02, 0x01, 0x83, 0xbe, 0x66, 0x01, 0x01, - 0x75, 0x05, 0xe8, 0xcf, 0xdd, 0xeb, 0x0b, 0xe8, 0xe3, 0xdd, 0xeb, 0x06, 0xb8, 0x01, 0x00, 0xe8, - 0xbb, 0xd1, 0xc3, 0xf7, 0x86, 0xf6, 0x00, 0x80, 0x00, 0x74, 0x10, 0x80, 0x7e, 0x06, 0x14, 0x75, - 0x0a, 0xb8, 0x05, 0x00, 0xe8, 0x72, 0xf9, 0xc6, 0x46, 0x07, 0x42, 0xc3, 0x80, 0xbe, 0xa6, 0x02, - 0x01, 0x74, 0x4e, 0xc6, 0x86, 0x6c, 0x02, 0x00, 0x80, 0x7e, 0x08, 0x08, 0x75, 0x2c, 0xf6, 0x86, - 0x6d, 0x02, 0x01, 0x74, 0x25, 0xe9, 0xd4, 0xcf, 0xbe, 0x7f, 0x45, 0xe8, 0x1c, 0xc4, 0x8e, 0x46, - 0x02, 0xf6, 0x06, 0x1e, 0x56, 0x01, 0x75, 0x08, 0x26, 0x83, 0x26, 0x02, 0x00, 0xfd, 0xeb, 0x08, - 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xe8, 0xd7, 0x07, 0xeb, 0x16, 0x80, 0x7e, 0x06, 0x10, 0x75, 0x10, - 0xc6, 0x46, 0x09, 0x00, 0xc6, 0x86, 0x54, 0x02, 0x00, 0xc6, 0x86, 0x68, 0x02, 0x00, 0xeb, 0xc8, - 0xc3, 0xeb, 0xfd, 0x80, 0x7e, 0x06, 0x42, 0x75, 0x0f, 0xc7, 0x86, 0xce, 0x02, 0x05, 0x00, 0xbe, - 0xfd, 0x45, 0xe8, 0xd5, 0xc3, 0xe8, 0xea, 0xdf, 0xc3, 0x90, 0x80, 0x7e, 0x08, 0x18, 0x74, 0x06, - 0x80, 0x7e, 0x08, 0x1a, 0x75, 0x04, 0xc6, 0x46, 0x09, 0x1c, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x46, - 0x75, 0x06, 0xb8, 0x05, 0x00, 0xe8, 0x15, 0xd1, 0xc3, 0x90, 0x80, 0x7e, 0x08, 0x1c, 0x75, 0x0a, - 0x80, 0x7e, 0x06, 0x48, 0x75, 0x04, 0xc6, 0x46, 0x07, 0x44, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x42, - 0x75, 0x04, 0xc6, 0x46, 0x07, 0x44, 0xc3, 0x90, 0xf6, 0x86, 0x72, 0x02, 0x01, 0x74, 0x20, 0xf6, - 0x46, 0x06, 0x46, 0x75, 0x11, 0xc6, 0x86, 0x6b, 0x02, 0x01, 0xc6, 0x86, 0x76, 0x02, 0x01, 0xe8, - 0xb8, 0xc5, 0xff, 0x86, 0xcc, 0x02, 0xe8, 0xb0, 0xdc, 0xbe, 0xeb, 0x45, 0xe8, 0x6b, 0xc3, 0xc3, - 0x80, 0x7e, 0x06, 0x42, 0x75, 0x3b, 0xf6, 0x86, 0x77, 0x02, 0x01, 0x75, 0x34, 0x83, 0xbe, 0xce, - 0x02, 0x00, 0x74, 0x0f, 0xff, 0x8e, 0xce, 0x02, 0xbe, 0xfd, 0x45, 0xe8, 0x4c, 0xc3, 0xe8, 0x61, - 0xdf, 0xeb, 0x1e, 0xf7, 0x86, 0xf4, 0x00, 0x00, 0x10, 0x74, 0x10, 0xb8, 0x02, 0x00, 0xe8, 0x68, - 0xf8, 0xc6, 0x46, 0x09, 0x1e, 0xc6, 0x46, 0x07, 0x02, 0xeb, 0x06, 0xb8, 0x06, 0x00, 0xe8, 0x8c, - 0xd0, 0xc3, 0x80, 0x7e, 0x06, 0x46, 0x75, 0x1a, 0xc6, 0x86, 0x6b, 0x02, 0x01, 0xc6, 0x86, 0x76, - 0x02, 0x01, 0xe8, 0x55, 0xc5, 0xff, 0x86, 0xcc, 0x02, 0xbe, 0x03, 0x46, 0xe8, 0x0b, 0xc3, 0xe8, - 0x62, 0xdf, 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x44, 0x75, 0x06, 0xb8, 0x05, 0x00, 0xe8, 0x5d, 0xd0, - 0xc3, 0x90, 0x80, 0x7e, 0x06, 0x46, 0x75, 0x08, 0xb8, 0x06, 0x00, 0xe8, 0x4f, 0xd0, 0xeb, 0x17, - 0x80, 0x7e, 0x08, 0x16, 0x75, 0x11, 0xc7, 0x86, 0x2a, 0x02, 0x04, 0x00, 0xf6, 0x86, 0x6e, 0x02, - 0x01, 0x74, 0x04, 0xc6, 0x46, 0x09, 0x18, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0x8b, 0x16, 0x02, 0x00, - 0xf7, 0xc2, 0x02, 0x00, 0x74, 0x14, 0x8b, 0xc2, 0x83, 0xe0, 0xfd, 0x8e, 0x46, 0x02, 0x26, 0xa3, - 0x02, 0x00, 0x8e, 0x46, 0x02, 0x26, 0x89, 0x16, 0x02, 0x00, 0xc3, 0x90, 0x8e, 0x46, 0x02, 0x26, - 0xf7, 0x06, 0x14, 0x00, 0x03, 0x00, 0x74, 0x10, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x26, 0x14, 0x00, - 0x03, 0xc6, 0x86, 0x55, 0x02, 0x01, 0xeb, 0x00, 0xf6, 0x86, 0x55, 0x02, 0x01, 0x75, 0x14, 0x80, - 0x7e, 0x08, 0x00, 0x75, 0x0e, 0xc6, 0x46, 0x09, 0x02, 0xff, 0x86, 0x40, 0x02, 0x81, 0x8e, 0xda, - 0x02, 0x00, 0x02, 0xc6, 0x86, 0x55, 0x02, 0x00, 0xc3, 0x90, 0xf7, 0x86, 0xf4, 0x00, 0x00, 0x10, - 0x75, 0x15, 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, 0x14, 0x00, 0x03, 0x00, 0x74, 0x09, 0x8e, 0x46, - 0x02, 0x26, 0x83, 0x26, 0x14, 0x00, 0x03, 0xc3, 0x80, 0xbe, 0xab, 0x02, 0x01, 0x75, 0x32, 0x8e, - 0x46, 0x02, 0x26, 0xf7, 0x06, 0x14, 0x00, 0x08, 0x00, 0x74, 0x21, 0xf6, 0x86, 0x5d, 0x02, 0x01, - 0x74, 0x1f, 0xf6, 0x86, 0x5c, 0x02, 0x01, 0x75, 0x18, 0xc7, 0x86, 0x2a, 0x02, 0x0a, 0x00, 0xbe, - 0x97, 0x45, 0xe8, 0x25, 0xc2, 0xc6, 0x86, 0x5c, 0x02, 0x01, 0xeb, 0x05, 0xc6, 0x86, 0x5c, 0x02, - 0x00, 0xc3, 0xbe, 0xa9, 0x45, 0xe8, 0x12, 0xc2, 0x33, 0xc0, 0x87, 0x86, 0xc2, 0x02, 0x0b, 0xc0, - 0x75, 0x14, 0x80, 0xbe, 0x61, 0x02, 0x00, 0x74, 0x0d, 0xc6, 0x86, 0x61, 0x02, 0x00, 0x80, 0xa6, - 0x07, 0x02, 0x7f, 0xe8, 0x46, 0xfc, 0xc3, 0x80, 0x7e, 0x06, 0x12, 0x75, 0x0d, 0xc6, 0x86, 0x08, - 0x01, 0x01, 0xc6, 0x86, 0x09, 0x01, 0x00, 0xe8, 0xb8, 0xf6, 0xc3, 0x90, 0xf6, 0x86, 0x6e, 0x01, - 0x01, 0x74, 0x15, 0x80, 0xbe, 0x70, 0x01, 0x03, 0x73, 0x07, 0xc6, 0x86, 0x6c, 0x01, 0x01, 0xeb, - 0x23, 0xc6, 0x86, 0x6e, 0x01, 0x00, 0xeb, 0x1c, 0xf6, 0x86, 0x6f, 0x01, 0x01, 0x74, 0x15, 0x80, - 0xbe, 0x71, 0x01, 0x03, 0x73, 0x07, 0xc6, 0x86, 0x6d, 0x01, 0x01, 0xeb, 0x07, 0xc6, 0x86, 0x6f, - 0x01, 0x00, 0xeb, 0x00, 0xc3, 0xf7, 0x86, 0x58, 0x15, 0x00, 0x80, 0x75, 0x07, 0x83, 0xbe, 0x58, - 0x15, 0x05, 0x74, 0x05, 0xc6, 0x86, 0xca, 0x01, 0x01, 0xc3, 0xe8, 0xf6, 0xcf, 0xc3, 0xf7, 0x86, - 0xf6, 0x00, 0x08, 0x00, 0x74, 0x09, 0xe8, 0xb0, 0xf5, 0xbe, 0x21, 0x46, 0xe8, 0x7b, 0xc1, 0xc3, - 0xf7, 0x86, 0xf6, 0x00, 0x08, 0x00, 0x74, 0x11, 0x81, 0x8e, 0x06, 0x02, 0x00, 0x04, 0xc6, 0x86, - 0x85, 0x02, 0x01, 0xb8, 0x10, 0x00, 0xe8, 0xc4, 0xce, 0xc3, 0x8e, 0x46, 0x02, 0x26, 0xf7, 0x06, - 0x00, 0x00, 0x02, 0x00, 0x74, 0x41, 0xbb, 0x00, 0x03, 0x8b, 0x47, 0x14, 0x83, 0xf8, 0x00, 0x74, - 0x36, 0x3b, 0x86, 0x2a, 0x01, 0x74, 0x0c, 0x89, 0x86, 0x2a, 0x01, 0xc7, 0x86, 0x28, 0x01, 0x00, - 0x00, 0xeb, 0x24, 0xff, 0x86, 0x28, 0x01, 0x83, 0xbe, 0x28, 0x01, 0x02, 0x72, 0x19, 0x83, 0xbe, - 0x28, 0x01, 0x18, 0x73, 0x0c, 0x80, 0x7e, 0x08, 0x00, 0x74, 0x0c, 0x80, 0x7e, 0x08, 0x16, 0x74, - 0x06, 0xb8, 0x10, 0x00, 0xe8, 0x76, 0xce, 0xbe, 0x27, 0x46, 0xe8, 0x0d, 0xc1, 0xc3, 0x8b, 0x86, - 0x30, 0x01, 0x88, 0xa6, 0x2c, 0x01, 0x86, 0x86, 0x2d, 0x01, 0x32, 0x86, 0x2d, 0x01, 0x74, 0x0f, - 0xf6, 0x46, 0x06, 0x0e, 0x74, 0x06, 0xf6, 0x46, 0x06, 0x48, 0x75, 0x03, 0xe8, 0xfa, 0xbb, 0xc3, - 0xf6, 0x86, 0x90, 0x02, 0x01, 0x74, 0x07, 0xa8, 0x24, 0x74, 0x03, 0xe8, 0x8a, 0xcf, 0xf6, 0x86, - 0xa9, 0x02, 0x01, 0x74, 0x09, 0x80, 0xbe, 0x5e, 0x02, 0x01, 0x75, 0x58, 0xeb, 0x09, 0xf6, 0x86, - 0x6e, 0x02, 0x01, 0x75, 0x10, 0xeb, 0x52, 0x80, 0x7e, 0x06, 0x0e, 0x74, 0x02, 0xeb, 0x45, 0x80, - 0x7e, 0x08, 0x00, 0x75, 0x3f, 0xa8, 0x01, 0x74, 0x05, 0x83, 0x8e, 0xda, 0x02, 0x10, 0xa8, 0x04, - 0x74, 0x05, 0x83, 0x8e, 0xda, 0x02, 0x04, 0xa8, 0x08, 0x74, 0x05, 0x83, 0x8e, 0xda, 0x02, 0x40, - 0xa8, 0x20, 0x74, 0x10, 0x81, 0x8e, 0xda, 0x02, 0x00, 0x01, 0xf6, 0x86, 0x54, 0x02, 0x01, 0x75, - 0x03, 0xe8, 0x8d, 0xc4, 0xa8, 0x40, 0x74, 0x05, 0x83, 0x8e, 0xda, 0x02, 0x01, 0xa8, 0x80, 0x74, - 0x03, 0xe8, 0x52, 0x00, 0xa9, 0x00, 0x01, 0x75, 0x01, 0xc3, 0x50, 0x80, 0x7e, 0x08, 0x0a, 0x75, - 0x06, 0xc6, 0x46, 0x09, 0x04, 0xeb, 0x1b, 0x80, 0x7e, 0x08, 0x00, 0x75, 0x23, 0xc6, 0x46, 0x09, - 0x02, 0xff, 0x86, 0x40, 0x02, 0xf6, 0x86, 0x5e, 0x02, 0x01, 0x74, 0x06, 0x81, 0x8e, 0xda, 0x02, - 0x00, 0x02, 0xc6, 0x86, 0x69, 0x02, 0x01, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x0c, 0x00, 0x10, - 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, 0x08, 0x00, 0x00, 0x00, 0x8e, 0x46, 0x02, 0x26, 0xc7, 0x06, - 0x08, 0x00, 0x00, 0x01, 0x58, 0xc3, 0x83, 0x8e, 0xda, 0x02, 0x20, 0x83, 0x7e, 0x06, 0x08, 0x75, - 0x13, 0x8b, 0x8e, 0xc4, 0x02, 0x41, 0x89, 0x8e, 0xc4, 0x02, 0x80, 0xf9, 0x02, 0x75, 0x05, 0x50, - 0xe8, 0x71, 0xd9, 0x58, 0xc3, 0x50, 0x53, 0x51, 0x8a, 0x4e, 0x06, 0x80, 0xf9, 0x0e, 0x74, 0x1e, - 0x80, 0xf9, 0x48, 0x74, 0x19, 0x80, 0xbe, 0x54, 0x02, 0x01, 0x74, 0x46, 0x80, 0xf9, 0x08, 0x72, - 0x41, 0x80, 0xf9, 0x0e, 0x77, 0x3c, 0xb8, 0x02, 0x00, 0xe8, 0x41, 0xcd, 0xeb, 0x34, 0xc7, 0x86, - 0x2a, 0x02, 0x05, 0x00, 0xc6, 0x86, 0x61, 0x02, 0x01, 0x8a, 0x46, 0x08, 0x3c, 0x06, 0x74, 0x26, - 0x3c, 0x02, 0x74, 0x51, 0x3c, 0x08, 0x74, 0x1a, 0x3c, 0x04, 0x74, 0x16, 0xf6, 0x86, 0xa7, 0x02, - 0x01, 0x75, 0x13, 0xf6, 0x86, 0xa8, 0x02, 0x01, 0x75, 0x0c, 0xc6, 0x46, 0x09, 0x04, 0xff, 0x86, - 0x4a, 0x02, 0x59, 0x5b, 0x58, 0xc3, 0x8b, 0x86, 0x06, 0x02, 0xf6, 0xc4, 0x80, 0x75, 0x0c, 0x80, - 0xcc, 0x80, 0x89, 0x86, 0x06, 0x02, 0xc6, 0x86, 0x85, 0x02, 0x01, 0x81, 0xbe, 0x00, 0x03, 0x00, - 0x02, 0x74, 0xdf, 0xc7, 0x86, 0x00, 0x03, 0x00, 0x02, 0xf6, 0x86, 0xa5, 0x02, 0x01, 0x74, 0xd2, - 0xe8, 0xe8, 0xd7, 0xeb, 0xcd, 0xb8, 0x00, 0x01, 0xe8, 0x36, 0xdb, 0xf6, 0x86, 0x5e, 0x02, 0x01, - 0x74, 0xc0, 0xc6, 0x46, 0x09, 0x04, 0xeb, 0xba, 0xfa, 0xc7, 0x06, 0x30, 0x00, 0x0a, 0x0f, 0x8c, - 0x0e, 0x32, 0x00, 0xb8, 0x00, 0x00, 0xe7, 0x06, 0xb8, 0xea, 0x09, 0xe7, 0x00, 0xb8, 0x09, 0x00, - 0xe7, 0x06, 0xb0, 0x7f, 0xe8, 0xfb, 0xbb, 0xc6, 0x06, 0x1f, 0x56, 0x80, 0xfb, 0xc3, 0xf7, 0x86, - 0x82, 0x01, 0x01, 0x00, 0x74, 0x1a, 0xc7, 0x86, 0x82, 0x01, 0x00, 0x00, 0xf6, 0x86, 0x6e, 0x01, - 0x01, 0x74, 0x0d, 0xc6, 0x86, 0x6e, 0x01, 0x00, 0xbe, 0x15, 0x46, 0xe8, 0xce, 0xbf, 0xeb, 0x00, - 0xf7, 0x86, 0x8a, 0x01, 0x01, 0x00, 0x74, 0x45, 0xc7, 0x86, 0x8a, 0x01, 0x00, 0x00, 0xf6, 0x86, - 0x6f, 0x01, 0x01, 0x74, 0x0d, 0xc6, 0x86, 0x6f, 0x01, 0x00, 0xbe, 0x15, 0x46, 0xe8, 0xac, 0xbf, - 0xeb, 0x2b, 0x80, 0x7e, 0x06, 0x0e, 0x74, 0x06, 0x80, 0x7e, 0x06, 0x48, 0x75, 0x1f, 0xf6, 0x86, - 0x5d, 0x02, 0x01, 0x74, 0x18, 0xf6, 0x86, 0x5c, 0x02, 0x01, 0x75, 0x11, 0xc6, 0x86, 0x5c, 0x02, - 0x01, 0xc7, 0x86, 0x2a, 0x02, 0x0a, 0x00, 0xb8, 0x0c, 0x00, 0xe8, 0x30, 0xcc, 0xc3, 0xb9, 0x01, - 0x00, 0x33, 0xdb, 0x8b, 0xaf, 0xe6, 0x54, 0x8e, 0x46, 0x02, 0x26, 0x8b, 0x16, 0x14, 0x00, 0x83, - 0xe2, 0x08, 0x26, 0xa1, 0x32, 0x00, 0xd1, 0xe8, 0xd0, 0xe8, 0x86, 0xe0, 0xf7, 0xc2, 0x08, 0x00, - 0x75, 0x02, 0xeb, 0x67, 0x83, 0xbe, 0x74, 0x01, 0x00, 0x75, 0x04, 0x88, 0xa6, 0x78, 0x01, 0x81, - 0xbe, 0x74, 0x01, 0xbc, 0x02, 0x72, 0x06, 0xc7, 0x86, 0x74, 0x01, 0xf4, 0x01, 0x8a, 0xc4, 0x2a, - 0xe4, 0x83, 0xf8, 0x7f, 0x75, 0x12, 0x8b, 0x86, 0x74, 0x01, 0xbe, 0xeb, 0x09, 0xf7, 0xe6, 0xbe, - 0x20, 0x00, 0xf7, 0xf6, 0x03, 0x86, 0x78, 0x01, 0x89, 0x86, 0x7c, 0x01, 0xff, 0x86, 0x74, 0x01, - 0x83, 0xbe, 0x7c, 0x01, 0x7d, 0x72, 0x21, 0x83, 0xbe, 0x88, 0x01, 0x01, 0x74, 0x1a, 0xc7, 0x86, - 0x88, 0x01, 0x01, 0x00, 0xc7, 0x86, 0x8a, 0x01, 0x01, 0x00, 0xa1, 0xd0, 0x54, 0x89, 0x86, 0x8c, - 0x01, 0xa1, 0xd2, 0x54, 0x89, 0x86, 0x8e, 0x01, 0xe9, 0x94, 0x00, 0x83, 0xbe, 0x76, 0x01, 0x00, - 0x75, 0x04, 0x88, 0x86, 0x7a, 0x01, 0x81, 0xbe, 0x76, 0x01, 0xbc, 0x02, 0x72, 0x06, 0xc7, 0x86, - 0x76, 0x01, 0xf4, 0x01, 0x2a, 0xe4, 0x83, 0xf8, 0x7f, 0x75, 0x12, 0x8b, 0x86, 0x76, 0x01, 0xbe, - 0xeb, 0x09, 0xf7, 0xe6, 0xbe, 0x20, 0x00, 0xf7, 0xf6, 0x03, 0x86, 0x7a, 0x01, 0x89, 0x86, 0x7e, - 0x01, 0xff, 0x86, 0x76, 0x01, 0x83, 0xbe, 0x80, 0x01, 0x01, 0x74, 0x53, 0x83, 0xf8, 0x1f, 0x72, - 0x4e, 0x8d, 0xb6, 0x96, 0x01, 0x83, 0x3c, 0x12, 0x72, 0x45, 0x83, 0x3c, 0x23, 0x77, 0x40, 0x83, - 0x7c, 0x02, 0x1f, 0x72, 0x3a, 0x83, 0x7c, 0x02, 0x45, 0x77, 0x34, 0x83, 0x7c, 0x04, 0x12, 0x72, - 0x2e, 0x90, 0x83, 0x7c, 0x04, 0x23, 0x77, 0x27, 0x81, 0x7c, 0x06, 0x9c, 0x00, 0x72, 0x20, 0xc7, - 0x86, 0x80, 0x01, 0x01, 0x00, 0xc7, 0x86, 0x82, 0x01, 0x01, 0x00, 0xc7, 0x86, 0x88, 0x01, 0x00, - 0x00, 0xa1, 0xd0, 0x54, 0x89, 0x86, 0x84, 0x01, 0xa1, 0xd2, 0x54, 0x89, 0x86, 0x86, 0x01, 0x83, - 0xc3, 0x02, 0x49, 0x74, 0x03, 0xe9, 0xdb, 0xfe, 0xc3, 0x50, 0x51, 0x52, 0x56, 0x57, 0x8e, 0x46, - 0x02, 0x83, 0x86, 0x90, 0x01, 0x01, 0x83, 0x96, 0x92, 0x01, 0x00, 0xc7, 0x86, 0x80, 0x01, 0x00, - 0x00, 0x26, 0xa1, 0x32, 0x00, 0xd1, 0xe8, 0xd0, 0xe8, 0x86, 0xe0, 0x8d, 0xb6, 0x96, 0x01, 0x26, - 0x8b, 0x0e, 0x14, 0x00, 0x83, 0xe1, 0x08, 0x89, 0x8e, 0x94, 0x01, 0xf7, 0xc1, 0x08, 0x00, 0x74, - 0x4f, 0x8b, 0x4c, 0x0a, 0x89, 0x4c, 0x0e, 0x8b, 0x4c, 0x06, 0x89, 0x4c, 0x0a, 0x8b, 0x4c, 0x02, - 0x89, 0x4c, 0x06, 0x2a, 0xe4, 0x8b, 0xc8, 0x83, 0xf8, 0x7f, 0x75, 0x19, 0xb0, 0x0a, 0xe6, 0x10, - 0xe5, 0x00, 0xb1, 0x05, 0xd3, 0xe8, 0x03, 0x86, 0x7e, 0x01, 0x8b, 0xc8, 0xe4, 0x10, 0xa8, 0x10, - 0x74, 0x03, 0x83, 0xc1, 0x4f, 0x8b, 0xc1, 0x89, 0x44, 0x02, 0xc7, 0x86, 0x7e, 0x01, 0x00, 0x00, - 0xc7, 0x86, 0x76, 0x01, 0x00, 0x00, 0xeb, 0x7f, 0xc7, 0x86, 0x88, 0x01, 0x00, 0x00, 0xeb, 0x77, - 0x8b, 0x4c, 0x08, 0x89, 0x4c, 0x0c, 0x8b, 0x4c, 0x04, 0x89, 0x4c, 0x08, 0x8b, 0x0c, 0x89, 0x4c, - 0x04, 0x8a, 0xc4, 0x2a, 0xe4, 0x8b, 0xc8, 0x83, 0xf8, 0x7f, 0x75, 0x25, 0xb0, 0x0a, 0xe6, 0x10, - 0xe5, 0x00, 0xb1, 0x05, 0xd3, 0xe8, 0x03, 0x86, 0x7c, 0x01, 0x8b, 0xc8, 0xe4, 0x10, 0xa8, 0x10, - 0x74, 0x03, 0x83, 0xc1, 0x4f, 0x8b, 0x96, 0x7c, 0x01, 0x83, 0xf9, 0x7f, 0x77, 0x03, 0x83, 0xc1, - 0x4f, 0x8b, 0xc1, 0x89, 0x04, 0xc7, 0x86, 0x7c, 0x01, 0x00, 0x00, 0xc7, 0x86, 0x74, 0x01, 0x00, - 0x00, 0x83, 0xf8, 0x7d, 0x72, 0xa2, 0x83, 0xbe, 0x88, 0x01, 0x01, 0x74, 0x1a, 0xc7, 0x86, 0x88, - 0x01, 0x01, 0x00, 0xc7, 0x86, 0x8a, 0x01, 0x01, 0x00, 0xa1, 0xd0, 0x54, 0x89, 0x86, 0x84, 0x01, - 0xa1, 0xd2, 0x54, 0x89, 0x86, 0x86, 0x01, 0x5f, 0x5e, 0x5a, 0x59, 0x58, 0xc3, 0x50, 0x51, 0x57, - 0x06, 0xfa, 0x8c, 0xd8, 0x8e, 0xc0, 0x2b, 0xc0, 0x8d, 0xbe, 0x72, 0x01, 0xb9, 0x1a, 0x00, 0xf3, - 0xab, 0xfb, 0x07, 0x5f, 0x59, 0x58, 0xc3, 0xfa, 0xf6, 0x06, 0x1f, 0x56, 0x80, 0x74, 0x4e, 0xc6, - 0x86, 0x6c, 0x01, 0x00, 0xc6, 0x86, 0x6e, 0x01, 0x01, 0xfe, 0x86, 0x70, 0x01, 0x8a, 0x46, 0x00, - 0xa2, 0x1f, 0x56, 0xc7, 0x06, 0x20, 0x56, 0x02, 0x00, 0xc7, 0x06, 0x22, 0x56, 0x01, 0x00, 0xe5, - 0x06, 0x83, 0xe0, 0x09, 0xe7, 0x06, 0x8b, 0xc8, 0xb8, 0xd6, 0x13, 0xe7, 0x02, 0xb8, 0x4e, 0x03, - 0xe7, 0x04, 0x83, 0xc9, 0x46, 0x8b, 0xc1, 0xe7, 0x06, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x02, - 0x00, 0x01, 0xbe, 0x15, 0x46, 0xe8, 0x32, 0xbc, 0xc6, 0x86, 0x5d, 0x02, 0x01, 0xfb, 0xc3, 0xfa, - 0xf6, 0x06, 0x1f, 0x56, 0x80, 0x74, 0x49, 0xc6, 0x86, 0x6d, 0x01, 0x00, 0xc6, 0x86, 0x6f, 0x01, - 0x01, 0xfe, 0x86, 0x71, 0x01, 0x8a, 0x46, 0x00, 0xa2, 0x1f, 0x56, 0xc7, 0x06, 0x20, 0x56, 0x0e, - 0x00, 0xc7, 0x06, 0x22, 0x56, 0x02, 0x00, 0xe5, 0x06, 0x83, 0xe0, 0x09, 0xe7, 0x06, 0x8b, 0xc8, - 0xb8, 0xf7, 0x03, 0xe7, 0x02, 0xb8, 0xd6, 0x13, 0xe7, 0x04, 0x83, 0xc9, 0x46, 0x8b, 0xc1, 0xe7, - 0x06, 0x8e, 0x46, 0x02, 0x26, 0x83, 0x0e, 0x02, 0x00, 0x01, 0xbe, 0x15, 0x46, 0xe8, 0xda, 0xbb, - 0xfb, 0xc3, 0xe5, 0x06, 0x83, 0xe0, 0x09, 0xe7, 0x06, 0xc3, 0xb8, 0x9d, 0x06, 0xe7, 0x02, 0xc7, - 0x06, 0x20, 0x56, 0x04, 0x00, 0xc3, 0xc7, 0x06, 0x20, 0x56, 0x06, 0x00, 0xc3, 0x90, 0xc7, 0x06, - 0x20, 0x56, 0x08, 0x00, 0xc3, 0x90, 0x53, 0xc7, 0x06, 0x20, 0x56, 0x0a, 0x00, 0x33, 0xdb, 0x8a, - 0x1e, 0x1f, 0x56, 0xd0, 0xe3, 0x8b, 0x9f, 0xe6, 0x54, 0x06, 0x8e, 0x47, 0x02, 0x26, 0x83, 0x26, - 0x02, 0x00, 0xfe, 0x07, 0xb8, 0x9d, 0x06, 0xe7, 0x02, 0x5b, 0xc3, 0x90, 0xe5, 0x06, 0x83, 0xe0, - 0x09, 0xe7, 0x06, 0xc7, 0x06, 0x20, 0x56, 0x0c, 0x00, 0xc6, 0x06, 0x1f, 0x56, 0x80, 0xc3, 0x90, - 0xe5, 0x06, 0x83, 0xe0, 0x09, 0xe7, 0x06, 0xc3, 0xb8, 0xf7, 0x03, 0xe7, 0x02, 0xc7, 0x06, 0x20, - 0x56, 0x10, 0x00, 0xc3, 0x53, 0xc7, 0x06, 0x20, 0x56, 0x12, 0x00, 0x33, 0xdb, 0x8a, 0x1e, 0x1f, - 0x56, 0xd0, 0xe3, 0x8b, 0x9f, 0xe6, 0x54, 0x06, 0x8e, 0x47, 0x02, 0x26, 0x83, 0x26, 0x02, 0x00, - 0xfe, 0x07, 0xb8, 0x9d, 0x06, 0xe7, 0x02, 0x5b, 0xc3, 0x90, 0xe5, 0x06, 0x83, 0xe0, 0x09, 0xe7, - 0x06, 0xc7, 0x06, 0x20, 0x56, 0x14, 0x00, 0xc6, 0x06, 0x1f, 0x56, 0x80, 0xc3, 0x90, 0xe5, 0x06, - 0x83, 0xe0, 0x09, 0xe7, 0x06, 0xc3, 0x4e, 0x6f, 0x4c, 0x6f, 0x63, 0x61, 0x6c, 0x54, 0x78, 0x74, - 0x30, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x34, 0x12, 0x45, 0x23, 0x56, 0x34, - 0x00, 0x00, 0x00, 0x00, 0xcd, 0xab, 0xde, 0xbc, 0xef, 0xcd, 0x00, 0x00, 0x00, 0x00, 0x4e, 0x6f, - 0x74, 0x49, 0x6d, 0x70, 0x6c, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x65, 0x64, 0x00, 0x54, 0x69, 0x6d, - 0x65, 0x72, 0x30, 0x00, 0x00, 0x54, 0x69, 0x6d, 0x65, 0x72, 0x31, 0x00, 0x00, 0x54, 0x65, 0x73, - 0x74, 0x31, 0x00, 0x00, 0x54, 0x65, 0x73, 0x74, 0x32, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x55, 0xf1, 0x4d, - 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, 0x41, - 0x41, 0x41, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x04, 0x09, 0x00, 0x00, 0x06, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, - 0xe0, 0x02, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, - 0x00, 0x02, 0x04, 0x01, 0x00, 0x00, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x03, 0xc0, 0x00, 0xff, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x03, 0x06, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, - 0xe0, 0x04, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, - 0x00, 0x04, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x05, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x05, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x06, 0xc0, 0x00, - 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x06, 0x06, 0x0b, - 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x12, 0x00, 0xe0, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x00, 0x14, 0x00, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x08, 0x02, 0x26, 0x00, 0x00, - 0x00, 0x00, 0x3e, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x30, 0x50, 0x20, 0x0c, 0x23, 0x30, 0x30, 0x30, 0x30, 0xf3, 0xf0, 0xf0, 0xf8, - 0xf9, 0xf6, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x14, 0x22, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x21, - 0x00, 0x00, 0x04, 0x21, 0x00, 0x00, 0x06, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x06, 0x2c, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x29, 0x20, 0x00, 0x08, 0x00, - 0x01, 0x00, 0x04, 0x06, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x34, 0x00, - 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x26, - 0x40, 0x25, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x14, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x20, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x40, 0x26, 0x06, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1a, 0x00, - 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, - 0x60, 0x27, 0x08, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x24, 0x00, - 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, - 0x60, 0x28, 0x04, 0x30, 0x00, 0x00, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0xff, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x30, 0x11, 0x04, 0x0c, 0x00, 0x01, - 0x04, 0x0e, 0x00, 0x02, 0x04, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16, 0x00, 0xe0, 0x00, - 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x03, 0x12, - 0x04, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0xff, 0xff, - 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x30, 0x13, 0x00, 0x00, 0x00, 0x00, - 0x16, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x08, 0x03, 0x14, 0x04, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0xe0, 0x00, - 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x03, 0x15, - 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x22, 0x60, 0x29, 0x08, 0x2d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x08, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x08, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x2a, 0x00, 0x00, 0x02, 0x20, 0x80, 0x00, 0x00, 0x06, - 0x09, 0x00, 0x00, 0x00, 0x04, 0x03, 0x01, 0x80, 0x00, 0x00, 0x04, 0x02, 0x80, 0x00, 0x00, 0x08, - 0x0b, 0x00, 0x00, 0x00, 0x06, 0x02, 0x02, 0x80, 0x00, 0x00, 0x08, 0x0b, 0x00, 0x00, 0x00, 0x06, - 0x01, 0x26, 0x80, 0x00, 0x00, 0xff, 0x06, 0x03, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, - 0x06, 0x05, 0x00, 0x00, 0x00, 0x04, 0x06, 0x00, 0x00, 0x00, 0x04, 0x07, 0x00, 0x00, 0x00, 0x04, - 0x09, 0x00, 0x00, 0x00, 0x04, 0x04, 0x03, 0x00, 0x00, 0x00, 0x04, 0x04, 0x00, 0x00, 0x00, 0x06, - 0x05, 0x00, 0x00, 0x00, 0x04, 0x09, 0x00, 0x00, 0x00, 0x04, 0x03, 0x0c, 0x80, 0x00, 0x00, 0x04, - 0x0e, 0x80, 0x00, 0x00, 0x04, 0x21, 0x00, 0x00, 0x00, 0x04, 0x01, 0x0f, 0x80, 0x00, 0x00, 0x04, - 0x01, 0x0d, 0x80, 0x00, 0x00, 0x04, 0x04, 0x02, 0x80, 0x00, 0x00, 0x08, 0x22, 0x00, 0x00, 0x00, - 0xff, 0x23, 0x00, 0x00, 0x00, 0xff, 0x21, 0x00, 0x00, 0x00, 0x04, 0x01, 0x09, 0x00, 0x00, 0x00, - 0x04, 0x00, 0xa5, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - -#endif /* OLTR_NO_HAWKEYE_MAC */ diff --git a/sys/contrib/dev/oltr/trlldmac.c b/sys/contrib/dev/oltr/trlldmac.c deleted file mode 100644 index 158848854793..000000000000 --- a/sys/contrib/dev/oltr/trlldmac.c +++ /dev/null @@ -1,1990 +0,0 @@ -/* - ****************************** trlld.h *********************************** - * - * Copyright (c) 1997 - * OLICOM A/S - * Denmark - * - * All Rights Reserved - * - * This source file is subject to the terms and conditions of the - * OLICOM Software License Agreement which restricts the manner - * in which it may be used. - * - *--------------------------------------------------------------------------- - * - * Description: Olicom TMS-380 adapter microcode - * - *--------------------------------------------------------------------------- - */ - -#include "opt_oltr.h" - -#ifndef OLTR_NO_TMS_MAC - -unsigned char TRlldMacCode[] = { 0x52, 0x94, 0x02, 0x00, 0xba, 0x7a, 0x00, 0x00, 0xa0, 0x00, 0x01, 0xc8, 0xe2, 0x28, 0xd4, 0xdb, - 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, 0x00, - 0x00, 0x80, 0x00, 0x40, 0x00, 0x20, 0x00, 0x10, 0x00, 0x08, 0x00, 0x04, 0x00, 0x02, 0x00, 0x01, - 0xff, 0x00, 0x00, 0xff, 0xff, 0xf0, 0xf0, 0x00, 0x00, 0x0f, 0xff, 0xff, 0x7f, 0xff, 0x00, 0x03, - 0x00, 0x00, 0x00, 0xd4, 0xe7, 0xe7, 0xe7, 0xf2, 0xf2, 0xf8, 0x28, 0x43, 0x29, 0x20, 0x43, 0x4f, - 0x50, 0x59, 0x52, 0x49, 0x47, 0x48, 0x54, 0x20, 0x49, 0x42, 0x4d, 0x20, 0x31, 0x39, 0x38, 0x33, - 0x2c, 0x34, 0x2c, 0x35, 0x2c, 0x36, 0x28, 0x43, 0x29, 0x20, 0x43, 0x4f, 0x50, 0x59, 0x52, 0x49, - 0x47, 0x48, 0x54, 0x20, 0x54, 0x49, 0x20, 0x31, 0x39, 0x38, 0x33, 0x2d, 0x38, 0x39, 0x2c, 0x39, - 0x30, 0x2d, 0x39, 0x34, 0x00, 0x00, 0x7b, 0x63, 0xf6, 0xde, 0xf1, 0xcc, 0xed, 0x9c, 0xf7, 0xe2, - 0x00, 0x00, 0x00, 0xc4, 0xbd, 0x24, 0x06, 0x4a, 0x06, 0x50, 0x06, 0x4c, 0xda, 0x00, 0x06, 0x4e, - 0x00, 0x0f, 0x06, 0x32, 0x00, 0x01, 0x07, 0x50, 0x07, 0x58, 0x07, 0x52, 0xc2, 0xce, 0x07, 0x54, - 0x00, 0x0f, 0x07, 0x38, 0x00, 0x01, 0x00, 0xba, 0x00, 0xa0, 0x00, 0xbc, 0xf7, 0xf0, 0x00, 0xbe, - 0x00, 0x0f, 0x07, 0x5e, 0x07, 0x3a, 0x07, 0x62, 0x80, 0x40, 0x07, 0x64, 0xc7, 0xb2, 0x07, 0x66, - 0xc7, 0x94, 0x07, 0x68, 0xc5, 0x9e, 0x07, 0x98, 0x80, 0x00, 0x07, 0x78, 0x80, 0x00, 0x08, 0xe2, - 0x00, 0x04, 0x08, 0xe4, 0x00, 0x01, 0x08, 0xec, 0x00, 0x08, 0x08, 0xf6, 0x00, 0x0a, 0x08, 0xf8, - 0x00, 0x06, 0x09, 0x00, 0x00, 0x0c, 0x09, 0x02, 0x00, 0x04, 0x01, 0xae, 0x00, 0x00, 0x09, 0x1e, - 0x00, 0x00, 0x09, 0x66, 0x00, 0x00, 0x06, 0x0c, 0x00, 0x13, 0x06, 0x0a, 0x00, 0x20, 0x00, 0x00, - 0x00, 0xe0, 0xb3, 0x86, 0x00, 0xe0, 0xb2, 0xe6, 0x00, 0xe0, 0xb3, 0x86, 0x00, 0xe0, 0xb5, 0x02, - 0x00, 0xe0, 0xb6, 0x5e, 0x00, 0xe0, 0xb9, 0x3c, 0x00, 0xe0, 0xb4, 0x12, 0x00, 0xc0, 0xb4, 0x22, - 0x00, 0xe0, 0xb3, 0x86, 0x00, 0xe0, 0xb3, 0x86, 0x00, 0xc0, 0xb4, 0x74, 0x00, 0xe0, 0xb3, 0x86, - 0x00, 0xe0, 0xb3, 0x86, 0x00, 0xe0, 0xb3, 0x86, 0x00, 0xe0, 0xb3, 0x86, 0x00, 0xe0, 0xb3, 0x86, - 0x00, 0xc0, 0xbd, 0x4a, 0x00, 0xc0, 0xbd, 0xb4, 0x00, 0xc0, 0xbd, 0xf0, 0x00, 0xc0, 0xbe, 0x60, - 0x00, 0xc0, 0xbe, 0xe2, 0x00, 0xe0, 0xc0, 0x50, 0x00, 0xe0, 0xbf, 0xf6, 0x00, 0xe0, 0xc1, 0x52, - 0x00, 0xe0, 0xc0, 0xe8, 0x00, 0xe0, 0xba, 0x90, 0x00, 0xc0, 0xbb, 0x00, 0x00, 0xc0, 0xbb, 0x5a, - 0x00, 0xc0, 0xbb, 0x8c, 0x00, 0xc0, 0xba, 0xb4, 0x00, 0xc0, 0xb3, 0x80, 0x00, 0xc0, 0xb3, 0x80, - 0x3f, 0x00, 0x7f, 0x00, 0x5e, 0x00, 0x00, 0x30, 0x00, 0x28, 0x00, 0x43, 0xb6, 0xb6, 0xb6, 0xb6, - 0xb5, 0x1c, 0xb5, 0x14, 0xb5, 0x46, 0xb5, 0x46, 0xb5, 0x62, 0xb6, 0xb6, 0x40, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x20, 0x00, 0x08, 0x00, 0x80, 0x00, 0x08, 0x00, 0x01, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x0c, 0x00, 0x10, 0x00, 0x14, 0x10, 0x0e, 0x0c, 0x0c, - 0x0a, 0x0a, 0x0a, 0x0a, 0x00, 0x00, 0xa1, 0xc8, 0x00, 0x09, 0x08, 0x08, 0x00, 0x00, 0xa1, 0xd0, - 0x00, 0x11, 0x06, 0x06, 0x00, 0x00, 0xa1, 0xe0, 0x00, 0x21, 0x04, 0x04, 0x00, 0x00, 0xa2, 0x00, - 0x00, 0x41, 0x02, 0x02, 0x00, 0x00, 0xa2, 0x40, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0xa2, 0xc0, - 0x06, 0xd8, 0x07, 0x98, 0xd7, 0xa2, 0x07, 0x58, 0xc6, 0x56, 0x07, 0x58, 0xc5, 0x5c, 0x07, 0x58, - 0xc6, 0xc6, 0x07, 0x58, 0xc6, 0x2e, 0x07, 0x98, 0xd4, 0x7e, 0x07, 0x98, 0xd4, 0x76, 0x07, 0x78, - 0xce, 0xea, 0x07, 0x58, 0xc6, 0x8e, 0x07, 0x98, 0xd7, 0x5c, 0x07, 0x78, 0xcf, 0xbe, 0x07, 0x58, - 0xd4, 0x8e, 0x07, 0x58, 0xc6, 0x3e, 0x07, 0x58, 0xc6, 0x7c, 0x07, 0x58, 0xc7, 0x40, 0x07, 0x98, - 0xd8, 0xd2, 0x07, 0x98, 0xd4, 0xb2, 0x07, 0x78, 0xcf, 0x7e, 0x07, 0xb8, 0xd9, 0x38, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xc8, 0x00, 0xce, 0x3e, 0xce, 0xf2, 0xd3, 0xfa, 0xca, 0xba, 0xca, 0xf2, - 0xcb, 0x10, 0xcb, 0x9a, 0xcb, 0xbe, 0xcb, 0xda, 0xcc, 0x52, 0xcc, 0x52, 0xcb, 0x86, 0xcc, 0xf0, - 0xcb, 0x40, 0x00, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x0c, 0x00, 0x0f, 0x01, 0xfe, 0xff, 0x58, 0x00, - 0x0e, 0x00, 0xfe, 0xff, 0x00, 0x0e, 0x70, 0x00, 0x80, 0x40, 0x5e, 0x00, 0xc0, 0xa0, 0xff, 0xdf, - 0x18, 0x00, 0xe0, 0x00, 0x78, 0x00, 0x50, 0x00, 0x60, 0x00, 0x70, 0x00, 0x0c, 0x00, 0x00, 0x06, - 0x00, 0x00, 0xe3, 0x84, 0x07, 0xe6, 0x07, 0xf4, 0x00, 0x08, 0x00, 0x00, 0xe3, 0x8a, 0x07, 0xea, - 0x07, 0xf4, 0x00, 0x06, 0x00, 0x40, 0x0a, 0x00, 0x07, 0xe6, 0x07, 0xee, 0x00, 0x08, 0x00, 0x40, - 0x0a, 0x06, 0x07, 0xea, 0x07, 0xee, 0x00, 0x00, 0xc1, 0xe2, 0xd4, 0x8b, 0xff, 0xff, 0xd1, 0xd7, - 0xc5, 0xd9, 0xc3, 0xd4, 0x59, 0x3b, 0x09, 0x34, 0x05, 0xfc, 0x09, 0x6c, 0x06, 0xd8, 0x04, 0x06, - 0xea, 0x7a, 0x09, 0x30, 0x04, 0x48, 0x08, 0x80, 0x00, 0x06, 0x06, 0x0a, 0x0c, 0x0e, 0xdb, 0xa8, - 0xe8, 0x7c, 0xe8, 0xa4, 0xe9, 0x8a, 0xea, 0x8c, 0xea, 0xe6, 0xeb, 0x40, 0xeb, 0xf2, 0xdb, 0xa8, - 0xec, 0x74, 0xec, 0x04, 0xe8, 0x62, 0xec, 0x10, 0xec, 0x10, 0xed, 0x3a, 0xed, 0x44, 0xed, 0x4e, - 0xe5, 0x62, 0xe7, 0xea, 0xdb, 0x9e, 0xe5, 0xb4, 0xe6, 0x82, 0xe6, 0xf2, 0xe7, 0x6e, 0xe7, 0x92, - 0xdb, 0xf6, 0xdb, 0x9e, 0xe4, 0xd2, 0xe4, 0xb4, 0xe4, 0x6e, 0xdb, 0x9e, 0xe7, 0xf6, 0xdb, 0x9e, - 0x06, 0x72, 0xdf, 0xa2, 0x07, 0x08, 0x06, 0x72, 0xdf, 0x00, 0x01, 0xf4, 0x06, 0x72, 0xde, 0xe0, - 0x07, 0x08, 0x06, 0x7c, 0xe6, 0x5a, 0x00, 0x04, 0x06, 0x7c, 0xdf, 0x24, 0x00, 0x00, 0x06, 0x7c, - 0xe7, 0xd8, 0x00, 0xfa, 0x06, 0x86, 0xde, 0x70, 0x00, 0x05, 0x06, 0x90, 0xe8, 0x28, 0x00, 0x28, - 0x06, 0x90, 0xdf, 0xfc, 0x01, 0x04, 0x06, 0x90, 0x00, 0x00, 0x00, 0x02, 0x06, 0x90, 0xdf, 0x2c, - 0x02, 0xbc, 0x06, 0x9a, 0xdf, 0xb2, 0x05, 0xdc, 0x06, 0x9a, 0xdf, 0x56, 0x00, 0x64, 0x06, 0x9a, - 0xdf, 0xb6, 0x00, 0x14, 0x06, 0x9a, 0xe9, 0x1c, 0x06, 0x40, 0x06, 0x9a, 0xdf, 0xbe, 0x00, 0x64, - 0x00, 0x00, 0x07, 0x0a, 0x07, 0x0e, 0x07, 0x04, 0x06, 0xd8, 0x07, 0x00, 0x06, 0xf0, 0x06, 0xee, - 0x06, 0xec, 0x07, 0x0c, 0x06, 0xe6, 0x07, 0x18, 0x50, 0x00, 0x00, 0xcc, 0x00, 0x03, 0x84, 0x00, - 0xa8, 0x00, 0xa0, 0x00, 0x20, 0x00, 0x80, 0x00, 0x40, 0x00, 0x08, 0x00, 0x40, 0x00, 0x80, 0x00, - 0x40, 0x00, 0x10, 0x00, 0xf4, 0x40, 0xf3, 0x06, 0xf3, 0x20, 0xf3, 0x3a, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x09, 0x00, 0x09, 0xf3, 0xa8, 0xf3, 0x10, 0xf3, 0x26, 0xf3, 0x40, 0x01, 0x40, - 0x01, 0x42, 0x01, 0x42, 0x01, 0x42, 0x00, 0x00, 0x00, 0x7f, 0x00, 0xa0, 0x00, 0xff, 0x02, 0x10, - 0x02, 0x1f, 0x02, 0x30, 0x02, 0x3f, 0x02, 0x50, 0x02, 0x5f, 0x02, 0x70, 0x02, 0x7f, 0x02, 0x90, - 0x02, 0x9f, 0x02, 0xb0, 0x02, 0xbf, 0x02, 0xd0, 0x02, 0xdf, 0x02, 0xe1, 0x02, 0xff, 0x03, 0x01, - 0x03, 0x7f, 0x03, 0x81, 0x03, 0x8f, 0x03, 0x91, 0x03, 0x9f, 0x03, 0xa1, 0x03, 0xaf, 0x03, 0xb1, - 0x03, 0xbf, 0x03, 0xc1, 0x03, 0xcf, 0x03, 0xe1, 0x03, 0xff, 0x07, 0xc0, 0x07, 0xff, 0x0c, 0x00, - 0x0f, 0xff, 0x30, 0x00, 0x37, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xbc, 0x00, 0x07, 0x02, 0x5e, - 0x01, 0x00, 0xba, 0xff, 0xba, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x0c, 0x01, 0x0a, - 0x01, 0x0e, 0x01, 0x10, 0x01, 0x14, 0x00, 0x00, 0x01, 0x12, 0xf8, 0x00, 0x01, 0x16, 0xff, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x01, 0x0a, 0x01, 0x1c, 0x01, 0x82, 0x96, 0x66, 0x96, 0x66, 0x55, 0x55, - 0x00, 0x00, 0x01, 0x82, 0x8a, 0x2a, 0x8a, 0x2a, 0xc9, 0x18, 0xc9, 0x18, 0x01, 0x86, 0xa2, 0xaa, - 0xa0, 0x1e, 0x55, 0x55, 0x54, 0x1e, 0x01, 0x8a, 0x50, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0x01, 0x8c, 0x50, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x01, 0x8e, 0x50, 0x00, 0x00, 0x00, - 0xa8, 0x00, 0x00, 0x00, 0x01, 0x90, 0x50, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x01, 0x92, - 0x50, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x01, 0x94, 0x50, 0x00, 0x00, 0x00, 0xa8, 0x00, - 0x00, 0x00, 0x01, 0x96, 0x50, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x01, 0x98, 0x50, 0x00, - 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x01, 0x9a, 0x50, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, - 0x01, 0x9c, 0x55, 0x55, 0x7f, 0xc0, 0xaa, 0xaa, 0x7f, 0xc0, 0x00, 0x00, 0x01, 0xa2, 0x01, 0xa4, - 0x01, 0xa8, 0x01, 0xaa, 0x01, 0xae, 0x01, 0xb0, 0x01, 0xb2, 0x01, 0x80, 0x00, 0x00, 0x01, 0x88, - 0xff, 0x00, 0x01, 0x9e, 0x00, 0xff, 0x01, 0xa0, 0x80, 0x00, 0x01, 0xac, 0x80, 0x00, 0x00, 0x00, - 0x01, 0xa6, 0x80, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0xbc, 0x88, 0x00, 0x06, 0x00, 0xc8, 0x00, - 0x00, 0x00, 0x80, 0x00, 0x00, 0x30, 0x00, 0x00, 0x80, 0x00, 0x00, 0x02, 0x00, 0x44, 0xf2, 0x50, - 0x00, 0x48, 0xf2, 0x56, 0x00, 0x50, 0xf2, 0x5c, 0x00, 0x60, 0xf2, 0x62, 0x00, 0x78, 0xf2, 0x68, - 0xef, 0xc8, 0xee, 0xd6, 0xe9, 0xfc, 0xee, 0xe8, 0x55, 0x14, 0x01, 0xa0, 0xee, 0xaa, 0xe9, 0x90, - 0xef, 0x04, 0xef, 0x5e, 0xee, 0xbe, 0xf0, 0x16, 0x00, 0x00, 0x00, 0x1e, 0xef, 0x04, 0xef, 0x50, - 0x41, 0x00, 0x41, 0x01, 0xef, 0x74, 0xea, 0x33, 0xee, 0xd6, 0xea, 0x08, 0xee, 0xaa, 0xe9, 0xc4, - 0xef, 0x14, 0xef, 0x20, 0xef, 0x74, 0xea, 0x2e, 0xf0, 0x20, 0x00, 0x00, 0xef, 0xf4, 0xee, 0xaa, - 0xe9, 0xba, 0xef, 0x14, 0xef, 0x20, 0xef, 0xf4, 0xf0, 0x20, 0x00, 0x00, 0xee, 0xaa, 0xe9, 0xb0, - 0xee, 0xca, 0xef, 0x08, 0xef, 0x20, 0xef, 0xf4, 0xee, 0xaa, 0xe9, 0xba, 0xef, 0x14, 0xef, 0x20, - 0xef, 0xf4, 0xf0, 0x20, 0x20, 0x00, 0xee, 0xe8, 0x55, 0x14, 0x01, 0xa0, 0xee, 0xd6, 0xea, 0x10, - 0xee, 0xaa, 0xe9, 0x90, 0xf0, 0x16, 0x55, 0x50, 0x00, 0x0c, 0xef, 0x04, 0xef, 0x50, 0x01, 0x00, - 0x00, 0x00, 0xef, 0x74, 0xea, 0x35, 0xee, 0xbe, 0xf0, 0x16, 0x55, 0x55, 0x00, 0x0c, 0xef, 0x14, - 0xef, 0x5e, 0xee, 0xbe, 0xf0, 0x16, 0xff, 0xff, 0x00, 0x08, 0xf0, 0x16, 0x10, 0x02, 0x00, 0x06, - 0xef, 0x04, 0xef, 0x50, 0x01, 0x00, 0x01, 0x01, 0xef, 0x74, 0xea, 0x40, 0xee, 0xbe, 0xf0, 0x16, - 0xc0, 0x00, 0x00, 0x08, 0xf0, 0x16, 0xff, 0xff, 0x00, 0x0a, 0xf0, 0x16, 0xff, 0xff, 0x00, 0x0c, - 0xf0, 0x16, 0x10, 0x0d, 0x00, 0x06, 0xef, 0x04, 0xef, 0x50, 0x01, 0x00, 0x01, 0x01, 0xef, 0x74, - 0xea, 0x34, 0xf0, 0x20, 0x20, 0x08, 0xee, 0xbe, 0xf0, 0x10, 0x01, 0x82, 0xc9, 0x02, 0xef, 0x04, - 0xef, 0x74, 0xea, 0x40, 0xf0, 0x20, 0x20, 0x34, 0xee, 0xbe, 0xf0, 0x16, 0x10, 0x00, 0x00, 0x06, - 0xef, 0x04, 0xf0, 0x84, 0xef, 0x74, 0xea, 0x38, 0xf0, 0x10, 0x01, 0x9c, 0x00, 0x40, 0xee, 0xd6, - 0xea, 0x10, 0xee, 0xe8, 0x00, 0xff, 0x07, 0x80, 0xf0, 0xe4, 0x00, 0x03, 0xf1, 0x24, 0xf1, 0x32, - 0xe9, 0xd2, 0xf0, 0xf6, 0x00, 0x00, 0xf1, 0x32, 0xe9, 0xdc, 0xf0, 0xf6, 0x00, 0x04, 0xf1, 0x32, - 0xe9, 0xe4, 0xf0, 0xf6, 0x00, 0x07, 0xf1, 0x32, 0xe9, 0xec, 0xf0, 0xe4, 0x00, 0x01, 0xf1, 0x32, - 0xe9, 0xf4, 0xf0, 0xf6, 0x00, 0x02, 0xf1, 0x32, 0xe9, 0xf4, 0xf0, 0xf6, 0x00, 0x06, 0xf1, 0x32, - 0xe9, 0xf4, 0xf0, 0xf6, 0x00, 0x05, 0xf1, 0x32, 0xe9, 0xf4, 0xf0, 0xe4, 0x00, 0x01, 0xf1, 0x08, - 0xf0, 0xe4, 0x00, 0x03, 0xf1, 0x16, 0xef, 0x20, 0xf0, 0xa4, 0xe9, 0x98, 0x00, 0x01, 0xf0, 0xa4, - 0xe9, 0xe5, 0x00, 0x02, 0xf0, 0xa4, 0xe9, 0xef, 0x00, 0x06, 0xf0, 0xa4, 0xe9, 0xfa, 0x00, 0x05, - 0xef, 0x74, 0xea, 0x34, 0xef, 0xf4, 0xee, 0xaa, 0xe9, 0x90, 0xef, 0x14, 0xf0, 0x84, 0xee, 0xca, - 0xef, 0x50, 0x01, 0x00, 0x80, 0x00, 0xef, 0x74, 0xea, 0x38, 0xee, 0xbe, 0xf0, 0xbc, 0xf0, 0x10, - 0x01, 0x80, 0x8e, 0x41, 0xef, 0x08, 0xef, 0x50, 0x01, 0x00, 0x1b, 0x01, 0xf0, 0xc4, 0xff, 0xe4, - 0xef, 0x74, 0xea, 0x3c, 0xf0, 0x7c, 0xee, 0xd6, 0xea, 0x16, 0xee, 0xca, 0xf0, 0x28, 0xee, 0xfa, - 0xe0, 0x00, 0xf0, 0x84, 0xef, 0x74, 0xea, 0x46, 0xee, 0xfa, 0xe8, 0x00, 0xef, 0x20, 0xef, 0x74, - 0xea, 0x45, 0xee, 0xfa, 0x08, 0x00, 0xf0, 0x84, 0xef, 0x74, 0xea, 0x46, 0xee, 0xfa, 0xf8, 0x00, - 0xef, 0x20, 0xef, 0x74, 0xea, 0x45, 0xf0, 0x10, 0x01, 0x80, 0x02, 0x00, 0xee, 0xfa, 0xe0, 0x00, - 0xef, 0x20, 0xef, 0x74, 0xea, 0x45, 0xf0, 0x10, 0x01, 0x84, 0x00, 0x00, 0xf0, 0x20, 0x00, 0x34, - 0xee, 0xfa, 0x00, 0x00, 0xf0, 0x84, 0xf0, 0x20, 0x60, 0x34, 0xf0, 0xcc, 0xf0, 0x10, 0x01, 0x84, - 0x00, 0x00, 0xef, 0x74, 0xea, 0x46, 0xf0, 0x10, 0x01, 0x82, 0xc8, 0x00, 0xee, 0xfa, 0xe0, 0x00, - 0xf0, 0x84, 0xee, 0xfa, 0x10, 0x00, 0xf0, 0x84, 0xf0, 0x20, 0x60, 0x34, 0xf0, 0x10, 0x01, 0x80, - 0x06, 0x00, 0xee, 0xfa, 0x00, 0x10, 0xf0, 0x36, 0xef, 0xf4, 0xf0, 0x10, 0x01, 0x84, 0x00, 0x00, - 0xf0, 0x20, 0x00, 0x34, 0xee, 0xaa, 0xe9, 0x90, 0xee, 0xd6, 0xea, 0x1c, 0xf0, 0x8e, 0xe9, 0x52, - 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0xf0, 0x40, 0x00, 0x06, 0xc7, 0x00, 0xef, 0x5e, 0xf0, 0x9a, - 0xe0, 0x00, 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0xd0, 0x40, 0x00, 0x06, 0xe0, 0x00, 0xef, 0x5e, - 0xf0, 0x9a, 0xc0, 0x00, 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0x90, 0x40, 0x00, 0x06, 0xa0, 0x00, - 0xef, 0x5e, 0xf0, 0x9a, 0x80, 0x00, 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0x50, 0x40, 0x00, 0x06, - 0x60, 0x00, 0xef, 0x5e, 0xf0, 0x9a, 0x40, 0x00, 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0x10, 0x40, - 0x00, 0x06, 0x20, 0x00, 0xef, 0x5e, 0xf0, 0x9a, 0x00, 0x00, 0xf0, 0x8e, 0xe9, 0x52, 0xee, 0xbe, - 0xee, 0xca, 0xef, 0x2e, 0xd0, 0x40, 0x00, 0x06, 0xa6, 0x00, 0xef, 0x5e, 0xf0, 0x9a, 0xc0, 0x00, - 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0x90, 0x40, 0x00, 0x06, 0xc0, 0x00, 0xef, 0x5e, 0xf0, 0x9a, - 0x80, 0x00, 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0x50, 0x40, 0x00, 0x06, 0x40, 0x00, 0xef, 0x5e, - 0xf0, 0x9a, 0x40, 0x00, 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0x70, 0x40, 0x00, 0x06, 0x60, 0x00, - 0xef, 0x5e, 0xf0, 0x9a, 0x60, 0x00, 0xf1, 0x3c, 0xe9, 0x50, 0xee, 0xd6, 0xea, 0x22, 0xee, 0xaa, - 0xe9, 0x90, 0xf0, 0x62, 0x55, 0x55, 0x00, 0x16, 0xef, 0x04, 0xef, 0x50, 0x00, 0x00, 0x00, 0x00, - 0xef, 0x74, 0xea, 0x4b, 0xef, 0xc8, 0xee, 0xd6, 0xea, 0x22, 0xf0, 0x16, 0x55, 0x55, 0x00, 0x16, - 0xee, 0xbe, 0xef, 0x04, 0xef, 0x5e, 0xee, 0xe8, 0x00, 0xff, 0x08, 0x00, 0xee, 0xe8, 0x00, 0xff, - 0x0c, 0x00, 0xee, 0xe8, 0x00, 0xff, 0x10, 0x00, 0xee, 0xe8, 0x00, 0xff, 0x14, 0x00, 0xee, 0xe8, - 0x00, 0xff, 0x18, 0x00, 0xee, 0xe8, 0x00, 0xff, 0x1c, 0x00, 0xee, 0xe8, 0x00, 0xff, 0x20, 0x00, - 0xee, 0xe8, 0x00, 0xff, 0x24, 0x00, 0xee, 0xe8, 0x00, 0xff, 0x28, 0x00, 0xee, 0xe8, 0x00, 0xff, - 0x2c, 0x00, 0xef, 0x90, 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0x30, 0x40, 0x00, 0x06, 0x01, 0x00, - 0xef, 0x5e, 0xf0, 0x9a, 0x20, 0x00, 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0x70, 0x40, 0x00, 0x06, - 0x43, 0x00, 0xef, 0x5e, 0xf0, 0x9a, 0x60, 0x00, 0xee, 0xbe, 0xee, 0xca, 0xef, 0x2e, 0xb0, 0x40, - 0x00, 0x06, 0x85, 0x00, 0xef, 0x5e, 0xf0, 0x9a, 0xa0, 0x00, 0xf0, 0x96, 0x01, 0x00, 0x01, 0x03, - 0x01, 0x01, 0x00, 0x00, 0x81, 0x00, 0x00, 0x1a, 0x10, 0x40, 0x00, 0x00, 0xa9, 0x98, 0x00, 0x0d, - 0x55, 0x55, 0x00, 0x00, 0xa9, 0xa4, 0x00, 0xaa, 0x82, 0x72, 0xa9, 0x4a, 0x5a, 0xa5, 0xe7, 0xda, - 0x09, 0x03, 0x9d, 0x11, 0x00, 0x00, 0x81, 0x00, 0x00, 0x04, 0x90, 0xd8, 0x10, 0x00, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x04, 0x90, 0xd8, 0xb4, 0xd8, 0x00, 0x00, 0x81, 0x00, 0x00, 0x08, 0x90, 0xd8, - 0x16, 0x46, 0x40, 0x00, 0xb4, 0xd8, 0x00, 0x08, 0x00, 0x00, 0x80, 0x00, 0x00, 0x13, 0x10, 0x40, - 0x00, 0x16, 0x00, 0x00, 0x80, 0x00, 0x00, 0x10, 0x00, 0x15, 0x00, 0x00, 0x80, 0x00, 0x00, 0x0f, - 0x00, 0x15, 0x00, 0x00, 0x81, 0x00, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x00, 0x80, 0x00, 0x00, 0x12, - 0x80, 0x0a, 0x9e, 0x40, 0xc8, 0x00, 0x00, 0x00, 0x80, 0x5e, 0x00, 0x0f, 0x80, 0x06, 0xfe, 0x40, - 0xcc, 0x00, 0x00, 0x00, 0x80, 0x04, 0x8e, 0x40, 0xc9, 0x00, 0x80, 0x04, 0x06, 0x00, 0xcc, 0x00, - 0x80, 0x04, 0x0a, 0x40, 0xc8, 0x00, 0x80, 0x0a, 0x8a, 0x40, 0xc8, 0x00, 0x00, 0x00, 0x80, 0x5e, - 0x00, 0x0f, 0x08, 0x0a, 0x1c, 0x80, 0x00, 0x0a, 0x1a, 0x1c, 0x80, 0x00, 0x0c, 0x1c, 0x80, 0x00, - 0x1a, 0x1c, 0x80, 0x00, 0x0e, 0x1a, 0x1c, 0x80, 0x00, 0x04, 0x80, 0x00, 0x02, 0x80, 0x00, 0x02, - 0x80, 0x00, 0x00, 0x00, 0xaa, 0x4e, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x00, 0xaa, 0x7a, 0x00, 0x4e, - 0x07, 0x58, 0xc5, 0x6a, 0xe0, 0x16, 0x08, 0xe2, 0x08, 0xec, 0x08, 0xf6, 0xe0, 0x16, 0x09, 0x00, - 0x09, 0x0a, 0x00, 0x00, 0x00, 0x00, 0x08, 0xe2, 0x00, 0x00, 0x08, 0xec, 0x08, 0xf6, 0x09, 0x00, - 0x00, 0x00, 0x07, 0xb8, 0xd8, 0xee, 0x02, 0x80, 0x07, 0xb8, 0xd9, 0x0c, 0xff, 0x84, 0x07, 0xb8, - 0xd9, 0x2e, 0x07, 0xb8, 0xd9, 0xa8, 0xda, 0x88, 0xda, 0x7c, 0xda, 0xa2, 0xda, 0xa6, 0xda, 0x9e, - 0xdb, 0x86, 0xdb, 0x86, 0xdb, 0x86, 0xda, 0xa8, 0xda, 0xb2, 0xdb, 0x2e, 0xdb, 0x78, 0x00, 0x00, - 0xaa, 0xc8, 0x00, 0x09, 0xdb, 0x86, 0x00, 0x00, 0xaa, 0xd0, 0x02, 0xb0, 0x00, 0x07, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x08, 0x01, 0x08, 0x08, 0x05, 0x08, 0x08, 0x08, 0x00, 0x00, 0x02, - 0x04, 0x04, 0x04, 0x04, 0x00, 0x08, 0x0a, 0x00, 0x00, 0x0c, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x41, 0x04, 0x0b, 0x06, 0xc2, 0x08, 0xe6, 0x00, 0xe7, 0x00, 0x06, 0x04, 0x07, 0x04, 0x03, 0x04, - 0x04, 0x06, 0x05, 0x04, 0x88, 0x04, 0x00, 0x03, 0x00, 0x1c, 0x0c, 0x00, 0x80, 0x00, 0xe3, 0xfc, - 0xe4, 0x04, 0xe4, 0x48, 0xe4, 0x08, 0xe4, 0x14, 0xe4, 0x1a, 0xe4, 0x3e, 0xe4, 0x0e, 0xe4, 0x5c, - 0x06, 0x00, 0x00, 0x00, 0x07, 0x06, 0x0e, 0x14, 0x14, 0x1e, 0x2a, 0x4c, 0x38, 0x7c, 0x3e, 0x78, - 0x43, 0x92, 0x58, 0x9c, 0x4d, 0xb2, 0x2f, 0x64, 0x1d, 0x34, 0x6c, 0xd0, 0x23, 0x3e, 0x1d, 0x2a, - 0x65, 0xc0, 0x72, 0xe0, 0x78, 0xee, 0x7f, 0xfc, 0x01, 0x32, 0x57, 0x01, 0x11, 0x32, 0x51, 0x81, - 0x56, 0x02, 0x55, 0x03, 0x11, 0x54, 0x81, 0x56, 0x02, 0x55, 0x02, 0x54, 0x81, 0x56, 0x76, 0x01, - 0x34, 0x02, 0x55, 0x02, 0x54, 0x81, 0x58, 0x02, 0x55, 0x02, 0x54, 0x81, 0x58, 0x02, 0x12, 0x11, - 0x52, 0x02, 0x83, 0x58, 0x05, 0x52, 0x04, 0x81, 0x58, 0x05, 0x52, 0x03, 0x15, 0x5c, 0x5b, 0x53, - 0x87, 0x52, 0x03, 0x11, 0x51, 0x41, 0x51, 0x78, 0x11, 0x34, 0x11, 0x81, 0x31, 0x20, 0x57, 0x54, - 0x53, 0x01, 0x12, 0x5a, 0x51, 0x81, 0x31, 0x20, 0x57, 0x5b, 0x5a, 0x01, 0x11, 0x01, 0x11, 0x51, - 0x81, 0x31, 0x20, 0x57, 0x01, 0x15, 0x01, 0x13, 0x01, 0x11, 0x11, 0x11, 0x51, 0x81, 0x58, 0x05, - 0x52, 0x02, 0x54, 0x5b, 0x81, 0x5d, 0x05, 0x52, 0x02, 0x54, 0x81, 0x58, 0x02, 0x50, 0x03, 0x13, - 0x81, 0x58, 0x02, 0x50, 0x03, 0x11, 0x54, 0x81, 0x5d, 0x72, 0x03, 0x50, 0x03, 0x13, 0x01, 0x13, - 0x54, 0x40, 0x00, 0x0e, 0x06, 0x20, 0x06, 0x56, 0xe5, 0x2a, 0x00, 0x24, 0x10, 0x02, 0x00, 0x16, - 0x00, 0x02, 0x04, 0x01, 0x07, 0x08, 0xe5, 0x2a, 0x00, 0x20, 0x10, 0x03, 0x00, 0x12, 0x00, 0x03, - 0xe4, 0x78, 0x8e, 0x14, 0x00, 0x20, 0x10, 0x04, 0x00, 0x12, 0x00, 0x04, 0xdb, 0xc0, 0x00, 0x20, - 0xe0, 0x05, 0x00, 0x12, 0x00, 0x05, 0xdb, 0xc0, 0x00, 0x20, 0xe0, 0x06, 0x00, 0x12, 0x00, 0x06, - 0xe7, 0x22, 0x00, 0x12, 0xe0, 0x01, 0x09, 0x6c, 0x06, 0xcc, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, - 0x06, 0x30, 0xe6, 0x42, 0x05, 0xf0, 0xe0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x05, 0xe2, - 0x00, 0x08, 0xff, 0x26, 0x05, 0xdc, 0xe7, 0xae, 0x00, 0x3e, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x30, 0x50, 0x20, 0x0c, 0x23, 0x05, 0xfc, 0x06, 0x52, 0x06, 0x56, 0x00, 0x00, - 0x81, 0x00, 0x00, 0x16, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x08, 0x40, 0x2a, - 0x04, 0x2a, 0x06, 0x56, 0x00, 0x26, 0xec, 0x71, 0x06, 0x2b, 0x09, 0x72, 0x00, 0x22, 0x00, 0x24, - 0xec, 0x87, 0x0c, 0x23, 0x05, 0xfc, 0x08, 0x28, 0x09, 0x34, 0x08, 0x29, 0x07, 0x58, 0x07, 0x78, - 0x07, 0x98, 0x00, 0x23, 0x00, 0x2a, 0xec, 0x95, 0x04, 0x06, 0x06, 0xf0, 0x04, 0x07, 0x06, 0xee, - 0x00, 0x24, 0xdb, 0xc0, 0x00, 0x34, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x26, - 0x40, 0x25, 0xdb, 0xc0, 0x00, 0x20, 0xe0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x12, - 0x40, 0x26, 0xdb, 0xc0, 0x00, 0x1a, 0xe0, 0x00, 0x00, 0x0c, 0x60, 0x27, 0x08, 0x0a, 0x06, 0xe6, - 0xdb, 0xc0, 0x00, 0x24, 0xe0, 0x00, 0x00, 0x16, 0x60, 0x28, 0x04, 0x30, 0x07, 0x06, 0xdc, 0x16, - 0x81, 0x00, 0x00, 0x30, 0xe0, 0x00, 0x00, 0x22, 0x60, 0x29, 0x08, 0x2d, 0x07, 0x1c, 0x08, 0x2e, - 0x07, 0x22, 0x00, 0x00, 0x02, 0x08, 0x01, 0x06, 0x06, 0x14, 0x08, 0x18, 0x0c, 0x20, 0x0e, 0x26, - 0x0f, 0x30, 0x11, 0x34, 0x12, 0x3e, 0x14, 0x42, 0x16, 0x46, 0x0a, 0x1c, 0x18, 0x4a, 0x03, 0x13, - 0x83, 0x11, 0x11, 0x01, 0x81, 0x11, 0x81, 0x12, 0x01, 0x13, 0x83, 0x52, 0x85, 0x81, 0x11, 0x85, - 0x81, 0x12, 0x81, 0x12, 0x81, 0x19, 0x85, 0x60, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x08, 0x09, 0x6c, - 0x00, 0x00, 0x06, 0x30, 0xec, 0xfc, 0x06, 0x54, 0x06, 0x50, 0x02, 0x38, 0x04, 0x21, 0x09, 0x1e, - 0x06, 0x0b, 0x06, 0xd8, 0x08, 0x02, 0x06, 0xdc, 0xc0, 0x00, 0xff, 0xff, 0xff, 0xff, 0x00, 0x41, - 0x00, 0x41, 0xae, 0x14, 0x00, 0x00, 0x81, 0x00, 0x04, 0x09, 0x07, 0x0c, 0x00, 0x41, 0x00, 0x41, - 0x02, 0x14, 0x00, 0x00, 0x81, 0x00, 0x06, 0x0b, 0x06, 0xd8, 0x06, 0x2c, 0x09, 0x76, 0x14, 0x22, - 0x09, 0x3a, 0x00, 0x41, 0x00, 0x41, 0x02, 0x54, 0x00, 0x00, 0x81, 0x00, 0x06, 0xd8, 0x84, 0x00, - 0x48, 0x00, 0xff, 0xfc, 0x00, 0x09, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0xad, 0x80, - 0x02, 0x81, 0x00, 0x00, 0x00, 0x00, 0xb0, 0x00, 0x06, 0x44, 0x54, 0x68, 0x69, 0x73, 0x20, 0x63, - 0x6f, 0x64, 0x65, 0x20, 0x69, 0x73, 0x20, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73, 0x65, 0x64, 0x20, - 0x75, 0x6e, 0x64, 0x65, 0x72, 0x20, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x63, 0x65, 0x20, 0x4f, 0x6e, - 0x6c, 0x79, 0x2c, 0x20, 0x41, 0x6c, 0x6c, 0x20, 0x72, 0x69, 0x67, 0x68, 0x74, 0x73, 0x20, 0x72, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x2e, 0x01, 0x60, 0x01, 0x42, 0x08, 0x00, 0x16, 0x08, - 0x03, 0xb0, 0x04, 0xe0, 0x00, 0x00, 0x01, 0x20, 0x00, 0x00, 0xff, 0xff, 0x13, 0xfc, 0x03, 0x80, - 0x07, 0xa0, 0x01, 0x42, 0x08, 0x00, 0x07, 0x20, 0x00, 0x00, 0x04, 0xe0, 0x01, 0x00, 0x07, 0x8b, - 0x3d, 0x00, 0x01, 0x60, 0x01, 0x42, 0x00, 0x80, 0x13, 0x09, 0x07, 0x8b, 0x2d, 0x00, 0xc0, 0x20, - 0x01, 0x4e, 0x02, 0x80, 0x0f, 0x41, 0x11, 0x02, 0x07, 0x8b, 0x3d, 0x00, 0xc8, 0x0b, 0x01, 0x4a, - 0x02, 0x00, 0xa0, 0x00, 0x09, 0xa0, 0xc8, 0x00, 0x01, 0x66, 0x02, 0xe0, 0x00, 0xa0, 0x07, 0xa0, - 0x01, 0x04, 0x00, 0x20, 0x01, 0xa0, 0x01, 0x40, 0xfe, 0x00, 0x48, 0x20, 0xe0, 0x2a, 0x01, 0x42, - 0x04, 0xe0, 0x01, 0x02, 0x04, 0xe0, 0x09, 0x60, 0x04, 0xe0, 0x01, 0x82, 0x01, 0x60, 0x01, 0x1c, - 0x00, 0x04, 0x16, 0x03, 0x01, 0xe0, 0x01, 0x40, 0x0c, 0x00, 0x06, 0xa0, 0xb1, 0xbc, 0x07, 0xa0, - 0x01, 0x04, 0x00, 0x2d, 0xc2, 0x20, 0xe0, 0x00, 0x02, 0x88, 0xe2, 0x28, 0x16, 0x14, 0x07, 0xa0, - 0x01, 0x04, 0x00, 0x2e, 0x01, 0x60, 0x01, 0x42, 0x03, 0x00, 0x16, 0x0d, 0x07, 0xa0, 0x01, 0x04, - 0x00, 0x21, 0x07, 0x88, 0xb0, 0x00, 0x07, 0x89, 0xff, 0xfe, 0x09, 0xa8, 0x09, 0xa9, 0x07, 0x8a, - 0xe0, 0x02, 0x06, 0xa0, 0xf4, 0x42, 0x10, 0x56, 0x07, 0x88, 0xa0, 0x00, 0x07, 0x89, 0xaf, 0xfe, - 0x09, 0xa8, 0x09, 0xa9, 0x07, 0x8a, 0xe0, 0x78, 0x06, 0xa0, 0xf4, 0x42, 0x10, 0x4b, 0x05, 0xa0, - 0x01, 0x04, 0x07, 0x88, 0x00, 0x08, 0x07, 0x89, 0x00, 0x7a, 0x03, 0x00, 0x00, 0x01, 0x06, 0xa0, - 0xf4, 0x7c, 0x10, 0x40, 0x06, 0xa0, 0xb1, 0xbc, 0x02, 0xe0, 0x03, 0xf4, 0x07, 0x88, 0x00, 0xa0, - 0x07, 0x89, 0x00, 0xfe, 0x06, 0xa0, 0xf4, 0x7c, 0x10, 0x35, 0x02, 0xe0, 0x00, 0xa0, 0x04, 0xe0, - 0x01, 0x7e, 0x04, 0xc8, 0x02, 0x09, 0x03, 0xf2, 0x62, 0x48, 0xc1, 0xe0, 0x01, 0x40, 0x01, 0xa0, - 0x01, 0x40, 0x04, 0x00, 0xce, 0x18, 0x06, 0x09, 0x16, 0xfd, 0x01, 0xa0, 0x01, 0x40, 0x40, 0x00, - 0xc8, 0x07, 0x01, 0x40, 0x07, 0x88, 0x03, 0xf4, 0x07, 0x89, 0x3f, 0xfe, 0x06, 0xa0, 0xf4, 0x7c, - 0x10, 0x19, 0x02, 0xe0, 0x00, 0xa0, 0x06, 0xa0, 0xf5, 0xa4, 0x10, 0x14, 0xc8, 0x08, 0x04, 0x44, - 0xc8, 0x09, 0x04, 0x46, 0x06, 0xa0, 0xf4, 0xd2, 0x10, 0x0d, 0x07, 0x81, 0xe0, 0x7c, 0xc0, 0xb1, - 0x13, 0x26, 0xc8, 0x01, 0x00, 0xe0, 0x05, 0xa0, 0x01, 0x04, 0x06, 0x92, 0x10, 0x03, 0xc0, 0x60, - 0x00, 0xe0, 0x10, 0xf5, 0x01, 0xe0, 0x01, 0x04, 0x00, 0x10, 0x03, 0xb0, 0x10, 0xff, 0x01, 0xa0, - 0x01, 0x04, 0x80, 0x00, 0x03, 0x80, 0x07, 0x80, 0x00, 0xa0, 0x04, 0xc2, 0xcc, 0x80, 0x07, 0x81, - 0xb1, 0xaa, 0x02, 0x82, 0x00, 0x1e, 0x16, 0x02, 0x07, 0x81, 0xb1, 0xb4, 0xc4, 0x81, 0x8c, 0x81, - 0x16, 0xe9, 0x02, 0x82, 0x00, 0x7c, 0x16, 0xf2, 0x03, 0x00, 0x00, 0x0f, 0x04, 0x5b, 0x07, 0x81, - 0xe1, 0x08, 0x07, 0x82, 0x00, 0x04, 0x04, 0xe0, 0x01, 0x80, 0x04, 0xe0, 0x01, 0x82, 0xc4, 0x91, - 0x8c, 0xb1, 0x16, 0xd8, 0x02, 0x82, 0x00, 0x7c, 0x16, 0xfa, 0xc8, 0x20, 0xe0, 0x04, 0x01, 0x82, - 0xe8, 0x20, 0xe0, 0x0c, 0x01, 0x82, 0xc8, 0x20, 0xe0, 0x10, 0x01, 0x80, 0x07, 0x81, 0xe0, 0x86, - 0xc0, 0xb1, 0x13, 0x07, 0xc4, 0xb1, 0x10, 0xfc, 0x07, 0xa0, 0x01, 0x04, 0x00, 0x2e, 0x04, 0x60, - 0xb1, 0xaa, 0x07, 0x81, 0xe0, 0x34, 0x07, 0x82, 0x05, 0xfc, 0x07, 0x83, 0x00, 0x0a, 0xcc, 0xb1, - 0x06, 0x43, 0x16, 0xfd, 0x02, 0x02, 0x06, 0x00, 0xd0, 0x60, 0x01, 0x4e, 0x13, 0xed, 0x02, 0x21, - 0xf7, 0x00, 0x02, 0x21, 0xc0, 0x00, 0xdc, 0x81, 0xd0, 0x60, 0x01, 0x4f, 0xc0, 0xc1, 0x09, 0x41, - 0x02, 0x21, 0xf0, 0x00, 0xdc, 0x81, 0x02, 0x43, 0x0f, 0x00, 0x02, 0x23, 0xf0, 0x00, 0xdc, 0x83, - 0x02, 0x01, 0x0c, 0x32, 0xc0, 0xa0, 0x04, 0x44, 0xc0, 0xe0, 0x04, 0x46, 0xc1, 0x03, 0x61, 0x02, - 0x05, 0x84, 0xc8, 0x04, 0x04, 0x48, 0xc1, 0x03, 0x05, 0x84, 0xa1, 0x04, 0xa1, 0x01, 0xc8, 0x04, - 0x0c, 0x30, 0xc1, 0x03, 0x05, 0x84, 0x04, 0xf1, 0x06, 0x04, 0x16, 0xfd, 0x02, 0x08, 0xb0, 0x00, - 0x09, 0xa8, 0xc2, 0x60, 0x0c, 0x30, 0x02, 0x29, 0x03, 0xff, 0x09, 0xa9, 0x02, 0x29, 0x00, 0x40, - 0x07, 0x80, 0xa0, 0x00, 0x09, 0xa0, 0x07, 0x8a, 0xaf, 0xfe, 0x02, 0x2a, 0x03, 0xff, 0x09, 0xaa, - 0x02, 0x01, 0x0c, 0x32, 0x02, 0x05, 0x00, 0x00, 0xc1, 0x03, 0x05, 0x84, 0x07, 0x11, 0x05, 0xc1, - 0x05, 0x85, 0x06, 0x04, 0x13, 0x0b, 0x80, 0x85, 0x1a, 0xf9, 0x80, 0x05, 0x1a, 0xf8, 0x82, 0x85, - 0x1a, 0xf5, 0x82, 0x05, 0x1a, 0xf4, 0x82, 0x45, 0x1a, 0xf1, 0x10, 0xf1, 0x2d, 0x20, 0x00, 0x02, - 0x01, 0x60, 0x01, 0x40, 0x40, 0x00, 0x16, 0x06, 0x07, 0x8a, 0x08, 0x00, 0x01, 0xa0, 0x01, 0x40, - 0x40, 0x00, 0x10, 0x48, 0x01, 0x60, 0x01, 0x42, 0x80, 0x00, 0x16, 0x06, 0x07, 0x8a, 0x10, 0x00, - 0x01, 0xa0, 0x01, 0x42, 0x80, 0x00, 0x10, 0x3e, 0x01, 0x60, 0x01, 0x02, 0x10, 0x00, 0x16, 0x0a, - 0x01, 0x60, 0x01, 0x00, 0x04, 0x00, 0x16, 0x06, 0x07, 0x8a, 0x80, 0x00, 0x01, 0xa0, 0x01, 0x02, - 0x10, 0x00, 0x10, 0x30, 0x01, 0x60, 0x01, 0x02, 0x08, 0x00, 0x16, 0x0a, 0x01, 0x60, 0x01, 0x00, - 0x04, 0x00, 0x16, 0x06, 0x01, 0xa0, 0x01, 0x02, 0x08, 0x00, 0x02, 0x0d, 0x00, 0x01, 0x10, 0x0d, - 0x01, 0x60, 0x01, 0x02, 0x04, 0x00, 0x16, 0x16, 0x01, 0x60, 0x01, 0x00, 0x08, 0x00, 0x16, 0x12, - 0x01, 0xa0, 0x01, 0x02, 0x04, 0x00, 0x02, 0x0d, 0x00, 0x02, 0xc3, 0xa0, 0x01, 0x0e, 0xc3, 0xe0, - 0x01, 0x10, 0x07, 0x8a, 0x20, 0x00, 0x01, 0x60, 0x01, 0x00, 0x80, 0x00, 0x13, 0x0b, 0x07, 0x8a, - 0x40, 0x00, 0x10, 0x08, 0x07, 0x8a, 0x00, 0x04, 0x10, 0x05, 0x07, 0x8a, 0x00, 0x02, 0x10, 0x02, - 0x07, 0x8a, 0x00, 0x08, 0x03, 0x00, 0x00, 0x00, 0x04, 0xe0, 0x01, 0x82, 0x07, 0x8b, 0x05, 0xe0, - 0xce, 0xca, 0xce, 0xcd, 0xce, 0xce, 0xc6, 0xcf, 0xc3, 0x20, 0x07, 0x58, 0x23, 0x20, 0xe0, 0x04, - 0x13, 0x12, 0x07, 0x8b, 0xff, 0x18, 0x02, 0x8a, 0x80, 0x00, 0x13, 0x0a, 0x05, 0x8b, 0xa2, 0xcd, - 0x02, 0x8a, 0x40, 0x00, 0x13, 0x05, 0x02, 0x8a, 0x20, 0x00, 0x13, 0x02, 0x07, 0x8b, 0xff, 0x1d, - 0xc8, 0x0b, 0x01, 0x04, 0x10, 0x0d, 0xd3, 0x20, 0x01, 0x05, 0x11, 0xfd, 0xd8, 0x20, 0x07, 0xdf, - 0x01, 0x17, 0x07, 0x8b, 0xff, 0x80, 0xc8, 0x0b, 0x01, 0x04, 0xe8, 0x20, 0xe0, 0x0a, 0x01, 0x00, - 0xc2, 0xe0, 0x01, 0x04, 0x22, 0xe0, 0xe1, 0x86, 0x16, 0xfb, 0x02, 0xe0, 0x00, 0xa0, 0x04, 0xe0, - 0x01, 0x82, 0xe8, 0x20, 0xe0, 0x0a, 0x01, 0x00, 0xc2, 0xe0, 0x01, 0x00, 0x22, 0xe0, 0xe0, 0x06, - 0x13, 0xf8, 0x01, 0xa0, 0x01, 0x40, 0xf6, 0x00, 0x04, 0x60, 0xb0, 0x90, 0x03, 0x00, 0x00, 0x02, - 0x07, 0xa0, 0x01, 0x02, 0xdf, 0xff, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, - 0x07, 0x09, 0xc2, 0xa0, 0x01, 0x04, 0x01, 0x8a, 0x00, 0x80, 0x52, 0x4a, 0xd2, 0x89, 0xc8, 0x0a, - 0x01, 0x04, 0xd2, 0xa0, 0x01, 0x04, 0x16, 0xf9, 0x05, 0x49, 0x01, 0x89, 0x80, 0x00, 0x01, 0x49, - 0x40, 0x00, 0x13, 0x0e, 0xf8, 0x09, 0x07, 0x3a, 0xc2, 0x60, 0x07, 0x36, 0x16, 0x03, 0x03, 0x90, - 0xff, 0xff, 0x03, 0x80, 0x04, 0xe0, 0x07, 0x36, 0x04, 0x54, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, - 0x22, 0x60, 0xe1, 0x86, 0x13, 0xc2, 0x04, 0xe0, 0x01, 0x82, 0x04, 0x60, 0xb3, 0xe0, 0x03, 0x00, - 0x00, 0x02, 0x07, 0xa0, 0x09, 0x62, 0x03, 0xe8, 0x04, 0xc9, 0xc1, 0xa0, 0x06, 0x34, 0x16, 0x04, - 0x06, 0xa0, 0xc2, 0xae, 0x04, 0xe0, 0x09, 0x20, 0x07, 0x86, 0x05, 0xe8, 0x01, 0xa0, 0x01, 0x40, - 0x80, 0x00, 0xc2, 0x20, 0x01, 0x84, 0x48, 0x20, 0xe0, 0x08, 0x01, 0x84, 0x22, 0x20, 0xe0, 0x08, - 0x13, 0x08, 0x01, 0x60, 0x01, 0xae, 0x00, 0x01, 0x16, 0x04, 0x01, 0xe0, 0x06, 0x34, 0x80, 0x00, - 0x10, 0x06, 0xc2, 0x20, 0x09, 0x32, 0x13, 0x06, 0x01, 0xe0, 0x06, 0x34, 0x08, 0x00, 0x04, 0xe0, - 0x06, 0x30, 0x07, 0x09, 0x05, 0xa0, 0x05, 0xee, 0x06, 0x20, 0x05, 0xec, 0x16, 0x02, 0xc2, 0x16, - 0x16, 0x03, 0xc2, 0x49, 0x16, 0x12, 0x03, 0x80, 0xc5, 0x98, 0xc1, 0xe8, 0x00, 0x02, 0xe9, 0xe0, - 0xe0, 0x14, 0x00, 0x04, 0x04, 0xd7, 0x02, 0x27, 0x00, 0x08, 0x06, 0xa0, 0xc2, 0x44, 0xc2, 0x16, - 0x13, 0x04, 0xc8, 0x28, 0x00, 0x08, 0x05, 0xec, 0x13, 0xef, 0x04, 0x54, 0x03, 0x00, 0x00, 0x02, - 0xc1, 0xe0, 0x01, 0x86, 0x02, 0x47, 0x00, 0x0e, 0xc2, 0xa7, 0xe1, 0x90, 0x04, 0x5a, 0x07, 0x8a, - 0xa0, 0x00, 0xc8, 0x0a, 0x01, 0x86, 0xa1, 0xc7, 0x02, 0x27, 0xe1, 0x98, 0xe8, 0x37, 0x06, 0x34, - 0xe8, 0x17, 0x06, 0xd2, 0x04, 0xe0, 0x06, 0x30, 0x04, 0x60, 0xb9, 0xc0, 0xe8, 0x0a, 0x06, 0xd2, - 0x01, 0xe0, 0x06, 0x34, 0x08, 0x00, 0x04, 0xe0, 0x06, 0x30, 0xe0, 0x20, 0xe0, 0x18, 0x04, 0x5b, - 0x05, 0xa0, 0x09, 0x20, 0x88, 0x20, 0x09, 0x20, 0xe0, 0x16, 0x1a, 0xe5, 0x04, 0xe0, 0x09, 0x20, - 0x06, 0xa0, 0xe1, 0x18, 0x03, 0x80, 0x05, 0xa0, 0x09, 0x32, 0x03, 0x80, 0xc3, 0x01, 0x13, 0xfb, - 0x01, 0x60, 0x09, 0x6a, 0x00, 0x01, 0x13, 0x78, 0x05, 0xa0, 0x09, 0x32, 0x10, 0x75, 0xc0, 0x41, - 0x13, 0x06, 0xc8, 0x01, 0x01, 0x6c, 0xc2, 0xe0, 0xfc, 0x02, 0x11, 0x01, 0x10, 0x7b, 0x01, 0x60, - 0x01, 0x9c, 0x00, 0x40, 0x16, 0x79, 0xd8, 0x20, 0x09, 0x2f, 0x01, 0x83, 0xc0, 0x41, 0x13, 0x04, - 0xc8, 0x01, 0x01, 0x8a, 0xc8, 0x01, 0x09, 0x18, 0x07, 0x86, 0x00, 0x43, 0xc8, 0x06, 0x01, 0x6c, - 0x02, 0x07, 0xfc, 0x02, 0xc2, 0x17, 0x04, 0x60, 0xb6, 0xfa, 0x04, 0xe0, 0x09, 0x18, 0x61, 0xc7, - 0x07, 0x08, 0x01, 0x60, 0xfc, 0x06, 0x00, 0x40, 0x13, 0x02, 0x02, 0x08, 0x00, 0x01, 0x10, 0x09, - 0xc2, 0x4c, 0xc3, 0x20, 0xfc, 0x00, 0x13, 0x2a, 0xc8, 0x0c, 0x01, 0x6c, 0xc2, 0xe0, 0xfc, 0x02, - 0x11, 0x1b, 0x01, 0x4b, 0x01, 0x00, 0x16, 0xf4, 0x22, 0xc8, 0x13, 0x12, 0x01, 0xcb, 0x40, 0x00, - 0xc8, 0x0b, 0xfc, 0x02, 0x10, 0x0d, 0xc1, 0xe0, 0x09, 0x18, 0xc3, 0x01, 0x13, 0x21, 0xc2, 0x4c, - 0x13, 0x15, 0xc8, 0x0c, 0x01, 0x6c, 0xc2, 0xe0, 0xfc, 0x02, 0x11, 0x06, 0x81, 0xcc, 0x13, 0xd5, - 0xc2, 0x4c, 0xc3, 0x20, 0xfc, 0x00, 0x10, 0xf4, 0xc8, 0x09, 0x01, 0x6c, 0xc2, 0xe0, 0xfc, 0x02, - 0x16, 0x1e, 0x07, 0xa0, 0xfc, 0x02, 0x80, 0x00, 0xc3, 0x09, 0x10, 0x19, 0xc8, 0x09, 0x01, 0x6c, - 0xc2, 0xe0, 0xfc, 0x02, 0x16, 0x05, 0x07, 0xa0, 0xfc, 0x02, 0x80, 0x00, 0xc3, 0x09, 0x10, 0x0f, - 0xc2, 0xe0, 0x0c, 0x02, 0x11, 0x01, 0x10, 0x1e, 0xd8, 0x20, 0xe2, 0x00, 0x01, 0x83, 0x00, 0x00, - 0xb6, 0x44, 0x00, 0x09, 0x09, 0x8b, 0x00, 0x00, 0xb6, 0x4c, 0x0b, 0x36, 0x07, 0xa0, 0x01, 0x8a, - 0x00, 0x43, 0x10, 0x13, 0xc8, 0x0c, 0x01, 0x8a, 0xc8, 0x0c, 0x09, 0x18, 0x10, 0x0e, 0x03, 0x00, - 0x00, 0x02, 0xc0, 0xe0, 0x01, 0x6c, 0xc3, 0x20, 0x01, 0x8a, 0x98, 0x20, 0x01, 0x83, 0xe2, 0x00, - 0x13, 0x81, 0x01, 0x60, 0x01, 0x9c, 0x00, 0x40, 0x13, 0xb9, 0x83, 0x01, 0x16, 0x31, 0xc8, 0x03, - 0x01, 0x6c, 0x01, 0x40, 0x00, 0x10, 0x16, 0x14, 0xc2, 0xe0, 0x06, 0x2e, 0x13, 0x11, 0xc2, 0xe0, - 0x05, 0xf8, 0x13, 0x0e, 0x01, 0xe0, 0x07, 0x3a, 0x80, 0x00, 0x01, 0x80, 0x00, 0x10, 0xc2, 0xe0, - 0x07, 0x36, 0x13, 0x06, 0x04, 0xe0, 0x07, 0x36, 0x01, 0x80, 0x00, 0x20, 0x04, 0x60, 0xb9, 0xc0, - 0x01, 0x40, 0x00, 0x20, 0x13, 0xf9, 0x03, 0x90, 0x11, 0xff, 0x03, 0x80, 0x01, 0x08, 0x04, 0x00, - 0x16, 0x19, 0x01, 0x60, 0x09, 0x6a, 0x00, 0x01, 0x16, 0x15, 0x01, 0x88, 0x1a, 0x00, 0x01, 0xc8, - 0x01, 0x00, 0xc5, 0xc8, 0x10, 0x0f, 0x04, 0xe0, 0x09, 0x18, 0x01, 0xc0, 0x00, 0x04, 0x10, 0x15, - 0xc1, 0x81, 0xc8, 0x01, 0x01, 0x6c, 0x02, 0x07, 0xfc, 0x00, 0xc0, 0x77, 0xc2, 0x17, 0x01, 0x48, - 0x18, 0x00, 0x13, 0xe4, 0x01, 0x40, 0x00, 0x40, 0x16, 0x15, 0x01, 0x80, 0x00, 0x45, 0xc1, 0x46, - 0xd0, 0x20, 0xfc, 0x07, 0x81, 0x60, 0x09, 0x18, 0x13, 0xe6, 0xc2, 0xe0, 0xfc, 0x08, 0x11, 0x08, - 0xc2, 0xe0, 0xfc, 0x0e, 0x15, 0x07, 0x13, 0x06, 0xc2, 0xe0, 0xfc, 0x14, 0x15, 0x03, 0x13, 0x02, - 0x01, 0xc0, 0x00, 0x01, 0x01, 0x48, 0x01, 0x00, 0x13, 0x11, 0x01, 0x40, 0x40, 0x80, 0x13, 0x5b, - 0x04, 0x60, 0xb6, 0x66, 0x01, 0x48, 0x00, 0x01, 0x16, 0x03, 0x01, 0x40, 0x40, 0x00, 0x16, 0x0b, - 0x01, 0xc8, 0x40, 0x00, 0x05, 0xa0, 0x09, 0x32, 0xc5, 0xc8, 0x10, 0x05, 0x01, 0xc0, 0x00, 0x40, - 0x01, 0x40, 0x00, 0x04, 0x13, 0xef, 0x05, 0xc7, 0xc2, 0xd7, 0x62, 0xc4, 0x05, 0x0b, 0x02, 0x2b, - 0xff, 0xfc, 0xc5, 0xcb, 0x15, 0x02, 0x81, 0x46, 0x13, 0x5d, 0x01, 0x08, 0x5e, 0x00, 0x16, 0x5a, - 0x01, 0x08, 0x00, 0x88, 0x16, 0x13, 0x02, 0x86, 0x00, 0x43, 0x16, 0x1e, 0x01, 0x40, 0x40, 0x00, - 0x13, 0x0b, 0x01, 0x08, 0x00, 0x03, 0x13, 0x08, 0xc2, 0x84, 0x02, 0x2a, 0xff, 0xd8, 0xc8, 0x06, - 0x01, 0x6c, 0x68, 0x0a, 0xfc, 0x04, 0x10, 0x66, 0x04, 0x60, 0xb8, 0xa8, 0x01, 0x40, 0x00, 0x01, - 0x13, 0xea, 0x01, 0x08, 0x00, 0x02, 0x16, 0xe7, 0x01, 0x48, 0x00, 0x01, 0x16, 0xe4, 0x07, 0x8a, - 0x00, 0x80, 0x06, 0xa0, 0xb5, 0x32, 0x10, 0xdf, 0xc0, 0x00, 0x11, 0xee, 0xc2, 0x60, 0x09, 0x6a, - 0x01, 0x40, 0x40, 0x00, 0x13, 0x0a, 0x01, 0x48, 0x00, 0x01, 0x13, 0x2e, 0x01, 0x48, 0x00, 0x02, - 0x13, 0x04, 0x01, 0x49, 0x00, 0x04, 0x16, 0xe0, 0x10, 0x00, 0x01, 0x49, 0x00, 0x01, 0x13, 0x12, - 0x01, 0x40, 0x40, 0x80, 0x16, 0x01, 0xc1, 0x46, 0x04, 0xe0, 0xfc, 0x00, 0x07, 0x87, 0x05, 0xf8, - 0xc2, 0x17, 0x13, 0x14, 0x05, 0xc7, 0xc8, 0x17, 0x01, 0x6c, 0xc8, 0x05, 0xfc, 0x00, 0xc5, 0xc6, - 0x04, 0x60, 0xb6, 0x66, 0x02, 0x07, 0xfc, 0x02, 0xa1, 0xe0, 0x09, 0x2c, 0xcd, 0xe0, 0x05, 0xee, - 0xc5, 0xe0, 0xfc, 0x04, 0xc8, 0x20, 0x09, 0x2c, 0xfc, 0x04, 0x10, 0xe2, 0xcd, 0xc5, 0xc5, 0xc6, - 0x04, 0x60, 0xb6, 0x66, 0x04, 0x60, 0xb8, 0x8c, 0xc8, 0x06, 0x01, 0x6c, 0x81, 0x85, 0x13, 0x1a, - 0xc2, 0xe0, 0xfc, 0x04, 0x15, 0x17, 0xc2, 0x86, 0xa2, 0x8a, 0xc1, 0xaa, 0x0c, 0x32, 0xc8, 0x06, - 0x01, 0x6c, 0xa8, 0x0b, 0xfc, 0x04, 0x09, 0x1a, 0xc8, 0x0a, 0x01, 0x6c, 0xc2, 0xe0, 0xfc, 0x02, - 0x04, 0xe0, 0xfc, 0x00, 0xc8, 0x06, 0x01, 0x6c, 0xc8, 0x0b, 0xfc, 0x02, 0x06, 0xa0, 0xc1, 0x9c, - 0xc8, 0x06, 0x01, 0x6c, 0x04, 0xe0, 0xfc, 0x00, 0x01, 0xa0, 0xfc, 0x02, 0x00, 0x02, 0x07, 0x87, - 0x06, 0x30, 0x01, 0xe7, 0x00, 0x04, 0x00, 0x40, 0x04, 0xd7, 0x02, 0x27, 0x00, 0x0c, 0xc2, 0x05, - 0x06, 0xa0, 0xc2, 0x5a, 0x01, 0xc0, 0x00, 0x20, 0x04, 0x60, 0xb6, 0x66, 0x01, 0x48, 0x18, 0x00, - 0x13, 0x03, 0x01, 0x48, 0x10, 0x00, 0x16, 0x02, 0x05, 0xa0, 0x09, 0x32, 0x02, 0x86, 0x00, 0x43, - 0x13, 0x03, 0x01, 0x40, 0x40, 0x80, 0x13, 0x9f, 0xc8, 0x06, 0x01, 0x6c, 0x04, 0xe0, 0xfc, 0x00, - 0xc2, 0x85, 0x06, 0xa0, 0xc1, 0x9c, 0x06, 0x20, 0x09, 0x62, 0x16, 0xe6, 0x06, 0xa0, 0xe1, 0x18, - 0x10, 0xe3, 0xc2, 0xa0, 0x05, 0xf6, 0x16, 0x52, 0xc8, 0x19, 0x05, 0xf0, 0xc2, 0xa9, 0x00, 0x0a, - 0x11, 0x0d, 0xf2, 0xa0, 0x09, 0x2e, 0xd8, 0x0a, 0x01, 0x80, 0xc8, 0x29, 0x00, 0x06, 0x01, 0x8c, - 0x07, 0xa0, 0x09, 0x16, 0x00, 0x04, 0xc8, 0x09, 0x05, 0xf4, 0x10, 0x42, 0xc8, 0x29, 0x00, 0x06, - 0x01, 0x6c, 0xc8, 0x20, 0xfc, 0x0e, 0x01, 0xbc, 0xc8, 0x20, 0xfc, 0x10, 0x01, 0xb0, 0xc8, 0x20, - 0xfc, 0x12, 0x01, 0xb2, 0xf2, 0xa0, 0x09, 0x2e, 0x01, 0x8a, 0x10, 0x00, 0x01, 0xa0, 0x01, 0x80, - 0xc4, 0x00, 0x10, 0xe1, 0x01, 0x47, 0x00, 0x08, 0x16, 0x06, 0xc2, 0xa8, 0x00, 0x06, 0x06, 0xa0, - 0xc1, 0x9c, 0x04, 0xe8, 0x00, 0x06, 0x01, 0x07, 0x00, 0x20, 0x13, 0x2d, 0x04, 0xe8, 0x00, 0x02, - 0x10, 0x37, 0x04, 0xe0, 0xfc, 0x00, 0x06, 0xa0, 0xc1, 0x9c, 0x10, 0x25, 0x03, 0x00, 0x00, 0x02, - 0xc2, 0x20, 0x01, 0x8c, 0xc0, 0xe0, 0x01, 0x6c, 0xc2, 0x20, 0x05, 0xf4, 0xc8, 0x28, 0x00, 0x08, - 0x01, 0x6c, 0xc1, 0xe8, 0x00, 0x0a, 0xc3, 0x20, 0xfc, 0x02, 0x01, 0x0c, 0xfe, 0x00, 0x16, 0x3b, - 0x01, 0x47, 0x00, 0x40, 0x13, 0x50, 0xc2, 0x60, 0x05, 0xf0, 0x16, 0xab, 0x04, 0xe0, 0x05, 0xf4, - 0xca, 0x0c, 0x00, 0x08, 0x01, 0x47, 0x00, 0x80, 0x16, 0xcd, 0xc8, 0x28, 0x00, 0x06, 0x01, 0x6c, - 0xc2, 0xa0, 0xfc, 0x00, 0x16, 0xd6, 0xc1, 0xe8, 0x00, 0x02, 0xc2, 0xd7, 0x16, 0x0f, 0x02, 0x27, - 0x00, 0x10, 0x04, 0xd8, 0xc2, 0x57, 0x13, 0x0e, 0x05, 0xc7, 0xc2, 0x57, 0xc6, 0x48, 0xc5, 0xc8, - 0xc8, 0x03, 0x01, 0x6c, 0x11, 0x0d, 0x03, 0x90, 0x11, 0xff, 0x03, 0x80, 0x04, 0xd7, 0x01, 0xc3, - 0x80, 0x00, 0x10, 0xed, 0x01, 0xe7, 0xff, 0xf4, 0x00, 0x20, 0xcd, 0xc8, 0xc5, 0xc8, 0x10, 0xf0, - 0x03, 0x90, 0x11, 0xf8, 0x02, 0xe0, 0x00, 0xc0, 0xc3, 0x60, 0x00, 0xfa, 0xc3, 0xa0, 0x00, 0xfc, - 0xc3, 0xe0, 0x00, 0xfe, 0x04, 0x54, 0xc2, 0xe8, 0x00, 0x08, 0xc2, 0xa8, 0x00, 0x06, 0xc3, 0x0c, - 0x11, 0x33, 0x23, 0x20, 0xe0, 0x0a, 0x13, 0x45, 0x23, 0x20, 0xe0, 0x10, 0x13, 0x46, 0x23, 0x20, - 0xe0, 0x0e, 0x13, 0x13, 0x21, 0xe0, 0xe0, 0x16, 0x16, 0xb6, 0x23, 0x20, 0xe0, 0x06, 0x16, 0x03, - 0x27, 0x20, 0xe4, 0x68, 0x13, 0x0a, 0xc2, 0xe8, 0x00, 0x08, 0xc2, 0xa8, 0x00, 0x06, 0x01, 0x4c, - 0x00, 0x88, 0x16, 0xa9, 0x01, 0x0c, 0x00, 0x44, 0x16, 0xa6, 0x06, 0x20, 0x09, 0x16, 0x13, 0xa3, - 0xc8, 0x0a, 0x01, 0x6c, 0xc8, 0x20, 0xe0, 0x04, 0xfc, 0x02, 0xc8, 0x0b, 0x01, 0x6c, 0x07, 0xa0, - 0xfc, 0x02, 0x81, 0x00, 0xc3, 0x20, 0x01, 0x80, 0x01, 0xa0, 0x01, 0x80, 0xc4, 0x00, 0xc8, 0x0c, - 0x01, 0x80, 0xc8, 0x0a, 0x01, 0x8c, 0x10, 0xac, 0xc2, 0x0a, 0x13, 0x0f, 0xc8, 0x08, 0x01, 0x6c, - 0xc2, 0xa0, 0xfc, 0x00, 0xc3, 0x20, 0xfc, 0x02, 0x23, 0x20, 0xe0, 0x12, 0x16, 0xf5, 0xc8, 0x0b, - 0x01, 0x6c, 0xc8, 0x0c, 0xfc, 0x02, 0x04, 0x60, 0xb9, 0x48, 0x07, 0x8a, 0x04, 0x00, 0x04, 0x60, - 0xb3, 0x8a, 0x07, 0x8a, 0x00, 0x20, 0x04, 0x60, 0xb3, 0x8a, 0x07, 0x8a, 0x02, 0x00, 0x27, 0x20, - 0xe0, 0x0e, 0x16, 0x02, 0x06, 0xa0, 0xb5, 0x32, 0xc2, 0xa8, 0x00, 0x06, 0x04, 0x60, 0xb9, 0x66, - 0x03, 0x00, 0x00, 0x02, 0x01, 0xc0, 0x00, 0x10, 0xc2, 0xe0, 0x06, 0x2e, 0x13, 0x08, 0xc2, 0xe0, - 0x05, 0xf8, 0x13, 0x05, 0x01, 0xe0, 0x07, 0x3a, 0x80, 0x00, 0x01, 0x80, 0x00, 0x10, 0x03, 0x90, - 0x7f, 0xff, 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, 0xc2, 0x20, 0x05, 0xf6, 0xe2, 0x20, 0x05, 0xf4, - 0x16, 0x0e, 0xd8, 0x20, 0x09, 0x2e, 0x01, 0x80, 0xc8, 0x2b, 0x00, 0x06, 0x01, 0x8c, 0x07, 0xa0, - 0x09, 0x16, 0x00, 0x04, 0xc8, 0x0b, 0x05, 0xf4, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, 0x07, 0x87, - 0x05, 0xf0, 0x04, 0xdb, 0xc2, 0x57, 0x16, 0x05, 0xcd, 0xcb, 0xc5, 0xcb, 0x03, 0x90, 0xff, 0xff, - 0x03, 0x80, 0x05, 0xc7, 0xc2, 0x57, 0xc6, 0x4b, 0xc5, 0xcb, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, - 0x03, 0x00, 0x00, 0x02, 0xc2, 0x0b, 0xc3, 0x20, 0x05, 0xf4, 0x13, 0x0f, 0xc2, 0xa8, 0x00, 0x0a, - 0x01, 0x4a, 0x00, 0x10, 0x16, 0x16, 0x22, 0xa0, 0xe0, 0x04, 0x16, 0x1a, 0xc3, 0x08, 0x06, 0xa0, - 0xbb, 0xfe, 0xc2, 0x0c, 0xc3, 0x20, 0x05, 0xf4, 0x16, 0x13, 0x01, 0x68, 0x00, 0x0a, 0x00, 0x10, - 0x13, 0x03, 0xc2, 0xe0, 0x05, 0xf6, 0x16, 0x05, 0x06, 0xa0, 0xbc, 0x40, 0x03, 0x90, 0xff, 0xff, - 0x03, 0x80, 0x07, 0x87, 0x05, 0xf0, 0x06, 0xa0, 0xc2, 0x44, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, - 0x07, 0x87, 0x05, 0xf0, 0x06, 0xa0, 0xc2, 0x8a, 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, 0x07, 0x87, - 0x05, 0xf0, 0xc2, 0xcb, 0x16, 0x08, 0x06, 0xa0, 0xbb, 0xfe, 0x07, 0x20, 0x05, 0xf6, 0xcb, 0x60, - 0x05, 0xf4, 0x00, 0x02, 0x03, 0x80, 0x04, 0xe0, 0x05, 0xf6, 0xc2, 0x20, 0x05, 0xf4, 0x16, 0x05, - 0xc2, 0x17, 0x13, 0x03, 0xc5, 0xd8, 0x06, 0xa0, 0xbc, 0x40, 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, - 0xc2, 0x8b, 0x06, 0xa0, 0xbb, 0xfe, 0xc1, 0xca, 0x02, 0x27, 0x00, 0x10, 0x07, 0x88, 0x05, 0xf0, - 0xc1, 0x88, 0xc2, 0x18, 0x13, 0x26, 0x82, 0xa8, 0x00, 0x02, 0x16, 0xfa, 0xc2, 0xe8, 0x00, 0x0a, - 0x22, 0xe0, 0xe0, 0x1e, 0x16, 0xf5, 0xc5, 0x98, 0x22, 0xe0, 0xe0, 0x1c, 0x16, 0x0b, 0xc8, 0x28, - 0x00, 0x06, 0x00, 0xf4, 0x02, 0xe0, 0x00, 0xe0, 0x06, 0xa0, 0xc1, 0x9c, 0x02, 0xe0, 0x00, 0xc0, - 0x04, 0xe8, 0x00, 0x06, 0x22, 0xe0, 0xe0, 0x18, 0x13, 0xe4, 0xea, 0x20, 0xe0, 0x22, 0x00, 0x0a, - 0xea, 0xa0, 0xe0, 0x18, 0x00, 0x04, 0x04, 0xda, 0x06, 0xa0, 0xc2, 0x44, 0x06, 0x47, 0xc2, 0x06, - 0x10, 0xd8, 0xc8, 0x06, 0x05, 0xf2, 0xcb, 0x60, 0x05, 0xf4, 0x00, 0x02, 0x04, 0x54, 0xc2, 0x20, - 0x05, 0xf4, 0x13, 0x13, 0x01, 0xe0, 0x01, 0x9c, 0x40, 0x00, 0x0b, 0x8b, 0x0b, 0x8b, 0x01, 0x60, - 0x01, 0x9c, 0x40, 0x00, 0x16, 0x0a, 0xc2, 0x60, 0x01, 0x6c, 0xc8, 0x28, 0x00, 0x06, 0x01, 0x6c, - 0xc2, 0xa0, 0xfc, 0x02, 0x11, 0x03, 0xc8, 0x09, 0x01, 0x6c, 0x04, 0x5b, 0xc8, 0x09, 0x01, 0x6c, - 0xc2, 0x4b, 0x07, 0x87, 0x05, 0xf0, 0x06, 0xa0, 0xc2, 0x8a, 0x04, 0xe0, 0x05, 0xf4, 0x04, 0x59, - 0xc2, 0xa8, 0x00, 0x0a, 0x11, 0x0d, 0xf2, 0xa0, 0x09, 0x2e, 0xd8, 0x0a, 0x01, 0x80, 0xc8, 0x28, - 0x00, 0x06, 0x01, 0x8c, 0x07, 0xa0, 0x09, 0x16, 0x00, 0x04, 0xc8, 0x08, 0x05, 0xf4, 0x04, 0x5b, - 0xc3, 0x20, 0x01, 0x6c, 0xc8, 0x28, 0x00, 0x06, 0x01, 0x6c, 0xc8, 0x20, 0xfc, 0x0e, 0x01, 0xbc, - 0xc8, 0x20, 0xfc, 0x10, 0x01, 0xb0, 0xc8, 0x20, 0xfc, 0x12, 0x01, 0xb2, 0xc8, 0x0c, 0x01, 0x6c, - 0xf2, 0xa0, 0x09, 0x2e, 0x01, 0x8a, 0x10, 0x00, 0x01, 0xa0, 0x01, 0x80, 0xc4, 0x00, 0x10, 0xdd, - 0x07, 0x33, 0x07, 0x33, 0x10, 0x0c, 0x07, 0x13, 0x07, 0x23, 0x00, 0x02, 0xc8, 0xcb, 0x00, 0x06, - 0x02, 0x23, 0x00, 0x18, 0xcc, 0xe0, 0x01, 0x6c, 0xcc, 0xcd, 0xcc, 0xce, 0xcc, 0xcf, 0x07, 0x83, - 0x06, 0x30, 0xc1, 0xd3, 0x13, 0x0a, 0x07, 0x83, 0x07, 0x36, 0xc1, 0xd3, 0x13, 0x06, 0x07, 0x83, - 0x00, 0xa0, 0x00, 0x93, 0xc8, 0x0c, 0x01, 0x6c, 0x03, 0x80, 0x07, 0x63, 0x00, 0x02, 0x15, 0x2a, - 0xc2, 0x63, 0x00, 0x04, 0x42, 0x63, 0x00, 0x06, 0x13, 0xdb, 0xc3, 0x63, 0x00, 0x1a, 0xd2, 0x49, - 0x13, 0x0c, 0x06, 0xc9, 0x72, 0x49, 0xd2, 0x69, 0xe1, 0xc0, 0x06, 0xc9, 0x72, 0x49, 0x48, 0xe9, - 0xe0, 0x04, 0x00, 0x04, 0xcb, 0x49, 0x00, 0x02, 0x04, 0x52, 0xc2, 0x69, 0xe1, 0xc0, 0x72, 0x49, - 0x02, 0x29, 0x00, 0x10, 0xc2, 0xc3, 0xa2, 0xe9, 0xe1, 0xa8, 0xc3, 0x1b, 0x02, 0x89, 0x00, 0x12, - 0x13, 0x0f, 0xc6, 0xdc, 0x16, 0x03, 0x48, 0xe9, 0xe0, 0x04, 0x00, 0x04, 0xcb, 0x49, 0x00, 0x02, - 0xcb, 0x4c, 0x00, 0x04, 0x03, 0x90, 0x01, 0xff, 0x00, 0x93, 0xc8, 0x0c, 0x01, 0x6c, 0x03, 0x80, - 0xc8, 0x0c, 0x01, 0x6c, 0xc6, 0xe0, 0xfc, 0x00, 0x16, 0xf1, 0x48, 0xe9, 0xe0, 0x04, 0x00, 0x04, - 0xcb, 0x49, 0x00, 0x02, 0xcb, 0x4c, 0x00, 0x04, 0x10, 0xed, 0x03, 0x00, 0x00, 0x02, 0xc2, 0xdb, - 0xc2, 0x63, 0x00, 0x04, 0x42, 0x4b, 0x13, 0x9f, 0xd2, 0x49, 0x13, 0x0e, 0x06, 0xc9, 0x72, 0x49, - 0xd2, 0x69, 0xe1, 0xc0, 0x06, 0xc9, 0x72, 0x49, 0x48, 0xe9, 0xe0, 0x04, 0x00, 0x04, 0xcb, 0x49, - 0x00, 0x02, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, 0xc2, 0x69, 0xe1, 0xc0, 0x72, 0x49, 0x02, 0x29, - 0x00, 0x10, 0xc2, 0xc3, 0xa2, 0xe9, 0xe1, 0xa8, 0xc3, 0x1b, 0x02, 0x89, 0x00, 0x12, 0x13, 0x0c, - 0xc6, 0xdc, 0x16, 0x03, 0x48, 0xe9, 0xe0, 0x04, 0x00, 0x04, 0xcb, 0x49, 0x00, 0x02, 0xcb, 0x4c, - 0x00, 0x04, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, 0xc8, 0x0c, 0x01, 0x6c, 0xc6, 0xe0, 0xfc, 0x00, - 0x16, 0xf4, 0x10, 0xf0, 0x03, 0x00, 0x00, 0x02, 0xc2, 0xbb, 0xc1, 0xbb, 0xd1, 0x86, 0x13, 0x03, - 0xea, 0x86, 0x00, 0x04, 0x10, 0x13, 0xd1, 0xa6, 0xe1, 0xc0, 0x06, 0xc6, 0x71, 0x86, 0xc1, 0xca, - 0xa1, 0xe6, 0xe1, 0xb8, 0xea, 0xa6, 0xe0, 0x14, 0x00, 0x04, 0xc2, 0x1b, 0x02, 0x86, 0x00, 0x02, - 0x16, 0x03, 0x06, 0xa0, 0xc2, 0x6a, 0x10, 0x02, 0x06, 0xa0, 0xc2, 0x44, 0x04, 0xda, 0x03, 0x80, - 0x03, 0x00, 0x00, 0x02, 0xc2, 0xab, 0x00, 0x06, 0x07, 0x8c, 0x05, 0xe8, 0xc2, 0x5c, 0x13, 0x16, - 0xc1, 0xa0, 0x05, 0xec, 0x81, 0x8a, 0x1a, 0x1a, 0xc1, 0xc6, 0xc2, 0x09, 0xc2, 0x59, 0x13, 0x20, - 0xa1, 0xe9, 0x00, 0x08, 0x82, 0x87, 0x12, 0xf9, 0xa2, 0xa9, 0x00, 0x08, 0x62, 0x87, 0xca, 0xca, - 0x00, 0x08, 0x6a, 0x4a, 0x00, 0x08, 0xc6, 0xc9, 0xc6, 0x0b, 0x03, 0x80, 0xca, 0xca, 0x00, 0x08, - 0xc8, 0x0a, 0x05, 0xec, 0x04, 0xdb, 0xcf, 0x0b, 0xc7, 0x0b, 0x03, 0x80, 0x61, 0x8a, 0xca, 0x46, - 0x00, 0x08, 0xca, 0xca, 0x00, 0x08, 0xc8, 0x0a, 0x05, 0xec, 0xc6, 0xc9, 0xc7, 0x0b, 0x03, 0x80, - 0x62, 0x87, 0xca, 0xca, 0x00, 0x08, 0x04, 0xdb, 0xc6, 0x0b, 0xcb, 0x0b, 0x00, 0x02, 0x03, 0x80, - 0x03, 0x00, 0x00, 0x02, 0xc1, 0xbb, 0xc2, 0xdb, 0x07, 0x8c, 0x05, 0xe8, 0xc2, 0x4c, 0x04, 0xed, - 0x00, 0x02, 0xc2, 0x09, 0xc2, 0x59, 0x13, 0x18, 0x81, 0xa9, 0x00, 0x02, 0x16, 0xfa, 0x82, 0xe9, - 0x00, 0x04, 0x16, 0xf7, 0xcb, 0x49, 0x00, 0x04, 0xc2, 0x99, 0xc6, 0x0a, 0x13, 0x0a, 0x83, 0x08, - 0x13, 0x04, 0xaa, 0xa9, 0x00, 0x08, 0x00, 0x08, 0x03, 0x80, 0xa8, 0x2a, 0x00, 0x08, 0x05, 0xec, - 0x03, 0x80, 0xcb, 0x08, 0x00, 0x02, 0x03, 0x80, 0x07, 0x2d, 0x00, 0x02, 0x07, 0x8c, 0x00, 0x08, - 0xa3, 0x06, 0xc2, 0x4c, 0xc2, 0x09, 0xc2, 0x59, 0x13, 0x13, 0x82, 0xe9, 0x00, 0x04, 0x16, 0xfa, - 0x07, 0xad, 0x00, 0x02, 0x00, 0x01, 0xcb, 0x49, 0x00, 0x04, 0xc6, 0x19, 0x13, 0x01, 0x03, 0x80, - 0x83, 0x08, 0x16, 0x04, 0x49, 0xa0, 0xe0, 0x14, 0x00, 0x04, 0x03, 0x80, 0xcb, 0x08, 0x00, 0x02, - 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, 0x06, 0x0b, 0x11, 0x1f, 0x13, 0x4d, 0x07, 0x8b, 0x4e, 0x00, - 0x01, 0x60, 0x01, 0x42, 0x00, 0x80, 0x13, 0x09, 0x07, 0x8b, 0x3a, 0x00, 0xc1, 0x20, 0x01, 0x4e, - 0x02, 0x84, 0x0f, 0x41, 0x11, 0x02, 0x07, 0x8b, 0x4e, 0x00, 0xc8, 0x0b, 0x01, 0x44, 0x07, 0xa0, - 0x09, 0x62, 0x03, 0xe8, 0x01, 0xe0, 0x01, 0x40, 0x02, 0x00, 0x01, 0xe0, 0x01, 0x40, 0x20, 0x00, - 0x07, 0x84, 0xbc, 0xa0, 0x04, 0x60, 0xbc, 0xae, 0xc8, 0x20, 0xe0, 0x16, 0x00, 0xe0, 0xc2, 0xe0, - 0x09, 0x6a, 0x22, 0xe0, 0xe0, 0x10, 0x13, 0x03, 0xe8, 0x20, 0xe0, 0x14, 0x00, 0xe0, 0xc8, 0x20, - 0xe0, 0x04, 0x01, 0x82, 0xc8, 0x20, 0x00, 0xe2, 0x01, 0x8a, 0x04, 0xe0, 0x09, 0x18, 0x04, 0xe0, - 0x05, 0xf4, 0x04, 0xe0, 0x05, 0xf8, 0x04, 0xe0, 0x05, 0xf0, 0x04, 0xe0, 0x07, 0x42, 0x07, 0xa0, - 0x01, 0x88, 0x00, 0x20, 0xc2, 0xe0, 0x09, 0x30, 0x13, 0x09, 0x07, 0xa0, 0x01, 0x88, 0x00, 0x80, - 0xe8, 0x20, 0xe0, 0x16, 0x01, 0x80, 0x01, 0xe0, 0x01, 0x82, 0x03, 0x00, 0x07, 0x8b, 0xa0, 0x00, - 0xe8, 0x0b, 0x01, 0x86, 0x03, 0x80, 0x04, 0xe0, 0x01, 0x86, 0x01, 0xe0, 0x01, 0x9c, 0x00, 0x40, - 0x01, 0xe0, 0x01, 0x9c, 0x40, 0x00, 0x04, 0xcb, 0x03, 0xb0, 0x06, 0x0b, 0x13, 0x04, 0x01, 0x60, - 0x01, 0x9c, 0x40, 0x00, 0x16, 0xf9, 0x04, 0xe0, 0x01, 0x82, 0xe8, 0x20, 0xe0, 0x08, 0x09, 0x6a, - 0x07, 0x8b, 0x80, 0x00, 0xc8, 0x0b, 0x07, 0x98, 0xc8, 0x0b, 0x07, 0x78, 0xc8, 0x20, 0xe0, 0x04, - 0x01, 0x82, 0x07, 0x8b, 0x87, 0x6f, 0x48, 0x0b, 0x07, 0x3a, 0xc2, 0xe0, 0x07, 0x50, 0x02, 0x8b, - 0x07, 0x58, 0x13, 0x10, 0xe8, 0x20, 0xe0, 0x0a, 0x01, 0x00, 0xc2, 0xe0, 0x01, 0x00, 0x22, 0xe0, - 0xe0, 0x06, 0x13, 0xf8, 0x07, 0x8b, 0x07, 0x58, 0xc8, 0x0b, 0x07, 0x50, 0x07, 0x8b, 0xc5, 0x6a, - 0xc8, 0x0b, 0x07, 0x52, 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, 0xc2, 0xe0, 0x09, 0x1a, 0x13, 0x0c, - 0x06, 0x20, 0x09, 0x1c, 0xc8, 0x0b, 0x01, 0x6c, 0xc8, 0x20, 0xfc, 0x00, 0x09, 0x1a, 0xcb, 0x4b, - 0x00, 0x02, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, 0xc0, 0x41, 0x13, 0x0f, 0x80, 0x81, 0x13, 0x0d, - 0xa0, 0x82, 0xc2, 0xe2, 0x0c, 0x32, 0x09, 0x12, 0xc8, 0x0b, 0x01, 0x6c, 0x04, 0xe0, 0xfc, 0x00, - 0xc3, 0x20, 0xfc, 0x02, 0x11, 0x07, 0xc8, 0x02, 0xfc, 0x00, 0x04, 0xed, 0x00, 0x02, 0x04, 0xe0, - 0x01, 0x6c, 0x03, 0x80, 0xcb, 0x42, 0x00, 0x02, 0xc8, 0x02, 0x01, 0x6c, 0xc0, 0x8b, 0x03, 0x80, - 0x03, 0x00, 0x00, 0x02, 0x07, 0x83, 0x80, 0x00, 0xc2, 0x60, 0x09, 0x7e, 0xc1, 0x09, 0x02, 0x24, - 0xff, 0xf8, 0x08, 0xa9, 0x02, 0x01, 0x00, 0x00, 0x02, 0x02, 0x00, 0x00, 0x02, 0x0b, 0x00, 0x00, - 0x02, 0x0c, 0x00, 0x00, 0x02, 0x07, 0x00, 0x00, 0xcb, 0x2c, 0x0c, 0x32, 0x0c, 0x32, 0x13, 0x06, - 0x05, 0x8b, 0x05, 0xcc, 0x88, 0x0b, 0x04, 0x46, 0x1b, 0x27, 0x10, 0xf6, 0xc2, 0x09, 0xc2, 0x8b, - 0x06, 0x08, 0x13, 0x0a, 0x05, 0x8b, 0x05, 0xcc, 0x88, 0x0b, 0x04, 0x46, 0x1b, 0x1d, 0xcb, 0x2c, - 0x0c, 0x32, 0x0c, 0x32, 0x16, 0xed, 0x10, 0xf4, 0xc0, 0x82, 0x13, 0x14, 0xc8, 0x02, 0x01, 0x6c, - 0xc8, 0x0a, 0xfc, 0x00, 0xc8, 0x0a, 0x01, 0x6c, 0x04, 0xe0, 0xfc, 0x00, 0x07, 0xa0, 0xfc, 0x02, - 0x80, 0x00, 0xc8, 0x04, 0xfc, 0x04, 0xc2, 0x0a, 0xa2, 0x08, 0xca, 0x02, 0x0c, 0x32, 0xc0, 0x8a, - 0x05, 0x87, 0x10, 0xd6, 0xc0, 0x4a, 0x10, 0xee, 0xcb, 0x47, 0x00, 0x02, 0x04, 0xe0, 0x01, 0x6c, - 0x07, 0x8b, 0x00, 0x43, 0x04, 0xe0, 0x0c, 0x00, 0x03, 0x00, 0x00, 0x02, 0xc8, 0x0b, 0x01, 0x6c, - 0xc2, 0x8b, 0x06, 0xa0, 0xc1, 0xa0, 0x03, 0x90, 0x00, 0x7f, 0x03, 0x80, 0x01, 0xa0, 0xfc, 0x02, - 0x00, 0x20, 0x01, 0x60, 0x09, 0x6a, 0x00, 0x01, 0x16, 0x0b, 0x02, 0x0a, 0xfc, 0x02, 0xa2, 0xa0, - 0x09, 0x2c, 0xce, 0xa0, 0x05, 0xee, 0xc6, 0xa0, 0xfc, 0x04, 0xc8, 0x20, 0x09, 0x2c, 0xfc, 0x04, - 0x07, 0x8a, 0x05, 0xf8, 0xc2, 0x5a, 0x13, 0x08, 0x05, 0xca, 0xc2, 0x5a, 0xc8, 0x09, 0x01, 0x6c, - 0xc8, 0x0b, 0xfc, 0x00, 0xc6, 0x8b, 0x10, 0x02, 0xce, 0x8b, 0xc6, 0x8b, 0x20, 0x20, 0xe0, 0x1a, - 0x16, 0x05, 0xe8, 0x20, 0xe0, 0x04, 0x07, 0x3a, 0x04, 0xe0, 0x07, 0x36, 0x03, 0x90, 0x00, 0x7f, - 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, 0xc8, 0x0b, 0x01, 0x6c, 0x04, 0xcc, 0x04, 0xe0, 0xfc, 0x00, - 0xc2, 0x8b, 0x06, 0xa0, 0xc1, 0xae, 0x03, 0x90, 0x00, 0x7f, 0x03, 0x80, 0x07, 0xa0, 0xfc, 0x02, - 0x80, 0x00, 0xc8, 0x20, 0xe1, 0x8c, 0xfc, 0x04, 0xc0, 0x41, 0x16, 0x0f, 0xd8, 0x20, 0xe2, 0x00, - 0x01, 0x83, 0x00, 0x00, 0xc1, 0x82, 0x00, 0x15, 0x0b, 0x8b, 0x00, 0x00, 0xc1, 0x96, 0x0c, 0xa8, - 0xc8, 0x0a, 0x01, 0x8a, 0x04, 0x5b, 0xc8, 0x0a, 0x01, 0x6c, 0xc3, 0x20, 0xfc, 0x00, 0x04, 0xe0, - 0xfc, 0x00, 0x02, 0x8a, 0x00, 0x43, 0x13, 0xdf, 0x07, 0xa0, 0xfc, 0x02, 0x80, 0x00, 0xc8, 0x04, - 0xfc, 0x04, 0x98, 0x20, 0x09, 0x84, 0x09, 0x1d, 0x13, 0x0a, 0xc8, 0x20, 0x09, 0x1a, 0xfc, 0x00, - 0xc8, 0x0a, 0x09, 0x1a, 0x05, 0xa0, 0x09, 0x1c, 0xc2, 0x8c, 0x16, 0xe5, 0x04, 0x5b, 0xc0, 0x41, - 0x13, 0x10, 0xa2, 0x8a, 0xca, 0x82, 0x0c, 0x32, 0x09, 0x1a, 0xc8, 0x02, 0x01, 0x6c, 0xc8, 0x0a, - 0xfc, 0x00, 0xc0, 0x8a, 0x98, 0x20, 0x01, 0x83, 0xe2, 0x00, 0x13, 0x09, 0xc2, 0x8c, 0x16, 0xd3, - 0x04, 0x5b, 0xc0, 0x4a, 0xc0, 0x8a, 0x98, 0x20, 0x01, 0x83, 0xe2, 0x00, 0x16, 0x1b, 0x01, 0xe0, - 0x01, 0x9c, 0x00, 0x40, 0x07, 0xa0, 0x09, 0x64, 0x70, 0x00, 0x01, 0x60, 0x01, 0x9c, 0x00, 0x40, - 0x13, 0x07, 0x06, 0x20, 0x09, 0x64, 0x16, 0xf9, 0x02, 0x0a, 0x01, 0x00, 0x04, 0x60, 0xb3, 0x8a, - 0x01, 0x60, 0x0c, 0x02, 0x01, 0x00, 0x13, 0xe2, 0xd8, 0x20, 0x09, 0x2f, 0x01, 0x83, 0x07, 0xa0, - 0x0c, 0x02, 0x80, 0x00, 0xc8, 0x0a, 0x01, 0x8a, 0xc8, 0x0a, 0x09, 0x18, 0x10, 0xd7, 0x04, 0xd8, - 0xc2, 0x57, 0x16, 0x03, 0xcd, 0xc8, 0xc5, 0xc8, 0x04, 0x5b, 0x05, 0xc7, 0xc2, 0x57, 0xc6, 0x48, - 0xc5, 0xc8, 0x04, 0x5b, 0xc8, 0x08, 0x01, 0x6c, 0xa2, 0x08, 0xca, 0x20, 0xfc, 0x00, 0x0c, 0x32, - 0x09, 0x18, 0x10, 0x02, 0xc8, 0x08, 0x01, 0x6c, 0x04, 0xe0, 0xfc, 0x00, 0xc2, 0x57, 0x16, 0x03, - 0xcd, 0xc8, 0xc5, 0xc8, 0x04, 0x5b, 0x05, 0xc7, 0xc8, 0x17, 0x01, 0x6c, 0xc8, 0x08, 0xfc, 0x00, - 0xc5, 0xc8, 0x04, 0x5b, 0xc6, 0x17, 0x16, 0x02, 0xc9, 0xc8, 0x00, 0x02, 0xc5, 0xc8, 0x04, 0x5b, - 0xc2, 0x17, 0xc8, 0x08, 0x01, 0x6c, 0x13, 0x07, 0xc5, 0xe0, 0xfc, 0x00, 0xa2, 0x08, 0xc8, 0x28, - 0x0c, 0x32, 0xfc, 0x00, 0x09, 0x18, 0x04, 0x5b, 0x01, 0x60, 0x01, 0x82, 0x20, 0x00, 0x16, 0x0a, - 0xc2, 0x60, 0x01, 0x84, 0x01, 0xa0, 0x01, 0x82, 0x20, 0x00, 0x01, 0xe0, 0x01, 0x82, 0x20, 0x00, - 0xc8, 0x09, 0x01, 0x84, 0x04, 0xc9, 0x04, 0x5b, 0x06, 0xa0, 0xc5, 0x1c, 0x04, 0xd3, 0x04, 0xe0, - 0x01, 0x02, 0xe8, 0x20, 0xe0, 0x14, 0x01, 0x00, 0xc8, 0x20, 0xe0, 0x16, 0x01, 0x04, 0x2c, 0x05, - 0x48, 0x20, 0xe0, 0x14, 0x01, 0x00, 0x07, 0x8c, 0x0a, 0x00, 0x07, 0x8d, 0x07, 0xd8, 0x07, 0x8e, - 0x00, 0x18, 0xcf, 0x7c, 0x06, 0x4e, 0x16, 0xfd, 0x02, 0xe0, 0x07, 0xd8, 0x07, 0x8f, 0xff, 0x11, - 0x02, 0x8b, 0x59, 0x3b, 0x16, 0x21, 0x02, 0x8a, 0x59, 0x3b, 0x13, 0x1e, 0x05, 0x8f, 0x20, 0x20, - 0xe0, 0x16, 0x16, 0x01, 0x10, 0x19, 0x20, 0x20, 0xe0, 0x04, 0x16, 0x16, 0x01, 0x00, 0x00, 0xbf, - 0x16, 0x13, 0x07, 0x8b, 0x40, 0xc0, 0x01, 0x00, 0x60, 0x00, 0x13, 0x10, 0x01, 0x40, 0x60, 0x00, - 0x16, 0x0b, 0x07, 0x8b, 0x44, 0xc4, 0xc3, 0xa0, 0x01, 0x02, 0x48, 0x0e, 0x01, 0x02, 0x01, 0x4e, - 0x10, 0x00, 0x16, 0x04, 0x07, 0x8f, 0xff, 0x18, 0x04, 0x60, 0xc4, 0xf2, 0xc3, 0x0b, 0xc3, 0x4b, - 0x20, 0x20, 0xe0, 0x0a, 0x16, 0x02, 0x02, 0x6b, 0x20, 0x20, 0x20, 0x20, 0xe0, 0x0c, 0x16, 0x02, - 0x02, 0x6c, 0x20, 0x00, 0x20, 0x20, 0xe0, 0x0e, 0x16, 0x02, 0x02, 0x6c, 0x00, 0x20, 0x05, 0x8f, - 0x20, 0x20, 0xe0, 0x10, 0x16, 0x07, 0x02, 0x6d, 0x00, 0x20, 0x21, 0x20, 0xe0, 0x22, 0x13, 0xe4, - 0xc1, 0x04, 0x16, 0x02, 0x07, 0x84, 0x7f, 0xfe, 0x05, 0x8f, 0x20, 0x20, 0xe0, 0x12, 0x16, 0x02, - 0x02, 0x6d, 0x20, 0x00, 0x21, 0x60, 0xe0, 0x22, 0x13, 0xd7, 0xc1, 0x45, 0x16, 0x02, 0x07, 0x85, - 0x7f, 0xfe, 0x05, 0x8f, 0xd1, 0x86, 0x13, 0x0b, 0x25, 0xa0, 0xe0, 0x26, 0x13, 0x08, 0x05, 0x8f, - 0x26, 0x20, 0xe0, 0x22, 0x16, 0x04, 0x05, 0x8f, 0x26, 0xa0, 0xe0, 0x22, 0x13, 0x02, 0x04, 0x60, - 0xc4, 0xf2, 0xd8, 0x01, 0x08, 0xec, 0xd8, 0x20, 0x07, 0xdb, 0x09, 0x00, 0xd8, 0x02, 0x08, 0xf6, - 0xd8, 0x20, 0x07, 0xdd, 0x08, 0xe2, 0x02, 0xe0, 0x07, 0x58, 0xd8, 0x20, 0x07, 0xef, 0x07, 0xf4, - 0xd8, 0x20, 0x07, 0xf1, 0x07, 0xf6, 0xd8, 0x20, 0x07, 0xf3, 0x07, 0xf8, 0x02, 0x09, 0x00, 0x06, - 0x04, 0xcb, 0x02, 0x0f, 0x07, 0xee, 0x05, 0x8f, 0xdf, 0xcb, 0x06, 0x09, 0x16, 0xfc, 0x06, 0xa0, - 0xc5, 0x1c, 0x07, 0x89, 0xe3, 0x5c, 0x04, 0xe0, 0x01, 0x1a, 0xc8, 0x20, 0x07, 0xe4, 0x01, 0x18, - 0xc8, 0x19, 0x01, 0x0c, 0xc8, 0x39, 0x01, 0x0a, 0xc8, 0x39, 0x01, 0x12, 0x16, 0x09, 0xc3, 0x79, - 0x02, 0x0f, 0xe0, 0x00, 0x63, 0x4f, 0x02, 0x2d, 0xa0, 0x00, 0xc8, 0x0d, 0x01, 0x14, 0x10, 0x02, - 0xc8, 0x39, 0x01, 0x14, 0xc3, 0xf9, 0xc8, 0x3f, 0x01, 0x0e, 0xc8, 0x1f, 0x01, 0x10, 0x04, 0xe0, - 0x09, 0x14, 0xc2, 0xb9, 0xc8, 0x1a, 0x01, 0x00, 0x06, 0x96, 0x02, 0x89, 0xe3, 0x84, 0x16, 0xe0, - 0x07, 0x8f, 0xff, 0x1c, 0x07, 0x8c, 0x0a, 0x00, 0x07, 0x8d, 0xe3, 0x84, 0x07, 0x8e, 0x00, 0x10, - 0x8f, 0x7c, 0x16, 0x44, 0x06, 0x4e, 0x16, 0xfc, 0xc3, 0xa0, 0x07, 0xe2, 0xc3, 0xe0, 0x07, 0xe0, - 0x83, 0xce, 0x14, 0x01, 0xc3, 0xce, 0xc8, 0x0f, 0x01, 0x1a, 0x07, 0x8c, 0xe3, 0x94, 0x07, 0x8d, - 0x0a, 0x00, 0x07, 0x8e, 0xe3, 0xa4, 0x63, 0x8c, 0xcf, 0x7c, 0x06, 0x4e, 0x16, 0xfd, 0x04, 0xe0, - 0x09, 0x30, 0x01, 0x20, 0x01, 0x42, 0x04, 0x00, 0x16, 0x02, 0x07, 0x20, 0x09, 0x30, 0xc2, 0x60, - 0x01, 0x62, 0x04, 0xe0, 0x01, 0x62, 0x07, 0x8e, 0x80, 0x00, 0x07, 0x8c, 0x09, 0x34, 0x07, 0x8d, - 0x00, 0x06, 0xdf, 0x3e, 0x05, 0x8e, 0x06, 0x0d, 0x16, 0xfc, 0xd3, 0xfe, 0x06, 0xcf, 0x05, 0x8e, - 0xd3, 0xfe, 0x06, 0xcf, 0x07, 0x8c, 0x09, 0x34, 0xc8, 0x09, 0x01, 0x62, 0x04, 0xc9, 0xa3, 0x5c, - 0xe2, 0x7c, 0xa3, 0x5c, 0xe2, 0x7c, 0xa3, 0x5c, 0xe2, 0x7c, 0x13, 0x02, 0x83, 0xcd, 0x13, 0x09, - 0x07, 0x20, 0x09, 0x34, 0x10, 0x06, 0x07, 0x8f, 0xff, 0x19, 0xa3, 0xcd, 0xc8, 0x0f, 0x01, 0x04, - 0x10, 0xff, 0x01, 0xa0, 0x01, 0x02, 0x10, 0x00, 0xc3, 0xe0, 0x07, 0xee, 0x43, 0xe0, 0xe0, 0x06, - 0xc8, 0x0f, 0x01, 0x00, 0xc0, 0x20, 0xe0, 0x04, 0x04, 0xe0, 0x06, 0xfe, 0x04, 0xd3, 0x04, 0xe0, - 0x01, 0x04, 0x04, 0x60, 0xc5, 0x6a, 0x07, 0x8c, 0x0a, 0x00, 0x07, 0x8d, 0x00, 0x18, 0x07, 0x8e, - 0x59, 0x3b, 0xcf, 0x0e, 0x06, 0x4d, 0x16, 0xfd, 0x04, 0x5b, 0x01, 0x93, 0x80, 0x00, 0x04, 0x20, - 0xe2, 0xc0, 0xd0, 0x60, 0x07, 0x98, 0x13, 0x1c, 0x03, 0x00, 0x00, 0x02, 0xc0, 0xa0, 0x07, 0x46, - 0xc8, 0x12, 0x07, 0x46, 0x16, 0x02, 0x01, 0x93, 0x00, 0x20, 0x03, 0x00, 0x00, 0x0f, 0x04, 0x20, - 0xe2, 0xe8, 0x01, 0x93, 0x20, 0x00, 0x01, 0x80, 0x40, 0x00, 0x01, 0x00, 0x00, 0xfe, 0x16, 0x49, - 0xc3, 0xc4, 0x16, 0x25, 0xc3, 0xd3, 0x43, 0xc5, 0x16, 0x0c, 0xc3, 0xe0, 0x07, 0x98, 0x11, 0x03, - 0x02, 0xe0, 0x07, 0x98, 0x04, 0x51, 0xc3, 0xe0, 0x07, 0x78, 0x11, 0x0a, 0x02, 0xe0, 0x07, 0x78, - 0x04, 0x51, 0x11, 0xd3, 0x01, 0x4f, 0x20, 0x00, 0x13, 0xe4, 0x01, 0x4f, 0x00, 0x20, 0x13, 0xd1, - 0x2c, 0x05, 0xa0, 0x41, 0x04, 0x21, 0xe2, 0xc0, 0x07, 0x8b, 0xc5, 0x6a, 0x01, 0x00, 0x40, 0x00, - 0x13, 0x0f, 0xc3, 0xdd, 0x02, 0x4f, 0x00, 0x0f, 0xe1, 0x2f, 0xe0, 0x14, 0x04, 0x5b, 0xc3, 0xe4, - 0xe1, 0xc0, 0x73, 0xcf, 0x41, 0x2f, 0xe0, 0x14, 0xc3, 0x6f, 0xea, 0x8c, 0x07, 0x8b, 0xc5, 0x6a, - 0xc2, 0x4b, 0xc2, 0xa0, 0x07, 0xf4, 0x07, 0x8c, 0x00, 0x08, 0xc0, 0xbd, 0xc3, 0xa0, 0x07, 0xea, - 0xc3, 0xe0, 0x07, 0xec, 0x06, 0xa0, 0xc7, 0x5e, 0x01, 0xc0, 0x40, 0x00, 0xd8, 0x02, 0x01, 0x17, - 0x02, 0x62, 0xff, 0x80, 0x06, 0xa0, 0xc7, 0xb2, 0xc8, 0x02, 0x01, 0x04, 0x03, 0x90, 0x60, 0x3f, - 0x04, 0x59, 0xc3, 0xc0, 0x73, 0xcf, 0xc3, 0xef, 0xe1, 0xc0, 0x73, 0xcf, 0xc3, 0xaf, 0xea, 0x7e, - 0xc3, 0x9e, 0x02, 0x4e, 0x00, 0x0f, 0x21, 0x2e, 0xe0, 0x14, 0x13, 0x08, 0x40, 0x2f, 0xe0, 0x14, - 0xa3, 0xcf, 0x04, 0x2f, 0xe2, 0xf0, 0x01, 0x40, 0x40, 0x00, 0x13, 0xa4, 0xc3, 0xc4, 0x16, 0xc7, - 0x01, 0x00, 0x00, 0xfe, 0x16, 0xe6, 0x10, 0x9e, 0x01, 0x40, 0x40, 0x00, 0x16, 0x05, 0xe0, 0x20, - 0xe0, 0x14, 0x02, 0x65, 0x58, 0x00, 0x10, 0x96, 0xd8, 0x20, 0x07, 0xde, 0x01, 0x17, 0x07, 0x8f, - 0xff, 0x86, 0xc8, 0x0f, 0x01, 0x04, 0x01, 0xc0, 0x40, 0x00, 0x02, 0x45, 0xa7, 0xff, 0x10, 0x8a, - 0xc3, 0x20, 0x06, 0xfe, 0x27, 0x20, 0xe3, 0x38, 0x13, 0x07, 0x23, 0x20, 0xe0, 0x22, 0x13, 0x1a, - 0x02, 0x65, 0xdf, 0xff, 0x40, 0x20, 0xe0, 0x14, 0xe0, 0x20, 0xe0, 0x16, 0xc8, 0x0c, 0x08, 0xe6, - 0x07, 0x8d, 0x08, 0xe2, 0x04, 0x58, 0x48, 0x20, 0xe0, 0x08, 0x06, 0xfe, 0xc3, 0x20, 0x08, 0xe6, - 0x27, 0x20, 0xe3, 0x38, 0x16, 0x19, 0x03, 0x80, 0xc3, 0x02, 0xc2, 0x6c, 0x00, 0x0a, 0x06, 0x99, - 0x04, 0x60, 0xc5, 0x6a, 0xc2, 0xa0, 0x07, 0xf4, 0x07, 0x8c, 0x00, 0x01, 0x07, 0x8d, 0x06, 0x06, - 0x04, 0xce, 0xc3, 0xe0, 0x06, 0x08, 0x13, 0x01, 0x06, 0x97, 0xd8, 0x20, 0x06, 0x07, 0x01, 0x17, - 0x07, 0x8b, 0xff, 0x82, 0xc8, 0x0b, 0x01, 0x04, 0x06, 0xa0, 0xcb, 0xe4, 0x04, 0x60, 0xc5, 0x6a, - 0xc2, 0xa0, 0x07, 0xee, 0x07, 0x8c, 0x00, 0x06, 0x07, 0x8d, 0x08, 0xee, 0xc3, 0xa0, 0x07, 0xe6, - 0xc3, 0xe0, 0x07, 0xe8, 0x06, 0x97, 0xc2, 0xa0, 0x07, 0xf4, 0x07, 0x8d, 0x08, 0xf4, 0x04, 0xdd, - 0x07, 0x8c, 0x00, 0x02, 0x06, 0x97, 0x07, 0x8d, 0x80, 0x00, 0xc2, 0xa0, 0x08, 0xee, 0x88, 0x0a, - 0x06, 0x0c, 0x1b, 0x14, 0x07, 0x82, 0xc7, 0x2e, 0xc3, 0xa0, 0x08, 0xf0, 0xc3, 0xe0, 0x08, 0xf2, - 0x07, 0x8b, 0xe3, 0x0c, 0x02, 0x8a, 0x00, 0x14, 0x1a, 0x04, 0x07, 0x8b, 0xea, 0x7a, 0x02, 0x2a, - 0xff, 0xec, 0xa2, 0x8a, 0xa2, 0xca, 0xc2, 0xdb, 0x13, 0x01, 0x06, 0x9b, 0xc8, 0x20, 0x08, 0xee, - 0x08, 0xf2, 0xc8, 0x20, 0xe0, 0x20, 0x08, 0xee, 0xc8, 0x0d, 0x08, 0xf0, 0x07, 0x8d, 0x08, 0xec, - 0xe0, 0x20, 0xe0, 0x18, 0x02, 0x65, 0x58, 0x00, 0x04, 0x58, 0x02, 0x45, 0xa7, 0xff, 0x03, 0x80, - 0xc0, 0x60, 0x05, 0xee, 0x02, 0x21, 0x03, 0xe8, 0x01, 0x20, 0x01, 0x02, 0x00, 0x06, 0x16, 0x07, - 0x88, 0x01, 0x05, 0xee, 0x16, 0xf9, 0x10, 0x39, 0xd0, 0x60, 0x01, 0x03, 0x13, 0xf1, 0x02, 0x01, - 0x01, 0x0a, 0xcc, 0x4c, 0xcc, 0x4c, 0xcc, 0x4e, 0xcc, 0x4f, 0x07, 0xb1, 0x00, 0x40, 0xcc, 0x4d, - 0xc8, 0x0a, 0x01, 0x00, 0x04, 0x5b, 0xc0, 0x60, 0x05, 0xee, 0x02, 0x21, 0x03, 0xe8, 0x01, 0x20, - 0x01, 0x02, 0x00, 0x06, 0x16, 0x07, 0x88, 0x01, 0x05, 0xee, 0x16, 0xf9, 0x10, 0x1e, 0xd0, 0x60, - 0x01, 0x03, 0x13, 0xf1, 0x02, 0x01, 0x01, 0x0a, 0xcc, 0x4c, 0xcc, 0x4c, 0xcc, 0x4e, 0xcc, 0x4f, - 0x07, 0xb1, 0x00, 0x40, 0xcc, 0x4d, 0xc8, 0x0a, 0x01, 0x00, 0x03, 0xa0, 0xd0, 0x60, 0x01, 0x03, - 0x13, 0x01, 0x04, 0x5b, 0xc0, 0x60, 0x05, 0xee, 0x02, 0x21, 0x03, 0xe8, 0x01, 0x20, 0x01, 0x02, - 0x00, 0x06, 0x16, 0xf7, 0x88, 0x01, 0x05, 0xee, 0x16, 0xf9, 0x04, 0xcd, 0x07, 0x8a, 0x40, 0x00, - 0xc3, 0x20, 0x01, 0x00, 0x01, 0x0c, 0x80, 0x00, 0x13, 0x02, 0x07, 0x8a, 0x20, 0x00, 0xc3, 0xa0, - 0x01, 0x0e, 0xc3, 0xe0, 0x01, 0x10, 0x03, 0xb0, 0xc3, 0x20, 0x07, 0x58, 0x23, 0x20, 0xe0, 0x04, - 0x13, 0x02, 0x04, 0x60, 0xc4, 0xec, 0x04, 0x60, 0xb3, 0x8a, 0x07, 0x8d, 0x20, 0x00, 0x20, 0x20, - 0xe0, 0x0a, 0x16, 0x01, 0x04, 0x5b, 0x02, 0x0d, 0x0c, 0x32, 0xc2, 0x5d, 0x11, 0x01, 0x04, 0xdd, - 0x05, 0xcd, 0x88, 0x0d, 0x0c, 0x30, 0x16, 0xf9, 0xc2, 0x60, 0x06, 0x0a, 0x07, 0x8d, 0x09, 0x6a, - 0x06, 0xa0, 0xcc, 0x24, 0x02, 0x09, 0x00, 0x6e, 0xc3, 0xe0, 0x09, 0x30, 0x16, 0x03, 0x01, 0xe0, - 0x09, 0x6a, 0x00, 0x10, 0xc2, 0xe0, 0x09, 0x6a, 0x02, 0x0f, 0x01, 0x00, 0x26, 0xc9, 0x13, 0x02, - 0x04, 0x60, 0xca, 0xb6, 0x02, 0x09, 0x12, 0x00, 0x01, 0x4b, 0x00, 0x10, 0x13, 0x02, 0x02, 0x09, - 0x13, 0x00, 0xd8, 0x09, 0x09, 0x2e, 0x07, 0x8f, 0x40, 0x00, 0x07, 0x89, 0x09, 0x6c, 0x04, 0xcb, - 0xe2, 0xf9, 0xe2, 0xf9, 0xe2, 0xf9, 0x16, 0x07, 0x07, 0x8b, 0x09, 0x34, 0x07, 0x8c, 0x09, 0x6c, - 0xcf, 0x3b, 0xcf, 0x3b, 0xc7, 0x1b, 0xc3, 0x20, 0x09, 0x6c, 0x11, 0x19, 0x07, 0x8f, 0x20, 0x00, - 0x07, 0x89, 0x09, 0x7a, 0x06, 0xa0, 0xc8, 0x98, 0x06, 0xa0, 0xc8, 0x98, 0x10, 0x12, 0xce, 0x4c, - 0x04, 0x5b, 0xc3, 0x19, 0x16, 0x02, 0x07, 0x8c, 0x00, 0x1a, 0xc3, 0x4c, 0x02, 0x2d, 0xff, 0xf8, - 0x02, 0x0a, 0x00, 0x09, 0x02, 0x2d, 0xff, 0xfa, 0x13, 0xf2, 0x06, 0x0a, 0x16, 0xfb, 0x04, 0x60, - 0xca, 0xb6, 0x07, 0x8f, 0x10, 0x00, 0xc2, 0xd9, 0x11, 0xfa, 0x16, 0x02, 0x07, 0x8b, 0x04, 0x00, - 0xc3, 0x4b, 0x02, 0x8d, 0x00, 0x20, 0x14, 0x02, 0x02, 0x0d, 0x00, 0x20, 0x02, 0x8d, 0x04, 0x00, - 0x12, 0x02, 0x02, 0x0d, 0x04, 0x00, 0x02, 0x2d, 0xff, 0xf8, 0xc8, 0x0d, 0x09, 0x2c, 0x02, 0x2b, - 0x03, 0xff, 0x01, 0x8b, 0x03, 0xff, 0xce, 0x4b, 0x04, 0xcb, 0x04, 0xe0, 0x05, 0xf8, 0x04, 0xe0, - 0x09, 0x66, 0xc8, 0x20, 0x0c, 0x30, 0x09, 0x80, 0x07, 0xa0, 0x09, 0x82, 0xdf, 0xfe, 0x07, 0x8d, - 0xdf, 0xfe, 0xc3, 0xe0, 0x07, 0xd8, 0x23, 0xe0, 0xe0, 0x16, 0x16, 0x24, 0xc3, 0xe0, 0x0c, 0x30, - 0x63, 0x4f, 0x04, 0xff, 0x04, 0xff, 0x06, 0x4d, 0x16, 0xfd, 0x07, 0x8d, 0xdf, 0xfe, 0x04, 0x20, - 0xea, 0x62, 0xc3, 0xa0, 0xea, 0x62, 0xc3, 0xee, 0x00, 0x12, 0x16, 0xc1, 0xc3, 0x6e, 0x00, 0x18, - 0x09, 0xad, 0x07, 0x8c, 0xe0, 0x00, 0x09, 0xac, 0x63, 0x0d, 0x13, 0x0c, 0xc3, 0x6e, 0x00, 0x18, - 0x09, 0xad, 0x02, 0x2d, 0x00, 0x40, 0x0a, 0x1d, 0x02, 0x2d, 0x0c, 0x32, 0x07, 0xbd, 0x7f, 0xff, - 0x06, 0x0c, 0x16, 0xfc, 0xc3, 0x20, 0x04, 0x46, 0x02, 0x8c, 0x00, 0x80, 0x1a, 0x13, 0x02, 0xac, - 0xc8, 0x0c, 0x00, 0x9a, 0x02, 0xe0, 0x00, 0x80, 0x07, 0x88, 0x00, 0x80, 0xc2, 0x60, 0x04, 0x46, - 0x06, 0xa0, 0xf4, 0xd2, 0x10, 0x02, 0x00, 0x9d, 0x10, 0x05, 0x00, 0x9d, 0x07, 0x8f, 0x08, 0x00, - 0x04, 0x60, 0xca, 0xb6, 0x2d, 0x4b, 0xc3, 0x81, 0x05, 0xc9, 0x07, 0x8f, 0x10, 0x00, 0x02, 0x8e, - 0x00, 0x02, 0x11, 0xf6, 0x07, 0x8f, 0x04, 0x00, 0x05, 0xc9, 0xc2, 0xd9, 0x26, 0xe0, 0xe0, 0x26, - 0x16, 0x02, 0x02, 0x2b, 0x00, 0x06, 0xc6, 0x4b, 0xc3, 0x4b, 0x72, 0xcb, 0x02, 0x2e, 0xff, 0xfe, - 0x83, 0x8b, 0x1b, 0xe6, 0x06, 0xcd, 0x73, 0x4d, 0x82, 0xcd, 0x1b, 0xe2, 0x04, 0xe0, 0x09, 0x1a, - 0x04, 0xe0, 0x09, 0x1c, 0xc3, 0x4d, 0x13, 0x02, 0x66, 0x60, 0xe0, 0x12, 0x05, 0xc9, 0x04, 0xcf, - 0x2d, 0x81, 0xc8, 0x01, 0x01, 0x6c, 0x13, 0xd4, 0xc8, 0x0f, 0xfc, 0x00, 0xc3, 0xc1, 0x06, 0x0d, - 0x15, 0xf7, 0x02, 0x0d, 0x07, 0x36, 0x02, 0x0e, 0x08, 0x98, 0x02, 0x0c, 0x00, 0x03, 0xcb, 0x8d, - 0x00, 0x02, 0x2d, 0x81, 0xcb, 0x81, 0x00, 0x06, 0x13, 0xc3, 0x04, 0xee, 0x00, 0x0c, 0x02, 0x2e, - 0x00, 0x18, 0x06, 0x0c, 0x16, 0xf4, 0x04, 0xe0, 0x08, 0x96, 0x2e, 0x1f, 0xc3, 0xb9, 0xc3, 0xd9, - 0x07, 0x89, 0x00, 0x12, 0x07, 0x8d, 0x09, 0x3a, 0x06, 0xa0, 0xcc, 0x24, 0xc3, 0x60, 0x07, 0xd8, - 0x23, 0x60, 0xe0, 0x16, 0x16, 0x09, 0xe8, 0x20, 0xe0, 0x10, 0x09, 0x6a, 0xe8, 0x20, 0xe0, 0x18, - 0x07, 0x98, 0xe8, 0x20, 0xe0, 0x12, 0x07, 0x78, 0xc3, 0x60, 0x09, 0x6a, 0x23, 0x60, 0xe0, 0x1e, - 0x16, 0x03, 0x48, 0x20, 0xe3, 0xa4, 0x09, 0x6a, 0x23, 0x60, 0xe0, 0x22, 0x13, 0x06, 0x27, 0x60, - 0xe3, 0xa6, 0x13, 0x03, 0xe8, 0x20, 0xe0, 0x10, 0x09, 0x6a, 0x2d, 0x20, 0x00, 0x00, 0x07, 0x8e, - 0x00, 0x00, 0x06, 0xa0, 0xcc, 0x04, 0x05, 0x4e, 0x2c, 0x0e, 0xc0, 0xa0, 0x08, 0x04, 0xc3, 0xef, - 0x00, 0x06, 0x16, 0x1b, 0xc3, 0xa0, 0x09, 0x72, 0xc3, 0xe0, 0x09, 0x74, 0x06, 0xa0, 0xca, 0xf2, - 0xc3, 0xa0, 0x09, 0x76, 0xc3, 0xe0, 0x09, 0x78, 0x06, 0xa0, 0xcb, 0x10, 0xe0, 0x20, 0xe0, 0x0a, - 0xc3, 0x60, 0x07, 0xd8, 0x23, 0x60, 0xe0, 0x16, 0x16, 0x05, 0x04, 0xe0, 0x06, 0x2e, 0x41, 0x60, - 0xe0, 0x04, 0x2e, 0x4d, 0x07, 0x8d, 0x80, 0x00, 0x04, 0x52, 0x73, 0xcf, 0x02, 0x2f, 0x02, 0x00, - 0xc3, 0x4f, 0x04, 0x52, 0x20, 0x20, 0xe0, 0x0a, 0x13, 0x03, 0x07, 0x8d, 0x10, 0x00, 0x04, 0x5b, - 0x40, 0x20, 0xe0, 0x0a, 0x02, 0x40, 0xf0, 0xff, 0x07, 0x8e, 0x00, 0x02, 0x06, 0xa0, 0xcc, 0x04, - 0x05, 0x4e, 0x2c, 0x0e, 0xc0, 0xa0, 0x08, 0x04, 0x06, 0xa0, 0xcb, 0xe4, 0xc3, 0x60, 0x07, 0xd8, - 0x23, 0x60, 0xe0, 0x16, 0x16, 0x66, 0x04, 0x20, 0xea, 0x76, 0x10, 0x63, 0x02, 0x6e, 0x80, 0x00, - 0x07, 0x8d, 0xc0, 0x00, 0xc8, 0x0d, 0x01, 0xa6, 0xc8, 0x0e, 0x09, 0x72, 0xc8, 0x0f, 0x09, 0x74, - 0xc8, 0x0e, 0x01, 0xa8, 0xc8, 0x0f, 0x01, 0xaa, 0x10, 0x12, 0x01, 0x8f, 0x00, 0x01, 0x07, 0x8a, - 0x09, 0x76, 0xe3, 0xa0, 0x09, 0x4e, 0xce, 0x8e, 0x01, 0x9a, 0xff, 0xfe, 0xe3, 0xe0, 0x09, 0x50, - 0xe6, 0x8f, 0x07, 0x8a, 0x01, 0xac, 0xce, 0x8e, 0x01, 0x9a, 0xff, 0xfe, 0xe6, 0x8f, 0x20, 0x20, - 0xe0, 0x0a, 0x13, 0x3f, 0x07, 0x8d, 0x10, 0x00, 0x04, 0x5b, 0x20, 0x20, 0xe0, 0x0a, 0x13, 0x03, - 0x02, 0x0d, 0x10, 0x00, 0x04, 0x5b, 0xc3, 0x8e, 0x13, 0x04, 0x01, 0xe0, 0x09, 0x50, 0x01, 0x00, - 0x10, 0x06, 0x01, 0xa0, 0x09, 0x50, 0x01, 0x00, 0x01, 0xa0, 0x09, 0x78, 0x01, 0x00, 0xc3, 0xa0, - 0x09, 0x76, 0xc3, 0xe0, 0x09, 0x78, 0xe3, 0xa0, 0x09, 0x4e, 0xe3, 0xe0, 0x09, 0x50, 0xc8, 0x0e, - 0x01, 0xac, 0xc8, 0x0f, 0x01, 0xae, 0xc8, 0x0e, 0x09, 0x76, 0xc8, 0x0f, 0x09, 0x78, 0x10, 0x19, - 0x02, 0x6e, 0x80, 0x00, 0xc8, 0x0e, 0x01, 0xa6, 0x20, 0x20, 0xe0, 0x0a, 0x13, 0x12, 0x02, 0x0d, - 0x10, 0x00, 0x04, 0x5b, 0x07, 0x8d, 0x07, 0x28, 0x07, 0x89, 0x00, 0x0e, 0x06, 0xa0, 0xcc, 0x2a, - 0x07, 0x8d, 0x07, 0x28, 0x04, 0xfd, 0x02, 0x8d, 0x07, 0x36, 0x16, 0xfc, 0x48, 0x20, 0xe0, 0x14, - 0x06, 0xfe, 0x07, 0x8d, 0x80, 0x00, 0x04, 0x52, 0xc2, 0xa0, 0x07, 0xee, 0x07, 0x8c, 0x00, 0x04, - 0x07, 0x8d, 0x08, 0xf0, 0x06, 0x97, 0xc2, 0x7d, 0xc3, 0x5d, 0x43, 0x60, 0xe0, 0x22, 0x06, 0xa0, - 0xcc, 0x2a, 0x10, 0xef, 0xc8, 0x0e, 0x06, 0x06, 0xc8, 0x0f, 0x06, 0x08, 0x10, 0xea, 0x03, 0xb0, - 0x01, 0xa0, 0x07, 0x60, 0x00, 0x26, 0x02, 0x40, 0xc0, 0x00, 0x04, 0xe0, 0x06, 0x06, 0x07, 0x8c, - 0x40, 0x10, 0x44, 0xcc, 0x04, 0xe0, 0x06, 0xfe, 0x07, 0x85, 0x80, 0x40, 0x04, 0x5b, 0xc8, 0x02, - 0x08, 0x04, 0x07, 0x8f, 0x07, 0xfa, 0xcb, 0xce, 0x00, 0x02, 0x07, 0x8e, 0x07, 0x36, 0xcb, 0xce, - 0x00, 0x04, 0x07, 0x8d, 0x06, 0x30, 0x07, 0x8e, 0x00, 0x10, 0x2c, 0x4d, 0x04, 0x5b, 0xc2, 0xa0, - 0x07, 0xf2, 0x10, 0x02, 0xc2, 0xa0, 0x07, 0xf8, 0xc8, 0x0b, 0x08, 0xea, 0xc3, 0x09, 0x13, 0x0a, - 0x06, 0xa0, 0xc7, 0x94, 0xc2, 0xa0, 0x01, 0x00, 0xe2, 0xa0, 0xe0, 0x06, 0xa3, 0x4c, 0xa3, 0xcc, - 0x17, 0x01, 0x05, 0x8e, 0x62, 0x4c, 0xc2, 0xe0, 0x08, 0xea, 0x04, 0x5b, 0x07, 0x8d, 0x10, 0x00, - 0x20, 0x20, 0xe0, 0x0a, 0x13, 0x01, 0x04, 0x5b, 0x02, 0x0d, 0x00, 0x6e, 0xc3, 0xe0, 0x09, 0x30, - 0x16, 0x02, 0x01, 0xce, 0x00, 0x10, 0x27, 0x8d, 0x13, 0x03, 0x02, 0x0d, 0x01, 0x00, 0x04, 0x52, - 0x03, 0x00, 0x00, 0x02, 0xc3, 0x60, 0x09, 0x6a, 0x02, 0x4d, 0x80, 0x08, 0x02, 0x4e, 0x7f, 0xf7, - 0xe3, 0x8d, 0xc3, 0xe0, 0x07, 0xd8, 0x23, 0xe0, 0xe0, 0x16, 0x13, 0x04, 0x07, 0x8d, 0x00, 0x06, - 0x27, 0x8d, 0x13, 0x02, 0xe3, 0xa0, 0xe0, 0x10, 0xc8, 0x0e, 0x09, 0x6a, 0x02, 0x0d, 0x12, 0x00, - 0x01, 0x4e, 0x00, 0x10, 0x13, 0x02, 0x02, 0x0d, 0x13, 0x00, 0xd8, 0x0d, 0x09, 0x2e, 0xc3, 0x60, - 0x01, 0x80, 0x02, 0x4e, 0x00, 0x01, 0x02, 0x4d, 0xff, 0xfe, 0xe3, 0x4e, 0xc8, 0x0d, 0x01, 0x80, - 0xd8, 0x20, 0xe2, 0x40, 0x09, 0x2f, 0x01, 0x20, 0x09, 0x6a, 0x00, 0x06, 0x13, 0x03, 0xd8, 0x20, - 0xe1, 0xd0, 0x09, 0x2f, 0x98, 0x20, 0x01, 0x83, 0xe2, 0x00, 0x13, 0x03, 0xd8, 0x20, 0x09, 0x2f, - 0x01, 0x83, 0x03, 0x00, 0x00, 0x0f, 0x04, 0x60, 0xcb, 0xb8, 0x20, 0x20, 0xe0, 0x0a, 0x13, 0x03, - 0x02, 0x0d, 0x10, 0x00, 0x04, 0x5b, 0x02, 0x09, 0x00, 0x08, 0x02, 0x0d, 0x09, 0x58, 0x06, 0xa0, - 0xcc, 0x24, 0x07, 0xa0, 0x02, 0x02, 0x00, 0x00, 0x02, 0x0d, 0x04, 0x00, 0xc3, 0xe0, 0x09, 0x58, - 0x01, 0x0f, 0x7c, 0x00, 0x13, 0x01, 0x04, 0x52, 0xc3, 0x8f, 0x02, 0x4e, 0x00, 0x0f, 0x13, 0xfb, - 0x02, 0x8e, 0x00, 0x0f, 0x13, 0xf8, 0x02, 0x0d, 0x40, 0x00, 0xc2, 0x4f, 0x09, 0x49, 0x02, 0x49, - 0x00, 0x3f, 0x01, 0x09, 0x00, 0x01, 0x16, 0xef, 0x02, 0x89, 0x00, 0x06, 0x1a, 0xec, 0x02, 0x89, - 0x00, 0x20, 0x14, 0xe9, 0x06, 0xc9, 0x09, 0x1f, 0x02, 0x4f, 0x40, 0x00, 0xe2, 0x4f, 0x02, 0x69, - 0x80, 0x00, 0xc8, 0x09, 0x09, 0x58, 0x02, 0x0f, 0xff, 0xff, 0xc2, 0x4e, 0x09, 0x1f, 0x06, 0x09, - 0x16, 0xfd, 0x05, 0x4f, 0x02, 0x0d, 0x20, 0x00, 0xc2, 0x60, 0x09, 0x5a, 0x13, 0xd4, 0x26, 0x4f, - 0x16, 0xd2, 0x02, 0x0d, 0x10, 0x00, 0xc2, 0x60, 0x09, 0x5c, 0x13, 0xcd, 0x26, 0x4f, 0x16, 0xcb, - 0x02, 0x0d, 0x30, 0x00, 0x88, 0x20, 0x09, 0x5a, 0x09, 0x5c, 0x13, 0xc5, 0xc3, 0xe0, 0x09, 0x5a, - 0xc2, 0x4e, 0x0a, 0x1f, 0x06, 0x09, 0x16, 0xfd, 0xe3, 0xe0, 0x09, 0x5e, 0xc8, 0x0f, 0x09, 0x5a, - 0xc3, 0xe0, 0x09, 0x5c, 0xc2, 0x4e, 0x0a, 0x1f, 0x06, 0x09, 0x16, 0xfd, 0xe3, 0xe0, 0x09, 0x5e, - 0xc8, 0x0f, 0x09, 0x5c, 0x02, 0x0f, 0xff, 0xff, 0xc2, 0x4e, 0x0a, 0x1f, 0x06, 0x09, 0x16, 0xfd, - 0x02, 0x0d, 0x08, 0x00, 0xc2, 0x60, 0x09, 0x5e, 0x26, 0x4f, 0x16, 0xa5, 0x05, 0x4f, 0xc8, 0x0f, - 0x09, 0x5e, 0x02, 0x0f, 0x02, 0x02, 0x02, 0x0e, 0x00, 0x03, 0xc3, 0x60, 0x01, 0x40, 0x02, 0x0c, - 0xce, 0x26, 0x01, 0xa0, 0x01, 0x40, 0x04, 0x00, 0x05, 0xcf, 0x02, 0x09, 0x55, 0x55, 0x06, 0x9c, - 0x05, 0x49, 0x06, 0x9c, 0x07, 0x09, 0x06, 0x9c, 0x05, 0x49, 0x06, 0x9c, 0x06, 0x0e, 0x16, 0xf4, - 0x01, 0xa0, 0x01, 0x40, 0x40, 0x00, 0xc8, 0x0d, 0x01, 0x40, 0x02, 0x09, 0x00, 0x08, 0x02, 0x0e, - 0x09, 0x58, 0x02, 0x0f, 0x02, 0x02, 0xcf, 0xfe, 0x06, 0x49, 0x16, 0xfd, 0x04, 0x60, 0xcb, 0xb8, - 0xc7, 0xc9, 0x82, 0x5f, 0x16, 0x01, 0x04, 0x5b, 0x01, 0xa0, 0x01, 0x40, 0x40, 0x00, 0xc8, 0x0d, - 0x01, 0x40, 0x02, 0x0d, 0x01, 0x00, 0x04, 0x52, 0x00, 0x00, 0xd8, 0xee, 0x00, 0x92, 0xc2, 0xad, - 0x00, 0x02, 0xc2, 0x6d, 0x00, 0x00, 0x16, 0x05, 0x07, 0xaa, 0x00, 0x02, 0x07, 0x36, 0x2c, 0x9a, - 0x03, 0x80, 0x2c, 0xea, 0x00, 0x02, 0xcb, 0x41, 0x00, 0x00, 0x03, 0x80, 0xc3, 0x2d, 0x00, 0x18, - 0x07, 0xac, 0x00, 0x02, 0x07, 0x36, 0x4b, 0x20, 0xea, 0xa6, 0x00, 0x0a, 0xeb, 0x20, 0xea, 0xa0, - 0x00, 0x0a, 0x2e, 0x9c, 0x03, 0x80, 0xc2, 0xa0, 0xe0, 0x22, 0x04, 0x60, 0xb3, 0x8a, 0xc0, 0xed, - 0x00, 0x18, 0x06, 0xa0, 0xd9, 0x5e, 0x03, 0x80, 0xc2, 0x44, 0xc0, 0xc3, 0x13, 0x02, 0x06, 0xa0, - 0xd9, 0x5e, 0xc3, 0x19, 0xcb, 0x09, 0x00, 0x18, 0x05, 0xc9, 0xcb, 0x19, 0x00, 0x16, 0xc2, 0x4c, - 0x02, 0x2c, 0x00, 0x1a, 0xcf, 0x0d, 0xcf, 0x0e, 0xc7, 0x0f, 0x00, 0x99, 0x04, 0x5b, 0x07, 0x8c, - 0x09, 0x0a, 0xc2, 0x9c, 0x22, 0xa0, 0xe0, 0x14, 0x13, 0x06, 0xc2, 0xa0, 0x07, 0x58, 0x22, 0xa0, - 0xe0, 0x20, 0x16, 0x01, 0x03, 0x80, 0xc1, 0x03, 0x04, 0xc3, 0x07, 0x8a, 0x00, 0x04, 0xa2, 0x84, - 0x00, 0x00, 0xd9, 0x80, 0x00, 0x0b, 0xcf, 0x3a, 0x00, 0x00, 0xd9, 0x8a, 0x00, 0xb2, 0x02, 0xe0, - 0x07, 0x58, 0x07, 0x8d, 0x09, 0x0a, 0xc8, 0x0b, 0x07, 0xc2, 0x06, 0xa0, 0xc5, 0xa2, 0xc2, 0xe0, - 0x07, 0xc2, 0xe0, 0x20, 0xe0, 0x20, 0x02, 0xe0, 0x07, 0xb8, 0x04, 0x5b, 0xc3, 0x2d, 0x00, 0x18, - 0xc2, 0x8c, 0xc2, 0x60, 0x01, 0x6c, 0xc8, 0x0a, 0x01, 0x6c, 0xc2, 0xe0, 0xfc, 0x00, 0x13, 0x02, - 0xc2, 0x8b, 0x10, 0xf9, 0xc8, 0x09, 0x01, 0x6c, 0x07, 0x8b, 0x05, 0xf8, 0xc2, 0x5b, 0x13, 0x0c, - 0x05, 0xcb, 0xc2, 0x5b, 0xc6, 0xca, 0xc2, 0xe0, 0x01, 0x6c, 0xc8, 0x09, 0x01, 0x6c, 0xc8, 0x0c, - 0xfc, 0x00, 0xc8, 0x0b, 0x01, 0x6c, 0x10, 0x02, 0xce, 0xcc, 0xc6, 0xca, 0xc2, 0xa0, 0x00, 0xe0, - 0x22, 0xa0, 0xe0, 0x1a, 0x16, 0x06, 0xe8, 0x20, 0xe0, 0x04, 0x07, 0x3a, 0x48, 0x20, 0xe0, 0x1a, - 0x00, 0xe0, 0x03, 0x80, 0xd3, 0xe0, 0xe3, 0xab, 0xc1, 0xe0, 0x06, 0xa8, 0x16, 0x05, 0x02, 0x07, - 0x06, 0xa2, 0x06, 0xa0, 0xc2, 0x96, 0x16, 0x0b, 0xc1, 0xe0, 0x06, 0xba, 0x16, 0x20, 0x02, 0x07, - 0x06, 0xb4, 0x06, 0xa0, 0xc2, 0x96, 0x13, 0x1b, 0x02, 0x07, 0x06, 0xb8, 0x10, 0x02, 0x02, 0x07, - 0x06, 0xa6, 0xc1, 0x60, 0xfc, 0x02, 0xc8, 0x25, 0x00, 0x0c, 0xfc, 0x02, 0xc9, 0xc5, 0x00, 0x0c, - 0x00, 0x00, 0xda, 0x3c, 0x00, 0x0b, 0xcd, 0xf5, 0x00, 0x00, 0xda, 0x46, 0x19, 0x3a, 0xc5, 0xf5, - 0x01, 0xb7, 0x00, 0x28, 0x02, 0x27, 0xff, 0xf4, 0x07, 0xa7, 0x00, 0x04, 0xdb, 0x48, 0x2e, 0x97, - 0x10, 0xd5, 0x03, 0x00, 0x00, 0x02, 0x06, 0xa0, 0xc2, 0xae, 0x03, 0x00, 0x00, 0x0f, 0x2c, 0x20, - 0xed, 0x48, 0x93, 0xe0, 0xe3, 0xab, 0x16, 0x03, 0x02, 0x81, 0x00, 0x16, 0x16, 0xc7, 0xc1, 0x21, - 0xea, 0xb0, 0x04, 0x54, 0x93, 0xe0, 0xe0, 0x10, 0x16, 0x03, 0xd2, 0xa0, 0xe3, 0xa8, 0x10, 0x0b, - 0xd3, 0xcf, 0x16, 0x09, 0x23, 0xa0, 0xe0, 0x08, 0x16, 0x06, 0x07, 0x84, 0x00, 0x20, 0xe8, 0x04, - 0x06, 0xd2, 0xd2, 0xa0, 0xe0, 0x0c, 0x04, 0x60, 0xdb, 0xc0, 0x04, 0x60, 0xde, 0x34, 0x10, 0x7b, - 0xc1, 0x22, 0x00, 0x04, 0x04, 0xe2, 0x00, 0x02, 0x04, 0x54, 0xc8, 0x02, 0x01, 0x6c, 0xa0, 0x82, - 0xc8, 0x22, 0x0c, 0x32, 0xfc, 0x00, 0x02, 0x02, 0xfc, 0x00, 0x93, 0xe0, 0xe3, 0xaa, 0x13, 0x70, - 0x06, 0xa0, 0xdc, 0xc6, 0x48, 0xa0, 0xe0, 0x04, 0x00, 0x0e, 0x02, 0x85, 0x00, 0x07, 0x13, 0x0e, - 0x01, 0x0e, 0x00, 0x03, 0x13, 0x0b, 0x23, 0xa0, 0xe0, 0x22, 0x16, 0x03, 0xd2, 0xa0, 0xe0, 0x0e, - 0x10, 0x02, 0xd2, 0xa0, 0xe3, 0xa8, 0x01, 0x8e, 0x00, 0x03, 0x10, 0x5a, 0xc8, 0x05, 0x06, 0xfc, - 0xc0, 0xc3, 0x16, 0x53, 0x43, 0xa0, 0xe0, 0x10, 0x88, 0x22, 0x00, 0x0e, 0x09, 0x6c, 0x16, 0x0a, - 0x88, 0x22, 0x00, 0x10, 0x09, 0x6e, 0x16, 0x06, 0x88, 0x22, 0x00, 0x12, 0x09, 0x70, 0x16, 0x02, - 0xe3, 0xa0, 0xe0, 0x10, 0x02, 0x85, 0x00, 0x09, 0x13, 0x02, 0x06, 0xa0, 0xe2, 0xe4, 0xa1, 0x45, - 0xc1, 0x65, 0xe3, 0xac, 0x04, 0x55, 0xc0, 0x62, 0x00, 0x04, 0xc8, 0x22, 0x00, 0x06, 0x01, 0x6c, - 0x02, 0x82, 0x04, 0x48, 0x1b, 0x02, 0x43, 0xa0, 0xe0, 0x0c, 0xc1, 0x22, 0x00, 0x0e, 0x04, 0x51, - 0xc0, 0x42, 0x04, 0xe1, 0x00, 0x02, 0xc0, 0xa2, 0x00, 0x0c, 0xc1, 0x22, 0x00, 0x0a, 0x21, 0x20, - 0xe0, 0x18, 0x13, 0x07, 0xc8, 0xa1, 0x00, 0x0a, 0x00, 0x0a, 0xc8, 0xa1, 0x00, 0x08, 0x00, 0x08, - 0x10, 0xe2, 0xc8, 0x22, 0x00, 0x06, 0x01, 0x6c, 0x06, 0xa0, 0xe1, 0xa2, 0x04, 0x60, 0xdb, 0x9e, - 0xc8, 0x02, 0x06, 0xd4, 0xc1, 0x62, 0x00, 0x02, 0xc1, 0x65, 0xe3, 0xce, 0x04, 0x55, 0x10, 0x0b, - 0x07, 0x85, 0x03, 0xf4, 0x04, 0xf5, 0xcd, 0x60, 0xed, 0x26, 0x06, 0xa0, 0xe3, 0xce, 0xe3, 0xa0, - 0xe0, 0x0c, 0x2e, 0xa0, 0x03, 0xf4, 0x04, 0x60, 0xda, 0x04, 0x06, 0xa0, 0xe0, 0x6e, 0x10, 0x0c, - 0x06, 0xa0, 0xe1, 0xa2, 0x10, 0x09, 0x06, 0xa0, 0xe3, 0x56, 0x10, 0x06, 0x06, 0xa0, 0xe1, 0xa2, - 0xc8, 0x03, 0x09, 0x2a, 0xd2, 0xa0, 0xe3, 0xaa, 0x06, 0xa0, 0xdc, 0x32, 0x92, 0xa0, 0xe0, 0x26, - 0x16, 0x0c, 0xd3, 0xe0, 0xe0, 0x26, 0x23, 0xe0, 0xe0, 0x14, 0x13, 0x0a, 0xc1, 0x0a, 0x83, 0xc4, - 0x13, 0x07, 0xc3, 0xc4, 0xc1, 0x24, 0xe3, 0xd2, 0x04, 0x54, 0x93, 0xca, 0x13, 0xdc, 0xd3, 0xca, - 0x03, 0xb0, 0xd8, 0x0f, 0x06, 0x59, 0x71, 0x04, 0xc1, 0x24, 0xe3, 0xde, 0x04, 0x54, 0x23, 0xa0, - 0xe0, 0x0c, 0x13, 0xd1, 0xc3, 0x4d, 0x13, 0xcf, 0x07, 0x86, 0x00, 0x02, 0x07, 0x84, 0x00, 0x26, - 0x23, 0x46, 0x13, 0x03, 0x06, 0x44, 0xa1, 0x86, 0x10, 0xfb, 0x43, 0x46, 0x10, 0xb9, 0x07, 0x85, - 0x07, 0x1c, 0x07, 0x86, 0x04, 0x1a, 0x6d, 0x76, 0x6d, 0x76, 0x6d, 0x76, 0x05, 0xc6, 0x6d, 0x76, - 0x6d, 0x76, 0x6d, 0x76, 0x07, 0x83, 0x90, 0x00, 0x10, 0xbe, 0xc3, 0x0b, 0x07, 0x86, 0x01, 0x00, - 0x07, 0x85, 0x80, 0x00, 0xc1, 0x20, 0x06, 0xd2, 0x13, 0x37, 0x04, 0xc4, 0xc0, 0x60, 0x06, 0xd2, - 0x20, 0x45, 0x13, 0x04, 0x05, 0x84, 0x09, 0x15, 0x16, 0xf9, 0x10, 0x2e, 0xd3, 0xcf, 0x16, 0x06, - 0x23, 0xe0, 0xe0, 0x14, 0x16, 0x03, 0x01, 0x0e, 0x00, 0x03, 0x13, 0x03, 0x04, 0xe0, 0x06, 0xd2, - 0x10, 0x23, 0xd0, 0x64, 0x07, 0x1c, 0xb0, 0x46, 0x18, 0x10, 0xd9, 0x01, 0x07, 0x1c, 0x23, 0x60, - 0xe0, 0x20, 0x13, 0x0b, 0x07, 0x81, 0x00, 0x18, 0xc0, 0x61, 0xe3, 0xee, 0x88, 0x11, 0xed, 0x26, - 0x13, 0x04, 0x02, 0x08, 0x80, 0x18, 0x06, 0xa0, 0xe0, 0x22, 0xd0, 0x64, 0x07, 0x28, 0xb0, 0x46, - 0x18, 0x08, 0xd9, 0x01, 0x07, 0x28, 0xb0, 0x46, 0x17, 0x04, 0x07, 0x83, 0x80, 0x40, 0x06, 0xa0, - 0xe3, 0x56, 0x48, 0x05, 0x06, 0xd2, 0x16, 0xca, 0xc1, 0x20, 0x09, 0x32, 0x16, 0x01, 0x04, 0x5c, - 0x02, 0x04, 0x00, 0x07, 0x06, 0x20, 0x09, 0x32, 0x02, 0x05, 0x01, 0x00, 0x10, 0xc7, 0xc3, 0x0b, - 0x04, 0xc5, 0xc0, 0x42, 0x04, 0xc7, 0xc2, 0x20, 0x01, 0x6c, 0xa1, 0xe1, 0x00, 0x04, 0xc8, 0x11, - 0x01, 0x6c, 0x16, 0xfb, 0xc8, 0x08, 0x01, 0x6c, 0x04, 0xc8, 0x43, 0xa0, 0xe0, 0x1a, 0xc1, 0x22, - 0x00, 0x0e, 0x15, 0x0d, 0x13, 0x0c, 0xe3, 0xa0, 0xe0, 0x1a, 0x06, 0xa0, 0xe3, 0x40, 0xc2, 0x08, - 0x13, 0x48, 0x02, 0x88, 0x00, 0x12, 0x1b, 0x45, 0x22, 0x20, 0xe0, 0x22, 0x13, 0x42, 0xc1, 0x02, - 0xa1, 0x08, 0x05, 0x08, 0x02, 0x28, 0xff, 0xf2, 0xa2, 0x07, 0x07, 0x83, 0x80, 0x01, 0x02, 0x88, - 0x00, 0x04, 0x11, 0x6e, 0xc2, 0x64, 0x00, 0x16, 0xd2, 0x49, 0x16, 0x02, 0x81, 0x02, 0x16, 0x31, - 0x01, 0x09, 0xf0, 0x00, 0x16, 0x28, 0xc1, 0x49, 0x71, 0x45, 0x04, 0xc3, 0x02, 0x85, 0x00, 0x09, - 0x13, 0x7c, 0x07, 0x83, 0x80, 0x02, 0xc1, 0xa4, 0x00, 0x14, 0x81, 0x88, 0x16, 0x76, 0x05, 0x83, - 0x02, 0x85, 0x00, 0x10, 0x1b, 0x13, 0x05, 0x83, 0x99, 0x49, 0xea, 0xd0, 0x13, 0x0a, 0x98, 0x09, - 0xe0, 0x0e, 0x16, 0x6b, 0x98, 0x25, 0xea, 0xd0, 0xe0, 0x0c, 0x16, 0x67, 0xc1, 0xe0, 0x06, 0xec, - 0x16, 0x64, 0x04, 0xc3, 0xc2, 0x52, 0x13, 0x0f, 0x07, 0x83, 0x80, 0x09, 0xc1, 0xe0, 0x09, 0x6a, - 0x01, 0x47, 0x10, 0x00, 0x16, 0x5a, 0xc0, 0xa0, 0x01, 0x6c, 0x06, 0xa0, 0xe1, 0xfa, 0x04, 0x60, - 0xdb, 0x9e, 0x04, 0x60, 0xdb, 0xa8, 0x07, 0x89, 0x07, 0x0e, 0x04, 0xc7, 0xd1, 0xe5, 0xea, 0xe1, - 0x13, 0x05, 0x06, 0xc7, 0x02, 0x27, 0xea, 0xf2, 0xce, 0x77, 0x15, 0xfe, 0xc0, 0x44, 0x02, 0x21, - 0x00, 0x18, 0x02, 0x28, 0xff, 0xfc, 0x13, 0x36, 0xc1, 0x91, 0xd1, 0x86, 0x13, 0x1f, 0x06, 0xc6, - 0x07, 0x87, 0x07, 0x0e, 0xc0, 0xf7, 0x02, 0x46, 0xbf, 0xff, 0x02, 0x43, 0x3f, 0xff, 0x91, 0xa0, - 0xed, 0x4d, 0x16, 0x09, 0x03, 0xb0, 0x98, 0x20, 0xe0, 0x0e, 0x06, 0x5d, 0x16, 0x0f, 0xc8, 0x21, - 0x00, 0x02, 0x07, 0x0c, 0x10, 0x17, 0x82, 0x47, 0x1b, 0x0c, 0x90, 0xc6, 0x16, 0xeb, 0x06, 0x47, - 0x04, 0xf7, 0x03, 0xb0, 0x98, 0x20, 0x06, 0x5d, 0x06, 0x57, 0x13, 0x0c, 0x07, 0x83, 0x80, 0x05, - 0x10, 0x1c, 0xc0, 0xd1, 0x20, 0xe0, 0xe0, 0x16, 0x16, 0x03, 0x07, 0x83, 0x80, 0x08, 0x10, 0x15, - 0x44, 0x60, 0xe0, 0x26, 0x71, 0x86, 0xa0, 0x46, 0x62, 0x06, 0x07, 0x83, 0x80, 0x05, 0xc2, 0x08, - 0x15, 0xcb, 0x16, 0x0b, 0x04, 0xc3, 0x07, 0x87, 0x07, 0x0e, 0xc0, 0x77, 0x82, 0x47, 0x1b, 0x05, - 0x20, 0x60, 0xe0, 0x06, 0x16, 0xfa, 0x07, 0x83, 0x80, 0x07, 0x04, 0x5c, 0x92, 0xa0, 0xe0, 0x0e, - 0x16, 0x11, 0xc8, 0x20, 0xe0, 0x20, 0x07, 0x08, 0x04, 0xe0, 0x01, 0x84, 0x05, 0x60, 0x07, 0x02, - 0x13, 0x3f, 0x48, 0x20, 0xe0, 0x06, 0x01, 0x82, 0x06, 0xa0, 0xe0, 0x18, 0x07, 0x83, 0xc0, 0x00, - 0x06, 0xa0, 0xe3, 0x56, 0xc8, 0x20, 0xe0, 0x1e, 0x07, 0x02, 0xe3, 0xa0, 0xe0, 0x04, 0x02, 0x08, - 0x80, 0x24, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0x36, 0xc1, 0x20, 0x01, 0x84, 0x02, 0x44, 0x88, 0x00, - 0x13, 0x1e, 0x48, 0x04, 0x01, 0x84, 0x06, 0x20, 0x07, 0x02, 0x16, 0xf1, 0x23, 0xa0, 0xe0, 0x22, - 0x16, 0x05, 0x43, 0xa0, 0xe0, 0x22, 0xd2, 0xa0, 0xe0, 0x0e, 0x10, 0xd3, 0x23, 0xe0, 0xe0, 0x14, - 0x13, 0x04, 0x98, 0x20, 0xe3, 0xa9, 0x06, 0x65, 0x16, 0x06, 0x92, 0xa0, 0xe0, 0x0e, 0x13, 0xc9, - 0xd2, 0xa0, 0xe3, 0xa8, 0x10, 0xd7, 0x07, 0x83, 0x00, 0x02, 0x04, 0x60, 0xdb, 0xb8, 0xe8, 0x20, - 0xe0, 0x06, 0x01, 0x82, 0x06, 0xa0, 0xe0, 0x18, 0x07, 0x20, 0x07, 0x02, 0x43, 0xa0, 0xe0, 0x04, - 0xc8, 0x20, 0xe4, 0x6e, 0x01, 0x86, 0x88, 0x20, 0xe0, 0x20, 0x07, 0x08, 0x16, 0x03, 0xc8, 0x20, - 0xeb, 0x0a, 0x07, 0x08, 0x04, 0x60, 0xdb, 0xc0, 0x01, 0x0e, 0x00, 0x03, 0x13, 0x16, 0xd3, 0xcf, - 0x16, 0x08, 0x23, 0xa0, 0xe0, 0x20, 0x16, 0x03, 0xd2, 0xa0, 0xe3, 0xa8, 0x10, 0x02, 0xd2, 0xa0, - 0xe0, 0x0e, 0x01, 0x8e, 0x00, 0x03, 0x10, 0x09, 0xc1, 0x60, 0x01, 0x84, 0x21, 0x60, 0xe0, 0x0a, - 0x16, 0x04, 0x07, 0x83, 0x84, 0x00, 0x04, 0x60, 0xdb, 0xb8, 0xc8, 0x20, 0xe0, 0x2e, 0x01, 0x84, - 0x02, 0x08, 0x80, 0x06, 0x06, 0xa0, 0xe0, 0x22, 0x04, 0x60, 0xdb, 0xc0, 0xe3, 0x60, 0xe0, 0x20, - 0x04, 0x60, 0xdb, 0xc0, 0x93, 0xe0, 0xe0, 0x26, 0x16, 0x10, 0x23, 0xa0, 0xe0, 0x08, 0x16, 0x0d, - 0x23, 0xa0, 0xe0, 0x06, 0x13, 0x02, 0xe3, 0x60, 0xe0, 0x1c, 0xe3, 0x60, 0xe0, 0x18, 0x43, 0xa0, - 0xe0, 0x06, 0x02, 0x08, 0x80, 0x3c, 0x06, 0xa0, 0xe0, 0x22, 0x04, 0x60, 0xdb, 0xc0, 0x92, 0xa0, - 0xe3, 0xa8, 0x13, 0x03, 0x92, 0xa0, 0xe3, 0xa9, 0x16, 0x1e, 0x23, 0xe0, 0xe0, 0x14, 0x13, 0x08, - 0x98, 0x20, 0xe3, 0xa9, 0x06, 0x65, 0x13, 0x04, 0x07, 0x83, 0x00, 0x07, 0x04, 0x60, 0xdb, 0xb8, - 0xd2, 0xa0, 0xe0, 0x0e, 0xc8, 0x20, 0xe0, 0x20, 0x07, 0x08, 0x27, 0xa0, 0xe0, 0x04, 0x16, 0x0b, - 0xc8, 0x20, 0xe0, 0x1e, 0x07, 0x08, 0x93, 0xe0, 0xe3, 0xa8, 0x16, 0x05, 0x23, 0xa0, 0xe0, 0x12, - 0x13, 0x02, 0x06, 0x20, 0x07, 0x08, 0x04, 0x60, 0xdb, 0xc0, 0x23, 0xe0, 0xe0, 0x14, 0x13, 0x36, - 0x03, 0xb0, 0x98, 0x20, 0xe0, 0x0e, 0x06, 0x6f, 0x16, 0x0f, 0xd3, 0xcf, 0x16, 0x2f, 0xd2, 0xa0, - 0xe3, 0xa8, 0x04, 0x60, 0xdb, 0xc0, 0x92, 0xa0, 0xe0, 0x0c, 0x16, 0x28, 0x23, 0xe0, 0xe0, 0x14, - 0x13, 0xf6, 0x07, 0x83, 0x00, 0x06, 0x10, 0x07, 0x07, 0x83, 0x00, 0x05, 0x93, 0xe0, 0xe0, 0x0e, - 0x16, 0x02, 0x07, 0x83, 0x00, 0x07, 0x04, 0x60, 0xdb, 0xb8, 0xe3, 0x60, 0xe0, 0x12, 0x23, 0xe0, - 0xe0, 0x14, 0x13, 0x0d, 0x98, 0x20, 0xe0, 0x0c, 0x06, 0x65, 0x16, 0x03, 0xd8, 0x20, 0xe3, 0xa9, - 0x06, 0x65, 0x10, 0x0c, 0xc1, 0x20, 0x01, 0x84, 0x21, 0x20, 0xe0, 0x06, 0x16, 0xd6, 0x48, 0x20, - 0xe0, 0x06, 0x01, 0x84, 0x02, 0x08, 0x80, 0x30, 0x06, 0xa0, 0xe0, 0x22, 0x04, 0x60, 0xdb, 0xc0, - 0x02, 0x04, 0x00, 0x64, 0x06, 0x04, 0x16, 0xfe, 0x04, 0x5b, 0xe3, 0xa0, 0xe0, 0x0a, 0xc2, 0x08, - 0x11, 0x02, 0x43, 0xa0, 0xe0, 0x0a, 0x42, 0x20, 0xe0, 0x04, 0x02, 0x28, 0xe3, 0xee, 0xc0, 0x58, - 0xc0, 0x02, 0x88, 0x11, 0xed, 0x26, 0x16, 0x03, 0x2c, 0xd1, 0xc0, 0x58, 0x04, 0xd1, 0xc0, 0x80, - 0x01, 0x0e, 0x10, 0x00, 0x13, 0x0f, 0xcc, 0x60, 0xed, 0x26, 0x05, 0xc8, 0xcc, 0x78, 0x16, 0x03, - 0x06, 0x41, 0xcc, 0x60, 0x06, 0xd6, 0xc4, 0x58, 0x16, 0x02, 0xc4, 0x60, 0x07, 0x00, 0x02, 0x21, - 0xff, 0xfa, 0x2c, 0x91, 0x04, 0x5b, 0xc3, 0x0b, 0x06, 0xa0, 0xe1, 0x0a, 0x06, 0xa0, 0xe0, 0xe4, - 0xc2, 0x08, 0x16, 0x05, 0xc2, 0x62, 0x00, 0x02, 0x26, 0x60, 0xe4, 0x68, 0x16, 0x0d, 0xc2, 0x42, - 0x05, 0xc9, 0xce, 0x60, 0xed, 0x4a, 0xc6, 0x60, 0xeb, 0x0c, 0x06, 0xa0, 0xe1, 0x4c, 0xca, 0x18, - 0x00, 0x0a, 0x46, 0x20, 0xe0, 0x26, 0x16, 0x04, 0xc0, 0xa0, 0x01, 0x6c, 0x2e, 0x12, 0x10, 0x1d, - 0xc1, 0x12, 0x13, 0x05, 0xc1, 0x60, 0x01, 0x6c, 0x2e, 0x14, 0xc8, 0x05, 0x01, 0x6c, 0x04, 0xd2, - 0x06, 0x48, 0x07, 0x84, 0x00, 0x02, 0xc1, 0x48, 0xc0, 0xa0, 0x01, 0x6c, 0xc0, 0x02, 0x06, 0xa0, - 0xe3, 0xce, 0xc5, 0x60, 0xfc, 0x02, 0x02, 0x07, 0x06, 0xa2, 0x02, 0x25, 0xff, 0xf4, 0xc8, 0x05, - 0xfc, 0x02, 0xc2, 0x20, 0x01, 0x6c, 0x06, 0xa0, 0xc2, 0x5a, 0x04, 0x5c, 0xc2, 0x42, 0x02, 0x29, - 0x00, 0x08, 0xc2, 0x39, 0x02, 0x48, 0xc0, 0x00, 0x02, 0x88, 0xc0, 0x00, 0x16, 0x08, 0x8e, 0x60, - 0xe0, 0x2e, 0x16, 0x05, 0x86, 0x60, 0xe0, 0x2e, 0x16, 0x02, 0x04, 0xc8, 0x04, 0x5b, 0x07, 0x08, - 0x04, 0x5b, 0x88, 0x20, 0xe1, 0x8e, 0x01, 0x6c, 0x16, 0x02, 0x04, 0x60, 0xdb, 0xa8, 0x04, 0x5b, - 0x07, 0x88, 0x01, 0xae, 0xe8, 0x20, 0xe0, 0x0e, 0x01, 0x80, 0x06, 0x08, 0x16, 0xfe, 0x48, 0x20, - 0xe0, 0x0e, 0x01, 0x80, 0x04, 0x5b, 0x04, 0xc2, 0x23, 0xa0, 0xe0, 0x0c, 0x16, 0x0a, 0x2f, 0x20, - 0x06, 0x30, 0x07, 0x82, 0xff, 0xdf, 0x2c, 0x02, 0x02, 0x82, 0x03, 0xf4, 0x16, 0xfa, 0x43, 0xa0, - 0xe0, 0x0c, 0x04, 0x5b, 0xc2, 0x42, 0x07, 0x88, 0x00, 0x0e, 0xa2, 0x09, 0x02, 0x29, 0x00, 0x08, - 0xce, 0x78, 0xce, 0x78, 0xce, 0x78, 0xce, 0x60, 0x09, 0x6c, 0xce, 0x60, 0x09, 0x6e, 0xce, 0x60, - 0x09, 0x70, 0x23, 0xa0, 0xe0, 0x1a, 0x16, 0x0f, 0xc2, 0x58, 0x02, 0x49, 0x1f, 0x80, 0x2a, 0x60, - 0xe0, 0x14, 0xe8, 0xa0, 0xe0, 0x04, 0x00, 0x0e, 0xc6, 0x09, 0x02, 0x49, 0x1f, 0x00, 0x06, 0xc9, - 0xa2, 0x09, 0xa8, 0x89, 0x00, 0x04, 0x02, 0x28, 0x00, 0x02, 0xc2, 0x58, 0x0a, 0x49, 0x02, 0x49, - 0xf0, 0x00, 0xd6, 0x09, 0x04, 0xe2, 0x00, 0x06, 0x04, 0x5b, 0x07, 0x00, 0xc0, 0x82, 0x13, 0x53, - 0xc0, 0xa0, 0x01, 0x6c, 0xc1, 0xa0, 0xfc, 0x06, 0x02, 0x46, 0x00, 0x0f, 0x02, 0x86, 0x00, 0x01, - 0x12, 0x3d, 0x88, 0x06, 0x06, 0xf2, 0x16, 0x12, 0x02, 0x01, 0xfc, 0x0e, 0x88, 0x31, 0x06, 0xf4, - 0x16, 0x0d, 0x88, 0x31, 0x06, 0xf6, 0x16, 0x0a, 0x88, 0x31, 0x06, 0xf8, 0x16, 0x07, 0x02, 0x86, - 0x00, 0x02, 0x16, 0x2c, 0x88, 0x20, 0x07, 0x0a, 0x06, 0xfa, 0x13, 0x28, 0xc1, 0x20, 0x09, 0x6a, - 0x01, 0x44, 0x08, 0x00, 0x13, 0x06, 0x02, 0x86, 0x00, 0x02, 0x16, 0x20, 0x01, 0x44, 0x00, 0x80, - 0x16, 0x1d, 0x07, 0x00, 0x23, 0xe0, 0xe0, 0x14, 0x16, 0x19, 0x02, 0x82, 0x00, 0x43, 0x13, 0x16, - 0x02, 0x00, 0xfc, 0x02, 0xc0, 0x40, 0x01, 0xb0, 0x00, 0x20, 0x01, 0x60, 0x09, 0x6a, 0x00, 0x01, - 0x16, 0x07, 0xa0, 0x60, 0x09, 0x2c, 0xcc, 0x60, 0x05, 0xee, 0xc4, 0x50, 0xc4, 0x20, 0x09, 0x2c, - 0x07, 0x80, 0x07, 0x36, 0x07, 0x81, 0x00, 0x40, 0x2c, 0x40, 0x04, 0xc0, 0x07, 0x84, 0x06, 0xf2, - 0xcd, 0x06, 0x02, 0x01, 0xfc, 0x0e, 0xcd, 0x31, 0xcd, 0x31, 0xcd, 0x31, 0xc5, 0x20, 0x07, 0x0a, - 0xc0, 0x00, 0x13, 0x01, 0x2e, 0x12, 0x04, 0xe0, 0x01, 0x6c, 0x04, 0x5b, 0xc8, 0x0b, 0x09, 0x22, - 0x06, 0xa0, 0xe2, 0x72, 0x02, 0x08, 0x80, 0x42, 0x06, 0xa0, 0xe0, 0x22, 0x02, 0x08, 0x80, 0x30, - 0x06, 0xa0, 0xe0, 0x22, 0xc2, 0xe0, 0x09, 0x22, 0x04, 0x5b, 0xc3, 0x0b, 0x48, 0x20, 0xeb, 0x0e, - 0x01, 0x82, 0x48, 0x20, 0xe4, 0x6c, 0x01, 0x80, 0x48, 0x20, 0xe0, 0x22, 0x01, 0xae, 0x48, 0x20, - 0xe0, 0x22, 0x09, 0x78, 0x43, 0x60, 0xe0, 0x18, 0x43, 0xa0, 0xe0, 0x08, 0x02, 0x08, 0x00, 0x42, - 0x06, 0xa0, 0xe0, 0x22, 0x04, 0x5c, 0xc3, 0x0b, 0xe8, 0x20, 0xe0, 0x0e, 0x01, 0x82, 0xe8, 0x20, - 0xe0, 0x22, 0x01, 0xae, 0xe8, 0x20, 0xe0, 0x22, 0x09, 0x78, 0xe3, 0xa0, 0xe0, 0x08, 0xe3, 0x60, - 0xe0, 0x18, 0x43, 0xa0, 0xe0, 0x06, 0x02, 0x08, 0x80, 0x3c, 0x06, 0xa0, 0xe0, 0x22, 0x02, 0x08, - 0x80, 0x42, 0x06, 0xa0, 0xe0, 0x22, 0x04, 0x5c, 0xc3, 0x0b, 0x07, 0x83, 0x68, 0x00, 0x06, 0xa0, - 0xe3, 0x56, 0x07, 0x83, 0x80, 0x10, 0x06, 0xa0, 0xe3, 0x56, 0x04, 0x5c, 0xc3, 0x0b, 0x06, 0xa0, - 0xe3, 0x40, 0xa2, 0x02, 0xc2, 0x68, 0x00, 0x14, 0x02, 0x29, 0xff, 0xfc, 0x13, 0x24, 0x02, 0x28, - 0x00, 0x18, 0x07, 0x87, 0x00, 0x0e, 0x07, 0x81, 0x07, 0x0e, 0x04, 0xf1, 0x06, 0x47, 0x15, 0xfd, - 0xc0, 0x58, 0x03, 0xb0, 0x78, 0x01, 0x06, 0x63, 0x02, 0x41, 0x00, 0x3f, 0x13, 0x0e, 0x02, 0x81, - 0x00, 0x1f, 0x1b, 0x0b, 0xa0, 0x41, 0xc0, 0x61, 0xe4, 0x4e, 0xc1, 0xf8, 0x06, 0xc7, 0x71, 0xc7, - 0x06, 0x47, 0xcc, 0x78, 0x06, 0x47, 0x15, 0xfd, 0x10, 0x04, 0xc0, 0x58, 0x06, 0xc1, 0x70, 0x41, - 0xa2, 0x01, 0xc2, 0x49, 0x15, 0xe5, 0x04, 0x5c, 0x23, 0xa0, 0xe0, 0x1a, 0x13, 0x02, 0x04, 0xc8, - 0x04, 0x5b, 0xc2, 0x22, 0x00, 0x14, 0x02, 0x48, 0x1f, 0x00, 0x06, 0xc8, 0x04, 0x5b, 0x02, 0x83, - 0x00, 0x0f, 0x1b, 0x17, 0xc1, 0xa0, 0x06, 0xd4, 0x13, 0x35, 0x02, 0x26, 0x00, 0x04, 0xcd, 0xa0, - 0xed, 0x26, 0xc5, 0x83, 0x13, 0x04, 0xc2, 0x4a, 0x0a, 0x39, 0xe0, 0xc9, 0xc5, 0x83, 0x07, 0x86, - 0x07, 0x36, 0x07, 0x87, 0x00, 0x10, 0xc2, 0x20, 0x06, 0xd4, 0x04, 0xe0, 0x06, 0xd4, 0x2c, 0x46, - 0x04, 0x5b, 0xc0, 0x60, 0x06, 0xfe, 0xc2, 0x20, 0x09, 0x6a, 0x02, 0x48, 0x60, 0x00, 0x22, 0x20, - 0xe0, 0x06, 0x16, 0x04, 0xe2, 0x20, 0xe0, 0x0a, 0xe2, 0x20, 0xe0, 0x18, 0x0a, 0x13, 0x18, 0x04, - 0x05, 0x41, 0x48, 0x03, 0x06, 0xfe, 0x10, 0x06, 0x02, 0x83, 0x00, 0x02, 0x16, 0x01, 0x09, 0x13, - 0xe8, 0x03, 0x06, 0xfe, 0x40, 0xc8, 0x40, 0xc1, 0x13, 0x05, 0x07, 0x88, 0x07, 0x36, 0x07, 0x89, - 0x40, 0x00, 0x2c, 0x48, 0x04, 0x5b, 0x04, 0xc9, 0xc1, 0x24, 0xeb, 0x24, 0xc1, 0x84, 0x71, 0x86, - 0x02, 0x26, 0xeb, 0xd6, 0x06, 0xc4, 0x71, 0x04, 0x02, 0x24, 0xeb, 0x4c, 0xd2, 0x14, 0x09, 0xc8, - 0xa2, 0x08, 0x03, 0xb0, 0xd8, 0x34, 0x06, 0x5f, 0x02, 0x47, 0x00, 0x0f, 0xa1, 0xc7, 0xc2, 0x28, - 0xeb, 0x12, 0x04, 0x58, 0xcd, 0x76, 0x06, 0x47, 0x16, 0xfd, 0x10, 0x32, 0xc2, 0x36, 0x10, 0x26, - 0x09, 0x17, 0xa1, 0x47, 0x10, 0x2d, 0x09, 0x17, 0x61, 0x47, 0x10, 0x2a, 0x43, 0xa0, 0xe0, 0x16, - 0x04, 0x5b, 0x43, 0xa0, 0xe0, 0x16, 0xc2, 0x49, 0x16, 0x03, 0xc2, 0x44, 0xc8, 0x06, 0x09, 0x22, - 0xc1, 0x27, 0xec, 0xe6, 0xc1, 0x84, 0x71, 0x86, 0x02, 0x26, 0xed, 0x1c, 0x06, 0xc4, 0x71, 0x04, - 0x02, 0x24, 0xed, 0x02, 0x10, 0xd3, 0xc1, 0x09, 0xc1, 0xa0, 0x09, 0x22, 0x04, 0xc9, 0x10, 0x10, - 0xc2, 0x36, 0xd5, 0x78, 0x41, 0x60, 0xe0, 0x22, 0x05, 0xc5, 0x10, 0x0a, 0xcd, 0x78, 0x06, 0x47, - 0x15, 0xfd, 0x10, 0x06, 0x23, 0xa0, 0xe0, 0x16, 0x16, 0xcd, 0xc2, 0x49, 0x16, 0xec, 0x10, 0xd6, - 0xe3, 0xa0, 0xe0, 0x16, 0x10, 0xbb, 0x02, 0x08, 0x80, 0x5a, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0x3e, - 0x92, 0xa0, 0xe0, 0x0c, 0x16, 0x15, 0x02, 0x44, 0x5e, 0x00, 0x16, 0x14, 0x48, 0x20, 0xe4, 0x6c, - 0x01, 0x80, 0x06, 0xa0, 0xe2, 0x9e, 0xc8, 0x20, 0x01, 0x9e, 0x01, 0x9e, 0x2e, 0xe0, 0x00, 0x01, - 0x43, 0xa0, 0xe0, 0x18, 0xd2, 0xa0, 0xe0, 0x26, 0x07, 0x83, 0x00, 0x10, 0x06, 0xa0, 0xe3, 0x56, - 0x04, 0x60, 0xdb, 0xc0, 0x07, 0x84, 0x00, 0x08, 0x04, 0x60, 0xdb, 0x88, 0x07, 0x85, 0x02, 0x03, - 0xc8, 0x05, 0x06, 0xce, 0x43, 0xa0, 0xe0, 0x12, 0x04, 0xe0, 0x06, 0xfa, 0x06, 0xa0, 0xe2, 0xd0, - 0x02, 0x08, 0x80, 0x48, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0x11, 0x27, 0xa0, 0xe0, 0x2c, 0x16, 0x04, - 0x02, 0x08, 0x80, 0x54, 0x06, 0xa0, 0xe0, 0x22, 0x07, 0x83, 0xa8, 0x00, 0x88, 0x20, 0x07, 0x08, - 0xe0, 0x20, 0x16, 0x02, 0x07, 0x83, 0xe8, 0x00, 0x06, 0xa0, 0xe3, 0x56, 0x02, 0x08, 0x00, 0x36, - 0x06, 0xa0, 0xe0, 0x22, 0xe8, 0x20, 0xe0, 0x0c, 0x01, 0x82, 0x23, 0xa0, 0xe0, 0x18, 0x13, 0x06, - 0xe3, 0xa0, 0xe0, 0x18, 0x2e, 0xe0, 0x00, 0x00, 0xc0, 0x41, 0x16, 0xfa, 0x06, 0xa0, 0xe1, 0x2e, - 0xc0, 0x82, 0x13, 0x02, 0x02, 0x4f, 0xff, 0x80, 0x04, 0xc4, 0xd1, 0x0f, 0x06, 0xc4, 0x04, 0x60, - 0xdb, 0x88, 0x06, 0xa0, 0xe5, 0x50, 0x02, 0x08, 0x80, 0x36, 0x07, 0xa0, 0x06, 0xd6, 0xe5, 0x3e, - 0x06, 0xa0, 0xe0, 0x22, 0x10, 0x10, 0x06, 0xa0, 0xe5, 0x50, 0xd1, 0x20, 0x06, 0xce, 0x13, 0xe6, - 0x78, 0x20, 0xe0, 0x12, 0x06, 0xce, 0x10, 0xe2, 0xc1, 0x20, 0x04, 0x16, 0x0a, 0x14, 0x06, 0xc4, - 0x91, 0x0a, 0x16, 0x01, 0x04, 0x5b, 0x04, 0x60, 0xdb, 0xc0, 0x04, 0xca, 0x04, 0xcd, 0x04, 0xce, - 0x04, 0xcf, 0x04, 0xe0, 0x06, 0xa8, 0x04, 0xe0, 0x06, 0xba, 0x07, 0x84, 0x01, 0xa0, 0x07, 0x85, - 0x00, 0x10, 0x04, 0xf4, 0x06, 0x45, 0x15, 0xfd, 0x07, 0x84, 0x06, 0xd8, 0x07, 0x85, 0x07, 0x34, - 0x61, 0x44, 0x04, 0xf4, 0x06, 0x45, 0x15, 0xfd, 0x07, 0x84, 0x00, 0xc8, 0xc8, 0x04, 0x07, 0x00, - 0x07, 0x84, 0x7f, 0xff, 0xc8, 0x04, 0x06, 0xf0, 0x07, 0x84, 0x00, 0x06, 0xc8, 0x04, 0x06, 0xee, - 0x03, 0xb0, 0xd8, 0x20, 0xe0, 0x10, 0x06, 0x65, 0x04, 0x60, 0xdb, 0xc0, 0xf8, 0x20, 0xed, 0x71, - 0x01, 0x82, 0xc8, 0x20, 0xe0, 0x10, 0x06, 0xc6, 0xc8, 0x20, 0xe0, 0x20, 0x06, 0xc8, 0x2e, 0xe0, - 0x00, 0x00, 0x06, 0xa0, 0xe1, 0x2e, 0xc8, 0x20, 0x09, 0x6c, 0x01, 0xa0, 0xc8, 0x20, 0x09, 0x6e, - 0x01, 0xa2, 0xc8, 0x20, 0x09, 0x70, 0x01, 0xa4, 0xc8, 0x20, 0x09, 0x6e, 0x01, 0xb0, 0xc8, 0x20, - 0x09, 0x70, 0x01, 0xb2, 0xc8, 0x20, 0x09, 0x70, 0x06, 0xcc, 0xf8, 0x20, 0xed, 0x70, 0x01, 0x80, - 0x06, 0xa0, 0xe1, 0x18, 0x48, 0x20, 0xe0, 0x04, 0x01, 0x80, 0x04, 0xe0, 0x01, 0x9e, 0x02, 0x08, - 0x80, 0x12, 0x06, 0xa0, 0xe0, 0x22, 0x07, 0x84, 0x00, 0x0a, 0x07, 0x85, 0x03, 0xf4, 0x88, 0x20, - 0x06, 0xc6, 0xe0, 0x20, 0x1b, 0x04, 0x07, 0x84, 0x00, 0x1c, 0x07, 0x85, 0x03, 0xf8, 0x06, 0xa0, - 0xe3, 0xce, 0x07, 0x85, 0xe6, 0x42, 0xc8, 0x05, 0x03, 0xf8, 0x23, 0xa0, 0xe0, 0x0c, 0x13, 0x23, - 0xe3, 0xa0, 0xe0, 0x0c, 0x2e, 0xa0, 0x03, 0xf4, 0x10, 0x1e, 0x03, 0xb0, 0x98, 0x20, 0xe0, 0x10, - 0x06, 0x65, 0x16, 0x19, 0x02, 0x44, 0x5e, 0x00, 0x16, 0x04, 0x06, 0x20, 0x06, 0xc6, 0x16, 0xd7, - 0x10, 0x08, 0x03, 0xb0, 0x98, 0x20, 0xe0, 0x10, 0x06, 0x65, 0x16, 0x0d, 0x06, 0x20, 0x06, 0xc8, - 0x16, 0xc4, 0x01, 0x0e, 0x00, 0x03, 0x13, 0x03, 0x07, 0x83, 0x82, 0x00, 0x10, 0x02, 0x07, 0x83, - 0x00, 0x01, 0x04, 0x60, 0xdb, 0xb8, 0x04, 0x60, 0xdb, 0x9e, 0x01, 0x0e, 0x00, 0x03, 0x13, 0x0a, - 0x02, 0x08, 0x80, 0x0c, 0x06, 0xa0, 0xe0, 0x22, 0xe3, 0xe0, 0xe0, 0x14, 0xc8, 0x20, 0xe4, 0x6e, - 0x01, 0x86, 0x10, 0x26, 0x48, 0x20, 0xe0, 0x0c, 0x01, 0x82, 0x2e, 0xe0, 0x00, 0x01, 0xc1, 0x60, - 0x09, 0x1e, 0x0a, 0x35, 0xe8, 0x05, 0x01, 0x82, 0xc1, 0x20, 0x09, 0x6a, 0x01, 0x04, 0x00, 0x06, - 0x13, 0x06, 0xd8, 0x20, 0xe1, 0xd0, 0x09, 0x2f, 0xd8, 0x20, 0xe1, 0xd0, 0x01, 0x83, 0x21, 0x20, - 0xe0, 0x22, 0x16, 0x03, 0xe8, 0x20, 0xe0, 0x22, 0x01, 0x80, 0x21, 0x20, 0xe0, 0x04, 0x16, 0x04, - 0xe3, 0xa0, 0xe0, 0x14, 0x04, 0x60, 0xdf, 0xb6, 0x02, 0x08, 0x80, 0x00, 0x06, 0xa0, 0xe0, 0x22, - 0xe8, 0x20, 0xe0, 0x08, 0x01, 0x82, 0x04, 0x60, 0xdb, 0x9e, 0xc8, 0x20, 0xe4, 0x6e, 0x01, 0x86, - 0x02, 0x08, 0x80, 0x00, 0x06, 0xa0, 0xe0, 0x22, 0xc2, 0x20, 0x09, 0x1e, 0xa2, 0x08, 0x05, 0x08, - 0xc8, 0x28, 0xe0, 0x22, 0x06, 0xca, 0xc8, 0x20, 0xe0, 0x20, 0x06, 0xc6, 0xc8, 0x20, 0xe0, 0x20, - 0x06, 0xc8, 0xe3, 0x60, 0xe0, 0x16, 0x04, 0x60, 0xdb, 0xc0, 0xc1, 0x44, 0x02, 0x44, 0x5e, 0x00, - 0x16, 0xf8, 0x25, 0x60, 0xe4, 0x68, 0x16, 0x0f, 0x06, 0x20, 0x06, 0xc6, 0x16, 0xf2, 0x06, 0x20, - 0x06, 0xca, 0x13, 0x03, 0x05, 0xa0, 0x06, 0xcc, 0x10, 0xe6, 0x03, 0xb0, 0xd8, 0x20, 0xe0, 0x0c, - 0x06, 0x65, 0x04, 0x60, 0xdb, 0xc0, 0x06, 0x20, 0x06, 0xc8, 0x16, 0xe3, 0x88, 0x20, 0x09, 0x70, - 0x06, 0xcc, 0x16, 0x03, 0x07, 0x83, 0x00, 0x08, 0x10, 0x02, 0x07, 0x83, 0x00, 0x0c, 0x04, 0x60, - 0xdb, 0xb8, 0x04, 0x60, 0xdb, 0xc0, 0x23, 0xa0, 0xe0, 0x08, 0x13, 0x03, 0x23, 0x60, 0xe0, 0x12, - 0x16, 0x06, 0x03, 0xb0, 0xd8, 0x20, 0xe3, 0xa9, 0x06, 0x65, 0x04, 0x60, 0xdb, 0xc0, 0x02, 0x08, - 0x80, 0x00, 0x06, 0xa0, 0xe0, 0x22, 0x04, 0x60, 0xdb, 0x9e, 0x02, 0x08, 0x80, 0x00, 0x06, 0xa0, - 0xe0, 0x22, 0xc8, 0x20, 0xe0, 0x1e, 0x06, 0xc6, 0xc8, 0x20, 0xe0, 0x1e, 0x06, 0xc8, 0xe3, 0x60, - 0xe0, 0x10, 0x04, 0x60, 0xdb, 0xc0, 0x23, 0xe0, 0xe0, 0x14, 0x13, 0x19, 0xc1, 0x44, 0x02, 0x44, - 0x1e, 0x00, 0x16, 0xf5, 0x25, 0x60, 0xe4, 0x68, 0x16, 0x06, 0x06, 0x20, 0x06, 0xc8, 0x16, 0xef, - 0x04, 0xc2, 0x04, 0x60, 0xec, 0x20, 0x02, 0x08, 0x80, 0x1e, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0x07, - 0x06, 0x20, 0x06, 0xc6, 0x16, 0xe4, 0x07, 0x83, 0x00, 0x09, 0x06, 0xa0, 0xdb, 0xb8, 0x04, 0x60, - 0xdb, 0x9e, 0x04, 0xce, 0x04, 0xe0, 0x09, 0x2a, 0xd3, 0xe0, 0xe3, 0xaa, 0xc2, 0x8f, 0xc8, 0x20, - 0xe4, 0x70, 0x01, 0x86, 0x48, 0x20, 0xe0, 0x08, 0x01, 0x82, 0x07, 0x86, 0x00, 0x05, 0x07, 0x84, - 0x06, 0x72, 0xc1, 0x54, 0x13, 0x01, 0x2c, 0xd4, 0x02, 0x24, 0x00, 0x0a, 0x06, 0x06, 0x16, 0xf9, - 0x02, 0x08, 0x80, 0x2a, 0x06, 0xa0, 0xe0, 0x22, 0x2c, 0x20, 0xe0, 0x1a, 0x04, 0x60, 0xda, 0x6a, - 0x06, 0xa0, 0xe2, 0x72, 0x04, 0xcd, 0x23, 0xa0, 0xe0, 0x1c, 0x13, 0x0d, 0x01, 0x0e, 0x00, 0x03, - 0x13, 0x0a, 0xe3, 0xa0, 0xe0, 0x1c, 0x03, 0xb0, 0xd8, 0x20, 0xe0, 0x10, 0x06, 0x65, 0xd2, 0xa0, - 0xe0, 0x26, 0x04, 0xcf, 0x10, 0x08, 0x2d, 0x20, 0x00, 0x01, 0xc0, 0xe0, 0x09, 0x2a, 0x06, 0xa0, - 0xe3, 0x56, 0xd2, 0xa0, 0xe3, 0xab, 0x04, 0x60, 0xdb, 0xc0, 0x06, 0xa0, 0xe0, 0xe4, 0xc2, 0x08, - 0x13, 0x19, 0x07, 0x83, 0x80, 0x80, 0x23, 0xe0, 0xe0, 0x14, 0x13, 0x02, 0x07, 0x83, 0x00, 0x0a, - 0x04, 0x60, 0xdb, 0xb4, 0xc1, 0x20, 0x06, 0x06, 0x13, 0x0d, 0x06, 0xa0, 0xe0, 0xe4, 0xc2, 0x08, - 0x13, 0x09, 0x07, 0x83, 0x00, 0x0b, 0x23, 0xe0, 0xe0, 0x14, 0x16, 0x02, 0x07, 0x83, 0x80, 0x01, - 0x04, 0x60, 0xdb, 0xb4, 0x07, 0x83, 0x80, 0x0a, 0x04, 0x60, 0xdb, 0xa2, 0x93, 0xe0, 0xe0, 0x0e, - 0x13, 0x5e, 0x93, 0xe0, 0xe0, 0x10, 0x13, 0x17, 0x23, 0xe0, 0xe0, 0x14, 0x13, 0x04, 0x07, 0x83, - 0x00, 0x07, 0x04, 0x60, 0xdb, 0xb4, 0x07, 0x83, 0xa0, 0x00, 0x06, 0xa0, 0xe3, 0x56, 0x07, 0x83, - 0x48, 0x00, 0x06, 0xa0, 0xe3, 0x56, 0xd2, 0xa0, 0xe0, 0x10, 0xc8, 0x20, 0xe0, 0x1c, 0x06, 0xca, - 0xc8, 0x20, 0xe0, 0x20, 0x06, 0xcc, 0x06, 0xa0, 0xe2, 0x72, 0x02, 0x08, 0x80, 0x4e, 0x06, 0xa0, - 0xe0, 0x22, 0x23, 0xa0, 0xe0, 0x1c, 0x13, 0x20, 0x88, 0x20, 0x09, 0x6c, 0x07, 0x0e, 0x16, 0x1c, - 0x88, 0x20, 0x09, 0x6e, 0x07, 0x10, 0x16, 0x18, 0x88, 0x20, 0x09, 0x70, 0x07, 0x12, 0x16, 0x14, - 0x88, 0x20, 0x07, 0x0a, 0xe0, 0x22, 0x13, 0x10, 0x06, 0x20, 0x06, 0xca, 0x16, 0x38, 0xe3, 0xa0, - 0xe0, 0x20, 0x10, 0x06, 0x23, 0xe0, 0xe0, 0x14, 0x16, 0xca, 0xe3, 0xa0, 0xe0, 0x22, 0x04, 0xc2, - 0xd2, 0xa0, 0xe3, 0xaa, 0x04, 0x60, 0xdb, 0xa8, 0xc8, 0x20, 0xe0, 0x1c, 0x06, 0xca, 0x88, 0xa0, - 0x06, 0xdc, 0x00, 0x0e, 0x16, 0x10, 0x88, 0xa0, 0x06, 0xde, 0x00, 0x10, 0x16, 0x0c, 0x88, 0xa0, - 0x06, 0xe0, 0x00, 0x12, 0x16, 0x08, 0x06, 0x20, 0x06, 0xcc, 0x16, 0x19, 0xe8, 0x20, 0xe0, 0x0e, - 0x01, 0x82, 0xe3, 0xa0, 0xe0, 0x1e, 0xc8, 0x20, 0xe0, 0x20, 0x06, 0xcc, 0x10, 0x10, 0x23, 0xa0, - 0xe0, 0x10, 0x16, 0x08, 0xc1, 0x64, 0x00, 0x06, 0x21, 0x60, 0xe0, 0x0c, 0x13, 0x08, 0xd2, 0xa0, - 0xe3, 0xa8, 0x10, 0x05, 0x88, 0x20, 0x07, 0x0a, 0x07, 0x08, 0x12, 0x96, 0x10, 0x00, 0x04, 0x60, - 0xdb, 0xa8, 0x93, 0xe0, 0xe0, 0x0e, 0x13, 0x50, 0x93, 0xe0, 0xe3, 0xa9, 0x13, 0x4d, 0x93, 0xe0, - 0xe3, 0xa8, 0x13, 0x1c, 0x06, 0xa0, 0xe2, 0xd0, 0x23, 0xa0, 0xe0, 0x10, 0x13, 0x45, 0x23, 0xa0, - 0xe0, 0x08, 0x16, 0x06, 0xe3, 0x60, 0xe0, 0x1e, 0xc8, 0x20, 0xe0, 0x22, 0x07, 0x06, 0x10, 0x34, - 0x23, 0xe0, 0xe0, 0x14, 0x16, 0x31, 0xc1, 0x60, 0x09, 0x6a, 0x21, 0x60, 0xe0, 0x12, 0x16, 0x2c, - 0x06, 0xa0, 0xea, 0x34, 0x10, 0x31, 0xd2, 0xa0, 0xe3, 0xa8, 0x10, 0x2e, 0xe3, 0xa0, 0xe0, 0x12, - 0x06, 0xa0, 0xea, 0x34, 0xc1, 0x64, 0x00, 0x06, 0x21, 0x60, 0xe0, 0x0c, 0x13, 0x25, 0x88, 0x20, - 0x07, 0x0e, 0x06, 0xdc, 0x16, 0x14, 0x88, 0x20, 0x07, 0x10, 0x06, 0xde, 0x16, 0x10, 0x88, 0x20, - 0x07, 0x12, 0x06, 0xe0, 0x16, 0x0c, 0x98, 0x20, 0x06, 0xce, 0x06, 0xcf, 0x13, 0x15, 0x06, 0x20, - 0x06, 0xce, 0x16, 0x12, 0xe3, 0x60, 0xe0, 0x1a, 0xd2, 0xa0, 0xe0, 0x0c, 0x10, 0x0d, 0xe3, 0x60, - 0xe0, 0x1e, 0xc8, 0x20, 0xe0, 0x32, 0x07, 0x06, 0x06, 0xa0, 0xe2, 0x72, 0x02, 0x08, 0x80, 0x48, - 0x06, 0xa0, 0xe0, 0x22, 0xd2, 0xa0, 0xe3, 0xa9, 0x04, 0x60, 0xdb, 0xa8, 0x88, 0x22, 0x00, 0x0e, - 0x09, 0x6c, 0x1a, 0xc9, 0x1b, 0x0b, 0x88, 0x22, 0x00, 0x10, 0x09, 0x6e, 0x1a, 0xc4, 0x1b, 0x06, - 0x88, 0x22, 0x00, 0x12, 0x09, 0x70, 0x1a, 0xbf, 0x1b, 0x01, 0x04, 0x5b, 0xc1, 0x60, 0x01, 0x6c, - 0x02, 0x85, 0x00, 0x43, 0x13, 0xe1, 0x93, 0xe0, 0xe3, 0xa8, 0x16, 0xde, 0xc8, 0xa0, 0xed, 0x58, - 0x00, 0x02, 0x07, 0x84, 0x00, 0x0e, 0xc1, 0x42, 0xc0, 0xa0, 0x01, 0x6c, 0xc0, 0x02, 0x02, 0x25, - 0x00, 0x48, 0x07, 0x81, 0xea, 0x86, 0x07, 0x83, 0xae, 0x14, 0x04, 0x60, 0xed, 0x92, 0x02, 0x02, - 0xfc, 0x00, 0x10, 0xca, 0x98, 0x20, 0xe0, 0x0e, 0x06, 0x65, 0x16, 0x03, 0xd8, 0x20, 0xe3, 0xa8, - 0x06, 0x65, 0x93, 0xe0, 0xe3, 0xa9, 0x13, 0x0d, 0x23, 0xa0, 0xe0, 0x08, 0x16, 0x19, 0x23, 0xa0, - 0xe0, 0x10, 0x13, 0x16, 0xe3, 0x60, 0xe0, 0x1e, 0xc8, 0x20, 0xe0, 0x20, 0x07, 0x06, 0x06, 0xa0, - 0xe2, 0x72, 0x43, 0xa0, 0xe0, 0x18, 0x2e, 0xe0, 0x00, 0x01, 0xd2, 0xa0, 0xe0, 0x26, 0x07, 0x83, - 0x00, 0x10, 0x06, 0xa0, 0xe3, 0x56, 0x23, 0xe0, 0xe0, 0x14, 0x16, 0x02, 0x06, 0xa0, 0xe2, 0x54, - 0x43, 0xa0, 0xe0, 0x2c, 0xc8, 0x20, 0xe0, 0x20, 0x09, 0x24, 0x04, 0x60, 0xdb, 0xa8, 0x43, 0xa0, - 0xe0, 0x0e, 0xc1, 0xa0, 0x09, 0x24, 0x13, 0x02, 0x06, 0x20, 0x09, 0x24, 0x23, 0xe0, 0xe0, 0x14, - 0x13, 0x03, 0x23, 0xa0, 0xe0, 0x08, 0x16, 0x26, 0x02, 0x08, 0x80, 0x42, 0x06, 0xa0, 0xe0, 0x22, - 0x23, 0xa0, 0xe0, 0x08, 0x16, 0x1f, 0x23, 0xa0, 0xe0, 0x10, 0x16, 0x0a, 0xc1, 0x22, 0x00, 0x02, - 0x25, 0x20, 0xe4, 0x68, 0x16, 0x23, 0x07, 0x83, 0x80, 0x20, 0x06, 0xa0, 0xe3, 0x56, 0x10, 0x12, - 0x06, 0xa0, 0xe2, 0x72, 0x23, 0xe0, 0xe0, 0x14, 0x16, 0x02, 0x06, 0xa0, 0xe2, 0x54, 0xe3, 0x60, - 0xe0, 0x1e, 0xc8, 0x20, 0xe0, 0x20, 0x07, 0x06, 0x23, 0xa0, 0xe0, 0x08, 0x16, 0x03, 0x23, 0xa0, - 0xe0, 0x06, 0x13, 0x51, 0x98, 0x20, 0xe0, 0x0e, 0x06, 0x65, 0x16, 0x03, 0xd8, 0x20, 0xe3, 0xa8, - 0x06, 0x65, 0xc1, 0x22, 0x00, 0x02, 0x25, 0x20, 0xe4, 0x68, 0x13, 0x0e, 0x07, 0x83, 0x00, 0x20, - 0x06, 0xa0, 0xe3, 0x56, 0xc8, 0x22, 0x00, 0x0e, 0x06, 0xe6, 0xc8, 0x22, 0x00, 0x10, 0x06, 0xe8, - 0xc8, 0x22, 0x00, 0x12, 0x06, 0xea, 0x10, 0x37, 0x88, 0x22, 0x00, 0x0e, 0x06, 0xdc, 0x16, 0x08, - 0x88, 0x22, 0x00, 0x10, 0x06, 0xde, 0x16, 0x04, 0x88, 0x22, 0x00, 0x12, 0x06, 0xe0, 0x13, 0x0b, - 0xc8, 0x22, 0x00, 0x0e, 0x06, 0xdc, 0xc8, 0x22, 0x00, 0x10, 0x06, 0xde, 0xc8, 0x22, 0x00, 0x12, - 0x06, 0xe0, 0xe3, 0x60, 0xe0, 0x14, 0x23, 0xa0, 0xe0, 0x0e, 0x16, 0x08, 0xc1, 0xa0, 0x09, 0x24, - 0x16, 0x1a, 0x07, 0x86, 0x10, 0x00, 0xe8, 0x06, 0x06, 0xd2, 0x10, 0x15, 0xe3, 0xa0, 0xe0, 0x0e, - 0x23, 0xa0, 0xe0, 0x08, 0x16, 0x09, 0xe3, 0xa0, 0xe0, 0x06, 0x04, 0xe0, 0x06, 0xe6, 0x04, 0xe0, - 0x06, 0xe8, 0x04, 0xe0, 0x06, 0xea, 0x10, 0x07, 0x02, 0x08, 0x80, 0x36, 0x07, 0xa0, 0x06, 0xd6, - 0xdf, 0xe2, 0x06, 0xa0, 0xe0, 0x22, 0x04, 0x60, 0xdb, 0xa8, 0x98, 0x20, 0x06, 0x65, 0xe0, 0x10, - 0x16, 0x03, 0xd8, 0x20, 0xe0, 0x0e, 0x06, 0x65, 0x04, 0x60, 0xdb, 0xa8, 0x23, 0xe0, 0xe0, 0x14, - 0x13, 0x02, 0x04, 0x60, 0xdb, 0xa8, 0x10, 0x2e, 0x03, 0xb0, 0x98, 0x20, 0xe3, 0xa9, 0x06, 0x6f, - 0x16, 0x19, 0xc2, 0x24, 0x00, 0x08, 0x11, 0x16, 0xe3, 0xe0, 0xe0, 0x14, 0x07, 0x83, 0x00, 0x00, - 0x06, 0xa0, 0xe3, 0x56, 0x23, 0xa0, 0xe0, 0x14, 0x13, 0x04, 0x02, 0x08, 0x80, 0x06, 0x06, 0xa0, - 0xe0, 0x22, 0x02, 0x08, 0x00, 0x1e, 0x06, 0xa0, 0xe0, 0x22, 0x23, 0xa0, 0xe0, 0x08, 0x13, 0x02, - 0x06, 0xa0, 0xe2, 0x54, 0xc0, 0x82, 0x16, 0x02, 0x04, 0x60, 0xdb, 0xc0, 0xe8, 0x20, 0xed, 0x74, - 0x06, 0xf0, 0x99, 0x20, 0xe0, 0x0e, 0x00, 0x16, 0x16, 0x05, 0x04, 0xe0, 0x06, 0xec, 0x48, 0x20, - 0xe0, 0x14, 0x06, 0xf0, 0x07, 0x83, 0x00, 0x01, 0x04, 0x60, 0xdb, 0xa2, 0xc2, 0x64, 0x00, 0x14, - 0x02, 0x24, 0x00, 0x18, 0xc1, 0xc4, 0x61, 0xc2, 0x02, 0x27, 0xff, 0xfc, 0xc1, 0x74, 0xc1, 0x85, - 0x71, 0x45, 0x02, 0x85, 0x00, 0x27, 0x16, 0x46, 0xc1, 0x54, 0x02, 0x45, 0xff, 0xcf, 0x16, 0x42, - 0x04, 0xc8, 0xc1, 0x64, 0x00, 0x08, 0x15, 0x06, 0x13, 0x05, 0xc2, 0x24, 0x00, 0x0e, 0x02, 0x48, - 0x1f, 0x00, 0x06, 0xc8, 0x02, 0x28, 0x00, 0x11, 0xa2, 0x04, 0x98, 0x18, 0xed, 0x79, 0x16, 0x32, - 0xc1, 0x42, 0x02, 0x25, 0x00, 0x04, 0x65, 0x47, 0xc2, 0x35, 0xcd, 0x74, 0x06, 0x48, 0x15, 0xfd, - 0xc0, 0xa0, 0x01, 0x6c, 0xc1, 0x02, 0xc8, 0x04, 0x01, 0x6c, 0xc1, 0xa0, 0xfc, 0x00, 0x13, 0x05, - 0xc8, 0x20, 0xeb, 0x10, 0xfc, 0x02, 0xc1, 0x06, 0x10, 0xf6, 0xc8, 0x02, 0x01, 0x6c, 0xc8, 0x20, - 0xed, 0x58, 0xfc, 0x02, 0x07, 0x81, 0xec, 0xfc, 0xc0, 0x04, 0x07, 0x83, 0x02, 0x10, 0x07, 0x84, - 0x00, 0x0e, 0x10, 0x3b, 0x07, 0x84, 0x00, 0x0c, 0xc0, 0xe2, 0x00, 0x08, 0x02, 0x05, 0xfc, 0x00, - 0xc0, 0xa0, 0x01, 0x6c, 0xc0, 0x02, 0xc1, 0xa0, 0xfc, 0x00, 0x13, 0x2f, 0x04, 0xe0, 0xfc, 0x00, - 0x2e, 0x16, 0x10, 0x2b, 0xc8, 0xa0, 0xed, 0x7a, 0x00, 0x0e, 0xc8, 0xa0, 0xed, 0x7c, 0x00, 0x10, - 0xc8, 0xa0, 0xed, 0x7e, 0x00, 0x12, 0x07, 0x83, 0x80, 0x06, 0x04, 0x60, 0xdb, 0xa2, 0x04, 0x60, - 0xdb, 0xc0, 0x07, 0x84, 0x00, 0x10, 0x07, 0x85, 0x00, 0x34, 0x10, 0x09, 0x07, 0x84, 0x00, 0x12, - 0x07, 0x85, 0x00, 0x32, 0x10, 0x04, 0x07, 0x84, 0x00, 0x14, 0x07, 0x85, 0x00, 0x38, 0x06, 0xa0, - 0xe1, 0x0a, 0xc8, 0x85, 0x00, 0x04, 0x06, 0xa0, 0xe1, 0x4c, 0xc8, 0xa0, 0xed, 0x58, 0x00, 0x02, - 0xc0, 0xa0, 0x01, 0x6c, 0xc0, 0x02, 0x06, 0x48, 0xc1, 0x48, 0x06, 0xa0, 0xe3, 0xce, 0x02, 0x07, - 0x06, 0xa2, 0xc5, 0x60, 0xfc, 0x02, 0x02, 0x25, 0xff, 0xf4, 0xc8, 0x05, 0xfc, 0x02, 0xc2, 0x20, - 0x01, 0x6c, 0x06, 0xa0, 0xc2, 0x5a, 0x04, 0x60, 0xdb, 0x9e, 0x06, 0xa0, 0xe3, 0xce, 0x02, 0x07, - 0x06, 0xb4, 0x10, 0xef, 0xc3, 0x0b, 0x03, 0x00, 0x00, 0x02, 0x07, 0x82, 0x00, 0xc0, 0xc8, 0x20, - 0x00, 0x0c, 0x00, 0xc0, 0xc8, 0x20, 0x00, 0x0e, 0x00, 0xc2, 0xc8, 0x20, 0x00, 0x10, 0x00, 0xc4, - 0xc8, 0x20, 0x00, 0x12, 0x00, 0xc6, 0xc8, 0x20, 0x00, 0x14, 0x00, 0xc8, 0xc8, 0x20, 0x00, 0x16, - 0x00, 0xca, 0xc8, 0x20, 0x00, 0x04, 0x00, 0xcc, 0xc8, 0x20, 0x00, 0x06, 0x00, 0xce, 0xc8, 0x02, - 0x00, 0x0c, 0x07, 0xa0, 0x00, 0x0e, 0xee, 0x3c, 0xc8, 0x02, 0x00, 0x10, 0x07, 0xa0, 0x00, 0x12, - 0xee, 0x46, 0xc8, 0x02, 0x00, 0x14, 0x07, 0xa0, 0x00, 0x16, 0xee, 0x76, 0xc8, 0x02, 0x00, 0x04, - 0x07, 0xa0, 0x00, 0x06, 0xee, 0x8c, 0x01, 0x60, 0x01, 0x1c, 0x00, 0x04, 0x16, 0x09, 0x01, 0xe0, - 0x01, 0x40, 0x08, 0x00, 0x01, 0xa0, 0x01, 0x40, 0x40, 0x00, 0x01, 0xe0, 0x01, 0x40, 0x04, 0x00, - 0x06, 0xa0, 0xf1, 0x4c, 0x02, 0x05, 0x80, 0x00, 0xd8, 0x05, 0x04, 0x80, 0x04, 0xc7, 0x03, 0x00, - 0x00, 0x0f, 0x07, 0x88, 0x10, 0x00, 0x02, 0x09, 0x20, 0x00, 0x07, 0x8a, 0xee, 0xa4, 0x02, 0x03, - 0xe5, 0xfe, 0x04, 0x5a, 0x03, 0x00, 0x00, 0x00, 0xd2, 0x20, 0x01, 0x87, 0x10, 0x06, 0x03, 0x00, - 0x00, 0x00, 0xc2, 0x20, 0x01, 0x8a, 0x02, 0x08, 0x1a, 0x00, 0xc2, 0x60, 0x00, 0xae, 0xda, 0x48, - 0x04, 0x80, 0x05, 0x89, 0x02, 0x89, 0x00, 0x06, 0x15, 0x07, 0x07, 0x88, 0x80, 0x00, 0xda, 0x48, - 0x04, 0x80, 0xc8, 0x09, 0x00, 0xae, 0x03, 0x80, 0x02, 0xe0, 0x00, 0xa0, 0x04, 0x5c, 0x03, 0x00, - 0x00, 0x00, 0x01, 0x60, 0x01, 0x9c, 0x00, 0x20, 0x13, 0xe2, 0xc2, 0x20, 0x01, 0x8c, 0x02, 0x08, - 0x1c, 0x00, 0x10, 0xe3, 0x03, 0x00, 0x00, 0x00, 0x01, 0x60, 0x01, 0x40, 0x40, 0x00, 0x16, 0xec, - 0x01, 0xa0, 0x01, 0x40, 0x40, 0x00, 0x02, 0x08, 0x02, 0x00, 0x10, 0xd7, 0xc0, 0xb3, 0x06, 0x92, - 0x10, 0xfd, 0xc0, 0xb3, 0xc0, 0x48, 0xcc, 0x72, 0xcc, 0x72, 0xc1, 0x32, 0xcc, 0x44, 0xdc, 0x72, - 0x06, 0x04, 0x16, 0xfd, 0x04, 0x5b, 0xc0, 0x48, 0x02, 0x02, 0xe9, 0x90, 0x07, 0x84, 0x00, 0x06, - 0x10, 0xf6, 0x02, 0x02, 0xe5, 0xde, 0xc0, 0x49, 0x07, 0x84, 0x00, 0x06, 0x10, 0xf0, 0xc0, 0xb3, - 0xc1, 0x32, 0x02, 0x01, 0x00, 0x01, 0xd0, 0x44, 0x06, 0xc1, 0x02, 0x44, 0x00, 0xff, 0x10, 0xe7, - 0xc1, 0x33, 0xc0, 0x73, 0xd1, 0x44, 0x02, 0x44, 0x00, 0xff, 0xdc, 0x45, 0x06, 0x04, 0x16, 0xfd, - 0x04, 0x5a, 0x06, 0xa0, 0xf0, 0xcc, 0xc8, 0x33, 0x01, 0x9e, 0x04, 0x5a, 0x06, 0xa0, 0xee, 0xca, - 0xc1, 0x89, 0x09, 0xa6, 0x02, 0x66, 0x00, 0x40, 0xc8, 0x06, 0x01, 0x8a, 0xc1, 0x88, 0x09, 0xa6, - 0x02, 0x66, 0x00, 0x40, 0xc8, 0x06, 0x01, 0x8c, 0x04, 0xc2, 0xc1, 0xc7, 0x16, 0x03, 0x06, 0x02, - 0x16, 0xfc, 0x10, 0x4d, 0x04, 0x5a, 0x06, 0xa0, 0xf0, 0x16, 0xc1, 0x89, 0x09, 0xa6, 0x02, 0x66, - 0x00, 0x40, 0xc8, 0x06, 0x01, 0x8a, 0xc1, 0x88, 0x09, 0xa6, 0x02, 0x66, 0x00, 0x40, 0xc8, 0x06, - 0x01, 0x8c, 0xc8, 0x33, 0x01, 0x9e, 0x10, 0xe8, 0x8a, 0x33, 0x00, 0x02, 0x16, 0x38, 0x8a, 0x73, - 0x00, 0x02, 0x16, 0x35, 0x04, 0x5a, 0x8a, 0x20, 0xe9, 0x8a, 0x00, 0x02, 0x16, 0x30, 0x8a, 0x60, - 0xe9, 0x8e, 0x00, 0x02, 0x16, 0x2c, 0x07, 0x82, 0xea, 0x34, 0x10, 0x01, 0xc0, 0xb3, 0x02, 0x04, - 0x04, 0x80, 0xd1, 0x52, 0x13, 0x03, 0x9d, 0x32, 0x16, 0x22, 0x10, 0xfb, 0x07, 0x85, 0x80, 0x00, - 0xd8, 0x05, 0x04, 0x80, 0x04, 0xc7, 0x04, 0x5a, 0xc8, 0x20, 0x00, 0xc0, 0x00, 0x0c, 0xc8, 0x20, - 0x00, 0xc2, 0x00, 0x0e, 0xc8, 0x20, 0x00, 0xc4, 0x00, 0x10, 0xc8, 0x20, 0x00, 0xc6, 0x00, 0x12, - 0xc8, 0x20, 0x00, 0xc8, 0x00, 0x14, 0xc8, 0x20, 0x00, 0xca, 0x00, 0x16, 0xc8, 0x20, 0x00, 0xcc, - 0x00, 0x04, 0xc8, 0x20, 0x00, 0xce, 0x00, 0x06, 0x03, 0x00, 0x00, 0x0f, 0x05, 0xcc, 0x04, 0x5c, - 0x04, 0xe0, 0x01, 0x82, 0x02, 0x02, 0xe5, 0xd8, 0xc8, 0x32, 0x01, 0x82, 0xc8, 0x32, 0x01, 0x80, - 0x06, 0xa0, 0xef, 0xe2, 0xc8, 0x12, 0x01, 0x82, 0xc2, 0xca, 0x07, 0x84, 0x07, 0xd0, 0x04, 0xe0, - 0x01, 0x84, 0x06, 0x04, 0x16, 0xfc, 0xc1, 0x20, 0x01, 0x84, 0x16, 0xe9, 0x02, 0x04, 0x00, 0x32, - 0x07, 0x85, 0x80, 0x00, 0xd8, 0x05, 0x04, 0x80, 0x04, 0xc7, 0xc1, 0x60, 0x01, 0x86, 0x06, 0x04, - 0x16, 0xfc, 0xc1, 0x20, 0x01, 0x84, 0x04, 0x5b, 0xc0, 0xb3, 0xc4, 0xb3, 0x04, 0x5b, 0xc0, 0x48, - 0xc0, 0xb3, 0xa0, 0x73, 0xc4, 0x42, 0x04, 0x5b, 0x88, 0x33, 0x01, 0x84, 0x16, 0xe6, 0x04, 0x5a, - 0xc1, 0x89, 0x09, 0xa6, 0x02, 0x66, 0x00, 0x40, 0xc8, 0x06, 0x01, 0x8a, 0x04, 0x5b, 0x04, 0xc5, - 0x07, 0xa0, 0x01, 0x9c, 0x00, 0x40, 0x01, 0x60, 0x01, 0x9c, 0x00, 0x40, 0x13, 0x03, 0x06, 0x05, - 0x16, 0xf7, 0x04, 0x5c, 0x04, 0x5b, 0x06, 0xa0, 0xf0, 0x6a, 0xc0, 0x60, 0x01, 0x40, 0xc8, 0x05, - 0x01, 0x40, 0xc5, 0x02, 0xc8, 0x01, 0x01, 0x40, 0x04, 0x5a, 0x06, 0xa0, 0xf0, 0x6a, 0xa1, 0x08, - 0x10, 0xf4, 0xc0, 0xb3, 0xc1, 0x33, 0xc1, 0x60, 0x01, 0x40, 0x01, 0x85, 0x04, 0x00, 0x01, 0xc5, - 0x10, 0x00, 0x04, 0x5b, 0xc1, 0x08, 0xc2, 0x09, 0xc2, 0x44, 0x04, 0x5b, 0x02, 0x05, 0x00, 0xc8, - 0x06, 0x05, 0x16, 0xfe, 0x04, 0x5b, 0xc1, 0x33, 0xc0, 0x03, 0xc0, 0xc4, 0x04, 0x5b, 0xc0, 0xc0, - 0x04, 0x5b, 0x94, 0xe0, 0x01, 0x9e, 0x16, 0xc2, 0x05, 0xc3, 0x04, 0x5b, 0xc0, 0x73, 0x06, 0xa0, - 0xf0, 0xe4, 0x02, 0x2d, 0x00, 0x08, 0x07, 0x85, 0x00, 0x08, 0x9f, 0x71, 0x16, 0xb7, 0x06, 0x05, - 0x16, 0xfc, 0x04, 0x5a, 0x02, 0x02, 0xe5, 0xe4, 0x04, 0x60, 0xee, 0xce, 0x8c, 0xe9, 0x00, 0x04, - 0x16, 0xad, 0x04, 0x5b, 0xc1, 0x20, 0x01, 0x80, 0x07, 0x85, 0x07, 0xd0, 0x01, 0xe0, 0x01, 0x80, - 0x04, 0x00, 0x06, 0x45, 0x16, 0xfe, 0xc8, 0x04, 0x01, 0x80, 0x04, 0x5b, 0xc1, 0x33, 0xc3, 0x48, - 0xc1, 0x04, 0x13, 0x04, 0x02, 0x2d, 0x04, 0x00, 0x06, 0x04, 0x16, 0xfc, 0x04, 0x5b, 0xc3, 0x8d, - 0x06, 0xa0, 0xf0, 0xe4, 0xc1, 0x8d, 0x09, 0xa6, 0x02, 0x66, 0x00, 0x40, 0xc7, 0x86, 0x04, 0x5a, - 0xc1, 0x8d, 0x09, 0xa6, 0x02, 0x66, 0x00, 0x40, 0xc8, 0x06, 0x01, 0x8a, 0x04, 0x5b, 0xc1, 0x8d, - 0x09, 0xa6, 0x02, 0x66, 0x00, 0x40, 0xc8, 0x06, 0x01, 0x8c, 0x04, 0x5b, 0xc0, 0x4d, 0x02, 0x04, - 0x00, 0x28, 0x07, 0x85, 0x55, 0x00, 0x04, 0x60, 0xee, 0xf2, 0xc0, 0x4d, 0xc0, 0xb3, 0xc1, 0x32, - 0x04, 0x60, 0xee, 0xb6, 0xc1, 0x33, 0x01, 0x60, 0x01, 0x1c, 0x00, 0x04, 0x16, 0x01, 0x04, 0x5b, - 0xc0, 0xc4, 0x04, 0x5b, 0x07, 0x89, 0xe5, 0x26, 0xc2, 0x39, 0x13, 0x07, 0xc6, 0x39, 0x86, 0x39, - 0x16, 0x25, 0xc6, 0x39, 0x86, 0x39, 0x16, 0x22, 0x10, 0xf7, 0x02, 0x02, 0xf1, 0x6a, 0x04, 0xc4, - 0x04, 0xc5, 0xc2, 0x39, 0x13, 0x02, 0x04, 0x60, 0xf1, 0xa6, 0x02, 0x02, 0xf1, 0x78, 0x04, 0xc4, - 0xc2, 0x39, 0x13, 0x03, 0xc1, 0x79, 0x04, 0x60, 0xf1, 0xa6, 0x02, 0x02, 0xf1, 0x88, 0x04, 0xc5, - 0xc2, 0x39, 0x13, 0x03, 0xc1, 0x39, 0x04, 0x60, 0xf1, 0xa6, 0xc0, 0x79, 0xc0, 0xb9, 0x60, 0x81, - 0x05, 0xc2, 0x09, 0x12, 0x04, 0xf1, 0x06, 0x02, 0x16, 0xfd, 0x04, 0x5b, 0x04, 0x5c, 0x02, 0x01, - 0xaa, 0xaa, 0xc6, 0x01, 0xe0, 0x44, 0x40, 0x45, 0x80, 0x58, 0x16, 0xf8, 0x02, 0x01, 0x00, 0x14, - 0x06, 0x01, 0x16, 0xfe, 0x02, 0x01, 0x55, 0x55, 0xc6, 0x01, 0xe0, 0x44, 0x40, 0x45, 0x80, 0x58, - 0x16, 0xed, 0x04, 0x52, 0x02, 0xe0, 0x00, 0xa0, 0x07, 0x88, 0x00, 0xc0, 0x02, 0x09, 0xf2, 0x20, - 0x07, 0x84, 0xe5, 0xea, 0x02, 0x05, 0x00, 0x01, 0xc2, 0x8b, 0x04, 0xcc, 0x06, 0xa0, 0xf2, 0x2a, - 0x2c, 0x60, 0x00, 0x01, 0x06, 0x99, 0x2c, 0xa0, 0x00, 0x02, 0x06, 0x99, 0x2d, 0x20, 0x00, 0x04, - 0x06, 0x99, 0x2e, 0x20, 0x00, 0x08, 0x06, 0x99, 0x2f, 0xa0, 0x00, 0x10, 0x05, 0x8c, 0x16, 0x09, - 0xcc, 0x80, 0xc4, 0x81, 0x07, 0x83, 0xf2, 0x6e, 0xc0, 0x88, 0x04, 0x02, 0x05, 0x8c, 0x16, 0x01, - 0x10, 0x33, 0x02, 0xe0, 0x00, 0xa0, 0x04, 0x5a, 0x05, 0x8c, 0x16, 0xfb, 0xcc, 0x80, 0xc4, 0x81, - 0x0a, 0x15, 0xc0, 0xb4, 0xc0, 0x12, 0xcc, 0x88, 0xc0, 0x52, 0xc4, 0xb4, 0x06, 0x42, 0x04, 0x5b, - 0x07, 0x2d, 0x00, 0x18, 0x8b, 0x41, 0x00, 0x0a, 0x16, 0xec, 0x82, 0xc1, 0x16, 0xea, 0x02, 0xc2, - 0x02, 0x42, 0x02, 0x00, 0x16, 0xe6, 0x03, 0x80, 0x07, 0x81, 0x00, 0x01, 0x10, 0xf1, 0x02, 0x01, - 0x00, 0x02, 0x10, 0xee, 0x02, 0x01, 0x00, 0x04, 0x10, 0xeb, 0x02, 0x01, 0x00, 0x08, 0x10, 0xe8, - 0x02, 0x01, 0x00, 0x10, 0x10, 0xe5, 0x02, 0xa1, 0x8b, 0x41, 0x00, 0x10, 0x13, 0x02, 0x04, 0x60, - 0xf2, 0x1a, 0x07, 0x2d, 0x00, 0x18, 0x03, 0x80, 0x02, 0x09, 0x08, 0x00, 0x02, 0x03, 0x00, 0x04, - 0x04, 0xc7, 0x06, 0xa0, 0xf3, 0x9a, 0x01, 0x60, 0x01, 0x1c, 0x00, 0x04, 0x16, 0x1c, 0x01, 0xa0, - 0x01, 0x40, 0x08, 0x00, 0x01, 0xe0, 0x01, 0x40, 0x10, 0x00, 0x02, 0x04, 0x00, 0x01, 0xce, 0x44, - 0x06, 0xc4, 0xc6, 0x44, 0x01, 0xa0, 0x01, 0x40, 0x10, 0x00, 0x06, 0x49, 0x01, 0xa0, 0x01, 0x40, - 0x40, 0x00, 0x01, 0xe0, 0x01, 0x40, 0x04, 0x00, 0x01, 0xe0, 0x01, 0x40, 0x08, 0x00, 0x06, 0xa0, - 0xf4, 0x38, 0x06, 0xa0, 0xf4, 0x38, 0x05, 0xc7, 0x02, 0x04, 0xe4, 0xa4, 0x04, 0xe0, 0x03, 0xd0, - 0xc1, 0x74, 0xc1, 0xb4, 0x05, 0x86, 0x13, 0x1c, 0x02, 0xe0, 0x00, 0xc0, 0x02, 0x00, 0x00, 0x00, - 0xc0, 0x40, 0xc0, 0x80, 0xc0, 0xc0, 0xc1, 0x00, 0xc1, 0x40, 0xc1, 0x80, 0xc1, 0xc0, 0xc2, 0x00, - 0xc2, 0x40, 0xc2, 0x80, 0xc2, 0xc0, 0xc3, 0x00, 0xc3, 0x40, 0xc3, 0x80, 0xc3, 0xc0, 0x04, 0xa0, - 0x00, 0xaa, 0x03, 0xd0, 0x03, 0xd0, 0x10, 0x3f, 0x05, 0x85, 0x81, 0x85, 0x13, 0xe1, 0x10, 0xe4, - 0x05, 0xc7, 0x02, 0x05, 0x7f, 0xff, 0xa1, 0x45, 0x03, 0xd0, 0x03, 0xd0, 0x10, 0x34, 0xcc, 0xc0, - 0xc4, 0xc1, 0x02, 0x03, 0x00, 0x28, 0x06, 0xa0, 0xf3, 0x9a, 0x01, 0xe0, 0x01, 0x42, 0x10, 0x00, - 0x05, 0xc7, 0x03, 0xd0, 0x03, 0xd0, 0x10, 0x27, 0x05, 0xc7, 0xc1, 0xa0, 0x01, 0x4a, 0x07, 0xa0, - 0x01, 0x4a, 0x0e, 0x00, 0x01, 0xa0, 0x01, 0x40, 0x02, 0x00, 0x07, 0x20, 0x01, 0x44, 0xc1, 0x60, - 0x01, 0x44, 0x02, 0x85, 0xff, 0x00, 0x16, 0x17, 0x01, 0xe0, 0x01, 0x40, 0x22, 0x00, 0x02, 0x05, - 0x00, 0xc0, 0x06, 0x05, 0x03, 0xd0, 0x16, 0xfd, 0xc1, 0x60, 0x01, 0x46, 0x02, 0x85, 0xff, 0x00, - 0x13, 0x0a, 0x02, 0x05, 0x33, 0x93, 0x06, 0x05, 0x00, 0x00, 0xf3, 0x80, 0x00, 0x0b, 0x10, 0x00, - 0x00, 0x00, 0xf3, 0x8a, 0x04, 0x9c, 0x03, 0xd0, 0x16, 0xf8, 0x10, 0x51, 0xc8, 0x06, 0x01, 0x4a, - 0xcc, 0xc0, 0xc4, 0xc1, 0x10, 0x4b, 0xc0, 0x13, 0xcc, 0xc8, 0xc0, 0x53, 0x02, 0x02, 0xf3, 0xaa, - 0xc4, 0xc2, 0x06, 0x43, 0x04, 0x5b, 0xc0, 0x60, 0x00, 0xae, 0x02, 0xc4, 0x02, 0x44, 0x00, 0x0f, - 0x88, 0x44, 0xe4, 0x8a, 0x16, 0x3c, 0x02, 0x81, 0x00, 0x08, 0x13, 0x27, 0xc1, 0x21, 0xe4, 0x9c, - 0xc1, 0x14, 0x21, 0x21, 0xe4, 0x7a, 0x16, 0x33, 0xc1, 0x21, 0xe4, 0x82, 0x02, 0x81, 0x00, 0x00, - 0x13, 0x0b, 0x02, 0x0d, 0x00, 0xa0, 0x83, 0x84, 0x13, 0x09, 0x05, 0xc4, 0x83, 0x84, 0x13, 0x06, - 0x05, 0xc4, 0x83, 0x84, 0x13, 0x03, 0x10, 0x23, 0x81, 0x0e, 0x16, 0x21, 0xc1, 0x21, 0xe4, 0x9c, - 0x45, 0x21, 0xe4, 0x7a, 0x01, 0xe0, 0x01, 0x42, 0x10, 0x00, 0x01, 0xa0, 0x01, 0x42, 0x10, 0x00, - 0xc3, 0xa1, 0xe4, 0x94, 0x02, 0x0f, 0x00, 0x2f, 0x03, 0x80, 0x01, 0xa0, 0x01, 0x40, 0x02, 0x00, - 0x01, 0xa0, 0x01, 0x40, 0x80, 0x00, 0xc0, 0x6d, 0x00, 0x0a, 0x13, 0x09, 0x02, 0x81, 0x12, 0x5c, - 0x1b, 0x06, 0x02, 0x0e, 0xf3, 0x90, 0x02, 0x0f, 0x00, 0x0f, 0x03, 0x80, 0x05, 0xca, 0x02, 0xe0, - 0x00, 0xa0, 0x04, 0x5a, 0xce, 0x59, 0x88, 0x20, 0xe4, 0xa4, 0xe4, 0xa4, 0x10, 0xf8, 0x04, 0xc1, - 0x62, 0x48, 0x05, 0x89, 0xc0, 0xa0, 0x01, 0x6c, 0xc8, 0x08, 0x01, 0x6c, 0x02, 0x03, 0xfc, 0x00, - 0x02, 0x04, 0x02, 0x00, 0xa0, 0x73, 0x06, 0x04, 0x16, 0xfd, 0x05, 0x88, 0x06, 0x09, 0x16, 0xf4, - 0xc8, 0x02, 0x01, 0x6c, 0x86, 0x81, 0x16, 0x02, 0x03, 0xd0, 0x05, 0xcb, 0x04, 0x5b, 0xc0, 0x48, - 0xc0, 0x89, 0x60, 0x81, 0x05, 0xc2, 0x04, 0x5b, 0xc3, 0x0b, 0x06, 0xa0, 0xf4, 0x72, 0xcc, 0x41, - 0x06, 0x42, 0x16, 0xfd, 0x06, 0xa0, 0xf4, 0x72, 0xc1, 0x01, 0x8c, 0x44, 0x16, 0x12, 0x05, 0xc4, - 0x06, 0x42, 0x16, 0xfb, 0x02, 0x04, 0xf4, 0xb8, 0x02, 0x03, 0x01, 0x01, 0x06, 0x94, 0x02, 0x03, - 0x5a, 0x5a, 0x06, 0x94, 0x05, 0x43, 0x06, 0x94, 0x07, 0x03, 0x06, 0x94, 0x04, 0xc3, 0x06, 0x94, - 0x05, 0xcc, 0x04, 0x5c, 0xc1, 0xcb, 0x06, 0xa0, 0xf4, 0x72, 0xcc, 0x43, 0x06, 0x42, 0x16, 0xfd, - 0x06, 0xa0, 0xf4, 0x72, 0x8c, 0x43, 0x16, 0xf5, 0x06, 0x42, 0x16, 0xfc, 0x04, 0x57, 0xc2, 0x8b, - 0xc0, 0x08, 0xc1, 0x49, 0x05, 0x85, 0x02, 0x80, 0x00, 0x40, 0x11, 0x03, 0x02, 0x80, 0x00, 0x4f, - 0x12, 0x45, 0x02, 0x01, 0xf4, 0x72, 0x09, 0xa1, 0x80, 0x01, 0x13, 0x40, 0x02, 0x01, 0xf5, 0xa2, - 0x09, 0xa1, 0x80, 0x01, 0x13, 0x3b, 0xc0, 0x60, 0x00, 0x06, 0x09, 0xa1, 0x80, 0x01, 0x13, 0x36, - 0x05, 0x81, 0x80, 0x01, 0x13, 0x33, 0xc0, 0x4a, 0x09, 0xa1, 0x80, 0x01, 0x13, 0x2f, 0xc8, 0x00, - 0x01, 0x6a, 0x02, 0x80, 0x00, 0x80, 0x14, 0x17, 0x02, 0x01, 0xf8, 0x00, 0xc1, 0xa0, 0x01, 0x40, - 0x01, 0xa0, 0x01, 0x40, 0x04, 0x00, 0x02, 0x02, 0x10, 0x00, 0x02, 0x03, 0x04, 0x00, 0xcc, 0xb1, - 0x06, 0x43, 0x16, 0xfd, 0x01, 0xa0, 0x01, 0x40, 0x40, 0x00, 0x02, 0x08, 0xf8, 0x10, 0xc8, 0x06, - 0x01, 0x40, 0xc0, 0x00, 0x13, 0x02, 0x02, 0x08, 0xf8, 0x00, 0x02, 0x09, 0xfb, 0xfe, 0x06, 0xa0, - 0xf4, 0x7c, 0x10, 0x25, 0x02, 0x80, 0x00, 0x80, 0x14, 0x09, 0x02, 0x01, 0xf8, 0x00, 0x02, 0x02, - 0x10, 0x00, 0x02, 0x03, 0x04, 0x00, 0xcc, 0x72, 0x06, 0x43, 0x16, 0xfd, 0x05, 0x80, 0x02, 0x80, - 0x00, 0x80, 0x12, 0x04, 0x01, 0x60, 0x01, 0x04, 0x00, 0x20, 0x13, 0x05, 0x81, 0x40, 0x16, 0xab, - 0x02, 0x80, 0x00, 0x80, 0x14, 0x0b, 0x07, 0xa0, 0x01, 0x6a, 0x00, 0x7e, 0x02, 0x02, 0x10, 0x00, - 0x02, 0x03, 0x04, 0x00, 0x04, 0xc1, 0xcc, 0x81, 0x06, 0x43, 0x16, 0xfd, 0x05, 0xca, 0x04, 0x5a, - 0x02, 0x00, 0xf5, 0x94, 0x02, 0x01, 0xf6, 0xc4, 0x02, 0x40, 0xfc, 0x00, 0x02, 0x41, 0xfc, 0x00, - 0x80, 0x40, 0x13, 0x04, 0x07, 0xa0, 0x01, 0x04, 0x00, 0x3c, 0x04, 0x5b, 0x04, 0xc0, 0x02, 0x01, - 0x00, 0x08, 0x02, 0x02, 0x12, 0x00, 0xc1, 0xe0, 0x01, 0x40, 0x01, 0xa0, 0x01, 0x40, 0x04, 0x00, - 0x02, 0x03, 0x01, 0x00, 0xc8, 0x00, 0x01, 0x6a, 0xcc, 0xa0, 0xf8, 0x10, 0x05, 0x80, 0x06, 0x03, - 0x16, 0xf9, 0x02, 0x22, 0x02, 0x00, 0x06, 0x01, 0x16, 0xf3, 0x01, 0xa0, 0x01, 0x40, 0x40, 0x00, - 0xc8, 0x07, 0x01, 0x40, 0x02, 0x00, 0x08, 0x00, 0xc0, 0x40, 0x06, 0x01, 0xc8, 0x01, 0x01, 0x6a, - 0x02, 0x61, 0x80, 0x00, 0xc8, 0x01, 0xf8, 0x10, 0x06, 0x00, 0x16, 0xf6, 0x04, 0xc0, 0x04, 0xc8, - 0x04, 0xc9, 0x02, 0x03, 0x08, 0x00, 0xc8, 0x00, 0x01, 0x6a, 0xc1, 0x80, 0x02, 0x66, 0x80, 0x00, - 0xc1, 0x20, 0xf8, 0x10, 0x81, 0x06, 0x16, 0x15, 0xc2, 0x08, 0x13, 0x06, 0x05, 0x80, 0x06, 0x03, - 0x16, 0xf2, 0xc2, 0x08, 0x13, 0x0d, 0x10, 0x19, 0x07, 0xa0, 0xf8, 0x10, 0x55, 0x55, 0xc1, 0x20, - 0xf8, 0x10, 0x02, 0x84, 0x55, 0x55, 0x16, 0x02, 0xc2, 0x06, 0x10, 0xf0, 0x81, 0x06, 0x13, 0xee, - 0x04, 0x5b, 0x07, 0xa0, 0xf8, 0x10, 0x55, 0x55, 0xc1, 0x60, 0xf8, 0x10, 0x81, 0x05, 0x13, 0x03, - 0x02, 0x85, 0x55, 0x55, 0x16, 0xf5, 0xc2, 0x08, 0x13, 0xe1, 0xc2, 0x40, 0x06, 0x09, 0x02, 0x48, - 0x07, 0xff, 0x04, 0xc0, 0x02, 0x01, 0x00, 0x08, 0x02, 0x02, 0x12, 0x00, 0x02, 0x03, 0x01, 0x00, - 0xc8, 0x00, 0x01, 0x6a, 0xc8, 0x32, 0xf8, 0x10, 0x05, 0x80, 0x06, 0x03, 0x16, 0xf9, 0x02, 0x22, - 0x02, 0x00, 0x06, 0x01, 0x16, 0xf3, 0x02, 0x88, 0x00, 0x40, 0x15, 0x13, 0x02, 0x89, 0x00, 0x4f, - 0x11, 0x10, 0x04, 0xc0, 0x02, 0x02, 0x12, 0x00, 0x02, 0x01, 0x00, 0x08, 0x02, 0x03, 0x01, 0x00, - 0xcc, 0x80, 0x06, 0x03, 0x16, 0xfd, 0x02, 0x22, 0x02, 0x00, 0x06, 0x01, 0x16, 0xf7, 0x05, 0xcb, - 0x04, 0x5b, 0x07, 0xa0, 0x01, 0x04, 0x00, 0x37, 0x04, 0x5b, 0x28, 0x43, 0x29, 0x31, 0x39, 0x38, - 0x33, 0x2d, 0x38, 0x38, 0x20, 0x42, 0x59, 0x20, 0x54, 0x49, 0xc2, 0x4b, 0x02, 0xa8, 0x00, 0x98, - 0x07, 0x83, 0x00, 0x02, 0x02, 0x28, 0x00, 0x08, 0xc6, 0x23, 0xe4, 0xf6, 0x06, 0x48, 0xc0, 0xc4, - 0x0a, 0x73, 0x17, 0x65, 0x06, 0xa0, 0xf7, 0xc4, 0xc1, 0xc8, 0x05, 0xc7, 0x02, 0x03, 0x00, 0xa5, - 0x03, 0xb0, 0xcd, 0xf8, 0xcd, 0xf8, 0x02, 0xa6, 0x62, 0x06, 0x02, 0x88, 0x00, 0x0a, 0x16, 0x57, - 0x29, 0x03, 0x16, 0x55, 0x29, 0x05, 0x80, 0xc4, 0x16, 0x52, 0x09, 0x15, 0x17, 0x50, 0x09, 0x15, - 0x18, 0x4e, 0x02, 0x85, 0x00, 0x29, 0x16, 0x4b, 0x05, 0xc6, 0x00, 0x96, 0x07, 0x03, 0x04, 0xc4, - 0x06, 0x45, 0x00, 0x95, 0x05, 0x44, 0x16, 0x43, 0x81, 0x44, 0x16, 0x41, 0x03, 0x00, 0x00, 0x05, - 0x02, 0xc4, 0x03, 0x00, 0x00, 0x0a, 0x02, 0x44, 0x00, 0x0f, 0x02, 0x84, 0x00, 0x05, 0x16, 0x37, - 0x02, 0xc4, 0x03, 0x00, 0x00, 0x0f, 0x02, 0x44, 0x00, 0x0f, 0x02, 0x84, 0x00, 0x0a, 0x16, 0x2f, - 0x02, 0x04, 0xff, 0xfe, 0x13, 0x2c, 0x15, 0x2b, 0x1a, 0x2a, 0x05, 0x84, 0x12, 0x28, 0x15, 0x27, - 0x1a, 0x26, 0x18, 0x25, 0x05, 0x84, 0x16, 0x23, 0x1b, 0x22, 0x17, 0x21, 0x05, 0x84, 0x13, 0x1f, - 0x1a, 0x1e, 0x11, 0x1d, 0x06, 0x04, 0x16, 0x1b, 0x02, 0xa5, 0xc1, 0xc5, 0x02, 0x25, 0x00, 0x06, - 0x02, 0x03, 0xa5, 0xa5, 0xc1, 0x83, 0x00, 0x95, 0x38, 0x03, 0x00, 0x94, 0x02, 0x83, 0x6b, 0x2e, - 0x16, 0x0e, 0x02, 0x84, 0x1c, 0x59, 0x16, 0x0b, 0x02, 0x24, 0x00, 0x69, 0x00, 0x95, 0x3c, 0x03, - 0x00, 0x94, 0x81, 0x83, 0x16, 0x04, 0x02, 0x84, 0x00, 0x69, 0x16, 0x01, 0x05, 0xc9, 0x04, 0x59, - 0xd0, 0xc3, 0x13, 0xfd, 0x1c, 0x01, 0x10, 0xfb, 0x90, 0xe0, 0xe4, 0xfd, 0x16, 0xf8, 0x06, 0xc3, - 0xd0, 0xc3, 0x1c, 0xf5, 0x16, 0xf4, 0x90, 0xe0, 0xe4, 0xfa, 0x16, 0xf1, 0x04, 0x5b, 0xc3, 0x0b, - 0x02, 0x09, 0xe4, 0xfe, 0x06, 0xa0, 0xf1, 0x50, 0x05, 0xcc, 0x04, 0x5c, 0x07, 0x88, 0xb0, 0x00, - 0x07, 0x89, 0xff, 0xfe, 0x09, 0xa8, 0x09, 0xa9, 0x07, 0x8a, 0xe0, 0x02, 0x06, 0xa0, 0xf4, 0x42, - 0x00, 0x00, 0x07, 0x88, 0xa0, 0x00, 0x07, 0x89, 0xaf, 0xfe, 0x09, 0xa8, 0x09, 0xa9, 0x07, 0x8a, - 0xe0, 0x78, 0x06, 0xa0, 0xf4, 0x42, 0x00, 0x00, 0x06, 0xa0, 0xf6, 0xde, 0x00, 0x00, 0x10, 0xe6, - 0x10, 0xe5, 0x00, 0x00, 0xf8, 0x26, 0x07, 0x93, 0x00, 0x00, 0x00, 0x00, 0xff, 0xb8, 0x00, 0x48, - 0x28, 0x43, 0x29, 0x31, 0x39, 0x38, 0x33, 0x2d, 0x38, 0x39, 0x2c, 0x39, 0x30, 0x2d, 0x39, 0x34, - 0x20, 0x54, 0x65, 0x78, 0x61, 0x73, 0x20, 0x49, 0x6e, 0x73, 0x74, 0x72, 0x75, 0x6d, 0x65, 0x6e, - 0x74, 0x73, 0x0a, 0x28, 0x43, 0x29, 0x31, 0x39, 0x38, 0x33, 0x2c, 0x34, 0x2c, 0x35, 0x2c, 0x36, - 0x20, 0x49, 0x42, 0x4d, 0x20, 0x43, 0x6f, 0x72, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xa0, 0x34, 0xff, 0xb8, 0x00, 0x80, 0xb0, 0x3e, 0x20, 0x00, 0x90, 0x00, 0x0d, 0xd2, 0x45, 0x4f, - 0x20, 0x56, 0x32, 0x32, 0x38, 0x2e, 0x31, 0x30, 0x2e, 0x31, 0x38, 0x20, 0x20, 0x28, 0x43, 0x29, - 0x20, 0x43, 0x6f, 0x70, 0x79, 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x4f, 0x6c, 0x69, 0x63, 0x6f, - 0x6d, 0x20, 0x31, 0x39, 0x39, 0x38, 0x2e, 0x00, 0x03, 0x00, 0x00, 0x02, 0xc0, 0xa0, 0x01, 0x6a, - 0xc3, 0x0e, 0x09, 0xac, 0xc8, 0x0c, 0x01, 0x6a, 0xc3, 0x0e, 0x02, 0x4c, 0x03, 0xff, 0xd8, 0xec, - 0xf8, 0x00, 0x13, 0xc0, 0x05, 0x83, 0x02, 0x43, 0x00, 0x3f, 0xd8, 0xec, 0xf8, 0x01, 0x13, 0xc0, - 0xc8, 0x02, 0x01, 0x6a, 0x05, 0xce, 0x03, 0x90, 0xef, 0xff, 0x03, 0x80, 0x11, 0x08, 0xc3, 0xbc, - 0xdf, 0xbc, 0x06, 0x0d, 0x16, 0xfd, 0x05, 0x8c, 0x01, 0x8c, 0x00, 0x01, 0x10, 0x12, 0xc3, 0xbc, - 0xc3, 0xfc, 0x01, 0x8d, 0x80, 0x00, 0x13, 0x0d, 0x01, 0x0d, 0x40, 0x00, 0x16, 0x04, 0xdf, 0x8f, - 0x06, 0x0d, 0x16, 0xfd, 0x10, 0x06, 0x01, 0x8d, 0x40, 0x01, 0x13, 0x03, 0xcf, 0x8f, 0x06, 0x4d, - 0x16, 0xfd, 0xc3, 0x7c, 0x16, 0xe3, 0x04, 0x5b, 0xc1, 0x60, 0x01, 0x6c, 0x02, 0xe0, 0x07, 0x78, - 0x04, 0xcd, 0x06, 0x9b, 0x02, 0xe0, 0x08, 0x5c, 0x01, 0x60, 0x13, 0x0c, 0x10, 0x00, 0x16, 0x0e, - 0xc8, 0x0d, 0x01, 0x6c, 0x07, 0x0f, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, - 0x88, 0x0f, 0xfc, 0x06, 0x13, 0xf8, 0xd8, 0x20, 0xe0, 0x0a, 0xfc, 0x06, 0xc8, 0x05, 0x01, 0x6c, - 0x07, 0x8f, 0xfc, 0x00, 0xc1, 0x5f, 0x13, 0xe0, 0x04, 0xff, 0x07, 0xbf, 0x81, 0x00, 0x07, 0x20, - 0xff, 0xfe, 0xc7, 0xc2, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, - 0x01, 0x03, 0x13, 0xf8, 0xc2, 0x8a, 0x16, 0x23, 0xc8, 0x0d, 0x01, 0x8c, 0xc2, 0xcd, 0xc3, 0x20, - 0x01, 0x6c, 0x07, 0x8a, 0x00, 0x01, 0xd2, 0x8e, 0x15, 0x2d, 0x05, 0xa0, 0x10, 0x84, 0x07, 0x8d, - 0x01, 0x04, 0x01, 0x5d, 0x21, 0x00, 0x16, 0x03, 0x07, 0x9d, 0xde, 0x8c, 0x10, 0x25, 0x01, 0x5d, - 0x01, 0x00, 0x16, 0x22, 0xc3, 0xdd, 0x01, 0xcf, 0xff, 0x00, 0x01, 0x8f, 0x04, 0x80, 0xc7, 0x4f, - 0x01, 0x5d, 0x20, 0x00, 0x13, 0xf1, 0x01, 0xe0, 0x07, 0x78, 0x80, 0x00, 0x10, 0x15, 0xc3, 0xe0, - 0x01, 0x6c, 0xc8, 0x09, 0x01, 0x6c, 0x13, 0x08, 0xc8, 0x0d, 0xfc, 0x00, 0xc2, 0x4f, 0x05, 0x87, - 0xf1, 0xce, 0xc3, 0x8e, 0x11, 0xda, 0x10, 0x06, 0xc2, 0x0d, 0xc2, 0x4f, 0x07, 0x87, 0x00, 0x01, - 0xd1, 0xce, 0x11, 0xd3, 0x05, 0xa0, 0x10, 0x84, 0xc8, 0x06, 0x07, 0x92, 0x07, 0x81, 0x01, 0x0a, - 0x01, 0x60, 0x13, 0x0c, 0x10, 0x00, 0x16, 0x04, 0xc8, 0x05, 0x01, 0x6c, 0x07, 0x20, 0xfc, 0x06, - 0x03, 0x90, 0xa0, 0x07, 0x02, 0xe0, 0x07, 0x78, 0x06, 0x9b, 0x02, 0xe0, 0x08, 0x5c, 0xcc, 0x66, - 0x00, 0x04, 0xcc, 0x43, 0xcc, 0x76, 0xcc, 0x76, 0xc8, 0x44, 0x00, 0x02, 0xc4, 0x45, 0x07, 0xa1, - 0xff, 0xee, 0x60, 0x81, 0xc3, 0x45, 0xc0, 0xb6, 0x80, 0xc2, 0x1b, 0x63, 0xc3, 0x96, 0x04, 0xf6, - 0x02, 0x46, 0xfe, 0xf8, 0x01, 0x4e, 0x40, 0x00, 0x16, 0x02, 0x04, 0x60, 0x90, 0xaa, 0x07, 0x81, - 0x01, 0x0a, 0xa1, 0x02, 0xc0, 0x83, 0x02, 0x22, 0x00, 0x06, 0x60, 0x84, 0x15, 0x25, 0x07, 0x84, - 0x00, 0x06, 0xc0, 0x83, 0xc8, 0x05, 0x01, 0x6c, 0xc8, 0x02, 0xfc, 0x04, 0x07, 0xa0, 0xfc, 0x02, - 0x80, 0x00, 0x04, 0xe0, 0xff, 0xfe, 0xc1, 0x60, 0x01, 0x6c, 0xc8, 0x06, 0x07, 0x92, 0x02, 0xe0, - 0x07, 0x78, 0x06, 0x9b, 0x02, 0xe0, 0x08, 0x5c, 0xc8, 0x05, 0x01, 0x6c, 0xc1, 0x60, 0xfc, 0x00, - 0x16, 0x16, 0x10, 0xf1, 0xc8, 0x06, 0x07, 0x92, 0x03, 0x90, 0x80, 0x03, 0x02, 0xe0, 0x07, 0x78, - 0x06, 0x9b, 0x02, 0xe0, 0x08, 0x5c, 0x10, 0x0b, 0xc3, 0xe6, 0x00, 0x06, 0x13, 0xf3, 0x03, 0x00, - 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0xcc, 0x66, - 0x00, 0x04, 0xcc, 0x42, 0xcc, 0x76, 0xcc, 0x76, 0xc8, 0x44, 0x00, 0x02, 0xc4, 0x45, 0x07, 0xa1, - 0xff, 0xee, 0x60, 0x81, 0x05, 0xa0, 0x10, 0x84, 0x65, 0x82, 0x15, 0x0e, 0xa0, 0xb6, 0xc3, 0x96, - 0x04, 0xf6, 0x02, 0x46, 0xfe, 0xf8, 0x01, 0x4e, 0x40, 0x00, 0x16, 0xb1, 0xa0, 0x84, 0x07, 0x84, - 0x00, 0x06, 0x60, 0x84, 0x04, 0x60, 0x90, 0xaa, 0x02, 0x26, 0xff, 0xfc, 0xc0, 0x36, 0xc0, 0x76, - 0x10, 0x06, 0x02, 0x26, 0xff, 0xfa, 0xc0, 0x36, 0xc0, 0x76, 0xc0, 0x83, 0x65, 0x82, 0x07, 0x84, - 0x00, 0x06, 0xa0, 0x42, 0x17, 0x01, 0x05, 0x80, 0xc8, 0x05, 0x01, 0x6c, 0x07, 0x8f, 0xfc, 0x00, - 0xc1, 0x7f, 0x16, 0x09, 0xc1, 0x60, 0x01, 0x6c, 0x02, 0xe0, 0x07, 0x78, 0x04, 0xcd, 0x06, 0x9b, - 0x02, 0xe0, 0x08, 0x5c, 0x10, 0xf1, 0x07, 0xbf, 0x80, 0x00, 0x04, 0xe0, 0xff, 0xfe, 0xc7, 0xc3, - 0xc0, 0xb6, 0xc3, 0x96, 0x04, 0xf6, 0x02, 0x46, 0xfe, 0xf8, 0x27, 0xa0, 0x08, 0x98, 0x13, 0x0d, - 0xc3, 0xc5, 0xc8, 0x0e, 0x08, 0x8e, 0xc3, 0xa0, 0x08, 0x90, 0xc0, 0xee, 0xff, 0xfe, 0x05, 0xa0, - 0x08, 0xa0, 0x16, 0x32, 0x05, 0xa0, 0x08, 0x9e, 0x10, 0x2f, 0x07, 0x83, 0x03, 0xf8, 0x06, 0x20, - 0x08, 0x9c, 0x13, 0x02, 0x04, 0x60, 0x95, 0x0c, 0xc3, 0xe0, 0x08, 0x9a, 0x83, 0xe0, 0x08, 0x98, - 0x13, 0x08, 0xc8, 0x0f, 0x08, 0x98, 0x04, 0xe0, 0x08, 0x9e, 0x04, 0xe0, 0x08, 0xa0, 0x27, 0x8f, - 0x16, 0xdf, 0x04, 0x60, 0x95, 0x0c, 0xc8, 0x0f, 0x01, 0x6c, 0x07, 0xa0, 0xfc, 0x02, 0x80, 0x00, - 0x04, 0xe0, 0xff, 0xfe, 0x04, 0xe0, 0xfc, 0x04, 0xc8, 0x3e, 0xfc, 0x06, 0xc3, 0xe0, 0xfc, 0x00, - 0x16, 0x0b, 0xc3, 0xe0, 0x01, 0x6c, 0x02, 0xe0, 0x07, 0x78, 0x04, 0xcd, 0x06, 0x9b, 0x02, 0xe0, - 0x08, 0x5c, 0xc8, 0x0f, 0x01, 0x6c, 0x10, 0xf2, 0x60, 0x9e, 0x87, 0x82, 0x15, 0xe4, 0xa0, 0x9e, - 0x02, 0x82, 0x00, 0xe0, 0x15, 0x1b, 0x02, 0x82, 0x00, 0x70, 0x15, 0x35, 0xc3, 0xa0, 0x08, 0x8e, - 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, - 0x07, 0x8f, 0x01, 0x0a, 0xcf, 0xc2, 0x07, 0x3f, 0xcf, 0xc0, 0xcf, 0xc1, 0xcb, 0xc4, 0x00, 0x02, - 0xc7, 0xc5, 0x07, 0xaf, 0xff, 0xee, 0x60, 0x81, 0x04, 0x60, 0x90, 0xaa, 0xc8, 0x0f, 0x01, 0x6c, - 0x07, 0xa0, 0xfc, 0x02, 0x80, 0x00, 0x04, 0xe0, 0xff, 0xfe, 0x04, 0xe0, 0xfc, 0x04, 0xc3, 0xc2, - 0x09, 0x2f, 0xa3, 0xcf, 0xc8, 0x0f, 0xfc, 0x06, 0x60, 0x8f, 0xc3, 0xe0, 0xfc, 0x00, 0x16, 0x0b, - 0xc3, 0xe0, 0x01, 0x6c, 0x02, 0xe0, 0x07, 0x78, 0x04, 0xcd, 0x06, 0x9b, 0x02, 0xe0, 0x08, 0x5c, - 0xc8, 0x0f, 0x01, 0x6c, 0x10, 0xf2, 0xc8, 0x0f, 0x01, 0x6c, 0x07, 0xa0, 0xfc, 0x02, 0x80, 0x00, - 0x04, 0xe0, 0xff, 0xfe, 0x04, 0xe0, 0xfc, 0x04, 0x01, 0xc2, 0x80, 0x00, 0xc8, 0x02, 0xfc, 0x06, - 0xc3, 0xe0, 0xfc, 0x00, 0x16, 0x0b, 0xc3, 0xe0, 0x01, 0x6c, 0x02, 0xe0, 0x07, 0x78, 0x04, 0xcd, - 0x06, 0x9b, 0x02, 0xe0, 0x08, 0x5c, 0xc8, 0x0f, 0x01, 0x6c, 0x10, 0xf2, 0xc8, 0x0f, 0x01, 0x6c, - 0x07, 0xa0, 0xfc, 0x02, 0x80, 0x00, 0x04, 0xe0, 0xff, 0xfe, 0x04, 0xe0, 0xfc, 0x04, 0xc3, 0x8f, - 0xc3, 0xe0, 0xfc, 0x00, 0x16, 0x0b, 0xc3, 0xe0, 0x01, 0x6c, 0x02, 0xe0, 0x07, 0x78, 0x04, 0xcd, - 0x06, 0x9b, 0x02, 0xe0, 0x08, 0x5c, 0xc8, 0x0f, 0x01, 0x6c, 0x10, 0xf2, 0xc8, 0x05, 0x01, 0x6c, - 0xc0, 0xa0, 0xfc, 0x06, 0x15, 0x0f, 0x01, 0x82, 0x80, 0x00, 0xc3, 0xc2, 0x06, 0x0f, 0x01, 0x8f, - 0x00, 0x01, 0xc8, 0x0f, 0x08, 0x5a, 0xc8, 0x0f, 0xfc, 0x04, 0x63, 0xc2, 0x05, 0x0f, 0xc8, 0x0f, - 0x08, 0x58, 0x10, 0x05, 0x07, 0xa0, 0x00, 0x1a, 0x95, 0x3e, 0xc8, 0x02, 0xfc, 0x04, 0x03, 0x00, - 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x04, 0xe0, - 0x01, 0x02, 0x07, 0x8f, 0x01, 0x0a, 0x07, 0x3f, 0xcf, 0xc2, 0xcf, 0xc0, 0xcf, 0xc1, 0xcb, 0xc4, - 0x00, 0x02, 0xc7, 0xc5, 0x07, 0xaf, 0xff, 0xee, 0x68, 0x81, 0x01, 0x60, 0x13, 0x0c, 0x10, 0x00, - 0x16, 0x05, 0xc8, 0x0d, 0x01, 0x6c, 0xd8, 0x20, 0xe0, 0x0a, 0xfc, 0x06, 0xc2, 0x8a, 0x16, 0x13, - 0xc8, 0x0d, 0x01, 0x8c, 0xc2, 0xcd, 0xc3, 0x0e, 0x07, 0x8a, 0x00, 0x01, 0xc3, 0xa0, 0x08, 0x8e, - 0xd2, 0x8e, 0x03, 0x00, 0x00, 0x0f, 0x01, 0x60, 0x01, 0x00, 0x08, 0x00, 0x13, 0xfc, 0x03, 0x00, - 0x00, 0x02, 0x04, 0x60, 0x91, 0x54, 0xc8, 0x09, 0x01, 0x6c, 0x13, 0x08, 0xc8, 0x0d, 0xfc, 0x00, - 0xc2, 0x4e, 0x05, 0x87, 0xc3, 0xa0, 0x08, 0x8e, 0xf1, 0xce, 0x10, 0xeb, 0xc2, 0x0d, 0xc2, 0x4e, - 0x07, 0x87, 0x00, 0x01, 0xc3, 0xa0, 0x08, 0x8e, 0xd1, 0xce, 0x10, 0xe3, 0xa0, 0x43, 0x17, 0x01, - 0x05, 0x80, 0xc8, 0x05, 0x01, 0x6c, 0x07, 0x8f, 0xfc, 0x00, 0xc1, 0x7f, 0x16, 0x09, 0xc1, 0x60, - 0x01, 0x6c, 0x02, 0xe0, 0x07, 0x78, 0x04, 0xcd, 0x06, 0x9b, 0x02, 0xe0, 0x08, 0x5c, 0x10, 0xf1, - 0x07, 0xbf, 0x80, 0x00, 0x04, 0xe0, 0xff, 0xfe, 0xc7, 0xc3, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, - 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x07, 0x8f, 0x01, 0x0a, 0xcf, 0xc2, - 0xcf, 0xc3, 0xcf, 0xc0, 0xcf, 0xc1, 0xcb, 0xc4, 0x00, 0x02, 0xc7, 0xc5, 0x07, 0xaf, 0xff, 0xee, - 0x60, 0x81, 0x60, 0x83, 0x15, 0xd3, 0xa0, 0x83, 0x04, 0x60, 0x91, 0xb6, 0x03, 0x00, 0x00, 0x02, - 0xc8, 0x0c, 0x01, 0x6a, 0xc3, 0x20, 0xf8, 0x00, 0xc8, 0x0c, 0x01, 0x6a, 0xc1, 0xa0, 0xf8, 0x06, - 0x11, 0x10, 0xc8, 0x06, 0xf8, 0x04, 0x04, 0xe4, 0xff, 0xf6, 0xcd, 0x06, 0x02, 0x24, 0x00, 0x04, - 0xc9, 0x0b, 0x00, 0x02, 0xc5, 0x0c, 0x07, 0xa4, 0xff, 0xee, 0x68, 0x81, 0x03, 0x90, 0x0a, 0x07, - 0x03, 0x80, 0x01, 0x86, 0x80, 0x00, 0xc1, 0x46, 0x06, 0x06, 0x01, 0x86, 0x00, 0x01, 0xc8, 0x06, - 0xf8, 0x04, 0x04, 0xe4, 0xff, 0xf6, 0xcd, 0x05, 0x02, 0x24, 0x00, 0x04, 0xc9, 0x0b, 0x00, 0x02, - 0xc5, 0x0c, 0x07, 0xa4, 0xff, 0xee, 0x68, 0x81, 0x61, 0x46, 0x07, 0xa0, 0x00, 0x1a, 0x95, 0xa8, - 0x03, 0x90, 0x08, 0x07, 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, 0xc8, 0x0c, 0x01, 0x6a, 0xc1, 0xa6, - 0xf8, 0x06, 0xc3, 0x20, 0xf8, 0x00, 0xc8, 0x0c, 0x01, 0x6a, 0xc8, 0x06, 0xf8, 0x06, 0xc8, 0x05, - 0xf8, 0x04, 0xc3, 0x20, 0xf8, 0x00, 0x04, 0xe0, 0xf8, 0x00, 0x07, 0xa0, 0xf8, 0x02, 0x81, 0x00, - 0x07, 0x20, 0xfb, 0xfe, 0x07, 0xa0, 0x01, 0x00, 0x20, 0x81, 0x03, 0x90, 0x02, 0x07, 0x03, 0x80, - 0xc2, 0x84, 0xc3, 0x0a, 0xc8, 0x0a, 0x01, 0x6a, 0x01, 0x20, 0xf8, 0x02, 0x81, 0x00, 0x13, 0x09, - 0x01, 0x20, 0xf8, 0x02, 0xfe, 0x00, 0x16, 0x0a, 0xc2, 0xa0, 0xf8, 0x00, 0x16, 0xf2, 0x06, 0xa0, - 0x97, 0xb6, 0xc2, 0xa0, 0xf8, 0x00, 0x16, 0xee, 0x06, 0xa0, 0x97, 0xb6, 0xc2, 0xa0, 0xf8, 0x02, - 0x11, 0x09, 0x01, 0x0a, 0x02, 0x00, 0x16, 0x55, 0x01, 0x0a, 0x14, 0x00, 0x13, 0x5f, 0x01, 0x4a, - 0x10, 0x00, 0x16, 0x33, 0x07, 0x0a, 0x26, 0xa0, 0x08, 0x9e, 0x16, 0x02, 0xc2, 0xa0, 0x08, 0xa0, - 0x09, 0x5a, 0x05, 0x0a, 0x02, 0x2a, 0x08, 0x10, 0xc8, 0x0a, 0x08, 0x9c, 0x04, 0xe0, 0x08, 0x98, - 0x07, 0x8a, 0x7f, 0xfe, 0x98, 0x0a, 0x07, 0x2c, 0x13, 0x0a, 0x98, 0x0a, 0x07, 0x20, 0x13, 0x07, - 0x06, 0xca, 0x98, 0x0a, 0x07, 0x2c, 0x13, 0x03, 0x98, 0x0a, 0x07, 0x20, 0x16, 0x0a, 0x01, 0xe0, - 0x06, 0xd2, 0x08, 0x00, 0x01, 0xe0, 0x06, 0x34, 0x08, 0x00, 0x04, 0xe0, 0x06, 0x30, 0x04, 0xcb, - 0x10, 0x0c, 0x07, 0x8a, 0x01, 0x00, 0xb8, 0x0a, 0x07, 0x2c, 0x17, 0x02, 0x78, 0x0a, 0x07, 0x2c, - 0xb8, 0x0a, 0x07, 0x20, 0x17, 0x02, 0x78, 0x0a, 0x07, 0x20, 0xc2, 0xa0, 0xfb, 0xfe, 0x02, 0x4a, - 0x01, 0x00, 0x01, 0xca, 0x80, 0x00, 0xc8, 0x0a, 0xf8, 0x02, 0xc8, 0x0c, 0x01, 0x6a, 0xc2, 0xa0, - 0xf8, 0x02, 0x11, 0x07, 0x07, 0xa0, 0xf8, 0x02, 0x80, 0x00, 0xc8, 0x20, 0xf8, 0x00, 0x01, 0x6a, - 0x10, 0xf6, 0x07, 0x8a, 0x01, 0x8c, 0xc6, 0x8c, 0xc2, 0xcb, 0x03, 0x90, 0xff, 0xdf, 0x13, 0x32, - 0x03, 0x80, 0x01, 0x4a, 0x06, 0x00, 0x13, 0x0a, 0x01, 0xe0, 0x06, 0xd2, 0x02, 0x00, 0x01, 0xe0, - 0x06, 0x34, 0x08, 0x00, 0x04, 0xe0, 0x06, 0x30, 0x01, 0xcb, 0x00, 0x01, 0x88, 0x05, 0x01, 0x6a, - 0x13, 0x1a, 0xc3, 0x20, 0xfb, 0xfe, 0x16, 0x08, 0x04, 0xe0, 0xf8, 0x02, 0xc8, 0x20, 0xf8, 0x00, - 0x01, 0x6a, 0x16, 0xf4, 0x06, 0xa0, 0x97, 0xb6, 0xd2, 0xa0, 0xe0, 0x12, 0xc8, 0x0a, 0xf8, 0x02, - 0xc3, 0x20, 0xf8, 0x00, 0x13, 0x06, 0xc2, 0xa0, 0xf8, 0x02, 0x11, 0xd3, 0xc2, 0x8c, 0x04, 0x60, - 0x95, 0xe6, 0x06, 0xa0, 0x97, 0xb6, 0xc8, 0x0a, 0xf8, 0x02, 0x07, 0x8a, 0x01, 0x8c, 0x01, 0x4b, - 0x00, 0x01, 0x04, 0x5b, 0x07, 0x8b, 0x00, 0xda, 0xce, 0xcd, 0xce, 0xce, 0xc6, 0xcf, 0x02, 0xe0, - 0x00, 0xc0, 0x04, 0x54, 0x06, 0xa0, 0x95, 0xe2, 0x16, 0x25, 0xc0, 0x82, 0x13, 0x0b, 0xc6, 0x81, - 0xc8, 0x09, 0x01, 0x6a, 0xc8, 0x04, 0xf8, 0x00, 0xc2, 0x45, 0xc1, 0x01, 0xc1, 0x42, 0x04, 0xc2, - 0xc0, 0xc0, 0x10, 0xe8, 0xc8, 0x09, 0x01, 0x6a, 0xc8, 0x04, 0xf8, 0x00, 0xc2, 0x45, 0x04, 0xc3, - 0x10, 0xe1, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, 0x86, 0x8a, 0x01, 0x60, - 0x01, 0x9c, 0x40, 0x00, 0x16, 0xf6, 0x86, 0x8a, 0xc8, 0x05, 0x01, 0x6a, 0x01, 0x20, 0xf8, 0x02, - 0xfe, 0x00, 0x16, 0xd8, 0xc0, 0x82, 0x13, 0x0d, 0xc6, 0x81, 0xc8, 0x09, 0x01, 0x6a, 0xc8, 0x04, - 0xf8, 0x00, 0xc2, 0x45, 0xc1, 0x01, 0xc1, 0x42, 0x04, 0xc2, 0xc0, 0xc0, 0x03, 0x90, 0x00, 0x1f, - 0x03, 0x80, 0xc8, 0x09, 0x01, 0x6a, 0xc8, 0x04, 0xf8, 0x00, 0xc2, 0x45, 0x04, 0xc3, 0x03, 0x90, - 0x00, 0x1f, 0x03, 0x80, 0x02, 0xe0, 0x08, 0x6a, 0xc2, 0x8b, 0x02, 0x2a, 0xff, 0xfc, 0x04, 0x60, - 0xb3, 0x8a, 0xc0, 0x82, 0x13, 0x07, 0xc6, 0x81, 0xc8, 0x09, 0x01, 0x6a, 0xc8, 0x04, 0xf8, 0x00, - 0xc2, 0x45, 0x10, 0x06, 0xc8, 0x09, 0x01, 0x6a, 0xc8, 0x04, 0xf8, 0x00, 0xc2, 0x45, 0x04, 0xc0, - 0x06, 0xa0, 0x99, 0x16, 0xc0, 0xc0, 0xc1, 0x01, 0xc1, 0x42, 0x04, 0xc2, 0x10, 0x9b, 0x03, 0x90, - 0xff, 0xff, 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, 0x86, 0x8a, 0x01, 0x60, 0x01, 0x9c, 0x40, 0x00, - 0x16, 0xf6, 0x86, 0x8a, 0xc8, 0x05, 0x01, 0x6a, 0x01, 0x20, 0xf8, 0x02, 0xfe, 0x00, 0x13, 0x03, - 0x06, 0xa0, 0x95, 0xe2, 0x13, 0xd6, 0xc0, 0x82, 0x13, 0x07, 0xc6, 0x81, 0xc8, 0x09, 0x01, 0x6a, - 0xc8, 0x04, 0xf8, 0x00, 0xc2, 0x45, 0x10, 0x06, 0xc8, 0x09, 0x01, 0x6a, 0xc8, 0x04, 0xf8, 0x00, - 0xc2, 0x45, 0x04, 0xc0, 0x06, 0xa0, 0x99, 0x16, 0xc0, 0xc0, 0xc1, 0x01, 0xc1, 0x42, 0x04, 0xc2, - 0x03, 0x90, 0x00, 0x1f, 0x03, 0x80, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, 0x03, 0x00, 0x00, 0x02, - 0x88, 0x08, 0x01, 0x8c, 0x01, 0x60, 0x01, 0x9c, 0x40, 0x00, 0x16, 0xf5, 0x88, 0x08, 0x01, 0x8c, - 0xc0, 0xe0, 0x01, 0x6c, 0xc2, 0x20, 0x05, 0xf4, 0x13, 0x02, 0x04, 0x60, 0xb9, 0x4c, 0x02, 0xe0, - 0x08, 0x6a, 0x01, 0x03, 0x00, 0xff, 0x13, 0x11, 0x01, 0x43, 0x04, 0x00, 0x13, 0x0e, 0xc8, 0x09, - 0x01, 0x6a, 0xc8, 0x04, 0xf8, 0x00, 0xc2, 0x45, 0xc1, 0x60, 0x08, 0x96, 0x02, 0x85, 0x97, 0xf6, - 0x16, 0x02, 0x06, 0xa0, 0x99, 0x16, 0x02, 0x43, 0x03, 0x00, 0x02, 0xe0, 0x00, 0xe0, 0x01, 0x20, - 0x08, 0x70, 0x01, 0x00, 0x16, 0x2f, 0xc2, 0x20, 0x05, 0xf4, 0x16, 0x2c, 0xc2, 0x60, 0x05, 0xf0, - 0x13, 0x12, 0xc8, 0x19, 0x05, 0xf0, 0xc2, 0xa9, 0x00, 0x0a, 0x11, 0x02, 0xf2, 0xa0, 0x09, 0x2e, - 0xd8, 0x0a, 0x01, 0x80, 0xc8, 0x29, 0x00, 0x06, 0x01, 0x8c, 0x07, 0xa0, 0x09, 0x16, 0x00, 0x04, - 0xc8, 0x09, 0x05, 0xf4, 0x10, 0x17, 0x02, 0xe0, 0x08, 0x6a, 0x01, 0x83, 0x06, 0x00, 0x16, 0x05, - 0xc1, 0x42, 0x13, 0x08, 0xc0, 0xc0, 0xc1, 0x01, 0x04, 0xc2, 0xd8, 0x20, 0x09, 0x2e, 0x01, 0x80, - 0xc8, 0x04, 0x01, 0x8c, 0x02, 0xe0, 0x00, 0xe0, 0x07, 0xa0, 0x00, 0x14, 0x08, 0x6a, 0xc8, 0x20, - 0x08, 0x96, 0x00, 0x16, 0xc8, 0x03, 0x01, 0x6c, 0x11, 0x03, 0x03, 0x90, 0x11, 0xff, 0x03, 0x80, - 0x04, 0x60, 0xb9, 0xc0, 0xc8, 0x04, 0x01, 0x6a, 0x10, 0x03, 0xc8, 0x20, 0xf8, 0x00, 0x01, 0x6a, - 0xc3, 0x20, 0xf8, 0x02, 0x01, 0x4c, 0x01, 0x00, 0x16, 0xf8, 0xc1, 0x60, 0x10, 0x86, 0x02, 0x45, - 0x00, 0x1f, 0x06, 0xcc, 0xd9, 0x4c, 0x10, 0x88, 0x13, 0x0d, 0x05, 0xa0, 0x10, 0x86, 0x06, 0x03, - 0x01, 0x03, 0x00, 0xff, 0x13, 0x52, 0xc1, 0x20, 0xf8, 0x00, 0xc8, 0x04, 0x01, 0x6a, 0x16, 0xe8, - 0x06, 0xa0, 0x97, 0xb6, 0x01, 0x0c, 0x00, 0xfe, 0x16, 0xf0, 0xc3, 0x20, 0x01, 0x6a, 0xc8, 0x04, - 0x01, 0x6a, 0x01, 0x20, 0xf8, 0x0e, 0x80, 0x00, 0x13, 0x07, 0xc1, 0x20, 0xf8, 0x14, 0x01, 0x84, - 0x60, 0xff, 0x02, 0x84, 0x02, 0x00, 0x1b, 0x33, 0xc1, 0x20, 0xf8, 0x08, 0x11, 0x0c, 0x88, 0x20, - 0xf8, 0x0c, 0x01, 0xa4, 0x16, 0x2f, 0x88, 0x20, 0xf8, 0x0a, 0x01, 0xa2, 0x16, 0x2b, 0x88, 0x04, - 0x01, 0xa0, 0x13, 0x25, 0x10, 0x27, 0xc1, 0x20, 0xf8, 0x0a, 0x11, 0x09, 0x25, 0x20, 0x01, 0xac, - 0x16, 0x1e, 0xc1, 0x20, 0xf8, 0x0c, 0x25, 0x20, 0x01, 0xae, 0x16, 0x19, 0x10, 0x1b, 0x02, 0x84, - 0xff, 0xff, 0x16, 0x0a, 0x88, 0x04, 0xf8, 0x0c, 0x16, 0x07, 0x41, 0x20, 0xf8, 0x08, 0x13, 0x0f, - 0x02, 0x84, 0x3f, 0xff, 0x13, 0x0c, 0x10, 0x0e, 0x88, 0x04, 0x01, 0xa8, 0x16, 0x0b, 0x88, 0x20, - 0xf8, 0x0c, 0x01, 0xaa, 0x16, 0x07, 0x88, 0x20, 0xf8, 0x08, 0x01, 0xa6, 0x16, 0x03, 0xd9, 0x60, - 0xee, 0xa8, 0x10, 0x88, 0xc8, 0x0c, 0x01, 0x6a, 0x10, 0xa8, 0x01, 0x43, 0x20, 0x00, 0x16, 0x07, - 0x07, 0x85, 0x01, 0x04, 0x01, 0x55, 0x21, 0x00, 0x16, 0x03, 0x07, 0x95, 0xde, 0x8c, 0x04, 0x5b, - 0x01, 0x55, 0x01, 0x00, 0x16, 0xfc, 0xc1, 0x15, 0x01, 0xc4, 0xff, 0x00, 0x01, 0x84, 0x04, 0x80, - 0xc5, 0x44, 0x01, 0x55, 0x20, 0x00, 0x13, 0xf1, 0x01, 0xe0, 0x07, 0x78, 0x80, 0x00, 0x04, 0x5b, - 0x03, 0x00, 0x00, 0x02, 0xc2, 0x0b, 0xc3, 0x20, 0x05, 0xf4, 0x16, 0x08, 0xc3, 0x20, 0x08, 0x70, - 0x01, 0x0c, 0x00, 0xff, 0x13, 0x1a, 0x01, 0x4c, 0x04, 0x00, 0x13, 0x17, 0xc2, 0xa8, 0x00, 0x0a, - 0x01, 0x4a, 0x00, 0x10, 0x16, 0x46, 0x01, 0x4a, 0x80, 0x00, 0x16, 0x19, 0xc3, 0x08, 0x06, 0xa0, - 0x9a, 0xf4, 0xc2, 0x0c, 0xc3, 0x20, 0x05, 0xf4, 0x16, 0x12, 0xc3, 0x20, 0x08, 0x70, 0x01, 0x0c, - 0x00, 0xff, 0x13, 0x03, 0x01, 0x4c, 0x04, 0x00, 0x16, 0x0a, 0x01, 0x68, 0x00, 0x0a, 0x00, 0x10, - 0x13, 0x03, 0x01, 0x0c, 0x01, 0x00, 0x16, 0x2d, 0x06, 0xa0, 0xbc, 0x40, 0x10, 0x04, 0x07, 0x87, - 0x05, 0xf0, 0x06, 0xa0, 0xc2, 0x8a, 0x01, 0xe0, 0x08, 0x70, 0x02, 0x00, 0x07, 0xa0, 0x00, 0x14, - 0x00, 0xe0, 0x07, 0xa0, 0x00, 0x16, 0x98, 0x4e, 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, 0xa8, 0xc3, - 0xa9, 0xa0, 0xcf, 0xec, 0xe9, 0xe3, 0xef, 0xed, 0xa0, 0xb1, 0xb9, 0xb9, 0xb6, 0x00, 0x03, 0x00, - 0x00, 0x02, 0xc2, 0x20, 0x08, 0x70, 0x16, 0x0c, 0xd8, 0x20, 0x09, 0x2e, 0x01, 0x80, 0xc8, 0x2b, - 0x00, 0x06, 0x01, 0x8c, 0x07, 0xa0, 0x09, 0x16, 0x00, 0x04, 0xc8, 0x0b, 0x05, 0xf4, 0x10, 0x05, - 0xc2, 0x0b, 0x07, 0x87, 0x05, 0xf0, 0x06, 0xa0, 0xc2, 0x44, 0x01, 0xe0, 0x08, 0x70, 0x02, 0x00, - 0x07, 0xa0, 0x00, 0x14, 0x00, 0xe0, 0x07, 0xa0, 0x00, 0x16, 0x98, 0x4e, 0x03, 0x90, 0xff, 0xff, - 0x03, 0x80, 0xc2, 0x20, 0x05, 0xf4, 0x13, 0x02, 0x04, 0x60, 0xbc, 0x04, 0x02, 0xa8, 0xc8, 0x08, - 0x08, 0x84, 0x02, 0xe0, 0x08, 0x6a, 0x01, 0x03, 0x00, 0xff, 0x13, 0x22, 0x01, 0x43, 0x04, 0x00, - 0x13, 0x1f, 0x01, 0xe0, 0x01, 0x9c, 0x40, 0x00, 0x0b, 0xab, 0x0b, 0xab, 0x01, 0x60, 0x01, 0x9c, - 0x40, 0x00, 0x16, 0x16, 0xc8, 0x04, 0x01, 0x6a, 0xc2, 0xe0, 0xf8, 0x02, 0x11, 0x0f, 0xc8, 0x09, - 0x01, 0x6a, 0xc8, 0x04, 0xf8, 0x00, 0xc2, 0x45, 0xc1, 0x60, 0x08, 0x96, 0x02, 0x85, 0x97, 0xf6, - 0x16, 0x02, 0x06, 0xa0, 0x99, 0x16, 0x02, 0x43, 0x03, 0x00, 0x10, 0x02, 0x01, 0xc3, 0x04, 0x00, - 0x00, 0x9d, 0x04, 0x5b, 0x03, 0x00, 0x00, 0x02, 0x07, 0x87, 0x05, 0xf0, 0xc2, 0xcb, 0x16, 0x0f, - 0x06, 0xa0, 0x9a, 0xf4, 0x01, 0xe0, 0x08, 0x70, 0x01, 0x00, 0x07, 0xa0, 0x00, 0x14, 0x00, 0xe0, - 0x07, 0xa0, 0x00, 0x16, 0x98, 0x4e, 0xcb, 0x60, 0x05, 0xf4, 0x00, 0x02, 0x03, 0x80, 0xc2, 0x20, - 0x08, 0x70, 0x01, 0x88, 0x01, 0x00, 0xc8, 0x08, 0x08, 0x70, 0x01, 0x08, 0x04, 0x00, 0x16, 0x03, - 0x01, 0x08, 0x00, 0xff, 0x16, 0x08, 0xc2, 0x20, 0x05, 0xf4, 0x16, 0x05, 0xc2, 0x17, 0x13, 0x04, - 0xc5, 0xd8, 0x06, 0xa0, 0xbc, 0x40, 0x03, 0x80, 0x02, 0xe0, 0x08, 0x6a, 0x01, 0x83, 0x06, 0x00, - 0x16, 0x05, 0xc1, 0x42, 0x13, 0x08, 0xc0, 0xc0, 0xc1, 0x01, 0x04, 0xc2, 0xd8, 0x20, 0x09, 0x2e, - 0x01, 0x80, 0xc8, 0x04, 0x01, 0x8c, 0x02, 0xe0, 0x00, 0xc0, 0x07, 0xa0, 0x00, 0x14, 0x08, 0x6a, - 0xc8, 0x20, 0x08, 0x96, 0x00, 0x16, 0x03, 0x80, 0xc8, 0x01, 0x01, 0x6a, 0x13, 0x05, 0xc2, 0xe0, - 0xf8, 0x02, 0x11, 0x02, 0x06, 0xa0, 0x97, 0xb6, 0x01, 0x60, 0x01, 0x9c, 0x00, 0x40, 0x13, 0x01, - 0x03, 0x80, 0xd8, 0x20, 0x09, 0x2f, 0x01, 0x83, 0xc0, 0x41, 0x13, 0x04, 0xc8, 0x01, 0x01, 0x8a, - 0xc8, 0x01, 0x09, 0x18, 0x07, 0x85, 0x00, 0x43, 0x01, 0x20, 0x0c, 0x06, 0x00, 0xc0, 0x16, 0x20, - 0xc2, 0x20, 0x0c, 0x02, 0x06, 0x08, 0x01, 0x08, 0xfe, 0x03, 0x16, 0x1a, 0x07, 0x8a, 0x00, 0x24, - 0x62, 0xa0, 0x0c, 0x04, 0xc8, 0x0a, 0x0c, 0x04, 0x07, 0x87, 0x06, 0x30, 0x01, 0xe7, 0x00, 0x04, - 0x00, 0x40, 0x04, 0xd7, 0x02, 0x27, 0x00, 0x0c, 0xc2, 0x57, 0x16, 0x04, 0xcd, 0xc5, 0xc5, 0xc5, - 0x04, 0x60, 0xb9, 0xc0, 0x05, 0xc7, 0xc8, 0x17, 0x01, 0x6a, 0xc8, 0x05, 0xf8, 0x00, 0x10, 0xf7, - 0x04, 0x60, 0xf8, 0xfe, 0x03, 0x00, 0x00, 0x02, 0xc3, 0x20, 0x01, 0x8a, 0x98, 0x20, 0xe0, 0x10, - 0x01, 0x83, 0x13, 0xba, 0x01, 0x20, 0x01, 0x9c, 0x00, 0x40, 0x13, 0x02, 0x06, 0xa0, 0xd7, 0xd8, - 0xc1, 0x41, 0x83, 0x05, 0x16, 0x01, 0x03, 0x80, 0xc8, 0x05, 0x01, 0x6a, 0xc2, 0x20, 0xf8, 0x02, - 0x01, 0x40, 0x00, 0x40, 0x16, 0x12, 0x88, 0x01, 0x09, 0x18, 0x16, 0x07, 0xc8, 0x20, 0x09, 0x1a, - 0x09, 0x18, 0x04, 0xe0, 0x09, 0x1a, 0x01, 0xc0, 0x00, 0x04, 0x01, 0x80, 0x40, 0x40, 0x01, 0x20, - 0xf8, 0x06, 0x00, 0xc0, 0x16, 0x02, 0x01, 0xc0, 0x40, 0x00, 0x01, 0x48, 0x01, 0x00, 0x16, 0x55, - 0x01, 0xc0, 0x00, 0x40, 0x01, 0x00, 0x40, 0x04, 0x13, 0x50, 0x01, 0x40, 0x40, 0x00, 0x16, 0x48, - 0x01, 0xa0, 0x07, 0x78, 0x40, 0x00, 0x01, 0x80, 0x40, 0x00, 0x01, 0x48, 0x00, 0x01, 0x16, 0x3d, - 0x01, 0x80, 0x00, 0x04, 0xc1, 0x41, 0xc0, 0x60, 0xf8, 0x00, 0x04, 0xe0, 0xf8, 0x00, 0x07, 0x8b, - 0x03, 0xea, 0x62, 0xe0, 0xf8, 0x04, 0xc8, 0x0b, 0xf8, 0x04, 0x85, 0x05, 0x16, 0x02, 0xc5, 0x01, - 0x10, 0x10, 0xc8, 0x14, 0x01, 0x6a, 0x88, 0x05, 0xf8, 0x00, 0x13, 0x06, 0xc8, 0x20, 0xf8, 0x00, - 0x01, 0x6a, 0x88, 0x05, 0xf8, 0x00, 0x16, 0xfa, 0xc8, 0x01, 0xf8, 0x00, 0x16, 0x02, 0xc0, 0xa0, - 0x01, 0x6a, 0x01, 0x08, 0xfe, 0x00, 0x16, 0x4a, 0xc8, 0x05, 0x01, 0x6a, 0x07, 0x87, 0x06, 0x30, - 0x01, 0xe7, 0x00, 0x04, 0x00, 0x40, 0x04, 0xd7, 0x02, 0x27, 0x00, 0x0c, 0xa1, 0x45, 0xc9, 0x60, - 0xf8, 0x00, 0x0c, 0x32, 0x04, 0xe0, 0xf8, 0x00, 0x09, 0x15, 0xc2, 0x57, 0x16, 0x31, 0xcd, 0xc5, - 0xc5, 0xc5, 0x01, 0xc0, 0x00, 0x20, 0xc1, 0x41, 0x10, 0x0e, 0x01, 0x40, 0x00, 0x04, 0x16, 0x05, - 0x01, 0x80, 0x00, 0x04, 0x01, 0xe0, 0xf8, 0x02, 0x40, 0x00, 0xc1, 0x60, 0xf8, 0x00, 0x01, 0x00, - 0x40, 0x00, 0x16, 0x01, 0xc0, 0x45, 0x83, 0x05, 0x16, 0x87, 0xc2, 0xe0, 0x09, 0x18, 0x16, 0x10, - 0x01, 0x00, 0x00, 0x04, 0x16, 0x0d, 0x98, 0x20, 0xe0, 0x10, 0x01, 0x83, 0x13, 0x09, 0x07, 0x8b, - 0xd7, 0x5e, 0x01, 0x40, 0x00, 0x40, 0x13, 0x02, 0x07, 0x8b, 0xd7, 0xa4, 0xc8, 0x0b, 0x00, 0x12, - 0x01, 0x00, 0x00, 0x20, 0x16, 0x01, 0x03, 0x80, 0x01, 0x80, 0x00, 0x20, 0x04, 0x60, 0xb9, 0xc0, - 0x05, 0xc7, 0xc8, 0x17, 0x01, 0x6a, 0xc8, 0x05, 0xf8, 0x00, 0x10, 0xca, 0xc1, 0x81, 0x06, 0xa0, - 0xf9, 0x32, 0xc1, 0x46, 0x10, 0xd8, 0x05, 0xa0, 0x09, 0x32, 0xc0, 0x41, 0x16, 0x01, 0x03, 0x80, - 0xc3, 0x20, 0x00, 0x12, 0x04, 0x5c, 0x03, 0x00, 0x00, 0x00, 0x03, 0xb0, 0x10, 0xff, 0x03, 0x80, - 0x20, 0x00, 0x9d, 0xd2, 0x02, 0x2f, 0x00, 0x00, 0x20, 0x00, 0xc7, 0x46, 0x00, 0x88, 0xc0, 0x60, - 0x05, 0xee, 0x02, 0x21, 0x03, 0xe8, 0x01, 0x20, 0x01, 0x02, 0x00, 0x06, 0x13, 0x04, 0x01, 0x20, - 0x01, 0x00, 0x08, 0x00, 0x13, 0x04, 0x88, 0x01, 0x05, 0xee, 0x16, 0xf5, 0x10, 0x35, 0x07, 0x81, - 0x01, 0x0a, 0xcc, 0x4c, 0xcc, 0x4c, 0xcc, 0x4e, 0xcc, 0x4f, 0x07, 0xb1, 0x00, 0x40, 0xc4, 0x4d, - 0xc8, 0x0a, 0x01, 0x00, 0x04, 0x5b, 0xc0, 0x60, 0x05, 0xee, 0x02, 0x21, 0x03, 0xe8, 0x01, 0x20, - 0x01, 0x02, 0x00, 0x06, 0x13, 0x04, 0x01, 0x20, 0x01, 0x00, 0x08, 0x00, 0x13, 0x04, 0x88, 0x01, - 0x05, 0xee, 0x16, 0xf5, 0x10, 0x19, 0x07, 0x81, 0x01, 0x0a, 0xcc, 0x4c, 0xcc, 0x4c, 0xcc, 0x4e, - 0xcc, 0x4f, 0x07, 0xb1, 0x00, 0x40, 0xc4, 0x4d, 0xc8, 0x0a, 0x01, 0x00, 0xc0, 0x60, 0x05, 0xee, - 0x02, 0x21, 0x03, 0xe8, 0x01, 0x20, 0x01, 0x02, 0x00, 0x06, 0x13, 0x01, 0x04, 0x5b, 0x88, 0x01, - 0x05, 0xee, 0x16, 0xf8, 0x10, 0x01, 0x20, 0x00, 0xce, 0x3e, 0x0a, 0x32, 0x07, 0x8d, 0x10, 0x00, - 0x20, 0x0d, 0x16, 0x28, 0x07, 0x8d, 0x08, 0x00, 0x01, 0x40, 0x02, 0x00, 0x13, 0x23, 0x01, 0xc0, - 0x02, 0x00, 0x07, 0x8f, 0x97, 0xf6, 0xc3, 0x8e, 0x11, 0x02, 0x07, 0x8f, 0x97, 0x6a, 0xc8, 0x0f, - 0x08, 0x96, 0xc3, 0x60, 0x00, 0x16, 0x02, 0x8d, 0x98, 0x4e, 0x13, 0x02, 0xc8, 0x0f, 0x00, 0x16, - 0x07, 0x8f, 0x03, 0xf8, 0x02, 0x4e, 0x40, 0x00, 0xc8, 0x0e, 0x08, 0x98, 0xc8, 0x0e, 0x08, 0x9a, - 0x13, 0x05, 0x07, 0x8e, 0xee, 0x60, 0xc3, 0xfe, 0xc8, 0x0e, 0x08, 0x90, 0xc8, 0x0f, 0x08, 0x62, - 0x04, 0x20, 0xea, 0x7a, 0x04, 0x5b, 0x07, 0x8d, 0x10, 0x00, 0x20, 0x0d, 0x16, 0xfb, 0x07, 0x8d, - 0x08, 0x00, 0x01, 0x40, 0x04, 0x00, 0x13, 0xf6, 0x07, 0x8d, 0x40, 0x00, 0x01, 0x0e, 0x00, 0x01, - 0x16, 0xf1, 0x01, 0xc0, 0x04, 0x00, 0x06, 0x0f, 0x01, 0x8f, 0x80, 0x00, 0xc8, 0x0f, 0x08, 0x8c, - 0xc3, 0xce, 0x01, 0x8e, 0xe0, 0x00, 0x05, 0x0e, 0xc8, 0x0e, 0x08, 0x4c, 0xa8, 0x0e, 0x08, 0x8c, - 0x09, 0xdf, 0x02, 0x4f, 0x00, 0x04, 0x02, 0x2f, 0x03, 0xf0, 0xc8, 0x0f, 0x08, 0x8a, 0x01, 0x85, - 0x00, 0x40, 0x04, 0x20, 0xea, 0x7a, 0xc0, 0x41, 0x13, 0xfe, 0x03, 0x00, 0x00, 0x02, 0x88, 0x01, - 0x00, 0xe2, 0x13, 0x36, 0xc8, 0x01, 0x01, 0x6c, 0x01, 0x20, 0xfc, 0x06, 0x00, 0xc0, 0x13, 0x30, - 0xc0, 0xe0, 0xfc, 0x02, 0xc1, 0x81, 0x07, 0x20, 0xfc, 0x02, 0x07, 0xa0, 0xfc, 0x04, 0x03, 0xee, - 0xc8, 0x04, 0xfc, 0x76, 0xc8, 0x04, 0xfc, 0xe6, 0xc8, 0x04, 0xfd, 0x56, 0xc8, 0x04, 0xfd, 0xc6, - 0xc8, 0x04, 0xfe, 0x36, 0xc8, 0x04, 0xfe, 0xa6, 0xc8, 0x04, 0xff, 0x16, 0xc8, 0x04, 0xff, 0x86, - 0x07, 0x8e, 0xfc, 0x00, 0xc0, 0x5e, 0x04, 0xde, 0xc8, 0x20, 0x00, 0xe4, 0x01, 0x6c, 0xc8, 0x06, - 0xfc, 0x00, 0xc8, 0x06, 0x00, 0xe4, 0x01, 0x43, 0x01, 0x00, 0x13, 0x0a, 0x03, 0x00, 0x00, 0x0f, - 0x03, 0x00, 0x00, 0x02, 0x88, 0x01, 0x00, 0xe2, 0x13, 0xf9, 0xc8, 0x01, 0x01, 0x6c, 0x10, 0xd0, - 0x03, 0x00, 0x00, 0x0f, 0x01, 0x60, 0x07, 0x58, 0x14, 0x00, 0x16, 0xbf, 0x07, 0x83, 0xfc, 0x76, - 0x02, 0xe0, 0x08, 0x5c, 0x04, 0x60, 0x91, 0x6a, 0x02, 0x2d, 0x00, 0x06, 0xc0, 0xa0, 0x08, 0x4c, - 0x04, 0x60, 0xd3, 0x36, 0x01, 0x00, 0x07, 0xff, 0x16, 0x11, 0x01, 0xc0, 0x07, 0xff, 0x01, 0x00, - 0x20, 0x00, 0x16, 0x29, 0x01, 0xc0, 0x20, 0x00, 0x07, 0x8f, 0x08, 0x92, 0xc7, 0xc1, 0xc8, 0x0f, - 0x00, 0xe8, 0xc0, 0x60, 0x05, 0xf8, 0x04, 0xe0, 0x05, 0xf8, 0x10, 0x1f, 0x01, 0x40, 0x20, 0x00, - 0x16, 0x0b, 0xc0, 0x60, 0x05, 0xf8, 0x16, 0xf7, 0x01, 0x80, 0x20, 0x00, 0x07, 0xa0, 0x00, 0xe8, - 0x07, 0x7a, 0xc0, 0x60, 0x08, 0x92, 0x10, 0x0f, 0xc3, 0xdd, 0x13, 0x05, 0x03, 0x90, 0x00, 0x17, - 0x06, 0x9b, 0x02, 0x2d, 0x00, 0x06, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, - 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x24, 0x40, 0x13, 0xcd, 0xc8, 0x01, 0x01, 0x6c, 0x88, 0x01, - 0x00, 0xe2, 0x16, 0x24, 0xc3, 0xdd, 0x16, 0xea, 0x84, 0xc4, 0x13, 0xed, 0x01, 0x20, 0xfc, 0x06, - 0x00, 0xc0, 0x16, 0x53, 0x01, 0xc0, 0x40, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, - 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x01, 0x40, 0x40, 0x00, 0x16, 0xe4, 0xc3, 0xdd, - 0x13, 0xf3, 0x03, 0x90, 0x00, 0x17, 0x06, 0x9b, 0x02, 0x2d, 0x00, 0x06, 0xc8, 0x01, 0x01, 0x6c, - 0x10, 0xeb, 0x07, 0x86, 0x03, 0xf4, 0x61, 0x89, 0x04, 0x60, 0xd4, 0x28, 0xc0, 0xe0, 0xfc, 0x02, - 0x13, 0xf8, 0xc1, 0xa0, 0x08, 0x8a, 0x61, 0x89, 0x61, 0xa0, 0xfc, 0x04, 0x15, 0x0a, 0x04, 0x60, - 0xd2, 0x78, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, - 0x13, 0xf8, 0xcd, 0x4a, 0xcd, 0x46, 0xcd, 0x47, 0xcd, 0x48, 0xc9, 0x49, 0x00, 0x02, 0xc5, 0x41, - 0x07, 0xa5, 0xff, 0xee, 0xe0, 0x81, 0x02, 0x25, 0xff, 0xf8, 0x04, 0x60, 0xd2, 0x74, 0x03, 0x90, - 0x00, 0x17, 0x06, 0x9b, 0x02, 0x2d, 0x00, 0x06, 0xc8, 0x01, 0x01, 0x6c, 0x03, 0x00, 0x00, 0x0f, - 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x88, 0x01, 0x00, 0xe2, - 0x16, 0xcd, 0xc3, 0xdd, 0x16, 0xec, 0x84, 0xc4, 0x13, 0xf1, 0x61, 0x83, 0x02, 0x23, 0x00, 0x70, - 0x84, 0xc4, 0x16, 0xfc, 0xa1, 0x83, 0xcd, 0x4a, 0xcd, 0x46, 0xcd, 0x47, 0xcd, 0x48, 0xc9, 0x49, - 0x00, 0x02, 0xc5, 0x41, 0x07, 0xa5, 0xff, 0xee, 0xe0, 0x81, 0x02, 0x25, 0xff, 0xf8, 0x62, 0x86, - 0x15, 0x43, 0xa1, 0x8a, 0xa2, 0x46, 0xa0, 0x86, 0x17, 0x21, 0x07, 0x8e, 0x01, 0x04, 0x03, 0x00, - 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x05, 0xa0, - 0x10, 0x80, 0x01, 0x5e, 0x21, 0x00, 0x16, 0x03, 0x07, 0x9e, 0xde, 0x8c, 0x10, 0x11, 0x01, 0x5e, - 0x01, 0x00, 0x16, 0x0e, 0xc3, 0xde, 0x01, 0xcf, 0xff, 0x00, 0x01, 0x8f, 0x04, 0x80, 0xc7, 0x8f, - 0x01, 0x5e, 0x20, 0x00, 0x13, 0xf1, 0x01, 0xc0, 0x80, 0x00, 0x10, 0x02, 0x05, 0xa0, 0x10, 0x80, - 0xc1, 0x8a, 0x88, 0x02, 0x08, 0x8c, 0x15, 0x3f, 0xc2, 0xac, 0x00, 0x04, 0x13, 0x3e, 0x01, 0x8a, - 0x80, 0x00, 0xc1, 0xfc, 0xc2, 0x3c, 0x04, 0xfc, 0x02, 0x8c, 0x11, 0xe8, 0x16, 0x02, 0x07, 0x8c, - 0x11, 0x28, 0x05, 0x06, 0x13, 0xa3, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, - 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x10, 0xaf, 0xa2, 0x46, 0xa2, 0x06, 0x17, 0x01, 0x05, 0x87, - 0xa0, 0x86, 0x04, 0xc6, 0x17, 0x93, 0x07, 0x8e, 0x01, 0x04, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, - 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x01, 0x5e, 0x21, 0x00, 0x16, 0x03, - 0x07, 0x9e, 0xde, 0x8c, 0x10, 0x8b, 0x01, 0x5e, 0x01, 0x00, 0x16, 0x88, 0xc3, 0xde, 0x01, 0xcf, - 0xff, 0x00, 0x01, 0x8f, 0x04, 0x80, 0xc7, 0x8f, 0x01, 0x5e, 0x20, 0x00, 0x13, 0xf1, 0x01, 0xc0, - 0x80, 0x00, 0x04, 0x60, 0xd0, 0x9e, 0x04, 0x60, 0xd5, 0xa0, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, - 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0xc2, 0xac, 0x00, 0x04, 0x16, 0xb7, - 0xc3, 0xdd, 0x13, 0xf3, 0x03, 0x90, 0x01, 0xb7, 0x06, 0x9b, 0x02, 0x2d, 0x00, 0x06, 0xc8, 0x01, - 0x01, 0x6c, 0x10, 0xeb, 0xa1, 0x8a, 0xa2, 0x46, 0xa0, 0x86, 0x17, 0x21, 0x07, 0x8e, 0x01, 0x04, - 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, - 0x05, 0xa0, 0x10, 0x80, 0x01, 0x5e, 0x21, 0x00, 0x16, 0x03, 0x07, 0x9e, 0xde, 0x8c, 0x10, 0x11, - 0x01, 0x5e, 0x01, 0x00, 0x16, 0x0e, 0xc3, 0xde, 0x01, 0xcf, 0xff, 0x00, 0x01, 0x8f, 0x04, 0x80, - 0xc7, 0x8f, 0x01, 0x5e, 0x20, 0x00, 0x13, 0xf1, 0x01, 0xc0, 0x80, 0x00, 0x10, 0x02, 0x05, 0xa0, - 0x10, 0x80, 0xc1, 0x8a, 0x88, 0x02, 0x08, 0x8c, 0x15, 0x15, 0xc2, 0xac, 0x00, 0x04, 0x16, 0x14, - 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, - 0xc3, 0xdd, 0x13, 0xf3, 0x03, 0x90, 0x01, 0xb7, 0x06, 0x9b, 0x02, 0x2d, 0x00, 0x06, 0xc8, 0x01, - 0x01, 0x6c, 0x10, 0xeb, 0x04, 0x60, 0xd5, 0xa0, 0x01, 0x8a, 0x80, 0x00, 0xc1, 0xfc, 0xc2, 0x3c, - 0x04, 0xfc, 0x02, 0x8c, 0x11, 0xe8, 0x16, 0x02, 0x07, 0x8c, 0x11, 0x28, 0x05, 0x06, 0x04, 0x60, - 0xd0, 0x54, 0x62, 0x86, 0x17, 0xaf, 0xa1, 0x82, 0xc0, 0xa0, 0x08, 0x4c, 0x61, 0x82, 0xc3, 0xe0, - 0x10, 0x82, 0x02, 0x4f, 0x00, 0x1f, 0x0a, 0x2f, 0xcb, 0xc6, 0x10, 0xa8, 0xcb, 0xc3, 0x10, 0xaa, - 0xc1, 0x81, 0x07, 0x20, 0xfc, 0x02, 0x07, 0xa0, 0xfc, 0x04, 0x03, 0xee, 0x07, 0x83, 0xfc, 0x76, - 0x07, 0x89, 0x00, 0x06, 0xc2, 0xac, 0x00, 0x04, 0x13, 0x08, 0xc1, 0xfc, 0xc2, 0x3c, 0x04, 0xfc, - 0x02, 0x8c, 0x11, 0xe8, 0x16, 0x02, 0x07, 0x8c, 0x11, 0x28, 0x07, 0x8e, 0x01, 0x04, 0x03, 0x00, - 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x05, 0xa0, - 0x10, 0x82, 0x01, 0x5e, 0x21, 0x00, 0x16, 0x3b, 0x07, 0x9e, 0xde, 0x8c, 0x05, 0xa0, 0x10, 0x80, - 0xc4, 0xc4, 0xc8, 0x04, 0xfc, 0xe6, 0xc8, 0x04, 0xfd, 0x56, 0xc8, 0x04, 0xfd, 0xc6, 0xc8, 0x04, - 0xfe, 0x36, 0xc8, 0x04, 0xfe, 0xa6, 0xc8, 0x04, 0xff, 0x16, 0xc8, 0x04, 0xff, 0x86, 0x07, 0x8e, - 0xfc, 0x00, 0xc0, 0x5e, 0x04, 0xde, 0xc8, 0x20, 0x00, 0xe4, 0x01, 0x6c, 0xc3, 0xe0, 0x00, 0xe2, - 0x13, 0x40, 0xc7, 0x86, 0xc8, 0x06, 0x00, 0xe4, 0x04, 0xc6, 0xc2, 0x8a, 0x15, 0x31, 0x13, 0x0a, - 0x05, 0xa0, 0x10, 0x80, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, - 0x01, 0x03, 0x13, 0xf8, 0xc2, 0xac, 0x00, 0x04, 0x16, 0x19, 0xc3, 0xdd, 0x13, 0xf3, 0x03, 0x90, - 0x01, 0xb7, 0x06, 0x9b, 0x02, 0x2d, 0x00, 0x06, 0xc8, 0x01, 0x01, 0x6c, 0x10, 0xeb, 0x01, 0x5e, - 0x01, 0x00, 0x16, 0xc4, 0xc3, 0xde, 0x01, 0xcf, 0xff, 0x00, 0x01, 0x8f, 0x04, 0x80, 0xc7, 0x8f, - 0x01, 0x5e, 0x20, 0x00, 0x13, 0xb9, 0x01, 0xc0, 0x80, 0x00, 0x10, 0xb8, 0xc1, 0xfc, 0xc2, 0x3c, - 0x04, 0xfc, 0x02, 0x8c, 0x11, 0xe8, 0x16, 0x02, 0x07, 0x8c, 0x11, 0x28, 0xc2, 0x8a, 0x11, 0xd0, - 0xc3, 0xdd, 0x16, 0x02, 0x04, 0x60, 0xcf, 0xe8, 0x03, 0x90, 0x00, 0x17, 0x06, 0x9b, 0x04, 0x60, - 0xcf, 0xd4, 0x07, 0x8e, 0xd3, 0x1a, 0xc8, 0x20, 0x08, 0x94, 0x01, 0x6a, 0x16, 0x03, 0xc8, 0x06, - 0x08, 0x94, 0x04, 0x5e, 0xc8, 0x06, 0xf8, 0x00, 0xc8, 0x06, 0x00, 0xe4, 0xc1, 0xa0, 0x08, 0x94, - 0x98, 0x20, 0xe0, 0x10, 0x01, 0x83, 0x16, 0x19, 0x01, 0xe0, 0x01, 0x9c, 0x00, 0x40, 0x07, 0x8f, - 0x03, 0xe8, 0x0b, 0x8f, 0x0b, 0x8f, 0x06, 0x0f, 0x13, 0x1a, 0x01, 0x60, 0x01, 0x9c, 0x00, 0x40, - 0x16, 0xf8, 0x01, 0x60, 0x0c, 0x02, 0x01, 0x00, 0x13, 0x12, 0xd8, 0x20, 0x09, 0x2f, 0x01, 0x83, - 0x07, 0xa0, 0x0c, 0x02, 0x80, 0x00, 0x0b, 0x8f, 0x0b, 0x8f, 0xc8, 0x06, 0x01, 0x8a, 0xc8, 0x06, - 0x09, 0x18, 0x07, 0xa0, 0x00, 0x12, 0x9c, 0x56, 0x01, 0xe0, 0x00, 0xe0, 0x00, 0x40, 0x04, 0xe0, - 0x08, 0x94, 0xc8, 0x06, 0x00, 0xe2, 0x01, 0x40, 0x20, 0x00, 0x13, 0x07, 0xc0, 0x41, 0x13, 0x03, - 0xc8, 0x06, 0xfc, 0x00, 0x04, 0x5e, 0xc0, 0x46, 0x04, 0x5e, 0xc3, 0xe0, 0x08, 0x92, 0x16, 0xf8, - 0xc8, 0x06, 0x08, 0x92, 0x04, 0x5e, 0xcd, 0x4a, 0xcd, 0x46, 0xcd, 0x47, 0xcd, 0x48, 0xc9, 0x49, - 0x00, 0x02, 0xc5, 0x41, 0x07, 0xa5, 0xff, 0xee, 0xe0, 0x81, 0x02, 0x25, 0xff, 0xf8, 0x62, 0x86, - 0x15, 0x57, 0xa1, 0x8a, 0xa2, 0x46, 0xa0, 0x86, 0x17, 0x21, 0x07, 0x8e, 0x01, 0x04, 0x03, 0x00, - 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x05, 0xa0, - 0x10, 0x80, 0x01, 0x5e, 0x21, 0x00, 0x16, 0x03, 0x07, 0x9e, 0xde, 0x8c, 0x10, 0x11, 0x01, 0x5e, - 0x01, 0x00, 0x16, 0x0e, 0xc3, 0xde, 0x01, 0xcf, 0xff, 0x00, 0x01, 0x8f, 0x04, 0x80, 0xc7, 0x8f, - 0x01, 0x5e, 0x20, 0x00, 0x13, 0xf1, 0x01, 0xc0, 0x80, 0x00, 0x10, 0x02, 0x05, 0xa0, 0x10, 0x80, - 0xc1, 0x8a, 0x88, 0x02, 0x08, 0x8c, 0x15, 0x15, 0xc2, 0xac, 0x00, 0x04, 0x16, 0x14, 0x03, 0x00, - 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0xc3, 0xdd, - 0x13, 0xf3, 0x03, 0x90, 0x01, 0xb7, 0x06, 0x9b, 0x02, 0x2d, 0x00, 0x06, 0xc8, 0x01, 0x01, 0x6c, - 0x10, 0xeb, 0x04, 0x60, 0xd5, 0xa0, 0x01, 0x8a, 0x80, 0x00, 0xc1, 0xfc, 0xc2, 0x3c, 0x04, 0xfc, - 0x02, 0x8c, 0x11, 0xe8, 0x16, 0x02, 0x07, 0x8c, 0x11, 0x28, 0x05, 0x06, 0x13, 0x09, 0x03, 0x00, - 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xa0, 0x01, 0x03, 0x13, 0xf8, 0x10, 0x9b, - 0xa2, 0x06, 0x17, 0x01, 0x05, 0x87, 0xa0, 0x86, 0x17, 0x1e, 0x07, 0x8e, 0x01, 0x04, 0x03, 0x00, - 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0x01, 0x5e, - 0x21, 0x00, 0x16, 0x03, 0x07, 0x9e, 0xde, 0x8c, 0x10, 0x0e, 0x01, 0x5e, 0x01, 0x00, 0x16, 0x0b, - 0xc3, 0xde, 0x01, 0xcf, 0xff, 0x00, 0x01, 0x8f, 0x04, 0x80, 0xc7, 0x8f, 0x01, 0x5e, 0x20, 0x00, - 0x13, 0xf1, 0x01, 0xc0, 0x80, 0x00, 0xc1, 0x81, 0x07, 0x20, 0xfc, 0x02, 0x07, 0x83, 0xfc, 0x76, - 0x07, 0x89, 0x00, 0x06, 0x07, 0x8e, 0xfc, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, - 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, 0x13, 0xf8, 0xc4, 0xc4, 0xc8, 0x04, 0xfc, 0xe6, 0xc8, 0x04, - 0xfd, 0x56, 0xc8, 0x04, 0xfd, 0xc6, 0xc8, 0x04, 0xfe, 0x36, 0xc8, 0x04, 0xfe, 0xa6, 0xc8, 0x04, - 0xff, 0x16, 0xc8, 0x04, 0xff, 0x86, 0xc0, 0x5e, 0x04, 0xde, 0xc8, 0x20, 0x00, 0xe4, 0x01, 0x6c, - 0xc3, 0xe0, 0x00, 0xe2, 0x13, 0x08, 0xc7, 0x86, 0xc8, 0x06, 0x00, 0xe4, 0x04, 0xc6, 0xc8, 0x01, - 0x01, 0x6c, 0x04, 0x60, 0xd0, 0x9e, 0x07, 0x8e, 0xd5, 0x8e, 0x04, 0x60, 0xd3, 0x98, 0x62, 0x46, - 0x60, 0x86, 0x03, 0x00, 0x00, 0x0f, 0x03, 0xd0, 0x03, 0x00, 0x00, 0x02, 0xd3, 0xe0, 0x01, 0x03, - 0x13, 0xf8, 0x88, 0x01, 0x00, 0xe2, 0x16, 0x0a, 0xc3, 0xdd, 0x13, 0xf3, 0x03, 0x90, 0x00, 0x17, - 0x06, 0x9b, 0x02, 0x2d, 0x00, 0x06, 0xc8, 0x01, 0x01, 0x6c, 0x10, 0xeb, 0xc0, 0xe0, 0xfc, 0x02, - 0x13, 0x09, 0xc1, 0xa0, 0x08, 0x8a, 0x61, 0x89, 0x61, 0xa0, 0xfc, 0x04, 0x06, 0x20, 0x10, 0x80, - 0x04, 0x60, 0xd2, 0x78, 0x07, 0x86, 0x03, 0xf4, 0x61, 0x89, 0xa0, 0x86, 0x15, 0x02, 0x07, 0x82, - 0x7f, 0xff, 0xc1, 0x81, 0x07, 0x20, 0xfc, 0x02, 0x07, 0xa0, 0xfc, 0x04, 0x03, 0xee, 0x07, 0x83, - 0xfc, 0x76, 0x07, 0x89, 0x00, 0x06, 0x07, 0x8e, 0xfc, 0x00, 0xc4, 0xc4, 0xc8, 0x04, 0xfc, 0xe6, - 0xc8, 0x04, 0xfd, 0x56, 0xc8, 0x04, 0xfd, 0xc6, 0xc8, 0x04, 0xfe, 0x36, 0xc8, 0x04, 0xfe, 0xa6, - 0xc8, 0x04, 0xff, 0x16, 0xc8, 0x04, 0xff, 0x86, 0xc0, 0x5e, 0x04, 0xde, 0xc8, 0x20, 0x00, 0xe4, - 0x01, 0x6c, 0xc3, 0xe0, 0x00, 0xe2, 0x13, 0x07, 0xc7, 0x86, 0xc8, 0x06, 0x00, 0xe4, 0x04, 0xc6, - 0xc8, 0x01, 0x01, 0x6c, 0x10, 0xae, 0x07, 0x8e, 0xd6, 0x40, 0x04, 0x60, 0xd3, 0x98, 0xc1, 0x60, - 0xf8, 0x00, 0x83, 0x05, 0x13, 0x0c, 0xc8, 0x05, 0x01, 0x6a, 0xc2, 0x20, 0xf8, 0x02, 0x13, 0xf7, - 0x15, 0x14, 0x06, 0xa0, 0x97, 0xb6, 0xc0, 0x60, 0xf8, 0x00, 0x83, 0x01, 0x16, 0x6d, 0x04, 0x60, - 0xb9, 0xc0, 0x06, 0xa0, 0xf9, 0x32, 0x80, 0x45, 0x16, 0x4f, 0x04, 0x60, 0xb9, 0xc0, 0x06, 0xa0, - 0x97, 0xb6, 0xc2, 0x20, 0xf8, 0x02, 0x11, 0xfb, 0x13, 0xe2, 0x01, 0xa0, 0x07, 0x78, 0x40, 0x00, - 0xc1, 0x41, 0xc0, 0x60, 0xf8, 0x00, 0x01, 0x48, 0x00, 0x01, 0x16, 0x3e, 0x04, 0xe0, 0xf8, 0x00, - 0x07, 0x8b, 0x03, 0xea, 0x62, 0xe0, 0xf8, 0x04, 0xc8, 0x0b, 0xf8, 0x04, 0x85, 0x05, 0x16, 0x02, - 0xc5, 0x01, 0x10, 0x10, 0xc8, 0x14, 0x01, 0x6a, 0x88, 0x05, 0xf8, 0x00, 0x13, 0x06, 0xc8, 0x20, - 0xf8, 0x00, 0x01, 0x6a, 0x88, 0x05, 0xf8, 0x00, 0x16, 0xfa, 0xc8, 0x01, 0xf8, 0x00, 0x16, 0x02, - 0xc0, 0xa0, 0x01, 0x6a, 0x01, 0x08, 0xfe, 0x00, 0x16, 0xcc, 0xc8, 0x05, 0x01, 0x6a, 0x01, 0xe0, - 0xf8, 0x02, 0x00, 0x20, 0x07, 0x87, 0x06, 0x30, 0x01, 0xe7, 0x00, 0x04, 0x00, 0x40, 0x04, 0xd7, - 0x02, 0x27, 0x00, 0x0c, 0xa1, 0x45, 0xc9, 0x60, 0xf8, 0x00, 0x0c, 0x32, 0x04, 0xe0, 0xf8, 0x00, - 0x09, 0x15, 0xc2, 0x57, 0x16, 0x03, 0xcd, 0xc5, 0xc5, 0xc5, 0x10, 0x06, 0x05, 0xc7, 0xc8, 0x17, - 0x01, 0x6a, 0xc8, 0x05, 0xf8, 0x00, 0xc5, 0xc5, 0x83, 0x01, 0x13, 0xa9, 0xc8, 0x01, 0x01, 0x6a, - 0x01, 0x20, 0xf8, 0x06, 0x00, 0xc0, 0x13, 0xad, 0x01, 0x60, 0xf8, 0x02, 0x01, 0x00, 0x16, 0x05, - 0xc0, 0x60, 0xf8, 0x00, 0x83, 0x01, 0x16, 0xf2, 0x10, 0x9a, 0x07, 0xa0, 0x00, 0x12, 0xd7, 0xa4, - 0xc0, 0x60, 0xf8, 0x00, 0x83, 0x01, 0x13, 0x93, 0xc8, 0x01, 0x01, 0x6a, 0x01, 0x60, 0xf8, 0x02, - 0x01, 0x00, 0x16, 0x89, 0x07, 0xa0, 0x00, 0x12, 0xd7, 0x5e, 0x10, 0xea, 0x03, 0x00, 0x00, 0x02, - 0xc3, 0x20, 0x01, 0x8a, 0x13, 0x1d, 0x83, 0x01, 0x13, 0x0e, 0xc8, 0x01, 0x01, 0x6a, 0x01, 0x20, - 0xf8, 0x06, 0x00, 0xc0, 0x13, 0x86, 0x01, 0x60, 0xf8, 0x02, 0x01, 0x00, 0x16, 0x07, 0xc0, 0x60, - 0xf8, 0x00, 0x83, 0x01, 0x16, 0xf2, 0x03, 0x90, 0xbf, 0xff, 0x03, 0x80, 0x07, 0xa0, 0x00, 0x12, - 0xd7, 0xa4, 0xc0, 0x60, 0xf8, 0x00, 0x83, 0x01, 0x16, 0x0b, 0x03, 0x90, 0xbf, 0xff, 0x03, 0x80, - 0x10, 0x18, 0x03, 0x00, 0x00, 0x02, 0xc3, 0x20, 0x01, 0x8a, 0x13, 0x13, 0x83, 0x01, 0x13, 0x0e, - 0xc8, 0x01, 0x01, 0x6a, 0x01, 0x60, 0xf8, 0x02, 0x01, 0x00, 0x16, 0x04, 0x07, 0xa0, 0x00, 0x12, - 0xd7, 0x5e, 0x10, 0xdd, 0xc0, 0x60, 0xf8, 0x00, 0x83, 0x01, 0x16, 0xf2, 0x03, 0x90, 0xbf, 0xff, - 0x03, 0x80, 0x07, 0x8b, 0x9c, 0x72, 0xc3, 0x01, 0x13, 0x39, 0xc2, 0x4c, 0xc8, 0x0c, 0x01, 0x6a, - 0xc2, 0x20, 0xf8, 0x02, 0x11, 0x2d, 0xc2, 0x4c, 0xc3, 0x20, 0xf8, 0x00, 0x16, 0xf7, 0xc8, 0x09, - 0x01, 0x6a, 0xc2, 0x20, 0xf8, 0x02, 0x16, 0x2a, 0x01, 0xe0, 0xf8, 0x02, 0x19, 0x00, 0x05, 0xa0, - 0x13, 0x80, 0x10, 0x24, 0x01, 0xe0, 0xf8, 0x02, 0x19, 0x00, 0x05, 0xa0, 0x13, 0x80, 0xc8, 0x0c, - 0x01, 0x8a, 0x07, 0x89, 0x09, 0x18, 0xc2, 0x19, 0x13, 0x01, 0x05, 0xc9, 0xc6, 0x4c, 0xc2, 0x20, - 0x00, 0x12, 0x02, 0x88, 0xd7, 0x5e, 0x16, 0x03, 0x01, 0xc0, 0x00, 0x40, 0x10, 0x05, 0x02, 0x88, - 0xd7, 0xa4, 0x16, 0x05, 0x01, 0x80, 0x40, 0x40, 0x07, 0xa0, 0x00, 0x12, 0x9c, 0x56, 0x04, 0x5b, - 0xc8, 0x09, 0x01, 0x6a, 0xc2, 0x20, 0xf8, 0x02, 0x16, 0xe2, 0x10, 0xdc, 0xc2, 0x20, 0x0c, 0x02, - 0x11, 0x01, 0x10, 0xe5, 0xd8, 0x20, 0xe0, 0x10, 0x01, 0x83, 0x07, 0x88, 0x00, 0x05, 0x0b, 0x88, - 0x0b, 0x88, 0x06, 0x08, 0x16, 0xfc, 0x07, 0xa0, 0x01, 0x8a, 0x00, 0x43, 0x10, 0xd8, 0x20, 0x00, - 0xd8, 0x70, 0x00, 0x7f, 0x00, 0x00, 0x20, 0x00, 0xf8, 0x30, 0x05, 0xec, 0x68, 0x04, 0x09, 0x32, - 0xd3, 0xcf, 0x16, 0x30, 0x01, 0x4f, 0x00, 0x80, 0x16, 0x2d, 0x01, 0x0e, 0x00, 0x03, 0x16, 0x2a, - 0xd1, 0x04, 0x13, 0x01, 0x07, 0x04, 0x06, 0xc4, 0x07, 0x03, 0x07, 0x88, 0x07, 0x23, 0xb6, 0x04, - 0x18, 0x0d, 0x01, 0x4d, 0x00, 0x02, 0x13, 0x0f, 0xc0, 0x60, 0x06, 0x7c, 0x02, 0x81, 0x06, 0x30, - 0x13, 0x0a, 0x07, 0x88, 0x80, 0x18, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0x05, 0x76, 0x04, 0x96, 0x03, - 0x13, 0x02, 0xd6, 0x01, 0x10, 0xee, 0x07, 0x88, 0x07, 0x2f, 0xb6, 0x04, 0x18, 0x03, 0x96, 0x03, - 0x13, 0x05, 0x04, 0x5c, 0x76, 0x04, 0x96, 0x03, 0x13, 0x05, 0xd6, 0x03, 0x07, 0x83, 0x80, 0x40, - 0x06, 0xa0, 0xe3, 0x56, 0x04, 0x5c, 0x03, 0x00, 0x00, 0x02, 0xc1, 0x4b, 0x02, 0x85, 0x00, 0x43, - 0x13, 0x2c, 0x01, 0x60, 0x09, 0x6a, 0x00, 0x04, 0x16, 0x06, 0xc8, 0x05, 0x01, 0x6c, 0x01, 0x60, - 0xfc, 0x02, 0x00, 0x20, 0x13, 0x07, 0x06, 0xa0, 0xf9, 0x32, 0x03, 0x90, 0x04, 0x77, 0x03, 0x80, - 0xc8, 0x0a, 0x01, 0x6c, 0xc2, 0xa0, 0xfc, 0x00, 0x16, 0xfb, 0xc2, 0xa0, 0x01, 0x6c, 0x07, 0x89, - 0x03, 0xea, 0x62, 0x60, 0xfc, 0x04, 0xc8, 0x09, 0xfc, 0x04, 0x07, 0x89, 0x05, 0xf8, 0xc2, 0xd9, - 0x16, 0x02, 0xce, 0x45, 0x10, 0x05, 0x05, 0xc9, 0xc8, 0x19, 0x01, 0x6c, 0xc8, 0x05, 0xfc, 0x00, - 0xc6, 0x4a, 0x01, 0xa0, 0x07, 0x78, 0x07, 0xff, 0x10, 0xe0, 0x07, 0xa0, 0x0c, 0x02, 0x80, 0x00, - 0x07, 0xa0, 0x0c, 0x04, 0x00, 0x28, 0xc0, 0x41, 0x16, 0xd8, 0xd8, 0x20, 0xe0, 0x10, 0x01, 0x83, - 0x07, 0x89, 0x00, 0x05, 0x0b, 0x89, 0x0b, 0x89, 0x06, 0x09, 0x16, 0xfc, 0xc8, 0x05, 0x01, 0x8a, - 0x07, 0xa0, 0x00, 0x12, 0x9c, 0x56, 0x01, 0xe0, 0x00, 0xe0, 0x00, 0x40, 0x10, 0xc6, 0xc2, 0x85, - 0xc2, 0x60, 0x07, 0x80, 0xc8, 0x0a, 0x01, 0x6a, 0x07, 0x20, 0xf8, 0x02, 0x07, 0xa0, 0xf8, 0x04, - 0x03, 0xee, 0xc8, 0x09, 0xf8, 0x76, 0xc8, 0x09, 0xf8, 0xe6, 0xc8, 0x09, 0xf9, 0x56, 0xc8, 0x09, - 0xf9, 0xc6, 0xc8, 0x09, 0xfa, 0x36, 0xc8, 0x09, 0xfa, 0xa6, 0xc8, 0x09, 0xfb, 0x16, 0xc8, 0x09, - 0xfb, 0x86, 0xc8, 0x09, 0xfb, 0xf6, 0xc2, 0xa0, 0xf8, 0x00, 0x16, 0xe4, 0xc2, 0xa0, 0x01, 0x6a, - 0xc0, 0x41, 0x13, 0x06, 0xc8, 0x02, 0x01, 0x6a, 0xc8, 0x05, 0xf8, 0x00, 0xc0, 0x8a, 0x04, 0x5b, - 0xc8, 0x20, 0x08, 0x94, 0x01, 0x6a, 0x16, 0x05, 0x82, 0x85, 0x16, 0x07, 0xc8, 0x05, 0x08, 0x94, - 0x04, 0x5b, 0xc8, 0x05, 0xf8, 0x00, 0xc1, 0x60, 0x08, 0x94, 0x98, 0x20, 0xe0, 0x10, 0x01, 0x83, - 0x16, 0x19, 0x01, 0xe0, 0x01, 0x9c, 0x00, 0x40, 0x07, 0x89, 0x03, 0xe8, 0x0b, 0x89, 0x0b, 0x89, - 0x06, 0x09, 0x13, 0x14, 0x01, 0x60, 0x01, 0x9c, 0x00, 0x40, 0x16, 0xf8, 0x01, 0x60, 0x0c, 0x02, - 0x01, 0x00, 0x13, 0x0c, 0xd8, 0x20, 0x09, 0x2f, 0x01, 0x83, 0x07, 0xa0, 0x0c, 0x02, 0x80, 0x00, - 0x0b, 0x89, 0x0b, 0x89, 0xc8, 0x05, 0x01, 0x8a, 0xc8, 0x05, 0x09, 0x18, 0x04, 0xe0, 0x08, 0x94, - 0xc0, 0x54, 0x16, 0x02, 0xc5, 0x05, 0x10, 0x04, 0xc8, 0x02, 0x01, 0x6a, 0xc8, 0x05, 0xf8, 0x00, - 0xc0, 0x45, 0xc0, 0x8a, 0x07, 0xa0, 0x00, 0x12, 0x9c, 0x56, 0x01, 0xe0, 0x00, 0xe0, 0x00, 0x40, - 0x04, 0x5b, 0x07, 0x20, 0x0c, 0xb8, 0x07, 0x83, 0x80, 0x00, 0x04, 0x5b, 0x07, 0xa0, 0xfc, 0x04, - 0x03, 0xee, 0xc2, 0x20, 0x07, 0x80, 0xc8, 0x08, 0xfc, 0x76, 0xc8, 0x08, 0xfc, 0xe6, 0xc8, 0x08, - 0xfd, 0x56, 0xc8, 0x08, 0xfd, 0xc6, 0xc8, 0x08, 0xfe, 0x36, 0xc8, 0x08, 0xfe, 0xa6, 0xc8, 0x08, - 0xff, 0x16, 0xc8, 0x08, 0xff, 0x86, 0xc8, 0x08, 0xff, 0xf6, 0x04, 0x60, 0xc0, 0xc6, 0xc3, 0xa0, - 0x00, 0xe2, 0xc8, 0x0e, 0x08, 0x66, 0xc8, 0x0e, 0x01, 0x6c, 0xc3, 0xa0, 0xfc, 0x00, 0x06, 0x0d, - 0x16, 0xfa, 0x04, 0xe0, 0xfc, 0x00, 0xc8, 0x20, 0x01, 0x6c, 0x08, 0x7c, 0xc8, 0x0e, 0x00, 0xe2, - 0xc8, 0x0e, 0x07, 0x7a, 0x04, 0xe0, 0x08, 0x94, 0x04, 0xe0, 0x0c, 0xb8, 0x07, 0x8d, 0x00, 0x10, - 0x04, 0x5b, 0x03, 0x00, 0x00, 0x02, 0x07, 0x09, 0xc2, 0xa0, 0x01, 0x04, 0x01, 0x8a, 0x00, 0x80, - 0x52, 0x4a, 0xd2, 0x89, 0x01, 0xca, 0x25, 0x00, 0xc8, 0x0a, 0x01, 0x04, 0xd2, 0xa0, 0x01, 0x04, - 0x01, 0x0a, 0xda, 0x00, 0x16, 0xf5, 0x52, 0x4a, 0x01, 0xa0, 0x08, 0xa0, 0xff, 0x00, 0x07, 0xa0, - 0x08, 0xa8, 0x10, 0x00, 0x01, 0xc9, 0x05, 0x00, 0x07, 0x8a, 0x07, 0x78, 0x02, 0x89, 0x5f, 0xff, - 0x16, 0x19, 0x01, 0x5a, 0x80, 0x00, 0x16, 0x0f, 0x07, 0x89, 0xde, 0x8c, 0x01, 0x20, 0x07, 0x58, - 0x20, 0xfe, 0x13, 0x02, 0x01, 0x89, 0x04, 0x00, 0xc8, 0x09, 0x01, 0x04, 0x01, 0x9a, 0x80, 0x00, - 0x03, 0x90, 0xff, 0xff, 0x03, 0x80, 0x01, 0x20, 0x07, 0x58, 0x20, 0xfe, 0x16, 0x22, 0x03, 0x90, - 0xff, 0xff, 0x03, 0x80, 0x05, 0x49, 0x01, 0x89, 0x80, 0x00, 0x01, 0x49, 0x40, 0x00, 0x13, 0x23, - 0x01, 0x49, 0x20, 0x00, 0x16, 0x2f, 0x01, 0x5a, 0x80, 0x00, 0x16, 0x0e, 0x01, 0x9a, 0x80, 0x00, - 0x07, 0x8a, 0xde, 0x8c, 0x01, 0x20, 0x07, 0x58, 0x20, 0xfe, 0x13, 0x02, 0x01, 0x8a, 0x04, 0x00, - 0xc8, 0x0a, 0x01, 0x04, 0x01, 0x89, 0x20, 0x00, 0xd2, 0x49, 0x16, 0x05, 0x03, 0x90, 0xff, 0xff, - 0x03, 0x80, 0x07, 0x89, 0x20, 0x00, 0xf8, 0x09, 0x07, 0x3a, 0xc2, 0x60, 0x07, 0x36, 0x13, 0xf6, - 0x04, 0xe0, 0x07, 0x36, 0x04, 0x54, 0x04, 0xca, 0x87, 0x4a, 0x87, 0x4a, 0x87, 0x4a, 0x87, 0x4a, - 0x87, 0x4a, 0x87, 0x4a, 0x87, 0x4a, 0x87, 0x4a, 0x87, 0x4a, 0x87, 0x4a, 0x06, 0x0a, 0x16, 0xf4, - 0x04, 0x60, 0xb3, 0xf0, 0x01, 0x5a, 0x80, 0x00, 0x13, 0x04, 0x01, 0x20, 0x07, 0x58, 0x20, 0xfe, - 0x13, 0xdb, 0xc2, 0xa0, 0x01, 0x04, 0x01, 0xca, 0xff, 0x00, 0x01, 0x8a, 0x04, 0x80, 0xc8, 0x0a, - 0x01, 0x04, 0x01, 0x60, 0x01, 0x04, 0x20, 0x00, 0x16, 0xcf, 0x01, 0xc9, 0x20, 0x00, 0x07, 0x8a, - 0x07, 0x78, 0x10, 0xb9, 0x01, 0x60, 0x07, 0x58, 0x10, 0x00, 0x16, 0x13, 0x01, 0x20, 0x05, 0xee, - 0x00, 0x07, 0x16, 0x0f, 0xc1, 0xa0, 0x08, 0xa0, 0x06, 0xc6, 0xd1, 0xe0, 0x01, 0x03, 0x13, 0x14, - 0x71, 0x86, 0x06, 0xc6, 0x01, 0x20, 0x01, 0x04, 0x20, 0x00, 0x13, 0x22, 0x71, 0x86, 0xc8, 0x06, - 0x08, 0xa0, 0x01, 0x60, 0x01, 0x82, 0x20, 0x00, 0x16, 0x06, 0x01, 0xa0, 0x01, 0x82, 0x20, 0x00, - 0x01, 0xe0, 0x01, 0x82, 0x20, 0x00, 0x04, 0x5b, 0x07, 0x87, 0x01, 0x0c, 0x07, 0x88, 0x08, 0xa2, - 0x02, 0x26, 0xff, 0x00, 0x18, 0x04, 0xce, 0x37, 0xce, 0x37, 0xc6, 0x17, 0x10, 0xe2, 0x8e, 0x37, - 0x16, 0xdf, 0x8e, 0x37, 0x16, 0xdd, 0x86, 0x17, 0x16, 0xdb, 0xd1, 0x86, 0x16, 0xda, 0x10, 0x11, - 0x02, 0x26, 0x01, 0x00, 0x18, 0x0e, 0x19, 0xdb, 0xc1, 0xe0, 0x01, 0x04, 0x01, 0xc7, 0xff, 0x00, - 0x01, 0x87, 0x04, 0x80, 0xc8, 0x07, 0x01, 0x04, 0x01, 0x20, 0x01, 0x04, 0x20, 0x00, 0x16, 0xce, - 0x10, 0xce, 0x04, 0xe0, 0x08, 0xa8, 0x04, 0x5b, 0xc0, 0xe0, 0x07, 0x5c, 0xc8, 0x03, 0x01, 0x6c, - 0xc3, 0x43, 0xc2, 0xc3, 0xa2, 0xcb, 0xc2, 0xeb, 0x0c, 0x32, 0xc8, 0x0b, 0xfc, 0x00, 0x13, 0x07, - 0xc8, 0x0b, 0x01, 0x6c, 0xc2, 0xe0, 0xfc, 0x00, 0x16, 0xfb, 0xc3, 0x60, 0x01, 0x6c, 0x07, 0x8b, - 0x03, 0xea, 0x62, 0xe0, 0xfc, 0x04, 0xc8, 0x0b, 0xfc, 0x04, 0x07, 0x8b, 0x05, 0xf8, 0x03, 0x00, - 0x00, 0x02, 0xc3, 0x9b, 0x16, 0x02, 0xce, 0xc3, 0x10, 0x05, 0x05, 0xcb, 0xc8, 0x1b, 0x01, 0x6c, - 0xc8, 0x03, 0xfc, 0x00, 0xc6, 0xcd, 0x01, 0xa0, 0x07, 0x78, 0x07, 0xff, 0x03, 0x00, 0x00, 0x0f, - 0x04, 0x20, 0xea, 0x7a, 0x07, 0x8e, 0x01, 0x04, 0x03, 0x00, 0x00, 0x02, 0xc3, 0xde, 0x01, 0x4f, - 0x20, 0x00, 0x16, 0x08, 0x01, 0x20, 0x07, 0x78, 0x80, 0x00, 0x16, 0x04, 0x03, 0x00, 0x00, 0x0f, - 0x04, 0x60, 0xc5, 0xc6, 0x01, 0xcf, 0xff, 0x00, 0x01, 0x8f, 0x04, 0x80, 0xc7, 0x8f, 0x01, 0x5e, - 0x20, 0x00, 0x16, 0x04, 0x01, 0x60, 0x07, 0x78, 0x80, 0x00, 0x16, 0xf0, 0xc3, 0xdd, 0x02, 0x4f, - 0x00, 0x0f, 0xe1, 0x2f, 0xe0, 0x14, 0x03, 0x00, 0x00, 0x0f, 0x04, 0x5b, 0x03, 0x00, 0x00, 0x0f, - 0x10, 0x08, 0x06, 0xa0, 0xc7, 0x7e, 0x01, 0xc2, 0xff, 0x80, 0x01, 0x82, 0x24, 0x00, 0x07, 0x8e, - 0x01, 0x04, 0x03, 0x00, 0x00, 0x02, 0x01, 0x5e, 0x20, 0x00, 0x16, 0xf0, 0xc7, 0x82, 0x03, 0x00, - 0x00, 0x0f, 0x03, 0x90, 0x60, 0x3f, 0x04, 0x59, 0x07, 0x8e, 0x01, 0x04, 0x03, 0x00, 0x00, 0x02, - 0x01, 0x5e, 0x20, 0x00, 0x13, 0x06, 0xc3, 0xde, 0x01, 0xcf, 0xff, 0x00, 0x01, 0x8f, 0x04, 0x80, - 0xc7, 0x8f, 0x03, 0x00, 0x00, 0x0f, 0x04, 0x60, 0xc5, 0x60, 0x07, 0x8e, 0x01, 0x04, 0x03, 0x00, - 0x00, 0x02, 0x01, 0x5e, 0x20, 0x00, 0x16, 0x10, 0x03, 0x00, 0x00, 0x0f, 0x04, 0x60, 0xc6, 0x22, - 0x07, 0x8e, 0x01, 0x04, 0x03, 0x00, 0x00, 0x02, 0x01, 0x5e, 0x20, 0x00, 0x16, 0x09, 0x07, 0xa0, - 0x01, 0x04, 0xdb, 0x86, 0x01, 0x85, 0x58, 0x00, 0x03, 0x00, 0x00, 0x0f, 0x04, 0x60, 0xc5, 0x6a, - 0xc3, 0xde, 0x01, 0xcf, 0xff, 0x00, 0x01, 0x8f, 0x04, 0x80, 0xc7, 0x8f, 0x01, 0x5e, 0x20, 0x00, - 0x13, 0xee, 0x01, 0xc0, 0x00, 0x80, 0x01, 0xc5, 0x58, 0x00, 0x10, 0xee, 0x07, 0x8e, 0x80, 0x20, - 0xc2, 0x60, 0x01, 0x62, 0x04, 0xe0, 0x01, 0x62, 0x07, 0x8c, 0x09, 0x34, 0xcf, 0x1e, 0x11, 0x16, - 0xc3, 0x5e, 0xc3, 0xfe, 0xcf, 0x1e, 0xe3, 0x5e, 0xa3, 0xfe, 0xcf, 0x1e, 0xe3, 0x5e, 0x13, 0x0e, - 0xa3, 0xfe, 0x83, 0xfe, 0x16, 0x0b, 0xc3, 0x7e, 0x05, 0x4d, 0x83, 0x6e, 0xff, 0xf6, 0x16, 0x06, - 0x02, 0x8e, 0x80, 0x30, 0x16, 0xf8, 0xc8, 0x09, 0x01, 0x62, 0x04, 0x5b, 0xc8, 0x09, 0x01, 0x62, - 0x07, 0x20, 0x09, 0x34, 0x04, 0x5b, 0x04, 0xe0, 0x01, 0x68, 0xc8, 0x20, 0x07, 0xe4, 0x01, 0x18, - 0xc3, 0x60, 0x07, 0xe2, 0x07, 0x8f, 0x00, 0x81, 0xd3, 0xe0, 0x07, 0xf4, 0x01, 0x4d, 0x40, 0x00, - 0x16, 0x01, 0x05, 0x8f, 0xc8, 0x0f, 0x07, 0xf8, 0x07, 0x8f, 0x00, 0x81, 0xd3, 0xe0, 0x07, 0xee, - 0x01, 0x4d, 0x80, 0x00, 0x16, 0x01, 0x05, 0x8f, 0xc8, 0x0f, 0x07, 0xee, 0x01, 0x8d, 0xc0, 0x00, - 0xc8, 0x0d, 0x01, 0x1a, 0x04, 0x60, 0xc4, 0x16, 0x07, 0x8c, 0xee, 0x00, 0x06, 0xa0, 0x90, 0x94, - 0x07, 0x8c, 0xed, 0x90, 0x06, 0xa0, 0x90, 0x94, 0x04, 0xe0, 0x01, 0x04, 0x04, 0x60, 0xc5, 0x6a, - 0x02, 0x85, 0x00, 0x0e, 0x1a, 0x05, 0x01, 0x09, 0x0f, 0x00, 0x13, 0x02, 0x04, 0x60, 0xdd, 0x6a, - 0x99, 0x49, 0xea, 0xd0, 0x04, 0x60, 0xdd, 0x54, 0x20, 0x00, 0xb3, 0xcc, 0x00, 0x14, 0x07, 0x8b, - 0x01, 0x04, 0x01, 0x5b, 0x20, 0x00, 0x16, 0xfd, 0xd8, 0x20, 0x07, 0xdf, 0x01, 0x17, 0x07, 0x9b, - 0xdf, 0x80, 0x20, 0x00, 0xff, 0xc0, 0x00, 0x2a, 0x03, 0x00, 0x00, 0x00, 0x01, 0xe0, 0x01, 0x00, - 0x00, 0x80, 0x06, 0x4e, 0x02, 0x01, 0xef, 0xfa, 0xcc, 0x4d, 0xcc, 0x4e, 0xc4, 0x4f, 0x02, 0x00, - 0x00, 0x01, 0xc8, 0x00, 0xef, 0xe0, 0x88, 0x00, 0xef, 0xe0, 0x13, 0xfd, 0x02, 0xe0, 0xef, 0xe0, - 0x03, 0x80, 0x20, 0x00, 0xae, 0x00, 0x00, 0xaa, 0xc3, 0xce, 0x10, 0x32, 0x00, 0x00, 0xc0, 0x3c, - 0x08, 0x4e, 0x00, 0x00, 0xc0, 0x20, 0x07, 0x78, 0x00, 0x00, 0x00, 0x02, 0x08, 0x56, 0x01, 0x0c, - 0x00, 0x08, 0x08, 0x62, 0x03, 0xf8, 0x00, 0x06, 0x00, 0x00, 0x12, 0x00, 0x00, 0x02, 0x08, 0x7e, - 0x01, 0x8c, 0x00, 0x02, 0x07, 0x78, 0x07, 0xff, 0x00, 0x06, 0x07, 0x7e, 0xfc, 0x76, 0xbe, 0xad, - 0x01, 0x0a, 0x00, 0x08, 0x07, 0x8a, 0x00, 0x06, 0x00, 0x00, 0xcf, 0x7a, 0x11, 0x28, 0x00, 0x04, - 0x13, 0xa0, 0x13, 0xa0, 0x90, 0x2a, 0x00, 0x02, 0x08, 0x96, 0x97, 0x6a, 0xc0, 0x04, 0x08, 0x9e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x9d, 0xc8, 0x01, 0x80, 0x01, 0x00, 0x01, 0x38, 0x01, 0x7c, - 0x01, 0xce, 0x02, 0x32, 0x02, 0xae, 0x03, 0x42, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, - 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, - 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, - 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, 0x03, 0xf8, - 0xcc, 0x00, 0x20, 0x00, 0xb2, 0x98, 0x00, 0x04, 0x02, 0x09, 0x14, 0x00, 0x20, 0x00, 0xb2, 0xa8, - 0x00, 0x02, 0x90, 0x00, 0x20, 0x00, 0xb1, 0x00, 0x00, 0x02, 0x90, 0x00, 0x20, 0x00, 0xf8, 0x08, - 0x00, 0x02, 0x90, 0x00, 0x20, 0x00, 0xc8, 0xbe, 0x00, 0x04, 0xc2, 0xcb, 0xc2, 0xcb, 0x20, 0x00, - 0xbf, 0xb4, 0x00, 0x08, 0x88, 0x0b, 0x07, 0x98, 0x88, 0x0b, 0x07, 0x78, 0x20, 0x00, 0xc0, 0x54, - 0x00, 0x04, 0x06, 0xa0, 0xfa, 0x06, 0x20, 0x00, 0xc0, 0x5e, 0x00, 0x04, 0x07, 0x84, 0x07, 0x7a, - 0x20, 0x00, 0xc0, 0xc2, 0x00, 0x04, 0x04, 0x60, 0xfa, 0x10, 0x20, 0x00, 0xc9, 0xc0, 0x00, 0x02, - 0x16, 0xe2, 0x20, 0x00, 0xc9, 0xc2, 0x00, 0x04, 0x06, 0xa0, 0xfa, 0x42, 0x20, 0x00, 0xc9, 0xe8, - 0x00, 0x04, 0x04, 0x60, 0xca, 0x0c, 0x20, 0x00, 0xb9, 0xa0, 0x00, 0x04, 0x04, 0x60, 0x98, 0xa0, - 0x20, 0x00, 0xbb, 0x92, 0x00, 0x04, 0x06, 0xa0, 0x9a, 0xf4, 0x20, 0x00, 0xbc, 0x20, 0x00, 0x04, - 0xc1, 0xe0, 0xfc, 0x02, 0x20, 0x00, 0xc5, 0x5c, 0x00, 0x04, 0x04, 0x60, 0xfc, 0xec, 0x20, 0x00, - 0xc5, 0xa2, 0x00, 0x04, 0x04, 0x60, 0xfc, 0x78, 0x20, 0x00, 0xc5, 0xda, 0x00, 0x04, 0x04, 0x60, - 0xfc, 0xc6, 0x20, 0x00, 0xc6, 0x1c, 0x00, 0x04, 0x04, 0x60, 0xfd, 0x0e, 0x20, 0x00, 0xc2, 0xe6, - 0x00, 0x06, 0x01, 0x20, 0x01, 0x00, 0x00, 0x80, 0x20, 0x00, 0xc3, 0xd4, 0x00, 0x02, 0x01, 0x17, - 0x20, 0x00, 0xa2, 0xca, 0x00, 0x02, 0xc5, 0x60, 0x20, 0x00, 0xa2, 0xd2, 0x00, 0x02, 0xfd, 0x24, - 0x20, 0x00, 0xa2, 0xf2, 0x00, 0x02, 0xfd, 0x24, 0x20, 0x00, 0xa3, 0x18, 0x00, 0x02, 0xce, 0x98, - 0x20, 0x00, 0xc5, 0x6e, 0x00, 0x02, 0x10, 0x0c, 0x20, 0x00, 0xc4, 0x0c, 0x00, 0x04, 0x06, 0xa0, - 0xfd, 0xaa, 0x20, 0x00, 0xcc, 0x38, 0x00, 0x02, 0xc7, 0x7e, 0x20, 0x00, 0xa0, 0xc4, 0x00, 0x02, - 0xc7, 0x7e, 0x20, 0x00, 0xc5, 0xec, 0x00, 0x02, 0xc7, 0xb4, 0x20, 0x00, 0xa0, 0xc0, 0x00, 0x02, - 0xc7, 0xb4, 0x20, 0x00, 0xc5, 0x14, 0x00, 0x04, 0x04, 0x60, 0xfd, 0xec, 0x20, 0x00, 0xc4, 0xe6, - 0x00, 0x04, 0x06, 0xa0, 0xfd, 0x60, 0x20, 0x00, 0xc8, 0x2c, 0x00, 0x02, 0x06, 0x69, 0x20, 0x00, - 0xcc, 0x60, 0x00, 0x02, 0x06, 0x69, 0x20, 0x00, 0xdc, 0x68, 0x00, 0x02, 0x04, 0x5c, 0x20, 0x00, - 0xdc, 0xb8, 0x00, 0x04, 0x04, 0x60, 0xf8, 0x30, 0x20, 0x00, 0xdd, 0x50, 0x00, 0x04, 0x04, 0x60, - 0xfe, 0x04, 0x20, 0x80, 0xb4, 0x88, 0x00, 0x02, 0xfb, 0x88, 0x20, 0x80, 0xdf, 0x06, 0x00, 0x02, - 0x08, 0xa8, 0x20, 0x00, 0xa0, 0x34, 0x00, 0x0a, 0x00, 0x02, 0x28, 0xf1, 0xf0, 0xf1, 0xf8, 0xe7, - 0xe7, 0xe7, 0x20, 0x00, 0xb2, 0x3c, 0x00, 0x02, 0x06, 0x03, 0x20, 0x00, 0xa1, 0x16, 0x00, 0x02, - 0x9c, 0x56, 0x20, 0x00, 0xa1, 0x1a, 0x00, 0x02, 0x98, 0x4e, 0x20, 0x00, 0xa1, 0x1c, 0x00, 0x04, - 0x08, 0x4e, 0x95, 0xa8, 0x20, 0x00, 0xa1, 0x22, 0x00, 0x02, 0xfa, 0x76, 0x20, 0x00, 0xa1, 0x66, - 0x00, 0x02, 0xf8, 0x9a, 0x20, 0x00, 0xa1, 0x6e, 0x00, 0x02, 0x9a, 0x22, 0x20, 0x00, 0xa1, 0x72, - 0x00, 0x02, 0x9b, 0x56, 0x20, 0x00, 0xa1, 0x7a, 0x00, 0x02, 0x9a, 0xb0, 0x20, 0x00, 0xa1, 0x80, - 0x00, 0x04, 0xef, 0xc0, 0xff, 0xc0, 0x20, 0x00, 0xa1, 0x9c, 0x00, 0x02, 0x9d, 0xb8, 0x20, 0x00, - 0xa0, 0xb0, 0x00, 0x02, 0xce, 0xe8, 0x20, 0x00, 0xa0, 0xac, 0x00, 0x02, 0x07, 0x78, 0x20, 0x00, - 0xa2, 0xe6, 0x00, 0x02, 0xfc, 0x1c, 0x20, 0x00, 0xf5, 0xc4, 0x00, 0x02, 0x00, 0x02, 0x20, 0x00, - 0xf6, 0x7a, 0x00, 0x02, 0x00, 0x02, 0x20, 0x00, 0xf6, 0xae, 0x00, 0x02, 0x00, 0x02, 0x20, 0x00, - 0xf5, 0xfa, 0x00, 0x02, 0x02, 0x00, 0x20, 0x00, 0xf6, 0x18, 0x00, 0x02, 0x02, 0x00, 0x20, 0x00, - 0xc5, 0xc8, 0x00, 0x04, 0xc2, 0xa0, 0x07, 0xf8, 0x20, 0x00, 0xc6, 0x9a, 0x00, 0x04, 0xc2, 0xa0, - 0x07, 0xf8, 0x20, 0x00, 0xc6, 0xdc, 0x00, 0x04, 0xc2, 0xa0, 0x07, 0xf8, 0x20, 0x00, 0xcc, 0x24, - 0x00, 0x04, 0xc2, 0xa0, 0x07, 0xee, 0x20, 0x00, 0xa3, 0x64, 0x00, 0x02, 0x07, 0xf8, 0x20, 0x00, - 0xa3, 0x6e, 0x00, 0x02, 0x07, 0xf8, 0x20, 0x00, 0xc3, 0xa6, 0x00, 0x02, 0x3f, 0xfe, 0x20, 0x00, - 0xa4, 0x46, 0x00, 0x02, 0x07, 0x08, 0x30, 0x00, 0x90, 0xf0, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, - 0x11, 0xf8, 0x30, 0x00, 0x92, 0x2a, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, - 0x93, 0x5c, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0x94, 0x5a, 0x00, 0x06, - 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0x95, 0x16, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, - 0x11, 0xf8, 0x30, 0x00, 0xcf, 0xe2, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, - 0xd0, 0x14, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0xd0, 0x5e, 0x00, 0x06, - 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0xd0, 0x98, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, - 0x11, 0xf8, 0x30, 0x00, 0xd0, 0xea, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, - 0xd1, 0x52, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0xd1, 0x76, 0x00, 0x06, - 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0xd1, 0xb6, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, - 0x11, 0xf8, 0x30, 0x00, 0xd1, 0xec, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, - 0xd2, 0x3c, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0xd2, 0xca, 0x00, 0x06, - 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0xd3, 0x30, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, - 0x11, 0xf8, 0x30, 0x00, 0xd4, 0x5a, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, - 0xd4, 0xaa, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0xd4, 0xea, 0x00, 0x06, - 0xc3, 0xa0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0xd5, 0x0a, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, - 0x11, 0xf8, 0x30, 0x00, 0xd5, 0x54, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, - 0xd5, 0xae, 0x00, 0x06, 0xc3, 0xe0, 0xf0, 0x00, 0x11, 0xf8, 0x30, 0x00, 0xfb, 0x9e, 0x00, 0x06, - 0xc1, 0xe0, 0xf0, 0x00, 0x11, 0x14, 0x30, 0x00, 0xc7, 0x4e, 0x00, 0x06, 0x01, 0x60, 0xf0, 0x00, - 0x80, 0x00, 0x30, 0x00, 0xc7, 0x86, 0x00, 0x06, 0x01, 0x60, 0xf0, 0x00, 0x80, 0x00, 0x30, 0x00, - 0xc7, 0xbc, 0x00, 0x06, 0x01, 0x60, 0xf0, 0x00, 0x80, 0x00, 0x30, 0x00, 0x95, 0x5e, 0x00, 0x04, - 0xed, 0x03, 0xed, 0x03, 0x30, 0x00, 0x95, 0x8a, 0x00, 0x04, 0xed, 0x03, 0xed, 0x03, 0x34, 0x00, - 0x91, 0xa4, 0x00, 0x02, 0x60, 0x82, 0x34, 0x00, 0x92, 0x44, 0x00, 0x02, 0x60, 0x82, 0x34, 0x00, - 0x93, 0x78, 0x00, 0x02, 0x60, 0x82, 0x34, 0x00, 0x94, 0x7a, 0x00, 0x02, 0x68, 0x82, 0x34, 0x00, - 0x95, 0x32, 0x00, 0x02, 0x60, 0x82, 0x34, 0x00, 0x95, 0x6c, 0x00, 0x02, 0x68, 0x82, 0x34, 0x00, - 0x95, 0x98, 0x00, 0x02, 0x68, 0x82, 0x34, 0x00, 0x95, 0xda, 0x00, 0x02, 0x20, 0x82, 0x38, 0x00, - 0xd0, 0x76, 0x00, 0x02, 0xe0, 0x82, 0x38, 0x00, 0xd0, 0xca, 0x00, 0x02, 0xe0, 0x82, 0x38, 0x00, - 0xd4, 0x3a, 0x00, 0x02, 0xe0, 0x82, 0x20, 0x00, 0xa0, 0x02, 0x00, 0x02, 0xf9, 0xe0, 0x20, 0x00, - 0xa0, 0x7a, 0x00, 0x02, 0xe5, 0x18, 0x20, 0x80, 0xa0, 0x02, 0x00, 0x02, 0x5b, 0x58, 0x20, 0x80, - 0xa0, 0x7a, 0x00, 0x02, 0x83, 0xa0, 0x30, 0x00, 0xa0, 0x02, 0x00, 0x02, 0xae, 0x4f, 0x30, 0x00, - 0xa0, 0x7a, 0x00, 0x02, 0x2f, 0xfc, 0x30, 0x80, 0xa0, 0x02, 0x00, 0x02, 0x0f, 0xc7, 0x30, 0x80, - 0xa0, 0x7a, 0x00, 0x02, 0xce, 0x84, 0x34, 0x00, 0xa0, 0x02, 0x00, 0x02, 0xae, 0x4f, 0x34, 0x00, - 0xa0, 0x7a, 0x00, 0x02, 0x2f, 0xf4, 0x34, 0x80, 0xa0, 0x02, 0x00, 0x02, 0x0f, 0xc7, 0x34, 0x80, - 0xa0, 0x7a, 0x00, 0x02, 0xce, 0x7c, 0x38, 0x00, 0xa0, 0x02, 0x00, 0x02, 0xae, 0x52, 0x38, 0x00, - 0xa0, 0x7a, 0x00, 0x02, 0x2f, 0xf1, 0x38, 0x80, 0xa0, 0x02, 0x00, 0x02, 0x0f, 0xca, 0x38, 0x80, - 0xa0, 0x7a, 0x00, 0x02, 0xce, 0x79, 0x00, 0x00, 0x80, 0x00, 0x09, 0xfc, 0x53, 0x4d, 0x41, 0x43, - 0x2e, 0x30, 0x30, 0x2e, 0x33, 0x38, 0x20, 0x20, 0x28, 0x43, 0x29, 0x20, 0x43, 0x6f, 0x70, 0x79, - 0x72, 0x69, 0x67, 0x68, 0x74, 0x20, 0x4f, 0x6c, 0x69, 0x63, 0x6f, 0x6d, 0x20, 0x31, 0x39, 0x39, - 0x38, 0x2e, 0x00, 0x00, 0x07, 0xa0, 0x13, 0x04, 0xc4, 0x00, 0x01, 0x60, 0x09, 0x6a, 0x80, 0x00, - 0x16, 0x03, 0x01, 0xa0, 0x09, 0x6a, 0x00, 0x60, 0x01, 0x60, 0x09, 0x6a, 0x00, 0x40, 0x16, 0x34, - 0x01, 0x20, 0x13, 0x0c, 0x10, 0x00, 0x16, 0x30, 0xd8, 0x20, 0x09, 0x2e, 0x13, 0x06, 0xd8, 0x20, - 0x01, 0x80, 0x13, 0x08, 0xd8, 0x20, 0x01, 0x82, 0x13, 0x0a, 0x07, 0xa0, 0x13, 0x00, 0x87, 0xe0, - 0x07, 0xa0, 0x13, 0x02, 0xed, 0xb6, 0x07, 0xa0, 0x13, 0x14, 0x00, 0x04, 0x06, 0xa0, 0x84, 0xd0, - 0x07, 0xa0, 0x13, 0x0c, 0x04, 0x00, 0xd8, 0x20, 0xef, 0x54, 0x09, 0x2e, 0x01, 0xe0, 0x13, 0x0c, - 0x10, 0x00, 0x01, 0xa0, 0x13, 0x0c, 0x28, 0x00, 0x01, 0x60, 0x09, 0x6a, 0x00, 0x20, 0x16, 0x03, - 0x01, 0xe0, 0x13, 0x0c, 0x28, 0x00, 0x07, 0xa0, 0x13, 0x4c, 0x00, 0x02, 0x02, 0x0a, 0x00, 0x02, - 0x01, 0xe0, 0x13, 0x0e, 0x01, 0x80, 0x10, 0x09, 0x07, 0xa0, 0x13, 0x00, 0xdb, 0xc4, 0x07, 0xa0, - 0x13, 0x02, 0xea, 0xb0, 0x01, 0xa0, 0x13, 0x0c, 0x38, 0x00, 0x06, 0xa0, 0xdc, 0x32, 0xc2, 0xe0, - 0x13, 0x00, 0x04, 0x5b, 0x01, 0x4e, 0x00, 0x40, 0x16, 0x02, 0x04, 0x60, 0xcc, 0xb4, 0x02, 0x0d, - 0x12, 0x00, 0x04, 0x60, 0xcc, 0xa6, 0x01, 0x60, 0x13, 0x0c, 0x10, 0x00, 0x13, 0x02, 0x04, 0x60, - 0xe3, 0xce, 0xc8, 0x0b, 0x13, 0x52, 0x06, 0xa0, 0xe3, 0xce, 0xd8, 0x20, 0xe0, 0x0a, 0xfc, 0x06, - 0xc2, 0xe0, 0x13, 0x52, 0x04, 0x5b, 0x01, 0x60, 0x13, 0x0c, 0x10, 0x00, 0x16, 0x06, 0x02, 0x84, - 0x00, 0x12, 0x13, 0x15, 0x02, 0x84, 0x00, 0x14, 0x13, 0x2d, 0x06, 0xa0, 0xe3, 0xce, 0x01, 0x60, - 0x13, 0x0c, 0x10, 0x00, 0x16, 0x0a, 0xd8, 0x20, 0xe0, 0x0a, 0x04, 0x06, 0x88, 0x20, 0x13, 0x54, - 0x03, 0xf8, 0x13, 0x03, 0x07, 0xa0, 0x03, 0xf8, 0x81, 0x8c, 0x04, 0x60, 0xdb, 0x96, 0x02, 0x04, - 0x00, 0x08, 0x06, 0xa0, 0xe3, 0xce, 0x07, 0xa0, 0x03, 0xf8, 0x81, 0x8c, 0x02, 0x05, 0x04, 0x04, - 0x02, 0x06, 0xef, 0x5c, 0xcd, 0x76, 0xcd, 0x76, 0x02, 0x25, 0x00, 0x0c, 0xcd, 0x76, 0xcd, 0x76, - 0xcd, 0x76, 0xcd, 0x60, 0x13, 0x12, 0xcd, 0x76, 0xcd, 0x60, 0x13, 0x4c, 0xcd, 0x76, 0xc5, 0x60, - 0x09, 0x1e, 0x10, 0xe3, 0x02, 0x04, 0x00, 0x08, 0x06, 0xa0, 0xe3, 0xce, 0x07, 0xa0, 0x03, 0xf8, - 0x81, 0x8c, 0x02, 0x05, 0x04, 0x04, 0x02, 0x06, 0xef, 0x6a, 0xcd, 0x76, 0xcd, 0x76, 0x02, 0x25, - 0x00, 0x0c, 0xcd, 0x76, 0xcd, 0x76, 0x10, 0xd1, 0x04, 0x60, 0x87, 0xe0, 0x01, 0x4f, 0x00, 0x0a, - 0x16, 0x03, 0x01, 0x4f, 0x00, 0x80, 0x04, 0x5b, 0x04, 0x60, 0xda, 0x04, 0xc0, 0xc3, 0x13, 0x06, - 0x01, 0x60, 0x13, 0x0c, 0x10, 0x00, 0x16, 0x02, 0x01, 0xd6, 0x00, 0x80, 0x07, 0x86, 0x07, 0x36, - 0x04, 0x60, 0xe3, 0x7a, 0xa0, 0x60, 0x13, 0x02, 0xc1, 0x11, 0x04, 0x54, 0x01, 0x48, 0x40, 0x00, - 0x16, 0x06, 0x01, 0x88, 0x40, 0x00, 0x02, 0x28, 0xef, 0x00, 0x04, 0x60, 0xe0, 0x36, 0x02, 0x28, - 0xe3, 0xee, 0x04, 0x60, 0xe0, 0x36, 0x01, 0x60, 0x13, 0x0c, 0x10, 0x00, 0x16, 0x06, 0x02, 0x85, - 0x00, 0x12, 0x13, 0x0a, 0x02, 0x85, 0x00, 0x14, 0x13, 0x07, 0x02, 0x85, 0x00, 0x15, 0x13, 0x24, - 0x02, 0x85, 0x00, 0x10, 0x04, 0x60, 0xdd, 0x4c, 0x02, 0x03, 0x80, 0x02, 0x88, 0x24, 0x00, 0x14, - 0xe0, 0x1c, 0x16, 0x19, 0x05, 0x83, 0x05, 0x83, 0x92, 0x60, 0xef, 0x9e, 0x16, 0x14, 0x05, 0x83, - 0x99, 0x20, 0xe0, 0x0e, 0x00, 0x18, 0x16, 0x0f, 0x05, 0x83, 0x05, 0x83, 0x02, 0x85, 0x00, 0x12, - 0x16, 0x05, 0x99, 0x20, 0xef, 0xa0, 0x00, 0x19, 0x16, 0x06, 0x10, 0x04, 0x99, 0x20, 0xef, 0xa1, - 0x00, 0x19, 0x16, 0x01, 0x04, 0xc3, 0x04, 0x5c, 0x02, 0x03, 0x80, 0x02, 0x88, 0x24, 0x00, 0x14, - 0xe0, 0x1e, 0x16, 0xf9, 0x05, 0x83, 0x05, 0x83, 0x92, 0x60, 0xef, 0x9e, 0x16, 0xf4, 0x04, 0xc3, - 0x10, 0xf2, 0x02, 0x85, 0x00, 0x15, 0x13, 0x09, 0x02, 0x85, 0x00, 0x09, 0x13, 0x02, 0x06, 0xa0, - 0xe2, 0xe4, 0xa1, 0x45, 0xc1, 0x65, 0xe3, 0xac, 0x04, 0x55, 0x06, 0xa0, 0xe1, 0xa2, 0x01, 0x60, - 0x13, 0x0c, 0x04, 0x00, 0x16, 0x19, 0x01, 0x4f, 0x00, 0x80, 0x16, 0x09, 0x01, 0xe0, 0x13, 0x0e, - 0x20, 0x00, 0x02, 0x03, 0x80, 0x10, 0x06, 0xa0, 0xe3, 0x56, 0x06, 0xa0, 0xe2, 0x72, 0x01, 0xe0, - 0x13, 0x0e, 0x00, 0x10, 0x07, 0xa0, 0x13, 0x00, 0x87, 0xe0, 0x07, 0xa0, 0x13, 0x02, 0xed, 0xb6, - 0x01, 0x8f, 0x00, 0x80, 0x02, 0x0a, 0x00, 0x08, 0x04, 0x60, 0x80, 0xbe, 0x02, 0x0d, 0x80, 0x00, - 0x01, 0x60, 0x13, 0x0c, 0x10, 0x00, 0x16, 0x02, 0x02, 0x0d, 0x80, 0x80, 0x04, 0x52, 0x01, 0x60, - 0x13, 0x0e, 0x20, 0x00, 0x16, 0x02, 0x02, 0x03, 0x82, 0x00, 0x04, 0x60, 0xdb, 0xb8, 0x02, 0x8f, - 0x00, 0x06, 0x16, 0x56, 0x01, 0xe0, 0x13, 0x0e, 0x00, 0xa0, 0x05, 0xa0, 0x13, 0x16, 0x06, 0xa0, - 0x85, 0x30, 0x02, 0x08, 0xc0, 0x00, 0x06, 0xa0, 0xe0, 0x22, 0x01, 0xcd, 0x04, 0x00, 0x10, 0x48, - 0x02, 0x8f, 0x00, 0x02, 0x16, 0x45, 0x02, 0x08, 0xc0, 0x42, 0x06, 0xa0, 0xe0, 0x22, 0x01, 0xcd, - 0x08, 0x00, 0x10, 0x3e, 0x93, 0xe0, 0xef, 0xa3, 0x13, 0x03, 0x93, 0xe0, 0xef, 0xa4, 0x16, 0x38, - 0xd2, 0xa0, 0xef, 0xa5, 0x10, 0x35, 0x02, 0x8f, 0x00, 0x06, 0x16, 0x32, 0x02, 0x03, 0x00, 0x03, - 0x04, 0x60, 0x82, 0xc2, 0x93, 0xe0, 0xef, 0xa5, 0x16, 0x2b, 0x01, 0xe0, 0x13, 0x0e, 0x00, 0x80, - 0x06, 0xa0, 0x85, 0x30, 0x04, 0xcf, 0x02, 0x0a, 0x00, 0x04, 0x02, 0x08, 0xc0, 0x1e, 0x06, 0xa0, - 0xe0, 0x22, 0x02, 0x03, 0x68, 0x00, 0x06, 0xa0, 0xe3, 0x56, 0x02, 0x03, 0x80, 0x10, 0x06, 0xa0, - 0xe3, 0x56, 0x10, 0x16, 0x02, 0x8f, 0x00, 0x04, 0x16, 0x13, 0x02, 0x03, 0x00, 0x03, 0x04, 0x60, - 0x82, 0xc2, 0x02, 0x8f, 0x00, 0x02, 0x16, 0x7a, 0x01, 0x60, 0x13, 0x0e, 0x00, 0x08, 0x16, 0x02, - 0x04, 0x60, 0x85, 0x56, 0x02, 0x0a, 0x00, 0x04, 0x02, 0x08, 0xc0, 0x1e, 0x06, 0xa0, 0xe0, 0x22, - 0x10, 0x6d, 0x01, 0x60, 0x13, 0x0e, 0x40, 0x00, 0x16, 0x69, 0x02, 0x8f, 0x00, 0x06, 0x16, 0x07, - 0x01, 0xe0, 0x13, 0x0e, 0x00, 0xa0, 0x05, 0xa0, 0x13, 0x16, 0x06, 0xa0, 0x85, 0x30, 0x02, 0x08, - 0xc0, 0x30, 0x06, 0xa0, 0xe0, 0x22, 0x01, 0xcd, 0x01, 0x00, 0x10, 0x58, 0x93, 0xe0, 0xef, 0xa3, - 0x16, 0x55, 0x02, 0x08, 0xc0, 0x36, 0x06, 0xa0, 0xe0, 0x22, 0x07, 0xa0, 0x07, 0x08, 0x00, 0x05, - 0x01, 0x60, 0x13, 0x0e, 0x04, 0x00, 0x16, 0x03, 0x07, 0xa0, 0x07, 0x08, 0x00, 0x02, 0x02, 0x05, - 0x03, 0xf8, 0x02, 0x04, 0x00, 0x04, 0x04, 0x60, 0x80, 0xfa, 0xc1, 0x20, 0x01, 0x84, 0x02, 0x44, - 0x88, 0x00, 0x13, 0x12, 0x48, 0x04, 0x01, 0x84, 0x06, 0x20, 0x07, 0x02, 0x16, 0x08, 0x01, 0xe0, - 0x13, 0x0e, 0x04, 0x00, 0x07, 0x83, 0xc0, 0x00, 0x06, 0xa0, 0xe3, 0x56, 0x10, 0x2f, 0x02, 0x08, - 0xc0, 0x3c, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0x2a, 0x01, 0xe0, 0x01, 0x82, 0x40, 0x00, 0x06, 0xa0, - 0xe0, 0x18, 0x07, 0x20, 0x07, 0x02, 0x01, 0x8e, 0x80, 0x00, 0x01, 0xa0, 0x13, 0x0e, 0x06, 0x00, - 0x10, 0x1d, 0x02, 0x8f, 0x00, 0x02, 0x16, 0x1a, 0x01, 0x20, 0x13, 0x0e, 0x00, 0x40, 0x16, 0x16, - 0xc2, 0x20, 0x13, 0x14, 0x13, 0x09, 0x06, 0x20, 0x13, 0x14, 0x02, 0x08, 0xc0, 0x42, 0x06, 0xa0, - 0xe0, 0x22, 0x01, 0xcd, 0x08, 0x00, 0x10, 0x0a, 0x01, 0x60, 0x13, 0x0c, 0x20, 0x00, 0x13, 0x02, - 0x04, 0x60, 0x85, 0x56, 0x02, 0x03, 0x00, 0x05, 0x04, 0x60, 0x82, 0xc2, 0x04, 0x60, 0x87, 0xe0, - 0x02, 0x8f, 0x00, 0x06, 0x16, 0x04, 0x02, 0x03, 0x00, 0x05, 0x04, 0x60, 0x82, 0xc2, 0x01, 0x60, - 0x13, 0x0e, 0x20, 0x00, 0x16, 0xf3, 0x93, 0xe0, 0xef, 0xa2, 0x16, 0xf0, 0x01, 0xa0, 0x13, 0x0e, - 0x50, 0x80, 0x06, 0xa0, 0x85, 0x30, 0x01, 0xce, 0x00, 0x01, 0xd2, 0xa0, 0xef, 0xa3, 0x07, 0xa0, - 0x07, 0x08, 0x00, 0x05, 0x01, 0x60, 0x13, 0x0e, 0x04, 0x00, 0x16, 0x03, 0x07, 0xa0, 0x07, 0x08, - 0x00, 0x02, 0x02, 0x08, 0xc0, 0x36, 0x06, 0xa0, 0xe0, 0x22, 0x02, 0x08, 0xc0, 0x0c, 0x06, 0xa0, - 0xe0, 0x22, 0x02, 0x08, 0xc0, 0x18, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0xd0, 0x02, 0x8f, 0x00, 0x08, - 0x16, 0xcd, 0x07, 0xa0, 0x13, 0x14, 0x00, 0x0c, 0x04, 0x60, 0x80, 0x74, 0xc3, 0x0b, 0x06, 0xa0, - 0x85, 0x48, 0x06, 0xa0, 0x84, 0xf2, 0xc2, 0xcc, 0x04, 0xe0, 0x13, 0x0e, 0x04, 0xe0, 0x13, 0x16, - 0x04, 0xe0, 0x06, 0xdc, 0x04, 0xe0, 0x06, 0xde, 0x04, 0xe0, 0x06, 0xe0, 0x04, 0x5b, 0x02, 0x06, - 0x00, 0x05, 0x02, 0x04, 0x13, 0x1a, 0xc1, 0x54, 0x13, 0x01, 0x2c, 0xd4, 0x02, 0x24, 0x00, 0x0a, - 0x06, 0x06, 0x16, 0xf9, 0x04, 0x5b, 0x02, 0x06, 0x00, 0x05, 0x02, 0x04, 0x06, 0x72, 0xc1, 0x54, - 0x13, 0x01, 0x2c, 0xd4, 0x02, 0x24, 0x00, 0x0a, 0x06, 0x06, 0x16, 0xf9, 0x04, 0x5b, 0x01, 0x60, - 0x13, 0x0e, 0x08, 0x00, 0x16, 0x03, 0x01, 0xe0, 0x01, 0x82, 0x20, 0x00, 0x01, 0x60, 0x13, 0x0e, - 0x00, 0x80, 0x16, 0x04, 0x01, 0xe0, 0x01, 0x82, 0x0a, 0x00, 0x10, 0x03, 0x01, 0xa0, 0x01, 0x82, - 0x0a, 0x00, 0x04, 0x5b, 0x01, 0xa0, 0x01, 0x82, 0x28, 0x00, 0x01, 0xe0, 0x01, 0x82, 0x10, 0x00, - 0x04, 0x5b, 0x06, 0xa0, 0x84, 0xf2, 0x04, 0xe0, 0x13, 0x0e, 0xd8, 0x20, 0x13, 0x06, 0x09, 0x2e, - 0xd8, 0x20, 0x13, 0x08, 0x01, 0x80, 0xd8, 0x20, 0x13, 0x0a, 0x01, 0x82, 0x06, 0xa0, 0xe0, 0x18, - 0x04, 0x60, 0xe5, 0x62, 0xc0, 0x62, 0x00, 0x04, 0xc8, 0x22, 0x00, 0x06, 0x01, 0x6c, 0x02, 0x82, - 0x04, 0x00, 0x1b, 0x0d, 0x01, 0x8e, 0x08, 0x00, 0x02, 0x8f, 0x00, 0x06, 0x16, 0x08, 0x06, 0x20, - 0x13, 0x16, 0x16, 0x05, 0x01, 0xa0, 0x13, 0x0e, 0x00, 0xa0, 0x06, 0xa0, 0x85, 0x30, 0xc1, 0x22, - 0x00, 0x0e, 0x04, 0x51, 0xc8, 0x02, 0x01, 0x6c, 0xa0, 0x82, 0xc8, 0x22, 0x0c, 0x32, 0xfc, 0x00, - 0x02, 0x02, 0xfc, 0x00, 0x93, 0xe0, 0xe3, 0xaa, 0x13, 0x71, 0x06, 0xa0, 0xdc, 0xc6, 0x01, 0xa2, - 0x00, 0x0e, 0x80, 0x00, 0xc8, 0x05, 0x06, 0xfc, 0xc0, 0xc3, 0x16, 0x43, 0x01, 0x22, 0x00, 0x16, - 0x0f, 0x00, 0x16, 0x10, 0x88, 0x22, 0x00, 0x0e, 0x09, 0x6c, 0x16, 0x0c, 0x88, 0x22, 0x00, 0x10, - 0x09, 0x6e, 0x16, 0x08, 0x88, 0x22, 0x00, 0x12, 0x09, 0x70, 0x16, 0x04, 0x06, 0xa0, 0xe1, 0xa2, - 0x04, 0x60, 0x87, 0xe0, 0x98, 0xa0, 0xef, 0xa6, 0x00, 0x16, 0x13, 0x04, 0x98, 0xa0, 0xef, 0xa7, - 0x00, 0x16, 0x16, 0x15, 0xc2, 0xe0, 0x06, 0xdc, 0x16, 0x06, 0xc2, 0xe0, 0x06, 0xde, 0x16, 0x03, - 0xc2, 0xe0, 0x06, 0xe0, 0x13, 0x0c, 0x88, 0x22, 0x00, 0x0e, 0x06, 0xdc, 0x16, 0x71, 0x88, 0x22, - 0x00, 0x10, 0x06, 0xde, 0x16, 0x6d, 0x88, 0x22, 0x00, 0x12, 0x06, 0xe0, 0x16, 0x69, 0x02, 0x85, - 0x00, 0x09, 0x13, 0x0b, 0x02, 0x85, 0x00, 0x15, 0x13, 0x08, 0x02, 0x85, 0x00, 0x12, 0x13, 0x0d, - 0x02, 0x85, 0x00, 0x14, 0x13, 0x0e, 0x06, 0xa0, 0xe2, 0xe4, 0xa1, 0x45, 0xc1, 0x65, 0xef, 0x72, - 0x04, 0x55, 0x06, 0xa0, 0xe0, 0x6e, 0x04, 0x60, 0x87, 0xe0, 0xc8, 0x24, 0x00, 0x1a, 0x13, 0x4e, - 0x10, 0xf4, 0xc8, 0x24, 0x00, 0x1a, 0x13, 0x50, 0x10, 0xf0, 0x01, 0x20, 0x13, 0x0e, 0x02, 0x00, - 0x16, 0x07, 0x04, 0xe0, 0x01, 0x84, 0x01, 0xa0, 0x01, 0x82, 0x40, 0x00, 0x06, 0xa0, 0xe0, 0x18, - 0x07, 0xa0, 0x07, 0x02, 0x00, 0x04, 0x01, 0xe0, 0x13, 0x0e, 0x02, 0x00, 0x01, 0xce, 0x80, 0x00, - 0x02, 0x08, 0xc0, 0x3c, 0x06, 0xa0, 0xe0, 0x22, 0x04, 0x60, 0x87, 0xe0, 0x06, 0xa0, 0xe1, 0xa2, - 0x04, 0x60, 0x87, 0xe0, 0x06, 0xa0, 0xe1, 0xa2, 0x02, 0x03, 0x00, 0x05, 0x01, 0x4f, 0x00, 0x80, - 0x16, 0x02, 0x02, 0x03, 0x82, 0x00, 0x04, 0x60, 0x82, 0xc2, 0x01, 0x60, 0x13, 0x0e, 0x20, 0x00, - 0x16, 0x24, 0x93, 0xe0, 0xef, 0xa2, 0x16, 0x0c, 0x01, 0x60, 0x13, 0x0e, 0x20, 0x00, 0x16, 0x28, - 0x02, 0x03, 0xa0, 0x00, 0x06, 0xa0, 0xe3, 0x56, 0x01, 0xa0, 0x13, 0x0e, 0x50, 0x00, 0x10, 0x03, - 0x93, 0xe0, 0xef, 0xa3, 0x16, 0x1d, 0x01, 0xce, 0x00, 0x02, 0xd2, 0xa0, 0xef, 0xa4, 0x02, 0x08, - 0xc0, 0x0c, 0x06, 0xa0, 0xe0, 0x22, 0x02, 0x08, 0xc0, 0x18, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0x10, - 0x06, 0xa0, 0xe1, 0xa2, 0x02, 0x03, 0x00, 0x0b, 0x10, 0x04, 0x06, 0xa0, 0xe1, 0xa2, 0x02, 0x03, - 0x00, 0x05, 0x01, 0x4f, 0x00, 0x80, 0x16, 0x02, 0x02, 0x03, 0x82, 0x00, 0x04, 0x60, 0x82, 0xc2, - 0x10, 0xbd, 0x02, 0x8f, 0x00, 0x02, 0x13, 0xf1, 0x02, 0x8f, 0x00, 0x04, 0x13, 0xee, 0x01, 0x60, - 0x13, 0x0e, 0x40, 0x00, 0x16, 0xf5, 0x02, 0x08, 0xc0, 0x48, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0xf0, - 0x02, 0x8f, 0x00, 0x02, 0x16, 0xab, 0xc0, 0xe0, 0x13, 0x4e, 0x16, 0x0e, 0x01, 0x60, 0x13, 0x0c, - 0x08, 0x00, 0x13, 0xa8, 0x01, 0xe0, 0x13, 0x0e, 0x00, 0x48, 0x06, 0xa0, 0xe1, 0xa2, 0x02, 0x08, - 0xc0, 0x24, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0x22, 0x02, 0x83, 0x00, 0x02, 0x16, 0xd9, 0xc8, 0x24, - 0x00, 0x0e, 0x06, 0xdc, 0xc8, 0x24, 0x00, 0x10, 0x06, 0xde, 0xc8, 0x24, 0x00, 0x12, 0x06, 0xe0, - 0x06, 0xa0, 0xe1, 0xa2, 0x02, 0x08, 0xc0, 0x24, 0x06, 0xa0, 0xe0, 0x22, 0x01, 0xe0, 0x13, 0x0e, - 0x00, 0x40, 0xc0, 0xe0, 0x13, 0x12, 0x16, 0x04, 0x01, 0xa0, 0x13, 0x0e, 0x08, 0x01, 0x10, 0x06, - 0x02, 0x83, 0x00, 0x01, 0x16, 0x03, 0x01, 0xe0, 0x13, 0x0e, 0x08, 0x01, 0x10, 0x17, 0x02, 0x8f, - 0x00, 0x06, 0x16, 0xb6, 0xc0, 0xe0, 0x13, 0x50, 0x02, 0x83, 0x00, 0x00, 0x16, 0x05, 0x06, 0xa0, - 0xe1, 0xa2, 0x02, 0x0a, 0x00, 0x0a, 0x10, 0x0a, 0x02, 0x83, 0x80, 0x20, 0x16, 0x04, 0x02, 0x03, - 0x00, 0x08, 0x04, 0x60, 0x82, 0xc2, 0x16, 0xa4, 0x04, 0x60, 0xda, 0x04, 0x92, 0xa0, 0xe0, 0x26, - 0x16, 0x0d, 0xd3, 0xe0, 0xe0, 0x26, 0x01, 0x4f, 0x00, 0x80, 0x13, 0x07, 0xc1, 0x0a, 0x83, 0xc4, - 0x13, 0x08, 0xc3, 0xc4, 0xc1, 0x24, 0xed, 0xd6, 0x04, 0x54, 0x10, 0x03, 0x93, 0xca, 0x13, 0xec, - 0xd3, 0xca, 0x03, 0xb0, 0xd8, 0x0f, 0x06, 0x59, 0x71, 0x04, 0xc1, 0x24, 0xed, 0xe2, 0x04, 0x54, - 0xf8, 0x20, 0xef, 0x54, 0x01, 0x80, 0xf8, 0x20, 0xef, 0x56, 0x01, 0x82, 0x06, 0xa0, 0xe0, 0x18, - 0x2e, 0xe0, 0x00, 0x00, 0xc8, 0x20, 0x09, 0x6c, 0x01, 0xa0, 0xc8, 0x20, 0x09, 0x6e, 0x01, 0xa2, - 0xc8, 0x20, 0x09, 0x70, 0x01, 0xa4, 0x02, 0x08, 0xc0, 0x06, 0x06, 0xa0, 0xe0, 0x22, 0x10, 0xcc, - 0x07, 0xa0, 0x06, 0xc6, 0x02, 0x00, 0x07, 0xa0, 0x06, 0xc8, 0x00, 0x02, 0xd8, 0x20, 0xef, 0x58, - 0x09, 0x2e, 0xd8, 0x20, 0xef, 0x58, 0x01, 0x80, 0xd8, 0x20, 0xef, 0x5a, 0x01, 0x82, 0x06, 0xa0, - 0xe0, 0x18, 0x04, 0xe0, 0x01, 0x9e, 0x02, 0x08, 0xc0, 0x2a, 0x06, 0xa0, 0xe0, 0x22, 0x02, 0x04, - 0x00, 0x0a, 0x02, 0x05, 0x03, 0xf4, 0x06, 0xa0, 0xe3, 0xce, 0x07, 0xa0, 0x03, 0xf8, 0x88, 0x94, - 0x01, 0x4e, 0x08, 0x00, 0x13, 0xa9, 0x01, 0xce, 0x08, 0x00, 0x2e, 0xa0, 0x03, 0xf4, 0x10, 0xa4, - 0x03, 0xb0, 0x98, 0x20, 0xe0, 0x0e, 0x06, 0x65, 0x16, 0x9f, 0x92, 0xa0, 0xe0, 0x26, 0x16, 0x9c, - 0x02, 0x44, 0x5e, 0x00, 0x16, 0x0b, 0x06, 0x20, 0x06, 0xc6, 0x16, 0xdd, 0x02, 0x0a, 0x00, 0x06, - 0x10, 0x95, 0x03, 0xb0, 0x98, 0x20, 0xe0, 0x0e, 0x06, 0x65, 0x16, 0x8e, 0x06, 0x20, 0x06, 0xc8, - 0x16, 0xc5, 0x04, 0x60, 0xe6, 0x6a, 0xd8, 0x20, 0xef, 0x54, 0x09, 0x2e, 0xd8, 0x20, 0xef, 0x54, - 0x01, 0x80, 0xd8, 0x20, 0xef, 0x56, 0x01, 0x82, 0x06, 0xa0, 0xe0, 0x18, 0x01, 0xe0, 0x13, 0x0e, - 0x40, 0x20, 0x07, 0xa0, 0x13, 0x16, 0x00, 0x01, 0x02, 0x08, 0xc0, 0x30, 0x06, 0xa0, 0xe0, 0x22, - 0x02, 0x08, 0xc0, 0x48, 0x06, 0xa0, 0xe0, 0x22, 0x02, 0x08, 0xc0, 0x12, 0x06, 0xa0, 0xe0, 0x22, - 0x02, 0x08, 0xc0, 0x00, 0x06, 0xa0, 0xe0, 0x22, 0x01, 0xcd, 0x04, 0x00, 0x04, 0x60, 0x87, 0xe0, - 0x06, 0xa0, 0x85, 0x48, 0x01, 0xce, 0x00, 0x20, 0x2e, 0xe0, 0x00, 0x00, 0x04, 0xcd, 0x06, 0xa0, - 0x85, 0x0a, 0x02, 0x08, 0xc0, 0x4e, 0x06, 0xa0, 0xe0, 0x22, 0x04, 0x60, 0x87, 0xe0, 0x01, 0xa0, - 0x13, 0x0e, 0x00, 0x80, 0x06, 0xa0, 0x85, 0x22, 0x01, 0xcf, 0x00, 0x80, 0x01, 0xe0, 0x13, 0x0e, - 0x10, 0x00, 0x01, 0x60, 0x13, 0x0e, 0x00, 0x01, 0x16, 0x04, 0x07, 0x88, 0x80, 0x06, 0x06, 0xa0, - 0xe0, 0x22, 0x01, 0x20, 0x13, 0x0e, 0x20, 0x00, 0x16, 0x07, 0x01, 0xe0, 0x13, 0x0e, 0x20, 0x00, - 0x04, 0xc3, 0x06, 0xa0, 0xe3, 0x56, 0x10, 0x0e, 0x01, 0x8e, 0x00, 0x03, 0x02, 0x03, 0x00, 0x10, - 0x06, 0xa0, 0xe3, 0x56, 0x01, 0x60, 0x13, 0x0e, 0x00, 0x10, 0x16, 0x04, 0x02, 0x03, 0x80, 0x08, - 0x06, 0xa0, 0xe3, 0x56, 0xc8, 0x20, 0xe4, 0x6e, 0x01, 0x86, 0x2e, 0xe0, 0x00, 0x01, 0x01, 0x8e, - 0x00, 0x20, 0x04, 0x60, 0x87, 0xdc, 0x02, 0x03, 0xa8, 0x00, 0x01, 0x60, 0x07, 0x08, 0x00, 0x02, - 0x16, 0x02, 0x02, 0x03, 0xe8, 0x00, 0x06, 0xa0, 0xe3, 0x56, 0x01, 0x4e, 0x00, 0x20, 0x13, 0x06, - 0x01, 0xce, 0x00, 0x20, 0x2e, 0xe0, 0x00, 0x00, 0xc0, 0x41, 0x16, 0xfa, 0x06, 0xa0, 0xe1, 0x2e, - 0x02, 0x4a, 0xff, 0x00, 0x02, 0x4f, 0xff, 0x80, 0x02, 0x05, 0x03, 0xf8, 0x02, 0x04, 0x00, 0x04, - 0x04, 0x60, 0x80, 0xfa, 0x02, 0x4a, 0xff, 0x00, 0x02, 0x4f, 0xff, 0x80, 0x04, 0x60, 0x87, 0xdc, - 0x06, 0xa0, 0x85, 0x48, 0x04, 0x60, 0x87, 0xdc, 0x06, 0xa0, 0x84, 0xf2, 0x04, 0xe0, 0x13, 0x0e, - 0x01, 0xce, 0x00, 0x08, 0x04, 0x60, 0xe7, 0xf6, 0x00, 0x00, 0x89, 0xfc, 0x06, 0x05, 0x00, 0x00, - 0x00, 0x00, 0xad, 0x90, 0x00, 0x62, 0xc0, 0x80, 0x13, 0x00, 0x00, 0x00, 0x00, 0x02, 0x13, 0x00, - 0xdb, 0xc4, 0x00, 0x02, 0x13, 0x02, 0xea, 0xb0, 0x00, 0x02, 0x13, 0x54, 0xdc, 0x16, 0x00, 0x02, - 0x09, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x13, 0x12, 0x00, 0x01, 0x00, 0x00, 0xda, 0x88, 0xda, 0x7c, - 0x86, 0x6e, 0xda, 0xa6, 0xda, 0x9e, 0xdb, 0x86, 0xdb, 0x86, 0xdb, 0x86, 0xda, 0xa8, 0x85, 0xa8, - 0x85, 0x78, 0xdb, 0x78, 0xdb, 0x86, 0xdb, 0x86, 0xdb, 0x86, 0xdb, 0x86, 0xdb, 0x9e, 0x88, 0x14, - 0x88, 0x44, 0x88, 0xca, 0x89, 0x14, 0x89, 0x32, 0xdb, 0xf6, 0x89, 0x9a, 0x89, 0xd8, 0x89, 0xe4, - 0xe4, 0x6e, 0xdb, 0x9e, 0x89, 0xec, 0xdb, 0x9e, 0x00, 0x00, 0xaf, 0x00, 0x00, 0xa8, 0x13, 0x24, - 0x82, 0xd2, 0x00, 0x14, 0x13, 0x1a, 0x82, 0xf4, 0x00, 0x04, 0x13, 0x38, 0x83, 0x08, 0x02, 0xbc, - 0x13, 0x1a, 0x83, 0x1a, 0x07, 0x08, 0x13, 0x1a, 0x83, 0x28, 0x03, 0xe8, 0x13, 0x1a, 0x83, 0x58, - 0x00, 0xf0, 0x13, 0x1a, 0x83, 0x66, 0x00, 0x14, 0x13, 0x24, 0x88, 0xb6, 0x00, 0x04, 0x13, 0x2e, - 0x83, 0x86, 0x00, 0x64, 0x13, 0x2e, 0x83, 0xb0, 0x00, 0x02, 0x13, 0x42, 0x83, 0xde, 0x00, 0x05, - 0x13, 0x1a, 0x84, 0x26, 0x00, 0x04, 0x13, 0x38, 0x84, 0x64, 0x01, 0xf4, 0x13, 0x1a, 0x84, 0xc0, - 0x00, 0x14, 0xae, 0x00, 0xd9, 0x00, 0x02, 0x00, 0xd9, 0x00, 0x00, 0x1e, 0x10, 0x00, 0x00, 0x10, - 0x30, 0x11, 0x04, 0x0c, 0x04, 0x0e, 0x04, 0x21, 0x00, 0x12, 0x10, 0x00, 0x00, 0x04, 0x30, 0x13, - 0xdb, 0xa8, 0xe8, 0x7c, 0x86, 0xbe, 0x86, 0xa8, 0x86, 0xa8, 0x87, 0x26, 0x86, 0xa8, 0xeb, 0xf2, - 0xdb, 0xa8, 0x86, 0xa0, 0xec, 0x04, 0xe8, 0x62, 0xec, 0x10, 0xec, 0x10, 0xed, 0x3a, 0xed, 0x44, - 0xed, 0x4e, 0x86, 0xa0, 0x87, 0x44, 0x86, 0xa0, 0x87, 0xb2, 0x86, 0xa0, 0x03, 0x00, 0x0f, 0x0d, - 0x00, 0x02, 0x04, 0x06, 0x00, 0x03, 0x00, 0x00, 0xb2, 0xa8, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, - 0xb1, 0x00, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x08, 0x00, 0x02, 0x80, 0x00, 0x00, 0x00, - 0xb9, 0x0c, 0x00, 0x06, 0x48, 0x20, 0x13, 0x04, 0x01, 0x80, 0x00, 0x00, 0xba, 0x38, 0x00, 0x06, - 0x48, 0x20, 0x13, 0x04, 0x01, 0x80, 0x00, 0x00, 0xbc, 0x88, 0x00, 0x06, 0x48, 0x20, 0x13, 0x04, - 0x01, 0x80, 0x00, 0x00, 0xca, 0xaa, 0x00, 0x04, 0x04, 0x60, 0x82, 0xb0, 0x00, 0x00, 0xc8, 0x2c, - 0x00, 0x02, 0x06, 0x09, 0x00, 0x00, 0xcc, 0x60, 0x00, 0x02, 0x06, 0x09, 0x00, 0x00, 0xdb, 0x1c, - 0x00, 0x04, 0x04, 0x60, 0x82, 0x56, 0x00, 0x00, 0xe0, 0xc8, 0x00, 0x02, 0x80, 0xda, 0x00, 0x00, - 0xed, 0x74, 0x00, 0x02, 0x80, 0xda, 0x00, 0x00, 0xed, 0x94, 0x00, 0x02, 0x80, 0xda, 0x00, 0x00, - 0xe7, 0xae, 0x00, 0x04, 0x06, 0xa0, 0x81, 0x90, 0x00, 0x00, 0xe5, 0xb0, 0x00, 0x04, 0x04, 0x60, - 0x80, 0x28, 0x00, 0x00, 0xdb, 0xc0, 0x00, 0x04, 0x04, 0x60, 0x80, 0xbe, 0x00, 0x00, 0xda, 0x76, - 0x00, 0x04, 0x04, 0x60, 0x81, 0xb8, 0x00, 0x00, 0xe0, 0x32, 0x00, 0x04, 0x04, 0x60, 0x81, 0xc0, - 0x00, 0x00, 0xdb, 0x92, 0x00, 0x04, 0x04, 0x60, 0x80, 0xfa, 0x00, 0x00, 0xe3, 0x76, 0x00, 0x04, - 0x04, 0x60, 0x81, 0xa0, 0x00, 0x00, 0xdd, 0x48, 0x00, 0x04, 0x04, 0x60, 0x81, 0xda, 0x00, 0x00, - 0xcc, 0xa2, 0x00, 0x04, 0x04, 0x60, 0x80, 0xc8, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 }; - -#endif /* OLTR_NO_TMS_MAC */ diff --git a/sys/contrib/softupdates/README b/sys/contrib/softupdates/README deleted file mode 100644 index 8a7433b61e9e..000000000000 --- a/sys/contrib/softupdates/README +++ /dev/null @@ -1,320 +0,0 @@ -Introduction - -This package constitutes the alpha distribution of the soft update -code updates for the fast filesystem. - -For More information on what Soft Updates is, see: -http://www.ece.cmu.edu/~ganger/papers/CSE-TR-254-95/ - -Status - -My `filesystem torture tests' (described below) run for days without -a hitch (no panic's, hangs, filesystem corruption, or memory leaks). -However, I have had several panic's reported to me by folks that -are field testing the code which I have not yet been able to -reproduce or fix. Although these panic's are rare and do not cause -filesystem corruption, the code should only be put into production -on systems where the system administrator is aware that it is being -run, and knows how to turn it off if problems arise. Thus, you may -hand out this code to others, but please ensure that this status -message is included with any distributions. Please also include -the file ffs_softdep.stub.c in any distributions so that folks that -cannot abide by the need to redistribute source will not be left -with a kernel that will not link. It will resolve all the calls -into the soft update code and simply ignores the request to enable -them. Thus you will be able to ensure that your other hooks have -not broken anything and that your kernel is softdep-ready for those -that wish to use them. Please report problems back to me with -kernel backtraces of panics if possible. This is massively complex -code, and people only have to have their filesystems hosed once or -twice to avoid future changes like the plague. I want to find and -fix as many bugs as soon as possible so as to get the code rock -solid before it gets widely released. Please report any bugs that -you uncover to mckusick@mckusick.com. - -Performance - -Running the Andrew Benchmarks yields the following raw data: - - Phase Normal Softdep What it does - 1 3s <1s Creating directories - 2 8s 4s Copying files - 3 6s 6s Recursive directory stats - 4 8s 9s Scanning each file - 5 25s 25s Compilation - - Normal: 19.9u 29.2s 0:52.8 135+630io - Softdep: 20.3u 28.5s 0:47.8 103+363io - -Another interesting datapoint are my `filesystem torture tests'. -They consist of 1000 runs of the andrew benchmarks, 1000 copy and -removes of /etc with randomly selected pauses of 0-60 seconds -between each copy and remove, and 500 find from / with randomly -selected pauses of 100 seconds between each run). The run of the -torture test compares as follows: - -With soft updates: writes: 6 sync, 1,113,686 async; run time 19hr, 50min -Normal filesystem: writes: 1,459,147 sync, 487,031 async; run time 27hr, 15min - -The upshot is 42% less I/O and 28% shorter running time. - -Another interesting test point is a full MAKEDEV. Because it runs -as a shell script, it becomes mostly limited by the execution speed -of the machine on which it runs. Here are the numbers: - -With soft updates: - - labrat# time ./MAKEDEV std - 2.2u 32.6s 0:34.82 100.0% 0+0k 11+36io 0pf+0w - - labrat# ls | wc - 522 522 3317 - -Without soft updates: - - labrat# time ./MAKEDEV std - 2.0u 40.5s 0:42.53 100.0% 0+0k 11+1221io 0pf+0w - - labrat# ls | wc - 522 522 3317 - -Of course, some of the system time is being pushed -to the syncer process, but that is a different story. - -To show a benchmark designed to highlight the soft update code -consider a tar of zero-sized files and an rm -rf of a directory tree -that has at least 50 files or so at each level. Running a test with -a directory tree containing 28 directories holding 202 empty files -produces the following numbers: - -With soft updates: -tar: 0.0u 0.5s 0:00.65 76.9% 0+0k 0+44io 0pf+0w (0 sync, 33 async writes) -rm: 0.0u 0.2s 0:00.20 100.0% 0+0k 0+37io 0pf+0w (0 sync, 72 async writes) - -Normal filesystem: -tar: 0.0u 1.1s 0:07.27 16.5% 0+0k 60+586io 0pf+0w (523 sync, 0 async writes) -rm: 0.0u 0.5s 0:01.84 29.3% 0+0k 0+318io 0pf+0w (258 sync, 65 async writes) - -The large reduction in writes is because inodes are clustered, so -most of a block gets allocated, then the whole block is written -out once rather than having the same block written once for each -inode allocated from it. Similarly each directory block is written -once rather than once for each new directory entry. Effectively -what the update code is doing is allocating a bunch of inodes -and directory entries without writing anything, then ensuring that -the block containing the inodes is written first followed by the -directory block that references them. If there were data in the -files it would further ensure that the data blocks were written -before their inodes claimed them. - -Copyright Restrictions - -Please familiarize yourself with the copyright restrictions -contained at the top of either the sys/ufs/ffs/softdep.h or -sys/ufs/ffs/ffs_softdep.c file. The key provision is similar -to the one used by the DB 2.0 package and goes as follows: - - Redistributions in any form must be accompanied by information - on how to obtain complete source code for any accompanying - software that uses the this software. This source code must - either be included in the distribution or be available for - no more than the cost of distribution plus a nominal fee, - and must be freely redistributable under reasonable - conditions. For an executable file, complete source code - means the source code for all modules it contains. It does - not mean source code for modules or files that typically - accompany the operating system on which the executable file - runs, e.g., standard library modules or system header files. - -The idea is to allow those of you freely redistributing your source -to use it while retaining for myself the right to peddle it for -money to the commercial UNIX vendors. Note that I have included a -stub file ffs_softdep.c.stub that is freely redistributable so that -you can put in all the necessary hooks to run the full soft updates -code, but still allow vendors that want to maintain proprietary -source to have a working system. I do plan to release the code with -a `Berkeley style' copyright once I have peddled it around to the -commercial vendors. If you have concerns about this copyright, -feel free to contact me with them and we can try to resolve any -difficulties. - -Soft Dependency Operation - -The soft update implementation does NOT require ANY changes -to the on-disk format of your filesystems. Furthermore it is -not used by default for any filesystems. It must be enabled on -a filesystem by filesystem basis by running tunefs to set a -bit in the superblock indicating that the filesystem should be -managed using soft updates. If you wish to stop using -soft updates due to performance or reliability reasons, -you can simply run tunefs on it again to turn off the bit and -revert to normal operation. The additional dynamic memory load -placed on the kernel malloc arena is approximately equal to -the amount of memory used by vnodes plus inodes (for a system -with 1000 vnodes, the additional peak memory load is about 300K). - -Kernel Changes - -There are two new changes to the kernel functionality that are not -contained in in the soft update files. The first is a `trickle -sync' facility running in the kernel as process 3. This trickle -sync process replaces the traditional `update' program (which should -be commented out of the /etc/rc startup script). When a vnode is -first written it is placed 30 seconds down on the trickle sync -queue. If it still exists and has dirty data when it reaches the -top of the queue, it is sync'ed. This approach evens out the load -on the underlying I/O system and avoids writing short-lived files. -The papers on trickle-sync tend to favor aging based on buffers -rather than files. However, I sync on file age rather than buffer -age because the data structures are much smaller as there are -typically far fewer files than buffers. Although this can make the -I/O spikey when a big file times out, it is still much better than -the wholesale sync's that were happening before. It also adapts -much better to the soft update code where I want to control -aging to improve performance (inodes age in 10 seconds, directories -in 15 seconds, files in 30 seconds). This ensures that most -dependencies are gone (e.g., inodes are written when directory -entries want to go to disk) reducing the amount of rollback that -is needed. - -The other main kernel change is to split the vnode freelist into -two separate lists. One for vnodes that are still being used to -identify buffers and the other for those vnodes no longer identifying -any buffers. The latter list is used by getnewvnode in preference -to the former. - -Packaging of Kernel Changes - -The sys subdirectory contains the changes and additions to the -kernel. My goal in writing this code was to minimize the changes -that need to be made to the kernel. Thus, most of the new code -is contained in the two new files softdep.h and ffs_softdep.c. -The rest of the kernel changes are simply inserting hooks to -call into these two new files. Although there has been some -structural reorganization of the filesystem code to accommodate -gathering the information required by the soft update code, -the actual ordering of filesystem operations when soft updates -are disabled is unchanged. - -The kernel changes are packaged as a set of diffs. As I am -doing my development in BSD/OS, the diffs are relative to the -BSD/OS versions of the files. Because BSD/OS recently had -4.4BSD-Lite2 merged into it, the Lite2 files are a good starting -point for figuring out the changes. There are 40 files that -require change plus the two new files. Most of these files have -only a few lines of changes in them. However, four files have -fairly extensive changes: kern/vfs_subr.c, ufs/ufs/ufs_lookup.c, -ufs/ufs/ufs_vnops.c, and ufs/ffs/ffs_alloc.c. For these four -files, I have provided the original Lite2 version, the Lite2 -version with the diffs merged in, and the diffs between the -BSD/OS and merged version. Even so, I expect that there will -be some difficulty in doing the merge; I am certainly willing -to assist in helping get the code merged into your system. - -Packaging of Utility Changes - -The utilities subdirectory contains the changes and additions -to the utilities. There are diffs to three utilities enclosed: - - tunefs - add a flag to enable and disable soft updates - - mount - print out whether soft updates are enabled and - also statistics on number of sync and async writes - - fsck - tighter checks on acceptable errors and a slightly - different policy for what to put in lost+found on - filesystems using soft updates - -In addition you should recompile vmstat so as to get reports -on the 13 new memory types used by the soft update code. -It is not necessary to use the new version of fsck, however it -would aid in my debugging if you do. Also, because of the time -lag between deleting a directory entry and the inode it -references, you will find a lot more files showing up in your -lost+found if you do not use the new version. Note that the -new version checks for the soft update flag in the superblock -and only uses the new algorithms if it is set. So, it will run -unchanged on the filesystems that are not using soft updates. - -Operation - -Once you have booted a kernel that incorporates the soft update -code and installed the updated utilities, do the following: - -1) Comment out the update program in /etc/rc. - -2) Run `tunefs -n enable' on one or more test filesystems. - -3) Mount these filesystems and then type `mount' to ensure that - they have been enabled for soft updates. - -4) Copy the test directory to a softdep filesystem, chdir into - it and run `./doit'. You may want to check out each of the - three subtests individually first: doit1 - andrew benchmarks, - doit2 - copy and removal of /etc, doit3 - find from /. - -==== -Additional notes from Feb 13 - -hen removing huge directories of files, it is possible to get -the incore state arbitrarily far ahead of the disk. Maintaining -all the associated depedency information can exhaust the kernel -malloc arena. To avoid this senario, I have put some limits on -the soft update code so that it will not be allowed to rampage -through all of the kernel memory. I enclose below the relevant -patches to vnode.h and vfs_subr.c (which allow the soft update -code to speed up the filesystem syncer process). I have also -included the diffs for ffs_softdep.c. I hope to make a pass over -ffs_softdep.c to isolate the differences with my standard version -so that these diffs are less painful to incorporate. - -Since I know you like to play with tuning, I have put the relevant -knobs on sysctl debug variables. The tuning knobs can be viewed -with `sysctl debug' and set with `sysctl -w debug.<name>=value'. -The knobs are as follows: - - debug.max_softdeps - limit on any given resource - debug.tickdelay - ticks to delay before allocating - debug.max_limit_hit - number of times tickdelay imposed - debug.rush_requests - number of rush requests to filesystem syncer - -The max_softdeps limit is derived from vnodesdesired which in -turn is sized based on the amount of memory on the machine. -When the limit is hit, a process requesting a resource first -tries to speed up the filesystem syncer process. Such a -request is recorded as a rush_request. After syncdelay / 2 -unserviced rush requests (typically 15) are in the filesystem -syncers queue (i.e., it is more than 15 seconds behind in its -work), the process requesting the memory is put to sleep for -tickdelay seconds. Such a delay is recorded in max_limit_hit. -Following this delay it is granted its memory without further -delay. I have tried the following experiments in which I -delete an MH directory containing 16,703 files: - -Run # 1 2 3 - -max_softdeps 4496 4496 4496 -tickdelay 100 == 1 sec 20 == 0.2 sec 2 == 0.02 sec -max_limit_hit 16 == 16 sec 27 == 5.4 sec 203 == 4.1 sec -rush_requests 147 102 93 -run time 57 sec 46 sec 45 sec -I/O's 781 859 936 - -When run with no limits, it completes in 40 seconds. So, the -time spent in delay is directly added to the bottom line. -Shortening the tick delay does cut down the total running time, -but at the expense of generating more total I/O operations -due to the rush orders being sent to the filesystem syncer. -Although the number of rush orders decreases with a shorter -tick delay, there are more requests in each order, hence the -increase in I/O count. Also, although the I/O count does rise -with a shorter delay, it is still at least an order of magnitude -less than without soft updates. Anyway, you may want to play -around with these value to see what works best and to see if -you can get an insight into how best to tune them. If you get -out of memory panic's, then you have max_softdeps set too high. -The max_limit_hit and rush_requests show be reset to zero -before each run. The minimum legal value for tickdelay is 2 -(if you set it below that, the code will use 2). - - diff --git a/sys/contrib/softupdates/softdep.h b/sys/contrib/softupdates/softdep.h deleted file mode 100644 index 5d5ce5ec5cda..000000000000 --- a/sys/contrib/softupdates/softdep.h +++ /dev/null @@ -1,548 +0,0 @@ -/* - * Copyright 1998 Marshall Kirk McKusick. All Rights Reserved. - * - * The soft updates code is derived from the appendix of a University - * of Michigan technical report (Gregory R. Ganger and Yale N. Patt, - * "Soft Updates: A Solution to the Metadata Update Problem in File - * Systems", CSE-TR-254-95, August 1995). - * - * The following are the copyrights and redistribution conditions that - * apply to this copy of the soft update software. For a license - * to use, redistribute or sell the soft update software under - * conditions other than those described here, please contact the - * author at one of the following addresses: - * - * Marshall Kirk McKusick mckusick@mckusick.com - * 1614 Oxford Street +1-510-843-9542 - * Berkeley, CA 94709-1608 - * USA - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. None of the names of McKusick, Ganger, Patt, or the University of - * Michigan may be used to endorse or promote products derived from - * this software without specific prior written permission. - * 4. Redistributions in any form must be accompanied by information on - * how to obtain complete source code for any accompanying software - * that uses this software. This source code must either be included - * in the distribution or be available for no more than the cost of - * distribution plus a nominal fee, and must be freely redistributable - * under reasonable conditions. For an executable file, complete - * source code means the source code for all modules it contains. - * It does not mean source code for modules or files that typically - * accompany the operating system on which the executable file runs, - * e.g., standard library modules or system header files. - * - * THIS SOFTWARE IS PROVIDED BY MARSHALL KIRK MCKUSICK ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL MARSHALL KIRK MCKUSICK BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)softdep.h 9.6 (McKusick) 2/25/99 - * $Id: softdep.h,v 1.5 1999/03/02 00:19:47 mckusick Exp $ - */ - -#include <sys/queue.h> - -/* - * Allocation dependencies are handled with undo/redo on the in-memory - * copy of the data. A particular data dependency is eliminated when - * it is ALLCOMPLETE: that is ATTACHED, DEPCOMPLETE, and COMPLETE. - * - * ATTACHED means that the data is not currently being written to - * disk. UNDONE means that the data has been rolled back to a safe - * state for writing to the disk. When the I/O completes, the data is - * restored to its current form and the state reverts to ATTACHED. - * The data must be locked throughout the rollback, I/O, and roll - * forward so that the rolled back information is never visible to - * user processes. The COMPLETE flag indicates that the item has been - * written. For example, a dependency that requires that an inode be - * written will be marked COMPLETE after the inode has been written - * to disk. The DEPCOMPLETE flag indicates the completion of any other - * dependencies such as the writing of a cylinder group map has been - * completed. A dependency structure may be freed only when both it - * and its dependencies have completed and any rollbacks that are in - * progress have finished as indicated by the set of ALLCOMPLETE flags - * all being set. The two MKDIR flags indicate additional dependencies - * that must be done when creating a new directory. MKDIR_BODY is - * cleared when the directory data block containing the "." and ".." - * entries has been written. MKDIR_PARENT is cleared when the parent - * inode with the increased link count for ".." has been written. When - * both MKDIR flags have been cleared, the DEPCOMPLETE flag is set to - * indicate that the directory dependencies have been completed. The - * writing of the directory inode itself sets the COMPLETE flag which - * then allows the directory entry for the new directory to be written - * to disk. The RMDIR flag marks a dirrem structure as representing - * the removal of a directory rather than a file. When the removal - * dependencies are completed, additional work needs to be done - * (truncation of the "." and ".." entries, an additional decrement - * of the associated inode, and a decrement of the parent inode). The - * DIRCHG flag marks a diradd structure as representing the changing - * of an existing entry rather than the addition of a new one. When - * the update is complete the dirrem associated with the inode for - * the old name must be added to the worklist to do the necessary - * reference count decrement. The GOINGAWAY flag indicates that the - * data structure is frozen from further change until its dependencies - * have been completed and its resources freed after which it will be - * discarded. The IOSTARTED flag prevents multiple calls to the I/O - * start routine from doing multiple rollbacks. The ONWORKLIST flag - * shows whether the structure is currently linked onto a worklist. - */ -#define ATTACHED 0x0001 -#define UNDONE 0x0002 -#define COMPLETE 0x0004 -#define DEPCOMPLETE 0x0008 -#define MKDIR_PARENT 0x0010 -#define MKDIR_BODY 0x0020 -#define RMDIR 0x0040 -#define DIRCHG 0x0080 -#define GOINGAWAY 0x0100 -#define IOSTARTED 0x0200 -#define ONWORKLIST 0x8000 - -#define ALLCOMPLETE (ATTACHED | COMPLETE | DEPCOMPLETE) - -/* - * The workitem queue. - * - * It is sometimes useful and/or necessary to clean up certain dependencies - * in the background rather than during execution of an application process - * or interrupt service routine. To realize this, we append dependency - * structures corresponding to such tasks to a "workitem" queue. In a soft - * updates implementation, most pending workitems should not wait for more - * than a couple of seconds, so the filesystem syncer process awakens once - * per second to process the items on the queue. - */ - -/* LIST_HEAD(workhead, worklist); -- declared in buf.h */ - -/* - * Each request can be linked onto a work queue through its worklist structure. - * To avoid the need for a pointer to the structure itself, this structure - * MUST be declared FIRST in each type in which it appears! If more than one - * worklist is needed in the structure, then a wk_data field must be added - * and the macros below changed to use it. - */ -struct worklist { - LIST_ENTRY(worklist) wk_list; /* list of work requests */ - unsigned short wk_type; /* type of request */ - unsigned short wk_state; /* state flags */ -}; -#define WK_DATA(wk) ((void *)(wk)) -#define WK_PAGEDEP(wk) ((struct pagedep *)(wk)) -#define WK_INODEDEP(wk) ((struct inodedep *)(wk)) -#define WK_NEWBLK(wk) ((struct newblk *)(wk)) -#define WK_BMSAFEMAP(wk) ((struct bmsafemap *)(wk)) -#define WK_ALLOCDIRECT(wk) ((struct allocdirect *)(wk)) -#define WK_INDIRDEP(wk) ((struct indirdep *)(wk)) -#define WK_ALLOCINDIR(wk) ((struct allocindir *)(wk)) -#define WK_FREEFRAG(wk) ((struct freefrag *)(wk)) -#define WK_FREEBLKS(wk) ((struct freeblks *)(wk)) -#define WK_FREEFILE(wk) ((struct freefile *)(wk)) -#define WK_DIRADD(wk) ((struct diradd *)(wk)) -#define WK_MKDIR(wk) ((struct mkdir *)(wk)) -#define WK_DIRREM(wk) ((struct dirrem *)(wk)) - -/* - * Various types of lists - */ -LIST_HEAD(dirremhd, dirrem); -LIST_HEAD(diraddhd, diradd); -LIST_HEAD(newblkhd, newblk); -LIST_HEAD(inodedephd, inodedep); -LIST_HEAD(allocindirhd, allocindir); -LIST_HEAD(allocdirecthd, allocdirect); -TAILQ_HEAD(allocdirectlst, allocdirect); - -/* - * The "pagedep" structure tracks the various dependencies related to - * a particular directory page. If a directory page has any dependencies, - * it will have a pagedep linked to its associated buffer. The - * pd_dirremhd list holds the list of dirrem requests which decrement - * inode reference counts. These requests are processed after the - * directory page with the corresponding zero'ed entries has been - * written. The pd_diraddhd list maintains the list of diradd requests - * which cannot be committed until their corresponding inode has been - * written to disk. Because a directory may have many new entries - * being created, several lists are maintained hashed on bits of the - * offset of the entry into the directory page to keep the lists from - * getting too long. Once a new directory entry has been cleared to - * be written, it is moved to the pd_pendinghd list. After the new - * entry has been written to disk it is removed from the pd_pendinghd - * list, any removed operations are done, and the dependency structure - * is freed. - */ -#define DAHASHSZ 6 -#define DIRADDHASH(offset) (((offset) >> 2) % DAHASHSZ) -struct pagedep { - struct worklist pd_list; /* page buffer */ -# define pd_state pd_list.wk_state /* check for multiple I/O starts */ - LIST_ENTRY(pagedep) pd_hash; /* hashed lookup */ - struct mount *pd_mnt; /* associated mount point */ - ino_t pd_ino; /* associated file */ - ufs_lbn_t pd_lbn; /* block within file */ - struct dirremhd pd_dirremhd; /* dirrem's waiting for page */ - struct diraddhd pd_diraddhd[DAHASHSZ]; /* diradd dir entry updates */ - struct diraddhd pd_pendinghd; /* directory entries awaiting write */ -}; - -/* - * The "inodedep" structure tracks the set of dependencies associated - * with an inode. One task that it must manage is delayed operations - * (i.e., work requests that must be held until the inodedep's associated - * inode has been written to disk). Getting an inode from its incore - * state to the disk requires two steps to be taken by the filesystem - * in this order: first the inode must be copied to its disk buffer by - * the VOP_UPDATE operation; second the inode's buffer must be written - * to disk. To ensure that both operations have happened in the required - * order, the inodedep maintains two lists. Delayed operations are - * placed on the id_inowait list. When the VOP_UPDATE is done, all - * operations on the id_inowait list are moved to the id_bufwait list. - * When the buffer is written, the items on the id_bufwait list can be - * safely moved to the work queue to be processed. A second task of the - * inodedep structure is to track the status of block allocation within - * the inode. Each block that is allocated is represented by an - * "allocdirect" structure (see below). It is linked onto the id_newinoupdt - * list until both its contents and its allocation in the cylinder - * group map have been written to disk. Once these dependencies have been - * satisfied, it is removed from the id_newinoupdt list and any followup - * actions such as releasing the previous block or fragment are placed - * on the id_inowait list. When an inode is updated (a VOP_UPDATE is - * done), the "inodedep" structure is linked onto the buffer through - * its worklist. Thus, it will be notified when the buffer is about - * to be written and when it is done. At the update time, all the - * elements on the id_newinoupdt list are moved to the id_inoupdt list - * since those changes are now relevant to the copy of the inode in the - * buffer. Also at update time, the tasks on the id_inowait list are - * moved to the id_bufwait list so that they will be executed when - * the updated inode has been written to disk. When the buffer containing - * the inode is written to disk, any updates listed on the id_inoupdt - * list are rolled back as they are not yet safe. Following the write, - * the changes are once again rolled forward and any actions on the - * id_bufwait list are processed (since those actions are now safe). - * The entries on the id_inoupdt and id_newinoupdt lists must be kept - * sorted by logical block number to speed the calculation of the size - * of the rolled back inode (see explanation in initiate_write_inodeblock). - * When a directory entry is created, it is represented by a diradd. - * The diradd is added to the id_inowait list as it cannot be safely - * written to disk until the inode that it represents is on disk. After - * the inode is written, the id_bufwait list is processed and the diradd - * entries are moved to the id_pendinghd list where they remain until - * the directory block containing the name has been written to disk. - * The purpose of keeping the entries on the id_pendinghd list is so that - * the softdep_fsync function can find and push the inode's directory - * name(s) as part of the fsync operation for that file. - */ -struct inodedep { - struct worklist id_list; /* buffer holding inode block */ -# define id_state id_list.wk_state /* inode dependency state */ - LIST_ENTRY(inodedep) id_hash; /* hashed lookup */ - struct fs *id_fs; /* associated filesystem */ - ino_t id_ino; /* dependent inode */ - nlink_t id_nlinkdelta; /* saved effective link count */ - struct dinode *id_savedino; /* saved dinode contents */ - LIST_ENTRY(inodedep) id_deps; /* bmsafemap's list of inodedep's */ - struct buf *id_buf; /* related bmsafemap (if pending) */ - off_t id_savedsize; /* file size saved during rollback */ - struct workhead id_pendinghd; /* entries awaiting directory write */ - struct workhead id_bufwait; /* operations after inode written */ - struct workhead id_inowait; /* operations waiting inode update */ - struct allocdirectlst id_inoupdt; /* updates before inode written */ - struct allocdirectlst id_newinoupdt; /* updates when inode written */ -}; - -/* - * A "newblk" structure is attached to a bmsafemap structure when a block - * or fragment is allocated from a cylinder group. Its state is set to - * DEPCOMPLETE when its cylinder group map is written. It is consumed by - * an associated allocdirect or allocindir allocation which will attach - * themselves to the bmsafemap structure if the newblk's DEPCOMPLETE flag - * is not set (i.e., its cylinder group map has not been written). - */ -struct newblk { - LIST_ENTRY(newblk) nb_hash; /* hashed lookup */ - struct fs *nb_fs; /* associated filesystem */ - ufs_daddr_t nb_newblkno; /* allocated block number */ - int nb_state; /* state of bitmap dependency */ - LIST_ENTRY(newblk) nb_deps; /* bmsafemap's list of newblk's */ - struct bmsafemap *nb_bmsafemap; /* associated bmsafemap */ -}; - -/* - * A "bmsafemap" structure maintains a list of dependency structures - * that depend on the update of a particular cylinder group map. - * It has lists for newblks, allocdirects, allocindirs, and inodedeps. - * It is attached to the buffer of a cylinder group block when any of - * these things are allocated from the cylinder group. It is freed - * after the cylinder group map is written and the state of its - * dependencies are updated with DEPCOMPLETE to indicate that it has - * been processed. - */ -struct bmsafemap { - struct worklist sm_list; /* cylgrp buffer */ - struct buf *sm_buf; /* associated buffer */ - struct allocdirecthd sm_allocdirecthd; /* allocdirect deps */ - struct allocindirhd sm_allocindirhd; /* allocindir deps */ - struct inodedephd sm_inodedephd; /* inodedep deps */ - struct newblkhd sm_newblkhd; /* newblk deps */ -}; - -/* - * An "allocdirect" structure is attached to an "inodedep" when a new block - * or fragment is allocated and pointed to by the inode described by - * "inodedep". The worklist is linked to the buffer that holds the block. - * When the block is first allocated, it is linked to the bmsafemap - * structure associated with the buffer holding the cylinder group map - * from which it was allocated. When the cylinder group map is written - * to disk, ad_state has the DEPCOMPLETE flag set. When the block itself - * is written, the COMPLETE flag is set. Once both the cylinder group map - * and the data itself have been written, it is safe to write the inode - * that claims the block. If there was a previous fragment that had been - * allocated before the file was increased in size, the old fragment may - * be freed once the inode claiming the new block is written to disk. - * This ad_fragfree request is attached to the id_inowait list of the - * associated inodedep (pointed to by ad_inodedep) for processing after - * the inode is written. - */ -struct allocdirect { - struct worklist ad_list; /* buffer holding block */ -# define ad_state ad_list.wk_state /* block pointer state */ - TAILQ_ENTRY(allocdirect) ad_next; /* inodedep's list of allocdirect's */ - ufs_lbn_t ad_lbn; /* block within file */ - ufs_daddr_t ad_newblkno; /* new value of block pointer */ - ufs_daddr_t ad_oldblkno; /* old value of block pointer */ - long ad_newsize; /* size of new block */ - long ad_oldsize; /* size of old block */ - LIST_ENTRY(allocdirect) ad_deps; /* bmsafemap's list of allocdirect's */ - struct buf *ad_buf; /* cylgrp buffer (if pending) */ - struct inodedep *ad_inodedep; /* associated inodedep */ - struct freefrag *ad_freefrag; /* fragment to be freed (if any) */ -}; - -/* - * A single "indirdep" structure manages all allocation dependencies for - * pointers in an indirect block. The up-to-date state of the indirect - * block is stored in ir_savedata. The set of pointers that may be safely - * written to the disk is stored in ir_safecopy. The state field is used - * only to track whether the buffer is currently being written (in which - * case it is not safe to update ir_safecopy). Ir_deplisthd contains the - * list of allocindir structures, one for each block that needs to be - * written to disk. Once the block and its bitmap allocation have been - * written the safecopy can be updated to reflect the allocation and the - * allocindir structure freed. If ir_state indicates that an I/O on the - * indirect block is in progress when ir_safecopy is to be updated, the - * update is deferred by placing the allocindir on the ir_donehd list. - * When the I/O on the indirect block completes, the entries on the - * ir_donehd list are processed by updating their corresponding ir_safecopy - * pointers and then freeing the allocindir structure. - */ -struct indirdep { - struct worklist ir_list; /* buffer holding indirect block */ -# define ir_state ir_list.wk_state /* indirect block pointer state */ - caddr_t ir_saveddata; /* buffer cache contents */ - struct buf *ir_savebp; /* buffer holding safe copy */ - struct allocindirhd ir_donehd; /* done waiting to update safecopy */ - struct allocindirhd ir_deplisthd; /* allocindir deps for this block */ -}; - -/* - * An "allocindir" structure is attached to an "indirdep" when a new block - * is allocated and pointed to by the indirect block described by the - * "indirdep". The worklist is linked to the buffer that holds the new block. - * When the block is first allocated, it is linked to the bmsafemap - * structure associated with the buffer holding the cylinder group map - * from which it was allocated. When the cylinder group map is written - * to disk, ai_state has the DEPCOMPLETE flag set. When the block itself - * is written, the COMPLETE flag is set. Once both the cylinder group map - * and the data itself have been written, it is safe to write the entry in - * the indirect block that claims the block; the "allocindir" dependency - * can then be freed as it is no longer applicable. - */ -struct allocindir { - struct worklist ai_list; /* buffer holding indirect block */ -# define ai_state ai_list.wk_state /* indirect block pointer state */ - LIST_ENTRY(allocindir) ai_next; /* indirdep's list of allocindir's */ - int ai_offset; /* pointer offset in indirect block */ - ufs_daddr_t ai_newblkno; /* new block pointer value */ - ufs_daddr_t ai_oldblkno; /* old block pointer value */ - struct freefrag *ai_freefrag; /* block to be freed when complete */ - struct indirdep *ai_indirdep; /* address of associated indirdep */ - LIST_ENTRY(allocindir) ai_deps; /* bmsafemap's list of allocindir's */ - struct buf *ai_buf; /* cylgrp buffer (if pending) */ -}; - -/* - * A "freefrag" structure is attached to an "inodedep" when a previously - * allocated fragment is replaced with a larger fragment, rather than extended. - * The "freefrag" structure is constructed and attached when the replacement - * block is first allocated. It is processed after the inode claiming the - * bigger block that replaces it has been written to disk. Note that the - * ff_state field is is used to store the uid, so may lose data. However, - * the uid is used only in printing an error message, so is not critical. - * Keeping it in a short keeps the data structure down to 32 bytes. - */ -struct freefrag { - struct worklist ff_list; /* id_inowait or delayed worklist */ -# define ff_state ff_list.wk_state /* owning user; should be uid_t */ - struct vnode *ff_devvp; /* filesystem device vnode */ - struct fs *ff_fs; /* addr of superblock */ - ufs_daddr_t ff_blkno; /* fragment physical block number */ - long ff_fragsize; /* size of fragment being deleted */ - ino_t ff_inum; /* owning inode number */ -}; - -/* - * A "freeblks" structure is attached to an "inodedep" when the - * corresponding file's length is reduced to zero. It records all - * the information needed to free the blocks of a file after its - * zero'ed inode has been written to disk. - */ -struct freeblks { - struct worklist fb_list; /* id_inowait or delayed worklist */ - ino_t fb_previousinum; /* inode of previous owner of blocks */ - struct vnode *fb_devvp; /* filesystem device vnode */ - struct fs *fb_fs; /* addr of superblock */ - off_t fb_oldsize; /* previous file size */ - off_t fb_newsize; /* new file size */ - int fb_chkcnt; /* used to check cnt of blks released */ - uid_t fb_uid; /* uid of previous owner of blocks */ - ufs_daddr_t fb_dblks[NDADDR]; /* direct blk ptrs to deallocate */ - ufs_daddr_t fb_iblks[NIADDR]; /* indirect blk ptrs to deallocate */ -}; - -/* - * A "freefile" structure is attached to an inode when its - * link count is reduced to zero. It marks the inode as free in - * the cylinder group map after the zero'ed inode has been written - * to disk and any associated blocks and fragments have been freed. - */ -struct freefile { - struct worklist fx_list; /* id_inowait or delayed worklist */ - mode_t fx_mode; /* mode of inode */ - ino_t fx_oldinum; /* inum of the unlinked file */ - struct vnode *fx_devvp; /* filesystem device vnode */ - struct fs *fx_fs; /* addr of superblock */ -}; - -/* - * A "diradd" structure is linked to an "inodedep" id_inowait list when a - * new directory entry is allocated that references the inode described - * by "inodedep". When the inode itself is written (either the initial - * allocation for new inodes or with the increased link count for - * existing inodes), the COMPLETE flag is set in da_state. If the entry - * is for a newly allocated inode, the "inodedep" structure is associated - * with a bmsafemap which prevents the inode from being written to disk - * until the cylinder group has been updated. Thus the da_state COMPLETE - * flag cannot be set until the inode bitmap dependency has been removed. - * When creating a new file, it is safe to write the directory entry that - * claims the inode once the referenced inode has been written. Since - * writing the inode clears the bitmap dependencies, the DEPCOMPLETE flag - * in the diradd can be set unconditionally when creating a file. When - * creating a directory, there are two additional dependencies described by - * mkdir structures (see their description below). When these dependencies - * are resolved the DEPCOMPLETE flag is set in the diradd structure. - * If there are multiple links created to the same inode, there will be - * a separate diradd structure created for each link. The diradd is - * linked onto the pg_diraddhd list of the pagedep for the directory - * page that contains the entry. When a directory page is written, - * the pg_diraddhd list is traversed to rollback any entries that are - * not yet ready to be written to disk. If a directory entry is being - * changed (by rename) rather than added, the DIRCHG flag is set and - * the da_previous entry points to the entry that will be "removed" - * once the new entry has been committed. During rollback, entries - * with da_previous are replaced with the previous inode number rather - * than zero. - * - * The overlaying of da_pagedep and da_previous is done to keep the - * structure down to 32 bytes in size on a 32-bit machine. If a - * da_previous entry is present, the pointer to its pagedep is available - * in the associated dirrem entry. If the DIRCHG flag is set, the - * da_previous entry is valid; if not set the da_pagedep entry is valid. - * The DIRCHG flag never changes; it is set when the structure is created - * if appropriate and is never cleared. - */ -struct diradd { - struct worklist da_list; /* id_inowait or id_pendinghd list */ -# define da_state da_list.wk_state /* state of the new directory entry */ - LIST_ENTRY(diradd) da_pdlist; /* pagedep holding directory block */ - doff_t da_offset; /* offset of new dir entry in dir blk */ - ino_t da_newinum; /* inode number for the new dir entry */ - union { - struct dirrem *dau_previous; /* entry being replaced in dir change */ - struct pagedep *dau_pagedep; /* pagedep dependency for addition */ - } da_un; -}; -#define da_previous da_un.dau_previous -#define da_pagedep da_un.dau_pagedep - -/* - * Two "mkdir" structures are needed to track the additional dependencies - * associated with creating a new directory entry. Normally a directory - * addition can be committed as soon as the newly referenced inode has been - * written to disk with its increased link count. When a directory is - * created there are two additional dependencies: writing the directory - * data block containing the "." and ".." entries (MKDIR_BODY) and writing - * the parent inode with the increased link count for ".." (MKDIR_PARENT). - * These additional dependencies are tracked by two mkdir structures that - * reference the associated "diradd" structure. When they have completed, - * they set the DEPCOMPLETE flag on the diradd so that it knows that its - * extra dependencies have been completed. The md_state field is used only - * to identify which type of dependency the mkdir structure is tracking. - * It is not used in the mainline code for any purpose other than consistency - * checking. All the mkdir structures in the system are linked together on - * a list. This list is needed so that a diradd can find its associated - * mkdir structures and deallocate them if it is prematurely freed (as for - * example if a mkdir is immediately followed by a rmdir of the same directory). - * Here, the free of the diradd must traverse the list to find the associated - * mkdir structures that reference it. The deletion would be faster if the - * diradd structure were simply augmented to have two pointers that referenced - * the associated mkdir's. However, this would increase the size of the diradd - * structure from 32 to 64-bits to speed a very infrequent operation. - */ -struct mkdir { - struct worklist md_list; /* id_inowait or buffer holding dir */ -# define md_state md_list.wk_state /* type: MKDIR_PARENT or MKDIR_BODY */ - struct diradd *md_diradd; /* associated diradd */ - struct buf *md_buf; /* MKDIR_BODY: buffer holding dir */ - LIST_ENTRY(mkdir) md_mkdirs; /* list of all mkdirs */ -}; -LIST_HEAD(mkdirlist, mkdir) mkdirlisthd; - -/* - * A "dirrem" structure describes an operation to decrement the link - * count on an inode. The dirrem structure is attached to the pg_dirremhd - * list of the pagedep for the directory page that contains the entry. - * It is processed after the directory page with the deleted entry has - * been written to disk. - * - * The overlaying of dm_pagedep and dm_dirinum is done to keep the - * structure down to 32 bytes in size on a 32-bit machine. It works - * because they are never used concurrently. - */ -struct dirrem { - struct worklist dm_list; /* delayed worklist */ -# define dm_state dm_list.wk_state /* state of the old directory entry */ - LIST_ENTRY(dirrem) dm_next; /* pagedep's list of dirrem's */ - struct mount *dm_mnt; /* associated mount point */ - ino_t dm_oldinum; /* inum of the removed dir entry */ - union { - struct pagedep *dmu_pagedep; /* pagedep dependency for remove */ - ino_t dmu_dirinum; /* parent inode number (for rmdir) */ - } dm_un; -}; -#define dm_pagedep dm_un.dmu_pagedep -#define dm_dirinum dm_un.dmu_dirinum diff --git a/sys/dev/aic7xxx/aic7xxx.c b/sys/dev/aic7xxx/aic7xxx.c index b0dbf367c293..8da50f326580 100644 --- a/sys/dev/aic7xxx/aic7xxx.c +++ b/sys/dev/aic7xxx/aic7xxx.c @@ -36,7 +36,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: aic7xxx.c,v 1.16.2.6 1999/04/19 21:37:50 gibbs Exp $ + * $Id: aic7xxx.c,v 1.16.2.7 1999/05/07 00:43:26 ken Exp $ */ /* * A few notes on features of the driver. @@ -192,7 +192,7 @@ typedef enum { SEARCH_REMOVE } ahc_search_action; -u_long ahc_unit = 0; +u_long ahc_unit; #ifdef AHC_DEBUG static int ahc_debug = AHC_DEBUG; @@ -202,6 +202,11 @@ static int ahc_debug = AHC_DEBUG; void ahc_pci_intr(struct ahc_softc *ahc); #endif +static int ahcinitscbdata(struct ahc_softc *ahc); +static void ahcfiniscbdata(struct ahc_softc *ahc); + +static bus_dmamap_callback_t ahcdmamapcb; + #if UNUSED static void ahc_dump_targcmd(struct target_cmd *cmd); #endif @@ -221,11 +226,7 @@ static void ahc_poll(struct cam_sim *sim); static void ahc_setup_data(struct ahc_softc *ahc, struct ccb_scsiio *csio, struct scb *scb); static void ahc_freeze_devq(struct ahc_softc *ahc, struct cam_path *path); -static struct scb * - ahc_get_scb(struct ahc_softc *ahc); -static void ahc_free_scb(struct ahc_softc *ahc, struct scb *scb); -static struct scb * - ahc_alloc_scb(struct ahc_softc *ahc); +static void ahcallocscbs(struct ahc_softc *ahc); static void ahc_scb_devinfo(struct ahc_softc *ahc, struct ahc_devinfo *devinfo, struct scb *scb); @@ -350,8 +351,8 @@ static __inline void ahc_busy_tcl(struct ahc_softc *ahc, struct scb *scb); static __inline void ahc_freeze_ccb(union ccb* ccb); static __inline cam_status ahc_ccb_status(union ccb* ccb); -static __inline void ahc_set_ccb_status(union ccb* ccb, - cam_status status); +static __inline void ahcsetccbstatus(union ccb* ccb, + cam_status status); static __inline void ahc_run_tqinfifo(struct ahc_softc *ahc); static __inline struct ahc_initiator_tinfo * @@ -359,11 +360,16 @@ static __inline struct ahc_initiator_tinfo * char channel, u_int our_id, u_int target, struct tmode_tstate **tstate); +static __inline void + ahcfreescb(struct ahc_softc *ahc, struct scb *scb); +static __inline struct scb * + ahcgetscb(struct ahc_softc *ahc); static __inline u_int32_t ahc_hscb_busaddr(struct ahc_softc *ahc, u_int index) { - return (ahc->hscb_busaddr + (sizeof(struct hardware_scb) * index)); + return (ahc->scb_data->hscb_busaddr + + (sizeof(struct hardware_scb) * index)); } #define AHC_BUSRESET_DELAY 25 /* Reset delay in us */ @@ -440,7 +446,7 @@ ahc_ccb_status(union ccb* ccb) } static __inline void -ahc_set_ccb_status(union ccb* ccb, cam_status status) +ahcsetccbstatus(union ccb* ccb, cam_status status) { ccb->ccb_h.status &= ~CAM_STATUS_MASK; ccb->ccb_h.status |= status; @@ -491,6 +497,62 @@ ahc_run_tqinfifo(struct ahc_softc *ahc) } } +/* + * An scb (and hence an scb entry on the board) is put onto the + * free list. + */ +static __inline void +ahcfreescb(struct ahc_softc *ahc, struct scb *scb) +{ + struct hardware_scb *hscb; + int opri; + + hscb = scb->hscb; + + opri = splcam(); + + if ((ahc->flags & AHC_RESOURCE_SHORTAGE) != 0 + && (scb->ccb->ccb_h.status & CAM_RELEASE_SIMQ) == 0) { + scb->ccb->ccb_h.status |= CAM_RELEASE_SIMQ; + ahc->flags &= ~AHC_RESOURCE_SHORTAGE; + } + + /* Clean up for the next user */ + scb->flags = SCB_FREE; + hscb->control = 0; + hscb->status = 0; + + SLIST_INSERT_HEAD(&ahc->scb_data->free_scbs, scb, links); + splx(opri); +} + +/* + * Get a free scb, either one already assigned to a hardware slot + * on the adapter or one that will require an SCB to be paged out before + * use. If there are none, see if we can allocate a new SCB. Otherwise + * either return an error or sleep. + */ +static __inline struct scb * +ahcgetscb(struct ahc_softc *ahc) +{ + struct scb *scbp; + int opri; + + opri = splcam(); + if ((scbp = SLIST_FIRST(&ahc->scb_data->free_scbs))) { + SLIST_REMOVE_HEAD(&ahc->scb_data->free_scbs, links); + } else { + ahcallocscbs(ahc); + scbp = SLIST_FIRST(&ahc->scb_data->free_scbs); + if (scbp != NULL) + SLIST_REMOVE_HEAD(&ahc->scb_data->free_scbs, links); + } + + splx(opri); + + return (scbp); +} + char * ahc_name(struct ahc_softc *ahc) { @@ -518,8 +580,8 @@ ahc_print_scb(struct scb *scb) hscb->SG_count, hscb->SG_pointer); printf(" sg_addr:%lx sg_len:%ld\n", - scb->ahc_dma[0].addr, - scb->ahc_dma[0].len); + scb->sg_list[0].addr, + scb->sg_list[0].len); printf(" cdb:%x %x %x %x %x %x %x %x %x %x %x %x\n", hscb->cmdstore[0], hscb->cmdstore[1], hscb->cmdstore[2], hscb->cmdstore[3], hscb->cmdstore[4], hscb->cmdstore[5], @@ -573,8 +635,9 @@ static struct ahc_syncrate ahc_syncrates[] = { * Allocate a controller structure for a new device and initialize it. */ struct ahc_softc * -ahc_alloc(int unit, u_int32_t iobase, vm_offset_t maddr, ahc_chip chip, - ahc_feature features, ahc_flag flags, struct scb_data *scb_data) +ahc_alloc(int unit, u_int32_t io_base, vm_offset_t maddr, + bus_dma_tag_t parent_dmat, ahc_chip chip, ahc_feature features, + ahc_flag flags, struct scb_data *scb_data) { /* * find unit and check we have that many defined @@ -595,19 +658,12 @@ ahc_alloc(int unit, u_int32_t iobase, vm_offset_t maddr, ahc_chip chip, alloc_size = sizeof(struct ahc_softc); ahc = malloc(alloc_size, M_DEVBUF, M_NOWAIT); if (!ahc) { - printf("ahc%d: cannot malloc!\n", unit); + printf("ahc%d: cannot malloc softc!\n", ahc->unit); return NULL; } bzero(ahc, alloc_size); - if (scb_data == NULL) { - struct full_ahc_softc* full_softc = (struct full_ahc_softc*)ahc; - ahc->scb_data = &full_softc->scb_data_storage; - STAILQ_INIT(&ahc->scb_data->free_scbs); - } else - ahc->scb_data = scb_data; LIST_INIT(&ahc->pending_ccbs); ahc->unit = unit; - /* * XXX This should be done by the bus specific probe stubs with * the bus layer providing the bsh and tag. Unfortunately, @@ -619,17 +675,23 @@ ahc_alloc(int unit, u_int32_t iobase, vm_offset_t maddr, ahc_chip chip, ahc->bsh = (bus_space_handle_t)maddr; } else { ahc->tag = I386_BUS_SPACE_IO; - ahc->bsh = (bus_space_handle_t)iobase; + ahc->bsh = (bus_space_handle_t)io_base; } ahc->chip = chip; ahc->features = features; - ahc->flags = flags; + ahc->flags = flags; + ahc->parent_dmat = parent_dmat; + if (scb_data == NULL) { + struct full_ahc_softc* full_softc = (struct full_ahc_softc*)ahc; + ahc->scb_data = &full_softc->scb_data_storage; + } else + ahc->scb_data = scb_data; + ahc->unpause = (ahc_inb(ahc, HCNTRL) & IRQMS) | INTEN; /* The IRQMS bit is only valid on VL and EISA chips */ if ((ahc->chip & AHC_PCI) != 0) ahc->unpause &= ~IRQMS; ahc->pause = ahc->unpause | PAUSE; - return (ahc); } @@ -637,10 +699,239 @@ void ahc_free(ahc) struct ahc_softc *ahc; { + ahcfiniscbdata(ahc); + switch (ahc->init_level) { + case 3: + bus_dmamap_unload(ahc->shared_data_dmat, + ahc->shared_data_dmamap); + case 2: + bus_dmamem_free(ahc->shared_data_dmat, ahc->qoutfifo, + ahc->shared_data_dmamap); + bus_dmamap_destroy(ahc->shared_data_dmat, + ahc->shared_data_dmamap); + case 1: + bus_dma_tag_destroy(ahc->buffer_dmat); + break; + } + + /* + * XXX We punt on releasing our register space and interrupt. + * This is addressed in -current. + */ + free(ahc, M_DEVBUF); return; } +static int +ahcinitscbdata(struct ahc_softc *ahc) +{ + struct scb_data *scb_data; + int i; + + scb_data = ahc->scb_data; + SLIST_INIT(&scb_data->free_scbs); + SLIST_INIT(&scb_data->sg_maps); + + /* Allocate SCB resources */ + scb_data->scbarray = + (struct scb *)malloc(sizeof(struct scb) * AHC_SCB_MAX, + M_DEVBUF, M_NOWAIT); + if (scb_data->scbarray == NULL) + return (ENOMEM); + bzero(scb_data->scbarray, sizeof(struct scb) * AHC_SCB_MAX); + + /* Determine the number of hardware SCBs and initialize them */ + + scb_data->maxhscbs = ahc_probe_scbs(ahc); + /* SCB 0 heads the free list */ + ahc_outb(ahc, FREE_SCBH, 0); + for (i = 0; i < ahc->scb_data->maxhscbs; i++) { + ahc_outb(ahc, SCBPTR, i); + + /* Clear the control byte. */ + ahc_outb(ahc, SCB_CONTROL, 0); + + /* Set the next pointer */ + ahc_outb(ahc, SCB_NEXT, i+1); + + /* Make the tag number invalid */ + ahc_outb(ahc, SCB_TAG, SCB_LIST_NULL); + } + + /* Make sure that the last SCB terminates the free list */ + ahc_outb(ahc, SCBPTR, i-1); + ahc_outb(ahc, SCB_NEXT, SCB_LIST_NULL); + + /* Ensure we clear the 0 SCB's control byte. */ + ahc_outb(ahc, SCBPTR, 0); + ahc_outb(ahc, SCB_CONTROL, 0); + + scb_data->maxhscbs = i; + + if (ahc->scb_data->maxhscbs == 0) + panic("%s: No SCB space found", ahc_name(ahc)); + + /* + * Create our DMA tags. These tags define the kinds of device + * accessable memory allocations and memory mappings we will + * need to perform during normal operation. + * + * Unless we need to further restrict the allocation, we rely + * on the restrictions of the parent dmat, hence the common + * use of MAXADDR and MAXSIZE. + */ + + /* DMA tag for our hardware scb structures */ + if (bus_dma_tag_create(ahc->parent_dmat, /*alignment*/0, /*boundary*/0, + /*lowaddr*/BUS_SPACE_MAXADDR, + /*highaddr*/BUS_SPACE_MAXADDR, + /*filter*/NULL, /*filterarg*/NULL, + AHC_SCB_MAX * sizeof(struct hardware_scb), + /*nsegments*/1, + /*maxsegsz*/BUS_SPACE_MAXSIZE_32BIT, + /*flags*/0, &scb_data->hscb_dmat) != 0) { + goto error_exit; + } + + scb_data->init_level++; + + /* Allocation for our ccbs */ + if (bus_dmamem_alloc(scb_data->hscb_dmat, (void **)&scb_data->hscbs, + BUS_DMA_NOWAIT, &scb_data->hscb_dmamap) != 0) { + goto error_exit; + } + + scb_data->init_level++; + + /* And permanently map them */ + bus_dmamap_load(scb_data->hscb_dmat, scb_data->hscb_dmamap, + scb_data->hscbs, + AHC_SCB_MAX * sizeof(struct hardware_scb), + ahcdmamapcb, &scb_data->hscb_busaddr, /*flags*/0); + + scb_data->init_level++; + + /* DMA tag for our sense buffers */ + if (bus_dma_tag_create(ahc->parent_dmat, /*alignment*/0, /*boundary*/0, + /*lowaddr*/BUS_SPACE_MAXADDR, + /*highaddr*/BUS_SPACE_MAXADDR, + /*filter*/NULL, /*filterarg*/NULL, + AHC_SCB_MAX * sizeof(struct scsi_sense_data), + /*nsegments*/1, + /*maxsegsz*/BUS_SPACE_MAXSIZE_32BIT, + /*flags*/0, &scb_data->sense_dmat) != 0) { + goto error_exit; + } + + scb_data->init_level++; + + /* Allocate them */ + if (bus_dmamem_alloc(scb_data->sense_dmat, (void **)&scb_data->sense, + BUS_DMA_NOWAIT, &scb_data->sense_dmamap) != 0) { + goto error_exit; + } + + scb_data->init_level++; + + /* And permanently map them */ + bus_dmamap_load(scb_data->sense_dmat, scb_data->sense_dmamap, + scb_data->sense, + AHC_SCB_MAX * sizeof(struct scsi_sense_data), + ahcdmamapcb, &scb_data->sense_busaddr, /*flags*/0); + + scb_data->init_level++; + + /* DMA tag for our S/G structures. We allocate in page sized chunks */ + if (bus_dma_tag_create(ahc->parent_dmat, /*alignment*/0, /*boundary*/0, + /*lowaddr*/BUS_SPACE_MAXADDR, + /*highaddr*/BUS_SPACE_MAXADDR, + /*filter*/NULL, /*filterarg*/NULL, + PAGE_SIZE, /*nsegments*/1, + /*maxsegsz*/BUS_SPACE_MAXSIZE_32BIT, + /*flags*/0, &scb_data->sg_dmat) != 0) { + goto error_exit; + } + + scb_data->init_level++; + + /* Perform initial CCB allocation */ + bzero(scb_data->hscbs, AHC_SCB_MAX * sizeof(struct hardware_scb)); + ahcallocscbs(ahc); + + if (scb_data->numscbs == 0) { + printf("%s: ahc_init_scb_data - " + "Unable to allocate initial scbs\n", + ahc_name(ahc)); + goto error_exit; + } + + /* + * Note that we were successfull + */ + return 0; + +error_exit: + + return ENOMEM; +} + +static void +ahcfiniscbdata(struct ahc_softc *ahc) +{ + struct scb_data *scb_data; + + scb_data = ahc->scb_data; + + switch (scb_data->init_level) { + default: + case 7: + { + struct sg_map_node *sg_map; + + while ((sg_map = SLIST_FIRST(&scb_data->sg_maps))!= NULL) { + SLIST_REMOVE_HEAD(&scb_data->sg_maps, links); + bus_dmamap_unload(scb_data->sg_dmat, + sg_map->sg_dmamap); + bus_dmamem_free(scb_data->sg_dmat, sg_map->sg_vaddr, + sg_map->sg_dmamap); + free(sg_map, M_DEVBUF); + } + bus_dma_tag_destroy(scb_data->sg_dmat); + } + case 6: + bus_dmamap_unload(scb_data->sense_dmat, + scb_data->sense_dmamap); + case 5: + bus_dmamem_free(scb_data->sense_dmat, scb_data->sense, + scb_data->sense_dmamap); + bus_dmamap_destroy(scb_data->sense_dmat, + scb_data->sense_dmamap); + case 4: + bus_dma_tag_destroy(scb_data->sense_dmat); + case 3: + bus_dmamap_unload(scb_data->hscb_dmat, scb_data->hscb_dmamap); + case 2: + bus_dmamem_free(scb_data->hscb_dmat, scb_data->hscbs, + scb_data->hscb_dmamap); + bus_dmamap_destroy(scb_data->hscb_dmat, scb_data->hscb_dmamap); + case 1: + bus_dma_tag_destroy(scb_data->hscb_dmat); + break; + } + if (scb_data->scbarray != NULL) + free(scb_data->scbarray, M_DEVBUF); +} + +static void +ahcdmamapcb(void *arg, bus_dma_segment_t *segs, int nseg, int error) +{ + bus_addr_t *baddr; + + baddr = (bus_addr_t *)arg; + *baddr = segs->ds_addr; +} + int ahc_reset(struct ahc_softc *ahc) { @@ -822,18 +1113,27 @@ ahc_update_target_msg_request(struct ahc_softc *ahc, if (ahc->targ_msg_req != targ_msg_req_orig) { /* Update the message request bit for this target */ - if (!paused) { - pause_sequencer(ahc); - DELAY(1000); - } + if ((ahc->features & AHC_HS_MAILBOX) != 0) { + if (paused) { + ahc_outb(ahc, TARGET_MSG_REQUEST, + ahc->targ_msg_req & 0xFF); + ahc_outb(ahc, TARGET_MSG_REQUEST + 1, + (ahc->targ_msg_req >> 8) & 0xFF); + } else { + ahc_outb(ahc, HS_MAILBOX, + 0x01 << HOST_MAILBOX_SHIFT); + } + } else { + if (!paused) + pause_sequencer(ahc); - ahc_outb(ahc, TARGET_MSG_REQUEST, ahc->targ_msg_req & 0xFF); - ahc_outb(ahc, TARGET_MSG_REQUEST + 1, - (ahc->targ_msg_req >> 8) & 0xFF); + ahc_outb(ahc, TARGET_MSG_REQUEST, + ahc->targ_msg_req & 0xFF); + ahc_outb(ahc, TARGET_MSG_REQUEST + 1, + (ahc->targ_msg_req >> 8) & 0xFF); - if (!paused) { - unpause_sequencer(ahc, /*unpause always*/FALSE); - DELAY(1000); + if (!paused) + unpause_sequencer(ahc, /*unpause always*/FALSE); } } } @@ -1083,11 +1383,13 @@ ahc_attach(struct ahc_softc *ahc) struct cam_path *path; struct cam_path *path2; int count; + int s; count = 0; sim = NULL; sim2 = NULL; + s = splcam(); /* * Attach secondary channel first if the user has * declared it the primary channel. @@ -1103,7 +1405,7 @@ ahc_attach(struct ahc_softc *ahc) /* * Create the device queue for our SIM(s). */ - devq = cam_simq_alloc(ahc->scb_data->maxscbs); + devq = cam_simq_alloc(AHC_SCB_MAX); if (devq == NULL) goto fail; @@ -1111,7 +1413,7 @@ ahc_attach(struct ahc_softc *ahc) * Construct our first channel SIM entry */ sim = cam_sim_alloc(ahc_action, ahc_poll, "ahc", ahc, ahc->unit, - 1, ahc->scb_data->maxscbs, devq); + 1, AHC_SCB_MAX, devq); if (sim == NULL) { cam_simq_free(devq); goto fail; @@ -1143,7 +1445,7 @@ ahc_attach(struct ahc_softc *ahc) if (ahc->features & AHC_TWIN) { sim2 = cam_sim_alloc(ahc_action, ahc_poll, "ahc", ahc, ahc->unit, 1, - ahc->scb_data->maxscbs, devq); + AHC_SCB_MAX, devq); if (sim2 == NULL) { printf("ahc_attach: Unable to attach second " @@ -1179,6 +1481,7 @@ ahc_attach(struct ahc_softc *ahc) xpt_action((union ccb *)&csa); count++; } + fail: if ((ahc->flags & AHC_CHANNEL_B_PRIMARY) != 0) { ahc->sim_b = sim; @@ -1191,6 +1494,7 @@ fail: ahc->sim_b = sim2; ahc->path_b = path2; } + splx(s); return (count); } @@ -1299,8 +1603,9 @@ ahc_intr(void *arg) scb_index = ahc->qoutfifo[ahc->qoutfifonext]; ahc->qoutfifo[ahc->qoutfifonext++] = SCB_LIST_NULL; - scb = ahc->scb_data->scbarray[scb_index]; - if (!scb || !(scb->flags & SCB_ACTIVE)) { + scb = &ahc->scb_data->scbarray[scb_index]; + if (scb_index >= ahc->scb_data->numscbs + || (scb->flags & SCB_ACTIVE) == 0) { printf("%s: WARNING no command for scb %d " "(cmdcmplt)\nQOUTPOS = %d\n", ahc_name(ahc), scb_index, @@ -1787,6 +2092,12 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) ahc_outb(ahc, SCSISIGO, ahc_inb(ahc, LASTPHASE) | ATNO); break; } + case UPDATE_TMSG_REQ: + ahc_outb(ahc, TARGET_MSG_REQUEST, ahc->targ_msg_req & 0xFF); + ahc_outb(ahc, TARGET_MSG_REQUEST + 1, + (ahc->targ_msg_req >> 8) & 0xFF); + ahc_outb(ahc, HS_MAILBOX, 0); + break; case SEND_REJECT: { u_int rejbyte = ahc_inb(ahc, ACCUM); @@ -1844,7 +2155,7 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) * the in kernel copy directly. */ scb_index = ahc_inb(ahc, SCB_TAG); - scb = ahc->scb_data->scbarray[scb_index]; + scb = &ahc->scb_data->scbarray[scb_index]; hscb = scb->hscb; /* @@ -1853,7 +2164,8 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) * this if needed. */ ahc_outb(ahc, RETURN_1, 0); - if (!(scb && (scb->flags & SCB_ACTIVE))) { + if (!(scb_index < ahc->scb_data->numscbs + && (scb->flags & SCB_ACTIVE) != 0)) { printf("%s:%c:%d: ahc_intr - referenced scb " "not valid during seqint 0x%x scb(%d)\n", ahc_name(ahc), devinfo.channel, @@ -1869,10 +2181,10 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) * complete. */ scb->flags &= ~SCB_SENSE; - ahc_set_ccb_status(scb->ccb, CAM_AUTOSENSE_FAIL); + ahcsetccbstatus(scb->ccb, CAM_AUTOSENSE_FAIL); break; } - ahc_set_ccb_status(scb->ccb, CAM_SCSI_STATUS_ERROR); + ahcsetccbstatus(scb->ccb, CAM_SCSI_STATUS_ERROR); /* Freeze the queue unit the client sees the error. */ ahc_freeze_devq(ahc, scb->ccb->ccb_h.path); ahc_freeze_ccb(scb->ccb); @@ -1894,12 +2206,13 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) #endif if ((csio->ccb_h.flags & CAM_DIS_AUTOSENSE) == 0) { - struct ahc_dma_seg *sg = scb->ahc_dma; - struct scsi_sense *sc = - (struct scsi_sense *)(&hscb->cmdstore); + struct ahc_dma_seg *sg; + struct scsi_sense *sc; struct ahc_initiator_tinfo *tinfo; struct tmode_tstate *tstate; + sg = scb->sg_list; + sc = (struct scsi_sense *)(&hscb->cmdstore); /* * Save off the residual if there is one. */ @@ -1912,24 +2225,18 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) printf("Sending Sense\n"); } #endif - /* - * bzero from the sense data before having - * the drive fill it. The SCSI spec mandates - * that any untransfered data should be - * assumed to be zero. - */ - bzero(&csio->sense_data, - sizeof(csio->sense_data)); + sg->addr = ahc->scb_data->sense_busaddr + + (hscb->tag*sizeof(struct scsi_sense_data)); + sg->len = MIN(sizeof(struct scsi_sense_data), + csio->sense_len); + sc->opcode = REQUEST_SENSE; sc->byte2 = SCB_LUN(scb) << 5; sc->unused[0] = 0; sc->unused[1] = 0; - sc->length = csio->sense_len; + sc->length = sg->len; sc->control = 0; - sg->addr = vtophys(&csio->sense_data); - sg->len = csio->sense_len; - /* * Would be nice to preserve DISCENB here, * but due to the way we page SCBs, we can't. @@ -1953,7 +2260,7 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) /*paused*/TRUE); hscb->status = 0; hscb->SG_count = 1; - hscb->SG_pointer = scb->ahc_dmaphys; + hscb->SG_pointer = scb->sg_list_phys; hscb->data = sg->addr; hscb->datalen = sg->len; hscb->cmdpointer = hscb->cmdstore_busaddr; @@ -2033,7 +2340,7 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) u_int scb_index; scb_index = ahc_inb(ahc, SCB_TAG); - scb = ahc->scb_data->scbarray[scb_index]; + scb = &ahc->scb_data->scbarray[scb_index]; if (bus_phase == P_MESGOUT) ahc_setup_initiator_msgout(ahc, @@ -2073,7 +2380,7 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) u_int lastphase = ahc_inb(ahc, LASTPHASE); int i; - scb = ahc->scb_data->scbarray[scbindex]; + scb = &ahc->scb_data->scbarray[scbindex]; xpt_print_path(scb->ccb->ccb_h.path); printf("data overrun detected in %s phase." " Tag == 0x%x.\n", @@ -2087,8 +2394,8 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) for (i = 0; i < scb->sg_count - 1; i++) { printf("sg[%d] - Addr 0x%x : Length %d\n", i, - scb->ahc_dma[i].addr, - scb->ahc_dma[i].len); + scb->sg_list[i].addr, + scb->sg_list[i].len); } } /* @@ -2096,7 +2403,7 @@ ahc_handle_seqint(struct ahc_softc *ahc, u_int intstat) * target does a command complete. */ ahc_freeze_devq(ahc, scb->ccb->ccb_h.path); - ahc_set_ccb_status(scb->ccb, CAM_DATA_RUN_ERR); + ahcsetccbstatus(scb->ccb, CAM_DATA_RUN_ERR); ahc_freeze_ccb(scb->ccb); break; } @@ -2180,7 +2487,7 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat) scb_index = ahc_inb(ahc, SCB_TAG); if (scb_index < ahc->scb_data->numscbs) { - scb = ahc->scb_data->scbarray[scb_index]; + scb = &ahc->scb_data->scbarray[scb_index]; if ((scb->flags & SCB_ACTIVE) == 0) scb = NULL; } else @@ -2222,8 +2529,8 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat) scb->hscb->tag, tag == SCB_LIST_NULL ? "" : "Tag"); if ((scb->flags & SCB_RECOVERY_SCB) != 0) { - ahc_set_ccb_status(scb->ccb, - CAM_REQ_ABORTED); + ahcsetccbstatus(scb->ccb, + CAM_REQ_ABORTED); ahc_done(ahc, scb); } printerror = 0; @@ -2284,7 +2591,7 @@ ahc_handle_scsiint(struct ahc_softc *ahc, u_int intstat) scb_index = ahc_inb(ahc, SCB_TAG); if (scb_index < ahc->scb_data->numscbs) { - scb = ahc->scb_data->scbarray[scb_index]; + scb = &ahc->scb_data->scbarray[scb_index]; if ((scb->flags & SCB_ACTIVE) == 0) scb = NULL; } else @@ -2532,7 +2839,7 @@ ahc_handle_msg_reject(struct ahc_softc *ahc, struct ahc_devinfo *devinfo) int response = 0; scb_index = ahc_inb(ahc, SCB_TAG); - scb = ahc->scb_data->scbarray[scb_index]; + scb = &ahc->scb_data->scbarray[scb_index]; /* Might be necessary */ last_msg = ahc_inb(ahc, LAST_MSG); @@ -3182,7 +3489,7 @@ ahc_handle_ign_wide_residue(struct ahc_softc *ahc, struct ahc_devinfo *devinfo) struct scb *scb; scb_index = ahc_inb(ahc, SCB_TAG); - scb = ahc->scb_data->scbarray[scb_index]; + scb = &ahc->scb_data->scbarray[scb_index]; if ((ahc_inb(ahc, SEQ_FLAGS) & DPHASE) == 0 || (scb->ccb->ccb_h.flags & CAM_DIR_MASK) != CAM_DIR_IN) { /* @@ -3228,18 +3535,18 @@ ahc_handle_ign_wide_residue(struct ahc_softc *ahc, struct ahc_devinfo *devinfo) sg_index = scb->sg_count - resid_sgcnt; /* - * scb->ahc_dma starts with the second S/G entry. + * scb->sg_list starts with the second S/G entry. */ if (sg_index-- != 0 - && (scb->ahc_dma[sg_index].len < data_cnt)) { + && (scb->sg_list[sg_index].len < data_cnt)) { u_int sg_addr; data_cnt = 1; - data_addr = scb->ahc_dma[sg_index - 1].addr - + scb->ahc_dma[sg_index - 1].len - 1; + data_addr = scb->sg_list[sg_index - 1].addr + + scb->sg_list[sg_index - 1].len - 1; - sg_addr = scb->ahc_dmaphys - + (sg_index * sizeof(*scb->ahc_dma)); + sg_addr = scb->sg_list_phys + + (sg_index * sizeof(*scb->sg_list)); ahc_outb(ahc, SG_NEXT + 3, sg_addr >> 24); ahc_outb(ahc, SG_NEXT + 2, sg_addr >> 16); ahc_outb(ahc, SG_NEXT + 1, sg_addr >> 8); @@ -3318,8 +3625,8 @@ ahc_done(struct ahc_softc *ahc, struct scb *scb) op = BUS_DMASYNC_POSTREAD; else op = BUS_DMASYNC_POSTWRITE; - bus_dmamap_sync(ahc->dmat, scb->dmamap, op); - bus_dmamap_unload(ahc->dmat, scb->dmamap); + bus_dmamap_sync(ahc->buffer_dmat, scb->dmamap, op); + bus_dmamap_unload(ahc->buffer_dmat, scb->dmamap); } /* @@ -3331,7 +3638,7 @@ ahc_done(struct ahc_softc *ahc, struct scb *scb) if (ccb->ccb_h.func_code == XPT_CONT_TARGET_IO) { ccb->ccb_h.status = CAM_REQ_CMP; - ahc_free_scb(ahc, scb); + ahcfreescb(ahc, scb); xpt_done(ccb); return; } @@ -3368,7 +3675,7 @@ ahc_done(struct ahc_softc *ahc, struct scb *scb) SCB_LUN(scb), scb->hscb->tag, /*status*/0, SEARCH_REMOVE); if (ahc_ccb_status(ccb) == CAM_BDR_SENT) - ahc_set_ccb_status(ccb, CAM_CMD_TIMEOUT); + ahcsetccbstatus(ccb, CAM_CMD_TIMEOUT); xpt_print_path(ccb->ccb_h.path); printf("no longer in timeout, status = %x\n", ccb->ccb_h.status); @@ -3378,11 +3685,24 @@ ahc_done(struct ahc_softc *ahc, struct scb *scb) if (ahc_ccb_status(ccb) == CAM_REQ_INPROG) { ccb->ccb_h.status |= CAM_REQ_CMP; } else if ((scb->flags & SCB_SENSE) != 0) { - /* We performed autosense retrieval */ + /* + * We performed autosense retrieval. + * + * bzero the sense data before having + * the drive fill it. The SCSI spec mandates + * that any untransfered data should be + * assumed to be zero. Complete the 'bounce' + * of sense information through buffers accessible + * via bus-space by copying it into the clients + * csio. + */ + bzero(&ccb->csio.sense_data, sizeof(ccb->csio.sense_data)); + bcopy(&ahc->scb_data->sense[scb->hscb->tag], + &ccb->csio.sense_data, scb->sg_list->len); scb->ccb->ccb_h.status |= CAM_AUTOSNS_VALID; } ccb->ccb_h.status &= ~CAM_SIM_QUEUED; - ahc_free_scb(ahc, scb); + ahcfreescb(ahc, scb); xpt_done(ccb); } @@ -3412,14 +3732,16 @@ ahc_probe_scbs(struct ahc_softc *ahc) { int ahc_init(struct ahc_softc *ahc) { - int max_targ = 15; - int i; - int term; - u_int scsi_conf; - u_int scsiseq_template; - u_int ultraenb; - u_int discenable; - u_int tagenable; + int max_targ = 15; + int i; + int term; + u_int scsi_conf; + u_int scsiseq_template; + u_int ultraenb; + u_int discenable; + u_int tagenable; + size_t driver_data_size; + u_int32_t physaddr; #ifdef AHC_PRINT_SRAM printf("Scratch Ram:"); @@ -3470,6 +3792,85 @@ ahc_init(struct ahc_softc *ahc) ahc->flags &= ~AHC_INITIATORMODE; } + /* DMA tag for mapping buffers into device visible space. */ + if (bus_dma_tag_create(ahc->parent_dmat, /*alignment*/0, /*boundary*/0, + /*lowaddr*/BUS_SPACE_MAXADDR, + /*highaddr*/BUS_SPACE_MAXADDR, + /*filter*/NULL, /*filterarg*/NULL, + /*maxsize*/MAXBSIZE, /*nsegments*/AHC_NSEG, + /*maxsegsz*/AHC_MAXTRANSFER_SIZE, + /*flags*/BUS_DMA_ALLOCNOW, + &ahc->buffer_dmat) != 0) { + return (ENOMEM); + } + + ahc->init_level++; + + /* + * DMA tag for our command fifos and other data in system memory + * the card's sequencer must be able to access. For initiator + * roles, we need to allocate space for the qinfifo, qoutfifo, + * and untagged_scb arrays each of which are composed of 256 + * 1 byte elements. When providing for the target mode role, + * we additionally must provide space for the incoming target + * command fifo. + */ + driver_data_size = 3 * 256 * sizeof(u_int8_t); + if ((ahc->flags & AHC_TARGETMODE) != 0) + driver_data_size += AHC_TMODE_CMDS * sizeof(struct target_cmd); + if (bus_dma_tag_create(ahc->parent_dmat, /*alignment*/0, /*boundary*/0, + /*lowaddr*/BUS_SPACE_MAXADDR, + /*highaddr*/BUS_SPACE_MAXADDR, + /*filter*/NULL, /*filterarg*/NULL, + driver_data_size, + /*nsegments*/1, + /*maxsegsz*/BUS_SPACE_MAXSIZE_32BIT, + /*flags*/0, &ahc->shared_data_dmat) != 0) { + return (ENOMEM); + } + + ahc->init_level++; + + /* Allocation of driver data */ + if (bus_dmamem_alloc(ahc->shared_data_dmat, (void **)&ahc->qoutfifo, + BUS_DMA_NOWAIT, &ahc->shared_data_dmamap) != 0) { + return (ENOMEM); + } + + ahc->init_level++; + + /* And permanently map it in */ + bus_dmamap_load(ahc->shared_data_dmat, ahc->shared_data_dmamap, + ahc->qoutfifo, driver_data_size, + ahcdmamapcb, &ahc->shared_data_busaddr, /*flags*/0); + + ahc->init_level++; + + /* Allocate SCB data now that buffer_dmat is initialized) */ + if (ahc->scb_data->maxhscbs == 0) + if (ahcinitscbdata(ahc) != 0) + return (ENOMEM); + + ahc->qinfifo = &ahc->qoutfifo[256]; + ahc->untagged_scbs = &ahc->qinfifo[256]; + /* There are no untagged SCBs active yet. */ + for (i = 0; i < 256; i++) + ahc->untagged_scbs[i] = SCB_LIST_NULL; + + /* All of our queues are empty */ + for (i = 0; i < 256; i++) + ahc->qoutfifo[i] = SCB_LIST_NULL; + + if ((ahc->flags & AHC_TARGETMODE) != 0) { + ahc->targetcmds = (struct target_cmd *)&ahc->untagged_scbs[256]; + + /* All target command blocks start out invalid. */ + for (i = 0; i < AHC_TMODE_CMDS; i++) + ahc->targetcmds[i].cmd_valid = 0; + ahc_outb(ahc, KERNEL_TQINPOS, ahc->tqinfifonext - 1); + ahc_outb(ahc, TQINPOS, 0); + } + /* * Allocate a tstate to house information for our * initiator presence on the bus as well as the user @@ -3501,46 +3902,10 @@ ahc_init(struct ahc_softc *ahc) ahc_outb(ahc, SEQ_FLAGS, 0); - /* Determine the number of SCBs and initialize them */ - - if (ahc->scb_data->maxhscbs == 0) { - ahc->scb_data->maxhscbs = ahc_probe_scbs(ahc); - /* SCB 0 heads the free list */ - ahc_outb(ahc, FREE_SCBH, 0); - for (i = 0; i < ahc->scb_data->maxhscbs; i++) { - ahc_outb(ahc, SCBPTR, i); - - /* Clear the control byte. */ - ahc_outb(ahc, SCB_CONTROL, 0); - - /* Set the next pointer */ - ahc_outb(ahc, SCB_NEXT, i+1); - - /* Make the tag number invalid */ - ahc_outb(ahc, SCB_TAG, SCB_LIST_NULL); - } - - /* Make that the last SCB terminates the free list */ - ahc_outb(ahc, SCBPTR, i-1); - ahc_outb(ahc, SCB_NEXT, SCB_LIST_NULL); - - /* Ensure we clear the 0 SCB's control byte. */ - ahc_outb(ahc, SCBPTR, 0); - ahc_outb(ahc, SCB_CONTROL, 0); - - ahc->scb_data->maxhscbs = i; - } - - if (ahc->scb_data->maxhscbs == 0) - panic("%s: No SCB space found", ahc_name(ahc)); - if (ahc->scb_data->maxhscbs < AHC_SCB_MAX) { ahc->flags |= AHC_PAGESCBS; - ahc->scb_data->maxscbs = AHC_SCB_MAX; - printf("%d/%d SCBs\n", ahc->scb_data->maxhscbs, - ahc->scb_data->maxscbs); + printf("%d/%d SCBs\n", ahc->scb_data->maxhscbs, AHC_SCB_MAX); } else { - ahc->scb_data->maxscbs = ahc->scb_data->maxhscbs; ahc->flags &= ~AHC_PAGESCBS; printf("%d SCBs\n", ahc->scb_data->maxhscbs); } @@ -3702,10 +4067,8 @@ ahc_init(struct ahc_softc *ahc) (ultraenb & mask) ? AHC_SYNCRATE_ULTRA : AHC_SYNCRATE_FAST); - if ((scsirate & SOFS) != 0 - && tinfo->user.period != 0) { + if (tinfo->user.period != 0) tinfo->user.offset = ~0; - } } if ((scsirate & WIDEXFER) != 0 && (ahc->features & AHC_WIDE) != 0) @@ -3716,119 +4079,55 @@ ahc_init(struct ahc_softc *ahc) tstate->tagenable = tagenable; } -#ifdef AHC_DEBUG - if (ahc_debug & AHC_SHOWMISC) - printf("NEEDSDTR == 0x%x\nNEEDWDTR == 0x%x\n" - "DISCENABLE == 0x%x\nULTRAENB == 0x%x\n", - ahc->needsdtr_orig, ahc->needwdtr_orig, - discenable, ultraenb); -#endif /* - * Allocate enough "hardware scbs" to handle - * the maximum number of concurrent transactions - * we can have active. We have to use contigmalloc - * if this array crosses a page boundary since the - * sequencer depends on this array being physically - * contiguous. + * Tell the sequencer where it can find the our arrays in memory. */ - if (ahc->scb_data->hscbs == NULL) { - size_t array_size; - - array_size = ahc->scb_data->maxscbs*sizeof(struct hardware_scb); - if (array_size > PAGE_SIZE) { - ahc->scb_data->hscbs = (struct hardware_scb *) - contigmalloc(array_size, M_DEVBUF, - M_NOWAIT, 0ul, 0xffffffff, - PAGE_SIZE, 0x10000); - } else { - ahc->scb_data->hscbs = (struct hardware_scb *) - malloc(array_size, M_DEVBUF, M_NOWAIT); - } - - if (ahc->scb_data->hscbs == NULL) { - printf("%s: unable to allocate hardware SCB array. " - "Failing attach\n", ahc_name(ahc)); - return (-1); - } - /* At least the control byte of each hscb needs to be zeroed */ - bzero(ahc->scb_data->hscbs, array_size); - } - - if ((ahc->flags & AHC_TARGETMODE) != 0) { - size_t array_size; - - array_size = AHC_TMODE_CMDS * sizeof(struct target_cmd); - ahc->targetcmds = contigmalloc(array_size, M_DEVBUF, - M_NOWAIT, 0ul, 0xffffffff, - PAGE_SIZE, 0x10000); - - if (ahc->targetcmds == NULL) { - printf("%s: unable to allocate targetcmd array. " - "Failing attach\n", ahc_name(ahc)); - return (-1); - } - - /* All target command blocks start out invalid. */ - for (i = 0; i < AHC_TMODE_CMDS; i++) - ahc->targetcmds[i].cmd_valid = 0; - ahc_outb(ahc, KERNEL_TQINPOS, ahc->tqinfifonext - 1); - ahc_outb(ahc, TQINPOS, 0); - } + physaddr = ahc->scb_data->hscb_busaddr; + ahc_outb(ahc, HSCB_ADDR, physaddr & 0xFF); + ahc_outb(ahc, HSCB_ADDR + 1, (physaddr >> 8) & 0xFF); + ahc_outb(ahc, HSCB_ADDR + 2, (physaddr >> 16) & 0xFF); + ahc_outb(ahc, HSCB_ADDR + 3, (physaddr >> 24) & 0xFF); + + physaddr = ahc->shared_data_busaddr; + ahc_outb(ahc, SCBID_ADDR, physaddr & 0xFF); + ahc_outb(ahc, SCBID_ADDR + 1, (physaddr >> 8) & 0xFF); + ahc_outb(ahc, SCBID_ADDR + 2, (physaddr >> 16) & 0xFF); + ahc_outb(ahc, SCBID_ADDR + 3, (physaddr >> 24) & 0xFF); + + /* Target mode incomding command fifo */ + physaddr += 3 * 256 * sizeof(u_int8_t); + ahc_outb(ahc, TMODE_CMDADDR, physaddr & 0xFF); + ahc_outb(ahc, TMODE_CMDADDR + 1, (physaddr >> 8) & 0xFF); + ahc_outb(ahc, TMODE_CMDADDR + 2, (physaddr >> 16) & 0xFF); + ahc_outb(ahc, TMODE_CMDADDR + 3, (physaddr >> 24) & 0xFF); /* - * Tell the sequencer where it can find the our arrays in memory. + * Initialize the group code to command length table. + * This overrides the values in TARG_SCSIRATE, so only + * setup the table after we have processed that information. */ - { - u_int32_t physaddr; - - /* Tell the sequencer where it can find the hscb array. */ - physaddr = vtophys(ahc->scb_data->hscbs); - ahc_outb(ahc, HSCB_ADDR, physaddr & 0xFF); - ahc_outb(ahc, HSCB_ADDR + 1, (physaddr >> 8) & 0xFF); - ahc_outb(ahc, HSCB_ADDR + 2, (physaddr >> 16) & 0xFF); - ahc_outb(ahc, HSCB_ADDR + 3, (physaddr >> 24) & 0xFF); - ahc->hscb_busaddr = physaddr; - - physaddr = vtophys(ahc->qoutfifo); - ahc_outb(ahc, SCBID_ADDR, physaddr & 0xFF); - ahc_outb(ahc, SCBID_ADDR + 1, (physaddr >> 8) & 0xFF); - ahc_outb(ahc, SCBID_ADDR + 2, (physaddr >> 16) & 0xFF); - ahc_outb(ahc, SCBID_ADDR + 3, (physaddr >> 24) & 0xFF); - - if ((ahc->flags & AHC_TARGETMODE) != 0) { - physaddr = vtophys(ahc->targetcmds); - ahc_outb(ahc, TMODE_CMDADDR, physaddr & 0xFF); - ahc_outb(ahc, TMODE_CMDADDR + 1, - (physaddr >> 8) & 0xFF); - ahc_outb(ahc, TMODE_CMDADDR + 2, - (physaddr >> 16) & 0xFF); - ahc_outb(ahc, TMODE_CMDADDR + 3, - (physaddr >> 24) & 0xFF); - - ahc_outb(ahc, CMDSIZE_TABLE, 5); - ahc_outb(ahc, CMDSIZE_TABLE + 1, 9); - ahc_outb(ahc, CMDSIZE_TABLE + 2, 9); - ahc_outb(ahc, CMDSIZE_TABLE + 3, 0); - ahc_outb(ahc, CMDSIZE_TABLE + 4, 15); - ahc_outb(ahc, CMDSIZE_TABLE + 5, 11); - ahc_outb(ahc, CMDSIZE_TABLE + 6, 0); - ahc_outb(ahc, CMDSIZE_TABLE + 7, 0); - } + ahc_outb(ahc, CMDSIZE_TABLE, 5); + ahc_outb(ahc, CMDSIZE_TABLE + 1, 9); + ahc_outb(ahc, CMDSIZE_TABLE + 2, 9); + ahc_outb(ahc, CMDSIZE_TABLE + 3, 0); + ahc_outb(ahc, CMDSIZE_TABLE + 4, 15); + ahc_outb(ahc, CMDSIZE_TABLE + 5, 11); + ahc_outb(ahc, CMDSIZE_TABLE + 6, 0); + ahc_outb(ahc, CMDSIZE_TABLE + 7, 0); - /* There are no untagged SCBs active yet. */ - for (i = 0; i < sizeof(ahc->untagged_scbs); i++) { - ahc->untagged_scbs[i] = SCB_LIST_NULL; - } - for (i = 0; i < sizeof(ahc->qoutfifo); i++) { - ahc->qoutfifo[i] = SCB_LIST_NULL; - } - } - - /* Our Q FIFOs are empty. */ + /* Tell the sequencer of our initial queue positions */ ahc_outb(ahc, KERNEL_QINPOS, 0); ahc_outb(ahc, QINPOS, 0); ahc_outb(ahc, QOUTPOS, 0); +#ifdef AHC_DEBUG + if (ahc_debug & AHC_SHOWMISC) + printf("NEEDSDTR == 0x%x\nNEEDWDTR == 0x%x\n" + "DISCENABLE == 0x%x\nULTRAENB == 0x%x\n", + ahc->needsdtr_orig, ahc->needwdtr_orig, + discenable, ultraenb); +#endif + /* Don't have any special messages to send to targets */ ahc_outb(ahc, TARGET_MSG_REQUEST, 0); ahc_outb(ahc, TARGET_MSG_REQUEST + 1, 0); @@ -4029,14 +4328,14 @@ ahc_action(struct cam_sim *sim, union ccb *ccb) /* * get an scb to use. */ - if ((scb = ahc_get_scb(ahc)) == NULL) { + if ((scb = ahcgetscb(ahc)) == NULL) { int s; s = splcam(); ahc->flags |= AHC_RESOURCE_SHORTAGE; splx(s); xpt_freeze_simq(ahc->sim, /*count*/1); - ahc_set_ccb_status(ccb, CAM_REQUEUE_REQ); + ahcsetccbstatus(ccb, CAM_REQUEUE_REQ); xpt_done(ccb); return; } @@ -4444,13 +4743,13 @@ ahc_execute_scb(void *arg, bus_dma_segment_t *dm_segs, int nsegments, end_seg = dm_segs + nsegments; /* Copy the first SG into the data pointer area */ - scb->hscb->SG_pointer = scb->ahc_dmaphys; + scb->hscb->SG_pointer = scb->sg_list_phys; scb->hscb->data = dm_segs->ds_addr; scb->hscb->datalen = dm_segs->ds_len; dm_segs++; /* Copy the remaining segments into our SG list */ - sg = scb->ahc_dma; + sg = scb->sg_list; while (dm_segs < end_seg) { sg->addr = dm_segs->ds_addr; sg->len = dm_segs->ds_len; @@ -4463,7 +4762,7 @@ ahc_execute_scb(void *arg, bus_dma_segment_t *dm_segs, int nsegments, else op = BUS_DMASYNC_PREWRITE; - bus_dmamap_sync(ahc->dmat, scb->dmamap, op); + bus_dmamap_sync(ahc->buffer_dmat, scb->dmamap, op); if (ccb->ccb_h.func_code == XPT_CONT_TARGET_IO) { scb->hscb->cmdpointer |= DPHASE_PENDING; @@ -4486,8 +4785,8 @@ ahc_execute_scb(void *arg, bus_dma_segment_t *dm_segs, int nsegments, */ if (ahc_ccb_status(ccb) != CAM_REQ_INPROG) { if (nsegments != 0) - bus_dmamap_unload(ahc->dmat, scb->dmamap); - ahc_free_scb(ahc, scb); + bus_dmamap_unload(ahc->buffer_dmat, scb->dmamap); + ahcfreescb(ahc, scb); xpt_done(ccb); splx(s); return; @@ -4560,12 +4859,16 @@ ahc_setup_data(struct ahc_softc *ahc, struct ccb_scsiio *csio, hscb->cmdlen); hscb->cmdpointer = hscb->cmdstore_busaddr; - } else - hscb->cmdpointer = - vtophys(csio->cdb_io.cdb_ptr); + } else { + ahcsetccbstatus(scb->ccb, + CAM_REQ_INVALID); + xpt_done(scb->ccb); + ahcfreescb(ahc, scb); + return; + } else hscb->cmdpointer = - (u_int32_t)csio->cdb_io.cdb_ptr; + ((intptr_t)csio->cdb_io.cdb_ptr) & 0xffffffff; } else { /* * CCB CDB Data Storage area is only 16 bytes @@ -4586,7 +4889,7 @@ ahc_setup_data(struct ahc_softc *ahc, struct ccb_scsiio *csio, int error; s = splsoftvm(); - error = bus_dmamap_load(ahc->dmat, + error = bus_dmamap_load(ahc->buffer_dmat, scb->dmamap, csio->data_ptr, csio->dxfer_len, @@ -4653,124 +4956,67 @@ ahc_freeze_devq(struct ahc_softc *ahc, struct cam_path *path) SEARCH_COMPLETE); } -/* - * An scb (and hence an scb entry on the board) is put onto the - * free list. - */ static void -ahc_free_scb(struct ahc_softc *ahc, struct scb *scb) -{ - struct hardware_scb *hscb; - int opri; - - hscb = scb->hscb; - - opri = splcam(); +ahcallocscbs(struct ahc_softc *ahc) +{ + struct scb_data *scb_data; + struct scb *next_scb; + struct sg_map_node *sg_map; + bus_addr_t physaddr; + struct ahc_dma_seg *segs; + int newcount; + int i; - if ((ahc->flags & AHC_RESOURCE_SHORTAGE) != 0 - && (scb->ccb->ccb_h.status & CAM_RELEASE_SIMQ) == 0) { - scb->ccb->ccb_h.status |= CAM_RELEASE_SIMQ; - ahc->flags &= ~AHC_RESOURCE_SHORTAGE; - } + scb_data = ahc->scb_data; + if (scb_data->numscbs >= AHC_SCB_MAX) + /* Can't allocate any more */ + return; - /* Clean up for the next user */ - scb->flags = SCB_FREE; - hscb->control = 0; - hscb->status = 0; + next_scb = &scb_data->scbarray[scb_data->numscbs]; - STAILQ_INSERT_HEAD(&ahc->scb_data->free_scbs, scb, links); - splx(opri); -} + sg_map = malloc(sizeof(*sg_map), M_DEVBUF, M_NOWAIT); -/* - * Get a free scb, either one already assigned to a hardware slot - * on the adapter or one that will require an SCB to be paged out before - * use. If there are none, see if we can allocate a new SCB. Otherwise - * either return an error or sleep. - */ -static struct scb * -ahc_get_scb(struct ahc_softc *ahc) -{ - struct scb *scbp; - int opri; + if (sg_map == NULL) + return; - opri = splcam(); - if ((scbp = STAILQ_FIRST(&ahc->scb_data->free_scbs))) { - STAILQ_REMOVE_HEAD(&ahc->scb_data->free_scbs, links); - } else if (ahc->scb_data->numscbs < ahc->scb_data->maxscbs) { - scbp = ahc_alloc_scb(ahc); - if (scbp == NULL) - printf("%s: Can't malloc SCB\n", ahc_name(ahc)); + /* Allocate S/G space for the next batch of SCBS */ + if (bus_dmamem_alloc(scb_data->sg_dmat, (void **)&sg_map->sg_vaddr, + BUS_DMA_NOWAIT, &sg_map->sg_dmamap) != 0) { + free(sg_map, M_DEVBUF); + return; } - splx(opri); + SLIST_INSERT_HEAD(&scb_data->sg_maps, sg_map, links); - return (scbp); -} + bus_dmamap_load(scb_data->sg_dmat, sg_map->sg_dmamap, sg_map->sg_vaddr, + PAGE_SIZE, ahcdmamapcb, &sg_map->sg_physaddr, + /*flags*/0); + segs = sg_map->sg_vaddr; + physaddr = sg_map->sg_physaddr; -static struct scb * -ahc_alloc_scb(struct ahc_softc *ahc) -{ - static struct ahc_dma_seg *next_sg_array = NULL; - static int sg_arrays_free = 0; - struct scb *newscb; - int error; - - newscb = (struct scb *) malloc(sizeof(struct scb), M_DEVBUF, M_NOWAIT); - if (newscb != NULL) { - bzero(newscb, sizeof(struct scb)); - error = bus_dmamap_create(ahc->dmat, /*flags*/0, - &newscb->dmamap); + newcount = (PAGE_SIZE / (AHC_NSEG * sizeof(struct ahc_dma_seg))); + for (i = 0; scb_data->numscbs < AHC_SCB_MAX && i < newcount; i++) { + int error; + + next_scb->sg_list = segs; + next_scb->sg_list_phys = physaddr; + next_scb->flags = SCB_FREE; + error = bus_dmamap_create(ahc->buffer_dmat, /*flags*/0, + &next_scb->dmamap); if (error != 0) - printf("%s: Unable to allocate SCB dmamap - error %d\n", - ahc_name(ahc), error); - - if (error == 0 && next_sg_array == NULL) { - size_t alloc_size = sizeof(struct ahc_dma_seg) - * AHC_NSEG; - sg_arrays_free = PAGE_SIZE / alloc_size; - alloc_size *= sg_arrays_free; - if (alloc_size == 0) - panic("%s: SG list doesn't fit in a page", - ahc_name(ahc)); - next_sg_array = (struct ahc_dma_seg *) - malloc(alloc_size, M_DEVBUF, M_NOWAIT); - } - if (error == 0 && next_sg_array != NULL) { - struct hardware_scb *hscb; - - newscb->ahc_dma = next_sg_array; - newscb->ahc_dmaphys = vtophys(next_sg_array); - sg_arrays_free--; - if (sg_arrays_free == 0) - next_sg_array = NULL; - else - next_sg_array = &next_sg_array[AHC_NSEG]; - hscb = &ahc->scb_data->hscbs[ahc->scb_data->numscbs]; - newscb->hscb = hscb; - hscb->control = 0; - hscb->status = 0; - hscb->tag = ahc->scb_data->numscbs; - hscb->residual_data_count[2] = 0; - hscb->residual_data_count[1] = 0; - hscb->residual_data_count[0] = 0; - hscb->residual_SG_count = 0; - hscb->cmdstore_busaddr = - ahc_hscb_busaddr(ahc, hscb->tag) - + offsetof(struct hardware_scb, cmdstore); - /* - * Place in the scbarray - * Never is removed. - */ - ahc->scb_data->scbarray[hscb->tag] = newscb; - ahc->scb_data->numscbs++; - } else { - free(newscb, M_DEVBUF); - newscb = NULL; - } + break; + next_scb->hscb = &scb_data->hscbs[scb_data->numscbs]; + next_scb->hscb->tag = ahc->scb_data->numscbs; + next_scb->hscb->cmdstore_busaddr = + ahc_hscb_busaddr(ahc, next_scb->hscb->tag) + + offsetof(struct hardware_scb, cmdstore); + SLIST_INSERT_HEAD(&ahc->scb_data->free_scbs, next_scb, links); + segs += AHC_NSEG; + physaddr += (AHC_NSEG * sizeof(struct ahc_dma_seg)); + next_scb++; + ahc->scb_data->numscbs++; } - return newscb; } static void @@ -5092,7 +5338,7 @@ ahc_timeout(void *arg) * Do a full bus reset. */ bus_reset: - ahc_set_ccb_status(scb->ccb, CAM_CMD_TIMEOUT); + ahcsetccbstatus(scb->ccb, CAM_CMD_TIMEOUT); found = ahc_reset_channel(ahc, channel, /*Initiate Reset*/TRUE); printf("%s: Issued Channel %c Bus Reset. " "%d SCBs aborted\n", ahc_name(ahc), channel, found); @@ -5133,7 +5379,7 @@ bus_reset: * and wait for it's timeout to expire before * taking additional action. */ - active_scb = ahc->scb_data->scbarray[active_scb_index]; + active_scb = &ahc->scb_data->scbarray[active_scb_index]; if (active_scb->hscb->tcl != scb->hscb->tcl && (scb->flags & SCB_OTHERTCL_TIMEOUT) == 0) { struct ccb_hdr *ccbh; @@ -5160,7 +5406,7 @@ bus_reset: * and properly record the error condition. */ ahc_freeze_devq(ahc, scb->ccb->ccb_h.path); - ahc_set_ccb_status(scb->ccb, CAM_CMD_TIMEOUT); + ahcsetccbstatus(scb->ccb, CAM_CMD_TIMEOUT); ahc_freeze_ccb(scb->ccb); ahc_done(ahc, scb); @@ -5283,7 +5529,7 @@ ahc_search_qinfifo(struct ahc_softc *ahc, int target, char channel, ahc->qinfifonext = qinpos; while (qinpos != qintail) { - scbp = ahc->scb_data->scbarray[ahc->qinfifo[qinpos]]; + scbp = &ahc->scb_data->scbarray[ahc->qinfifo[qinpos]]; if (ahc_match_scb(scbp, target, channel, lun, tag)) { /* * We found an scb that needs to be removed. @@ -5291,7 +5537,7 @@ ahc_search_qinfifo(struct ahc_softc *ahc, int target, char channel, switch (action) { case SEARCH_COMPLETE: if (ahc_ccb_status(scbp->ccb) == CAM_REQ_INPROG) - ahc_set_ccb_status(scbp->ccb, status); + ahcsetccbstatus(scbp->ccb, status); ahc_freeze_ccb(scbp->ccb); ahc_done(ahc, scbp); break; @@ -5441,7 +5687,7 @@ ahc_abort_scbs(struct ahc_softc *ahc, int target, char channel, "SCB index == %d, yet numscbs == %d.", scb_index, ahc->scb_data->numscbs); } - scbp = ahc->scb_data->scbarray[scb_index]; + scbp = &ahc->scb_data->scbarray[scb_index]; if (ahc_match_scb(scbp, target, channel, lun, tag)) { next = ahc_abort_wscb(ahc, next, prev); @@ -5468,7 +5714,7 @@ ahc_abort_scbs(struct ahc_softc *ahc, int target, char channel, ahc_outb(ahc, SCBPTR, i); scbid = ahc_inb(ahc, SCB_TAG); if (scbid < ahc->scb_data->numscbs) { - scbp = ahc->scb_data->scbarray[scbid]; + scbp = &ahc->scb_data->scbarray[scbid]; if (ahc_match_scb(scbp, target, channel, lun, tag)) { ahc_add_curscb_to_free_list(ahc); } @@ -5491,7 +5737,7 @@ ahc_abort_scbs(struct ahc_softc *ahc, int target, char channel, ccb_h = ccb_h->sim_links.le.le_next; if (ahc_match_scb(scbp, target, channel, lun, tag)) { if (ahc_ccb_status(scbp->ccb) == CAM_REQ_INPROG) - ahc_set_ccb_status(scbp->ccb, status); + ahcsetccbstatus(scbp->ccb, status); ahc_freeze_ccb(scbp->ccb); ahc_done(ahc, scbp); found++; @@ -5529,7 +5775,7 @@ ahc_search_disc_list(struct ahc_softc *ahc, int target, char channel, "SCB index == %d, yet numscbs == %d.", scb_index, ahc->scb_data->numscbs); } - scbp = ahc->scb_data->scbarray[scb_index]; + scbp = &ahc->scb_data->scbarray[scb_index]; if (ahc_match_scb(scbp, target, channel, lun, tag)) { next = ahc_rem_scb_from_disc_list(ahc, prev, next); @@ -5816,7 +6062,7 @@ ahc_calc_residual(struct scb *scb) sg = scb->sg_count - resid_sgs - 1/*first SG*/; while (resid_sgs > 0) { - resid += scb->ahc_dma[sg].len; + resid += scb->sg_list[sg].len; sg++; resid_sgs--; } @@ -5915,7 +6161,7 @@ ahc_update_pending_syncrates(struct ahc_softc *ahc) u_int our_id, remote_id; u_int control; - pending_scb = ahc->scb_data->scbarray[scb_tag]; + pending_scb = &ahc->scb_data->scbarray[scb_tag]; if (pending_scb->flags == SCB_FREE) continue; pending_hscb = pending_scb->hscb; diff --git a/sys/dev/aic7xxx/aic7xxx.h b/sys/dev/aic7xxx/aic7xxx.h index cf3037aaa07d..4cc4c8802bf1 100644 --- a/sys/dev/aic7xxx/aic7xxx.h +++ b/sys/dev/aic7xxx/aic7xxx.h @@ -3,7 +3,7 @@ * SCSI controllers. This is used to implement product specific * probe and attach routines. * - * Copyright (c) 1994, 1995, 1996, 1997, 1998 Justin T. Gibbs. + * Copyright (c) 1994, 1995, 1996, 1997, 1998, 1999 Justin T. Gibbs. * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -34,7 +34,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: aic7xxx.h,v 1.5 1999/01/14 06:14:15 gibbs Exp $ + * $Id: aic7xxx.h,v 1.5.2.1 1999/03/07 00:40:47 gibbs Exp $ */ #ifndef _AIC7XXX_H_ @@ -45,20 +45,29 @@ #include <pci/pcivar.h> /* for pcici_t */ +#ifndef MAX +#define MAX(a,b) (((a) > (b)) ? (a) : (b)) +#endif + +#ifndef MIN +#define MIN(a,b) (((a) < (b)) ? (a) : (b)) +#endif + +/* + * The maximum transfer per S/G segment. + */ #define AHC_MAXTRANSFER_SIZE 0x00ffffff /* limited by 24bit counter */ -#define AHC_NSEG 32 /* The number of dma segments supported. - * AHC_NSEG can be maxed out at 256 entries, - * but the kernel will never need to transfer - * such a large (1MB) request. To reduce the - * driver's memory consumption, we reduce the - * max to 32. 16 would work if all transfers - * are paged alined since the kernel will only - * generate at most a 64k transfer, but to - * handle non-page aligned transfers, you need - * 17, so we round to the next power of two - * to make allocating SG space easy and - * efficient. - */ + +/* + * The number of dma segments supported. The current implementation limits + * us to 255 S/G entries (this may change to be unlimited at some point). + * To reduce the driver's memory consumption, we further limit the number + * supported to be sufficient to handle the largest mapping supported by + * the kernel, MAXPHYS. Assuming the transfer is as fragmented as possible + * and unaligned, this turns out to be the number of paged sized transfers + * in MAXPHYS plus an extra element to handle any unaligned residual. + */ +#define AHC_NSEG (MIN(btoc(MAXPHYS) + 1, 255)) #define AHC_SCB_MAX 255 /* * Up to 255 SCBs on some types of aic7xxx @@ -75,9 +84,7 @@ * wrap point of an 8bit counter. */ -#if defined(__FreeBSD__) extern u_long ahc_unit; -#endif struct ahc_dma_seg { u_int32_t addr; @@ -112,16 +119,17 @@ typedef enum { AHC_SG_PRELOAD = 0x0080, /* Can perform auto-SG preload */ AHC_SPIOCAP = 0x0100, /* Has a Serial Port I/O Cap Register */ AHC_MULTI_TID = 0x0200, /* Has bitmask of TIDs for select-in */ + AHC_HS_MAILBOX = 0x0400, /* Has HS_MAILBOX register */ AHC_AIC7770_FE = AHC_FENONE, AHC_AIC7850_FE = AHC_FENONE|AHC_SPIOCAP, AHC_AIC7860_FE = AHC_ULTRA|AHC_SPIOCAP, AHC_AIC7870_FE = AHC_FENONE, AHC_AIC7880_FE = AHC_ULTRA, AHC_AIC7890_FE = AHC_MORE_SRAM|AHC_CMD_CHAN|AHC_ULTRA2|AHC_QUEUE_REGS - |AHC_SG_PRELOAD|AHC_MULTI_TID, + |AHC_SG_PRELOAD|AHC_MULTI_TID|AHC_HS_MAILBOX, AHC_AIC7895_FE = AHC_MORE_SRAM|AHC_CMD_CHAN|AHC_ULTRA, AHC_AIC7896_FE = AHC_MORE_SRAM|AHC_CMD_CHAN|AHC_ULTRA2|AHC_QUEUE_REGS - |AHC_SG_PRELOAD|AHC_MULTI_TID, + |AHC_SG_PRELOAD|AHC_MULTI_TID|AHC_HS_MAILBOX, } ahc_feature; typedef enum { @@ -138,7 +146,6 @@ typedef enum { * SRAM, we use the default target * settings. */ - AHC_INDIRECT_PAGING = 0x008, AHC_SHARED_SRAM = 0x010, AHC_LARGE_SEEPROM = 0x020,/* Uses C56_66 not C46 */ AHC_RESET_BUS_A = 0x040, @@ -228,28 +235,13 @@ struct hardware_scb { struct scb { struct hardware_scb *hscb; - STAILQ_ENTRY(scb) links; /* for chaining */ + SLIST_ENTRY(scb) links; /* for chaining */ union ccb *ccb; /* the ccb for this cmd */ - scb_flag flags; - bus_dmamap_t dmamap; - struct ahc_dma_seg *ahc_dma;/* Pointer to SG segments */ - u_int32_t ahc_dmaphys;/* Phsical address of SG list */ - u_int sg_count;/* How full ahc_dma_seg is */ -}; - -struct scb_data { - struct hardware_scb *hscbs; /* Array of hardware SCBs */ - struct scb *scbarray[AHC_SCB_MAX]; /* Array of kernel SCBs */ - STAILQ_HEAD(, scb) free_scbs; /* - * Pool of SCBs ready to be assigned - * commands to execute. - */ - u_int8_t numscbs; - u_int8_t maxhscbs; /* Number of SCBs on the card */ - u_int8_t maxscbs; /* - * Max SCBs we allocate total including - * any that will force us to page SCBs - */ + scb_flag flags; + bus_dmamap_t dmamap; + struct ahc_dma_seg *sg_list; + bus_addr_t sg_list_phys; + u_int sg_count;/* How full ahc_dma_seg is */ }; /* @@ -402,10 +394,45 @@ typedef enum { MSG_TYPE_TARGET_MSGIN = 0x04 } ahc_msg_type; +struct sg_map_node { + bus_dmamap_t sg_dmamap; + bus_addr_t sg_physaddr; + struct ahc_dma_seg* sg_vaddr; + SLIST_ENTRY(sg_map_node) links; +}; + +struct scb_data { + struct hardware_scb *hscbs; /* Array of hardware SCBs */ + struct scb *scbarray; /* Array of kernel SCBs */ + SLIST_HEAD(, scb) free_scbs; /* + * Pool of SCBs ready to be assigned + * commands to execute. + */ + struct scsi_sense_data *sense; /* Per SCB sense data */ + + /* + * "Bus" addresses of our data structures. + */ + bus_dma_tag_t hscb_dmat; /* dmat for our hardware SCB array */ + bus_dmamap_t hscb_dmamap; + bus_addr_t hscb_busaddr; + bus_dma_tag_t sense_dmat; + bus_dmamap_t sense_dmamap; + bus_addr_t sense_busaddr; + bus_dma_tag_t sg_dmat; /* dmat for our sg segments */ + SLIST_HEAD(, sg_map_node) sg_maps; + u_int8_t numscbs; + u_int8_t maxhscbs; /* Number of SCBs on the card */ + u_int8_t init_level; /* + * How far we've initialized + * this structure. + */ +}; + struct ahc_softc { bus_space_tag_t tag; bus_space_handle_t bsh; - bus_dma_tag_t dmat; + bus_dma_tag_t buffer_dmat; /* dmat for buffer I/O */ struct scb_data *scb_data; /* @@ -447,14 +474,14 @@ struct ahc_softc { /* Command Queues */ u_int8_t qoutfifonext; u_int8_t qinfifonext; - u_int8_t qoutfifo[256]; - u_int8_t qinfifo[256]; + u_int8_t *qoutfifo; + u_int8_t *qinfifo; /* * 256 byte array storing the SCBID of outstanding * untagged SCBs indexed by TCL. */ - u_int8_t untagged_scbs[256]; + u_int8_t *untagged_scbs; /* * Hooks into the XPT. @@ -501,13 +528,16 @@ struct ahc_softc { u_int msgout_index; /* Current index in msgout */ u_int msgin_index; /* Current index in msgin */ + bus_dma_tag_t parent_dmat; + bus_dma_tag_t shared_data_dmat; + bus_dmamap_t shared_data_dmamap; + bus_addr_t shared_data_busaddr; + /* Number of enabled target mode device on this card */ u_int enabled_luns; - /* - * "Bus" addresses of our data structures. - */ - u_int32_t hscb_busaddr; + /* Initialization level of this data structure */ + u_int init_level; }; struct full_ahc_softc { @@ -530,10 +560,11 @@ extern int ahc_debug; /* Initialized in i386/scsi/aic7xxx.c */ char *ahc_name(struct ahc_softc *ahc); -struct ahc_softc *ahc_alloc(int unit, u_int32_t io_base, - vm_offset_t maddr, ahc_chip chip, - ahc_feature features, ahc_flag flags, - struct scb_data *scb_data); +struct ahc_softc* + ahc_alloc(int unit, u_int32_t io_base, vm_offset_t maddr, + bus_dma_tag_t parent_dmat, ahc_chip chip, + ahc_feature features, ahc_flag flags, + struct scb_data *scb_data); int ahc_reset(struct ahc_softc *ahc); void ahc_free(struct ahc_softc *); int ahc_probe_scbs(struct ahc_softc *); diff --git a/sys/dev/aic7xxx/aic7xxx.reg b/sys/dev/aic7xxx/aic7xxx.reg index 1edd241456e1..1922b15a39d6 100644 --- a/sys/dev/aic7xxx/aic7xxx.reg +++ b/sys/dev/aic7xxx/aic7xxx.reg @@ -32,7 +32,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: aic7xxx.reg,v 1.12.2.1 1999/03/07 00:40:47 gibbs Exp $ + * $Id: aic7xxx.reg,v 1.12.2.2 1999/03/08 22:44:36 gibbs Exp $ */ /* @@ -669,6 +669,16 @@ register DSPCISTATUS { mask DFTHRSH_100 0xc0 } +/* aic7890/91/96/97 only */ +register HS_MAILBOX { + address 0x086 + mask HOST_MAILBOX 0xF0 + mask SEQ_MAILBOX 0x0F +} + +const HOST_MAILBOX_SHIFT 4 +const SEQ_MAILBOX_SHIFT 0 + /* * Host Control (p. 3-47) R/W * Overall host control of the device. @@ -727,6 +737,7 @@ register INTSTAT { mask NO_IDENT 0x20|SEQINT /* no IDENTIFY after reconnect*/ mask NO_MATCH 0x30|SEQINT /* no cmd match for reconnect */ mask ABORT_REQUESTED 0x50|SEQINT /* Reconect of aborted SCB */ + mask UPDATE_TMSG_REQ 0x60|SEQINT /* Update TMSG_REQ values */ mask BAD_STATUS 0x70|SEQINT /* Bad status from target */ mask RESIDUAL 0x80|SEQINT /* Residual byte count != 0 */ mask TRACE_POINT 0x90|SEQINT diff --git a/sys/dev/aic7xxx/aic7xxx.seq b/sys/dev/aic7xxx/aic7xxx.seq index e0753ea6050a..7dad1d293bb2 100644 --- a/sys/dev/aic7xxx/aic7xxx.seq +++ b/sys/dev/aic7xxx/aic7xxx.seq @@ -32,7 +32,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: aic7xxx.seq,v 1.84.2.2 1999/03/07 00:40:47 gibbs Exp $ + * $Id: aic7xxx.seq,v 1.84.2.3 1999/03/23 07:41:27 gibbs Exp $ */ #include <dev/aic7xxx/aic7xxx.reg> @@ -1025,6 +1025,18 @@ p_mesgout: mov FUNCTION1, SCB_TCL; mov A, FUNCTION1; mov SINDEX, TARGET_MSG_REQUEST[0]; + if ((ahc->features & AHC_HS_MAILBOX) != 0) { + /* + * Work around a pausing bug in at least the aic7890. + * If the host needs to update the TARGET_MSG_REQUEST + * bit field, it will set the HS_MAILBOX to 1. In + * response, we pause with a specific interrupt code + * asking for the mask to be updated before we continue. + * Ugh. + */ + test HS_MAILBOX, 0xF0 jz . + 2; + mvi INTSTAT, UPDATE_TMSG_REQ; + } if ((ahc->features & AHC_TWIN) != 0) { /* Second Channel uses high byte bits */ test SCB_TCL, SELBUSB jz . + 2; diff --git a/sys/dev/aic7xxx/aicasm_symbol.c b/sys/dev/aic7xxx/aicasm_symbol.c index f808e8900d31..0704baa0942e 100644 --- a/sys/dev/aic7xxx/aicasm_symbol.c +++ b/sys/dev/aic7xxx/aicasm_symbol.c @@ -25,7 +25,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: aicasm_symbol.c,v 1.4 1997/09/27 19:37:30 gibbs Exp $ + * $Id: aicasm_symbol.c,v 1.5 1998/09/15 07:24:17 gibbs Exp $ */ @@ -128,10 +128,10 @@ symtable_close() DBT data; while (symtable->seq(symtable, &key, &data, R_FIRST) == 0) { - symbol_t *cursym; + symbol_t *stored_ptr; - cursym = *(symbol_t **)data.data; - symbol_delete(cursym); + memcpy(&stored_ptr, data.data, sizeof(stored_ptr)); + symbol_delete(stored_ptr); } symtable->close(symtable); } @@ -145,9 +145,10 @@ symbol_t * symtable_get(name) char *name; { - DBT key; - DBT data; - int retval; + symbol_t *stored_ptr; + DBT key; + DBT data; + int retval; key.data = (void *)name; key.size = strlen(name); @@ -176,7 +177,8 @@ symtable_get(name) /* NOTREACHED */ } } - return (*(symbol_t **)data.data); + memcpy(&stored_ptr, data.data, sizeof(stored_ptr)); + return (stored_ptr); } symbol_node_t * @@ -327,7 +329,7 @@ symtable_dump(ofile) while (symtable->seq(symtable, &key, &data, flag) == 0) { symbol_t *cursym; - cursym = *(symbol_t **)data.data; + memcpy(&cursym, data.data, sizeof(cursym)); switch(cursym->type) { case REGISTER: case SCBLOC: diff --git a/sys/dev/pccard/if_xe.c b/sys/dev/pccard/if_xe.c deleted file mode 100644 index 1836f89332d5..000000000000 --- a/sys/dev/pccard/if_xe.c +++ /dev/null @@ -1,2404 +0,0 @@ -/*- - * Copyright (c) 1998, 1999 Scott Mitchell - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Author_Id: if_xe.c,v 1.19 1999/04/15 22:15:53 scott Exp $ - * $Id: if_xe.c,v 1.19 1999/04/15 22:15:53 scott Exp $ - */ - -/* - * Portions of this software were derived from Werner Koch's xirc2ps driver - * for Linux under the terms of the following license (from v1.30 of the - * xirc2ps driver): - * - * Copyright (c) 1997 by Werner Koch (dd9jn) - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, and the entire permission notice in its entirety, - * including the disclaimer of warranties. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. The name of the author may not be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, - * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES - * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED - * OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -/* - * FreeBSD device driver for Xircom CreditCard PCMCIA Ethernet adapters. The - * following cards are currently known to work with the driver: - * Xircom CreditCard 10/100 (CE3) - * Xircom CreditCard Ethernet 10/100 + Modem 56 (CEM56) - * Xircom RealPort Ethernet 10/100 - * Xircom RealPort Ethernet 10/100 + Modem 56 (REM56, REM56G) - * Intel EtherExpress Pro/100 PC Card Mobile Adapter 16 (Pro/100 M16A) - * Compaq Netelligent 10/100 PC Card (CPQ-10/100) - * - * Some other cards *should* work, but support for them is either broken or in - * an unknown state at the moment. I'm always interested in hearing from - * people who own any of these cards: - * Xircom CreditCard 10Base-T (PS-CE2-10) - * Xircom CreditCard Ethernet + ModemII (CEM2) - * Xircom CEM28 and CEM33 Ethernet/Modem cards (may be variants of CEM2?) - * - * Thanks to all who assisted with the development and testing of the driver, - * especially: Werner Koch, Duke Kamstra, Duncan Barclay, Jason George, Dru - * Nelson, Mike Kephart, Bill Rainey and Douglas Rand. Apologies if I've left - * out anyone who deserves a mention here. - * - * Special thanks to Ade Lovett for both hosting the mailing list and doing - * the CEM56/REM56 support code; and the FreeBSD UK Users' Group for hosting - * the web pages. - * - * Contact points: - * - * Driver web page: http://ukug.uk.freebsd.org/~scott/xe_drv/ - * - * Mailing list: http://www.lovett.com/lists/freebsd-xircom/ - * or send "subscribe freebsd-xircom" to <majordomo@lovett.com> - * - * Author email: <scott@uk.freebsd.org> - */ - - -#define XE_DEBUG 1 - -#include "xe.h" -#include "card.h" -#include "apm.h" -#include "bpfilter.h" - -#if NXE > 0 - -#if NCARD > 0 - -#include <sys/param.h> -#include <sys/cdefs.h> -#include <sys/conf.h> -#include <sys/errno.h> -#include <sys/kernel.h> -#include <sys/malloc.h> -#include <sys/mbuf.h> -#include <sys/select.h> -#include <sys/socket.h> -#include <sys/sockio.h> -#include <sys/systm.h> -#include <sys/uio.h> - -#include <net/ethernet.h> -#include <net/if.h> -#include <net/if_arp.h> -#include <net/if_dl.h> -#include <net/if_media.h> -#include <net/if_mib.h> -#if NBPFILTER > 0 -#include <net/bpf.h> -#endif /* NBPFILTER > 0 */ - -#include <i386/isa/isa.h> -#include <i386/isa/isa_device.h> -#include <dev/pccard/if_xereg.h> -#include <machine/clock.h> -#if NAPM > 0 -#include <machine/apm_bios.h> -#endif /* NAPM > 0 */ - -#include <pccard/cardinfo.h> -#include <pccard/cis.h> -#include <pccard/driver.h> -#include <pccard/slot.h> - - - -/* - * One of these structures per allocated device - */ -struct xe_softc { - struct arpcom arpcom; - struct ifmedia ifmedia; - struct callout_handle chand; - struct ifmib_iso_8802_3 mibdata; - struct isa_device *dev; - struct pccard_devinfo *crd; - struct ifnet *ifp; - struct ifmedia *ifm; - char *card_type; /* Card model name */ - char *vendor; /* Card manufacturer */ - int unit; /* Unit number, from dev->id_unit */ - int srev; /* Silicon revision */ - int tx_queued; /* Packets currently waiting to transmit */ - int tx_ptr; /* Last value of PTR reg on card */ - int tx_collisions; /* Collisions since last successful send */ - int tx_timeouts; /* Count of transmit timeouts */ - int autoneg_status; /* Autonegotiation progress state */ - int media; /* Private media word */ - u_char modem; /* 1 = Multifunction card with modem */ - u_char ce3; /* 1 = CE3 class (100Mbit) adapter */ - u_char cem56; /* 1 = CEM56 class (CE3 + 56Kbps modem) adapter */ - u_char phy_ok; /* 1 = MII-compliant PHY found and initialised */ - u_char gone; /* 1 = Card bailed out */ -#if NAPM > 0 - struct apmhook suspend_hook; - struct apmhook resume_hook; -#endif /* NAPM > 0 */ -}; - -static struct xe_softc *sca[MAXSLOT]; -static int iob[MAXSLOT]; /* XXX - very gross */ - - -/* - * MII command structure - */ -struct xe_mii_frame { - u_int8_t mii_stdelim; - u_int8_t mii_opcode; - u_int8_t mii_phyaddr; - u_int8_t mii_regaddr; - u_int8_t mii_turnaround; - u_int16_t mii_data; -}; - -/* - * For accessing card registers - */ -#define XE_INB(r) inb(scp->dev->id_iobase+(r)) -#define XE_INW(r) inw(scp->dev->id_iobase+(r)) -#define XE_OUTB(r, b) outb(scp->dev->id_iobase+(r), (b)) -#define XE_OUTW(r, w) outw(scp->dev->id_iobase+(r), (w)) -#define XE_SELECT_PAGE(p) XE_OUTB(XE_PSR, (p)) - -/* - * Horrid stuff for accessing CIS tuples - */ -#define CARD_MAJOR 50 -#define CISTPL_BUFSIZE 512 -#define CISTPL_TYPE(tpl) tpl[0] -#define CISTPL_LEN(tpl) tpl[2] -#define CISTPL_DATA(tpl,pos) tpl[4 + ((pos)<<1)] - -/* - * Media autonegotiation progress constants - */ -#define XE_AUTONEG_NONE 0 /* No autonegotiation in progress */ -#define XE_AUTONEG_WAITING 1 /* Waiting for transmitter to go idle */ -#define XE_AUTONEG_STARTED 2 /* Waiting for autonegotiation to complete */ -#define XE_AUTONEG_100TX 3 /* Trying to force 100baseTX link */ -#define XE_AUTONEG_FAIL 4 /* Autonegotiation failed */ - - -/* - * Prototypes start here - */ -static int xe_probe (struct isa_device *dev); -static int xe_card_init (struct pccard_devinfo *devi); -static int xe_attach (struct isa_device *dev); -static void xe_init (void *xscp); -static void xe_start (struct ifnet *ifp); -static int xe_ioctl (struct ifnet *ifp, u_long command, caddr_t data); -static int xe_card_intr (struct pccard_devinfo *devi); -static void xe_watchdog (struct ifnet *ifp); -static int xe_media_change (struct ifnet *ifp); -static void xe_media_status (struct ifnet *ifp, struct ifmediareq *mrp); -static timeout_t xe_setmedia; -static void xe_hard_reset (struct xe_softc *scp); -static void xe_soft_reset (struct xe_softc *scp); -static void xe_stop (struct xe_softc *scp); -static void xe_enable_intr (struct xe_softc *scp); -static void xe_disable_intr (struct xe_softc *scp); -static void xe_setmulti (struct xe_softc *scp); -static void xe_setaddrs (struct xe_softc *scp); -static int xe_pio_write_packet (struct xe_softc *scp, struct mbuf *mbp); -static void xe_card_unload (struct pccard_devinfo *devi); - -/* - * MII functions - */ -static void xe_mii_sync (struct xe_softc *scp); -static int xe_mii_init (struct xe_softc *scp); -static void xe_mii_send (struct xe_softc *scp, u_int32_t bits, int cnt); -static int xe_mii_readreg (struct xe_softc *scp, struct xe_mii_frame *frame); -static int xe_mii_writereg (struct xe_softc *scp, struct xe_mii_frame *frame); -static u_int16_t xe_phy_readreg (struct xe_softc *scp, u_int16_t reg); -static void xe_phy_writereg (struct xe_softc *scp, u_int16_t reg, u_int16_t data); - -/* - * Debug functions - */ -#ifdef XE_DEBUG -#define XE_REG_DUMP(scp) xe_reg_dump((scp)) -#define XE_MII_DUMP(scp) xe_mii_dump((scp)) -static void xe_reg_dump (struct xe_softc *scp); -static void xe_mii_dump (struct xe_softc *scp); -#else -#define XE_REG_DUMP(scp) -#define XE_MII_DUMP(scp) -#endif - -#if NAPM > 0 -/* - * APM hook functions - */ -static int xe_suspend (void *xunit); -static int xe_resume (void *xunit); -#endif /* NAPM > 0 */ - - -/* - * PCMCIA driver hooks - */ -#ifdef PCCARD_MODULE -PCCARD_MODULE(xe, xe_card_init, xe_card_unload, xe_card_intr, 0, net_imask); -#else -static struct pccard_device xe_info = { /* For pre 3.1-STABLE code */ - "xe", - xe_card_init, - xe_card_unload, - xe_card_intr, - 0, - &net_imask -}; -DATA_SET(pccarddrv_set, xe_info); -#endif /* PCCARD_MODULE */ - - -/* - * ISA driver hooks. I'd like to do without these but the kernel config stuff - * seems to require them. - */ -struct isa_driver xedriver = { - xe_probe, - xe_attach, - "xe" -}; - - - -/* - * ISA probe routine. - * All of the supported devices are PCMCIA cards. I have no idea if it's even - * possible to successfully probe/attach these at boot time (pccardd normally - * does a lot of setup work) so I don't even bother trying. - */ -static int -xe_probe (struct isa_device *dev) { -#ifdef XE_DEBUG - printf("xe%d: probe, iobase = %#x\n", dev->id_unit, dev->id_iobase); -#endif - bzero(sca, MAXSLOT * sizeof(sca[0])); - iob[dev->id_unit] = dev->id_iobase; - return 0; -} - - -/* - * Two routines to read from/write to the attribute memory - * the write portion is used only for fixing up the RealPort cards, - * the reader portion was needed for debugging info, and duplicated some - * code in xe_card_init(), so it appears here instead with suitable - * modifications to xe_card_init() - * -aDe Lovett - */ -static int -xe_memwrite(struct pccard_devinfo *devi, off_t offset, u_char byte) -{ - struct iovec iov; - struct uio uios; - - iov.iov_base = &byte; - iov.iov_len = sizeof(byte); - - uios.uio_iov = &iov; - uios.uio_iovcnt = 1; - uios.uio_offset = offset; - uios.uio_resid = sizeof(byte); - uios.uio_segflg = UIO_SYSSPACE; - uios.uio_rw = UIO_WRITE; - uios.uio_procp = 0; - - return cdevsw[CARD_MAJOR]->d_write(makedev(CARD_MAJOR, devi->slt->slotnum), &uios, 0); -} - - -static int -xe_memread(struct pccard_devinfo *devi, off_t offset, u_char *buf, int size) -{ - struct iovec iov; - struct uio uios; - - iov.iov_base = buf; - iov.iov_len = size; - - uios.uio_iov = &iov; - uios.uio_iovcnt = 1; - uios.uio_offset = offset; - uios.uio_resid = size; - uios.uio_segflg = UIO_SYSSPACE; - uios.uio_rw = UIO_READ; - uios.uio_procp = 0; - - return cdevsw[CARD_MAJOR]->d_read(makedev(CARD_MAJOR, devi->slt->slotnum), &uios, 0); -} - - -/* - * Hacking for RealPort cards - */ -static int -xe_cem56fix(struct xe_softc *scp) -{ - struct pccard_devinfo *devi; - struct slot *slt; - struct slot_ctrl *ctrl; - int ioport, fail; - - /* initialise a few variables */ - devi = scp->crd; - slt = devi->slt; - ctrl = slt->ctrl; - - /* allocate a new I/O slot for the ethernet */ - /* XXX: ctrl->mapio() always appears to return 0 (success), so - * this may cause problems if another device is listening - * on 0x300 already - */ - slt->io[1].window = 1; - slt->io[1].flags = IODF_WS|IODF_16BIT|IODF_ZEROWS|IODF_ACTIVE; - slt->io[1].size = 0x10; - if (iob[scp->unit] == -1) { - for (ioport = 0x300; ioport < 0x400; ioport += 0x10) { - slt->io[1].start = ioport; - if ((fail = ctrl->mapio( slt, 1 )) == 0) - break; - } - } - else { - ioport = iob[scp->unit]; - slt->io[1].start = ioport; - fail = ctrl->mapio(slt, 1); - } - - /* did we find one? */ - if (fail) { - printf( "xe%d: xe_cem56fix: no free address space\n", scp->unit ); - return -1; - } - - - /* munge the id_iobase entry for use by the rest of the driver */ -#ifdef XE_DEBUG - printf( "xe%d: using 0x%x for RealPort ethernet\n", scp->unit, ioport ); -#endif - scp->dev->id_iobase = ioport; - scp->dev->id_alive = 0x10; - - /* magic to set up the ethernet */ - xe_memwrite( devi, 0x800, 0x47 ); - xe_memwrite( devi, 0x80a, ioport & 0xff ); - xe_memwrite( devi, 0x80c, (ioport >> 8) & 0xff ); - - xe_memwrite( devi, 0x820, 0x01 ); - xe_memwrite( devi, 0x822, 0x0c ); - xe_memwrite( devi, 0x824, 0x00 ); - xe_memwrite( devi, 0x826, 0x00 ); - xe_memwrite( devi, 0x828, 0x00 ); - - /* success! */ - return 0; -} - - -/* - * PCMCIA probe routine. - * Probe and identify the device. Called by the slot manager when the card is - * inserted or the machine wakes up from suspend mode. Assmes that the slot - * structure has been initialised already. - */ -static int -xe_card_init(struct pccard_devinfo *devi) -{ - struct xe_softc *scp; - struct isa_device *dev; - u_char buf[CISTPL_BUFSIZE]; - u_char ver_str[CISTPL_BUFSIZE>>1]; - off_t offs; - int unit, success, rc, i; - - unit = devi->isahd.id_unit; - scp = sca[unit]; - dev = &devi->isahd; - success = 0; - -#ifdef XE_DEBUG - printf("xe: Probing for unit %d\n", unit); -#endif - - /* Check that unit number is OK */ - if (unit > MAXSLOT) { - printf("xe: bad unit (%d)\n", unit); - return (ENODEV); - } - - /* Don't attach an active device */ - if (scp && !scp->gone) { - printf("xe: unit already attached (%d)\n", unit); - return (EBUSY); - } - - /* Allocate per-instance storage */ - if (!scp) { - if ((scp = malloc(sizeof(*scp), M_DEVBUF, M_NOWAIT)) == NULL) { - printf("xe%d: failed to allocage driver storage\n", unit); - return (ENOMEM); - } - bzero(scp, sizeof(*scp)); - } - - /* Re-attach an existing device */ - if (scp->gone) { - scp->gone = 0; - return 0; - } - - /* Grep through CIS looking for relevant tuples */ - offs = 0; - do { - u_int16_t vendor; - u_int8_t rev, media, prod; - - /* - * Read tuples one at a time into buf. Sucks, but it only happens once. - * XXX - If the stuff we need isn't in attribute memory, or (worse yet) - * XXX - attribute memory isn't mapped, we're FUBAR. Maybe need to do an - * XXX - ioctl on the card device and follow links? - * XXX - Not really the driver's problem, PCCARD should handle all this! - */ - if ((rc = xe_memread( devi, offs, buf, CISTPL_BUFSIZE )) == 0) { - - switch (CISTPL_TYPE(buf)) { - - case 0x15: /* Grab version string (needed to ID some weird CE2's) */ -#ifdef XE_DEBUG - printf("xe%d: Got version string (0x15)\n", unit); -#endif - for (i = 0; i < CISTPL_LEN(buf); ver_str[i] = CISTPL_DATA(buf, i++)); - ver_str[i] = '\0'; - ver_str[(CISTPL_BUFSIZE>>1) - 1] = CISTPL_LEN(buf); - success++; - break; - - case 0x20: /* Figure out what type of card we have */ -#ifdef XE_DEBUG - printf("xe%d: Got card ID (0x20)\n", unit); -#endif - vendor = CISTPL_DATA(buf, 0) + (CISTPL_DATA(buf, 1) << 8); - rev = CISTPL_DATA(buf, 2); - media = CISTPL_DATA(buf, 3); - prod = CISTPL_DATA(buf, 4); - - switch (vendor) { /* Get vendor ID */ - case 0x0105: - scp->vendor = "Xircom"; break; - case 0x0138: - case 0x0183: - scp->vendor = "Compaq"; break; - case 0x0089: - scp->vendor = "Intel"; break; - default: - scp->vendor = "Unknown"; - } - - if (!((prod & 0x40) && (media & 0x01))) { -#ifdef XE_DEBUG - printf("xe%d: Not a PCMCIA Ethernet card!\n", unit); -#endif - rc = ENODEV; /* Not a PCMCIA Ethernet device */ - } - else { - if (media & 0x10) { /* Ethernet/modem cards */ -#ifdef XE_DEBUG - printf("xe%d: Card is Ethernet/modem combo\n", unit); -#endif - scp->modem = 1; - switch (prod & 0x0f) { - case 1: - scp->card_type = "CEM"; break; - case 2: - scp->card_type = "CEM2"; break; - case 3: - scp->card_type = "CEM3"; break; - case 4: - scp->card_type = "CEM33"; break; - case 5: - scp->ce3 = 1; - scp->card_type = "CEM56M"; break; - case 6: - case 7: /* Some kind of RealPort card */ - scp->ce3 = 1; - scp->cem56 = 1; - scp->card_type = "CEM56"; break; - default: - rc = ENODEV; - } - } - else { /* Ethernet-only cards */ -#ifdef XE_DEBUG - printf("xe%d: Card is Ethernet only\n", unit); -#endif - switch (prod & 0x0f) { - case 1: - scp->card_type = "CE"; break; - case 2: - scp->card_type = "CE2"; break; - case 3: - scp->ce3 = 1; - scp->card_type = "CE3"; break; - default: - rc = ENODEV; - } - } - } - success++; - break; - - case 0x22: /* Get MAC address */ -#ifdef XE_DEBUG - printf("xe%d: Got MAC address (0x22)\n", unit); -#endif - if ((CISTPL_LEN(buf) == 8) && - (CISTPL_DATA(buf, 0) == 0x04) && - (CISTPL_DATA(buf, 1) == ETHER_ADDR_LEN)) { - for (i = 0; i < ETHER_ADDR_LEN; scp->arpcom.ac_enaddr[i] = CISTPL_DATA(buf, i+2), i++); - } - success++; - break; - default: - } - } - - /* Skip to next tuple */ - offs += ((CISTPL_LEN(buf) + 2) << 1); - - } while ((CISTPL_TYPE(buf) != 0xff) && (CISTPL_LEN(buf) != 0xff) && (rc == 0)); - - - /* Die now if something went wrong above */ - if ((rc != 0) || (success < 3)) { - free(scp, M_DEVBUF); - return rc; - } - - /* Check for certain strange CE2's that look like CE's */ - if (strcmp(scp->card_type, "CE") == 0) { - u_char *str = ver_str; -#ifdef XE_DEBUG - printf("xe%d: Checking for weird CE2 string\n", unit); -#endif - str += strlen(str) + 1; /* Skip forward to 3rd version string */ - str += strlen(str) + 1; - str += strlen(str) + 1; - for (i = 0; i < strlen(str) - 2; i++) { - if (bcmp(&str[i], "CE2", 3) ==0) { /* Look for "CE2" string */ - scp->card_type = "CE2"; - } - } - } - - /* Reject unsupported cards */ - if (strcmp(scp->card_type, "CE") == 0 || strcmp(scp->card_type, "CEM") == 0) { - printf("xe%d: Sorry, your %s card is not supported :(\n", unit, scp->card_type); - free(scp, M_DEVBUF); - return ENODEV; - } - - /* Fill in some private data */ - sca[unit] = scp; - scp->dev = &devi->isahd; - scp->crd = devi; - scp->ifp = &scp->arpcom.ac_if; - scp->ifm = &scp->ifmedia; - scp->unit = unit; - scp->autoneg_status = 0; - - /* Hack RealPorts into submission */ - if (scp->cem56 && xe_cem56fix(scp) < 0) { - printf( "xe%d: Unable to fix your RealPort\n", unit ); - sca[unit] = 0; - free(scp, M_DEVBUF); - return ENODEV; - } - - /* Attempt to attach the device */ - if (!xe_attach(scp->dev)) { - sca[unit] = 0; - free(scp, M_DEVBUF); - return ENXIO; - } - -#if NAPM > 0 - /* Establish APM hooks once device attached */ - scp->suspend_hook.ah_name = "xe_suspend"; - scp->suspend_hook.ah_fun = xe_suspend; - scp->suspend_hook.ah_arg = (void *)unit; - scp->suspend_hook.ah_order = APM_MIN_ORDER; - apm_hook_establish(APM_HOOK_SUSPEND, &scp->suspend_hook); - scp->resume_hook.ah_name = "xe_resume"; - scp->resume_hook.ah_fun = xe_resume; - scp->resume_hook.ah_arg = (void *)unit; - scp->resume_hook.ah_order = APM_MIN_ORDER; - apm_hook_establish(APM_HOOK_RESUME, &scp->resume_hook); -#endif /* NAPM > 0 */ - - /* Success */ - return 0; -} - - -/* - * Attach a device (called when xe_card_init succeeds). Assume that the probe - * routine has set up the softc structure correctly and that we can trust the - * unit number. - */ -static int -xe_attach (struct isa_device *dev) { - struct xe_softc *scp = sca[dev->id_unit]; - int i; - -#ifdef XE_DEBUG - printf("xe%d: attach\n", scp->unit); -#endif - - /* Initialise the ifnet structure */ - if (!scp->ifp->if_name) { - scp->ifp->if_softc = scp; - scp->ifp->if_name = "xe"; - scp->ifp->if_unit = scp->unit; - scp->ifp->if_timer = 0; - scp->ifp->if_flags = (IFF_BROADCAST | IFF_SIMPLEX | IFF_MULTICAST); - scp->ifp->if_linkmib = &scp->mibdata; - scp->ifp->if_linkmiblen = sizeof scp->mibdata; - scp->ifp->if_output = ether_output; - scp->ifp->if_start = xe_start; - scp->ifp->if_ioctl = xe_ioctl; - scp->ifp->if_watchdog = xe_watchdog; - scp->ifp->if_init = xe_init; - scp->ifp->if_snd.ifq_maxlen = IFQ_MAXLEN; - } - - /* Initialise the ifmedia structure */ - ifmedia_init(scp->ifm, 0, xe_media_change, xe_media_status); - callout_handle_init(&scp->chand); - - /* - * Fill in supported media types. Some cards _do_ support full duplex - * operation, but this driver doesn't, yet. Therefore we leave those modes - * out of the list. We support some form of autoselection in all cases. - */ - if (scp->ce3) { - ifmedia_add(scp->ifm, IFM_ETHER|IFM_100_TX, 0, NULL); - ifmedia_add(scp->ifm, IFM_ETHER|IFM_10_T, 0, NULL); - } - else { - ifmedia_add(scp->ifm, IFM_ETHER|IFM_10_T, 0, NULL); - ifmedia_add(scp->ifm, IFM_ETHER|IFM_10_2, 0, NULL); - } - ifmedia_add(scp->ifm, IFM_ETHER|IFM_AUTO, 0, NULL); - - /* Default is to autoselect best supported media type */ - ifmedia_set(scp->ifm, IFM_ETHER|IFM_AUTO); - - /* Print some useful information */ - printf("\nxe%d: %s %s%s%s\n", - scp->unit, - scp->vendor, - scp->card_type, - scp->ce3 ? ", 100Mbps capable" : "", - scp->cem56 ? ", with modem" : ""); - printf("xe%d: Ethernet address %02x", scp->unit, scp->arpcom.ac_enaddr[0]); - for (i = 1; i < ETHER_ADDR_LEN; i++) { - printf(":%02x", scp->arpcom.ac_enaddr[i]); - } - printf("\n"); - - /* Attach the interface */ - if_attach(scp->ifp); - ether_ifattach(scp->ifp); - -#if NBPFILTER > 0 - /* If BPF is in the kernel, call the attach for it */ -#ifdef XE_DEBUG - printf("xe%d: BPF listener attached\n", scp->unit); -#endif - bpfattach(scp->ifp, DLT_EN10MB, sizeof(struct ether_header)); -#endif - - /* Done */ - return 1; -} - - -/* - * Initialize device. Completes the reset procedure on the card and starts - * output. If there's an autonegotiation in progress we DON'T do anything; - * the media selection code will call us again when it's done. - */ -static void -xe_init(void *xscp) { - struct xe_softc *scp = xscp; - int s; - -#ifdef XE_DEBUG - printf("xe%d: init\n", scp->unit); -#endif - - if (scp->gone) return; - - if (TAILQ_EMPTY(&scp->ifp->if_addrhead)) return; - - /* Reset transmitter flags */ - scp->tx_queued = 0; - scp->tx_ptr = 0; - scp->tx_collisions = 0; - scp->ifp->if_timer = 0; - - s = splimp(); - - XE_SELECT_PAGE(0x42); - XE_OUTB(XE_SWC0, 0x20); /* Disable source insertion (WTF is that?) */ - - /* - * Set the 'local memory dividing line' -- splits the 32K card memory into - * 8K for transmit buffers and 24K for receive. This is done automatically - * on newer revision cards. - */ - if (scp->srev != 1) { - XE_SELECT_PAGE(2); - XE_OUTW(XE_RBS, 0x2000); - } - - /* Set up multicast addresses */ - xe_setmulti(scp); - - /* Fix the data offset register -- reset leaves it off-by-one */ - XE_SELECT_PAGE(0); - XE_OUTW(XE_DOR, 0x2000); - - /* - * Set MAC interrupt masks and clear status regs. The bit names are direct - * from the Linux code; I have no idea what most of them do. - */ - XE_SELECT_PAGE(0x40); /* Bit 7..0 */ - XE_OUTB(XE_RXM0, 0xff); /* ROK, RAB, rsv, RO, CRC, AE, PTL, MP */ - XE_OUTB(XE_TXM0, 0xff); /* TOK, TAB, SQE, LL, TU, JAB, EXC, CRS */ - XE_OUTB(XE_TXM1, 0xb0); /* rsv, rsv, PTD, EXT, rsv, rsv, rsv, rsv */ - XE_OUTB(XE_RXS0, 0x00); /* ROK, RAB, REN, RO, CRC, AE, PTL, MP */ - XE_OUTB(XE_TXS0, 0x00); /* TOK, TAB, SQE, LL, TU, JAB, EXC, CRS */ - XE_OUTB(XE_TXS1, 0x00); /* TEN, rsv, PTD, EXT, retry_counter:4 */ - - /* - * Check for an in-progress autonegotiation. If one is active, just set - * IFF_RUNNING and return. The media selection code will call us again when - * it's done. - */ - if (scp->autoneg_status) { - scp->ifp->if_flags |= IFF_RUNNING; - } - else { - /* Enable receiver, put MAC online */ - XE_SELECT_PAGE(0x40); - XE_OUTB(XE_OCR, XE_OCR_RX_ENABLE|XE_OCR_ONLINE); - - /* Set up IMR, enable interrupts */ - xe_enable_intr(scp); - - /* Attempt to start output */ - scp->ifp->if_flags |= IFF_RUNNING; - scp->ifp->if_flags &= ~IFF_OACTIVE; - xe_start(scp->ifp); - } - - (void)splx(s); -} - - -/* - * Start output on interface. We make two assumptions here: - * 1) that the current priority is set to splimp _before_ this code - * is called *and* is returned to the appropriate priority after - * return - * 2) that the IFF_OACTIVE flag is checked before this code is called - * (i.e. that the output part of the interface is idle) - */ -static void -xe_start(struct ifnet *ifp) { - struct xe_softc *scp = ifp->if_softc; - struct mbuf *mbp; - - if (scp->gone) return; - - /* - * Loop while there are packets to be sent, and space to send them. - */ - while (1) { - IF_DEQUEUE(&ifp->if_snd, mbp); /* Suck a packet off the send queue */ - - if (mbp == NULL) { - /* - * We are using the !OACTIVE flag to indicate to the outside world that - * we can accept an additional packet rather than that the transmitter - * is _actually_ active. Indeed, the transmitter may be active, but if - * we haven't filled all the buffers with data then we still want to - * accept more. - */ - ifp->if_flags &= ~IFF_OACTIVE; - return; - } - - if (xe_pio_write_packet(scp, mbp) != 0) { - IF_PREPEND(&ifp->if_snd, mbp); /* Push the packet back onto the queue */ - ifp->if_flags |= IFF_OACTIVE; - return; - } - -#if NBPFILTER > 0 - /* Tap off here if there is a bpf listener */ - if (ifp->if_bpf) { -#if XE_DEBUG > 1 - printf("xe%d: sending output packet to BPF\n", scp->unit); -#endif - bpf_mtap(ifp, mbp); - } -#endif /* NBPFILTER > 0 */ - - ifp->if_timer = 5; /* In case we don't hear from the card again */ - scp->tx_queued++; - - m_freem(mbp); - } -} - - -/* - * Process an ioctl request. Adapted from the ed driver. - */ -static int -xe_ioctl (register struct ifnet *ifp, u_long command, caddr_t data) { - struct xe_softc *scp; - int s, error; - - scp = ifp->if_softc; - error = 0; - - if (scp->gone) { - return ENXIO; - } - - s = splimp(); - - switch (command) { - - case SIOCSIFADDR: - case SIOCGIFADDR: - case SIOCSIFMTU: - error = ether_ioctl(ifp, command, data); - break; - - case SIOCSIFFLAGS: - /* - * If the interface is marked up and stopped, then start it. If it is - * marked down and running, then stop it. - */ - if (ifp->if_flags & IFF_UP) { - if (!(ifp->if_flags & IFF_RUNNING)) { - xe_hard_reset(scp); - xe_setmedia(scp); - xe_init(scp); - } - } - else { - if (ifp->if_flags & IFF_RUNNING) - xe_stop(scp); - } - - case SIOCADDMULTI: - case SIOCDELMULTI: - /* - * Multicast list has (maybe) changed; set the hardware filter - * accordingly. This also serves to deal with promiscuous mode if we have - * a BPF listener active. - */ - xe_setmulti(scp); - error = 0; - break; - - case SIOCSIFMEDIA: - case SIOCGIFMEDIA: - /* - * Someone wants to get/set media options. - */ - error = ifmedia_ioctl(ifp, (struct ifreq *)data, &scp->ifmedia, command); - break; - - default: - error = EINVAL; - } - - (void)splx(s); - - return error; -} - - -/* - * Card interrupt handler: should return true if the interrupt was for us, in - * case we are sharing our IRQ line with other devices (this will probably be - * the case for multifunction cards). - * - * This function is probably more complicated than it needs to be, as it - * attempts to deal with the case where multiple packets get sent between - * interrupts. This is especially annoying when working out the collision - * stats. Not sure whether this case ever really happens or not (maybe on a - * slow/heavily loaded machine?) so it's probably best to leave this like it - * is. - * - * Note that the crappy PIO used to get packets on and off the card means that - * you will spend a lot of time in this routine -- I can get my P150 to spend - * 90% of its time servicing interrupts if I really hammer the network. Could - * fix this, but then you'd start dropping/losing packets. The moral of this - * story? If you want good network performance _and_ some cycles left over to - * get your work done, don't buy a Xircom card. Or convince them to tell me - * how to do memory-mapped I/O :) - */ -static int -xe_card_intr(struct pccard_devinfo *devi) { - struct xe_softc *scp; - struct ifnet *ifp; - int unit, result; - u_int16_t rx_bytes, rxs, txs; - u_int8_t psr, isr, esr, rsr; - - unit = devi->isahd.id_unit; - scp = sca[unit]; - ifp = &scp->arpcom.ac_if; - rx_bytes = 0; /* Bytes received on this interrupt */ - result = 0; /* Set true if the interrupt is for us */ - - if (scp->gone) - return 0; - - if (scp->ce3) { - XE_OUTB(XE_CR, 0); /* Disable interrupts */ - } - - psr = XE_INB(XE_PSR); /* Stash the current register page */ - - /* - * Read ISR to see what caused this interrupt. Note that this clears the - * ISR on CE2 type cards. - */ - if ((isr = XE_INB(XE_ISR)) && isr != 0xff) { - - result = 1; /* This device did generate an int */ - esr = XE_INB(XE_ESR); /* Read the other status registers */ - XE_SELECT_PAGE(0x40); - rxs = XE_INB(XE_RXS0); - XE_OUTB(XE_RXS0, ~rxs & 0xff); - txs = XE_INB(XE_TXS0); - txs |= XE_INB(XE_TXS1) << 8; - XE_OUTB(XE_TXS0, 0); - XE_OUTB(XE_TXS1, 0); - XE_SELECT_PAGE(0); - -#if XE_DEBUG > 3 - printf("xe%d: ISR=%#2.2x ESR=%#2.2x RXS=%#2.2x TXS=%#4.4x\n", unit, isr, esr, rxs, txs); -#endif - - /* - * Handle transmit interrupts - */ - if (isr & XE_ISR_TX_PACKET) { - u_int8_t new_ptr, sent; - - if ((new_ptr = XE_INB(XE_PTR)) < scp->tx_ptr) /* Update packet count */ - sent = (0xff - scp->tx_ptr) + new_ptr; /* PTR rolled over */ - else - sent = new_ptr - scp->tx_ptr; - - if (sent > 0) { /* Packets sent since last interrupt */ - scp->tx_ptr = new_ptr; - scp->tx_queued -= sent; - ifp->if_opackets += sent; - ifp->if_collisions += scp->tx_collisions; - - /* - * Collision stats are a PITA. If multiples frames have been sent, we - * distribute any outstanding collision count equally amongst them. - * However, if we're missing interrupts we're quite likely to also - * miss some collisions; thus the total count will be off anyway. - * Likewise, if we miss a frame dropped due to excessive collisions - * any outstanding collisions count will be held against the next - * frame to be successfully sent. Hopefully it averages out in the - * end! - * XXX - This will screw up if tx_collisions/sent > 14. FIX IT! - */ - switch (scp->tx_collisions) { - case 0: - break; - case 1: - scp->mibdata.dot3StatsSingleCollisionFrames++; - scp->mibdata.dot3StatsCollFrequencies[0]++; - break; - default: - if (sent == 1) { - scp->mibdata.dot3StatsMultipleCollisionFrames++; - scp->mibdata.dot3StatsCollFrequencies[scp->tx_collisions-1]++; - } - else { /* Distribute across multiple frames */ - scp->mibdata.dot3StatsMultipleCollisionFrames += sent; - scp->mibdata. - dot3StatsCollFrequencies[scp->tx_collisions/sent] += sent - scp->tx_collisions%sent; - scp->mibdata. - dot3StatsCollFrequencies[scp->tx_collisions/sent + 1] += scp->tx_collisions%sent; - } - } - scp->tx_collisions = 0; - } - ifp->if_timer = 0; - ifp->if_flags &= ~IFF_OACTIVE; - } - if (txs & 0x0002) { /* Excessive collisions (packet dropped) */ - ifp->if_collisions += 16; - ifp->if_oerrors++; - scp->tx_collisions = 0; - scp->mibdata.dot3StatsExcessiveCollisions++; - scp->mibdata.dot3StatsMultipleCollisionFrames++; - scp->mibdata.dot3StatsCollFrequencies[15]++; - XE_OUTB(XE_CR, XE_CR_RESTART_TX); - } - if (txs & 0x0040) /* Transmit aborted -- probably collisions */ - scp->tx_collisions++; - - - /* - * Handle receive interrupts - */ - while ((esr = XE_INB(XE_ESR)) & XE_ESR_FULL_PKT_RX) { - - if ((rsr = XE_INB(XE_RSR)) & XE_RSR_RX_OK) { - struct ether_header *ehp; - struct mbuf *mbp; - u_int16_t len; - - len = XE_INW(XE_RBC); - - if (len == 0) - continue; - -#if 0 - /* - * Limit the amount of time we spend in this loop, dropping packets if - * necessary. The Linux code does this with considerably more - * finesse, adjusting the threshold dynamically. - */ - if ((rx_bytes += len) > 22000) { - ifp->if_iqdrops++; - scp->mibData.dot3StatsMissedFrames++; - XE_OUTW(XE_DOR, 0x8000); - continue; - } -#endif - - if (len & 0x01) - len++; - - MGETHDR(mbp, M_DONTWAIT, MT_DATA); /* Allocate a header mbuf */ - if (mbp != NULL) { - mbp->m_pkthdr.rcvif = ifp; - mbp->m_pkthdr.len = mbp->m_len = len; - - /* - * If the mbuf header isn't big enough for the packet, attach an - * mbuf cluster to hold it. The +2 is to allow for the nasty little - * alignment hack below. - */ - if (len + 2 > MHLEN) { - MCLGET(mbp, M_DONTWAIT); - if ((mbp->m_flags & M_EXT) == 0) { - m_freem(mbp); - mbp = NULL; - } - } - } - - if (mbp != NULL) { - /* - * The Ethernet header is 14 bytes long; thus the actual packet data - * won't be 32-bit aligned when it's dumped into the mbuf. We - * offset everything by 2 bytes to fix this. Apparently the - * alignment is important for NFS, damn its eyes. - */ - mbp->m_data += 2; - ehp = mtod(mbp, struct ether_header *); - - /* - * Now get the packet, including the Ethernet header and trailer (?) - * We use programmed I/O, because we don't know how to do shared - * memory with these cards. So yes, it's real slow, and heavy on - * the interrupts (CPU on my P150 maxed out at ~950KBps incoming). - */ - if (scp->srev == 0) { /* Workaround a bug in old cards */ - u_short rhs; - - XE_SELECT_PAGE(5); - rhs = XE_INW(XE_RHS); - XE_SELECT_PAGE(0); - - rhs += 3; /* Skip control info */ - - if (rhs >= 0x8000) - rhs = 0; - - if (rhs + len > 0x8000) { - int i; - - /* - * XXX - This i-- seems very wrong, but it's what the Linux guys - * XXX - do. Need someone with an old CE2 to test this for me. - * XXX - 99/3/28: Changed the first i-- to an i++, maybe that'll - * XXX - fix it? It seems as though the previous version would - * XXX - have caused an infinite loop (what, another one?). - */ - for (i = 0; i < len; i++, rhs++) { - ((char *)ehp)[i] = XE_INB(XE_EDP); - if (rhs == 0x8000) { - rhs = 0; - i--; - } - } - } - else - insw(scp->dev->id_iobase+XE_EDP, ehp, len >> 1); - } - else - insw(scp->dev->id_iobase+XE_EDP, ehp, len >> 1); - -#if NBPFILTER > 0 - /* - * Check if there's a BPF listener on this interface. If so, hand - * off the raw packet to bpf. - */ - if (ifp->if_bpf) { -#if XE_DEBUG > 1 - printf("xe%d: passing input packet to BPF\n", scp->unit); -#endif - bpf_mtap(ifp, mbp); - - /* - * Note that the interface cannot be in promiscuous mode if there - * are no BPF listeners. And if we are in promiscuous mode, we - * have to check if this packet is really ours. - */ - if ((ifp->if_flags & IFF_PROMISC) && - bcmp(ehp->ether_dhost, scp->arpcom.ac_enaddr, sizeof(ehp->ether_dhost)) != 0 && - (rsr & XE_RSR_PHYS_PKT)) { - m_freem(mbp); - mbp = NULL; - } - } -#endif /* NBPFILTER > 0 */ - - if (mbp != NULL) { - mbp->m_pkthdr.len = mbp->m_len = len - ETHER_HDR_LEN; - mbp->m_data += ETHER_HDR_LEN; /* Strip off Ethernet header */ - ether_input(ifp, ehp, mbp); /* Send the packet on its way */ - ifp->if_ipackets++; /* Success! */ - } - XE_OUTW(XE_DOR, 0x8000); /* skip_rx_packet command */ - } - } - else if (rsr & XE_RSR_LONG_PKT) { /* Packet length >1518 bytes */ - scp->mibdata.dot3StatsFrameTooLongs++; - ifp->if_ierrors++; - } - else if (rsr & XE_RSR_CRC_ERR) { /* Bad checksum on packet */ - scp->mibdata.dot3StatsFCSErrors++; - ifp->if_ierrors++; - } - else if (rsr & XE_RSR_ALIGN_ERR) { /* Packet alignment error */ - scp->mibdata.dot3StatsAlignmentErrors++; - ifp->if_ierrors++; - } - } - if (rxs & 0x10) { /* Receiver overrun */ - scp->mibdata.dot3StatsInternalMacReceiveErrors++; - ifp->if_ierrors++; - XE_OUTB(XE_CR, XE_CR_CLEAR_OVERRUN); - } - } - - XE_SELECT_PAGE(psr); /* Restore saved page */ - XE_OUTB(XE_CR, XE_CR_ENABLE_INTR); /* Re-enable interrupts */ - - /* XXX - Could force an int here, instead of dropping packets? */ - /* XXX - XE_OUTB(XE_CR, XE_CR_ENABLE_INTR|XE_CE_FORCE_INTR); */ - - return result; -} - - -/* - * Device timeout/watchdog routine. Called automatically if we queue a packet - * for transmission but don't get an interrupt within a specified timeout - * (usually 5 seconds). When this happens we assume the worst and reset the - * card. - */ -static void -xe_watchdog(struct ifnet *ifp) { - struct xe_softc *scp = ifp->if_softc; - - if (scp->gone) return; - - printf("xe%d: watchdog timeout; resetting card\n", scp->unit); - scp->tx_timeouts++; - ifp->if_oerrors += scp->tx_queued; - xe_stop(scp); - xe_hard_reset(scp); - xe_setmedia(scp); - xe_init(scp); -} - - -/* - * Change media selection. - */ -static int -xe_media_change(struct ifnet *ifp) { - struct xe_softc *scp = ifp->if_softc; - -#ifdef XE_DEBUG - printf("xe%d: media_change\n", ifp->if_unit); -#endif - - if (IFM_TYPE(scp->ifm->ifm_media) != IFM_ETHER) - return(EINVAL); - - /* - * Some card/media combos aren't always possible -- filter those out here. - */ - if ((IFM_SUBTYPE(scp->ifm->ifm_media) == IFM_AUTO || - IFM_SUBTYPE(scp->ifm->ifm_media) == IFM_100_TX) && !scp->phy_ok) - return (EINVAL); - - xe_setmedia(scp); - - return 0; -} - - -/* - * Return current media selection. - */ -static void -xe_media_status(struct ifnet *ifp, struct ifmediareq *mrp) { - -#ifdef XE_DEBUG - printf("xe%d: media_status\n", ifp->if_unit); -#endif - - mrp->ifm_active = ((struct xe_softc *)ifp->if_softc)->media; - - return; -} - - -/* - * Select active media. - */ -static void xe_setmedia(void *xscp) { - struct xe_softc *scp = xscp; - u_int16_t bmcr, bmsr, anar, lpar; - -#ifdef XE_DEBUG - printf("xe%d: setmedia\n", scp->unit); -#endif - - /* Cancel any pending timeout */ - untimeout(xe_setmedia, scp, scp->chand); - xe_disable_intr(scp); - - /* Select media */ - scp->media = IFM_ETHER; - switch (IFM_SUBTYPE(scp->ifm->ifm_media)) { - - case IFM_AUTO: /* Autoselect media */ - scp->media = IFM_ETHER|IFM_AUTO; - - /* - * Autoselection is really awful. It goes something like this: - * - * Wait until the transmitter goes idle (2sec timeout). - * Reset card - * IF a 100Mbit PHY exists - * Start NWAY autonegotiation (3.5sec timeout) - * IF that succeeds - * Select 100baseTX or 10baseT, whichever was detected - * ELSE - * Reset card - * IF a 100Mbit PHY exists - * Try to force a 100baseTX link (3sec timeout) - * IF that succeeds - * Select 100baseTX - * ELSE - * Disable the PHY - * ENDIF - * ENDIF - * ENDIF - * ENDIF - * IF nothing selected so far - * IF a 100Mbit PHY exists - * Select 10baseT - * ELSE - * Select 10baseT or 10base2, whichever is connected - * ENDIF - * ENDIF - */ - switch (scp->autoneg_status) { - - case XE_AUTONEG_NONE: -#ifdef XE_DEBUG - printf("xe%d: Waiting for idle transmitter\n", scp->unit); -#endif - scp->arpcom.ac_if.if_flags |= IFF_OACTIVE; - scp->autoneg_status = XE_AUTONEG_WAITING; - scp->chand = timeout(xe_setmedia, scp, hz * 2); - return; - - case XE_AUTONEG_WAITING: - xe_soft_reset(scp); - if (scp->phy_ok) { -#ifdef XE_DEBUG - printf("xe%d: Starting autonegotiation\n", scp->unit); -#endif - bmcr = xe_phy_readreg(scp, PHY_BMCR); - bmcr &= ~(PHY_BMCR_AUTONEGENBL); - xe_phy_writereg(scp, PHY_BMCR, bmcr); - anar = xe_phy_readreg(scp, PHY_ANAR); - anar &= ~(PHY_ANAR_100BT4|PHY_ANAR_100BTXFULL|PHY_ANAR_10BTFULL); - anar |= PHY_ANAR_100BTXHALF|PHY_ANAR_10BTHALF; - xe_phy_writereg(scp, PHY_ANAR, anar); - bmcr |= PHY_BMCR_AUTONEGENBL|PHY_BMCR_AUTONEGRSTR; - xe_phy_writereg(scp, PHY_BMCR, bmcr); - scp->autoneg_status = XE_AUTONEG_STARTED; - scp->chand = timeout(xe_setmedia, scp, hz * 7/2); - return; - } - else { - scp->autoneg_status = XE_AUTONEG_FAIL; - } - break; - - case XE_AUTONEG_STARTED: - bmsr = xe_phy_readreg(scp, PHY_BMSR); - lpar = xe_phy_readreg(scp, PHY_LPAR); - if (bmsr & (PHY_BMSR_AUTONEGCOMP|PHY_BMSR_LINKSTAT)) { -#ifdef XE_DEBUG - printf("xe%d: Autonegotiation complete!\n", scp->unit); -#endif - /* - * XXX - Shouldn't have to do this, but (on my hub at least) the - * XXX - transmitter won't work after a successful autoneg. So we see - * XXX - what the negotiation result was and force that mode. I'm - * XXX - sure there is an easy fix for this. - */ - if (lpar & PHY_LPAR_100BTXHALF) { - xe_phy_writereg(scp, PHY_BMCR, PHY_BMCR_SPEEDSEL); - XE_MII_DUMP(scp); - XE_SELECT_PAGE(2); - XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08); - scp->media = IFM_ETHER|IFM_100_TX; - scp->autoneg_status = XE_AUTONEG_NONE; - } - else { - /* - * XXX - Bit of a hack going on in here. - * XXX - This is derived from Ken Hughes patch to the Linux driver - * XXX - to make it work with 10Mbit _autonegotiated_ links on CE3B - * XXX - cards. What's a CE3B and how's it differ from a plain CE3? - * XXX - these are the things we need to find out. - */ - xe_phy_writereg(scp, PHY_BMCR, 0x0000); - XE_SELECT_PAGE(2); - /* BEGIN HACK */ - XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08); - XE_SELECT_PAGE(0x42); - XE_OUTB(XE_SWC1, 0x80); - scp->media = IFM_ETHER|IFM_10_T; - scp->autoneg_status = XE_AUTONEG_NONE; - /* END HACK */ - /*XE_OUTB(XE_MSR, XE_INB(XE_MSR) & ~0x08);*/ /* Disable PHY? */ - /*scp->autoneg_status = XE_AUTONEG_FAIL;*/ - } - } - else { -#ifdef XE_DEBUG - printf("xe%d: Autonegotiation failed; trying 100baseTX\n", scp->unit); -#endif - XE_MII_DUMP(scp); - xe_soft_reset(scp); - if (scp->phy_ok) { - xe_phy_writereg(scp, PHY_BMCR, PHY_BMCR_SPEEDSEL); - scp->autoneg_status = XE_AUTONEG_100TX; - scp->chand = timeout(xe_setmedia, scp, hz * 3); - return; - } - else { - scp->autoneg_status = XE_AUTONEG_FAIL; - } - } - break; - - case XE_AUTONEG_100TX: - (void)xe_phy_readreg(scp, PHY_BMSR); - bmsr = xe_phy_readreg(scp, PHY_BMSR); - if (bmsr & PHY_BMSR_LINKSTAT) { -#ifdef XE_DEBUG - printf("xe%d: Got 100baseTX link!\n", scp->unit); -#endif - XE_MII_DUMP(scp); - XE_SELECT_PAGE(2); - XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08); - scp->media = IFM_ETHER|IFM_100_TX; - scp->autoneg_status = XE_AUTONEG_NONE; - } - else { -#ifdef XE_DEBUG - printf("xe%d: Autonegotiation failed; disabling PHY\n", scp->unit); -#endif - XE_MII_DUMP(scp); - xe_phy_writereg(scp, PHY_BMCR, 0x0000); - XE_SELECT_PAGE(2); - XE_OUTB(XE_MSR, XE_INB(XE_MSR) & ~0x08); /* Disable PHY? */ - scp->autoneg_status = XE_AUTONEG_FAIL; - } - break; - } - - /* - * If we got down here _and_ autoneg_status is XE_AUTONEG_FAIL, then - * either autonegotiation failed, or never got started to begin with. In - * either case, select a suitable 10Mbit media and hope it works. We - * don't need to reset the card again, since it will have been done - * already by the big switch above. - */ - if (scp->autoneg_status == XE_AUTONEG_FAIL) { -#ifdef XE_DEBUG - printf("xe%d: Selecting 10baseX\n", scp->unit); -#endif - if (scp->ce3) { - XE_SELECT_PAGE(0x42); - XE_OUTB(XE_SWC1, 0x80); - scp->media = IFM_ETHER|IFM_10_T; - scp->autoneg_status = XE_AUTONEG_NONE; - } - else { - XE_SELECT_PAGE(4); - XE_OUTB(XE_GPR0, 4); - DELAY(50000); - XE_SELECT_PAGE(0x42); - XE_OUTB(XE_SWC1, (XE_INB(XE_ESR) & XE_ESR_MEDIA_SELECT) ? 0x80 : 0xc0); - scp->media = IFM_ETHER|((XE_INB(XE_ESR) & XE_ESR_MEDIA_SELECT) ? IFM_10_T : IFM_10_2); - scp->autoneg_status = XE_AUTONEG_NONE; - } - } - break; - - - /* - * If a specific media has been requested, we just reset the card and - * select it (one small exception -- if 100baseTX is requested by there is - * no PHY, we fall back to 10baseT operation). - */ - case IFM_100_TX: /* Force 100baseTX */ - xe_soft_reset(scp); - if (scp->phy_ok) { -#ifdef XE_DEBUG - printf("xe%d: Selecting 100baseTX\n", scp->unit); -#endif - XE_SELECT_PAGE(0x42); - XE_OUTB(XE_SWC1, 0); - xe_phy_writereg(scp, PHY_BMCR, PHY_BMCR_SPEEDSEL); - XE_SELECT_PAGE(2); - XE_OUTB(XE_MSR, XE_INB(XE_MSR) | 0x08); - scp->media |= IFM_100_TX; - break; - } - /* FALLTHROUGH */ - - case IFM_10_T: /* Force 10baseT */ - xe_soft_reset(scp); -#ifdef XE_DEBUG - printf("xe%d: Selecting 10baseT\n", scp->unit); -#endif - if (scp->phy_ok) { - xe_phy_writereg(scp, PHY_BMCR, 0x0000); - XE_SELECT_PAGE(2); - XE_OUTB(XE_MSR, XE_INB(XE_MSR) & ~0x08); /* Disable PHY */ - } - XE_SELECT_PAGE(0x42); - XE_OUTB(XE_SWC1, 0x80); - scp->media |= IFM_10_T; - break; - - case IFM_10_2: - xe_soft_reset(scp); -#ifdef XE_DEBUG - printf("xe%d: Selecting 10base2\n", scp->unit); -#endif - XE_SELECT_PAGE(0x42); - XE_OUTB(XE_SWC1, 0xc0); - scp->media |= IFM_10_2; - break; - } - - - /* - * Finally, the LEDs are set to match whatever media was chosen and the - * transmitter is unblocked. - */ -#ifdef XE_DEBUG - printf("xe%d: Setting LEDs\n", scp->unit); -#endif - XE_SELECT_PAGE(2); - switch (IFM_SUBTYPE(scp->media)) { - case IFM_100_TX: - case IFM_10_T: - XE_OUTB(XE_LED, 0x3b); - if (scp->cem56) - XE_OUTB(0x0b, 0x04); /* 100Mbit LED */ - break; - - case IFM_10_2: - XE_OUTB(XE_LED, 0x3a); - break; - } - - /* Restart output? */ - scp->ifp->if_flags &= ~IFF_OACTIVE; - xe_init(scp); -} - - -/* - * Hard reset (power cycle) the card. - */ -static void -xe_hard_reset(struct xe_softc *scp) { - int s; - -#ifdef XE_DEBUG - printf("xe%d: hard_reset\n", scp->unit); -#endif - - if (scp->gone) return; - - s = splimp(); - - /* - * Power cycle the card. - */ - XE_SELECT_PAGE(4); - XE_OUTB(XE_GPR1, 0); /* Power off */ - DELAY(40000); - - if (scp->ce3) - XE_OUTB(XE_GPR1, 1); /* And back on again */ - else - XE_OUTB(XE_GPR1, 5); /* Also set AIC bit, whatever that is */ - DELAY(40000); - XE_SELECT_PAGE(0); - - (void)splx(s); -} - - -/* - * Soft reset the card. Also makes sure that the ML6692 and 10Mbit controller - * are powered up, sets the silicon revision number in softc, disables - * interrupts and checks for the prescence of a 100Mbit PHY. This should - * leave us in a position where we can access the PHY and do media - * selection. The function imposes a 0.5s delay while the hardware powers up. - */ -static void -xe_soft_reset(struct xe_softc *scp) { - int s; - -#ifdef XE_DEBUG - printf("xe%d: soft_reset\n", scp->unit); -#endif - - if (scp->gone) return; - - s = splimp(); - - /* - * Reset the card, (again). - */ - XE_SELECT_PAGE(0); - XE_OUTB(XE_CR, XE_CR_SOFT_RESET); - DELAY(40000); - XE_OUTB(XE_CR, 0); - DELAY(40000); - - if (scp->ce3) { - /* - * set GP1 and GP2 as outputs (bits 2 & 3) - * set GP1 low to power on the ML6692 (bit 0) - * set GP2 high to power on the 10Mhz chip (bit 1) - */ - XE_SELECT_PAGE(4); - XE_OUTB(XE_GPR0, 0x0e); - } - - /* - * Wait for everything to wake up. - */ - DELAY(500000); - - /* - * Get silicon revision number. - */ - XE_SELECT_PAGE(4); - if (scp->ce3) - scp->srev = (XE_INB(XE_BOV) & 0x70) >> 4; - else - scp->srev = (XE_INB(XE_BOV) & 0x30) >> 4; -#ifdef XE_DEBUG - printf("xe%d: silicon revision = %d\n", scp->unit, scp->srev); -#endif - - /* - * Shut off interrupts. - */ - xe_disable_intr(scp); - - /* - * Check for PHY. - */ - if (scp->ce3) { - scp->phy_ok = xe_mii_init(scp); - } - - XE_SELECT_PAGE(0); - - (void)splx(s); -} - - -/* - * Take interface offline. This is done by powering down the device, which I - * assume means just shutting down the transceiver and Ethernet logic. This - * requires a _hard_ reset to recover from, as we need to power up again. - */ -static void -xe_stop(struct xe_softc *scp) { - int s; - -#ifdef XE_DEBUG - printf("xe%d: stop\n", scp->unit); -#endif - - if (scp->gone) return; - - s = splimp(); - - /* - * Shut off interrupts. - */ - xe_disable_intr(scp); - - /* - * Power down. - */ - XE_SELECT_PAGE(4); - XE_OUTB(XE_GPR1, 0); - XE_SELECT_PAGE(0); - - /* - * ~IFF_RUNNING == interface down. - */ - scp->ifp->if_flags &= ~IFF_RUNNING; - scp->ifp->if_flags &= ~IFF_OACTIVE; - scp->ifp->if_timer = 0; - - (void)splx(s); -} - - -/* - * Enable Ethernet interrupts from the card. - */ -static void -xe_enable_intr(struct xe_softc *scp) { -#ifdef XE_DEBUG - printf("xe%d: enable_intr\n", scp->unit); -#endif - - XE_SELECT_PAGE(1); - XE_OUTB(XE_IMR0, 0xff); /* Unmask everything */ - XE_OUTB(XE_IMR1, 0x01); /* Unmask TX underrun detection */ - DELAY(1); - - XE_SELECT_PAGE(0); - XE_OUTB(XE_CR, XE_CR_ENABLE_INTR); /* Enable interrupts */ - if (scp->modem && !scp->cem56) { /* This bit is just magic */ - if (!(XE_INB(0x10) & 0x01)) { - XE_OUTB(0x10, 0x11); /* Unmask master int enable bit */ - } - } -} - - -/* - * Disable all Ethernet interrupts from the card. - */ -static void -xe_disable_intr(struct xe_softc *scp) { -#ifdef XE_DEBUG - printf("xe%d: disable_intr\n", scp->unit); -#endif - - XE_SELECT_PAGE(0); - XE_OUTB(XE_CR, 0); /* Disable interrupts */ - if (scp->modem && !scp->cem56) { /* More magic (does this work?) */ - XE_OUTB(0x10, 0x10); /* Mask the master int enable bit */ - } - - XE_SELECT_PAGE(1); - XE_OUTB(XE_IMR0, 0); /* Forbid all interrupts */ - XE_OUTB(XE_IMR1, 0); - XE_SELECT_PAGE(0); -} - - -/* - * Set up multicast filter and promiscuous mode - */ -static void -xe_setmulti(struct xe_softc *scp) { - struct ifnet *ifp; - struct ifmultiaddr *maddr; - int count; - - ifp = &scp->arpcom.ac_if; - maddr = ifp->if_multiaddrs.lh_first; - - /* Get length of multicast list */ - for (count = 0; maddr != NULL; maddr = maddr->ifma_link.le_next, count++); - - if ((ifp->if_flags & IFF_PROMISC) || (ifp->if_flags & IFF_ALLMULTI) || (count > 9)) { - /* - * Go into promiscuous mode if either of the PROMISC or ALLMULTI flags are - * set, or if we have been asked to deal with more than 9 multicast - * addresses. To do this: set MPE and PME in SWC1 - */ - XE_SELECT_PAGE(0x42); - XE_OUTB(XE_SWC1, 0x06); - } - else if ((ifp->if_flags & IFF_MULTICAST) && (count > 0)) { - /* - * Program the filters for up to 9 addresses - */ - XE_SELECT_PAGE(0x42); - XE_OUTB(XE_SWC1, 0x01); - XE_SELECT_PAGE(0x40); - XE_OUTB(XE_OCR, XE_OCR_OFFLINE); - /*xe_reg_dump(scp);*/ - xe_setaddrs(scp); - /*xe_reg_dump(scp);*/ - XE_SELECT_PAGE(0x40); - XE_OUTB(XE_OCR, XE_OCR_RX_ENABLE|XE_OCR_ONLINE); - } - else { - /* - * No multicast operation (default) - */ - XE_SELECT_PAGE(0x42); - XE_OUTB(XE_SWC1, 0); - } - XE_SELECT_PAGE(0); -} - - -/* - * Set up all on-chip addresses (for multicast). AFAICS, there are 10 - * of these things; the first is our MAC address, the other 9 are mcast - * addresses, padded with the MAC address if there aren't enough. - * XXX - This doesn't work right, but I'm not sure why yet. We seem to be - * XXX - doing much the same as the Linux code, which is weird enough that - * XXX - it's probably right (despite my earlier comments to the contrary). - * XXX - I wonder if this thing has a multicast hash filter like most other - * XXX - Ethernet hardware seems to? - */ -static void -xe_setaddrs(struct xe_softc *scp) { - struct ifmultiaddr *maddr; - u_int8_t *addr; - u_int8_t page, slot, byte, i; - - maddr = scp->arpcom.ac_if.if_multiaddrs.lh_first; - - XE_SELECT_PAGE(page = 0x50); - - for (slot = 0, byte = 8; slot < 10; slot++) { - - if (slot == 0) - addr = (u_int8_t *)(&scp->arpcom.ac_enaddr); - else { - while (maddr != NULL && maddr->ifma_addr->sa_family != AF_LINK) - maddr = maddr->ifma_link.le_next; - if (maddr != NULL) - addr = LLADDR((struct sockaddr_dl *)maddr->ifma_addr); - else - addr = (u_int8_t *)(&scp->arpcom.ac_enaddr); - } - - for (i = 0; i < 6; i++, byte++) { -#if XE_DEBUG > 1 - if (i) - printf(":%x", addr[i]); - else - printf("xe%d: individual addresses %d: %x", scp->unit, slot, addr[0]); -#endif - - if (byte > 15) { - page++; - byte = 8; - XE_SELECT_PAGE(page); - } - - if (scp->ce3) - XE_OUTB(byte, addr[5 - i]); - else - XE_OUTB(byte, addr[i]); - } -#if XE_DEBUG > 1 - printf("\n"); -#endif - } - - XE_SELECT_PAGE(0); -} - - -/* - * Write an outgoing packet to the card using programmed I/O. - */ -static int -xe_pio_write_packet(struct xe_softc *scp, struct mbuf *mbp) { - struct mbuf *mbp2; - u_int16_t len, pad, free, ok; - u_int8_t *data; - u_int8_t savebyte[2], wantbyte; - - /* Get total packet length */ - for (len = 0, mbp2 = mbp; mbp2 != NULL; len += mbp2->m_len, mbp2 = mbp2->m_next); - - /* Packets < minimum length may need to be padded out */ - pad = 0; - if (len < ETHER_MIN_LEN - ETHER_CRC_LEN) { - pad = (ETHER_MIN_LEN - ETHER_CRC_LEN - len + 1) >> 1; - len = ETHER_MIN_LEN - ETHER_CRC_LEN; - } - - /* Check transmit buffer space */ - XE_SELECT_PAGE(0); - XE_OUTW(XE_TRS, len+2); - free = XE_INW(XE_TSO); - ok = free & 0x8000; - free &= 0x7fff; - if (free <= len + 2) - return 1; - - /* Send packet length to card */ - XE_OUTW(XE_EDP, len); - - /* - * Write packet to card using PIO (code stolen from the ed driver) - */ - wantbyte = 0; - while (mbp != NULL) { - len = mbp->m_len; - if (len > 0) { - data = mtod(mbp, caddr_t); - if (wantbyte) { /* Finish the last word */ - savebyte[1] = *data; - XE_OUTW(XE_EDP, *(u_short *)savebyte); - data++; - len--; - wantbyte = 0; - } - if (len > 1) { /* Output contiguous words */ - outsw(scp->dev->id_iobase+XE_EDP, data, len >> 1); - data += len & ~1; - len &= 1; - } - if (len == 1) { /* Save last byte, if necessary */ - savebyte[0] = *data; - wantbyte = 1; - } - } - mbp = mbp->m_next; - } - if (wantbyte) /* Last byte for odd-length packets */ - XE_OUTW(XE_EDP, *(u_short *)savebyte); - - /* - * For CE3 cards, just tell 'em to send -- apparently the card will pad out - * short packets with random cruft. Otherwise, write nonsense words to fill - * out the packet. I guess it is then sent automatically (?) - */ - if (scp->ce3) - XE_OUTB(XE_CR, XE_CR_TX_PACKET|XE_CR_ENABLE_INTR); - else - while (pad > 0) { - XE_OUTW(XE_EDP, 0xdead); - pad--; - } - - return 0; -} - - -/* - * The device entry is being removed, probably because someone ejected the - * card. The interface should have been brought down manually before calling - * this function; if not you may well lose packets. In any case, I shut down - * the card and the interface, and hope for the best. The 'gone' flag is set, - * so hopefully no-one else will try to access the missing card. - */ -static void -xe_card_unload(struct pccard_devinfo *devi) { - struct xe_softc *scp; - struct ifnet *ifp; - int unit; - - unit = devi->isahd.id_unit; - scp = sca[unit]; - ifp = &scp->arpcom.ac_if; - - if (scp->gone) { - printf("xe%d: already unloaded\n", unit); - return; - } - - if_down(ifp); - ifp->if_flags &= ~(IFF_RUNNING|IFF_OACTIVE); - xe_stop(scp); - scp->gone = 1; -} - - - -/************************************************************** - * * - * M I I F U N C T I O N S * - * * - **************************************************************/ - -/* - * Alternative MII/PHY handling code adapted from the xl driver. It doesn't - * seem to work any better than the xirc2_ps stuff, but it's cleaner code. - */ -#define XE_MII_SET(x) XE_OUTB(XE_GPR2, (XE_INB(XE_GPR2) | 0x04) | (x)) -#define XE_MII_CLR(x) XE_OUTB(XE_GPR2, (XE_INB(XE_GPR2) | 0x04) & ~(x)) - - -/* - * Sync the PHYs by setting data bit and strobing the clock 32 times. - */ -static void -xe_mii_sync(struct xe_softc *scp) { - register int i; - - XE_SELECT_PAGE(2); - XE_MII_SET(XE_MII_DIR|XE_MII_WRD); - - for (i = 0; i < 32; i++) { - XE_MII_SET(XE_MII_CLK); - DELAY(1); - XE_MII_CLR(XE_MII_CLK); - DELAY(1); - } -} - - -/* - * Look for a MII-compliant PHY. If we find one, reset it. - */ -static int -xe_mii_init(struct xe_softc *scp) { - u_int16_t status; - - status = xe_phy_readreg(scp, PHY_BMSR); - if ((status & 0xff00) != 0x7800) { -#ifdef XE_DEBUG - printf("xe%d: no PHY found, %0x\n", scp->unit, status); -#endif - return 0; - } - else { -#ifdef XE_DEBUG - printf("xe%d: PHY OK!\n", scp->unit); -#endif - - /* Reset the PHY */ - xe_phy_writereg(scp, PHY_BMCR, PHY_BMCR_RESET); - DELAY(500); - while(xe_phy_readreg(scp, PHY_BMCR) & PHY_BMCR_RESET); - XE_MII_DUMP(scp); - return 1; - } -} - - -/* - * Clock a series of bits through the MII. - */ -static void -xe_mii_send(struct xe_softc *scp, u_int32_t bits, int cnt) { - int i; - - XE_SELECT_PAGE(2); - XE_MII_CLR(XE_MII_CLK); - - for (i = (0x1 << (cnt - 1)); i; i >>= 1) { - if (bits & i) { - XE_MII_SET(XE_MII_WRD); - } else { - XE_MII_CLR(XE_MII_WRD); - } - DELAY(1); - XE_MII_CLR(XE_MII_CLK); - DELAY(1); - XE_MII_SET(XE_MII_CLK); - } -} - - -/* - * Read an PHY register through the MII. - */ -static int -xe_mii_readreg(struct xe_softc *scp, struct xe_mii_frame *frame) { - int i, ack, s; - - s = splimp(); - - /* - * Set up frame for RX. - */ - frame->mii_stdelim = XE_MII_STARTDELIM; - frame->mii_opcode = XE_MII_READOP; - frame->mii_turnaround = 0; - frame->mii_data = 0; - - XE_SELECT_PAGE(2); - XE_OUTB(XE_GPR2, 0); - - /* - * Turn on data xmit. - */ - XE_MII_SET(XE_MII_DIR); - - xe_mii_sync(scp); - - /* - * Send command/address info. - */ - xe_mii_send(scp, frame->mii_stdelim, 2); - xe_mii_send(scp, frame->mii_opcode, 2); - xe_mii_send(scp, frame->mii_phyaddr, 5); - xe_mii_send(scp, frame->mii_regaddr, 5); - - /* Idle bit */ - XE_MII_CLR((XE_MII_CLK|XE_MII_WRD)); - DELAY(1); - XE_MII_SET(XE_MII_CLK); - DELAY(1); - - /* Turn off xmit. */ - XE_MII_CLR(XE_MII_DIR); - - /* Check for ack */ - XE_MII_CLR(XE_MII_CLK); - DELAY(1); - XE_MII_SET(XE_MII_CLK); - DELAY(1); - ack = XE_INB(XE_GPR2) & XE_MII_RDD; - - /* - * Now try reading data bits. If the ack failed, we still - * need to clock through 16 cycles to keep the PHY(s) in sync. - */ - if (ack) { - for(i = 0; i < 16; i++) { - XE_MII_CLR(XE_MII_CLK); - DELAY(1); - XE_MII_SET(XE_MII_CLK); - DELAY(1); - } - goto fail; - } - - for (i = 0x8000; i; i >>= 1) { - XE_MII_CLR(XE_MII_CLK); - DELAY(1); - if (!ack) { - if (XE_INB(XE_GPR2) & XE_MII_RDD) - frame->mii_data |= i; - DELAY(1); - } - XE_MII_SET(XE_MII_CLK); - DELAY(1); - } - -fail: - - XE_MII_CLR(XE_MII_CLK); - DELAY(1); - XE_MII_SET(XE_MII_CLK); - DELAY(1); - - splx(s); - - if (ack) - return(1); - return(0); -} - - -/* - * Write to a PHY register through the MII. - */ -static int -xe_mii_writereg(struct xe_softc *scp, struct xe_mii_frame *frame) { - int s; - - s = splimp(); - - /* - * Set up frame for TX. - */ - frame->mii_stdelim = XE_MII_STARTDELIM; - frame->mii_opcode = XE_MII_WRITEOP; - frame->mii_turnaround = XE_MII_TURNAROUND; - - XE_SELECT_PAGE(2); - - /* - * Turn on data output. - */ - XE_MII_SET(XE_MII_DIR); - - xe_mii_sync(scp); - - xe_mii_send(scp, frame->mii_stdelim, 2); - xe_mii_send(scp, frame->mii_opcode, 2); - xe_mii_send(scp, frame->mii_phyaddr, 5); - xe_mii_send(scp, frame->mii_regaddr, 5); - xe_mii_send(scp, frame->mii_turnaround, 2); - xe_mii_send(scp, frame->mii_data, 16); - - /* Idle bit. */ - XE_MII_SET(XE_MII_CLK); - DELAY(1); - XE_MII_CLR(XE_MII_CLK); - DELAY(1); - - /* - * Turn off xmit. - */ - XE_MII_CLR(XE_MII_DIR); - - splx(s); - - return(0); -} - - -/* - * Read a register from the PHY. - */ -static u_int16_t -xe_phy_readreg(struct xe_softc *scp, u_int16_t reg) { - struct xe_mii_frame frame; - - bzero((char *)&frame, sizeof(frame)); - - frame.mii_phyaddr = 0; - frame.mii_regaddr = reg; - xe_mii_readreg(scp, &frame); - - return(frame.mii_data); -} - - -/* - * Write to a PHY register. - */ -static void -xe_phy_writereg(struct xe_softc *scp, u_int16_t reg, u_int16_t data) { - struct xe_mii_frame frame; - - bzero((char *)&frame, sizeof(frame)); - - frame.mii_phyaddr = 0; - frame.mii_regaddr = reg; - frame.mii_data = data; - xe_mii_writereg(scp, &frame); - - return; -} - - -#ifdef XE_DEBUG -/* - * A bit of debugging code. - */ -static void -xe_mii_dump(struct xe_softc *scp) { - int i, s; - - s = splimp(); - - printf("xe%d: MII registers: ", scp->unit); - for (i = 0; i < 2; i++) { - printf(" %d:%04x", i, xe_phy_readreg(scp, i)); - } - for (i = 4; i < 7; i++) { - printf(" %d:%04x", i, xe_phy_readreg(scp, i)); - } - printf("\n"); - - (void)splx(s); -} - -static void -xe_reg_dump(struct xe_softc *scp) { - int page, i, s; - - s = splimp(); - - printf("xe%d: Common registers: ", scp->unit); - for (i = 0; i < 8; i++) { - printf(" %2.2x", XE_INB(i)); - } - printf("\n"); - - for (page = 0; page <= 8; page++) { - printf("xe%d: Register page %2.2x: ", scp->unit, page); - XE_SELECT_PAGE(page); - for (i = 8; i < 16; i++) { - printf(" %2.2x", XE_INB(i)); - } - printf("\n"); - } - - for (page = 0x10; page < 0x5f; page++) { - if ((page >= 0x11 && page <= 0x3f) || - (page == 0x41) || - (page >= 0x43 && page <= 0x4f) || - (page >= 0x59)) - continue; - printf("xe%d: Register page %2.2x: ", scp->unit, page); - XE_SELECT_PAGE(page); - for (i = 8; i < 16; i++) { - printf(" %2.2x", XE_INB(i)); - } - printf("\n"); - } - - (void)splx(s); -} -#endif - - - -#if NAPM > 0 -/************************************************************** - * * - * A P M F U N C T I O N S * - * * - **************************************************************/ - -/* - * This is called when we go into suspend/standby mode - */ -static int -xe_suspend(void *xunit) { - -#ifdef XE_DEBUG - struct xe_softc *scp = sca[(int)xunit]; - - printf("xe%d: APM suspend\n", scp->unit); -#endif - - return 0; -} - -/* - * This is called when we wake up again - */ -static int -xe_resume(void *xunit) { - -#ifdef XE_DEBUG - struct xe_softc *scp = sca[(int)xunit]; - - printf("xe%d: APM resume\n", scp->unit); -#endif - - return 0; -} - -#endif /* NAPM > 0 */ - -#endif /* NCARD > 0 */ - -#endif /* NXE > 0 */ diff --git a/sys/dev/pccard/if_xereg.h b/sys/dev/pccard/if_xereg.h deleted file mode 100644 index 07cb0b1bbb59..000000000000 --- a/sys/dev/pccard/if_xereg.h +++ /dev/null @@ -1,296 +0,0 @@ -/*- - * Copyright (c) 1998, 1999 Scott Mitchell - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id: if_xereg.h,v 1.3 1999/02/22 14:00:53 root Exp $ - */ - -/* - * Register definitions for Xircom CreditCard Ethernet adapters. See if_xe.c - * for details of supported hardware. Adapted from Werner Koch's 'xirc2ps' - * driver for Linux and the FreeBSD 'xl' driver (for the MII support). - */ - -#include "xe.h" -#if NXE > 0 - - -/* - * Common registers - */ -#define XE_CR 0 /* Command register (write) */ -#define XE_ESR 0 /* Ethernet status register (read) */ -#define XE_PSR 1 /* Page select register */ -#define XE_EDP 4 /* Ethernet data port */ -#define XE_ISR 6 /* Interrupt status register */ - -/* - * Command register values - */ -#define XE_CR_TX_PACKET 0x01 -#define XE_CR_SOFT_RESET 0x02 -#define XE_CR_ENABLE_INTR 0x04 -#define XE_CR_FORCE_INTR 0x08 -#define XE_CR_CLEAR_FIFO 0x10 -#define XE_CR_CLEAR_OVERRUN 0x20 -#define XE_CR_RESTART_TX 0x40 - -/* - * Status register values - */ -#define XE_ESR_FULL_PKT_RX 0x01 -#define XE_ESR_PKT_REJECT 0x04 -#define XE_ESR_TX_PENDING 0x08 -#define XE_ESR_BAD_POLARITY 0x10 -#define XE_ESR_MEDIA_SELECT 0x20 - -/* - * Interrupt register values - */ -#define XE_ISR_TX_OVERFLOW 0x01 -#define XE_ISR_TX_PACKET 0x02 -#define XE_ISR_MAC_INTR 0x04 -#define XE_ISR_TX_RES 0x08 -#define XE_ISR_RX_PACKET 0x20 -#define XE_ISR_RX_REJECT 0x40 -#define XE_ISR_FORCE_INTR 0x80 - - -/* - * Page 0 registers - */ -#define XE_TSO 8 /* Transmit space open */ -#define XE_TRS 10 /* Transmit reservation size */ -#define XE_DOR 12 /* Data offset register (write) */ -#define XE_RSR 12 /* Receive status register (read) */ -#define XE_PTR 13 /* Packets transmitted register (read) */ -#define XE_RBC 14 /* Received byte count (read) */ - -/* - * RSR values - */ -#define XE_RSR_PHYS_PKT 0x01 -#define XE_RSR_BCAST_PKT 0x02 -#define XE_RSR_LONG_PKT 0x04 -#define XE_RSR_ALIGN_ERR 0x10 -#define XE_RSR_CRC_ERR 0x20 -#define XE_RSR_RX_OK 0x80 - - -/* - * Page 1 registers - */ -#define XE_IMR0 12 /* Interrupt mask register, part 1 */ -#define XE_IMR1 13 /* Interrupt mask register, part 2 */ -#define XE_ECR 14 /* Ethernet configuration register */ - -/* - * ECR values - */ -#define XE_ECR_FULL_DUPLEX 0x04 -#define XE_ECR_LONG_TPCABLE 0x08 -#define XE_ECR_NO_POLCOL 0x10 -#define XE_ECR_NO_LINKPULSE 0x20 -#define XE_ECR_NO_AUTOTX 0x40 - - -/* - * Page 2 registers - */ -#define XE_RBS 8 /* Receive buffer start */ -#define XE_LED 10 /* LED configuration register */ -#define XE_MSR 12 /* Mohawk specfic register (Mohawk = CE3) */ -#define XE_GPR2 13 /* General purpose register 2 */ - - -/* - * Page 4 registers - */ -#define XE_GPR0 8 /* General purpose register 0 */ -#define XE_GPR1 9 /* General purpose register 1 */ -#define XE_BOV 10 /* Bonding version register */ -#define XE_LMA 12 /* Local memory address */ -#define XE_LMD 14 /* Local memory data */ - - -/* - * Page 5 registers - */ -#define XE_RHS 10 /* Receive host start address */ - - -/* - * Page 0x40 registers - */ -#define XE_OCR 8 /* The Other command register */ -#define XE_RXS0 9 /* Receive status 0 */ -#define XE_TXS0 11 /* Transmit status 0 */ -#define XE_TXS1 12 /* Transmit status 1 */ -#define XE_RXM0 13 /* Receive mask register 0 */ -#define XE_TXM0 14 /* Transmit mask register 0 */ -#define XE_TXM1 15 /* Transmit mask register 1 */ - -/* - * OCR values - */ -#define XE_OCR_TX 0x01 -#define XE_OCR_RX_ENABLE 0x04 -#define XE_OCR_RX_DISABLE 0x08 -#define XE_OCR_ABORT 0x10 -#define XE_OCR_ONLINE 0x20 -#define XE_OCR_ACK_INTR 0x40 -#define XE_OCR_OFFLINE 0x80 - - -/* - * Page 0x42 registers - */ -#define XE_SWC0 8 /* Software configuration register 0 */ -#define XE_SWC1 9 /* Software configuration register 1 */ -#define XE_BOC 10 /* Back-off configuration */ - - -/* - * Page 0x44 registers - */ -#define XE_TDR0 8 /* Time domain reflectometry register 0 */ -#define XE_TDR1 9 /* Time domain reflectometry register 1 */ -#define XE_RXC0 10 /* Receive byte count low */ -#define XE_RXC1 11 /* Receive byte count high */ - - -/* - * Page 0x45 registers - */ -#define XE_REV 15 /* Revision (read) */ - - -/* - * Page 0x50 registers - */ -#define XE_IAR 8 /* Individual address register */ - - -/* - * Pages 0x43, 0x46-0x4f and 0x51-0x5e apparently don't exist. - * The remainder of 0x0-0x8 and 0x40-0x5f exist, but I have no - * idea what's on most of them. - */ - - - -/* - * Definitions for the Micro Linear ML6692 100Base-TX PHY, which handles the - * 100Mbit functionality of CE3 type cards, including media autonegotiation. - * It appears to be mostly compatible with the National Semiconductor - * DP83840A, but with a much smaller register set. Please refer to the data - * sheets for these devices for the definitive word on what all this stuff - * means :) - * - * Note that the ML6692 has no 10Mbit capability -- that is handled by another - * chip that we don't know anything about. - * - * Most of these definitions were adapted from the xl driver. - */ - -/* - * Masks for the MII-related bits in GPR2. For some reason read and write - * data are on separate bits. - */ -#define XE_MII_CLK 0x01 -#define XE_MII_DIR 0x08 -#define XE_MII_WRD 0x02 -#define XE_MII_RDD 0x20 - -/* - * MII command (etc) bit strings. - */ -#define XE_MII_STARTDELIM 0x01 -#define XE_MII_READOP 0x02 -#define XE_MII_WRITEOP 0x01 -#define XE_MII_TURNAROUND 0x02 - -/* - * PHY registers. - */ -#define PHY_BMCR 0x00 /* Basic Mode Control Register */ -#define PHY_BMSR 0x01 /* Basic Mode Status Register */ -#define PHY_ANAR 0x04 /* Auto-Negotiation Advertisment Register */ -#define PHY_LPAR 0x05 /* Auto-Negotiation Link Partner Ability Register */ -#define PHY_ANER 0x06 /* Auto-Negotiation Expansion Register */ - -#define PHY_BMCR_RESET 0x8000 /* Soft reset PHY. Self-clearing */ -#define PHY_BMCR_LOOPBK 0x4000 /* Enable loopback */ -#define PHY_BMCR_SPEEDSEL 0x2000 /* 1=100Mbps, 0=10Mbps */ -#define PHY_BMCR_AUTONEGENBL 0x1000 /* Auto-negotiation enabled */ -#define PHY_BMCR_ISOLATE 0x0400 /* Isolate ML6692 from MII */ -#define PHY_BMCR_AUTONEGRSTR 0x0200 /* Restart auto-negotiation. Self-clearing */ -#define PHY_BMCR_DUPLEX 0x0100 /* Full duplex operation */ -#define PHY_BMCR_COLLTEST 0x0080 /* Enable collision test */ - -#define PHY_BMSR_100BT4 0x8000 /* 100Base-T4 capable */ -#define PHY_BMSR_100BTXFULL 0x4000 /* 100Base-TX full duplex capable */ -#define PHY_BMSR_100BTXHALF 0x2000 /* 100Base-TX half duplex capable */ -#define PHY_BMSR_10BTFULL 0x1000 /* 10Base-T full duplex capable */ -#define PHY_BMSR_10BTHALF 0x0800 /* 10Base-T half duplex capable */ -#define PHY_BMSR_AUTONEGCOMP 0x0020 /* Auto-negotiation complete */ -#define PHY_BMSR_CANAUTONEG 0x0008 /* Auto-negotiation supported */ -#define PHY_BMSR_LINKSTAT 0x0004 /* Link is up */ -#define PHY_BMSR_EXTENDED 0x0001 /* Extended register capabilities */ - -#define PHY_ANAR_NEXTPAGE 0x8000 /* Additional link code word pages */ -#define PHY_ANAR_TLRFLT 0x2000 /* Remote wire fault detected */ -#define PHY_ANAR_100BT4 0x0200 /* 100Base-T4 capable */ -#define PHY_ANAR_100BTXFULL 0x0100 /* 100Base-TX full duplex capable */ -#define PHY_ANAR_100BTXHALF 0x0080 /* 100Base-TX half duplex capable */ -#define PHY_ANAR_10BTFULL 0x0040 /* 10Base-T full duplex capable */ -#define PHY_ANAR_10BTHALF 0x0020 /* 10Base-T half duplex capable */ -#define PHY_ANAR_PROTO4 0x0010 /* Protocol selection (00001 = 802.3) */ -#define PHY_ANAR_PROTO3 0x0008 -#define PHY_ANAR_PROTO2 0x0004 -#define PHY_ANAR_PROTO1 0x0002 -#define PHY_ANAR_PROTO0 0x0001 - -#define PHY_LPAR_NEXTPAGE 0x8000 /* Additional link code word pages */ -#define PHY_LPAR_LPACK 0x4000 /* Link partner acknowledged receipt */ -#define PHY_LPAR_TLRFLT 0x2000 /* Remote wire fault detected */ -#define PHY_LPAR_100BT4 0x0200 /* 100Base-T4 capable */ -#define PHY_LPAR_100BTXFULL 0x0100 /* 100Base-TX full duplex capable */ -#define PHY_LPAR_100BTXHALF 0x0080 /* 100Base-TX half duplex capable */ -#define PHY_LPAR_10BTFULL 0x0040 /* 10Base-T full duplex capable */ -#define PHY_LPAR_10BTHALF 0x0020 /* 10Base-T half duplex capable */ -#define PHY_LPAR_PROTO4 0x0010 /* Protocol selection (00001 = 802.3) */ -#define PHY_LPAR_PROTO3 0x0008 -#define PHY_LPAR_PROTO2 0x0004 -#define PHY_LPAR_PROTO1 0x0002 -#define PHY_LPAR_PROTO0 0x0001 - -#define PHY_ANER_MLFAULT 0x0010 /* More than one link is up! */ -#define PHY_ANER_LPNPABLE 0x0008 /* Link partner supports next page */ -#define PHY_ANER_NPABLE 0x0004 /* Local port supports next page */ -#define PHY_ANER_PAGERX 0x0002 /* Page received */ -#define PHY_ANER_LPAUTONEG 0x0001 /* Link partner can auto-negotiate */ - - -#endif /* NXE > 0 */ diff --git a/sys/i386/eisa/ahc_eisa.c b/sys/i386/eisa/ahc_eisa.c index cdfd7b9704f6..419330d6386b 100644 --- a/sys/i386/eisa/ahc_eisa.c +++ b/sys/i386/eisa/ahc_eisa.c @@ -26,7 +26,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: ahc_eisa.c,v 1.4 1998/12/15 08:24:45 gibbs Exp $ + * $Id: ahc_eisa.c,v 1.4.2.1 1999/03/07 00:41:38 gibbs Exp $ */ #include "eisa.h" @@ -61,14 +61,14 @@ #define AHC_EISA_IOSIZE 0x100 #define INTDEF 0x5cul /* Interrupt Definition Register */ -static int aic7770probe(void); -static int aic7770_attach(struct eisa_device *e_dev); +static int aic7770_probe(void); +static int aic7770_attach(struct eisa_device *e_dev); static void aha2840_load_seeprom(struct ahc_softc *ahc); static struct eisa_driver ahc_eisa_driver = { "ahc", - aic7770probe, + aic7770_probe, aic7770_attach, /*shutdown*/NULL, &ahc_unit @@ -79,8 +79,7 @@ DATA_SET (eisadriver_set, ahc_eisa_driver); static const char *aic7770_match(eisa_id_t type); static const char* -aic7770_match(type) - eisa_id_t type; +aic7770_match(eisa_id_t type) { switch (type) { case EISA_DEVICE_ID_ADAPTEC_AIC7770: @@ -100,20 +99,20 @@ aic7770_match(type) } static int -aic7770probe(void) +aic7770_probe() { u_int32_t iobase; u_int32_t irq; u_int8_t intdef; u_int8_t hcntrl; struct eisa_device *e_dev; - int count; + int count; e_dev = NULL; count = 0; while ((e_dev = eisa_match_dev(e_dev, aic7770_match))) { iobase = (e_dev->ioconf.slot * EISA_SLOT_SIZE) - + AHC_EISA_SLOT_OFFSET; + + AHC_EISA_SLOT_OFFSET; /* Pause the card preseving the IRQ type */ hcntrl = inb(iobase + HCNTRL) & IRQMS; @@ -124,7 +123,7 @@ aic7770probe(void) intdef = inb(INTDEF + iobase); irq = intdef & 0xf; switch (irq) { - case 9: + case 9: case 10: case 11: case 12: @@ -134,7 +133,7 @@ aic7770probe(void) default: printf("aic7770 at slot %d: illegal " "irq setting %d\n", e_dev->ioconf.slot, - intdef); + intdef); irq = 0; break; } @@ -151,7 +150,7 @@ static int aic7770_attach(struct eisa_device *e_dev) { ahc_chip chip; - + bus_dma_tag_t parent_dmat; struct ahc_softc *ahc; resvaddr_t *iospace; int unit = e_dev->unit; @@ -180,15 +179,8 @@ aic7770_attach(struct eisa_device *e_dev) default: printf("aic7770_attach: Unknown device type!\n"); return -1; - break; } - if (!(ahc = ahc_alloc(unit, iospace->addr, NULL, - chip, AHC_AIC7770_FE, AHC_FNONE, NULL))) - return -1; - - ahc->channel = 'A'; - ahc->channel_b = 'B'; /* XXX Should be a child of the EISA bus dma tag */ error = bus_dma_tag_create(/*parent*/NULL, /*alignment*/0, /*boundary*/0, @@ -198,15 +190,20 @@ aic7770_attach(struct eisa_device *e_dev) /*maxsize*/MAXBSIZE, /*nsegments*/AHC_NSEG, /*maxsegsz*/AHC_MAXTRANSFER_SIZE, - /*flags*/BUS_DMA_ALLOCNOW, &ahc->dmat); + /*flags*/BUS_DMA_ALLOCNOW, &parent_dmat); if (error != 0) { - printf("%s: Could not allocate DMA tag - error %d\n", - ahc_name(ahc), error); - ahc_free(ahc); + printf("ahc_eisa_attach: Could not allocate DMA tag " + "- error %d\n", error); return -1; } + if (!(ahc = ahc_alloc(unit, iospace->addr, NULL, parent_dmat, + chip, AHC_AIC7770_FE, AHC_FNONE, NULL))) + return -1; + + ahc->channel = 'A'; + ahc->channel_b = 'B'; eisa_reg_start(e_dev); if (eisa_reg_iospace(e_dev, iospace)) { @@ -224,7 +221,7 @@ aic7770_attach(struct eisa_device *e_dev) * IRQ sharing if it's set. */ if (eisa_reg_intr(e_dev, irq, ahc_intr, (void *)ahc, &cam_imask, - /*shared ==*/ahc->pause & IRQMS)) { + /*shared ==*/ahc->pause & IRQMS)) { ahc_free(ahc); return -1; } @@ -473,5 +470,4 @@ aha2840_load_seeprom(struct ahc_softc *ahc) ahc->flags |= AHC_TERM_ENB_A; } } - #endif /* NEISA > 0 */ diff --git a/sys/i386/include/if_wavelan_ieee.h b/sys/i386/include/if_wavelan_ieee.h deleted file mode 100644 index f002933a9bdc..000000000000 --- a/sys/i386/include/if_wavelan_ieee.h +++ /dev/null @@ -1,281 +0,0 @@ -/* - * Copyright (c) 1997, 1998, 1999 - * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Bill Paul. - * 4. Neither the name of the author nor the names of any co-contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - * - * $Id: if_wavelan_ieee.h,v 1.4 1999/04/27 02:02:41 wpaul Exp $ - */ - -#ifndef _IF_WAVELAN_IEEE_H -#define _IF_WAVELAN_IEEE_H - -/* - * This header defines a simple command interface to the FreeBSD - * WaveLAN/IEEE driver (wi) driver, which is used to set certain - * device-specific parameters which can't be easily managed through - * ifconfig(8). No, sysctl(2) is not the answer. I said a _simple_ - * interface, didn't I. - */ - -#ifndef SIOCSWAVELAN -#define SIOCSWAVELAN SIOCSIFGENERIC -#endif - -#ifndef SIOCGWAVELAN -#define SIOCGWAVELAN SIOCGIFGENERIC -#endif - -/* - * Technically I don't think there's a limit to a record - * length. The largest record is the one that contains the CIS - * data, which is 240 words long, so 256 should be a safe - * value. - */ -#define WI_MAX_DATALEN 512 - -struct wi_req { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_val[WI_MAX_DATALEN]; -}; - -/* - * Private LTV records (interpreted only by the driver). This is - * a minor kludge to allow reading the interface statistics from - * the driver. - */ -#define WI_RID_IFACE_STATS 0x0100 -#define WI_RID_MGMT_XMIT 0x0200 - -struct wi_80211_hdr { - u_int16_t frame_ctl; - u_int16_t dur_id; - u_int8_t addr1[6]; - u_int8_t addr2[6]; - u_int8_t addr3[6]; - u_int16_t seq_ctl; - u_int8_t addr4[6]; -}; - -#define WI_FCTL_VERS 0x0002 -#define WI_FCTL_FTYPE 0x000C -#define WI_FCTL_STYPE 0x00F0 -#define WI_FCTL_TODS 0x0100 -#define WI_FCTL_FROMDS 0x0200 -#define WI_FCTL_MOREFRAGS 0x0400 -#define WI_FCTL_RETRY 0x0800 -#define WI_FCTL_PM 0x1000 -#define WI_FCTL_MOREDATA 0x2000 -#define WI_FCTL_WEP 0x4000 -#define WI_FCTL_ORDER 0x8000 - -#define WI_FTYPE_MGMT 0x0000 -#define WI_FTYPE_CTL 0x0004 -#define WI_FTYPE_DATA 0x0008 - -#define WI_STYPE_MGMT_ASREQ 0x0000 /* association request */ -#define WI_STYPE_MGMT_ASRESP 0x0010 /* association response */ -#define WI_STYPE_MGMT_REASREQ 0x0020 /* reassociation request */ -#define WI_STYPE_MGMT_REASRESP 0x0030 /* reassociation response */ -#define WI_STYPE_MGMT_PROBEREQ 0x0040 /* probe request */ -#define WI_STYPE_MGMT_PROBERESP 0x0050 /* probe response */ -#define WI_STYPE_MGMT_BEACON 0x0080 /* beacon */ -#define WI_STYPE_MGMT_ATIM 0x0090 /* announcement traffic ind msg */ -#define WI_STYPE_MGMT_DISAS 0x00A0 /* disassociation */ -#define WI_STYPE_MGMT_AUTH 0x00B0 /* authentication */ -#define WI_STYPE_MGMT_DEAUTH 0x00C0 /* deauthentication */ - -struct wi_mgmt_hdr { - u_int16_t frame_ctl; - u_int16_t duration; - u_int8_t dst_addr[6]; - u_int8_t src_addr[6]; - u_int8_t bssid[6]; - u_int16_t seq_ctl; -}; - -#ifndef KERNEL -struct wi_counters { - u_int32_t wi_tx_unicast_frames; - u_int32_t wi_tx_multicast_frames; - u_int32_t wi_tx_fragments; - u_int32_t wi_tx_unicast_octets; - u_int32_t wi_tx_multicast_octets; - u_int32_t wi_tx_deferred_xmits; - u_int32_t wi_tx_single_retries; - u_int32_t wi_tx_multi_retries; - u_int32_t wi_tx_retry_limit; - u_int32_t wi_tx_discards; - u_int32_t wi_rx_unicast_frames; - u_int32_t wi_rx_multicast_frames; - u_int32_t wi_rx_fragments; - u_int32_t wi_rx_unicast_octets; - u_int32_t wi_rx_multicast_octets; - u_int32_t wi_rx_fcs_errors; - u_int32_t wi_rx_discards_nobuf; - u_int32_t wi_tx_discards_wrong_sa; - u_int32_t wi_rx_WEP_cant_decrypt; - u_int32_t wi_rx_msg_in_msg_frags; - u_int32_t wi_rx_msg_in_bad_msg_frags; -}; - -/* - * These are all the LTV record types that we can read or write - * from the WaveLAN. Not all of them are temendously useful, but I - * list as many as I know about here for completeness. - */ - -#define WI_RID_DNLD_BUF 0xFD01 -#define WI_RID_MEMSZ 0xFD02 -#define WI_RID_DOMAINS 0xFD11 -#define WI_RID_CIS 0xFD13 -#define WI_RID_COMMQUAL 0xFD43 -#define WI_RID_SCALETHRESH 0xFD46 -#define WI_RID_PCF 0xFD87 - -/* - * Network parameters, static configuration entities. - */ -#define WI_RID_PORTTYPE 0xFC00 /* Connection control characteristics */ -#define WI_RID_MAC_NODE 0xFC01 /* MAC address of this station */ -#define WI_RID_DESIRED_SSID 0xFC02 /* Service Set ID for connection */ -#define WI_RID_OWN_CHNL 0xFC03 /* Comm channel for BSS creation */ -#define WI_RID_OWN_SSID 0xFC04 /* IBSS creation ID */ -#define WI_RID_OWN_ATIM_WIN 0xFC05 /* ATIM window time for IBSS creation */ -#define WI_RID_SYSTEM_SCALE 0xFC06 /* scale that specifies AP density */ -#define WI_RID_MAX_DATALEN 0xFC07 /* Max len of MAC frame body data */ -#define WI_RID_MAC_WDS 0xFC08 /* MAC addr of corresponding WDS node */ -#define WI_RID_PM_ENABLED 0xFC09 /* ESS power management enable */ -#define WI_RID_PM_EPS 0xFC0A /* PM EPS/PS mode */ -#define WI_RID_MCAST_RX 0xFC0B /* ESS PM mcast reception */ -#define WI_RID_MAX_SLEEP 0xFC0C /* max sleep time for ESS PM */ -#define WI_RID_HOLDOVER 0xFC0D /* holdover time for ESS PM */ -#define WI_RID_NODENAME 0xFC0E /* ID name of this node for diag */ -#define WI_RID_DTIM_PERIOD 0xFC10 /* beacon interval between DTIMs */ -#define WI_RID_WDS_ADDR1 0xFC11 /* port 1 MAC of WDS link node */ -#define WI_RID_WDS_ADDR2 0xFC12 /* port 1 MAC of WDS link node */ -#define WI_RID_WDS_ADDR3 0xFC13 /* port 1 MAC of WDS link node */ -#define WI_RID_WDS_ADDR4 0xFC14 /* port 1 MAC of WDS link node */ -#define WI_RID_WDS_ADDR5 0xFC15 /* port 1 MAC of WDS link node */ -#define WI_RID_WDS_ADDR6 0xFC16 /* port 1 MAC of WDS link node */ -#define WI_RID_MCAST_PM_BUF 0xFC17 /* PM buffering of mcast */ - -/* - * Network parameters, dynamic configuration entities - */ -#define WI_RID_MCAST_LIST 0xFC80 /* list of multicast addrs */ -#define WI_RID_CREATE_IBSS 0xFC81 /* create IBSS */ -#define WI_RID_FRAG_THRESH 0xFC82 /* frag len, unicast msg xmit */ -#define WI_RID_RTS_THRESH 0xFC83 /* frame len for RTS/CTS handshake */ -#define WI_RID_TX_RATE 0xFC84 /* data rate for message xmit */ -#define WI_RID_PROMISC 0xFC85 /* enable promisc mode */ -#define WI_RID_FRAG_THRESH0 0xFC90 -#define WI_RID_FRAG_THRESH1 0xFC91 -#define WI_RID_FRAG_THRESH2 0xFC92 -#define WI_RID_FRAG_THRESH3 0xFC93 -#define WI_RID_FRAG_THRESH4 0xFC94 -#define WI_RID_FRAG_THRESH5 0xFC95 -#define WI_RID_FRAG_THRESH6 0xFC96 -#define WI_RID_RTS_THRESH0 0xFC97 -#define WI_RID_RTS_THRESH1 0xFC98 -#define WI_RID_RTS_THRESH2 0xFC99 -#define WI_RID_RTS_THRESH3 0xFC9A -#define WI_RID_RTS_THRESH4 0xFC9B -#define WI_RID_RTS_THRESH5 0xFC9C -#define WI_RID_RTS_THRESH6 0xFC9D -#define WI_RID_TX_RATE0 0xFC9E -#define WI_RID_TX_RATE1 0xFC9F -#define WI_RID_TX_RATE2 0xFCA0 -#define WI_RID_TX_RATE3 0xFCA1 -#define WI_RID_TX_RATE4 0xFCA2 -#define WI_RID_TX_RATE5 0xFCA3 -#define WI_RID_TX_RATE6 0xFCA4 -#define WI_RID_TICK_TIME 0xFCE0 - -/* - * NIC information - */ -#define WI_RID_FIRM_ID 0xFD02 /* Primary func firmware ID. */ -#define WI_RID_PRI_SUP_RANGE 0xFD03 /* primary supplier compatibility */ -#define WI_RID_CIF_ACT_RANGE 0xFD04 /* controller sup. compatibility */ -#define WI_RID_SERIALNO 0xFD0A /* card serial number */ -#define WI_RID_CARD_ID 0xFD0B /* card identification */ -#define WI_RID_MFI_SUP_RANGE 0xFD0C /* modem supplier compatibility */ -#define WI_RID_CFI_SUP_RANGE 0xFD0D /* controller sup. compatibility */ -#define WI_RID_CHANNEL_LIST 0xFD10 /* allowd comm. frequencies. */ -#define WI_RID_REG_DOMAINS 0xFD11 /* list of intendted regulatory doms */ -#define WI_RID_TEMP_TYPE 0xFD12 /* hw temp range code */ -#define WI_RID_CIS 0xFD13 /* PC card info struct */ -#define WI_RID_STA_IDENEITY 0xFD20 /* station funcs firmware ident */ -#define WI_RID_STA_SUP_RANGE 0xFD21 /* station supplier compat */ -#define WI_RID_MFI_ACT_RANGE 0xFD22 -#define WI_RID_CFI_ACT_RANGE 0xFD33 - -/* - * MAC information - */ -#define WI_RID_PORT_STAT 0xFD40 /* actual MAC port con control stat */ -#define WI_RID_CURRENT_SSID 0xFD41 /* ID of actually connected SS */ -#define WI_RID_CURRENT_BSSID 0xFD42 /* ID of actually connected BSS */ -#define WI_RID_COMMS_QUALITY 0xFD43 /* quality of BSS connection */ -#define WI_RID_CUR_TX_RATE 0xFD44 /* current TX rate */ -#define WI_RID_OWN_BEACON_INT 0xFD45 /* beacon xmit time for BSS creation */ -#define WI_RID_CUR_SCALE_THRESH 0xFD46 /* actual system scane thresh setting */ -#define WI_RID_PROT_RESP_TIME 0xFD47 /* time to wait for resp to req msg */ -#define WI_RID_SHORT_RTR_LIM 0xFD48 /* max tx attempts for short frames */ -#define WI_RID_LONG_RTS_LIM 0xFD49 /* max tx attempts for long frames */ -#define WI_RID_MAX_TX_LIFE 0xFD4A /* max tx frame handling duration */ -#define WI_RID_MAX_RX_LIFE 0xFD4B /* max rx frame handling duration */ -#define WI_RID_CF_POLL 0xFD4C /* contention free pollable ind */ -#define WI_RID_AUTH_ALGS 0xFD4D /* auth algorithms available */ -#define WI_RID_AUTH_TYPE 0xFD4E /* availanle auth types */ -#define WI_RID_WEP_AVAIL 0xFD4F /* WEP privacy option available */ -#define WI_RID_CUR_TX_RATE1 0xFD80 -#define WI_RID_CUR_TX_RATE2 0xFD81 -#define WI_RID_CUR_TX_RATE3 0xFD82 -#define WI_RID_CUR_TX_RATE4 0xFD83 -#define WI_RID_CUR_TX_RATE5 0xFD84 -#define WI_RID_CUR_TX_RATE6 0xFD85 -#define WI_RID_OWN_MAC 0xFD86 /* unique local MAC addr */ -#define WI_RID_PCI_INFO 0xFD87 /* point coordination func cap */ - -/* - * Modem information - */ -#define WI_RID_PHY_TYPE 0xFDC0 /* phys layer type indication */ -#define WI_RID_CURRENT_CHAN 0xFDC1 /* current frequency */ -#define WI_RID_PWR_STATE 0xFDC2 /* pwr consumption status */ -#define WI_RID_CCA_MODE 0xFDC3 /* clear chan assess mode indication */ -#define WI_RID_CCA_TIME 0xFDC4 /* clear chan assess time */ -#define WI_RID_MAC_PROC_DELAY 0xFDC5 /* MAC processing delay time */ -#define WI_RID_DATA_RATES 0xFDC6 /* supported data rates */ -#endif - - -#endif diff --git a/sys/i386/isa/if_wireg.h b/sys/i386/isa/if_wireg.h deleted file mode 100644 index 8c9c6e6797c5..000000000000 --- a/sys/i386/isa/if_wireg.h +++ /dev/null @@ -1,599 +0,0 @@ -/* - * Copyright (c) 1997, 1998, 1999 - * Bill Paul <wpaul@ctr.columbia.edu>. All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by Bill Paul. - * 4. Neither the name of the author nor the names of any co-contributors - * may be used to endorse or promote products derived from this software - * without specific prior written permission. - * - * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul OR THE VOICES IN HIS HEAD - * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF - * THE POSSIBILITY OF SUCH DAMAGE. - * - * $Id: if_wireg.h,v 1.31 1999/05/07 03:14:21 wpaul Exp $ - */ - -struct wi_counters { - u_int32_t wi_tx_unicast_frames; - u_int32_t wi_tx_multicast_frames; - u_int32_t wi_tx_fragments; - u_int32_t wi_tx_unicast_octets; - u_int32_t wi_tx_multicast_octets; - u_int32_t wi_tx_deferred_xmits; - u_int32_t wi_tx_single_retries; - u_int32_t wi_tx_multi_retries; - u_int32_t wi_tx_retry_limit; - u_int32_t wi_tx_discards; - u_int32_t wi_rx_unicast_frames; - u_int32_t wi_rx_multicast_frames; - u_int32_t wi_rx_fragments; - u_int32_t wi_rx_unicast_octets; - u_int32_t wi_rx_multicast_octets; - u_int32_t wi_rx_fcs_errors; - u_int32_t wi_rx_discards_nobuf; - u_int32_t wi_tx_discards_wrong_sa; - u_int32_t wi_rx_WEP_cant_decrypt; - u_int32_t wi_rx_msg_in_msg_frags; - u_int32_t wi_rx_msg_in_bad_msg_frags; -}; - -struct wi_softc { - struct arpcom arpcom; - struct ifmedia ifmedia; - int wi_unit; - bus_space_handle_t wi_bhandle; - bus_space_tag_t wi_btag; - int wi_tx_data_id; - int wi_tx_mgmt_id; - int wi_gone; - int wi_if_flags; - u_int16_t wi_ptype; - u_int16_t wi_portnum; - u_int16_t wi_max_data_len; - u_int16_t wi_rts_thresh; - u_int16_t wi_ap_density; - u_int16_t wi_tx_rate; - u_int16_t wi_create_ibss; - u_int16_t wi_channel; - u_int16_t wi_pm_enabled; - u_int16_t wi_max_sleep; - char wi_node_name[32]; - char wi_net_name[32]; - char wi_ibss_name[32]; - u_int8_t wi_txbuf[1536]; - struct wi_counters wi_stats; - struct callout_handle wi_stat_ch; -}; - -#define WI_TIMEOUT 65536 - -#define WI_PORT0 0 -#define WI_PORT1 1 -#define WI_PORT2 2 -#define WI_PORT3 3 -#define WI_PORT4 4 -#define WI_PORT5 5 - -/* Default port: 0 (only 0 exists on stations) */ -#define WI_DEFAULT_PORT (WI_PORT0 << 8) - -/* Default TX rate: 2Mbps, auto fallback */ -#define WI_DEFAULT_TX_RATE 3 - -/* Default network name: ANY */ -#define WI_DEFAULT_NETNAME "ANY" - -#define WI_DEFAULT_AP_DENSITY 1 - -#define WI_DEFAULT_RTS_THRESH 2347 - -#define WI_DEFAULT_DATALEN 2304 - -#define WI_DEFAULT_CREATE_IBSS 0 - -#define WI_DEFAULT_PM_ENABLED 0 - -#define WI_DEFAULT_MAX_SLEEP 100 - -#define WI_DEFAULT_NODENAME "FreeBSD WaveLAN/IEEE node" - -#define WI_DEFAULT_IBSS "FreeBSD IBSS" - -#define WI_DEFAULT_CHAN 3 - -/* - * register space access macros - */ -#define CSR_WRITE_4(sc, reg, val) \ - bus_space_write_4(sc->wi_btag, sc->wi_bhandle, reg, val) -#define CSR_WRITE_2(sc, reg, val) \ - bus_space_write_2(sc->wi_btag, sc->wi_bhandle, reg, val) -#define CSR_WRITE_1(sc, reg, val) \ - bus_space_write_1(sc->wi_btag, sc->wi_bhandle, reg, val) - -#define CSR_READ_4(sc, reg) \ - bus_space_read_4(sc->wi_btag, sc->wi_bhandle, reg) -#define CSR_READ_2(sc, reg) \ - bus_space_read_2(sc->wi_btag, sc->wi_bhandle, reg) -#define CSR_READ_1(sc, reg) \ - bus_space_read_1(sc->wi_btag, sc->wi_bhandle, reg) - -/* - * The WaveLAN/IEEE cards contain an 802.11 MAC controller which Lucent - * calls 'Hermes.' In typical fashion, getting documentation about this - * controller is about as easy as squeezing blood from a stone. Here - * is more or less what I know: - * - * - The Hermes controller is firmware driven, and the host interacts - * with the Hermes via a firmware interface, which can change. - * - * - The Hermes is described in a document called: "Hermes Firmware - * WaveLAN/IEEE Station Functions," document #010245, which of course - * Lucent will not release without an NDA. - * - * - Lucent has created a library called HCF (Hardware Control Functions) - * though which it wants developers to interact with the card. The HCF - * is needlessly complex, ill conceived and badly documented. Actually, - * the comments in the HCP code itself aren't bad, but the publically - * available manual that comes with it is awful, probably due largely to - * the fact that it has been emasculated in order to hide information - * that Lucent wants to keep proprietary. The purpose of the HCF seems - * to be to insulate the driver programmer from the Hermes itself so that - * Lucent has an excuse not to release programming in for it. - * - * - Lucent only makes available documentation and code for 'HCF Light' - * which is a stripped down version of HCF with certain features not - * implemented, most notably support for 802.11 frames. - * - * - The HCF code which I have seen blows goats. Whoever decided to - * use a 132 column format should be shot. - * - * Rather than actually use the Lucent HCF library, I have stripped all - * the useful information from it and used it to create a driver in the - * usual BSD form. Note: I don't want to hear anybody whining about the - * fact that the Lucent code is GPLed and mine isn't. I did not actually - * put any of Lucent's code in this driver: I only used it as a reference - * to obtain information about the underlying hardware. The Hermes - * programming interface is not GPLed, so bite me. - */ - -/* - * Size of Hermes I/O space. - */ -#define WI_IOSIZ 0x40 - -/* - * Hermes register definitions and what little I know about them. - */ - -/* Hermes command/status registers. */ -#define WI_COMMAND 0x00 -#define WI_PARAM0 0x02 -#define WI_PARAM1 0x04 -#define WI_PARAM2 0x06 -#define WI_STATUS 0x08 -#define WI_RESP0 0x0A -#define WI_RESP1 0x0C -#define WI_RESP2 0x0E - -/* Command register values. */ -#define WI_CMD_BUSY 0x8000 /* busy bit */ -#define WI_CMD_INI 0x0000 /* initialize */ -#define WI_CMD_ENABLE 0x0001 /* enable */ -#define WI_CMD_DISABLE 0x0002 /* disable */ -#define WI_CMD_DIAG 0x0003 -#define WI_CMD_ALLOC_MEM 0x000A /* allocate NIC memory */ -#define WI_CMD_TX 0x000B /* transmit */ -#define WI_CMD_NOTIFY 0x0010 -#define WI_CMD_INQUIRE 0x0011 -#define WI_CMD_ACCESS 0x0021 -#define WI_CMD_PROGRAM 0x0022 - -#define WI_CMD_CODE_MASK 0x003F - -/* - * Reclaim qualifier bit, applicable to the - * TX and INQUIRE commands. - */ -#define WI_RECLAIM 0x0100 /* reclaim NIC memory */ - -/* - * ACCESS command qualifier bits. - */ -#define WI_ACCESS_READ 0x0000 -#define WI_ACCESS_WRITE 0x0100 - -/* - * PROGRAM command qualifier bits. - */ -#define WI_PROGRAM_DISABLE 0x0000 -#define WI_PROGRAM_ENABLE_RAM 0x0100 -#define WI_PROGRAM_ENABLE_NVRAM 0x0200 -#define WI_PROGRAM_NVRAM 0x0300 - -/* Status register values */ -#define WI_STAT_CMD_CODE 0x003F -#define WI_STAT_DIAG_ERR 0x0100 -#define WI_STAT_INQ_ERR 0x0500 -#define WI_STAT_CMD_RESULT 0x7F00 - -/* memory handle management registers */ -#define WI_INFO_FID 0x10 -#define WI_RX_FID 0x20 -#define WI_ALLOC_FID 0x22 -#define WI_TX_CMP_FID 0x24 - -/* - * Buffer Access Path (BAP) registers. - * These are I/O channels. I believe you can use each one for - * any desired purpose independently of the other. In general - * though, we use BAP1 for reading and writing LTV records and - * reading received data frames, and BAP0 for writing transmit - * frames. This is a convention though, not a rule. - */ -#define WI_SEL0 0x18 -#define WI_SEL1 0x1A -#define WI_OFF0 0x1C -#define WI_OFF1 0x1E -#define WI_DATA0 0x36 -#define WI_DATA1 0x38 -#define WI_BAP0 WI_DATA0 -#define WI_BAP1 WI_DATA1 - -#define WI_OFF_BUSY 0x8000 -#define WI_OFF_ERR 0x4000 -#define WI_OFF_DATAOFF 0x0FFF - -/* Event registers */ -#define WI_EVENT_STAT 0x30 /* Event status */ -#define WI_INT_EN 0x32 /* Interrupt enable/disable */ -#define WI_EVENT_ACK 0x34 /* Ack event */ - -/* Events */ -#define WI_EV_TICK 0x8000 /* aux timer tick */ -#define WI_EV_RES 0x4000 /* controller h/w error (time out) */ -#define WI_EV_INFO_DROP 0x2000 /* no RAM to build unsolicited frame */ -#define WI_EV_NO_CARD 0x0800 /* card removed (hunh?) */ -#define WI_EV_DUIF_RX 0x0400 /* wavelan management packet received */ -#define WI_EV_INFO 0x0080 /* async info frame */ -#define WI_EV_CMD 0x0010 /* command completed */ -#define WI_EV_ALLOC 0x0008 /* async alloc/reclaim completed */ -#define WI_EV_TX_EXC 0x0004 /* async xmit completed with failure */ -#define WI_EV_TX 0x0002 /* async xmit completed succesfully */ -#define WI_EV_RX 0x0001 /* async rx completed */ - -#define WI_INTRS \ - (WI_EV_RX|WI_EV_TX|WI_EV_TX_EXC|WI_EV_ALLOC|WI_EV_INFO|WI_EV_INFO_DROP) - -/* Host software registers */ -#define WI_SW0 0x28 -#define WI_SW1 0x2A -#define WI_SW2 0x2C -#define WI_SW3 0x2E - -#define WI_CNTL 0x14 - -#define WI_CNTL_AUX_ENA 0xC000 -#define WI_CNTL_AUX_ENA_STAT 0xC000 -#define WI_CNTL_AUX_DIS_STAT 0x0000 -#define WI_CNTL_AUX_ENA_CNTL 0x8000 -#define WI_CNTL_AUX_DIS_CNTL 0x4000 - -#define WI_AUX_PAGE 0x3A -#define WI_AUX_OFFSET 0x3C -#define WI_AUX_DATA 0x3E - -/* - * One form of communication with the Hermes is with what Lucent calls - * LTV records, where LTV stands for Length, Type and Value. The length - * and type are 16 bits and are in native byte order. The value is in - * multiples of 16 bits and is in little endian byte order. - */ -struct wi_ltv_gen { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_val; -}; - -struct wi_ltv_str { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_str[17]; -}; - -#define WI_SETVAL(recno, val) \ - do { \ - struct wi_ltv_gen g; \ - \ - g.wi_len = 2; \ - g.wi_type = recno; \ - g.wi_val = val; \ - wi_write_record(sc, &g); \ - } while (0) - -#define WI_SETSTR(recno, str) \ - do { \ - struct wi_ltv_str s; \ - int l; \ - \ - l = (strlen(str) + 1) & ~0x1; \ - bzero((char *)&s, sizeof(s)); \ - s.wi_len = (l / 2) + 2; \ - s.wi_type = recno; \ - s.wi_str[0] = strlen(str); \ - bcopy(str, (char *)&s.wi_str[1], strlen(str)); \ - wi_write_record(sc, (struct wi_ltv_gen *)&s); \ - } while (0) - -/* - * Download buffer location and length (0xFD01). - */ -#define WI_RID_DNLD_BUF 0xFD01 -struct wi_ltv_dnld_buf { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_buf_pg; /* page addr of intermediate dl buf*/ - u_int16_t wi_buf_off; /* offset of idb */ - u_int16_t wi_buf_len; /* len of idb */ -}; - -/* - * Mem sizes (0xFD02). - */ -#define WI_RID_MEMSZ 0xFD02 -struct wi_ltv_memsz { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_mem_ram; - u_int16_t wi_mem_nvram; -}; - -/* - * List of intended regulatory domains (0xFD11). - */ -#define WI_RID_DOMAINS 0xFD11 -struct wi_ltv_domains { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_domains[6]; -}; - -/* - * CIS struct (0xFD13). - */ -#define WI_RID_CIS 0xFD13 -struct wi_ltv_cis { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_cis[240]; -}; - -/* - * Communications quality (0xFD43). - */ -#define WI_RID_COMMQUAL 0xFD43 -struct wi_ltv_commqual { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_coms_qual; - u_int16_t wi_sig_lvl; - u_int16_t wi_noise_lvl; -}; - -/* - * Actual system scale thresholds (0xFD46). - */ -#define WI_RID_SYSTEM_SCALE 0xFC06 -#define WI_RID_SCALETHRESH 0xFD46 -struct wi_ltv_scalethresh { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_energy_detect; - u_int16_t wi_carrier_detect; - u_int16_t wi_defer; - u_int16_t wi_cell_search; - u_int16_t wi_out_of_range; - u_int16_t wi_delta_snr; -}; - -/* - * PCF info struct (0xFD87). - */ -#define WI_RID_PCF 0xFD87 -struct wi_ltv_pcf { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_energy_detect; - u_int16_t wi_carrier_detect; - u_int16_t wi_defer; - u_int16_t wi_cell_search; - u_int16_t wi_range; -}; - -/* - * Connection control characteristics. - * 1 == Basic Service Set (BSS) - * 2 == Wireless Distribudion System (WDS) - * 3 == Pseudo IBSS - */ -#define WI_RID_PORTTYPE 0xFC00 -#define WI_PORTTYPE_BSS 0x1 -#define WI_PORTTYPE_WDS 0x2 -#define WI_PORTTYPE_ADHOC 0x3 - -/* - * Mac addresses. - */ -#define WI_RID_MAC_NODE 0xFC01 -#define WI_RID_MAC_WDS 0xFC08 -struct wi_ltv_macaddr { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_mac_addr[3]; -}; - -/* - * Station set identification (SSID). - */ -#define WI_RID_DESIRED_SSID 0xFC02 -#define WI_RID_OWN_SSID 0xFC04 -struct wi_ltv_ssid { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_id[17]; -}; - -/* - * Set communications channel (radio frequency). - */ -#define WI_RID_OWN_CHNL 0xFC03 - -/* - * Frame data size. - */ -#define WI_RID_MAX_DATALEN 0xFC07 - -/* - * ESS power management enable - */ -#define WI_RID_PM_ENABLED 0xFC09 - -/* - * ESS max PM sleep internal - */ -#define WI_RID_MAX_SLEEP 0xFC0C - -/* - * Set our station name. - */ -#define WI_RID_NODENAME 0xFC0E -struct wi_ltv_nodename { - u_int16_t wi_len; - u_int16_t wi_type; - u_int16_t wi_nodename[17]; -}; - -/* - * Multicast addresses to be put in filter. We're - * allowed up to 16 addresses in the filter. - */ -#define WI_RID_MCAST 0xFC80 -struct wi_ltv_mcast { - u_int16_t wi_len; - u_int16_t wi_type; - struct ether_addr wi_mcast[16]; -}; - -/* - * Create IBSS. - */ -#define WI_RID_CREATE_IBSS 0xFC81 - -#define WI_RID_FRAG_THRESH 0xFC82 -#define WI_RID_RTS_THRESH 0xFC83 - -/* - * TX rate control - * 0 == Fixed 1mbps - * 1 == Fixed 2mbps - * 2 == auto fallback - */ -#define WI_RID_TX_RATE 0xFC84 - -/* - * promiscuous mode. - */ -#define WI_RID_PROMISC 0xFC85 - -/* - * Auxiliary Timer tick interval - */ -#define WI_RID_TICK_TIME 0xFCE0 - -/* - * Information frame types. - */ -#define WI_INFO_NOTIFY 0xF000 /* Handover address */ -#define WI_INFO_COUNTERS 0xF100 /* Statistics counters */ -#define WI_INFO_SCAN_RESULTS 0xF101 /* Scan results */ -#define WI_INFO_LINK_STAT 0xF200 /* Link status */ -#define WI_INFO_ASSOC_STAT 0xF201 /* Association status */ - -/* - * Hermes transmit/receive frame structure - */ -struct wi_frame { - u_int16_t wi_status; /* 0x00 */ - u_int32_t wi_rsvd0; /* 0x02 */ - u_int16_t wi_q_info; /* 0x06 */ - u_int16_t wi_rsvd1; /* 0x08 */ - u_int16_t wi_tx_ctl; /* 0x0C */ - u_int16_t wi_frame_ctl; /* 0x0E */ - u_int16_t wi_id; /* 0x10 */ - u_int8_t wi_addr1[6]; /* 0x12 */ - u_int8_t wi_addr2[6]; /* 0x18 */ - u_int8_t wi_addr3[6]; /* 0x1E */ - u_int16_t wi_seq_ctl; /* 0x24 */ - u_int8_t wi_addr4[6]; /* 0x26 */ - u_int16_t wi_dat_len; /* 0x2C */ - u_int8_t wi_dst_addr[6]; /* 0x2E */ - u_int8_t wi_src_addr[6]; /* 0x34 */ - u_int16_t wi_len; /* 0x3A */ - u_int16_t wi_dat[3]; /* 0x3C */ /* SNAP header */ - u_int16_t wi_type; /* 0x42 */ -}; - -#define WI_802_3_OFFSET 0x2E -#define WI_802_11_OFFSET 0x44 -#define WI_802_11_OFFSET_RAW 0x3C - -#define WI_STAT_BADCRC 0x0001 -#define WI_STAT_UNDECRYPTABLE 0x0002 -#define WI_STAT_ERRSTAT 0x0003 -#define WI_STAT_MAC_PORT 0x0700 -#define WI_STAT_1042 0x2000 /* RFC1042 encoded */ -#define WI_STAT_TUNNEL 0x4000 /* Bridge-tunnel encoded */ -#define WI_STAT_WMP_MSG 0x6000 /* WaveLAN-II management protocol */ -#define WI_RXSTAT_MSG_TYPE 0xE000 - -#define WI_ENC_TX_802_3 0x00 -#define WI_ENC_TX_802_11 0x11 -#define WI_ENC_TX_E_II 0x0E - -#define WI_ENC_TX_1042 0x00 -#define WI_ENC_TX_TUNNEL 0xF8 - -#define WI_TXCNTL_MACPORT 0x00FF -#define WI_TXCNTL_STRUCTTYPE 0xFF00 - -/* - * SNAP (sub-network access protocol) constants for transmission - * of IP datagrams over IEEE 802 networks, taken from RFC1042. - * We need these for the LLC/SNAP header fields in the TX/RX frame - * structure. - */ -#define WI_SNAP_K1 0xaa /* assigned global SAP for SNAP */ -#define WI_SNAP_K2 0x00 -#define WI_SNAP_CONTROL 0x03 /* unnumbered information format */ -#define WI_SNAP_WORD0 (WI_SNAP_K1 | (WI_SNAP_K1 << 8)) -#define WI_SNAP_WORD1 (WI_SNAP_K2 | (WI_SNAP_CONTROL << 8)) -#define WI_SNAPHDR_LEN 0x6 diff --git a/sys/modules/vinum/.gdbinit.crash b/sys/modules/vinum/.gdbinit.crash deleted file mode 100644 index f3e643671cb8..000000000000 --- a/sys/modules/vinum/.gdbinit.crash +++ /dev/null @@ -1,4 +0,0 @@ -source .gdbinit.kernel -source .gdbinit.vinum.paths -source .gdbinit.vinum -asf diff --git a/sys/modules/vinum/.gdbinit.serial b/sys/modules/vinum/.gdbinit.serial deleted file mode 100644 index d302f8aff479..000000000000 --- a/sys/modules/vinum/.gdbinit.serial +++ /dev/null @@ -1,5 +0,0 @@ -source .gdbinit.kernel -source .gdbinit.vinum.paths -source .gdbinit.vinum -tr -asf diff --git a/sys/net/if_iso88025subr.c b/sys/net/if_iso88025subr.c deleted file mode 100644 index 1999a3f0490f..000000000000 --- a/sys/net/if_iso88025subr.c +++ /dev/null @@ -1,410 +0,0 @@ -/* - * Copyright (c) 1998, Larry Lile - * All rights reserved. - * - * For latest sources and information on this driver, please - * go to http://anarchy.stdio.com. - * - * Questions, comments or suggestions should be directed to - * Larry Lile <lile@stdio.com>. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice unmodified, this list of conditions, and the following - * disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id: if_iso88025subr.c,v 1.5 1999/01/09 22:45:58 lile Exp $ - * - */ - -/* - * - * General ISO 802.5 (Token Ring) support routines - * - */ - -#include "opt_inet.h" - -#include <sys/param.h> -#include <sys/systm.h> -#include <sys/kernel.h> -#include <sys/malloc.h> -#include <sys/mbuf.h> -#include <sys/socket.h> -#include <sys/sockio.h> -#include <sys/sysctl.h> - -#include <net/if.h> -#include <net/netisr.h> -#include <net/route.h> -#include <net/if_llc.h> -#include <net/if_dl.h> -#include <net/if_types.h> - -#include <net/if_arp.h> - -#include <net/iso88025.h> - -#ifdef INET -#include <netinet/in.h> -#include <netinet/in_var.h> -#include <netinet/if_ether.h> -#endif - -#if NBPFILTER > 0 -#include <net/bpf.h> -#include <net/bpfdesc.h> -#endif - -#include <machine/clock.h> -#include <machine/md_var.h> - -#include <i386/isa/isa_device.h> - -#include <vm/vm.h> -#include <vm/vm_param.h> -#include <vm/pmap.h> - -#include <sys/kernel.h> -#include <net/iso88025.h> - -void -iso88025_ifattach(ifp) - register struct ifnet *ifp; -{ - register struct ifaddr *ifa = NULL; - register struct sockaddr_dl *sdl; - - ifp->if_type = IFT_ISO88025; - ifp->if_addrlen = 6; - ifp->if_hdrlen=18; - if (ifp->if_baudrate == 0) - ifp->if_baudrate = 16000000; /* 1, 4, or 16Mbit default? */ - if (ifp->if_mtu == 0) - ifp->if_mtu = ISO88025_DEFAULT_MTU; - - ifa = ifnet_addrs[ifp->if_index - 1]; - if (ifa == 0) { - printf("iso88025_ifattach: no lladdr!\n"); - return; - } - sdl = (struct sockaddr_dl *)ifa->ifa_addr; - sdl->sdl_type = IFT_ISO88025; - sdl->sdl_alen = ifp->if_addrlen; - bcopy(((struct arpcom *)ifp)->ac_enaddr, LLADDR(sdl), ifp->if_addrlen); -} - -int -iso88025_ioctl(struct ifnet *ifp, int command, caddr_t data) -{ - struct ifaddr *ifa = (struct ifaddr *) data; - struct ifreq *ifr = (struct ifreq *) data; - int error = 0; - - switch (command) { - case SIOCSIFADDR: - ifp->if_flags |= IFF_UP; - - switch (ifa->ifa_addr->sa_family) { -#ifdef INET - case AF_INET: - ifp->if_init(ifp->if_softc); /* before arpwhohas */ - arp_ifinit((struct arpcom *)ifp, ifa); - break; -#endif - default: - ifp->if_init(ifp->if_softc); - break; - } - break; - - case SIOCGIFADDR: - { - struct sockaddr *sa; - - sa = (struct sockaddr *) & ifr->ifr_data; - bcopy(((struct arpcom *)ifp->if_softc)->ac_enaddr, - (caddr_t) sa->sa_data, ISO88025_ADDR_LEN); - } - break; - - case SIOCSIFMTU: - /* - * Set the interface MTU. - */ - if (ifr->ifr_mtu > ISO88025MTU) { - error = EINVAL; - } else { - ifp->if_mtu = ifr->ifr_mtu; - } - break; - } - return (error); -} - -/* - * ISO88025 encapsulation - */ -int -iso88025_output(ifp, m0, dst, rt0) - register struct ifnet *ifp; - struct mbuf *m0; - struct sockaddr *dst; - struct rtentry *rt0; -{ - register struct iso88025_header *th; - struct iso88025_header gen_th; - register struct iso88025_sockaddr_data *sd = (struct iso88025_sockaddr_data *)dst->sa_data; - register struct llc *l; - register struct sockaddr_dl *sdl = NULL; - int s, error = 0, rif_len = 0; - u_char edst[6]; - register struct mbuf *m = m0; - register struct rtentry *rt; - int len = m->m_pkthdr.len, loop_copy = 0; - struct arpcom *ac = (struct arpcom *)ifp; - - if ((ifp->if_flags & (IFF_UP|IFF_RUNNING)) != (IFF_UP|IFF_RUNNING)) - senderr(ENETDOWN); - rt = rt0; - if (rt) { - if ((rt->rt_flags & RTF_UP) == 0) { - rt0 = rt = rtalloc1(dst, 1, 0UL); - if (rt0) - rt->rt_refcnt--; - else - senderr(EHOSTUNREACH); - } - if (rt->rt_flags & RTF_GATEWAY) { - if (rt->rt_gwroute == 0) - goto lookup; - if (((rt = rt->rt_gwroute)->rt_flags & RTF_UP) == 0) { - rtfree(rt); rt = rt0; - lookup: rt->rt_gwroute = rtalloc1(rt->rt_gateway, 1, - 0UL); - if ((rt = rt->rt_gwroute) == 0) - senderr(EHOSTUNREACH); - } - } - if (rt->rt_flags & RTF_REJECT) - if (rt->rt_rmx.rmx_expire == 0 || - time_second < rt->rt_rmx.rmx_expire) - senderr(rt == rt0 ? EHOSTDOWN : EHOSTUNREACH); - } - - /* Calculate routing info length based on arp table entry */ - if (rt && (sdl = (struct sockaddr_dl *)rt->rt_gateway)) - if (sdl->sdl_rcf != NULL) - rif_len = (ntohs(sdl->sdl_rcf) & 0x1f00) >> 8; - - /* Generate a generic 802.5 header for the packet */ - gen_th.ac = 0x10; - gen_th.fc = 0x40; - memcpy(gen_th.iso88025_shost, ac->ac_enaddr, sizeof(ac->ac_enaddr)); - if (rif_len) { - gen_th.iso88025_shost[0] |= 0x80; - if (rif_len > 2) { - gen_th.rcf = sdl->sdl_rcf; - memcpy(gen_th.rseg, sdl->sdl_route, rif_len - 2); - } - } - - - switch (dst->sa_family) { -#ifdef INET - case AF_INET: - if (!arpresolve(ac, rt, m, dst, edst, rt0)) - return (0); /* if not yet resolved */ - /* Add LLC and SNAP headers */ - M_PREPEND(m, 8, M_DONTWAIT) - if (m == 0) - senderr(ENOBUFS); - l = mtod(m, struct llc *); - l->llc_un.type_snap.ether_type = htons(ETHERTYPE_IP); - l->llc_dsap = 0xaa; - l->llc_ssap = 0xaa; - l->llc_un.type_snap.control = 0x3; - l->llc_un.type_snap.org_code[0] = 0x0; - l->llc_un.type_snap.org_code[1] = 0x0; - l->llc_un.type_snap.org_code[2] = 0x0; - memcpy(gen_th.iso88025_dhost, edst, sizeof(edst)); - break; -#endif - - case AF_UNSPEC: - /* - * For AF_UNSPEC sockaddr.sa_data must contain all of the - * mac information needed to send the packet. This allows - * full mac, llc, and source routing function to be controlled. - * llc and source routing information must already be in the - * mbuf provided, ac/fc are set in sa_data. sockaddr.sa_data - * should be a iso88025_sockaddr_data structure see iso88025.h - */ - loop_copy = -1; - sd = (struct iso88025_sockaddr_data *)dst->sa_data; - gen_th.ac = sd->ac; - gen_th.fc = sd->fc; - memcpy(gen_th.iso88025_dhost, sd->ether_dhost, sizeof(sd->ether_dhost)); - memcpy(gen_th.iso88025_shost, sd->ether_shost, sizeof(sd->ether_shost)); - rif_len = 0; - break; - - default: - printf("%s%d: can't handle af%d\n", ifp->if_name, ifp->if_unit, - dst->sa_family); - senderr(EAFNOSUPPORT); - } - - /* - * Add local net header. If no space in first mbuf, - * allocate another. - */ - - M_PREPEND(m, ISO88025_HDR_LEN + rif_len, M_DONTWAIT); - if (m == 0) - senderr(ENOBUFS); - - /* Copy as much of the generic header as is needed into the mbuf */ - th = mtod(m, struct iso88025_header *); - memcpy(th, &gen_th, ISO88025_HDR_LEN + rif_len); - - /* - * If a simplex interface, and the packet is being sent to our - * Ethernet address or a broadcast address, loopback a copy. - * XXX To make a simplex device behave exactly like a duplex - * device, we should copy in the case of sending to our own - * ethernet address (thus letting the original actually appear - * on the wire). However, we don't do that here for security - * reasons and compatibility with the original behavior. - */ - if ((ifp->if_flags & IFF_SIMPLEX) && - (loop_copy != -1)) { - if ((m->m_flags & M_BCAST) || (loop_copy > 0)) { - struct mbuf *n = m_copy(m, 0, (int)M_COPYALL); - /*printf("iso88025_output: if_simloop broadcast.\n");*/ - (void) if_simloop(ifp, n, dst, ISO88025_HDR_LEN); - } else if (bcmp(th->iso88025_dhost, - th->iso88025_shost, ETHER_ADDR_LEN) == 0) { - /*printf("iso88025_output: if_simloop to ourselves.\n");*/ - (void) if_simloop(ifp, m, dst, ISO88025_HDR_LEN); - return(0); /* XXX */ - } - } - - s = splimp(); - /* - * Queue message on interface, and start output if interface - * not yet active. - */ - if (IF_QFULL(&ifp->if_snd)) { - printf("iso88025_output: packet dropped QFULL.\n"); - IF_DROP(&ifp->if_snd); - splx(s); - senderr(ENOBUFS); - } - IF_ENQUEUE(&ifp->if_snd, m); - /*printf("iso88025_output: packet queued.\n");*/ - if ((ifp->if_flags & IFF_OACTIVE) == 0) - (*ifp->if_start)(ifp); - splx(s); - ifp->if_obytes += len + ISO88025_HDR_LEN + 8; - if (m->m_flags & M_MCAST) - ifp->if_omcasts++; - return (error); - -bad: - if (m) - m_freem(m); - /*printf("iso88025_output: something went wrong, bailing to bad.\n");*/ - return (error); -} - -/* - * ISO 88025 de-encapsulation - */ -void -iso88025_input(ifp, th, m) - struct ifnet *ifp; - register struct iso88025_header *th; - struct mbuf *m; -{ - register struct ifqueue *inq; - u_short ether_type; - int s; - register struct llc *l = mtod(m, struct llc *); - - /*printf("iso88025_input: entered.\n");*/ - - /*m->m_pkthdr.len = m->m_len = m->m_len - 8;*/ /* Length of LLC header in our case */ - m->m_pkthdr.len -= 8; - m->m_len -= 8; - m->m_data += 8; /* Length of LLC header in our case */ - - if ((ifp->if_flags & IFF_UP) == 0) { - m_freem(m); - return; - } - ifp->if_ibytes += m->m_pkthdr.len + sizeof (*th); - if (th->iso88025_dhost[0] & 1) { - if (bcmp((caddr_t)etherbroadcastaddr, (caddr_t)th->iso88025_dhost, - sizeof(etherbroadcastaddr)) == 0) - m->m_flags |= M_BCAST; - else - m->m_flags |= M_MCAST; - } - if (m->m_flags & (M_BCAST|M_MCAST)) - ifp->if_imcasts++; - - ether_type = ntohs(l->llc_un.type_snap.ether_type); - - /*printf("iso88025_input: source %6D dest %6D ethertype %x\n", th->iso88025_shost, ":", th->iso88025_dhost, ":", ether_type);*/ - - switch (ether_type) { -#ifdef INET - case ETHERTYPE_IP: - /*printf("iso88025_input: IP Packet\n");*/ - th->iso88025_shost[0] &= ~(0x80); /* Turn off source route bit XXX */ - if (ipflow_fastforward(m)) - return; - schednetisr(NETISR_IP); - inq = &ipintrq; - break; - - case ETHERTYPE_ARP: - /*printf("iso88025_input: ARP Packet\n");*/ - schednetisr(NETISR_ARP); - inq = &arpintrq; - break; -#endif - default: - m_freem(m); - return; - } - - s = splimp(); - if (IF_QFULL(inq)) { - IF_DROP(inq); - m_freem(m); - printf("iso88025_input: Packet dropped (Queue full).\n"); - } else - IF_ENQUEUE(inq, m); - /*printf("iso88025_input: Packet queued.\n");*/ - splx(s); -} diff --git a/sys/net/iso88025.h b/sys/net/iso88025.h deleted file mode 100644 index 70ecdc0c016f..000000000000 --- a/sys/net/iso88025.h +++ /dev/null @@ -1,112 +0,0 @@ -/* - * Copyright (c) 1998, Larry Lile - * All rights reserved. - * - * For latest sources and information on this driver, please - * go to http://anarchy.stdio.com. - * - * Questions, comments or suggestions should be directed to - * Larry Lile <lile@stdio.com>. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice unmodified, this list of conditions, and the following - * disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id: iso88025.h,v 1.10 1999/01/09 19:01:58 lile Exp $ - * - * Information gathered from tokenring@freebsd, /sys/net/ethernet.h and - * the Mach token ring driver. - */ - -/* - * Fundamental constants relating to iso 802.5 - */ - -#ifndef _NET_ISO88025_H_ -#define _NET_ISO88025_H_ - -/* - * The number of bytes in an iso 802.5 (MAC) address. - */ -#define ISO88025_ADDR_LEN 6 - -/* - */ -#define ISO88025_HDR_LEN (ISO88025_CF_LEN + ISO88025_ADDR_LEN*2) -#define ISO88025_CF_LEN 2 -#define RCF_LEN 2 -#define RIF_LEN 16 - - -/* - * The minimum packet length. - */ -#define ISO88025_MIN_LEN 0 /* This offends my morality */ - -/* - * The maximum packet length. - */ -#define ISO88025_MAX_LEN 17960 - -/* - * A macro to validate a length with - */ -#define ISO88025_IS_VALID_LEN(foo) \ - ((foo) >= ISO88025_MIN_LEN && (foo) <= ISO88025_MAX_LEN) - -/* - * ISO 802.5 physical header - */ -struct iso88025_header { - u_char ac; /* access control field */ - u_char fc; /* frame control field */ - u_char iso88025_dhost[ISO88025_ADDR_LEN]; /* destination address */ - u_char iso88025_shost[ISO88025_ADDR_LEN]; /* source address */ - u_short rcf; /* route control field */ - u_short rseg[RIF_LEN]; /* routing registers */ -}; - -struct iso88025_sockaddr_data { - u_char ether_dhost[ISO88025_ADDR_LEN]; - u_char ether_shost[ISO88025_ADDR_LEN]; - u_char ac; - u_char fc; -}; - -/* - * Structure of a 48-bit iso 802.5 address. - * ( We could also add the 16 bit addresses as a union) - */ -struct iso88025_addr { - u_char octet[ISO88025_ADDR_LEN]; -}; - -#define ISO88025MTU 18000 -#define ISO88025_DEFAULT_MTU 1500 -#define senderr(e) { error = (e); goto bad;} - -void iso88025_ifattach __P((struct ifnet *)); -int iso88025_ioctl __P((struct ifnet *, int , caddr_t )); -int iso88025_output __P((struct ifnet *, struct mbuf *, struct sockaddr *, struct rtentry *)); -void iso88025_input __P((struct ifnet *, struct iso88025_header *, struct mbuf *)); - - -#endif diff --git a/sys/pci/ahc_pci.c b/sys/pci/ahc_pci.c index eb892a053703..aa7d168cc462 100644 --- a/sys/pci/ahc_pci.c +++ b/sys/pci/ahc_pci.c @@ -34,7 +34,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: ahc_pci.c,v 1.5.2.2 1999/03/07 00:42:43 gibbs Exp $ + * $Id: ahc_pci.c,v 1.5.2.4 1999/05/16 00:07:45 gibbs Exp $ */ #include <pci.h> @@ -42,7 +42,6 @@ #include <sys/param.h> #include <sys/systm.h> #include <sys/kernel.h> -#include <sys/queue.h> #include <pci/pcireg.h> #include <pci/pcivar.h> @@ -64,33 +63,369 @@ #include <aic7xxx_reg.h> -#define PCI_BASEADR0 PCI_MAP_REG_START /* I/O Address */ -#define PCI_BASEADR1 PCI_MAP_REG_START + 4 /* Mem I/O Address */ - -#define PCI_DEVICE_ID_ADAPTEC_398XU 0x83789004ul -#define PCI_DEVICE_ID_ADAPTEC_3940U 0x82789004ul -#define PCI_DEVICE_ID_ADAPTEC_3950U2 0x00509005ul -#define PCI_DEVICE_ID_ADAPTEC_2944U 0x84789004ul -#define PCI_DEVICE_ID_ADAPTEC_2940U 0x81789004ul -#define PCI_DEVICE_ID_ADAPTEC_2940AU 0x61789004ul -#define PCI_DEVICE_ID_ADAPTEC_2940U2 0x00109005ul -#define PCI_DEVICE_ID_ADAPTEC_2930U2 0x00119005ul -#define PCI_DEVICE_ID_ADAPTEC_398X 0x73789004ul -#define PCI_DEVICE_ID_ADAPTEC_3940 0x72789004ul -#define PCI_DEVICE_ID_ADAPTEC_2944 0x74789004ul -#define PCI_DEVICE_ID_ADAPTEC_2940 0x71789004ul -#define PCI_DEVICE_ID_ADAPTEC_AIC7890 0x001F9005ul -#define PCI_DEVICE_ID_ADAPTEC_AIC7895C 0x78939004ul /* RAID Port */ -#define PCI_DEVICE_ID_ADAPTEC_AIC7895 0x78959004ul -#define PCI_DEVICE_ID_ADAPTEC_AIC7896 0x005F9005ul -#define PCI_DEVICE_ID_ADAPTEC_AIC7880 0x80789004ul -#define PCI_DEVICE_ID_ADAPTEC_AIC7870 0x70789004ul -#define PCI_DEVICE_ID_ADAPTEC_AIC7860 0x60789004ul -#define PCI_DEVICE_ID_ADAPTEC_AIC7855 0x55789004ul -#define PCI_DEVICE_ID_ADAPTEC_AIC7850 0x50789004ul -#define PCI_DEVICE_ID_ADAPTEC_AIC7810 0x10789004ul -#define PCI_DEVICE_ID_ADAPTEC_AIC7815 0x15789004ul +#define AHC_PCI_IOADDR PCIR_MAPS /* I/O Address */ +#define AHC_PCI_MEMADDR (PCIR_MAPS + 4) /* Mem I/O Address */ +static __inline u_int64_t +ahc_compose_id(u_int device, u_int vendor, u_int subdevice, u_int subvendor) +{ + u_int64_t id; + + id = subvendor + | (subdevice << 16) + | ((u_int64_t)vendor << 32) + | ((u_int64_t)device << 48); + + return (id); +} + +#define ID_ALL_MASK 0xFFFFFFFFFFFFFFFFull +#define ID_DEV_VENDOR_MASK 0xFFFFFFFF00000000ull +#define ID_AIC7850 0x5078900400000000ull +#define ID_AHA_2910_15_20_30C 0x5078900478509004ull +#define ID_AIC7855 0x5578900400000000ull +#define ID_AIC7860 0x6078900400000000ull +#define ID_AIC7860C 0x6078900478609004ull +#define ID_AHA_2940AU_0 0x6178900400000000ull +#define ID_AHA_2940AU_1 0x6178900478619004ull +#define ID_AHA_2930C_VAR 0x6038900438689004ull + +#define ID_AIC7870 0x7078900400000000ull +#define ID_AHA_2940 0x7178900400000000ull +#define ID_AHA_3940 0x7278900400000000ull +#define ID_AHA_398X 0x7378900400000000ull +#define ID_AHA_2944 0x7478900400000000ull +#define ID_AHA_3944 0x7578900400000000ull + +#define ID_AIC7880 0x8078900400000000ull +#define ID_AIC7880_B 0x8078900478809004ull +#define ID_AHA_2940AU_CN 0x2178900478219004ull +#define ID_AHA_2940U 0x8178900400000000ull +#define ID_AHA_3940U 0x8278900400000000ull +#define ID_AHA_2944U 0x8478900400000000ull +#define ID_AHA_3944U 0x8578900400000000ull +#define ID_AHA_398XU 0x8378900400000000ull +#define ID_AHA_4944U 0x8678900400000000ull +#define ID_AHA_2940UB 0x8178900478819004ull +#define ID_AHA_2930U 0x8878900478889004ull +#define ID_AHA_2940U_PRO 0x8778900478879004ull +#define ID_AHA_2940U_CN 0x0078900478009004ull + +#define ID_AIC7895 0x7895900478959004ull +#define ID_AIC7895_RAID_PORT 0x7893900478939004ull +#define ID_AHA_2940U_DUAL 0x7895900478919004ull +#define ID_AHA_3940AU 0x7895900478929004ull +#define ID_AHA_3944AU 0x7895900478949004ull + +#define ID_AIC7890 0x001F9005000F9005ull +#define ID_AHA_2930U2 0x0011900501819005ull +#define ID_AHA_2940U2B 0x00109005A1009005ull +#define ID_AHA_2940U2_OEM 0x0010900521809005ull +#define ID_AHA_2940U2 0x00109005A1809005ull +#define ID_AHA_2950U2B 0x00109005E1009005ull + +#define ID_AIC7896 0x005F9005FFFF9005ull +#define ID_AHA_3950U2B_0 0x00509005FFFF9005ull +#define ID_AHA_3950U2B_1 0x00509005F5009005ull +#define ID_AHA_3950U2D_0 0x00519005FFFF9005ull +#define ID_AHA_3950U2D_1 0x00519005B5009005ull + +#define ID_AIC7810 0x1078900400000000ull +#define ID_AIC7815 0x1578900400000000ull + +typedef int (ahc_device_setup_t)(pcici_t, char *, ahc_chip *, + ahc_feature *, ahc_flag *); + +static ahc_device_setup_t ahc_aic7850_setup; +static ahc_device_setup_t ahc_aic7860_setup; +static ahc_device_setup_t ahc_aic7870_setup; +static ahc_device_setup_t ahc_aha394X_setup; +static ahc_device_setup_t ahc_aha398X_setup; +static ahc_device_setup_t ahc_aic7880_setup; +static ahc_device_setup_t ahc_aha394XU_setup; +static ahc_device_setup_t ahc_aha398XU_setup; +static ahc_device_setup_t ahc_aic7890_setup; +static ahc_device_setup_t ahc_aic7895_setup; +static ahc_device_setup_t ahc_aic7896_setup; +static ahc_device_setup_t ahc_raid_setup; +static ahc_device_setup_t ahc_aha394XX_setup; +static ahc_device_setup_t ahc_aha398XX_setup; + +struct ahc_pci_identity { + u_int64_t full_id; + u_int64_t id_mask; + char *name; + ahc_device_setup_t *setup; +}; + +struct ahc_pci_identity ahc_pci_ident_table [] = +{ + /* aic7850 based controllers */ + { + ID_AHA_2910_15_20_30C, + ID_ALL_MASK, + "Adaptec 2910/15/20/30C SCSI adapter", + ahc_aic7850_setup + }, + /* aic7860 based controllers */ + { + ID_AHA_2940AU_0 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec 2940A Ultra SCSI adapter", + ahc_aic7860_setup + }, + { + ID_AHA_2930C_VAR, + ID_ALL_MASK, + "Adaptec 2930C SCSI adapter (VAR)", + ahc_aic7860_setup + }, + /* aic7870 based controllers */ + { + ID_AHA_2940, + ID_ALL_MASK, + "Adaptec 2940 SCSI adapter", + ahc_aic7870_setup + }, + { + ID_AHA_3940, + ID_ALL_MASK, + "Adaptec 3940 SCSI adapter", + ahc_aha394X_setup + }, + { + ID_AHA_398X, + ID_ALL_MASK, + "Adaptec 398X SCSI RAID adapter", + ahc_aha398X_setup + }, + { + ID_AHA_2944, + ID_ALL_MASK, + "Adaptec 2944 SCSI adapter", + ahc_aic7870_setup + }, + { + ID_AHA_3944, + ID_ALL_MASK, + "Adaptec 3944 SCSI adapter", + ahc_aha394X_setup + }, + /* aic7880 based controllers */ + { + ID_AHA_2940AU_CN, + ID_ALL_MASK, + "Adaptec 2940A/CN Ultra SCSI adapter", + ahc_aic7880_setup + }, + { + ID_AHA_2940U, + ID_ALL_MASK, + "Adaptec 2940 Ultra SCSI adapter", + ahc_aic7880_setup + }, + { + ID_AHA_3940U, + ID_ALL_MASK, + "Adaptec 3940 Ultra SCSI adapter", + ahc_aha394XU_setup + }, + { + ID_AHA_2944U, + ID_ALL_MASK, + "Adaptec 2944 Ultra SCSI adapter", + ahc_aic7880_setup + }, + { + ID_AHA_3944U, + ID_ALL_MASK, + "Adaptec 3944 Ultra SCSI adapter", + ahc_aha394XU_setup + }, + { + ID_AHA_398XU, + ID_ALL_MASK, + "Adaptec 398X Ultra SCSI RAID adapter", + ahc_aha398XU_setup + }, + { + /* XXX Don't know the slot numbers so can't identify channels */ + ID_AHA_4944U, + ID_ALL_MASK, + "Adaptec 4944 Ultra SCSI adapter", + ahc_aic7880_setup + }, + { + ID_AHA_2940UB, + ID_ALL_MASK, + "Adaptec 2940B Ultra SCSI adapter", + ahc_aic7880_setup + }, + { + ID_AHA_2930U, + ID_ALL_MASK, + "Adaptec 2930 Ultra SCSI adapter", + ahc_aic7880_setup + }, + { + ID_AHA_2940U_PRO, + ID_ALL_MASK, + "Adaptec 2940 Pro Ultra SCSI adapter", + ahc_aic7880_setup + }, + { + ID_AHA_2940U_CN, + ID_ALL_MASK, + "Adaptec 2940/CN Ultra SCSI adapter", + ahc_aic7880_setup + }, + /* aic7890 based controllers */ + { + ID_AHA_2930U2, + ID_ALL_MASK, + "Adaptec 2930 Ultra2 SCSI adapter", + ahc_aic7890_setup + }, + { + ID_AHA_2940U2B, + ID_ALL_MASK, + "Adaptec 2940B Ultra2 SCSI adapter", + ahc_aic7890_setup + }, + { + ID_AHA_2940U2_OEM, + ID_ALL_MASK, + "Adaptec 2940 Ultra2 SCSI adapter (OEM)", + ahc_aic7890_setup + }, + { + ID_AHA_2940U2, + ID_ALL_MASK, + "Adaptec 2940 Ultra2 SCSI adapter", + ahc_aic7890_setup + }, + { + ID_AHA_2950U2B, + ID_ALL_MASK, + "Adaptec 2950 Ultra2 SCSI adapter", + ahc_aic7890_setup + }, + /* aic7895 based controllers */ + { + ID_AHA_2940U_DUAL, + ID_ALL_MASK, + "Adaptec 2940/DUAL Ultra SCSI adapter", + ahc_aic7895_setup + }, + { + ID_AHA_3940AU, + ID_ALL_MASK, + "Adaptec 3940A Ultra SCSI adapter", + ahc_aic7895_setup + }, + { + ID_AHA_3944AU, + ID_ALL_MASK, + "Adaptec 3944A Ultra SCSI adapter", + ahc_aic7895_setup + }, + /* aic7896/97 based controllers */ + { + ID_AHA_3950U2B_0, + ID_ALL_MASK, + "Adaptec 3950B Ultra2 SCSI adapter", + ahc_aic7896_setup + }, + { + ID_AHA_3950U2B_1, + ID_ALL_MASK, + "Adaptec 3950B Ultra2 SCSI adapter", + ahc_aic7896_setup + }, + { + ID_AHA_3950U2D_0, + ID_ALL_MASK, + "Adaptec 3950D Ultra2 SCSI adapter", + ahc_aic7896_setup + }, + { + ID_AHA_3950U2D_1, + ID_ALL_MASK, + "Adaptec 3950D Ultra2 SCSI adapter", + ahc_aic7896_setup + }, + /* Generic chip probes for devices we don't know 'exactly' */ + { + ID_AIC7850 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7850 SCSI adapter", + ahc_aic7850_setup + }, + { + ID_AIC7855 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7855 SCSI adapter", + ahc_aic7850_setup + }, + { + ID_AIC7860 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7860 SCSI adapter", + ahc_aic7860_setup + }, + { + ID_AIC7870 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7870 SCSI adapter", + ahc_aic7870_setup + }, + { + ID_AIC7880 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7880 Ultra SCSI adapter", + ahc_aic7880_setup + }, + { + ID_AIC7890 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7890/91 Ultra2 SCSI adapter", + ahc_aic7890_setup + }, + { + ID_AIC7895 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7895 Ultra SCSI adapter", + ahc_aic7895_setup + }, + { + ID_AIC7895_RAID_PORT & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7895 Ultra SCSI adapter (RAID PORT)", + ahc_aic7895_setup + }, + { + ID_AIC7896 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7896/97 Ultra2 SCSI adapter", + ahc_aic7896_setup + }, + { + ID_AIC7810 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7810 RAID memory controller", + ahc_raid_setup + }, + { + ID_AIC7815 & ID_DEV_VENDOR_MASK, + ID_DEV_VENDOR_MASK, + "Adaptec aic7815 RAID memory controller", + ahc_raid_setup + } +}; + +static const int ahc_num_pci_devs = + sizeof(ahc_pci_ident_table) / sizeof(*ahc_pci_ident_table); + #define AHC_394X_SLOT_CHANNEL_A 4 #define AHC_394X_SLOT_CHANNEL_B 5 @@ -116,6 +451,7 @@ #define CACHESIZE 0x0000003ful /* only 5 bits */ #define LATTIME 0x0000ff00ul +static struct ahc_pci_identity *ahc_find_pci_device(pcici_t tag); static void check_extport(struct ahc_softc *ahc, u_int *sxfrctl1); static void configure_termination(struct ahc_softc *ahc, struct seeprom_config *sc, @@ -149,246 +485,100 @@ static void ahc_pci_attach(pcici_t config_id, int unit); /* Exported for use in the ahc_intr routine */ void ahc_pci_intr(struct ahc_softc *ahc); -static struct pci_device ahc_pci_driver = { +static struct pci_device ahc_pci_driver = { "ahc", - ahc_pci_probe, - ahc_pci_attach, - &ahc_unit, + ahc_pci_probe, + ahc_pci_attach, + &ahc_unit, NULL -}; +}; DATA_SET (pcidevice_set, ahc_pci_driver); -static const char* -ahc_pci_probe (pcici_t tag, pcidi_t type) +static struct ahc_pci_identity * +ahc_find_pci_device(pcici_t tag) { - switch (type) { - case PCI_DEVICE_ID_ADAPTEC_398XU: - return ("Adaptec 398X Ultra SCSI RAID adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_3940U: - return ("Adaptec 3940 Ultra SCSI host adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_398X: - return ("Adaptec 398X SCSI RAID adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_3940: - return ("Adaptec 3940 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_3950U2: - return ("Adaptec 3950 Ultra2 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_2930U2: - return ("Adaptec 2930 Ultra2 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_2944U: - return ("Adaptec 2944 Ultra SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_2940U: - return ("Adaptec 2940 Ultra SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_2940U2: - return ("Adaptec 2940 Ultra2 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_2944: - return ("Adaptec 2944 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_2940: - return ("Adaptec 2940 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_2940AU: - return ("Adaptec 2940A Ultra SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7895: - return ("Adaptec aic7895 Ultra SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7895C: - return ("Adaptec aic7895 `Raid Port' Ultra SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7890: - return ("Adaptec aic7890/91 Ultra2 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7896: - return ("Adaptec aic7896/97 Ultra2 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7880: - return ("Adaptec aic7880 Ultra SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7870: - return ("Adaptec aic7870 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7860: - return ("Adaptec aic7860 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7855: - return ("Adaptec aic7855 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7850: - return ("Adaptec aic7850 SCSI adapter"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7810: - return ("Adaptec aic7810 RAID memory controller"); - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7815: - return ("Adaptec aic7815 RAID memory controller"); - break; - default: - break; + u_int64_t full_id; + struct ahc_pci_identity *entry; + u_int deviceid; + u_int vendorid; + u_int subdeviceid; + u_int subvendorid; + u_int i; + + deviceid = pci_cfgread(tag, PCIR_DEVICE, /*bytes*/2); + vendorid = pci_cfgread(tag, PCIR_VENDOR, /*bytes*/2); + subdeviceid = pci_cfgread(tag, PCIR_SUBDEV_0, /*bytes*/2); + subvendorid = pci_cfgread(tag, PCIR_SUBVEND_0, /*bytes*/2); + full_id = ahc_compose_id(deviceid, + vendorid, + subdeviceid, + subvendorid); + + for (i = 0; i < ahc_num_pci_devs; i++) { + entry = &ahc_pci_ident_table[i]; + if (entry->full_id == (full_id & entry->id_mask)) + return (entry); } - return (0); + return (NULL); +} + +static const char* +ahc_pci_probe(pcici_t tag, pcidi_t type) +{ + struct ahc_pci_identity *entry; + entry = ahc_find_pci_device(tag); + if (entry != NULL) + return (entry->name); + return (NULL); } static void ahc_pci_attach(pcici_t config_id, int unit) { - pci_port_t io_port; - struct ahc_softc *ahc; - u_int32_t id; - u_int32_t command; - struct scb_data *shared_scb_data; - int opri; - ahc_chip ahc_t = AHC_NONE; - ahc_feature ahc_fe = AHC_FENONE; - ahc_flag ahc_f = AHC_FNONE; - vm_offset_t vaddr; - vm_offset_t paddr; - u_int our_id = 0; - u_int sxfrctl1; - u_int scsiseq; - int error; - char channel; - - if (config_id->func == 1) - channel = 'B'; - else - channel = 'A'; + pci_port_t io_port; + bus_dma_tag_t parent_dmat; + struct ahc_softc *ahc; + struct ahc_pci_identity *entry; + vm_offset_t vaddr; +#ifdef AHC_ALLOW_MEMIO + vm_offset_t paddr; +#endif + u_int command; + struct scb_data *shared_scb_data; + ahc_chip ahc_t = AHC_NONE; + ahc_feature ahc_fe = AHC_FENONE; + ahc_flag ahc_f = AHC_FNONE; + u_int our_id = 0; + u_int sxfrctl1; + u_int scsiseq; + int error; + int opri; + char channel; + shared_scb_data = NULL; + command = pci_cfgread(config_id, PCIR_COMMAND, /*bytes*/1); + entry = ahc_find_pci_device(config_id); + if (entry == NULL) + return; + + error = entry->setup(config_id, &channel, &ahc_t, &ahc_fe, &ahc_f); + if (error != 0) + return; + vaddr = NULL; - paddr = NULL; - io_port = 0; - command = pci_conf_read(config_id, PCI_COMMAND_STATUS_REG); #ifdef AHC_ALLOW_MEMIO if ((command & PCI_COMMAND_MEM_ENABLE) == 0 - || (pci_map_mem(config_id, PCI_BASEADR1, &vaddr, &paddr)) == 0) + || (pci_map_mem(config_id, AHC_PCI_MEMADDR, &vaddr, &paddr)) == 0) #endif if ((command & PCI_COMMAND_IO_ENABLE) == 0 - || (pci_map_port(config_id, PCI_BASEADR0, &io_port)) == 0) + || (pci_map_port(config_id, AHC_PCI_IOADDR, &io_port)) == 0) return; - switch ((id = pci_conf_read(config_id, PCI_ID_REG))) { - case PCI_DEVICE_ID_ADAPTEC_398XU: - case PCI_DEVICE_ID_ADAPTEC_398X: - if (id == PCI_DEVICE_ID_ADAPTEC_398XU) { - ahc_t = AHC_AIC7880; - ahc_fe = AHC_AIC7880_FE; - } else { - ahc_t = AHC_AIC7870; - ahc_fe = AHC_AIC7870_FE; - } - - switch (config_id->slot) { - case AHC_398X_SLOT_CHANNEL_A: - break; - case AHC_398X_SLOT_CHANNEL_B: - channel = 'B'; - break; - case AHC_398X_SLOT_CHANNEL_C: - channel = 'C'; - break; - default: - printf("adapter at unexpected slot %d\n" - "unable to map to a channel\n", - config_id->slot); - } - ahc_f |= AHC_LARGE_SEEPROM; - break; - case PCI_DEVICE_ID_ADAPTEC_3940U: - case PCI_DEVICE_ID_ADAPTEC_3940: - if (id == PCI_DEVICE_ID_ADAPTEC_3940U) { - ahc_t = AHC_AIC7880; - ahc_fe = AHC_AIC7880_FE; - } else { - ahc_t = AHC_AIC7870; - ahc_fe = AHC_AIC7870_FE; - } - - switch (config_id->slot) { - case AHC_394X_SLOT_CHANNEL_A: - break; - case AHC_394X_SLOT_CHANNEL_B: - channel = 'B'; - break; - default: - printf("adapter at unexpected slot %d\n" - "unable to map to a channel\n", - config_id->slot); - } - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7890: - case PCI_DEVICE_ID_ADAPTEC_2940U2: - case PCI_DEVICE_ID_ADAPTEC_2930U2: - { - ahc_t = AHC_AIC7890; - ahc_fe = AHC_AIC7890_FE; - break; - } - case PCI_DEVICE_ID_ADAPTEC_AIC7896: - case PCI_DEVICE_ID_ADAPTEC_3950U2: - { - ahc_t = AHC_AIC7896; - ahc_fe = AHC_AIC7896_FE; - break; - } - case PCI_DEVICE_ID_ADAPTEC_2944U: - case PCI_DEVICE_ID_ADAPTEC_2940U: - case PCI_DEVICE_ID_ADAPTEC_AIC7880: - ahc_t = AHC_AIC7880; - ahc_fe = AHC_AIC7880_FE; - break; - case PCI_DEVICE_ID_ADAPTEC_2944: - case PCI_DEVICE_ID_ADAPTEC_2940: - case PCI_DEVICE_ID_ADAPTEC_AIC7870: - ahc_t = AHC_AIC7870; - ahc_fe = AHC_AIC7870_FE; - break; - case PCI_DEVICE_ID_ADAPTEC_2940AU: - case PCI_DEVICE_ID_ADAPTEC_AIC7860: - ahc_fe = AHC_AIC7860_FE; - ahc_t = AHC_AIC7860; - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7895: - case PCI_DEVICE_ID_ADAPTEC_AIC7895C: - { - u_int32_t devconfig; - - ahc_t = AHC_AIC7895; - ahc_fe = AHC_AIC7895_FE; - devconfig = pci_conf_read(config_id, DEVCONFIG); - devconfig &= ~SCBSIZE32; - pci_conf_write(config_id, DEVCONFIG, devconfig); - break; - } - case PCI_DEVICE_ID_ADAPTEC_AIC7855: - case PCI_DEVICE_ID_ADAPTEC_AIC7850: - ahc_t = AHC_AIC7850; - ahc_fe = AHC_AIC7850_FE; - break; - case PCI_DEVICE_ID_ADAPTEC_AIC7810: - case PCI_DEVICE_ID_ADAPTEC_AIC7815: - printf("RAID functionality unsupported\n"); - return; - default: - break; - } - - /* On all PCI adapters, we allow SCB paging */ - ahc_f |= AHC_PAGESCBS; - if ((ahc = ahc_alloc(unit, io_port, vaddr, ahc_t|AHC_PCI, ahc_fe, ahc_f, - shared_scb_data)) == NULL) - return; /* XXX PCI code should take return status */ - - ahc->channel = channel; + /* Ensure busmastering is enabled */ + command |= PCIM_CMD_BUSMASTEREN; + pci_cfgwrite(config_id, PCIR_COMMAND, command, /*bytes*/1); /* Allocate a dmatag for our SCB DMA maps */ /* XXX Should be a child of the PCI bus dma tag */ @@ -399,15 +589,22 @@ ahc_pci_attach(pcici_t config_id, int unit) /*filter*/NULL, /*filterarg*/NULL, /*maxsize*/MAXBSIZE, /*nsegments*/AHC_NSEG, /*maxsegsz*/AHC_MAXTRANSFER_SIZE, - /*flags*/BUS_DMA_ALLOCNOW, &ahc->dmat); + /*flags*/BUS_DMA_ALLOCNOW, &parent_dmat); if (error != 0) { - printf("%s: Could not allocate DMA tag - error %d\n", - ahc_name(ahc), error); - ahc_free(ahc); + printf("ahc_pci_attach: Could not allocate DMA tag " + "- error %d\n", error); return; } + /* On all PCI adapters, we allow SCB paging */ + ahc_f |= AHC_PAGESCBS; + if ((ahc = ahc_alloc(unit, io_port, vaddr, parent_dmat, + ahc_t|AHC_PCI, ahc_fe, ahc_f, + shared_scb_data)) == NULL) + return; + + ahc->channel = channel; /* Store our PCI bus information for use in our PCI error handler */ ahc->pci_config_id = config_id; @@ -439,7 +636,8 @@ ahc_pci_attach(pcici_t config_id, int unit) if ((dscommand0 & RAMPS) != 0) { u_int32_t devconfig; - devconfig = pci_conf_read(config_id, DEVCONFIG); + devconfig = pci_cfgread(config_id, DEVCONFIG, + /*bytes*/4); if ((devconfig & MPORTMODE) != 0) { /* Single user mode */ @@ -448,7 +646,8 @@ ahc_pci_attach(pcici_t config_id, int unit) * parity checking */ devconfig |= EXTSCBPEN; - pci_conf_write(config_id, DEVCONFIG, devconfig); + pci_cfgwrite(config_id, DEVCONFIG, + devconfig, /*bytes*/4); /* * Set the bank select apropriately. @@ -474,7 +673,9 @@ ahc_pci_attach(pcici_t config_id, int unit) } } else if ((ahc->chip & AHC_CHIPID_MASK) >= AHC_AIC7870) { - u_int32_t devconfig = pci_conf_read(config_id, DEVCONFIG); + u_int32_t devconfig; + + devconfig = pci_cfgread(config_id, DEVCONFIG, /*bytes*/4); if ((devconfig & RAMPSM) != 0 && (devconfig & MPORTMODE) != 0) { @@ -496,12 +697,14 @@ ahc_pci_attach(pcici_t config_id, int unit) /* Select external SRAM */ devconfig &= ~SCBRAMSEL; - pci_conf_write(config_id, DEVCONFIG, devconfig); + pci_cfgwrite(config_id, DEVCONFIG, + devconfig, /*bytes*/4); if (ahc_probe_scbs(ahc) == 0) { /* External ram isn't really there */ devconfig |= SCBRAMSEL; - pci_conf_write(config_id, DEVCONFIG, devconfig); + pci_cfgwrite(config_id, DEVCONFIG, + devconfig, /*bytes*/4); } else if (bootverbose) printf("%s: External SRAM bank%d\n", ahc_name(ahc), @@ -513,6 +716,7 @@ ahc_pci_attach(pcici_t config_id, int unit) ahc_free(ahc); return; } + /* * Protect ourself from spurrious interrupts during * intialization. @@ -637,7 +841,7 @@ ahc_pci_attach(pcici_t config_id, int unit) if (ahc_init(ahc)) { ahc_free(ahc); splx(opri); - return; /* XXX PCI code should take return status */ + return; } /* XXX Crude hack - fix sometime */ @@ -1103,7 +1307,7 @@ acquire_seeprom(struct ahc_softc *ahc, struct seeprom_descriptor *sd) if ((ahc->features & AHC_SPIOCAP) != 0 && (ahc_inb(ahc, SPIOCAP) & SEEPROM) == 0) - return (0); + return (0); /* * Request access of the memory port. When access is @@ -1230,4 +1434,177 @@ ahc_pci_intr(struct ahc_softc *ahc) } } +static int +ahc_aic7850_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + *channel = 'A'; + *chip = AHC_AIC7850; + *features = AHC_AIC7850_FE; + return (0); +} + +static int +ahc_aic7860_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + *channel = 'A'; + *chip = AHC_AIC7860; + *features = AHC_AIC7860_FE; + return (0); +} + +static int +ahc_aic7870_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + *channel = 'A'; + *chip = AHC_AIC7870; + *features = AHC_AIC7870_FE; + return (0); +} + +static int +ahc_aha394X_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + int error; + + error = ahc_aic7870_setup(dev, channel, chip, features, flags); + if (error == 0) + error = ahc_aha394XX_setup(dev, channel, chip, features, flags); + return (error); +} + +static int +ahc_aha398X_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + int error; + + error = ahc_aic7870_setup(dev, channel, chip, features, flags); + if (error == 0) + error = ahc_aha398XX_setup(dev, channel, chip, features, flags); + return (error); +} + +static int +ahc_aic7880_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + *channel = 'A'; + *chip = AHC_AIC7880; + *features = AHC_AIC7880_FE; + return (0); +} + +static int +ahc_aha394XU_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + int error; + + error = ahc_aic7880_setup(dev, channel, chip, features, flags); + if (error == 0) + error = ahc_aha394XX_setup(dev, channel, chip, features, flags); + return (error); +} + +static int +ahc_aha398XU_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + int error; + + error = ahc_aic7880_setup(dev, channel, chip, features, flags); + if (error == 0) + error = ahc_aha398XX_setup(dev, channel, chip, features, flags); + return (error); +} + +static int +ahc_aic7890_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + *channel = 'A'; + *chip = AHC_AIC7890; + *features = AHC_AIC7890_FE; + return (0); +} + +static int +ahc_aic7895_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + u_int32_t devconfig; + + *channel = dev->func == 1 ? 'B' : 'A'; + *chip = AHC_AIC7895; + *features = AHC_AIC7895_FE; + devconfig = pci_cfgread(dev, DEVCONFIG, /*bytes*/4); + devconfig &= ~SCBSIZE32; + pci_cfgwrite(dev, DEVCONFIG, devconfig, /*bytes*/4); + return (0); +} + +static int +ahc_aic7896_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + *channel = dev->func == 1 ? 'B' : 'A'; + *chip = AHC_AIC7896; + *features = AHC_AIC7896_FE; + return (0); +} + +static int +ahc_raid_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + printf("RAID functionality unsupported\n"); + return (ENXIO); +} + +static int +ahc_aha394XX_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + switch (dev->slot) { + case AHC_394X_SLOT_CHANNEL_A: + *channel = 'A'; + break; + case AHC_394X_SLOT_CHANNEL_B: + *channel = 'B'; + break; + default: + printf("adapter at unexpected slot %d\n" + "unable to map to a channel\n", + dev->slot); + } + return (0); +} + +static int +ahc_aha398XX_setup(pcici_t dev, char *channel, ahc_chip *chip, + ahc_feature *features, ahc_flag *flags) +{ + switch (dev->slot) { + case AHC_398X_SLOT_CHANNEL_A: + *channel = 'A'; + break; + case AHC_398X_SLOT_CHANNEL_B: + *channel = 'B'; + break; + case AHC_398X_SLOT_CHANNEL_C: + *channel = 'C'; + break; + default: + printf("adapter at unexpected slot %d\n" + "unable to map to a channel\n", + dev->slot); + } + *flags |= AHC_LARGE_SEEPROM; + return (0); +} + #endif /* NPCI > 0 */ diff --git a/sys/pci/bt848_i2c.c b/sys/pci/bt848_i2c.c index 47cc1d25f091..176d069a837f 100644 --- a/sys/pci/bt848_i2c.c +++ b/sys/pci/bt848_i2c.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: bt848_i2c.c,v 1.2.2.1 1999/05/15 12:25:33 roger Exp $ + * $Id: bt848_i2c.c,v 1.1 1998/10/31 11:26:38 nsouch Exp $ * */ @@ -33,12 +33,6 @@ * From brooktree848.c <fsmp@freefall.org> */ -#include "pci.h" -#include "bktr.h" -#include "smbus.h" - -#if (NBKTR > 0 && NPCI > 0 && NSMBUS > 0) - #include <sys/param.h> #include <sys/kernel.h> #include <sys/systm.h> @@ -67,7 +61,10 @@ #include "iicbb_if.h" #include "smbus_if.h" +#include "pci.h" +#include "bktr.h" +#if (NBKTR > 0 && NPCI > 0) #define I2C_DELAY 40 diff --git a/sys/ufs/ffs/README b/sys/ufs/ffs/README deleted file mode 100644 index 8a7433b61e9e..000000000000 --- a/sys/ufs/ffs/README +++ /dev/null @@ -1,320 +0,0 @@ -Introduction - -This package constitutes the alpha distribution of the soft update -code updates for the fast filesystem. - -For More information on what Soft Updates is, see: -http://www.ece.cmu.edu/~ganger/papers/CSE-TR-254-95/ - -Status - -My `filesystem torture tests' (described below) run for days without -a hitch (no panic's, hangs, filesystem corruption, or memory leaks). -However, I have had several panic's reported to me by folks that -are field testing the code which I have not yet been able to -reproduce or fix. Although these panic's are rare and do not cause -filesystem corruption, the code should only be put into production -on systems where the system administrator is aware that it is being -run, and knows how to turn it off if problems arise. Thus, you may -hand out this code to others, but please ensure that this status -message is included with any distributions. Please also include -the file ffs_softdep.stub.c in any distributions so that folks that -cannot abide by the need to redistribute source will not be left -with a kernel that will not link. It will resolve all the calls -into the soft update code and simply ignores the request to enable -them. Thus you will be able to ensure that your other hooks have -not broken anything and that your kernel is softdep-ready for those -that wish to use them. Please report problems back to me with -kernel backtraces of panics if possible. This is massively complex -code, and people only have to have their filesystems hosed once or -twice to avoid future changes like the plague. I want to find and -fix as many bugs as soon as possible so as to get the code rock -solid before it gets widely released. Please report any bugs that -you uncover to mckusick@mckusick.com. - -Performance - -Running the Andrew Benchmarks yields the following raw data: - - Phase Normal Softdep What it does - 1 3s <1s Creating directories - 2 8s 4s Copying files - 3 6s 6s Recursive directory stats - 4 8s 9s Scanning each file - 5 25s 25s Compilation - - Normal: 19.9u 29.2s 0:52.8 135+630io - Softdep: 20.3u 28.5s 0:47.8 103+363io - -Another interesting datapoint are my `filesystem torture tests'. -They consist of 1000 runs of the andrew benchmarks, 1000 copy and -removes of /etc with randomly selected pauses of 0-60 seconds -between each copy and remove, and 500 find from / with randomly -selected pauses of 100 seconds between each run). The run of the -torture test compares as follows: - -With soft updates: writes: 6 sync, 1,113,686 async; run time 19hr, 50min -Normal filesystem: writes: 1,459,147 sync, 487,031 async; run time 27hr, 15min - -The upshot is 42% less I/O and 28% shorter running time. - -Another interesting test point is a full MAKEDEV. Because it runs -as a shell script, it becomes mostly limited by the execution speed -of the machine on which it runs. Here are the numbers: - -With soft updates: - - labrat# time ./MAKEDEV std - 2.2u 32.6s 0:34.82 100.0% 0+0k 11+36io 0pf+0w - - labrat# ls | wc - 522 522 3317 - -Without soft updates: - - labrat# time ./MAKEDEV std - 2.0u 40.5s 0:42.53 100.0% 0+0k 11+1221io 0pf+0w - - labrat# ls | wc - 522 522 3317 - -Of course, some of the system time is being pushed -to the syncer process, but that is a different story. - -To show a benchmark designed to highlight the soft update code -consider a tar of zero-sized files and an rm -rf of a directory tree -that has at least 50 files or so at each level. Running a test with -a directory tree containing 28 directories holding 202 empty files -produces the following numbers: - -With soft updates: -tar: 0.0u 0.5s 0:00.65 76.9% 0+0k 0+44io 0pf+0w (0 sync, 33 async writes) -rm: 0.0u 0.2s 0:00.20 100.0% 0+0k 0+37io 0pf+0w (0 sync, 72 async writes) - -Normal filesystem: -tar: 0.0u 1.1s 0:07.27 16.5% 0+0k 60+586io 0pf+0w (523 sync, 0 async writes) -rm: 0.0u 0.5s 0:01.84 29.3% 0+0k 0+318io 0pf+0w (258 sync, 65 async writes) - -The large reduction in writes is because inodes are clustered, so -most of a block gets allocated, then the whole block is written -out once rather than having the same block written once for each -inode allocated from it. Similarly each directory block is written -once rather than once for each new directory entry. Effectively -what the update code is doing is allocating a bunch of inodes -and directory entries without writing anything, then ensuring that -the block containing the inodes is written first followed by the -directory block that references them. If there were data in the -files it would further ensure that the data blocks were written -before their inodes claimed them. - -Copyright Restrictions - -Please familiarize yourself with the copyright restrictions -contained at the top of either the sys/ufs/ffs/softdep.h or -sys/ufs/ffs/ffs_softdep.c file. The key provision is similar -to the one used by the DB 2.0 package and goes as follows: - - Redistributions in any form must be accompanied by information - on how to obtain complete source code for any accompanying - software that uses the this software. This source code must - either be included in the distribution or be available for - no more than the cost of distribution plus a nominal fee, - and must be freely redistributable under reasonable - conditions. For an executable file, complete source code - means the source code for all modules it contains. It does - not mean source code for modules or files that typically - accompany the operating system on which the executable file - runs, e.g., standard library modules or system header files. - -The idea is to allow those of you freely redistributing your source -to use it while retaining for myself the right to peddle it for -money to the commercial UNIX vendors. Note that I have included a -stub file ffs_softdep.c.stub that is freely redistributable so that -you can put in all the necessary hooks to run the full soft updates -code, but still allow vendors that want to maintain proprietary -source to have a working system. I do plan to release the code with -a `Berkeley style' copyright once I have peddled it around to the -commercial vendors. If you have concerns about this copyright, -feel free to contact me with them and we can try to resolve any -difficulties. - -Soft Dependency Operation - -The soft update implementation does NOT require ANY changes -to the on-disk format of your filesystems. Furthermore it is -not used by default for any filesystems. It must be enabled on -a filesystem by filesystem basis by running tunefs to set a -bit in the superblock indicating that the filesystem should be -managed using soft updates. If you wish to stop using -soft updates due to performance or reliability reasons, -you can simply run tunefs on it again to turn off the bit and -revert to normal operation. The additional dynamic memory load -placed on the kernel malloc arena is approximately equal to -the amount of memory used by vnodes plus inodes (for a system -with 1000 vnodes, the additional peak memory load is about 300K). - -Kernel Changes - -There are two new changes to the kernel functionality that are not -contained in in the soft update files. The first is a `trickle -sync' facility running in the kernel as process 3. This trickle -sync process replaces the traditional `update' program (which should -be commented out of the /etc/rc startup script). When a vnode is -first written it is placed 30 seconds down on the trickle sync -queue. If it still exists and has dirty data when it reaches the -top of the queue, it is sync'ed. This approach evens out the load -on the underlying I/O system and avoids writing short-lived files. -The papers on trickle-sync tend to favor aging based on buffers -rather than files. However, I sync on file age rather than buffer -age because the data structures are much smaller as there are -typically far fewer files than buffers. Although this can make the -I/O spikey when a big file times out, it is still much better than -the wholesale sync's that were happening before. It also adapts -much better to the soft update code where I want to control -aging to improve performance (inodes age in 10 seconds, directories -in 15 seconds, files in 30 seconds). This ensures that most -dependencies are gone (e.g., inodes are written when directory -entries want to go to disk) reducing the amount of rollback that -is needed. - -The other main kernel change is to split the vnode freelist into -two separate lists. One for vnodes that are still being used to -identify buffers and the other for those vnodes no longer identifying -any buffers. The latter list is used by getnewvnode in preference -to the former. - -Packaging of Kernel Changes - -The sys subdirectory contains the changes and additions to the -kernel. My goal in writing this code was to minimize the changes -that need to be made to the kernel. Thus, most of the new code -is contained in the two new files softdep.h and ffs_softdep.c. -The rest of the kernel changes are simply inserting hooks to -call into these two new files. Although there has been some -structural reorganization of the filesystem code to accommodate -gathering the information required by the soft update code, -the actual ordering of filesystem operations when soft updates -are disabled is unchanged. - -The kernel changes are packaged as a set of diffs. As I am -doing my development in BSD/OS, the diffs are relative to the -BSD/OS versions of the files. Because BSD/OS recently had -4.4BSD-Lite2 merged into it, the Lite2 files are a good starting -point for figuring out the changes. There are 40 files that -require change plus the two new files. Most of these files have -only a few lines of changes in them. However, four files have -fairly extensive changes: kern/vfs_subr.c, ufs/ufs/ufs_lookup.c, -ufs/ufs/ufs_vnops.c, and ufs/ffs/ffs_alloc.c. For these four -files, I have provided the original Lite2 version, the Lite2 -version with the diffs merged in, and the diffs between the -BSD/OS and merged version. Even so, I expect that there will -be some difficulty in doing the merge; I am certainly willing -to assist in helping get the code merged into your system. - -Packaging of Utility Changes - -The utilities subdirectory contains the changes and additions -to the utilities. There are diffs to three utilities enclosed: - - tunefs - add a flag to enable and disable soft updates - - mount - print out whether soft updates are enabled and - also statistics on number of sync and async writes - - fsck - tighter checks on acceptable errors and a slightly - different policy for what to put in lost+found on - filesystems using soft updates - -In addition you should recompile vmstat so as to get reports -on the 13 new memory types used by the soft update code. -It is not necessary to use the new version of fsck, however it -would aid in my debugging if you do. Also, because of the time -lag between deleting a directory entry and the inode it -references, you will find a lot more files showing up in your -lost+found if you do not use the new version. Note that the -new version checks for the soft update flag in the superblock -and only uses the new algorithms if it is set. So, it will run -unchanged on the filesystems that are not using soft updates. - -Operation - -Once you have booted a kernel that incorporates the soft update -code and installed the updated utilities, do the following: - -1) Comment out the update program in /etc/rc. - -2) Run `tunefs -n enable' on one or more test filesystems. - -3) Mount these filesystems and then type `mount' to ensure that - they have been enabled for soft updates. - -4) Copy the test directory to a softdep filesystem, chdir into - it and run `./doit'. You may want to check out each of the - three subtests individually first: doit1 - andrew benchmarks, - doit2 - copy and removal of /etc, doit3 - find from /. - -==== -Additional notes from Feb 13 - -hen removing huge directories of files, it is possible to get -the incore state arbitrarily far ahead of the disk. Maintaining -all the associated depedency information can exhaust the kernel -malloc arena. To avoid this senario, I have put some limits on -the soft update code so that it will not be allowed to rampage -through all of the kernel memory. I enclose below the relevant -patches to vnode.h and vfs_subr.c (which allow the soft update -code to speed up the filesystem syncer process). I have also -included the diffs for ffs_softdep.c. I hope to make a pass over -ffs_softdep.c to isolate the differences with my standard version -so that these diffs are less painful to incorporate. - -Since I know you like to play with tuning, I have put the relevant -knobs on sysctl debug variables. The tuning knobs can be viewed -with `sysctl debug' and set with `sysctl -w debug.<name>=value'. -The knobs are as follows: - - debug.max_softdeps - limit on any given resource - debug.tickdelay - ticks to delay before allocating - debug.max_limit_hit - number of times tickdelay imposed - debug.rush_requests - number of rush requests to filesystem syncer - -The max_softdeps limit is derived from vnodesdesired which in -turn is sized based on the amount of memory on the machine. -When the limit is hit, a process requesting a resource first -tries to speed up the filesystem syncer process. Such a -request is recorded as a rush_request. After syncdelay / 2 -unserviced rush requests (typically 15) are in the filesystem -syncers queue (i.e., it is more than 15 seconds behind in its -work), the process requesting the memory is put to sleep for -tickdelay seconds. Such a delay is recorded in max_limit_hit. -Following this delay it is granted its memory without further -delay. I have tried the following experiments in which I -delete an MH directory containing 16,703 files: - -Run # 1 2 3 - -max_softdeps 4496 4496 4496 -tickdelay 100 == 1 sec 20 == 0.2 sec 2 == 0.02 sec -max_limit_hit 16 == 16 sec 27 == 5.4 sec 203 == 4.1 sec -rush_requests 147 102 93 -run time 57 sec 46 sec 45 sec -I/O's 781 859 936 - -When run with no limits, it completes in 40 seconds. So, the -time spent in delay is directly added to the bottom line. -Shortening the tick delay does cut down the total running time, -but at the expense of generating more total I/O operations -due to the rush orders being sent to the filesystem syncer. -Although the number of rush orders decreases with a shorter -tick delay, there are more requests in each order, hence the -increase in I/O count. Also, although the I/O count does rise -with a shorter delay, it is still at least an order of magnitude -less than without soft updates. Anyway, you may want to play -around with these value to see what works best and to see if -you can get an insight into how best to tune them. If you get -out of memory panic's, then you have max_softdeps set too high. -The max_limit_hit and rush_requests show be reset to zero -before each run. The minimum legal value for tickdelay is 2 -(if you set it below that, the code will use 2). - - diff --git a/sys/ufs/ffs/softdep.h b/sys/ufs/ffs/softdep.h deleted file mode 100644 index 5d5ce5ec5cda..000000000000 --- a/sys/ufs/ffs/softdep.h +++ /dev/null @@ -1,548 +0,0 @@ -/* - * Copyright 1998 Marshall Kirk McKusick. All Rights Reserved. - * - * The soft updates code is derived from the appendix of a University - * of Michigan technical report (Gregory R. Ganger and Yale N. Patt, - * "Soft Updates: A Solution to the Metadata Update Problem in File - * Systems", CSE-TR-254-95, August 1995). - * - * The following are the copyrights and redistribution conditions that - * apply to this copy of the soft update software. For a license - * to use, redistribute or sell the soft update software under - * conditions other than those described here, please contact the - * author at one of the following addresses: - * - * Marshall Kirk McKusick mckusick@mckusick.com - * 1614 Oxford Street +1-510-843-9542 - * Berkeley, CA 94709-1608 - * USA - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * 3. None of the names of McKusick, Ganger, Patt, or the University of - * Michigan may be used to endorse or promote products derived from - * this software without specific prior written permission. - * 4. Redistributions in any form must be accompanied by information on - * how to obtain complete source code for any accompanying software - * that uses this software. This source code must either be included - * in the distribution or be available for no more than the cost of - * distribution plus a nominal fee, and must be freely redistributable - * under reasonable conditions. For an executable file, complete - * source code means the source code for all modules it contains. - * It does not mean source code for modules or files that typically - * accompany the operating system on which the executable file runs, - * e.g., standard library modules or system header files. - * - * THIS SOFTWARE IS PROVIDED BY MARSHALL KIRK MCKUSICK ``AS IS'' AND ANY - * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED - * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL MARSHALL KIRK MCKUSICK BE LIABLE FOR - * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * @(#)softdep.h 9.6 (McKusick) 2/25/99 - * $Id: softdep.h,v 1.5 1999/03/02 00:19:47 mckusick Exp $ - */ - -#include <sys/queue.h> - -/* - * Allocation dependencies are handled with undo/redo on the in-memory - * copy of the data. A particular data dependency is eliminated when - * it is ALLCOMPLETE: that is ATTACHED, DEPCOMPLETE, and COMPLETE. - * - * ATTACHED means that the data is not currently being written to - * disk. UNDONE means that the data has been rolled back to a safe - * state for writing to the disk. When the I/O completes, the data is - * restored to its current form and the state reverts to ATTACHED. - * The data must be locked throughout the rollback, I/O, and roll - * forward so that the rolled back information is never visible to - * user processes. The COMPLETE flag indicates that the item has been - * written. For example, a dependency that requires that an inode be - * written will be marked COMPLETE after the inode has been written - * to disk. The DEPCOMPLETE flag indicates the completion of any other - * dependencies such as the writing of a cylinder group map has been - * completed. A dependency structure may be freed only when both it - * and its dependencies have completed and any rollbacks that are in - * progress have finished as indicated by the set of ALLCOMPLETE flags - * all being set. The two MKDIR flags indicate additional dependencies - * that must be done when creating a new directory. MKDIR_BODY is - * cleared when the directory data block containing the "." and ".." - * entries has been written. MKDIR_PARENT is cleared when the parent - * inode with the increased link count for ".." has been written. When - * both MKDIR flags have been cleared, the DEPCOMPLETE flag is set to - * indicate that the directory dependencies have been completed. The - * writing of the directory inode itself sets the COMPLETE flag which - * then allows the directory entry for the new directory to be written - * to disk. The RMDIR flag marks a dirrem structure as representing - * the removal of a directory rather than a file. When the removal - * dependencies are completed, additional work needs to be done - * (truncation of the "." and ".." entries, an additional decrement - * of the associated inode, and a decrement of the parent inode). The - * DIRCHG flag marks a diradd structure as representing the changing - * of an existing entry rather than the addition of a new one. When - * the update is complete the dirrem associated with the inode for - * the old name must be added to the worklist to do the necessary - * reference count decrement. The GOINGAWAY flag indicates that the - * data structure is frozen from further change until its dependencies - * have been completed and its resources freed after which it will be - * discarded. The IOSTARTED flag prevents multiple calls to the I/O - * start routine from doing multiple rollbacks. The ONWORKLIST flag - * shows whether the structure is currently linked onto a worklist. - */ -#define ATTACHED 0x0001 -#define UNDONE 0x0002 -#define COMPLETE 0x0004 -#define DEPCOMPLETE 0x0008 -#define MKDIR_PARENT 0x0010 -#define MKDIR_BODY 0x0020 -#define RMDIR 0x0040 -#define DIRCHG 0x0080 -#define GOINGAWAY 0x0100 -#define IOSTARTED 0x0200 -#define ONWORKLIST 0x8000 - -#define ALLCOMPLETE (ATTACHED | COMPLETE | DEPCOMPLETE) - -/* - * The workitem queue. - * - * It is sometimes useful and/or necessary to clean up certain dependencies - * in the background rather than during execution of an application process - * or interrupt service routine. To realize this, we append dependency - * structures corresponding to such tasks to a "workitem" queue. In a soft - * updates implementation, most pending workitems should not wait for more - * than a couple of seconds, so the filesystem syncer process awakens once - * per second to process the items on the queue. - */ - -/* LIST_HEAD(workhead, worklist); -- declared in buf.h */ - -/* - * Each request can be linked onto a work queue through its worklist structure. - * To avoid the need for a pointer to the structure itself, this structure - * MUST be declared FIRST in each type in which it appears! If more than one - * worklist is needed in the structure, then a wk_data field must be added - * and the macros below changed to use it. - */ -struct worklist { - LIST_ENTRY(worklist) wk_list; /* list of work requests */ - unsigned short wk_type; /* type of request */ - unsigned short wk_state; /* state flags */ -}; -#define WK_DATA(wk) ((void *)(wk)) -#define WK_PAGEDEP(wk) ((struct pagedep *)(wk)) -#define WK_INODEDEP(wk) ((struct inodedep *)(wk)) -#define WK_NEWBLK(wk) ((struct newblk *)(wk)) -#define WK_BMSAFEMAP(wk) ((struct bmsafemap *)(wk)) -#define WK_ALLOCDIRECT(wk) ((struct allocdirect *)(wk)) -#define WK_INDIRDEP(wk) ((struct indirdep *)(wk)) -#define WK_ALLOCINDIR(wk) ((struct allocindir *)(wk)) -#define WK_FREEFRAG(wk) ((struct freefrag *)(wk)) -#define WK_FREEBLKS(wk) ((struct freeblks *)(wk)) -#define WK_FREEFILE(wk) ((struct freefile *)(wk)) -#define WK_DIRADD(wk) ((struct diradd *)(wk)) -#define WK_MKDIR(wk) ((struct mkdir *)(wk)) -#define WK_DIRREM(wk) ((struct dirrem *)(wk)) - -/* - * Various types of lists - */ -LIST_HEAD(dirremhd, dirrem); -LIST_HEAD(diraddhd, diradd); -LIST_HEAD(newblkhd, newblk); -LIST_HEAD(inodedephd, inodedep); -LIST_HEAD(allocindirhd, allocindir); -LIST_HEAD(allocdirecthd, allocdirect); -TAILQ_HEAD(allocdirectlst, allocdirect); - -/* - * The "pagedep" structure tracks the various dependencies related to - * a particular directory page. If a directory page has any dependencies, - * it will have a pagedep linked to its associated buffer. The - * pd_dirremhd list holds the list of dirrem requests which decrement - * inode reference counts. These requests are processed after the - * directory page with the corresponding zero'ed entries has been - * written. The pd_diraddhd list maintains the list of diradd requests - * which cannot be committed until their corresponding inode has been - * written to disk. Because a directory may have many new entries - * being created, several lists are maintained hashed on bits of the - * offset of the entry into the directory page to keep the lists from - * getting too long. Once a new directory entry has been cleared to - * be written, it is moved to the pd_pendinghd list. After the new - * entry has been written to disk it is removed from the pd_pendinghd - * list, any removed operations are done, and the dependency structure - * is freed. - */ -#define DAHASHSZ 6 -#define DIRADDHASH(offset) (((offset) >> 2) % DAHASHSZ) -struct pagedep { - struct worklist pd_list; /* page buffer */ -# define pd_state pd_list.wk_state /* check for multiple I/O starts */ - LIST_ENTRY(pagedep) pd_hash; /* hashed lookup */ - struct mount *pd_mnt; /* associated mount point */ - ino_t pd_ino; /* associated file */ - ufs_lbn_t pd_lbn; /* block within file */ - struct dirremhd pd_dirremhd; /* dirrem's waiting for page */ - struct diraddhd pd_diraddhd[DAHASHSZ]; /* diradd dir entry updates */ - struct diraddhd pd_pendinghd; /* directory entries awaiting write */ -}; - -/* - * The "inodedep" structure tracks the set of dependencies associated - * with an inode. One task that it must manage is delayed operations - * (i.e., work requests that must be held until the inodedep's associated - * inode has been written to disk). Getting an inode from its incore - * state to the disk requires two steps to be taken by the filesystem - * in this order: first the inode must be copied to its disk buffer by - * the VOP_UPDATE operation; second the inode's buffer must be written - * to disk. To ensure that both operations have happened in the required - * order, the inodedep maintains two lists. Delayed operations are - * placed on the id_inowait list. When the VOP_UPDATE is done, all - * operations on the id_inowait list are moved to the id_bufwait list. - * When the buffer is written, the items on the id_bufwait list can be - * safely moved to the work queue to be processed. A second task of the - * inodedep structure is to track the status of block allocation within - * the inode. Each block that is allocated is represented by an - * "allocdirect" structure (see below). It is linked onto the id_newinoupdt - * list until both its contents and its allocation in the cylinder - * group map have been written to disk. Once these dependencies have been - * satisfied, it is removed from the id_newinoupdt list and any followup - * actions such as releasing the previous block or fragment are placed - * on the id_inowait list. When an inode is updated (a VOP_UPDATE is - * done), the "inodedep" structure is linked onto the buffer through - * its worklist. Thus, it will be notified when the buffer is about - * to be written and when it is done. At the update time, all the - * elements on the id_newinoupdt list are moved to the id_inoupdt list - * since those changes are now relevant to the copy of the inode in the - * buffer. Also at update time, the tasks on the id_inowait list are - * moved to the id_bufwait list so that they will be executed when - * the updated inode has been written to disk. When the buffer containing - * the inode is written to disk, any updates listed on the id_inoupdt - * list are rolled back as they are not yet safe. Following the write, - * the changes are once again rolled forward and any actions on the - * id_bufwait list are processed (since those actions are now safe). - * The entries on the id_inoupdt and id_newinoupdt lists must be kept - * sorted by logical block number to speed the calculation of the size - * of the rolled back inode (see explanation in initiate_write_inodeblock). - * When a directory entry is created, it is represented by a diradd. - * The diradd is added to the id_inowait list as it cannot be safely - * written to disk until the inode that it represents is on disk. After - * the inode is written, the id_bufwait list is processed and the diradd - * entries are moved to the id_pendinghd list where they remain until - * the directory block containing the name has been written to disk. - * The purpose of keeping the entries on the id_pendinghd list is so that - * the softdep_fsync function can find and push the inode's directory - * name(s) as part of the fsync operation for that file. - */ -struct inodedep { - struct worklist id_list; /* buffer holding inode block */ -# define id_state id_list.wk_state /* inode dependency state */ - LIST_ENTRY(inodedep) id_hash; /* hashed lookup */ - struct fs *id_fs; /* associated filesystem */ - ino_t id_ino; /* dependent inode */ - nlink_t id_nlinkdelta; /* saved effective link count */ - struct dinode *id_savedino; /* saved dinode contents */ - LIST_ENTRY(inodedep) id_deps; /* bmsafemap's list of inodedep's */ - struct buf *id_buf; /* related bmsafemap (if pending) */ - off_t id_savedsize; /* file size saved during rollback */ - struct workhead id_pendinghd; /* entries awaiting directory write */ - struct workhead id_bufwait; /* operations after inode written */ - struct workhead id_inowait; /* operations waiting inode update */ - struct allocdirectlst id_inoupdt; /* updates before inode written */ - struct allocdirectlst id_newinoupdt; /* updates when inode written */ -}; - -/* - * A "newblk" structure is attached to a bmsafemap structure when a block - * or fragment is allocated from a cylinder group. Its state is set to - * DEPCOMPLETE when its cylinder group map is written. It is consumed by - * an associated allocdirect or allocindir allocation which will attach - * themselves to the bmsafemap structure if the newblk's DEPCOMPLETE flag - * is not set (i.e., its cylinder group map has not been written). - */ -struct newblk { - LIST_ENTRY(newblk) nb_hash; /* hashed lookup */ - struct fs *nb_fs; /* associated filesystem */ - ufs_daddr_t nb_newblkno; /* allocated block number */ - int nb_state; /* state of bitmap dependency */ - LIST_ENTRY(newblk) nb_deps; /* bmsafemap's list of newblk's */ - struct bmsafemap *nb_bmsafemap; /* associated bmsafemap */ -}; - -/* - * A "bmsafemap" structure maintains a list of dependency structures - * that depend on the update of a particular cylinder group map. - * It has lists for newblks, allocdirects, allocindirs, and inodedeps. - * It is attached to the buffer of a cylinder group block when any of - * these things are allocated from the cylinder group. It is freed - * after the cylinder group map is written and the state of its - * dependencies are updated with DEPCOMPLETE to indicate that it has - * been processed. - */ -struct bmsafemap { - struct worklist sm_list; /* cylgrp buffer */ - struct buf *sm_buf; /* associated buffer */ - struct allocdirecthd sm_allocdirecthd; /* allocdirect deps */ - struct allocindirhd sm_allocindirhd; /* allocindir deps */ - struct inodedephd sm_inodedephd; /* inodedep deps */ - struct newblkhd sm_newblkhd; /* newblk deps */ -}; - -/* - * An "allocdirect" structure is attached to an "inodedep" when a new block - * or fragment is allocated and pointed to by the inode described by - * "inodedep". The worklist is linked to the buffer that holds the block. - * When the block is first allocated, it is linked to the bmsafemap - * structure associated with the buffer holding the cylinder group map - * from which it was allocated. When the cylinder group map is written - * to disk, ad_state has the DEPCOMPLETE flag set. When the block itself - * is written, the COMPLETE flag is set. Once both the cylinder group map - * and the data itself have been written, it is safe to write the inode - * that claims the block. If there was a previous fragment that had been - * allocated before the file was increased in size, the old fragment may - * be freed once the inode claiming the new block is written to disk. - * This ad_fragfree request is attached to the id_inowait list of the - * associated inodedep (pointed to by ad_inodedep) for processing after - * the inode is written. - */ -struct allocdirect { - struct worklist ad_list; /* buffer holding block */ -# define ad_state ad_list.wk_state /* block pointer state */ - TAILQ_ENTRY(allocdirect) ad_next; /* inodedep's list of allocdirect's */ - ufs_lbn_t ad_lbn; /* block within file */ - ufs_daddr_t ad_newblkno; /* new value of block pointer */ - ufs_daddr_t ad_oldblkno; /* old value of block pointer */ - long ad_newsize; /* size of new block */ - long ad_oldsize; /* size of old block */ - LIST_ENTRY(allocdirect) ad_deps; /* bmsafemap's list of allocdirect's */ - struct buf *ad_buf; /* cylgrp buffer (if pending) */ - struct inodedep *ad_inodedep; /* associated inodedep */ - struct freefrag *ad_freefrag; /* fragment to be freed (if any) */ -}; - -/* - * A single "indirdep" structure manages all allocation dependencies for - * pointers in an indirect block. The up-to-date state of the indirect - * block is stored in ir_savedata. The set of pointers that may be safely - * written to the disk is stored in ir_safecopy. The state field is used - * only to track whether the buffer is currently being written (in which - * case it is not safe to update ir_safecopy). Ir_deplisthd contains the - * list of allocindir structures, one for each block that needs to be - * written to disk. Once the block and its bitmap allocation have been - * written the safecopy can be updated to reflect the allocation and the - * allocindir structure freed. If ir_state indicates that an I/O on the - * indirect block is in progress when ir_safecopy is to be updated, the - * update is deferred by placing the allocindir on the ir_donehd list. - * When the I/O on the indirect block completes, the entries on the - * ir_donehd list are processed by updating their corresponding ir_safecopy - * pointers and then freeing the allocindir structure. - */ -struct indirdep { - struct worklist ir_list; /* buffer holding indirect block */ -# define ir_state ir_list.wk_state /* indirect block pointer state */ - caddr_t ir_saveddata; /* buffer cache contents */ - struct buf *ir_savebp; /* buffer holding safe copy */ - struct allocindirhd ir_donehd; /* done waiting to update safecopy */ - struct allocindirhd ir_deplisthd; /* allocindir deps for this block */ -}; - -/* - * An "allocindir" structure is attached to an "indirdep" when a new block - * is allocated and pointed to by the indirect block described by the - * "indirdep". The worklist is linked to the buffer that holds the new block. - * When the block is first allocated, it is linked to the bmsafemap - * structure associated with the buffer holding the cylinder group map - * from which it was allocated. When the cylinder group map is written - * to disk, ai_state has the DEPCOMPLETE flag set. When the block itself - * is written, the COMPLETE flag is set. Once both the cylinder group map - * and the data itself have been written, it is safe to write the entry in - * the indirect block that claims the block; the "allocindir" dependency - * can then be freed as it is no longer applicable. - */ -struct allocindir { - struct worklist ai_list; /* buffer holding indirect block */ -# define ai_state ai_list.wk_state /* indirect block pointer state */ - LIST_ENTRY(allocindir) ai_next; /* indirdep's list of allocindir's */ - int ai_offset; /* pointer offset in indirect block */ - ufs_daddr_t ai_newblkno; /* new block pointer value */ - ufs_daddr_t ai_oldblkno; /* old block pointer value */ - struct freefrag *ai_freefrag; /* block to be freed when complete */ - struct indirdep *ai_indirdep; /* address of associated indirdep */ - LIST_ENTRY(allocindir) ai_deps; /* bmsafemap's list of allocindir's */ - struct buf *ai_buf; /* cylgrp buffer (if pending) */ -}; - -/* - * A "freefrag" structure is attached to an "inodedep" when a previously - * allocated fragment is replaced with a larger fragment, rather than extended. - * The "freefrag" structure is constructed and attached when the replacement - * block is first allocated. It is processed after the inode claiming the - * bigger block that replaces it has been written to disk. Note that the - * ff_state field is is used to store the uid, so may lose data. However, - * the uid is used only in printing an error message, so is not critical. - * Keeping it in a short keeps the data structure down to 32 bytes. - */ -struct freefrag { - struct worklist ff_list; /* id_inowait or delayed worklist */ -# define ff_state ff_list.wk_state /* owning user; should be uid_t */ - struct vnode *ff_devvp; /* filesystem device vnode */ - struct fs *ff_fs; /* addr of superblock */ - ufs_daddr_t ff_blkno; /* fragment physical block number */ - long ff_fragsize; /* size of fragment being deleted */ - ino_t ff_inum; /* owning inode number */ -}; - -/* - * A "freeblks" structure is attached to an "inodedep" when the - * corresponding file's length is reduced to zero. It records all - * the information needed to free the blocks of a file after its - * zero'ed inode has been written to disk. - */ -struct freeblks { - struct worklist fb_list; /* id_inowait or delayed worklist */ - ino_t fb_previousinum; /* inode of previous owner of blocks */ - struct vnode *fb_devvp; /* filesystem device vnode */ - struct fs *fb_fs; /* addr of superblock */ - off_t fb_oldsize; /* previous file size */ - off_t fb_newsize; /* new file size */ - int fb_chkcnt; /* used to check cnt of blks released */ - uid_t fb_uid; /* uid of previous owner of blocks */ - ufs_daddr_t fb_dblks[NDADDR]; /* direct blk ptrs to deallocate */ - ufs_daddr_t fb_iblks[NIADDR]; /* indirect blk ptrs to deallocate */ -}; - -/* - * A "freefile" structure is attached to an inode when its - * link count is reduced to zero. It marks the inode as free in - * the cylinder group map after the zero'ed inode has been written - * to disk and any associated blocks and fragments have been freed. - */ -struct freefile { - struct worklist fx_list; /* id_inowait or delayed worklist */ - mode_t fx_mode; /* mode of inode */ - ino_t fx_oldinum; /* inum of the unlinked file */ - struct vnode *fx_devvp; /* filesystem device vnode */ - struct fs *fx_fs; /* addr of superblock */ -}; - -/* - * A "diradd" structure is linked to an "inodedep" id_inowait list when a - * new directory entry is allocated that references the inode described - * by "inodedep". When the inode itself is written (either the initial - * allocation for new inodes or with the increased link count for - * existing inodes), the COMPLETE flag is set in da_state. If the entry - * is for a newly allocated inode, the "inodedep" structure is associated - * with a bmsafemap which prevents the inode from being written to disk - * until the cylinder group has been updated. Thus the da_state COMPLETE - * flag cannot be set until the inode bitmap dependency has been removed. - * When creating a new file, it is safe to write the directory entry that - * claims the inode once the referenced inode has been written. Since - * writing the inode clears the bitmap dependencies, the DEPCOMPLETE flag - * in the diradd can be set unconditionally when creating a file. When - * creating a directory, there are two additional dependencies described by - * mkdir structures (see their description below). When these dependencies - * are resolved the DEPCOMPLETE flag is set in the diradd structure. - * If there are multiple links created to the same inode, there will be - * a separate diradd structure created for each link. The diradd is - * linked onto the pg_diraddhd list of the pagedep for the directory - * page that contains the entry. When a directory page is written, - * the pg_diraddhd list is traversed to rollback any entries that are - * not yet ready to be written to disk. If a directory entry is being - * changed (by rename) rather than added, the DIRCHG flag is set and - * the da_previous entry points to the entry that will be "removed" - * once the new entry has been committed. During rollback, entries - * with da_previous are replaced with the previous inode number rather - * than zero. - * - * The overlaying of da_pagedep and da_previous is done to keep the - * structure down to 32 bytes in size on a 32-bit machine. If a - * da_previous entry is present, the pointer to its pagedep is available - * in the associated dirrem entry. If the DIRCHG flag is set, the - * da_previous entry is valid; if not set the da_pagedep entry is valid. - * The DIRCHG flag never changes; it is set when the structure is created - * if appropriate and is never cleared. - */ -struct diradd { - struct worklist da_list; /* id_inowait or id_pendinghd list */ -# define da_state da_list.wk_state /* state of the new directory entry */ - LIST_ENTRY(diradd) da_pdlist; /* pagedep holding directory block */ - doff_t da_offset; /* offset of new dir entry in dir blk */ - ino_t da_newinum; /* inode number for the new dir entry */ - union { - struct dirrem *dau_previous; /* entry being replaced in dir change */ - struct pagedep *dau_pagedep; /* pagedep dependency for addition */ - } da_un; -}; -#define da_previous da_un.dau_previous -#define da_pagedep da_un.dau_pagedep - -/* - * Two "mkdir" structures are needed to track the additional dependencies - * associated with creating a new directory entry. Normally a directory - * addition can be committed as soon as the newly referenced inode has been - * written to disk with its increased link count. When a directory is - * created there are two additional dependencies: writing the directory - * data block containing the "." and ".." entries (MKDIR_BODY) and writing - * the parent inode with the increased link count for ".." (MKDIR_PARENT). - * These additional dependencies are tracked by two mkdir structures that - * reference the associated "diradd" structure. When they have completed, - * they set the DEPCOMPLETE flag on the diradd so that it knows that its - * extra dependencies have been completed. The md_state field is used only - * to identify which type of dependency the mkdir structure is tracking. - * It is not used in the mainline code for any purpose other than consistency - * checking. All the mkdir structures in the system are linked together on - * a list. This list is needed so that a diradd can find its associated - * mkdir structures and deallocate them if it is prematurely freed (as for - * example if a mkdir is immediately followed by a rmdir of the same directory). - * Here, the free of the diradd must traverse the list to find the associated - * mkdir structures that reference it. The deletion would be faster if the - * diradd structure were simply augmented to have two pointers that referenced - * the associated mkdir's. However, this would increase the size of the diradd - * structure from 32 to 64-bits to speed a very infrequent operation. - */ -struct mkdir { - struct worklist md_list; /* id_inowait or buffer holding dir */ -# define md_state md_list.wk_state /* type: MKDIR_PARENT or MKDIR_BODY */ - struct diradd *md_diradd; /* associated diradd */ - struct buf *md_buf; /* MKDIR_BODY: buffer holding dir */ - LIST_ENTRY(mkdir) md_mkdirs; /* list of all mkdirs */ -}; -LIST_HEAD(mkdirlist, mkdir) mkdirlisthd; - -/* - * A "dirrem" structure describes an operation to decrement the link - * count on an inode. The dirrem structure is attached to the pg_dirremhd - * list of the pagedep for the directory page that contains the entry. - * It is processed after the directory page with the deleted entry has - * been written to disk. - * - * The overlaying of dm_pagedep and dm_dirinum is done to keep the - * structure down to 32 bytes in size on a 32-bit machine. It works - * because they are never used concurrently. - */ -struct dirrem { - struct worklist dm_list; /* delayed worklist */ -# define dm_state dm_list.wk_state /* state of the old directory entry */ - LIST_ENTRY(dirrem) dm_next; /* pagedep's list of dirrem's */ - struct mount *dm_mnt; /* associated mount point */ - ino_t dm_oldinum; /* inum of the removed dir entry */ - union { - struct pagedep *dmu_pagedep; /* pagedep dependency for remove */ - ino_t dmu_dirinum; /* parent inode number (for rmdir) */ - } dm_un; -}; -#define dm_pagedep dm_un.dmu_pagedep -#define dm_dirinum dm_un.dmu_dirinum diff --git a/usr.sbin/memcontrol/Makefile b/usr.sbin/memcontrol/Makefile deleted file mode 100644 index 3d8ffd7cbb66..000000000000 --- a/usr.sbin/memcontrol/Makefile +++ /dev/null @@ -1,4 +0,0 @@ -PROG= memcontrol -NOMAN= yes - -.include <bsd.prog.mk> diff --git a/usr.sbin/ppp/acf.h b/usr.sbin/ppp/acf.h deleted file mode 100644 index ed2d2fe93aa3..000000000000 --- a/usr.sbin/ppp/acf.h +++ /dev/null @@ -1,33 +0,0 @@ -/*- - * Copyright (c) 1999 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id:$ - */ - -struct lcp; - -extern int acf_WrapperOctets(struct lcp *, u_short); - -extern struct layer acflayer; diff --git a/usr.sbin/ppp/proto.h b/usr.sbin/ppp/proto.h deleted file mode 100644 index d98241127284..000000000000 --- a/usr.sbin/ppp/proto.h +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Written by Toshiharu OHNO (tony-o@iij.ad.jp) - * - * Copyright (C) 1993, Internet Initiative Japan, Inc. All rights reserverd. - * - * Redistribution and use in source and binary forms are permitted - * provided that the above copyright notice and this paragraph are - * duplicated in all such forms and that any documentation, - * advertising materials, and other materials related to such - * distribution and use acknowledge that the software was developed - * by the Internet Initiative Japan. The name of the - * IIJ may not be used to endorse or promote products derived - * from this software without specific prior written permission. - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR - * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED - * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. - * - * $Id:$ - */ - -/* - * Definition of protocol numbers - */ -#define PROTO_IP 0x0021 /* IP */ -#define PROTO_VJUNCOMP 0x002f /* VJ Uncompressed */ -#define PROTO_VJCOMP 0x002d /* VJ Compressed */ -#define PROTO_MP 0x003d /* Multilink fragment */ -#define PROTO_ICOMPD 0x00fb /* Individual link compressed */ -#define PROTO_COMPD 0x00fd /* Compressed datagram */ - -#define PROTO_COMPRESSIBLE(p) (((p) & 0xffe1) == 0x21) - -#define PROTO_IPCP 0x8021 -#define PROTO_ICCP 0x80fb -#define PROTO_CCP 0x80fd - -#define PROTO_LCP 0xc021 -#define PROTO_PAP 0xc023 -#define PROTO_CBCP 0xc029 -#define PROTO_LQR 0xc025 -#define PROTO_CHAP 0xc223 - -struct lcp; - -extern int proto_WrapperOctets(struct lcp *, u_short); -struct mbuf *proto_Prepend(struct mbuf *, u_short, unsigned, int); - -extern struct layer protolayer; diff --git a/usr.sbin/ppp/sync.h b/usr.sbin/ppp/sync.h deleted file mode 100644 index 334555d5c152..000000000000 --- a/usr.sbin/ppp/sync.h +++ /dev/null @@ -1,29 +0,0 @@ -/*- - * Copyright (c) 1999 Brian Somers <brian@Awfulhak.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id:$ - */ - -extern struct layer synclayer; diff --git a/usr.sbin/wicontrol/Makefile b/usr.sbin/wicontrol/Makefile deleted file mode 100644 index 971f12cdfef6..000000000000 --- a/usr.sbin/wicontrol/Makefile +++ /dev/null @@ -1,9 +0,0 @@ -# $Id: Makefile,v 1.2 1997/05/23 04:04:15 msmith Exp $ -PROG= wicontrol -SRCS= wicontrol.c - -CFLAGS+= -Wall - -MAN8= wicontrol.8 - -.include <bsd.prog.mk> |