| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328 | /*! * UEditor * version: ueditor * build: Wed Dec 26 2018 17:24:52 GMT+0800 (CST) */!(function () {  function getListener(a, b, c) {    var d    return (      (b = b.toLowerCase()),      (d = a.__allListeners || (c && (a.__allListeners = {}))) &&        (d[b] || (c && (d[b] = [])))    )  }  function getDomNode(a, b, c, d, e, f) {    var g,      h = d && a[b]    for (!h && (h = a[c]); !h && (g = (g || a).parentNode); ) {      if ('BODY' == g.tagName || (f && !f(g))) return null      h = g[c]    }    return h && e && !e(h) ? getDomNode(h, b, c, !1, e) : h  }  UEDITOR_CONFIG = window.UEDITOR_CONFIG || {}  var baidu = window.baidu || {}  ;(window.baidu = baidu),    (window.UE = baidu.editor = window.UE || {}),    (UE.plugins = {}),    (UE.commands = {}),    (UE.instants = {}),    (UE.I18N = {}),    (UE._customizeUI = {}),    (UE.version = '1.4.3')  var dom = (UE.dom = {}),    browser = (UE.browser = (function () {      var a = navigator.userAgent.toLowerCase(),        b = window.opera,        c = {          ie: /(msie\s|trident.*rv:)([\w.]+)/.test(a),          opera: !!b && b.version,          webkit: a.indexOf(' applewebkit/') > -1,          mac: a.indexOf('macintosh') > -1,          quirks: 'BackCompat' == document.compatMode        }      c.gecko = 'Gecko' == navigator.product && !c.webkit && !c.opera && !c.ie      var d = 0      if (c.ie) {        var e = a.match(/(?:msie\s([\w.]+))/),          f = a.match(/(?:trident.*rv:([\w.]+))/)        ;(d =          e && f && e[1] && f[1]            ? Math.max(1 * e[1], 1 * f[1])            : e && e[1]            ? 1 * e[1]            : f && f[1]            ? 1 * f[1]            : 0),          (c.ie11Compat = 11 == document.documentMode),          (c.ie9Compat = 9 == document.documentMode),          (c.ie8 = !!document.documentMode),          (c.ie8Compat = 8 == document.documentMode),          (c.ie7Compat =            (7 == d && !document.documentMode) || 7 == document.documentMode),          (c.ie6Compat = d < 7 || c.quirks),          (c.ie9above = d > 8),          (c.ie9below = d < 9),          (c.ie11above = d > 10),          (c.ie11below = d < 11)      }      if (c.gecko) {        var g = a.match(/rv:([\d\.]+)/)        g &&          ((g = g[1].split('.')),          (d = 1e4 * g[0] + 100 * (g[1] || 0) + 1 * (g[2] || 0)))      }      return (        /chrome\/(\d+\.\d)/i.test(a) && (c.chrome = +RegExp.$1),        /(\d+\.\d)?(?:\.\d)?\s+safari\/?(\d+\.\d+)?/i.test(a) &&          !/chrome/i.test(a) &&          (c.safari = +(RegExp.$1 || RegExp.$2)),        c.opera && (d = parseFloat(b.version())),        c.webkit && (d = parseFloat(a.match(/ applewebkit\/(\d+)/)[1])),        (c.version = d),        (c.isCompatible =          !c.mobile &&          ((c.ie && d >= 6) ||            (c.gecko && d >= 10801) ||            (c.opera && d >= 9.5) ||            (c.air && d >= 1) ||            (c.webkit && d >= 522) ||            !1)),        c      )    })()),    ie = browser.ie,    webkit = browser.webkit,    gecko = browser.gecko,    opera = browser.opera,    utils = (UE.utils = {      each: function (a, b, c) {        if (null != a)          if (a.length === +a.length) {            for (var d = 0, e = a.length; d < e; d++)              if (b.call(c, a[d], d, a) === !1) return !1          } else            for (var f in a)              if (a.hasOwnProperty(f) && b.call(c, a[f], f, a) === !1) return !1      },      makeInstance: function (a) {        var b = new Function()        return (b.prototype = a), (a = new b()), (b.prototype = null), a      },      extend: function (a, b, c) {        if (b) for (var d in b) (c && a.hasOwnProperty(d)) || (a[d] = b[d])        return a      },      extend2: function (a) {        for (var b = arguments, c = 1; c < b.length; c++) {          var d = b[c]          for (var e in d) a.hasOwnProperty(e) || (a[e] = d[e])        }        return a      },      inherits: function (a, b) {        var c = a.prototype,          d = utils.makeInstance(b.prototype)        return utils.extend(d, c, !0), (a.prototype = d), (d.constructor = a)      },      bind: function (a, b) {        return function () {          return a.apply(b, arguments)        }      },      defer: function (a, b, c) {        var d        return function () {          c && clearTimeout(d), (d = setTimeout(a, b))        }      },      indexOf: function (a, b, c) {        var d = -1        return (          (c = this.isNumber(c) ? c : 0),          this.each(a, function (a, e) {            if (e >= c && a === b) return (d = e), !1          }),          d        )      },      removeItem: function (a, b) {        for (var c = 0, d = a.length; c < d; c++)          a[c] === b && (a.splice(c, 1), c--)      },      trim: function (a) {        return a.replace(/(^[ \t\n\r]+)|([ \t\n\r]+$)/g, '')      },      listToMap: function (a) {        if (!a) return {}        a = utils.isArray(a) ? a : a.split(',')        for (var b, c = 0, d = {}; (b = a[c++]); ) d[b.toUpperCase()] = d[b] = 1        return d      },      unhtml: function (a, b) {        return a          ? a.replace(              b || /[&<">'](?:(amp|lt|quot|gt|#39|nbsp|#\d+);)?/g,              function (a, b) {                return b                  ? a                  : {                      '<': '<',                      '&': '&',                      '"': '"',                      '>': '>',                      "'": '''                    }[a]              }            )          : ''      },      unhtmlForUrl: function (a, b) {        return a          ? a.replace(b || /[<">']/g, function (a) {              return {                '<': '<',                '&': '&',                '"': '"',                '>': '>',                "'": '''              }[a]            })          : ''      },      html: function (a) {        return a          ? a.replace(/&((g|l|quo)t|amp|#39|nbsp);/g, function (a) {              return {                '<': '<',                '&': '&',                '"': '"',                '>': '>',                ''': "'",                ' ': ' '              }[a]            })          : ''      },      cssStyleToDomStyle: (function () {        var a = document.createElement('div').style,          b = {            float:              void 0 != a.cssFloat                ? 'cssFloat'                : void 0 != a.styleFloat                ? 'styleFloat'                : 'float'          }        return function (a) {          return (            b[a] ||            (b[a] = a.toLowerCase().replace(/-./g, function (a) {              return a.charAt(1).toUpperCase()            }))          )        }      })(),      loadFile: (function () {        function a(a, c) {          try {            for (var d, e = 0; (d = b[e++]); )              if (d.doc === a && d.url == (c.src || c.href)) return d          } catch (f) {            return null          }        }        var b = []        return function (c, d, e) {          var f = a(c, d)          if (f) return void (f.ready ? e && e() : f.funs.push(e))          if ((b.push({ doc: c, url: d.src || d.href, funs: [e] }), !c.body)) {            var g = []            for (var h in d) 'tag' != h && g.push(h + '="' + d[h] + '"')            return void c.write(              '<' + d.tag + ' ' + g.join(' ') + ' ></' + d.tag + '>'            )          }          if (!d.id || !c.getElementById(d.id)) {            var i = c.createElement(d.tag)            delete d.tag            for (var h in d) i.setAttribute(h, d[h])            ;(i.onload = i.onreadystatechange =              function () {                if (                  !this.readyState ||                  /loaded|complete/.test(this.readyState)                ) {                  if (((f = a(c, d)), f.funs.length > 0)) {                    f.ready = 1                    for (var b; (b = f.funs.pop()); ) b()                  }                  i.onload = i.onreadystatechange = null                }              }),              (i.onerror = function () {                throw Error(                  'The load ' +                    (d.href || d.src) +                    ' fails,check the url settings of file ueditor.config.js '                )              }),              c.getElementsByTagName('head')[0].appendChild(i)          }        }      })(),      isEmptyObject: function (a) {        if (null == a) return !0        if (this.isArray(a) || this.isString(a)) return 0 === a.length        for (var b in a) if (a.hasOwnProperty(b)) return !1        return !0      },      fixColor: function (a, b) {        if (/color/i.test(a) && /rgba?/.test(b)) {          var c = b.split(',')          if (c.length > 3) return ''          b = '#'          for (var d, e = 0; (d = c[e++]); )            (d = parseInt(d.replace(/[^\d]/gi, ''), 10).toString(16)),              (b += 1 == d.length ? '0' + d : d)          b = b.toUpperCase()        }        return b      },      optCss: function (a) {        function b(a, b) {          if (!a) return ''          var c = a.top,            d = a.bottom,            e = a.left,            f = a.right,            g = ''          if (c && e && d && f)            g +=              ';' +              b +              ':' +              (c == d && d == e && e == f                ? c                : c == d && e == f                ? c + ' ' + e                : e == f                ? c + ' ' + e + ' ' + d                : c + ' ' + f + ' ' + d + ' ' + e) +              ';'          else for (var h in a) g += ';' + b + '-' + h + ':' + a[h] + ';'          return g        }        var c, d        return (          (a = a.replace(            /(padding|margin|border)\-([^:]+):([^;]+);?/gi,            function (a, b, e, f) {              if (1 == f.split(' ').length)                switch (b) {                  case 'padding':                    return !c && (c = {}), (c[e] = f), ''                  case 'margin':                    return !d && (d = {}), (d[e] = f), ''                  case 'border':                    return 'initial' == f ? '' : a                }              return a            }          )),          (a += b(c, 'padding') + b(d, 'margin')),          a            .replace(/^[ \n\r\t;]*|[ \n\r\t]*$/, '')            .replace(/;([ \n\r\t]+)|\1;/g, ';')            .replace(/(&((l|g)t|quot|#39))?;{2,}/g, function (a, b) {              return b ? b + ';;' : ';'            })        )      },      clone: function (a, b) {        var c        b = b || {}        for (var d in a)          a.hasOwnProperty(d) &&            ((c = a[d]),            'object' == typeof c              ? ((b[d] = utils.isArray(c) ? [] : {}), utils.clone(a[d], b[d]))              : (b[d] = c))        return b      },      transUnitToPx: function (a) {        if (!/(pt|cm)/.test(a)) return a        var b        switch (          (a.replace(/([\d.]+)(\w+)/, function (c, d, e) {            ;(a = d), (b = e)          }),          b)        ) {          case 'cm':            a = 25 * parseFloat(a)            break          case 'pt':            a = Math.round((96 * parseFloat(a)) / 72)        }        return a + (a ? 'px' : '')      },      domReady: (function () {        function a(a) {          a.isReady = !0          for (var c; (c = b.pop()); c());        }        var b = []        return function (c, d) {          d = d || window          var e = d.document          c && b.push(c),            'complete' === e.readyState              ? a(e)              : (e.isReady && a(e),                browser.ie && 11 != browser.version                  ? (!(function () {                      if (!e.isReady) {                        try {                          e.documentElement.doScroll('left')                        } catch (b) {                          return void setTimeout(arguments.callee, 0)                        }                        a(e)                      }                    })(),                    d.attachEvent('onload', function () {                      a(e)                    }))                  : (e.addEventListener(                      'DOMContentLoaded',                      function () {                        e.removeEventListener(                          'DOMContentLoaded',                          arguments.callee,                          !1                        ),                          a(e)                      },                      !1                    ),                    d.addEventListener(                      'load',                      function () {                        a(e)                      },                      !1                    )))        }      })(),      cssRule:        browser.ie && 11 != browser.version          ? function (a, b, c) {              var d, e              if (void 0 === b || (b && b.nodeType && 9 == b.nodeType)) {                if (                  ((c = b && b.nodeType && 9 == b.nodeType ? b : c || document),                  (d = c.indexList || (c.indexList = {})),                  (e = d[a]),                  void 0 !== e)                )                  return c.styleSheets[e].cssText              } else {                if (                  ((c = c || document),                  (d = c.indexList || (c.indexList = {})),                  (e = d[a]),                  '' === b)                )                  return (                    void 0 !== e &&                    ((c.styleSheets[e].cssText = ''), delete d[a], !0)                  )                void 0 !== e                  ? (sheetStyle = c.styleSheets[e])                  : ((sheetStyle = c.createStyleSheet(                      '',                      (e = c.styleSheets.length)                    )),                    (d[a] = e)),                  (sheetStyle.cssText = b)              }            }          : function (a, b, c) {              var d              return void 0 === b || (b && b.nodeType && 9 == b.nodeType)                ? ((c = b && b.nodeType && 9 == b.nodeType ? b : c || document),                  (d = c.getElementById(a)),                  d ? d.innerHTML : void 0)                : ((c = c || document),                  (d = c.getElementById(a)),                  '' === b                    ? !!d && (d.parentNode.removeChild(d), !0)                    : void (d                        ? (d.innerHTML = b)                        : ((d = c.createElement('style')),                          (d.id = a),                          (d.innerHTML = b),                          c.getElementsByTagName('head')[0].appendChild(d))))            },      sort: function (a, b) {        b =          b ||          function (a, b) {            return a.localeCompare(b)          }        for (var c = 0, d = a.length; c < d; c++)          for (var e = c, f = a.length; e < f; e++)            if (b(a[c], a[e]) > 0) {              var g = a[c]              ;(a[c] = a[e]), (a[e] = g)            }        return a      },      serializeParam: function (a) {        var b = []        for (var c in a)          if ('method' != c && 'timeout' != c && 'async' != c)            if (              'function' != (typeof a[c]).toLowerCase() &&              'object' != (typeof a[c]).toLowerCase()            )              b.push(encodeURIComponent(c) + '=' + encodeURIComponent(a[c]))            else if (utils.isArray(a[c]))              for (var d = 0; d < a[c].length; d++)                b.push(                  encodeURIComponent(c) + '[]=' + encodeURIComponent(a[c][d])                )        return b.join('&')      },      formatUrl: function (a) {        var b = a.replace(/&&/g, '&')        return (          (b = b.replace(/\?&/g, '?')),          (b = b.replace(/&$/g, '')),          (b = b.replace(/&#/g, '#')),          (b = b.replace(/&+/g, '&'))        )      },      isCrossDomainUrl: function (a) {        var b = document.createElement('a')        return (          (b.href = a),          browser.ie && (b.href = b.href),          !(            b.protocol == location.protocol &&            b.hostname == location.hostname &&            (b.port == location.port ||              ('80' == b.port && '' == location.port) ||              ('' == b.port && '80' == location.port))          )        )      },      clearEmptyAttrs: function (a) {        for (var b in a) '' === a[b] && delete a[b]        return a      },      str2json: function (a) {        return utils.isString(a)          ? window.JSON            ? JSON.parse(a)            : new Function('return ' + utils.trim(a || ''))()          : null      },      json2str: (function () {        function a(a) {          return (            /["\\\x00-\x1f]/.test(a) &&              (a = a.replace(/["\\\x00-\x1f]/g, function (a) {                var b = e[a]                return b                  ? b                  : ((b = a.charCodeAt()),                    '\\u00' +                      Math.floor(b / 16).toString(16) +                      (b % 16).toString(16))              })),            '"' + a + '"'          )        }        function b(a) {          var b,            c,            d,            e = ['['],            f = a.length          for (c = 0; c < f; c++)            switch (((d = a[c]), typeof d)) {              case 'undefined':              case 'function':              case 'unknown':                break              default:                b && e.push(','), e.push(utils.json2str(d)), (b = 1)            }          return e.push(']'), e.join('')        }        function c(a) {          return a < 10 ? '0' + a : a        }        function d(a) {          return (            '"' +            a.getFullYear() +            '-' +            c(a.getMonth() + 1) +            '-' +            c(a.getDate()) +            'T' +            c(a.getHours()) +            ':' +            c(a.getMinutes()) +            ':' +            c(a.getSeconds()) +            '"'          )        }        if (window.JSON) return JSON.stringify        var e = {          '\b': '\\b',          '\t': '\\t',          '\n': '\\n',          '\f': '\\f',          '\r': '\\r',          '"': '\\"',          '\\': '\\\\'        }        return function (c) {          switch (typeof c) {            case 'undefined':              return 'undefined'            case 'number':              return isFinite(c) ? String(c) : 'null'            case 'string':              return a(c)            case 'boolean':              return String(c)            default:              if (null === c) return 'null'              if (utils.isArray(c)) return b(c)              if (utils.isDate(c)) return d(c)              var e,                f,                g = ['{'],                h = utils.json2str              for (var i in c)                if (Object.prototype.hasOwnProperty.call(c, i))                  switch (((f = c[i]), typeof f)) {                    case 'undefined':                    case 'unknown':                    case 'function':                      break                    default:                      e && g.push(','), (e = 1), g.push(h(i) + ':' + h(f))                  }              return g.push('}'), g.join('')          }        }      })()    })  utils.each(    ['String', 'Function', 'Array', 'Number', 'RegExp', 'Object', 'Date'],    function (a) {      UE.utils['is' + a] = function (b) {        return Object.prototype.toString.apply(b) == '[object ' + a + ']'      }    }  )  var EventBase = (UE.EventBase = function () {})  EventBase.prototype = {    addListener: function (a, b) {      a = utils.trim(a).split(/\s+/)      for (var c, d = 0; (c = a[d++]); ) getListener(this, c, !0).push(b)    },    on: function (a, b) {      return this.addListener(a, b)    },    off: function (a, b) {      return this.removeListener(a, b)    },    trigger: function () {      return this.fireEvent.apply(this, arguments)    },    removeListener: function (a, b) {      a = utils.trim(a).split(/\s+/)      for (var c, d = 0; (c = a[d++]); )        utils.removeItem(getListener(this, c) || [], b)    },    fireEvent: function () {      var a = arguments[0]      a = utils.trim(a).split(' ')      for (var b, c = 0; (b = a[c++]); ) {        var d,          e,          f,          g = getListener(this, b)        if (g)          for (f = g.length; f--; )            if (g[f]) {              if (((e = g[f].apply(this, arguments)), e === !0)) return e              void 0 !== e && (d = e)            }        ;(e = this['on' + b.toLowerCase()]) && (d = e.apply(this, arguments))      }      return d    }  }  var dtd = (dom.dtd = (function () {      function a(a) {        for (var b in a) a[b.toUpperCase()] = a[b]        return a      }      var b = utils.extend2,        c = a({ isindex: 1, fieldset: 1 }),        d = a({ input: 1, button: 1, select: 1, textarea: 1, label: 1 }),        e = b(a({ a: 1 }), d),        f = b({ iframe: 1 }, e),        g = a({          hr: 1,          ul: 1,          menu: 1,          div: 1,          blockquote: 1,          noscript: 1,          table: 1,          center: 1,          address: 1,          dir: 1,          pre: 1,          h5: 1,          dl: 1,          h4: 1,          noframes: 1,          h6: 1,          ol: 1,          h1: 1,          h3: 1,          h2: 1        }),        h = a({ ins: 1, del: 1, script: 1, style: 1 }),        i = b(          a({            b: 1,            acronym: 1,            bdo: 1,            var: 1,            '#': 1,            abbr: 1,            code: 1,            br: 1,            i: 1,            cite: 1,            kbd: 1,            u: 1,            strike: 1,            s: 1,            tt: 1,            strong: 1,            q: 1,            samp: 1,            em: 1,            dfn: 1,            span: 1          }),          h        ),        j = b(          a({            sub: 1,            img: 1,            embed: 1,            object: 1,            sup: 1,            basefont: 1,            map: 1,            applet: 1,            font: 1,            big: 1,            small: 1          }),          i        ),        k = b(a({ p: 1 }), j),        l = b(a({ iframe: 1 }), j, d),        m = a({          img: 1,          embed: 1,          noscript: 1,          br: 1,          kbd: 1,          center: 1,          button: 1,          basefont: 1,          h5: 1,          h4: 1,          samp: 1,          h6: 1,          ol: 1,          h1: 1,          h3: 1,          h2: 1,          form: 1,          font: 1,          '#': 1,          select: 1,          menu: 1,          ins: 1,          abbr: 1,          label: 1,          code: 1,          table: 1,          script: 1,          cite: 1,          input: 1,          iframe: 1,          strong: 1,          textarea: 1,          noframes: 1,          big: 1,          small: 1,          span: 1,          hr: 1,          sub: 1,          bdo: 1,          var: 1,          div: 1,          object: 1,          sup: 1,          strike: 1,          dir: 1,          map: 1,          dl: 1,          applet: 1,          del: 1,          isindex: 1,          fieldset: 1,          ul: 1,          b: 1,          acronym: 1,          a: 1,          blockquote: 1,          i: 1,          u: 1,          s: 1,          tt: 1,          address: 1,          q: 1,          pre: 1,          p: 1,          em: 1,          dfn: 1        }),        n = b(a({ a: 0 }), l),        o = a({ tr: 1 }),        p = a({ '#': 1 }),        q = b(a({ param: 1 }), m),        r = b(a({ form: 1 }), c, f, g, k),        s = a({ li: 1, ol: 1, ul: 1 }),        t = a({ style: 1, script: 1 }),        u = a({ base: 1, link: 1, meta: 1, title: 1 }),        v = b(u, t),        w = a({ head: 1, body: 1 }),        x = a({ html: 1 }),        y = a({          address: 1,          blockquote: 1,          center: 1,          dir: 1,          div: 1,          dl: 1,          fieldset: 1,          form: 1,          h1: 1,          h2: 1,          h3: 1,          h4: 1,          h5: 1,          h6: 1,          hr: 1,          isindex: 1,          menu: 1,          noframes: 1,          ol: 1,          p: 1,          pre: 1,          table: 1,          ul: 1        }),        z = a({          area: 1,          base: 1,          basefont: 1,          br: 1,          col: 1,          command: 1,          dialog: 1,          embed: 1,          hr: 1,          img: 1,          input: 1,          isindex: 1,          keygen: 1,          link: 1,          meta: 1,          param: 1,          source: 1,          track: 1,          wbr: 1        })      return a({        $nonBodyContent: b(x, w, u),        $block: y,        $inline: n,        $inlineWithA: b(a({ a: 1 }), n),        $body: b(a({ script: 1, style: 1 }), y),        $cdata: a({ script: 1, style: 1 }),        $empty: z,        $nonChild: a({ iframe: 1, textarea: 1 }),        $listItem: a({ dd: 1, dt: 1, li: 1 }),        $list: a({ ul: 1, ol: 1, dl: 1 }),        $isNotEmpty: a({          table: 1,          ul: 1,          ol: 1,          dl: 1,          iframe: 1,          area: 1,          base: 1,          col: 1,          hr: 1,          img: 1,          embed: 1,          input: 1,          link: 1,          meta: 1,          param: 1,          h1: 1,          h2: 1,          h3: 1,          h4: 1,          h5: 1,          h6: 1        }),        $removeEmpty: a({          a: 1,          abbr: 1,          acronym: 1,          address: 1,          b: 1,          bdo: 1,          big: 1,          cite: 1,          code: 1,          del: 1,          dfn: 1,          em: 1,          font: 1,          i: 1,          ins: 1,          label: 1,          kbd: 1,          q: 1,          s: 1,          samp: 1,          small: 1,          span: 1,          strike: 1,          strong: 1,          sub: 1,          sup: 1,          tt: 1,          u: 1,          var: 1        }),        $removeEmptyBlock: a({ p: 1, div: 1 }),        $tableContent: a({          caption: 1,          col: 1,          colgroup: 1,          tbody: 1,          td: 1,          tfoot: 1,          th: 1,          thead: 1,          tr: 1,          table: 1        }),        $notTransContent: a({ pre: 1, script: 1, style: 1, textarea: 1 }),        html: w,        head: v,        style: p,        script: p,        body: r,        base: {},        link: {},        meta: {},        title: p,        col: {},        tr: a({ td: 1, th: 1 }),        img: {},        embed: {},        colgroup: a({ thead: 1, col: 1, tbody: 1, tr: 1, tfoot: 1 }),        noscript: r,        td: r,        br: {},        th: r,        center: r,        kbd: n,        button: b(k, g),        basefont: {},        h5: n,        h4: n,        samp: n,        h6: n,        ol: s,        h1: n,        h3: n,        option: p,        h2: n,        form: b(c, f, g, k),        select: a({ optgroup: 1, option: 1 }),        font: n,        ins: n,        menu: s,        abbr: n,        label: n,        table: a({          thead: 1,          col: 1,          tbody: 1,          tr: 1,          colgroup: 1,          caption: 1,          tfoot: 1        }),        code: n,        tfoot: o,        cite: n,        li: r,        input: {},        iframe: r,        strong: n,        textarea: p,        noframes: r,        big: n,        small: n,        span: a({          '#': 1,          br: 1,          b: 1,          strong: 1,          u: 1,          i: 1,          em: 1,          sub: 1,          sup: 1,          strike: 1,          span: 1        }),        hr: n,        dt: n,        sub: n,        optgroup: a({ option: 1 }),        param: {},        bdo: n,        var: n,        div: r,        object: q,        sup: n,        dd: r,        strike: n,        area: {},        dir: s,        map: b(a({ area: 1, form: 1, p: 1 }), c, h, g),        applet: q,        dl: a({ dt: 1, dd: 1 }),        del: n,        isindex: {},        fieldset: b(a({ legend: 1 }), m),        thead: o,        ul: s,        acronym: n,        b: n,        a: b(a({ a: 1 }), l),        blockquote: b(a({ td: 1, tr: 1, tbody: 1, li: 1 }), r),        caption: n,        i: n,        u: n,        tbody: o,        s: n,        address: b(f, k),        tt: n,        legend: n,        q: n,        pre: b(i, e),        p: b(a({ a: 1 }), n),        em: n,        dfn: n      })    })()),    attrFix =      ie && browser.version < 9        ? {            tabindex: 'tabIndex',            readonly: 'readOnly',            for: 'htmlFor',            class: 'className',            maxlength: 'maxLength',            cellspacing: 'cellSpacing',            cellpadding: 'cellPadding',            rowspan: 'rowSpan',            colspan: 'colSpan',            usemap: 'useMap',            frameborder: 'frameBorder'          }        : { tabindex: 'tabIndex', readonly: 'readOnly' },    styleBlock = utils.listToMap([      '-webkit-box',      '-moz-box',      'block',      'list-item',      'table',      'table-row-group',      'table-header-group',      'table-footer-group',      'table-row',      'table-column-group',      'table-column',      'table-cell',      'table-caption'    ]),    domUtils = (dom.domUtils = {      NODE_ELEMENT: 1,      NODE_DOCUMENT: 9,      NODE_TEXT: 3,      NODE_COMMENT: 8,      NODE_DOCUMENT_FRAGMENT: 11,      POSITION_IDENTICAL: 0,      POSITION_DISCONNECTED: 1,      POSITION_FOLLOWING: 2,      POSITION_PRECEDING: 4,      POSITION_IS_CONTAINED: 8,      POSITION_CONTAINS: 16,      fillChar: ie && '6' == browser.version ? '\ufeff' : '',      keys: {        8: 1,        46: 1,        16: 1,        17: 1,        18: 1,        37: 1,        38: 1,        39: 1,        40: 1,        13: 1      },      getPosition: function (a, b) {        if (a === b) return 0        var c,          d = [a],          e = [b]        for (c = a; (c = c.parentNode); ) {          if (c === b) return 10          d.push(c)        }        for (c = b; (c = c.parentNode); ) {          if (c === a) return 20          e.push(c)        }        if ((d.reverse(), e.reverse(), d[0] !== e[0])) return 1        for (var f = -1; f++, d[f] === e[f]; );        for (a = d[f], b = e[f]; (a = a.nextSibling); ) if (a === b) return 4        return 2      },      getNodeIndex: function (a, b) {        for (var c = a, d = 0; (c = c.previousSibling); )          b && 3 == c.nodeType            ? c.nodeType != c.nextSibling.nodeType && d++            : d++        return d      },      inDoc: function (a, b) {        return 10 == domUtils.getPosition(a, b)      },      findParent: function (a, b, c) {        if (a && !domUtils.isBody(a))          for (a = c ? a : a.parentNode; a; ) {            if (!b || b(a) || domUtils.isBody(a))              return b && !b(a) && domUtils.isBody(a) ? null : a            a = a.parentNode          }        return null      },      findParentByTagName: function (a, b, c, d) {        return (          (b = utils.listToMap(utils.isArray(b) ? b : [b])),          domUtils.findParent(            a,            function (a) {              return b[a.tagName] && !(d && d(a))            },            c          )        )      },      findParents: function (a, b, c, d) {        for (          var e = b && ((c && c(a)) || !c) ? [a] : [];          (a = domUtils.findParent(a, c));        )          e.push(a)        return d ? e : e.reverse()      },      insertAfter: function (a, b) {        return a.nextSibling          ? a.parentNode.insertBefore(b, a.nextSibling)          : a.parentNode.appendChild(b)      },      remove: function (a, b) {        var c,          d = a.parentNode        if (d) {          if (b && a.hasChildNodes())            for (; (c = a.firstChild); ) d.insertBefore(c, a)          d.removeChild(a)        }        return a      },      getNextDomNode: function (a, b, c, d) {        return getDomNode(a, 'firstChild', 'nextSibling', b, c, d)      },      getPreDomNode: function (a, b, c, d) {        return getDomNode(a, 'lastChild', 'previousSibling', b, c, d)      },      isBookmarkNode: function (a) {        return 1 == a.nodeType && a.id && /^_baidu_bookmark_/i.test(a.id)      },      getWindow: function (a) {        var b = a.ownerDocument || a        return b.defaultView || b.parentWindow      },      getCommonAncestor: function (a, b) {        if (a === b) return a        for (var c = [a], d = [b], e = a, f = -1; (e = e.parentNode); ) {          if (e === b) return e          c.push(e)        }        for (e = b; (e = e.parentNode); ) {          if (e === a) return e          d.push(e)        }        for (c.reverse(), d.reverse(); f++, c[f] === d[f]; );        return 0 == f ? null : c[f - 1]      },      clearEmptySibling: function (a, b, c) {        function d(a, b) {          for (            var c;            a &&            !domUtils.isBookmarkNode(a) &&            (domUtils.isEmptyInlineElement(a) ||              !new RegExp('[^\t\n\r' + domUtils.fillChar + ']').test(                a.nodeValue              ));          )            (c = a[b]), domUtils.remove(a), (a = c)        }        !b && d(a.nextSibling, 'nextSibling'),          !c && d(a.previousSibling, 'previousSibling')      },      split: function (a, b) {        var c = a.ownerDocument        if (browser.ie && b == a.nodeValue.length) {          var d = c.createTextNode('')          return domUtils.insertAfter(a, d)        }        var e = a.splitText(b)        if (browser.ie8) {          var f = c.createTextNode('')          domUtils.insertAfter(e, f), domUtils.remove(f)        }        return e      },      isWhitespace: function (a) {        return !new RegExp('[^ \t\n\r' + domUtils.fillChar + ']').test(          a.nodeValue        )      },      getXY: function (a) {        for (var b = 0, c = 0; a.offsetParent; )          (c += a.offsetTop), (b += a.offsetLeft), (a = a.offsetParent)        return { x: b, y: c }      },      on: function (a, b, c) {        var d = utils.isArray(b) ? b : utils.trim(b).split(/\s+/),          e = d.length        if (e)          for (; e--; )            if (((b = d[e]), a.addEventListener)) a.addEventListener(b, c, !1)            else {              c._d || (c._d = { els: [] })              var f = b + c.toString(),                g = utils.indexOf(c._d.els, a)              ;(c._d[f] && g != -1) ||                (g == -1 && c._d.els.push(a),                c._d[f] ||                  (c._d[f] = function (a) {                    return c.call(a.srcElement, a || window.event)                  }),                a.attachEvent('on' + b, c._d[f]))            }        a = null      },      un: function (a, b, c) {        var d = utils.isArray(b) ? b : utils.trim(b).split(/\s+/),          e = d.length        if (e)          for (; e--; )            if (((b = d[e]), a.removeEventListener))              a.removeEventListener(b, c, !1)            else {              var f = b + c.toString()              try {                a.detachEvent('on' + b, c._d ? c._d[f] : c)              } catch (g) {}              if (c._d && c._d[f]) {                var h = utils.indexOf(c._d.els, a)                h != -1 && c._d.els.splice(h, 1),                  0 == c._d.els.length && delete c._d[f]              }            }      },      isSameElement: function (a, b) {        if (a.tagName != b.tagName) return !1        var c = a.attributes,          d = b.attributes        if (!ie && c.length != d.length) return !1        for (var e, f, g = 0, h = 0, i = 0; (e = c[i++]); ) {          if ('style' == e.nodeName) {            if ((e.specified && g++, domUtils.isSameStyle(a, b))) continue            return !1          }          if (ie) {            if (!e.specified) continue            g++, (f = d.getNamedItem(e.nodeName))          } else f = b.attributes[e.nodeName]          if (!f.specified || e.nodeValue != f.nodeValue) return !1        }        if (ie) {          for (i = 0; (f = d[i++]); ) f.specified && h++          if (g != h) return !1        }        return !0      },      isSameStyle: function (a, b) {        var c = a.style.cssText            .replace(/( ?; ?)/g, ';')            .replace(/( ?: ?)/g, ':'),          d = b.style.cssText.replace(/( ?; ?)/g, ';').replace(/( ?: ?)/g, ':')        if (browser.opera) {          if (((c = a.style), (d = b.style), c.length != d.length)) return !1          for (var e in c)            if (!/^(\d+|csstext)$/i.test(e) && c[e] != d[e]) return !1          return !0        }        if (!c || !d) return c == d        if (((c = c.split(';')), (d = d.split(';')), c.length != d.length))          return !1        for (var f, g = 0; (f = c[g++]); )          if (utils.indexOf(d, f) == -1) return !1        return !0      },      isBlockElm: function (a) {        return (          1 == a.nodeType &&          (dtd.$block[a.tagName] ||            styleBlock[domUtils.getComputedStyle(a, 'display')]) &&          !dtd.$nonChild[a.tagName]        )      },      isBody: function (a) {        return a && 1 == a.nodeType && 'body' == a.tagName.toLowerCase()      },      breakParent: function (a, b) {        var c,          d,          e,          f = a,          g = a        do {          for (            f = f.parentNode,              d                ? ((c = f.cloneNode(!1)),                  c.appendChild(d),                  (d = c),                  (c = f.cloneNode(!1)),                  c.appendChild(e),                  (e = c))                : ((d = f.cloneNode(!1)), (e = d.cloneNode(!1)));            (c = g.previousSibling);          )            d.insertBefore(c, d.firstChild)          for (; (c = g.nextSibling); ) e.appendChild(c)          g = f        } while (b !== f)        return (          (c = b.parentNode),          c.insertBefore(d, b),          c.insertBefore(e, b),          c.insertBefore(a, e),          domUtils.remove(b),          a        )      },      isEmptyInlineElement: function (a) {        if (1 != a.nodeType || !dtd.$removeEmpty[a.tagName]) return 0        for (a = a.firstChild; a; ) {          if (domUtils.isBookmarkNode(a)) return 0          if (            (1 == a.nodeType && !domUtils.isEmptyInlineElement(a)) ||            (3 == a.nodeType && !domUtils.isWhitespace(a))          )            return 0          a = a.nextSibling        }        return 1      },      trimWhiteTextNode: function (a) {        function b(b) {          for (            var c;            (c = a[b]) && 3 == c.nodeType && domUtils.isWhitespace(c);          )            a.removeChild(c)        }        b('firstChild'), b('lastChild')      },      mergeChild: function (a, b, c) {        for (          var d,            e = domUtils.getElementsByTagName(a, a.tagName.toLowerCase()),            f = 0;          (d = e[f++]);        )          if (d.parentNode && !domUtils.isBookmarkNode(d))            if ('span' != d.tagName.toLowerCase())              domUtils.isSameElement(a, d) && domUtils.remove(d, !0)            else {              if (                a === d.parentNode &&                (domUtils.trimWhiteTextNode(a), 1 == a.childNodes.length)              ) {                ;(a.style.cssText = d.style.cssText + ';' + a.style.cssText),                  domUtils.remove(d, !0)                continue              }              if (                ((d.style.cssText = a.style.cssText + ';' + d.style.cssText), c)              ) {                var g = c.style                if (g) {                  g = g.split(';')                  for (var h, i = 0; (h = g[i++]); )                    d.style[utils.cssStyleToDomStyle(h.split(':')[0])] =                      h.split(':')[1]                }              }              domUtils.isSameStyle(d, a) && domUtils.remove(d, !0)            }      },      getElementsByTagName: function (a, b, c) {        if (c && utils.isString(c)) {          var d = c          c = function (a) {            return domUtils.hasClass(a, d)          }        }        b = utils          .trim(b)          .replace(/[ ]{2,}/g, ' ')          .split(' ')        for (var e, f = [], g = 0; (e = b[g++]); )          for (var h, i = a.getElementsByTagName(e), j = 0; (h = i[j++]); )            (c && !c(h)) || f.push(h)        return f      },      mergeToParent: function (a) {        for (var b = a.parentNode; b && dtd.$removeEmpty[b.tagName]; ) {          if (b.tagName == a.tagName || 'A' == b.tagName) {            if (              (domUtils.trimWhiteTextNode(b),              ('SPAN' == b.tagName && !domUtils.isSameStyle(b, a)) ||                ('A' == b.tagName && 'SPAN' == a.tagName))            ) {              if (b.childNodes.length > 1 || b !== a.parentNode) {                ;(a.style.cssText = b.style.cssText + ';' + a.style.cssText),                  (b = b.parentNode)                continue              }              ;(b.style.cssText += ';' + a.style.cssText),                'A' == b.tagName && (b.style.textDecoration = 'underline')            }            if ('A' != b.tagName) {              b === a.parentNode && domUtils.remove(a, !0)              break            }          }          b = b.parentNode        }      },      mergeSibling: function (a, b, c) {        function d(a, b, c) {          var d          if (            (d = c[a]) &&            !domUtils.isBookmarkNode(d) &&            1 == d.nodeType &&            domUtils.isSameElement(c, d)          ) {            for (; d.firstChild; )              'firstChild' == b                ? c.insertBefore(d.lastChild, c.firstChild)                : c.appendChild(d.firstChild)            domUtils.remove(d)          }        }        !b && d('previousSibling', 'firstChild', a),          !c && d('nextSibling', 'lastChild', a)      },      unSelectable:        (ie && browser.ie9below) || browser.opera          ? function (a) {              ;(a.onselectstart = function () {                return !1              }),                (a.onclick =                  a.onkeyup =                  a.onkeydown =                    function () {                      return !1                    }),                (a.unselectable = 'on'),                a.setAttribute('unselectable', 'on')              for (var b, c = 0; (b = a.all[c++]); )                switch (b.tagName.toLowerCase()) {                  case 'iframe':                  case 'textarea':                  case 'input':                  case 'select':                    break                  default:                    ;(b.unselectable = 'on'),                      a.setAttribute('unselectable', 'on')                }            }          : function (a) {              a.style.MozUserSelect =                a.style.webkitUserSelect =                a.style.msUserSelect =                a.style.KhtmlUserSelect =                  'none'            },      removeAttributes: function (a, b) {        b = utils.isArray(b)          ? b          : utils              .trim(b)              .replace(/[ ]{2,}/g, ' ')              .split(' ')        for (var c, d = 0; (c = b[d++]); ) {          switch ((c = attrFix[c] || c)) {            case 'className':              a[c] = ''              break            case 'style':              a.style.cssText = ''              var e = a.getAttributeNode('style')              !browser.ie && e && a.removeAttributeNode(e)          }          a.removeAttribute(c)        }      },      createElement: function (a, b, c) {        return domUtils.setAttributes(a.createElement(b), c)      },      setAttributes: function (a, b) {        for (var c in b)          if (b.hasOwnProperty(c)) {            var d = b[c]            switch (c) {              case 'class':                a.className = d                break              case 'style':                a.style.cssText = a.style.cssText + ';' + d                break              case 'innerHTML':                a[c] = d                break              case 'value':                a.value = d                break              default:                a.setAttribute(attrFix[c] || c, d)            }          }        return a      },      getComputedStyle: function (a, b) {        var c = 'width height top left'        if (c.indexOf(b) > -1)          return (            a[              'offset' +                b.replace(/^\w/, function (a) {                  return a.toUpperCase()                })            ] + 'px'          )        if (          (3 == a.nodeType && (a = a.parentNode),          browser.ie &&            browser.version < 9 &&            'font-size' == b &&            !a.style.fontSize &&            !dtd.$empty[a.tagName] &&            !dtd.$nonChild[a.tagName])        ) {          var d = a.ownerDocument.createElement('span')          ;(d.style.cssText = 'padding:0;border:0;font-family:simsun;'),            (d.innerHTML = '.'),            a.appendChild(d)          var e = d.offsetHeight          return a.removeChild(d), (d = null), e + 'px'        }        try {          var f =            domUtils.getStyle(a, b) ||            (window.getComputedStyle              ? domUtils                  .getWindow(a)                  .getComputedStyle(a, '')                  .getPropertyValue(b)              : (a.currentStyle || a.style)[utils.cssStyleToDomStyle(b)])        } catch (g) {          return ''        }        return utils.transUnitToPx(utils.fixColor(b, f))      },      removeClasses: function (a, b) {        b = utils.isArray(b)          ? b          : utils              .trim(b)              .replace(/[ ]{2,}/g, ' ')              .split(' ')        for (var c, d = 0, e = a.className; (c = b[d++]); )          e = e.replace(new RegExp('\\b' + c + '\\b'), '')        ;(e = utils.trim(e).replace(/[ ]{2,}/g, ' ')),          e ? (a.className = e) : domUtils.removeAttributes(a, ['class'])      },      addClass: function (a, b) {        if (a) {          b = utils            .trim(b)            .replace(/[ ]{2,}/g, ' ')            .split(' ')          for (var c, d = 0, e = a.className; (c = b[d++]); )            new RegExp('\\b' + c + '\\b').test(e) || (e += ' ' + c)          a.className = utils.trim(e)        }      },      hasClass: function (a, b) {        if (utils.isRegExp(b)) return b.test(a.className)        b = utils          .trim(b)          .replace(/[ ]{2,}/g, ' ')          .split(' ')        for (var c, d = 0, e = a.className; (c = b[d++]); )          if (!new RegExp('\\b' + c + '\\b', 'i').test(e)) return !1        return d - 1 == b.length      },      preventDefault: function (a) {        a.preventDefault ? a.preventDefault() : (a.returnValue = !1)      },      removeStyle: function (a, b) {        browser.ie          ? ('color' == b && (b = '(^|;)' + b),            (a.style.cssText = a.style.cssText.replace(              new RegExp(b + '[^:]*:[^;]+;?', 'ig'),              ''            )))          : a.style.removeProperty          ? a.style.removeProperty(b)          : a.style.removeAttribute(utils.cssStyleToDomStyle(b)),          a.style.cssText || domUtils.removeAttributes(a, ['style'])      },      getStyle: function (a, b) {        var c = a.style[utils.cssStyleToDomStyle(b)]        return utils.fixColor(b, c)      },      setStyle: function (a, b, c) {        ;(a.style[utils.cssStyleToDomStyle(b)] = c),          utils.trim(a.style.cssText) || this.removeAttributes(a, 'style')      },      setStyles: function (a, b) {        for (var c in b) b.hasOwnProperty(c) && domUtils.setStyle(a, c, b[c])      },      removeDirtyAttr: function (a) {        for (var b, c = 0, d = a.getElementsByTagName('*'); (b = d[c++]); )          b.removeAttribute('_moz_dirty')        a.removeAttribute('_moz_dirty')      },      getChildCount: function (a, b) {        var c = 0,          d = a.firstChild        for (          b =            b ||            function () {              return 1            };          d;        )          b(d) && c++, (d = d.nextSibling)        return c      },      isEmptyNode: function (a) {        return (          !a.firstChild ||          0 ==            domUtils.getChildCount(a, function (a) {              return (                !domUtils.isBr(a) &&                !domUtils.isBookmarkNode(a) &&                !domUtils.isWhitespace(a)              )            })        )      },      clearSelectedArr: function (a) {        for (var b; (b = a.pop()); ) domUtils.removeAttributes(b, ['class'])      },      scrollToView: function (a, b, c) {        var d = function () {            var a = b.document,              c = 'CSS1Compat' == a.compatMode            return {              width:                (c ? a.documentElement.clientWidth : a.body.clientWidth) || 0,              height:                (c ? a.documentElement.clientHeight : a.body.clientHeight) || 0            }          },          e = function (a) {            if ('pageXOffset' in a)              return { x: a.pageXOffset || 0, y: a.pageYOffset || 0 }            var b = a.document            return {              x: b.documentElement.scrollLeft || b.body.scrollLeft || 0,              y: b.documentElement.scrollTop || b.body.scrollTop || 0            }          },          f = d().height,          g = f * -1 + c        g += a.offsetHeight || 0        var h = domUtils.getXY(a)        g += h.y        var i = e(b).y        ;(g > i || g < i - f) && b.scrollTo(0, g + (g < 0 ? -20 : 20))      },      isBr: function (a) {        return 1 == a.nodeType && 'BR' == a.tagName      },      isFillChar: function (a, b) {        if (3 != a.nodeType) return !1        var c = a.nodeValue        return b          ? new RegExp('^' + domUtils.fillChar).test(c)          : !c.replace(new RegExp(domUtils.fillChar, 'g'), '').length      },      isStartInblock: function (a) {        var b,          c = a.cloneRange(),          d = 0,          e = c.startContainer        if (1 == e.nodeType && e.childNodes[c.startOffset]) {          e = e.childNodes[c.startOffset]          for (var f = e.previousSibling; f && domUtils.isFillChar(f); )            (e = f), (f = f.previousSibling)        }        for (          this.isFillChar(e, !0) &&          1 == c.startOffset &&          (c.setStartBefore(e), (e = c.startContainer));          e && domUtils.isFillChar(e);        )          (b = e), (e = e.previousSibling)        for (          b && (c.setStartBefore(b), (e = c.startContainer)),            1 == e.nodeType &&              domUtils.isEmptyNode(e) &&              1 == c.startOffset &&              c.setStart(e, 0).collapse(!0);          !c.startOffset;        ) {          if (            ((e = c.startContainer),            domUtils.isBlockElm(e) || domUtils.isBody(e))          ) {            d = 1            break          }          var g,            f = c.startContainer.previousSibling          if (f) {            for (; f && domUtils.isFillChar(f); )              (g = f), (f = f.previousSibling)            g ? c.setStartBefore(g) : c.setStartBefore(c.startContainer)          } else c.setStartBefore(c.startContainer)        }        return d && !domUtils.isBody(c.startContainer) ? 1 : 0      },      isEmptyBlock: function (a, b) {        if (a) {          if (1 != a.nodeType) return 0          if (            ((b = b || new RegExp('[  \t\r\n' + domUtils.fillChar + ']', 'g')),            a[browser.ie ? 'innerText' : 'textContent'].replace(b, '').length >              0)          )            return 0          for (var c in dtd.$isNotEmpty)            if (a.getElementsByTagName(c).length) return 0          return 1        }      },      setViewportOffset: function (a, b) {        var c = 0 | parseInt(a.style.left),          d = 0 | parseInt(a.style.top),          e = a.getBoundingClientRect(),          f = b.left - e.left,          g = b.top - e.top        f && (a.style.left = c + f + 'px'), g && (a.style.top = d + g + 'px')      },      fillNode: function (a, b) {        var c = browser.ie          ? a.createTextNode(domUtils.fillChar)          : a.createElement('br')        ;(b.innerHTML = ''), b.appendChild(c)      },      moveChild: function (a, b, c) {        for (; a.firstChild; )          c && b.firstChild            ? b.insertBefore(a.lastChild, b.firstChild)            : b.appendChild(a.firstChild)      },      hasNoAttributes: function (a) {        return browser.ie          ? /^<\w+\s*?>/.test(a.outerHTML)          : 0 == a.attributes.length      },      isCustomeNode: function (a) {        return 1 == a.nodeType && a.getAttribute('_ue_custom_node_')      },      isTagNode: function (a, b) {        return (          1 == a.nodeType && new RegExp('\\b' + a.tagName + '\\b', 'i').test(b)        )      },      filterNodeList: function (a, b, c) {        var d = []        if (!utils.isFunction(b)) {          var e = b          b = function (a) {            return (              utils.indexOf(                utils.isArray(e) ? e : e.split(' '),                a.tagName.toLowerCase()              ) != -1            )          }        }        return (          utils.each(a, function (a) {            b(a) && d.push(a)          }),          0 == d.length ? null : 1 != d.length && c ? d : d[0]        )      },      isInNodeEndBoundary: function (a, b) {        var c = a.startContainer        if (3 == c.nodeType && a.startOffset != c.nodeValue.length) return 0        if (1 == c.nodeType && a.startOffset != c.childNodes.length) return 0        for (; c !== b; ) {          if (c.nextSibling) return 0          c = c.parentNode        }        return 1      },      isBoundaryNode: function (a, b) {        for (var c; !domUtils.isBody(a); )          if (((c = a), (a = a.parentNode), c !== a[b])) return !1        return !0      },      fillHtml: browser.ie11below ? ' ' : '<br/>'    }),    fillCharReg = new RegExp(domUtils.fillChar, 'g')  !(function () {    function a(a) {      a.collapsed =        a.startContainer &&        a.endContainer &&        a.startContainer === a.endContainer &&        a.startOffset == a.endOffset    }    function b(a) {      return (        !a.collapsed &&        1 == a.startContainer.nodeType &&        a.startContainer === a.endContainer &&        a.endOffset - a.startOffset == 1      )    }    function c(b, c, d, e) {      return (        1 == c.nodeType &&          (dtd.$empty[c.tagName] || dtd.$nonChild[c.tagName]) &&          ((d = domUtils.getNodeIndex(c) + (b ? 0 : 1)), (c = c.parentNode)),        b          ? ((e.startContainer = c),            (e.startOffset = d),            e.endContainer || e.collapse(!0))          : ((e.endContainer = c),            (e.endOffset = d),            e.startContainer || e.collapse(!1)),        a(e),        e      )    }    function d(a, b) {      var c,        d,        e = a.startContainer,        f = a.endContainer,        g = a.startOffset,        h = a.endOffset,        i = a.document,        j = i.createDocumentFragment()      if (        (1 == e.nodeType &&          (e = e.childNodes[g] || (c = e.appendChild(i.createTextNode('')))),        1 == f.nodeType &&          (f = f.childNodes[h] || (d = f.appendChild(i.createTextNode('')))),        e === f && 3 == e.nodeType)      )        return (          j.appendChild(i.createTextNode(e.substringData(g, h - g))),          b && (e.deleteData(g, h - g), a.collapse(!0)),          j        )      for (        var k,          l,          m = j,          n = domUtils.findParents(e, !0),          o = domUtils.findParents(f, !0),          p = 0;        n[p] == o[p];      )        p++      for (var q, r = p; (q = n[r]); r++) {        for (          k = q.nextSibling,            q == e              ? c ||                (3 == a.startContainer.nodeType                  ? (m.appendChild(i.createTextNode(e.nodeValue.slice(g))),                    b && e.deleteData(g, e.nodeValue.length - g))                  : m.appendChild(b ? e : e.cloneNode(!0)))              : ((l = q.cloneNode(!1)), m.appendChild(l));          k && k !== f && k !== o[r];        )          (q = k.nextSibling), m.appendChild(b ? k : k.cloneNode(!0)), (k = q)        m = l      }      ;(m = j),        n[p] || (m.appendChild(n[p - 1].cloneNode(!1)), (m = m.firstChild))      for (var s, r = p; (s = o[r]); r++) {        if (          ((k = s.previousSibling),          s == f            ? d ||              3 != a.endContainer.nodeType ||              (m.appendChild(i.createTextNode(f.substringData(0, h))),              b && f.deleteData(0, h))            : ((l = s.cloneNode(!1)), m.appendChild(l)),          r != p || !n[p])        )          for (; k && k !== e; )            (s = k.previousSibling),              m.insertBefore(b ? k : k.cloneNode(!0), m.firstChild),              (k = s)        m = l      }      return (        b &&          a            .setStartBefore(o[p] ? (n[p] ? o[p] : n[p - 1]) : o[p - 1])            .collapse(!0),        c && domUtils.remove(c),        d && domUtils.remove(d),        j      )    }    function e(a, b) {      try {        if (g && domUtils.inDoc(g, a))          if (g.nodeValue.replace(fillCharReg, '').length)            g.nodeValue = g.nodeValue.replace(fillCharReg, '')          else {            var c = g.parentNode            for (              domUtils.remove(g);              c &&              domUtils.isEmptyInlineElement(c) &&              (browser.safari                ? !(domUtils.getPosition(c, b) & domUtils.POSITION_CONTAINS)                : !c.contains(b));            )              (g = c.parentNode), domUtils.remove(c), (c = g)          }      } catch (d) {}    }    function f(a, b) {      var c      for (a = a[b]; a && domUtils.isFillChar(a); )        (c = a[b]), domUtils.remove(a), (a = c)    }    var g,      h = 0,      i = domUtils.fillChar,      j = (dom.Range = function (a) {        var b = this        ;(b.startContainer =          b.startOffset =          b.endContainer =          b.endOffset =            null),          (b.document = a),          (b.collapsed = !0)      })    j.prototype = {      cloneContents: function () {        return this.collapsed ? null : d(this, 0)      },      deleteContents: function () {        var a        return (          this.collapsed || d(this, 1),          browser.webkit &&            ((a = this.startContainer),            3 != a.nodeType ||              a.nodeValue.length ||              (this.setStartBefore(a).collapse(!0), domUtils.remove(a))),          this        )      },      extractContents: function () {        return this.collapsed ? null : d(this, 2)      },      setStart: function (a, b) {        return c(!0, a, b, this)      },      setEnd: function (a, b) {        return c(!1, a, b, this)      },      setStartAfter: function (a) {        return this.setStart(a.parentNode, domUtils.getNodeIndex(a) + 1)      },      setStartBefore: function (a) {        return this.setStart(a.parentNode, domUtils.getNodeIndex(a))      },      setEndAfter: function (a) {        return this.setEnd(a.parentNode, domUtils.getNodeIndex(a) + 1)      },      setEndBefore: function (a) {        return this.setEnd(a.parentNode, domUtils.getNodeIndex(a))      },      setStartAtFirst: function (a) {        return this.setStart(a, 0)      },      setStartAtLast: function (a) {        return this.setStart(          a,          3 == a.nodeType ? a.nodeValue.length : a.childNodes.length        )      },      setEndAtFirst: function (a) {        return this.setEnd(a, 0)      },      setEndAtLast: function (a) {        return this.setEnd(          a,          3 == a.nodeType ? a.nodeValue.length : a.childNodes.length        )      },      selectNode: function (a) {        return this.setStartBefore(a).setEndAfter(a)      },      selectNodeContents: function (a) {        return this.setStart(a, 0).setEndAtLast(a)      },      cloneRange: function () {        var a = this        return new j(a.document)          .setStart(a.startContainer, a.startOffset)          .setEnd(a.endContainer, a.endOffset)      },      collapse: function (a) {        var b = this        return (          a            ? ((b.endContainer = b.startContainer),              (b.endOffset = b.startOffset))            : ((b.startContainer = b.endContainer),              (b.startOffset = b.endOffset)),          (b.collapsed = !0),          b        )      },      shrinkBoundary: function (a) {        function b(a) {          return (            1 == a.nodeType &&            !domUtils.isBookmarkNode(a) &&            !dtd.$empty[a.tagName] &&            !dtd.$nonChild[a.tagName]          )        }        for (          var c, d = this, e = d.collapsed;          1 == d.startContainer.nodeType &&          (c = d.startContainer.childNodes[d.startOffset]) &&          b(c);        )          d.setStart(c, 0)        if (e) return d.collapse(!0)        if (!a)          for (            ;            1 == d.endContainer.nodeType &&            d.endOffset > 0 &&            (c = d.endContainer.childNodes[d.endOffset - 1]) &&            b(c);          )            d.setEnd(c, c.childNodes.length)        return d      },      getCommonAncestor: function (a, c) {        var d = this,          e = d.startContainer,          f = d.endContainer        return e === f          ? a && b(this) && ((e = e.childNodes[d.startOffset]), 1 == e.nodeType)            ? e            : c && 3 == e.nodeType            ? e.parentNode            : e          : domUtils.getCommonAncestor(e, f)      },      trimBoundary: function (a) {        this.txtToElmBoundary()        var b = this.startContainer,          c = this.startOffset,          d = this.collapsed,          e = this.endContainer        if (3 == b.nodeType) {          if (0 == c) this.setStartBefore(b)          else if (c >= b.nodeValue.length) this.setStartAfter(b)          else {            var f = domUtils.split(b, c)            b === e              ? this.setEnd(f, this.endOffset - c)              : b.parentNode === e && (this.endOffset += 1),              this.setStartBefore(f)          }          if (d) return this.collapse(!0)        }        return (          a ||            ((c = this.endOffset),            (e = this.endContainer),            3 == e.nodeType &&              (0 == c                ? this.setEndBefore(e)                : (c < e.nodeValue.length && domUtils.split(e, c),                  this.setEndAfter(e)))),          this        )      },      txtToElmBoundary: function (a) {        function b(a, b) {          var c = a[b + 'Container'],            d = a[b + 'Offset']          3 == c.nodeType &&            (d              ? d >= c.nodeValue.length &&                a[                  'set' +                    b.replace(/(\w)/, function (a) {                      return a.toUpperCase()                    }) +                    'After'                ](c)              : a[                  'set' +                    b.replace(/(\w)/, function (a) {                      return a.toUpperCase()                    }) +                    'Before'                ](c))        }        return (          (!a && this.collapsed) || (b(this, 'start'), b(this, 'end')), this        )      },      insertNode: function (a) {        var b = a,          c = 1        11 == a.nodeType && ((b = a.firstChild), (c = a.childNodes.length)),          this.trimBoundary(!0)        var d = this.startContainer,          e = this.startOffset,          f = d.childNodes[e]        return (          f ? d.insertBefore(a, f) : d.appendChild(a),          b.parentNode === this.endContainer &&            (this.endOffset = this.endOffset + c),          this.setStartBefore(b)        )      },      setCursor: function (a, b) {        return this.collapse(!a).select(b)      },      createBookmark: function (a, b) {        var c,          d = this.document.createElement('span')        return (          (d.style.cssText = 'display:none;line-height:0px;'),          d.appendChild(this.document.createTextNode('')),          (d.id = '_baidu_bookmark_start_' + (b ? '' : h++)),          this.collapsed ||            ((c = d.cloneNode(!0)),            (c.id = '_baidu_bookmark_end_' + (b ? '' : h++))),          this.insertNode(d),          c && this.collapse().insertNode(c).setEndBefore(c),          this.setStartAfter(d),          { start: a ? d.id : d, end: c ? (a ? c.id : c) : null, id: a }        )      },      moveToBookmark: function (a) {        var b = a.id ? this.document.getElementById(a.start) : a.start,          c = a.end && a.id ? this.document.getElementById(a.end) : a.end        return (          this.setStartBefore(b),          domUtils.remove(b),          c ? (this.setEndBefore(c), domUtils.remove(c)) : this.collapse(!0),          this        )      },      enlarge: function (a, b) {        var c,          d,          e = domUtils.isBody,          f = this.document.createTextNode('')        if (a) {          for (            d = this.startContainer,              1 == d.nodeType                ? d.childNodes[this.startOffset]                  ? (c = d = d.childNodes[this.startOffset])                  : (d.appendChild(f), (c = d = f))                : (c = d);            ;          ) {            if (domUtils.isBlockElm(d)) {              for (d = c; (c = d.previousSibling) && !domUtils.isBlockElm(c); )                d = c              this.setStartBefore(d)              break            }            ;(c = d), (d = d.parentNode)          }          for (            d = this.endContainer,              1 == d.nodeType                ? ((c = d.childNodes[this.endOffset])                    ? d.insertBefore(f, c)                    : d.appendChild(f),                  (c = d = f))                : (c = d);            ;          ) {            if (domUtils.isBlockElm(d)) {              for (d = c; (c = d.nextSibling) && !domUtils.isBlockElm(c); )                d = c              this.setEndAfter(d)              break            }            ;(c = d), (d = d.parentNode)          }          f.parentNode === this.endContainer && this.endOffset--,            domUtils.remove(f)        }        if (!this.collapsed) {          for (            ;            !(              0 != this.startOffset ||              (b && b(this.startContainer)) ||              e(this.startContainer)            );          )            this.setStartBefore(this.startContainer)          for (            ;            !(              this.endOffset !=                (1 == this.endContainer.nodeType                  ? this.endContainer.childNodes.length                  : this.endContainer.nodeValue.length) ||              (b && b(this.endContainer)) ||              e(this.endContainer)            );          )            this.setEndAfter(this.endContainer)        }        return this      },      enlargeToBlockElm: function (a) {        for (; !domUtils.isBlockElm(this.startContainer); )          this.setStartBefore(this.startContainer)        if (!a)          for (; !domUtils.isBlockElm(this.endContainer); )            this.setEndAfter(this.endContainer)        return this      },      adjustmentBoundary: function () {        if (!this.collapsed) {          for (            ;            !domUtils.isBody(this.startContainer) &&            this.startOffset ==              this.startContainer[                3 == this.startContainer.nodeType ? 'nodeValue' : 'childNodes'              ].length &&            this.startContainer[              3 == this.startContainer.nodeType ? 'nodeValue' : 'childNodes'            ].length;          )            this.setStartAfter(this.startContainer)          for (            ;            !domUtils.isBody(this.endContainer) &&            !this.endOffset &&            this.endContainer[              3 == this.endContainer.nodeType ? 'nodeValue' : 'childNodes'            ].length;          )            this.setEndBefore(this.endContainer)        }        return this      },      applyInlineStyle: function (a, b, c) {        if (this.collapsed) return this        this.trimBoundary()          .enlarge(!1, function (a) {            return 1 == a.nodeType && domUtils.isBlockElm(a)          })          .adjustmentBoundary()        for (          var d,            e,            f = this.createBookmark(),            g = f.end,            h = function (a) {              return 1 == a.nodeType                ? 'br' != a.tagName.toLowerCase()                : !domUtils.isWhitespace(a)            },            i = domUtils.getNextDomNode(f.start, !1, h),            j = this.cloneRange();          i && domUtils.getPosition(i, g) & domUtils.POSITION_PRECEDING;        )          if (3 == i.nodeType || dtd[a][i.tagName]) {            for (              j.setStartBefore(i), d = i;              d && (3 == d.nodeType || dtd[a][d.tagName]) && d !== g;            )              (e = d),                (d = domUtils.getNextDomNode(                  d,                  1 == d.nodeType,                  null,                  function (b) {                    return dtd[a][b.tagName]                  }                ))            var k,              l = j.setEndAfter(e).extractContents()            if (c && c.length > 0) {              var m, n              n = m = c[0].cloneNode(!1)              for (var o, p = 1; (o = c[p++]); )                m.appendChild(o.cloneNode(!1)), (m = m.firstChild)              k = m            } else k = j.document.createElement(a)            b && domUtils.setAttributes(k, b),              k.appendChild(l),              j.insertNode(c ? n : k)            var q            if (              ('span' == a &&              b.style &&              /text\-decoration/.test(b.style) &&              (q = domUtils.findParentByTagName(k, 'a', !0))                ? (domUtils.setAttributes(q, b),                  domUtils.remove(k, !0),                  (k = q))                : (domUtils.mergeSibling(k), domUtils.clearEmptySibling(k)),              domUtils.mergeChild(k, b),              (i = domUtils.getNextDomNode(k, !1, h)),              domUtils.mergeToParent(k),              d === g)            )              break          } else i = domUtils.getNextDomNode(i, !0, h)        return this.moveToBookmark(f)      },      removeInlineStyle: function (a) {        if (this.collapsed) return this        ;(a = utils.isArray(a) ? a : [a]),          this.shrinkBoundary().adjustmentBoundary()        for (var b = this.startContainer, c = this.endContainer; ; ) {          if (1 == b.nodeType) {            if (utils.indexOf(a, b.tagName.toLowerCase()) > -1) break            if ('body' == b.tagName.toLowerCase()) {              b = null              break            }          }          b = b.parentNode        }        for (;;) {          if (1 == c.nodeType) {            if (utils.indexOf(a, c.tagName.toLowerCase()) > -1) break            if ('body' == c.tagName.toLowerCase()) {              c = null              break            }          }          c = c.parentNode        }        var d,          e,          f = this.createBookmark()        b &&          ((e = this.cloneRange().setEndBefore(f.start).setStartBefore(b)),          (d = e.extractContents()),          e.insertNode(d),          domUtils.clearEmptySibling(b, !0),          b.parentNode.insertBefore(f.start, b)),          c &&            ((e = this.cloneRange().setStartAfter(f.end).setEndAfter(c)),            (d = e.extractContents()),            e.insertNode(d),            domUtils.clearEmptySibling(c, !1, !0),            c.parentNode.insertBefore(f.end, c.nextSibling))        for (          var g,            h = domUtils.getNextDomNode(f.start, !1, function (a) {              return 1 == a.nodeType            });          h && h !== f.end;        )          (g = domUtils.getNextDomNode(h, !0, function (a) {            return 1 == a.nodeType          })),            utils.indexOf(a, h.tagName.toLowerCase()) > -1 &&              domUtils.remove(h, !0),            (h = g)        return this.moveToBookmark(f)      },      getClosedNode: function () {        var a        if (!this.collapsed) {          var c = this.cloneRange().adjustmentBoundary().shrinkBoundary()          if (b(c)) {            var d = c.startContainer.childNodes[c.startOffset]            d &&              1 == d.nodeType &&              (dtd.$empty[d.tagName] || dtd.$nonChild[d.tagName]) &&              (a = d)          }        }        return a      },      select: browser.ie        ? function (a, b) {            var c            this.collapsed || this.shrinkBoundary()            var d = this.getClosedNode()            if (d && !b) {              try {                ;(c = this.document.body.createControlRange()),                  c.addElement(d),                  c.select()              } catch (h) {}              return this            }            var j,              k = this.createBookmark(),              l = k.start            if (              ((c = this.document.body.createTextRange()),              c.moveToElementText(l),              c.moveStart('character', 1),              this.collapsed)            ) {              if (!a && 3 != this.startContainer.nodeType) {                var m = this.document.createTextNode(i),                  n = this.document.createElement('span')                n.appendChild(this.document.createTextNode(i)),                  l.parentNode.insertBefore(n, l),                  l.parentNode.insertBefore(m, l),                  e(this.document, m),                  (g = m),                  f(n, 'previousSibling'),                  f(l, 'nextSibling'),                  c.moveStart('character', -1),                  c.collapse(!0)              }            } else {              var o = this.document.body.createTextRange()              ;(j = k.end), o.moveToElementText(j), c.setEndPoint('EndToEnd', o)            }            this.moveToBookmark(k), n && domUtils.remove(n)            try {              c.select()            } catch (h) {}            return this          }        : function (a) {            function b(a) {              function b(b, c, d) {                3 == b.nodeType &&                  b.nodeValue.length < c &&                  (a[d + 'Offset'] = b.nodeValue.length)              }              b(a.startContainer, a.startOffset, 'start'),                b(a.endContainer, a.endOffset, 'end')            }            var c,              d = domUtils.getWindow(this.document),              h = d.getSelection()            if ((browser.gecko ? this.document.body.focus() : d.focus(), h)) {              if ((h.removeAllRanges(), this.collapsed && !a)) {                var j = this.startContainer,                  k = j                1 == j.nodeType && (k = j.childNodes[this.startOffset]),                  (3 == j.nodeType && this.startOffset) ||                    (k                      ? k.previousSibling && 3 == k.previousSibling.nodeType                      : j.lastChild && 3 == j.lastChild.nodeType) ||                    ((c = this.document.createTextNode(i)),                    this.insertNode(c),                    e(this.document, c),                    f(c, 'previousSibling'),                    f(c, 'nextSibling'),                    (g = c),                    this.setStart(c, browser.webkit ? 1 : 0).collapse(!0))              }              var l = this.document.createRange()              if (                this.collapsed &&                browser.opera &&                1 == this.startContainer.nodeType              ) {                var k = this.startContainer.childNodes[this.startOffset]                if (k) {                  for (                    ;                    k &&                    domUtils.isBlockElm(k) &&                    1 == k.nodeType &&                    k.childNodes[0];                  )                    k = k.childNodes[0]                  k && this.setStartBefore(k).collapse(!0)                } else                  (k = this.startContainer.lastChild),                    k && domUtils.isBr(k) && this.setStartBefore(k).collapse(!0)              }              b(this),                l.setStart(this.startContainer, this.startOffset),                l.setEnd(this.endContainer, this.endOffset),                h.addRange(l)            }            return this          },      scrollToView: function (a, b) {        a = a ? window : domUtils.getWindow(this.document)        var c = this,          d = c.document.createElement('span')        return (          (d.innerHTML = ' '),          c.cloneRange().insertNode(d),          domUtils.scrollToView(d, a, b),          domUtils.remove(d),          c        )      },      inFillChar: function () {        var a = this.startContainer        return !(          !this.collapsed ||          3 != a.nodeType ||          a.nodeValue.replace(new RegExp('^' + domUtils.fillChar), '').length +            1 !=            a.nodeValue.length        )      },      createAddress: function (a, b) {        function c(a) {          for (            var c,              d = a ? e.startContainer : e.endContainer,              f = domUtils.findParents(d, !0, function (a) {                return !domUtils.isBody(a)              }),              g = [],              h = 0;            (c = f[h++]);          )            g.push(domUtils.getNodeIndex(c, b))          var i = 0          if (b)            if (3 == d.nodeType) {              for (var j = d.previousSibling; j && 3 == j.nodeType; )                (i += j.nodeValue.replace(fillCharReg, '').length),                  (j = j.previousSibling)              i += a ? e.startOffset : e.endOffset            } else if ((d = d.childNodes[a ? e.startOffset : e.endOffset]))              i = domUtils.getNodeIndex(d, b)            else {              d = a ? e.startContainer : e.endContainer              for (var k = d.firstChild; k; )                if (domUtils.isFillChar(k)) k = k.nextSibling                else if ((i++, 3 == k.nodeType))                  for (; k && 3 == k.nodeType; ) k = k.nextSibling                else k = k.nextSibling            }          else            i = a ? (domUtils.isFillChar(d) ? 0 : e.startOffset) : e.endOffset          return i < 0 && (i = 0), g.push(i), g        }        var d = {},          e = this        return (          (d.startAddress = c(!0)),          a || (d.endAddress = e.collapsed ? [].concat(d.startAddress) : c()),          d        )      },      moveToAddress: function (a, b) {        function c(a, b) {          for (            var c, e, f, g = d.document.body, h = 0, i = a.length;            h < i;            h++          )            if (((f = a[h]), (c = g), (g = g.childNodes[f]), !g)) {              e = f              break            }          b            ? g              ? d.setStartBefore(g)              : d.setStart(c, e)            : g            ? d.setEndBefore(g)            : d.setEnd(c, e)        }        var d = this        return c(a.startAddress, !0), !b && a.endAddress && c(a.endAddress), d      },      equals: function (a) {        for (var b in this)          if (this.hasOwnProperty(b) && this[b] !== a[b]) return !1        return !0      },      traversal: function (a, b) {        if (this.collapsed) return this        for (          var c = this.createBookmark(),            d = c.end,            e = domUtils.getNextDomNode(c.start, !1, b);          e &&          e !== d &&          domUtils.getPosition(e, d) & domUtils.POSITION_PRECEDING;        ) {          var f = domUtils.getNextDomNode(e, !1, b)          a(e), (e = f)        }        return this.moveToBookmark(c)      }    }  })(),    (function () {      function a(a, b) {        var c = domUtils.getNodeIndex        ;(a = a.duplicate()), a.collapse(b)        var d = a.parentElement()        if (!d.hasChildNodes()) return { container: d, offset: 0 }        for (          var e,            f,            g = d.children,            h = a.duplicate(),            i = 0,            j = g.length - 1,            k = -1;          i <= j;        ) {          ;(k = Math.floor((i + j) / 2)), (e = g[k]), h.moveToElementText(e)          var l = h.compareEndPoints('StartToStart', a)          if (l > 0) j = k - 1          else {            if (!(l < 0)) return { container: d, offset: c(e) }            i = k + 1          }        }        if (k == -1) {          if (            (h.moveToElementText(d),            h.setEndPoint('StartToStart', a),            (f = h.text.replace(/(\r\n|\r)/g, '\n').length),            (g = d.childNodes),            !f)          )            return (              (e = g[g.length - 1]),              { container: e, offset: e.nodeValue.length }            )          for (var m = g.length; f > 0; ) f -= g[--m].nodeValue.length          return { container: g[m], offset: -f }        }        if (          (h.collapse(l > 0),          h.setEndPoint(l > 0 ? 'StartToStart' : 'EndToStart', a),          (f = h.text.replace(/(\r\n|\r)/g, '\n').length),          !f)        )          return dtd.$empty[e.tagName] || dtd.$nonChild[e.tagName]            ? { container: d, offset: c(e) + (l > 0 ? 0 : 1) }            : { container: e, offset: l > 0 ? 0 : e.childNodes.length }        for (; f > 0; )          try {            var n = e            ;(e = e[l > 0 ? 'previousSibling' : 'nextSibling']),              (f -= e.nodeValue.length)          } catch (o) {            return { container: d, offset: c(n) }          }        return { container: e, offset: l > 0 ? -f : e.nodeValue.length + f }      }      function b(b, c) {        if (b.item) c.selectNode(b.item(0))        else {          var d = a(b, !0)          c.setStart(d.container, d.offset),            0 != b.compareEndPoints('StartToEnd', b) &&              ((d = a(b, !1)), c.setEnd(d.container, d.offset))        }        return c      }      function c(a) {        var b        try {          b = a.getNative().createRange()        } catch (c) {          return null        }        var d = b.item ? b.item(0) : b.parentElement()        return (d.ownerDocument || d) === a.document ? b : null      }      var d = (dom.Selection = function (a) {        var b,          d = this        ;(d.document = a),          browser.ie9below &&            ((b = domUtils.getWindow(a).frameElement),            domUtils.on(b, 'beforedeactivate', function () {              d._bakIERange = d.getIERange()            }),            domUtils.on(b, 'activate', function () {              try {                !c(d) && d._bakIERange && d._bakIERange.select()              } catch (a) {}              d._bakIERange = null            })),          (b = a = null)      })      d.prototype = {        rangeInBody: function (a, b) {          var c =            browser.ie9below || b              ? a.item                ? a.item()                : a.parentElement()              : a.startContainer          return c === this.document.body || domUtils.inDoc(c, this.document)        },        getNative: function () {          var a = this.document          try {            return a              ? browser.ie9below                ? a.selection                : domUtils.getWindow(a).getSelection()              : null          } catch (b) {            return null          }        },        getIERange: function () {          var a = c(this)          return !a && this._bakIERange ? this._bakIERange : a        },        cache: function () {          this.clear(),            (this._cachedRange = this.getRange()),            (this._cachedStartElement = this.getStart()),            (this._cachedStartElementPath = this.getStartElementPath())        },        getStartElementPath: function () {          if (this._cachedStartElementPath) return this._cachedStartElementPath          var a = this.getStart()          return a ? domUtils.findParents(a, !0, null, !0) : []        },        clear: function () {          this._cachedStartElementPath =            this._cachedRange =            this._cachedStartElement =              null        },        isFocus: function () {          try {            if (browser.ie9below) {              var a = c(this)              return !(!a || !this.rangeInBody(a))            }            return !!this.getNative().rangeCount          } catch (b) {            return !1          }        },        getRange: function () {          function a(a) {            for (              var b = c.document.body.firstChild, d = a.collapsed;              b && b.firstChild;            )              a.setStart(b, 0), (b = b.firstChild)            a.startContainer || a.setStart(c.document.body, 0),              d && a.collapse(!0)          }          var c = this          if (null != c._cachedRange) return this._cachedRange          var d = new baidu.editor.dom.Range(c.document)          if (browser.ie9below) {            var e = c.getIERange()            if (e)              try {                b(e, d)              } catch (f) {                a(d)              }            else a(d)          } else {            var g = c.getNative()            if (g && g.rangeCount) {              var h = g.getRangeAt(0),                i = g.getRangeAt(g.rangeCount - 1)              d                .setStart(h.startContainer, h.startOffset)                .setEnd(i.endContainer, i.endOffset),                d.collapsed &&                  domUtils.isBody(d.startContainer) &&                  !d.startOffset &&                  a(d)            } else {              if (                this._bakRange &&                domUtils.inDoc(this._bakRange.startContainer, this.document)              )                return this._bakRange              a(d)            }          }          return (this._bakRange = d)        },        getStart: function () {          if (this._cachedStartElement) return this._cachedStartElement          var a,            b,            c,            d,            e = browser.ie9below ? this.getIERange() : this.getRange()          if (browser.ie9below) {            if (!e) return this.document.body.firstChild            if (e.item) return e.item(0)            for (              a = e.duplicate(),                a.text.length > 0 && a.moveStart('character', 1),                a.collapse(1),                b = a.parentElement(),                d = c = e.parentElement();              (c = c.parentNode);            )              if (c == b) {                b = d                break              }          } else if (            (e.shrinkBoundary(),            (b = e.startContainer),            1 == b.nodeType &&              b.hasChildNodes() &&              (b =                b.childNodes[Math.min(b.childNodes.length - 1, e.startOffset)]),            3 == b.nodeType)          )            return b.parentNode          return b        },        getText: function () {          var a, b          return this.isFocus() && (a = this.getNative())            ? ((b = browser.ie9below ? a.createRange() : a.getRangeAt(0)),              browser.ie9below ? b.text : b.toString())            : ''        },        clearRange: function () {          this.getNative()[browser.ie9below ? 'empty' : 'removeAllRanges']()        }      }    })(),    (function () {      function a(a, b) {        var c        if (b.textarea)          if (utils.isString(b.textarea)) {            for (              var d, e = 0, f = domUtils.getElementsByTagName(a, 'textarea');              (d = f[e++]);            )              if (d.id == 'ueditor_textarea_' + b.options.textarea) {                c = d                break              }          } else c = b.textarea        c ||          (a.appendChild(            (c = domUtils.createElement(document, 'textarea', {              name: b.options.textarea,              id: 'ueditor_textarea_' + b.options.textarea,              style: 'display:none'            }))          ),          (b.textarea = c)),          !c.getAttribute('name') && c.setAttribute('name', b.options.textarea),          (c.value = b.hasContents()            ? b.options.allHtmlEnabled              ? b.getAllHtml()              : b.getContent(null, null, !0)            : '')      }      function b(a) {        for (var b in a) return b      }      function c(a) {        ;(a.langIsReady = !0), a.fireEvent('langReady')      }      var d,        e = 0,        f = (UE.Editor = function (a) {          var d = this          ;(d.uid = e++),            EventBase.call(d),            (d.commands = {}),            (d.options = utils.extend(              utils.clone(a || {}),              UEDITOR_CONFIG,              !0            )),            (d.shortcutkeys = {}),            (d.inputRules = []),            (d.outputRules = []),            d.setOpt(f.defaultOptions(d)),            d.loadServerConfig(),            utils.isEmptyObject(UE.I18N)              ? utils.loadFile(                  document,                  {                    src:                      d.options.langPath +                      d.options.lang +                      '/' +                      d.options.lang +                      '.js',                    tag: 'script',                    type: 'text/javascript',                    defer: 'defer'                  },                  function () {                    UE.plugin.load(d), c(d)                  }                )              : ((d.options.lang = b(UE.I18N)), UE.plugin.load(d), c(d)),            (UE.instants['ueditorInstant' + d.uid] = d)        })      ;(f.prototype = {        registerCommand: function (a, b) {          this.commands[a] = b        },        ready: function (a) {          var b = this          a && (b.isReady ? a.apply(b) : b.addListener('ready', a))        },        setOpt: function (a, b) {          var c = {}          utils.isString(a) ? (c[a] = b) : (c = a),            utils.extend(this.options, c, !0)        },        getOpt: function (a) {          return this.options[a]        },        destroy: function () {          var a = this          a.fireEvent('destroy')          var b = a.container.parentNode,            c = a.textarea          c            ? (c.style.display = '')            : ((c = document.createElement('textarea')),              b.parentNode.insertBefore(c, b)),            (c.style.width = a.iframe.offsetWidth + 'px'),            (c.style.height = a.iframe.offsetHeight + 'px'),            (c.value = a.getContent()),            (c.id = a.key),            (b.innerHTML = ''),            domUtils.remove(b)          var d = a.key          for (var e in a) a.hasOwnProperty(e) && delete this[e]          UE.delEditor(d)        },        render: function (a) {          var b = this,            c = b.options,            d = function (b) {              return parseInt(domUtils.getComputedStyle(a, b))            }          if ((utils.isString(a) && (a = document.getElementById(a)), a)) {            c.initialFrameWidth              ? (c.minFrameWidth = c.initialFrameWidth)              : (c.minFrameWidth = c.initialFrameWidth = a.offsetWidth),              c.initialFrameHeight                ? (c.minFrameHeight = c.initialFrameHeight)                : (c.initialFrameHeight = c.minFrameHeight = a.offsetHeight),              (a.style.width = /%$/.test(c.initialFrameWidth)                ? '100%'                : c.initialFrameWidth -                  d('padding-left') -                  d('padding-right') +                  'px'),              (a.style.height = /%$/.test(c.initialFrameHeight)                ? '100%'                : c.initialFrameHeight -                  d('padding-top') -                  d('padding-bottom') +                  'px'),              (a.style.zIndex = c.zIndex)            var e =              (ie && browser.version < 9 ? '' : '<!DOCTYPE html>') +              "<html xmlns='http://www.w3.org/1999/xhtml' class='view' ><head><style type='text/css'>.view{padding:0;word-wrap:break-word;cursor:text;height:90%;}\nbody{margin:8px;font-family:sans-serif;font-size:16px;}p{margin:5px 0;}</style>" +              (c.iframeCssUrl                ? "<link rel='stylesheet' type='text/css' href='" +                  utils.unhtml(c.iframeCssUrl) +                  "'/>"                : '') +              (c.initialStyle ? '<style>' + c.initialStyle + '</style>' : '') +              "</head><body class='view' ></body><script type='text/javascript' " +              (ie ? "defer='defer'" : '') +              " id='_initialScript'>setTimeout(function(){editor = window.parent.UE.instants['ueditorInstant" +              b.uid +              "'];editor._setup(document);},0);var _tmpScript = document.getElementById('_initialScript');_tmpScript.parentNode.removeChild(_tmpScript);</script></html>"            a.appendChild(              domUtils.createElement(document, 'iframe', {                id: 'ueditor_' + b.uid,                width: '100%',                height: '100%',                frameborder: '0',                src:                  'javascript:void(function(){document.open();' +                  (c.customDomain && document.domain != location.hostname                    ? 'document.domain="' + document.domain + '";'                    : '') +                  'document.write("' +                  e +                  '");document.close();}())'              })            ),              (a.style.overflow = 'hidden'),              setTimeout(function () {                ;/%$/.test(c.initialFrameWidth) &&                  (c.minFrameWidth = c.initialFrameWidth = a.offsetWidth),                  /%$/.test(c.initialFrameHeight) &&                    ((c.minFrameHeight = c.initialFrameHeight = a.offsetHeight),                    (a.style.height = c.initialFrameHeight + 'px'))              })          }        },        _setup: function (b) {          var c = this,            d = c.options          ie            ? ((b.body.disabled = !0),              (b.body.contentEditable = !0),              (b.body.disabled = !1))            : (b.body.contentEditable = !0),            (b.body.spellcheck = !1),            (c.document = b),            (c.window = b.defaultView || b.parentWindow),            (c.iframe = c.window.frameElement),            (c.body = b.body),            (c.selection = new dom.Selection(b))          var e          browser.gecko &&            (e = this.selection.getNative()) &&            e.removeAllRanges(),            this._initEvents()          for (            var f = this.iframe.parentNode;            !domUtils.isBody(f);            f = f.parentNode          )            if ('FORM' == f.tagName) {              ;(c.form = f),                c.options.autoSyncData                  ? domUtils.on(c.window, 'blur', function () {                      a(f, c)                    })                  : domUtils.on(f, 'submit', function () {                      a(this, c)                    })              break            }          if (d.initialContent)            if (d.autoClearinitialContent) {              var g = c.execCommand              ;(c.execCommand = function () {                return (                  c.fireEvent('firstBeforeExecCommand'), g.apply(c, arguments)                )              }),                this._setDefaultContent(d.initialContent)            } else this.setContent(d.initialContent, !1, !0)          domUtils.isEmptyNode(c.body) &&            (c.body.innerHTML = '<p>' + (browser.ie ? '' : '<br/>') + '</p>'),            d.focus &&              setTimeout(function () {                c.focus(c.options.focusInEnd),                  !c.options.autoClearinitialContent && c._selectionChange()              }, 0),            c.container || (c.container = this.iframe.parentNode),            d.fullscreen && c.ui && c.ui.setFullScreen(!0)          try {            c.document.execCommand('2D-position', !1, !1)          } catch (h) {}          try {            c.document.execCommand('enableInlineTableEditing', !1, !1)          } catch (h) {}          try {            c.document.execCommand('enableObjectResizing', !1, !1)          } catch (h) {}          c._bindshortcutKeys(),            (c.isReady = 1),            c.fireEvent('ready'),            d.onready && d.onready.call(c),            browser.ie9below ||              domUtils.on(c.window, ['blur', 'focus'], function (a) {                if ('blur' == a.type) {                  c._bakRange = c.selection.getRange()                  try {                    ;(c._bakNativeRange = c.selection                      .getNative()                      .getRangeAt(0)),                      c.selection.getNative().removeAllRanges()                  } catch (a) {                    c._bakNativeRange = null                  }                } else                  try {                    c._bakRange && c._bakRange.select()                  } catch (a) {}              }),            browser.gecko &&              browser.version <= 10902 &&              ((c.body.contentEditable = !1),              setTimeout(function () {                c.body.contentEditable = !0              }, 100),              setInterval(function () {                c.body.style.height = c.iframe.offsetHeight - 20 + 'px'              }, 100)),            !d.isShow && c.setHide(),            d.readonly && c.setDisabled()        },        sync: function (b) {          var c = this,            d = b              ? document.getElementById(b)              : domUtils.findParent(                  c.iframe.parentNode,                  function (a) {                    return 'FORM' == a.tagName                  },                  !0                )          d && a(d, c)        },        setHeight: function (a, b) {          a !== parseInt(this.iframe.parentNode.style.height) &&            (this.iframe.parentNode.style.height = a + 'px'),            !b &&              (this.options.minFrameHeight = this.options.initialFrameHeight =                a),            (this.body.style.height = a + 'px'),            !b && this.trigger('setHeight')        },        addshortcutkey: function (a, b) {          var c = {}          b ? (c[a] = b) : (c = a), utils.extend(this.shortcutkeys, c)        },        _bindshortcutKeys: function () {          var a = this,            b = this.shortcutkeys          a.addListener('keydown', function (c, d) {            var e = d.keyCode || d.which            for (var f in b)              for (var g, h = b[f].split(','), i = 0; (g = h[i++]); ) {                g = g.split(':')                var j = g[0],                  k = g[1]                ;(/^(ctrl)(\+shift)?\+(\d+)$/.test(j.toLowerCase()) ||                  /^(\d+)$/.test(j)) &&                  ((('ctrl' == RegExp.$1 ? d.ctrlKey || d.metaKey : 0) &&                    ('' != RegExp.$2 ? d[RegExp.$2.slice(1) + 'Key'] : 1) &&                    e == RegExp.$3) ||                    e == RegExp.$1) &&                  (a.queryCommandState(f, k) != -1 && a.execCommand(f, k),                  domUtils.preventDefault(d))              }          })        },        getContent: function (a, b, c, d, e) {          var f = this          if (            (a && utils.isFunction(a) && ((b = a), (a = '')),            b ? !b() : !this.hasContents())          )            return ''          f.fireEvent('beforegetcontent')          var g = UE.htmlparser(f.body.innerHTML, d)          return (            f.filterOutputRule(g),            f.fireEvent('aftergetcontent', a, g),            g.toHtml(e)          )        },        getAllHtml: function () {          var a = this,            b = []          if (            (a.fireEvent('getAllHtml', b), browser.ie && browser.version > 8)          ) {            var c = ''            utils.each(a.document.styleSheets, function (a) {              c += a.href                ? '<link rel="stylesheet" type="text/css" href="' +                  a.href +                  '" />'                : '<style>' + a.cssText + '</style>'            }),              utils.each(                a.document.getElementsByTagName('script'),                function (a) {                  c += a.outerHTML                }              )          }          return (            '<html><head>' +            (a.options.charset              ? '<meta http-equiv="Content-Type" content="text/html; charset=' +                a.options.charset +                '"/>'              : '') +            (c || a.document.getElementsByTagName('head')[0].innerHTML) +            b.join('\n') +            '</head><body ' +            (ie && browser.version < 9 ? 'class="view"' : '') +            '>' +            a.getContent(null, null, !0) +            '</body></html>'          )        },        getPlainTxt: function () {          var a = new RegExp(domUtils.fillChar, 'g'),            b = this.body.innerHTML.replace(/[\n\r]/g, '')          return (            (b = b              .replace(/<(p|div)[^>]*>(<br\/?>| )<\/\1>/gi, '\n')              .replace(/<br\/?>/gi, '\n')              .replace(/<[^>\/]+>/g, '')              .replace(/(\n)?<\/([^>]+)>/g, function (a, b, c) {                return dtd.$block[c] ? '\n' : b ? b : ''              })),            b              .replace(a, '')              .replace(/\u00a0/g, ' ')              .replace(/ /g, ' ')          )        },        getContentTxt: function () {          var a = new RegExp(domUtils.fillChar, 'g')          return this.body[browser.ie ? 'innerText' : 'textContent']            .replace(a, '')            .replace(/\u00a0/g, ' ')        },        setContent: function (b, c, d) {          function e(a) {            return 'DIV' == a.tagName && a.getAttribute('cdata_tag')          }          var f = this          f.fireEvent('beforesetcontent', b)          var g = UE.htmlparser(b)          if (            (f.filterInputRule(g),            (b = g.toHtml()),            (f.body.innerHTML = (c ? f.body.innerHTML : '') + b),            'p' == f.options.enterTag)          ) {            var h,              i = this.body.firstChild            if (              !i ||              (1 == i.nodeType &&                (dtd.$cdata[i.tagName] || e(i) || domUtils.isCustomeNode(i)) &&                i === this.body.lastChild)            )              this.body.innerHTML =                '<p>' +                (browser.ie ? ' ' : '<br/>') +                '</p>' +                this.body.innerHTML            else              for (var j = f.document.createElement('p'); i; ) {                for (                  ;                  i &&                  (3 == i.nodeType ||                    (1 == i.nodeType &&                      dtd.p[i.tagName] &&                      !dtd.$cdata[i.tagName]));                )                  (h = i.nextSibling), j.appendChild(i), (i = h)                if (j.firstChild) {                  if (!i) {                    f.body.appendChild(j)                    break                  }                  i.parentNode.insertBefore(j, i),                    (j = f.document.createElement('p'))                }                i = i.nextSibling              }          }          f.fireEvent('aftersetcontent'),            f.fireEvent('contentchange'),            !d && f._selectionChange(),            (f._bakRange = f._bakIERange = f._bakNativeRange = null)          var k          browser.gecko &&            (k = this.selection.getNative()) &&            k.removeAllRanges(),            f.options.autoSyncData && f.form && a(f.form, f)        },        focus: function (a) {          try {            var b = this,              c = b.selection.getRange()            if (a) {              var d = b.body.lastChild              d &&                1 == d.nodeType &&                !dtd.$empty[d.tagName] &&                (domUtils.isEmptyBlock(d)                  ? c.setStartAtFirst(d)                  : c.setStartAtLast(d),                c.collapse(!0)),                c.setCursor(!0)            } else {              if (                !c.collapsed &&                domUtils.isBody(c.startContainer) &&                0 == c.startOffset              ) {                var d = b.body.firstChild                d &&                  1 == d.nodeType &&                  !dtd.$empty[d.tagName] &&                  c.setStartAtFirst(d).collapse(!0)              }              c.select(!0)            }            this.fireEvent('focus selectionchange')          } catch (e) {}        },        isFocus: function () {          return this.selection.isFocus()        },        blur: function () {          var a = this.selection.getNative()          if (a.empty && browser.ie) {            var b = document.body.createTextRange()            b.moveToElementText(document.body),              b.collapse(!0),              b.select(),              a.empty()          } else a.removeAllRanges()        },        _initEvents: function () {          var a = this,            b = a.document,            c = a.window          ;(a._proxyDomEvent = utils.bind(a._proxyDomEvent, a)),            domUtils.on(              b,              [                'click',                'contextmenu',                'mousedown',                'keydown',                'keyup',                'keypress',                'mouseup',                'mouseover',                'mouseout',                'selectstart'              ],              a._proxyDomEvent            ),            domUtils.on(c, ['focus', 'blur'], a._proxyDomEvent),            domUtils.on(a.body, 'drop', function (b) {              browser.gecko && b.stopPropagation && b.stopPropagation(),                a.fireEvent('contentchange')            }),            domUtils.on(b, ['mouseup', 'keydown'], function (b) {              ;('keydown' == b.type &&                (b.ctrlKey || b.metaKey || b.shiftKey || b.altKey)) ||                (2 != b.button && a._selectionChange(250, b))            })        },        _proxyDomEvent: function (a) {          return (            this.fireEvent(              'before' + a.type.replace(/^on/, '').toLowerCase()            ) !== !1 &&            this.fireEvent(a.type.replace(/^on/, ''), a) !== !1 &&            this.fireEvent('after' + a.type.replace(/^on/, '').toLowerCase())          )        },        _selectionChange: function (a, b) {          var c,            e,            f = this,            g = !1          if (browser.ie && browser.version < 9 && b && 'mouseup' == b.type) {            var h = this.selection.getRange()            h.collapsed || ((g = !0), (c = b.clientX), (e = b.clientY))          }          clearTimeout(d),            (d = setTimeout(function () {              if (f.selection && f.selection.getNative()) {                var a                if (g && 'None' == f.selection.getNative().type) {                  a = f.document.body.createTextRange()                  try {                    a.moveToPoint(c, e)                  } catch (d) {                    a = null                  }                }                var h                a &&                  ((h = f.selection.getIERange),                  (f.selection.getIERange = function () {                    return a                  })),                  f.selection.cache(),                  h && (f.selection.getIERange = h),                  f.selection._cachedRange &&                    f.selection._cachedStartElement &&                    (f.fireEvent('beforeselectionchange'),                    f.fireEvent('selectionchange', !!b),                    f.fireEvent('afterselectionchange'),                    f.selection.clear())              }            }, a || 50))        },        _callCmdFn: function (a, b) {          var c,            d,            e = b[0].toLowerCase()          return (            (c = this.commands[e] || UE.commands[e]),            (d = c && c[a]),            (c && d) || 'queryCommandState' != a              ? d                ? d.apply(this, b)                : void 0              : 0          )        },        execCommand: function (a) {          a = a.toLowerCase()          var b,            c = this,            d = c.commands[a] || UE.commands[a]          return d && d.execCommand            ? (d.notNeedUndo || c.__hasEnterExecCommand                ? ((b = this._callCmdFn('execCommand', arguments)),                  !c.__hasEnterExecCommand &&                    !d.ignoreContentChange &&                    !c._ignoreContentChange &&                    c.fireEvent('contentchange'))                : ((c.__hasEnterExecCommand = !0),                  c.queryCommandState.apply(c, arguments) != -1 &&                    (c.fireEvent('saveScene'),                    c.fireEvent.apply(                      c,                      ['beforeexeccommand', a].concat(arguments)                    ),                    (b = this._callCmdFn('execCommand', arguments)),                    c.fireEvent.apply(                      c,                      ['afterexeccommand', a].concat(arguments)                    ),                    c.fireEvent('saveScene')),                  (c.__hasEnterExecCommand = !1)),              !c.__hasEnterExecCommand &&                !d.ignoreContentChange &&                !c._ignoreContentChange &&                c._selectionChange(),              b)            : null        },        queryCommandState: function (a) {          return this._callCmdFn('queryCommandState', arguments)        },        queryCommandValue: function (a) {          return this._callCmdFn('queryCommandValue', arguments)        },        hasContents: function (a) {          if (a)            for (var b, c = 0; (b = a[c++]); )              if (this.document.getElementsByTagName(b).length > 0) return !0          if (!domUtils.isEmptyBlock(this.body)) return !0          for (a = ['div'], c = 0; (b = a[c++]); )            for (              var d, e = domUtils.getElementsByTagName(this.document, b), f = 0;              (d = e[f++]);            )              if (domUtils.isCustomeNode(d)) return !0          return !1        },        reset: function () {          this.fireEvent('reset')        },        setEnabled: function () {          var a,            b = this          if ('false' == b.body.contentEditable) {            ;(b.body.contentEditable = !0), (a = b.selection.getRange())            try {              a.moveToBookmark(b.lastBk), delete b.lastBk            } catch (c) {              a.setStartAtFirst(b.body).collapse(!0)            }            a.select(!0),              b.bkqueryCommandState &&                ((b.queryCommandState = b.bkqueryCommandState),                delete b.bkqueryCommandState),              b.bkqueryCommandValue &&                ((b.queryCommandValue = b.bkqueryCommandValue),                delete b.bkqueryCommandValue),              b.fireEvent('selectionchange')          }        },        enable: function () {          return this.setEnabled()        },        setDisabled: function (a) {          var b = this          ;(a = a ? (utils.isArray(a) ? a : [a]) : []),            'true' == b.body.contentEditable &&              (b.lastBk ||                (b.lastBk = b.selection.getRange().createBookmark(!0)),              (b.body.contentEditable = !1),              (b.bkqueryCommandState = b.queryCommandState),              (b.bkqueryCommandValue = b.queryCommandValue),              (b.queryCommandState = function (c) {                return utils.indexOf(a, c) != -1                  ? b.bkqueryCommandState.apply(b, arguments)                  : -1              }),              (b.queryCommandValue = function (c) {                return utils.indexOf(a, c) != -1                  ? b.bkqueryCommandValue.apply(b, arguments)                  : null              }),              b.fireEvent('selectionchange'))        },        disable: function (a) {          return this.setDisabled(a)        },        _setDefaultContent: (function () {          function a() {            var b = this            b.document.getElementById('initContent') &&              ((b.body.innerHTML = '<p>' + (ie ? '' : '<br/>') + '</p>'),              b.removeListener('firstBeforeExecCommand focus', a),              setTimeout(function () {                b.focus(), b._selectionChange()              }, 0))          }          return function (b) {            var c = this            ;(c.body.innerHTML = '<p id="initContent">' + b + '</p>'),              c.addListener('firstBeforeExecCommand focus', a)          }        })(),        setShow: function () {          var a = this,            b = a.selection.getRange()          if ('none' == a.container.style.display) {            try {              b.moveToBookmark(a.lastBk), delete a.lastBk            } catch (c) {              b.setStartAtFirst(a.body).collapse(!0)            }            setTimeout(function () {              b.select(!0)            }, 100),              (a.container.style.display = '')          }        },        show: function () {          return this.setShow()        },        setHide: function () {          var a = this          a.lastBk || (a.lastBk = a.selection.getRange().createBookmark(!0)),            (a.container.style.display = 'none')        },        hide: function () {          return this.setHide()        },        getLang: function (a) {          if (!this.options) return ''          var b = UE.I18N[this.options.lang]          if (!b) throw Error('not import language file')          a = (a || '').split('.')          for (var c, d = 0; (c = a[d++]) && ((b = b[c]), b); );          return b        },        getContentLength: function (a, b) {          var c = this.getContent(!1, !1, !0).length          if (a) {            ;(b = (b || []).concat(['hr', 'img', 'iframe'])),              (c = this.getContentTxt().replace(/[\t\r\n]+/g, '').length)            for (var d, e = 0; (d = b[e++]); )              c += this.document.getElementsByTagName(d).length          }          return c        },        addInputRule: function (a) {          this.inputRules.push(a)        },        filterInputRule: function (a) {          for (var b, c = 0; (b = this.inputRules[c++]); ) b.call(this, a)        },        addOutputRule: function (a) {          this.outputRules.push(a)        },        filterOutputRule: function (a) {          for (var b, c = 0; (b = this.outputRules[c++]); ) b.call(this, a)        },        getActionUrl: function (a) {          var b = this.getOpt(a) || a,            c = this.getOpt('imageUrl'),            d = this.getOpt('serverUrl')          return (            !d &&              c &&              (d = c.replace(/^(.*[\/]).+([\.].+)$/, '$1controller$2')),            d              ? ((d =                  d +                  (d.indexOf('?') == -1 ? '?' : '&') +                  'action=' +                  (b || '')),                utils.formatUrl(d))              : ''          )        }      }),        utils.inherits(f, EventBase)    })(),    (UE.Editor.defaultOptions = function (a) {      var b = a.options.UEDITOR_HOME_URL      return {        isShow: !0,        initialContent: '',        initialStyle: '',        autoClearinitialContent: !1,        iframeCssUrl: b + 'themes/iframe.css',        textarea: 'editorValue',        focus: !1,        focusInEnd: !0,        autoClearEmptyNode: !0,        fullscreen: !1,        readonly: !1,        zIndex: 999,        imagePopup: !0,        enterTag: 'p',        customDomain: !1,        lang: 'zh-cn',        langPath: b + 'lang/',        theme: 'default',        themePath: b + 'themes/',        allHtmlEnabled: !1,        scaleEnabled: !1,        tableNativeEditInFF: !1,        autoSyncData: !0,        fileNameFormat: '{time}{rand:6}'      }    }),    (function () {      ;(UE.Editor.prototype.loadServerConfig = function () {        function showErrorMsg(a) {          console && console.error(a)        }        var me = this        setTimeout(function () {          try {            me.options.imageUrl &&              me.setOpt(                'serverUrl',                me.options.imageUrl.replace(                  /^(.*[\/]).+([\.].+)$/,                  '$1controller$2'                )              )            var configUrl = me.getActionUrl('config'),              isJsonp = utils.isCrossDomainUrl(configUrl)            ;(me._serverConfigLoaded = !1),              configUrl &&                UE.ajax.request(configUrl, {                  method: 'GET',                  dataType: isJsonp ? 'jsonp' : '',                  onsuccess: function (r) {                    try {                      var config = isJsonp                        ? r                        : eval('(' + r.responseText + ')')                      utils.extend(me.options, config),                        me.fireEvent('serverConfigLoaded'),                        (me._serverConfigLoaded = !0)                    } catch (e) {                      showErrorMsg(me.getLang('loadconfigFormatError'))                    }                  },                  onerror: function () {                    showErrorMsg(me.getLang('loadconfigHttpError'))                  }                })          } catch (e) {            showErrorMsg(me.getLang('loadconfigError'))          }        })      }),        (UE.Editor.prototype.isServerConfigLoaded = function () {          var a = this          return a._serverConfigLoaded || !1        }),        (UE.Editor.prototype.afterConfigReady = function (a) {          if (a && utils.isFunction(a)) {            var b = this,              c = function () {                a.apply(b, arguments), b.removeListener('serverConfigLoaded', c)              }            b.isServerConfigLoaded()              ? a.call(b, 'serverConfigLoaded')              : b.addListener('serverConfigLoaded', c)          }        })    })(),    (UE.ajax = (function () {      function a(a) {        var b = []        for (var c in a)          if (            'method' != c &&            'timeout' != c &&            'async' != c &&            'dataType' != c &&            'callback' != c &&            void 0 != a[c] &&            null != a[c]          )            if (              'function' != (typeof a[c]).toLowerCase() &&              'object' != (typeof a[c]).toLowerCase()            )              b.push(encodeURIComponent(c) + '=' + encodeURIComponent(a[c]))            else if (utils.isArray(a[c]))              for (var d = 0; d < a[c].length; d++)                b.push(                  encodeURIComponent(c) + '[]=' + encodeURIComponent(a[c][d])                )        return b.join('&')      }      function b(b, c) {        var d = f(),          e = !1,          g = {            method: 'POST',            timeout: 5e3,            async: !0,            data: {},            onsuccess: function () {},            onerror: function () {}          }        if (('object' == typeof b && ((c = b), (b = c.url)), d && b)) {          var h = c ? utils.extend(g, c) : g,            i = a(h)          utils.isEmptyObject(h.data) || (i += (i ? '&' : '') + a(h.data))          var j = setTimeout(function () {              4 != d.readyState && ((e = !0), d.abort(), clearTimeout(j))            }, h.timeout),            k = h.method.toUpperCase(),            l =              b +              (b.indexOf('?') == -1 ? '?' : '&') +              ('POST' == k ? '' : i + '&noCache=' + +new Date())          d.open(k, l, h.async),            (d.onreadystatechange = function () {              4 == d.readyState &&                (e || 200 != d.status ? h.onerror(d) : h.onsuccess(d))            }),            'POST' == k              ? (d.setRequestHeader(                  'Content-Type',                  'application/x-www-form-urlencoded'                ),                d.send(i))              : d.send(null)        }      }      function c(b, c) {        function d(a, b, c) {          a.setAttribute('type', 'text/javascript'),            a.setAttribute('defer', 'defer'),            c && a.setAttribute('charset', c),            a.setAttribute('src', b),            document.getElementsByTagName('head')[0].appendChild(a)        }        function e(a) {          return function () {            try {              if (a) k.onerror && k.onerror()              else                try {                  clearTimeout(g), i.apply(window, arguments)                } catch (b) {}            } catch (c) {              k.onerror && k.onerror.call(window, c)            } finally {              k.oncomplete && k.oncomplete.apply(window, arguments),                j.parentNode && j.parentNode.removeChild(j),                (window[f] = null)              try {                delete window[f]              } catch (b) {}            }          }        }        var f,          g,          h,          i = c.onsuccess || function () {},          j = document.createElement('SCRIPT'),          k = c || {},          l = k.charset,          m = k.jsonp || 'callback',          n = k.timeOut || 0,          o = new RegExp('(\\?|&)' + m + '=([^&]*)')        utils.isFunction(i)          ? ((f =              'bd__editor__' +              Math.floor(2147483648 * Math.random()).toString(36)),            (window[f] = e(0)))          : utils.isString(i)          ? (f = i)          : (h = o.exec(b)) && (f = h[2]),          (b = b.replace(o, '$1' + m + '=' + f)),          b.search(o) < 0 &&            (b += (b.indexOf('?') < 0 ? '?' : '&') + m + '=' + f)        var p = a(c)        utils.isEmptyObject(c.data) || (p += (p ? '&' : '') + a(c.data)),          p && (b = b.replace(/\?/, '?' + p + '&')),          (j.onerror = e(1)),          n && (g = setTimeout(e(1), n)),          d(j, b, l)      }      var d = 'XMLHttpRequest()'      try {        new ActiveXObject('Msxml2.XMLHTTP'),          (d = "ActiveXObject('Msxml2.XMLHTTP')")      } catch (e) {        try {          new ActiveXObject('Microsoft.XMLHTTP'),            (d = "ActiveXObject('Microsoft.XMLHTTP')")        } catch (e) {}      }      var f = new Function('return new ' + d)      return {        request: function (a, d) {          d && 'jsonp' == d.dataType ? c(a, d) : b(a, d)        },        getJSONP: function (a, b, d) {          var e = { data: b, oncomplete: d }          c(a, e)        }      }    })())  var filterWord = (UE.filterWord = (function () {    function a(a) {      return /(class="?Mso|style="[^"]*\bmso\-|w:WordDocument|<(v|o):|lang=)/gi.test(        a      )    }    function b(a) {      return (a = a.replace(/[\d.]+\w+/g, function (a) {        return utils.transUnitToPx(a)      }))    }    function c(a) {      return a        .replace(/[\t\r\n]+/g, ' ')        .replace(/<!--[\s\S]*?-->/gi, '')        .replace(/<v:shape [^>]*>[\s\S]*?.<\/v:shape>/gi, function (a) {          if (browser.opera) return ''          try {            if (/Bitmap/i.test(a)) return ''            var c = a.match(/width:([ \d.]*p[tx])/i)[1],              d = a.match(/height:([ \d.]*p[tx])/i)[1],              e = a.match(/src=\s*"([^"]*)"/i)[1]            return (              '<img width="' +              b(c) +              '" height="' +              b(d) +              '" src="' +              e +              '" />'            )          } catch (f) {            return ''          }        })        .replace(/<\/?div[^>]*>/g, '')        .replace(/v:\w+=(["']?)[^'"]+\1/g, '')        .replace(          /<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|xml|meta|link|style|\w+:\w+)(?=[\s\/>]))[^>]*>/gi,          ''        )        .replace(          /<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,          '<p><strong>$1</strong></p>'        )        .replace(          /\s+(class|lang|align)\s*=\s*(['"]?)([\w-]+)\2/gi,          function (a, b, c, d) {            return 'class' == b && 'MsoListParagraph' == d ? a : ''          }        )        .replace(/<(font|span)[^>]*>(\s*)<\/\1>/gi, function (a, b, c) {          return c.replace(/[\t\r\n ]+/g, ' ')        })        .replace(          /(<[a-z][^>]*)\sstyle=(["'])([^\2]*?)\2/gi,          function (a, c, d, e) {            for (              var f,                g = [],                h = e                  .replace(/^\s+|\s+$/, '')                  .replace(/'/g, "'")                  .replace(/"/gi, "'")                  .replace(/[\d.]+(cm|pt)/g, function (a) {                    return utils.transUnitToPx(a)                  })                  .split(/;\s*/g),                i = 0;              (f = h[i]);              i++            ) {              var j,                k,                l = f.split(':')              if (2 == l.length) {                if (                  ((j = l[0].toLowerCase()),                  (k = l[1].toLowerCase()),                  (/^(background)\w*/.test(j) &&                    0 == k.replace(/(initial|\s)/g, '').length) ||                    (/^(margin)\w*/.test(j) && /^0\w+$/.test(k)))                )                  continue                switch (j) {                  case 'mso-padding-alt':                  case 'mso-padding-top-alt':                  case 'mso-padding-right-alt':                  case 'mso-padding-bottom-alt':                  case 'mso-padding-left-alt':                  case 'mso-margin-alt':                  case 'mso-margin-top-alt':                  case 'mso-margin-right-alt':                  case 'mso-margin-bottom-alt':                  case 'mso-margin-left-alt':                  case 'mso-height':                  case 'mso-width':                  case 'mso-vertical-align-alt':                    ;/<table/.test(c) ||                      (g[i] = j.replace(/^mso-|-alt$/g, '') + ':' + b(k))                    continue                  case 'horiz-align':                    g[i] = 'text-align:' + k                    continue                  case 'vert-align':                    g[i] = 'vertical-align:' + k                    continue                  case 'font-color':                  case 'mso-foreground':                    g[i] = 'color:' + k                    continue                  case 'mso-background':                  case 'mso-highlight':                    g[i] = 'background:' + k                    continue                  case 'mso-default-height':                    g[i] = 'min-height:' + b(k)                    continue                  case 'mso-default-width':                    g[i] = 'min-width:' + b(k)                    continue                  case 'mso-padding-between-alt':                    g[i] = 'border-collapse:separate;border-spacing:' + b(k)                    continue                  case 'text-line-through':                    ;('single' != k && 'double' != k) ||                      (g[i] = 'text-decoration:line-through')                    continue                  case 'mso-zero-height':                    'yes' == k && (g[i] = 'display:none')                    continue                  case 'margin':                    if (!/[1-9]/.test(k)) continue                }                if (                  /^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?:decor|trans)|top-bar|version|vnd|word-break)/.test(                    j                  ) ||                  (/text\-indent|padding|margin/.test(j) && /\-[\d.]+/.test(k))                )                  continue                g[i] = j + ':' + l[1]              }            }            return (              c +              (g.length                ? ' style="' + g.join(';').replace(/;{2,}/g, ';') + '"'                : '')            )          }        )    }    return function (b) {      return a(b) ? c(b) : b    }  })())  !(function () {    function a(a, b, c) {      return a.push(n), b + (c ? 1 : -1)    }    function b(a, b) {      for (var c = 0; c < b; c++) a.push(m)    }    function c(g, h, i, j) {      switch (g.type) {        case 'root':          for (var k, l = 0; (k = g.children[l++]); )            i &&              'element' == k.type &&              !dtd.$inlineWithA[k.tagName] &&              l > 1 &&              (a(h, j, !0), b(h, j)),              c(k, h, i, j)          break        case 'text':          d(g, h)          break        case 'element':          e(g, h, i, j)          break        case 'comment':          f(g, h, i)      }      return h    }    function d(a, b) {      'pre' == a.parentNode.tagName        ? b.push(a.data)        : b.push(            l[a.parentNode.tagName]              ? utils.html(a.data)              : a.data.replace(/[ ]{2}/g, '  ')          )    }    function e(d, e, f, g) {      var h = ''      if (d.attrs) {        h = []        var i = d.attrs        for (var j in i)          h.push(            j +              (void 0 !== i[j]                ? '="' +                  (k[j]                    ? utils.html(i[j]).replace(/["]/g, function (a) {                        return '"'                      })                    : utils.unhtml(i[j])) +                  '"'                : '')          )        h = h.join(' ')      }      if (        (e.push(          '<' +            d.tagName +            (h ? ' ' + h : '') +            (dtd.$empty[d.tagName] ? '/' : '') +            '>'        ),        f &&          !dtd.$inlineWithA[d.tagName] &&          'pre' != d.tagName &&          d.children &&          d.children.length &&          ((g = a(e, g, !0)), b(e, g)),        d.children && d.children.length)      )        for (var l, m = 0; (l = d.children[m++]); )          f &&            'element' == l.type &&            !dtd.$inlineWithA[l.tagName] &&            m > 1 &&            (a(e, g), b(e, g)),            c(l, e, f, g)      dtd.$empty[d.tagName] ||        (f &&          !dtd.$inlineWithA[d.tagName] &&          'pre' != d.tagName &&          d.children &&          d.children.length &&          ((g = a(e, g)), b(e, g)),        e.push('</' + d.tagName + '>'))    }    function f(a, b) {      b.push('<!--' + a.data + '-->')    }    function g(a, b) {      var c      if ('element' == a.type && a.getAttr('id') == b) return a      if (a.children && a.children.length)        for (var d, e = 0; (d = a.children[e++]); ) if ((c = g(d, b))) return c    }    function h(a, b, c) {      if (        ('element' == a.type && a.tagName == b && c.push(a),        a.children && a.children.length)      )        for (var d, e = 0; (d = a.children[e++]); ) h(d, b, c)    }    function i(a, b) {      if (a.children && a.children.length)        for (var c, d = 0; (c = a.children[d]); )          i(c, b),            c.parentNode &&              (c.children && c.children.length && b(c), c.parentNode && d++)      else b(a)    }    var j = (UE.uNode = function (a) {        ;(this.type = a.type),          (this.data = a.data),          (this.tagName = a.tagName),          (this.parentNode = a.parentNode),          (this.attrs = a.attrs || {}),          (this.children = a.children)      }),      k = { href: 1, src: 1, _src: 1, _href: 1, cdata_data: 1 },      l = { style: 1, script: 1 },      m = '    ',      n = '\n'    ;(j.createElement = function (a) {      return /[<>]/.test(a)        ? UE.htmlparser(a).children[0]        : new j({ type: 'element', children: [], tagName: a })    }),      (j.createText = function (a, b) {        return new UE.uNode({          type: 'text',          data: b ? a : utils.unhtml(a || '')        })      }),      (j.prototype = {        toHtml: function (a) {          var b = []          return c(this, b, a, 0), b.join('')        },        innerHTML: function (a) {          if ('element' != this.type || dtd.$empty[this.tagName]) return this          if (utils.isString(a)) {            if (this.children)              for (var b, c = 0; (b = this.children[c++]); ) b.parentNode = null            this.children = []            for (var b, d = UE.htmlparser(a), c = 0; (b = d.children[c++]); )              this.children.push(b), (b.parentNode = this)            return this          }          var d = new UE.uNode({ type: 'root', children: this.children })          return d.toHtml()        },        innerText: function (a, b) {          if ('element' != this.type || dtd.$empty[this.tagName]) return this          if (a) {            if (this.children)              for (var c, d = 0; (c = this.children[d++]); ) c.parentNode = null            return (              (this.children = []), this.appendChild(j.createText(a, b)), this            )          }          return this.toHtml().replace(/<[^>]+>/g, '')        },        getData: function () {          return 'element' == this.type ? '' : this.data        },        firstChild: function () {          return this.children ? this.children[0] : null        },        lastChild: function () {          return this.children ? this.children[this.children.length - 1] : null        },        previousSibling: function () {          for (var a, b = this.parentNode, c = 0; (a = b.children[c]); c++)            if (a === this) return 0 == c ? null : b.children[c - 1]        },        nextSibling: function () {          for (var a, b = this.parentNode, c = 0; (a = b.children[c++]); )            if (a === this) return b.children[c]        },        replaceChild: function (a, b) {          if (this.children) {            a.parentNode && a.parentNode.removeChild(a)            for (var c, d = 0; (c = this.children[d]); d++)              if (c === b)                return (                  this.children.splice(d, 1, a),                  (b.parentNode = null),                  (a.parentNode = this),                  a                )          }        },        appendChild: function (a) {          if (            'root' == this.type ||            ('element' == this.type && !dtd.$empty[this.tagName])          ) {            this.children || (this.children = []),              a.parentNode && a.parentNode.removeChild(a)            for (var b, c = 0; (b = this.children[c]); c++)              if (b === a) {                this.children.splice(c, 1)                break              }            return this.children.push(a), (a.parentNode = this), a          }        },        insertBefore: function (a, b) {          if (this.children) {            a.parentNode && a.parentNode.removeChild(a)            for (var c, d = 0; (c = this.children[d]); d++)              if (c === b)                return this.children.splice(d, 0, a), (a.parentNode = this), a          }        },        insertAfter: function (a, b) {          if (this.children) {            a.parentNode && a.parentNode.removeChild(a)            for (var c, d = 0; (c = this.children[d]); d++)              if (c === b)                return (                  this.children.splice(d + 1, 0, a), (a.parentNode = this), a                )          }        },        removeChild: function (a, b) {          if (this.children)            for (var c, d = 0; (c = this.children[d]); d++)              if (c === a) {                if (                  (this.children.splice(d, 1),                  (c.parentNode = null),                  b && c.children && c.children.length)                )                  for (var e, f = 0; (e = c.children[f]); f++)                    this.children.splice(d + f, 0, e), (e.parentNode = this)                return c              }        },        getAttr: function (a) {          return this.attrs && this.attrs[a.toLowerCase()]        },        setAttr: function (a, b) {          if (!a) return void delete this.attrs          if ((this.attrs || (this.attrs = {}), utils.isObject(a)))            for (var c in a)              a[c] ? (this.attrs[c.toLowerCase()] = a[c]) : delete this.attrs[c]          else b ? (this.attrs[a.toLowerCase()] = b) : delete this.attrs[a]        },        getIndex: function () {          for (var a, b = this.parentNode, c = 0; (a = b.children[c]); c++)            if (a === this) return c          return -1        },        getNodeById: function (a) {          var b          if (this.children && this.children.length)            for (var c, d = 0; (c = this.children[d++]); )              if ((b = g(c, a))) return b        },        getNodesByTagName: function (a) {          a = utils            .trim(a)            .replace(/[ ]{2,}/g, ' ')            .split(' ')          var b = [],            c = this          return (            utils.each(a, function (a) {              if (c.children && c.children.length)                for (var d, e = 0; (d = c.children[e++]); ) h(d, a, b)            }),            b          )        },        getStyle: function (a) {          var b = this.getAttr('style')          if (!b) return ''          var c = new RegExp('(^|;)\\s*' + a + ':([^;]+)', 'i'),            d = b.match(c)          return d && d[0] ? d[2] : ''        },        setStyle: function (a, b) {          function c(a, b) {            var c = new RegExp('(^|;)\\s*' + a + ':([^;]+;?)', 'gi')            ;(d = d.replace(c, '$1')),              b && (d = a + ':' + utils.unhtml(b) + ';' + d)          }          var d = this.getAttr('style')          if ((d || (d = ''), utils.isObject(a))) for (var e in a) c(e, a[e])          else c(a, b)          this.setAttr('style', utils.trim(d))        },        traversal: function (a) {          return this.children && this.children.length && i(this, a), this        }      })  })()  var htmlparser = (UE.htmlparser = function (a, b) {      function c(a, b) {        if (m[a.tagName]) {          var c = k.createElement(m[a.tagName])          a.appendChild(c), c.appendChild(k.createText(b)), (a = c)        } else a.appendChild(k.createText(b))      }      function d(a, b, c) {        var e        if ((e = l[b])) {          for (var f, h = a; 'root' != h.type; ) {            if (              utils.isArray(e)                ? utils.indexOf(e, h.tagName) != -1                : e == h.tagName            ) {              ;(a = h), (f = !0)              break            }            h = h.parentNode          }          f || (a = d(a, utils.isArray(e) ? e[0] : e))        }        var i = new k({          parentNode: a,          type: 'element',          tagName: b.toLowerCase(),          children: dtd.$empty[b] ? null : []        })        if (c) {          for (var m, n = {}; (m = g.exec(c)); )            n[m[1].toLowerCase()] = j[m[1].toLowerCase()]              ? m[2] || m[3] || m[4]              : utils.unhtml(m[2] || m[3] || m[4])          i.attrs = n        }        return a.children.push(i), dtd.$empty[b] ? a : i      }      function e(a, b) {        a.children.push(new k({ type: 'comment', data: b, parentNode: a }))      }      var f =          /<(?:(?:\/([^>]+)>)|(?:!--([\S|\s]*?)-->)|(?:([^\s\/<>]+)\s*((?:(?:"[^"]*")|(?:'[^']*')|[^"'<>])*)\/?>))/g,        g =          /([\w\-:.]+)(?:(?:\s*=\s*(?:(?:"([^"]*)")|(?:'([^']*)')|([^\s>]+)))|(?=\s|$))/g,        h = {          b: 1,          code: 1,          i: 1,          u: 1,          strike: 1,          s: 1,          tt: 1,          strong: 1,          q: 1,          samp: 1,          em: 1,          span: 1,          sub: 1,          img: 1,          sup: 1,          font: 1,          big: 1,          small: 1,          iframe: 1,          a: 1,          br: 1,          pre: 1        }      ;(a = a.replace(new RegExp(domUtils.fillChar, 'g'), '')),        b ||          (a = a.replace(            new RegExp(              '[\\r\\t\\n' +                (b ? '' : ' ') +                ']*</?(\\w+)\\s*(?:[^>]*)>[\\r\\t\\n' +                (b ? '' : ' ') +                ']*',              'g'            ),            function (a, c) {              return c && h[c.toLowerCase()]                ? a.replace(/(^[\n\r]+)|([\n\r]+$)/g, '')                : a                    .replace(new RegExp('^[\\r\\n' + (b ? '' : ' ') + ']+'), '')                    .replace(new RegExp('[\\r\\n' + (b ? '' : ' ') + ']+$'), '')            }          ))      for (        var i,          j = { href: 1, src: 1 },          k = UE.uNode,          l = {            td: 'tr',            tr: ['tbody', 'thead', 'tfoot'],            tbody: 'table',            th: 'tr',            thead: 'table',            tfoot: 'table',            caption: 'table',            li: ['ul', 'ol'],            dt: 'dl',            dd: 'dl',            option: 'select'          },          m = { ol: 'li', ul: 'li' },          n = 0,          o = 0,          p = new k({ type: 'root', children: [] }),          q = p;        (i = f.exec(a));      ) {        n = i.index        try {          if ((n > o && c(q, a.slice(o, n)), i[3]))            dtd.$cdata[q.tagName]              ? c(q, i[0])              : (q = d(q, i[3].toLowerCase(), i[4]))          else if (i[1]) {            if ('root' != q.type)              if (dtd.$cdata[q.tagName] && !dtd.$cdata[i[1]]) c(q, i[0])              else {                for (                  var r = q;                  'element' == q.type && q.tagName != i[1].toLowerCase();                )                  if (((q = q.parentNode), 'root' == q.type))                    throw ((q = r), 'break')                q = q.parentNode              }          } else i[2] && e(q, i[2])        } catch (s) {}        o = f.lastIndex      }      return o < a.length && c(q, a.slice(o)), p    }),    filterNode = (UE.filterNode = (function () {      function a(b, c) {        switch (b.type) {          case 'text':            break          case 'element':            var d            if ((d = c[b.tagName]))              if ('-' === d) b.parentNode.removeChild(b)              else if (utils.isFunction(d)) {                var e = b.parentNode,                  f = b.getIndex()                if ((d(b), b.parentNode)) {                  if (b.children)                    for (var g, h = 0; (g = b.children[h]); )                      a(g, c), g.parentNode && h++                } else                  for (var g, h = f; (g = e.children[h]); )                    a(g, c), g.parentNode && h++              } else {                var i = d.$                if (i && b.attrs) {                  var j,                    k = {}                  for (var l in i) {                    if (                      ((j = b.getAttr(l)), 'style' == l && utils.isArray(i[l]))                    ) {                      var m = []                      utils.each(i[l], function (a) {                        var c                        ;(c = b.getStyle(a)) && m.push(a + ':' + c)                      }),                        (j = m.join(';'))                    }                    j && (k[l] = j)                  }                  b.attrs = k                }                if (b.children)                  for (var g, h = 0; (g = b.children[h]); )                    a(g, c), g.parentNode && h++              }            else if (dtd.$cdata[b.tagName]) b.parentNode.removeChild(b)            else {              var e = b.parentNode,                f = b.getIndex()              b.parentNode.removeChild(b, !0)              for (var g, h = f; (g = e.children[h]); )                a(g, c), g.parentNode && h++            }            break          case 'comment':            b.parentNode.removeChild(b)        }      }      return function (b, c) {        if (utils.isEmptyObject(c)) return b        var d        ;(d = c['-']) &&          utils.each(d.split(' '), function (a) {            c[a] = '-'          })        for (var e, f = 0; (e = b.children[f]); ) a(e, c), e.parentNode && f++        return b      }    })())  UE.plugin = (function () {    var a = {}    return {      register: function (b, c, d, e) {        d && utils.isFunction(d) && ((e = d), (d = null)),          (a[b] = { optionName: d || b, execFn: c, afterDisabled: e })      },      load: function (b) {        utils.each(a, function (a) {          var c = a.execFn.call(b)          b.options[a.optionName] !== !1            ? c &&              utils.each(c, function (a, c) {                switch (c.toLowerCase()) {                  case 'shortcutkey':                    b.addshortcutkey(a)                    break                  case 'bindevents':                    utils.each(a, function (a, c) {                      b.addListener(c, a)                    })                    break                  case 'bindmultievents':                    utils.each(utils.isArray(a) ? a : [a], function (a) {                      var c = utils.trim(a.type).split(/\s+/)                      utils.each(c, function (c) {                        b.addListener(c, a.handler)                      })                    })                    break                  case 'commands':                    utils.each(a, function (a, c) {                      b.commands[c] = a                    })                    break                  case 'outputrule':                    b.addOutputRule(a)                    break                  case 'inputrule':                    b.addInputRule(a)                    break                  case 'defaultoptions':                    b.setOpt(a)                }              })            : a.afterDisabled && a.afterDisabled.call(b)        }),          utils.each(UE.plugins, function (a) {            a.call(b)          })      },      run: function (b, c) {        var d = a[b]        d && d.exeFn.call(c)      }    }  })()  var keymap = (UE.keymap = {      Backspace: 8,      Tab: 9,      Enter: 13,      Shift: 16,      Control: 17,      Alt: 18,      CapsLock: 20,      Esc: 27,      Spacebar: 32,      PageUp: 33,      PageDown: 34,      End: 35,      Home: 36,      Left: 37,      Up: 38,      Right: 39,      Down: 40,      Insert: 45,      Del: 46,      NumLock: 144,      Cmd: 91,      '=': 187,      '-': 189,      b: 66,      i: 73,      z: 90,      y: 89,      v: 86,      x: 88,      s: 83,      n: 78    }),    LocalStorage = (UE.LocalStorage = (function () {      function a() {        var a = document.createElement('div')        return (          (a.style.display = 'none'),          a.addBehavior            ? (a.addBehavior('#default#userdata'),              {                getItem: function (b) {                  var d = null                  try {                    document.body.appendChild(a),                      a.load(c),                      (d = a.getAttribute(b)),                      document.body.removeChild(a)                  } catch (e) {}                  return d                },                setItem: function (b, d) {                  document.body.appendChild(a),                    a.setAttribute(b, d),                    a.save(c),                    document.body.removeChild(a)                },                removeItem: function (b) {                  document.body.appendChild(a),                    a.removeAttribute(b),                    a.save(c),                    document.body.removeChild(a)                }              })            : null        )      }      var b = window.localStorage || a() || null,        c = 'localStorage'      return {        saveLocalData: function (a, c) {          return !(!b || !c) && (b.setItem(a, c), !0)        },        getLocalData: function (a) {          return b ? b.getItem(a) : null        },        removeItem: function (a) {          b && b.removeItem(a)        }      }    })())  !(function () {    var a = 'ueditor_preference'    ;(UE.Editor.prototype.setPreferences = function (b, c) {      var d = {}      utils.isString(b) ? (d[b] = c) : (d = b)      var e = LocalStorage.getLocalData(a)      e && (e = utils.str2json(e)) ? utils.extend(e, d) : (e = d),        e && LocalStorage.saveLocalData(a, utils.json2str(e))    }),      (UE.Editor.prototype.getPreferences = function (b) {        var c = LocalStorage.getLocalData(a)        return c && (c = utils.str2json(c)) ? (b ? c[b] : c) : null      }),      (UE.Editor.prototype.removePreferences = function (b) {        var c = LocalStorage.getLocalData(a)        c && (c = utils.str2json(c)) && ((c[b] = void 0), delete c[b]),          c && LocalStorage.saveLocalData(a, utils.json2str(c))      })  })(),    (UE.plugins.defaultfilter = function () {      var a = this      a.setOpt({ allowDivTransToP: !0, disabledTableInTable: !0 }),        a.addInputRule(function (b) {          function c(a) {            for (; a && 'element' == a.type; ) {              if ('td' == a.tagName) return !0              a = a.parentNode            }            return !1          }          var d,            e = this.options.allowDivTransToP          b.traversal(function (b) {            if ('element' == b.type) {              if (                !dtd.$cdata[b.tagName] &&                a.options.autoClearEmptyNode &&                dtd.$inline[b.tagName] &&                !dtd.$empty[b.tagName] &&                (!b.attrs || utils.isEmptyObject(b.attrs))              )                return void (b.firstChild()                  ? 'span' != b.tagName ||                    (b.attrs && !utils.isEmptyObject(b.attrs)) ||                    b.parentNode.removeChild(b, !0)                  : b.parentNode.removeChild(b))              switch (b.tagName) {                case 'style':                case 'script':                  b.setAttr({                    cdata_tag: b.tagName,                    cdata_data: b.innerHTML() || '',                    _ue_custom_node_: 'true'                  }),                    (b.tagName = 'div'),                    b.innerHTML('')                  break                case 'a':                  ;(d = b.getAttr('href')) && b.setAttr('_href', d)                  break                case 'img':                  if ((d = b.getAttr('src')) && /^data:/.test(d)) {                    b.parentNode.removeChild(b)                    break                  }                  b.setAttr('_src', b.getAttr('src'))                  break                case 'span':                  browser.webkit &&                    (d = b.getStyle('white-space')) &&                    /nowrap|normal/.test(d) &&                    (b.setStyle('white-space', ''),                    a.options.autoClearEmptyNode &&                      utils.isEmptyObject(b.attrs) &&                      b.parentNode.removeChild(b, !0)),                    (d = b.getAttr('id')),                    d &&                      /^_baidu_bookmark_/i.test(d) &&                      b.parentNode.removeChild(b)                  break                case 'p':                  ;(d = b.getAttr('align')) &&                    (b.setAttr('align'), b.setStyle('text-align', d)),                    utils.each(b.children, function (a) {                      if ('element' == a.type && 'p' == a.tagName) {                        var c = a.nextSibling()                        b.parentNode.insertAfter(a, b)                        for (var d = a; c; ) {                          var e = c.nextSibling()                          b.parentNode.insertAfter(c, d), (d = c), (c = e)                        }                        return !1                      }                    }),                    b.firstChild() ||                      b.innerHTML(browser.ie ? ' ' : '<br/>')                  break                case 'div':                  if (b.getAttr('cdata_tag')) break                  if (                    ((d = b.getAttr('class')), d && /^line number\d+/.test(d))                  )                    break                  if (!e) break                  for (                    var f, g = UE.uNode.createElement('p');                    (f = b.firstChild());                  )                    'text' != f.type && UE.dom.dtd.$block[f.tagName]                      ? g.firstChild()                        ? (b.parentNode.insertBefore(g, b),                          (g = UE.uNode.createElement('p')))                        : b.parentNode.insertBefore(f, b)                      : g.appendChild(f)                  g.firstChild() && b.parentNode.insertBefore(g, b),                    b.parentNode.removeChild(b)                  break                case 'dl':                  b.tagName = 'ul'                  break                case 'dt':                case 'dd':                  b.tagName = 'li'                  break                case 'li':                  var h = b.getAttr('class')                  ;(h && /list\-/.test(h)) || b.setAttr()                  var i = b.getNodesByTagName('ol ul')                  UE.utils.each(i, function (a) {                    b.parentNode.insertAfter(a, b)                  })                  break                case 'td':                case 'th':                case 'caption':                  ;(b.children && b.children.length) ||                    b.appendChild(                      browser.ie11below                        ? UE.uNode.createText(' ')                        : UE.uNode.createElement('br')                    )                  break                case 'table':                  a.options.disabledTableInTable &&                    c(b) &&                    (b.parentNode.insertBefore(                      UE.uNode.createText(b.innerText()),                      b                    ),                    b.parentNode.removeChild(b))              }            }          })        }),        a.addOutputRule(function (b) {          var c          b.traversal(function (b) {            if ('element' == b.type) {              if (                a.options.autoClearEmptyNode &&                dtd.$inline[b.tagName] &&                !dtd.$empty[b.tagName] &&                (!b.attrs || utils.isEmptyObject(b.attrs))              )                return void (b.firstChild()                  ? 'span' != b.tagName ||                    (b.attrs && !utils.isEmptyObject(b.attrs)) ||                    b.parentNode.removeChild(b, !0)                  : b.parentNode.removeChild(b))              switch (b.tagName) {                case 'div':                  ;(c = b.getAttr('cdata_tag')) &&                    ((b.tagName = c),                    b.appendChild(UE.uNode.createText(b.getAttr('cdata_data'))),                    b.setAttr({                      cdata_tag: '',                      cdata_data: '',                      _ue_custom_node_: ''                    }))                  break                case 'a':                  ;(c = b.getAttr('_href')) &&                    b.setAttr({ href: utils.html(c), _href: '' })                  break                case 'span':                  ;(c = b.getAttr('id')),                    c &&                      /^_baidu_bookmark_/i.test(c) &&                      b.parentNode.removeChild(b)                  break                case 'img':                  ;(c = b.getAttr('_src')) &&                    b.setAttr({ src: b.getAttr('_src'), _src: '' })              }            }          })        })    }),    (UE.commands.inserthtml = {      execCommand: function (a, b, c) {        var d,          e,          f = this        if (b && f.fireEvent('beforeinserthtml', b) !== !0) {          if (            ((d = f.selection.getRange()),            (e = d.document.createElement('div')),            (e.style.display = 'inline'),            !c)          ) {            var g = UE.htmlparser(b)            f.options.filterRules && UE.filterNode(g, f.options.filterRules),              f.filterInputRule(g),              (b = g.toHtml())          }          if (((e.innerHTML = utils.trim(b)), !d.collapsed)) {            var h = d.startContainer            if (              (domUtils.isFillChar(h) && d.setStartBefore(h),              (h = d.endContainer),              domUtils.isFillChar(h) && d.setEndAfter(h),              d.txtToElmBoundary(),              d.endContainer &&                1 == d.endContainer.nodeType &&                ((h = d.endContainer.childNodes[d.endOffset]),                h && domUtils.isBr(h) && d.setEndAfter(h)),              0 == d.startOffset &&                ((h = d.startContainer),                domUtils.isBoundaryNode(h, 'firstChild') &&                  ((h = d.endContainer),                  d.endOffset ==                    (3 == h.nodeType                      ? h.nodeValue.length                      : h.childNodes.length) &&                    domUtils.isBoundaryNode(h, 'lastChild') &&                    ((f.body.innerHTML =                      '<p>' + (browser.ie ? '' : '<br/>') + '</p>'),                    d.setStart(f.body.firstChild, 0).collapse(!0)))),              !d.collapsed && d.deleteContents(),              1 == d.startContainer.nodeType)            ) {              var i,                j = d.startContainer.childNodes[d.startOffset]              if (                j &&                domUtils.isBlockElm(j) &&                (i = j.previousSibling) &&                domUtils.isBlockElm(i)              ) {                for (                  d.setEnd(i, i.childNodes.length).collapse();                  j.firstChild;                )                  i.appendChild(j.firstChild)                domUtils.remove(j)              }            }          }          var j,            k,            i,            l,            m,            n = 0          d.inFillChar() &&            ((j = d.startContainer),            domUtils.isFillChar(j)              ? (d.setStartBefore(j).collapse(!0), domUtils.remove(j))              : domUtils.isFillChar(j, !0) &&                ((j.nodeValue = j.nodeValue.replace(fillCharReg, '')),                d.startOffset--,                d.collapsed && d.collapse(!0)))          var o = domUtils.findParentByTagName(d.startContainer, 'li', !0)          if (o) {            for (var p, q; (j = e.firstChild); ) {              for (                ;                j &&                (3 == j.nodeType ||                  !domUtils.isBlockElm(j) ||                  'HR' == j.tagName);              )                (p = j.nextSibling),                  d.insertNode(j).collapse(),                  (q = j),                  (j = p)              if (j)                if (/^(ol|ul)$/i.test(j.tagName)) {                  for (; j.firstChild; )                    (q = j.firstChild),                      domUtils.insertAfter(o, j.firstChild),                      (o = o.nextSibling)                  domUtils.remove(j)                } else {                  var r                  ;(p = j.nextSibling),                    (r = f.document.createElement('li')),                    domUtils.insertAfter(o, r),                    r.appendChild(j),                    (q = j),                    (j = p),                    (o = r)                }            }            ;(o = domUtils.findParentByTagName(d.startContainer, 'li', !0)),              domUtils.isEmptyBlock(o) && domUtils.remove(o),              q && d.setStartAfter(q).collapse(!0).select(!0)          } else {            for (; (j = e.firstChild); ) {              if (n) {                for (                  var s = f.document.createElement('p');                  j && (3 == j.nodeType || !dtd.$block[j.tagName]);                )                  (m = j.nextSibling), s.appendChild(j), (j = m)                s.firstChild && (j = s)              }              if (                (d.insertNode(j),                (m = j.nextSibling),                !n &&                  j.nodeType == domUtils.NODE_ELEMENT &&                  domUtils.isBlockElm(j) &&                  ((k = domUtils.findParent(j, function (a) {                    return domUtils.isBlockElm(a)                  })),                  k &&                    'body' != k.tagName.toLowerCase() &&                    (!dtd[k.tagName][j.nodeName] || j.parentNode !== k)))              ) {                if (dtd[k.tagName][j.nodeName])                  for (l = j.parentNode; l !== k; ) (i = l), (l = l.parentNode)                else i = k                domUtils.breakParent(j, i || l)                var i = j.previousSibling                domUtils.trimWhiteTextNode(i),                  i.childNodes.length || domUtils.remove(i),                  !browser.ie &&                    (p = j.nextSibling) &&                    domUtils.isBlockElm(p) &&                    p.lastChild &&                    !domUtils.isBr(p.lastChild) &&                    p.appendChild(f.document.createElement('br')),                  (n = 1)              }              var p = j.nextSibling              if (!e.firstChild && p && domUtils.isBlockElm(p)) {                d.setStart(p, 0).collapse(!0)                break              }              d.setEndAfter(j).collapse()            }            if (              ((j = d.startContainer),              m && domUtils.isBr(m) && domUtils.remove(m),              domUtils.isBlockElm(j) && domUtils.isEmptyNode(j))            )              if ((m = j.nextSibling))                domUtils.remove(j),                  1 == m.nodeType &&                    dtd.$block[m.tagName] &&                    d.setStart(m, 0).collapse(!0).shrinkBoundary()              else                try {                  j.innerHTML = browser.ie ? domUtils.fillChar : '<br/>'                } catch (t) {                  d.setStartBefore(j), domUtils.remove(j)                }            try {              d.select(!0)            } catch (t) {}          }          setTimeout(function () {            ;(d = f.selection.getRange()),              d.scrollToView(                f.autoHeightEnabled,                f.autoHeightEnabled ? domUtils.getXY(f.iframe).y : 0              ),              f.fireEvent('afterinserthtml', b)          }, 200)        }      }    }),    (UE.plugins.autotypeset = function () {      function a(a, b) {        return a && 3 != a.nodeType          ? domUtils.isBr(a)            ? 1            : a && a.parentNode && l[a.tagName.toLowerCase()]            ? (g && g.contains(a)) || a.getAttribute('pagebreak')              ? 0              : b              ? !domUtils.isEmptyBlock(a)              : domUtils.isEmptyBlock(                  a,                  new RegExp('[\\s' + domUtils.fillChar + ']', 'g')                )            : void 0          : 0      }      function b(a) {        a.style.cssText ||          (domUtils.removeAttributes(a, ['style']),          'span' == a.tagName.toLowerCase() &&            domUtils.hasNoAttributes(a) &&            domUtils.remove(a, !0))      }      function c(c, f) {        var h,          l = this        if (f) {          if (!i.pasteFilter) return          ;(h = l.document.createElement('div')), (h.innerHTML = f.html)        } else h = l.document.body        for (          var m, n = domUtils.getElementsByTagName(h, '*'), o = 0;          (m = n[o++]);        )          if (l.fireEvent('excludeNodeinautotype', m) !== !0) {            if (              (i.clearFontSize &&                m.style.fontSize &&                (domUtils.removeStyle(m, 'font-size'), b(m)),              i.clearFontFamily &&                m.style.fontFamily &&                (domUtils.removeStyle(m, 'font-family'), b(m)),              a(m))            ) {              if (i.mergeEmptyline)                for (                  var p, q = m.nextSibling, r = domUtils.isBr(m);                  a(q) &&                  ((p = q),                  (q = p.nextSibling),                  !r || (q && (!q || domUtils.isBr(q))));                )                  domUtils.remove(p)              if (                i.removeEmptyline &&                domUtils.inDoc(m, h) &&                !k[m.parentNode.tagName.toLowerCase()]              ) {                if (                  domUtils.isBr(m) &&                  ((q = m.nextSibling), q && !domUtils.isBr(q))                )                  continue                domUtils.remove(m)                continue              }            }            if (              (a(m, !0) &&                'SPAN' != m.tagName &&                (i.indent && (m.style.textIndent = i.indentValue),                i.textAlign && (m.style.textAlign = i.textAlign)),              i.removeClass && m.className && !j[m.className.toLowerCase()])            ) {              if (g && g.contains(m)) continue              domUtils.removeAttributes(m, ['class'])            }            if (              i.imageBlockLine &&              'img' == m.tagName.toLowerCase() &&              !m.getAttribute('emotion')            )              if (f) {                var s = m                switch (i.imageBlockLine) {                  case 'left':                  case 'right':                  case 'none':                    for (                      var p, t, q, u = s.parentNode;                      dtd.$inline[u.tagName] || 'A' == u.tagName;                    )                      u = u.parentNode                    if (                      ((p = u),                      'P' == p.tagName &&                        'center' == domUtils.getStyle(p, 'text-align') &&                        !domUtils.isBody(p) &&                        1 ==                          domUtils.getChildCount(p, function (a) {                            return (                              !domUtils.isBr(a) && !domUtils.isWhitespace(a)                            )                          }))                    )                      if (                        ((t = p.previousSibling),                        (q = p.nextSibling),                        t &&                          q &&                          1 == t.nodeType &&                          1 == q.nodeType &&                          t.tagName == q.tagName &&                          domUtils.isBlockElm(t))                      ) {                        for (t.appendChild(p.firstChild); q.firstChild; )                          t.appendChild(q.firstChild)                        domUtils.remove(p), domUtils.remove(q)                      } else domUtils.setStyle(p, 'text-align', '')                    domUtils.setStyle(s, 'float', i.imageBlockLine)                    break                  case 'center':                    if ('center' != l.queryCommandValue('imagefloat')) {                      for (                        u = s.parentNode,                          domUtils.setStyle(s, 'float', 'none'),                          p = s;                        u &&                        1 ==                          domUtils.getChildCount(u, function (a) {                            return (                              !domUtils.isBr(a) && !domUtils.isWhitespace(a)                            )                          }) &&                        (dtd.$inline[u.tagName] || 'A' == u.tagName);                      )                        (p = u), (u = u.parentNode)                      var v = l.document.createElement('p')                      domUtils.setAttributes(v, { style: 'text-align:center' }),                        p.parentNode.insertBefore(v, p),                        v.appendChild(p),                        domUtils.setStyle(p, 'float', '')                    }                }              } else {                var w = l.selection.getRange()                w.selectNode(m).select(),                  l.execCommand('imagefloat', i.imageBlockLine)              }            i.removeEmptyNode &&              i.removeTagNames[m.tagName.toLowerCase()] &&              domUtils.hasNoAttributes(m) &&              domUtils.isEmptyBlock(m) &&              domUtils.remove(m)          }        if (i.tobdc) {          var x = UE.htmlparser(h.innerHTML)          x.traversal(function (a) {            'text' == a.type && (a.data = e(a.data))          }),            (h.innerHTML = x.toHtml())        }        if (i.bdc2sb) {          var x = UE.htmlparser(h.innerHTML)          x.traversal(function (a) {            'text' == a.type && (a.data = d(a.data))          }),            (h.innerHTML = x.toHtml())        }        f && (f.html = h.innerHTML)      }      function d(a) {        for (var b = '', c = 0; c < a.length; c++) {          var d = a.charCodeAt(c)          b +=            d >= 65281 && d <= 65373              ? String.fromCharCode(a.charCodeAt(c) - 65248)              : 12288 == d              ? String.fromCharCode(a.charCodeAt(c) - 12288 + 32)              : a.charAt(c)        }        return b      }      function e(a) {        a = utils.html(a)        for (var b = '', c = 0; c < a.length; c++)          b +=            32 == a.charCodeAt(c)              ? String.fromCharCode(12288)              : a.charCodeAt(c) < 127              ? String.fromCharCode(a.charCodeAt(c) + 65248)              : a.charAt(c)        return b      }      function f() {        var a = h.getPreferences('autotypeset')        utils.extend(h.options.autotypeset, a)      }      this.setOpt({        autotypeset: {          mergeEmptyline: !0,          removeClass: !0,          removeEmptyline: !1,          textAlign: 'left',          imageBlockLine: 'center',          pasteFilter: !1,          clearFontSize: !1,          clearFontFamily: !1,          removeEmptyNode: !1,          removeTagNames: utils.extend({ div: 1 }, dtd.$removeEmpty),          indent: !1,          indentValue: '2em',          bdc2sb: !1,          tobdc: !1        }      })      var g,        h = this,        i = h.options.autotypeset,        j = { selectTdClass: 1, pagebreak: 1, anchorclass: 1 },        k = { li: 1 },        l = {          div: 1,          p: 1,          blockquote: 1,          center: 1,          h1: 1,          h2: 1,          h3: 1,          h4: 1,          h5: 1,          h6: 1,          span: 1        }      i &&        (f(),        i.pasteFilter && h.addListener('beforepaste', c),        (h.commands.autotypeset = {          execCommand: function () {            h.removeListener('beforepaste', c),              i.pasteFilter && h.addListener('beforepaste', c),              c.call(h)          }        }))    }),    UE.plugin.register('autosubmit', function () {      return {        shortcutkey: { autosubmit: 'ctrl+13' },        commands: {          autosubmit: {            execCommand: function () {              var a = this,                b = domUtils.findParentByTagName(a.iframe, 'form', !1)              if (b) {                if (a.fireEvent('beforesubmit') === !1) return                a.sync(), b.submit()              }            }          }        }      }    }),    UE.plugin.register('background', function () {      function a(a) {        var b = {},          c = a.split(';')        return (          utils.each(c, function (a) {            var c = a.indexOf(':'),              d = utils.trim(a.substr(0, c)).toLowerCase()            d && (b[d] = utils.trim(a.substr(c + 1) || ''))          }),          b        )      }      function b(a) {        if (a) {          var b = []          for (var c in a) a.hasOwnProperty(c) && b.push(c + ':' + a[c] + '; ')          utils.cssRule(            e,            b.length ? 'body{' + b.join('') + '}' : '',            d.document          )        } else utils.cssRule(e, '', d.document)      }      var c,        d = this,        e = 'editor_background',        f = new RegExp('body[\\s]*\\{(.+)\\}', 'i'),        g = d.hasContents      return (        (d.hasContents = function () {          return !!d.queryCommandValue('background') || g.apply(d, arguments)        }),        {          bindEvents: {            getAllHtml: function (a, b) {              var c = this.body,                e = domUtils.getComputedStyle(c, 'background-image'),                f = ''              f =                e.indexOf(d.options.imagePath) > 0                  ? e                      .substring(e.indexOf(d.options.imagePath), e.length - 1)                      .replace(/"|\(|\)/gi, '')                  : 'none' != e                  ? e.replace(/url\("?|"?\)/gi, '')                  : ''              var g = '<style type="text/css">body{',                h = {                  'background-color':                    domUtils.getComputedStyle(c, 'background-color') ||                    '#ffffff',                  'background-image': f ? 'url(' + f + ')' : '',                  'background-repeat':                    domUtils.getComputedStyle(c, 'background-repeat') || '',                  'background-position': browser.ie                    ? domUtils.getComputedStyle(c, 'background-position-x') +                      ' ' +                      domUtils.getComputedStyle(c, 'background-position-y')                    : domUtils.getComputedStyle(c, 'background-position'),                  height: domUtils.getComputedStyle(c, 'height')                }              for (var i in h)                h.hasOwnProperty(i) && (g += i + ':' + h[i] + '; ')              ;(g += '}</style> '), b.push(g)            },            aftersetcontent: function () {              0 == c && b()            }          },          inputRule: function (d) {            ;(c = !1),              utils.each(d.getNodesByTagName('p'), function (d) {                var e = d.getAttr('data-background')                e && ((c = !0), b(a(e)), d.parentNode.removeChild(d))              })          },          outputRule: function (a) {            var b = this,              c = (utils.cssRule(e, b.document) || '')                .replace(/[\n\r]+/g, '')                .match(f)            c &&              a.appendChild(                UE.uNode.createElement(                  '<p style="display:none;" data-background="' +                    utils.trim(c[1].replace(/"/g, '').replace(/[\s]+/g, ' ')) +                    '"><br/></p>'                )              )          },          commands: {            background: {              execCommand: function (a, c) {                b(c)              },              queryCommandValue: function () {                var b = this,                  c = (utils.cssRule(e, b.document) || '')                    .replace(/[\n\r]+/g, '')                    .match(f)                return c ? a(c[1]) : null              },              notNeedUndo: !0            }          }        }      )    }),    (UE.commands.imagefloat = {      execCommand: function (a, b) {        var c = this,          d = c.selection.getRange()        if (!d.collapsed) {          var e = d.getClosedNode()          if (e && 'IMG' == e.tagName)            switch (b) {              case 'left':              case 'right':              case 'none':                for (                  var f, g, h, i = e.parentNode;                  dtd.$inline[i.tagName] || 'A' == i.tagName;                )                  i = i.parentNode                if (                  ((f = i),                  'P' == f.tagName &&                    'center' == domUtils.getStyle(f, 'text-align'))                ) {                  if (                    !domUtils.isBody(f) &&                    1 ==                      domUtils.getChildCount(f, function (a) {                        return !domUtils.isBr(a) && !domUtils.isWhitespace(a)                      })                  )                    if (                      ((g = f.previousSibling),                      (h = f.nextSibling),                      g &&                        h &&                        1 == g.nodeType &&                        1 == h.nodeType &&                        g.tagName == h.tagName &&                        domUtils.isBlockElm(g))                    ) {                      for (g.appendChild(f.firstChild); h.firstChild; )                        g.appendChild(h.firstChild)                      domUtils.remove(f), domUtils.remove(h)                    } else domUtils.setStyle(f, 'text-align', '')                  d.selectNode(e).select()                }                domUtils.setStyle(e, 'float', 'none' == b ? '' : b),                  'none' == b && domUtils.removeAttributes(e, 'align')                break              case 'center':                if ('center' != c.queryCommandValue('imagefloat')) {                  for (                    i = e.parentNode,                      domUtils.setStyle(e, 'float', ''),                      domUtils.removeAttributes(e, 'align'),                      f = e;                    i &&                    1 ==                      domUtils.getChildCount(i, function (a) {                        return !domUtils.isBr(a) && !domUtils.isWhitespace(a)                      }) &&                    (dtd.$inline[i.tagName] || 'A' == i.tagName);                  )                    (f = i), (i = i.parentNode)                  d.setStartBefore(f).setCursor(!1),                    (i = c.document.createElement('div')),                    i.appendChild(f),                    domUtils.setStyle(f, 'float', ''),                    c.execCommand(                      'insertHtml',                      '<p id="_img_parent_tmp" style="text-align:center">' +                        i.innerHTML +                        '</p>'                    ),                    (f = c.document.getElementById('_img_parent_tmp')),                    f.removeAttribute('id'),                    (f = f.firstChild),                    d.selectNode(f).select(),                    (h = f.parentNode.nextSibling),                    h && domUtils.isEmptyNode(h) && domUtils.remove(h)                }            }        }      },      queryCommandValue: function () {        var a,          b,          c = this.selection.getRange()        return c.collapsed          ? 'none'          : ((a = c.getClosedNode()),            a && 1 == a.nodeType && 'IMG' == a.tagName              ? ((b =                  domUtils.getComputedStyle(a, 'float') ||                  a.getAttribute('align')),                'none' == b &&                  (b =                    'center' ==                    domUtils.getComputedStyle(a.parentNode, 'text-align')                      ? 'center'                      : b),                { left: 1, right: 1, center: 1 }[b] ? b : 'none')              : 'none')      },      queryCommandState: function () {        var a,          b = this.selection.getRange()        return b.collapsed          ? -1          : ((a = b.getClosedNode()),            a && 1 == a.nodeType && 'IMG' == a.tagName ? 0 : -1)      }    }),    (UE.commands.insertimage = {      execCommand: function (a, b) {        function c(a) {          utils.each(            'width,height,border,hspace,vspace'.split(','),            function (b) {              a[b] && (a[b] = parseInt(a[b], 10) || 0)            }          ),            utils.each('src,_src'.split(','), function (b) {              a[b] && (a[b] = utils.unhtmlForUrl(a[b]))            }),            utils.each('title,alt'.split(','), function (b) {              a[b] && (a[b] = utils.unhtml(a[b]))            })        }        if (((b = utils.isArray(b) ? b : [b]), b.length)) {          var d = this,            e = d.selection.getRange(),            f = e.getClosedNode()          if (d.fireEvent('beforeinsertimage', b) !== !0) {            if (              !f ||              !/img/i.test(f.tagName) ||              ('edui-faked-video' == f.className &&                f.className.indexOf('edui-upload-video') == -1) ||              f.getAttribute('word_img')            ) {              var g,                h = [],                i = ''              if (((g = b[0]), 1 == b.length))                c(g),                  (i =                    '<img src="' +                    g.src +                    '" ' +                    (g._src ? ' _src="' + g._src + '" ' : '') +                    (g.width ? 'width="' + g.width + '" ' : '') +                    (g.height ? ' height="' + g.height + '" ' : '') +                    ('left' == g.floatStyle || 'right' == g.floatStyle                      ? ' style="float:' + g.floatStyle + ';"'                      : '') +                    (g.title && '' != g.title                      ? ' title="' + g.title + '"'                      : '') +                    (g.border && '0' != g.border                      ? ' border="' + g.border + '"'                      : '') +                    (g.alt && '' != g.alt ? ' alt="' + g.alt + '"' : '') +                    (g.hspace && '0' != g.hspace                      ? ' hspace = "' + g.hspace + '"'                      : '') +                    (g.vspace && '0' != g.vspace                      ? ' vspace = "' + g.vspace + '"'                      : '') +                    '/>'),                  'center' == g.floatStyle &&                    (i = '<p style="text-align: center">' + i + '</p>'),                  h.push(i)              else                for (var j = 0; (g = b[j++]); )                  c(g),                    (i =                      '<p ' +                      ('center' == g.floatStyle                        ? 'style="text-align: center" '                        : '') +                      '><img src="' +                      g.src +                      '" ' +                      (g.width ? 'width="' + g.width + '" ' : '') +                      (g._src ? ' _src="' + g._src + '" ' : '') +                      (g.height ? ' height="' + g.height + '" ' : '') +                      ' style="' +                      (g.floatStyle && 'center' != g.floatStyle                        ? 'float:' + g.floatStyle + ';'                        : '') +                      (g.border || '') +                      '" ' +                      (g.title ? ' title="' + g.title + '"' : '') +                      ' /></p>'),                    h.push(i)              d.execCommand('insertHtml', h.join(''))            } else {              var k = b.shift(),                l = k.floatStyle              delete k.floatStyle,                domUtils.setAttributes(f, k),                d.execCommand('imagefloat', l),                b.length > 0 &&                  (e.setStartAfter(f).setCursor(!1, !0),                  d.execCommand('insertimage', b))            }            d.fireEvent('afterinsertimage', b)          }        }      }    }),    (UE.plugins.justify = function () {      var a = domUtils.isBlockElm,        b = { left: 1, right: 1, center: 1, justify: 1 },        c = function (b, c) {          var d = b.createBookmark(),            e = function (a) {              return 1 == a.nodeType                ? 'br' != a.tagName.toLowerCase() && !domUtils.isBookmarkNode(a)                : !domUtils.isWhitespace(a)            }          b.enlarge(!0)          for (            var f,              g = b.createBookmark(),              h = domUtils.getNextDomNode(g.start, !1, e),              i = b.cloneRange();            h &&            !(domUtils.getPosition(h, g.end) & domUtils.POSITION_FOLLOWING);          )            if (3 != h.nodeType && a(h)) h = domUtils.getNextDomNode(h, !0, e)            else {              for (i.setStartBefore(h); h && h !== g.end && !a(h); )                (f = h),                  (h = domUtils.getNextDomNode(h, !1, null, function (b) {                    return !a(b)                  }))              i.setEndAfter(f)              var j = i.getCommonAncestor()              if (!domUtils.isBody(j) && a(j))                domUtils.setStyles(                  j,                  utils.isString(c) ? { 'text-align': c } : c                ),                  (h = j)              else {                var k = b.document.createElement('p')                domUtils.setStyles(                  k,                  utils.isString(c) ? { 'text-align': c } : c                )                var l = i.extractContents()                k.appendChild(l), i.insertNode(k), (h = k)              }              h = domUtils.getNextDomNode(h, !1, e)            }          return b.moveToBookmark(g).moveToBookmark(d)        }      UE.commands.justify = {        execCommand: function (a, b) {          var d,            e = this.selection.getRange()          return (            e.collapsed &&              ((d = this.document.createTextNode('p')), e.insertNode(d)),            c(e, b),            d && (e.setStartBefore(d).collapse(!0), domUtils.remove(d)),            e.select(),            !0          )        },        queryCommandValue: function () {          var a = this.selection.getStart(),            c = domUtils.getComputedStyle(a, 'text-align')          return b[c] ? c : 'left'        },        queryCommandState: function () {          var a = this.selection.getStart(),            b =              a && domUtils.findParentByTagName(a, ['td', 'th', 'caption'], !0)          return b ? -1 : 0        }      }    }),    (UE.plugins.font = function () {      function a(a) {        for (          var b;          (b = a.parentNode) &&          'SPAN' == b.tagName &&          1 ==            domUtils.getChildCount(b, function (a) {              return !domUtils.isBookmarkNode(a) && !domUtils.isBr(a)            });        )          (b.style.cssText += a.style.cssText), domUtils.remove(a, !0), (a = b)      }      function b(a, b, c) {        if (          g[b] &&          (a.adjustmentBoundary(),          !a.collapsed && 1 == a.startContainer.nodeType)        ) {          var d = a.startContainer.childNodes[a.startOffset]          if (d && domUtils.isTagNode(d, 'span')) {            var e = a.createBookmark()            utils.each(domUtils.getElementsByTagName(d, 'span'), function (a) {              a.parentNode &&                !domUtils.isBookmarkNode(a) &&                (('backcolor' == b &&                  domUtils                    .getComputedStyle(a, 'background-color')                    .toLowerCase() === c) ||                  (domUtils.removeStyle(a, g[b]),                  0 == a.style.cssText.replace(/^\s+$/, '').length &&                    domUtils.remove(a, !0)))            }),              a.moveToBookmark(e)          }        }      }      function c(c, d, e) {        var f,          g = c.collapsed,          h = c.createBookmark()        if (g)          for (f = h.start.parentNode; dtd.$inline[f.tagName]; )            f = f.parentNode        else f = domUtils.getCommonAncestor(h.start, h.end)        utils.each(domUtils.getElementsByTagName(f, 'span'), function (b) {          if (b.parentNode && !domUtils.isBookmarkNode(b)) {            if (/\s*border\s*:\s*none;?\s*/i.test(b.style.cssText))              return void (/^\s*border\s*:\s*none;?\s*$/.test(b.style.cssText)                ? domUtils.remove(b, !0)                : domUtils.removeStyle(b, 'border'))            if (              (/border/i.test(b.style.cssText) &&                'SPAN' == b.parentNode.tagName &&                /border/i.test(b.parentNode.style.cssText) &&                (b.style.cssText = b.style.cssText.replace(                  /border[^:]*:[^;]+;?/gi,                  ''                )),              'fontborder' != d || 'none' != e)            )              for (                var c = b.nextSibling;                c && 1 == c.nodeType && 'SPAN' == c.tagName;              )                if (domUtils.isBookmarkNode(c) && 'fontborder' == d)                  b.appendChild(c), (c = b.nextSibling)                else {                  if (                    (c.style.cssText == b.style.cssText &&                      (domUtils.moveChild(c, b), domUtils.remove(c)),                    b.nextSibling === c)                  )                    break                  c = b.nextSibling                }            if ((a(b), browser.ie && browser.version > 8)) {              var f = domUtils.findParent(b, function (a) {                return (                  'SPAN' == a.tagName &&                  /background-color/.test(a.style.cssText)                )              })              f &&                !/background-color/.test(b.style.cssText) &&                (b.style.backgroundColor = f.style.backgroundColor)            }          }        }),          c.moveToBookmark(h),          b(c, d, e)      }      var d = this,        e = {          forecolor: 'color',          backcolor: 'background-color',          fontsize: 'font-size',          fontfamily: 'font-family',          underline: 'text-decoration',          strikethrough: 'text-decoration',          fontborder: 'border'        },        f = { underline: 1, strikethrough: 1, fontborder: 1 },        g = {          forecolor: 'color',          backcolor: 'background-color',          fontsize: 'font-size',          fontfamily: 'font-family'        }      d.setOpt({        fontfamily: [          { name: 'songti', val: '宋体,SimSun' },          { name: 'yahei', val: '微软雅黑,Microsoft YaHei' },          { name: 'kaiti', val: '楷体,楷体_GB2312, SimKai' },          { name: 'heiti', val: '黑体, SimHei' },          { name: 'lishu', val: '隶书, SimLi' },          { name: 'andaleMono', val: 'andale mono' },          { name: 'arial', val: 'arial, helvetica,sans-serif' },          { name: 'arialBlack', val: 'arial black,avant garde' },          { name: 'comicSansMs', val: 'comic sans ms' },          { name: 'impact', val: 'impact,chicago' },          { name: 'timesNewRoman', val: 'times new roman' }        ],        fontsize: [10, 11, 12, 14, 16, 18, 20, 24, 36]      }),        d.addInputRule(function (a) {          utils.each(a.getNodesByTagName('u s del font strike'), function (a) {            if ('font' == a.tagName) {              var b = []              for (var c in a.attrs)                switch (c) {                  case 'size':                    b.push(                      'font-size:' +                        ({                          1: '10',                          2: '12',                          3: '16',                          4: '18',                          5: '24',                          6: '32',                          7: '48'                        }[a.attrs[c]] || a.attrs[c]) +                        'px'                    )                    break                  case 'color':                    b.push('color:' + a.attrs[c])                    break                  case 'face':                    b.push('font-family:' + a.attrs[c])                    break                  case 'style':                    b.push(a.attrs[c])                }              a.attrs = { style: b.join(';') }            } else {              var d = 'u' == a.tagName ? 'underline' : 'line-through'              a.attrs = {                style: (a.getAttr('style') || '') + 'text-decoration:' + d + ';'              }            }            a.tagName = 'span'          })        })      for (var h in e)        !(function (a, b) {          UE.commands[a] = {            execCommand: function (d, e) {              e =                e ||                (this.queryCommandState(d)                  ? 'none'                  : 'underline' == d                  ? 'underline'                  : 'fontborder' == d                  ? '1px solid #000'                  : 'line-through')              var g,                h = this,                i = this.selection.getRange()              if ('default' == e)                i.collapsed &&                  ((g = h.document.createTextNode('font')),                  i.insertNode(g).select()),                  h.execCommand('removeFormat', 'span,a', b),                  g && (i.setStartBefore(g).collapse(!0), domUtils.remove(g)),                  c(i, d, e),                  i.select()              else if (i.collapsed) {                var j = domUtils.findParentByTagName(                  i.startContainer,                  'span',                  !0                )                if (                  ((g = h.document.createTextNode('font')),                  !j ||                    j.children.length ||                    j[browser.ie ? 'innerText' : 'textContent'].replace(                      fillCharReg,                      ''                    ).length)                ) {                  if (                    (i.insertNode(g),                    i.selectNode(g).select(),                    (j = i.document.createElement('span')),                    f[a])                  ) {                    if (domUtils.findParentByTagName(g, 'a', !0))                      return (                        i.setStartBefore(g).setCursor(), void domUtils.remove(g)                      )                    h.execCommand('removeFormat', 'span,a', b)                  }                  if (                    ((j.style.cssText = b + ':' + e),                    g.parentNode.insertBefore(j, g),                    !browser.ie || (browser.ie && 9 == browser.version))                  )                    for (var k = j.parentNode; !domUtils.isBlockElm(k); )                      'SPAN' == k.tagName &&                        (j.style.cssText =                          k.style.cssText + ';' + j.style.cssText),                        (k = k.parentNode)                  opera                    ? setTimeout(function () {                        i.setStart(j, 0).collapse(!0), c(i, d, e), i.select()                      })                    : (i.setStart(j, 0).collapse(!0), c(i, d, e), i.select())                } else                  i.insertNode(g),                    f[a] &&                      (i.selectNode(g).select(),                      h.execCommand('removeFormat', 'span,a', b, null),                      (j = domUtils.findParentByTagName(g, 'span', !0)),                      i.setStartBefore(g)),                    j && (j.style.cssText += ';' + b + ':' + e),                    i.collapse(!0).select()                domUtils.remove(g)              } else                f[a] &&                  h.queryCommandValue(a) &&                  h.execCommand('removeFormat', 'span,a', b),                  (i = h.selection.getRange()),                  i.applyInlineStyle('span', { style: b + ':' + e }),                  c(i, d, e),                  i.select()              return !0            },            queryCommandValue: function (a) {              var c = this.selection.getStart()              if ('underline' == a || 'strikethrough' == a) {                for (                  var d, e = c;                  e && !domUtils.isBlockElm(e) && !domUtils.isBody(e);                ) {                  if (                    1 == e.nodeType &&                    ((d = domUtils.getComputedStyle(e, b)), 'none' != d)                  )                    return d                  e = e.parentNode                }                return 'none'              }              if ('fontborder' == a) {                for (var f, g = c; g && dtd.$inline[g.tagName]; ) {                  if (                    (f = domUtils.getComputedStyle(g, 'border')) &&                    /1px/.test(f) &&                    /solid/.test(f)                  )                    return f                  g = g.parentNode                }                return ''              }              if ('FontSize' == a) {                var h = domUtils.getComputedStyle(c, b),                  g = /^([\d\.]+)(\w+)$/.exec(h)                return g ? Math.floor(g[1]) + g[2] : h              }              return domUtils.getComputedStyle(c, b)            },            queryCommandState: function (a) {              if (!f[a]) return 0              var b = this.queryCommandValue(a)              return 'fontborder' == a                ? /1px/.test(b) && /solid/.test(b)                : 'underline' == a                ? /underline/.test(b)                : /line\-through/.test(b)            }          }        })(h, e[h])    }),    (UE.plugins.link = function () {      function a(a) {        var b = a.startContainer,          c = a.endContainer        ;(b = domUtils.findParentByTagName(b, 'a', !0)) && a.setStartBefore(b),          (c = domUtils.findParentByTagName(c, 'a', !0)) && a.setEndAfter(c)      }      function b(b, c, d) {        var e = b.cloneRange(),          f = d.queryCommandValue('link')        a((b = b.adjustmentBoundary()))        var g = b.startContainer        if (          (1 == g.nodeType &&            f &&            ((g = g.childNodes[b.startOffset]),            g &&              1 == g.nodeType &&              'A' == g.tagName &&              /^(?:https?|ftp|file)\s*:\s*\/\//.test(                g[browser.ie ? 'innerText' : 'textContent']              ) &&              (g[browser.ie ? 'innerText' : 'textContent'] = utils.html(                c.textValue || c.href              ))),          (e.collapsed && !f) ||            (b.removeInlineStyle('a'), (e = b.cloneRange())),          e.collapsed)        ) {          var h = b.document.createElement('a'),            i = ''          c.textValue            ? ((i = utils.html(c.textValue)), delete c.textValue)            : (i = utils.html(c.href)),            domUtils.setAttributes(h, c),            (g = domUtils.findParentByTagName(e.startContainer, 'a', !0)),            g &&              domUtils.isInNodeEndBoundary(e, g) &&              b.setStartAfter(g).collapse(!0),            (h[browser.ie ? 'innerText' : 'textContent'] = i),            b.insertNode(h).selectNode(h)        } else b.applyInlineStyle('a', c)      }      ;(UE.commands.unlink = {        execCommand: function () {          var b,            c = this.selection.getRange()          ;(c.collapsed &&            !domUtils.findParentByTagName(c.startContainer, 'a', !0)) ||            ((b = c.createBookmark()),            a(c),            c.removeInlineStyle('a').moveToBookmark(b).select())        },        queryCommandState: function () {          return !this.highlight && this.queryCommandValue('link') ? 0 : -1        }      }),        (UE.commands.link = {          execCommand: function (a, c) {            var d            c._href && (c._href = utils.unhtml(c._href, /[<">]/g)),              c.href && (c.href = utils.unhtml(c.href, /[<">]/g)),              c.textValue &&                (c.textValue = utils.unhtml(c.textValue, /[<">]/g)),              b((d = this.selection.getRange()), c, this),              d.collapse().select(!0)          },          queryCommandValue: function () {            var a,              b = this.selection.getRange()            if (!b.collapsed) {              b.shrinkBoundary()              var c =                  3 != b.startContainer.nodeType &&                  b.startContainer.childNodes[b.startOffset]                    ? b.startContainer.childNodes[b.startOffset]                    : b.startContainer,                d =                  3 == b.endContainer.nodeType || 0 == b.endOffset                    ? b.endContainer                    : b.endContainer.childNodes[b.endOffset - 1],                e = b.getCommonAncestor()              if (                ((a = domUtils.findParentByTagName(e, 'a', !0)),                !a && 1 == e.nodeType)              )                for (                  var f, g, h, i = e.getElementsByTagName('a'), j = 0;                  (h = i[j++]);                )                  if (                    ((f = domUtils.getPosition(h, c)),                    (g = domUtils.getPosition(h, d)),                    (f & domUtils.POSITION_FOLLOWING ||                      f & domUtils.POSITION_CONTAINS) &&                      (g & domUtils.POSITION_PRECEDING ||                        g & domUtils.POSITION_CONTAINS))                  ) {                    a = h                    break                  }              return a            }            if (              ((a = b.startContainer),              (a = 1 == a.nodeType ? a : a.parentNode),              a &&                (a = domUtils.findParentByTagName(a, 'a', !0)) &&                !domUtils.isInNodeEndBoundary(b, a))            )              return a          },          queryCommandState: function () {            var a = this.selection.getRange().getClosedNode(),              b =                a &&                ('edui-faked-video' == a.className ||                  a.className.indexOf('edui-upload-video') != -1)            return b ? -1 : 0          }        })    }),    (UE.plugins.insertframe = function () {      function a() {        b._iframe && delete b._iframe      }      var b = this      b.addListener('selectionchange', function () {        a()      })    }),    (UE.commands.scrawl = {      queryCommandState: function () {        return browser.ie && browser.version <= 8 ? -1 : 0      }    }),    (UE.plugins.removeformat = function () {      var a = this      a.setOpt({        removeFormatTags:          'b,big,code,del,dfn,em,font,i,ins,kbd,q,samp,small,span,strike,strong,sub,sup,tt,u,var',        removeFormatAttributes:          'class,style,lang,width,height,align,hspace,valign'      }),        (a.commands.removeformat = {          execCommand: function (a, b, c, d, e) {            function f(a) {              if (3 == a.nodeType || 'span' != a.tagName.toLowerCase()) return 0              if (browser.ie) {                var b = a.attributes                if (b.length) {                  for (var c = 0, d = b.length; c < d; c++)                    if (b[c].specified) return 0                  return 1                }              }              return !a.attributes.length            }            function g(a) {              var b = a.createBookmark()              if ((a.collapsed && a.enlarge(!0), !e)) {                var d = domUtils.findParentByTagName(a.startContainer, 'a', !0)                d && a.setStartBefore(d),                  (d = domUtils.findParentByTagName(a.endContainer, 'a', !0)),                  d && a.setEndAfter(d)              }              for (                h = a.createBookmark(), p = h.start;                (i = p.parentNode) && !domUtils.isBlockElm(i);              )                domUtils.breakParent(p, i), domUtils.clearEmptySibling(p)              if (h.end) {                for (p = h.end; (i = p.parentNode) && !domUtils.isBlockElm(i); )                  domUtils.breakParent(p, i), domUtils.clearEmptySibling(p)                for (                  var g, l = domUtils.getNextDomNode(h.start, !1, m);                  l && l != h.end;                )                  (g = domUtils.getNextDomNode(l, !0, m)),                    dtd.$empty[l.tagName.toLowerCase()] ||                      domUtils.isBookmarkNode(l) ||                      (j.test(l.tagName)                        ? c                          ? (domUtils.removeStyle(l, c),                            f(l) &&                              'text-decoration' != c &&                              domUtils.remove(l, !0))                          : domUtils.remove(l, !0)                        : dtd.$tableContent[l.tagName] ||                          dtd.$list[l.tagName] ||                          (domUtils.removeAttributes(l, k),                          f(l) && domUtils.remove(l, !0))),                    (l = g)              }              var n = h.start.parentNode              !domUtils.isBlockElm(n) ||                dtd.$tableContent[n.tagName] ||                dtd.$list[n.tagName] ||                domUtils.removeAttributes(n, k),                (n = h.end.parentNode),                h.end &&                  domUtils.isBlockElm(n) &&                  !dtd.$tableContent[n.tagName] &&                  !dtd.$list[n.tagName] &&                  domUtils.removeAttributes(n, k),                a.moveToBookmark(h).moveToBookmark(b)              for (                var o, p = a.startContainer, q = a.collapsed;                1 == p.nodeType &&                domUtils.isEmptyNode(p) &&                dtd.$removeEmpty[p.tagName];              )                (o = p.parentNode),                  a.setStartBefore(p),                  a.startContainer === a.endContainer && a.endOffset--,                  domUtils.remove(p),                  (p = o)              if (!q)                for (                  p = a.endContainer;                  1 == p.nodeType &&                  domUtils.isEmptyNode(p) &&                  dtd.$removeEmpty[p.tagName];                )                  (o = p.parentNode),                    a.setEndBefore(p),                    domUtils.remove(p),                    (p = o)            }            var h,              i,              j = new RegExp(                '^(?:' +                  (b || this.options.removeFormatTags).replace(/,/g, '|') +                  ')$',                'i'              ),              k = c                ? []                : (d || this.options.removeFormatAttributes).split(','),              l = new dom.Range(this.document),              m = function (a) {                return 1 == a.nodeType              }            ;(l = this.selection.getRange()), g(l), l.select()          }        })    }),    (UE.plugins.blockquote = function () {      function a(a) {        return domUtils.filterNodeList(          a.selection.getStartElementPath(),          'blockquote'        )      }      var b = this      b.commands.blockquote = {        execCommand: function (b, c) {          var d = this.selection.getRange(),            e = a(this),            f = dtd.blockquote,            g = d.createBookmark()          if (e) {            var h = d.startContainer,              i = domUtils.isBlockElm(h)                ? h                : domUtils.findParent(h, function (a) {                    return domUtils.isBlockElm(a)                  }),              j = d.endContainer,              k = domUtils.isBlockElm(j)                ? j                : domUtils.findParent(j, function (a) {                    return domUtils.isBlockElm(a)                  })            ;(i = domUtils.findParentByTagName(i, 'li', !0) || i),              (k = domUtils.findParentByTagName(k, 'li', !0) || k),              'LI' == i.tagName ||              'TD' == i.tagName ||              i === e ||              domUtils.isBody(i)                ? domUtils.remove(e, !0)                : domUtils.breakParent(i, e),              i !== k &&                ((e = domUtils.findParentByTagName(k, 'blockquote')),                e &&                  ('LI' == k.tagName || 'TD' == k.tagName || domUtils.isBody(k)                    ? e.parentNode && domUtils.remove(e, !0)                    : domUtils.breakParent(k, e)))            for (              var l,                m = domUtils.getElementsByTagName(this.document, 'blockquote'),                n = 0;              (l = m[n++]);            )              l.childNodes.length                ? domUtils.getPosition(l, i) & domUtils.POSITION_FOLLOWING &&                  domUtils.getPosition(l, k) & domUtils.POSITION_PRECEDING &&                  domUtils.remove(l, !0)                : domUtils.remove(l)          } else {            for (              var o = d.cloneRange(),                p =                  1 == o.startContainer.nodeType                    ? o.startContainer                    : o.startContainer.parentNode,                q = p,                r = 1;              ;            ) {              if (domUtils.isBody(p)) {                q !== p                  ? d.collapsed                    ? (o.selectNode(q), (r = 0))                    : o.setStartBefore(q)                  : o.setStart(p, 0)                break              }              if (!f[p.tagName]) {                d.collapsed ? o.selectNode(q) : o.setStartBefore(q)                break              }              ;(q = p), (p = p.parentNode)            }            if (r)              for (                q =                  p =                  p =                    1 == o.endContainer.nodeType                      ? o.endContainer                      : o.endContainer.parentNode;                ;              ) {                if (domUtils.isBody(p)) {                  q !== p ? o.setEndAfter(q) : o.setEnd(p, p.childNodes.length)                  break                }                if (!f[p.tagName]) {                  o.setEndAfter(q)                  break                }                ;(q = p), (p = p.parentNode)              }            ;(p = d.document.createElement('blockquote')),              domUtils.setAttributes(p, c),              p.appendChild(o.extractContents()),              o.insertNode(p)            for (              var s, t = domUtils.getElementsByTagName(p, 'blockquote'), n = 0;              (s = t[n++]);            )              s.parentNode && domUtils.remove(s, !0)          }          d.moveToBookmark(g).select()        },        queryCommandState: function () {          return a(this) ? 1 : 0        }      }    }),    (UE.commands.touppercase = UE.commands.tolowercase =      {        execCommand: function (a) {          var b = this,            c = b.selection.getRange()          if (c.collapsed) return c          for (            var d = c.createBookmark(),              e = d.end,              f = function (a) {                return !domUtils.isBr(a) && !domUtils.isWhitespace(a)              },              g = domUtils.getNextDomNode(d.start, !1, f);            g &&            domUtils.getPosition(g, e) & domUtils.POSITION_PRECEDING &&            (3 == g.nodeType &&              (g.nodeValue =                g.nodeValue[                  'touppercase' == a ? 'toUpperCase' : 'toLowerCase'                ]()),            (g = domUtils.getNextDomNode(g, !0, f)),            g !== e);          );          c.moveToBookmark(d).select()        }      }),    (UE.commands.indent = {      execCommand: function () {        var a = this,          b = a.queryCommandState('indent')            ? '0em'            : a.options.indentValue || '2em'        a.execCommand('Paragraph', 'p', { style: 'text-indent:' + b })      },      queryCommandState: function () {        var a = domUtils.filterNodeList(          this.selection.getStartElementPath(),          'p h1 h2 h3 h4 h5 h6'        )        return a && a.style.textIndent && parseInt(a.style.textIndent) ? 1 : 0      }    }),    (UE.commands.print = {      execCommand: function () {        this.window.print()      },      notNeedUndo: 1    }),    (UE.commands.preview = {      execCommand: function () {        var a = window.open('', '_blank', ''),          b = a.document        b.open(),          b.write(            '<!DOCTYPE html><html><head><meta charset="utf-8"/><script src="' +              this.options.UEDITOR_HOME_URL +              "ueditor.parse.js\"></script><script>setTimeout(function(){uParse('div',{rootPath: '" +              this.options.UEDITOR_HOME_URL +              "'})},300)</script></head><body><div>" +              this.getContent(null, null, !0) +              '</div></body></html>'          ),          b.close()      },      notNeedUndo: 1    }),    (UE.plugins.selectall = function () {      var a = this      ;(a.commands.selectall = {        execCommand: function () {          var a = this,            b = a.body,            c = a.selection.getRange()          c.selectNodeContents(b),            domUtils.isEmptyBlock(b) &&              (browser.opera &&                b.firstChild &&                1 == b.firstChild.nodeType &&                c.setStartAtFirst(b.firstChild),              c.collapse(!0)),            c.select(!0)        },        notNeedUndo: 1      }),        a.addshortcutkey({ selectAll: 'ctrl+65' })    }),    (UE.plugins.paragraph = function () {      var a = this,        b = domUtils.isBlockElm,        c = ['TD', 'LI', 'PRE'],        d = function (a, d, e, f) {          var g,            h = a.createBookmark(),            i = function (a) {              return 1 == a.nodeType                ? 'br' != a.tagName.toLowerCase() && !domUtils.isBookmarkNode(a)                : !domUtils.isWhitespace(a)            }          a.enlarge(!0)          for (            var j,              k = a.createBookmark(),              l = domUtils.getNextDomNode(k.start, !1, i),              m = a.cloneRange();            l &&            !(domUtils.getPosition(l, k.end) & domUtils.POSITION_FOLLOWING);          )            if (3 != l.nodeType && b(l)) l = domUtils.getNextDomNode(l, !0, i)            else {              for (m.setStartBefore(l); l && l !== k.end && !b(l); )                (j = l),                  (l = domUtils.getNextDomNode(l, !1, null, function (a) {                    return !b(a)                  }))              m.setEndAfter(j),                (g = a.document.createElement(d)),                e &&                  (domUtils.setAttributes(g, e),                  f &&                    'customstyle' == f &&                    e.style &&                    (g.style.cssText = e.style)),                g.appendChild(m.extractContents()),                domUtils.isEmptyNode(g) && domUtils.fillChar(a.document, g),                m.insertNode(g)              var n = g.parentNode              b(n) &&                !domUtils.isBody(g.parentNode) &&                utils.indexOf(c, n.tagName) == -1 &&                ((f && 'customstyle' == f) ||                  (n.getAttribute('dir') &&                    g.setAttribute('dir', n.getAttribute('dir')),                  n.style.cssText &&                    (g.style.cssText = n.style.cssText + ';' + g.style.cssText),                  n.style.textAlign &&                    !g.style.textAlign &&                    (g.style.textAlign = n.style.textAlign),                  n.style.textIndent &&                    !g.style.textIndent &&                    (g.style.textIndent = n.style.textIndent),                  n.style.padding &&                    !g.style.padding &&                    (g.style.padding = n.style.padding)),                e && /h\d/i.test(n.tagName) && !/h\d/i.test(g.tagName)                  ? (domUtils.setAttributes(n, e),                    f &&                      'customstyle' == f &&                      e.style &&                      (n.style.cssText = e.style),                    domUtils.remove(g, !0),                    (g = n))                  : domUtils.remove(g.parentNode, !0)),                (l = utils.indexOf(c, n.tagName) != -1 ? n : g),                (l = domUtils.getNextDomNode(l, !1, i))            }          return a.moveToBookmark(k).moveToBookmark(h)        }      a.setOpt('paragraph', {        p: '',        h1: '',        h2: '',        h3: '',        h4: '',        h5: '',        h6: ''      }),        (a.commands.paragraph = {          execCommand: function (a, b, c, e) {            var f = this.selection.getRange()            if (f.collapsed) {              var g = this.document.createTextNode('p')              if ((f.insertNode(g), browser.ie)) {                var h = g.previousSibling                h && domUtils.isWhitespace(h) && domUtils.remove(h),                  (h = g.nextSibling),                  h && domUtils.isWhitespace(h) && domUtils.remove(h)              }            }            if (              ((f = d(f, b, c, e)),              g &&                (f.setStartBefore(g).collapse(!0),                (pN = g.parentNode),                domUtils.remove(g),                domUtils.isBlockElm(pN) &&                  domUtils.isEmptyNode(pN) &&                  domUtils.fillNode(this.document, pN)),              browser.gecko && f.collapsed && 1 == f.startContainer.nodeType)            ) {              var i = f.startContainer.childNodes[f.startOffset]              i &&                1 == i.nodeType &&                i.tagName.toLowerCase() == b &&                f.setStart(i, 0).collapse(!0)            }            return f.select(), !0          },          queryCommandValue: function () {            var a = domUtils.filterNodeList(              this.selection.getStartElementPath(),              'p h1 h2 h3 h4 h5 h6'            )            return a ? a.tagName.toLowerCase() : ''          }        })    }),    (function () {      var a = domUtils.isBlockElm,        b = function (a) {          return domUtils.filterNodeList(            a.selection.getStartElementPath(),            function (a) {              return a && 1 == a.nodeType && a.getAttribute('dir')            }          )        },        c = function (c, d, e) {          var f,            g = function (a) {              return 1 == a.nodeType                ? !domUtils.isBookmarkNode(a)                : !domUtils.isWhitespace(a)            },            h = b(d)          if (h && c.collapsed) return h.setAttribute('dir', e), c          ;(f = c.createBookmark()), c.enlarge(!0)          for (            var i,              j = c.createBookmark(),              k = domUtils.getNextDomNode(j.start, !1, g),              l = c.cloneRange();            k &&            !(domUtils.getPosition(k, j.end) & domUtils.POSITION_FOLLOWING);          )            if (3 != k.nodeType && a(k)) k = domUtils.getNextDomNode(k, !0, g)            else {              for (l.setStartBefore(k); k && k !== j.end && !a(k); )                (i = k),                  (k = domUtils.getNextDomNode(k, !1, null, function (b) {                    return !a(b)                  }))              l.setEndAfter(i)              var m = l.getCommonAncestor()              if (!domUtils.isBody(m) && a(m)) m.setAttribute('dir', e), (k = m)              else {                var n = c.document.createElement('p')                n.setAttribute('dir', e)                var o = l.extractContents()                n.appendChild(o), l.insertNode(n), (k = n)              }              k = domUtils.getNextDomNode(k, !1, g)            }          return c.moveToBookmark(j).moveToBookmark(f)        }      UE.commands.directionality = {        execCommand: function (a, b) {          var d = this.selection.getRange()          if (d.collapsed) {            var e = this.document.createTextNode('d')            d.insertNode(e)          }          return (            c(d, this, b),            e && (d.setStartBefore(e).collapse(!0), domUtils.remove(e)),            d.select(),            !0          )        },        queryCommandValue: function () {          var a = b(this)          return a ? a.getAttribute('dir') : 'ltr'        }      }    })(),    (UE.plugins.horizontal = function () {      var a = this      ;(a.commands.horizontal = {        execCommand: function (a) {          var b = this          if (b.queryCommandState(a) !== -1) {            b.execCommand('insertHtml', '<hr>')            var c = b.selection.getRange(),              d = c.startContainer            if (1 == d.nodeType && !d.childNodes[c.startOffset]) {              var e              ;(e = d.childNodes[c.startOffset - 1]) &&                1 == e.nodeType &&                'HR' == e.tagName &&                ('p' == b.options.enterTag                  ? ((e = b.document.createElement('p')),                    c.insertNode(e),                    c.setStart(e, 0).setCursor())                  : ((e = b.document.createElement('br')),                    c.insertNode(e),                    c.setStartBefore(e).setCursor()))            }            return !0          }        },        queryCommandState: function () {          return domUtils.filterNodeList(            this.selection.getStartElementPath(),            'table'          )            ? -1            : 0        }      }),        a.addListener('delkeydown', function (a, b) {          var c = this.selection.getRange()          if ((c.txtToElmBoundary(!0), domUtils.isStartInblock(c))) {            var d = c.startContainer,              e = d.previousSibling            if (e && domUtils.isTagNode(e, 'hr'))              return (                domUtils.remove(e), c.select(), domUtils.preventDefault(b), !0              )          }        })    }),    (UE.commands.time = UE.commands.date =      {        execCommand: function (a, b) {          function c(a, b) {            var c = ('0' + a.getHours()).slice(-2),              d = ('0' + a.getMinutes()).slice(-2),              e = ('0' + a.getSeconds()).slice(-2)            return (              (b = b || 'hh:ii:ss'),              b.replace(/hh/gi, c).replace(/ii/gi, d).replace(/ss/gi, e)            )          }          function d(a, b) {            var c = ('000' + a.getFullYear()).slice(-4),              d = c.slice(-2),              e = ('0' + (a.getMonth() + 1)).slice(-2),              f = ('0' + a.getDate()).slice(-2)            return (              (b = b || 'yyyy-mm-dd'),              b                .replace(/yyyy/gi, c)                .replace(/yy/gi, d)                .replace(/mm/gi, e)                .replace(/dd/gi, f)            )          }          var e = new Date()          this.execCommand('insertHtml', 'time' == a ? c(e, b) : d(e, b))        }      }),    (UE.plugins.rowspacing = function () {      var a = this      a.setOpt({        rowspacingtop: ['5', '10', '15', '20', '25'],        rowspacingbottom: ['5', '10', '15', '20', '25']      }),        (a.commands.rowspacing = {          execCommand: function (a, b, c) {            return (              this.execCommand('paragraph', 'p', {                style: 'margin-' + c + ':' + b + 'px'              }),              !0            )          },          queryCommandValue: function (a, b) {            var c,              d = domUtils.filterNodeList(                this.selection.getStartElementPath(),                function (a) {                  return domUtils.isBlockElm(a)                }              )            return d              ? ((c = domUtils                  .getComputedStyle(d, 'margin-' + b)                  .replace(/[^\d]/g, '')),                c ? c : 0)              : 0          }        })    }),    (UE.plugins.lineheight = function () {      var a = this      a.setOpt({ lineheight: ['1', '1.5', '1.75', '2', '3', '4', '5'] }),        (a.commands.lineheight = {          execCommand: function (a, b) {            return (              this.execCommand('paragraph', 'p', {                style: 'line-height:' + ('1' == b ? 'normal' : b + 'em')              }),              !0            )          },          queryCommandValue: function () {            var a = domUtils.filterNodeList(              this.selection.getStartElementPath(),              function (a) {                return domUtils.isBlockElm(a)              }            )            if (a) {              var b = domUtils.getComputedStyle(a, 'line-height')              return 'normal' == b ? 1 : b.replace(/[^\d.]*/gi, '')            }          }        })    }),    (UE.plugins.insertcode = function () {      var a = this      a.ready(function () {        utils.cssRule(          'pre',          'pre{margin:.5em 0;padding:.4em .6em;border-radius:8px;background:#f8f8f8;}',          a.document        )      }),        a.setOpt('insertcode', {          as3: 'ActionScript3',          bash: 'Bash/Shell',          cpp: 'C/C++',          css: 'Css',          cf: 'CodeFunction',          'c#': 'C#',          delphi: 'Delphi',          diff: 'Diff',          erlang: 'Erlang',          groovy: 'Groovy',          html: 'Html',          java: 'Java',          jfx: 'JavaFx',          js: 'Javascript',          pl: 'Perl',          php: 'Php',          plain: 'Plain Text',          ps: 'PowerShell',          python: 'Python',          ruby: 'Ruby',          scala: 'Scala',          sql: 'Sql',          vb: 'Vb',          xml: 'Xml'        }),        (a.commands.insertcode = {          execCommand: function (a, b) {            var c = this,              d = c.selection.getRange(),              e = domUtils.findParentByTagName(d.startContainer, 'pre', !0)            if (e) e.className = 'brush:' + b + ';toolbar:false;'            else {              var f = ''              if (d.collapsed)                f =                  browser.ie && browser.ie11below                    ? browser.version <= 8                      ? ' '                      : ''                    : '<br/>'              else {                var g = d.extractContents(),                  h = c.document.createElement('div')                h.appendChild(g),                  utils.each(                    UE.filterNode(                      UE.htmlparser(h.innerHTML.replace(/[\r\t]/g, '')),                      c.options.filterTxtRules                    ).children,                    function (a) {                      if (                        browser.ie &&                        browser.ie11below &&                        browser.version > 8                      )                        'element' == a.type                          ? 'br' == a.tagName                            ? (f += '\n')                            : dtd.$empty[a.tagName] ||                              (utils.each(a.children, function (b) {                                'element' == b.type                                  ? 'br' == b.tagName                                    ? (f += '\n')                                    : dtd.$empty[a.tagName] ||                                      (f += b.innerText())                                  : (f += b.data)                              }),                              /\n$/.test(f) || (f += '\n'))                          : (f += a.data + '\n'),                          !a.nextSibling() &&                            /\n$/.test(f) &&                            (f = f.replace(/\n$/, ''))                      else if (browser.ie && browser.ie11below)                        'element' == a.type                          ? 'br' == a.tagName                            ? (f += '<br>')                            : dtd.$empty[a.tagName] ||                              (utils.each(a.children, function (b) {                                'element' == b.type                                  ? 'br' == b.tagName                                    ? (f += '<br>')                                    : dtd.$empty[a.tagName] ||                                      (f += b.innerText())                                  : (f += b.data)                              }),                              /br>$/.test(f) || (f += '<br>'))                          : (f += a.data + '<br>'),                          !a.nextSibling() &&                            /<br>$/.test(f) &&                            (f = f.replace(/<br>$/, ''))                      else if (                        ((f +=                          'element' == a.type                            ? dtd.$empty[a.tagName]                              ? ''                              : a.innerText()                            : a.data),                        !/br\/?\s*>$/.test(f))                      ) {                        if (!a.nextSibling()) return                        f += '<br>'                      }                    }                  )              }              c.execCommand(                'inserthtml',                '<pre id="coder"class="brush:' +                  b +                  ';toolbar:false">' +                  f +                  '</pre>',                !0              ),                (e = c.document.getElementById('coder')),                domUtils.removeAttributes(e, 'id')              var i = e.previousSibling              i &&                ((3 == i.nodeType &&                  1 == i.nodeValue.length &&                  browser.ie &&                  6 == browser.version) ||                  domUtils.isEmptyBlock(i)) &&                domUtils.remove(i)              var d = c.selection.getRange()              domUtils.isEmptyBlock(e)                ? d.setStart(e, 0).setCursor(!1, !0)                : d.selectNodeContents(e).select()            }          },          queryCommandValue: function () {            var a = this.selection.getStartElementPath(),              b = ''            return (              utils.each(a, function (a) {                if ('PRE' == a.nodeName) {                  var c = a.className.match(/brush:([^;]+)/)                  return (b = c && c[1] ? c[1] : ''), !1                }              }),              b            )          }        }),        a.addInputRule(function (a) {          utils.each(a.getNodesByTagName('pre'), function (a) {            var b = a.getNodesByTagName('br')            if (b.length)              return void (                browser.ie &&                browser.ie11below &&                browser.version > 8 &&                utils.each(b, function (a) {                  var b = UE.uNode.createText('\n')                  a.parentNode.insertBefore(b, a), a.parentNode.removeChild(a)                })              )            if (!(browser.ie && browser.ie11below && browser.version > 8)) {              var c = a.innerText().split(/\n/)              a.innerHTML(''),                utils.each(c, function (b) {                  b.length && a.appendChild(UE.uNode.createText(b)),                    a.appendChild(UE.uNode.createElement('br'))                })            }          })        }),        a.addOutputRule(function (a) {          utils.each(a.getNodesByTagName('pre'), function (a) {            var b = ''            utils.each(a.children, function (a) {              b +=                'text' == a.type                  ? a.data.replace(/[ ]/g, ' ').replace(/\n$/, '')                  : 'br' == a.tagName                  ? '\n'                  : dtd.$empty[a.tagName]                  ? a.innerText()                  : ''            }),              a.innerText(b.replace(/( |\n)+$/, ''))          })        }),        (a.notNeedCodeQuery = {          help: 1,          undo: 1,          redo: 1,          source: 1,          print: 1,          searchreplace: 1,          fullscreen: 1,          preview: 1,          insertparagraph: 1,          elementpath: 1,          insertcode: 1,          inserthtml: 1,          selectall: 1        })      a.queryCommandState      ;(a.queryCommandState = function (a) {        var b = this        return !b.notNeedCodeQuery[a.toLowerCase()] &&          b.selection &&          b.queryCommandValue('insertcode')          ? -1          : UE.Editor.prototype.queryCommandState.apply(this, arguments)      }),        a.addListener('beforeenterkeydown', function () {          var b = a.selection.getRange(),            c = domUtils.findParentByTagName(b.startContainer, 'pre', !0)          if (c) {            if (              (a.fireEvent('saveScene'),              b.collapsed || b.deleteContents(),              !browser.ie || browser.ie9above)            ) {              var c,                d = a.document.createElement('br')              b.insertNode(d).setStartAfter(d).collapse(!0)              var e = d.nextSibling              e || (browser.ie && !(browser.version > 10))                ? b.setStartAfter(d)                : b.insertNode(d.cloneNode(!1)),                (c = d.previousSibling)              for (var f; c; )                if (                  ((f = c), (c = c.previousSibling), !c || 'BR' == c.nodeName)                ) {                  c = f                  break                }              if (c) {                for (                  var g = '';                  c &&                  'BR' != c.nodeName &&                  new RegExp('^[\\s' + domUtils.fillChar + ']*$').test(                    c.nodeValue                  );                )                  (g += c.nodeValue), (c = c.nextSibling)                if ('BR' != c.nodeName) {                  var h = c.nodeValue.match(                    new RegExp('^([\\s' + domUtils.fillChar + ']+)')                  )                  h && h[1] && (g += h[1])                }                g &&                  ((g = a.document.createTextNode(g)),                  b.insertNode(g).setStartAfter(g))              }              b.collapse(!0).select(!0)            } else if (browser.version > 8) {              var i = a.document.createTextNode('\n'),                j = b.startContainer              if (0 == b.startOffset) {                var k = j.previousSibling                if (k) {                  b.insertNode(i)                  var l = a.document.createTextNode(' ')                  b.setStartAfter(i)                    .insertNode(l)                    .setStart(l, 0)                    .collapse(!0)                    .select(!0)                }              } else {                b.insertNode(i).setStartAfter(i)                var l = a.document.createTextNode(' ')                ;(j = b.startContainer.childNodes[b.startOffset]),                  j && !/^\n/.test(j.nodeValue) && b.setStartBefore(i),                  b.insertNode(l).setStart(l, 0).collapse(!0).select(!0)              }            } else {              var d = a.document.createElement('br')              b.insertNode(d),                b.insertNode(a.document.createTextNode(domUtils.fillChar)),                b.setStartAfter(d),                (c = d.previousSibling)              for (var f; c; )                if (                  ((f = c), (c = c.previousSibling), !c || 'BR' == c.nodeName)                ) {                  c = f                  break                }              if (c) {                for (                  var g = '';                  c &&                  'BR' != c.nodeName &&                  new RegExp('^[ ' + domUtils.fillChar + ']*$').test(                    c.nodeValue                  );                )                  (g += c.nodeValue), (c = c.nextSibling)                if ('BR' != c.nodeName) {                  var h = c.nodeValue.match(                    new RegExp('^([ ' + domUtils.fillChar + ']+)')                  )                  h && h[1] && (g += h[1])                }                ;(g = a.document.createTextNode(g)),                  b.insertNode(g).setStartAfter(g)              }              b.collapse(!0).select()            }            return a.fireEvent('saveScene'), !0          }        }),        a.addListener('tabkeydown', function (b, c) {          var d = a.selection.getRange(),            e = domUtils.findParentByTagName(d.startContainer, 'pre', !0)          if (e) {            if ((a.fireEvent('saveScene'), c.shiftKey));            else if (d.collapsed) {              var f = a.document.createTextNode('    ')              d.insertNode(f).setStartAfter(f).collapse(!0).select(!0)            } else {              for (                var g = d.createBookmark(), h = g.start.previousSibling;                h;              ) {                if (e.firstChild === h && !domUtils.isBr(h)) {                  e.insertBefore(a.document.createTextNode('    '), h)                  break                }                if (domUtils.isBr(h)) {                  e.insertBefore(                    a.document.createTextNode('    '),                    h.nextSibling                  )                  break                }                h = h.previousSibling              }              var i = g.end              for (                h = g.start.nextSibling,                  e.firstChild === g.start &&                    e.insertBefore(                      a.document.createTextNode('    '),                      h.nextSibling                    );                h && h !== i;              ) {                if (domUtils.isBr(h) && h.nextSibling) {                  if (h.nextSibling === i) break                  e.insertBefore(                    a.document.createTextNode('    '),                    h.nextSibling                  )                }                h = h.nextSibling              }              d.moveToBookmark(g).select()            }            return a.fireEvent('saveScene'), !0          }        }),        a.addListener('beforeinserthtml', function (a, b) {          var c = this,            d = c.selection.getRange(),            e = domUtils.findParentByTagName(d.startContainer, 'pre', !0)          if (e) {            d.collapsed || d.deleteContents()            var f = ''            if (browser.ie && browser.version > 8) {              utils.each(                UE.filterNode(UE.htmlparser(b), c.options.filterTxtRules)                  .children,                function (a) {                  'element' == a.type                    ? 'br' == a.tagName                      ? (f += '\n')                      : dtd.$empty[a.tagName] ||                        (utils.each(a.children, function (b) {                          'element' == b.type                            ? 'br' == b.tagName                              ? (f += '\n')                              : dtd.$empty[a.tagName] || (f += b.innerText())                            : (f += b.data)                        }),                        /\n$/.test(f) || (f += '\n'))                    : (f += a.data + '\n'),                    !a.nextSibling() &&                      /\n$/.test(f) &&                      (f = f.replace(/\n$/, ''))                }              )              var g = c.document.createTextNode(                utils.html(f.replace(/ /g, ' '))              )              d.insertNode(g).selectNode(g).select()            } else {              var h = c.document.createDocumentFragment()              utils.each(                UE.filterNode(UE.htmlparser(b), c.options.filterTxtRules)                  .children,                function (a) {                  'element' == a.type                    ? 'br' == a.tagName                      ? h.appendChild(c.document.createElement('br'))                      : dtd.$empty[a.tagName] ||                        (utils.each(a.children, function (b) {                          'element' == b.type                            ? 'br' == b.tagName                              ? h.appendChild(c.document.createElement('br'))                              : dtd.$empty[a.tagName] ||                                h.appendChild(                                  c.document.createTextNode(                                    utils.html(                                      b.innerText().replace(/ /g, ' ')                                    )                                  )                                )                            : h.appendChild(                                c.document.createTextNode(                                  utils.html(b.data.replace(/ /g, ' '))                                )                              )                        }),                        'BR' != h.lastChild.nodeName &&                          h.appendChild(c.document.createElement('br')))                    : h.appendChild(                        c.document.createTextNode(                          utils.html(a.data.replace(/ /g, ' '))                        )                      ),                    a.nextSibling() ||                      'BR' != h.lastChild.nodeName ||                      h.removeChild(h.lastChild)                }              ),                d.insertNode(h).select()            }            return !0          }        }),        a.addListener('keydown', function (a, b) {          var c = this,            d = b.keyCode || b.which          if (40 == d) {            var e,              f = c.selection.getRange(),              g = f.startContainer            if (              f.collapsed &&              (e = domUtils.findParentByTagName(f.startContainer, 'pre', !0)) &&              !e.nextSibling            ) {              for (var h = e.lastChild; h && 'BR' == h.nodeName; )                h = h.previousSibling              ;(h === g ||                (f.startContainer === e &&                  f.startOffset == e.childNodes.length)) &&                (c.execCommand('insertparagraph'), domUtils.preventDefault(b))            }          }        }),        a.addListener('delkeydown', function (b, c) {          var d = this.selection.getRange()          d.txtToElmBoundary(!0)          var e = d.startContainer          if (            domUtils.isTagNode(e, 'pre') &&            d.collapsed &&            domUtils.isStartInblock(d)          ) {            var f = a.document.createElement('p')            return (              domUtils.fillNode(a.document, f),              e.parentNode.insertBefore(f, e),              domUtils.remove(e),              d.setStart(f, 0).setCursor(!1, !0),              domUtils.preventDefault(c),              !0            )          }        })    }),    (UE.commands.cleardoc = {      execCommand: function (a) {        var b = this,          c = b.options.enterTag,          d = b.selection.getRange()        'br' == c          ? ((b.body.innerHTML = '<br/>'), d.setStart(b.body, 0).setCursor())          : ((b.body.innerHTML = '<p>' + (ie ? '' : '<br/>') + '</p>'),            d.setStart(b.body.firstChild, 0).setCursor(!1, !0)),          setTimeout(function () {            b.fireEvent('clearDoc')          }, 0)      }    }),    UE.plugin.register('anchor', function () {      return {        bindEvents: {          ready: function () {            utils.cssRule(              'anchor',              ".anchorclass{background: url('" +                this.options.themePath +                this.options.theme +                "/images/anchor.gif') no-repeat scroll left center transparent;cursor: auto;display: inline-block;height: 16px;width: 15px;}",              this.document            )          }        },        outputRule: function (a) {          utils.each(a.getNodesByTagName('img'), function (a) {            var b            ;(b = a.getAttr('anchorname')) &&              ((a.tagName = 'a'),              a.setAttr({ anchorname: '', name: b, class: '' }))          })        },        inputRule: function (a) {          utils.each(a.getNodesByTagName('a'), function (a) {            var b            ;(b = a.getAttr('name')) &&              !a.getAttr('href') &&              ((a.tagName = 'img'),              a.setAttr({                anchorname: a.getAttr('name'),                class: 'anchorclass'              }),              a.setAttr('name'))          })        },        commands: {          anchor: {            execCommand: function (a, b) {              var c = this.selection.getRange(),                d = c.getClosedNode()              if (d && d.getAttribute('anchorname'))                b                  ? d.setAttribute('anchorname', b)                  : (c.setStartBefore(d).setCursor(), domUtils.remove(d))              else if (b) {                var e = this.document.createElement('img')                c.collapse(!0),                  domUtils.setAttributes(e, {                    anchorname: b,                    class: 'anchorclass'                  }),                  c.insertNode(e).setStartAfter(e).setCursor(!1, !0)              }            }          }        }      }    }),    (UE.plugins.wordcount = function () {      var a = this      a.setOpt('wordCount', !0),        a.addListener('contentchange', function () {          a.fireEvent('wordcount')        })      var b      a.addListener('ready', function () {        var a = this        domUtils.on(a.body, 'keyup', function (c) {          var d = c.keyCode || c.which,            e = { 16: 1, 18: 1, 20: 1, 37: 1, 38: 1, 39: 1, 40: 1 }          d in e ||            (clearTimeout(b),            (b = setTimeout(function () {              a.fireEvent('wordcount')            }, 200)))        })      })    }),    (UE.plugins.pagebreak = function () {      function a(a) {        if (domUtils.isEmptyBlock(a)) {          for (            var b, d = a.firstChild;            d && 1 == d.nodeType && domUtils.isEmptyBlock(d);          )            (b = d), (d = d.firstChild)          !b && (b = a), domUtils.fillNode(c.document, b)        }      }      function b(a) {        return (          a &&          1 == a.nodeType &&          'HR' == a.tagName &&          'pagebreak' == a.className        )      }      var c = this,        d = ['td']      c.setOpt('pageBreakTag', '_ueditor_page_break_tag_'),        c.ready(function () {          utils.cssRule(            'pagebreak',            '.pagebreak{display:block;clear:both !important;cursor:default !important;width: 100% !important;margin:0;}',            c.document          )        }),        c.addInputRule(function (a) {          a.traversal(function (a) {            if ('text' == a.type && a.data == c.options.pageBreakTag) {              var b = UE.uNode.createElement(                '<hr class="pagebreak" noshade="noshade" size="5" style="-webkit-user-select: none;">'              )              a.parentNode.insertBefore(b, a), a.parentNode.removeChild(a)            }          })        }),        c.addOutputRule(function (a) {          utils.each(a.getNodesByTagName('hr'), function (a) {            if ('pagebreak' == a.getAttr('class')) {              var b = UE.uNode.createText(c.options.pageBreakTag)              a.parentNode.insertBefore(b, a), a.parentNode.removeChild(a)            }          })        }),        (c.commands.pagebreak = {          execCommand: function () {            var e = c.selection.getRange(),              f = c.document.createElement('hr')            domUtils.setAttributes(f, {              class: 'pagebreak',              noshade: 'noshade',              size: '5'            }),              domUtils.unSelectable(f)            var g,              h = domUtils.findParentByTagName(e.startContainer, d, !0),              i = []            if (h)              switch (h.tagName) {                case 'TD':                  if (((g = h.parentNode), g.previousSibling))                    g.parentNode.insertBefore(f, g),                      (i = domUtils.findParents(f))                  else {                    var j = domUtils.findParentByTagName(g, 'table')                    j.parentNode.insertBefore(f, j),                      (i = domUtils.findParents(f, !0))                  }                  ;(g = i[1]),                    f !== g && domUtils.breakParent(f, g),                    c.fireEvent('afteradjusttable', c.document)              }            else {              if (!e.collapsed) {                e.deleteContents()                for (                  var k = e.startContainer;                  !domUtils.isBody(k) &&                  domUtils.isBlockElm(k) &&                  domUtils.isEmptyNode(k);                )                  e.setStartBefore(k).collapse(!0),                    domUtils.remove(k),                    (k = e.startContainer)              }              e.insertNode(f)              for (var l, g = f.parentNode; !domUtils.isBody(g); )                domUtils.breakParent(f, g),                  (l = f.nextSibling),                  l && domUtils.isEmptyBlock(l) && domUtils.remove(l),                  (g = f.parentNode)              l = f.nextSibling              var m = f.previousSibling              if ((b(m) ? domUtils.remove(m) : m && a(m), l))                b(l) ? domUtils.remove(l) : a(l), e.setEndAfter(f).collapse(!1)              else {                var n = c.document.createElement('p')                f.parentNode.appendChild(n),                  domUtils.fillNode(c.document, n),                  e.setStart(n, 0).collapse(!0)              }              e.select(!0)            }          }        })    }),    UE.plugin.register('wordimage', function () {      var a = this,        b = []      return {        commands: {          wordimage: {            execCommand: function () {              for (                var b,                  c = domUtils.getElementsByTagName(a.body, 'img'),                  d = [],                  e = 0;                (b = c[e++]);              ) {                var f = b.getAttribute('word_img')                f && d.push(f)              }              return d            },            queryCommandState: function () {              b = domUtils.getElementsByTagName(a.body, 'img')              for (var c, d = 0; (c = b[d++]); )                if (c.getAttribute('word_img')) return 1              return -1            },            notNeedUndo: !0          }        },        inputRule: function (b) {          utils.each(b.getNodesByTagName('img'), function (b) {            var c = b.attrs,              d = parseInt(c.width) < 128 || parseInt(c.height) < 43,              e = a.options,              f = e.UEDITOR_HOME_URL + 'themes/default/images/spacer.gif'            c.src &&              /^(?:(file:\/+))/.test(c.src) &&              b.setAttr({                width: c.width,                height: c.height,                alt: c.alt,                word_img: c.src,                src: f,                style:                  'background:url(' +                  (d                    ? e.themePath + e.theme + '/images/word.gif'                    : e.langPath + e.lang + '/images/localimage.png') +                  ') no-repeat center center;border:1px solid #ddd'              })          })        }      }    }),    (UE.plugins.dragdrop = function () {      var a = this      a.ready(function () {        domUtils.on(this.body, 'dragend', function () {          var b = a.selection.getRange(),            c = b.getClosedNode() || a.selection.getStart()          if (c && 'IMG' == c.tagName) {            for (              var d, e = c.previousSibling;              (d = c.nextSibling) &&              1 == d.nodeType &&              'SPAN' == d.tagName &&              !d.firstChild;            )              domUtils.remove(d)            ;((!e || 1 != e.nodeType || domUtils.isEmptyBlock(e)) && e) ||              (d && (!d || domUtils.isEmptyBlock(d))) ||              (e && 'P' == e.tagName && !domUtils.isEmptyBlock(e)                ? (e.appendChild(c),                  domUtils.moveChild(d, e),                  domUtils.remove(d))                : d &&                  'P' == d.tagName &&                  !domUtils.isEmptyBlock(d) &&                  d.insertBefore(c, d.firstChild),              e &&                'P' == e.tagName &&                domUtils.isEmptyBlock(e) &&                domUtils.remove(e),              d &&                'P' == d.tagName &&                domUtils.isEmptyBlock(d) &&                domUtils.remove(d),              b.selectNode(c).select(),              a.fireEvent('saveScene'))          }        })      }),        a.addListener('keyup', function (b, c) {          var d = c.keyCode || c.which          if (13 == d) {            var e,              f = a.selection.getRange()            ;(e = domUtils.findParentByTagName(f.startContainer, 'p', !0)) &&              'center' == domUtils.getComputedStyle(e, 'text-align') &&              domUtils.removeStyle(e, 'text-align')          }        })    }),    (UE.plugins.undo = function () {      function a(a, b) {        if (a.length != b.length) return 0        for (var c = 0, d = a.length; c < d; c++) if (a[c] != b[c]) return 0        return 1      }      function b(b, c) {        return b.collapsed != c.collapsed          ? 0          : a(b.startAddress, c.startAddress) && a(b.endAddress, c.endAddress)          ? 1          : 0      }      function c() {        ;(this.list = []),          (this.index = 0),          (this.hasUndo = !1),          (this.hasRedo = !1),          (this.undo = function () {            if (this.hasUndo) {              if (!this.list[this.index - 1] && 1 == this.list.length)                return void this.reset()              for (                ;                this.list[this.index].content ==                this.list[this.index - 1].content;              )                if ((this.index--, 0 == this.index)) return this.restore(0)              this.restore(--this.index)            }          }),          (this.redo = function () {            if (this.hasRedo) {              for (                ;                this.list[this.index].content ==                this.list[this.index + 1].content;              )                if ((this.index++, this.index == this.list.length - 1))                  return this.restore(this.index)              this.restore(++this.index)            }          }),          (this.restore = function () {            var a = this.editor,              b = this.list[this.index],              c = UE.htmlparser(b.content.replace(h, ''))            ;(a.options.autoClearEmptyNode = !1),              a.filterInputRule(c),              (a.options.autoClearEmptyNode = j),              (a.document.body.innerHTML = c.toHtml()),              a.fireEvent('afterscencerestore'),              browser.ie &&                utils.each(                  domUtils.getElementsByTagName(a.document, 'td th caption p'),                  function (b) {                    domUtils.isEmptyNode(b) && domUtils.fillNode(a.document, b)                  }                )            try {              var d = new dom.Range(a.document).moveToAddress(b.address)              d.select(i[d.startContainer.nodeName.toLowerCase()])            } catch (e) {}            this.update(), this.clearKey(), a.fireEvent('reset', !0)          }),          (this.getScene = function () {            var a = this.editor,              b = a.selection.getRange(),              c = b.createAddress(!1, !0)            a.fireEvent('beforegetscene')            var d = UE.htmlparser(a.body.innerHTML)            ;(a.options.autoClearEmptyNode = !1),              a.filterOutputRule(d),              (a.options.autoClearEmptyNode = j)            var e = d.toHtml()            return a.fireEvent('aftergetscene'), { address: c, content: e }          }),          (this.save = function (a, c) {            clearTimeout(d)            var g = this.getScene(c),              h = this.list[this.index]            h && h.content != g.content && e.trigger('contentchange'),              (h &&                h.content == g.content &&                (a ? 1 : b(h.address, g.address))) ||                ((this.list = this.list.slice(0, this.index + 1)),                this.list.push(g),                this.list.length > f && this.list.shift(),                (this.index = this.list.length - 1),                this.clearKey(),                this.update())          }),          (this.update = function () {            ;(this.hasRedo = !!this.list[this.index + 1]),              (this.hasUndo = !!this.list[this.index - 1])          }),          (this.reset = function () {            ;(this.list = []),              (this.index = 0),              (this.hasUndo = !1),              (this.hasRedo = !1),              this.clearKey()          }),          (this.clearKey = function () {            ;(m = 0), (k = null)          })      }      var d,        e = this,        f = e.options.maxUndoCount || 20,        g = e.options.maxInputCount || 20,        h = new RegExp(domUtils.fillChar + '|</hr>', 'gi'),        i = { ol: 1, ul: 1, table: 1, tbody: 1, tr: 1, body: 1 },        j = e.options.autoClearEmptyNode      ;(e.undoManger = new c()),        (e.undoManger.editor = e),        e.addListener('saveScene', function () {          var a = Array.prototype.splice.call(arguments, 1)          this.undoManger.save.apply(this.undoManger, a)        }),        e.addListener('reset', function (a, b) {          b || this.undoManger.reset()        }),        (e.commands.redo = e.commands.undo =          {            execCommand: function (a) {              this.undoManger[a]()            },            queryCommandState: function (a) {              return this.undoManger[                'has' + ('undo' == a.toLowerCase() ? 'Undo' : 'Redo')              ]                ? 0                : -1            },            notNeedUndo: 1          })      var k,        l = { 16: 1, 17: 1, 18: 1, 37: 1, 38: 1, 39: 1, 40: 1 },        m = 0,        n = !1      e.addListener('ready', function () {        domUtils.on(this.body, 'compositionstart', function () {          n = !0        }),          domUtils.on(this.body, 'compositionend', function () {            n = !1          })      }),        e.addshortcutkey({ Undo: 'ctrl+90', Redo: 'ctrl+89' })      var o = !0      e.addListener('keydown', function (a, b) {        function c(a) {          a.undoManger.save(!1, !0), a.fireEvent('selectionchange')        }        var e = this,          f = b.keyCode || b.which        if (!(l[f] || b.ctrlKey || b.metaKey || b.shiftKey || b.altKey)) {          if (n) return          if (!e.selection.getRange().collapsed)            return e.undoManger.save(!1, !0), void (o = !1)          0 == e.undoManger.list.length && e.undoManger.save(!0),            clearTimeout(d),            (d = setTimeout(function () {              if (n)                var a = setInterval(function () {                  n || (c(e), clearInterval(a))                }, 300)              else c(e)            }, 200)),            (k = f),            m++,            m >= g && c(e)        }      }),        e.addListener('keyup', function (a, b) {          var c = b.keyCode || b.which          if (!(l[c] || b.ctrlKey || b.metaKey || b.shiftKey || b.altKey)) {            if (n) return            o || (this.undoManger.save(!1, !0), (o = !0))          }        }),        (e.stopCmdUndo = function () {          e.__hasEnterExecCommand = !0        }),        (e.startCmdUndo = function () {          e.__hasEnterExecCommand = !1        })    }),    UE.plugin.register('copy', function () {      function a() {        ZeroClipboard.config({          debug: !1,          swfPath:            b.options.UEDITOR_HOME_URL +            'third-party/zeroclipboard/ZeroClipboard.swf'        })        var a = (b.zeroclipboard = new ZeroClipboard())        a.on('copy', function (a) {          var c = a.client,            d = b.selection.getRange(),            e = document.createElement('div')          e.appendChild(d.cloneContents()),            c.setText(e.innerText || e.textContent),            c.setHtml(e.innerHTML),            d.select()        }),          a.on('mouseover mouseout', function (a) {            var b = a.target            'mouseover' == a.type              ? domUtils.addClass(b, 'edui-state-hover')              : 'mouseout' == a.type &&                domUtils.removeClasses(b, 'edui-state-hover')          }),          a.on('wrongflash noflash', function () {            ZeroClipboard.destroy()          })      }      var b = this      return {        bindEvents: {          ready: function () {            browser.ie ||              (window.ZeroClipboard                ? a()                : utils.loadFile(                    document,                    {                      src:                        b.options.UEDITOR_HOME_URL +                        'third-party/zeroclipboard/ZeroClipboard.js',                      tag: 'script',                      type: 'text/javascript',                      defer: 'defer'                    },                    function () {                      a()                    }                  ))          }        },        commands: {          copy: {            execCommand: function (a) {              b.document.execCommand('copy') || alert(b.getLang('copymsg'))            }          }        }      }    }),    (UE.plugins.paste = function () {      function a(a) {        var b = this.document        if (!b.getElementById('baidu_pastebin')) {          var c = this.selection.getRange(),            d = c.createBookmark(),            e = b.createElement('div')          ;(e.id = 'baidu_pastebin'),            browser.webkit &&              e.appendChild(                b.createTextNode(domUtils.fillChar + domUtils.fillChar)              ),            b.body.appendChild(e),            (d.start.style.display = ''),            (e.style.cssText =              'position:absolute;width:1px;height:1px;overflow:hidden;left:-1000px;white-space:nowrap;top:' +              domUtils.getXY(d.start).y +              'px'),            c.selectNodeContents(e).select(!0),            setTimeout(function () {              if (browser.webkit)                for (                  var f, g = 0, h = b.querySelectorAll('#baidu_pastebin');                  (f = h[g++]);                ) {                  if (!domUtils.isEmptyNode(f)) {                    e = f                    break                  }                  domUtils.remove(f)                }              try {                e.parentNode.removeChild(e)              } catch (i) {}              c.moveToBookmark(d).select(!0), a(e)            }, 0)        }      }      function b(a) {        return a.replace(/<(\/?)([\w\-]+)([^>]*)>/gi, function (a, b, c, d) {          return (            (c = c.toLowerCase()),            { img: 1 }[c]              ? a              : ((d = d.replace(                  /([\w\-]*?)\s*=\s*(("([^"]*)")|('([^']*)')|([^\s>]+))/gi,                  function (a, b, c) {                    return { src: 1, href: 1, name: 1 }[b.toLowerCase()]                      ? b + '=' + c + ' '                      : ''                  }                )),                { span: 1, div: 1 }[c]                  ? ''                  : '<' + b + c + ' ' + utils.trim(d) + '>')          )        })      }      function c(a) {        var c        if (a.firstChild) {          for (            var h, i = domUtils.getElementsByTagName(a, 'span'), j = 0;            (h = i[j++]);          )            ('_baidu_cut_start' != h.id && '_baidu_cut_end' != h.id) ||              domUtils.remove(h)          if (browser.webkit) {            for (              var k, l = a.querySelectorAll('div br'), j = 0;              (k = l[j++]);            ) {              var m = k.parentNode              'DIV' == m.tagName &&                1 == m.childNodes.length &&                ((m.innerHTML = '<p><br/></p>'), domUtils.remove(m))            }            for (              var n, o = a.querySelectorAll('#baidu_pastebin'), j = 0;              (n = o[j++]);            ) {              var p = d.document.createElement('p')              for (n.parentNode.insertBefore(p, n); n.firstChild; )                p.appendChild(n.firstChild)              domUtils.remove(n)            }            for (var q, r = a.querySelectorAll('meta'), j = 0; (q = r[j++]); )              domUtils.remove(q)            var l = a.querySelectorAll('br')            for (j = 0; (q = l[j++]); )              /^apple-/i.test(q.className) && domUtils.remove(q)          }          if (browser.gecko) {            var s = a.querySelectorAll('[_moz_dirty]')            for (j = 0; (q = s[j++]); ) q.removeAttribute('_moz_dirty')          }          if (!browser.ie)            for (              var q, t = a.querySelectorAll('span.Apple-style-span'), j = 0;              (q = t[j++]);            )              domUtils.remove(q, !0)          ;(c = a.innerHTML), (c = UE.filterWord(c))          var u = UE.htmlparser(c)          if (            (d.options.filterRules && UE.filterNode(u, d.options.filterRules),            d.filterInputRule(u),            browser.webkit)          ) {            var v = u.lastChild()            v && 'element' == v.type && 'br' == v.tagName && u.removeChild(v),              utils.each(d.body.querySelectorAll('div'), function (a) {                domUtils.isEmptyBlock(a) && domUtils.remove(a, !0)              })          }          if (            ((c = { html: u.toHtml() }),            d.fireEvent('beforepaste', c, u),            !c.html)          )            return          ;(u = UE.htmlparser(c.html, !0)),            1 === d.queryCommandState('pasteplain')              ? d.execCommand(                  'insertHtml',                  UE.filterNode(u, d.options.filterTxtRules).toHtml(),                  !0                )              : (UE.filterNode(u, d.options.filterTxtRules),                (e = u.toHtml()),                (f = c.html),                (g = d.selection.getRange().createAddress(!0)),                d.execCommand(                  'insertHtml',                  d.getOpt('retainOnlyLabelPasted') === !0 ? b(f) : f,                  !0                )),            d.fireEvent('afterpaste', c)        }      }      var d = this      d.setOpt({ retainOnlyLabelPasted: !1 })      var e, f, g      d.addListener('pasteTransfer', function (a, c) {        if (g && e && f && e != f) {          var h = d.selection.getRange()          if ((h.moveToAddress(g, !0), !h.collapsed)) {            for (; !domUtils.isBody(h.startContainer); ) {              var i = h.startContainer              if (1 == i.nodeType) {                if (((i = i.childNodes[h.startOffset]), !i)) {                  h.setStartBefore(h.startContainer)                  continue                }                var j = i.previousSibling                j &&                  3 == j.nodeType &&                  new RegExp('^[\n\r\t ' + domUtils.fillChar + ']*$').test(                    j.nodeValue                  ) &&                  h.setStartBefore(j)              }              if (0 != h.startOffset) break              h.setStartBefore(h.startContainer)            }            for (; !domUtils.isBody(h.endContainer); ) {              var k = h.endContainer              if (1 == k.nodeType) {                if (((k = k.childNodes[h.endOffset]), !k)) {                  h.setEndAfter(h.endContainer)                  continue                }                var l = k.nextSibling                l &&                  3 == l.nodeType &&                  new RegExp('^[\n\r\t' + domUtils.fillChar + ']*$').test(                    l.nodeValue                  ) &&                  h.setEndAfter(l)              }              if (                h.endOffset !=                h.endContainer[                  3 == h.endContainer.nodeType ? 'nodeValue' : 'childNodes'                ].length              )                break              h.setEndAfter(h.endContainer)            }          }          h.deleteContents(), h.select(!0), (d.__hasEnterExecCommand = !0)          var m = f          2 === c ? (m = b(m)) : c && (m = e),            d.execCommand('inserthtml', m, !0),            (d.__hasEnterExecCommand = !1)          for (            var n = d.selection.getRange();            !domUtils.isBody(n.startContainer) &&            !n.startOffset &&            n.startContainer[              3 == n.startContainer.nodeType ? 'nodeValue' : 'childNodes'            ].length;          )            n.setStartBefore(n.startContainer)          var o = n.createAddress(!0)          g.endAddress = o.startAddress        }      }),        d.addListener('ready', function () {          domUtils.on(d.body, 'cut', function () {            var a = d.selection.getRange()            !a.collapsed && d.undoManger && d.undoManger.save()          }),            domUtils.on(              d.body,              browser.ie || browser.opera ? 'keydown' : 'paste',              function (b) {                ;((!browser.ie && !browser.opera) ||                  ((b.ctrlKey || b.metaKey) && '86' == b.keyCode)) &&                  a.call(d, function (a) {                    c(a)                  })              }            )        }),        (d.commands.paste = {          execCommand: function (b) {            browser.ie              ? (a.call(d, function (a) {                  c(a)                }),                d.document.execCommand('paste'))              : alert(d.getLang('pastemsg'))          }        })    }),    (UE.plugins.pasteplain = function () {      var a = this      a.setOpt({        pasteplain: !1,        filterTxtRules: (function () {          function a(a) {            ;(a.tagName = 'p'), a.setStyle()          }          function b(a) {            a.parentNode.removeChild(a, !0)          }          return {            '-': 'script style object iframe embed input select',            p: { $: {} },            br: { $: {} },            div: function (a) {              for (                var b, c = UE.uNode.createElement('p');                (b = a.firstChild());              )                'text' != b.type && UE.dom.dtd.$block[b.tagName]                  ? c.firstChild()                    ? (a.parentNode.insertBefore(c, a),                      (c = UE.uNode.createElement('p')))                    : a.parentNode.insertBefore(b, a)                  : c.appendChild(b)              c.firstChild() && a.parentNode.insertBefore(c, a),                a.parentNode.removeChild(a)            },            ol: b,            ul: b,            dl: b,            dt: b,            dd: b,            li: b,            caption: a,            th: a,            tr: a,            h1: a,            h2: a,            h3: a,            h4: a,            h5: a,            h6: a,            td: function (a) {              var b = !!a.innerText()              b &&                a.parentNode.insertAfter(                  UE.uNode.createText('    '),                  a                ),                a.parentNode.removeChild(a, a.innerText())            }          }        })()      })      var b = a.options.pasteplain      a.commands.pasteplain = {        queryCommandState: function () {          return b ? 1 : 0        },        execCommand: function () {          b = 0 | !b        },        notNeedUndo: 1      }    }),    (UE.plugins.list = function () {      function a(a) {        var b = []        for (var c in a) b.push(c)        return b      }      function b(a) {        var b = a.className        return domUtils.hasClass(a, /custom_/)          ? b.match(/custom_(\w+)/)[1]          : domUtils.getStyle(a, 'list-style-type')      }      function c(a, c) {        utils.each(domUtils.getElementsByTagName(a, 'ol ul'), function (f) {          if (domUtils.inDoc(f, a)) {            var g = f.parentNode            if (g.tagName == f.tagName) {              var h = b(f) || ('OL' == f.tagName ? 'decimal' : 'disc'),                i = b(g) || ('OL' == g.tagName ? 'decimal' : 'disc')              if (h == i) {                var l = utils.indexOf(k[f.tagName], h)                ;(l = l + 1 == k[f.tagName].length ? 0 : l + 1),                  e(f, k[f.tagName][l])              }            }            var m = 0,              n = 2            domUtils.hasClass(f, /custom_/)              ? (/[ou]l/i.test(g.tagName) && domUtils.hasClass(g, /custom_/)) ||                (n = 1)              : /[ou]l/i.test(g.tagName) &&                domUtils.hasClass(g, /custom_/) &&                (n = 3)            var o = domUtils.getStyle(f, 'list-style-type')            o && (f.style.cssText = 'list-style-type:' + o),              (f.className =                utils.trim(f.className.replace(/list-paddingleft-\w+/, '')) +                ' list-paddingleft-' +                n),              utils.each(domUtils.getElementsByTagName(f, 'li'), function (a) {                if ((a.style.cssText && (a.style.cssText = ''), !a.firstChild))                  return void domUtils.remove(a)                if (a.parentNode === f) {                  if ((m++, domUtils.hasClass(f, /custom_/))) {                    var c = 1,                      d = b(f)                    if ('OL' == f.tagName) {                      if (d)                        switch (d) {                          case 'cn':                          case 'cn1':                          case 'cn2':                            m > 10 && (m % 10 == 0 || (m > 10 && m < 20))                              ? (c = 2)                              : m > 20 && (c = 3)                            break                          case 'num2':                            m > 9 && (c = 2)                        }                      a.className =                        'list-' + j[d] + m + ' list-' + d + '-paddingleft-' + c                    } else                      a.className =                        'list-' + j[d] + ' list-' + d + '-paddingleft'                  } else a.className = a.className.replace(/list-[\w\-]+/gi, '')                  var e = a.getAttribute('class')                  null === e ||                    e.replace(/\s/g, '') ||                    domUtils.removeAttributes(a, 'class')                }              }),              !c &&                d(                  f,                  f.tagName.toLowerCase(),                  b(f) || domUtils.getStyle(f, 'list-style-type'),                  !0                )          }        })      }      function d(a, d, e, f) {        var g = a.nextSibling        g &&          1 == g.nodeType &&          g.tagName.toLowerCase() == d &&          (b(g) ||            domUtils.getStyle(g, 'list-style-type') ||            ('ol' == d ? 'decimal' : 'disc')) == e &&          (domUtils.moveChild(g, a),          0 == g.childNodes.length && domUtils.remove(g)),          g && domUtils.isFillChar(g) && domUtils.remove(g)        var h = a.previousSibling        h &&          1 == h.nodeType &&          h.tagName.toLowerCase() == d &&          (b(h) ||            domUtils.getStyle(h, 'list-style-type') ||            ('ol' == d ? 'decimal' : 'disc')) == e &&          domUtils.moveChild(a, h),          h && domUtils.isFillChar(h) && domUtils.remove(h),          !f && domUtils.isEmptyBlock(a) && domUtils.remove(a),          b(a) && c(a.ownerDocument, !0)      }      function e(a, b) {        j[b] && (a.className = 'custom_' + b)        try {          domUtils.setStyle(a, 'list-style-type', b)        } catch (c) {}      }      function f(a) {        var b = a.previousSibling        b && domUtils.isEmptyBlock(b) && domUtils.remove(b),          (b = a.nextSibling),          b && domUtils.isEmptyBlock(b) && domUtils.remove(b)      }      function g(a) {        for (; a && !domUtils.isBody(a); ) {          if ('TABLE' == a.nodeName) return null          if ('LI' == a.nodeName) return a          a = a.parentNode        }      }      var h = this,        i = { TD: 1, PRE: 1, BLOCKQUOTE: 1 },        j = {          cn: 'cn-1-',          cn1: 'cn-2-',          cn2: 'cn-3-',          num: 'num-1-',          num1: 'num-2-',          num2: 'num-3-',          dash: 'dash',          dot: 'dot'        }      h.setOpt({        autoTransWordToList: !1,        insertorderedlist: {          num: '',          num1: '',          num2: '',          cn: '',          cn1: '',          cn2: '',          decimal: '',          'lower-alpha': '',          'lower-roman': '',          'upper-alpha': '',          'upper-roman': ''        },        insertunorderedlist: {          circle: '',          disc: '',          square: '',          dash: '',          dot: ''        },        listDefaultPaddingLeft: '30',        listiconpath: 'http://bs.baidu.com/listicon/',        maxListLevel: -1,        disablePInList: !1      })      var k = {          OL: a(h.options.insertorderedlist),          UL: a(h.options.insertunorderedlist)        },        l = h.options.listiconpath      for (var m in j)        h.options.insertorderedlist.hasOwnProperty(m) ||          h.options.insertunorderedlist.hasOwnProperty(m) ||          delete j[m]      h.ready(function () {        var a = []        for (var b in j) {          if ('dash' == b || 'dot' == b)            a.push(              'li.list-' + j[b] + '{background-image:url(' + l + j[b] + '.gif)}'            ),              a.push(                'ul.custom_' +                  b +                  '{list-style:none;}ul.custom_' +                  b +                  ' li{background-position:0 3px;background-repeat:no-repeat}'              )          else {            for (var c = 0; c < 99; c++)              a.push(                'li.list-' +                  j[b] +                  c +                  '{background-image:url(' +                  l +                  'list-' +                  j[b] +                  c +                  '.gif)}'              )            a.push(              'ol.custom_' +                b +                '{list-style:none;}ol.custom_' +                b +                ' li{background-position:0 3px;background-repeat:no-repeat}'            )          }          switch (b) {            case 'cn':              a.push('li.list-' + b + '-paddingleft-1{padding-left:25px}'),                a.push('li.list-' + b + '-paddingleft-2{padding-left:40px}'),                a.push('li.list-' + b + '-paddingleft-3{padding-left:55px}')              break            case 'cn1':              a.push('li.list-' + b + '-paddingleft-1{padding-left:30px}'),                a.push('li.list-' + b + '-paddingleft-2{padding-left:40px}'),                a.push('li.list-' + b + '-paddingleft-3{padding-left:55px}')              break            case 'cn2':              a.push('li.list-' + b + '-paddingleft-1{padding-left:40px}'),                a.push('li.list-' + b + '-paddingleft-2{padding-left:55px}'),                a.push('li.list-' + b + '-paddingleft-3{padding-left:68px}')              break            case 'num':            case 'num1':              a.push('li.list-' + b + '-paddingleft-1{padding-left:25px}')              break            case 'num2':              a.push('li.list-' + b + '-paddingleft-1{padding-left:35px}'),                a.push('li.list-' + b + '-paddingleft-2{padding-left:40px}')              break            case 'dash':              a.push('li.list-' + b + '-paddingleft{padding-left:35px}')              break            case 'dot':              a.push('li.list-' + b + '-paddingleft{padding-left:20px}')          }        }        a.push('.list-paddingleft-1{padding-left:0}'),          a.push(            '.list-paddingleft-2{padding-left:' +              h.options.listDefaultPaddingLeft +              'px}'          ),          a.push(            '.list-paddingleft-3{padding-left:' +              2 * h.options.listDefaultPaddingLeft +              'px}'          ),          utils.cssRule(            'list',            'ol,ul{margin:0;pading:0;' +              (browser.ie ? '' : 'width:95%') +              '}li{clear:both;}' +              a.join('\n'),            h.document          )      }),        h.ready(function () {          domUtils.on(h.body, 'cut', function () {            setTimeout(function () {              var a,                b = h.selection.getRange()              if (                !b.collapsed &&                (a = domUtils.findParentByTagName(                  b.startContainer,                  'li',                  !0                )) &&                !a.nextSibling &&                domUtils.isEmptyBlock(a)              ) {                var c,                  d = a.parentNode                if ((c = d.previousSibling))                  domUtils.remove(d),                    b.setStartAtLast(c).collapse(!0),                    b.select(!0)                else if ((c = d.nextSibling))                  domUtils.remove(d),                    b.setStartAtFirst(c).collapse(!0),                    b.select(!0)                else {                  var e = h.document.createElement('p')                  domUtils.fillNode(h.document, e),                    d.parentNode.insertBefore(e, d),                    domUtils.remove(d),                    b.setStart(e, 0).collapse(!0),                    b.select(!0)                }              }            })          })        }),        h.addListener('beforepaste', function (a, c) {          var d,            e = this,            f = e.selection.getRange(),            g = UE.htmlparser(c.html, !0)          if ((d = domUtils.findParentByTagName(f.startContainer, 'li', !0))) {            var h = d.parentNode,              i = 'OL' == h.tagName ? 'ul' : 'ol'            utils.each(g.getNodesByTagName(i), function (c) {              if (((c.tagName = h.tagName), c.setAttr(), c.parentNode === g))                a = b(h) || ('OL' == h.tagName ? 'decimal' : 'disc')              else {                var d = c.parentNode.getAttr('class')                ;(a =                  d && /custom_/.test(d)                    ? d.match(/custom_(\w+)/)[1]                    : c.parentNode.getStyle('list-style-type')),                  a || (a = 'OL' == h.tagName ? 'decimal' : 'disc')              }              var e = utils.indexOf(k[h.tagName], a)              c.parentNode !== g &&                (e = e + 1 == k[h.tagName].length ? 0 : e + 1)              var f = k[h.tagName][e]              j[f]                ? c.setAttr('class', 'custom_' + f)                : c.setStyle('list-style-type', f)            })          }          c.html = g.toHtml()        }),        h.getOpt('disablePInList') === !0 &&          h.addOutputRule(function (a) {            utils.each(a.getNodesByTagName('li'), function (a) {              var b = [],                c = 0              utils.each(a.children, function (d) {                if ('p' == d.tagName) {                  for (var e; (e = d.children.pop()); )                    b.splice(c, 0, e), (e.parentNode = a), (lastNode = e)                  if (                    ((e = b[b.length - 1]),                    !e || 'element' != e.type || 'br' != e.tagName)                  ) {                    var f = UE.uNode.createElement('br')                    ;(f.parentNode = a), b.push(f)                  }                  c = b.length                }              }),                b.length && (a.children = b)            })          }),        h.addInputRule(function (a) {          function b(a, b) {            var e = b.firstChild()            if (              e &&              'element' == e.type &&              'span' == e.tagName &&              /Wingdings|Symbol/.test(e.getStyle('font-family'))            ) {              for (var f in d) if (d[f] == e.data) return f              return 'disc'            }            for (var f in c) if (c[f].test(a)) return f          }          if (            (utils.each(a.getNodesByTagName('li'), function (a) {              for (                var b, c = UE.uNode.createElement('p'), d = 0;                (b = a.children[d]);              )                'text' == b.type || dtd.p[b.tagName]                  ? c.appendChild(b)                  : c.firstChild()                  ? (a.insertBefore(c, b),                    (c = UE.uNode.createElement('p')),                    (d += 2))                  : d++              ;((c.firstChild() && !c.parentNode) || !a.firstChild()) &&                a.appendChild(c),                c.firstChild() || c.innerHTML(browser.ie ? ' ' : '<br/>')              var e = a.firstChild(),                f = e.lastChild()              f && 'text' == f.type && /^\s*$/.test(f.data) && e.removeChild(f)            }),            h.options.autoTransWordToList)          ) {            var c = {                num1: /^\d+\)/,                decimal: /^\d+\./,                'lower-alpha': /^[a-z]+\)/,                'upper-alpha': /^[A-Z]+\./,                cn: /^[\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+[\u3001]/,                cn2: /^\([\u4E00\u4E8C\u4E09\u56DB\u516d\u4e94\u4e03\u516b\u4e5d]+\)/              },              d = { square: 'n' }            utils.each(a.getNodesByTagName('p'), function (a) {              function d(a, b, d) {                if ('ol' == a.tagName)                  if (browser.ie) {                    var e = b.firstChild()                    'element' == e.type &&                      'span' == e.tagName &&                      c[d].test(e.innerText()) &&                      b.removeChild(e)                  } else b.innerHTML(b.innerHTML().replace(c[d], ''))                else b.removeChild(b.firstChild())                var f = UE.uNode.createElement('li')                f.appendChild(b), a.appendChild(f)              }              if ('MsoListParagraph' == a.getAttr('class')) {                a.setStyle('margin', ''),                  a.setStyle('margin-left', ''),                  a.setAttr('class', '')                var e,                  f = a,                  g = a                if ('li' != a.parentNode.tagName && (e = b(a.innerText(), a))) {                  var i = UE.uNode.createElement(                    h.options.insertorderedlist.hasOwnProperty(e) ? 'ol' : 'ul'                  )                  for (                    j[e]                      ? i.setAttr('class', 'custom_' + e)                      : i.setStyle('list-style-type', e);                    a && 'li' != a.parentNode.tagName && b(a.innerText(), a);                  )                    (f = a.nextSibling()),                      f || a.parentNode.insertBefore(i, a),                      d(i, a, e),                      (a = f)                  !i.parentNode &&                    a &&                    a.parentNode &&                    a.parentNode.insertBefore(i, a)                }                var k = g.firstChild()                k &&                  'element' == k.type &&                  'span' == k.tagName &&                  /^\s*( )+\s*$/.test(k.innerText()) &&                  k.parentNode.removeChild(k)              }            })          }        }),        h.addListener('contentchange', function () {          c(h.document)        }),        h.addListener('keydown', function (a, b) {          function c() {            b.preventDefault ? b.preventDefault() : (b.returnValue = !1),              h.fireEvent('contentchange'),              h.undoManger && h.undoManger.save()          }          function d(a, b) {            for (; a && !domUtils.isBody(a); ) {              if (b(a)) return null              if (1 == a.nodeType && /[ou]l/i.test(a.tagName)) return a              a = a.parentNode            }            return null          }          var e = b.keyCode || b.which          if (13 == e && !b.shiftKey) {            var g = h.selection.getRange(),              i = domUtils.findParent(                g.startContainer,                function (a) {                  return domUtils.isBlockElm(a)                },                !0              ),              j = domUtils.findParentByTagName(g.startContainer, 'li', !0)            if (i && 'PRE' != i.tagName && !j) {              var k = i.innerHTML.replace(                new RegExp(domUtils.fillChar, 'g'),                ''              )              ;/^\s*1\s*\.[^\d]/.test(k) &&                ((i.innerHTML = k.replace(/^\s*1\s*\./, '')),                g.setStartAtLast(i).collapse(!0).select(),                (h.__hasEnterExecCommand = !0),                h.execCommand('insertorderedlist'),                (h.__hasEnterExecCommand = !1))            }            var l = h.selection.getRange(),              m = d(l.startContainer, function (a) {                return 'TABLE' == a.tagName              }),              n = l.collapsed                ? m                : d(l.endContainer, function (a) {                    return 'TABLE' == a.tagName                  })            if (m && n && m === n) {              if (!l.collapsed) {                if (                  ((m = domUtils.findParentByTagName(                    l.startContainer,                    'li',                    !0                  )),                  (n = domUtils.findParentByTagName(l.endContainer, 'li', !0)),                  !m || !n || m !== n)                ) {                  var o = l.cloneRange(),                    p = o.collapse(!1).createBookmark()                  l.deleteContents(), o.moveToBookmark(p)                  var j = domUtils.findParentByTagName(                    o.startContainer,                    'li',                    !0                  )                  return f(j), o.select(), void c()                }                if (                  (l.deleteContents(),                  (j = domUtils.findParentByTagName(                    l.startContainer,                    'li',                    !0                  )),                  j && domUtils.isEmptyBlock(j))                )                  return (                    (v = j.previousSibling),                    (next = j.nextSibling),                    (s = h.document.createElement('p')),                    domUtils.fillNode(h.document, s),                    (q = j.parentNode),                    v && next                      ? (l.setStart(next, 0).collapse(!0).select(!0),                        domUtils.remove(j))                      : ((v || next) && v                          ? j.parentNode.parentNode.insertBefore(                              s,                              q.nextSibling                            )                          : q.parentNode.insertBefore(s, q),                        domUtils.remove(j),                        q.firstChild || domUtils.remove(q),                        l.setStart(s, 0).setCursor()),                    void c()                  )              }              if (                (j = domUtils.findParentByTagName(l.startContainer, 'li', !0))              ) {                if (domUtils.isEmptyBlock(j)) {                  p = l.createBookmark()                  var q = j.parentNode                  if (                    (j !== q.lastChild                      ? (domUtils.breakParent(j, q), f(j))                      : (q.parentNode.insertBefore(j, q.nextSibling),                        domUtils.isEmptyNode(q) && domUtils.remove(q)),                    !dtd.$list[j.parentNode.tagName])                  )                    if (domUtils.isBlockElm(j.firstChild))                      domUtils.remove(j, !0)                    else {                      for (                        s = h.document.createElement('p'),                          j.parentNode.insertBefore(s, j);                        j.firstChild;                      )                        s.appendChild(j.firstChild)                      domUtils.remove(j)                    }                  l.moveToBookmark(p).select()                } else {                  var r = j.firstChild                  if (!r || !domUtils.isBlockElm(r)) {                    var s = h.document.createElement('p')                    for (                      !j.firstChild && domUtils.fillNode(h.document, s);                      j.firstChild;                    )                      s.appendChild(j.firstChild)                    j.appendChild(s), (r = s)                  }                  var t = h.document.createElement('span')                  l.insertNode(t), domUtils.breakParent(t, j)                  var u = t.nextSibling                  ;(r = u.firstChild),                    r ||                      ((s = h.document.createElement('p')),                      domUtils.fillNode(h.document, s),                      u.appendChild(s),                      (r = s)),                    domUtils.isEmptyNode(r) &&                      ((r.innerHTML = ''), domUtils.fillNode(h.document, r)),                    l.setStart(r, 0).collapse(!0).shrinkBoundary().select(),                    domUtils.remove(t)                  var v = u.previousSibling                  v &&                    domUtils.isEmptyBlock(v) &&                    ((v.innerHTML = '<p></p>'),                    domUtils.fillNode(h.document, v.firstChild))                }                c()              }            }          }          if (            8 == e &&            ((l = h.selection.getRange()),            l.collapsed &&              domUtils.isStartInblock(l) &&              ((o = l.cloneRange().trimBoundary()),              (j = domUtils.findParentByTagName(l.startContainer, 'li', !0)),              j && domUtils.isStartInblock(o)))          ) {            if (              ((m = domUtils.findParentByTagName(l.startContainer, 'p', !0)),              m && m !== j.firstChild)            ) {              var q = domUtils.findParentByTagName(m, ['ol', 'ul'])              return (                domUtils.breakParent(m, q),                f(m),                h.fireEvent('contentchange'),                l.setStart(m, 0).setCursor(!1, !0),                h.fireEvent('saveScene'),                void domUtils.preventDefault(b)              )            }            if (j && (v = j.previousSibling)) {              if (46 == e && j.childNodes.length) return              if (                (dtd.$list[v.tagName] && (v = v.lastChild),                h.undoManger && h.undoManger.save(),                (r = j.firstChild),                domUtils.isBlockElm(r))              )                if (domUtils.isEmptyNode(r))                  for (                    v.appendChild(r), l.setStart(r, 0).setCursor(!1, !0);                    j.firstChild;                  )                    v.appendChild(j.firstChild)                else                  (t = h.document.createElement('span')),                    l.insertNode(t),                    domUtils.isEmptyBlock(v) && (v.innerHTML = ''),                    domUtils.moveChild(j, v),                    l.setStartBefore(t).collapse(!0).select(!0),                    domUtils.remove(t)              else if (domUtils.isEmptyNode(j)) {                var s = h.document.createElement('p')                v.appendChild(s), l.setStart(s, 0).setCursor()              } else                for (                  l.setEnd(v, v.childNodes.length).collapse().select(!0);                  j.firstChild;                )                  v.appendChild(j.firstChild)              return (                domUtils.remove(j),                h.fireEvent('contentchange'),                h.fireEvent('saveScene'),                void domUtils.preventDefault(b)              )            }            if (j && !j.previousSibling) {              var q = j.parentNode,                p = l.createBookmark()              if (domUtils.isTagNode(q.parentNode, 'ol ul'))                q.parentNode.insertBefore(j, q),                  domUtils.isEmptyNode(q) && domUtils.remove(q)              else {                for (; j.firstChild; )                  q.parentNode.insertBefore(j.firstChild, q)                domUtils.remove(j),                  domUtils.isEmptyNode(q) && domUtils.remove(q)              }              return (                l.moveToBookmark(p).setCursor(!1, !0),                h.fireEvent('contentchange'),                h.fireEvent('saveScene'),                void domUtils.preventDefault(b)              )            }          }        }),        h.addListener('keyup', function (a, c) {          var e = c.keyCode || c.which          if (8 == e) {            var f,              g = h.selection.getRange()            ;(f = domUtils.findParentByTagName(              g.startContainer,              ['ol', 'ul'],              !0            )) &&              d(                f,                f.tagName.toLowerCase(),                b(f) || domUtils.getComputedStyle(f, 'list-style-type'),                !0              )          }        }),        h.addListener('tabkeydown', function () {          function a(a) {            if (h.options.maxListLevel != -1) {              for (var b = a.parentNode, c = 0; /[ou]l/i.test(b.tagName); )                c++, (b = b.parentNode)              if (c >= h.options.maxListLevel) return !0            }          }          var c = h.selection.getRange(),            f = domUtils.findParentByTagName(c.startContainer, 'li', !0)          if (f) {            var g            if (!c.collapsed) {              h.fireEvent('saveScene'), (g = c.createBookmark())              for (var i, j, l = 0, m = domUtils.findParents(f); (j = m[l++]); )                if (domUtils.isTagNode(j, 'ol ul')) {                  i = j                  break                }              var n = f              if (g.end)                for (                  ;                  n &&                  !(                    domUtils.getPosition(n, g.end) & domUtils.POSITION_FOLLOWING                  );                )                  if (a(n))                    n = domUtils.getNextDomNode(n, !1, null, function (a) {                      return a !== i                    })                  else {                    var o = n.parentNode,                      p = h.document.createElement(o.tagName),                      q = utils.indexOf(                        k[p.tagName],                        b(o) || domUtils.getComputedStyle(o, 'list-style-type')                      ),                      r = q + 1 == k[p.tagName].length ? 0 : q + 1,                      s = k[p.tagName][r]                    for (                      e(p, s), o.insertBefore(p, n);                      n &&                      !(                        domUtils.getPosition(n, g.end) &                        domUtils.POSITION_FOLLOWING                      );                    ) {                      if (                        ((f = n.nextSibling),                        p.appendChild(n),                        !f || domUtils.isTagNode(f, 'ol ul'))                      ) {                        if (f)                          for (; (f = f.firstChild) && 'LI' != f.tagName; );                        else                          f = domUtils.getNextDomNode(                            n,                            !1,                            null,                            function (a) {                              return a !== i                            }                          )                        break                      }                      n = f                    }                    d(p, p.tagName.toLowerCase(), s), (n = f)                  }              return (                h.fireEvent('contentchange'), c.moveToBookmark(g).select(), !0              )            }            if (a(f)) return !0            var o = f.parentNode,              p = h.document.createElement(o.tagName),              q = utils.indexOf(                k[p.tagName],                b(o) || domUtils.getComputedStyle(o, 'list-style-type')              )            q = q + 1 == k[p.tagName].length ? 0 : q + 1            var s = k[p.tagName][q]            if ((e(p, s), domUtils.isStartInblock(c)))              return (                h.fireEvent('saveScene'),                (g = c.createBookmark()),                o.insertBefore(p, f),                p.appendChild(f),                d(p, p.tagName.toLowerCase(), s),                h.fireEvent('contentchange'),                c.moveToBookmark(g).select(!0),                !0              )          }        }),        (h.commands.insertorderedlist = h.commands.insertunorderedlist =          {            execCommand: function (a, c) {              c ||                (c =                  'insertorderedlist' == a.toLowerCase() ? 'decimal' : 'disc')              var f = this,                h = this.selection.getRange(),                j = function (a) {                  return 1 == a.nodeType                    ? 'br' != a.tagName.toLowerCase()                    : !domUtils.isWhitespace(a)                },                k = 'insertorderedlist' == a.toLowerCase() ? 'ol' : 'ul',                l = f.document.createDocumentFragment()              h.adjustmentBoundary().shrinkBoundary()              var m,                n,                o,                p,                q = h.createBookmark(!0),                r = g(f.document.getElementById(q.start)),                s = 0,                t = g(f.document.getElementById(q.end)),                u = 0              if (r || t) {                if (                  (r && (m = r.parentNode),                  q.end || (t = r),                  t && (n = t.parentNode),                  m === n)                ) {                  for (; r !== t; ) {                    if (                      ((p = r),                      (r = r.nextSibling),                      !domUtils.isBlockElm(p.firstChild))                    ) {                      for (                        var v = f.document.createElement('p');                        p.firstChild;                      )                        v.appendChild(p.firstChild)                      p.appendChild(v)                    }                    l.appendChild(p)                  }                  if (                    ((p = f.document.createElement('span')),                    m.insertBefore(p, t),                    !domUtils.isBlockElm(t.firstChild))                  ) {                    for (v = f.document.createElement('p'); t.firstChild; )                      v.appendChild(t.firstChild)                    t.appendChild(v)                  }                  l.appendChild(t),                    domUtils.breakParent(p, m),                    domUtils.isEmptyNode(p.previousSibling) &&                      domUtils.remove(p.previousSibling),                    domUtils.isEmptyNode(p.nextSibling) &&                      domUtils.remove(p.nextSibling)                  var w =                    b(m) ||                    domUtils.getComputedStyle(m, 'list-style-type') ||                    ('insertorderedlist' == a.toLowerCase()                      ? 'decimal'                      : 'disc')                  if (m.tagName.toLowerCase() == k && w == c) {                    for (                      var x, y = 0, z = f.document.createDocumentFragment();                      (x = l.firstChild);                    )                      if (domUtils.isTagNode(x, 'ol ul')) z.appendChild(x)                      else                        for (; x.firstChild; )                          z.appendChild(x.firstChild), domUtils.remove(x)                    p.parentNode.insertBefore(z, p)                  } else                    (o = f.document.createElement(k)),                      e(o, c),                      o.appendChild(l),                      p.parentNode.insertBefore(o, p)                  return (                    domUtils.remove(p),                    o && d(o, k, c),                    void h.moveToBookmark(q).select()                  )                }                if (r) {                  for (; r; ) {                    if (((p = r.nextSibling), domUtils.isTagNode(r, 'ol ul')))                      l.appendChild(r)                    else {                      for (                        var A = f.document.createDocumentFragment(), B = 0;                        r.firstChild;                      )                        domUtils.isBlockElm(r.firstChild) && (B = 1),                          A.appendChild(r.firstChild)                      if (B) l.appendChild(A)                      else {                        var C = f.document.createElement('p')                        C.appendChild(A), l.appendChild(C)                      }                      domUtils.remove(r)                    }                    r = p                  }                  m.parentNode.insertBefore(l, m.nextSibling),                    domUtils.isEmptyNode(m)                      ? (h.setStartBefore(m), domUtils.remove(m))                      : h.setStartAfter(m),                    (s = 1)                }                if (t && domUtils.inDoc(n, f.document)) {                  for (r = n.firstChild; r && r !== t; ) {                    if (((p = r.nextSibling), domUtils.isTagNode(r, 'ol ul')))                      l.appendChild(r)                    else {                      for (                        A = f.document.createDocumentFragment(), B = 0;                        r.firstChild;                      )                        domUtils.isBlockElm(r.firstChild) && (B = 1),                          A.appendChild(r.firstChild)                      B                        ? l.appendChild(A)                        : ((C = f.document.createElement('p')),                          C.appendChild(A),                          l.appendChild(C)),                        domUtils.remove(r)                    }                    r = p                  }                  var D = domUtils.createElement(f.document, 'div', {                    tmpDiv: 1                  })                  domUtils.moveChild(t, D),                    l.appendChild(D),                    domUtils.remove(t),                    n.parentNode.insertBefore(l, n),                    h.setEndBefore(n),                    domUtils.isEmptyNode(n) && domUtils.remove(n),                    (u = 1)                }              }              s || h.setStartBefore(f.document.getElementById(q.start)),                q.end && !u && h.setEndAfter(f.document.getElementById(q.end)),                h.enlarge(!0, function (a) {                  return i[a.tagName]                }),                (l = f.document.createDocumentFragment())              for (                var E,                  F = h.createBookmark(),                  G = domUtils.getNextDomNode(F.start, !1, j),                  H = h.cloneRange(),                  I = domUtils.isBlockElm;                G &&                G !== F.end &&                domUtils.getPosition(G, F.end) & domUtils.POSITION_PRECEDING;              )                if (3 == G.nodeType || dtd.li[G.tagName]) {                  if (1 == G.nodeType && dtd.$list[G.tagName]) {                    for (; G.firstChild; ) l.appendChild(G.firstChild)                    ;(E = domUtils.getNextDomNode(G, !1, j)),                      domUtils.remove(G),                      (G = E)                    continue                  }                  for (                    E = G, H.setStartBefore(G);                    G && G !== F.end && (!I(G) || domUtils.isBookmarkNode(G));                  )                    (E = G),                      (G = domUtils.getNextDomNode(G, !1, null, function (a) {                        return !i[a.tagName]                      }))                  G &&                    I(G) &&                    ((p = domUtils.getNextDomNode(E, !1, j)),                    p &&                      domUtils.isBookmarkNode(p) &&                      ((G = domUtils.getNextDomNode(p, !1, j)), (E = p))),                    H.setEndAfter(E),                    (G = domUtils.getNextDomNode(E, !1, j))                  var J = h.document.createElement('li')                  if (                    (J.appendChild(H.extractContents()),                    domUtils.isEmptyNode(J))                  ) {                    for (var E = h.document.createElement('p'); J.firstChild; )                      E.appendChild(J.firstChild)                    J.appendChild(E)                  }                  l.appendChild(J)                } else G = domUtils.getNextDomNode(G, !0, j)              h.moveToBookmark(F).collapse(!0),                (o = f.document.createElement(k)),                e(o, c),                o.appendChild(l),                h.insertNode(o),                d(o, k, c)              for (                var x, y = 0, K = domUtils.getElementsByTagName(o, 'div');                (x = K[y++]);              )                x.getAttribute('tmpDiv') && domUtils.remove(x, !0)              h.moveToBookmark(q).select()            },            queryCommandState: function (a) {              for (                var b,                  c = 'insertorderedlist' == a.toLowerCase() ? 'ol' : 'ul',                  d = this.selection.getStartElementPath(),                  e = 0;                (b = d[e++]);              ) {                if ('TABLE' == b.nodeName) return 0                if (c == b.nodeName.toLowerCase()) return 1              }              return 0            },            queryCommandValue: function (a) {              for (                var c,                  d,                  e = 'insertorderedlist' == a.toLowerCase() ? 'ol' : 'ul',                  f = this.selection.getStartElementPath(),                  g = 0;                (d = f[g++]);              ) {                if ('TABLE' == d.nodeName) {                  c = null                  break                }                if (e == d.nodeName.toLowerCase()) {                  c = d                  break                }              }              return c                ? b(c) || domUtils.getComputedStyle(c, 'list-style-type')                : null            }          })    }),    (function () {      var a = {        textarea: function (a, b) {          var c = b.ownerDocument.createElement('textarea')          return (            (c.style.cssText =              'position:absolute;resize:none;width:100%;height:100%;border:0;padding:0;margin:0;overflow-y:auto;'),            browser.ie &&              browser.version < 8 &&              ((c.style.width = b.offsetWidth + 'px'),              (c.style.height = b.offsetHeight + 'px'),              (b.onresize = function () {                ;(c.style.width = b.offsetWidth + 'px'),                  (c.style.height = b.offsetHeight + 'px')              })),            b.appendChild(c),            {              setContent: function (a) {                c.value = a              },              getContent: function () {                return c.value              },              select: function () {                var a                browser.ie                  ? ((a = c.createTextRange()), a.collapse(!0), a.select())                  : (c.setSelectionRange(0, 0), c.focus())              },              dispose: function () {                b.removeChild(c), (b.onresize = null), (c = null), (b = null)              }            }          )        },        codemirror: function (a, b) {          var c = window.CodeMirror(b, {              mode: 'text/html',              tabMode: 'indent',              lineNumbers: !0,              lineWrapping: !0            }),            d = c.getWrapperElement()          return (            (d.style.cssText =              'position:absolute;left:0;top:0;width:100%;height:100%;font-family:consolas,"Courier new",monospace;font-size:13px;'),            (c.getScrollerElement().style.cssText =              'position:absolute;left:0;top:0;width:100%;height:100%;'),            c.refresh(),            {              getCodeMirror: function () {                return c              },              setContent: function (a) {                c.setValue(a)              },              getContent: function () {                return c.getValue()              },              select: function () {                c.focus()              },              dispose: function () {                b.removeChild(d), (d = null), (c = null)              }            }          )        }      }      UE.plugins.source = function () {        function b(b) {          return a[            'codemirror' == f.sourceEditor && window.CodeMirror              ? 'codemirror'              : 'textarea'          ](e, b)        }        var c,          d,          e = this,          f = this.options,          g = !1        ;(f.sourceEditor = browser.ie          ? 'textarea'          : f.sourceEditor || 'codemirror'),          e.setOpt({ sourceEditorFirst: !1 })        var h, i, j        e.commands.source = {          execCommand: function () {            if ((g = !g)) {              ;(j = e.selection.getRange().createAddress(!1, !0)),                e.undoManger && e.undoManger.save(!0),                browser.gecko && (e.body.contentEditable = !1),                (h = e.iframe.style.cssText),                (e.iframe.style.cssText +=                  'position:absolute;left:-32768px;top:-32768px;'),                e.fireEvent('beforegetcontent')              var a = UE.htmlparser(e.body.innerHTML)              e.filterOutputRule(a),                a.traversal(function (a) {                  if ('element' == a.type)                    switch (a.tagName) {                      case 'td':                      case 'th':                      case 'caption':                        a.children &&                          1 == a.children.length &&                          'br' == a.firstChild().tagName &&                          a.removeChild(a.firstChild())                        break                      case 'pre':                        a.innerText(a.innerText().replace(/ /g, ' '))                    }                }),                e.fireEvent('aftergetcontent')              var f = a.toHtml(!0)              ;(c = b(e.iframe.parentNode)),                c.setContent(f),                (d = e.setContent),                (e.setContent = function (a) {                  var b = UE.htmlparser(a)                  e.filterInputRule(b), (a = b.toHtml()), c.setContent(a)                }),                setTimeout(function () {                  c.select(),                    e.addListener('fullscreenchanged', function () {                      try {                        c.getCodeMirror().refresh()                      } catch (a) {}                    })                }),                (i = e.getContent),                (e.getContent = function () {                  return (                    c.getContent() ||                    '<p>' + (browser.ie ? '' : '<br/>') + '</p>'                  )                })            } else {              e.iframe.style.cssText = h              var k =                c.getContent() || '<p>' + (browser.ie ? '' : '<br/>') + '</p>'              ;(k = k.replace(                new RegExp('[\\r\\t\\n ]*</?(\\w+)\\s*(?:[^>]*)>', 'g'),                function (a, b) {                  return b && !dtd.$inlineWithA[b.toLowerCase()]                    ? a.replace(/(^[\n\r\t ]*)|([\n\r\t ]*$)/g, '')                    : a.replace(/(^[\n\r\t]*)|([\n\r\t]*$)/g, '')                }              )),                (e.setContent = d),                e.setContent(k),                c.dispose(),                (c = null),                (e.getContent = i)              var l = e.body.firstChild              if (                (l ||                  ((e.body.innerHTML =                    '<p>' + (browser.ie ? '' : '<br/>') + '</p>'),                  (l = e.body.firstChild)),                e.undoManger && e.undoManger.save(!0),                browser.gecko)              ) {                var m = document.createElement('input')                ;(m.style.cssText = 'position:absolute;left:0;top:-32768px'),                  document.body.appendChild(m),                  (e.body.contentEditable = !1),                  setTimeout(function () {                    domUtils.setViewportOffset(m, { left: -32768, top: 0 }),                      m.focus(),                      setTimeout(function () {                        ;(e.body.contentEditable = !0),                          e.selection.getRange().moveToAddress(j).select(!0),                          domUtils.remove(m)                      })                  })              } else                try {                  e.selection.getRange().moveToAddress(j).select(!0)                } catch (n) {}            }            this.fireEvent('sourcemodechanged', g)          },          queryCommandState: function () {            return 0 | g          },          notNeedUndo: 1        }        var k = e.queryCommandState        ;(e.queryCommandState = function (a) {          return (            (a = a.toLowerCase()),            g              ? a in { source: 1, fullscreen: 1 }                ? 1                : -1              : k.apply(this, arguments)          )        }),          'codemirror' == f.sourceEditor &&            e.addListener('ready', function () {              utils.loadFile(                document,                {                  src:                    f.codeMirrorJsUrl ||                    f.UEDITOR_HOME_URL + 'third-party/codemirror/codemirror.js',                  tag: 'script',                  type: 'text/javascript',                  defer: 'defer'                },                function () {                  f.sourceEditorFirst &&                    setTimeout(function () {                      e.execCommand('source')                    }, 0)                }              ),                utils.loadFile(document, {                  tag: 'link',                  rel: 'stylesheet',                  type: 'text/css',                  href:                    f.codeMirrorCssUrl ||                    f.UEDITOR_HOME_URL + 'third-party/codemirror/codemirror.css'                })            })      }    })(),    (UE.plugins.enterkey = function () {      var a,        b = this,        c = b.options.enterTag      b.addListener('keyup', function (c, d) {        var e = d.keyCode || d.which        if (13 == e) {          var f,            g = b.selection.getRange(),            h = g.startContainer          if (browser.ie) b.fireEvent('saveScene', !0, !0)          else {            if (/h\d/i.test(a)) {              if (browser.gecko) {                var i = domUtils.findParentByTagName(                  h,                  [                    'h1',                    'h2',                    'h3',                    'h4',                    'h5',                    'h6',                    'blockquote',                    'caption',                    'table'                  ],                  !0                )                i || (b.document.execCommand('formatBlock', !1, '<p>'), (f = 1))              } else if (1 == h.nodeType) {                var j,                  k = b.document.createTextNode('')                if (                  (g.insertNode(k),                  (j = domUtils.findParentByTagName(k, 'div', !0)))                ) {                  for (var l = b.document.createElement('p'); j.firstChild; )                    l.appendChild(j.firstChild)                  j.parentNode.insertBefore(l, j),                    domUtils.remove(j),                    g.setStartBefore(k).setCursor(),                    (f = 1)                }                domUtils.remove(k)              }              b.undoManger && f && b.undoManger.save()            }            browser.opera && g.select()          }        }      }),        b.addListener('keydown', function (d, e) {          var f = e.keyCode || e.which          if (13 == f) {            if (b.fireEvent('beforeenterkeydown'))              return void domUtils.preventDefault(e)            b.fireEvent('saveScene', !0, !0), (a = '')            var g = b.selection.getRange()            if (!g.collapsed) {              var h = g.startContainer,                i = g.endContainer,                j = domUtils.findParentByTagName(h, 'td', !0),                k = domUtils.findParentByTagName(i, 'td', !0)              if ((j && k && j !== k) || (!j && k) || (j && !k))                return void (e.preventDefault                  ? e.preventDefault()                  : (e.returnValue = !1))            }            if ('p' == c)              browser.ie ||                ((h = domUtils.findParentByTagName(                  g.startContainer,                  [                    'ol',                    'ul',                    'p',                    'h1',                    'h2',                    'h3',                    'h4',                    'h5',                    'h6',                    'blockquote',                    'caption'                  ],                  !0                )),                h || browser.opera                  ? ((a = h.tagName),                    'p' == h.tagName.toLowerCase() &&                      browser.gecko &&                      domUtils.removeDirtyAttr(h))                  : (b.document.execCommand('formatBlock', !1, '<p>'),                    browser.gecko &&                      ((g = b.selection.getRange()),                      (h = domUtils.findParentByTagName(                        g.startContainer,                        'p',                        !0                      )),                      h && domUtils.removeDirtyAttr(h))))            else if (              (e.preventDefault ? e.preventDefault() : (e.returnValue = !1),              g.collapsed)            ) {              ;(m = g.document.createElement('br')), g.insertNode(m)              var l = m.parentNode              l.lastChild === m                ? (m.parentNode.insertBefore(m.cloneNode(!0), m),                  g.setStartBefore(m))                : g.setStartAfter(m),                g.setCursor()            } else if (              (g.deleteContents(),              (h = g.startContainer),              1 == h.nodeType && (h = h.childNodes[g.startOffset]))            ) {              for (; 1 == h.nodeType; ) {                if (dtd.$empty[h.tagName])                  return (                    g.setStartBefore(h).setCursor(),                    b.undoManger && b.undoManger.save(),                    !1                  )                if (!h.firstChild) {                  var m = g.document.createElement('br')                  return (                    h.appendChild(m),                    g.setStart(h, 0).setCursor(),                    b.undoManger && b.undoManger.save(),                    !1                  )                }                h = h.firstChild              }              h === g.startContainer.childNodes[g.startOffset]                ? ((m = g.document.createElement('br')),                  g.insertNode(m).setCursor())                : g.setStart(h, 0).setCursor()            } else              (m = g.document.createElement('br')),                g.insertNode(m).setStartAfter(m).setCursor()          }        })    }),    (UE.plugins.keystrokes = function () {      var a = this,        b = !0      a.addListener('keydown', function (c, d) {        var e = d.keyCode || d.which,          f = a.selection.getRange()        if (          !f.collapsed &&          !(d.ctrlKey || d.shiftKey || d.altKey || d.metaKey) &&          ((e >= 65 && e <= 90) ||            (e >= 48 && e <= 57) ||            (e >= 96 && e <= 111) ||            { 13: 1, 8: 1, 46: 1 }[e])        ) {          var g = f.startContainer          if (            (domUtils.isFillChar(g) && f.setStartBefore(g),            (g = f.endContainer),            domUtils.isFillChar(g) && f.setEndAfter(g),            f.txtToElmBoundary(),            f.endContainer &&              1 == f.endContainer.nodeType &&              ((g = f.endContainer.childNodes[f.endOffset]),              g && domUtils.isBr(g) && f.setEndAfter(g)),            0 == f.startOffset &&              ((g = f.startContainer),              domUtils.isBoundaryNode(g, 'firstChild') &&                ((g = f.endContainer),                f.endOffset ==                  (3 == g.nodeType                    ? g.nodeValue.length                    : g.childNodes.length) &&                  domUtils.isBoundaryNode(g, 'lastChild'))))          )            return (              a.fireEvent('saveScene'),              (a.body.innerHTML = '<p>' + (browser.ie ? '' : '<br/>') + '</p>'),              f.setStart(a.body.firstChild, 0).setCursor(!1, !0),              void a._selectionChange()            )        }        if (e == keymap.Backspace) {          if (            ((f = a.selection.getRange()),            (b = f.collapsed),            a.fireEvent('delkeydown', d))          )            return          var h, i          if (            (f.collapsed &&              f.inFillChar() &&              ((h = f.startContainer),              domUtils.isFillChar(h)                ? (f.setStartBefore(h).shrinkBoundary(!0).collapse(!0),                  domUtils.remove(h))                : ((h.nodeValue = h.nodeValue.replace(                    new RegExp('^' + domUtils.fillChar),                    ''                  )),                  f.startOffset--,                  f.collapse(!0).select(!0))),            (h = f.getClosedNode()))          )            return (              a.fireEvent('saveScene'),              f.setStartBefore(h),              domUtils.remove(h),              f.setCursor(),              a.fireEvent('saveScene'),              void domUtils.preventDefault(d)            )          if (            !browser.ie &&            ((h = domUtils.findParentByTagName(f.startContainer, 'table', !0)),            (i = domUtils.findParentByTagName(f.endContainer, 'table', !0)),            (h && !i) || (!h && i) || h !== i)          )            return void d.preventDefault()        }        if (e == keymap.Tab) {          var j = { ol: 1, ul: 1, table: 1 }          if (a.fireEvent('tabkeydown', d))            return void domUtils.preventDefault(d)          var k = a.selection.getRange()          a.fireEvent('saveScene')          for (            var l = 0,              m = '',              n = a.options.tabSize || 4,              o = a.options.tabNode || ' ';            l < n;            l++          )            m += o          var p = a.document.createElement('span')          if (((p.innerHTML = m + domUtils.fillChar), k.collapsed))            k.insertNode(p.cloneNode(!0).firstChild).setCursor(!0)          else {            var q = function (a) {              return domUtils.isBlockElm(a) && !j[a.tagName.toLowerCase()]            }            if (              ((h = domUtils.findParent(k.startContainer, q, !0)),              (i = domUtils.findParent(k.endContainer, q, !0)),              h && i && h === i)            )              k.deleteContents(),                k.insertNode(p.cloneNode(!0).firstChild).setCursor(!0)            else {              var r = k.createBookmark()              k.enlarge(!0)              for (                var s = k.createBookmark(),                  t = domUtils.getNextDomNode(s.start, !1, q);                t &&                !(domUtils.getPosition(t, s.end) & domUtils.POSITION_FOLLOWING);              )                t.insertBefore(p.cloneNode(!0).firstChild, t.firstChild),                  (t = domUtils.getNextDomNode(t, !1, q))              k.moveToBookmark(s).moveToBookmark(r).select()            }          }          domUtils.preventDefault(d)        }        if (          browser.gecko &&          46 == e &&          ((k = a.selection.getRange()),          k.collapsed && ((h = k.startContainer), domUtils.isEmptyBlock(h)))        ) {          for (            var u = h.parentNode;            1 == domUtils.getChildCount(u) && !domUtils.isBody(u);          )            (h = u), (u = u.parentNode)          return void (h === u.lastChild && d.preventDefault())        }      }),        a.addListener('keyup', function (a, c) {          var d,            e = c.keyCode || c.which,            f = this          if (e == keymap.Backspace) {            if (f.fireEvent('delkeyup')) return            if (((d = f.selection.getRange()), d.collapsed)) {              var g,                h = ['h1', 'h2', 'h3', 'h4', 'h5', 'h6']              if (                (g = domUtils.findParentByTagName(d.startContainer, h, !0)) &&                domUtils.isEmptyBlock(g)              ) {                var i = g.previousSibling                if (i && 'TABLE' != i.nodeName)                  return (                    domUtils.remove(g),                    void d.setStartAtLast(i).setCursor(!1, !0)                  )                var j = g.nextSibling                if (j && 'TABLE' != j.nodeName)                  return (                    domUtils.remove(g),                    void d.setStartAtFirst(j).setCursor(!1, !0)                  )              }              if (domUtils.isBody(d.startContainer)) {                var g = domUtils.createElement(f.document, 'p', {                  innerHTML: browser.ie ? domUtils.fillChar : '<br/>'                })                d.insertNode(g).setStart(g, 0).setCursor(!1, !0)              }            }            if (              !b &&              (3 == d.startContainer.nodeType ||                (1 == d.startContainer.nodeType &&                  domUtils.isEmptyBlock(d.startContainer)))            )              if (browser.ie) {                var k = d.document.createElement('span')                d.insertNode(k).setStartBefore(k).collapse(!0),                  d.select(),                  domUtils.remove(k)              } else d.select()          }        })    }),    (UE.plugins.fiximgclick = (function () {      function a() {        ;(this.editor = null),          (this.resizer = null),          (this.cover = null),          (this.doc = document),          (this.prePos = { x: 0, y: 0 }),          (this.startPos = { x: 0, y: 0 })      }      var b = !1      return (        (function () {          var c = [            [0, 0, -1, -1],            [0, 0, 0, -1],            [0, 0, 1, -1],            [0, 0, -1, 0],            [0, 0, 1, 0],            [0, 0, -1, 1],            [0, 0, 0, 1],            [0, 0, 1, 1]          ]          a.prototype = {            init: function (a) {              var b = this              ;(b.editor = a),                (b.startPos = this.prePos = { x: 0, y: 0 }),                (b.dragId = -1)              var c = [],                d = (b.cover = document.createElement('div')),                e = (b.resizer = document.createElement('div'))              for (                d.id = b.editor.ui.id + '_imagescale_cover',                  d.style.cssText =                    'position:absolute;display:none;z-index:' +                    b.editor.options.zIndex +                    ';filter:alpha(opacity=0); opacity:0;background:#CCC;',                  domUtils.on(d, 'mousedown click', function () {                    b.hide()                  }),                  i = 0;                i < 8;                i++              )                c.push(                  '<span class="edui-editor-imagescale-hand' + i + '"></span>'                )              ;(e.id = b.editor.ui.id + '_imagescale'),                (e.className = 'edui-editor-imagescale'),                (e.innerHTML = c.join('')),                (e.style.cssText +=                  ';display:none;border:1px solid #3b77ff;z-index:' +                  b.editor.options.zIndex +                  ';'),                b.editor.ui.getDom().appendChild(d),                b.editor.ui.getDom().appendChild(e),                b.initStyle(),                b.initEvents()            },            initStyle: function () {              utils.cssRule(                'imagescale',                '.edui-editor-imagescale{display:none;position:absolute;border:1px solid #38B2CE;cursor:hand;-webkit-box-sizing: content-box;-moz-box-sizing: content-box;box-sizing: content-box;}.edui-editor-imagescale span{position:absolute;width:6px;height:6px;overflow:hidden;font-size:0px;display:block;background-color:#3C9DD0;}.edui-editor-imagescale .edui-editor-imagescale-hand0{cursor:nw-resize;top:0;margin-top:-4px;left:0;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand1{cursor:n-resize;top:0;margin-top:-4px;left:50%;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand2{cursor:ne-resize;top:0;margin-top:-4px;left:100%;margin-left:-3px;}.edui-editor-imagescale .edui-editor-imagescale-hand3{cursor:w-resize;top:50%;margin-top:-4px;left:0;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand4{cursor:e-resize;top:50%;margin-top:-4px;left:100%;margin-left:-3px;}.edui-editor-imagescale .edui-editor-imagescale-hand5{cursor:sw-resize;top:100%;margin-top:-3px;left:0;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand6{cursor:s-resize;top:100%;margin-top:-3px;left:50%;margin-left:-4px;}.edui-editor-imagescale .edui-editor-imagescale-hand7{cursor:se-resize;top:100%;margin-top:-3px;left:100%;margin-left:-3px;}'              )            },            initEvents: function () {              var a = this              ;(a.startPos.x = a.startPos.y = 0), (a.isDraging = !1)            },            _eventHandler: function (a) {              var c = this              switch (a.type) {                case 'mousedown':                  var d,                    d = a.target || a.srcElement                  d.className.indexOf('edui-editor-imagescale-hand') != -1 &&                    c.dragId == -1 &&                    ((c.dragId = d.className.slice(-1)),                    (c.startPos.x = c.prePos.x = a.clientX),                    (c.startPos.y = c.prePos.y = a.clientY),                    domUtils.on(                      c.doc,                      'mousemove',                      c.proxy(c._eventHandler, c)                    ))                  break                case 'mousemove':                  c.dragId != -1 &&                    (c.updateContainerStyle(c.dragId, {                      x: a.clientX - c.prePos.x,                      y: a.clientY - c.prePos.y                    }),                    (c.prePos.x = a.clientX),                    (c.prePos.y = a.clientY),                    (b = !0),                    c.updateTargetElement())                  break                case 'mouseup':                  c.dragId != -1 &&                    (c.updateContainerStyle(c.dragId, {                      x: a.clientX - c.prePos.x,                      y: a.clientY - c.prePos.y                    }),                    c.updateTargetElement(),                    c.target.parentNode && c.attachTo(c.target),                    (c.dragId = -1)),                    domUtils.un(                      c.doc,                      'mousemove',                      c.proxy(c._eventHandler, c)                    ),                    b && ((b = !1), c.editor.fireEvent('contentchange'))              }            },            updateTargetElement: function () {              var a = this              domUtils.setStyles(a.target, {                width: a.resizer.style.width,                height: a.resizer.style.height              }),                (a.target.width = parseInt(a.resizer.style.width)),                (a.target.height = parseInt(a.resizer.style.height)),                a.attachTo(a.target)            },            updateContainerStyle: function (a, b) {              var d,                e = this,                f = e.resizer              0 != c[a][0] &&                ((d = parseInt(f.style.left) + b.x),                (f.style.left = e._validScaledProp('left', d) + 'px')),                0 != c[a][1] &&                  ((d = parseInt(f.style.top) + b.y),                  (f.style.top = e._validScaledProp('top', d) + 'px')),                0 != c[a][2] &&                  ((d = f.clientWidth + c[a][2] * b.x),                  (f.style.width = e._validScaledProp('width', d) + 'px')),                0 != c[a][3] &&                  ((d = f.clientHeight + c[a][3] * b.y),                  (f.style.height = e._validScaledProp('height', d) + 'px'))            },            _validScaledProp: function (a, b) {              var c = this.resizer,                d = document              switch (((b = isNaN(b) ? 0 : b), a)) {                case 'left':                  return b < 0                    ? 0                    : b + c.clientWidth > d.clientWidth                    ? d.clientWidth - c.clientWidth                    : b                case 'top':                  return b < 0                    ? 0                    : b + c.clientHeight > d.clientHeight                    ? d.clientHeight - c.clientHeight                    : b                case 'width':                  return b <= 0                    ? 1                    : b + c.offsetLeft > d.clientWidth                    ? d.clientWidth - c.offsetLeft                    : b                case 'height':                  return b <= 0                    ? 1                    : b + c.offsetTop > d.clientHeight                    ? d.clientHeight - c.offsetTop                    : b              }            },            hideCover: function () {              this.cover.style.display = 'none'            },            showCover: function () {              var a = this,                b = domUtils.getXY(a.editor.ui.getDom()),                c = domUtils.getXY(a.editor.iframe)              domUtils.setStyles(a.cover, {                width: a.editor.iframe.offsetWidth + 'px',                height: a.editor.iframe.offsetHeight + 'px',                top: c.y - b.y + 'px',                left: c.x - b.x + 'px',                position: 'absolute',                display: ''              })            },            show: function (a) {              var b = this              ;(b.resizer.style.display = 'block'),                a && b.attachTo(a),                domUtils.on(                  this.resizer,                  'mousedown',                  b.proxy(b._eventHandler, b)                ),                domUtils.on(b.doc, 'mouseup', b.proxy(b._eventHandler, b)),                b.showCover(),                b.editor.fireEvent('afterscaleshow', b),                b.editor.fireEvent('saveScene')            },            hide: function () {              var a = this              a.hideCover(),                (a.resizer.style.display = 'none'),                domUtils.un(                  a.resizer,                  'mousedown',                  a.proxy(a._eventHandler, a)                ),                domUtils.un(a.doc, 'mouseup', a.proxy(a._eventHandler, a)),                a.editor.fireEvent('afterscalehide', a)            },            proxy: function (a, b) {              return function (c) {                return a.apply(b || this, arguments)              }            },            attachTo: function (a) {              var b = this,                c = (b.target = a),                d = this.resizer,                e = domUtils.getXY(c),                f = domUtils.getXY(b.editor.iframe),                g = domUtils.getXY(d.parentNode)              domUtils.setStyles(d, {                width: c.width + 'px',                height: c.height + 'px',                left:                  f.x +                  e.x -                  b.editor.document.body.scrollLeft -                  g.x -                  parseInt(d.style.borderLeftWidth) +                  'px',                top:                  f.y +                  e.y -                  b.editor.document.body.scrollTop -                  g.y -                  parseInt(d.style.borderTopWidth) +                  'px'              })            }          }        })(),        function () {          var b,            c = this          c.setOpt('imageScaleEnabled', !0),            !browser.ie &&              c.options.imageScaleEnabled &&              c.addListener('click', function (d, e) {                var f = c.selection.getRange(),                  g = f.getClosedNode()                if (                  g &&                  'IMG' == g.tagName &&                  'false' != c.body.contentEditable                ) {                  if (                    g.className.indexOf('edui-faked-music') != -1 ||                    g.getAttribute('anchorname') ||                    domUtils.hasClass(g, 'loadingclass') ||                    domUtils.hasClass(g, 'loaderrorclass')                  )                    return                  if (!b) {                    ;(b = new a()),                      b.init(c),                      c.ui.getDom().appendChild(b.resizer)                    var h,                      i = function (a) {                        b.hide(),                          b.target &&                            c.selection.getRange().selectNode(b.target).select()                      },                      j = function (a) {                        var b = a.target || a.srcElement                        !b ||                          (void 0 !== b.className &&                            b.className.indexOf('edui-editor-imagescale') !=                              -1) ||                          i(a)                      }                    c.addListener('afterscaleshow', function (a) {                      c.addListener('beforekeydown', i),                        c.addListener('beforemousedown', j),                        domUtils.on(document, 'keydown', i),                        domUtils.on(document, 'mousedown', j),                        c.selection.getNative().removeAllRanges()                    }),                      c.addListener('afterscalehide', function (a) {                        c.removeListener('beforekeydown', i),                          c.removeListener('beforemousedown', j),                          domUtils.un(document, 'keydown', i),                          domUtils.un(document, 'mousedown', j)                        var d = b.target                        d.parentNode &&                          c.selection.getRange().selectNode(d).select()                      }),                      domUtils.on(b.resizer, 'mousedown', function (a) {                        c.selection.getNative().removeAllRanges()                        var d = a.target || a.srcElement                        d &&                          d.className.indexOf('edui-editor-imagescale-hand') ==                            -1 &&                          (h = setTimeout(function () {                            b.hide(),                              b.target &&                                c.selection.getRange().selectNode(d).select()                          }, 200))                      }),                      domUtils.on(b.resizer, 'mouseup', function (a) {                        var b = a.target || a.srcElement                        b &&                          b.className.indexOf('edui-editor-imagescale-hand') ==                            -1 &&                          clearTimeout(h)                      })                  }                  b.show(g)                } else b && 'none' != b.resizer.style.display && b.hide()              }),            browser.webkit &&              c.addListener('click', function (a, b) {                if (                  'IMG' == b.target.tagName &&                  'false' != c.body.contentEditable                ) {                  var d = new dom.Range(c.document)                  d.selectNode(b.target).select()                }              })        }      )    })()),    UE.plugin.register(      'autolink',      function () {        var a = 0        return browser.ie          ? {}          : {              bindEvents: {                reset: function () {                  a = 0                },                keydown: function (a, b) {                  var c = this,                    d = b.keyCode || b.which                  if (32 == d || 13 == d) {                    for (                      var e,                        f,                        g = c.selection.getNative(),                        h = g.getRangeAt(0).cloneRange(),                        i = h.startContainer;                      1 == i.nodeType &&                      h.startOffset > 0 &&                      (i = h.startContainer.childNodes[h.startOffset - 1]);                    )                      h.setStart(                        i,                        1 == i.nodeType                          ? i.childNodes.length                          : i.nodeValue.length                      ),                        h.collapse(!0),                        (i = h.startContainer)                    do {                      if (0 == h.startOffset) {                        for (                          i = h.startContainer.previousSibling;                          i && 1 == i.nodeType;                        )                          i = i.lastChild                        if (!i || domUtils.isFillChar(i)) break                        e = i.nodeValue.length                      } else (i = h.startContainer), (e = h.startOffset)                      h.setStart(i, e - 1), (f = h.toString().charCodeAt(0))                    } while (160 != f && 32 != f)                    if (                      h                        .toString()                        .replace(new RegExp(domUtils.fillChar, 'g'), '')                        .match(                          /(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i                        )                    ) {                      for (                        ;                        h.toString().length &&                        !/^(?:https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.)/i.test(                          h.toString()                        );                      )                        try {                          h.setStart(h.startContainer, h.startOffset + 1)                        } catch (j) {                          for (                            var i = h.startContainer;                            !(next = i.nextSibling);                          ) {                            if (domUtils.isBody(i)) return                            i = i.parentNode                          }                          h.setStart(next, 0)                        }                      if (                        domUtils.findParentByTagName(h.startContainer, 'a', !0)                      )                        return                      var k,                        l = c.document.createElement('a'),                        m = c.document.createTextNode(' ')                      c.undoManger && c.undoManger.save(),                        l.appendChild(h.extractContents()),                        (l.href = l.innerHTML =                          l.innerHTML.replace(/<[^>]+>/g, '')),                        (k = l                          .getAttribute('href')                          .replace(new RegExp(domUtils.fillChar, 'g'), '')),                        (k = /^(?:https?:\/\/)/gi.test(k) ? k : 'http://' + k),                        l.setAttribute('_src', utils.html(k)),                        (l.href = utils.html(k)),                        h.insertNode(l),                        l.parentNode.insertBefore(m, l.nextSibling),                        h.setStart(m, 0),                        h.collapse(!0),                        g.removeAllRanges(),                        g.addRange(h),                        c.undoManger && c.undoManger.save()                    }                  }                }              }            }      },      function () {        function a(a) {          if (3 == a.nodeType) return null          if ('A' == a.nodeName) return a          for (var b = a.lastChild; b; ) {            if ('A' == b.nodeName) return b            if (3 == b.nodeType) {              if (domUtils.isWhitespace(b)) {                b = b.previousSibling                continue              }              return null            }            b = b.lastChild          }        }        var b = { 37: 1, 38: 1, 39: 1, 40: 1, 13: 1, 32: 1 }        browser.ie &&          this.addListener('keyup', function (c, d) {            var e = this,              f = d.keyCode            if (b[f]) {              var g = e.selection.getRange(),                h = g.startContainer              if (13 == f) {                for (; h && !domUtils.isBody(h) && !domUtils.isBlockElm(h); )                  h = h.parentNode                if (h && !domUtils.isBody(h) && 'P' == h.nodeName) {                  var i = h.previousSibling                  if (i && 1 == i.nodeType) {                    var i = a(i)                    i && !i.getAttribute('_href') && domUtils.remove(i, !0)                  }                }              } else if (32 == f)                3 == h.nodeType &&                  /^\s$/.test(h.nodeValue) &&                  ((h = h.previousSibling),                  h &&                    'A' == h.nodeName &&                    !h.getAttribute('_href') &&                    domUtils.remove(h, !0))              else if (                ((h = domUtils.findParentByTagName(h, 'a', !0)),                h && !h.getAttribute('_href'))              ) {                var j = g.createBookmark()                domUtils.remove(h, !0), g.moveToBookmark(j).select(!0)              }            }          })      }    ),    (UE.plugins.autoheight = function () {      function a() {        var a = this        clearTimeout(e),          f ||            ((!a.queryCommandState ||              (a.queryCommandState && 1 != a.queryCommandState('source'))) &&              (e = setTimeout(function () {                for (var b = a.body.lastChild; b && 1 != b.nodeType; )                  b = b.previousSibling                b &&                  1 == b.nodeType &&                  ((b.style.clear = 'both'),                  (d = Math.max(                    domUtils.getXY(b).y + b.offsetHeight + 25,                    Math.max(h.minFrameHeight, h.initialFrameHeight)                  )),                  d != g &&                    (d !== parseInt(a.iframe.parentNode.style.height) &&                      (a.iframe.parentNode.style.height = d + 'px'),                    (a.body.style.height = d + 'px'),                    (g = d)),                  domUtils.removeStyle(b, 'clear'))              }, 50)))      }      var b = this      if (        ((b.autoHeightEnabled = b.options.autoHeightEnabled !== !1),        b.autoHeightEnabled)      ) {        var c,          d,          e,          f,          g = 0,          h = b.options        b.addListener('fullscreenchanged', function (a, b) {          f = b        }),          b.addListener('destroy', function () {            b.removeListener('contentchange afterinserthtml keyup mouseup', a)          }),          (b.enableAutoHeight = function () {            var b = this            if (b.autoHeightEnabled) {              var d = b.document              ;(b.autoHeightEnabled = !0),                (c = d.body.style.overflowY),                (d.body.style.overflowY = 'hidden'),                b.addListener('contentchange afterinserthtml keyup mouseup', a),                setTimeout(                  function () {                    a.call(b)                  },                  browser.gecko ? 100 : 0                ),                b.fireEvent('autoheightchanged', b.autoHeightEnabled)            }          }),          (b.disableAutoHeight = function () {            ;(b.body.style.overflowY = c || ''),              b.removeListener('contentchange', a),              b.removeListener('keyup', a),              b.removeListener('mouseup', a),              (b.autoHeightEnabled = !1),              b.fireEvent('autoheightchanged', b.autoHeightEnabled)          }),          b.on('setHeight', function () {            b.disableAutoHeight()          }),          b.addListener('ready', function () {            b.enableAutoHeight()            var c            domUtils.on(              browser.ie ? b.body : b.document,              browser.webkit ? 'dragover' : 'drop',              function () {                clearTimeout(c),                  (c = setTimeout(function () {                    a.call(b)                  }, 100))              }            )            var d            window.onscroll = function () {              null === d                ? (d = this.scrollY)                : 0 == this.scrollY &&                  0 != d &&                  (b.window.scrollTo(0, 0), (d = null))            }          })      }    }),    (UE.plugins.autofloat = function () {      function a() {        return UE.ui ? 1 : (alert(g.autofloatMsg), 0)      }      function b() {        var a = document.body.style        ;(a.backgroundImage = 'url("about:blank")'),          (a.backgroundAttachment = 'fixed')      }      function c() {        var a = domUtils.getXY(k),          b = domUtils.getComputedStyle(k, 'position'),          c = domUtils.getComputedStyle(k, 'left')        ;(k.style.width = k.offsetWidth + 'px'),          (k.style.zIndex = 1 * f.options.zIndex + 1),          k.parentNode.insertBefore(q, k),          o || (p && browser.ie)            ? ('absolute' != k.style.position &&                (k.style.position = 'absolute'),              (k.style.top =                (document.body.scrollTop ||                  document.documentElement.scrollTop) -                l +                i +                'px'))            : (browser.ie7Compat &&                r &&                ((r = !1),                (k.style.left =                  domUtils.getXY(k).x -                  document.documentElement.getBoundingClientRect().left +                  2 +                  'px')),              'fixed' != k.style.position &&                ((k.style.position = 'fixed'),                (k.style.top = i + 'px'),                ('absolute' == b || 'relative' == b) &&                  parseFloat(c) &&                  (k.style.left = a.x + 'px')))      }      function d() {        ;(r = !0),          q.parentNode && q.parentNode.removeChild(q),          (k.style.cssText = j)      }      function e() {        var a = m(f.container),          b = f.options.toolbarTopOffset || 0        a.top < 0 && a.bottom - k.offsetHeight > b ? c() : d()      }      var f = this,        g = f.getLang()      f.setOpt({ topOffset: 0 })      var h = f.options.autoFloatEnabled !== !1,        i = f.options.topOffset      if (h) {        var j,          k,          l,          m,          n = UE.ui.uiUtils,          o = browser.ie && browser.version <= 6,          p = browser.quirks,          q = document.createElement('div'),          r = !0,          s = utils.defer(            function () {              e()            },            browser.ie ? 200 : 100,            !0          )        f.addListener('destroy', function () {          domUtils.un(window, ['scroll', 'resize'], e),            f.removeListener('keydown', s)        }),          f.addListener('ready', function () {            if (a(f)) {              if (!f.ui) return              ;(m = n.getClientRect),                (k = f.ui.getDom('toolbarbox')),                (l = m(k).top),                (j = k.style.cssText),                (q.style.height = k.offsetHeight + 'px'),                o && b(),                domUtils.on(window, ['scroll', 'resize'], e),                f.addListener('keydown', s),                f.addListener('beforefullscreenchange', function (a, b) {                  b && d()                }),                f.addListener('fullscreenchanged', function (a, b) {                  b || e()                }),                f.addListener('sourcemodechanged', function (a, b) {                  setTimeout(function () {                    e()                  }, 0)                }),                f.addListener('clearDoc', function () {                  setTimeout(function () {                    e()                  }, 0)                })            }          })      }    }),    (UE.plugins.video = function () {      function a(a, b, d, e, f, g, h) {        ;(a = utils.unhtmlForUrl(a)),          (f = utils.unhtml(f)),          (g = utils.unhtml(g).trim()),          (b = parseInt(b, 10) || 0),          (d = parseInt(d, 10) || 0)        var i        switch (h) {          case 'image':            i =              '<img ' +              (e ? 'id="' + e + '"' : '') +              ' width="' +              b +              '" height="' +              d +              '" _url="' +              a +              '" class="' +              g.replace(/\bvideo-js\b/, '') +              '" src="' +              c.options.UEDITOR_HOME_URL +              'themes/default/images/spacer.gif" style="background:url(' +              c.options.UEDITOR_HOME_URL +              'themes/default/images/videologo.gif) no-repeat center center; border:1px solid gray;' +              (f ? 'float:' + f + ';' : '') +              '" />'            break          case 'embed':            i =              '<embed type="application/x-shockwave-flash" class="' +              g +              '" pluginspage="http://www.macromedia.com/go/getflashplayer" src="' +              utils.html(a) +              '" width="' +              b +              '" height="' +              d +              '"' +              (f ? ' style="float:' + f + '"' : '') +              ' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" >'            break          case 'video':            var j = a.substr(a.lastIndexOf('.') + 1)            'ogv' == j && (j = 'ogg'),              (i =                '<video' +                (e ? ' id="' + e + '"' : '') +                ' class="' +                g +                ' video-js" ' +                (f ? ' style="float:' + f + '"' : '') +                ' controls preload="none" width="' +                b +                '" height="' +                d +                '" src="' +                a +                '" data-setup="{}"><source src="' +                a +                '" type="video/' +                j +                '" /></video>')        }        return i      }      function b(b, c) {        utils.each(          b.getNodesByTagName(c ? 'img' : 'embed video'),          function (b) {            var d = b.getAttr('class')            if (d && d.indexOf('edui-faked-video') != -1) {              var e = a(                c ? b.getAttr('_url') : b.getAttr('src'),                b.getAttr('width'),                b.getAttr('height'),                null,                b.getStyle('float') || '',                d,                c ? 'embed' : 'image'              )              b.parentNode.replaceChild(UE.uNode.createElement(e), b)            }            if (d && d.indexOf('edui-upload-video') != -1) {              var e = a(                c ? b.getAttr('_url') : b.getAttr('src'),                b.getAttr('width'),                b.getAttr('height'),                null,                b.getStyle('float') || '',                d,                c ? 'video' : 'image'              )              b.parentNode.replaceChild(UE.uNode.createElement(e), b)            }          }        )      }      var c = this      c.addOutputRule(function (a) {        b(a, !0)      }),        c.addInputRule(function (a) {          b(a)        }),        (c.commands.insertvideo = {          execCommand: function (b, d, e) {            d = utils.isArray(d) ? d : [d]            for (              var f, g, h = [], i = 'tmpVedio', j = 0, k = d.length;              j < k;              j++            )              (g = d[j]),                (f =                  'upload' == e                    ? 'edui-upload-video video-js vjs-default-skin'                    : 'edui-faked-video'),                h.push(                  a(                    g.url,                    g.width || 420,                    g.height || 280,                    i + j,                    null,                    f,                    'image'                  )                )            c.execCommand('inserthtml', h.join(''), !0)            for (              var l = this.selection.getRange(), j = 0, k = d.length;              j < k;              j++            ) {              var m = this.document.getElementById('tmpVedio' + j)              domUtils.removeAttributes(m, 'id'),                l.selectNode(m).select(),                c.execCommand('imagefloat', d[j].align)            }          },          queryCommandState: function () {            var a = c.selection.getRange().getClosedNode(),              b =                a &&                ('edui-faked-video' == a.className ||                  a.className.indexOf('edui-upload-video') != -1)            return b ? 1 : 0          }        })    }),    (function () {      function a(a) {}      var b = (UE.UETable = function (a) {        ;(this.table = a),          (this.indexTable = []),          (this.selectedTds = []),          (this.cellsRange = {}),          this.update(a)      })      ;(b.removeSelectedClass = function (a) {        utils.each(a, function (a) {          domUtils.removeClasses(a, 'selectTdClass')        })      }),        (b.addSelectedClass = function (a) {          utils.each(a, function (a) {            domUtils.addClass(a, 'selectTdClass')          })        }),        (b.isEmptyBlock = function (a) {          var b = new RegExp(domUtils.fillChar, 'g')          if (            a[browser.ie ? 'innerText' : 'textContent']              .replace(/^\s*$/, '')              .replace(b, '').length > 0          )            return 0          for (var c in dtd.$isNotEmpty)            if (              dtd.$isNotEmpty.hasOwnProperty(c) &&              a.getElementsByTagName(c).length            )              return 0          return 1        }),        (b.getWidth = function (a) {          return a ? parseInt(domUtils.getComputedStyle(a, 'width'), 10) : 0        }),        (b.getTableCellAlignState = function (a) {          !utils.isArray(a) && (a = [a])          var b = {},            c = ['align', 'valign'],            d = null,            e = !0          return (            utils.each(a, function (a) {              return (                utils.each(c, function (c) {                  if (((d = a.getAttribute(c)), !b[c] && d)) b[c] = d                  else if (!b[c] || d !== b[c]) return (e = !1), !1                }),                e              )            }),            e ? b : null          )        }),        (b.getTableItemsByRange = function (a) {          var b = a.selection.getStart()          b &&            b.id &&            0 === b.id.indexOf('_baidu_bookmark_start_') &&            b.nextSibling &&            (b = b.nextSibling)          var c = b && domUtils.findParentByTagName(b, ['td', 'th'], !0),            d = c && c.parentNode,            e = b && domUtils.findParentByTagName(b, 'caption', !0),            f = e ? e.parentNode : d && d.parentNode.parentNode          return { cell: c, tr: d, table: f, caption: e }        }),        (b.getUETableBySelected = function (a) {          var c = b.getTableItemsByRange(a).table          return c && c.ueTable && c.ueTable.selectedTds.length            ? c.ueTable            : null        }),        (b.getDefaultValue = function (a, b) {          var c,            d,            e,            f,            g = { thin: '0px', medium: '1px', thick: '2px' }          if (b)            return (              (h = b.getElementsByTagName('td')[0]),              (f = domUtils.getComputedStyle(b, 'border-left-width')),              (c = parseInt(g[f] || f, 10)),              (f = domUtils.getComputedStyle(h, 'padding-left')),              (d = parseInt(g[f] || f, 10)),              (f = domUtils.getComputedStyle(h, 'border-left-width')),              (e = parseInt(g[f] || f, 10)),              { tableBorder: c, tdPadding: d, tdBorder: e }            )          ;(b = a.document.createElement('table')),            (b.insertRow(0).insertCell(0).innerHTML = 'xxx'),            a.body.appendChild(b)          var h = b.getElementsByTagName('td')[0]          return (            (f = domUtils.getComputedStyle(b, 'border-left-width')),            (c = parseInt(g[f] || f, 10)),            (f = domUtils.getComputedStyle(h, 'padding-left')),            (d = parseInt(g[f] || f, 10)),            (f = domUtils.getComputedStyle(h, 'border-left-width')),            (e = parseInt(g[f] || f, 10)),            domUtils.remove(b),            { tableBorder: c, tdPadding: d, tdBorder: e }          )        }),        (b.getUETable = function (a) {          var c = a.tagName.toLowerCase()          return (            (a =              'td' == c || 'th' == c || 'caption' == c                ? domUtils.findParentByTagName(a, 'table', !0)                : a),            a.ueTable || (a.ueTable = new b(a)),            a.ueTable          )        }),        (b.cloneCell = function (a, b, c) {          if (!a || utils.isString(a))            return this.table.ownerDocument.createElement(a || 'td')          var d = domUtils.hasClass(a, 'selectTdClass')          d && domUtils.removeClasses(a, 'selectTdClass')          var e = a.cloneNode(!0)          return (            b && (e.rowSpan = e.colSpan = 1),            !c && domUtils.removeAttributes(e, 'width height'),            !c && domUtils.removeAttributes(e, 'style'),            (e.style.borderLeftStyle = ''),            (e.style.borderTopStyle = ''),            (e.style.borderLeftColor = a.style.borderRightColor),            (e.style.borderLeftWidth = a.style.borderRightWidth),            (e.style.borderTopColor = a.style.borderBottomColor),            (e.style.borderTopWidth = a.style.borderBottomWidth),            d && domUtils.addClass(a, 'selectTdClass'),            e          )        }),        (b.prototype = {          getMaxRows: function () {            for (var a, b = this.table.rows, c = 1, d = 0; (a = b[d]); d++) {              for (var e, f = 1, g = 0; (e = a.cells[g++]); )                f = Math.max(e.rowSpan || 1, f)              c = Math.max(f + d, c)            }            return c          },          getMaxCols: function () {            for (              var a, b = this.table.rows, c = 0, d = {}, e = 0;              (a = b[e]);              e++            ) {              for (var f, g = 0, h = 0; (f = a.cells[h++]); )                if (((g += f.colSpan || 1), f.rowSpan && f.rowSpan > 1))                  for (var i = 1; i < f.rowSpan; i++)                    d['row_' + (e + i)]                      ? d['row_' + (e + i)]++                      : (d['row_' + (e + i)] = f.colSpan || 1)              ;(g += d['row_' + e] || 0), (c = Math.max(g, c))            }            return c          },          getCellColIndex: function (a) {},          getHSideCell: function (b, c) {            try {              var d,                e,                f = this.getCellInfo(b),                g = this.selectedTds.length,                h = this.cellsRange              return (!c && (g ? !h.beginColIndex : !f.colIndex)) ||                (c &&                  (g                    ? h.endColIndex == this.colsNum - 1                    : f.colIndex == this.colsNum - 1))                ? null                : ((d = g ? h.beginRowIndex : f.rowIndex),                  (e = c                    ? g                      ? h.endColIndex + 1                      : f.colIndex + 1                    : g                    ? h.beginColIndex - 1                    : f.colIndex < 1                    ? 0                    : f.colIndex - 1),                  this.getCell(                    this.indexTable[d][e].rowIndex,                    this.indexTable[d][e].cellIndex                  ))            } catch (i) {              a(i)            }          },          getTabNextCell: function (a, b) {            var c,              d = this.getCellInfo(a),              e = b || d.rowIndex,              f = d.colIndex + 1 + (d.colSpan - 1)            try {              c = this.getCell(                this.indexTable[e][f].rowIndex,                this.indexTable[e][f].cellIndex              )            } catch (g) {              try {                ;(e = 1 * e + 1),                  (f = 0),                  (c = this.getCell(                    this.indexTable[e][f].rowIndex,                    this.indexTable[e][f].cellIndex                  ))              } catch (g) {}            }            return c          },          getVSideCell: function (b, c, d) {            try {              var e,                f,                g = this.getCellInfo(b),                h = this.selectedTds.length && !d,                i = this.cellsRange              return (!c && 0 == g.rowIndex) ||                (c &&                  (h                    ? i.endRowIndex == this.rowsNum - 1                    : g.rowIndex + g.rowSpan > this.rowsNum - 1))                ? null                : ((e = c                    ? h                      ? i.endRowIndex + 1                      : g.rowIndex + g.rowSpan                    : h                    ? i.beginRowIndex - 1                    : g.rowIndex - 1),                  (f = h ? i.beginColIndex : g.colIndex),                  this.getCell(                    this.indexTable[e][f].rowIndex,                    this.indexTable[e][f].cellIndex                  ))            } catch (j) {              a(j)            }          },          getSameEndPosCells: function (b, c) {            try {              for (                var d = 'x' === c.toLowerCase(),                  e =                    domUtils.getXY(b)[d ? 'x' : 'y'] +                    b['offset' + (d ? 'Width' : 'Height')],                  f = this.table.rows,                  g = null,                  h = [],                  i = 0;                i < this.rowsNum;                i++              ) {                g = f[i].cells                for (var j, k = 0; (j = g[k++]); ) {                  var l =                    domUtils.getXY(j)[d ? 'x' : 'y'] +                    j['offset' + (d ? 'Width' : 'Height')]                  if (l > e && d) break                  if (                    (b == j || e == l) &&                    (1 == j[d ? 'colSpan' : 'rowSpan'] && h.push(j), d)                  )                    break                }              }              return h            } catch (m) {              a(m)            }          },          setCellContent: function (a, b) {            a.innerHTML = b || (browser.ie ? domUtils.fillChar : '<br />')          },          cloneCell: b.cloneCell,          getSameStartPosXCells: function (b) {            try {              for (                var c,                  d = domUtils.getXY(b).x + b.offsetWidth,                  e = this.table.rows,                  f = [],                  g = 0;                g < this.rowsNum;                g++              ) {                c = e[g].cells                for (var h, i = 0; (h = c[i++]); ) {                  var j = domUtils.getXY(h).x                  if (j > d) break                  if (j == d && 1 == h.colSpan) {                    f.push(h)                    break                  }                }              }              return f            } catch (k) {              a(k)            }          },          update: function (a) {            ;(this.table = a || this.table),              (this.selectedTds = []),              (this.cellsRange = {}),              (this.indexTable = [])            for (              var b = this.table.rows,                c = this.getMaxRows(),                d = c - b.length,                e = this.getMaxCols();              d--;            )              this.table.insertRow(b.length)            ;(this.rowsNum = c), (this.colsNum = e)            for (var f = 0, g = b.length; f < g; f++)              this.indexTable[f] = new Array(e)            for (var h, i = 0; (h = b[i]); i++)              for (var j, k = 0, l = h.cells; (j = l[k]); k++) {                j.rowSpan > c && (j.rowSpan = c)                for (                  var m = k, n = j.rowSpan || 1, o = j.colSpan || 1;                  this.indexTable[i][m];                )                  m++                for (var p = 0; p < n; p++)                  for (var q = 0; q < o; q++)                    this.indexTable[i + p][m + q] = {                      rowIndex: i,                      cellIndex: k,                      colIndex: m,                      rowSpan: n,                      colSpan: o                    }              }            for (p = 0; p < c; p++)              for (q = 0; q < e; q++)                void 0 === this.indexTable[p][q] &&                  ((h = b[p]),                  (j = h.cells[h.cells.length - 1]),                  (j = j                    ? j.cloneNode(!0)                    : this.table.ownerDocument.createElement('td')),                  this.setCellContent(j),                  1 !== j.colSpan && (j.colSpan = 1),                  1 !== j.rowSpan && (j.rowSpan = 1),                  h.appendChild(j),                  (this.indexTable[p][q] = {                    rowIndex: p,                    cellIndex: j.cellIndex,                    colIndex: q,                    rowSpan: 1,                    colSpan: 1                  }))            var r = domUtils.getElementsByTagName(this.table, 'td'),              s = []            if (              (utils.each(r, function (a) {                domUtils.hasClass(a, 'selectTdClass') && s.push(a)              }),              s.length)            ) {              var t = s[0],                u = s[s.length - 1],                v = this.getCellInfo(t),                w = this.getCellInfo(u)              ;(this.selectedTds = s),                (this.cellsRange = {                  beginRowIndex: v.rowIndex,                  beginColIndex: v.colIndex,                  endRowIndex: w.rowIndex + w.rowSpan - 1,                  endColIndex: w.colIndex + w.colSpan - 1                })            }            if (!domUtils.hasClass(this.table.rows[0], 'firstRow')) {              domUtils.addClass(this.table.rows[0], 'firstRow')              for (var f = 1; f < this.table.rows.length; f++)                domUtils.removeClasses(this.table.rows[f], 'firstRow')            }          },          getCellInfo: function (a) {            if (a)              for (                var b = a.cellIndex,                  c = a.parentNode.rowIndex,                  d = this.indexTable[c],                  e = this.colsNum,                  f = b;                f < e;                f++              ) {                var g = d[f]                if (g.rowIndex === c && g.cellIndex === b) return g              }          },          getCell: function (a, b) {            return (a < this.rowsNum && this.table.rows[a].cells[b]) || null          },          deleteCell: function (a, b) {            b = 'number' == typeof b ? b : a.parentNode.rowIndex            var c = this.table.rows[b]            c.deleteCell(a.cellIndex)          },          getCellsRange: function (a, b) {            function c(a, b, e, f) {              var g,                h,                i,                j = a,                k = b,                l = e,                m = f              if (a > 0)                for (h = b; h < f; h++)                  (g = d.indexTable[a][h]),                    (i = g.rowIndex),                    i < a && (j = Math.min(i, j))              if (f < d.colsNum)                for (i = a; i < e; i++)                  (g = d.indexTable[i][f]),                    (h = g.colIndex + g.colSpan - 1),                    h > f && (m = Math.max(h, m))              if (e < d.rowsNum)                for (h = b; h < f; h++)                  (g = d.indexTable[e][h]),                    (i = g.rowIndex + g.rowSpan - 1),                    i > e && (l = Math.max(i, l))              if (b > 0)                for (i = a; i < e; i++)                  (g = d.indexTable[i][b]),                    (h = g.colIndex),                    h < b && (k = Math.min(g.colIndex, k))              return j != a || k != b || l != e || m != f                ? c(j, k, l, m)                : {                    beginRowIndex: a,                    beginColIndex: b,                    endRowIndex: e,                    endColIndex: f                  }            }            try {              var d = this,                e = d.getCellInfo(a)              if (a === b)                return {                  beginRowIndex: e.rowIndex,                  beginColIndex: e.colIndex,                  endRowIndex: e.rowIndex + e.rowSpan - 1,                  endColIndex: e.colIndex + e.colSpan - 1                }              var f = d.getCellInfo(b),                g = Math.min(e.rowIndex, f.rowIndex),                h = Math.min(e.colIndex, f.colIndex),                i = Math.max(                  e.rowIndex + e.rowSpan - 1,                  f.rowIndex + f.rowSpan - 1                ),                j = Math.max(                  e.colIndex + e.colSpan - 1,                  f.colIndex + f.colSpan - 1                )              return c(g, h, i, j)            } catch (k) {}          },          getCells: function (a) {            this.clearSelected()            for (              var b,                c,                d,                e = a.beginRowIndex,                f = a.beginColIndex,                g = a.endRowIndex,                h = a.endColIndex,                i = {},                j = [],                k = e;              k <= g;              k++            )              for (var l = f; l <= h; l++) {                ;(b = this.indexTable[k][l]), (c = b.rowIndex), (d = b.colIndex)                var m = c + '|' + d                if (!i[m]) {                  if (                    ((i[m] = 1),                    c < k ||                      d < l ||                      c + b.rowSpan - 1 > g ||                      d + b.colSpan - 1 > h)                  )                    return null                  j.push(this.getCell(c, b.cellIndex))                }              }            return j          },          clearSelected: function () {            b.removeSelectedClass(this.selectedTds),              (this.selectedTds = []),              (this.cellsRange = {})          },          setSelected: function (a) {            var c = this.getCells(a)            b.addSelectedClass(c), (this.selectedTds = c), (this.cellsRange = a)          },          isFullRow: function () {            var a = this.cellsRange            return a.endColIndex - a.beginColIndex + 1 == this.colsNum          },          isFullCol: function () {            var a = this.cellsRange,              b = this.table,              c = b.getElementsByTagName('th'),              d = a.endRowIndex - a.beginRowIndex + 1            return c.length              ? d == this.rowsNum || d == this.rowsNum - 1              : d == this.rowsNum          },          getNextCell: function (b, c, d) {            try {              var e,                f,                g = this.getCellInfo(b),                h = this.selectedTds.length && !d,                i = this.cellsRange              return (!c && 0 == g.rowIndex) ||                (c &&                  (h                    ? i.endRowIndex == this.rowsNum - 1                    : g.rowIndex + g.rowSpan > this.rowsNum - 1))                ? null                : ((e = c                    ? h                      ? i.endRowIndex + 1                      : g.rowIndex + g.rowSpan                    : h                    ? i.beginRowIndex - 1                    : g.rowIndex - 1),                  (f = h ? i.beginColIndex : g.colIndex),                  this.getCell(                    this.indexTable[e][f].rowIndex,                    this.indexTable[e][f].cellIndex                  ))            } catch (j) {              a(j)            }          },          getPreviewCell: function (b, c) {            try {              var d,                e,                f = this.getCellInfo(b),                g = this.selectedTds.length,                h = this.cellsRange              return (!c && (g ? !h.beginColIndex : !f.colIndex)) ||                (c &&                  (g                    ? h.endColIndex == this.colsNum - 1                    : f.rowIndex > this.colsNum - 1))                ? null                : ((d = c                    ? g                      ? h.beginRowIndex                      : f.rowIndex < 1                      ? 0                      : f.rowIndex - 1                    : g                    ? h.beginRowIndex                    : f.rowIndex),                  (e = c                    ? g                      ? h.endColIndex + 1                      : f.colIndex                    : g                    ? h.beginColIndex - 1                    : f.colIndex < 1                    ? 0                    : f.colIndex - 1),                  this.getCell(                    this.indexTable[d][e].rowIndex,                    this.indexTable[d][e].cellIndex                  ))            } catch (i) {              a(i)            }          },          moveContent: function (a, c) {            if (!b.isEmptyBlock(c)) {              if (b.isEmptyBlock(a)) return void (a.innerHTML = c.innerHTML)              var d = a.lastChild              for (                (3 != d.nodeType && dtd.$block[d.tagName]) ||                a.appendChild(a.ownerDocument.createElement('br'));                (d = c.firstChild);              )                a.appendChild(d)            }          },          mergeRight: function (a) {            var b = this.getCellInfo(a),              c = b.colIndex + b.colSpan,              d = this.indexTable[b.rowIndex][c],              e = this.getCell(d.rowIndex, d.cellIndex)            ;(a.colSpan = b.colSpan + d.colSpan),              a.removeAttribute('width'),              this.moveContent(a, e),              this.deleteCell(e, d.rowIndex),              this.update()          },          mergeDown: function (a) {            var b = this.getCellInfo(a),              c = b.rowIndex + b.rowSpan,              d = this.indexTable[c][b.colIndex],              e = this.getCell(d.rowIndex, d.cellIndex)            ;(a.rowSpan = b.rowSpan + d.rowSpan),              a.removeAttribute('height'),              this.moveContent(a, e),              this.deleteCell(e, d.rowIndex),              this.update()          },          mergeRange: function () {            var a = this.cellsRange,              b = this.getCell(                a.beginRowIndex,                this.indexTable[a.beginRowIndex][a.beginColIndex].cellIndex              )            if ('TH' == b.tagName && a.endRowIndex !== a.beginRowIndex) {              var c = this.indexTable,                d = this.getCellInfo(b)              ;(b = this.getCell(1, c[1][d.colIndex].cellIndex)),                (a = this.getCellsRange(                  b,                  this.getCell(                    c[this.rowsNum - 1][d.colIndex].rowIndex,                    c[this.rowsNum - 1][d.colIndex].cellIndex                  )                ))            }            for (var e, f = this.getCells(a), g = 0; (e = f[g++]); )              e !== b && (this.moveContent(b, e), this.deleteCell(e))            if (              ((b.rowSpan = a.endRowIndex - a.beginRowIndex + 1),              b.rowSpan > 1 && b.removeAttribute('height'),              (b.colSpan = a.endColIndex - a.beginColIndex + 1),              b.colSpan > 1 && b.removeAttribute('width'),              b.rowSpan == this.rowsNum && 1 != b.colSpan && (b.colSpan = 1),              b.colSpan == this.colsNum && 1 != b.rowSpan)            ) {              var h = b.parentNode.rowIndex              if (this.table.deleteRow)                for (var g = h + 1, i = h + 1, j = b.rowSpan; g < j; g++)                  this.table.deleteRow(i)              else                for (var g = 0, j = b.rowSpan - 1; g < j; g++) {                  var k = this.table.rows[h + 1]                  k.parentNode.removeChild(k)                }              b.rowSpan = 1            }            this.update()          },          insertRow: function (a, b) {            function c(a, b, c) {              if (0 == a) {                var d = c.nextSibling || c.previousSibling,                  e = d.cells[a]                'TH' == e.tagName &&                  ((e = b.ownerDocument.createElement('th')),                  e.appendChild(b.firstChild),                  c.insertBefore(e, b),                  domUtils.remove(b))              } else if ('TH' == b.tagName) {                var f = b.ownerDocument.createElement('td')                f.appendChild(b.firstChild),                  c.insertBefore(f, b),                  domUtils.remove(b)              }            }            var d,              e = this.colsNum,              f = this.table,              g = f.insertRow(a),              h = 'string' == typeof b && 'TH' == b.toUpperCase()            if (0 == a || a == this.rowsNum)              for (var i = 0; i < e; i++)                (d = this.cloneCell(b, !0)),                  this.setCellContent(d),                  d.getAttribute('vAlign') &&                    d.setAttribute('vAlign', d.getAttribute('vAlign')),                  g.appendChild(d),                  h || c(i, d, g)            else {              var j = this.indexTable[a]              for (i = 0; i < e; i++) {                var k = j[i]                k.rowIndex < a                  ? ((d = this.getCell(k.rowIndex, k.cellIndex)),                    (d.rowSpan = k.rowSpan + 1))                  : ((d = this.cloneCell(b, !0)),                    this.setCellContent(d),                    g.appendChild(d)),                  h || c(i, d, g)              }            }            return this.update(), g          },          deleteRow: function (a) {            for (              var b = this.table.rows[a],                c = this.indexTable[a],                d = this.colsNum,                e = 0,                f = 0;              f < d;            ) {              var g = c[f],                h = this.getCell(g.rowIndex, g.cellIndex)              if (h.rowSpan > 1 && g.rowIndex == a) {                var i = h.cloneNode(!0)                ;(i.rowSpan = h.rowSpan - 1),                  (i.innerHTML = ''),                  (h.rowSpan = 1)                var j,                  k = a + 1,                  l = this.table.rows[k],                  m = this.getPreviewMergedCellsNum(k, f) - e                m < f                  ? ((j = f - m - 1), domUtils.insertAfter(l.cells[j], i))                  : l.cells.length && l.insertBefore(i, l.cells[0]),                  (e += 1)              }              f += h.colSpan || 1            }            var n = [],              o = {}            for (f = 0; f < d; f++) {              var p = c[f].rowIndex,                q = c[f].cellIndex,                r = p + '_' + q              o[r] || ((o[r] = 1), (h = this.getCell(p, q)), n.push(h))            }            var s = []            utils.each(n, function (a) {              1 == a.rowSpan ? a.parentNode.removeChild(a) : s.push(a)            }),              utils.each(s, function (a) {                a.rowSpan--              }),              b.parentNode.removeChild(b),              this.update()          },          insertCol: function (a, b, c) {            function d(a, b, c) {              if (0 == a) {                var d = b.nextSibling || b.previousSibling                'TH' == d.tagName &&                  ((d = b.ownerDocument.createElement('th')),                  d.appendChild(b.firstChild),                  c.insertBefore(d, b),                  domUtils.remove(b))              } else if ('TH' == b.tagName) {                var e = b.ownerDocument.createElement('td')                e.appendChild(b.firstChild),                  c.insertBefore(e, b),                  domUtils.remove(b)              }            }            var e,              f,              g,              h = this.rowsNum,              i = 0,              j = parseInt(                (this.table.offsetWidth -                  20 * (this.colsNum + 1) -                  (this.colsNum + 1)) /                  (this.colsNum + 1),                10              ),              k = 'string' == typeof b && 'TH' == b.toUpperCase()            if (0 == a || a == this.colsNum)              for (; i < h; i++)                (e = this.table.rows[i]),                  (g = e.cells[0 == a ? a : e.cells.length]),                  (f = this.cloneCell(b, !0)),                  this.setCellContent(f),                  f.setAttribute('vAlign', f.getAttribute('vAlign')),                  g && f.setAttribute('width', g.getAttribute('width')),                  a                    ? domUtils.insertAfter(e.cells[e.cells.length - 1], f)                    : e.insertBefore(f, e.cells[0]),                  k || d(i, f, e)            else              for (; i < h; i++) {                var l = this.indexTable[i][a]                l.colIndex < a                  ? ((f = this.getCell(l.rowIndex, l.cellIndex)),                    (f.colSpan = l.colSpan + 1))                  : ((e = this.table.rows[i]),                    (g = e.cells[l.cellIndex]),                    (f = this.cloneCell(b, !0)),                    this.setCellContent(f),                    f.setAttribute('vAlign', f.getAttribute('vAlign')),                    g && f.setAttribute('width', g.getAttribute('width')),                    g ? e.insertBefore(f, g) : e.appendChild(f)),                  k || d(i, f, e)              }            this.update(),              this.updateWidth(j, c || { tdPadding: 10, tdBorder: 1 })          },          updateWidth: function (a, c) {            var d = this.table,              e = b.getWidth(d) - 2 * c.tdPadding - c.tdBorder + a            if (e < d.ownerDocument.body.offsetWidth)              return void d.setAttribute('width', e)            var f = domUtils.getElementsByTagName(this.table, 'td th')            utils.each(f, function (b) {              b.setAttribute('width', a)            })          },          deleteCol: function (a) {            for (              var b = this.indexTable,                c = this.table.rows,                d = this.table.getAttribute('width'),                e = 0,                f = this.rowsNum,                g = {},                h = 0;              h < f;            ) {              var i = b[h],                j = i[a],                k = j.rowIndex + '_' + j.colIndex              if (!g[k]) {                g[k] = 1                var l = this.getCell(j.rowIndex, j.cellIndex)                e ||                  (e = l && parseInt(l.offsetWidth / l.colSpan, 10).toFixed(0)),                  l.colSpan > 1 ? l.colSpan-- : c[h].deleteCell(j.cellIndex),                  (h += j.rowSpan || 1)              }            }            this.table.setAttribute('width', d - e), this.update()          },          splitToCells: function (a) {            var b = this,              c = this.splitToRows(a)            utils.each(c, function (a) {              b.splitToCols(a)            })          },          splitToRows: function (a) {            var b = this.getCellInfo(a),              c = b.rowIndex,              d = b.colIndex,              e = []            ;(a.rowSpan = 1), e.push(a)            for (var f = c, g = c + b.rowSpan; f < g; f++)              if (f != c) {                var h = this.table.rows[f],                  i = h.insertCell(d - this.getPreviewMergedCellsNum(f, d))                ;(i.colSpan = b.colSpan),                  this.setCellContent(i),                  i.setAttribute('vAlign', a.getAttribute('vAlign')),                  i.setAttribute('align', a.getAttribute('align')),                  a.style.cssText && (i.style.cssText = a.style.cssText),                  e.push(i)              }            return this.update(), e          },          getPreviewMergedCellsNum: function (a, b) {            for (var c = this.indexTable[a], d = 0, e = 0; e < b; ) {              var f = c[e].colSpan,                g = c[e].rowIndex              ;(d += f - (g == a ? 1 : 0)), (e += f)            }            return d          },          splitToCols: function (a) {            var b = (a.offsetWidth / a.colSpan - 22).toFixed(0),              c = this.getCellInfo(a),              d = c.rowIndex,              e = c.colIndex,              f = []            ;(a.colSpan = 1), a.setAttribute('width', b), f.push(a)            for (var g = e, h = e + c.colSpan; g < h; g++)              if (g != e) {                var i = this.table.rows[d],                  j = i.insertCell(this.indexTable[d][g].cellIndex + 1)                if (                  ((j.rowSpan = c.rowSpan),                  this.setCellContent(j),                  j.setAttribute('vAlign', a.getAttribute('vAlign')),                  j.setAttribute('align', a.getAttribute('align')),                  j.setAttribute('width', b),                  a.style.cssText && (j.style.cssText = a.style.cssText),                  'TH' == a.tagName)                ) {                  var k = a.ownerDocument.createElement('th')                  k.appendChild(j.firstChild),                    k.setAttribute('vAlign', a.getAttribute('vAlign')),                    (k.rowSpan = j.rowSpan),                    i.insertBefore(k, j),                    domUtils.remove(j)                }                f.push(j)              }            return this.update(), f          },          isLastCell: function (a, b, c) {            ;(b = b || this.rowsNum), (c = c || this.colsNum)            var d = this.getCellInfo(a)            return d.rowIndex + d.rowSpan == b && d.colIndex + d.colSpan == c          },          getLastCell: function (a) {            a = a || this.table.getElementsByTagName('td')            var b,              c = (this.getCellInfo(a[0]), this),              d = a[0],              e = d.parentNode,              f = 0,              g = 0            return (              utils.each(a, function (a) {                a.parentNode == e && (g += a.colSpan || 1),                  (f += a.rowSpan * a.colSpan || 1)              }),              (b = f / g),              utils.each(a, function (a) {                if (c.isLastCell(a, b, g)) return (d = a), !1              }),              d            )          },          selectRow: function (a) {            var b = this.indexTable[a],              c = this.getCell(b[0].rowIndex, b[0].cellIndex),              d = this.getCell(                b[this.colsNum - 1].rowIndex,                b[this.colsNum - 1].cellIndex              ),              e = this.getCellsRange(c, d)            this.setSelected(e)          },          selectTable: function () {            var a = this.table.getElementsByTagName('td'),              b = this.getCellsRange(a[0], a[a.length - 1])            this.setSelected(b)          },          setBackground: function (a, b) {            if ('string' == typeof b)              utils.each(a, function (a) {                a.style.backgroundColor = b              })            else if ('object' == typeof b) {              b = utils.extend({ repeat: !0, colorList: ['#ddd', '#fff'] }, b)              for (                var c,                  d = this.getCellInfo(a[0]).rowIndex,                  e = 0,                  f = b.colorList,                  g = function (a, b, c) {                    return a[b] ? a[b] : c ? a[b % a.length] : ''                  },                  h = 0;                (c = a[h++]);              ) {                var i = this.getCellInfo(c)                c.style.backgroundColor = g(                  f,                  d + e == i.rowIndex ? e : ++e,                  b.repeat                )              }            }          },          removeBackground: function (a) {            utils.each(a, function (a) {              a.style.backgroundColor = ''            })          }        })    })(),    (function () {      function a(a, c) {        var d = domUtils.getElementsByTagName(a, 'td th')        utils.each(d, function (a) {          a.removeAttribute('width')        }),          a.setAttribute('width', b(c, !0, g(c, a)))        var e = []        setTimeout(function () {          utils.each(d, function (a) {            1 == a.colSpan && e.push(a.offsetWidth)          }),            utils.each(d, function (a, b) {              1 == a.colSpan && a.setAttribute('width', e[b] + '')            })        }, 0)      }      function b(a, b, c) {        var d = a.body        return (          d.offsetWidth -          (b            ? 2 * parseInt(domUtils.getComputedStyle(d, 'margin-left'), 10)            : 0) -          2 * c.tableBorder -          (a.options.offsetWidth || 0)        )      }      function c(a) {        var b = e(a).cell        if (b) {          var c = h(b)          return c.selectedTds.length ? c.selectedTds : [b]        }        return []      }      var d = UE.UETable,        e = function (a) {          return d.getTableItemsByRange(a)        },        f = function (a) {          return d.getUETableBySelected(a)        },        g = function (a, b) {          return d.getDefaultValue(a, b)        },        h = function (a) {          return d.getUETable(a)        }      ;(UE.commands.inserttable = {        queryCommandState: function () {          return e(this).table ? -1 : 0        },        execCommand: function (a, b) {          function c(a, b) {            for (var c = [], d = a.numRows, e = a.numCols, f = 0; f < d; f++) {              c.push('<tr' + (0 == f ? ' class="firstRow"' : '') + '>')              for (var g = 0; g < e; g++)                c.push(                  '<td width="' +                    b +                    '"  vAlign="' +                    a.tdvalign +                    '" >' +                    (browser.ie && browser.version < 11                      ? domUtils.fillChar                      : '<br/>') +                    '</td>'                )              c.push('</tr>')            }            return '<table><tbody>' + c.join('') + '</tbody></table>'          }          b ||            (b = utils.extend(              {},              {                numCols: this.options.defaultCols,                numRows: this.options.defaultRows,                tdvalign: this.options.tdvalign              }            ))          var d = this,            e = this.selection.getRange(),            f = e.startContainer,            h =              domUtils.findParent(                f,                function (a) {                  return domUtils.isBlockElm(a)                },                !0              ) || d.body,            i = g(d),            j = h.offsetWidth,            k = Math.floor(j / b.numCols - 2 * i.tdPadding - i.tdBorder)          !b.tdvalign && (b.tdvalign = d.options.tdvalign),            d.execCommand('inserthtml', c(b, k))        }      }),        (UE.commands.insertparagraphbeforetable = {          queryCommandState: function () {            return e(this).cell ? 0 : -1          },          execCommand: function () {            var a = e(this).table            if (a) {              var b = this.document.createElement('p')              ;(b.innerHTML = browser.ie ? ' ' : '<br />'),                a.parentNode.insertBefore(b, a),                this.selection.getRange().setStart(b, 0).setCursor()            }          }        }),        (UE.commands.deletetable = {          queryCommandState: function () {            var a = this.selection.getRange()            return domUtils.findParentByTagName(a.startContainer, 'table', !0)              ? 0              : -1          },          execCommand: function (a, b) {            var c = this.selection.getRange()            if (              (b =                b ||                domUtils.findParentByTagName(c.startContainer, 'table', !0))            ) {              var d = b.nextSibling              d ||                ((d = domUtils.createElement(this.document, 'p', {                  innerHTML: browser.ie ? domUtils.fillChar : '<br/>'                })),                b.parentNode.insertBefore(d, b)),                domUtils.remove(b),                (c = this.selection.getRange()),                3 == d.nodeType ? c.setStartBefore(d) : c.setStart(d, 0),                c.setCursor(!1, !0),                this.fireEvent('tablehasdeleted')            }          }        }),        (UE.commands.cellalign = {          queryCommandState: function () {            return c(this).length ? 0 : -1          },          execCommand: function (a, b) {            var d = c(this)            if (d.length)              for (var e, f = 0; (e = d[f++]); ) e.setAttribute('align', b)          }        }),        (UE.commands.cellvalign = {          queryCommandState: function () {            return c(this).length ? 0 : -1          },          execCommand: function (a, b) {            var d = c(this)            if (d.length)              for (var e, f = 0; (e = d[f++]); ) e.setAttribute('vAlign', b)          }        }),        (UE.commands.insertcaption = {          queryCommandState: function () {            var a = e(this).table            return a && 0 == a.getElementsByTagName('caption').length ? 1 : -1          },          execCommand: function () {            var a = e(this).table            if (a) {              var b = this.document.createElement('caption')              ;(b.innerHTML = browser.ie ? domUtils.fillChar : '<br/>'),                a.insertBefore(b, a.firstChild)              var c = this.selection.getRange()              c.setStart(b, 0).setCursor()            }          }        }),        (UE.commands.deletecaption = {          queryCommandState: function () {            var a = this.selection.getRange(),              b = domUtils.findParentByTagName(a.startContainer, 'table')            return b              ? 0 == b.getElementsByTagName('caption').length                ? -1                : 1              : -1          },          execCommand: function () {            var a = this.selection.getRange(),              b = domUtils.findParentByTagName(a.startContainer, 'table')            if (b) {              domUtils.remove(b.getElementsByTagName('caption')[0])              var c = this.selection.getRange()              c.setStart(b.rows[0].cells[0], 0).setCursor()            }          }        }),        (UE.commands.inserttitle = {          queryCommandState: function () {            var a = e(this).table            if (a) {              var b = a.rows[0]              return 'th' != b.cells[b.cells.length - 1].tagName.toLowerCase()                ? 0                : -1            }            return -1          },          execCommand: function () {            var a = e(this).table            a && h(a).insertRow(0, 'th')            var b = a.getElementsByTagName('th')[0]            this.selection.getRange().setStart(b, 0).setCursor(!1, !0)          }        }),        (UE.commands.deletetitle = {          queryCommandState: function () {            var a = e(this).table            if (a) {              var b = a.rows[0]              return 'th' == b.cells[b.cells.length - 1].tagName.toLowerCase()                ? 0                : -1            }            return -1          },          execCommand: function () {            var a = e(this).table            a && domUtils.remove(a.rows[0])            var b = a.getElementsByTagName('td')[0]            this.selection.getRange().setStart(b, 0).setCursor(!1, !0)          }        }),        (UE.commands.inserttitlecol = {          queryCommandState: function () {            var a = e(this).table            if (a) {              var b = a.rows[a.rows.length - 1]              return b.getElementsByTagName('th').length ? -1 : 0            }            return -1          },          execCommand: function (b) {            var c = e(this).table            c && h(c).insertCol(0, 'th'), a(c, this)            var d = c.getElementsByTagName('th')[0]            this.selection.getRange().setStart(d, 0).setCursor(!1, !0)          }        }),        (UE.commands.deletetitlecol = {          queryCommandState: function () {            var a = e(this).table            if (a) {              var b = a.rows[a.rows.length - 1]              return b.getElementsByTagName('th').length ? 0 : -1            }            return -1          },          execCommand: function () {            var b = e(this).table            if (b)              for (var c = 0; c < b.rows.length; c++)                domUtils.remove(b.rows[c].children[0])            a(b, this)            var d = b.getElementsByTagName('td')[0]            this.selection.getRange().setStart(d, 0).setCursor(!1, !0)          }        }),        (UE.commands.mergeright = {          queryCommandState: function (a) {            var b = e(this),              c = b.table,              d = b.cell            if (!c || !d) return -1            var f = h(c)            if (f.selectedTds.length) return -1            var g = f.getCellInfo(d),              i = g.colIndex + g.colSpan            if (i >= f.colsNum) return -1            var j = f.indexTable[g.rowIndex][i],              k = c.rows[j.rowIndex].cells[j.cellIndex]            return k &&              d.tagName == k.tagName &&              j.rowIndex == g.rowIndex &&              j.rowSpan == g.rowSpan              ? 0              : -1          },          execCommand: function (a) {            var b = this.selection.getRange(),              c = b.createBookmark(!0),              d = e(this).cell,              f = h(d)            f.mergeRight(d), b.moveToBookmark(c).select()          }        }),        (UE.commands.mergedown = {          queryCommandState: function (a) {            var b = e(this),              c = b.table,              d = b.cell            if (!c || !d) return -1            var f = h(c)            if (f.selectedTds.length) return -1            var g = f.getCellInfo(d),              i = g.rowIndex + g.rowSpan            if (i >= f.rowsNum) return -1            var j = f.indexTable[i][g.colIndex],              k = c.rows[j.rowIndex].cells[j.cellIndex]            return k &&              d.tagName == k.tagName &&              j.colIndex == g.colIndex &&              j.colSpan == g.colSpan              ? 0              : -1          },          execCommand: function () {            var a = this.selection.getRange(),              b = a.createBookmark(!0),              c = e(this).cell,              d = h(c)            d.mergeDown(c), a.moveToBookmark(b).select()          }        }),        (UE.commands.mergecells = {          queryCommandState: function () {            return f(this) ? 0 : -1          },          execCommand: function () {            var a = f(this)            if (a && a.selectedTds.length) {              var b = a.selectedTds[0]              a.mergeRange()              var c = this.selection.getRange()              domUtils.isEmptyBlock(b)                ? c.setStart(b, 0).collapse(!0)                : c.selectNodeContents(b),                c.select()            }          }        }),        (UE.commands.insertrow = {          queryCommandState: function () {            var a = e(this),              b = a.cell            return b &&              ('TD' == b.tagName ||                ('TH' == b.tagName && a.tr !== a.table.rows[0])) &&              h(a.table).rowsNum < this.options.maxRowNum              ? 0              : -1          },          execCommand: function () {            var a = this.selection.getRange(),              b = a.createBookmark(!0),              c = e(this),              d = c.cell,              f = c.table,              g = h(f),              i = g.getCellInfo(d)            if (g.selectedTds.length)              for (                var j = g.cellsRange,                  k = 0,                  l = j.endRowIndex - j.beginRowIndex + 1;                k < l;                k++              )                g.insertRow(j.beginRowIndex, d)            else g.insertRow(i.rowIndex, d)            a.moveToBookmark(b).select(),              'enabled' === f.getAttribute('interlaced') &&                this.fireEvent('interlacetable', f)          }        }),        (UE.commands.insertrownext = {          queryCommandState: function () {            var a = e(this),              b = a.cell            return b &&              'TD' == b.tagName &&              h(a.table).rowsNum < this.options.maxRowNum              ? 0              : -1          },          execCommand: function () {            var a = this.selection.getRange(),              b = a.createBookmark(!0),              c = e(this),              d = c.cell,              f = c.table,              g = h(f),              i = g.getCellInfo(d)            if (g.selectedTds.length)              for (                var j = g.cellsRange,                  k = 0,                  l = j.endRowIndex - j.beginRowIndex + 1;                k < l;                k++              )                g.insertRow(j.endRowIndex + 1, d)            else g.insertRow(i.rowIndex + i.rowSpan, d)            a.moveToBookmark(b).select(),              'enabled' === f.getAttribute('interlaced') &&                this.fireEvent('interlacetable', f)          }        }),        (UE.commands.deleterow = {          queryCommandState: function () {            var a = e(this)            return a.cell ? 0 : -1          },          execCommand: function () {            var a = e(this).cell,              b = h(a),              c = b.cellsRange,              d = b.getCellInfo(a),              f = b.getVSideCell(a),              g = b.getVSideCell(a, !0),              i = this.selection.getRange()            if (utils.isEmptyObject(c)) b.deleteRow(d.rowIndex)            else              for (var j = c.beginRowIndex; j < c.endRowIndex + 1; j++)                b.deleteRow(c.beginRowIndex)            var k = b.table            if (k.getElementsByTagName('td').length)              if (                1 == d.rowSpan ||                d.rowSpan == c.endRowIndex - c.beginRowIndex + 1              )                (g || f) && i.selectNodeContents(g || f).setCursor(!1, !0)              else {                var l = b.getCell(                  d.rowIndex,                  b.indexTable[d.rowIndex][d.colIndex].cellIndex                )                l && i.selectNodeContents(l).setCursor(!1, !0)              }            else {              var m = k.nextSibling              domUtils.remove(k), m && i.setStart(m, 0).setCursor(!1, !0)            }            'enabled' === k.getAttribute('interlaced') &&              this.fireEvent('interlacetable', k)          }        }),        (UE.commands.insertcol = {          queryCommandState: function (a) {            var b = e(this),              c = b.cell            return c &&              ('TD' == c.tagName ||                ('TH' == c.tagName && c !== b.tr.cells[0])) &&              h(b.table).colsNum < this.options.maxColNum              ? 0              : -1          },          execCommand: function (a) {            var b = this.selection.getRange(),              c = b.createBookmark(!0)            if (this.queryCommandState(a) != -1) {              var d = e(this).cell,                f = h(d),                g = f.getCellInfo(d)              if (f.selectedTds.length)                for (                  var i = f.cellsRange,                    j = 0,                    k = i.endColIndex - i.beginColIndex + 1;                  j < k;                  j++                )                  f.insertCol(i.beginColIndex, d)              else f.insertCol(g.colIndex, d)              b.moveToBookmark(c).select(!0)            }          }        }),        (UE.commands.insertcolnext = {          queryCommandState: function () {            var a = e(this),              b = a.cell            return b && h(a.table).colsNum < this.options.maxColNum ? 0 : -1          },          execCommand: function () {            var a = this.selection.getRange(),              b = a.createBookmark(!0),              c = e(this).cell,              d = h(c),              f = d.getCellInfo(c)            if (d.selectedTds.length)              for (                var g = d.cellsRange,                  i = 0,                  j = g.endColIndex - g.beginColIndex + 1;                i < j;                i++              )                d.insertCol(g.endColIndex + 1, c)            else d.insertCol(f.colIndex + f.colSpan, c)            a.moveToBookmark(b).select()          }        }),        (UE.commands.deletecol = {          queryCommandState: function () {            var a = e(this)            return a.cell ? 0 : -1          },          execCommand: function () {            var a = e(this).cell,              b = h(a),              c = b.cellsRange,              d = b.getCellInfo(a),              f = b.getHSideCell(a),              g = b.getHSideCell(a, !0)            if (utils.isEmptyObject(c)) b.deleteCol(d.colIndex)            else              for (var i = c.beginColIndex; i < c.endColIndex + 1; i++)                b.deleteCol(c.beginColIndex)            var j = b.table,              k = this.selection.getRange()            if (j.getElementsByTagName('td').length)              domUtils.inDoc(a, this.document)                ? k.setStart(a, 0).setCursor(!1, !0)                : g && domUtils.inDoc(g, this.document)                ? k.selectNodeContents(g).setCursor(!1, !0)                : f &&                  domUtils.inDoc(f, this.document) &&                  k.selectNodeContents(f).setCursor(!0, !0)            else {              var l = j.nextSibling              domUtils.remove(j), l && k.setStart(l, 0).setCursor(!1, !0)            }          }        }),        (UE.commands.splittocells = {          queryCommandState: function () {            var a = e(this),              b = a.cell            if (!b) return -1            var c = h(a.table)            return c.selectedTds.length > 0              ? -1              : b && (b.colSpan > 1 || b.rowSpan > 1)              ? 0              : -1          },          execCommand: function () {            var a = this.selection.getRange(),              b = a.createBookmark(!0),              c = e(this).cell,              d = h(c)            d.splitToCells(c), a.moveToBookmark(b).select()          }        }),        (UE.commands.splittorows = {          queryCommandState: function () {            var a = e(this),              b = a.cell            if (!b) return -1            var c = h(a.table)            return c.selectedTds.length > 0 ? -1 : b && b.rowSpan > 1 ? 0 : -1          },          execCommand: function () {            var a = this.selection.getRange(),              b = a.createBookmark(!0),              c = e(this).cell,              d = h(c)            d.splitToRows(c), a.moveToBookmark(b).select()          }        }),        (UE.commands.splittocols = {          queryCommandState: function () {            var a = e(this),              b = a.cell            if (!b) return -1            var c = h(a.table)            return c.selectedTds.length > 0 ? -1 : b && b.colSpan > 1 ? 0 : -1          },          execCommand: function () {            var a = this.selection.getRange(),              b = a.createBookmark(!0),              c = e(this).cell,              d = h(c)            d.splitToCols(c), a.moveToBookmark(b).select()          }        }),        (UE.commands.adaptbytext = UE.commands.adaptbywindow =          {            queryCommandState: function () {              return e(this).table ? 0 : -1            },            execCommand: function (b) {              var c = e(this),                d = c.table              if (d)                if ('adaptbywindow' == b) a(d, this)                else {                  var f = domUtils.getElementsByTagName(d, 'td th')                  utils.each(f, function (a) {                    a.removeAttribute('width')                  }),                    d.removeAttribute('width')                }            }          }),        (UE.commands.averagedistributecol = {          queryCommandState: function () {            var a = f(this)            return a && (a.isFullRow() || a.isFullCol()) ? 0 : -1          },          execCommand: function (a) {            function b() {              var a,                b = e.table,                c = 0,                f = 0,                h = g(d, b)              if (e.isFullRow()) (c = b.offsetWidth), (f = e.colsNum)              else                for (                  var i,                    j = e.cellsRange.beginColIndex,                    k = e.cellsRange.endColIndex,                    l = j;                  l <= k;                )                  (i = e.selectedTds[l]),                    (c += i.offsetWidth),                    (l += i.colSpan),                    (f += 1)              return (a = Math.ceil(c / f) - 2 * h.tdBorder - 2 * h.tdPadding)            }            function c(a) {              utils.each(                domUtils.getElementsByTagName(e.table, 'th'),                function (a) {                  a.setAttribute('width', '')                }              )              var b = e.isFullRow()                ? domUtils.getElementsByTagName(e.table, 'td')                : e.selectedTds              utils.each(b, function (b) {                1 == b.colSpan && b.setAttribute('width', a)              })            }            var d = this,              e = f(d)            e && e.selectedTds.length && c(b())          }        }),        (UE.commands.averagedistributerow = {          queryCommandState: function () {            var a = f(this)            return a              ? a.selectedTds && /th/gi.test(a.selectedTds[0].tagName)                ? -1                : a.isFullRow() || a.isFullCol()                ? 0                : -1              : -1          },          execCommand: function (a) {            function b() {              var a,                b,                c = 0,                f = e.table,                h = g(d, f),                i = parseInt(                  domUtils.getComputedStyle(                    f.getElementsByTagName('td')[0],                    'padding-top'                  )                )              if (e.isFullCol()) {                var j,                  k,                  l = domUtils.getElementsByTagName(f, 'caption'),                  m = domUtils.getElementsByTagName(f, 'th')                l.length > 0 && (j = l[0].offsetHeight),                  m.length > 0 && (k = m[0].offsetHeight),                  (c = f.offsetHeight - (j || 0) - (k || 0)),                  (b = 0 == m.length ? e.rowsNum : e.rowsNum - 1)              } else {                for (                  var n = e.cellsRange.beginRowIndex,                    o = e.cellsRange.endRowIndex,                    p = 0,                    q = domUtils.getElementsByTagName(f, 'tr'),                    r = n;                  r <= o;                  r++                )                  (c += q[r].offsetHeight), (p += 1)                b = p              }              return (a =                browser.ie && browser.version < 9                  ? Math.ceil(c / b)                  : Math.ceil(c / b) - 2 * h.tdBorder - 2 * i)            }            function c(a) {              var b = e.isFullCol()                ? domUtils.getElementsByTagName(e.table, 'td')                : e.selectedTds              utils.each(b, function (b) {                1 == b.rowSpan && b.setAttribute('height', a)              })            }            var d = this,              e = f(d)            e && e.selectedTds.length && c(b())          }        }),        (UE.commands.cellalignment = {          queryCommandState: function () {            return e(this).table ? 0 : -1          },          execCommand: function (a, b) {            var c = this,              d = f(c)            if (d)              utils.each(d.selectedTds, function (a) {                domUtils.setAttributes(a, b)              })            else {              var e = c.selection.getStart(),                g =                  e &&                  domUtils.findParentByTagName(e, ['td', 'th', 'caption'], !0)              ;/caption/gi.test(g.tagName)                ? ((g.style.textAlign = b.align),                  (g.style.verticalAlign = b.vAlign))                : domUtils.setAttributes(g, b),                c.selection.getRange().setCursor(!0)            }          },          queryCommandValue: function (a) {            var b = e(this).cell            if ((b || (b = c(this)[0]), b)) {              var d = UE.UETable.getUETable(b).selectedTds              return !d.length && (d = b), UE.UETable.getTableCellAlignState(d)            }            return null          }        }),        (UE.commands.tablealignment = {          queryCommandState: function () {            return browser.ie && browser.version < 8              ? -1              : e(this).table              ? 0              : -1          },          execCommand: function (a, b) {            var c = this,              d = c.selection.getStart(),              e = d && domUtils.findParentByTagName(d, ['table'], !0)            e && e.setAttribute('align', b)          }        }),        (UE.commands.edittable = {          queryCommandState: function () {            return e(this).table ? 0 : -1          },          execCommand: function (a, b) {            var c = this.selection.getRange(),              d = domUtils.findParentByTagName(c.startContainer, 'table')            if (d) {              var e = domUtils                .getElementsByTagName(d, 'td')                .concat(                  domUtils.getElementsByTagName(d, 'th'),                  domUtils.getElementsByTagName(d, 'caption')                )              utils.each(e, function (a) {                a.style.borderColor = b              })            }          }        }),        (UE.commands.edittd = {          queryCommandState: function () {            return e(this).table ? 0 : -1          },          execCommand: function (a, b) {            var c = this,              d = f(c)            if (d)              utils.each(d.selectedTds, function (a) {                a.style.backgroundColor = b              })            else {              var e = c.selection.getStart(),                g =                  e &&                  domUtils.findParentByTagName(e, ['td', 'th', 'caption'], !0)              g && (g.style.backgroundColor = b)            }          }        }),        (UE.commands.settablebackground = {          queryCommandState: function () {            return c(this).length > 1 ? 0 : -1          },          execCommand: function (a, b) {            var d, e            ;(d = c(this)), (e = h(d[0])), e.setBackground(d, b)          }        }),        (UE.commands.cleartablebackground = {          queryCommandState: function () {            var a = c(this)            if (!a.length) return -1            for (var b, d = 0; (b = a[d++]); )              if ('' !== b.style.backgroundColor) return 0            return -1          },          execCommand: function () {            var a = c(this),              b = h(a[0])            b.removeBackground(a)          }        }),        (UE.commands.interlacetable = UE.commands.uninterlacetable =          {            queryCommandState: function (a) {              var b = e(this).table              if (!b) return -1              var c = b.getAttribute('interlaced')              return 'interlacetable' == a                ? 'enabled' === c                  ? -1                  : 0                : c && 'disabled' !== c                ? 0                : -1            },            execCommand: function (a, b) {              var c = e(this).table              'interlacetable' == a                ? (c.setAttribute('interlaced', 'enabled'),                  this.fireEvent('interlacetable', c, b))                : (c.setAttribute('interlaced', 'disabled'),                  this.fireEvent('uninterlacetable', c))            }          }),        (UE.commands.setbordervisible = {          queryCommandState: function (a) {            var b = e(this).table            return b ? 0 : -1          },          execCommand: function () {            var a = e(this).table            utils.each(domUtils.getElementsByTagName(a, 'td'), function (a) {              ;(a.style.borderWidth = '1px'), (a.style.borderStyle = 'solid')            })          }        })    })(),    (UE.plugins.table = function () {      function a(a) {}      function b(a, b) {        c(a, 'width', !0), c(a, 'height', !0)      }      function c(a, b, c) {        a.style[b] &&          (c && a.setAttribute(b, parseInt(a.style[b], 10)), (a.style[b] = ''))      }      function d(a) {        if ('TD' == a.tagName || 'TH' == a.tagName) return a        var b        return (b =          domUtils.findParentByTagName(a, 'td', !0) ||          domUtils.findParentByTagName(a, 'th', !0))          ? b          : null      }      function e(a) {        var b = new RegExp(domUtils.fillChar, 'g')        if (          a[browser.ie ? 'innerText' : 'textContent']            .replace(/^\s*$/, '')            .replace(b, '').length > 0        )          return 0        for (var c in dtd.$isNotEmpty)          if (a.getElementsByTagName(c).length) return 0        return 1      }      function f(a) {        return a.pageX || a.pageY          ? { x: a.pageX, y: a.pageY }          : {              x:                a.clientX +                N.document.body.scrollLeft -                N.document.body.clientLeft,              y:                a.clientY +                N.document.body.scrollTop -                N.document.body.clientTop            }      }      function g(b) {        if (!A())          try {            var c,              e = d(b.target || b.srcElement)            if (              (R &&                ((N.body.style.webkitUserSelect = 'none'),                (Math.abs(V.x - b.clientX) > T ||                  Math.abs(V.y - b.clientY) > T) &&                  (t(), (R = !1), (U = 0), v(b))),              ca && ha)            )              return (                (U = 0),                (N.body.style.webkitUserSelect = 'none'),                N.selection                  .getNative()                  [browser.ie9below ? 'empty' : 'removeAllRanges'](),                (c = f(b)),                m(N, !0, ca, c, e),                void ('h' == ca                  ? (ga.style.left = k(ha, b) + 'px')                  : 'v' == ca && (ga.style.top = l(ha, b) + 'px'))              )            if (e) {              if (N.fireEvent('excludetable', e) === !0) return              c = f(b)              var g = n(e, c),                i = domUtils.findParentByTagName(e, 'table', !0)              if (j(i, e, b, !0)) {                if (N.fireEvent('excludetable', i) === !0) return                N.body.style.cursor =                  'url(' + N.options.cursorpath + 'h.png),pointer'              } else if (j(i, e, b)) {                if (N.fireEvent('excludetable', i) === !0) return                N.body.style.cursor =                  'url(' + N.options.cursorpath + 'v.png),pointer'              } else {                N.body.style.cursor = 'text'                ;/\d/.test(g) &&                  ((g = g.replace(/\d/, '')),                  (e = Y(e).getPreviewCell(e, 'v' == g))),                  m(N, !!e && !!g, e ? g : '', c, e)              }            } else h(!1, i, N)          } catch (o) {            a(o)          }      }      function h(a, b, c) {        if (a) i(b, c)        else {          if (fa) return          la = setTimeout(function () {            !fa && ea && ea.parentNode && ea.parentNode.removeChild(ea)          }, 2e3)        }      }      function i(a, b) {        function c(c, d) {          clearTimeout(g),            (g = setTimeout(function () {              b.fireEvent('tableClicked', a, d)            }, 300))        }        function d(c) {          clearTimeout(g)          var d = Y(a),            e = a.rows[0].cells[0],            f = d.getLastCell(),            h = d.getCellsRange(e, f)          b.selection.getRange().setStart(e, 0).setCursor(!1, !0),            d.setSelected(h)        }        var e = domUtils.getXY(a),          f = a.ownerDocument        if (ea && ea.parentNode) return ea        ;(ea = f.createElement('div')),          (ea.contentEditable = !1),          (ea.innerHTML = ''),          (ea.style.cssText =            'width:15px;height:15px;background-image:url(' +            b.options.UEDITOR_HOME_URL +            'dialogs/table/dragicon.png);position: absolute;cursor:move;top:' +            (e.y - 15) +            'px;left:' +            e.x +            'px;'),          domUtils.unSelectable(ea),          (ea.onmouseover = function (a) {            fa = !0          }),          (ea.onmouseout = function (a) {            fa = !1          }),          domUtils.on(ea, 'click', function (a, b) {            c(b, this)          }),          domUtils.on(ea, 'dblclick', function (a, b) {            d(b)          }),          domUtils.on(ea, 'dragstart', function (a, b) {            domUtils.preventDefault(b)          })        var g        f.body.appendChild(ea)      }      function j(a, b, c, d) {        var e = f(c),          g = n(b, e)        if (d) {          var h = a.getElementsByTagName('caption')[0],            i = h ? h.offsetHeight : 0          return 'v1' == g && e.y - domUtils.getXY(a).y - i < 8        }        return 'h1' == g && e.x - domUtils.getXY(a).x < 8      }      function k(a, b) {        var c = Y(a)        if (c) {          var d = c.getSameEndPosCells(a, 'x')[0],            e = c.getSameStartPosXCells(a)[0],            g = f(b).x,            h = (d ? domUtils.getXY(d).x : domUtils.getXY(c.table).x) + 20,            i = e              ? domUtils.getXY(e).x + e.offsetWidth - 20              : N.body.offsetWidth + 5 ||                parseInt(domUtils.getComputedStyle(N.body, 'width'), 10)          return (h += Q), (i -= Q), g < h ? h : g > i ? i : g        }      }      function l(b, c) {        try {          var d = domUtils.getXY(b).y,            e = f(c).y          return e < d ? d : e        } catch (g) {          a(g)        }      }      function m(b, c, d, e, f) {        try {          ;(b.body.style.cursor =            'h' == d ? 'col-resize' : 'v' == d ? 'row-resize' : 'text'),            browser.ie &&              (!d || ia || Z(b) ? I(b) : (H(b, b.document), J(d, f))),            (da = c)        } catch (g) {          a(g)        }      }      function n(a, b) {        var c = domUtils.getXY(a)        return c          ? c.x + a.offsetWidth - b.x < S            ? 'h'            : b.x - c.x < S            ? 'h1'            : c.y + a.offsetHeight - b.y < S            ? 'v'            : b.y - c.y < S            ? 'v1'            : ''          : ''      }      function o(a, b) {        if (!A())          if (((V = { x: b.clientX, y: b.clientY }), 2 == b.button)) {            var c = Z(N),              d = !1            if (c) {              var e = M(N, b)              utils.each(c.selectedTds, function (a) {                a === e && (d = !0)              }),                d                  ? ((e = c.selectedTds[0]),                    setTimeout(function () {                      N.selection.getRange().setStart(e, 0).setCursor(!1, !0)                    }, 0))                  : (_(domUtils.getElementsByTagName(N.body, 'th td')),                    c.clearSelected())            }          } else q(b)      }      function p(a) {        ;(U = 0), (a = a || N.window.event)        var b = d(a.target || a.srcElement)        if (b) {          var c          if ((c = n(b, f(a)))) {            if ((I(N), 'h1' == c))              if (                ((c = 'h'), j(domUtils.findParentByTagName(b, 'table'), b, a))              )                N.execCommand('adaptbywindow')              else if ((b = Y(b).getPreviewCell(b))) {                var e = N.selection.getRange()                e.selectNodeContents(b).setCursor(!0, !0)              }            if ('h' == c) {              var g = Y(b),                h = g.table,                i = C(b, h, !0)              ;(i = s(i, 'left')), (g.width = g.offsetWidth)              var k = [],                l = []              utils.each(i, function (a) {                k.push(a.offsetWidth)              }),                utils.each(i, function (a) {                  a.removeAttribute('width')                }),                window.setTimeout(function () {                  var a = !0                  utils.each(i, function (b, c) {                    var d = b.offsetWidth                    return d > k[c] ? ((a = !1), !1) : void l.push(d)                  })                  var b = a ? l : k                  utils.each(i, function (a, c) {                    a.width = b[c] - G()                  })                }, 0)            }          }        }      }      function q(a) {        if (          (_(domUtils.getElementsByTagName(N.body, 'td th')),          utils.each(N.document.getElementsByTagName('table'), function (a) {            a.ueTable = null          }),          (aa = M(N, a)))        ) {          var b = domUtils.findParentByTagName(aa, 'table', !0)          ;(ut = Y(b)),            ut && ut.clearSelected(),            da              ? r(a)              : ((N.document.body.style.webkitUserSelect = ''),                (ia = !0),                N.addListener('mouseover', x))        }      }      function r(a) {        browser.ie && (a = u(a)),          t(),          (R = !0),          (O = setTimeout(function () {            v(a)          }, W))      }      function s(a, b) {        for (var c = [], d = null, e = 0, f = a.length; e < f; e++)          (d = a[e][b]), d && c.push(d)        return c      }      function t() {        O && clearTimeout(O), (O = null)      }      function u(a) {        var b = [            'pageX',            'pageY',            'clientX',            'clientY',            'srcElement',            'target'          ],          c = {}        if (a)          for (var d, e, f = 0; (d = b[f]); f++) (e = a[d]), e && (c[d] = e)        return c      }      function v(a) {        if (((R = !1), (aa = a.target || a.srcElement))) {          var b = n(aa, f(a))          ;/\d/.test(b) &&            ((b = b.replace(/\d/, '')),            (aa = Y(aa).getPreviewCell(aa, 'v' == b))),            I(N),            H(N, N.document),            N.fireEvent('saveScene'),            J(b, aa),            (ia = !0),            (ca = b),            (ha = aa)        }      }      function w(a, b) {        if (!A()) {          if (            (t(),            (R = !1),            da &&              ((U = ++U % 3),              (V = { x: b.clientX, y: b.clientY }),              (P = setTimeout(function () {                U > 0 && U--              }, W)),              2 === U))          )            return (U = 0), void p(b)          if (2 != b.button) {            var c = this,              d = c.selection.getRange(),              e = domUtils.findParentByTagName(d.startContainer, 'table', !0),              f = domUtils.findParentByTagName(d.endContainer, 'table', !0)            if (              ((e || f) &&                (e === f                  ? ((e = domUtils.findParentByTagName(                      d.startContainer,                      ['td', 'th', 'caption'],                      !0                    )),                    (f = domUtils.findParentByTagName(                      d.endContainer,                      ['td', 'th', 'caption'],                      !0                    )),                    e !== f && c.selection.clearRange())                  : c.selection.clearRange()),              (ia = !1),              (c.document.body.style.webkitUserSelect = ''),              ca &&                ha &&                (c.selection                  .getNative()                  [browser.ie9below ? 'empty' : 'removeAllRanges'](),                (U = 0),                (ga = c.document.getElementById('ue_tableDragLine'))))            ) {              var g = domUtils.getXY(ha),                h = domUtils.getXY(ga)              switch (ca) {                case 'h':                  z(ha, h.x - g.x)                  break                case 'v':                  B(ha, h.y - g.y - ha.offsetHeight)              }              return (ca = ''), (ha = null), I(c), void c.fireEvent('saveScene')            }            if (aa) {              var i = Y(aa),                j = i ? i.selectedTds[0] : null              if (j)                (d = new dom.Range(c.document)),                  domUtils.isEmptyBlock(j)                    ? d.setStart(j, 0).setCursor(!1, !0)                    : d.selectNodeContents(j).shrinkBoundary().setCursor(!1, !0)              else if (                ((d = c.selection.getRange().shrinkBoundary()), !d.collapsed)              ) {                var e = domUtils.findParentByTagName(                    d.startContainer,                    ['td', 'th'],                    !0                  ),                  f = domUtils.findParentByTagName(                    d.endContainer,                    ['td', 'th'],                    !0                  )                ;((e && !f) || (!e && f) || (e && f && e !== f)) &&                  d.setCursor(!1, !0)              }              ;(aa = null), c.removeListener('mouseover', x)            } else {              var k = domUtils.findParentByTagName(                b.target || b.srcElement,                'td',                !0              )              if (                (k ||                  (k = domUtils.findParentByTagName(                    b.target || b.srcElement,                    'th',                    !0                  )),                k && ('TD' == k.tagName || 'TH' == k.tagName))              ) {                if (c.fireEvent('excludetable', k) === !0) return                ;(d = new dom.Range(c.document)),                  d.setStart(k, 0).setCursor(!1, !0)              }            }            c._selectionChange(250, b)          }        }      }      function x(a, b) {        if (!A()) {          var c = this,            d = b.target || b.srcElement          if (            ((ba =              domUtils.findParentByTagName(d, 'td', !0) ||              domUtils.findParentByTagName(d, 'th', !0)),            aa &&              ba &&              (('TD' == aa.tagName && 'TD' == ba.tagName) ||                ('TH' == aa.tagName && 'TH' == ba.tagName)) &&              domUtils.findParentByTagName(aa, 'table') ==                domUtils.findParentByTagName(ba, 'table'))          ) {            var e = Y(ba)            if (aa != ba) {              ;(c.document.body.style.webkitUserSelect = 'none'),                c.selection                  .getNative()                  [browser.ie9below ? 'empty' : 'removeAllRanges']()              var f = e.getCellsRange(aa, ba)              e.setSelected(f)            } else              (c.document.body.style.webkitUserSelect = ''), e.clearSelected()          }          b.preventDefault ? b.preventDefault() : (b.returnValue = !1)        }      }      function y(a, b, c) {        var d = parseInt(domUtils.getComputedStyle(a, 'line-height'), 10),          e = c + b        ;(b = e < d ? d : e),          a.style.height && (a.style.height = ''),          1 == a.rowSpan            ? a.setAttribute('height', b)            : a.removeAttribute && a.removeAttribute('height')      }      function z(a, b) {        var c = Y(a)        if (c) {          var d = c.table,            e = C(a, d)          if (            ((d.style.width = ''),            d.removeAttribute('width'),            (b = D(b, a, e)),            a.nextSibling)          ) {            utils.each(e, function (a) {              ;(a.left.width = +a.left.width + b),                a.right && (a.right.width = +a.right.width - b)            })          } else            utils.each(e, function (a) {              a.left.width -= -b            })        }      }      function A() {        return 'false' === N.body.contentEditable      }      function B(a, b) {        if (!(Math.abs(b) < 10)) {          var c = Y(a)          if (c)            for (              var d,                e = c.getSameEndPosCells(a, 'y'),                f = e[0] ? e[0].offsetHeight : 0,                g = 0;              (d = e[g++]);            )              y(d, b, f)        }      }      function C(a, b, c) {        if ((b || (b = domUtils.findParentByTagName(a, 'table')), !b))          return null        for (var d = (domUtils.getNodeIndex(a), a), e = b.rows, f = 0; d; )          1 === d.nodeType && (f += d.colSpan || 1), (d = d.previousSibling)        d = null        var g = []        return (          utils.each(e, function (a) {            var b = a.cells,              d = 0            utils.each(b, function (a) {              return (                (d += a.colSpan || 1),                d === f                  ? (g.push({ left: a, right: a.nextSibling || null }), !1)                  : d > f                  ? (c && g.push({ left: a }), !1)                  : void 0              )            })          }),          g        )      }      function D(a, b, c) {        if (((a -= G()), a < 0)) return 0        a -= E(b)        var d = a < 0 ? 'left' : 'right'        return (          (a = Math.abs(a)),          utils.each(c, function (b) {            var c = b[d]            c && (a = Math.min(a, E(c) - Q))          }),          (a = a < 0 ? 0 : a),          'left' === d ? -a : a        )      }      function E(a) {        var b = 0,          b = a.offsetWidth - G()        a.nextSibling || (b -= F(a)), (b = b < 0 ? 0 : b)        try {          a.width = b        } catch (c) {}        return b      }      function F(a) {        if (          ((tab = domUtils.findParentByTagName(a, 'table', !1)),          void 0 === tab.offsetVal)        ) {          var b = a.previousSibling          b            ? (tab.offsetVal =                a.offsetWidth - b.offsetWidth === X.borderWidth                  ? X.borderWidth                  : 0)            : (tab.offsetVal = 0)        }        return tab.offsetVal      }      function G() {        if (void 0 === X.tabcellSpace) {          var a = N.document.createElement('table'),            b = N.document.createElement('tbody'),            c = N.document.createElement('tr'),            d = N.document.createElement('td'),            e = null          ;(d.style.cssText = 'border: 0;'),            (d.width = 1),            c.appendChild(d),            c.appendChild((e = d.cloneNode(!1))),            b.appendChild(c),            a.appendChild(b),            (a.style.cssText = 'visibility: hidden;'),            N.body.appendChild(a),            (X.paddingSpace = d.offsetWidth - 1)          var f = a.offsetWidth          ;(d.style.cssText = ''),            (e.style.cssText = ''),            (X.borderWidth = (a.offsetWidth - f) / 3),            (X.tabcellSpace = X.paddingSpace + X.borderWidth),            N.body.removeChild(a)        }        return (          (G = function () {            return X.tabcellSpace          }),          X.tabcellSpace        )      }      function H(a, b) {        ia ||          ((ga = a.document.createElement('div')),          domUtils.setAttributes(ga, {            id: 'ue_tableDragLine',            unselectable: 'on',            contenteditable: !1,            onresizestart: 'return false',            ondragstart: 'return false',            onselectstart: 'return false',            style:              'background-color:blue;position:absolute;padding:0;margin:0;background-image:none;border:0px none;opacity:0;filter:alpha(opacity=0)'          }),          a.body.appendChild(ga))      }      function I(a) {        if (!ia)          for (var b; (b = a.document.getElementById('ue_tableDragLine')); )            domUtils.remove(b)      }      function J(a, b) {        if (b) {          var c,            d = domUtils.findParentByTagName(b, 'table'),            e = d.getElementsByTagName('caption'),            f = d.offsetWidth,            g = d.offsetHeight - (e.length > 0 ? e[0].offsetHeight : 0),            h = domUtils.getXY(d),            i = domUtils.getXY(b)          switch (a) {            case 'h':              ;(c =                'height:' +                g +                'px;top:' +                (h.y + (e.length > 0 ? e[0].offsetHeight : 0)) +                'px;left:' +                (i.x + b.offsetWidth)),                (ga.style.cssText =                  c +                  'px;position: absolute;display:block;background-color:blue;width:1px;border:0; color:blue;opacity:.3;filter:alpha(opacity=30)')              break            case 'v':              ;(c =                'width:' +                f +                'px;left:' +                h.x +                'px;top:' +                (i.y + b.offsetHeight)),                (ga.style.cssText =                  c +                  'px;overflow:hidden;position: absolute;display:block;background-color:blue;height:1px;border:0;color:blue;opacity:.2;filter:alpha(opacity=20)')          }        }      }      function K(a, b) {        for (          var c, d, e = domUtils.getElementsByTagName(a.body, 'table'), f = 0;          (d = e[f++]);        ) {          var g = domUtils.getElementsByTagName(d, 'td')          g[0] &&            (b              ? ((c = g[0].style.borderColor.replace(/\s/g, '')),                /(#ffffff)|(rgb\(255,255,255\))/gi.test(c) &&                  domUtils.addClass(d, 'noBorderTable'))              : domUtils.removeClasses(d, 'noBorderTable'))        }      }      function L(a, b, c) {        var d = a.body        return (          d.offsetWidth -          (b            ? 2 * parseInt(domUtils.getComputedStyle(d, 'margin-left'), 10)            : 0) -          2 * c.tableBorder -          (a.options.offsetWidth || 0)        )      }      function M(a, b) {        var c = domUtils.findParentByTagName(            b.target || b.srcElement,            ['td', 'th'],            !0          ),          d = null        if (!c) return null        if (((d = n(c, f(b))), !c)) return null        if ('h1' === d && c.previousSibling) {          var e = domUtils.getXY(c),            g = c.offsetWidth          Math.abs(e.x + g - b.clientX) > g / 3 && (c = c.previousSibling)        } else if ('v1' === d && c.parentNode.previousSibling) {          var e = domUtils.getXY(c),            h = c.offsetHeight          Math.abs(e.y + h - b.clientY) > h / 3 &&            (c = c.parentNode.previousSibling.firstChild)        }        return c && a.fireEvent('excludetable', c) !== !0 ? c : null      }      var N = this,        O = null,        P = null,        Q = 5,        R = !1,        S = 5,        T = 10,        U = 0,        V = null,        W = 360,        X = UE.UETable,        Y = function (a) {          return X.getUETable(a)        },        Z = function (a) {          return X.getUETableBySelected(a)        },        $ = function (a, b) {          return X.getDefaultValue(a, b)        },        _ = function (a) {          return X.removeSelectedClass(a)        }      N.ready(function () {        var a = this,          b = a.selection.getText        a.selection.getText = function () {          var c = Z(a)          if (c) {            var d = ''            return (              utils.each(c.selectedTds, function (a) {                d += a[browser.ie ? 'innerText' : 'textContent']              }),              d            )          }          return b.call(a.selection)        }      })      var aa = null,        ba = null,        ca = '',        da = !1,        ea = null,        fa = !1,        ga = null,        ha = null,        ia = !1,        ja = !0      N.setOpt({        maxColNum: 20,        maxRowNum: 100,        defaultCols: 5,        defaultRows: 5,        tdvalign: 'top',        cursorpath:          N.options.UEDITOR_HOME_URL + 'themes/default/images/cursor_',        tableDragable: !1,        classList: [          'ue-table-interlace-color-single',          'ue-table-interlace-color-double'        ]      }),        (N.getUETable = Y)      var ka = {        deletetable: 1,        inserttable: 1,        cellvalign: 1,        insertcaption: 1,        deletecaption: 1,        inserttitle: 1,        deletetitle: 1,        mergeright: 1,        mergedown: 1,        mergecells: 1,        insertrow: 1,        insertrownext: 1,        deleterow: 1,        insertcol: 1,        insertcolnext: 1,        deletecol: 1,        splittocells: 1,        splittorows: 1,        splittocols: 1,        adaptbytext: 1,        adaptbywindow: 1,        adaptbycustomer: 1,        insertparagraph: 1,        insertparagraphbeforetable: 1,        averagedistributecol: 1,        averagedistributerow: 1      }      N.ready(function () {        utils.cssRule(          'table',          '.selectTdClass{background-color:#edf5fa !important}table.noBorderTable td,table.noBorderTable th,table.noBorderTable caption{border:1px dashed #ddd !important}table{margin-bottom:10px;border-collapse:collapse;display:table;}td,th{padding: 5px 10px;border: 1px solid #DDD;}caption{border:1px dashed #DDD;border-bottom:0;padding:3px;text-align:center;}th{border-top:1px solid #BBB;background-color:#F7F7F7;}table tr.firstRow th{border-top-width:2px;}.ue-table-interlace-color-single{ background-color: #fcfcfc; } .ue-table-interlace-color-double{ background-color: #f7faff; }td p{margin:0;padding:0;}',          N.document        )        var a, c, f        N.addListener('keydown', function (b, d) {          var g = this,            h = d.keyCode || d.which          if (8 == h) {            var i = Z(g)            i &&              i.selectedTds.length &&              (i.isFullCol()                ? g.execCommand('deletecol')                : i.isFullRow()                ? g.execCommand('deleterow')                : g.fireEvent('delcells'),              domUtils.preventDefault(d))            var j = domUtils.findParentByTagName(                g.selection.getStart(),                'caption',                !0              ),              k = g.selection.getRange()            if (k.collapsed && j && e(j)) {              g.fireEvent('saveScene')              var l = j.parentNode              domUtils.remove(j),                l && k.setStart(l.rows[0].cells[0], 0).setCursor(!1, !0),                g.fireEvent('saveScene')            }          }          if (46 == h && (i = Z(g))) {            g.fireEvent('saveScene')            for (var m, n = 0; (m = i.selectedTds[n++]); )              domUtils.fillNode(g.document, m)            g.fireEvent('saveScene'), domUtils.preventDefault(d)          }          if (13 == h) {            var o = g.selection.getRange(),              j = domUtils.findParentByTagName(o.startContainer, 'caption', !0)            if (j) {              var l = domUtils.findParentByTagName(j, 'table')              return (                o.collapsed                  ? j && o.setStart(l.rows[0].cells[0], 0).setCursor(!1, !0)                  : (o.deleteContents(), g.fireEvent('saveScene')),                void domUtils.preventDefault(d)              )            }            if (o.collapsed) {              var l = domUtils.findParentByTagName(o.startContainer, 'table')              if (l) {                var p = l.rows[0].cells[0],                  q = domUtils.findParentByTagName(                    g.selection.getStart(),                    ['td', 'th'],                    !0                  ),                  r = l.previousSibling                if (                  p === q &&                  (!r || (1 == r.nodeType && 'TABLE' == r.tagName)) &&                  domUtils.isStartInblock(o)                ) {                  var s = domUtils.findParent(                    g.selection.getStart(),                    function (a) {                      return domUtils.isBlockElm(a)                    },                    !0                  )                  s &&                    (/t(h|d)/i.test(s.tagName) || s === q.firstChild) &&                    (g.execCommand('insertparagraphbeforetable'),                    domUtils.preventDefault(d))                }              }            }          }          if ((d.ctrlKey || d.metaKey) && '67' == d.keyCode) {            a = null            var i = Z(g)            if (i) {              var t = i.selectedTds              ;(c = i.isFullCol()),                (f = i.isFullRow()),                (a = [[i.cloneCell(t[0], null, !0)]])              for (var m, n = 1; (m = t[n]); n++)                m.parentNode !== t[n - 1].parentNode                  ? a.push([i.cloneCell(m, null, !0)])                  : a[a.length - 1].push(i.cloneCell(m, null, !0))            }          }        }),          N.addListener('tablehasdeleted', function () {            m(this, !1, '', null), ea && domUtils.remove(ea)          }),          N.addListener('beforepaste', function (d, g) {            var h = this,              i = h.selection.getRange()            if (domUtils.findParentByTagName(i.startContainer, 'caption', !0)) {              var j = h.document.createElement('div')              return (                (j.innerHTML = g.html),                void (g.html =                  j[browser.ie9below ? 'innerText' : 'textContent'])              )            }            var k = Z(h)            if (a) {              h.fireEvent('saveScene')              var l,                m,                i = h.selection.getRange(),                n = domUtils.findParentByTagName(                  i.startContainer,                  ['td', 'th'],                  !0                )              if (n) {                var o = Y(n)                if (f) {                  var p = o.getCellInfo(n).rowIndex                  'TH' == n.tagName && p++                  for (var q, r = 0; (q = a[r++]); ) {                    for (                      var s, t = o.insertRow(p++, 'td'), u = 0;                      (s = q[u]);                      u++                    ) {                      var v = t.cells[u]                      v || (v = t.insertCell(u)),                        (v.innerHTML = s.innerHTML),                        s.getAttribute('width') &&                          v.setAttribute('width', s.getAttribute('width')),                        s.getAttribute('vAlign') &&                          v.setAttribute('vAlign', s.getAttribute('vAlign')),                        s.getAttribute('align') &&                          v.setAttribute('align', s.getAttribute('align')),                        s.style.cssText && (v.style.cssText = s.style.cssText)                    }                    for (var s, u = 0; (s = t.cells[u]) && q[u]; u++)                      (s.innerHTML = q[u].innerHTML),                        q[u].getAttribute('width') &&                          s.setAttribute('width', q[u].getAttribute('width')),                        q[u].getAttribute('vAlign') &&                          s.setAttribute('vAlign', q[u].getAttribute('vAlign')),                        q[u].getAttribute('align') &&                          s.setAttribute('align', q[u].getAttribute('align')),                        q[u].style.cssText &&                          (s.style.cssText = q[u].style.cssText)                  }                } else {                  if (c) {                    y = o.getCellInfo(n)                    for (var s, w = 0, u = 0, q = a[0]; (s = q[u++]); )                      w += s.colSpan || 1                    for (h.__hasEnterExecCommand = !0, r = 0; r < w; r++)                      h.execCommand('insertcol')                    ;(h.__hasEnterExecCommand = !1),                      (n = o.table.rows[0].cells[y.cellIndex]),                      'TH' == n.tagName &&                        (n = o.table.rows[1].cells[y.cellIndex])                  }                  for (var q, r = 0; (q = a[r++]); ) {                    l = n                    for (var s, u = 0; (s = q[u++]); )                      if (n)                        (n.innerHTML = s.innerHTML),                          s.getAttribute('width') &&                            n.setAttribute('width', s.getAttribute('width')),                          s.getAttribute('vAlign') &&                            n.setAttribute('vAlign', s.getAttribute('vAlign')),                          s.getAttribute('align') &&                            n.setAttribute('align', s.getAttribute('align')),                          s.style.cssText &&                            (n.style.cssText = s.style.cssText),                          (m = n),                          (n = n.nextSibling)                      else {                        var x = s.cloneNode(!0)                        domUtils.removeAttributes(x, [                          'class',                          'rowSpan',                          'colSpan'                        ]),                          m.parentNode.appendChild(x)                      }                    if (((n = o.getNextCell(l, !0, !0)), !a[r])) break                    if (!n) {                      var y = o.getCellInfo(l)                      o.table.insertRow(o.table.rows.length),                        o.update(),                        (n = o.getVSideCell(l, !0))                    }                  }                }                o.update()              } else {                k = h.document.createElement('table')                for (var q, r = 0; (q = a[r++]); ) {                  for (                    var s, t = k.insertRow(k.rows.length), u = 0;                    (s = q[u++]);                  )                    (x = X.cloneCell(s, null, !0)),                      domUtils.removeAttributes(x, ['class']),                      t.appendChild(x)                  2 == u && x.rowSpan > 1 && (x.rowSpan = 1)                }                var z = $(h),                  A =                    h.body.offsetWidth -                    (ja                      ? 2 *                        parseInt(                          domUtils.getComputedStyle(h.body, 'margin-left'),                          10                        )                      : 0) -                    2 * z.tableBorder -                    (h.options.offsetWidth || 0)                h.execCommand(                  'insertHTML',                  '<table  ' +                    (c && f ? 'width="' + A + '"' : '') +                    '>' +                    k.innerHTML                      .replace(/>\s*</g, '><')                      .replace(/\bth\b/gi, 'td') +                    '</table>'                )              }              return (                h.fireEvent('contentchange'),                h.fireEvent('saveScene'),                (g.html = ''),                !0              )            }            var B,              j = h.document.createElement('div')            ;(j.innerHTML = g.html),              (B = j.getElementsByTagName('table')),              domUtils.findParentByTagName(h.selection.getStart(), 'table')                ? (utils.each(B, function (a) {                    domUtils.remove(a)                  }),                  domUtils.findParentByTagName(                    h.selection.getStart(),                    'caption',                    !0                  ) &&                    (j.innerHTML = j[browser.ie ? 'innerText' : 'textContent']))                : utils.each(B, function (a) {                    b(a, !0),                      domUtils.removeAttributes(a, ['style', 'border']),                      utils.each(                        domUtils.getElementsByTagName(a, 'td'),                        function (a) {                          e(a) && domUtils.fillNode(h.document, a), b(a, !0)                        }                      )                  }),              (g.html = j.innerHTML)          }),          N.addListener('afterpaste', function () {            utils.each(              domUtils.getElementsByTagName(N.body, 'table'),              function (a) {                if (a.offsetWidth > N.body.offsetWidth) {                  var b = $(N, a)                  a.style.width =                    N.body.offsetWidth -                    (ja                      ? 2 *                        parseInt(                          domUtils.getComputedStyle(N.body, 'margin-left'),                          10                        )                      : 0) -                    2 * b.tableBorder -                    (N.options.offsetWidth || 0) +                    'px'                }              }            )          }),          N.addListener('blur', function () {            a = null          })        var i        N.addListener('keydown', function () {          clearTimeout(i),            (i = setTimeout(function () {              var a = N.selection.getRange(),                b = domUtils.findParentByTagName(                  a.startContainer,                  ['th', 'td'],                  !0                )              if (b) {                var c = b.parentNode.parentNode.parentNode                c.offsetWidth > c.getAttribute('width') &&                  (b.style.wordBreak = 'break-all')              }            }, 100))        }),          N.addListener('selectionchange', function () {            m(N, !1, '', null)          }),          N.addListener('contentchange', function () {            var a = this            if ((I(a), !Z(a))) {              var b = a.selection.getRange(),                c = b.startContainer              ;(c = domUtils.findParentByTagName(c, ['td', 'th'], !0)),                utils.each(                  domUtils.getElementsByTagName(a.document, 'table'),                  function (b) {                    a.fireEvent('excludetable', b) !== !0 &&                      ((b.ueTable = new X(b)),                      (b.onmouseover = function () {                        a.fireEvent('tablemouseover', b)                      }),                      (b.onmousemove = function () {                        a.fireEvent('tablemousemove', b),                          a.options.tableDragable && h(!0, this, a),                          utils.defer(function () {                            a.fireEvent('contentchange', 50)                          }, !0)                      }),                      (b.onmouseout = function () {                        a.fireEvent('tablemouseout', b),                          m(a, !1, '', null),                          I(a)                      }),                      (b.onclick = function (b) {                        b = a.window.event || b                        var c = d(b.target || b.srcElement)                        if (c) {                          var e,                            f = Y(c),                            g = f.table,                            h = f.getCellInfo(c),                            i = a.selection.getRange()                          if (j(g, c, b, !0)) {                            var k = f.getCell(                              f.indexTable[f.rowsNum - 1][h.colIndex].rowIndex,                              f.indexTable[f.rowsNum - 1][h.colIndex].cellIndex                            )                            return void (b.shiftKey && f.selectedTds.length                              ? f.selectedTds[0] !== k                                ? ((e = f.getCellsRange(f.selectedTds[0], k)),                                  f.setSelected(e))                                : i && i.selectNodeContents(k).select()                              : c !== k                              ? ((e = f.getCellsRange(c, k)), f.setSelected(e))                              : i && i.selectNodeContents(k).select())                          }                          if (j(g, c, b)) {                            var l = f.getCell(                              f.indexTable[h.rowIndex][f.colsNum - 1].rowIndex,                              f.indexTable[h.rowIndex][f.colsNum - 1].cellIndex                            )                            b.shiftKey && f.selectedTds.length                              ? f.selectedTds[0] !== l                                ? ((e = f.getCellsRange(f.selectedTds[0], l)),                                  f.setSelected(e))                                : i && i.selectNodeContents(l).select()                              : c !== l                              ? ((e = f.getCellsRange(c, l)), f.setSelected(e))                              : i && i.selectNodeContents(l).select()                          }                        }                      }))                  }                ),                K(a, !0)            }          }),          domUtils.on(N.document, 'mousemove', g),          domUtils.on(N.document, 'mouseout', function (a) {            var b = a.target || a.srcElement            'TABLE' == b.tagName && m(N, !1, '', null)          }),          N.addListener('interlacetable', function (a, b, c) {            if (b)              for (                var d = this,                  e = b.rows,                  f = e.length,                  g = function (a, b, c) {                    return a[b] ? a[b] : c ? a[b % a.length] : ''                  },                  h = 0;                h < f;                h++              )                e[h].className = g(c || d.options.classList, h, !0)          }),          N.addListener('uninterlacetable', function (a, b) {            if (b)              for (                var c = this,                  d = b.rows,                  e = c.options.classList,                  f = d.length,                  g = 0;                g < f;                g++              )                domUtils.removeClasses(d[g], e)          }),          N.addListener('mousedown', o),          N.addListener('mouseup', w),          domUtils.on(N.body, 'dragstart', function (a) {            w.call(N, 'dragstart', a)          }),          N.addOutputRule(function (a) {            utils.each(a.getNodesByTagName('div'), function (a) {              'ue_tableDragLine' == a.getAttr('id') &&                a.parentNode.removeChild(a)            })          })        var k = 0        N.addListener('mousedown', function () {          k = 0        }),          N.addListener('tabkeydown', function () {            var a = this.selection.getRange(),              b = a.getCommonAncestor(!0, !0),              c = domUtils.findParentByTagName(b, 'table')            if (c) {              if (domUtils.findParentByTagName(b, 'caption', !0)) {                var d = domUtils.getElementsByTagName(c, 'th td')                d && d.length && a.setStart(d[0], 0).setCursor(!1, !0)              } else {                var d = domUtils.findParentByTagName(b, ['td', 'th'], !0),                  f = Y(d)                k = d.rowSpan > 1 ? k : f.getCellInfo(d).rowIndex                var g = f.getTabNextCell(d, k)                g                  ? e(g)                    ? a.setStart(g, 0).setCursor(!1, !0)                    : a.selectNodeContents(g).select()                  : (N.fireEvent('saveScene'),                    (N.__hasEnterExecCommand = !0),                    this.execCommand('insertrownext'),                    (N.__hasEnterExecCommand = !1),                    (a = this.selection.getRange()),                    a                      .setStart(c.rows[c.rows.length - 1].cells[0], 0)                      .setCursor(),                    N.fireEvent('saveScene'))              }              return !0            }          }),          browser.ie &&            N.addListener('selectionchange', function () {              m(this, !1, '', null)            }),          N.addListener('keydown', function (a, b) {            var c = this,              d = b.keyCode || b.which            if (8 != d && 46 != d) {              var e = !(b.ctrlKey || b.metaKey || b.shiftKey || b.altKey)              e && _(domUtils.getElementsByTagName(c.body, 'td'))              var f = Z(c)              f && e && f.clearSelected()            }          }),          N.addListener('beforegetcontent', function () {            K(this, !1),              browser.ie &&                utils.each(                  this.document.getElementsByTagName('caption'),                  function (a) {                    domUtils.isEmptyNode(a) && (a.innerHTML = ' ')                  }                )          }),          N.addListener('aftergetcontent', function () {            K(this, !0)          }),          N.addListener('getAllHtml', function () {            _(N.document.getElementsByTagName('td'))          }),          N.addListener('fullscreenchanged', function (a, b) {            if (!b) {              var c = this.body.offsetWidth / document.body.offsetWidth,                d = domUtils.getElementsByTagName(this.body, 'table')              utils.each(d, function (a) {                if (a.offsetWidth < N.body.offsetWidth) return !1                var b = domUtils.getElementsByTagName(a, 'td'),                  d = []                utils.each(b, function (a) {                  d.push(a.offsetWidth)                })                for (var e, f = 0; (e = b[f]); f++)                  e.setAttribute('width', Math.floor(d[f] * c))                a.setAttribute('width', Math.floor(L(N, ja, $(N))))              })            }          })        var l = N.execCommand        N.execCommand = function (a, b) {          var c = this          a = a.toLowerCase()          var d,            f,            g = Z(c),            h = new dom.Range(c.document),            i = c.commands[a] || UE.commands[a]          if (i) {            if (!g || ka[a] || i.notNeedUndo || c.__hasEnterExecCommand)              f = l.apply(c, arguments)            else {              ;(c.__hasEnterExecCommand = !0),                c.fireEvent('beforeexeccommand', a),                (d = g.selectedTds)              for (var j, k, m, n = -2, o = -2, p = 0; (m = d[p]); p++)                e(m)                  ? h.setStart(m, 0).setCursor(!1, !0)                  : h.selectNode(m).select(!0),                  (k = c.queryCommandState(a)),                  (j = c.queryCommandValue(a)),                  k != -1 &&                    ((n === k && o === j) ||                      ((c._ignoreContentChange = !0),                      (f = l.apply(c, arguments)),                      (c._ignoreContentChange = !1)),                    (n = c.queryCommandState(a)),                    (o = c.queryCommandValue(a)),                    domUtils.isEmptyBlock(m) &&                      domUtils.fillNode(c.document, m))              h.setStart(d[0], 0).shrinkBoundary(!0).setCursor(!1, !0),                c.fireEvent('contentchange'),                c.fireEvent('afterexeccommand', a),                (c.__hasEnterExecCommand = !1),                c._selectionChange()            }            return f          }        }      })      var la    }),    (UE.UETable.prototype.sortTable = function (a, b) {      var c = this.table,        d = c.rows,        e = [],        f = 'TH' === d[0].cells[0].tagName,        g = 0      if (this.selectedTds.length) {        for (          var h = this.cellsRange, i = h.endRowIndex + 1, j = h.beginRowIndex;          j < i;          j++        )          e[j] = d[j]        e.splice(0, h.beginRowIndex),          (g = h.endRowIndex + 1 === this.rowsNum ? 0 : h.endRowIndex + 1)      } else for (var j = 0, i = d.length; j < i; j++) e[j] = d[j]      var k = {        reversecurrent: function (a, b) {          return 1        },        orderbyasc: function (a, b) {          var c = a.innerText || a.textContent,            d = b.innerText || b.textContent          return c.localeCompare(d)        },        reversebyasc: function (a, b) {          var c = a.innerHTML,            d = b.innerHTML          return d.localeCompare(c)        },        orderbynum: function (a, b) {          var c = a[browser.ie ? 'innerText' : 'textContent'].match(/\d+/),            d = b[browser.ie ? 'innerText' : 'textContent'].match(/\d+/)          return c && (c = +c[0]), d && (d = +d[0]), (c || 0) - (d || 0)        },        reversebynum: function (a, b) {          var c = a[browser.ie ? 'innerText' : 'textContent'].match(/\d+/),            d = b[browser.ie ? 'innerText' : 'textContent'].match(/\d+/)          return c && (c = +c[0]), d && (d = +d[0]), (d || 0) - (c || 0)        }      }      c.setAttribute(        'data-sort-type',        b && 'string' == typeof b && k[b] ? b : ''      ),        f && e.splice(0, 1),        (e = utils.sort(e, function (c, d) {          var e          return (e =            b && 'function' == typeof b              ? b.call(this, c.cells[a], d.cells[a])              : b && 'number' == typeof b              ? 1              : b && 'string' == typeof b && k[b]              ? k[b].call(this, c.cells[a], d.cells[a])              : k.orderbyasc.call(this, c.cells[a], d.cells[a]))        }))      for (        var l = c.ownerDocument.createDocumentFragment(), m = 0, i = e.length;        m < i;        m++      )        l.appendChild(e[m])      var n = c.getElementsByTagName('tbody')[0]      g        ? n.insertBefore(l, d[g - h.endRowIndex + h.beginRowIndex - 1])        : n.appendChild(l)    }),    (UE.plugins.tablesort = function () {      var a = this,        b = UE.UETable,        c = function (a) {          return b.getUETable(a)        },        d = function (a) {          return b.getTableItemsByRange(a)        }      a.ready(function () {        utils.cssRule(          'tablesort',          'table.sortEnabled tr.firstRow th,table.sortEnabled tr.firstRow td{padding-right:20px;background-repeat: no-repeat;background-position: center right;   background-image:url(' +            a.options.themePath +            a.options.theme +            '/images/sortable.png);}',          a.document        ),          a.addListener('afterexeccommand', function (a, b) {            ;('mergeright' != b && 'mergedown' != b && 'mergecells' != b) ||              this.execCommand('disablesort')          })      }),        (UE.commands.sorttable = {          queryCommandState: function () {            var a = this,              b = d(a)            if (!b.cell) return -1            for (              var c, e = b.table, f = e.getElementsByTagName('td'), g = 0;              (c = f[g++]);            )              if (1 != c.rowSpan || 1 != c.colSpan) return -1            return 0          },          execCommand: function (a, b) {            var e = this,              f = e.selection.getRange(),              g = f.createBookmark(!0),              h = d(e),              i = h.cell,              j = c(h.table),              k = j.getCellInfo(i)            j.sortTable(k.cellIndex, b), f.moveToBookmark(g)            try {              f.select()            } catch (l) {}          }        }),        (UE.commands.enablesort = UE.commands.disablesort =          {            queryCommandState: function (a) {              var b = d(this).table              if (b && 'enablesort' == a)                for (                  var c = domUtils.getElementsByTagName(b, 'th td'), e = 0;                  e < c.length;                  e++                )                  if (                    c[e].getAttribute('colspan') > 1 ||                    c[e].getAttribute('rowspan') > 1                  )                    return -1              return b                ? ('enablesort' == a) ^                  ('sortEnabled' != b.getAttribute('data-sort'))                  ? -1                  : 0                : -1            },            execCommand: function (a) {              var b = d(this).table              b.setAttribute(                'data-sort',                'enablesort' == a ? 'sortEnabled' : 'sortDisabled'              ),                'enablesort' == a                  ? domUtils.addClass(b, 'sortEnabled')                  : domUtils.removeClasses(b, 'sortEnabled')            }          })    }),    (UE.plugins.contextmenu = function () {      var a = this      if (        (a.setOpt('enableContextMenu', !0),        a.getOpt('enableContextMenu') !== !1)      ) {        var b,          c = a.getLang('contextMenu'),          d = a.options.contextMenu || [            { label: c.selectall, cmdName: 'selectall' },            {              label: c.cleardoc,              cmdName: 'cleardoc',              exec: function () {                confirm(c.confirmclear) && this.execCommand('cleardoc')              }            },            '-',            { label: c.unlink, cmdName: 'unlink' },            '-',            {              group: c.paragraph,              icon: 'justifyjustify',              subMenu: [                { label: c.justifyleft, cmdName: 'justify', value: 'left' },                { label: c.justifyright, cmdName: 'justify', value: 'right' },                { label: c.justifycenter, cmdName: 'justify', value: 'center' },                {                  label: c.justifyjustify,                  cmdName: 'justify',                  value: 'justify'                }              ]            },            '-',            {              group: c.table,              icon: 'table',              subMenu: [                { label: c.inserttable, cmdName: 'inserttable' },                { label: c.deletetable, cmdName: 'deletetable' },                '-',                { label: c.deleterow, cmdName: 'deleterow' },                { label: c.deletecol, cmdName: 'deletecol' },                { label: c.insertcol, cmdName: 'insertcol' },                { label: c.insertcolnext, cmdName: 'insertcolnext' },                { label: c.insertrow, cmdName: 'insertrow' },                { label: c.insertrownext, cmdName: 'insertrownext' },                '-',                { label: c.insertcaption, cmdName: 'insertcaption' },                { label: c.deletecaption, cmdName: 'deletecaption' },                { label: c.inserttitle, cmdName: 'inserttitle' },                { label: c.deletetitle, cmdName: 'deletetitle' },                { label: c.inserttitlecol, cmdName: 'inserttitlecol' },                { label: c.deletetitlecol, cmdName: 'deletetitlecol' },                '-',                { label: c.mergecells, cmdName: 'mergecells' },                { label: c.mergeright, cmdName: 'mergeright' },                { label: c.mergedown, cmdName: 'mergedown' },                '-',                { label: c.splittorows, cmdName: 'splittorows' },                { label: c.splittocols, cmdName: 'splittocols' },                { label: c.splittocells, cmdName: 'splittocells' },                '-',                { label: c.averageDiseRow, cmdName: 'averagedistributerow' },                { label: c.averageDisCol, cmdName: 'averagedistributecol' },                '-',                {                  label: c.edittd,                  cmdName: 'edittd',                  exec: function () {                    UE.ui.edittd && new UE.ui.edittd(this),                      this.getDialog('edittd').open()                  }                },                {                  label: c.edittable,                  cmdName: 'edittable',                  exec: function () {                    UE.ui.edittable && new UE.ui.edittable(this),                      this.getDialog('edittable').open()                  }                },                { label: c.setbordervisible, cmdName: 'setbordervisible' }              ]            },            {              group: c.tablesort,              icon: 'tablesort',              subMenu: [                { label: c.enablesort, cmdName: 'enablesort' },                { label: c.disablesort, cmdName: 'disablesort' },                '-',                {                  label: c.reversecurrent,                  cmdName: 'sorttable',                  value: 'reversecurrent'                },                {                  label: c.orderbyasc,                  cmdName: 'sorttable',                  value: 'orderbyasc'                },                {                  label: c.reversebyasc,                  cmdName: 'sorttable',                  value: 'reversebyasc'                },                {                  label: c.orderbynum,                  cmdName: 'sorttable',                  value: 'orderbynum'                },                {                  label: c.reversebynum,                  cmdName: 'sorttable',                  value: 'reversebynum'                }              ]            },            {              group: c.borderbk,              icon: 'borderBack',              subMenu: [                {                  label: c.setcolor,                  cmdName: 'interlacetable',                  exec: function () {                    this.execCommand('interlacetable')                  }                },                {                  label: c.unsetcolor,                  cmdName: 'uninterlacetable',                  exec: function () {                    this.execCommand('uninterlacetable')                  }                },                {                  label: c.setbackground,                  cmdName: 'settablebackground',                  exec: function () {                    this.execCommand('settablebackground', {                      repeat: !0,                      colorList: ['#bbb', '#ccc']                    })                  }                },                {                  label: c.unsetbackground,                  cmdName: 'cleartablebackground',                  exec: function () {                    this.execCommand('cleartablebackground')                  }                },                {                  label: c.redandblue,                  cmdName: 'settablebackground',                  exec: function () {                    this.execCommand('settablebackground', {                      repeat: !0,                      colorList: ['red', 'blue']                    })                  }                },                {                  label: c.threecolorgradient,                  cmdName: 'settablebackground',                  exec: function () {                    this.execCommand('settablebackground', {                      repeat: !0,                      colorList: ['#aaa', '#bbb', '#ccc']                    })                  }                }              ]            },            {              group: c.aligntd,              icon: 'aligntd',              subMenu: [                {                  cmdName: 'cellalignment',                  value: { align: 'left', vAlign: 'top' }                },                {                  cmdName: 'cellalignment',                  value: { align: 'center', vAlign: 'top' }                },                {                  cmdName: 'cellalignment',                  value: { align: 'right', vAlign: 'top' }                },                {                  cmdName: 'cellalignment',                  value: { align: 'left', vAlign: 'middle' }                },                {                  cmdName: 'cellalignment',                  value: { align: 'center', vAlign: 'middle' }                },                {                  cmdName: 'cellalignment',                  value: { align: 'right', vAlign: 'middle' }                },                {                  cmdName: 'cellalignment',                  value: { align: 'left', vAlign: 'bottom' }                },                {                  cmdName: 'cellalignment',                  value: { align: 'center', vAlign: 'bottom' }                },                {                  cmdName: 'cellalignment',                  value: { align: 'right', vAlign: 'bottom' }                }              ]            },            {              group: c.aligntable,              icon: 'aligntable',              subMenu: [                {                  cmdName: 'tablealignment',                  className: 'left',                  label: c.tableleft,                  value: 'left'                },                {                  cmdName: 'tablealignment',                  className: 'center',                  label: c.tablecenter,                  value: 'center'                },                {                  cmdName: 'tablealignment',                  className: 'right',                  label: c.tableright,                  value: 'right'                }              ]            },            '-',            {              label: c.insertparagraphbefore,              cmdName: 'insertparagraph',              value: !0            },            { label: c.insertparagraphafter, cmdName: 'insertparagraph' },            { label: c.copy, cmdName: 'copy' },            { label: c.paste, cmdName: 'paste' }          ]        if (d.length) {          var e = UE.ui.uiUtils          a.addListener('contextmenu', function (f, g) {            var h = e.getViewportOffsetByEvent(g)            a.fireEvent('beforeselectionchange'), b && b.destroy()            for (var i, j = 0, k = []; (i = d[j]); j++) {              var l              !(function (b) {                function d() {                  switch (b.icon) {                    case 'table':                      return a.getLang('contextMenu.table')                    case 'justifyjustify':                      return a.getLang('contextMenu.paragraph')                    case 'aligntd':                      return a.getLang('contextMenu.aligntd')                    case 'aligntable':                      return a.getLang('contextMenu.aligntable')                    case 'tablesort':                      return c.tablesort                    case 'borderBack':                      return c.borderbk                    default:                      return ''                  }                }                if ('-' == b) (l = k[k.length - 1]) && '-' !== l && k.push('-')                else if (b.hasOwnProperty('group')) {                  for (var e, f = 0, g = []; (e = b.subMenu[f]); f++)                    !(function (b) {                      '-' == b                        ? (l = g[g.length - 1]) && '-' !== l                          ? g.push('-')                          : g.splice(g.length - 1)                        : (a.commands[b.cmdName] ||                            UE.commands[b.cmdName] ||                            b.query) &&                          (b.query                            ? b.query()                            : a.queryCommandState(b.cmdName)) > -1 &&                          g.push({                            label:                              b.label ||                              a.getLang(                                'contextMenu.' + b.cmdName + (b.value || '')                              ) ||                              '',                            className:                              'edui-for-' +                              b.cmdName +                              (b.className                                ? ' edui-for-' + b.cmdName + '-' + b.className                                : ''),                            onclick: b.exec                              ? function () {                                  b.exec.call(a)                                }                              : function () {                                  a.execCommand(b.cmdName, b.value)                                }                          })                    })(e)                  g.length &&                    k.push({                      label: d(),                      className: 'edui-for-' + b.icon,                      subMenu: { items: g, editor: a }                    })                } else                  (a.commands[b.cmdName] ||                    UE.commands[b.cmdName] ||                    b.query) &&                    (b.query                      ? b.query.call(a)                      : a.queryCommandState(b.cmdName)) > -1 &&                    k.push({                      label: b.label || a.getLang('contextMenu.' + b.cmdName),                      className:                        'edui-for-' +                        (b.icon ? b.icon : b.cmdName + (b.value || '')),                      onclick: b.exec                        ? function () {                            b.exec.call(a)                          }                        : function () {                            a.execCommand(b.cmdName, b.value)                          }                    })              })(i)            }            if (              ('-' == k[k.length - 1] && k.pop(),              (b = new UE.ui.Menu({                items: k,                className: 'edui-contextmenu',                editor: a              })),              b.render(),              b.showAt(h),              a.fireEvent('aftershowcontextmenu', b),              domUtils.preventDefault(g),              browser.ie)            ) {              var m              try {                m = a.selection.getNative().createRange()              } catch (n) {                return              }              if (m.item) {                var o = new dom.Range(a.document)                o.selectNode(m.item(0)).select(!0, !0)              }            }          }),            a.addListener('aftershowcontextmenu', function (b, c) {              if (a.zeroclipboard) {                var d = c.items                for (var e in d)                  'edui-for-copy' == d[e].className &&                    a.zeroclipboard.clip(d[e].getDom())              }            })        }      }    }),    (UE.plugins.shortcutmenu = function () {      var a,        b = this,        c = b.options.shortcutMenu || []      c.length &&        (b.addListener('contextmenu mouseup', function (b, d) {          var e = this,            f = {              type: b,              target: d.target || d.srcElement,              screenX: d.screenX,              screenY: d.screenY,              clientX: d.clientX,              clientY: d.clientY            }          if (            (setTimeout(function () {              var d = e.selection.getRange()              ;(d.collapsed !== !1 && 'contextmenu' != b) ||                (a ||                  ((a = new baidu.editor.ui.ShortCutMenu({                    editor: e,                    items: c,                    theme: e.options.theme,                    className: 'edui-shortcutmenu'                  })),                  a.render(),                  e.fireEvent('afterrendershortcutmenu', a)),                a.show(f, !!UE.plugins.contextmenu))            }),            'contextmenu' == b &&              (domUtils.preventDefault(d), browser.ie9below))          ) {            var g            try {              g = e.selection.getNative().createRange()            } catch (d) {              return            }            if (g.item) {              var h = new dom.Range(e.document)              h.selectNode(g.item(0)).select(!0, !0)            }          }        }),        b.addListener('keydown', function (b) {          'keydown' == b && a && !a.isHidden && a.hide()        }))    }),    (UE.plugins.basestyle = function () {      var a = {          bold: ['strong', 'b'],          italic: ['em', 'i'],          subscript: ['sub'],          superscript: ['sup']        },        b = function (a, b) {          return domUtils.filterNodeList(a.selection.getStartElementPath(), b)        },        c = this      c.addshortcutkey({        Bold: 'ctrl+66',        Italic: 'ctrl+73',        Underline: 'ctrl+85'      }),        c.addInputRule(function (a) {          utils.each(a.getNodesByTagName('b i'), function (a) {            switch (a.tagName) {              case 'b':                a.tagName = 'strong'                break              case 'i':                a.tagName = 'em'            }          })        })      for (var d in a)        !(function (a, d) {          c.commands[a] = {            execCommand: function (a) {              var e = c.selection.getRange(),                f = b(this, d)              if (e.collapsed) {                if (f) {                  var g = c.document.createTextNode('')                  e.insertNode(g).removeInlineStyle(d),                    e.setStartBefore(g),                    domUtils.remove(g)                } else {                  var h = e.document.createElement(d[0])                  ;('superscript' != a && 'subscript' != a) ||                    ((g = c.document.createTextNode('')),                    e                      .insertNode(g)                      .removeInlineStyle(['sub', 'sup'])                      .setStartBefore(g)                      .collapse(!0)),                    e.insertNode(h).setStart(h, 0)                }                e.collapse(!0)              } else                ('superscript' != a && 'subscript' != a) ||                  (f && f.tagName.toLowerCase() == a) ||                  e.removeInlineStyle(['sub', 'sup']),                  f ? e.removeInlineStyle(d) : e.applyInlineStyle(d[0])              e.select()            },            queryCommandState: function () {              return b(this, d) ? 1 : 0            }          }        })(d, a[d])    }),    (UE.plugins.elementpath = function () {      var a,        b,        c = this      c.setOpt('elementPathEnabled', !0),        c.options.elementPathEnabled &&          (c.commands.elementpath = {            execCommand: function (d, e) {              var f = b[e],                g = c.selection.getRange()              ;(a = 1 * e), g.selectNode(f).select()            },            queryCommandValue: function () {              var c = [].concat(this.selection.getStartElementPath()).reverse(),                d = []              b = c              for (var e, f = 0; (e = c[f]); f++)                if (3 != e.nodeType) {                  var g = e.tagName.toLowerCase()                  if (                    ('img' == g &&                      e.getAttribute('anchorname') &&                      (g = 'anchor'),                    (d[f] = g),                    a == f)                  ) {                    a = -1                    break                  }                }              return d            }          })    }),    (UE.plugins.formatmatch = function () {      function a(f, g) {        function h(a) {          return (            m && a.selectNode(m),            a.applyInlineStyle(d[d.length - 1].tagName, null, d)          )        }        if (browser.webkit) var i = 'IMG' == g.target.tagName ? g.target : null        c.undoManger && c.undoManger.save()        var j = c.selection.getRange(),          k = i || j.getClosedNode()        if (b && k && 'IMG' == k.tagName)          (k.style.cssText +=            ';float:' +            (b.style.cssFloat || b.style.styleFloat || 'none') +            ';display:' +            (b.style.display || 'inline')),            (b = null)        else if (!b) {          var l = j.collapsed          if (l) {            var m = c.document.createTextNode('match')            j.insertNode(m).select()          }          c.__hasEnterExecCommand = !0          var n = c.options.removeFormatAttributes          ;(c.options.removeFormatAttributes = ''),            c.execCommand('removeformat'),            (c.options.removeFormatAttributes = n),            (c.__hasEnterExecCommand = !1),            (j = c.selection.getRange()),            d.length && h(j),            m && j.setStartBefore(m).collapse(!0),            j.select(),            m && domUtils.remove(m)        }        c.undoManger && c.undoManger.save(),          c.removeListener('mouseup', a),          (e = 0)      }      var b,        c = this,        d = [],        e = 0      c.addListener('reset', function () {        ;(d = []), (e = 0)      }),        (c.commands.formatmatch = {          execCommand: function (f) {            if (e) return (e = 0), (d = []), void c.removeListener('mouseup', a)            var g = c.selection.getRange()            if (((b = g.getClosedNode()), !b || 'IMG' != b.tagName)) {              g.collapse(!0).shrinkBoundary()              var h = g.startContainer              d = domUtils.findParents(h, !0, function (a) {                return !domUtils.isBlockElm(a) && 1 == a.nodeType              })              for (var i, j = 0; (i = d[j]); j++)                if ('A' == i.tagName) {                  d.splice(j, 1)                  break                }            }            c.addListener('mouseup', a), (e = 1)          },          queryCommandState: function () {            return e          },          notNeedUndo: 1        })    }),    UE.plugin.register('searchreplace', function () {      function a(a, b, c) {        var d = b.searchStr        b.dir == -1 &&          ((a = a.split('').reverse().join('')),          (d = d.split('').reverse().join('')),          (c = a.length - c))        for (          var e, f = new RegExp(d, 'g' + (b.casesensitive ? '' : 'i'));          (e = f.exec(a));        )          if (e.index >= c)            return b.dir == -1              ? a.length - e.index - b.searchStr.length              : e.index        return -1      }      function b(b, c, d) {        var e,          f,          h = d.all || 1 == d.dir ? 'getNextDomNode' : 'getPreDomNode'        domUtils.isBody(b) && (b = b.firstChild)        for (var i = 1; b; ) {          if (            ((e =              3 == b.nodeType                ? b.nodeValue                : b[browser.ie ? 'innerText' : 'textContent']),            (f = a(e, d, c)),            (i = 0),            f != -1)          )            return { node: b, index: f }          for (b = domUtils[h](b); b && g[b.nodeName.toLowerCase()]; )            b = domUtils[h](b, !0)          b &&            (c =              d.dir == -1                ? (3 == b.nodeType                    ? b.nodeValue                    : b[browser.ie ? 'innerText' : 'textContent']                  ).length                : 0)        }      }      function c(a, b, d) {        for (var e, f = 0, g = a.firstChild, h = 0; g; ) {          if (3 == g.nodeType) {            if (              ((h = g.nodeValue.replace(                /(^[\t\r\n]+)|([\t\r\n]+$)/,                ''              ).length),              (f += h),              f >= b)            )              return { node: g, index: h - (f - b) }          } else if (            !dtd.$empty[g.tagName] &&            ((h = g[browser.ie ? 'innerText' : 'textContent'].replace(              /(^[\t\r\n]+)|([\t\r\n]+$)/,              ''            ).length),            (f += h),            f >= b && (e = c(g, h - (f - b), d)))          )            return e          g = domUtils.getNextDomNode(g)        }      }      function d(a, d) {        var f,          g = a.selection.getRange(),          h = d.searchStr,          i = a.document.createElement('span')        if (          ((i.innerHTML = '$$ueditor_searchreplace_key$$'),          g.shrinkBoundary(!0),          !g.collapsed)        ) {          g.select()          var j = a.selection.getText()          if (            new RegExp(              '^' + d.searchStr + '$',              d.casesensitive ? '' : 'i'            ).test(j)          ) {            if (void 0 != d.replaceStr)              return e(g, d.replaceStr), g.select(), !0            g.collapse(d.dir == -1)          }        }        g.insertNode(i), g.enlargeToBlockElm(!0), (f = g.startContainer)        var k = f[browser.ie ? 'innerText' : 'textContent'].indexOf(          '$$ueditor_searchreplace_key$$'        )        g.setStartBefore(i), domUtils.remove(i)        var l = b(f, k, d)        if (l) {          var m = c(l.node, l.index, h),            n = c(l.node, l.index + h.length, h)          return (            g.setStart(m.node, m.index).setEnd(n.node, n.index),            void 0 !== d.replaceStr && e(g, d.replaceStr),            g.select(),            !0          )        }        g.setCursor()      }      function e(a, b) {        ;(b = f.document.createTextNode(b)), a.deleteContents().insertNode(b)      }      var f = this,        g = { table: 1, tbody: 1, tr: 1, ol: 1, ul: 1 }      return {        commands: {          searchreplace: {            execCommand: function (a, b) {              utils.extend(b, { all: !1, casesensitive: !1, dir: 1 }, !0)              var c = 0              if (b.all) {                var e = f.selection.getRange(),                  g = f.body.firstChild                for (                  g && 1 == g.nodeType                    ? (e.setStart(g, 0), e.shrinkBoundary(!0))                    : 3 == g.nodeType && e.setStartBefore(g),                    e.collapse(!0).select(!0),                    void 0 !== b.replaceStr && f.fireEvent('saveScene');                  d(this, b);                )                  c++                c && f.fireEvent('saveScene')              } else                void 0 !== b.replaceStr && f.fireEvent('saveScene'),                  d(this, b) && c++,                  c && f.fireEvent('saveScene')              return c            },            notNeedUndo: 1          }        }      }    }),    (UE.plugins.customstyle = function () {      var a = this      a.setOpt({        customstyle: [          {            tag: 'h1',            name: 'tc',            style:              'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:center;margin:0 0 20px 0;'          },          {            tag: 'h1',            name: 'tl',            style:              'font-size:32px;font-weight:bold;border-bottom:#ccc 2px solid;padding:0 4px 0 0;text-align:left;margin:0 0 10px 0;'          },          {            tag: 'span',            name: 'im',            style:              'font-size:16px;font-style:italic;font-weight:bold;line-height:18px;'          },          {            tag: 'span',            name: 'hi',            style:              'font-size:16px;font-style:italic;font-weight:bold;color:rgb(51, 153, 204);line-height:18px;'          }        ]      }),        (a.commands.customstyle = {          execCommand: function (a, b) {            var c,              d,              e = this,              f = b.tag,              g = domUtils.findParent(                e.selection.getStart(),                function (a) {                  return a.getAttribute('label')                },                !0              ),              h = {}            for (var i in b) void 0 !== b[i] && (h[i] = b[i])            if ((delete h.tag, g && g.getAttribute('label') == b.label)) {              if (                ((c = this.selection.getRange()),                (d = c.createBookmark()),                c.collapsed)              )                if (dtd.$block[g.tagName]) {                  var j = e.document.createElement('p')                  domUtils.moveChild(g, j),                    g.parentNode.insertBefore(j, g),                    domUtils.remove(g)                } else domUtils.remove(g, !0)              else {                var k = domUtils.getCommonAncestor(d.start, d.end),                  l = domUtils.getElementsByTagName(k, f)                new RegExp(f, 'i').test(k.tagName) && l.push(k)                for (var m, n = 0; (m = l[n++]); )                  if (m.getAttribute('label') == b.label) {                    var o = domUtils.getPosition(m, d.start),                      p = domUtils.getPosition(m, d.end)                    if (                      (o & domUtils.POSITION_FOLLOWING ||                        o & domUtils.POSITION_CONTAINS) &&                      (p & domUtils.POSITION_PRECEDING ||                        p & domUtils.POSITION_CONTAINS) &&                      dtd.$block[f]                    ) {                      var j = e.document.createElement('p')                      domUtils.moveChild(m, j), m.parentNode.insertBefore(j, m)                    }                    domUtils.remove(m, !0)                  }                ;(g = domUtils.findParent(                  k,                  function (a) {                    return a.getAttribute('label') == b.label                  },                  !0                )),                  g && domUtils.remove(g, !0)              }              c.moveToBookmark(d).select()            } else if (dtd.$block[f]) {              if (                (this.execCommand('paragraph', f, h, 'customstyle'),                (c = e.selection.getRange()),                !c.collapsed)              ) {                c.collapse(),                  (g = domUtils.findParent(                    e.selection.getStart(),                    function (a) {                      return a.getAttribute('label') == b.label                    },                    !0                  ))                var q = e.document.createElement('p')                domUtils.insertAfter(g, q),                  domUtils.fillNode(e.document, q),                  c.setStart(q, 0).setCursor()              }            } else {              if (((c = e.selection.getRange()), c.collapsed))                return (                  (g = e.document.createElement(f)),                  domUtils.setAttributes(g, h),                  void c.insertNode(g).setStart(g, 0).setCursor()                )              ;(d = c.createBookmark()),                c.applyInlineStyle(f, h).moveToBookmark(d).select()            }          },          queryCommandValue: function () {            var a = domUtils.filterNodeList(              this.selection.getStartElementPath(),              function (a) {                return a.getAttribute('label')              }            )            return a ? a.getAttribute('label') : ''          }        }),        a.addListener('keyup', function (b, c) {          var d = c.keyCode || c.which          if (32 == d || 13 == d) {            var e = a.selection.getRange()            if (e.collapsed) {              var f = domUtils.findParent(                a.selection.getStart(),                function (a) {                  return a.getAttribute('label')                },                !0              )              if (f && dtd.$block[f.tagName] && domUtils.isEmptyNode(f)) {                var g = a.document.createElement('p')                domUtils.insertAfter(f, g),                  domUtils.fillNode(a.document, g),                  domUtils.remove(f),                  e.setStart(g, 0).setCursor()              }            }          }        })    }),    (UE.plugins.catchremoteimage = function () {      var me = this,        ajax = UE.ajax      me.options.catchRemoteImageEnable !== !1 &&        (me.setOpt({ catchRemoteImageEnable: !1 }),        me.addListener('afterpaste', function () {          me.fireEvent('catchRemoteImage')        }),        me.addListener('catchRemoteImage', function () {          function catchremoteimage(a, b) {            var c =                utils.serializeParam(me.queryCommandValue('serverparam')) || '',              d = utils.formatUrl(                catcherActionUrl +                  (catcherActionUrl.indexOf('?') == -1 ? '?' : '&') +                  c              ),              e = utils.isCrossDomainUrl(d),              f = {                method: 'POST',                dataType: e ? 'jsonp' : '',                timeout: 6e4,                onsuccess: b.success,                onerror: b.error              }            ;(f[catcherFieldName] = a), ajax.request(d, f)          }          for (            var catcherLocalDomain = me.getOpt('catcherLocalDomain'),              catcherActionUrl = me.getActionUrl(                me.getOpt('catcherActionName')              ),              catcherUrlPrefix = me.getOpt('catcherUrlPrefix'),              catcherFieldName = me.getOpt('catcherFieldName'),              remoteImages = [],              imgs = domUtils.getElementsByTagName(me.document, 'img'),              test = function (a, b) {                if (a.indexOf(location.host) != -1 || /(^\.)|(^\/)/.test(a))                  return !0                if (b)                  for (var c, d = 0; (c = b[d++]); )                    if (a.indexOf(c) !== -1) return !0                return !1              },              i = 0,              ci;            (ci = imgs[i++]);          )            if (!ci.getAttribute('word_img')) {              var src = ci.getAttribute('_src') || ci.src || ''              ;/^(https?|ftp):/i.test(src) &&                !test(src, catcherLocalDomain) &&                remoteImages.push(src)            }          remoteImages.length &&            catchremoteimage(remoteImages, {              success: function (r) {                try {                  var info =                    void 0 !== r.state ? r : eval('(' + r.responseText + ')')                } catch (e) {                  return                }                var i,                  j,                  ci,                  cj,                  oldSrc,                  newSrc,                  list = info.list                for (i = 0; (ci = imgs[i++]); )                  for (                    oldSrc = ci.getAttribute('_src') || ci.src || '', j = 0;                    (cj = list[j++]);                  )                    if (oldSrc == cj.source && 'SUCCESS' == cj.state) {                      ;(newSrc = catcherUrlPrefix + cj.url),                        domUtils.setAttributes(ci, {                          src: newSrc,                          _src: newSrc                        })                      break                    }                me.fireEvent('catchremotesuccess')              },              error: function () {                me.fireEvent('catchremoteerror')              }            })        }))    }),    UE.plugin.register('snapscreen', function () {      function getLocation(a) {        var b,          c = document.createElement('a'),          d = utils.serializeParam(me.queryCommandValue('serverparam')) || ''        return (          (c.href = a),          browser.ie && (c.href = c.href),          (b = c.search),          d &&            ((b = b + (b.indexOf('?') == -1 ? '?' : '&') + d),            (b = b.replace(/[&]+/gi, '&'))),          {            port: c.port,            hostname: c.hostname,            path: c.pathname + b || +c.hash          }        )      }      var me = this,        snapplugin      return {        commands: {          snapscreen: {            execCommand: function (cmd) {              function onSuccess(rs) {                try {                  if (((rs = eval('(' + rs + ')')), 'SUCCESS' == rs.state)) {                    var opt = me.options                    me.execCommand('insertimage', {                      src: opt.snapscreenUrlPrefix + rs.url,                      _src: opt.snapscreenUrlPrefix + rs.url,                      alt: rs.title || '',                      floatStyle: opt.snapscreenImgAlign                    })                  } else alert(rs.state)                } catch (e) {                  alert(lang.callBackErrorMsg)                }              }              var url,                local,                res,                lang = me.getLang('snapScreen_plugin')              if (!snapplugin) {                var container = me.container,                  doc = me.container.ownerDocument || me.container.document                snapplugin = doc.createElement('object')                try {                  snapplugin.type = 'application/x-pluginbaidusnap'                } catch (e) {                  return                }                ;(snapplugin.style.cssText =                  'position:absolute;left:-9999px;width:0;height:0;'),                  snapplugin.setAttribute('width', '0'),                  snapplugin.setAttribute('height', '0'),                  container.appendChild(snapplugin)              }              ;(url = me.getActionUrl(me.getOpt('snapscreenActionName'))),                (local = getLocation(url)),                setTimeout(function () {                  try {                    res = snapplugin.saveSnapshot(                      local.hostname,                      local.path,                      local.port                    )                  } catch (a) {                    return void me.ui._dialogs.snapscreenDialog.open()                  }                  onSuccess(res)                }, 50)            },            queryCommandState: function () {              return navigator.userAgent.indexOf('Windows', 0) != -1 ? 0 : -1            }          }        }      }    }),    (UE.commands.insertparagraph = {      execCommand: function (a, b) {        for (          var c, d = this, e = d.selection.getRange(), f = e.startContainer;          f && !domUtils.isBody(f);        )          (c = f), (f = f.parentNode)        if (c) {          var g = d.document.createElement('p')          b            ? c.parentNode.insertBefore(g, c)            : c.parentNode.insertBefore(g, c.nextSibling),            domUtils.fillNode(d.document, g),            e.setStart(g, 0).setCursor(!1, !0)        }      }    }),    UE.plugin.register('webapp', function () {      function a(a, c) {        return c          ? '<iframe class="edui-faked-webapp" title="' +              a.title +              '" ' +              (a.align && !a.cssfloat ? 'align="' + a.align + '"' : '') +              (a.cssfloat ? 'style="float:' + a.cssfloat + '"' : '') +              'width="' +              a.width +              '" height="' +              a.height +              '"  scrolling="no" frameborder="0" src="' +              a.url +              '" logo_url = "' +              a.logo +              '"></iframe>'          : '<img title="' +              a.title +              '" width="' +              a.width +              '" height="' +              a.height +              '" src="' +              b.options.UEDITOR_HOME_URL +              'themes/default/images/spacer.gif" _logo_url="' +              a.logo +              '" style="background:url(' +              a.logo +              ') no-repeat center center; border:1px solid gray;" class="edui-faked-webapp" _url="' +              a.url +              '" ' +              (a.align && !a.cssfloat ? 'align="' + a.align + '"' : '') +              (a.cssfloat ? 'style="float:' + a.cssfloat + '"' : '') +              '/>'      }      var b = this      return {        outputRule: function (b) {          utils.each(b.getNodesByTagName('img'), function (b) {            var c            if ('edui-faked-webapp' == b.getAttr('class')) {              c = a(                {                  title: b.getAttr('title'),                  width: b.getAttr('width'),                  height: b.getAttr('height'),                  align: b.getAttr('align'),                  cssfloat: b.getStyle('float'),                  url: b.getAttr('_url'),                  logo: b.getAttr('_logo_url')                },                !0              )              var d = UE.uNode.createElement(c)              b.parentNode.replaceChild(d, b)            }          })        },        inputRule: function (b) {          utils.each(b.getNodesByTagName('iframe'), function (b) {            if ('edui-faked-webapp' == b.getAttr('class')) {              var c = UE.uNode.createElement(                a({                  title: b.getAttr('title'),                  width: b.getAttr('width'),                  height: b.getAttr('height'),                  align: b.getAttr('align'),                  cssfloat: b.getStyle('float'),                  url: b.getAttr('src'),                  logo: b.getAttr('logo_url')                })              )              b.parentNode.replaceChild(c, b)            }          })        },        commands: {          webapp: {            execCommand: function (b, c) {              var d = this,                e = a(utils.extend(c, { align: 'none' }), !1)              d.execCommand('inserthtml', e)            },            queryCommandState: function () {              var a = this,                b = a.selection.getRange().getClosedNode(),                c = b && 'edui-faked-webapp' == b.className              return c ? 1 : 0            }          }        }      }    }),    (UE.plugins.template = function () {      ;(UE.commands.template = {        execCommand: function (a, b) {          b.html && this.execCommand('inserthtml', b.html)        }      }),        this.addListener('click', function (a, b) {          var c = b.target || b.srcElement,            d = this.selection.getRange(),            e = domUtils.findParent(              c,              function (a) {                if (a.className && domUtils.hasClass(a, 'ue_t')) return a              },              !0            )          e && d.selectNode(e).shrinkBoundary().select()        }),        this.addListener('keydown', function (a, b) {          var c = this.selection.getRange()          if (            !c.collapsed &&            !(b.ctrlKey || b.metaKey || b.shiftKey || b.altKey)          ) {            var d = domUtils.findParent(              c.startContainer,              function (a) {                if (a.className && domUtils.hasClass(a, 'ue_t')) return a              },              !0            )            d && domUtils.removeClasses(d, ['ue_t'])          }        })    }),    UE.plugin.register('music', function () {      function a(a, c, d, e, f, g) {        return g          ? '<embed type="application/x-shockwave-flash" class="edui-faked-music" pluginspage="http://www.macromedia.com/go/getflashplayer" src="' +              a +              '" width="' +              c +              '" height="' +              d +              '" ' +              (e && !f ? 'align="' + e + '"' : '') +              (f ? 'style="float:' + f + '"' : '') +              ' wmode="transparent" play="true" loop="false" menu="false" allowscriptaccess="never" allowfullscreen="true" >'          : '<img ' +              (e && !f ? 'align="' + e + '"' : '') +              (f ? 'style="float:' + f + '"' : '') +              ' width="' +              c +              '" height="' +              d +              '" _url="' +              a +              '" class="edui-faked-music" src="' +              b.options.langPath +              b.options.lang +              '/images/music.png" />'      }      var b = this      return {        outputRule: function (b) {          utils.each(b.getNodesByTagName('img'), function (b) {            var c            if ('edui-faked-music' == b.getAttr('class')) {              var d = b.getStyle('float'),                e = b.getAttr('align')              c = a(                b.getAttr('_url'),                b.getAttr('width'),                b.getAttr('height'),                e,                d,                !0              )              var f = UE.uNode.createElement(c)              b.parentNode.replaceChild(f, b)            }          })        },        inputRule: function (b) {          utils.each(b.getNodesByTagName('embed'), function (b) {            if ('edui-faked-music' == b.getAttr('class')) {              var c = b.getStyle('float'),                d = b.getAttr('align')              html = a(                b.getAttr('src'),                b.getAttr('width'),                b.getAttr('height'),                d,                c,                !1              )              var e = UE.uNode.createElement(html)              b.parentNode.replaceChild(e, b)            }          })        },        commands: {          music: {            execCommand: function (b, c) {              var d = this,                e = a(c.url, c.width || 400, c.height || 95, 'none', !1)              d.execCommand('inserthtml', e)            },            queryCommandState: function () {              var a = this,                b = a.selection.getRange().getClosedNode(),                c = b && 'edui-faked-music' == b.className              return c ? 1 : 0            }          }        }      }    }),    UE.plugin.register('autoupload', function () {      function a(a, b) {        var c,          d,          e,          f,          g,          h,          i,          j,          k = b,          l = /image\/\w+/i.test(a.type) ? 'image' : 'file',          m = 'loading_' + (+new Date()).toString(36)        if (          ((c = k.getOpt(l + 'FieldName')),          (d = k.getOpt(l + 'UrlPrefix')),          (e = k.getOpt(l + 'MaxSize')),          (f = k.getOpt(l + 'AllowFiles')),          (g = k.getActionUrl(k.getOpt(l + 'ActionName'))),          (i = function (a) {            var b = k.document.getElementById(m)            b && domUtils.remove(b),              k.fireEvent('showmessage', {                id: m,                content: a,                type: 'error',                timeout: 4e3              })          }),          'image' == l            ? ((h =                '<img class="loadingclass" id="' +                m +                '" src="' +                k.options.themePath +                k.options.theme +                '/images/spacer.gif" title="' +                (k.getLang('autoupload.loading') || '') +                '" >'),              (j = function (a) {                var b = d + a.url,                  c = k.document.getElementById(m)                c &&                  (c.setAttribute('src', b),                  c.setAttribute('_src', b),                  c.setAttribute('title', a.title || ''),                  c.setAttribute('alt', a.original || ''),                  c.removeAttribute('id'),                  domUtils.removeClasses(c, 'loadingclass'))              }))            : ((h =                '<p><img class="loadingclass" id="' +                m +                '" src="' +                k.options.themePath +                k.options.theme +                '/images/spacer.gif" title="' +                (k.getLang('autoupload.loading') || '') +                '" ></p>'),              (j = function (a) {                var b = d + a.url,                  c = k.document.getElementById(m),                  e = k.selection.getRange(),                  f = e.createBookmark()                e.selectNode(c).select(),                  k.execCommand('insertfile', { url: b }),                  e.moveToBookmark(f).select()              })),          k.execCommand('inserthtml', h),          !k.getOpt(l + 'ActionName'))        )          return void i(k.getLang('autoupload.errorLoadConfig'))        if (a.size > e) return void i(k.getLang('autoupload.exceedSizeError'))        var n = a.name ? a.name.substr(a.name.lastIndexOf('.')) : ''        if (          (n && 'image' != l) ||          (f && (f.join('') + '.').indexOf(n.toLowerCase() + '.') == -1)        )          return void i(k.getLang('autoupload.exceedTypeError'))        var o = new XMLHttpRequest(),          p = new FormData(),          q = utils.serializeParam(k.queryCommandValue('serverparam')) || '',          r = utils.formatUrl(g + (g.indexOf('?') == -1 ? '?' : '&') + q)        p.append(c, a, a.name || 'blob.' + a.type.substr('image/'.length)),          p.append('type', 'ajax'),          o.open('post', r, !0),          o.setRequestHeader('X-Requested-With', 'XMLHttpRequest'),          o.addEventListener('load', function (a) {            try {              var b = new Function('return ' + utils.trim(a.target.response))()              'SUCCESS' == b.state && b.url ? j(b) : i(b.state)            } catch (c) {              i(k.getLang('autoupload.loadError'))            }          }),          o.send(p)      }      function b(a) {        return a.clipboardData &&          a.clipboardData.items &&          1 == a.clipboardData.items.length &&          /^image\//.test(a.clipboardData.items[0].type)          ? a.clipboardData.items          : null      }      function c(a) {        return a.dataTransfer && a.dataTransfer.files          ? a.dataTransfer.files          : null      }      return {        outputRule: function (a) {          utils.each(a.getNodesByTagName('img'), function (a) {            ;/\b(loaderrorclass)|(bloaderrorclass)\b/.test(              a.getAttr('class')            ) && a.parentNode.removeChild(a)          }),            utils.each(a.getNodesByTagName('p'), function (a) {              ;/\bloadpara\b/.test(a.getAttr('class')) &&                a.parentNode.removeChild(a)            })        },        bindEvents: {          ready: function (d) {            var e = this            window.FormData &&              window.FileReader &&              (domUtils.on(e.body, 'paste drop', function (d) {                var f,                  g = !1                if ((f = 'paste' == d.type ? b(d) : c(d))) {                  for (var h, i = f.length; i--; )                    (h = f[i]),                      h.getAsFile && (h = h.getAsFile()),                      h && h.size > 0 && (a(h, e), (g = !0))                  g && d.preventDefault()                }              }),              domUtils.on(e.body, 'dragover', function (a) {                'Files' == a.dataTransfer.types[0] && a.preventDefault()              }),              utils.cssRule(                'loading',                ".loadingclass{display:inline-block;cursor:default;background: url('" +                  this.options.themePath +                  this.options.theme +                  "/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-left:1px;height: 22px;width: 22px;}\n.loaderrorclass{display:inline-block;cursor:default;background: url('" +                  this.options.themePath +                  this.options.theme +                  "/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",                this.document              ))          }        }      }    }),    UE.plugin.register('autosave', function () {      function a(a) {        var f        if (!(new Date() - c < d)) {          if (!a.hasContents()) return void (e && b.removePreferences(e))          ;(c = new Date()),            (a._saveFlag = null),            (f = b.body.innerHTML),            a.fireEvent('beforeautosave', { content: f }) !== !1 &&              (b.setPreferences(e, f),              a.fireEvent('afterautosave', { content: f }))        }      }      var b = this,        c = new Date(),        d = 20,        e = null      return {        defaultOptions: { saveInterval: 500, enableAutoSave: !0 },        bindEvents: {          ready: function () {            var a = '-drafts-data',              c = null            ;(c = b.key              ? b.key + a              : (b.container.parentNode.id || 'ue-common') + a),              (e =                (location.protocol + location.host + location.pathname).replace(                  /[.:\/]/g,                  '_'                ) + c)          },          contentchange: function () {            b.getOpt('enableAutoSave') &&              e &&              (b._saveFlag && window.clearTimeout(b._saveFlag),              b.options.saveInterval > 0                ? (b._saveFlag = window.setTimeout(function () {                    a(b)                  }, b.options.saveInterval))                : a(b))          }        },        commands: {          clearlocaldata: {            execCommand: function (a, c) {              e && b.getPreferences(e) && b.removePreferences(e)            },            notNeedUndo: !0,            ignoreContentChange: !0          },          getlocaldata: {            execCommand: function (a, c) {              return e ? b.getPreferences(e) || '' : ''            },            notNeedUndo: !0,            ignoreContentChange: !0          },          drafts: {            execCommand: function (a, c) {              e &&                ((b.body.innerHTML =                  b.getPreferences(e) || '<p>' + domUtils.fillHtml + '</p>'),                b.focus(!0))            },            queryCommandState: function () {              return e ? (null === b.getPreferences(e) ? -1 : 0) : -1            },            notNeedUndo: !0,            ignoreContentChange: !0          }        }      }    }),    UE.plugin.register('charts', function () {      function a(a) {        var b = null,          c = 0        if (a.rows.length < 2) return !1        if (a.rows[0].cells.length < 2) return !1        ;(b = a.rows[0].cells), (c = b.length)        for (var d, e = 0; (d = b[e]); e++)          if ('th' !== d.tagName.toLowerCase()) return !1        for (var f, e = 1; (f = a.rows[e]); e++) {          if (f.cells.length != c) return !1          if ('th' !== f.cells[0].tagName.toLowerCase()) return !1          for (var d, g = 1; (d = f.cells[g]); g++) {            var h = utils.trim(d.innerText || d.textContent || '')            if (              ((h = h                .replace(new RegExp(UE.dom.domUtils.fillChar, 'g'), '')                .replace(/^\s+|\s+$/g, '')),              !/^\d*\.?\d+$/.test(h))            )              return !1          }        }        return !0      }      var b = this      return {        bindEvents: { chartserror: function () {} },        commands: {          charts: {            execCommand: function (c, d) {              var e = domUtils.findParentByTagName(                  this.selection.getRange().startContainer,                  'table',                  !0                ),                f = [],                g = {}              if (!e) return !1              if (!a(e)) return b.fireEvent('chartserror'), !1              ;(g.title = d.title || ''),                (g.subTitle = d.subTitle || ''),                (g.xTitle = d.xTitle || ''),                (g.yTitle = d.yTitle || ''),                (g.suffix = d.suffix || ''),                (g.tip = d.tip || ''),                (g.dataFormat = d.tableDataFormat || ''),                (g.chartType = d.chartType || 0)              for (var h in g) g.hasOwnProperty(h) && f.push(h + ':' + g[h])              e.setAttribute('data-chart', f.join(';')),                domUtils.addClass(e, 'edui-charts-table')            },            queryCommandState: function (b, c) {              var d = domUtils.findParentByTagName(                this.selection.getRange().startContainer,                'table',                !0              )              return d && a(d) ? 0 : -1            }          }        },        inputRule: function (a) {          utils.each(a.getNodesByTagName('table'), function (a) {            void 0 !== a.getAttr('data-chart') && a.setAttr('style')          })        },        outputRule: function (a) {          utils.each(a.getNodesByTagName('table'), function (a) {            void 0 !== a.getAttr('data-chart') &&              a.setAttr('style', 'display: none;')          })        }      }    }),    UE.plugin.register('section', function () {      function a(a) {        ;(this.tag = ''),          (this.level = -1),          (this.dom = null),          (this.nextSection = null),          (this.previousSection = null),          (this.parentSection = null),          (this.startAddress = []),          (this.endAddress = []),          (this.children = [])      }      function b(b) {        var c = new a()        return utils.extend(c, b)      }      function c(a, b) {        for (var c = b, d = 0; d < a.length; d++) {          if (!c.childNodes) return null          c = c.childNodes[a[d]]        }        return c      }      var d = this      return {        bindMultiEvents: {          type: 'aftersetcontent afterscencerestore',          handler: function () {            d.fireEvent('updateSections')          }        },        bindEvents: {          ready: function () {            d.fireEvent('updateSections'),              domUtils.on(d.body, 'drop paste', function () {                d.fireEvent('updateSections')              })          },          afterexeccommand: function (a, b) {            'paragraph' == b && d.fireEvent('updateSections')          },          keyup: function (a, b) {            var c = this,              d = c.selection.getRange()            if (1 != d.collapsed) c.fireEvent('updateSections')            else {              var e = b.keyCode || b.which              ;(13 != e && 8 != e && 46 != e) || c.fireEvent('updateSections')            }          }        },        commands: {          getsections: {            execCommand: function (a, c) {              function d(a) {                for (var b = 0; b < f.length; b++) if (f[b](a)) return b                return -1              }              function e(a, c) {                for (                  var f, g, i, k = null, l = a.childNodes, m = 0, n = l.length;                  m < n;                  m++                )                  if (((i = l[m]), (f = d(i)), f >= 0)) {                    var o = h.selection                        .getRange()                        .selectNode(i)                        .createAddress(!0).startAddress,                      p = b({                        tag: i.tagName,                        title: i.innerText || i.textContent || '',                        level: f,                        dom: i,                        startAddress: utils.clone(o, []),                        endAddress: utils.clone(o, []),                        children: []                      })                    for (                      j.nextSection = p, p.previousSection = j, g = j;                      f <= g.level;                    )                      g = g.parentSection                    ;(p.parentSection = g), g.children.push(p), (k = j = p)                  } else                    1 === i.nodeType && e(i, c),                      k && k.endAddress[k.endAddress.length - 1]++              }              for (                var f = c || ['h1', 'h2', 'h3', 'h4', 'h5', 'h6'], g = 0;                g < f.length;                g++              )                'string' == typeof f[g]                  ? (f[g] = (function (a) {                      return function (b) {                        return b.tagName == a.toUpperCase()                      }                    })(f[g]))                  : 'function' != typeof f[g] &&                    (f[g] = function (a) {                      return null                    })              var h = this,                i = b({ level: -1, title: 'root' }),                j = i              return e(h.body, i), i            },            notNeedUndo: !0          },          movesection: {            execCommand: function (a, b, d, e) {              function f(a, b, c) {                for (                  var d = !1, e = !1, f = 0;                  f < a.length && !(f >= c.length);                  f++                ) {                  if (c[f] > a[f]) {                    d = !0                    break                  }                  if (c[f] < a[f]) break                }                for (var f = 0; f < b.length && !(f >= c.length); f++) {                  if (c[f] < a[f]) {                    e = !0                    break                  }                  if (c[f] > a[f]) break                }                return d && e              }              var g,                h,                i = this              if (                b &&                d &&                d.level != -1 &&                ((g = e ? d.endAddress : d.startAddress),                (h = c(g, i.body)),                g && h && !f(b.startAddress, b.endAddress, g))              ) {                var j,                  k,                  l = c(b.startAddress, i.body),                  m = c(b.endAddress, i.body)                if (e)                  for (                    j = m;                    j &&                    !(                      domUtils.getPosition(l, j) & domUtils.POSITION_FOLLOWING                    ) &&                    ((k = j.previousSibling),                    domUtils.insertAfter(h, j),                    j != l);                  )                    j = k                else                  for (                    j = l;                    j &&                    !(                      domUtils.getPosition(j, m) & domUtils.POSITION_FOLLOWING                    ) &&                    ((k = j.nextSibling),                    h.parentNode.insertBefore(j, h),                    j != m);                  )                    j = k                i.fireEvent('updateSections')              }            }          },          deletesection: {            execCommand: function (a, b, c) {              function d(a) {                for (var b = e.body, c = 0; c < a.length; c++) {                  if (!b.childNodes) return null                  b = b.childNodes[a[c]]                }                return b              }              var e = this              if (b) {                var f,                  g = d(b.startAddress),                  h = d(b.endAddress),                  i = g                if (c) domUtils.remove(i)                else                  for (                    ;                    i &&                    domUtils.inDoc(h, e.document) &&                    !(domUtils.getPosition(i, h) & domUtils.POSITION_FOLLOWING);                  )                    (f = i.nextSibling), domUtils.remove(i), (i = f)                e.fireEvent('updateSections')              }            }          },          selectsection: {            execCommand: function (a, b) {              if (!b && !b.dom) return !1              var c = this,                d = c.selection.getRange(),                e = {                  startAddress: utils.clone(b.startAddress, []),                  endAddress: utils.clone(b.endAddress, [])                }              return (                e.endAddress[e.endAddress.length - 1]++,                d.moveToAddress(e).select().scrollToView(),                !0              )            },            notNeedUndo: !0          },          scrolltosection: {            execCommand: function (a, b) {              if (!b && !b.dom) return !1              var c = this,                d = c.selection.getRange(),                e = { startAddress: b.startAddress, endAddress: b.endAddress }              return (                e.endAddress[e.endAddress.length - 1]++,                d.moveToAddress(e).scrollToView(),                !0              )            },            notNeedUndo: !0          }        }      }    }),    UE.plugin.register('simpleupload', function () {      function a() {        var a = b.offsetWidth || 20,          e = b.offsetHeight || 20,          f =            'display:block;width:' +            a +            'px;height:' +            e +            'px;overflow:hidden;border:0;margin:0;padding:0;position:absolute;top:0;left:0;filter:alpha(opacity=0);-moz-opacity:0;-khtml-opacity: 0;opacity: 0;cursor:pointer;',          g = document.createElement('form'),          h = document.createElement('input')        ;(g.id = 'edui_form_' + d),          (g.enctype = 'multipart/form-data'),          (g.style = f),          (h.id = 'edui_input_' + d),          (h.type = 'file'),          (h.accept = 'image/*'),          (h.name = c.options.imageFieldName),          (h.style = f),          g.appendChild(h),          b.appendChild(g),          h.addEventListener('change', function (a) {            function b(a) {              if (d) {                var b = c.document.getElementById(d)                b && domUtils.remove(b),                  c.fireEvent('showmessage', {                    id: d,                    content: a,                    type: 'error',                    timeout: 4e3                  })              }            }            if (h.value) {              var d = 'loading_' + (+new Date()).toString(36),                e = c.getActionUrl(c.getOpt('imageActionName')),                f =                  utils.serializeParam(c.queryCommandValue('serverparam')) ||                  '',                i = utils.formatUrl(e + (e.indexOf('?') == -1 ? '?' : '&') + f),                j = c.getOpt('imageAllowFiles')              if (                (c.focus(),                c.execCommand(                  'inserthtml',                  '<img class="loadingclass" id="' +                    d +                    '" src="' +                    c.options.themePath +                    c.options.theme +                    '/images/spacer.gif" title="' +                    (c.getLang('simpleupload.loading') || '') +                    '" >'                ),                !c.getOpt('imageActionName'))              )                return void b(c.getLang('autoupload.errorLoadConfig'))              var k = h.value,                l = k ? k.substr(k.lastIndexOf('.')) : ''              if (                !l ||                (j && (j.join('') + '.').indexOf(l.toLowerCase() + '.') == -1)              )                return void b(c.getLang('simpleupload.exceedTypeError'))              var m = new XMLHttpRequest()              if (                (m.open('post', i, !0),                c.options.headers &&                  '[object Object]' ===                    Object.prototype.toString.apply(c.options.headers))              )                for (var n in c.options.headers)                  m.setRequestHeader(n, c.options.headers[n])              ;(m.onload = function () {                if ((m.status >= 200 && m.status < 300) || 304 == m.status) {                  var a = JSON.parse(m.responseText),                    e = c.options.imageUrlPrefix + a.url                  'SUCCESS' == a.state && a.url                    ? ((loader = c.document.getElementById(d)),                      loader.setAttribute('src', e),                      loader.setAttribute('_src', e),                      loader.setAttribute('title', a.title || ''),                      loader.setAttribute('alt', a.original || ''),                      loader.removeAttribute('id'),                      domUtils.removeClasses(loader, 'loadingclass'),                      c.fireEvent('contentchange'))                    : b(a.state)                } else b(c.getLang('simpleupload.loadError'))              }),                (m.onerror = function () {                  b(c.getLang('simpleupload.loadError'))                }),                m.send(new FormData(g)),                g.reset()            }          })      }      var b,        c = this,        d = (+new Date()).toString(36)      return {        bindEvents: {          ready: function () {            utils.cssRule(              'loading',              ".loadingclass{display:inline-block;cursor:default;background: url('" +                this.options.themePath +                this.options.theme +                "/images/loading.gif') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}\n.loaderrorclass{display:inline-block;cursor:default;background: url('" +                this.options.themePath +                this.options.theme +                "/images/loaderror.png') no-repeat center center transparent;border:1px solid #cccccc;margin-right:1px;height: 22px;width: 22px;}",              this.document            )          },          simpleuploadbtnready: function (d, e) {            ;(b = e), c.afterConfigReady(a)          }        },        outputRule: function (a) {          utils.each(a.getNodesByTagName('img'), function (a) {            ;/\b(loaderrorclass)|(bloaderrorclass)\b/.test(              a.getAttr('class')            ) && a.parentNode.removeChild(a)          })        }      }    }),    UE.plugin.register('serverparam', function () {      var a = {}      return {        commands: {          serverparam: {            execCommand: function (b, c, d) {              void 0 === c || null === c                ? (a = {})                : utils.isString(c)                ? void 0 === d || null === d                  ? delete a[c]                  : (a[c] = d)                : utils.isObject(c)                ? utils.extend(a, c, !0)                : utils.isFunction(c) && utils.extend(a, c(), !0)            },            queryCommandValue: function () {              return a || {}            }          }        }      }    }),    UE.plugin.register('insertfile', function () {      function a(a) {        var b = a.substr(a.lastIndexOf('.') + 1).toLowerCase(),          c = {            rar: 'icon_rar.gif',            zip: 'icon_rar.gif',            tar: 'icon_rar.gif',            gz: 'icon_rar.gif',            bz2: 'icon_rar.gif',            doc: 'icon_doc.gif',            docx: 'icon_doc.gif',            pdf: 'icon_pdf.gif',            mp3: 'icon_mp3.gif',            xls: 'icon_xls.gif',            chm: 'icon_chm.gif',            ppt: 'icon_ppt.gif',            pptx: 'icon_ppt.gif',            avi: 'icon_mv.gif',            rmvb: 'icon_mv.gif',            wmv: 'icon_mv.gif',            flv: 'icon_mv.gif',            swf: 'icon_mv.gif',            rm: 'icon_mv.gif',            exe: 'icon_exe.gif',            psd: 'icon_psd.gif',            txt: 'icon_txt.gif',            jpg: 'icon_jpg.gif',            png: 'icon_jpg.gif',            jpeg: 'icon_jpg.gif',            gif: 'icon_jpg.gif',            ico: 'icon_jpg.gif',            bmp: 'icon_jpg.gif'          }        return c[b] ? c[b] : c.txt      }      var b = this      return {        commands: {          insertfile: {            execCommand: function (c, d) {              d = utils.isArray(d) ? d : [d]              var e,                f,                g,                h,                i = '',                j = b.getOpt('UEDITOR_HOME_URL'),                k =                  j +                  ('/' == j.substr(j.length - 1) ? '' : '/') +                  'dialogs/attachment/fileTypeImages/'              for (e = 0; e < d.length; e++)                (f = d[e]),                  (g = k + a(f.url)),                  (h = f.title || f.url.substr(f.url.lastIndexOf('/') + 1)),                  (i +=                    '<p style="line-height: 16px;"><img style="vertical-align: middle; margin-right: 2px;" src="' +                    g +                    '" _src="' +                    g +                    '" /><a style="font-size:12px; color:#0066cc;" href="' +                    f.url +                    '" title="' +                    h +                    '">' +                    h +                    '</a></p>')              b.execCommand('insertHtml', i)            }          }        }      }    }),    (UE.plugins.xssFilter = function () {      function a(a) {        var b = a.tagName,          d = a.attrs        return c.hasOwnProperty(b)          ? void UE.utils.each(d, function (d, e) {              c[b].indexOf(e) === -1 && a.setAttr(e)            })          : (a.parentNode.removeChild(a), !1)      }      var b = UEDITOR_CONFIG,        c = b.whitList      c &&        b.xssFilterRules &&        (this.options.filterRules = (function () {          var b = {}          return (            UE.utils.each(c, function (c, d) {              b[d] = function (b) {                return a(b)              }            }),            b          )        })())      var d = []      UE.utils.each(c, function (a, b) {        d.push(b)      }),        c &&          b.inputXssFilter &&          this.addInputRule(function (b) {            b.traversal(function (b) {              return 'element' === b.type && void a(b)            })          }),        c &&          b.outputXssFilter &&          this.addOutputRule(function (b) {            b.traversal(function (b) {              return 'element' === b.type && void a(b)            })          })    })  var baidu = baidu || {}  ;(baidu.editor = baidu.editor || {}),    (UE.ui = baidu.editor.ui = {}),    (function () {      function a() {        var a = document.getElementById('edui_fixedlayer')        i.setViewportOffset(a, { left: 0, top: 0 })      }      function b(b) {        d.on(window, 'scroll', a),          d.on(window, 'resize', baidu.editor.utils.defer(a, 0, !0))      }      var c = baidu.editor.browser,        d = baidu.editor.dom.domUtils,        e = '$EDITORUI',        f = (window[e] = {}),        g = 'ID' + e,        h = 0,        i = (baidu.editor.ui.uiUtils = {          uid: function (a) {            return a ? a[g] || (a[g] = ++h) : ++h          },          hook: function (a, b) {            var c            return (              a && a._callbacks                ? (c = a)                : ((c = function () {                    var b                    a && (b = a.apply(this, arguments))                    for (var d = c._callbacks, e = d.length; e--; ) {                      var f = d[e].apply(this, arguments)                      void 0 === b && (b = f)                    }                    return b                  }),                  (c._callbacks = [])),              c._callbacks.push(b),              c            )          },          createElementByHtml: function (a) {            var b = document.createElement('div')            return (              (b.innerHTML = a),              (b = b.firstChild),              b.parentNode.removeChild(b),              b            )          },          getViewportElement: function () {            return c.ie && c.quirks ? document.body : document.documentElement          },          getClientRect: function (a) {            var b            try {              b = a.getBoundingClientRect()            } catch (c) {              b = { left: 0, top: 0, height: 0, width: 0 }            }            for (              var e,                f = {                  left: Math.round(b.left),                  top: Math.round(b.top),                  height: Math.round(b.bottom - b.top),                  width: Math.round(b.right - b.left)                };              (e = a.ownerDocument) !== document &&              (a = d.getWindow(e).frameElement);            )              (b = a.getBoundingClientRect()),                (f.left += b.left),                (f.top += b.top)            return (              (f.bottom = f.top + f.height), (f.right = f.left + f.width), f            )          },          getViewportRect: function () {            var a = i.getViewportElement(),              b = 0 | (window.innerWidth || a.clientWidth),              c = 0 | (window.innerHeight || a.clientHeight)            return { left: 0, top: 0, height: c, width: b, bottom: c, right: b }          },          setViewportOffset: function (a, b) {            var c = i.getFixedLayer()            a.parentNode === c              ? ((a.style.left = b.left + 'px'), (a.style.top = b.top + 'px'))              : d.setViewportOffset(a, b)          },          getEventOffset: function (a) {            var b = a.target || a.srcElement,              c = i.getClientRect(b),              d = i.getViewportOffsetByEvent(a)            return { left: d.left - c.left, top: d.top - c.top }          },          getViewportOffsetByEvent: function (a) {            var b = a.target || a.srcElement,              c = d.getWindow(b).frameElement,              e = { left: a.clientX, top: a.clientY }            if (c && b.ownerDocument !== document) {              var f = i.getClientRect(c)              ;(e.left += f.left), (e.top += f.top)            }            return e          },          setGlobal: function (a, b) {            return (f[a] = b), e + '["' + a + '"]'          },          unsetGlobal: function (a) {            delete f[a]          },          copyAttributes: function (a, b) {            for (var e = b.attributes, f = e.length; f--; ) {              var g = e[f]              'style' == g.nodeName ||                'class' == g.nodeName ||                (c.ie && !g.specified) ||                a.setAttribute(g.nodeName, g.nodeValue)            }            b.className && d.addClass(a, b.className),              b.style.cssText && (a.style.cssText += ';' + b.style.cssText)          },          removeStyle: function (a, b) {            if (a.style.removeProperty) a.style.removeProperty(b)            else {              if (!a.style.removeAttribute) throw ''              a.style.removeAttribute(b)            }          },          contains: function (a, b) {            return (              a &&              b &&              a !== b &&              (a.contains ? a.contains(b) : 16 & a.compareDocumentPosition(b))            )          },          startDrag: function (a, b, c) {            function d(a) {              var c = a.clientX - g,                d = a.clientY - h              b.ondragmove(c, d, a),                a.stopPropagation ? a.stopPropagation() : (a.cancelBubble = !0)            }            function e(a) {              c.removeEventListener('mousemove', d, !0),                c.removeEventListener('mouseup', e, !0),                window.removeEventListener('mouseup', e, !0),                b.ondragstop()            }            function f() {              i.releaseCapture(),                i.detachEvent('onmousemove', d),                i.detachEvent('onmouseup', f),                i.detachEvent('onlosecaptrue', f),                b.ondragstop()            }            var c = c || document,              g = a.clientX,              h = a.clientY            if (c.addEventListener)              c.addEventListener('mousemove', d, !0),                c.addEventListener('mouseup', e, !0),                window.addEventListener('mouseup', e, !0),                a.preventDefault()            else {              var i = a.srcElement              i.setCapture(),                i.attachEvent('onmousemove', d),                i.attachEvent('onmouseup', f),                i.attachEvent('onlosecaptrue', f),                (a.returnValue = !1)            }            b.ondragstart()          },          getFixedLayer: function () {            var d = document.getElementById('edui_fixedlayer')            return (              null == d &&                ((d = document.createElement('div')),                (d.id = 'edui_fixedlayer'),                document.body.appendChild(d),                c.ie && c.version <= 8                  ? ((d.style.position = 'absolute'), b(), setTimeout(a))                  : (d.style.position = 'fixed'),                (d.style.left = '0'),                (d.style.top = '0'),                (d.style.width = '0'),                (d.style.height = '0')),              d            )          },          makeUnselectable: function (a) {            if (c.opera || (c.ie && c.version < 9)) {              if (((a.unselectable = 'on'), a.hasChildNodes()))                for (var b = 0; b < a.childNodes.length; b++)                  1 == a.childNodes[b].nodeType &&                    i.makeUnselectable(a.childNodes[b])            } else              void 0 !== a.style.MozUserSelect                ? (a.style.MozUserSelect = 'none')                : void 0 !== a.style.WebkitUserSelect                ? (a.style.WebkitUserSelect = 'none')                : void 0 !== a.style.KhtmlUserSelect &&                  (a.style.KhtmlUserSelect = 'none')          }        })    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.uiUtils,        c = baidu.editor.EventBase,        d = (baidu.editor.ui.UIBase = function () {})      ;(d.prototype = {        className: '',        uiName: '',        initOptions: function (a) {          var c = this          for (var d in a) c[d] = a[d]          this.id = this.id || 'edui' + b.uid()        },        initUIBase: function () {          this._globalKey = a.unhtml(b.setGlobal(this.id, this))        },        render: function (a) {          for (            var c,              d = this.renderHtml(),              e = b.createElementByHtml(d),              f = domUtils.getElementsByTagName(e, '*'),              g = 'edui-' + (this.theme || this.editor.options.theme),              h = document.getElementById('edui_fixedlayer'),              i = 0;            (c = f[i++]);          )            domUtils.addClass(c, g)          domUtils.addClass(e, g),            h && ((h.className = ''), domUtils.addClass(h, g))          var j = this.getDom()          null != j            ? (j.parentNode.replaceChild(e, j), b.copyAttributes(e, j))            : ('string' == typeof a && (a = document.getElementById(a)),              (a = a || b.getFixedLayer()),              domUtils.addClass(a, g),              a.appendChild(e)),            this.postRender()        },        getDom: function (a) {          return a            ? document.getElementById(this.id + '_' + a)            : document.getElementById(this.id)        },        postRender: function () {          this.fireEvent('postrender')        },        getHtmlTpl: function () {          return ''        },        formatHtml: function (a) {          var b = 'edui-' + this.uiName          return a            .replace(/##/g, this.id)            .replace(/%%-/g, this.uiName ? b + '-' : '')            .replace(/%%/g, (this.uiName ? b : '') + ' ' + this.className)            .replace(/\$\$/g, this._globalKey)        },        renderHtml: function () {          return this.formatHtml(this.getHtmlTpl())        },        dispose: function () {          var a = this.getDom()          a && baidu.editor.dom.domUtils.remove(a), b.unsetGlobal(this.id)        }      }),        a.inherits(d, c)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.UIBase,        c = (baidu.editor.ui.Separator = function (a) {          this.initOptions(a), this.initSeparator()        })      ;(c.prototype = {        uiName: 'separator',        initSeparator: function () {          this.initUIBase()        },        getHtmlTpl: function () {          return '<div id="##" class="edui-box %%"></div>'        }      }),        a.inherits(c, b)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.dom.domUtils,        c = baidu.editor.ui.UIBase,        d = baidu.editor.ui.uiUtils,        e = (baidu.editor.ui.Mask = function (a) {          this.initOptions(a), this.initUIBase()        })      ;(e.prototype = {        getHtmlTpl: function () {          return '<div id="##" class="edui-mask %%" onclick="return $$._onClick(event, this);" onmousedown="return $$._onMouseDown(event, this);"></div>'        },        postRender: function () {          var a = this          b.on(window, 'resize', function () {            setTimeout(function () {              a.isHidden() || a._fill()            })          })        },        show: function (a) {          this._fill(),            (this.getDom().style.display = ''),            (this.getDom().style.zIndex = a)        },        hide: function () {          ;(this.getDom().style.display = 'none'),            (this.getDom().style.zIndex = '')        },        isHidden: function () {          return 'none' == this.getDom().style.display        },        _onMouseDown: function () {          return !1        },        _onClick: function (a, b) {          this.fireEvent('click', a, b)        },        _fill: function () {          var a = this.getDom(),            b = d.getViewportRect()          ;(a.style.width = b.width + 'px'), (a.style.height = b.height + 'px')        }      }),        a.inherits(e, c)    })(),    (function () {      function a(a, b) {        for (var c = 0; c < g.length; c++) {          var d = g[c]          if (!d.isHidden() && d.queryAutoHide(b) !== !1) {            if (              a &&              /scroll/gi.test(a.type) &&              'edui-wordpastepop' == d.className            )              return            d.hide()          }        }        g.length && d.editor.fireEvent('afterhidepop')      }      var b = baidu.editor.utils,        c = baidu.editor.ui.uiUtils,        d = baidu.editor.dom.domUtils,        e = baidu.editor.ui.UIBase,        f = (baidu.editor.ui.Popup = function (a) {          this.initOptions(a), this.initPopup()        }),        g = []      f.postHide = a      var h = [        'edui-anchor-topleft',        'edui-anchor-topright',        'edui-anchor-bottomleft',        'edui-anchor-bottomright'      ]      ;(f.prototype = {        SHADOW_RADIUS: 5,        content: null,        _hidden: !1,        autoRender: !0,        canSideLeft: !0,        canSideUp: !0,        initPopup: function () {          this.initUIBase(), g.push(this)        },        getHtmlTpl: function () {          return (            '<div id="##" class="edui-popup %%" onmousedown="return false;"> <div id="##_body" class="edui-popup-body"> <iframe style="position:absolute;z-index:-1;left:0;top:0;background-color: transparent;" frameborder="0" width="100%" height="100%" src="about:blank"></iframe> <div class="edui-shadow"></div> <div id="##_content" class="edui-popup-content">' +            this.getContentHtmlTpl() +            '  </div> </div></div>'          )        },        getContentHtmlTpl: function () {          return this.content            ? 'string' == typeof this.content              ? this.content              : this.content.renderHtml()            : ''        },        _UIBase_postRender: e.prototype.postRender,        postRender: function () {          if (            (this.content instanceof e && this.content.postRender(),            this.captureWheel && !this.captured)          ) {            this.captured = !0            var a =                (document.documentElement.clientHeight ||                  document.body.clientHeight) - 80,              b = this.getDom().offsetHeight,              f = c.getClientRect(this.combox.getDom()).top,              g = this.getDom('content'),              h = this.getDom('body').getElementsByTagName('iframe'),              i = this            for (h.length && (h = h[0]); f + b > a; ) b -= 30            ;(g.style.height = b + 'px'),              h && (h.style.height = b + 'px'),              window.XMLHttpRequest                ? d.on(                    g,                    'onmousewheel' in document.body                      ? 'mousewheel'                      : 'DOMMouseScroll',                    function (a) {                      a.preventDefault                        ? a.preventDefault()                        : (a.returnValue = !1),                        a.wheelDelta                          ? (g.scrollTop -= (a.wheelDelta / 120) * 60)                          : (g.scrollTop -= (a.detail / -3) * 60)                    }                  )                : d.on(this.getDom(), 'mousewheel', function (a) {                    ;(a.returnValue = !1),                      (i.getDom('content').scrollTop -=                        (a.wheelDelta / 120) * 60)                  })          }          this.fireEvent('postRenderAfter'),            this.hide(!0),            this._UIBase_postRender()        },        _doAutoRender: function () {          !this.getDom() && this.autoRender && this.render()        },        mesureSize: function () {          var a = this.getDom('content')          return c.getClientRect(a)        },        fitSize: function () {          if (this.captureWheel && this.sized) return this.__size          this.sized = !0          var a = this.getDom('body')          ;(a.style.width = ''), (a.style.height = '')          var b = this.mesureSize()          if (this.captureWheel) {            a.style.width = -(-20 - b.width) + 'px'            var c = parseInt(this.getDom('content').style.height, 10)            !window.isNaN(c) && (b.height = c)          } else a.style.width = b.width + 'px'          return (            (a.style.height = b.height + 'px'),            (this.__size = b),            this.captureWheel &&              (this.getDom('content').style.overflow = 'auto'),            b          )        },        showAnchor: function (a, b) {          this.showAnchorRect(c.getClientRect(a), b)        },        showAnchorRect: function (a, b, e) {          this._doAutoRender()          var f = c.getViewportRect()          ;(this.getDom().style.visibility = 'hidden'), this._show()          var g,            i,            j,            k,            l = this.fitSize()          b            ? ((g =                this.canSideLeft &&                a.right + l.width > f.right &&                a.left > l.width),              (i =                this.canSideUp &&                a.top + l.height > f.bottom &&                a.bottom > l.height),              (j = g ? a.left - l.width : a.right),              (k = i ? a.bottom - l.height : a.top))            : ((g =                this.canSideLeft &&                a.right + l.width > f.right &&                a.left > l.width),              (i =                this.canSideUp &&                a.top + l.height > f.bottom &&                a.bottom > l.height),              (j = g ? a.right - l.width : a.left),              (k = i ? a.top - l.height : a.bottom))          var m = this.getDom()          c.setViewportOffset(m, { left: j, top: k }),            d.removeClasses(m, h),            (m.className += ' ' + h[2 * (i ? 1 : 0) + (g ? 1 : 0)]),            this.editor &&              ((m.style.zIndex = 1 * this.editor.container.style.zIndex + 10),              (baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex =                m.style.zIndex - 1)),            (this.getDom().style.visibility = 'visible')        },        showAt: function (a) {          var b = a.left,            c = a.top,            d = { left: b, top: c, right: b, bottom: c, height: 0, width: 0 }          this.showAnchorRect(d, !1, !0)        },        _show: function () {          if (this._hidden) {            var a = this.getDom()            ;(a.style.display = ''), (this._hidden = !1), this.fireEvent('show')          }        },        isHidden: function () {          return this._hidden        },        show: function () {          this._doAutoRender(), this._show()        },        hide: function (a) {          !this._hidden &&            this.getDom() &&            ((this.getDom().style.display = 'none'),            (this._hidden = !0),            a || this.fireEvent('hide'))        },        queryAutoHide: function (a) {          return !a || !c.contains(this.getDom(), a)        }      }),        b.inherits(f, e),        d.on(document, 'mousedown', function (b) {          var c = b.target || b.srcElement          a(b, c)        }),        d.on(window, 'scroll', function (b, c) {          a(b, c)        })    })(),    (function () {      function a(a, b) {        for (          var c =              '<div id="##" class="edui-colorpicker %%"><div class="edui-colorpicker-topbar edui-clearfix"><div unselectable="on" id="##_preview" class="edui-colorpicker-preview"></div><div unselectable="on" class="edui-colorpicker-nocolor" onclick="$$._onPickNoColor(event, this);">' +              a +              '</div></div><table  class="edui-box" style="border-collapse: collapse;" onmouseover="$$._onTableOver(event, this);" onmouseout="$$._onTableOut(event, this);" onclick="return $$._onTableClick(event, this);" cellspacing="0" cellpadding="0"><tr style="border-bottom: 1px solid #ddd;font-size: 13px;line-height: 25px;color:#39C;padding-top: 2px"><td colspan="10">' +              b.getLang('themeColor') +              '</td> </tr><tr class="edui-colorpicker-tablefirstrow" >',            d = 0;          d < e.length;          d++        )          d &&            d % 10 === 0 &&            (c +=              '</tr>' +              (60 == d                ? '<tr style="border-bottom: 1px solid #ddd;font-size: 13px;line-height: 25px;color:#39C;"><td colspan="10">' +                  b.getLang('standardColor') +                  '</td></tr>'                : '') +              '<tr' +              (60 == d ? ' class="edui-colorpicker-tablefirstrow"' : '') +              '>'),            (c +=              d < 70                ? '<td style="padding: 0 2px;"><a hidefocus title="' +                  e[d] +                  '" onclick="return false;" href="javascript:" unselectable="on" class="edui-box edui-colorpicker-colorcell" data-color="#' +                  e[d] +                  '" style="background-color:#' +                  e[d] +                  ';border:solid #ccc;' +                  (d < 10 || d >= 60                    ? 'border-width:1px;'                    : d >= 10 && d < 20                    ? 'border-width:1px 1px 0 1px;'                    : 'border-width:0 1px 0 1px;') +                  '"></a></td>'                : '')        return (c += '</tr></table></div>')      }      var b = baidu.editor.utils,        c = baidu.editor.ui.UIBase,        d = (baidu.editor.ui.ColorPicker = function (a) {          this.initOptions(a),            (this.noColorText =              this.noColorText || this.editor.getLang('clearColor')),            this.initUIBase()        })      ;(d.prototype = {        getHtmlTpl: function () {          return a(this.noColorText, this.editor)        },        _onTableClick: function (a) {          var b = a.target || a.srcElement,            c = b.getAttribute('data-color')          c && this.fireEvent('pickcolor', c)        },        _onTableOver: function (a) {          var b = a.target || a.srcElement,            c = b.getAttribute('data-color')          c && (this.getDom('preview').style.backgroundColor = c)        },        _onTableOut: function () {          this.getDom('preview').style.backgroundColor = ''        },        _onPickNoColor: function () {          this.fireEvent('picknocolor')        }      }),        b.inherits(d, c)      var e =        'ffffff,000000,eeece1,1f497d,4f81bd,c0504d,9bbb59,8064a2,4bacc6,f79646,f2f2f2,7f7f7f,ddd9c3,c6d9f0,dbe5f1,f2dcdb,ebf1dd,e5e0ec,dbeef3,fdeada,d8d8d8,595959,c4bd97,8db3e2,b8cce4,e5b9b7,d7e3bc,ccc1d9,b7dde8,fbd5b5,bfbfbf,3f3f3f,938953,548dd4,95b3d7,d99694,c3d69b,b2a2c7,92cddc,fac08f,a5a5a5,262626,494429,17365d,366092,953734,76923c,5f497a,31859b,e36c09,7f7f7f,0c0c0c,1d1b10,0f243e,244061,632423,4f6128,3f3151,205867,974806,c00000,ff0000,ffc000,ffff00,92d050,00b050,00b0f0,0070c0,002060,7030a0,'.split(          ','        )    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.uiUtils,        c = baidu.editor.ui.UIBase,        d = (baidu.editor.ui.TablePicker = function (a) {          this.initOptions(a), this.initTablePicker()        })      ;(d.prototype = {        defaultNumRows: 10,        defaultNumCols: 10,        maxNumRows: 20,        maxNumCols: 20,        numRows: 10,        numCols: 10,        lengthOfCellSide: 22,        initTablePicker: function () {          this.initUIBase()        },        getHtmlTpl: function () {          return '<div id="##" class="edui-tablepicker %%"><div class="edui-tablepicker-body"><div class="edui-infoarea"><span id="##_label" class="edui-label"></span></div><div class="edui-pickarea" onmousemove="$$._onMouseMove(event, this);" onmouseover="$$._onMouseOver(event, this);" onmouseout="$$._onMouseOut(event, this);" onclick="$$._onClick(event, this);"><div id="##_overlay" class="edui-overlay"></div></div></div></div>'        },        _UIBase_render: c.prototype.render,        render: function (a) {          this._UIBase_render(a),            (this.getDom('label').innerHTML =              '0' +              this.editor.getLang('t_row') +              ' x 0' +              this.editor.getLang('t_col'))        },        _track: function (a, b) {          var c = this.getDom('overlay').style,            d = this.lengthOfCellSide          ;(c.width = a * d + 'px'), (c.height = b * d + 'px')          var e = this.getDom('label')          ;(e.innerHTML =            a +            this.editor.getLang('t_col') +            ' x ' +            b +            this.editor.getLang('t_row')),            (this.numCols = a),            (this.numRows = b)        },        _onMouseOver: function (a, c) {          var d = a.relatedTarget || a.fromElement          b.contains(c, d) ||            c === d ||            ((this.getDom('label').innerHTML =              '0' +              this.editor.getLang('t_col') +              ' x 0' +              this.editor.getLang('t_row')),            (this.getDom('overlay').style.visibility = ''))        },        _onMouseOut: function (a, c) {          var d = a.relatedTarget || a.toElement          b.contains(c, d) ||            c === d ||            ((this.getDom('label').innerHTML =              '0' +              this.editor.getLang('t_col') +              ' x 0' +              this.editor.getLang('t_row')),            (this.getDom('overlay').style.visibility = 'hidden'))        },        _onMouseMove: function (a, c) {          var d = (this.getDom('overlay').style, b.getEventOffset(a)),            e = this.lengthOfCellSide,            f = Math.ceil(d.left / e),            g = Math.ceil(d.top / e)          this._track(f, g)        },        _onClick: function () {          this.fireEvent('picktable', this.numCols, this.numRows)        }      }),        a.inherits(d, c)    })(),    (function () {      var a = baidu.editor.browser,        b = baidu.editor.dom.domUtils,        c = baidu.editor.ui.uiUtils,        d =          'onmousedown="$$.Stateful_onMouseDown(event, this);" onmouseup="$$.Stateful_onMouseUp(event, this);"' +          (a.ie            ? ' onmouseenter="$$.Stateful_onMouseEnter(event, this);" onmouseleave="$$.Stateful_onMouseLeave(event, this);"'            : ' onmouseover="$$.Stateful_onMouseOver(event, this);" onmouseout="$$.Stateful_onMouseOut(event, this);"')      baidu.editor.ui.Stateful = {        alwalysHoverable: !1,        target: null,        Stateful_init: function () {          ;(this._Stateful_dGetHtmlTpl = this.getHtmlTpl),            (this.getHtmlTpl = this.Stateful_getHtmlTpl)        },        Stateful_getHtmlTpl: function () {          var a = this._Stateful_dGetHtmlTpl()          return a.replace(/stateful/g, function () {            return d          })        },        Stateful_onMouseEnter: function (a, b) {          ;(this.target = b),            (this.isDisabled() && !this.alwalysHoverable) ||              (this.addState('hover'), this.fireEvent('over'))        },        Stateful_onMouseLeave: function (a, b) {          ;(this.isDisabled() && !this.alwalysHoverable) ||            (this.removeState('hover'),            this.removeState('active'),            this.fireEvent('out'))        },        Stateful_onMouseOver: function (a, b) {          var d = a.relatedTarget          c.contains(b, d) || b === d || this.Stateful_onMouseEnter(a, b)        },        Stateful_onMouseOut: function (a, b) {          var d = a.relatedTarget          c.contains(b, d) || b === d || this.Stateful_onMouseLeave(a, b)        },        Stateful_onMouseDown: function (a, b) {          this.isDisabled() || this.addState('active')        },        Stateful_onMouseUp: function (a, b) {          this.isDisabled() || this.removeState('active')        },        Stateful_postRender: function () {          this.disabled &&            !this.hasState('disabled') &&            this.addState('disabled')        },        hasState: function (a) {          return b.hasClass(this.getStateDom(), 'edui-state-' + a)        },        addState: function (a) {          this.hasState(a) ||            (this.getStateDom().className += ' edui-state-' + a)        },        removeState: function (a) {          this.hasState(a) &&            b.removeClasses(this.getStateDom(), ['edui-state-' + a])        },        getStateDom: function () {          return this.getDom('state')        },        isChecked: function () {          return this.hasState('checked')        },        setChecked: function (a) {          !this.isDisabled() && a            ? this.addState('checked')            : this.removeState('checked')        },        isDisabled: function () {          return this.hasState('disabled')        },        setDisabled: function (a) {          a            ? (this.removeState('hover'),              this.removeState('checked'),              this.removeState('active'),              this.addState('disabled'))            : this.removeState('disabled')        }      }    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.UIBase,        c = baidu.editor.ui.Stateful,        d = (baidu.editor.ui.Button = function (a) {          if (a.name) {            var b = a.name,              c = a.cssRules            a.className || (a.className = 'edui-for-' + b),              (a.cssRules =                '.edui-default  .edui-for-' + b + ' .edui-icon {' + c + '}')          }          this.initOptions(a), this.initButton()        })      ;(d.prototype = {        uiName: 'button',        label: '',        title: '',        showIcon: !0,        showText: !0,        cssRules: '',        initButton: function () {          this.initUIBase(),            this.Stateful_init(),            this.cssRules &&              a.cssRule('edui-customize-' + this.name + '-style', this.cssRules)        },        getHtmlTpl: function () {          return (            '<div id="##" class="edui-box %%"><div id="##_state" stateful><div class="%%-wrap"><div id="##_body" unselectable="on" ' +            (this.title ? 'title="' + this.title + '"' : '') +            ' class="%%-body" onmousedown="return $$._onMouseDown(event, this);" onclick="return $$._onClick(event, this);">' +            (this.showIcon ? '<div class="edui-box edui-icon"></div>' : '') +            (this.showText              ? '<div class="edui-box edui-label">' + this.label + '</div>'              : '') +            '</div></div></div></div>'          )        },        postRender: function () {          this.Stateful_postRender(), this.setDisabled(this.disabled)        },        _onMouseDown: function (a) {          var b = a.target || a.srcElement,            c = b && b.tagName && b.tagName.toLowerCase()          if ('input' == c || 'object' == c || 'object' == c) return !1        },        _onClick: function () {          this.isDisabled() || this.fireEvent('click')        },        setTitle: function (a) {          var b = this.getDom('label')          b.innerHTML = a        }      }),        a.inherits(d, b),        a.extend(d.prototype, c)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.uiUtils,        c = (baidu.editor.dom.domUtils, baidu.editor.ui.UIBase),        d = baidu.editor.ui.Stateful,        e = (baidu.editor.ui.SplitButton = function (a) {          this.initOptions(a), this.initSplitButton()        })      ;(e.prototype = {        popup: null,        uiName: 'splitbutton',        title: '',        initSplitButton: function () {          this.initUIBase(), this.Stateful_init()          if (null != this.popup) {            var a = this.popup            ;(this.popup = null), this.setPopup(a)          }        },        _UIBase_postRender: c.prototype.postRender,        postRender: function () {          this.Stateful_postRender(), this._UIBase_postRender()        },        setPopup: function (c) {          this.popup !== c &&            (null != this.popup && this.popup.dispose(),            c.addListener('show', a.bind(this._onPopupShow, this)),            c.addListener('hide', a.bind(this._onPopupHide, this)),            c.addListener(              'postrender',              a.bind(function () {                c                  .getDom('body')                  .appendChild(                    b.createElementByHtml(                      '<div id="' +                        this.popup.id +                        '_bordereraser" class="edui-bordereraser edui-background" style="width:' +                        (b.getClientRect(this.getDom()).width + 20) +                        'px"></div>'                    )                  ),                  (c.getDom().className += ' ' + this.className)              }, this)            ),            (this.popup = c))        },        _onPopupShow: function () {          this.addState('opened')        },        _onPopupHide: function () {          this.removeState('opened')        },        getHtmlTpl: function () {          return (            '<div id="##" class="edui-box %%"><div ' +            (this.title ? 'title="' + this.title + '"' : '') +            ' id="##_state" stateful><div class="%%-body"><div id="##_button_body" class="edui-box edui-button-body" onclick="$$._onButtonClick(event, this);"><div class="edui-box edui-icon"></div></div><div class="edui-box edui-splitborder"></div><div class="edui-box edui-arrow" onclick="$$._onArrowClick();"></div></div></div></div>'          )        },        showPopup: function () {          var a = b.getClientRect(this.getDom())          ;(a.top -= this.popup.SHADOW_RADIUS),            (a.height += this.popup.SHADOW_RADIUS),            this.popup.showAnchorRect(a)        },        _onArrowClick: function (a, b) {          this.isDisabled() || this.showPopup()        },        _onButtonClick: function () {          this.isDisabled() || this.fireEvent('buttonclick')        }      }),        a.inherits(e, c),        a.extend(e.prototype, d, !0)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.uiUtils,        c = baidu.editor.ui.ColorPicker,        d = baidu.editor.ui.Popup,        e = baidu.editor.ui.SplitButton,        f = (baidu.editor.ui.ColorButton = function (a) {          this.initOptions(a), this.initColorButton()        })      ;(f.prototype = {        initColorButton: function () {          var a = this          ;(this.popup = new d({            content: new c({              noColorText: a.editor.getLang('clearColor'),              editor: a.editor,              onpickcolor: function (b, c) {                a._onPickColor(c)              },              onpicknocolor: function (b, c) {                a._onPickNoColor(c)              }            }),            editor: a.editor          })),            this.initSplitButton()        },        _SplitButton_postRender: e.prototype.postRender,        postRender: function () {          this._SplitButton_postRender(),            this.getDom('button_body').appendChild(              b.createElementByHtml(                '<div id="' +                  this.id +                  '_colorlump" class="edui-colorlump"></div>'              )            ),            (this.getDom().className += ' edui-colorbutton')        },        setColor: function (a) {          ;(this.getDom('colorlump').style.backgroundColor = a),            (this.color = a)        },        _onPickColor: function (a) {          this.fireEvent('pickcolor', a) !== !1 &&            (this.setColor(a), this.popup.hide())        },        _onPickNoColor: function (a) {          this.fireEvent('picknocolor') !== !1 && this.popup.hide()        }      }),        a.inherits(f, e)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.Popup,        c = baidu.editor.ui.TablePicker,        d = baidu.editor.ui.SplitButton,        e = (baidu.editor.ui.TableButton = function (a) {          this.initOptions(a), this.initTableButton()        })      ;(e.prototype = {        initTableButton: function () {          var a = this          ;(this.popup = new b({            content: new c({              editor: a.editor,              onpicktable: function (b, c, d) {                a._onPickTable(c, d)              }            }),            editor: a.editor          })),            this.initSplitButton()        },        _onPickTable: function (a, b) {          this.fireEvent('picktable', a, b) !== !1 && this.popup.hide()        }      }),        a.inherits(e, d)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.UIBase,        c = (baidu.editor.ui.AutoTypeSetPicker = function (a) {          this.initOptions(a), this.initAutoTypeSetPicker()        })      ;(c.prototype = {        initAutoTypeSetPicker: function () {          this.initUIBase()        },        getHtmlTpl: function () {          var a = this.editor,            b = a.options.autotypeset,            c = a.getLang('autoTypeSet'),            d = 'textAlignValue' + a.uid,            e = 'imageBlockLineValue' + a.uid,            f = 'symbolConverValue' + a.uid          return (            '<div id="##" class="edui-autotypesetpicker %%"><div class="edui-autotypesetpicker-body"><table ><tr><td nowrap><input type="checkbox" name="mergeEmptyline" ' +            (b.mergeEmptyline ? 'checked' : '') +            '>' +            c.mergeLine +            '</td><td colspan="2"><input type="checkbox" name="removeEmptyline" ' +            (b.removeEmptyline ? 'checked' : '') +            '>' +            c.delLine +            '</td></tr><tr><td nowrap><input type="checkbox" name="removeClass" ' +            (b.removeClass ? 'checked' : '') +            '>' +            c.removeFormat +            '</td><td colspan="2"><input type="checkbox" name="indent" ' +            (b.indent ? 'checked' : '') +            '>' +            c.indent +            '</td></tr><tr><td nowrap><input type="checkbox" name="textAlign" ' +            (b.textAlign ? 'checked' : '') +            '>' +            c.alignment +            '</td><td colspan="2" id="' +            d +            '"><input type="radio" name="' +            d +            '" value="left" ' +            (b.textAlign && 'left' == b.textAlign ? 'checked' : '') +            '>' +            a.getLang('justifyleft') +            '<input type="radio" name="' +            d +            '" value="center" ' +            (b.textAlign && 'center' == b.textAlign ? 'checked' : '') +            '>' +            a.getLang('justifycenter') +            '<input type="radio" name="' +            d +            '" value="right" ' +            (b.textAlign && 'right' == b.textAlign ? 'checked' : '') +            '>' +            a.getLang('justifyright') +            '</td></tr><tr><td nowrap><input type="checkbox" name="imageBlockLine" ' +            (b.imageBlockLine ? 'checked' : '') +            '>' +            c.imageFloat +            '</td><td nowrap id="' +            e +            '"><input type="radio" name="' +            e +            '" value="none" ' +            (b.imageBlockLine && 'none' == b.imageBlockLine ? 'checked' : '') +            '>' +            a.getLang('default') +            '<input type="radio" name="' +            e +            '" value="left" ' +            (b.imageBlockLine && 'left' == b.imageBlockLine ? 'checked' : '') +            '>' +            a.getLang('justifyleft') +            '<input type="radio" name="' +            e +            '" value="center" ' +            (b.imageBlockLine && 'center' == b.imageBlockLine              ? 'checked'              : '') +            '>' +            a.getLang('justifycenter') +            '<input type="radio" name="' +            e +            '" value="right" ' +            (b.imageBlockLine && 'right' == b.imageBlockLine ? 'checked' : '') +            '>' +            a.getLang('justifyright') +            '</td></tr><tr><td nowrap><input type="checkbox" name="clearFontSize" ' +            (b.clearFontSize ? 'checked' : '') +            '>' +            c.removeFontsize +            '</td><td colspan="2"><input type="checkbox" name="clearFontFamily" ' +            (b.clearFontFamily ? 'checked' : '') +            '>' +            c.removeFontFamily +            '</td></tr><tr><td nowrap colspan="3"><input type="checkbox" name="removeEmptyNode" ' +            (b.removeEmptyNode ? 'checked' : '') +            '>' +            c.removeHtml +            '</td></tr><tr><td nowrap colspan="3"><input type="checkbox" name="pasteFilter" ' +            (b.pasteFilter ? 'checked' : '') +            '>' +            c.pasteFilter +            '</td></tr><tr><td nowrap><input type="checkbox" name="symbolConver" ' +            (b.bdc2sb || b.tobdc ? 'checked' : '') +            '>' +            c.symbol +            '</td><td id="' +            f +            '"><input type="radio" name="bdc" value="bdc2sb" ' +            (b.bdc2sb ? 'checked' : '') +            '>' +            c.bdc2sb +            '<input type="radio" name="bdc" value="tobdc" ' +            (b.tobdc ? 'checked' : '') +            '>' +            c.tobdc +            '</td><td nowrap align="right"><button >' +            c.run +            '</button></td></tr></table></div></div>'          )        },        _UIBase_render: b.prototype.render      }),        a.inherits(c, b)    })(),    (function () {      function a(a) {        for (          var c,            d = {},            e = a.getDom(),            f = a.editor.uid,            g = null,            h = null,            i = domUtils.getElementsByTagName(e, 'input'),            j = i.length - 1;          (c = i[j--]);        )          if (((g = c.getAttribute('type')), 'checkbox' == g))            if (              ((h = c.getAttribute('name')), d[h] && delete d[h], c.checked)            ) {              var k = document.getElementById(h + 'Value' + f)              if (k) {                if (/input/gi.test(k.tagName)) d[h] = k.value                else                  for (                    var l,                      m = k.getElementsByTagName('input'),                      n = m.length - 1;                    (l = m[n--]);                  )                    if (l.checked) {                      d[h] = l.value                      break                    }              } else d[h] = !0            } else d[h] = !1          else d[c.getAttribute('value')] = c.checked        for (          var o, p = domUtils.getElementsByTagName(e, 'select'), j = 0;          (o = p[j++]);        ) {          var q = o.getAttribute('name')          d[q] = d[q] ? o.value : ''        }        b.extend(a.editor.options.autotypeset, d),          a.editor.setPreferences('autotypeset', d)      }      var b = baidu.editor.utils,        c = baidu.editor.ui.Popup,        d = baidu.editor.ui.AutoTypeSetPicker,        e = baidu.editor.ui.SplitButton,        f = (baidu.editor.ui.AutoTypeSetButton = function (a) {          this.initOptions(a), this.initAutoTypeSetButton()        })      ;(f.prototype = {        initAutoTypeSetButton: function () {          var b = this          this.popup = new c({            content: new d({ editor: b.editor }),            editor: b.editor,            hide: function () {              !this._hidden &&                this.getDom() &&                (a(this),                (this.getDom().style.display = 'none'),                (this._hidden = !0),                this.fireEvent('hide'))            }          })          var e = 0          this.popup.addListener('postRenderAfter', function () {            var c = this            if (!e) {              var d = this.getDom(),                f = d.getElementsByTagName('button')[0]              ;(f.onclick = function () {                a(c), b.editor.execCommand('autotypeset'), c.hide()              }),                domUtils.on(d, 'click', function (d) {                  var e = d.target || d.srcElement,                    f = b.editor.uid                  if (e && 'INPUT' == e.tagName) {                    if (                      'imageBlockLine' == e.name ||                      'textAlign' == e.name ||                      'symbolConver' == e.name                    )                      for (                        var g = e.checked,                          h = document.getElementById(e.name + 'Value' + f),                          i = h.getElementsByTagName('input'),                          j = {                            imageBlockLine: 'none',                            textAlign: 'left',                            symbolConver: 'tobdc'                          },                          k = 0;                        k < i.length;                        k++                      )                        g                          ? i[k].value == j[e.name] &&                            (i[k].checked = 'checked')                          : (i[k].checked = !1)                    if (                      e.name == 'imageBlockLineValue' + f ||                      e.name == 'textAlignValue' + f ||                      'bdc' == e.name                    ) {                      var l =                        e.parentNode.previousSibling.getElementsByTagName(                          'input'                        )                      l && (l[0].checked = !0)                    }                    a(c)                  }                }),                (e = 1)            }          }),            this.initSplitButton()        }      }),        b.inherits(f, e)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.Popup,        c = baidu.editor.ui.Stateful,        d = baidu.editor.ui.UIBase,        e = (baidu.editor.ui.CellAlignPicker = function (a) {          this.initOptions(a), this.initSelected(), this.initCellAlignPicker()        })      ;(e.prototype = {        initSelected: function () {          var a = {            valign: { top: 0, middle: 1, bottom: 2 },            align: { left: 0, center: 1, right: 2 },            count: 3          }          this.selected &&            (this.selectedIndex =              a.valign[this.selected.valign] * a.count +              a.align[this.selected.align])        },        initCellAlignPicker: function () {          this.initUIBase(), this.Stateful_init()        },        getHtmlTpl: function () {          for (            var a = ['left', 'center', 'right'],              b = 9,              c = null,              d = -1,              e = [],              f = 0;            f < b;            f++          )            (c =              this.selectedIndex === f                ? ' class="edui-cellalign-selected" '                : ''),              (d = f % 3),              0 === d && e.push('<tr>'),              e.push(                '<td index="' +                  f +                  '" ' +                  c +                  ' stateful><div class="edui-icon edui-' +                  a[d] +                  '"></div></td>'              ),              2 === d && e.push('</tr>')          return (            '<div id="##" class="edui-cellalignpicker %%"><div class="edui-cellalignpicker-body"><table onclick="$$._onClick(event);">' +            e.join('') +            '</table></div></div>'          )        },        getStateDom: function () {          return this.target        },        _onClick: function (a) {          var c = a.target || a.srcElement          ;/icon/.test(c.className) &&            (this.items[c.parentNode.getAttribute('index')].onclick(),            b.postHide(a))        },        _UIBase_render: d.prototype.render      }),        a.inherits(e, d),        a.extend(e.prototype, c, !0)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.Stateful,        c = baidu.editor.ui.uiUtils,        d = baidu.editor.ui.UIBase,        e = (baidu.editor.ui.PastePicker = function (a) {          this.initOptions(a), this.initPastePicker()        })      ;(e.prototype = {        initPastePicker: function () {          this.initUIBase(), this.Stateful_init()        },        getHtmlTpl: function () {          return (            '<div class="edui-pasteicon" onclick="$$._onClick(this)"></div><div class="edui-pastecontainer"><div class="edui-title">' +            this.editor.getLang('pasteOpt') +            '</div><div class="edui-button"><div title="' +            this.editor.getLang('pasteSourceFormat') +            '" onclick="$$.format(false)" stateful><div class="edui-richtxticon"></div></div><div title="' +            this.editor.getLang('tagFormat') +            '" onclick="$$.format(2)" stateful><div class="edui-tagicon"></div></div><div title="' +            this.editor.getLang('pasteTextFormat') +            '" onclick="$$.format(true)" stateful><div class="edui-plaintxticon"></div></div></div></div></div>'          )        },        getStateDom: function () {          return this.target        },        format: function (a) {          ;(this.editor.ui._isTransfer = !0),            this.editor.fireEvent('pasteTransfer', a)        },        _onClick: function (a) {          var b = domUtils.getNextDomNode(a),            d = c.getViewportRect().height,            e = c.getClientRect(b)          e.top + e.height > d            ? (b.style.top = -e.height - a.offsetHeight + 'px')            : (b.style.top = ''),            /hidden/gi.test(domUtils.getComputedStyle(b, 'visibility'))              ? ((b.style.visibility = 'visible'),                domUtils.addClass(a, 'edui-state-opened'))              : ((b.style.visibility = 'hidden'),                domUtils.removeClasses(a, 'edui-state-opened'))        },        _UIBase_render: d.prototype.render      }),        a.inherits(e, d),        a.extend(e.prototype, b, !0)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.uiUtils,        c = baidu.editor.ui.UIBase,        d = (baidu.editor.ui.Toolbar = function (a) {          this.initOptions(a), this.initToolbar()        })      ;(d.prototype = {        items: null,        initToolbar: function () {          ;(this.items = this.items || []), this.initUIBase()        },        add: function (a, b) {          void 0 === b ? this.items.push(a) : this.items.splice(b, 0, a)        },        getHtmlTpl: function () {          for (var a = [], b = 0; b < this.items.length; b++)            a[b] = this.items[b].renderHtml()          return (            '<div id="##" class="edui-toolbar %%" onselectstart="return false;" onmousedown="return $$._onMouseDown(event, this);">' +            a.join('') +            '</div>'          )        },        postRender: function () {          for (var a = this.getDom(), c = 0; c < this.items.length; c++)            this.items[c].postRender()          b.makeUnselectable(a)        },        _onMouseDown: function (a) {          var b = a.target || a.srcElement,            c = b && b.tagName && b.tagName.toLowerCase()          if ('input' == c || 'object' == c || 'object' == c) return !1        }      }),        a.inherits(d, c)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.dom.domUtils,        c = baidu.editor.ui.uiUtils,        d = baidu.editor.ui.UIBase,        e = baidu.editor.ui.Popup,        f = baidu.editor.ui.Stateful,        g = baidu.editor.ui.CellAlignPicker,        h = (baidu.editor.ui.Menu = function (a) {          this.initOptions(a), this.initMenu()        }),        i = {          renderHtml: function () {            return '<div class="edui-menuitem edui-menuseparator"><div class="edui-menuseparator-inner"></div></div>'          },          postRender: function () {},          queryAutoHide: function () {            return !0          }        }      ;(h.prototype = {        items: null,        uiName: 'menu',        initMenu: function () {          ;(this.items = this.items || []), this.initPopup(), this.initItems()        },        initItems: function () {          for (var a = 0; a < this.items.length; a++) {            var b = this.items[a]            '-' == b              ? (this.items[a] = this.getSeparator())              : b instanceof j ||                ((b.editor = this.editor),                (b.theme = this.editor.options.theme),                (this.items[a] = this.createItem(b)))          }        },        getSeparator: function () {          return i        },        createItem: function (a) {          return (a.menu = this), new j(a)        },        _Popup_getContentHtmlTpl: e.prototype.getContentHtmlTpl,        getContentHtmlTpl: function () {          if (0 == this.items.length) return this._Popup_getContentHtmlTpl()          for (var a = [], b = 0; b < this.items.length; b++) {            var c = this.items[b]            a[b] = c.renderHtml()          }          return '<div class="%%-body">' + a.join('') + '</div>'        },        _Popup_postRender: e.prototype.postRender,        postRender: function () {          for (var a = this, d = 0; d < this.items.length; d++) {            var e = this.items[d]            ;(e.ownerMenu = this), e.postRender()          }          b.on(this.getDom(), 'mouseover', function (b) {            b = b || event            var d = b.relatedTarget || b.fromElement,              e = a.getDom()            c.contains(e, d) || e === d || a.fireEvent('over')          }),            this._Popup_postRender()        },        queryAutoHide: function (a) {          if (a) {            if (c.contains(this.getDom(), a)) return !1            for (var b = 0; b < this.items.length; b++) {              var d = this.items[b]              if (d.queryAutoHide(a) === !1) return !1            }          }        },        clearItems: function () {          for (var a = 0; a < this.items.length; a++) {            var b = this.items[a]            clearTimeout(b._showingTimer),              clearTimeout(b._closingTimer),              b.subMenu && b.subMenu.destroy()          }          this.items = []        },        destroy: function () {          this.getDom() && b.remove(this.getDom()), this.clearItems()        },        dispose: function () {          this.destroy()        }      }),        a.inherits(h, e)      var j = (baidu.editor.ui.MenuItem = function (a) {        if (          (this.initOptions(a),          this.initUIBase(),          this.Stateful_init(),          this.subMenu && !(this.subMenu instanceof h))        )          if (a.className && a.className.indexOf('aligntd') != -1) {            var c = this            ;(this.subMenu.selected =              this.editor.queryCommandValue('cellalignment')),              (this.subMenu = new e({                content: new g(this.subMenu),                parentMenu: c,                editor: c.editor,                destroy: function () {                  this.getDom() && b.remove(this.getDom())                }              })),              this.subMenu.addListener('postRenderAfter', function () {                b.on(this.getDom(), 'mouseover', function () {                  c.addState('opened')                })              })          } else this.subMenu = new h(this.subMenu)      })      ;(j.prototype = {        label: '',        subMenu: null,        ownerMenu: null,        uiName: 'menuitem',        alwalysHoverable: !0,        getHtmlTpl: function () {          return (            '<div id="##" class="%%" stateful onclick="$$._onClick(event, this);"><div class="%%-body">' +            this.renderLabelHtml() +            '</div></div>'          )        },        postRender: function () {          var a = this          this.addListener('over', function () {            a.ownerMenu.fireEvent('submenuover', a),              a.subMenu && a.delayShowSubMenu()          }),            this.subMenu &&              ((this.getDom().className += ' edui-hassubmenu'),              this.subMenu.render(),              this.addListener('out', function () {                a.delayHideSubMenu()              }),              this.subMenu.addListener('over', function () {                clearTimeout(a._closingTimer),                  (a._closingTimer = null),                  a.addState('opened')              }),              this.ownerMenu.addListener('hide', function () {                a.hideSubMenu()              }),              this.ownerMenu.addListener('submenuover', function (b, c) {                c !== a && a.delayHideSubMenu()              }),              (this.subMenu._bakQueryAutoHide = this.subMenu.queryAutoHide),              (this.subMenu.queryAutoHide = function (b) {                return (                  (!b || !c.contains(a.getDom(), b)) &&                  this._bakQueryAutoHide(b)                )              })),            (this.getDom().style.tabIndex = '-1'),            c.makeUnselectable(this.getDom()),            this.Stateful_postRender()        },        delayShowSubMenu: function () {          var a = this          a.isDisabled() ||            (a.addState('opened'),            clearTimeout(a._showingTimer),            clearTimeout(a._closingTimer),            (a._closingTimer = null),            (a._showingTimer = setTimeout(function () {              a.showSubMenu()            }, 250)))        },        delayHideSubMenu: function () {          var a = this          a.isDisabled() ||            (a.removeState('opened'),            clearTimeout(a._showingTimer),            a._closingTimer ||              (a._closingTimer = setTimeout(function () {                a.hasState('opened') || a.hideSubMenu(),                  (a._closingTimer = null)              }, 400)))        },        renderLabelHtml: function () {          return (            '<div class="edui-arrow"></div><div class="edui-box edui-icon"></div><div class="edui-box edui-label %%-label">' +            (this.label || '') +            '</div>'          )        },        getStateDom: function () {          return this.getDom()        },        queryAutoHide: function (a) {          if (this.subMenu && this.hasState('opened'))            return this.subMenu.queryAutoHide(a)        },        _onClick: function (a, b) {          this.hasState('disabled') ||            (this.fireEvent('click', a, b) !== !1 &&              (this.subMenu ? this.showSubMenu() : e.postHide(a)))        },        showSubMenu: function () {          var a = c.getClientRect(this.getDom())          ;(a.right -= 5),            (a.left += 2),            (a.width -= 7),            (a.top -= 4),            (a.bottom += 4),            (a.height += 8),            this.subMenu.showAnchorRect(a, !0, !0)        },        hideSubMenu: function () {          this.subMenu.hide()        }      }),        a.inherits(j, d),        a.extend(j.prototype, f, !0)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.uiUtils,        c = baidu.editor.ui.Menu,        d = baidu.editor.ui.SplitButton,        e = (baidu.editor.ui.Combox = function (a) {          this.initOptions(a), this.initCombox()        })      ;(e.prototype = {        uiName: 'combox',        onbuttonclick: function () {          this.showPopup()        },        initCombox: function () {          var a = this          this.items = this.items || []          for (var b = 0; b < this.items.length; b++) {            var d = this.items[b]            ;(d.uiName = 'listitem'),              (d.index = b),              (d.onclick = function () {                a.selectByIndex(this.index)              })          }          ;(this.popup = new c({            items: this.items,            uiName: 'list',            editor: this.editor,            captureWheel: !0,            combox: this          })),            this.initSplitButton()        },        _SplitButton_postRender: d.prototype.postRender,        postRender: function () {          this._SplitButton_postRender(),            this.setLabel(this.label || ''),            this.setValue(this.initValue || '')        },        showPopup: function () {          var a = b.getClientRect(this.getDom())          ;(a.top += 1),            (a.bottom -= 1),            (a.height -= 2),            this.popup.showAnchorRect(a)        },        getValue: function () {          return this.value        },        setValue: function (a) {          var b = this.indexByValue(a)          b != -1            ? ((this.selectedIndex = b),              this.setLabel(this.items[b].label),              (this.value = this.items[b].value))            : ((this.selectedIndex = -1),              this.setLabel(this.getLabelForUnknowValue(a)),              (this.value = a))        },        setLabel: function (a) {          ;(this.getDom('button_body').innerHTML = a), (this.label = a)        },        getLabelForUnknowValue: function (a) {          return a        },        indexByValue: function (a) {          for (var b = 0; b < this.items.length; b++)            if (a == this.items[b].value) return b          return -1        },        getItem: function (a) {          return this.items[a]        },        selectByIndex: function (a) {          a < this.items.length &&            this.fireEvent('select', a) !== !1 &&            ((this.selectedIndex = a),            (this.value = this.items[a].value),            this.setLabel(this.items[a].label))        }      }),        a.inherits(e, d)    })(),    (function () {      var a,        b,        c,        d = baidu.editor.utils,        e = baidu.editor.dom.domUtils,        f = baidu.editor.ui.uiUtils,        g = baidu.editor.ui.Mask,        h = baidu.editor.ui.UIBase,        i = baidu.editor.ui.Button,        j = (baidu.editor.ui.Dialog = function (a) {          if (a.name) {            var b = a.name,              c = a.cssRules            a.className || (a.className = 'edui-for-' + b),              c &&                (a.cssRules =                  '.edui-default .edui-for-' +                  b +                  ' .edui-dialog-content  {' +                  c +                  '}')          }          this.initOptions(            d.extend(              {                autoReset: !0,                draggable: !0,                onok: function () {},                oncancel: function () {},                onclose: function (a, b) {                  return b ? this.onok() : this.oncancel()                },                holdScroll: !1              },              a            )          ),            this.initDialog()        })      ;(j.prototype = {        draggable: !1,        uiName: 'dialog',        initDialog: function () {          var e = this,            f = this.editor.options.theme          if (            (this.cssRules &&              d.cssRule(                'edui-customize-' + this.name + '-style',                this.cssRules              ),            this.initUIBase(),            (this.modalMask =              a ||              (a = new g({                className: 'edui-dialog-modalmask',                theme: f,                onclick: function () {                  c && c.close(!1)                }              }))),            (this.dragMask =              b ||              (b = new g({ className: 'edui-dialog-dragmask', theme: f }))),            (this.closeButton = new i({              className: 'edui-dialog-closebutton',              title: e.closeDialog,              theme: f,              onclick: function () {                e.close(!1)              }            })),            this.fullscreen && this.initResizeEvent(),            this.buttons)          )            for (var h = 0; h < this.buttons.length; h++)              this.buttons[h] instanceof i ||                (this.buttons[h] = new i(                  d.extend(this.buttons[h], { editor: this.editor }, !0)                ))        },        initResizeEvent: function () {          var a = this          e.on(window, 'resize', function () {            a._hidden ||              void 0 === a._hidden ||              (a.__resizeTimer && window.clearTimeout(a.__resizeTimer),              (a.__resizeTimer = window.setTimeout(function () {                a.__resizeTimer = null                var b = a.getDom(),                  c = a.getDom('content'),                  d = UE.ui.uiUtils.getClientRect(b),                  e = UE.ui.uiUtils.getClientRect(c),                  g = f.getViewportRect()                ;(c.style.width = g.width - d.width + e.width + 'px'),                  (c.style.height = g.height - d.height + e.height + 'px'),                  (b.style.width = g.width + 'px'),                  (b.style.height = g.height + 'px'),                  a.fireEvent('resize')              }, 100)))          })        },        fitSize: function () {          var a = this.getDom('body'),            b = this.mesureSize()          return (            (a.style.width = b.width + 'px'),            (a.style.height = b.height + 'px'),            b          )        },        safeSetOffset: function (a) {          var b = this,            c = b.getDom(),            d = f.getViewportRect(),            e = f.getClientRect(c),            g = a.left          g + e.width > d.right && (g = d.right - e.width)          var h = a.top          h + e.height > d.bottom && (h = d.bottom - e.height),            (c.style.left = Math.max(g, 0) + 'px'),            (c.style.top = Math.max(h, 0) + 'px')        },        showAtCenter: function () {          var a = f.getViewportRect()          if (this.fullscreen) {            var b = this.getDom(),              c = this.getDom('content')            b.style.display = 'block'            var d = UE.ui.uiUtils.getClientRect(b),              g = UE.ui.uiUtils.getClientRect(c)            ;(b.style.left = '-100000px'),              (c.style.width = a.width - d.width + g.width + 'px'),              (c.style.height = a.height - d.height + g.height + 'px'),              (b.style.width = a.width + 'px'),              (b.style.height = a.height + 'px'),              (b.style.left = 0),              (this._originalContext = {                html: {                  overflowX: document.documentElement.style.overflowX,                  overflowY: document.documentElement.style.overflowY                },                body: {                  overflowX: document.body.style.overflowX,                  overflowY: document.body.style.overflowY                }              }),              (document.documentElement.style.overflowX = 'hidden'),              (document.documentElement.style.overflowY = 'hidden'),              (document.body.style.overflowX = 'hidden'),              (document.body.style.overflowY = 'hidden')          } else {            this.getDom().style.display = ''            var h = this.fitSize(),              i = 0 | this.getDom('titlebar').offsetHeight,              j = a.width / 2 - h.width / 2,              k = a.height / 2 - (h.height - i) / 2 - i,              l = this.getDom()            this.safeSetOffset({              left: Math.max(0 | j, 0),              top: Math.max(0 | k, 0)            }),              e.hasClass(l, 'edui-state-centered') ||                (l.className += ' edui-state-centered')          }          this._show()        },        getContentHtml: function () {          var a = ''          return (            'string' == typeof this.content              ? (a = this.content)              : this.iframeUrl &&                (a =                  '<span id="' +                  this.id +                  '_contmask" class="dialogcontmask"></span><iframe id="' +                  this.id +                  '_iframe" class="%%-iframe" height="100%" width="100%" frameborder="0" src="' +                  this.iframeUrl +                  '"></iframe>'),            a          )        },        getHtmlTpl: function () {          var a = ''          if (this.buttons) {            for (var b = [], c = 0; c < this.buttons.length; c++)              b[c] = this.buttons[c].renderHtml()            a =              '<div class="%%-foot"><div id="##_buttons" class="%%-buttons">' +              b.join('') +              '</div></div>'          }          return (            '<div id="##" class="%%"><div ' +            (this.fullscreen              ? 'class="%%-wrap edui-dialog-fullscreen-flag"'              : 'class="%%"') +            '><div id="##_body" class="%%-body"><div class="%%-shadow"></div><div id="##_titlebar" class="%%-titlebar"><div class="%%-draghandle" onmousedown="$$._onTitlebarMouseDown(event, this);"><span class="%%-caption">' +            (this.title || '') +            '</span></div>' +            this.closeButton.renderHtml() +            '</div><div id="##_content" class="%%-content">' +            (this.autoReset ? '' : this.getContentHtml()) +            '</div>' +            a +            '</div></div></div>'          )        },        postRender: function () {          this.modalMask.getDom() ||            (this.modalMask.render(), this.modalMask.hide()),            this.dragMask.getDom() ||              (this.dragMask.render(), this.dragMask.hide())          var a = this          if (            (this.addListener('show', function () {              a.modalMask.show(this.getDom().style.zIndex - 2)            }),            this.addListener('hide', function () {              a.modalMask.hide()            }),            this.buttons)          )            for (var b = 0; b < this.buttons.length; b++)              this.buttons[b].postRender()          e.on(window, 'resize', function () {            setTimeout(function () {              a.isHidden() || a.safeSetOffset(f.getClientRect(a.getDom()))            })          }),            this._hide()        },        mesureSize: function () {          var a = this.getDom('body'),            b = f.getClientRect(this.getDom('content')).width,            c = a.style          return (c.width = b), f.getClientRect(a)        },        _onTitlebarMouseDown: function (a, b) {          if (this.draggable) {            var c,              d = (f.getViewportRect(), this)            f.startDrag(a, {              ondragstart: function () {                ;(c = f.getClientRect(d.getDom())),                  (d.getDom('contmask').style.visibility = 'visible'),                  d.dragMask.show(d.getDom().style.zIndex - 1)              },              ondragmove: function (a, b) {                var e = c.left + a,                  f = c.top + b                d.safeSetOffset({ left: e, top: f })              },              ondragstop: function () {                ;(d.getDom('contmask').style.visibility = 'hidden'),                  e.removeClasses(d.getDom(), ['edui-state-centered']),                  d.dragMask.hide()              }            })          }        },        reset: function () {          ;(this.getDom('content').innerHTML = this.getContentHtml()),            this.fireEvent('dialogafterreset')        },        _show: function () {          this._hidden &&            ((this.getDom().style.display = ''),            this.editor.container.style.zIndex &&              (this.getDom().style.zIndex =                1 * this.editor.container.style.zIndex + 10),            (this._hidden = !1),            this.fireEvent('show'),            (baidu.editor.ui.uiUtils.getFixedLayer().style.zIndex =              this.getDom().style.zIndex - 4))        },        isHidden: function () {          return this._hidden        },        _hide: function () {          if (!this._hidden) {            var a = this.getDom()            ;(a.style.display = 'none'),              (a.style.zIndex = ''),              (a.style.width = ''),              (a.style.height = ''),              (this._hidden = !0),              this.fireEvent('hide')          }        },        open: function () {          if (this.autoReset)            try {              this.reset()            } catch (a) {              this.render(), this.open()            }          if ((this.showAtCenter(), this.iframeUrl))            try {              this.getDom('iframe').focus()            } catch (b) {}          c = this        },        _onCloseButtonClick: function (a, b) {          this.close(!1)        },        close: function (a) {          if (this.fireEvent('close', a) !== !1) {            this.fullscreen &&              ((document.documentElement.style.overflowX =                this._originalContext.html.overflowX),              (document.documentElement.style.overflowY =                this._originalContext.html.overflowY),              (document.body.style.overflowX =                this._originalContext.body.overflowX),              (document.body.style.overflowY =                this._originalContext.body.overflowY),              delete this._originalContext),              this._hide()            var b = this.getDom('content'),              c = this.getDom('iframe')            if (b && c) {              var d = c.contentDocument || c.contentWindow.document              d && (d.body.innerHTML = ''), e.remove(b)            }          }        }      }),        d.inherits(j, h)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.Menu,        c = baidu.editor.ui.SplitButton,        d = (baidu.editor.ui.MenuButton = function (a) {          this.initOptions(a), this.initMenuButton()        })      ;(d.prototype = {        initMenuButton: function () {          var a = this          ;(this.uiName = 'menubutton'),            (this.popup = new b({              items: a.items,              className: a.className,              editor: a.editor            })),            this.popup.addListener('show', function () {              for (var b = this, c = 0; c < b.items.length; c++)                b.items[c].removeState('checked'),                  b.items[c].value == a._value &&                    (b.items[c].addState('checked'), (this.value = a._value))            }),            this.initSplitButton()        },        setValue: function (a) {          this._value = a        }      }),        a.inherits(d, c)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.Popup,        c = baidu.editor.ui.SplitButton,        d = (baidu.editor.ui.MultiMenuPop = function (a) {          this.initOptions(a), this.initMultiMenu()        })      ;(d.prototype = {        initMultiMenu: function () {          var a = this          ;(this.popup = new b({            content: '',            editor: a.editor,            iframe_rendered: !1,            onshow: function () {              this.iframe_rendered ||                ((this.iframe_rendered = !0),                (this.getDom('content').innerHTML =                  '<iframe id="' +                  a.id +                  '_iframe" src="' +                  a.iframeUrl +                  '" frameborder="0"></iframe>'),                a.editor.container.style.zIndex &&                  (this.getDom().style.zIndex =                    1 * a.editor.container.style.zIndex + 1))            }          })),            (this.onbuttonclick = function () {              this.showPopup()            }),            this.initSplitButton()        }      }),        a.inherits(d, c)    })(),    (function () {      function a(a) {        var b = a.target || a.srcElement,          c = g.findParent(            b,            function (a) {              return (                g.hasClass(a, 'edui-shortcutmenu') ||                g.hasClass(a, 'edui-popup')              )            },            !0          )        if (!c) for (var d, e = 0; (d = h[e++]); ) d.hide()      }      var b,        c = baidu.editor.ui,        d = c.UIBase,        e = c.uiUtils,        f = baidu.editor.utils,        g = baidu.editor.dom.domUtils,        h = [],        i = !1,        j = (c.ShortCutMenu = function (a) {          this.initOptions(a), this.initShortCutMenu()        })      ;(j.postHide = a),        (j.prototype = {          isHidden: !0,          SPACE: 5,          initShortCutMenu: function () {            ;(this.items = this.items || []),              this.initUIBase(),              this.initItems(),              this.initEvent(),              h.push(this)          },          initEvent: function () {            var a = this,              c = a.editor.document            g.on(c, 'mousemove', function (c) {              if (a.isHidden === !1) {                if (a.getSubMenuMark() || 'contextmenu' == a.eventType) return                var d = !0,                  e = a.getDom(),                  f = e.offsetWidth,                  g = e.offsetHeight,                  h = f / 2 + a.SPACE,                  i = g / 2,                  j = Math.abs(c.screenX - a.left),                  k = Math.abs(c.screenY - a.top)                clearTimeout(b),                  (b = setTimeout(function () {                    k > 0 && k < i                      ? a.setOpacity(e, '1')                      : k > i && k < i + 70                      ? (a.setOpacity(e, '0.5'), (d = !1))                      : k > i + 70 && k < i + 140 && a.hide(),                      d && j > 0 && j < h                        ? a.setOpacity(e, '1')                        : j > h && j < h + 70                        ? a.setOpacity(e, '0.5')                        : j > h + 70 && j < h + 140 && a.hide()                  }))              }            }),              browser.chrome &&                g.on(c, 'mouseout', function (b) {                  var c = b.relatedTarget || b.toElement                  ;(null != c && 'HTML' != c.tagName) || a.hide()                }),              a.editor.addListener('afterhidepop', function () {                a.isHidden || (i = !0)              })          },          initItems: function () {            if (f.isArray(this.items))              for (var a = 0, b = this.items.length; a < b; a++) {                var d = this.items[a].toLowerCase()                c[d] &&                  ((this.items[a] = new c[d](this.editor)),                  (this.items[a].className += ' edui-shortcutsubmenu '))              }          },          setOpacity: function (a, b) {            browser.ie && browser.version < 9              ? (a.style.filter =                  'alpha(opacity = ' + 100 * parseFloat(b) + ');')              : (a.style.opacity = b)          },          getSubMenuMark: function () {            i = !1            for (              var a,                b = e.getFixedLayer(),                c = g.getElementsByTagName(b, 'div', function (a) {                  return g.hasClass(a, 'edui-shortcutsubmenu edui-popup')                }),                d = 0;              (a = c[d++]);            )              'none' != a.style.display && (i = !0)            return i          },          show: function (a, b) {            function c(a) {              a.left < 0 && (a.left = 0),                a.top < 0 && (a.top = 0),                (i.style.cssText =                  'position:absolute;left:' +                  a.left +                  'px;top:' +                  a.top +                  'px;')            }            function d(a) {              a.tagName || (a = a.getDom()),                (h.left = parseInt(a.style.left)),                (h.top = parseInt(a.style.top)),                (h.top -= i.offsetHeight + 15),                c(h)            }            var f = this,              h = {},              i = this.getDom(),              j = e.getFixedLayer()            if (              ((f.eventType = a.type),              (i.style.cssText = 'display:block;left:-9999px'),              'contextmenu' == a.type && b)            ) {              var k = g.getElementsByTagName(j, 'div', 'edui-contextmenu')[0]              k                ? d(k)                : f.editor.addListener('aftershowcontextmenu', function (a, b) {                    d(b)                  })            } else              (h = e.getViewportOffsetByEvent(a)),                (h.top -= i.offsetHeight + f.SPACE),                (h.left += f.SPACE + 20),                c(h),                f.setOpacity(i, 0.2)            ;(f.isHidden = !1),              (f.left = a.screenX + i.offsetWidth / 2 - f.SPACE),              (f.top = a.screenY - i.offsetHeight / 2 - f.SPACE),              f.editor &&                ((i.style.zIndex = 1 * f.editor.container.style.zIndex + 10),                (j.style.zIndex = i.style.zIndex - 1))          },          hide: function () {            this.getDom() && (this.getDom().style.display = 'none'),              (this.isHidden = !0)          },          postRender: function () {            if (f.isArray(this.items))              for (var a, b = 0; (a = this.items[b++]); ) a.postRender()          },          getHtmlTpl: function () {            var a            if (f.isArray(this.items)) {              a = []              for (var b = 0; b < this.items.length; b++)                a[b] = this.items[b].renderHtml()              a = a.join('')            } else a = this.items            return (              '<div id="##" class="%% edui-toolbar" data-src="shortcutmenu" onmousedown="return false;" onselectstart="return false;" >' +              a +              '</div>'            )          }        }),        f.inherits(j, d),        g.on(document, 'mousedown', function (b) {          a(b)        }),        g.on(window, 'scroll', function (b) {          a(b)        })    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui.UIBase,        c = (baidu.editor.ui.Breakline = function (a) {          this.initOptions(a), this.initSeparator()        })      ;(c.prototype = {        uiName: 'Breakline',        initSeparator: function () {          this.initUIBase()        },        getHtmlTpl: function () {          return '<br/>'        }      }),        a.inherits(c, b)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.dom.domUtils,        c = baidu.editor.ui.UIBase,        d = (baidu.editor.ui.Message = function (a) {          this.initOptions(a), this.initMessage()        })      ;(d.prototype = {        initMessage: function () {          this.initUIBase()        },        getHtmlTpl: function () {          return '<div id="##" class="edui-message %%"> <div id="##_closer" class="edui-message-closer">×</div> <div id="##_body" class="edui-message-body edui-message-type-info"> <iframe style="position:absolute;z-index:-1;left:0;top:0;background-color: transparent;" frameborder="0" width="100%" height="100%" src="about:blank"></iframe> <div class="edui-shadow"></div> <div id="##_content" class="edui-message-content">  </div> </div></div>'        },        reset: function (a) {          var b = this          a.keepshow ||            (clearTimeout(this.timer),            (b.timer = setTimeout(function () {              b.hide()            }, a.timeout || 4e3))),            void 0 !== a.content && b.setContent(a.content),            void 0 !== a.type && b.setType(a.type),            b.show()        },        postRender: function () {          var a = this,            c = this.getDom('closer')          c &&            b.on(c, 'click', function () {              a.hide()            })        },        setContent: function (a) {          this.getDom('content').innerHTML = a        },        setType: function (a) {          a = a || 'info'          var b = this.getDom('body')          b.className = b.className.replace(            /edui-message-type-[\w-]+/,            'edui-message-type-' + a          )        },        getContent: function () {          return this.getDom('content').innerHTML        },        getType: function () {          var a = this.getDom('body').match(/edui-message-type-([\w-]+)/)          return a ? a[1] : ''        },        show: function () {          this.getDom().style.display = 'block'        },        hide: function () {          var a = this.getDom()          a &&            ((a.style.display = 'none'),            a.parentNode && a.parentNode.removeChild(a))        }      }),        a.inherits(d, c)    })(),    (function () {      var a = baidu.editor.utils,        b = baidu.editor.ui,        c = b.Dialog      ;(b.buttons = {}),        (b.Dialog = function (a) {          var b = new c(a)          return (            b.addListener('hide', function () {              if (b.editor) {                var a = b.editor                try {                  if (browser.gecko) {                    var c = a.window.scrollY,                      d = a.window.scrollX                    a.body.focus(), a.window.scrollTo(d, c)                  } else a.focus()                } catch (e) {}              }            }),            b          )        })      for (        var d,          e = {            anchor: '~/dialogs/anchor/anchor.html',            insertimage: '~/dialogs/image/image.html',            link: '~/dialogs/link/link.html',            spechars: '~/dialogs/spechars/spechars.html',            searchreplace: '~/dialogs/searchreplace/searchreplace.html',            map: '~/dialogs/map/map.html',            gmap: '~/dialogs/gmap/gmap.html',            insertvideo: '~/dialogs/video/video.html',            help: '~/dialogs/help/help.html',            preview: '~/dialogs/preview/preview.html',            emotion: '~/dialogs/emotion/emotion.html',            wordimage: '~/dialogs/wordimage/wordimage.html',            attachment: '~/dialogs/attachment/attachment.html',            insertframe: '~/dialogs/insertframe/insertframe.html',            edittip: '~/dialogs/table/edittip.html',            edittable: '~/dialogs/table/edittable.html',            edittd: '~/dialogs/table/edittd.html',            webapp: '~/dialogs/webapp/webapp.html',            snapscreen: '~/dialogs/snapscreen/snapscreen.html',            scrawl: '~/dialogs/scrawl/scrawl.html',            music: '~/dialogs/music/music.html',            template: '~/dialogs/template/template.html',            background: '~/dialogs/background/background.html',            charts: '~/dialogs/charts/charts.html'          },          f = [            'undo',            'redo',            'formatmatch',            'bold',            'italic',            'underline',            'fontborder',            'touppercase',            'tolowercase',            'strikethrough',            'subscript',            'superscript',            'source',            'indent',            'outdent',            'blockquote',            'pasteplain',            'pagebreak',            'selectall',            'print',            'horizontal',            'removeformat',            'time',            'date',            'unlink',            'insertparagraphbeforetable',            'insertrow',            'insertcol',            'mergeright',            'mergedown',            'deleterow',            'deletecol',            'splittorows',            'splittocols',            'splittocells',            'mergecells',            'deletetable',            'drafts'          ],          g = 0;        (d = f[g++]);      )        (d = d.toLowerCase()),          (b[d] = (function (a) {            return function (c) {              var d = new b.Button({                className: 'edui-for-' + a,                title:                  c.options.labelMap[a] || c.getLang('labelMap.' + a) || '',                onclick: function () {                  c.execCommand(a)                },                theme: c.options.theme,                showText: !1              })              return (                (b.buttons[a] = d),                c.addListener('selectionchange', function (b, e, f) {                  var g = c.queryCommandState(a)                  g == -1                    ? (d.setDisabled(!0), d.setChecked(!1))                    : f || (d.setDisabled(!1), d.setChecked(g))                }),                d              )            }          })(d))      b.cleardoc = function (a) {        var c = new b.Button({          className: 'edui-for-cleardoc',          title:            a.options.labelMap.cleardoc || a.getLang('labelMap.cleardoc') || '',          theme: a.options.theme,          onclick: function () {            confirm(a.getLang('confirmClear')) && a.execCommand('cleardoc')          }        })        return (          (b.buttons.cleardoc = c),          a.addListener('selectionchange', function () {            c.setDisabled(a.queryCommandState('cleardoc') == -1)          }),          c        )      }      var h = {        justify: ['left', 'right', 'center', 'justify'],        imagefloat: ['none', 'left', 'center', 'right'],        directionality: ['ltr', 'rtl']      }      for (var i in h)        !(function (a, c) {          for (var d, e = 0; (d = c[e++]); )            !(function (c) {              b[a.replace('float', '') + c] = function (d) {                var e = new b.Button({                  className: 'edui-for-' + a.replace('float', '') + c,                  title:                    d.options.labelMap[a.replace('float', '') + c] ||                    d.getLang('labelMap.' + a.replace('float', '') + c) ||                    '',                  theme: d.options.theme,                  onclick: function () {                    d.execCommand(a, c)                  }                })                return (                  (b.buttons[a] = e),                  d.addListener('selectionchange', function (b, f, g) {                    e.setDisabled(d.queryCommandState(a) == -1),                      e.setChecked(d.queryCommandValue(a) == c && !g)                  }),                  e                )              }            })(d)        })(i, h[i])      for (var d, g = 0; (d = ['backcolor', 'forecolor'][g++]); )        b[d] = (function (a) {          return function (c) {            var d = new b.ColorButton({              className: 'edui-for-' + a,              color: 'default',              title: c.options.labelMap[a] || c.getLang('labelMap.' + a) || '',              editor: c,              onpickcolor: function (b, d) {                c.execCommand(a, d)              },              onpicknocolor: function () {                c.execCommand(a, 'default'),                  this.setColor('transparent'),                  (this.color = 'default')              },              onbuttonclick: function () {                c.execCommand(a, this.color)              }            })            return (              (b.buttons[a] = d),              c.addListener('selectionchange', function () {                d.setDisabled(c.queryCommandState(a) == -1)              }),              d            )          }        })(d)      var j = {        noOk: ['searchreplace', 'help', 'spechars', 'webapp', 'preview'],        ok: [          'attachment',          'anchor',          'link',          'insertimage',          'map',          'gmap',          'insertframe',          'wordimage',          'insertvideo',          'insertframe',          'edittip',          'edittable',          'edittd',          'scrawl',          'template',          'music',          'background',          'charts'        ]      }      for (var i in j)        !(function (c, d) {          for (var f, g = 0; (f = d[g++]); )            (browser.opera && 'searchreplace' === f) ||              !(function (d) {                b[d] = function (f, g, h) {                  ;(g = g || (f.options.iframeUrlMap || {})[d] || e[d]),                    (h =                      f.options.labelMap[d] || f.getLang('labelMap.' + d) || '')                  var i                  g &&                    ((i = new b.Dialog(                      a.extend(                        {                          iframeUrl: f.ui.mapUrl(g),                          editor: f,                          className: 'edui-for-' + d,                          title: h,                          holdScroll: 'insertimage' === d,                          fullscreen: /charts|preview/.test(d),                          closeDialog: f.getLang('closeDialog')                        },                        'ok' == c                          ? {                              buttons: [                                {                                  className: 'edui-okbutton',                                  label: f.getLang('ok'),                                  editor: f,                                  onclick: function () {                                    i.close(!0)                                  }                                },                                {                                  className: 'edui-cancelbutton',                                  label: f.getLang('cancel'),                                  editor: f,                                  onclick: function () {                                    i.close(!1)                                  }                                }                              ]                            }                          : {}                      )                    )),                    (f.ui._dialogs[d + 'Dialog'] = i))                  var j = new b.Button({                    className: 'edui-for-' + d,                    title: h,                    onclick: function () {                      if (i)                        switch (d) {                          case 'wordimage':                            var a = f.execCommand('wordimage')                            a && a.length && (i.render(), i.open())                            break                          case 'scrawl':                            f.queryCommandState('scrawl') != -1 &&                              (i.render(), i.open())                            break                          default:                            i.render(), i.open()                        }                    },                    theme: f.options.theme,                    disabled:                      ('scrawl' == d && f.queryCommandState('scrawl') == -1) ||                      'charts' == d                  })                  return (                    (b.buttons[d] = j),                    f.addListener('selectionchange', function () {                      var a = { edittable: 1 }                      if (!(d in a)) {                        var b = f.queryCommandState(d)                        j.getDom() && (j.setDisabled(b == -1), j.setChecked(b))                      }                    }),                    j                  )                }              })(f.toLowerCase())        })(i, j[i])      ;(b.snapscreen = function (a, c, d) {        d =          a.options.labelMap.snapscreen ||          a.getLang('labelMap.snapscreen') ||          ''        var f = new b.Button({          className: 'edui-for-snapscreen',          title: d,          onclick: function () {            a.execCommand('snapscreen')          },          theme: a.options.theme        })        if (          ((b.buttons.snapscreen = f),          (c = c || (a.options.iframeUrlMap || {}).snapscreen || e.snapscreen))        ) {          var g = new b.Dialog({            iframeUrl: a.ui.mapUrl(c),            editor: a,            className: 'edui-for-snapscreen',            title: d,            buttons: [              {                className: 'edui-okbutton',                label: a.getLang('ok'),                editor: a,                onclick: function () {                  g.close(!0)                }              },              {                className: 'edui-cancelbutton',                label: a.getLang('cancel'),                editor: a,                onclick: function () {                  g.close(!1)                }              }            ]          })          g.render(), (a.ui._dialogs.snapscreenDialog = g)        }        return (          a.addListener('selectionchange', function () {            f.setDisabled(a.queryCommandState('snapscreen') == -1)          }),          f        )      }),        (b.insertcode = function (c, d, e) {          ;(d = c.options.insertcode || []),            (e =              c.options.labelMap.insertcode ||              c.getLang('labelMap.insertcode') ||              '')          var f = []          a.each(d, function (a, b) {            f.push({              label: a,              value: b,              theme: c.options.theme,              renderLabelHtml: function () {                return (                  '<div class="edui-label %%-label" >' +                  (this.label || '') +                  '</div>'                )              }            })          })          var g = new b.Combox({            editor: c,            items: f,            onselect: function (a, b) {              c.execCommand('insertcode', this.items[b].value)            },            onbuttonclick: function () {              this.showPopup()            },            title: e,            initValue: e,            className: 'edui-for-insertcode',            indexByValue: function (a) {              if (a)                for (var b, c = 0; (b = this.items[c]); c++)                  if (b.value.indexOf(a) != -1) return c              return -1            }          })          return (            (b.buttons.insertcode = g),            c.addListener('selectionchange', function (a, b, d) {              if (!d) {                var f = c.queryCommandState('insertcode')                if (f == -1) g.setDisabled(!0)                else {                  g.setDisabled(!1)                  var h = c.queryCommandValue('insertcode')                  if (!h) return void g.setValue(e)                  h && (h = h.replace(/['"]/g, '').split(',')[0]), g.setValue(h)                }              }            }),            g          )        }),        (b.fontfamily = function (c, d, e) {          if (            ((d = c.options.fontfamily || []),            (e =              c.options.labelMap.fontfamily ||              c.getLang('labelMap.fontfamily') ||              ''),            d.length)          ) {            for (var f, g = 0, h = []; (f = d[g]); g++) {              var i = c.getLang('fontfamily')[f.name] || ''              !(function (b, d) {                h.push({                  label: b,                  value: d,                  theme: c.options.theme,                  renderLabelHtml: function () {                    return (                      '<div class="edui-label %%-label" style="font-family:' +                      a.unhtml(this.value) +                      '">' +                      (this.label || '') +                      '</div>'                    )                  }                })              })(f.label || i, f.val)            }            var j = new b.Combox({              editor: c,              items: h,              onselect: function (a, b) {                c.execCommand('FontFamily', this.items[b].value)              },              onbuttonclick: function () {                this.showPopup()              },              title: e,              initValue: e,              className: 'edui-for-fontfamily',              indexByValue: function (a) {                if (a)                  for (var b, c = 0; (b = this.items[c]); c++)                    if (b.value.indexOf(a) != -1) return c                return -1              }            })            return (              (b.buttons.fontfamily = j),              c.addListener('selectionchange', function (a, b, d) {                if (!d) {                  var e = c.queryCommandState('FontFamily')                  if (e == -1) j.setDisabled(!0)                  else {                    j.setDisabled(!1)                    var f = c.queryCommandValue('FontFamily')                    f && (f = f.replace(/['"]/g, '').split(',')[0]),                      j.setValue(f)                  }                }              }),              j            )          }        }),        (b.fontsize = function (a, c, d) {          if (            ((d =              a.options.labelMap.fontsize ||              a.getLang('labelMap.fontsize') ||              ''),            (c = c || a.options.fontsize || []),            c.length)          ) {            for (var e = [], f = 0; f < c.length; f++) {              var g = c[f] + 'px'              e.push({                label: g,                value: g,                theme: a.options.theme,                renderLabelHtml: function () {                  return (                    '<div class="edui-label %%-label" style="line-height:1;font-size:' +                    this.value +                    '">' +                    (this.label || '') +                    '</div>'                  )                }              })            }            var h = new b.Combox({              editor: a,              items: e,              title: d,              initValue: d,              onselect: function (b, c) {                a.execCommand('FontSize', this.items[c].value)              },              onbuttonclick: function () {                this.showPopup()              },              className: 'edui-for-fontsize'            })            return (              (b.buttons.fontsize = h),              a.addListener('selectionchange', function (b, c, d) {                if (!d) {                  var e = a.queryCommandState('FontSize')                  e == -1                    ? h.setDisabled(!0)                    : (h.setDisabled(!1),                      h.setValue(a.queryCommandValue('FontSize')))                }              }),              h            )          }        }),        (b.paragraph = function (c, d, e) {          if (            ((e =              c.options.labelMap.paragraph ||              c.getLang('labelMap.paragraph') ||              ''),            (d = c.options.paragraph || []),            !a.isEmptyObject(d))          ) {            var f = []            for (var g in d)              f.push({                value: g,                label: d[g] || c.getLang('paragraph')[g],                theme: c.options.theme,                renderLabelHtml: function () {                  return (                    '<div class="edui-label %%-label"><span class="edui-for-' +                    this.value +                    '">' +                    (this.label || '') +                    '</span></div>'                  )                }              })            var h = new b.Combox({              editor: c,              items: f,              title: e,              initValue: e,              className: 'edui-for-paragraph',              onselect: function (a, b) {                c.execCommand('Paragraph', this.items[b].value)              },              onbuttonclick: function () {                this.showPopup()              }            })            return (              (b.buttons.paragraph = h),              c.addListener('selectionchange', function (a, b, d) {                if (!d) {                  var e = c.queryCommandState('Paragraph')                  if (e == -1) h.setDisabled(!0)                  else {                    h.setDisabled(!1)                    var f = c.queryCommandValue('Paragraph'),                      g = h.indexByValue(f)                    g != -1 ? h.setValue(f) : h.setValue(h.initValue)                  }                }              }),              h            )          }        }),        (b.customstyle = function (a) {          var c = a.options.customstyle || [],            d =              a.options.labelMap.customstyle ||              a.getLang('labelMap.customstyle') ||              ''          if (c.length) {            for (              var e, f = a.getLang('customstyle'), g = 0, h = [];              (e = c[g++]);            )              !(function (b) {                var c = {}                ;(c.label = b.label ? b.label : f[b.name]),                  (c.style = b.style),                  (c.className = b.className),                  (c.tag = b.tag),                  h.push({                    label: c.label,                    value: c,                    theme: a.options.theme,                    renderLabelHtml: function () {                      return (                        '<div class="edui-label %%-label"><' +                        c.tag +                        ' ' +                        (c.className ? ' class="' + c.className + '"' : '') +                        (c.style ? ' style="' + c.style + '"' : '') +                        '>' +                        c.label +                        '</' +                        c.tag +                        '></div>'                      )                    }                  })              })(e)            var i = new b.Combox({              editor: a,              items: h,              title: d,              initValue: d,              className: 'edui-for-customstyle',              onselect: function (b, c) {                a.execCommand('customstyle', this.items[c].value)              },              onbuttonclick: function () {                this.showPopup()              },              indexByValue: function (a) {                for (var b, c = 0; (b = this.items[c++]); )                  if (b.label == a) return c - 1                return -1              }            })            return (              (b.buttons.customstyle = i),              a.addListener('selectionchange', function (b, c, d) {                if (!d) {                  var e = a.queryCommandState('customstyle')                  if (e == -1) i.setDisabled(!0)                  else {                    i.setDisabled(!1)                    var f = a.queryCommandValue('customstyle'),                      g = i.indexByValue(f)                    g != -1 ? i.setValue(f) : i.setValue(i.initValue)                  }                }              }),              i            )          }        }),        (b.inserttable = function (a, c, d) {          d =            a.options.labelMap.inserttable ||            a.getLang('labelMap.inserttable') ||            ''          var e = new b.TableButton({            editor: a,            title: d,            className: 'edui-for-inserttable',            onpicktable: function (b, c, d) {              a.execCommand('InsertTable', {                numRows: d,                numCols: c,                border: 1              })            },            onbuttonclick: function () {              this.showPopup()            }          })          return (            (b.buttons.inserttable = e),            a.addListener('selectionchange', function () {              e.setDisabled(a.queryCommandState('inserttable') == -1)            }),            e          )        }),        (b.lineheight = function (a) {          var c = a.options.lineheight || []          if (c.length) {            for (var d, e = 0, f = []; (d = c[e++]); )              f.push({                label: d,                value: d,                theme: a.options.theme,                onclick: function () {                  a.execCommand('lineheight', this.value)                }              })            var g = new b.MenuButton({              editor: a,              className: 'edui-for-lineheight',              title:                a.options.labelMap.lineheight ||                a.getLang('labelMap.lineheight') ||                '',              items: f,              onbuttonclick: function () {                var b = a.queryCommandValue('LineHeight') || this.value                a.execCommand('LineHeight', b)              }            })            return (              (b.buttons.lineheight = g),              a.addListener('selectionchange', function () {                var b = a.queryCommandState('LineHeight')                if (b == -1) g.setDisabled(!0)                else {                  g.setDisabled(!1)                  var c = a.queryCommandValue('LineHeight')                  c && g.setValue((c + '').replace(/cm/, '')), g.setChecked(b)                }              }),              g            )          }        })      for (var k, l = ['top', 'bottom'], m = 0; (k = l[m++]); )        !(function (a) {          b['rowspacing' + a] = function (c) {            var d = c.options['rowspacing' + a] || []            if (!d.length) return null            for (var e, f = 0, g = []; (e = d[f++]); )              g.push({                label: e,                value: e,                theme: c.options.theme,                onclick: function () {                  c.execCommand('rowspacing', this.value, a)                }              })            var h = new b.MenuButton({              editor: c,              className: 'edui-for-rowspacing' + a,              title:                c.options.labelMap['rowspacing' + a] ||                c.getLang('labelMap.rowspacing' + a) ||                '',              items: g,              onbuttonclick: function () {                var b = c.queryCommandValue('rowspacing', a) || this.value                c.execCommand('rowspacing', b, a)              }            })            return (              (b.buttons[a] = h),              c.addListener('selectionchange', function () {                var b = c.queryCommandState('rowspacing', a)                if (b == -1) h.setDisabled(!0)                else {                  h.setDisabled(!1)                  var d = c.queryCommandValue('rowspacing', a)                  d && h.setValue((d + '').replace(/%/, '')), h.setChecked(b)                }              }),              h            )          }        })(k)      for (        var n, o = ['insertorderedlist', 'insertunorderedlist'], p = 0;        (n = o[p++]);      )        !(function (a) {          b[a] = function (c) {            var d = c.options[a],              e = function () {                c.execCommand(a, this.value)              },              f = []            for (var g in d)              f.push({                label: d[g] || c.getLang()[a][g] || '',                value: g,                theme: c.options.theme,                onclick: e              })            var h = new b.MenuButton({              editor: c,              className: 'edui-for-' + a,              title: c.getLang('labelMap.' + a) || '',              items: f,              onbuttonclick: function () {                var b = c.queryCommandValue(a) || this.value                c.execCommand(a, b)              }            })            return (              (b.buttons[a] = h),              c.addListener('selectionchange', function () {                var b = c.queryCommandState(a)                if (b == -1) h.setDisabled(!0)                else {                  h.setDisabled(!1)                  var d = c.queryCommandValue(a)                  h.setValue(d), h.setChecked(b)                }              }),              h            )          }        })(n)      ;(b.fullscreen = function (a, c) {        c =          a.options.labelMap.fullscreen ||          a.getLang('labelMap.fullscreen') ||          ''        var d = new b.Button({          className: 'edui-for-fullscreen',          title: c,          theme: a.options.theme,          onclick: function () {            a.ui && a.ui.setFullScreen(!a.ui.isFullScreen()),              this.setChecked(a.ui.isFullScreen())          }        })        return (          (b.buttons.fullscreen = d),          a.addListener('selectionchange', function () {            var b = a.queryCommandState('fullscreen')            d.setDisabled(b == -1), d.setChecked(a.ui.isFullScreen())          }),          d        )      }),        (b.emotion = function (a, c) {          var d = 'emotion',            f = new b.MultiMenuPop({              title: a.options.labelMap[d] || a.getLang('labelMap.' + d) || '',              editor: a,              className: 'edui-for-' + d,              iframeUrl: a.ui.mapUrl(                c || (a.options.iframeUrlMap || {})[d] || e[d]              )            })          return (            (b.buttons[d] = f),            a.addListener('selectionchange', function () {              f.setDisabled(a.queryCommandState(d) == -1)            }),            f          )        }),        (b.autotypeset = function (a) {          var c = new b.AutoTypeSetButton({            editor: a,            title:              a.options.labelMap.autotypeset ||              a.getLang('labelMap.autotypeset') ||              '',            className: 'edui-for-autotypeset',            onbuttonclick: function () {              a.execCommand('autotypeset')            }          })          return (            (b.buttons.autotypeset = c),            a.addListener('selectionchange', function () {              c.setDisabled(a.queryCommandState('autotypeset') == -1)            }),            c          )        }),        (b.simpleupload = function (a) {          var c = 'simpleupload',            d = new b.Button({              className: 'edui-for-' + c,              title: a.options.labelMap[c] || a.getLang('labelMap.' + c) || '',              onclick: function () {},              theme: a.options.theme,              showText: !1            })          return (            (b.buttons[c] = d),            a.addListener('ready', function () {              var b = d.getDom('body'),                c = b.children[0]              a.fireEvent('simpleuploadbtnready', c)            }),            a.addListener('selectionchange', function (b, e, f) {              var g = a.queryCommandState(c)              g == -1                ? (d.setDisabled(!0), d.setChecked(!1))                : f || (d.setDisabled(!1), d.setChecked(g))            }),            d          )        })    })(),    (function () {      function a(a) {        this.initOptions(a), this.initEditorUI()      }      var b = baidu.editor.utils,        c = baidu.editor.ui.uiUtils,        d = baidu.editor.ui.UIBase,        e = baidu.editor.dom.domUtils,        f = []      ;(a.prototype = {        uiName: 'editor',        initEditorUI: function () {          function a(a, b) {            a.setOpt({              wordCount: !0,              maximumWords: 1e4,              wordCountMsg: a.options.wordCountMsg || a.getLang('wordCountMsg'),              wordOverFlowMsg:                a.options.wordOverFlowMsg || a.getLang('wordOverFlowMsg')            })            var c = a.options,              d = c.maximumWords,              e = c.wordCountMsg,              f = c.wordOverFlowMsg,              g = b.getDom('wordcount')            if (c.wordCount) {              var h = a.getContentLength(!0)              h > d                ? ((g.innerHTML = f), a.fireEvent('wordcountoverflow'))                : (g.innerHTML = e                    .replace('{#leave}', d - h)                    .replace('{#count}', h))            }          }          ;(this.editor.ui = this),            (this._dialogs = {}),            this.initUIBase(),            this._initToolbars()          var b = this.editor,            c = this          b.addListener('ready', function () {            function d() {              a(b, c), e.un(b.document, 'click', arguments.callee)            }            ;(b.getDialog = function (a) {              return b.ui._dialogs[a + 'Dialog']            }),              e.on(b.window, 'scroll', function (a) {                baidu.editor.ui.Popup.postHide(a)              }),              (b.ui._actualFrameWidth = b.options.initialFrameWidth),              UE.browser.ie &&                6 === UE.browser.version &&                b.container.ownerDocument.execCommand(                  'BackgroundImageCache',                  !1,                  !0                ),              b.options.elementPathEnabled &&                (b.ui.getDom('elementpath').innerHTML =                  '<div class="edui-editor-breadcrumb">' +                  b.getLang('elementPathTip') +                  ':</div>'),              b.options.wordCount &&                (e.on(b.document, 'click', d),                (b.ui.getDom('wordcount').innerHTML =                  b.getLang('wordCountTip'))),              b.ui._scale(),              b.options.scaleEnabled                ? (b.autoHeightEnabled && b.disableAutoHeight(),                  c.enableScale())                : c.disableScale(),              b.options.elementPathEnabled ||                b.options.wordCount ||                b.options.scaleEnabled ||                ((b.ui.getDom('elementpath').style.display = 'none'),                (b.ui.getDom('wordcount').style.display = 'none'),                (b.ui.getDom('scale').style.display = 'none')),              b.selection.isFocus() && b.fireEvent('selectionchange', !1, !0)          }),            b.addListener('mousedown', function (a, b) {              var c = b.target || b.srcElement              baidu.editor.ui.Popup.postHide(b, c),                baidu.editor.ui.ShortCutMenu.postHide(b)            }),            b.addListener('delcells', function () {              UE.ui.edittip && new UE.ui.edittip(b),                b.getDialog('edittip').open()            })          var d,            f,            g = !1          b.addListener('afterpaste', function () {            b.queryCommandState('pasteplain') ||              (baidu.editor.ui.PastePicker &&                ((d = new baidu.editor.ui.Popup({                  content: new baidu.editor.ui.PastePicker({ editor: b }),                  editor: b,                  className: 'edui-wordpastepop'                })),                d.render()),              (g = !0))          }),            b.addListener('afterinserthtml', function () {              clearTimeout(f),                (f = setTimeout(function () {                  if (d && (g || b.ui._isTransfer)) {                    if (d.isHidden()) {                      var a = e.createElement(b.document, 'span', {                          style: 'line-height:0px;',                          innerHTML: '\ufeff'                        }),                        c = b.selection.getRange()                      c.insertNode(a)                      var f = getDomNode(a, 'firstChild', 'previousSibling')                      f && d.showAnchor(3 == f.nodeType ? f.parentNode : f),                        e.remove(a)                    } else d.show()                    delete b.ui._isTransfer, (g = !1)                  }                }, 200))            }),            b.addListener('contextmenu', function (a, b) {              baidu.editor.ui.Popup.postHide(b)            }),            b.addListener('keydown', function (a, b) {              d && d.dispose(b)              var c = b.keyCode || b.which              b.altKey && 90 == c && UE.ui.buttons.fullscreen.onclick()            }),            b.addListener('wordcount', function (b) {              a(this, c)            }),            b.addListener('selectionchange', function () {              b.options.elementPathEnabled &&                c[                  (b.queryCommandState('elementpath') == -1 ? 'dis' : 'en') +                    'ableElementPath'                ](),                b.options.scaleEnabled &&                  c[                    (b.queryCommandState('scale') == -1 ? 'dis' : 'en') +                      'ableScale'                  ]()            })          var h = new baidu.editor.ui.Popup({            editor: b,            content: '',            className: 'edui-bubble',            _onEditButtonClick: function () {              this.hide(), b.ui._dialogs.linkDialog.open()            },            _onImgEditButtonClick: function (a) {              this.hide(), b.ui._dialogs[a] && b.ui._dialogs[a].open()            },            _onImgSetFloat: function (a) {              this.hide(), b.execCommand('imagefloat', a)            },            _setIframeAlign: function (a) {              var b = h.anchorEl,                c = b.cloneNode(!0)              switch (a) {                case -2:                  c.setAttribute('align', '')                  break                case -1:                  c.setAttribute('align', 'left')                  break                case 1:                  c.setAttribute('align', 'right')              }              b.parentNode.insertBefore(c, b),                e.remove(b),                (h.anchorEl = c),                h.showAnchor(h.anchorEl)            },            _updateIframe: function () {              var a = (b._iframe = h.anchorEl)              e.hasClass(a, 'ueditor_baidumap')                ? (b.selection.getRange().selectNode(a).select(),                  b.ui._dialogs.mapDialog.open(),                  h.hide())                : (b.ui._dialogs.insertframeDialog.open(), h.hide())            },            _onRemoveButtonClick: function (a) {              b.execCommand(a), this.hide()            },            queryAutoHide: function (a) {              return a &&                a.ownerDocument == b.document &&                ('img' == a.tagName.toLowerCase() ||                  e.findParentByTagName(a, 'a', !0))                ? a !== h.anchorEl                : baidu.editor.ui.Popup.prototype.queryAutoHide.call(this, a)            }          })          h.render(),            b.options.imagePopup &&              (b.addListener('mouseover', function (a, c) {                c = c || window.event                var d = c.target || c.srcElement                if (                  b.ui._dialogs.insertframeDialog &&                  /iframe/gi.test(d.tagName)                ) {                  var e = h.formatHtml(                    '<nobr>' +                      b.getLang('property') +                      ': <span onclick=$$._setIframeAlign(-2) class="edui-clickable">' +                      b.getLang('default') +                      '</span>  <span onclick=$$._setIframeAlign(-1) class="edui-clickable">' +                      b.getLang('justifyleft') +                      '</span>  <span onclick=$$._setIframeAlign(1) class="edui-clickable">' +                      b.getLang('justifyright') +                      '</span>   <span onclick="$$._updateIframe( this);" class="edui-clickable">' +                      b.getLang('modify') +                      '</span></nobr>'                  )                  e                    ? ((h.getDom('content').innerHTML = e),                      (h.anchorEl = d),                      h.showAnchor(h.anchorEl))                    : h.hide()                }              }),              b.addListener('selectionchange', function (a, c) {                if (c) {                  var d = '',                    f = '',                    g = b.selection.getRange().getClosedNode(),                    i = b.ui._dialogs                  if (g && 'IMG' == g.tagName) {                    var j = 'insertimageDialog'                    if (                      ((g.className.indexOf('edui-faked-video') == -1 &&                        g.className.indexOf('edui-upload-video') == -1) ||                        (j = 'insertvideoDialog'),                      g.className.indexOf('edui-faked-webapp') != -1 &&                        (j = 'webappDialog'),                      g.src.indexOf('http://api.map.baidu.com') != -1 &&                        (j = 'mapDialog'),                      g.className.indexOf('edui-faked-music') != -1 &&                        (j = 'musicDialog'),                      g.src.indexOf(                        'http://maps.google.com/maps/api/staticmap'                      ) != -1 && (j = 'gmapDialog'),                      g.getAttribute('anchorname') &&                        ((j = 'anchorDialog'),                        (d = h.formatHtml(                          '<nobr>' +                            b.getLang('property') +                            ': <span onclick=$$._onImgEditButtonClick("anchorDialog") class="edui-clickable">' +                            b.getLang('modify') +                            '</span>  <span onclick=$$._onRemoveButtonClick(\'anchor\') class="edui-clickable">' +                            b.getLang('delete') +                            '</span></nobr>'                        ))),                      g.getAttribute('word_img') &&                        ((b.word_img = [g.getAttribute('word_img')]),                        (j = 'wordimageDialog')),                      (e.hasClass(g, 'loadingclass') ||                        e.hasClass(g, 'loaderrorclass')) &&                        (j = ''),                      !i[j])                    )                      return                    ;(f =                      '<nobr>' +                      b.getLang('property') +                      ': <span onclick=$$._onImgSetFloat("none") class="edui-clickable">' +                      b.getLang('default') +                      '</span>  <span onclick=$$._onImgSetFloat("left") class="edui-clickable">' +                      b.getLang('justifyleft') +                      '</span>  <span onclick=$$._onImgSetFloat("right") class="edui-clickable">' +                      b.getLang('justifyright') +                      '</span>  <span onclick=$$._onImgSetFloat("center") class="edui-clickable">' +                      b.getLang('justifycenter') +                      '</span>  <span onclick="$$._onImgEditButtonClick(\'' +                      j +                      '\');" class="edui-clickable">' +                      b.getLang('modify') +                      '</span></nobr>'),                      !d && (d = h.formatHtml(f))                  }                  if (b.ui._dialogs.linkDialog) {                    var k,                      l = b.queryCommandValue('link')                    if (                      l &&                      (k = l.getAttribute('_href') || l.getAttribute('href', 2))                    ) {                      var m = k                      k.length > 30 && (m = k.substring(0, 20) + '...'),                        d && (d += '<div style="height:5px;"></div>'),                        (d += h.formatHtml(                          '<nobr>' +                            b.getLang('anthorMsg') +                            ': <a target="_blank" href="' +                            k +                            '" title="' +                            k +                            '" >' +                            m +                            '</a> <span class="edui-clickable" onclick="$$._onEditButtonClick();">' +                            b.getLang('modify') +                            '</span> <span class="edui-clickable" onclick="$$._onRemoveButtonClick(\'unlink\');"> ' +                            b.getLang('clear') +                            '</span></nobr>'                        )),                        h.showAnchor(l)                    }                  }                  d                    ? ((h.getDom('content').innerHTML = d),                      (h.anchorEl = g || l),                      h.showAnchor(h.anchorEl))                    : h.hide()                }              }))        },        _initToolbars: function () {          for (            var a = this.editor, b = this.toolbars || [], c = [], d = 0;            d < b.length;            d++          ) {            for (              var e = b[d],                f = new baidu.editor.ui.Toolbar({ theme: a.options.theme }),                g = 0;              g < e.length;              g++            ) {              var h = e[g],                i = null              if ('string' == typeof h) {                if (                  ((h = h.toLowerCase()),                  '|' == h && (h = 'Separator'),                  '||' == h && (h = 'Breakline'),                  baidu.editor.ui[h] && (i = new baidu.editor.ui[h](a)),                  'fullscreen' == h)                ) {                  c && c[0]                    ? c[0].items.splice(0, 0, i)                    : i && f.items.splice(0, 0, i)                  continue                }              } else i = h              i && i.id && f.add(i)            }            c[d] = f          }          for (var j in UE._customizeUI) {            var k,              l,              m = UE._customizeUI[j]            ;(m.id && m.id != a.key) ||              ((k = m.execFn.call(a, a, j)),              k &&                ((l = m.index),                void 0 === l && (l = f.items.length),                f.add(k, l)))          }          this.toolbars = c        },        getHtmlTpl: function () {          return (            '<div id="##" class="%%"><div id="##_toolbarbox" class="%%-toolbarbox">' +            (this.toolbars.length              ? '<div id="##_toolbarboxouter" class="%%-toolbarboxouter"><div class="%%-toolbarboxinner">' +                this.renderToolbarBoxHtml() +                '</div></div>'              : '') +            '<div id="##_toolbarmsg" class="%%-toolbarmsg" style="display:none;"><div id = "##_upload_dialog" class="%%-toolbarmsg-upload" onclick="$$.showWordImageDialog();">' +            this.editor.getLang('clickToUpload') +            '</div><div class="%%-toolbarmsg-close" onclick="$$.hideToolbarMsg();">x</div><div id="##_toolbarmsg_label" class="%%-toolbarmsg-label"></div><div style="height:0;overflow:hidden;clear:both;"></div></div><div id="##_message_holder" class="%%-messageholder"></div></div><div id="##_iframeholder" class="%%-iframeholder"></div><div id="##_bottombar" class="%%-bottomContainer"><table><tr><td id="##_elementpath" class="%%-bottombar"></td><td id="##_wordcount" class="%%-wordcount"></td><td id="##_scale" class="%%-scale"><div class="%%-icon"></div></td></tr></table></div><div id="##_scalelayer"></div></div>'          )        },        showWordImageDialog: function () {          this._dialogs.wordimageDialog.open()        },        renderToolbarBoxHtml: function () {          for (var a = [], b = 0; b < this.toolbars.length; b++)            a.push(this.toolbars[b].renderHtml())          return a.join('')        },        setFullScreen: function (a) {          var b = this.editor,            c = b.container.parentNode.parentNode          if (this._fullscreen != a) {            if (              ((this._fullscreen = a),              this.editor.fireEvent('beforefullscreenchange', a),              baidu.editor.browser.gecko)            )              var d = b.selection.getRange().createBookmark()            if (a) {              for (; 'BODY' != c.tagName; ) {                var e = baidu.editor.dom.domUtils.getComputedStyle(                  c,                  'position'                )                f.push(e), (c.style.position = 'static'), (c = c.parentNode)              }              ;(this._bakHtmlOverflow =                document.documentElement.style.overflow),                (this._bakBodyOverflow = document.body.style.overflow),                (this._bakAutoHeight = this.editor.autoHeightEnabled),                (this._bakScrollTop = Math.max(                  document.documentElement.scrollTop,                  document.body.scrollTop                )),                (this._bakEditorContaninerWidth =                  b.iframe.parentNode.offsetWidth),                this._bakAutoHeight &&                  ((b.autoHeightEnabled = !1), this.editor.disableAutoHeight()),                (document.documentElement.style.overflow = 'hidden'),                window.scrollTo(0, window.scrollY),                (this._bakCssText = this.getDom().style.cssText),                (this._bakCssText1 = this.getDom('iframeholder').style.cssText),                (b.iframe.parentNode.style.width = ''),                this._updateFullScreen()            } else {              for (; 'BODY' != c.tagName; )                (c.style.position = f.shift()), (c = c.parentNode)              ;(this.getDom().style.cssText = this._bakCssText),                (this.getDom('iframeholder').style.cssText = this._bakCssText1),                this._bakAutoHeight &&                  ((b.autoHeightEnabled = !0), this.editor.enableAutoHeight()),                (document.documentElement.style.overflow =                  this._bakHtmlOverflow),                (document.body.style.overflow = this._bakBodyOverflow),                (b.iframe.parentNode.style.width =                  this._bakEditorContaninerWidth + 'px'),                window.scrollTo(0, this._bakScrollTop)            }            if (browser.gecko && 'true' === b.body.contentEditable) {              var g = document.createElement('input')              document.body.appendChild(g),                (b.body.contentEditable = !1),                setTimeout(function () {                  g.focus(),                    setTimeout(function () {                      ;(b.body.contentEditable = !0),                        b.fireEvent('fullscreenchanged', a),                        b.selection.getRange().moveToBookmark(d).select(!0),                        baidu.editor.dom.domUtils.remove(g),                        a && window.scroll(0, 0)                    }, 0)                }, 0)            }            'true' === b.body.contentEditable &&              (this.editor.fireEvent('fullscreenchanged', a),              this.triggerLayout())          }        },        _updateFullScreen: function () {          if (this._fullscreen) {            var a = c.getViewportRect()            if (              ((this.getDom().style.cssText =                'border:0;position:absolute;left:0;top:' +                (this.editor.options.topOffset || 0) +                'px;width:' +                a.width +                'px;height:' +                a.height +                'px;z-index:' +                (1 * this.getDom().style.zIndex + 100)),              c.setViewportOffset(this.getDom(), {                left: 0,                top: this.editor.options.topOffset || 0              }),              this.editor.setHeight(                a.height -                  this.getDom('toolbarbox').offsetHeight -                  this.getDom('bottombar').offsetHeight -                  (this.editor.options.topOffset || 0),                !0              ),              browser.gecko)            )              try {                window.onresize()              } catch (b) {}          }        },        _updateElementPath: function () {          var a,            b = this.getDom('elementpath')          if (            this.elementPathEnabled &&            (a = this.editor.queryCommandValue('elementpath'))          ) {            for (var c, d = [], e = 0; (c = a[e]); e++)              d[e] = this.formatHtml(                '<span unselectable="on" onclick="$$.editor.execCommand("elementpath", "' +                  e +                  '");">' +                  c +                  '</span>'              )            b.innerHTML =              '<div class="edui-editor-breadcrumb" onmousedown="return false;">' +              this.editor.getLang('elementPathTip') +              ': ' +              d.join(' > ') +              '</div>'          } else b.style.display = 'none'        },        disableElementPath: function () {          var a = this.getDom('elementpath')          ;(a.innerHTML = ''),            (a.style.display = 'none'),            (this.elementPathEnabled = !1)        },        enableElementPath: function () {          var a = this.getDom('elementpath')          ;(a.style.display = ''),            (this.elementPathEnabled = !0),            this._updateElementPath()        },        _scale: function () {          function a() {            ;(o = e.getXY(h)),              p ||                (p =                  g.options.minFrameHeight + j.offsetHeight + k.offsetHeight),              (m.style.cssText =                'position:absolute;left:0;display:;top:0;background-color:#41ABFF;opacity:0.4;filter: Alpha(opacity=40);width:' +                h.offsetWidth +                'px;height:' +                h.offsetHeight +                'px;z-index:' +                (g.options.zIndex + 1)),              e.on(f, 'mousemove', b),              e.on(i, 'mouseup', c),              e.on(f, 'mouseup', c)          }          function b(a) {            d()            var b = a || window.event            ;(r = b.pageX || f.documentElement.scrollLeft + b.clientX),              (s = b.pageY || f.documentElement.scrollTop + b.clientY),              (t = r - o.x),              (u = s - o.y),              t >= q && ((n = !0), (m.style.width = t + 'px')),              u >= p && ((n = !0), (m.style.height = u + 'px'))          }          function c() {            n &&              ((n = !1),              (g.ui._actualFrameWidth = m.offsetWidth - 2),              (h.style.width = g.ui._actualFrameWidth + 'px'),              g.setHeight(                m.offsetHeight - k.offsetHeight - j.offsetHeight - 2,                !0              )),              m && (m.style.display = 'none'),              d(),              e.un(f, 'mousemove', b),              e.un(i, 'mouseup', c),              e.un(f, 'mouseup', c)          }          function d() {            browser.ie              ? f.selection.clear()              : window.getSelection().removeAllRanges()          }          var f = document,            g = this.editor,            h = g.container,            i = g.document,            j = this.getDom('toolbarbox'),            k = this.getDom('bottombar'),            l = this.getDom('scale'),            m = this.getDom('scalelayer'),            n = !1,            o = null,            p = 0,            q = g.options.minFrameWidth,            r = 0,            s = 0,            t = 0,            u = 0,            v = this          this.editor.addListener('fullscreenchanged', function (a, b) {            if (b) v.disableScale()            else if (v.editor.options.scaleEnabled) {              v.enableScale()              var c = v.editor.document.createElement('span')              v.editor.body.appendChild(c),                (v.editor.body.style.height =                  Math.max(e.getXY(c).y, v.editor.iframe.offsetHeight - 20) +                  'px'),                e.remove(c)            }          }),            (this.enableScale = function () {              1 != g.queryCommandState('source') &&                ((l.style.display = ''),                (this.scaleEnabled = !0),                e.on(l, 'mousedown', a))            }),            (this.disableScale = function () {              ;(l.style.display = 'none'),                (this.scaleEnabled = !1),                e.un(l, 'mousedown', a)            })        },        isFullScreen: function () {          return this._fullscreen        },        postRender: function () {          d.prototype.postRender.call(this)          for (var a = 0; a < this.toolbars.length; a++)            this.toolbars[a].postRender()          var b,            c = this,            e = baidu.editor.dom.domUtils,            f = function () {              clearTimeout(b),                (b = setTimeout(function () {                  c._updateFullScreen()                }))            }          e.on(window, 'resize', f),            c.addListener('destroy', function () {              e.un(window, 'resize', f), clearTimeout(b)            })        },        showToolbarMsg: function (a, b) {          if (            ((this.getDom('toolbarmsg_label').innerHTML = a),            (this.getDom('toolbarmsg').style.display = ''),            !b)          ) {            var c = this.getDom('upload_dialog')            c.style.display = 'none'          }        },        hideToolbarMsg: function () {          this.getDom('toolbarmsg').style.display = 'none'        },        mapUrl: function (a) {          return a            ? a.replace('~/', this.editor.options.UEDITOR_HOME_URL || '')            : ''        },        triggerLayout: function () {          var a = this.getDom()          '1' == a.style.zoom ? (a.style.zoom = '100%') : (a.style.zoom = '1')        }      }),        b.inherits(a, baidu.editor.ui.UIBase)      var g = {}      ;(UE.ui.Editor = function (c) {        var d = new UE.Editor(c)        ;(d.options.editor = d),          b.loadFile(document, {            href: d.options.themePath + d.options.theme + '/css/ueditor.css',            tag: 'link',            type: 'text/css',            rel: 'stylesheet'          })        var f = d.render        return (          (d.render = function (c) {            c.constructor === String && ((d.key = c), (g[c] = d)),              b.domReady(function () {                function b() {                  if (                    (d.setOpt({                      labelMap: d.options.labelMap || d.getLang('labelMap')                    }),                    new a(d.options),                    c &&                      (c.constructor === String &&                        (c = document.getElementById(c)),                      c &&                        c.getAttribute('name') &&                        (d.options.textarea = c.getAttribute('name')),                      c && /script|textarea/gi.test(c.tagName)))                  ) {                    var b = document.createElement('div')                    c.parentNode.insertBefore(b, c)                    var g = c.value || c.innerHTML                    ;(d.options.initialContent = /^[\t\r\n ]*$/.test(g)                      ? d.options.initialContent                      : g                          .replace(/>[\n\r\t]+([ ]{4})+/g, '>')                          .replace(/[\n\r\t]+([ ]{4})+</g, '<')                          .replace(/>[\n\r\t]+</g, '><')),                      c.className && (b.className = c.className),                      c.style.cssText && (b.style.cssText = c.style.cssText),                      /textarea/i.test(c.tagName)                        ? ((d.textarea = c),                          (d.textarea.style.display = 'none'))                        : c.parentNode.removeChild(c),                      c.id && ((b.id = c.id), e.removeAttributes(c, 'id')),                      (c = b),                      (c.innerHTML = '')                  }                  e.addClass(c, 'edui-' + d.options.theme), d.ui.render(c)                  var h = d.options                  d.container = d.ui.getDom()                  for (                    var i, j = e.findParents(c, !0), k = [], l = 0;                    (i = j[l]);                    l++                  )                    (k[l] = i.style.display), (i.style.display = 'block')                  if (h.initialFrameWidth) h.minFrameWidth = h.initialFrameWidth                  else {                    h.minFrameWidth = h.initialFrameWidth = c.offsetWidth                    var m = c.style.width                    ;/%$/.test(m) && (h.initialFrameWidth = m)                  }                  h.initialFrameHeight                    ? (h.minFrameHeight = h.initialFrameHeight)                    : (h.initialFrameHeight = h.minFrameHeight = c.offsetHeight)                  for (var i, l = 0; (i = j[l]); l++) i.style.display = k[l]                  c.style.height && (c.style.height = ''),                    (d.container.style.width =                      h.initialFrameWidth +                      (/%$/.test(h.initialFrameWidth) ? '' : 'px')),                    (d.container.style.zIndex = h.zIndex),                    f.call(d, d.ui.getDom('iframeholder')),                    d.fireEvent('afteruiready')                }                d.langIsReady ? b() : d.addListener('langReady', b)              })          }),          d        )      }),        (UE.getEditor = function (a, b) {          var c = g[a]          return c || ((c = g[a] = new UE.ui.Editor(b)), c.render(a)), c        }),        (UE.delEditor = function (a) {          var b          ;(b = g[a]) && (b.key && b.destroy(), delete g[a])        }),        (UE.registerUI = function (a, c, d, e) {          b.each(a.split(/\s+/), function (a) {            UE._customizeUI[a] = { id: e, execFn: c, index: d }          })        })    })(),    UE.registerUI('message', function (a) {      function b() {        var a = g.ui.getDom('toolbarbox')        a && (c.style.top = a.offsetHeight + 3 + 'px'),          (c.style.zIndex =            Math.max(g.options.zIndex, g.iframe.style.zIndex) + 1)      }      var c,        d = baidu.editor.ui,        e = d.Message,        f = [],        g = a      g.addListener('ready', function () {        ;(c = document.getElementById(g.ui.id + '_message_holder')), b()      }),        g.addListener('showmessage', function (a, d) {          d = utils.isString(d) ? { content: d } : d          var h = new e({              timeout: d.timeout,              type: d.type,              content: d.content,              keepshow: d.keepshow,              editor: g            }),            i = d.id || 'msg_' + (+new Date()).toString(36)          return h.render(c), (f[i] = h), h.reset(d), b(), i        }),        g.addListener('updatemessage', function (a, b, d) {          d = utils.isString(d) ? { content: d } : d          var e = f[b]          e.render(c), e && e.reset(d)        }),        g.addListener('hidemessage', function (a, b) {          var c = f[b]          c && c.hide()        })    }),    UE.registerUI('autosave', function (a) {      var b = null,        c = null      a.on('afterautosave', function () {        clearTimeout(b),          (b = setTimeout(function () {            c && a.trigger('hidemessage', c),              (c = a.trigger('showmessage', {                content: a.getLang('autosave.success'),                timeout: 2e3              }))          }, 2e3))      })    })})()
 |