app-service.js 2.5 MB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817681868196820682168226823682468256826682768286829683068316832683368346835683668376838683968406841684268436844684568466847684868496850685168526853685468556856685768586859686068616862686368646865686668676868686968706871687268736874687568766877687868796880688168826883688468856886688768886889689068916892689368946895689668976898689969006901690269036904690569066907690869096910691169126913691469156916691769186919692069216922692369246925692669276928692969306931693269336934693569366937693869396940694169426943694469456946694769486949695069516952695369546955695669576958695969606961696269636964696569666967696869696970697169726973697469756976697769786979698069816982698369846985698669876988698969906991699269936994699569966997699869997000700170027003700470057006700770087009701070117012701370147015701670177018701970207021702270237024702570267027702870297030703170327033703470357036703770387039704070417042704370447045704670477048704970507051705270537054705570567057705870597060706170627063706470657066706770687069707070717072707370747075707670777078707970807081708270837084708570867087708870897090709170927093709470957096709770987099710071017102710371047105710671077108710971107111711271137114711571167117711871197120712171227123712471257126712771287129713071317132713371347135713671377138713971407141714271437144714571467147714871497150715171527153715471557156715771587159716071617162716371647165716671677168716971707171717271737174717571767177717871797180718171827183718471857186718771887189719071917192719371947195719671977198719972007201720272037204720572067207720872097210721172127213721472157216721772187219722072217222722372247225722672277228722972307231723272337234723572367237723872397240724172427243724472457246724772487249725072517252725372547255725672577258725972607261726272637264726572667267726872697270727172727273727472757276727772787279728072817282728372847285728672877288728972907291729272937294729572967297729872997300730173027303730473057306730773087309731073117312731373147315731673177318731973207321732273237324732573267327732873297330733173327333733473357336733773387339734073417342734373447345734673477348734973507351735273537354735573567357735873597360736173627363736473657366736773687369737073717372737373747375737673777378737973807381738273837384738573867387738873897390739173927393739473957396739773987399740074017402740374047405740674077408740974107411741274137414741574167417741874197420742174227423742474257426742774287429743074317432743374347435743674377438743974407441744274437444744574467447744874497450745174527453745474557456745774587459746074617462746374647465746674677468746974707471747274737474747574767477747874797480748174827483748474857486748774887489749074917492749374947495749674977498749975007501750275037504750575067507750875097510751175127513751475157516751775187519752075217522752375247525752675277528752975307531753275337534753575367537753875397540754175427543754475457546754775487549755075517552755375547555755675577558755975607561756275637564756575667567756875697570757175727573757475757576757775787579758075817582758375847585758675877588758975907591759275937594759575967597759875997600760176027603760476057606760776087609761076117612761376147615761676177618761976207621762276237624762576267627762876297630763176327633763476357636763776387639764076417642764376447645764676477648764976507651765276537654765576567657765876597660766176627663766476657666766776687669767076717672767376747675767676777678767976807681768276837684768576867687768876897690769176927693769476957696769776987699770077017702770377047705770677077708770977107711771277137714771577167717771877197720772177227723772477257726772777287729773077317732773377347735773677377738773977407741774277437744774577467747774877497750775177527753775477557756775777587759776077617762776377647765776677677768776977707771777277737774777577767777777877797780778177827783778477857786778777887789779077917792779377947795779677977798779978007801780278037804780578067807780878097810781178127813781478157816781778187819782078217822782378247825782678277828782978307831783278337834783578367837783878397840784178427843784478457846784778487849785078517852785378547855785678577858785978607861786278637864786578667867786878697870787178727873787478757876787778787879788078817882788378847885788678877888788978907891789278937894789578967897789878997900790179027903790479057906790779087909791079117912791379147915791679177918791979207921792279237924792579267927792879297930793179327933793479357936793779387939794079417942794379447945794679477948794979507951795279537954795579567957795879597960796179627963796479657966796779687969797079717972797379747975797679777978797979807981798279837984798579867987798879897990799179927993799479957996799779987999800080018002800380048005800680078008800980108011801280138014801580168017801880198020802180228023802480258026802780288029803080318032803380348035803680378038803980408041804280438044804580468047804880498050805180528053805480558056805780588059806080618062806380648065806680678068806980708071807280738074807580768077807880798080808180828083808480858086808780888089809080918092809380948095809680978098809981008101810281038104810581068107810881098110811181128113811481158116811781188119812081218122812381248125812681278128812981308131813281338134813581368137813881398140814181428143814481458146814781488149815081518152815381548155815681578158815981608161816281638164816581668167816881698170817181728173817481758176817781788179818081818182818381848185818681878188818981908191819281938194819581968197819881998200820182028203820482058206820782088209821082118212821382148215821682178218821982208221822282238224822582268227822882298230823182328233823482358236823782388239824082418242824382448245824682478248824982508251825282538254825582568257825882598260826182628263826482658266826782688269827082718272827382748275827682778278827982808281828282838284828582868287828882898290829182928293829482958296829782988299830083018302830383048305830683078308830983108311831283138314831583168317831883198320832183228323832483258326832783288329833083318332833383348335833683378338833983408341834283438344834583468347834883498350835183528353835483558356835783588359836083618362836383648365836683678368836983708371837283738374837583768377837883798380838183828383838483858386838783888389839083918392839383948395839683978398839984008401840284038404840584068407840884098410841184128413841484158416841784188419842084218422842384248425842684278428842984308431843284338434843584368437843884398440844184428443844484458446844784488449845084518452845384548455845684578458845984608461846284638464846584668467846884698470847184728473847484758476847784788479848084818482848384848485848684878488848984908491849284938494849584968497849884998500850185028503850485058506850785088509851085118512851385148515851685178518851985208521852285238524852585268527852885298530853185328533853485358536853785388539854085418542854385448545854685478548854985508551855285538554855585568557855885598560856185628563856485658566856785688569857085718572857385748575857685778578857985808581858285838584858585868587858885898590859185928593859485958596859785988599860086018602860386048605860686078608860986108611861286138614861586168617861886198620862186228623862486258626862786288629863086318632863386348635863686378638863986408641864286438644864586468647864886498650865186528653865486558656865786588659866086618662866386648665866686678668866986708671867286738674867586768677867886798680868186828683868486858686868786888689869086918692869386948695869686978698869987008701870287038704870587068707870887098710871187128713871487158716871787188719872087218722872387248725872687278728872987308731873287338734873587368737873887398740874187428743874487458746874787488749875087518752875387548755875687578758875987608761876287638764876587668767876887698770877187728773877487758776877787788779878087818782878387848785878687878788878987908791879287938794879587968797879887998800880188028803880488058806880788088809881088118812881388148815881688178818881988208821882288238824882588268827882888298830883188328833883488358836883788388839884088418842884388448845884688478848884988508851885288538854885588568857885888598860886188628863886488658866886788688869887088718872887388748875887688778878887988808881888288838884888588868887888888898890889188928893889488958896889788988899890089018902890389048905890689078908890989108911891289138914891589168917891889198920892189228923892489258926892789288929893089318932893389348935893689378938893989408941894289438944894589468947894889498950895189528953895489558956895789588959896089618962896389648965896689678968896989708971897289738974897589768977897889798980898189828983898489858986898789888989899089918992899389948995899689978998899990009001900290039004900590069007900890099010901190129013901490159016901790189019902090219022902390249025902690279028902990309031903290339034903590369037903890399040904190429043904490459046904790489049905090519052905390549055905690579058905990609061906290639064906590669067906890699070907190729073907490759076907790789079908090819082908390849085908690879088908990909091909290939094909590969097909890999100910191029103910491059106910791089109911091119112911391149115911691179118911991209121912291239124912591269127912891299130913191329133913491359136913791389139914091419142914391449145914691479148914991509151915291539154915591569157915891599160916191629163916491659166916791689169917091719172917391749175917691779178917991809181918291839184918591869187918891899190919191929193919491959196919791989199920092019202920392049205920692079208920992109211921292139214921592169217921892199220922192229223922492259226922792289229923092319232923392349235923692379238923992409241924292439244924592469247924892499250925192529253925492559256925792589259926092619262926392649265926692679268926992709271927292739274927592769277927892799280928192829283928492859286928792889289929092919292929392949295929692979298929993009301930293039304930593069307930893099310931193129313931493159316931793189319932093219322932393249325932693279328932993309331933293339334933593369337933893399340934193429343934493459346934793489349935093519352935393549355935693579358935993609361936293639364936593669367936893699370937193729373937493759376937793789379938093819382938393849385938693879388938993909391939293939394939593969397939893999400940194029403940494059406940794089409941094119412941394149415941694179418941994209421942294239424942594269427942894299430943194329433943494359436943794389439944094419442944394449445944694479448944994509451945294539454945594569457945894599460946194629463946494659466946794689469947094719472947394749475947694779478947994809481948294839484948594869487948894899490949194929493949494959496949794989499950095019502950395049505950695079508950995109511951295139514951595169517951895199520952195229523952495259526952795289529953095319532953395349535953695379538953995409541954295439544954595469547954895499550955195529553955495559556955795589559956095619562956395649565956695679568956995709571957295739574957595769577957895799580958195829583958495859586958795889589959095919592959395949595959695979598959996009601960296039604960596069607960896099610961196129613961496159616961796189619962096219622962396249625962696279628962996309631963296339634963596369637963896399640964196429643964496459646964796489649965096519652965396549655965696579658965996609661966296639664966596669667966896699670967196729673967496759676967796789679968096819682968396849685968696879688968996909691969296939694969596969697969896999700970197029703970497059706970797089709971097119712971397149715971697179718971997209721972297239724972597269727972897299730973197329733973497359736973797389739974097419742974397449745974697479748974997509751975297539754975597569757975897599760976197629763976497659766976797689769977097719772977397749775977697779778977997809781978297839784978597869787978897899790979197929793979497959796979797989799980098019802980398049805980698079808980998109811981298139814981598169817981898199820982198229823982498259826982798289829983098319832983398349835983698379838983998409841984298439844984598469847984898499850985198529853985498559856985798589859986098619862986398649865986698679868986998709871987298739874987598769877987898799880988198829883988498859886988798889889989098919892989398949895989698979898989999009901990299039904990599069907990899099910991199129913991499159916991799189919992099219922992399249925992699279928992999309931993299339934993599369937993899399940994199429943994499459946994799489949995099519952995399549955995699579958995999609961996299639964996599669967996899699970997199729973997499759976997799789979998099819982998399849985998699879988998999909991999299939994999599969997999899991000010001100021000310004100051000610007100081000910010100111001210013100141001510016100171001810019100201002110022100231002410025100261002710028100291003010031100321003310034100351003610037100381003910040100411004210043100441004510046100471004810049100501005110052100531005410055100561005710058100591006010061100621006310064100651006610067100681006910070100711007210073100741007510076100771007810079100801008110082100831008410085100861008710088100891009010091100921009310094100951009610097100981009910100101011010210103101041010510106101071010810109101101011110112101131011410115101161011710118101191012010121101221012310124101251012610127101281012910130101311013210133101341013510136101371013810139101401014110142101431014410145101461014710148101491015010151101521015310154101551015610157101581015910160101611016210163101641016510166101671016810169101701017110172101731017410175101761017710178101791018010181101821018310184101851018610187101881018910190101911019210193101941019510196101971019810199102001020110202102031020410205102061020710208102091021010211102121021310214102151021610217102181021910220102211022210223102241022510226102271022810229102301023110232102331023410235102361023710238102391024010241102421024310244102451024610247102481024910250102511025210253102541025510256102571025810259102601026110262102631026410265102661026710268102691027010271102721027310274102751027610277102781027910280102811028210283102841028510286102871028810289102901029110292102931029410295102961029710298102991030010301103021030310304103051030610307103081030910310103111031210313103141031510316103171031810319103201032110322103231032410325103261032710328103291033010331103321033310334103351033610337103381033910340103411034210343103441034510346103471034810349103501035110352103531035410355103561035710358103591036010361103621036310364103651036610367103681036910370103711037210373103741037510376103771037810379103801038110382103831038410385103861038710388103891039010391103921039310394103951039610397103981039910400104011040210403104041040510406104071040810409104101041110412104131041410415104161041710418104191042010421104221042310424104251042610427104281042910430104311043210433104341043510436104371043810439104401044110442104431044410445104461044710448104491045010451104521045310454104551045610457104581045910460104611046210463104641046510466104671046810469104701047110472104731047410475104761047710478104791048010481104821048310484104851048610487104881048910490104911049210493104941049510496104971049810499105001050110502105031050410505105061050710508105091051010511105121051310514105151051610517105181051910520105211052210523105241052510526105271052810529105301053110532105331053410535105361053710538105391054010541105421054310544105451054610547105481054910550105511055210553105541055510556105571055810559105601056110562105631056410565105661056710568105691057010571105721057310574105751057610577105781057910580105811058210583105841058510586105871058810589105901059110592105931059410595105961059710598105991060010601106021060310604106051060610607106081060910610106111061210613106141061510616106171061810619106201062110622106231062410625106261062710628106291063010631106321063310634106351063610637106381063910640106411064210643106441064510646106471064810649106501065110652106531065410655106561065710658106591066010661106621066310664106651066610667106681066910670106711067210673106741067510676106771067810679106801068110682106831068410685106861068710688106891069010691106921069310694106951069610697106981069910700107011070210703107041070510706107071070810709107101071110712107131071410715107161071710718107191072010721107221072310724107251072610727107281072910730107311073210733107341073510736107371073810739107401074110742107431074410745107461074710748107491075010751107521075310754107551075610757107581075910760107611076210763107641076510766107671076810769107701077110772107731077410775107761077710778107791078010781107821078310784107851078610787107881078910790107911079210793107941079510796107971079810799108001080110802108031080410805108061080710808108091081010811108121081310814108151081610817108181081910820108211082210823108241082510826108271082810829108301083110832108331083410835108361083710838108391084010841108421084310844108451084610847108481084910850108511085210853108541085510856108571085810859108601086110862108631086410865108661086710868108691087010871108721087310874108751087610877108781087910880108811088210883108841088510886108871088810889108901089110892108931089410895108961089710898108991090010901109021090310904109051090610907109081090910910109111091210913109141091510916109171091810919109201092110922109231092410925109261092710928109291093010931109321093310934109351093610937109381093910940109411094210943109441094510946109471094810949109501095110952109531095410955109561095710958109591096010961109621096310964109651096610967109681096910970109711097210973109741097510976109771097810979109801098110982109831098410985109861098710988109891099010991109921099310994109951099610997109981099911000110011100211003110041100511006110071100811009110101101111012110131101411015110161101711018110191102011021110221102311024110251102611027110281102911030110311103211033110341103511036110371103811039110401104111042110431104411045110461104711048110491105011051110521105311054110551105611057110581105911060110611106211063110641106511066110671106811069110701107111072110731107411075110761107711078110791108011081110821108311084110851108611087110881108911090110911109211093110941109511096110971109811099111001110111102111031110411105111061110711108111091111011111111121111311114111151111611117111181111911120111211112211123111241112511126111271112811129111301113111132111331113411135111361113711138111391114011141111421114311144111451114611147111481114911150111511115211153111541115511156111571115811159111601116111162111631116411165111661116711168111691117011171111721117311174111751117611177111781117911180111811118211183111841118511186111871118811189111901119111192111931119411195111961119711198111991120011201112021120311204112051120611207112081120911210112111121211213112141121511216112171121811219112201122111222112231122411225112261122711228112291123011231112321123311234112351123611237112381123911240112411124211243112441124511246112471124811249112501125111252112531125411255112561125711258112591126011261112621126311264112651126611267112681126911270112711127211273112741127511276112771127811279112801128111282112831128411285112861128711288112891129011291112921129311294112951129611297112981129911300113011130211303113041130511306113071130811309113101131111312113131131411315113161131711318113191132011321113221132311324113251132611327113281132911330113311133211333113341133511336113371133811339113401134111342113431134411345113461134711348113491135011351113521135311354113551135611357113581135911360113611136211363113641136511366113671136811369113701137111372113731137411375113761137711378113791138011381113821138311384113851138611387113881138911390113911139211393113941139511396113971139811399114001140111402114031140411405114061140711408114091141011411114121141311414114151141611417114181141911420114211142211423114241142511426114271142811429114301143111432114331143411435114361143711438114391144011441114421144311444114451144611447114481144911450114511145211453114541145511456114571145811459114601146111462114631146411465114661146711468114691147011471114721147311474114751147611477114781147911480114811148211483114841148511486114871148811489114901149111492114931149411495114961149711498114991150011501115021150311504115051150611507115081150911510115111151211513115141151511516115171151811519115201152111522115231152411525115261152711528115291153011531115321153311534115351153611537115381153911540115411154211543115441154511546115471154811549115501155111552115531155411555115561155711558115591156011561115621156311564115651156611567115681156911570115711157211573115741157511576115771157811579115801158111582115831158411585115861158711588115891159011591115921159311594115951159611597115981159911600116011160211603116041160511606116071160811609116101161111612116131161411615116161161711618116191162011621116221162311624116251162611627116281162911630116311163211633116341163511636116371163811639116401164111642116431164411645116461164711648116491165011651116521165311654116551165611657116581165911660116611166211663116641166511666116671166811669116701167111672116731167411675116761167711678116791168011681116821168311684116851168611687116881168911690116911169211693116941169511696116971169811699117001170111702117031170411705117061170711708117091171011711117121171311714117151171611717117181171911720117211172211723117241172511726117271172811729117301173111732117331173411735117361173711738117391174011741117421174311744117451174611747117481174911750117511175211753117541175511756117571175811759117601176111762117631176411765117661176711768117691177011771117721177311774117751177611777117781177911780117811178211783117841178511786117871178811789117901179111792117931179411795117961179711798117991180011801118021180311804118051180611807118081180911810118111181211813118141181511816118171181811819118201182111822118231182411825118261182711828118291183011831118321183311834118351183611837118381183911840118411184211843118441184511846118471184811849118501185111852118531185411855118561185711858118591186011861118621186311864118651186611867118681186911870118711187211873118741187511876118771187811879118801188111882118831188411885118861188711888118891189011891118921189311894118951189611897118981189911900119011190211903119041190511906119071190811909119101191111912119131191411915119161191711918119191192011921119221192311924119251192611927119281192911930119311193211933119341193511936119371193811939119401194111942119431194411945119461194711948119491195011951119521195311954119551195611957119581195911960119611196211963119641196511966119671196811969119701197111972119731197411975119761197711978119791198011981119821198311984119851198611987119881198911990119911199211993119941199511996119971199811999120001200112002120031200412005120061200712008120091201012011120121201312014120151201612017120181201912020120211202212023120241202512026120271202812029120301203112032120331203412035120361203712038120391204012041120421204312044120451204612047120481204912050120511205212053120541205512056120571205812059120601206112062120631206412065120661206712068120691207012071120721207312074120751207612077120781207912080120811208212083120841208512086120871208812089120901209112092120931209412095120961209712098120991210012101121021210312104121051210612107121081210912110121111211212113121141211512116121171211812119121201212112122121231212412125121261212712128121291213012131121321213312134121351213612137121381213912140121411214212143121441214512146121471214812149121501215112152121531215412155121561215712158121591216012161121621216312164121651216612167121681216912170121711217212173121741217512176121771217812179121801218112182121831218412185121861218712188121891219012191121921219312194121951219612197121981219912200122011220212203122041220512206122071220812209122101221112212122131221412215122161221712218122191222012221122221222312224122251222612227122281222912230122311223212233122341223512236122371223812239122401224112242122431224412245122461224712248122491225012251122521225312254122551225612257122581225912260122611226212263122641226512266122671226812269122701227112272122731227412275122761227712278122791228012281122821228312284122851228612287122881228912290122911229212293122941229512296122971229812299123001230112302123031230412305123061230712308123091231012311123121231312314123151231612317123181231912320123211232212323123241232512326123271232812329123301233112332123331233412335123361233712338123391234012341123421234312344123451234612347123481234912350123511235212353123541235512356123571235812359123601236112362123631236412365123661236712368123691237012371123721237312374123751237612377123781237912380123811238212383123841238512386123871238812389123901239112392123931239412395123961239712398123991240012401124021240312404124051240612407124081240912410124111241212413124141241512416124171241812419124201242112422124231242412425124261242712428124291243012431124321243312434124351243612437124381243912440124411244212443124441244512446124471244812449124501245112452124531245412455124561245712458124591246012461124621246312464124651246612467124681246912470124711247212473124741247512476124771247812479124801248112482124831248412485124861248712488124891249012491124921249312494124951249612497124981249912500125011250212503125041250512506125071250812509125101251112512125131251412515125161251712518125191252012521125221252312524125251252612527125281252912530125311253212533125341253512536125371253812539125401254112542125431254412545125461254712548125491255012551125521255312554125551255612557125581255912560125611256212563125641256512566125671256812569125701257112572125731257412575125761257712578125791258012581125821258312584125851258612587125881258912590125911259212593125941259512596125971259812599126001260112602126031260412605126061260712608126091261012611126121261312614126151261612617126181261912620126211262212623126241262512626126271262812629126301263112632126331263412635126361263712638126391264012641126421264312644126451264612647126481264912650126511265212653126541265512656126571265812659126601266112662126631266412665126661266712668126691267012671126721267312674126751267612677126781267912680126811268212683126841268512686126871268812689126901269112692126931269412695126961269712698126991270012701127021270312704127051270612707127081270912710127111271212713127141271512716127171271812719127201272112722127231272412725127261272712728127291273012731127321273312734127351273612737127381273912740127411274212743127441274512746127471274812749127501275112752127531275412755127561275712758127591276012761127621276312764127651276612767127681276912770127711277212773127741277512776127771277812779127801278112782127831278412785127861278712788127891279012791127921279312794127951279612797127981279912800128011280212803128041280512806128071280812809128101281112812128131281412815128161281712818128191282012821128221282312824128251282612827128281282912830128311283212833128341283512836128371283812839128401284112842128431284412845128461284712848128491285012851128521285312854128551285612857128581285912860128611286212863128641286512866128671286812869128701287112872128731287412875128761287712878128791288012881128821288312884128851288612887128881288912890128911289212893128941289512896128971289812899129001290112902129031290412905129061290712908129091291012911129121291312914129151291612917129181291912920129211292212923129241292512926129271292812929129301293112932129331293412935129361293712938129391294012941129421294312944129451294612947129481294912950129511295212953129541295512956129571295812959129601296112962129631296412965129661296712968129691297012971129721297312974129751297612977129781297912980129811298212983129841298512986129871298812989129901299112992129931299412995129961299712998129991300013001130021300313004130051300613007130081300913010130111301213013130141301513016130171301813019130201302113022130231302413025130261302713028130291303013031130321303313034130351303613037130381303913040130411304213043130441304513046130471304813049130501305113052130531305413055130561305713058130591306013061130621306313064130651306613067130681306913070130711307213073130741307513076130771307813079130801308113082130831308413085130861308713088130891309013091130921309313094130951309613097130981309913100131011310213103131041310513106131071310813109131101311113112131131311413115131161311713118131191312013121131221312313124131251312613127131281312913130131311313213133131341313513136131371313813139131401314113142131431314413145131461314713148131491315013151131521315313154131551315613157131581315913160131611316213163131641316513166131671316813169131701317113172131731317413175131761317713178131791318013181131821318313184131851318613187131881318913190131911319213193131941319513196131971319813199132001320113202132031320413205132061320713208132091321013211132121321313214132151321613217132181321913220132211322213223132241322513226132271322813229132301323113232132331323413235132361323713238132391324013241132421324313244132451324613247132481324913250132511325213253132541325513256132571325813259132601326113262132631326413265132661326713268132691327013271132721327313274132751327613277132781327913280132811328213283132841328513286132871328813289132901329113292132931329413295132961329713298132991330013301133021330313304133051330613307133081330913310133111331213313133141331513316133171331813319133201332113322133231332413325133261332713328133291333013331133321333313334133351333613337133381333913340133411334213343133441334513346133471334813349133501335113352133531335413355133561335713358133591336013361133621336313364133651336613367133681336913370133711337213373133741337513376133771337813379133801338113382133831338413385133861338713388133891339013391133921339313394133951339613397133981339913400134011340213403134041340513406134071340813409134101341113412134131341413415134161341713418134191342013421134221342313424134251342613427134281342913430134311343213433134341343513436134371343813439134401344113442134431344413445134461344713448134491345013451134521345313454134551345613457134581345913460134611346213463134641346513466134671346813469134701347113472134731347413475134761347713478134791348013481134821348313484134851348613487134881348913490134911349213493134941349513496134971349813499135001350113502135031350413505135061350713508135091351013511135121351313514135151351613517135181351913520135211352213523135241352513526135271352813529135301353113532135331353413535135361353713538135391354013541135421354313544135451354613547135481354913550135511355213553135541355513556135571355813559135601356113562135631356413565135661356713568135691357013571135721357313574135751357613577135781357913580135811358213583135841358513586135871358813589135901359113592135931359413595135961359713598135991360013601136021360313604136051360613607136081360913610136111361213613136141361513616136171361813619136201362113622136231362413625136261362713628136291363013631136321363313634136351363613637136381363913640136411364213643136441364513646136471364813649136501365113652136531365413655136561365713658136591366013661136621366313664136651366613667136681366913670136711367213673136741367513676136771367813679136801368113682136831368413685136861368713688136891369013691136921369313694136951369613697136981369913700137011370213703137041370513706137071370813709137101371113712137131371413715137161371713718137191372013721137221372313724137251372613727137281372913730137311373213733137341373513736137371373813739137401374113742137431374413745137461374713748137491375013751137521375313754137551375613757137581375913760137611376213763137641376513766137671376813769137701377113772137731377413775137761377713778137791378013781137821378313784137851378613787137881378913790137911379213793137941379513796137971379813799138001380113802138031380413805138061380713808138091381013811138121381313814138151381613817138181381913820138211382213823138241382513826138271382813829138301383113832138331383413835138361383713838138391384013841138421384313844138451384613847138481384913850138511385213853138541385513856138571385813859138601386113862138631386413865138661386713868138691387013871138721387313874138751387613877138781387913880138811388213883138841388513886138871388813889138901389113892138931389413895138961389713898138991390013901139021390313904139051390613907139081390913910139111391213913139141391513916139171391813919139201392113922139231392413925139261392713928139291393013931139321393313934139351393613937139381393913940139411394213943139441394513946139471394813949139501395113952139531395413955139561395713958139591396013961139621396313964139651396613967139681396913970139711397213973139741397513976139771397813979139801398113982139831398413985139861398713988139891399013991139921399313994139951399613997139981399914000140011400214003140041400514006140071400814009140101401114012140131401414015140161401714018140191402014021140221402314024140251402614027140281402914030140311403214033140341403514036140371403814039140401404114042140431404414045140461404714048140491405014051140521405314054140551405614057140581405914060140611406214063140641406514066140671406814069140701407114072140731407414075140761407714078140791408014081140821408314084140851408614087140881408914090140911409214093140941409514096140971409814099141001410114102141031410414105141061410714108141091411014111141121411314114141151411614117141181411914120141211412214123141241412514126141271412814129141301413114132141331413414135141361413714138141391414014141141421414314144141451414614147141481414914150141511415214153141541415514156141571415814159141601416114162141631416414165141661416714168141691417014171141721417314174141751417614177141781417914180141811418214183141841418514186141871418814189141901419114192141931419414195141961419714198141991420014201142021420314204142051420614207142081420914210142111421214213142141421514216142171421814219142201422114222142231422414225142261422714228142291423014231142321423314234142351423614237142381423914240142411424214243142441424514246142471424814249142501425114252142531425414255142561425714258142591426014261142621426314264142651426614267142681426914270142711427214273142741427514276142771427814279142801428114282142831428414285142861428714288142891429014291142921429314294142951429614297142981429914300143011430214303143041430514306143071430814309143101431114312143131431414315143161431714318143191432014321143221432314324143251432614327143281432914330143311433214333143341433514336143371433814339143401434114342143431434414345143461434714348143491435014351143521435314354143551435614357143581435914360143611436214363143641436514366143671436814369143701437114372143731437414375143761437714378143791438014381143821438314384143851438614387143881438914390143911439214393143941439514396143971439814399144001440114402144031440414405144061440714408144091441014411144121441314414144151441614417144181441914420144211442214423144241442514426144271442814429144301443114432144331443414435144361443714438144391444014441144421444314444144451444614447144481444914450144511445214453144541445514456144571445814459144601446114462144631446414465144661446714468144691447014471144721447314474144751447614477144781447914480144811448214483144841448514486144871448814489144901449114492144931449414495144961449714498144991450014501145021450314504145051450614507145081450914510145111451214513145141451514516145171451814519145201452114522145231452414525145261452714528145291453014531145321453314534145351453614537145381453914540145411454214543145441454514546145471454814549145501455114552145531455414555145561455714558145591456014561145621456314564145651456614567145681456914570145711457214573145741457514576145771457814579145801458114582145831458414585145861458714588145891459014591145921459314594145951459614597145981459914600146011460214603146041460514606146071460814609146101461114612146131461414615146161461714618146191462014621146221462314624146251462614627146281462914630146311463214633146341463514636146371463814639146401464114642146431464414645146461464714648146491465014651146521465314654146551465614657146581465914660146611466214663146641466514666146671466814669146701467114672146731467414675146761467714678146791468014681146821468314684146851468614687146881468914690146911469214693146941469514696146971469814699147001470114702147031470414705147061470714708147091471014711147121471314714147151471614717147181471914720147211472214723147241472514726147271472814729147301473114732147331473414735147361473714738147391474014741147421474314744147451474614747147481474914750147511475214753147541475514756147571475814759147601476114762147631476414765147661476714768147691477014771147721477314774147751477614777147781477914780147811478214783147841478514786147871478814789147901479114792147931479414795147961479714798147991480014801148021480314804148051480614807148081480914810148111481214813148141481514816148171481814819148201482114822148231482414825148261482714828148291483014831148321483314834148351483614837148381483914840148411484214843148441484514846148471484814849148501485114852148531485414855148561485714858148591486014861148621486314864148651486614867148681486914870148711487214873148741487514876148771487814879148801488114882148831488414885148861488714888148891489014891148921489314894148951489614897148981489914900149011490214903149041490514906149071490814909149101491114912149131491414915149161491714918149191492014921149221492314924149251492614927149281492914930149311493214933149341493514936149371493814939149401494114942149431494414945149461494714948149491495014951149521495314954149551495614957149581495914960149611496214963149641496514966149671496814969149701497114972149731497414975149761497714978149791498014981149821498314984149851498614987149881498914990149911499214993149941499514996149971499814999150001500115002150031500415005150061500715008150091501015011150121501315014150151501615017150181501915020150211502215023150241502515026150271502815029150301503115032150331503415035150361503715038150391504015041150421504315044150451504615047150481504915050150511505215053150541505515056150571505815059150601506115062150631506415065150661506715068150691507015071150721507315074150751507615077150781507915080150811508215083150841508515086150871508815089150901509115092150931509415095150961509715098150991510015101151021510315104151051510615107151081510915110151111511215113151141511515116151171511815119151201512115122151231512415125151261512715128151291513015131151321513315134151351513615137151381513915140151411514215143151441514515146151471514815149151501515115152151531515415155151561515715158151591516015161151621516315164151651516615167151681516915170151711517215173151741517515176151771517815179151801518115182151831518415185151861518715188151891519015191151921519315194151951519615197151981519915200152011520215203152041520515206152071520815209152101521115212152131521415215152161521715218152191522015221152221522315224152251522615227152281522915230152311523215233152341523515236152371523815239152401524115242152431524415245152461524715248152491525015251152521525315254152551525615257152581525915260152611526215263152641526515266152671526815269152701527115272152731527415275152761527715278152791528015281152821528315284152851528615287152881528915290152911529215293152941529515296152971529815299153001530115302153031530415305153061530715308153091531015311153121531315314153151531615317153181531915320153211532215323153241532515326153271532815329153301533115332153331533415335153361533715338153391534015341153421534315344153451534615347153481534915350153511535215353153541535515356153571535815359153601536115362153631536415365153661536715368153691537015371153721537315374153751537615377153781537915380153811538215383153841538515386153871538815389153901539115392153931539415395153961539715398153991540015401154021540315404154051540615407154081540915410154111541215413154141541515416154171541815419154201542115422154231542415425154261542715428154291543015431154321543315434154351543615437154381543915440154411544215443154441544515446154471544815449154501545115452154531545415455154561545715458154591546015461154621546315464154651546615467154681546915470154711547215473154741547515476154771547815479154801548115482154831548415485154861548715488154891549015491154921549315494154951549615497154981549915500155011550215503155041550515506155071550815509155101551115512155131551415515155161551715518155191552015521155221552315524155251552615527155281552915530155311553215533155341553515536155371553815539155401554115542155431554415545155461554715548155491555015551155521555315554155551555615557155581555915560155611556215563155641556515566155671556815569155701557115572155731557415575155761557715578155791558015581155821558315584155851558615587155881558915590155911559215593155941559515596155971559815599156001560115602156031560415605156061560715608156091561015611156121561315614156151561615617156181561915620156211562215623156241562515626156271562815629156301563115632156331563415635156361563715638156391564015641156421564315644156451564615647156481564915650156511565215653156541565515656156571565815659156601566115662156631566415665156661566715668156691567015671156721567315674156751567615677156781567915680156811568215683156841568515686156871568815689156901569115692156931569415695156961569715698156991570015701157021570315704157051570615707157081570915710157111571215713157141571515716157171571815719157201572115722157231572415725157261572715728157291573015731157321573315734157351573615737157381573915740157411574215743157441574515746157471574815749157501575115752157531575415755157561575715758157591576015761157621576315764157651576615767157681576915770157711577215773157741577515776157771577815779157801578115782157831578415785157861578715788157891579015791157921579315794157951579615797157981579915800158011580215803158041580515806158071580815809158101581115812158131581415815158161581715818158191582015821158221582315824158251582615827158281582915830158311583215833158341583515836158371583815839158401584115842158431584415845158461584715848158491585015851158521585315854158551585615857158581585915860158611586215863158641586515866158671586815869158701587115872158731587415875158761587715878158791588015881158821588315884158851588615887158881588915890158911589215893158941589515896158971589815899159001590115902159031590415905159061590715908159091591015911159121591315914159151591615917159181591915920159211592215923159241592515926159271592815929159301593115932159331593415935159361593715938159391594015941159421594315944159451594615947159481594915950159511595215953159541595515956159571595815959159601596115962159631596415965159661596715968159691597015971159721597315974159751597615977159781597915980159811598215983159841598515986159871598815989159901599115992159931599415995159961599715998159991600016001160021600316004160051600616007160081600916010160111601216013160141601516016160171601816019160201602116022160231602416025160261602716028160291603016031160321603316034160351603616037160381603916040160411604216043160441604516046160471604816049160501605116052160531605416055160561605716058160591606016061160621606316064160651606616067160681606916070160711607216073160741607516076160771607816079160801608116082160831608416085160861608716088160891609016091160921609316094160951609616097160981609916100161011610216103161041610516106161071610816109161101611116112161131611416115161161611716118161191612016121161221612316124161251612616127161281612916130161311613216133161341613516136161371613816139161401614116142161431614416145161461614716148161491615016151161521615316154161551615616157161581615916160161611616216163161641616516166161671616816169161701617116172161731617416175161761617716178161791618016181161821618316184161851618616187161881618916190161911619216193161941619516196161971619816199162001620116202162031620416205162061620716208162091621016211162121621316214
  1. (this["webpackJsonp"] = this["webpackJsonp"] || []).push([["app-service"],[
  2. /* 0 */
  3. /*!***********************************************!*\
  4. !*** D:/Intelligent/jn_uniapp/jn_app/main.js ***!
  5. \***********************************************/
  6. /*! no static exports found */
  7. /***/ (function(module, exports, __webpack_require__) {
  8. "use strict";
  9. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\n__webpack_require__(/*! uni-pages */ 6);\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 101));\nvar _App = _interopRequireDefault(__webpack_require__(/*! ./App */ 150));\nvar _store = _interopRequireDefault(__webpack_require__(/*! ./store */ 154));\nvar _plugins = _interopRequireDefault(__webpack_require__(/*! ./plugins */ 166));\n__webpack_require__(/*! ./permission */ 170);\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\n// permission\n_vue.default.use(_plugins.default);\n_vue.default.config.productionTip = false;\n_vue.default.prototype.$store = _store.default;\n_App.default.mpType = 'app';\nvar app = new _vue.default(_objectSpread({}, _App.default));\napp.$mount();//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vbWFpbi5qcyJdLCJuYW1lcyI6WyJWdWUiLCJ1c2UiLCJwbHVnaW5zIiwiY29uZmlnIiwicHJvZHVjdGlvblRpcCIsInByb3RvdHlwZSIsIiRzdG9yZSIsInN0b3JlIiwiQXBwIiwibXBUeXBlIiwiYXBwIiwiJG1vdW50Il0sIm1hcHBpbmdzIjoiOzs7O0FBQUE7QUFBbUI7QUFDbkI7QUFDQTtBQUNBO0FBQ0E7QUFBcUI7QUFBQTtBQUFDO0FBQ3RCQSxZQUFHLENBQUNDLEdBQUcsQ0FBQ0MsZ0JBQU8sQ0FBQztBQUVoQkYsWUFBRyxDQUFDRyxNQUFNLENBQUNDLGFBQWEsR0FBRyxLQUFLO0FBQ2hDSixZQUFHLENBQUNLLFNBQVMsQ0FBQ0MsTUFBTSxHQUFHQyxjQUFLO0FBRTVCQyxZQUFHLENBQUNDLE1BQU0sR0FBRyxLQUFLO0FBRWxCLElBQU1DLEdBQUcsR0FBRyxJQUFJVixZQUFHLG1CQUNkUSxZQUFHLEVBQ047QUFFRkUsR0FBRyxDQUFDQyxNQUFNLEVBQUUiLCJmaWxlIjoiMC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAndW5pLXBhZ2VzJztpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcclxuaW1wb3J0IEFwcCBmcm9tICcuL0FwcCdcclxuaW1wb3J0IHN0b3JlIGZyb20gJy4vc3RvcmUnIC8vIHN0b3JlXHJcbmltcG9ydCBwbHVnaW5zIGZyb20gJy4vcGx1Z2lucycgLy8gcGx1Z2luc1xyXG5pbXBvcnQgJy4vcGVybWlzc2lvbicgLy8gcGVybWlzc2lvblxyXG5WdWUudXNlKHBsdWdpbnMpXHJcblxyXG5WdWUuY29uZmlnLnByb2R1Y3Rpb25UaXAgPSBmYWxzZVxyXG5WdWUucHJvdG90eXBlLiRzdG9yZSA9IHN0b3JlXHJcblxyXG5BcHAubXBUeXBlID0gJ2FwcCdcclxuXHJcbmNvbnN0IGFwcCA9IG5ldyBWdWUoe1xyXG4gIC4uLkFwcFxyXG59KVxyXG5cclxuYXBwLiRtb3VudCgpIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///0\n");
  10. /***/ }),
  11. /* 1 */
  12. /*!**********************************************************************!*\
  13. !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!
  14. \**********************************************************************/
  15. /*! no static exports found */
  16. /***/ (function(module, exports) {
  17. function _interopRequireDefault(obj) {
  18. return obj && obj.__esModule ? obj : {
  19. "default": obj
  20. };
  21. }
  22. module.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports["default"] = module.exports;
  23. /***/ }),
  24. /* 2 */
  25. /*!***************************************************************!*\
  26. !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!
  27. \***************************************************************/
  28. /*! no static exports found */
  29. /***/ (function(module, exports, __webpack_require__) {
  30. var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 3);
  31. function _defineProperty(obj, key, value) {
  32. key = toPropertyKey(key);
  33. if (key in obj) {
  34. Object.defineProperty(obj, key, {
  35. value: value,
  36. enumerable: true,
  37. configurable: true,
  38. writable: true
  39. });
  40. } else {
  41. obj[key] = value;
  42. }
  43. return obj;
  44. }
  45. module.exports = _defineProperty, module.exports.__esModule = true, module.exports["default"] = module.exports;
  46. /***/ }),
  47. /* 3 */
  48. /*!**************************************************************!*\
  49. !*** ./node_modules/@babel/runtime/helpers/toPropertyKey.js ***!
  50. \**************************************************************/
  51. /*! no static exports found */
  52. /***/ (function(module, exports, __webpack_require__) {
  53. var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
  54. var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 5);
  55. function _toPropertyKey(arg) {
  56. var key = toPrimitive(arg, "string");
  57. return _typeof(key) === "symbol" ? key : String(key);
  58. }
  59. module.exports = _toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports;
  60. /***/ }),
  61. /* 4 */
  62. /*!*******************************************************!*\
  63. !*** ./node_modules/@babel/runtime/helpers/typeof.js ***!
  64. \*******************************************************/
  65. /*! no static exports found */
  66. /***/ (function(module, exports) {
  67. function _typeof(obj) {
  68. "@babel/helpers - typeof";
  69. return (module.exports = _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) {
  70. return typeof obj;
  71. } : function (obj) {
  72. return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
  73. }, module.exports.__esModule = true, module.exports["default"] = module.exports), _typeof(obj);
  74. }
  75. module.exports = _typeof, module.exports.__esModule = true, module.exports["default"] = module.exports;
  76. /***/ }),
  77. /* 5 */
  78. /*!************************************************************!*\
  79. !*** ./node_modules/@babel/runtime/helpers/toPrimitive.js ***!
  80. \************************************************************/
  81. /*! no static exports found */
  82. /***/ (function(module, exports, __webpack_require__) {
  83. var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
  84. function _toPrimitive(input, hint) {
  85. if (_typeof(input) !== "object" || input === null) return input;
  86. var prim = input[Symbol.toPrimitive];
  87. if (prim !== undefined) {
  88. var res = prim.call(input, hint || "default");
  89. if (_typeof(res) !== "object") return res;
  90. throw new TypeError("@@toPrimitive must return a primitive value.");
  91. }
  92. return (hint === "string" ? String : Number)(input);
  93. }
  94. module.exports = _toPrimitive, module.exports.__esModule = true, module.exports["default"] = module.exports;
  95. /***/ }),
  96. /* 6 */
  97. /*!**************************************************!*\
  98. !*** D:/Intelligent/jn_uniapp/jn_app/pages.json ***!
  99. \**************************************************/
  100. /*! no static exports found */
  101. /***/ (function(module, exports, __webpack_require__) {
  102. if (typeof Promise !== 'undefined' && !Promise.prototype.finally) {
  103. Promise.prototype.finally = function (callback) {
  104. var promise = this.constructor;
  105. return this.then(function (value) {
  106. return promise.resolve(callback()).then(function () {
  107. return value;
  108. });
  109. }, function (reason) {
  110. return promise.resolve(callback()).then(function () {
  111. throw reason;
  112. });
  113. });
  114. };
  115. }
  116. if (typeof uni !== 'undefined' && uni && uni.requireGlobal) {
  117. var global = uni.requireGlobal();
  118. ArrayBuffer = global.ArrayBuffer;
  119. Int8Array = global.Int8Array;
  120. Uint8Array = global.Uint8Array;
  121. Uint8ClampedArray = global.Uint8ClampedArray;
  122. Int16Array = global.Int16Array;
  123. Uint16Array = global.Uint16Array;
  124. Int32Array = global.Int32Array;
  125. Uint32Array = global.Uint32Array;
  126. Float32Array = global.Float32Array;
  127. Float64Array = global.Float64Array;
  128. BigInt64Array = global.BigInt64Array;
  129. BigUint64Array = global.BigUint64Array;
  130. }
  131. if (uni.restoreGlobal) {
  132. uni.restoreGlobal(weex, plus, setTimeout, clearTimeout, setInterval, clearInterval);
  133. }
  134. __definePage('pages/login/login', function () {
  135. return Vue.extend(__webpack_require__(/*! pages/login/login.vue?mpType=page */ 7).default);
  136. });
  137. __definePage('pages/home/index', function () {
  138. return Vue.extend(__webpack_require__(/*! pages/home/index.vue?mpType=page */ 19).default);
  139. });
  140. __definePage('pages/power/index', function () {
  141. return Vue.extend(__webpack_require__(/*! pages/power/index.vue?mpType=page */ 39).default);
  142. });
  143. __definePage('pages/type/index', function () {
  144. return Vue.extend(__webpack_require__(/*! pages/type/index.vue?mpType=page */ 131).default);
  145. });
  146. __definePage('pages/report/index', function () {
  147. return Vue.extend(__webpack_require__(/*! pages/report/index.vue?mpType=page */ 140).default);
  148. });
  149. __definePage('pages/warn/index', function () {
  150. return Vue.extend(__webpack_require__(/*! pages/warn/index.vue?mpType=page */ 145).default);
  151. });
  152. /***/ }),
  153. /* 7 */
  154. /*!*************************************************************************!*\
  155. !*** D:/Intelligent/jn_uniapp/jn_app/pages/login/login.vue?mpType=page ***!
  156. \*************************************************************************/
  157. /*! no static exports found */
  158. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  159. "use strict";
  160. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./login.vue?vue&type=template&id=5b26a3ac&mpType=page */ 8);\n/* harmony import */ var _login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./login.vue?vue&type=script&lang=js&mpType=page */ 13);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/login/login.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zLCByZWN5Y2xhYmxlUmVuZGVyLCBjb21wb25lbnRzIH0gZnJvbSBcIi4vbG9naW4udnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTViMjZhM2FjJm1wVHlwZT1wYWdlXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9sb2dpbi52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9naW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJwYWdlcy9sb2dpbi9sb2dpbi52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///7\n");
  161. /***/ }),
  162. /* 8 */
  163. /*!*******************************************************************************************************!*\
  164. !*** D:/Intelligent/jn_uniapp/jn_app/pages/login/login.vue?vue&type=template&id=5b26a3ac&mpType=page ***!
  165. \*******************************************************************************************************/
  166. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  167. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  168. "use strict";
  169. __webpack_require__.r(__webpack_exports__);
  170. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./login.vue?vue&type=template&id=5b26a3ac&mpType=page */ 9);
  171. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
  172. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  173. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  174. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_template_id_5b26a3ac_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
  175. /***/ }),
  176. /* 9 */
  177. /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  178. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/login/login.vue?vue&type=template&id=5b26a3ac&mpType=page ***!
  179. \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  180. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  181. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  182. "use strict";
  183. __webpack_require__.r(__webpack_exports__);
  184. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  185. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  186. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  187. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  188. var components
  189. var render = function () {
  190. var _vm = this
  191. var _h = _vm.$createElement
  192. var _c = _vm._self._c || _h
  193. return _c(
  194. "view",
  195. {
  196. staticClass: _vm._$s(0, "sc", "normal-login-container"),
  197. attrs: { _i: 0 },
  198. },
  199. [
  200. _c(
  201. "view",
  202. { staticClass: _vm._$s(1, "sc", "logo-content"), attrs: { _i: 1 } },
  203. [
  204. _c(
  205. "view",
  206. { staticClass: _vm._$s(2, "sc", "logoTit"), attrs: { _i: 2 } },
  207. [
  208. _c("view", {
  209. staticClass: _vm._$s(3, "sc", "titleZN"),
  210. attrs: { _i: 3 },
  211. }),
  212. _c("view", {
  213. staticClass: _vm._$s(4, "sc", "titleZN"),
  214. attrs: { _i: 4 },
  215. }),
  216. _c("view", {
  217. staticClass: _vm._$s(5, "sc", "titleEN"),
  218. attrs: { _i: 5 },
  219. }),
  220. ]
  221. ),
  222. ]
  223. ),
  224. _c(
  225. "view",
  226. {
  227. staticClass: _vm._$s(6, "sc", "login-form-content"),
  228. attrs: { _i: 6 },
  229. },
  230. [
  231. _c(
  232. "view",
  233. {
  234. staticClass: _vm._$s(7, "sc", "input-item flex align-center"),
  235. attrs: { _i: 7 },
  236. },
  237. [
  238. _c("image", {
  239. attrs: {
  240. src: _vm._$s(
  241. 8,
  242. "a-src",
  243. __webpack_require__(/*! ../../static/jnImage/loginPage/userName.png */ 11)
  244. ),
  245. _i: 8,
  246. },
  247. }),
  248. _c("input", {
  249. directives: [
  250. {
  251. name: "model",
  252. rawName: "v-model",
  253. value: _vm.loginForm.username,
  254. expression: "loginForm.username",
  255. },
  256. ],
  257. staticClass: _vm._$s(9, "sc", "input"),
  258. attrs: { _i: 9 },
  259. domProps: {
  260. value: _vm._$s(9, "v-model", _vm.loginForm.username),
  261. },
  262. on: {
  263. input: function ($event) {
  264. if ($event.target.composing) {
  265. return
  266. }
  267. _vm.$set(_vm.loginForm, "username", $event.target.value)
  268. },
  269. },
  270. }),
  271. ]
  272. ),
  273. _c(
  274. "view",
  275. {
  276. staticClass: _vm._$s(10, "sc", "input-item flex align-center"),
  277. attrs: { _i: 10 },
  278. },
  279. [
  280. _c("image", {
  281. attrs: {
  282. src: _vm._$s(
  283. 11,
  284. "a-src",
  285. __webpack_require__(/*! ../../static/jnImage/loginPage/locked.png */ 12)
  286. ),
  287. _i: 11,
  288. },
  289. }),
  290. _c("input", {
  291. directives: [
  292. {
  293. name: "model",
  294. rawName: "v-model",
  295. value: _vm.loginForm.password,
  296. expression: "loginForm.password",
  297. },
  298. ],
  299. staticClass: _vm._$s(12, "sc", "input"),
  300. attrs: { _i: 12 },
  301. domProps: {
  302. value: _vm._$s(12, "v-model", _vm.loginForm.password),
  303. },
  304. on: {
  305. input: function ($event) {
  306. if ($event.target.composing) {
  307. return
  308. }
  309. _vm.$set(_vm.loginForm, "password", $event.target.value)
  310. },
  311. },
  312. }),
  313. ]
  314. ),
  315. _c(
  316. "view",
  317. { staticClass: _vm._$s(13, "sc", "action-btn"), attrs: { _i: 13 } },
  318. [
  319. _c("button", {
  320. staticClass: _vm._$s(14, "sc", "login-btn"),
  321. attrs: { _i: 14 },
  322. on: { click: _vm.handleLogin },
  323. }),
  324. ]
  325. ),
  326. ]
  327. ),
  328. ]
  329. )
  330. }
  331. var recyclableRender = false
  332. var staticRenderFns = []
  333. render._withStripped = true
  334. /***/ }),
  335. /* 10 */
  336. /*!*************************************************************************!*\
  337. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/loginPage/logo.png ***!
  338. \*************************************************************************/
  339. /*! no static exports found */
  340. /***/ (function(module, exports) {
  341. eval("module.exports = \"/static/jnImage/loginPage/logo.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEwLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9sb2dpblBhZ2UvbG9nby5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///10\n");
  342. /***/ }),
  343. /* 11 */
  344. /*!*****************************************************************************!*\
  345. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/loginPage/userName.png ***!
  346. \*****************************************************************************/
  347. /*! no static exports found */
  348. /***/ (function(module, exports) {
  349. eval("module.exports = \"/static/jnImage/loginPage/userName.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjExLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9sb2dpblBhZ2UvdXNlck5hbWUucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///11\n");
  350. /***/ }),
  351. /* 12 */
  352. /*!***************************************************************************!*\
  353. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/loginPage/locked.png ***!
  354. \***************************************************************************/
  355. /*! no static exports found */
  356. /***/ (function(module, exports) {
  357. eval("module.exports = \"/static/jnImage/loginPage/locked.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9sb2dpblBhZ2UvbG9ja2VkLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///12\n");
  358. /***/ }),
  359. /* 13 */
  360. /*!*************************************************************************************************!*\
  361. !*** D:/Intelligent/jn_uniapp/jn_app/pages/login/login.vue?vue&type=script&lang=js&mpType=page ***!
  362. \*************************************************************************************************/
  363. /*! no static exports found */
  364. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  365. "use strict";
  366. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./login.vue?vue&type=script&lang=js&mpType=page */ 14);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_login_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIxMy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9naW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9naW4udnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///13\n");
  367. /***/ }),
  368. /* 14 */
  369. /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  370. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/login/login.vue?vue&type=script&lang=js&mpType=page ***!
  371. \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  372. /*! no static exports found */
  373. /***/ (function(module, exports, __webpack_require__) {
  374. "use strict";
  375. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 15));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 17));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'Login',\n data: function data() {\n return {\n captchaEnabled: false,\n // 验证码开关 TODO 芋艿:需要抽到配置里\n globalConfig: getApp().globalData.config,\n loginForm: {\n username: \"admin\",\n password: \"admin123\"\n }\n };\n },\n methods: {\n // 登录方法\n handleLogin: function handleLogin(params) {\n // if (this.loginForm.username === \"\") {\n // \tthis.$modal.msgError(\"请输入您的账号\")\n // } else if (this.loginForm.password === \"\") {\n // \tthis.$modal.msgError(\"请输入您的密码\")\n // } else {\n // \t// await this.pwdLogin({})\n // uni.navigateTo({\n // \turl: '/pages/power/index'\n // });\n // }\n var that = this;\n that.$tab.switchTab('/pages/home/index');\n },\n // 密码登录\n pwdLogin: function pwdLogin() {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n // this.$modal.loading(\"登录中,请耐心等待...\")\n // 执行登录\n // this.$store.dispatch('Login', this.loginForm).then(() => {\n // \tthis.$modal.closeLoading()\n // \tthis.loginSuccess()\n // })\n _this.loginSuccess();\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n // 登录成功后,处理函数\n loginSuccess: function loginSuccess(result) {\n // 设置用户信息\n // this.$store.dispatch('GetInfo').then(res => {\n // \tthis.$tab.reLaunch('/pages/index')\n // })\n // this.$tab.reLaunch('/pages/index')\n uni.navigateTo({\n url: '/pages/index',\n success: function success(res) {},\n fail: function fail() {},\n complete: function complete() {}\n });\n // this.$tab.navigateTo('/pages/index')\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbG9naW4vbG9naW4udnVlIl0sIm5hbWVzIjpbIm5hbWUiLCJkYXRhIiwiY2FwdGNoYUVuYWJsZWQiLCJnbG9iYWxDb25maWciLCJsb2dpbkZvcm0iLCJ1c2VybmFtZSIsInBhc3N3b3JkIiwibWV0aG9kcyIsImhhbmRsZUxvZ2luIiwidGhhdCIsInB3ZExvZ2luIiwibG9naW5TdWNjZXNzIiwidW5pIiwidXJsIiwic3VjY2VzcyIsImZhaWwiLCJjb21wbGV0ZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O2VBNEJBO0VBQ0FBO0VBQ0FDO0lBQ0E7TUFDQUM7TUFBQTtNQUNBQztNQUNBQztRQUNBQztRQUNBQztNQUNBO0lBQ0E7RUFDQTtFQUNBQztJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUVBQztJQUNBO0lBQ0E7SUFDQUM7TUFBQTtNQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Z0JBQ0E7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBQztRQUNBQztRQUNBQztRQUNBQztRQUNBQztNQUNBO01BQ0E7SUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiIxNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cIm5vcm1hbC1sb2dpbi1jb250YWluZXJcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwibG9nby1jb250ZW50XCI+XHJcblx0XHRcdDwhLS0gPGltYWdlIHNyYz1cIi4uLy4uL3N0YXRpYy9qbkltYWdlL2xvZ2luUGFnZS9sb2dvLnBuZ1wiPlxyXG5cdFx0XHQ8L2ltYWdlPiAtLT5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJsb2dvVGl0XCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0aXRsZVpOXCI+5pmL6IO95o6n6IKh55S15Yqb6ZuG5ZuiPC92aWV3PlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwidGl0bGVaTlwiPua4hea0geiDvea6kOaciemZkOWFrOWPuDwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInRpdGxlRU5cIj7lj5HnlLXlnLrnq5nnlJ/kuqflrp7ml7bov5DokKXnrqHnkIblubPlj7A8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwibG9naW4tZm9ybS1jb250ZW50XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXQtaXRlbSBmbGV4IGFsaWduLWNlbnRlclwiPlxyXG5cdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvam5JbWFnZS9sb2dpblBhZ2UvdXNlck5hbWUucG5nXCI+XHJcblx0XHRcdFx0XHQ8aW5wdXQgdi1tb2RlbD1cImxvZ2luRm9ybS51c2VybmFtZVwiIGNsYXNzPVwiaW5wdXRcIiB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwi55So5oi35ZCNXCIgbWF4bGVuZ3RoPVwiMzBcIiAvPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXQtaXRlbSBmbGV4IGFsaWduLWNlbnRlclwiPlxyXG5cdFx0XHRcdDxpbWFnZSBzcmM9XCIuLi8uLi9zdGF0aWMvam5JbWFnZS9sb2dpblBhZ2UvbG9ja2VkLnBuZ1wiPlxyXG5cdFx0XHRcdFx0PGlucHV0IHYtbW9kZWw9XCJsb2dpbkZvcm0ucGFzc3dvcmRcIiB0eXBlPVwicGFzc3dvcmRcIiBjbGFzcz1cImlucHV0XCIgcGxhY2Vob2xkZXI9XCLlr4bnoIFcIiBtYXhsZW5ndGg9XCIyMFwiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJhY3Rpb24tYnRuXCI+XHJcblx0XHRcdFx0PGJ1dHRvbiBAY2xpY2s9XCJoYW5kbGVMb2dpblwiIGNsYXNzPVwibG9naW4tYnRuXCI+55m75b2VPC9idXR0b24+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdG5hbWU6ICdMb2dpbicsXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGNhcHRjaGFFbmFibGVkOiBmYWxzZSwgLy8g6aqM6K+B56CB5byA5YWzIFRPRE8g6IqL6Im/77ya6ZyA6KaB5oq95Yiw6YWN572u6YeMXHJcblx0XHRcdFx0Z2xvYmFsQ29uZmlnOiBnZXRBcHAoKS5nbG9iYWxEYXRhLmNvbmZpZyxcclxuXHRcdFx0XHRsb2dpbkZvcm06IHtcclxuXHRcdFx0XHRcdHVzZXJuYW1lOiBcImFkbWluXCIsXHJcblx0XHRcdFx0XHRwYXNzd29yZDogXCJhZG1pbjEyM1wiXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHQvLyDnmbvlvZXmlrnms5VcclxuXHRcdFx0aGFuZGxlTG9naW4ocGFyYW1zKSB7XHJcblx0XHRcdFx0Ly8gaWYgKHRoaXMubG9naW5Gb3JtLnVzZXJuYW1lID09PSBcIlwiKSB7XHJcblx0XHRcdFx0Ly8gXHR0aGlzLiRtb2RhbC5tc2dFcnJvcihcIuivt+i+k+WFpeaCqOeahOi0puWPt1wiKVxyXG5cdFx0XHRcdC8vIH0gZWxzZSBpZiAodGhpcy5sb2dpbkZvcm0ucGFzc3dvcmQgPT09IFwiXCIpIHtcclxuXHRcdFx0XHQvLyBcdHRoaXMuJG1vZGFsLm1zZ0Vycm9yKFwi6K+36L6T5YWl5oKo55qE5a+G56CBXCIpXHJcblx0XHRcdFx0Ly8gfSBlbHNlIHtcclxuXHRcdFx0XHQvLyBcdC8vIGF3YWl0IHRoaXMucHdkTG9naW4oe30pXHJcblx0XHRcdFx0Ly8gdW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdC8vIFx0dXJsOiAnL3BhZ2VzL3Bvd2VyL2luZGV4J1xyXG5cdFx0XHRcdC8vIH0pO1xyXG5cdFx0XHRcdC8vIH1cclxuXHRcdFx0XHRsZXQgdGhhdCA9IHRoaXNcclxuXHJcblx0XHRcdFx0dGhhdC4kdGFiLnN3aXRjaFRhYignL3BhZ2VzL2hvbWUvaW5kZXgnKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyDlr4bnoIHnmbvlvZVcclxuXHRcdFx0YXN5bmMgcHdkTG9naW4oKSB7XHJcblx0XHRcdFx0Ly8gdGhpcy4kbW9kYWwubG9hZGluZyhcIueZu+W9leS4re+8jOivt+iAkOW/g+etieW+hS4uLlwiKVxyXG5cdFx0XHRcdC8vIOaJp+ihjOeZu+W9lVxyXG5cdFx0XHRcdC8vIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdMb2dpbicsIHRoaXMubG9naW5Gb3JtKS50aGVuKCgpID0+IHtcclxuXHRcdFx0XHQvLyBcdHRoaXMuJG1vZGFsLmNsb3NlTG9hZGluZygpXHJcblx0XHRcdFx0Ly8gXHR0aGlzLmxvZ2luU3VjY2VzcygpXHJcblx0XHRcdFx0Ly8gfSlcclxuXHRcdFx0XHR0aGlzLmxvZ2luU3VjY2VzcygpXHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIOeZu+W9leaIkOWKn+WQju+8jOWkhOeQhuWHveaVsFxyXG5cdFx0XHRsb2dpblN1Y2Nlc3MocmVzdWx0KSB7XHJcblx0XHRcdFx0Ly8g6K6+572u55So5oi35L+h5oGvXHJcblx0XHRcdFx0Ly8gdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0dldEluZm8nKS50aGVuKHJlcyA9PiB7XHJcblx0XHRcdFx0Ly8gXHR0aGlzLiR0YWIucmVMYXVuY2goJy9wYWdlcy9pbmRleCcpXHJcblx0XHRcdFx0Ly8gfSlcclxuXHRcdFx0XHQvLyB0aGlzLiR0YWIucmVMYXVuY2goJy9wYWdlcy9pbmRleCcpXHJcblx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0dXJsOiAnL3BhZ2VzL2luZGV4JyxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IHJlcyA9PiB7fSxcclxuXHRcdFx0XHRcdGZhaWw6ICgpID0+IHt9LFxyXG5cdFx0XHRcdFx0Y29tcGxldGU6ICgpID0+IHt9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0Ly8gdGhpcy4kdGFiLm5hdmlnYXRlVG8oJy9wYWdlcy9pbmRleCcpXHJcblxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxyXG5cdHBhZ2Uge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzIwMjI0NjtcclxuXHR9XHJcblxyXG5cdC5ub3JtYWwtbG9naW4tY29udGFpbmVyIHtcclxuXHRcdC8vIGJhY2tncm91bmQ6IHVybCgnLi4vc3RhdGljL2puSW1hZ2UvbG9naW5QYWdlL2xvZ2luQmFjay5wbmcnKTtcclxuXHRcdC8vIGJhY2tncm91bmQtcmVwbGF0ZTpcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGllZ2h0OiAxMDB2aDtcclxuXHJcblx0XHQubG9nby1jb250ZW50IHtcclxuXHRcdFx0d2lkdGg6IDEwMCU7XHJcblx0XHRcdGZvbnQtc2l6ZTogMjFweDtcclxuXHRcdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0XHRwYWRkaW5nLXRvcDogMTUlO1xyXG5cdFx0XHRtYXJnaW4tYm90dG9tOiAxNXB4O1xyXG5cclxuXHRcdFx0aW1hZ2Uge1xyXG5cdFx0XHRcdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHRcdFx0XHRtYXJnaW4tdG9wOiA0MHB4O1xyXG5cdFx0XHRcdHdpZHRoOiA4MHB4O1xyXG5cdFx0XHRcdGhlaWdodDogNjBweDtcclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LmxvZ29UaXQge1xyXG5cdFx0XHRcdGNvbG9yOiAjZmZmO1xyXG5cclxuXHRcdFx0XHQudGl0bGVaTiB7XHJcblx0XHRcdFx0XHRtYXJnaW4tdG9wOiA1cHg7XHJcblx0XHRcdFx0XHRmb250LXNpemU6IDQ4dXB4O1xyXG5cdFx0XHRcdFx0Zm9udC1mYW1pbHk6IEZaWmhlbmdIZWlTLU0tR0I7XHJcblx0XHRcdFx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0XHRcdFx0Y29sb3I6ICNGRkZGRkY7XHJcblx0XHRcdFx0XHRsZXR0ZXItc3BhY2luZzogM3B4O1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0LnRpdGxlRU4ge1xyXG5cdFx0XHRcdFx0bWFyZ2luLXRvcDogNXB4O1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAyNHVweDtcclxuXHRcdFx0XHRcdGNvbG9yOiAjRTVFOUYyO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC5sb2dpbi1mb3JtLWNvbnRlbnQge1xyXG5cdFx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRcdG1hcmdpbjogMjBweCBhdXRvO1xyXG5cdFx0XHRtYXJnaW4tdG9wOiA2MCU7XHJcblx0XHRcdHdpZHRoOiA4MCU7XHJcblxyXG5cdFx0XHQuaW5wdXQtaXRlbSB7XHJcblx0XHRcdFx0bWFyZ2luOiAyMHB4IGF1dG87XHJcblx0XHRcdFx0Ly8gYmFja2dyb3VuZC1jb2xvcjogI2Y1ZjZmNztcclxuXHRcdFx0XHRoZWlnaHQ6IDQ1cHg7XHJcblxyXG5cdFx0XHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZjVmNmY3O1xyXG5cclxuXHRcdFx0XHRpbWFnZSB7XHJcblx0XHRcdFx0XHR3aWR0aDogMjBweDtcclxuXHRcdFx0XHRcdGhlaWdodDogMjNweDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC5pbnB1dCB7XHJcblx0XHRcdFx0XHRjb2xvcjogI2ZmZjtcclxuXHRcdFx0XHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0XHRcdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdFx0XHRcdFx0bGluZS1oZWlnaHQ6IDIwcHg7XHJcblx0XHRcdFx0XHR0ZXh0LWFsaWduOiBsZWZ0O1xyXG5cdFx0XHRcdFx0cGFkZGluZy1sZWZ0OiAxNXB4O1xyXG5cclxuXHRcdFx0XHRcdC51bmktaW5wdXQtd3JhcHBlciB7XHJcblx0XHRcdFx0XHRcdC5pbnB1dC1wbGFjZWhvbGRlciB7XHJcblx0XHRcdFx0XHRcdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRcdFx0XHRcdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cclxuXHJcblx0XHRcdH1cclxuXHJcblx0XHRcdC5sb2dpbi1idG4ge1xyXG5cdFx0XHRcdG1hcmdpbi10b3A6IDMwcHg7XHJcblx0XHRcdFx0aGVpZ2h0OiA0MHB4O1xyXG5cdFx0XHRcdGNvbG9yOiAjZmZmO1xyXG5cdFx0XHRcdGJhY2tncm91bmQ6ICM0Mjg3RkY7XHJcblx0XHRcdFx0Ym9yZGVyLXJhZGl1czogMTBweDtcclxuXHRcdFx0XHRsZXR0ZXItc3BhY2luZzogMTBweDtcclxuXHRcdFx0XHRsaW5lLWhlaWdodDogNDBweDtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cclxuXHRcdC5lYXN5aW5wdXQge1xyXG5cdFx0XHR3aWR0aDogMTAwJTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdC5sb2dpbi1jb2RlLWltZyB7XHJcblx0XHRoZWlnaHQ6IDQ1cHg7XHJcblx0fVxyXG48L3N0eWxlPiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///14\n");
  376. /***/ }),
  377. /* 15 */
  378. /*!**********************************************************!*\
  379. !*** ./node_modules/@babel/runtime/regenerator/index.js ***!
  380. \**********************************************************/
  381. /*! no static exports found */
  382. /***/ (function(module, exports, __webpack_require__) {
  383. var _typeof = __webpack_require__(/*! @babel/runtime/helpers/typeof */ 4);
  384. // TODO(Babel 8): Remove this file.
  385. var runtime = __webpack_require__(/*! ../helpers/regeneratorRuntime */ 16)();
  386. module.exports = runtime;
  387. // Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=
  388. try {
  389. regeneratorRuntime = runtime;
  390. } catch (accidentalStrictMode) {
  391. if ((typeof globalThis === "undefined" ? "undefined" : _typeof(globalThis)) === "object") {
  392. globalThis.regeneratorRuntime = runtime;
  393. } else {
  394. Function("r", "regeneratorRuntime = r")(runtime);
  395. }
  396. }
  397. /***/ }),
  398. /* 16 */
  399. /*!*******************************************************************!*\
  400. !*** ./node_modules/@babel/runtime/helpers/regeneratorRuntime.js ***!
  401. \*******************************************************************/
  402. /*! no static exports found */
  403. /***/ (function(module, exports, __webpack_require__) {
  404. var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
  405. function _regeneratorRuntime() {
  406. "use strict";
  407. /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */
  408. module.exports = _regeneratorRuntime = function _regeneratorRuntime() {
  409. return exports;
  410. }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  411. var exports = {},
  412. Op = Object.prototype,
  413. hasOwn = Op.hasOwnProperty,
  414. defineProperty = Object.defineProperty || function (obj, key, desc) {
  415. obj[key] = desc.value;
  416. },
  417. $Symbol = "function" == typeof Symbol ? Symbol : {},
  418. iteratorSymbol = $Symbol.iterator || "@@iterator",
  419. asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator",
  420. toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
  421. function define(obj, key, value) {
  422. return Object.defineProperty(obj, key, {
  423. value: value,
  424. enumerable: !0,
  425. configurable: !0,
  426. writable: !0
  427. }), obj[key];
  428. }
  429. try {
  430. define({}, "");
  431. } catch (err) {
  432. define = function define(obj, key, value) {
  433. return obj[key] = value;
  434. };
  435. }
  436. function wrap(innerFn, outerFn, self, tryLocsList) {
  437. var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,
  438. generator = Object.create(protoGenerator.prototype),
  439. context = new Context(tryLocsList || []);
  440. return defineProperty(generator, "_invoke", {
  441. value: makeInvokeMethod(innerFn, self, context)
  442. }), generator;
  443. }
  444. function tryCatch(fn, obj, arg) {
  445. try {
  446. return {
  447. type: "normal",
  448. arg: fn.call(obj, arg)
  449. };
  450. } catch (err) {
  451. return {
  452. type: "throw",
  453. arg: err
  454. };
  455. }
  456. }
  457. exports.wrap = wrap;
  458. var ContinueSentinel = {};
  459. function Generator() {}
  460. function GeneratorFunction() {}
  461. function GeneratorFunctionPrototype() {}
  462. var IteratorPrototype = {};
  463. define(IteratorPrototype, iteratorSymbol, function () {
  464. return this;
  465. });
  466. var getProto = Object.getPrototypeOf,
  467. NativeIteratorPrototype = getProto && getProto(getProto(values([])));
  468. NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);
  469. var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);
  470. function defineIteratorMethods(prototype) {
  471. ["next", "throw", "return"].forEach(function (method) {
  472. define(prototype, method, function (arg) {
  473. return this._invoke(method, arg);
  474. });
  475. });
  476. }
  477. function AsyncIterator(generator, PromiseImpl) {
  478. function invoke(method, arg, resolve, reject) {
  479. var record = tryCatch(generator[method], generator, arg);
  480. if ("throw" !== record.type) {
  481. var result = record.arg,
  482. value = result.value;
  483. return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) {
  484. invoke("next", value, resolve, reject);
  485. }, function (err) {
  486. invoke("throw", err, resolve, reject);
  487. }) : PromiseImpl.resolve(value).then(function (unwrapped) {
  488. result.value = unwrapped, resolve(result);
  489. }, function (error) {
  490. return invoke("throw", error, resolve, reject);
  491. });
  492. }
  493. reject(record.arg);
  494. }
  495. var previousPromise;
  496. defineProperty(this, "_invoke", {
  497. value: function value(method, arg) {
  498. function callInvokeWithMethodAndArg() {
  499. return new PromiseImpl(function (resolve, reject) {
  500. invoke(method, arg, resolve, reject);
  501. });
  502. }
  503. return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();
  504. }
  505. });
  506. }
  507. function makeInvokeMethod(innerFn, self, context) {
  508. var state = "suspendedStart";
  509. return function (method, arg) {
  510. if ("executing" === state) throw new Error("Generator is already running");
  511. if ("completed" === state) {
  512. if ("throw" === method) throw arg;
  513. return doneResult();
  514. }
  515. for (context.method = method, context.arg = arg;;) {
  516. var delegate = context.delegate;
  517. if (delegate) {
  518. var delegateResult = maybeInvokeDelegate(delegate, context);
  519. if (delegateResult) {
  520. if (delegateResult === ContinueSentinel) continue;
  521. return delegateResult;
  522. }
  523. }
  524. if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) {
  525. if ("suspendedStart" === state) throw state = "completed", context.arg;
  526. context.dispatchException(context.arg);
  527. } else "return" === context.method && context.abrupt("return", context.arg);
  528. state = "executing";
  529. var record = tryCatch(innerFn, self, context);
  530. if ("normal" === record.type) {
  531. if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue;
  532. return {
  533. value: record.arg,
  534. done: context.done
  535. };
  536. }
  537. "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg);
  538. }
  539. };
  540. }
  541. function maybeInvokeDelegate(delegate, context) {
  542. var methodName = context.method,
  543. method = delegate.iterator[methodName];
  544. if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel;
  545. var record = tryCatch(method, delegate.iterator, context.arg);
  546. if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel;
  547. var info = record.arg;
  548. return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel);
  549. }
  550. function pushTryEntry(locs) {
  551. var entry = {
  552. tryLoc: locs[0]
  553. };
  554. 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);
  555. }
  556. function resetTryEntry(entry) {
  557. var record = entry.completion || {};
  558. record.type = "normal", delete record.arg, entry.completion = record;
  559. }
  560. function Context(tryLocsList) {
  561. this.tryEntries = [{
  562. tryLoc: "root"
  563. }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);
  564. }
  565. function values(iterable) {
  566. if (iterable) {
  567. var iteratorMethod = iterable[iteratorSymbol];
  568. if (iteratorMethod) return iteratorMethod.call(iterable);
  569. if ("function" == typeof iterable.next) return iterable;
  570. if (!isNaN(iterable.length)) {
  571. var i = -1,
  572. next = function next() {
  573. for (; ++i < iterable.length;) {
  574. if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;
  575. }
  576. return next.value = undefined, next.done = !0, next;
  577. };
  578. return next.next = next;
  579. }
  580. }
  581. return {
  582. next: doneResult
  583. };
  584. }
  585. function doneResult() {
  586. return {
  587. value: undefined,
  588. done: !0
  589. };
  590. }
  591. return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", {
  592. value: GeneratorFunctionPrototype,
  593. configurable: !0
  594. }), defineProperty(GeneratorFunctionPrototype, "constructor", {
  595. value: GeneratorFunction,
  596. configurable: !0
  597. }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) {
  598. var ctor = "function" == typeof genFun && genFun.constructor;
  599. return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name));
  600. }, exports.mark = function (genFun) {
  601. return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun;
  602. }, exports.awrap = function (arg) {
  603. return {
  604. __await: arg
  605. };
  606. }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {
  607. return this;
  608. }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {
  609. void 0 === PromiseImpl && (PromiseImpl = Promise);
  610. var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);
  611. return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {
  612. return result.done ? result.value : iter.next();
  613. });
  614. }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () {
  615. return this;
  616. }), define(Gp, "toString", function () {
  617. return "[object Generator]";
  618. }), exports.keys = function (val) {
  619. var object = Object(val),
  620. keys = [];
  621. for (var key in object) {
  622. keys.push(key);
  623. }
  624. return keys.reverse(), function next() {
  625. for (; keys.length;) {
  626. var key = keys.pop();
  627. if (key in object) return next.value = key, next.done = !1, next;
  628. }
  629. return next.done = !0, next;
  630. };
  631. }, exports.values = values, Context.prototype = {
  632. constructor: Context,
  633. reset: function reset(skipTempReset) {
  634. if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {
  635. "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);
  636. }
  637. },
  638. stop: function stop() {
  639. this.done = !0;
  640. var rootRecord = this.tryEntries[0].completion;
  641. if ("throw" === rootRecord.type) throw rootRecord.arg;
  642. return this.rval;
  643. },
  644. dispatchException: function dispatchException(exception) {
  645. if (this.done) throw exception;
  646. var context = this;
  647. function handle(loc, caught) {
  648. return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught;
  649. }
  650. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  651. var entry = this.tryEntries[i],
  652. record = entry.completion;
  653. if ("root" === entry.tryLoc) return handle("end");
  654. if (entry.tryLoc <= this.prev) {
  655. var hasCatch = hasOwn.call(entry, "catchLoc"),
  656. hasFinally = hasOwn.call(entry, "finallyLoc");
  657. if (hasCatch && hasFinally) {
  658. if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
  659. if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
  660. } else if (hasCatch) {
  661. if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);
  662. } else {
  663. if (!hasFinally) throw new Error("try statement without catch or finally");
  664. if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);
  665. }
  666. }
  667. }
  668. },
  669. abrupt: function abrupt(type, arg) {
  670. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  671. var entry = this.tryEntries[i];
  672. if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) {
  673. var finallyEntry = entry;
  674. break;
  675. }
  676. }
  677. finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);
  678. var record = finallyEntry ? finallyEntry.completion : {};
  679. return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);
  680. },
  681. complete: function complete(record, afterLoc) {
  682. if ("throw" === record.type) throw record.arg;
  683. return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;
  684. },
  685. finish: function finish(finallyLoc) {
  686. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  687. var entry = this.tryEntries[i];
  688. if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;
  689. }
  690. },
  691. "catch": function _catch(tryLoc) {
  692. for (var i = this.tryEntries.length - 1; i >= 0; --i) {
  693. var entry = this.tryEntries[i];
  694. if (entry.tryLoc === tryLoc) {
  695. var record = entry.completion;
  696. if ("throw" === record.type) {
  697. var thrown = record.arg;
  698. resetTryEntry(entry);
  699. }
  700. return thrown;
  701. }
  702. }
  703. throw new Error("illegal catch attempt");
  704. },
  705. delegateYield: function delegateYield(iterable, resultName, nextLoc) {
  706. return this.delegate = {
  707. iterator: values(iterable),
  708. resultName: resultName,
  709. nextLoc: nextLoc
  710. }, "next" === this.method && (this.arg = undefined), ContinueSentinel;
  711. }
  712. }, exports;
  713. }
  714. module.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports["default"] = module.exports;
  715. /***/ }),
  716. /* 17 */
  717. /*!*****************************************************************!*\
  718. !*** ./node_modules/@babel/runtime/helpers/asyncToGenerator.js ***!
  719. \*****************************************************************/
  720. /*! no static exports found */
  721. /***/ (function(module, exports) {
  722. function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
  723. try {
  724. var info = gen[key](arg);
  725. var value = info.value;
  726. } catch (error) {
  727. reject(error);
  728. return;
  729. }
  730. if (info.done) {
  731. resolve(value);
  732. } else {
  733. Promise.resolve(value).then(_next, _throw);
  734. }
  735. }
  736. function _asyncToGenerator(fn) {
  737. return function () {
  738. var self = this,
  739. args = arguments;
  740. return new Promise(function (resolve, reject) {
  741. var gen = fn.apply(self, args);
  742. function _next(value) {
  743. asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
  744. }
  745. function _throw(err) {
  746. asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
  747. }
  748. _next(undefined);
  749. });
  750. };
  751. }
  752. module.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports["default"] = module.exports;
  753. /***/ }),
  754. /* 18 */
  755. /*!**********************************************************************************************************!*\
  756. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js ***!
  757. \**********************************************************************************************************/
  758. /*! exports provided: default */
  759. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  760. "use strict";
  761. __webpack_require__.r(__webpack_exports__);
  762. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return normalizeComponent; });
  763. /* globals __VUE_SSR_CONTEXT__ */
  764. // IMPORTANT: Do NOT use ES2015 features in this file (except for modules).
  765. // This module is a runtime utility for cleaner component module output and will
  766. // be included in the final webpack user bundle.
  767. function normalizeComponent (
  768. scriptExports,
  769. render,
  770. staticRenderFns,
  771. functionalTemplate,
  772. injectStyles,
  773. scopeId,
  774. moduleIdentifier, /* server only */
  775. shadowMode, /* vue-cli only */
  776. components, // fixed by xxxxxx auto components
  777. renderjs // fixed by xxxxxx renderjs
  778. ) {
  779. // Vue.extend constructor export interop
  780. var options = typeof scriptExports === 'function'
  781. ? scriptExports.options
  782. : scriptExports
  783. // fixed by xxxxxx auto components
  784. if (components) {
  785. if (!options.components) {
  786. options.components = {}
  787. }
  788. var hasOwn = Object.prototype.hasOwnProperty
  789. for (var name in components) {
  790. if (hasOwn.call(components, name) && !hasOwn.call(options.components, name)) {
  791. options.components[name] = components[name]
  792. }
  793. }
  794. }
  795. // fixed by xxxxxx renderjs
  796. if (renderjs) {
  797. if(typeof renderjs.beforeCreate === 'function'){
  798. renderjs.beforeCreate = [renderjs.beforeCreate]
  799. }
  800. (renderjs.beforeCreate || (renderjs.beforeCreate = [])).unshift(function() {
  801. this[renderjs.__module] = this
  802. });
  803. (options.mixins || (options.mixins = [])).push(renderjs)
  804. }
  805. // render functions
  806. if (render) {
  807. options.render = render
  808. options.staticRenderFns = staticRenderFns
  809. options._compiled = true
  810. }
  811. // functional template
  812. if (functionalTemplate) {
  813. options.functional = true
  814. }
  815. // scopedId
  816. if (scopeId) {
  817. options._scopeId = 'data-v-' + scopeId
  818. }
  819. var hook
  820. if (moduleIdentifier) { // server build
  821. hook = function (context) {
  822. // 2.3 injection
  823. context =
  824. context || // cached call
  825. (this.$vnode && this.$vnode.ssrContext) || // stateful
  826. (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional
  827. // 2.2 with runInNewContext: true
  828. if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {
  829. context = __VUE_SSR_CONTEXT__
  830. }
  831. // inject component styles
  832. if (injectStyles) {
  833. injectStyles.call(this, context)
  834. }
  835. // register component module identifier for async chunk inferrence
  836. if (context && context._registeredComponents) {
  837. context._registeredComponents.add(moduleIdentifier)
  838. }
  839. }
  840. // used by ssr in case component is cached and beforeCreate
  841. // never gets called
  842. options._ssrRegister = hook
  843. } else if (injectStyles) {
  844. hook = shadowMode
  845. ? function () { injectStyles.call(this, this.$root.$options.shadowRoot) }
  846. : injectStyles
  847. }
  848. if (hook) {
  849. if (options.functional) {
  850. // for template-only hot-reload because in that case the render fn doesn't
  851. // go through the normalizer
  852. options._injectStyles = hook
  853. // register for functioal component in vue file
  854. var originalRender = options.render
  855. options.render = function renderWithStyleInjection (h, context) {
  856. hook.call(context)
  857. return originalRender(h, context)
  858. }
  859. } else {
  860. // inject component registration as beforeCreate hook
  861. var existing = options.beforeCreate
  862. options.beforeCreate = existing
  863. ? [].concat(existing, hook)
  864. : [hook]
  865. }
  866. }
  867. return {
  868. exports: scriptExports,
  869. options: options
  870. }
  871. }
  872. /***/ }),
  873. /* 19 */
  874. /*!************************************************************************!*\
  875. !*** D:/Intelligent/jn_uniapp/jn_app/pages/home/index.vue?mpType=page ***!
  876. \************************************************************************/
  877. /*! no static exports found */
  878. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  879. "use strict";
  880. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=3d4d74ab&mpType=page */ 20);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 37);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/home/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0zZDRkNzRhYiZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvaG9tZS9pbmRleC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///19\n");
  881. /***/ }),
  882. /* 20 */
  883. /*!******************************************************************************************************!*\
  884. !*** D:/Intelligent/jn_uniapp/jn_app/pages/home/index.vue?vue&type=template&id=3d4d74ab&mpType=page ***!
  885. \******************************************************************************************************/
  886. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  887. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  888. "use strict";
  889. __webpack_require__.r(__webpack_exports__);
  890. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=3d4d74ab&mpType=page */ 21);
  891. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
  892. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  893. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  894. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_3d4d74ab_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
  895. /***/ }),
  896. /* 21 */
  897. /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  898. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/home/index.vue?vue&type=template&id=3d4d74ab&mpType=page ***!
  899. \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  900. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  901. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  902. "use strict";
  903. __webpack_require__.r(__webpack_exports__);
  904. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  905. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  906. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  907. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  908. var components
  909. var render = function () {
  910. var _vm = this
  911. var _h = _vm.$createElement
  912. var _c = _vm._self._c || _h
  913. return _c(
  914. "view",
  915. { staticClass: _vm._$s(0, "sc", "home"), attrs: { _i: 0 } },
  916. [
  917. _c(
  918. "view",
  919. { staticClass: _vm._$s(1, "sc", "home_header"), attrs: { _i: 1 } },
  920. [
  921. _c(
  922. "view",
  923. {
  924. staticClass: _vm._$s(2, "sc", "header_message"),
  925. attrs: { _i: 2 },
  926. },
  927. [
  928. _c("image", {
  929. attrs: {
  930. src: _vm._$s(
  931. 3,
  932. "a-src",
  933. __webpack_require__(/*! ../../static/jnImage/indexPage/message.png */ 22)
  934. ),
  935. _i: 3,
  936. },
  937. }),
  938. ]
  939. ),
  940. _c(
  941. "view",
  942. { staticClass: _vm._$s(4, "sc", "header_title"), attrs: { _i: 4 } },
  943. [
  944. _c("image", {
  945. attrs: {
  946. src: _vm._$s(
  947. 5,
  948. "a-src",
  949. __webpack_require__(/*! ../../static/jnImage/loginPage/logo.png */ 10)
  950. ),
  951. _i: 5,
  952. },
  953. }),
  954. _c("text", {
  955. staticClass: _vm._$s(6, "sc", "titleName"),
  956. attrs: { _i: 6 },
  957. }),
  958. ]
  959. ),
  960. _c(
  961. "view",
  962. { staticClass: _vm._$s(7, "sc", "header_more"), attrs: { _i: 7 } },
  963. [
  964. _c("image", {
  965. attrs: {
  966. src: _vm._$s(
  967. 8,
  968. "a-src",
  969. __webpack_require__(/*! ../../static/jnImage/indexPage/more.png */ 23)
  970. ),
  971. _i: 8,
  972. },
  973. }),
  974. ]
  975. ),
  976. ]
  977. ),
  978. _c(
  979. "view",
  980. { staticClass: _vm._$s(9, "sc", "home_main"), attrs: { _i: 9 } },
  981. [
  982. _c(
  983. "view",
  984. { staticClass: _vm._$s(10, "sc", "main_time"), attrs: { _i: 10 } },
  985. [
  986. _c(
  987. "view",
  988. {
  989. staticClass: _vm._$s(11, "sc", "mesTime"),
  990. attrs: { _i: 11 },
  991. },
  992. [
  993. _c("image", {
  994. attrs: {
  995. src: _vm._$s(
  996. 12,
  997. "a-src",
  998. __webpack_require__(/*! ../../static/jnImage/indexPage/time.png */ 24)
  999. ),
  1000. _i: 12,
  1001. },
  1002. }),
  1003. _c("text"),
  1004. _c("text"),
  1005. _c("text"),
  1006. ]
  1007. ),
  1008. _c(
  1009. "view",
  1010. { staticClass: _vm._$s(16, "sc", "mesAll"), attrs: { _i: 16 } },
  1011. [
  1012. _vm._l(
  1013. _vm._$s(17, "f", { forItems: _vm.mesExData }),
  1014. function (item, index, $20, $30) {
  1015. return _c(
  1016. "view",
  1017. {
  1018. key: _vm._$s(17, "f", { forIndex: $20, key: index }),
  1019. staticClass: _vm._$s("17-" + $30, "sc", "mesEx"),
  1020. attrs: { _i: "17-" + $30 },
  1021. },
  1022. [
  1023. _c(
  1024. "view",
  1025. {
  1026. staticClass: _vm._$s(
  1027. "18-" + $30,
  1028. "sc",
  1029. "mesEx_left"
  1030. ),
  1031. attrs: { _i: "18-" + $30 },
  1032. },
  1033. [
  1034. _c(
  1035. "text",
  1036. {
  1037. staticClass: _vm._$s(
  1038. "19-" + $30,
  1039. "sc",
  1040. "mesEx_left_top"
  1041. ),
  1042. attrs: { _i: "19-" + $30 },
  1043. },
  1044. [
  1045. _c(
  1046. "text",
  1047. {
  1048. staticClass: _vm._$s(
  1049. "20-" + $30,
  1050. "sc",
  1051. "nameSty"
  1052. ),
  1053. attrs: { _i: "20-" + $30 },
  1054. },
  1055. [
  1056. _vm._v(
  1057. _vm._$s(
  1058. "20-" + $30,
  1059. "t0-0",
  1060. _vm._s(item.leftName)
  1061. )
  1062. ),
  1063. ]
  1064. ),
  1065. ]
  1066. ),
  1067. _c(
  1068. "view",
  1069. {
  1070. staticClass: _vm._$s(
  1071. "21-" + $30,
  1072. "sc",
  1073. " mesEx_left_end"
  1074. ),
  1075. attrs: { _i: "21-" + $30 },
  1076. },
  1077. [
  1078. _c("text", [
  1079. _vm._v(
  1080. _vm._$s(
  1081. "22-" + $30,
  1082. "t0-0",
  1083. _vm._s(item.leftValue)
  1084. )
  1085. ),
  1086. ]),
  1087. _c("text", [
  1088. _vm._v(
  1089. _vm._$s(
  1090. "23-" + $30,
  1091. "t0-0",
  1092. _vm._s(item.leftCode)
  1093. )
  1094. ),
  1095. ]),
  1096. ]
  1097. ),
  1098. ]
  1099. ),
  1100. _c(
  1101. "view",
  1102. {
  1103. staticClass: _vm._$s(
  1104. "24-" + $30,
  1105. "sc",
  1106. "mesEx_left"
  1107. ),
  1108. attrs: { _i: "24-" + $30 },
  1109. },
  1110. [
  1111. _c(
  1112. "text",
  1113. {
  1114. staticClass: _vm._$s(
  1115. "25-" + $30,
  1116. "sc",
  1117. "mesEx_left_top"
  1118. ),
  1119. attrs: { _i: "25-" + $30 },
  1120. },
  1121. [
  1122. _c(
  1123. "text",
  1124. {
  1125. staticClass: _vm._$s(
  1126. "26-" + $30,
  1127. "sc",
  1128. "nameSty"
  1129. ),
  1130. attrs: { _i: "26-" + $30 },
  1131. },
  1132. [
  1133. _vm._v(
  1134. _vm._$s(
  1135. "26-" + $30,
  1136. "t0-0",
  1137. _vm._s(item.rightName)
  1138. )
  1139. ),
  1140. ]
  1141. ),
  1142. ]
  1143. ),
  1144. _c(
  1145. "view",
  1146. {
  1147. staticClass: _vm._$s(
  1148. "27-" + $30,
  1149. "sc",
  1150. "mesEx_left_end"
  1151. ),
  1152. attrs: { _i: "27-" + $30 },
  1153. },
  1154. [
  1155. _c("text", [
  1156. _vm._v(
  1157. _vm._$s(
  1158. "28-" + $30,
  1159. "t0-0",
  1160. _vm._s(item.rightValue)
  1161. )
  1162. ),
  1163. ]),
  1164. _c("text", [
  1165. _vm._v(
  1166. _vm._$s(
  1167. "29-" + $30,
  1168. "t0-0",
  1169. _vm._s(item.rightCode)
  1170. )
  1171. ),
  1172. ]),
  1173. ]
  1174. ),
  1175. ]
  1176. ),
  1177. ]
  1178. )
  1179. }
  1180. ),
  1181. _c(
  1182. "view",
  1183. {
  1184. staticClass: _vm._$s(30, "sc", "windMsg"),
  1185. attrs: { _i: 30 },
  1186. },
  1187. [
  1188. _c(
  1189. "view",
  1190. {
  1191. staticClass: _vm._$s(31, "sc", "flex justify-center"),
  1192. attrs: { _i: 31 },
  1193. },
  1194. [
  1195. _c(
  1196. "view",
  1197. {
  1198. staticClass: _vm._$s(32, "sc", "windMsg_title"),
  1199. attrs: { _i: 32 },
  1200. },
  1201. [
  1202. _c("image", {
  1203. attrs: {
  1204. src: _vm._$s(
  1205. 33,
  1206. "a-src",
  1207. __webpack_require__(/*! ../../static/jnImage/indexPage/wancheng.png */ 25)
  1208. ),
  1209. _i: 33,
  1210. },
  1211. }),
  1212. _c("text"),
  1213. ]
  1214. ),
  1215. ]
  1216. ),
  1217. _c(
  1218. "view",
  1219. {
  1220. staticClass: _vm._$s(35, "sc", "windMsg_main"),
  1221. attrs: { _i: 35 },
  1222. },
  1223. [
  1224. _c(
  1225. "view",
  1226. {
  1227. staticClass: _vm._$s(
  1228. 36,
  1229. "sc",
  1230. "windMsg_main_msg flex justify-between"
  1231. ),
  1232. attrs: { _i: 36 },
  1233. },
  1234. [
  1235. _c(
  1236. "view",
  1237. {
  1238. staticClass: _vm._$s(
  1239. 37,
  1240. "sc",
  1241. "windMsgSty flex"
  1242. ),
  1243. attrs: { _i: 37 },
  1244. },
  1245. [
  1246. _c(
  1247. "view",
  1248. {
  1249. staticClass: _vm._$s(
  1250. 38,
  1251. "sc",
  1252. "windMsgSty_left"
  1253. ),
  1254. attrs: { _i: 38 },
  1255. },
  1256. [
  1257. _c("image", {
  1258. attrs: {
  1259. src: _vm._$s(
  1260. 39,
  1261. "a-src",
  1262. __webpack_require__(/*! ../../static/jnImage/indexPage/jieru.png */ 26)
  1263. ),
  1264. _i: 39,
  1265. },
  1266. }),
  1267. _c("text"),
  1268. ]
  1269. ),
  1270. _c(
  1271. "view",
  1272. {
  1273. staticClass: _vm._$s(
  1274. 41,
  1275. "sc",
  1276. "windMsgSty_right flex justify-between"
  1277. ),
  1278. attrs: { _i: 41 },
  1279. },
  1280. [_c("text"), _c("text")]
  1281. ),
  1282. ]
  1283. ),
  1284. _c(
  1285. "view",
  1286. {
  1287. staticClass: _vm._$s(
  1288. 44,
  1289. "sc",
  1290. "windMsgSty flex"
  1291. ),
  1292. attrs: { _i: 44 },
  1293. },
  1294. [
  1295. _c(
  1296. "view",
  1297. {
  1298. staticClass: _vm._$s(
  1299. 45,
  1300. "sc",
  1301. "windMsgSty_left"
  1302. ),
  1303. attrs: { _i: 45 },
  1304. },
  1305. [
  1306. _c("image", {
  1307. attrs: {
  1308. src: _vm._$s(
  1309. 46,
  1310. "a-src",
  1311. __webpack_require__(/*! ../../static/jnImage/indexPage/daiji.png */ 27)
  1312. ),
  1313. _i: 46,
  1314. },
  1315. }),
  1316. _c("text"),
  1317. ]
  1318. ),
  1319. _c(
  1320. "view",
  1321. {
  1322. staticClass: _vm._$s(
  1323. 48,
  1324. "sc",
  1325. "windMsgSty_right flex justify-between"
  1326. ),
  1327. attrs: { _i: 48 },
  1328. },
  1329. [_c("text"), _c("text")]
  1330. ),
  1331. ]
  1332. ),
  1333. ]
  1334. ),
  1335. _c(
  1336. "view",
  1337. {
  1338. staticClass: _vm._$s(
  1339. 51,
  1340. "sc",
  1341. "windMsg_main_msg flex justify-between"
  1342. ),
  1343. attrs: { _i: 51 },
  1344. },
  1345. [
  1346. _c(
  1347. "view",
  1348. {
  1349. staticClass: _vm._$s(
  1350. 52,
  1351. "sc",
  1352. "windMsgSty flex"
  1353. ),
  1354. attrs: { _i: 52 },
  1355. },
  1356. [
  1357. _c(
  1358. "view",
  1359. {
  1360. staticClass: _vm._$s(
  1361. 53,
  1362. "sc",
  1363. "windMsgSty_left"
  1364. ),
  1365. attrs: { _i: 53 },
  1366. },
  1367. [
  1368. _c("image", {
  1369. attrs: {
  1370. src: _vm._$s(
  1371. 54,
  1372. "a-src",
  1373. __webpack_require__(/*! ../../static/jnImage/indexPage/yunxing.png */ 28)
  1374. ),
  1375. _i: 54,
  1376. },
  1377. }),
  1378. _c("text"),
  1379. ]
  1380. ),
  1381. _c(
  1382. "view",
  1383. {
  1384. staticClass: _vm._$s(
  1385. 56,
  1386. "sc",
  1387. "windMsgSty_right flex justify-between"
  1388. ),
  1389. attrs: { _i: 56 },
  1390. },
  1391. [_c("text"), _c("text")]
  1392. ),
  1393. ]
  1394. ),
  1395. _c(
  1396. "view",
  1397. {
  1398. staticClass: _vm._$s(
  1399. 59,
  1400. "sc",
  1401. "windMsgSty flex"
  1402. ),
  1403. attrs: { _i: 59 },
  1404. },
  1405. [
  1406. _c(
  1407. "view",
  1408. {
  1409. staticClass: _vm._$s(
  1410. 60,
  1411. "sc",
  1412. "windMsgSty_left"
  1413. ),
  1414. attrs: { _i: 60 },
  1415. },
  1416. [
  1417. _c("image", {
  1418. attrs: {
  1419. src: _vm._$s(
  1420. 61,
  1421. "a-src",
  1422. __webpack_require__(/*! ../../static/jnImage/indexPage/guzhang.png */ 29)
  1423. ),
  1424. _i: 61,
  1425. },
  1426. }),
  1427. _c("text"),
  1428. ]
  1429. ),
  1430. _c(
  1431. "view",
  1432. {
  1433. staticClass: _vm._$s(
  1434. 63,
  1435. "sc",
  1436. "windMsgSty_right flex justify-between"
  1437. ),
  1438. attrs: { _i: 63 },
  1439. },
  1440. [_c("text"), _c("text")]
  1441. ),
  1442. ]
  1443. ),
  1444. ]
  1445. ),
  1446. _c(
  1447. "view",
  1448. {
  1449. staticClass: _vm._$s(
  1450. 66,
  1451. "sc",
  1452. "windMsg_main_msg flex justify-between"
  1453. ),
  1454. attrs: { _i: 66 },
  1455. },
  1456. [
  1457. _c(
  1458. "view",
  1459. {
  1460. staticClass: _vm._$s(
  1461. 67,
  1462. "sc",
  1463. "windMsgSty flex"
  1464. ),
  1465. attrs: { _i: 67 },
  1466. },
  1467. [
  1468. _c(
  1469. "view",
  1470. {
  1471. staticClass: _vm._$s(
  1472. 68,
  1473. "sc",
  1474. "windMsgSty_left"
  1475. ),
  1476. attrs: { _i: 68 },
  1477. },
  1478. [
  1479. _c("image", {
  1480. attrs: {
  1481. src: _vm._$s(
  1482. 69,
  1483. "a-src",
  1484. __webpack_require__(/*! ../../static/jnImage/indexPage/weihu.png */ 30)
  1485. ),
  1486. _i: 69,
  1487. },
  1488. }),
  1489. _c("text"),
  1490. ]
  1491. ),
  1492. _c(
  1493. "view",
  1494. {
  1495. staticClass: _vm._$s(
  1496. 71,
  1497. "sc",
  1498. "windMsgSty_right flex justify-between"
  1499. ),
  1500. attrs: { _i: 71 },
  1501. },
  1502. [_c("text"), _c("text")]
  1503. ),
  1504. ]
  1505. ),
  1506. _c(
  1507. "view",
  1508. {
  1509. staticClass: _vm._$s(
  1510. 74,
  1511. "sc",
  1512. "windMsgSty flex"
  1513. ),
  1514. attrs: { _i: 74 },
  1515. },
  1516. [
  1517. _c(
  1518. "view",
  1519. {
  1520. staticClass: _vm._$s(
  1521. 75,
  1522. "sc",
  1523. "windMsgSty_left"
  1524. ),
  1525. attrs: { _i: 75 },
  1526. },
  1527. [
  1528. _c("image", {
  1529. attrs: {
  1530. src: _vm._$s(
  1531. 76,
  1532. "a-src",
  1533. __webpack_require__(/*! ../../static/jnImage/indexPage/lixian.png */ 31)
  1534. ),
  1535. _i: 76,
  1536. },
  1537. }),
  1538. _c("text"),
  1539. ]
  1540. ),
  1541. _c(
  1542. "view",
  1543. {
  1544. staticClass: _vm._$s(
  1545. 78,
  1546. "sc",
  1547. "windMsgSty_right flex justify-between"
  1548. ),
  1549. attrs: { _i: 78 },
  1550. },
  1551. [_c("text"), _c("text")]
  1552. ),
  1553. ]
  1554. ),
  1555. ]
  1556. ),
  1557. ]
  1558. ),
  1559. ]
  1560. ),
  1561. _c(
  1562. "view",
  1563. {
  1564. staticClass: _vm._$s(81, "sc", "powerMsg"),
  1565. attrs: { _i: 81 },
  1566. },
  1567. [
  1568. _c(
  1569. "view",
  1570. {
  1571. staticClass: _vm._$s(82, "sc", "flex justify-center"),
  1572. attrs: { _i: 82 },
  1573. },
  1574. [
  1575. _c(
  1576. "view",
  1577. {
  1578. staticClass: _vm._$s(83, "sc", "windMsg_title"),
  1579. attrs: { _i: 83 },
  1580. },
  1581. [
  1582. _c("image", {
  1583. attrs: {
  1584. src: _vm._$s(
  1585. 84,
  1586. "a-src",
  1587. __webpack_require__(/*! ../../static/jnImage/indexPage/wancheng.png */ 25)
  1588. ),
  1589. _i: 84,
  1590. },
  1591. }),
  1592. _c("text"),
  1593. ]
  1594. ),
  1595. ]
  1596. ),
  1597. _c(
  1598. "view",
  1599. {
  1600. staticClass: _vm._$s(86, "sc", "windMsg_main"),
  1601. attrs: { _i: 86 },
  1602. },
  1603. [
  1604. _c(
  1605. "view",
  1606. {
  1607. staticClass: _vm._$s(
  1608. 87,
  1609. "sc",
  1610. "windMsg_main_msg flex justify-between"
  1611. ),
  1612. attrs: { _i: 87 },
  1613. },
  1614. [
  1615. _c(
  1616. "view",
  1617. {
  1618. staticClass: _vm._$s(
  1619. 88,
  1620. "sc",
  1621. "windMsgSty flex"
  1622. ),
  1623. attrs: { _i: 88 },
  1624. },
  1625. [
  1626. _c(
  1627. "view",
  1628. {
  1629. staticClass: _vm._$s(
  1630. 89,
  1631. "sc",
  1632. "windMsgSty_left"
  1633. ),
  1634. attrs: { _i: 89 },
  1635. },
  1636. [
  1637. _c("image", {
  1638. attrs: {
  1639. src: _vm._$s(
  1640. 90,
  1641. "a-src",
  1642. __webpack_require__(/*! ../../static/jnImage/indexPage/jieruP.png */ 32)
  1643. ),
  1644. _i: 90,
  1645. },
  1646. }),
  1647. _c("text"),
  1648. ]
  1649. ),
  1650. _c(
  1651. "view",
  1652. {
  1653. staticClass: _vm._$s(
  1654. 92,
  1655. "sc",
  1656. "windMsgSty_right flex justify-between"
  1657. ),
  1658. attrs: { _i: 92 },
  1659. },
  1660. [_c("text"), _c("text")]
  1661. ),
  1662. ]
  1663. ),
  1664. _c(
  1665. "view",
  1666. {
  1667. staticClass: _vm._$s(
  1668. 95,
  1669. "sc",
  1670. "windMsgSty flex"
  1671. ),
  1672. attrs: { _i: 95 },
  1673. },
  1674. [
  1675. _c(
  1676. "view",
  1677. {
  1678. staticClass: _vm._$s(
  1679. 96,
  1680. "sc",
  1681. "windMsgSty_left"
  1682. ),
  1683. attrs: { _i: 96 },
  1684. },
  1685. [
  1686. _c("image", {
  1687. attrs: {
  1688. src: _vm._$s(
  1689. 97,
  1690. "a-src",
  1691. __webpack_require__(/*! ../../static/jnImage/indexPage/daijiP.png */ 33)
  1692. ),
  1693. _i: 97,
  1694. },
  1695. }),
  1696. _c("text"),
  1697. ]
  1698. ),
  1699. _c(
  1700. "view",
  1701. {
  1702. staticClass: _vm._$s(
  1703. 99,
  1704. "sc",
  1705. "windMsgSty_right flex justify-between"
  1706. ),
  1707. attrs: { _i: 99 },
  1708. },
  1709. [_c("text"), _c("text")]
  1710. ),
  1711. ]
  1712. ),
  1713. ]
  1714. ),
  1715. _c(
  1716. "view",
  1717. {
  1718. staticClass: _vm._$s(
  1719. 102,
  1720. "sc",
  1721. "windMsg_main_msg flex justify-between"
  1722. ),
  1723. attrs: { _i: 102 },
  1724. },
  1725. [
  1726. _c(
  1727. "view",
  1728. {
  1729. staticClass: _vm._$s(
  1730. 103,
  1731. "sc",
  1732. "windMsgSty flex"
  1733. ),
  1734. attrs: { _i: 103 },
  1735. },
  1736. [
  1737. _c(
  1738. "view",
  1739. {
  1740. staticClass: _vm._$s(
  1741. 104,
  1742. "sc",
  1743. "windMsgSty_left"
  1744. ),
  1745. attrs: { _i: 104 },
  1746. },
  1747. [
  1748. _c("image", {
  1749. attrs: {
  1750. src: _vm._$s(
  1751. 105,
  1752. "a-src",
  1753. __webpack_require__(/*! ../../static/jnImage/indexPage/yunxingP.png */ 34)
  1754. ),
  1755. _i: 105,
  1756. },
  1757. }),
  1758. _c("text"),
  1759. ]
  1760. ),
  1761. _c(
  1762. "view",
  1763. {
  1764. staticClass: _vm._$s(
  1765. 107,
  1766. "sc",
  1767. "windMsgSty_right flex justify-between"
  1768. ),
  1769. attrs: { _i: 107 },
  1770. },
  1771. [_c("text"), _c("text")]
  1772. ),
  1773. ]
  1774. ),
  1775. _c(
  1776. "view",
  1777. {
  1778. staticClass: _vm._$s(
  1779. 110,
  1780. "sc",
  1781. "windMsgSty flex"
  1782. ),
  1783. attrs: { _i: 110 },
  1784. },
  1785. [
  1786. _c(
  1787. "view",
  1788. {
  1789. staticClass: _vm._$s(
  1790. 111,
  1791. "sc",
  1792. "windMsgSty_left"
  1793. ),
  1794. attrs: { _i: 111 },
  1795. },
  1796. [
  1797. _c("image", {
  1798. attrs: {
  1799. src: _vm._$s(
  1800. 112,
  1801. "a-src",
  1802. __webpack_require__(/*! ../../static/jnImage/indexPage/guzhang.png */ 29)
  1803. ),
  1804. _i: 112,
  1805. },
  1806. }),
  1807. _c("text"),
  1808. ]
  1809. ),
  1810. _c(
  1811. "view",
  1812. {
  1813. staticClass: _vm._$s(
  1814. 114,
  1815. "sc",
  1816. "windMsgSty_right flex justify-between"
  1817. ),
  1818. attrs: { _i: 114 },
  1819. },
  1820. [_c("text"), _c("text")]
  1821. ),
  1822. ]
  1823. ),
  1824. ]
  1825. ),
  1826. _c(
  1827. "view",
  1828. {
  1829. staticClass: _vm._$s(
  1830. 117,
  1831. "sc",
  1832. "windMsg_main_msg flex justify-between"
  1833. ),
  1834. attrs: { _i: 117 },
  1835. },
  1836. [
  1837. _c(
  1838. "view",
  1839. {
  1840. staticClass: _vm._$s(
  1841. 118,
  1842. "sc",
  1843. "windMsgSty flex"
  1844. ),
  1845. attrs: { _i: 118 },
  1846. },
  1847. [
  1848. _c(
  1849. "view",
  1850. {
  1851. staticClass: _vm._$s(
  1852. 119,
  1853. "sc",
  1854. "windMsgSty_left"
  1855. ),
  1856. attrs: { _i: 119 },
  1857. },
  1858. [
  1859. _c("image", {
  1860. attrs: {
  1861. src: _vm._$s(
  1862. 120,
  1863. "a-src",
  1864. __webpack_require__(/*! ../../static/jnImage/indexPage/weihu.png */ 30)
  1865. ),
  1866. _i: 120,
  1867. },
  1868. }),
  1869. _c("text"),
  1870. ]
  1871. ),
  1872. _c(
  1873. "view",
  1874. {
  1875. staticClass: _vm._$s(
  1876. 122,
  1877. "sc",
  1878. "windMsgSty_right flex justify-between"
  1879. ),
  1880. attrs: { _i: 122 },
  1881. },
  1882. [_c("text"), _c("text")]
  1883. ),
  1884. ]
  1885. ),
  1886. _c(
  1887. "view",
  1888. {
  1889. staticClass: _vm._$s(
  1890. 125,
  1891. "sc",
  1892. "windMsgSty flex"
  1893. ),
  1894. attrs: { _i: 125 },
  1895. },
  1896. [
  1897. _c(
  1898. "view",
  1899. {
  1900. staticClass: _vm._$s(
  1901. 126,
  1902. "sc",
  1903. "windMsgSty_left"
  1904. ),
  1905. attrs: { _i: 126 },
  1906. },
  1907. [
  1908. _c("image", {
  1909. attrs: {
  1910. src: _vm._$s(
  1911. 127,
  1912. "a-src",
  1913. __webpack_require__(/*! ../../static/jnImage/indexPage/lixian.png */ 31)
  1914. ),
  1915. _i: 127,
  1916. },
  1917. }),
  1918. _c("text"),
  1919. ]
  1920. ),
  1921. _c(
  1922. "view",
  1923. {
  1924. staticClass: _vm._$s(
  1925. 129,
  1926. "sc",
  1927. "windMsgSty_right flex justify-between"
  1928. ),
  1929. attrs: { _i: 129 },
  1930. },
  1931. [_c("text"), _c("text")]
  1932. ),
  1933. ]
  1934. ),
  1935. ]
  1936. ),
  1937. ]
  1938. ),
  1939. ]
  1940. ),
  1941. _c(
  1942. "view",
  1943. {
  1944. staticClass: _vm._$s(132, "sc", "ssjk"),
  1945. attrs: { _i: 132 },
  1946. },
  1947. [
  1948. _c(
  1949. "view",
  1950. {
  1951. staticClass: _vm._$s(
  1952. 133,
  1953. "sc",
  1954. "ssjk_title flex justify-center"
  1955. ),
  1956. attrs: { _i: 133 },
  1957. },
  1958. [
  1959. _c("image", {
  1960. attrs: {
  1961. src: _vm._$s(
  1962. 134,
  1963. "a-src",
  1964. __webpack_require__(/*! ../../static/jnImage/indexPage/timeNow.png */ 35)
  1965. ),
  1966. _i: 134,
  1967. },
  1968. }),
  1969. _c("text"),
  1970. ]
  1971. ),
  1972. _c(
  1973. "view",
  1974. {
  1975. staticClass: _vm._$s(136, "sc", "ssjk_main"),
  1976. attrs: { _i: 136 },
  1977. },
  1978. [
  1979. _c(
  1980. "view",
  1981. {
  1982. staticClass: _vm._$s(137, "sc", "ssjk_main_msg"),
  1983. attrs: { _i: 137 },
  1984. },
  1985. [
  1986. _c(
  1987. "view",
  1988. {
  1989. staticClass: _vm._$s(
  1990. 138,
  1991. "sc",
  1992. "ssjk_main_msg_tit flex"
  1993. ),
  1994. attrs: { _i: 138 },
  1995. },
  1996. [
  1997. _c("image", {
  1998. attrs: {
  1999. src: _vm._$s(
  2000. 139,
  2001. "a-src",
  2002. __webpack_require__(/*! ../../static/jnImage/indexPage/windIcon.png */ 36)
  2003. ),
  2004. _i: 139,
  2005. },
  2006. }),
  2007. _c("text"),
  2008. ]
  2009. ),
  2010. _c(
  2011. "view",
  2012. {
  2013. staticClass: _vm._$s(
  2014. 141,
  2015. "sc",
  2016. "ssjk_main_msg_data flex"
  2017. ),
  2018. attrs: { _i: 141 },
  2019. },
  2020. [
  2021. _c(
  2022. "view",
  2023. {
  2024. staticClass: _vm._$s(
  2025. 142,
  2026. "sc",
  2027. "msg_data_sty flex"
  2028. ),
  2029. attrs: { _i: 142 },
  2030. },
  2031. [
  2032. _c(
  2033. "view",
  2034. {
  2035. staticClass: _vm._$s(
  2036. 143,
  2037. "sc",
  2038. "msg_data_name"
  2039. ),
  2040. attrs: { _i: 143 },
  2041. },
  2042. [_c("text")]
  2043. ),
  2044. _c(
  2045. "view",
  2046. {
  2047. staticClass: _vm._$s(
  2048. 145,
  2049. "sc",
  2050. "dataSty flex"
  2051. ),
  2052. attrs: { _i: 145 },
  2053. },
  2054. [_c("text"), _c("text")]
  2055. ),
  2056. ]
  2057. ),
  2058. _c(
  2059. "view",
  2060. {
  2061. staticClass: _vm._$s(
  2062. 148,
  2063. "sc",
  2064. "msg_data_sty flex"
  2065. ),
  2066. attrs: { _i: 148 },
  2067. },
  2068. [
  2069. _c(
  2070. "view",
  2071. {
  2072. staticClass: _vm._$s(
  2073. 149,
  2074. "sc",
  2075. "msg_data_name"
  2076. ),
  2077. attrs: { _i: 149 },
  2078. },
  2079. [_c("text")]
  2080. ),
  2081. _c(
  2082. "view",
  2083. {
  2084. staticClass: _vm._$s(
  2085. 151,
  2086. "sc",
  2087. "dataSty flex"
  2088. ),
  2089. attrs: { _i: 151 },
  2090. },
  2091. [_c("text"), _c("text")]
  2092. ),
  2093. ]
  2094. ),
  2095. _c(
  2096. "view",
  2097. {
  2098. staticClass: _vm._$s(
  2099. 154,
  2100. "sc",
  2101. "msg_data_sty flex"
  2102. ),
  2103. attrs: { _i: 154 },
  2104. },
  2105. [
  2106. _c(
  2107. "view",
  2108. {
  2109. staticClass: _vm._$s(
  2110. 155,
  2111. "sc",
  2112. "msg_data_name"
  2113. ),
  2114. attrs: { _i: 155 },
  2115. },
  2116. [_c("text")]
  2117. ),
  2118. _c(
  2119. "view",
  2120. {
  2121. staticClass: _vm._$s(
  2122. 157,
  2123. "sc",
  2124. "dataSty flex"
  2125. ),
  2126. attrs: { _i: 157 },
  2127. },
  2128. [_c("text"), _c("text")]
  2129. ),
  2130. ]
  2131. ),
  2132. ]
  2133. ),
  2134. ]
  2135. ),
  2136. ]
  2137. ),
  2138. ]
  2139. ),
  2140. ],
  2141. 2
  2142. ),
  2143. ]
  2144. ),
  2145. ]
  2146. ),
  2147. ]
  2148. )
  2149. }
  2150. var recyclableRender = false
  2151. var staticRenderFns = []
  2152. render._withStripped = true
  2153. /***/ }),
  2154. /* 22 */
  2155. /*!****************************************************************************!*\
  2156. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/message.png ***!
  2157. \****************************************************************************/
  2158. /*! no static exports found */
  2159. /***/ (function(module, exports) {
  2160. eval("module.exports = \"/static/jnImage/indexPage/message.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvbWVzc2FnZS5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///22\n");
  2161. /***/ }),
  2162. /* 23 */
  2163. /*!*************************************************************************!*\
  2164. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/more.png ***!
  2165. \*************************************************************************/
  2166. /*! no static exports found */
  2167. /***/ (function(module, exports) {
  2168. eval("module.exports = \"/static/jnImage/indexPage/more.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvbW9yZS5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///23\n");
  2169. /***/ }),
  2170. /* 24 */
  2171. /*!*************************************************************************!*\
  2172. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/time.png ***!
  2173. \*************************************************************************/
  2174. /*! no static exports found */
  2175. /***/ (function(module, exports) {
  2176. eval("module.exports = \"/static/jnImage/indexPage/time.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvdGltZS5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///24\n");
  2177. /***/ }),
  2178. /* 25 */
  2179. /*!*****************************************************************************!*\
  2180. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/wancheng.png ***!
  2181. \*****************************************************************************/
  2182. /*! no static exports found */
  2183. /***/ (function(module, exports) {
  2184. eval("module.exports = \"/static/jnImage/indexPage/wancheng.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2Uvd2FuY2hlbmcucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///25\n");
  2185. /***/ }),
  2186. /* 26 */
  2187. /*!**************************************************************************!*\
  2188. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/jieru.png ***!
  2189. \**************************************************************************/
  2190. /*! no static exports found */
  2191. /***/ (function(module, exports) {
  2192. eval("module.exports = \"/static/jnImage/indexPage/jieru.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI2LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvamllcnUucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///26\n");
  2193. /***/ }),
  2194. /* 27 */
  2195. /*!**************************************************************************!*\
  2196. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/daiji.png ***!
  2197. \**************************************************************************/
  2198. /*! no static exports found */
  2199. /***/ (function(module, exports) {
  2200. eval("module.exports = \"/static/jnImage/indexPage/daiji.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI3LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvZGFpamkucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///27\n");
  2201. /***/ }),
  2202. /* 28 */
  2203. /*!****************************************************************************!*\
  2204. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/yunxing.png ***!
  2205. \****************************************************************************/
  2206. /*! no static exports found */
  2207. /***/ (function(module, exports) {
  2208. eval("module.exports = \"/static/jnImage/indexPage/yunxing.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI4LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UveXVueGluZy5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///28\n");
  2209. /***/ }),
  2210. /* 29 */
  2211. /*!****************************************************************************!*\
  2212. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/guzhang.png ***!
  2213. \****************************************************************************/
  2214. /*! no static exports found */
  2215. /***/ (function(module, exports) {
  2216. eval("module.exports = \"/static/jnImage/indexPage/guzhang.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjI5LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvZ3V6aGFuZy5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///29\n");
  2217. /***/ }),
  2218. /* 30 */
  2219. /*!**************************************************************************!*\
  2220. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/weihu.png ***!
  2221. \**************************************************************************/
  2222. /*! no static exports found */
  2223. /***/ (function(module, exports) {
  2224. eval("module.exports = \"/static/jnImage/indexPage/weihu.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjMwLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2Uvd2VpaHUucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///30\n");
  2225. /***/ }),
  2226. /* 31 */
  2227. /*!***************************************************************************!*\
  2228. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/lixian.png ***!
  2229. \***************************************************************************/
  2230. /*! no static exports found */
  2231. /***/ (function(module, exports) {
  2232. eval("module.exports = \"/static/jnImage/indexPage/lixian.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvbGl4aWFuLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///31\n");
  2233. /***/ }),
  2234. /* 32 */
  2235. /*!***************************************************************************!*\
  2236. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/jieruP.png ***!
  2237. \***************************************************************************/
  2238. /*! no static exports found */
  2239. /***/ (function(module, exports) {
  2240. eval("module.exports = \"/static/jnImage/indexPage/jieruP.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjMyLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvamllcnVQLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///32\n");
  2241. /***/ }),
  2242. /* 33 */
  2243. /*!***************************************************************************!*\
  2244. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/daijiP.png ***!
  2245. \***************************************************************************/
  2246. /*! no static exports found */
  2247. /***/ (function(module, exports) {
  2248. eval("module.exports = \"/static/jnImage/indexPage/daijiP.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjMzLmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvZGFpamlQLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///33\n");
  2249. /***/ }),
  2250. /* 34 */
  2251. /*!*****************************************************************************!*\
  2252. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/yunxingP.png ***!
  2253. \*****************************************************************************/
  2254. /*! no static exports found */
  2255. /***/ (function(module, exports) {
  2256. eval("module.exports = \"/static/jnImage/indexPage/yunxingP.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjM0LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UveXVueGluZ1AucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///34\n");
  2257. /***/ }),
  2258. /* 35 */
  2259. /*!****************************************************************************!*\
  2260. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/timeNow.png ***!
  2261. \****************************************************************************/
  2262. /*! no static exports found */
  2263. /***/ (function(module, exports) {
  2264. eval("module.exports = \"/static/jnImage/indexPage/timeNow.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjM1LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2UvdGltZU5vdy5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///35\n");
  2265. /***/ }),
  2266. /* 36 */
  2267. /*!*****************************************************************************!*\
  2268. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/indexPage/windIcon.png ***!
  2269. \*****************************************************************************/
  2270. /*! no static exports found */
  2271. /***/ (function(module, exports) {
  2272. eval("module.exports = \"/static/jnImage/indexPage/windIcon.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjM2LmpzIiwic291cmNlc0NvbnRlbnQiOlsibW9kdWxlLmV4cG9ydHMgPSBcIi9zdGF0aWMvam5JbWFnZS9pbmRleFBhZ2Uvd2luZEljb24ucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///36\n");
  2273. /***/ }),
  2274. /* 37 */
  2275. /*!************************************************************************************************!*\
  2276. !*** D:/Intelligent/jn_uniapp/jn_app/pages/home/index.vue?vue&type=script&lang=js&mpType=page ***!
  2277. \************************************************************************************************/
  2278. /*! no static exports found */
  2279. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2280. "use strict";
  2281. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 38);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIzNy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///37\n");
  2282. /***/ }),
  2283. /* 38 */
  2284. /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  2285. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/home/index.vue?vue&type=script&lang=js&mpType=page ***!
  2286. \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  2287. /*! no static exports found */
  2288. /***/ (function(module, exports, __webpack_require__) {
  2289. "use strict";
  2290. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n onLoad: function onLoad() {},\n data: function data() {\n return {\n mesExData: []\n };\n },\n created: function created() {\n this.mesExData = [{\n leftName: '容量',\n leftValue: 282.3,\n leftCode: '(WM)',\n rightName: '安全天数',\n rightValue: 20,\n rightCode: '(天)'\n }, {\n leftName: '风速',\n leftValue: 282.3,\n leftCode: '(m/s)',\n rightName: '功率',\n rightValue: 20,\n rightCode: '(MW)'\n }, {\n leftName: '日发电量',\n leftValue: 282.3,\n leftCode: '(万kWh)',\n rightName: '理论功率',\n rightValue: 20,\n rightCode: '(MW)'\n }, {\n leftName: '年发电量',\n leftValue: 282.3,\n leftCode: '(万kWh)',\n rightName: '月发电量',\n rightValue: 20,\n rightCode: '(万kWh)'\n }];\n },\n methods: {}\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaG9tZS9pbmRleC52dWUiXSwibmFtZXMiOlsib25Mb2FkIiwiZGF0YSIsIm1lc0V4RGF0YSIsImNyZWF0ZWQiLCJsZWZ0TmFtZSIsImxlZnRWYWx1ZSIsImxlZnRDb2RlIiwicmlnaHROYW1lIiwicmlnaHRWYWx1ZSIsInJpZ2h0Q29kZSIsIm1ldGhvZHMiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEsZUFFZTtFQUNkQSxNQUFNLEVBQUUsa0JBQVcsQ0FBQyxDQUFDO0VBQ3JCQyxJQUFJLGtCQUFHO0lBQ04sT0FBTztNQUNOQyxTQUFTLEVBQUU7SUFDWixDQUFDO0VBQ0YsQ0FBQztFQUNEQyxPQUFPLHFCQUFHO0lBQ1QsSUFBSSxDQUFDRCxTQUFTLEdBQUcsQ0FBQztNQUNoQkUsUUFBUSxFQUFFLElBQUk7TUFDZEMsU0FBUyxFQUFFLEtBQUs7TUFDaEJDLFFBQVEsRUFBRSxNQUFNO01BQ2hCQyxTQUFTLEVBQUUsTUFBTTtNQUNqQkMsVUFBVSxFQUFFLEVBQUU7TUFDZEMsU0FBUyxFQUFFO0lBQ1osQ0FBQyxFQUNEO01BQ0NMLFFBQVEsRUFBRSxJQUFJO01BQ2RDLFNBQVMsRUFBRSxLQUFLO01BQ2hCQyxRQUFRLEVBQUUsT0FBTztNQUNqQkMsU0FBUyxFQUFFLElBQUk7TUFDZkMsVUFBVSxFQUFFLEVBQUU7TUFDZEMsU0FBUyxFQUFFO0lBQ1osQ0FBQyxFQUNEO01BQ0NMLFFBQVEsRUFBRSxNQUFNO01BQ2hCQyxTQUFTLEVBQUUsS0FBSztNQUNoQkMsUUFBUSxFQUFFLFFBQVE7TUFDbEJDLFNBQVMsRUFBRSxNQUFNO01BQ2pCQyxVQUFVLEVBQUUsRUFBRTtNQUNkQyxTQUFTLEVBQUU7SUFDWixDQUFDLEVBQ0Q7TUFDQ0wsUUFBUSxFQUFFLE1BQU07TUFDaEJDLFNBQVMsRUFBRSxLQUFLO01BQ2hCQyxRQUFRLEVBQUUsUUFBUTtNQUNsQkMsU0FBUyxFQUFFLE1BQU07TUFDakJDLFVBQVUsRUFBRSxFQUFFO01BQ2RDLFNBQVMsRUFBRTtJQUNaLENBQUMsQ0FDRDtFQUNGLENBQUM7RUFDREMsT0FBTyxFQUFFLENBRVQ7QUFDRCxDQUFDO0FBQUEiLCJmaWxlIjoiMzguanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG9uTG9hZDogZnVuY3Rpb24oKSB7fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0bWVzRXhEYXRhOiBbXVxuXHRcdH1cblx0fSxcblx0Y3JlYXRlZCgpIHtcblx0XHR0aGlzLm1lc0V4RGF0YSA9IFt7XG5cdFx0XHRcdGxlZnROYW1lOiAn5a656YePJyxcblx0XHRcdFx0bGVmdFZhbHVlOiAyODIuMyxcblx0XHRcdFx0bGVmdENvZGU6ICcoV00pJyxcblx0XHRcdFx0cmlnaHROYW1lOiAn5a6J5YWo5aSp5pWwJyxcblx0XHRcdFx0cmlnaHRWYWx1ZTogMjAsXG5cdFx0XHRcdHJpZ2h0Q29kZTogJyjlpKkpJyxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGxlZnROYW1lOiAn6aOO6YCfJyxcblx0XHRcdFx0bGVmdFZhbHVlOiAyODIuMyxcblx0XHRcdFx0bGVmdENvZGU6ICcobS9zKScsXG5cdFx0XHRcdHJpZ2h0TmFtZTogJ+WKn+eOhycsXG5cdFx0XHRcdHJpZ2h0VmFsdWU6IDIwLFxuXHRcdFx0XHRyaWdodENvZGU6ICcoTVcpJyxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGxlZnROYW1lOiAn5pel5Y+R55S16YePJyxcblx0XHRcdFx0bGVmdFZhbHVlOiAyODIuMyxcblx0XHRcdFx0bGVmdENvZGU6ICco5LiHa1doKScsXG5cdFx0XHRcdHJpZ2h0TmFtZTogJ+eQhuiuuuWKn+eOhycsXG5cdFx0XHRcdHJpZ2h0VmFsdWU6IDIwLFxuXHRcdFx0XHRyaWdodENvZGU6ICcoTVcpJyxcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGxlZnROYW1lOiAn5bm05Y+R55S16YePJyxcblx0XHRcdFx0bGVmdFZhbHVlOiAyODIuMyxcblx0XHRcdFx0bGVmdENvZGU6ICco5LiHa1doKScsXG5cdFx0XHRcdHJpZ2h0TmFtZTogJ+aciOWPkeeUtemHjycsXG5cdFx0XHRcdHJpZ2h0VmFsdWU6IDIwLFxuXHRcdFx0XHRyaWdodENvZGU6ICco5LiHa1doKScsXG5cdFx0XHR9LFxuXHRcdF1cblx0fSxcblx0bWV0aG9kczoge1xuXG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///38\n");
  2291. /***/ }),
  2292. /* 39 */
  2293. /*!*************************************************************************!*\
  2294. !*** D:/Intelligent/jn_uniapp/jn_app/pages/power/index.vue?mpType=page ***!
  2295. \*************************************************************************/
  2296. /*! no static exports found */
  2297. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2298. "use strict";
  2299. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=5d359ba2&mpType=page */ 40);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 129);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/power/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMzkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD01ZDM1OWJhMiZtcFR5cGU9cGFnZVwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vaW5kZXgudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJm1wVHlwZT1wYWdlXCJcbmV4cG9ydCAqIGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwicGFnZXMvcG93ZXIvaW5kZXgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///39\n");
  2300. /***/ }),
  2301. /* 40 */
  2302. /*!*******************************************************************************************************!*\
  2303. !*** D:/Intelligent/jn_uniapp/jn_app/pages/power/index.vue?vue&type=template&id=5d359ba2&mpType=page ***!
  2304. \*******************************************************************************************************/
  2305. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  2306. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2307. "use strict";
  2308. __webpack_require__.r(__webpack_exports__);
  2309. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=5d359ba2&mpType=page */ 41);
  2310. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
  2311. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  2312. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  2313. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_5d359ba2_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
  2314. /***/ }),
  2315. /* 41 */
  2316. /*!***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  2317. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/power/index.vue?vue&type=template&id=5d359ba2&mpType=page ***!
  2318. \***********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  2319. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  2320. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2321. "use strict";
  2322. __webpack_require__.r(__webpack_exports__);
  2323. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  2324. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  2325. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  2326. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  2327. var components
  2328. try {
  2329. components = {
  2330. uniRow: __webpack_require__(/*! @/uni_modules/uni-row/components/uni-row/uni-row.vue */ 42)
  2331. .default,
  2332. uniCol: __webpack_require__(/*! @/uni_modules/uni-row/components/uni-col/uni-col.vue */ 47)
  2333. .default,
  2334. qiunDataCharts:
  2335. __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue */ 52)
  2336. .default,
  2337. }
  2338. } catch (e) {
  2339. if (
  2340. e.message.indexOf("Cannot find module") !== -1 &&
  2341. e.message.indexOf(".vue") !== -1
  2342. ) {
  2343. console.error(e.message)
  2344. console.error("1. 排查组件名称拼写是否正确")
  2345. console.error(
  2346. "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
  2347. )
  2348. console.error(
  2349. "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
  2350. )
  2351. } else {
  2352. throw e
  2353. }
  2354. }
  2355. var render = function () {
  2356. var _vm = this
  2357. var _h = _vm.$createElement
  2358. var _c = _vm._self._c || _h
  2359. return _c(
  2360. "view",
  2361. { staticClass: _vm._$s(0, "sc", "power"), attrs: { _i: 0 } },
  2362. [
  2363. _c(
  2364. "view",
  2365. { staticClass: _vm._$s(1, "sc", "home_header"), attrs: { _i: 1 } },
  2366. [
  2367. _c(
  2368. "view",
  2369. {
  2370. staticClass: _vm._$s(2, "sc", "header_message"),
  2371. attrs: { _i: 2 },
  2372. },
  2373. [
  2374. _c("image", {
  2375. attrs: {
  2376. src: _vm._$s(
  2377. 3,
  2378. "a-src",
  2379. __webpack_require__(/*! ../../static/jnImage/indexPage/message.png */ 22)
  2380. ),
  2381. _i: 3,
  2382. },
  2383. }),
  2384. ]
  2385. ),
  2386. _c(
  2387. "view",
  2388. { staticClass: _vm._$s(4, "sc", "header_title"), attrs: { _i: 4 } },
  2389. [
  2390. _c("image", {
  2391. attrs: {
  2392. src: _vm._$s(
  2393. 5,
  2394. "a-src",
  2395. __webpack_require__(/*! ../../static/jnImage/loginPage/logo.png */ 10)
  2396. ),
  2397. _i: 5,
  2398. },
  2399. }),
  2400. _c("text", {
  2401. staticClass: _vm._$s(6, "sc", "titleName"),
  2402. attrs: { _i: 6 },
  2403. }),
  2404. ]
  2405. ),
  2406. _c(
  2407. "view",
  2408. { staticClass: _vm._$s(7, "sc", "header_more"), attrs: { _i: 7 } },
  2409. [
  2410. _c("image", {
  2411. attrs: {
  2412. src: _vm._$s(
  2413. 8,
  2414. "a-src",
  2415. __webpack_require__(/*! ../../static/jnImage/indexPage/more.png */ 23)
  2416. ),
  2417. _i: 8,
  2418. },
  2419. }),
  2420. ]
  2421. ),
  2422. ]
  2423. ),
  2424. _c(
  2425. "view",
  2426. { staticClass: _vm._$s(9, "sc", "power_main"), attrs: { _i: 9 } },
  2427. [
  2428. _c(
  2429. "view",
  2430. {
  2431. staticClass: _vm._$s(10, "sc", "flex justify-center"),
  2432. attrs: { _i: 10 },
  2433. },
  2434. [
  2435. _c(
  2436. "view",
  2437. {
  2438. staticClass: _vm._$s(11, "sc", "power_tab"),
  2439. attrs: { _i: 11 },
  2440. },
  2441. _vm._l(
  2442. _vm._$s(12, "f", { forItems: _vm.powerTabData }),
  2443. function (item, index, $20, $30) {
  2444. return _c(
  2445. "text",
  2446. {
  2447. key: _vm._$s(12, "f", { forIndex: $20, key: index }),
  2448. style: _vm._$s(
  2449. "12-" + $30,
  2450. "s",
  2451. item.showColor ? "background: #4287FF;color:#fff" : ""
  2452. ),
  2453. attrs: { _i: "12-" + $30 },
  2454. on: {
  2455. click: function ($event) {
  2456. return _vm.changePowerTab(item)
  2457. },
  2458. },
  2459. },
  2460. [
  2461. _vm._v(
  2462. _vm._$s("12-" + $30, "t0-0", _vm._s(item.nameZN))
  2463. ),
  2464. ]
  2465. )
  2466. }
  2467. ),
  2468. 0
  2469. ),
  2470. ]
  2471. ),
  2472. _vm._$s(13, "i", _vm.powerTab === "DL")
  2473. ? _c(
  2474. "view",
  2475. { staticClass: _vm._$s(13, "sc", "fdwcl"), attrs: { _i: 13 } },
  2476. [
  2477. _c(
  2478. "view",
  2479. {
  2480. staticClass: _vm._$s(14, "sc", "flex justify-between"),
  2481. attrs: { _i: 14 },
  2482. },
  2483. [
  2484. _c(
  2485. "view",
  2486. {
  2487. staticClass: _vm._$s(
  2488. 15,
  2489. "sc",
  2490. "fdwcl_title flex justify-center"
  2491. ),
  2492. attrs: { _i: 15 },
  2493. },
  2494. [
  2495. _c("image", {
  2496. attrs: {
  2497. src: _vm._$s(
  2498. 16,
  2499. "a-src",
  2500. __webpack_require__(/*! ../../static/jnImage/powerPage/powerTu.png */ 125)
  2501. ),
  2502. _i: 16,
  2503. },
  2504. }),
  2505. _c("text"),
  2506. ]
  2507. ),
  2508. _c(
  2509. "view",
  2510. {
  2511. staticClass: _vm._$s(18, "sc", "yearTab"),
  2512. attrs: { _i: 18 },
  2513. },
  2514. _vm._l(
  2515. _vm._$s(19, "f", { forItems: _vm.yearData }),
  2516. function (item, index, $21, $31) {
  2517. return _c(
  2518. "text",
  2519. {
  2520. key: _vm._$s(19, "f", {
  2521. forIndex: $21,
  2522. key: index,
  2523. }),
  2524. style: _vm._$s(
  2525. "19-" + $31,
  2526. "s",
  2527. item.showColor
  2528. ? "background: #4287FF;color:#fff"
  2529. : ""
  2530. ),
  2531. attrs: { _i: "19-" + $31 },
  2532. on: {
  2533. click: function ($event) {
  2534. return _vm.changeYearTab(item)
  2535. },
  2536. },
  2537. },
  2538. [
  2539. _vm._v(
  2540. _vm._$s(
  2541. "19-" + $31,
  2542. "t0-0",
  2543. _vm._s(item.nameZN)
  2544. )
  2545. ),
  2546. ]
  2547. )
  2548. }
  2549. ),
  2550. 0
  2551. ),
  2552. ]
  2553. ),
  2554. _vm._l(
  2555. _vm._$s(20, "f", { forItems: _vm.powerProgressData }),
  2556. function (item, index, $22, $32) {
  2557. return _c(
  2558. "view",
  2559. {
  2560. key: _vm._$s(20, "f", { forIndex: $22, key: index }),
  2561. staticClass: _vm._$s(
  2562. "20-" + $32,
  2563. "sc",
  2564. "fdwcl_DataAll"
  2565. ),
  2566. attrs: { _i: "20-" + $32 },
  2567. },
  2568. [
  2569. _c(
  2570. "view",
  2571. {
  2572. staticClass: _vm._$s(
  2573. "21-" + $32,
  2574. "sc",
  2575. "fdwcl_Data flex justify-between"
  2576. ),
  2577. attrs: { _i: "21-" + $32 },
  2578. },
  2579. [
  2580. _c(
  2581. "view",
  2582. {
  2583. staticClass: _vm._$s(
  2584. "22-" + $32,
  2585. "sc",
  2586. "fdwcl_Data_1 flex"
  2587. ),
  2588. attrs: { _i: "22-" + $32 },
  2589. },
  2590. [
  2591. _c("image", {
  2592. attrs: {
  2593. src: _vm._$s(
  2594. "23-" + $32,
  2595. "a-src",
  2596. __webpack_require__(/*! ../../static/jnImage/indexPage/windIcon.png */ 36)
  2597. ),
  2598. _i: "23-" + $32,
  2599. },
  2600. }),
  2601. _c("text", [
  2602. _vm._v(
  2603. _vm._$s(
  2604. "24-" + $32,
  2605. "t0-0",
  2606. _vm._s(item.inPower)
  2607. )
  2608. ),
  2609. ]),
  2610. ]
  2611. ),
  2612. _c(
  2613. "view",
  2614. {
  2615. staticClass: _vm._$s(
  2616. "25-" + $32,
  2617. "sc",
  2618. "fdwcl_Data_2"
  2619. ),
  2620. attrs: { _i: "25-" + $32 },
  2621. },
  2622. [
  2623. _c("text", [
  2624. _vm._v(
  2625. _vm._$s(
  2626. "26-" + $32,
  2627. "t0-0",
  2628. _vm._s(item.name)
  2629. )
  2630. ),
  2631. ]),
  2632. ]
  2633. ),
  2634. _c(
  2635. "view",
  2636. {
  2637. staticClass: _vm._$s(
  2638. "27-" + $32,
  2639. "sc",
  2640. "fdwcl_Data_3"
  2641. ),
  2642. attrs: { _i: "27-" + $32 },
  2643. },
  2644. [
  2645. _c("text", [
  2646. _vm._v(
  2647. _vm._$s(
  2648. "28-" + $32,
  2649. "t0-0",
  2650. _vm._s(item.allPower)
  2651. )
  2652. ),
  2653. ]),
  2654. ]
  2655. ),
  2656. ]
  2657. ),
  2658. _c(
  2659. "view",
  2660. {
  2661. staticClass: _vm._$s(
  2662. "29-" + $32,
  2663. "sc",
  2664. "fdwcl_Data_msg"
  2665. ),
  2666. attrs: { _i: "29-" + $32 },
  2667. },
  2668. [
  2669. _c("view", {
  2670. staticClass: _vm._$s(
  2671. "30-" + $32,
  2672. "sc",
  2673. "show_msg"
  2674. ),
  2675. style: _vm._$s(
  2676. "30-" + $32,
  2677. "s",
  2678. _vm.showProgress(item, index)
  2679. ),
  2680. attrs: { _i: "30-" + $32 },
  2681. }),
  2682. ]
  2683. ),
  2684. ]
  2685. )
  2686. }
  2687. ),
  2688. ],
  2689. 2
  2690. )
  2691. : _c(
  2692. "view",
  2693. { staticClass: _vm._$s(31, "sc", "ycdl"), attrs: { _i: 31 } },
  2694. _vm._l(3, function (item, index, $23, $33) {
  2695. return _c(
  2696. "view",
  2697. {
  2698. key: index,
  2699. staticClass: _vm._$s("32-" + $33, "sc", "ycdl_msg"),
  2700. attrs: { _i: "32-" + $33 },
  2701. },
  2702. [
  2703. _c(
  2704. "view",
  2705. {
  2706. staticClass: _vm._$s(
  2707. "33-" + $33,
  2708. "sc",
  2709. "ycdl_title flex"
  2710. ),
  2711. attrs: { _i: "33-" + $33 },
  2712. },
  2713. [
  2714. _c("image", {
  2715. attrs: {
  2716. src: _vm._$s(
  2717. "34-" + $33,
  2718. "a-src",
  2719. __webpack_require__(/*! ../../static/jnImage/powerPage/clock.png */ 126)
  2720. ),
  2721. _i: "34-" + $33,
  2722. },
  2723. }),
  2724. _c("text"),
  2725. _c("text"),
  2726. ]
  2727. ),
  2728. _c(
  2729. "view",
  2730. {
  2731. staticClass: _vm._$s("37-" + $33, "sc", "ycdl_data"),
  2732. attrs: { _i: "37-" + $33 },
  2733. },
  2734. [
  2735. _c(
  2736. "uni-row",
  2737. {
  2738. staticClass: _vm._$s(
  2739. "38-" + $33,
  2740. "sc",
  2741. "ycdl_data_row"
  2742. ),
  2743. attrs: { _i: "38-" + $33 },
  2744. },
  2745. _vm._l(
  2746. _vm._$s(39 + "-" + $33, "f", {
  2747. forItems: _vm.powerProgressData,
  2748. }),
  2749. function (item, index, $24, $34) {
  2750. return _c(
  2751. "uni-col",
  2752. {
  2753. key: _vm._$s(39 + "-" + $33, "f", {
  2754. forIndex: $24,
  2755. key: index,
  2756. }),
  2757. attrs: {
  2758. span: 12,
  2759. _i: "39-" + $33 + "-" + $34,
  2760. },
  2761. },
  2762. [
  2763. _c(
  2764. "view",
  2765. {
  2766. staticClass: _vm._$s(
  2767. "40-" + $33 + "-" + $34,
  2768. "sc",
  2769. "ycdl_data_col flex"
  2770. ),
  2771. attrs: { _i: "40-" + $33 + "-" + $34 },
  2772. },
  2773. [
  2774. _c(
  2775. "view",
  2776. {
  2777. staticClass: _vm._$s(
  2778. "41-" + $33 + "-" + $34,
  2779. "sc",
  2780. "ycdl_data_col_left"
  2781. ),
  2782. attrs: {
  2783. _i: "41-" + $33 + "-" + $34,
  2784. },
  2785. },
  2786. [
  2787. _c("text", [
  2788. _vm._v(
  2789. _vm._$s(
  2790. "42-" + $33 + "-" + $34,
  2791. "t0-0",
  2792. _vm._s(item.name)
  2793. )
  2794. ),
  2795. ]),
  2796. ]
  2797. ),
  2798. _c(
  2799. "view",
  2800. {
  2801. staticClass: _vm._$s(
  2802. "43-" + $33 + "-" + $34,
  2803. "sc",
  2804. "ycdl_data_col_right flex justify-between"
  2805. ),
  2806. attrs: {
  2807. _i: "43-" + $33 + "-" + $34,
  2808. },
  2809. },
  2810. [
  2811. _c("text", [
  2812. _vm._v(
  2813. _vm._$s(
  2814. "44-" + $33 + "-" + $34,
  2815. "t0-0",
  2816. _vm._s(item.inPower)
  2817. )
  2818. ),
  2819. ]),
  2820. _c("text"),
  2821. ]
  2822. ),
  2823. ]
  2824. ),
  2825. ]
  2826. )
  2827. }
  2828. ),
  2829. 1
  2830. ),
  2831. ],
  2832. 1
  2833. ),
  2834. ]
  2835. )
  2836. }),
  2837. 0
  2838. ),
  2839. _vm._$s(46, "i", _vm.powerTab === "DL")
  2840. ? _c(
  2841. "view",
  2842. { staticClass: _vm._$s(46, "sc", "rdldb"), attrs: { _i: 46 } },
  2843. [
  2844. _c(
  2845. "view",
  2846. {
  2847. staticClass: _vm._$s(
  2848. 47,
  2849. "sc",
  2850. "rdldb_title flex justify-center"
  2851. ),
  2852. attrs: { _i: 47 },
  2853. },
  2854. [
  2855. _c("image", {
  2856. attrs: {
  2857. src: _vm._$s(
  2858. 48,
  2859. "a-src",
  2860. __webpack_require__(/*! ../../static/jnImage/powerPage/powerDayIcon.png */ 127)
  2861. ),
  2862. _i: 48,
  2863. },
  2864. }),
  2865. _c("text"),
  2866. ]
  2867. ),
  2868. _c(
  2869. "view",
  2870. {
  2871. staticClass: _vm._$s(50, "sc", "qiun-charts"),
  2872. attrs: { _i: 50 },
  2873. },
  2874. [
  2875. _c("qiun-data-charts", {
  2876. attrs: {
  2877. type: "column",
  2878. opts: _vm.opts,
  2879. chartData: _vm.chartData,
  2880. _i: 51,
  2881. },
  2882. }),
  2883. ],
  2884. 1
  2885. ),
  2886. ]
  2887. )
  2888. : _c(
  2889. "view",
  2890. { staticClass: _vm._$s(52, "sc", "xsfsgl"), attrs: { _i: 52 } },
  2891. [
  2892. _c(
  2893. "view",
  2894. {
  2895. staticClass: _vm._$s(
  2896. 53,
  2897. "sc",
  2898. "xsfsgl_title flex justify-center"
  2899. ),
  2900. attrs: { _i: 53 },
  2901. },
  2902. [
  2903. _c("image", {
  2904. attrs: {
  2905. src: _vm._$s(
  2906. 54,
  2907. "a-src",
  2908. __webpack_require__(/*! ../../static/jnImage/powerPage/72clock.png */ 128)
  2909. ),
  2910. _i: 54,
  2911. },
  2912. }),
  2913. _c("text"),
  2914. ]
  2915. ),
  2916. _c(
  2917. "view",
  2918. {
  2919. staticClass: _vm._$s(56, "sc", "qiun-chartsLine"),
  2920. attrs: { _i: 56 },
  2921. },
  2922. [
  2923. _c("qiun-data-charts", {
  2924. attrs: {
  2925. type: "mix",
  2926. opts: _vm.optsLine,
  2927. chartData: _vm.chartDataLine,
  2928. _i: 57,
  2929. },
  2930. }),
  2931. ],
  2932. 1
  2933. ),
  2934. ]
  2935. ),
  2936. ]
  2937. ),
  2938. ]
  2939. )
  2940. }
  2941. var recyclableRender = false
  2942. var staticRenderFns = []
  2943. render._withStripped = true
  2944. /***/ }),
  2945. /* 42 */
  2946. /*!******************************************************************************************!*\
  2947. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-row/uni-row.vue ***!
  2948. \******************************************************************************************/
  2949. /*! no static exports found */
  2950. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2951. "use strict";
  2952. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-row.vue?vue&type=template&id=1d993189& */ 43);\n/* harmony import */ var _uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-row.vue?vue&type=script&lang=js& */ 45);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-row/components/uni-row/uni-row.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0g7QUFDcEg7QUFDMkQ7QUFDTDs7O0FBR3REO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDZFQUFNO0FBQ1IsRUFBRSxrRkFBTTtBQUNSLEVBQUUsMkZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsc0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNDIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1yb3cudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTFkOTkzMTg5JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLXJvdy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VuaS1yb3cudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLXJvdy9jb21wb25lbnRzL3VuaS1yb3cvdW5pLXJvdy52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///42\n");
  2953. /***/ }),
  2954. /* 43 */
  2955. /*!*************************************************************************************************************************!*\
  2956. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-row/uni-row.vue?vue&type=template&id=1d993189& ***!
  2957. \*************************************************************************************************************************/
  2958. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  2959. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2960. "use strict";
  2961. __webpack_require__.r(__webpack_exports__);
  2962. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-row.vue?vue&type=template&id=1d993189& */ 44);
  2963. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  2964. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  2965. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  2966. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_template_id_1d993189___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  2967. /***/ }),
  2968. /* 44 */
  2969. /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  2970. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-row/uni-row.vue?vue&type=template&id=1d993189& ***!
  2971. \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  2972. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  2973. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  2974. "use strict";
  2975. __webpack_require__.r(__webpack_exports__);
  2976. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  2977. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  2978. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  2979. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  2980. var components
  2981. var render = function () {
  2982. var _vm = this
  2983. var _h = _vm.$createElement
  2984. var _c = _vm._self._c || _h
  2985. return _c(
  2986. "view",
  2987. {
  2988. class: _vm._$s(0, "c", [
  2989. "uni-row",
  2990. _vm.typeClass,
  2991. _vm.justifyClass,
  2992. _vm.alignClass,
  2993. ]),
  2994. style: _vm._$s(0, "s", {
  2995. marginLeft: Number(_vm.marginValue) + "rpx",
  2996. marginRight: Number(_vm.marginValue) + "rpx",
  2997. }),
  2998. attrs: { _i: 0 },
  2999. },
  3000. [_vm._t("default", null, { _i: 1 })],
  3001. 2
  3002. )
  3003. }
  3004. var recyclableRender = false
  3005. var staticRenderFns = []
  3006. render._withStripped = true
  3007. /***/ }),
  3008. /* 45 */
  3009. /*!*******************************************************************************************************************!*\
  3010. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-row/uni-row.vue?vue&type=script&lang=js& ***!
  3011. \*******************************************************************************************************************/
  3012. /*! no static exports found */
  3013. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3014. "use strict";
  3015. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-row.vue?vue&type=script&lang=js& */ 46);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_row_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW12QixDQUFnQiw2dEJBQUcsRUFBQyIsImZpbGUiOiI0NS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLXJvdy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLXJvdy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///45\n");
  3016. /***/ }),
  3017. /* 46 */
  3018. /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3019. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-row/uni-row.vue?vue&type=script&lang=js& ***!
  3020. \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3021. /*! no static exports found */
  3022. /***/ (function(module, exports, __webpack_require__) {
  3023. "use strict";
  3024. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nvar ComponentClass = 'uni-row';\nvar modifierSeparator = '--';\n/**\n * Row\t布局-行\n * @description\t流式栅格系统,随着屏幕或视口分为 24 份,可以迅速简便地创建布局。\n * @tutorial\thttps://ext.dcloud.net.cn/plugin?id=3958\n *\n * @property\t{gutter} type = Number 栅格间隔\n * @property\t{justify} type = String flex 布局下的水平排列方式\n * \t\t\t\t\t\t可选\tstart/end/center/space-around/space-between\tstart\n * \t\t\t\t\t\t默认值\tstart\n * @property\t{align} type = String flex 布局下的垂直排列方式\n * \t\t\t\t\t\t可选\ttop/middle/bottom\n * \t\t\t\t\t\t默认值\ttop\n * @property\t{width} type = String|Number nvue下需要自行配置宽度用于计算\n * \t\t\t\t\t\t默认值 750\n */\nvar _default = {\n name: 'uniRow',\n componentName: 'uniRow',\n props: {\n type: String,\n gutter: Number,\n justify: {\n type: String,\n default: 'start'\n },\n align: {\n type: String,\n default: 'top'\n },\n // nvue如果使用span等属性,需要配置宽度\n width: {\n type: [String, Number],\n default: 750\n }\n },\n created: function created() {},\n computed: {\n marginValue: function marginValue() {\n if (this.gutter) {\n return -(this.gutter / 2);\n }\n return 0;\n },\n typeClass: function typeClass() {\n return this.type === 'flex' ? \"\".concat(ComponentClass + modifierSeparator, \"flex\") : '';\n },\n justifyClass: function justifyClass() {\n return this.justify !== 'start' ? \"\".concat(ComponentClass + modifierSeparator, \"flex-justify-\").concat(this.justify) : '';\n },\n alignClass: function alignClass() {\n return this.align !== 'top' ? \"\".concat(ComponentClass + modifierSeparator, \"flex-align-\").concat(this.align) : '';\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXJvdy9jb21wb25lbnRzL3VuaS1yb3cvdW5pLXJvdy52dWUiXSwibmFtZXMiOlsibmFtZSIsImNvbXBvbmVudE5hbWUiLCJwcm9wcyIsInR5cGUiLCJndXR0ZXIiLCJqdXN0aWZ5IiwiZGVmYXVsdCIsImFsaWduIiwid2lkdGgiLCJjcmVhdGVkIiwiY29tcHV0ZWQiLCJtYXJnaW5WYWx1ZSIsInR5cGVDbGFzcyIsImp1c3RpZnlDbGFzcyIsImFsaWduQ2xhc3MiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBZEEsZUFpQkE7RUFDQUE7RUFDQUM7RUFNQUM7SUFDQUM7SUFDQUM7SUFDQUM7TUFDQUY7TUFDQUc7SUFDQTtJQUNBQztNQUNBSjtNQUNBRztJQUNBO0lBQ0E7SUFDQUU7TUFDQUw7TUFDQUc7SUFDQTtFQUNBO0VBQ0FHLDZCQUlBO0VBQ0FDO0lBQ0FDO01BRUE7UUFDQTtNQUNBO01BRUE7SUFDQTtJQUNBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI0Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyA6Y2xhc3M9XCJbICd1bmktcm93JywgdHlwZUNsYXNzICwganVzdGlmeUNsYXNzLCBhbGlnbkNsYXNzLCBdXCIgOnN0eWxlPVwie1xyXG5cdFx0bWFyZ2luTGVmdDpgJHtOdW1iZXIobWFyZ2luVmFsdWUpfXJweGAsXHJcblx0XHRtYXJnaW5SaWdodDpgJHtOdW1iZXIobWFyZ2luVmFsdWUpfXJweGAsXHJcblx0fVwiPlxyXG5cdFx0PHNsb3Q+PC9zbG90PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0Y29uc3QgQ29tcG9uZW50Q2xhc3MgPSAndW5pLXJvdyc7XHJcblx0Y29uc3QgbW9kaWZpZXJTZXBhcmF0b3IgPSAnLS0nO1xyXG5cdC8qKlxyXG5cdCAqIFJvd1x05biD5bGALeihjFxyXG5cdCAqIEBkZXNjcmlwdGlvblx05rWB5byP5qCF5qC857O757uf77yM6ZqP552A5bGP5bmV5oiW6KeG5Y+j5YiG5Li6IDI0IOS7ve+8jOWPr+S7pei/hemAn+eugOS+v+WcsOWIm+W7uuW4g+WxgOOAglxyXG5cdCAqIEB0dXRvcmlhbFx0aHR0cHM6Ly9leHQuZGNsb3VkLm5ldC5jbi9wbHVnaW4/aWQ9Mzk1OFxyXG5cdCAqXHJcblx0ICogQHByb3BlcnR5XHR7Z3V0dGVyfSB0eXBlID0gTnVtYmVyIOagheagvOmXtOmalFxyXG5cdCAqIEBwcm9wZXJ0eVx0e2p1c3RpZnl9IHR5cGUgPSBTdHJpbmcgZmxleCDluIPlsYDkuIvnmoTmsLTlubPmjpLliJfmlrnlvI9cclxuXHQgKiBcdFx0XHRcdFx0XHTlj6/pgIlcdHN0YXJ0L2VuZC9jZW50ZXIvc3BhY2UtYXJvdW5kL3NwYWNlLWJldHdlZW5cdHN0YXJ0XHJcblx0ICogXHRcdFx0XHRcdFx06buY6K6k5YC8XHRzdGFydFxyXG5cdCAqIEBwcm9wZXJ0eVx0e2FsaWdufSB0eXBlID0gU3RyaW5nIGZsZXgg5biD5bGA5LiL55qE5Z6C55u05o6S5YiX5pa55byPXHJcblx0ICogXHRcdFx0XHRcdFx05Y+v6YCJXHR0b3AvbWlkZGxlL2JvdHRvbVxyXG5cdCAqIFx0XHRcdFx0XHRcdOm7mOiupOWAvFx0dG9wXHJcblx0ICogQHByb3BlcnR5XHR7d2lkdGh9IHR5cGUgPSBTdHJpbmd8TnVtYmVyIG52dWXkuIvpnIDopoHoh6rooYzphY3nva7lrr3luqbnlKjkuo7orqHnrpdcclxuXHQgKiBcdFx0XHRcdFx0XHTpu5jorqTlgLwgNzUwXHJcblx0ICovXHJcblxyXG5cclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRuYW1lOiAndW5pUm93JyxcclxuXHRcdGNvbXBvbmVudE5hbWU6ICd1bmlSb3cnLFxyXG5cdFx0Ly8gI2lmZGVmIE1QLVdFSVhJTlxyXG5cdFx0b3B0aW9uczoge1xyXG5cdFx0XHR2aXJ0dWFsSG9zdDogdHJ1ZSAvLyDlnKjlvq7kv6HlsI/nqIvluo/kuK3lsIbnu4Tku7boioLngrnmuLLmn5PkuLromZrmi5/oioLngrnvvIzmm7TliqDmjqXov5FWdWXnu4Tku7bnmoTooajnjrDvvIzlj6/kvb/nlKhmbGV45biD5bGAXHJcblx0XHR9LFxyXG5cdFx0Ly8gI2VuZGlmXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdGd1dHRlcjogTnVtYmVyLFxyXG5cdFx0XHRqdXN0aWZ5OiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6ICdzdGFydCdcclxuXHRcdFx0fSxcclxuXHRcdFx0YWxpZ246IHtcclxuXHRcdFx0XHR0eXBlOiBTdHJpbmcsXHJcblx0XHRcdFx0ZGVmYXVsdDogJ3RvcCdcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gbnZ1ZeWmguaenOS9v+eUqHNwYW7nrYnlsZ7mgKfvvIzpnIDopoHphY3nva7lrr3luqZcclxuXHRcdFx0d2lkdGg6IHtcclxuXHRcdFx0XHR0eXBlOiBbU3RyaW5nLCBOdW1iZXJdLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IDc1MFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y3JlYXRlZCgpIHtcclxuXHRcdFx0Ly8gI2lmZGVmIEFQUC1OVlVFXHJcblx0XHRcdHRoaXMudHlwZSA9ICdmbGV4JztcclxuXHRcdFx0Ly8gI2VuZGlmXHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6IHtcclxuXHRcdFx0bWFyZ2luVmFsdWUoKSB7XHJcblx0XHRcdFx0Ly8gI2lmbmRlZiBBUFAtTlZVRVxyXG5cdFx0XHRcdGlmICh0aGlzLmd1dHRlcikge1xyXG5cdFx0XHRcdFx0cmV0dXJuIC0odGhpcy5ndXR0ZXIgLyAyKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8gI2VuZGlmXHJcblx0XHRcdFx0cmV0dXJuIDA7XHJcblx0XHRcdH0sXHJcblx0XHRcdHR5cGVDbGFzcygpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy50eXBlID09PSAnZmxleCcgPyBgJHtDb21wb25lbnRDbGFzcyArIG1vZGlmaWVyU2VwYXJhdG9yfWZsZXhgIDogJyc7XHJcblx0XHRcdH0sXHJcblx0XHRcdGp1c3RpZnlDbGFzcygpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5qdXN0aWZ5ICE9PSAnc3RhcnQnID8gYCR7Q29tcG9uZW50Q2xhc3MgKyBtb2RpZmllclNlcGFyYXRvcn1mbGV4LWp1c3RpZnktJHt0aGlzLmp1c3RpZnl9YCA6ICcnXHJcblx0XHRcdH0sXHJcblx0XHRcdGFsaWduQ2xhc3MoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuYWxpZ24gIT09ICd0b3AnID8gYCR7Q29tcG9uZW50Q2xhc3MgKyBtb2RpZmllclNlcGFyYXRvcn1mbGV4LWFsaWduLSR7dGhpcy5hbGlnbn1gIDogJydcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH07XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XHJcblx0JGxheW91dC1uYW1lc3BhY2U6IFwiLnVuaS1cIjtcclxuXHQkcm93OiRsYXlvdXQtbmFtZXNwYWNlK1wicm93XCI7XHJcblx0JG1vZGlmaWVyLXNlcGFyYXRvcjogXCItLVwiO1xyXG5cclxuXHRAbWl4aW4gdXRpbHMtY2xlYXJmaXgge1xyXG5cdFx0JHNlbGVjdG9yOiAmO1xyXG5cclxuXHRcdEBhdC1yb290IHtcclxuXHJcblx0XHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdFx0I3skc2VsZWN0b3J9OjpiZWZvcmUsXHJcblx0XHRcdCN7JHNlbGVjdG9yfTo6YWZ0ZXIge1xyXG5cdFx0XHRcdGRpc3BsYXk6IHRhYmxlO1xyXG5cdFx0XHRcdGNvbnRlbnQ6IFwiXCI7XHJcblx0XHRcdH1cclxuXHJcblx0XHRcdCN7JHNlbGVjdG9yfTo6YWZ0ZXIge1xyXG5cdFx0XHRcdGNsZWFyOiBib3RoO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdH1cclxuXHJcblx0fVxyXG5cclxuXHRAbWl4aW4gdXRpbHMtZmxleCAoJGRpcmVjdGlvbjogcm93KSB7XHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblx0XHRmbGV4LWRpcmVjdGlvbjogJGRpcmVjdGlvbjtcclxuXHR9XHJcblxyXG5cdEBtaXhpbiBzZXQtZmxleCgkc3RhdGUpIHtcclxuXHRcdEBhdC1yb290ICYtI3skc3RhdGV9IHtcclxuXHRcdFx0QGNvbnRlbnRcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdCN7JHJvd30ge1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHJcblx0XHQvKiAjaWZkZWYgQVBQLU5WVUUgKi9cclxuXHRcdGZsZXg6IDE7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHJcblx0XHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0XHRib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG5cdFx0LyogI2VuZGlmICovXHJcblxyXG5cdFx0Ly8g6Z2ebnZ1ZeS9v+eUqGZsb2F05biD5bGAXHJcblx0XHRAaW5jbHVkZSB1dGlscy1jbGVhcmZpeDtcclxuXHJcblx0XHQvLyDlnKhRUeOAgeWtl+iKguOAgeeZvuW6puWwj+eoi+W6j+W5s+WPsO+8jOe8luivkeWQjuS9v+eUqHNoYWRvdyBkb23vvIzkuI3lj6/kvb/nlKhmbGV45biD5bGA77yM5L2/55SoZmxvYXRcclxuXHRcdEBhdC1yb290IHtcclxuXHJcblx0XHRcdC8qICNpZm5kZWYgTVAtUVEgfHwgTVAtVE9VVElBTyB8fCBNUC1CQUlEVSAqL1xyXG5cdFx0XHQmI3skbW9kaWZpZXItc2VwYXJhdG9yfWZsZXgge1xyXG5cdFx0XHRcdEBpbmNsdWRlIHV0aWxzLWZsZXg7XHJcblx0XHRcdFx0ZmxleC13cmFwOiB3cmFwO1xyXG5cdFx0XHRcdGZsZXg6IDE7XHJcblxyXG5cdFx0XHRcdCY6YmVmb3JlLFxyXG5cdFx0XHRcdCY6YWZ0ZXIge1xyXG5cdFx0XHRcdFx0LyogI2lmbmRlZiBBUFAtTlZVRSAqL1xyXG5cdFx0XHRcdFx0ZGlzcGxheTogbm9uZTtcclxuXHRcdFx0XHRcdC8qICNlbmRpZiAqL1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0QGluY2x1ZGUgc2V0LWZsZXgoanVzdGlmeS1jZW50ZXIpIHtcclxuXHRcdFx0XHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0QGluY2x1ZGUgc2V0LWZsZXgoanVzdGlmeS1lbmQpIHtcclxuXHRcdFx0XHRcdGp1c3RpZnktY29udGVudDogZmxleC1lbmQ7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHRAaW5jbHVkZSBzZXQtZmxleChqdXN0aWZ5LXNwYWNlLWJldHdlZW4pIHtcclxuXHRcdFx0XHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBpbmNsdWRlIHNldC1mbGV4KGp1c3RpZnktc3BhY2UtYXJvdW5kKSB7XHJcblx0XHRcdFx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBpbmNsdWRlIHNldC1mbGV4KGFsaWduLW1pZGRsZSkge1xyXG5cdFx0XHRcdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdEBpbmNsdWRlIHNldC1mbGV4KGFsaWduLWJvdHRvbSkge1xyXG5cdFx0XHRcdFx0YWxpZ24taXRlbXM6IGZsZXgtZW5kO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cclxuXHRcdFx0LyogI2VuZGlmICovXHJcblx0XHR9XHJcblxyXG5cdH1cclxuXHJcblx0Ly8g5a2X6IqC44CBUVHphY3nva7lkI7kuI3nlJ/mlYhcclxuXHQvLyDmraTlpITnlKjms5Xml6Dms5Xkvb/nlKhcclxuXHQvKiAjaWZkZWYgTVAtV0VJWElOIHx8IE1QLVRPVVRJQU8gfHwgTVAtUVEgKi9cclxuXHQ6aG9zdCB7XHJcblx0XHRkaXNwbGF5OiBibG9jaztcclxuXHR9XHJcblxyXG5cdC8qICNlbmRpZiAqL1xyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///46\n");
  3025. /***/ }),
  3026. /* 47 */
  3027. /*!******************************************************************************************!*\
  3028. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-col/uni-col.vue ***!
  3029. \******************************************************************************************/
  3030. /*! no static exports found */
  3031. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3032. "use strict";
  3033. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./uni-col.vue?vue&type=template&id=fff79656& */ 48);\n/* harmony import */ var _uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./uni-col.vue?vue&type=script&lang=js& */ 50);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/uni-row/components/uni-col/uni-col.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBb0g7QUFDcEg7QUFDMkQ7QUFDTDs7O0FBR3REO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDZFQUFNO0FBQ1IsRUFBRSxrRkFBTTtBQUNSLEVBQUUsMkZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsc0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNDcuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3VuaS1jb2wudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZmZjc5NjU2JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vdW5pLWNvbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3VuaS1jb2wudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvdW5pLXJvdy9jb21wb25lbnRzL3VuaS1jb2wvdW5pLWNvbC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///47\n");
  3034. /***/ }),
  3035. /* 48 */
  3036. /*!*************************************************************************************************************************!*\
  3037. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-col/uni-col.vue?vue&type=template&id=fff79656& ***!
  3038. \*************************************************************************************************************************/
  3039. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3040. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3041. "use strict";
  3042. __webpack_require__.r(__webpack_exports__);
  3043. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-col.vue?vue&type=template&id=fff79656& */ 49);
  3044. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3045. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3046. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  3047. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_template_id_fff79656___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  3048. /***/ }),
  3049. /* 49 */
  3050. /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3051. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-col/uni-col.vue?vue&type=template&id=fff79656& ***!
  3052. \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3053. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3054. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3055. "use strict";
  3056. __webpack_require__.r(__webpack_exports__);
  3057. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  3058. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  3059. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  3060. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  3061. var components
  3062. var render = function () {
  3063. var _vm = this
  3064. var _h = _vm.$createElement
  3065. var _c = _vm._self._c || _h
  3066. return _c(
  3067. "view",
  3068. {
  3069. class: _vm._$s(0, "c", ["uni-col", _vm.sizeClass, _vm.pointClassList]),
  3070. style: _vm._$s(0, "s", {
  3071. paddingLeft: Number(_vm.gutter) + "rpx",
  3072. paddingRight: Number(_vm.gutter) + "rpx",
  3073. }),
  3074. attrs: { _i: 0 },
  3075. },
  3076. [_vm._t("default", null, { _i: 1 })],
  3077. 2
  3078. )
  3079. }
  3080. var recyclableRender = false
  3081. var staticRenderFns = []
  3082. render._withStripped = true
  3083. /***/ }),
  3084. /* 50 */
  3085. /*!*******************************************************************************************************************!*\
  3086. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-col/uni-col.vue?vue&type=script&lang=js& ***!
  3087. \*******************************************************************************************************************/
  3088. /*! no static exports found */
  3089. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3090. "use strict";
  3091. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./uni-col.vue?vue&type=script&lang=js& */ 51);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_uni_col_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW12QixDQUFnQiw2dEJBQUcsRUFBQyIsImZpbGUiOiI1MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWNvbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vdW5pLWNvbC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///50\n");
  3092. /***/ }),
  3093. /* 51 */
  3094. /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3095. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/uni-row/components/uni-col/uni-col.vue?vue&type=script&lang=js& ***!
  3096. \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3097. /*! no static exports found */
  3098. /***/ (function(module, exports, __webpack_require__) {
  3099. "use strict";
  3100. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n/**\n * Col\t布局-列\n * @description\t搭配uni-row使用,构建布局。\n * @tutorial\thttps://ext.dcloud.net.cn/plugin?id=3958\n *\n * @property\t{span} type = Number 栅格占据的列数\n * \t\t\t\t\t\t默认 24\n * @property\t{offset} type = Number 栅格左侧的间隔格数\n * @property\t{push} type = Number 栅格向右移动格数\n * @property\t{pull} type = Number 栅格向左移动格数\n * @property\t{xs} type = [Number, Object] <768px 响应式栅格数或者栅格属性对象\n * \t\t\t\t\t\t@description\tNumber时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}\n * @property\t{sm} type = [Number, Object] ≥768px 响应式栅格数或者栅格属性对象\n * \t\t\t\t\t\t@description\tNumber时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}\n * @property\t{md} type = [Number, Object] ≥992px 响应式栅格数或者栅格属性对象\n * \t\t\t\t\t\t@description\tNumber时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}\n * @property\t{lg} type = [Number, Object] ≥1200px 响应式栅格数或者栅格属性对象\n * \t\t\t\t\t\t@description\tNumber时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}\n * @property\t{xl} type = [Number, Object] ≥1920px 响应式栅格数或者栅格属性对象\n * \t\t\t\t\t\t@description\tNumber时表示在此屏幕宽度下,栅格占据的列数。Object时可配置多个描述{span: 4, offset: 4}\n */\nvar ComponentClass = 'uni-col';\n\n// -1 默认值,因为在微信小程序端只给Number会有默认值0\nvar _default = {\n name: 'uniCol',\n props: {\n span: {\n type: Number,\n default: 24\n },\n offset: {\n type: Number,\n default: -1\n },\n pull: {\n type: Number,\n default: -1\n },\n push: {\n type: Number,\n default: -1\n },\n xs: [Number, Object],\n sm: [Number, Object],\n md: [Number, Object],\n lg: [Number, Object],\n xl: [Number, Object]\n },\n data: function data() {\n return {\n gutter: 0,\n sizeClass: '',\n parentWidth: 0,\n nvueWidth: 0,\n marginLeft: 0,\n right: 0,\n left: 0\n };\n },\n created: function created() {\n var _this = this;\n // 字节小程序中,在computed中读取$parent为undefined\n var parent = this.$parent;\n while (parent && parent.$options.componentName !== 'uniRow') {\n parent = parent.$parent;\n }\n this.updateGutter(parent.gutter);\n parent.$watch('gutter', function (gutter) {\n _this.updateGutter(gutter);\n });\n },\n computed: {\n sizeList: function sizeList() {\n var span = this.span,\n offset = this.offset,\n pull = this.pull,\n push = this.push;\n return {\n span: span,\n offset: offset,\n pull: pull,\n push: push\n };\n },\n pointClassList: function pointClassList() {\n var _this2 = this;\n var classList = [];\n ['xs', 'sm', 'md', 'lg', 'xl'].forEach(function (point) {\n var props = _this2[point];\n if (typeof props === 'number') {\n classList.push(\"\".concat(ComponentClass, \"-\").concat(point, \"-\").concat(props));\n } else if ((0, _typeof2.default)(props) === 'object' && props) {\n Object.keys(props).forEach(function (pointProp) {\n classList.push(pointProp === 'span' ? \"\".concat(ComponentClass, \"-\").concat(point, \"-\").concat(props[pointProp]) : \"\".concat(ComponentClass, \"-\").concat(point, \"-\").concat(pointProp, \"-\").concat(props[pointProp]));\n });\n }\n });\n\n // 支付宝小程序使用 :class=[ ['a','b'] ],渲染错误\n return classList.join(' ');\n }\n },\n methods: {\n updateGutter: function updateGutter(parentGutter) {\n parentGutter = Number(parentGutter);\n if (!isNaN(parentGutter)) {\n this.gutter = parentGutter / 2;\n }\n }\n },\n watch: {\n sizeList: {\n immediate: true,\n handler: function handler(newVal) {\n var classList = [];\n for (var size in newVal) {\n var curSize = newVal[size];\n if ((curSize || curSize === 0) && curSize !== -1) {\n classList.push(size === 'span' ? \"\".concat(ComponentClass, \"-\").concat(curSize) : \"\".concat(ComponentClass, \"-\").concat(size, \"-\").concat(curSize));\n }\n }\n // 支付宝小程序使用 :class=[ ['a','b'] ],渲染错误\n this.sizeClass = classList.join(' ');\n }\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvdW5pLXJvdy9jb21wb25lbnRzL3VuaS1jb2wvdW5pLWNvbC52dWUiXSwibmFtZXMiOlsibmFtZSIsInByb3BzIiwic3BhbiIsInR5cGUiLCJkZWZhdWx0Iiwib2Zmc2V0IiwicHVsbCIsInB1c2giLCJ4cyIsInNtIiwibWQiLCJsZyIsInhsIiwiZGF0YSIsImd1dHRlciIsInNpemVDbGFzcyIsInBhcmVudFdpZHRoIiwibnZ1ZVdpZHRoIiwibWFyZ2luTGVmdCIsInJpZ2h0IiwibGVmdCIsImNyZWF0ZWQiLCJwYXJlbnQiLCJjb21wdXRlZCIsInNpemVMaXN0IiwicG9pbnRDbGFzc0xpc3QiLCJjbGFzc0xpc3QiLCJPYmplY3QiLCJwb2ludFByb3AiLCJDb21wb25lbnRDbGFzcyIsIm1ldGhvZHMiLCJ1cGRhdGVHdXR0ZXIiLCJwYXJlbnRHdXR0ZXIiLCJ3YXRjaCIsImltbWVkaWF0ZSIsImhhbmRsZXIiLCJzaXplIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBMEJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQUEsZUFDQTtFQUNBQTtFQU1BQztJQUNBQztNQUNBQztNQUNBQztJQUNBO0lBQ0FDO01BQ0FGO01BQ0FDO0lBQ0E7SUFDQUU7TUFDQUg7TUFDQUM7SUFDQTtJQUNBRztNQUNBSjtNQUNBQztJQUNBO0lBQ0FJO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0VBQ0E7RUFDQUM7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFBQTtJQUNBO0lBQ0E7SUFFQTtNQUNBQztJQUNBO0lBRUE7SUFDQUE7TUFDQTtJQUNBO0VBUUE7RUFDQUM7SUFDQUM7TUFDQSxJQUNBdEIsT0FJQSxLQUpBQTtRQUNBRyxTQUdBLEtBSEFBO1FBQ0FDLE9BRUEsS0FGQUE7UUFDQUMsT0FDQSxLQURBQTtNQUdBO1FBQ0FMO1FBQ0FHO1FBQ0FDO1FBQ0FDO01BQ0E7SUFDQTtJQUVBa0I7TUFBQTtNQUNBO01BRUE7UUFDQTtRQUNBO1VBQ0FDO1FBQ0E7VUFDQUM7WUFDQUQsZUFDQUUsaUNBQ0FDLDZFQUNBQSx3RkFDQTtVQUNBO1FBQ0E7TUFDQTs7TUFFQTtNQUNBO0lBQ0E7RUFFQTtFQUNBQztJQUNBQztNQUNBQztNQUNBO1FBQ0E7TUFDQTtJQUNBO0VBNEJBO0VBQ0FDO0lBQ0FUO01BQ0FVO01BQ0FDO1FBRUE7UUFDQTtVQUNBO1VBQ0E7WUFDQVQsZUFDQVUsNEJBQ0FQLGlEQUNBQSx1REFDQTtVQUNBO1FBQ0E7UUFDQTtRQUNBO01BS0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI1MS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8IS0tICNpZm5kZWYgQVBQLU5WVUUgLS0+XHJcblx0PHZpZXcgOmNsYXNzPVwiWyd1bmktY29sJywgc2l6ZUNsYXNzLCBwb2ludENsYXNzTGlzdF1cIiA6c3R5bGU9XCJ7XHJcblx0XHRwYWRkaW5nTGVmdDpgJHtOdW1iZXIoZ3V0dGVyKX1ycHhgLFxyXG5cdFx0cGFkZGluZ1JpZ2h0OmAke051bWJlcihndXR0ZXIpfXJweGAsXHJcblx0fVwiPlxyXG5cdFx0PHNsb3Q+PC9zbG90PlxyXG5cdDwvdmlldz5cclxuXHQ8IS0tICNlbmRpZiAtLT5cclxuXHQ8IS0tICNpZmRlZiBBUFAtTlZVRSAtLT5cclxuXHQ8IS0tIOWcqG52dWXkuIrvvIznsbvlkI3moLflvI/kuI3nlJ/mlYjvvIzmjaLkuLpzdHlsZSAtLT5cclxuXHQ8IS0tIOiuvue9rnJpZ2h05q2j5YC85aSx5pWI77yM6K6+572uIGxlZnQg6LSf5YC8IC0tPlxyXG5cdDx2aWV3IDpjbGFzcz1cIlsndW5pLWNvbCddXCIgOnN0eWxlPVwie1xyXG5cdFx0cGFkZGluZ0xlZnQ6YCR7TnVtYmVyKGd1dHRlcil9cnB4YCxcclxuXHRcdHBhZGRpbmdSaWdodDpgJHtOdW1iZXIoZ3V0dGVyKX1ycHhgLFxyXG5cdFx0d2lkdGg6YCR7bnZ1ZVdpZHRofXJweGAsXHJcblx0XHRwb3NpdGlvbjoncmVsYXRpdmUnLFxyXG5cdFx0bWFyZ2luTGVmdDpgJHttYXJnaW5MZWZ0fXJweGAsXHJcblx0XHRsZWZ0OmAke3JpZ2h0ID09PSAwID8gbGVmdCA6IC1yaWdodH1ycHhgXHJcblx0fVwiPlxyXG5cdFx0PHNsb3Q+PC9zbG90PlxyXG5cdDwvdmlldz5cclxuXHQ8IS0tICNlbmRpZiAtLT5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0LyoqXHJcblx0ICogQ29sXHTluIPlsYAt5YiXXHJcblx0ICogQGRlc2NyaXB0aW9uXHTmkK3phY11bmktcm935L2/55So77yM5p6E5bu65biD5bGA44CCXHJcblx0ICogQHR1dG9yaWFsXHRodHRwczovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0zOTU4XHJcblx0ICpcclxuXHQgKiBAcHJvcGVydHlcdHtzcGFufSB0eXBlID0gTnVtYmVyIOagheagvOWNoOaNrueahOWIl+aVsFxyXG5cdCAqIFx0XHRcdFx0XHRcdOm7mOiupCAyNFxyXG5cdCAqIEBwcm9wZXJ0eVx0e29mZnNldH0gdHlwZSA9IE51bWJlciDmoIXmoLzlt6bkvqfnmoTpl7TpmpTmoLzmlbBcclxuXHQgKiBAcHJvcGVydHlcdHtwdXNofSB0eXBlID0gTnVtYmVyIOagheagvOWQkeWPs+enu+WKqOagvOaVsFxyXG5cdCAqIEBwcm9wZXJ0eVx0e3B1bGx9IHR5cGUgPSBOdW1iZXIg5qCF5qC85ZCR5bem56e75Yqo5qC85pWwXHJcblx0ICogQHByb3BlcnR5XHR7eHN9IHR5cGUgPSBbTnVtYmVyLCBPYmplY3RdIDw3NjhweCDlk43lupTlvI/moIXmoLzmlbDmiJbogIXmoIXmoLzlsZ7mgKflr7nosaFcclxuXHQgKiBcdFx0XHRcdFx0XHRAZGVzY3JpcHRpb25cdE51bWJlcuaXtuihqOekuuWcqOatpOWxj+W5leWuveW6puS4i++8jOagheagvOWNoOaNrueahOWIl+aVsOOAgk9iamVjdOaXtuWPr+mFjee9ruWkmuS4quaPj+i/sHtzcGFuOiA0LCBvZmZzZXQ6IDR9XHJcblx0ICogQHByb3BlcnR5XHR7c219IHR5cGUgPSBbTnVtYmVyLCBPYmplY3RdIOKJpTc2OHB4IOWTjeW6lOW8j+agheagvOaVsOaIluiAheagheagvOWxnuaAp+WvueixoVxyXG5cdCAqIFx0XHRcdFx0XHRcdEBkZXNjcmlwdGlvblx0TnVtYmVy5pe26KGo56S65Zyo5q2k5bGP5bmV5a695bqm5LiL77yM5qCF5qC85Y2g5o2u55qE5YiX5pWw44CCT2JqZWN05pe25Y+v6YWN572u5aSa5Liq5o+P6L+we3NwYW46IDQsIG9mZnNldDogNH1cclxuXHQgKiBAcHJvcGVydHlcdHttZH0gdHlwZSA9IFtOdW1iZXIsIE9iamVjdF0g4omlOTkycHgg5ZON5bqU5byP5qCF5qC85pWw5oiW6ICF5qCF5qC85bGe5oCn5a+56LGhXHJcblx0ICogXHRcdFx0XHRcdFx0QGRlc2NyaXB0aW9uXHROdW1iZXLml7booajnpLrlnKjmraTlsY/luZXlrr3luqbkuIvvvIzmoIXmoLzljaDmja7nmoTliJfmlbDjgIJPYmplY3Tml7blj6/phY3nva7lpJrkuKrmj4/ov7B7c3BhbjogNCwgb2Zmc2V0OiA0fVxyXG5cdCAqIEBwcm9wZXJ0eVx0e2xnfSB0eXBlID0gW051bWJlciwgT2JqZWN0XSDiiaUxMjAwcHgg5ZON5bqU5byP5qCF5qC85pWw5oiW6ICF5qCF5qC85bGe5oCn5a+56LGhXHJcblx0ICogXHRcdFx0XHRcdFx0QGRlc2NyaXB0aW9uXHROdW1iZXLml7booajnpLrlnKjmraTlsY/luZXlrr3luqbkuIvvvIzmoIXmoLzljaDmja7nmoTliJfmlbDjgIJPYmplY3Tml7blj6/phY3nva7lpJrkuKrmj4/ov7B7c3BhbjogNCwgb2Zmc2V0OiA0fVxyXG5cdCAqIEBwcm9wZXJ0eVx0e3hsfSB0eXBlID0gW051bWJlciwgT2JqZWN0XSDiiaUxOTIwcHgg5ZON5bqU5byP5qCF5qC85pWw5oiW6ICF5qCF5qC85bGe5oCn5a+56LGhXHJcblx0ICogXHRcdFx0XHRcdFx0QGRlc2NyaXB0aW9uXHROdW1iZXLml7booajnpLrlnKjmraTlsY/luZXlrr3luqbkuIvvvIzmoIXmoLzljaDmja7nmoTliJfmlbDjgIJPYmplY3Tml7blj6/phY3nva7lpJrkuKrmj4/ov7B7c3BhbjogNCwgb2Zmc2V0OiA0fVxyXG5cdCAqL1xyXG5cdGNvbnN0IENvbXBvbmVudENsYXNzID0gJ3VuaS1jb2wnO1xyXG5cclxuXHQvLyAtMSDpu5jorqTlgLzvvIzlm6DkuLrlnKjlvq7kv6HlsI/nqIvluo/nq6/lj6rnu5lOdW1iZXLkvJrmnInpu5jorqTlgLwwXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ3VuaUNvbCcsXHJcblx0XHQvLyAjaWZkZWYgTVAtV0VJWElOXHJcblx0XHRvcHRpb25zOiB7XHJcblx0XHRcdHZpcnR1YWxIb3N0OiB0cnVlIC8vIOWcqOW+ruS/oeWwj+eoi+W6j+S4reWwhue7hOS7tuiKgueCuea4suafk+S4uuiZmuaLn+iKgueCue+8jOabtOWKoOaOpei/kVZ1Zee7hOS7tueahOihqOeOsFxyXG5cdFx0fSxcclxuXHRcdC8vICNlbmRpZlxyXG5cdFx0cHJvcHM6IHtcclxuXHRcdFx0c3Bhbjoge1xyXG5cdFx0XHRcdHR5cGU6IE51bWJlcixcclxuXHRcdFx0XHRkZWZhdWx0OiAyNFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRvZmZzZXQ6IHtcclxuXHRcdFx0XHR0eXBlOiBOdW1iZXIsXHJcblx0XHRcdFx0ZGVmYXVsdDogLTFcclxuXHRcdFx0fSxcclxuXHRcdFx0cHVsbDoge1xyXG5cdFx0XHRcdHR5cGU6IE51bWJlcixcclxuXHRcdFx0XHRkZWZhdWx0OiAtMVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRwdXNoOiB7XHJcblx0XHRcdFx0dHlwZTogTnVtYmVyLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IC0xXHJcblx0XHRcdH0sXHJcblx0XHRcdHhzOiBbTnVtYmVyLCBPYmplY3RdLFxyXG5cdFx0XHRzbTogW051bWJlciwgT2JqZWN0XSxcclxuXHRcdFx0bWQ6IFtOdW1iZXIsIE9iamVjdF0sXHJcblx0XHRcdGxnOiBbTnVtYmVyLCBPYmplY3RdLFxyXG5cdFx0XHR4bDogW051bWJlciwgT2JqZWN0XVxyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0Z3V0dGVyOiAwLFxyXG5cdFx0XHRcdHNpemVDbGFzczogJycsXHJcblx0XHRcdFx0cGFyZW50V2lkdGg6IDAsXHJcblx0XHRcdFx0bnZ1ZVdpZHRoOiAwLFxyXG5cdFx0XHRcdG1hcmdpbkxlZnQ6IDAsXHJcblx0XHRcdFx0cmlnaHQ6IDAsXHJcblx0XHRcdFx0bGVmdDogMFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Y3JlYXRlZCgpIHtcclxuXHRcdFx0Ly8g5a2X6IqC5bCP56iL5bqP5Lit77yM5ZyoY29tcHV0ZWTkuK3or7vlj5YkcGFyZW505Li6dW5kZWZpbmVkXHJcblx0XHRcdGxldCBwYXJlbnQgPSB0aGlzLiRwYXJlbnQ7XHJcblxyXG5cdFx0XHR3aGlsZSAocGFyZW50ICYmIHBhcmVudC4kb3B0aW9ucy5jb21wb25lbnROYW1lICE9PSAndW5pUm93Jykge1xyXG5cdFx0XHRcdHBhcmVudCA9IHBhcmVudC4kcGFyZW50O1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHR0aGlzLnVwZGF0ZUd1dHRlcihwYXJlbnQuZ3V0dGVyKVxyXG5cdFx0XHRwYXJlbnQuJHdhdGNoKCdndXR0ZXInLCAoZ3V0dGVyKSA9PiB7XHJcblx0XHRcdFx0dGhpcy51cGRhdGVHdXR0ZXIoZ3V0dGVyKVxyXG5cdFx0XHR9KVxyXG5cclxuXHRcdFx0Ly8gI2lmZGVmIEFQUC1OVlVFXHJcblx0XHRcdHRoaXMudXBkYXRlTnZ1ZVdpZHRoKHBhcmVudC53aWR0aClcclxuXHRcdFx0cGFyZW50LiR3YXRjaCgnd2lkdGgnLCAod2lkdGgpID0+IHtcclxuXHRcdFx0XHR0aGlzLnVwZGF0ZU52dWVXaWR0aCh3aWR0aClcclxuXHRcdFx0fSlcclxuXHRcdFx0Ly8gI2VuZGlmXHJcblx0XHR9LFxyXG5cdFx0Y29tcHV0ZWQ6IHtcclxuXHRcdFx0c2l6ZUxpc3QoKSB7XHJcblx0XHRcdFx0bGV0IHtcclxuXHRcdFx0XHRcdHNwYW4sXHJcblx0XHRcdFx0XHRvZmZzZXQsXHJcblx0XHRcdFx0XHRwdWxsLFxyXG5cdFx0XHRcdFx0cHVzaFxyXG5cdFx0XHRcdH0gPSB0aGlzO1xyXG5cclxuXHRcdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFx0c3BhbixcclxuXHRcdFx0XHRcdG9mZnNldCxcclxuXHRcdFx0XHRcdHB1bGwsXHJcblx0XHRcdFx0XHRwdXNoXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyAjaWZuZGVmIEFQUC1OVlVFXHJcblx0XHRcdHBvaW50Q2xhc3NMaXN0KCkge1xyXG5cdFx0XHRcdGxldCBjbGFzc0xpc3QgPSBbXTtcclxuXHJcblx0XHRcdFx0Wyd4cycsICdzbScsICdtZCcsICdsZycsICd4bCddLmZvckVhY2gocG9pbnQgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgcHJvcHMgPSB0aGlzW3BvaW50XTtcclxuXHRcdFx0XHRcdGlmICh0eXBlb2YgcHJvcHMgPT09ICdudW1iZXInKSB7XHJcblx0XHRcdFx0XHRcdGNsYXNzTGlzdC5wdXNoKGAke0NvbXBvbmVudENsYXNzfS0ke3BvaW50fS0ke3Byb3BzfWApXHJcblx0XHRcdFx0XHR9IGVsc2UgaWYgKHR5cGVvZiBwcm9wcyA9PT0gJ29iamVjdCcgJiYgcHJvcHMpIHtcclxuXHRcdFx0XHRcdFx0T2JqZWN0LmtleXMocHJvcHMpLmZvckVhY2gocG9pbnRQcm9wID0+IHtcclxuXHRcdFx0XHRcdFx0XHRjbGFzc0xpc3QucHVzaChcclxuXHRcdFx0XHRcdFx0XHRcdHBvaW50UHJvcCA9PT0gJ3NwYW4nID9cclxuXHRcdFx0XHRcdFx0XHRcdGAke0NvbXBvbmVudENsYXNzfS0ke3BvaW50fS0ke3Byb3BzW3BvaW50UHJvcF19YCA6XHJcblx0XHRcdFx0XHRcdFx0XHRgJHtDb21wb25lbnRDbGFzc30tJHtwb2ludH0tJHtwb2ludFByb3B9LSR7cHJvcHNbcG9pbnRQcm9wXX1gXHJcblx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHR9KVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHQvLyDmlK/ku5jlrp3lsI/nqIvluo/kvb/nlKggOmNsYXNzPVsgWydhJywnYiddIF3vvIzmuLLmn5PplJnor69cclxuXHRcdFx0XHRyZXR1cm4gY2xhc3NMaXN0LmpvaW4oJyAnKTtcclxuXHRcdFx0fVxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdH0sXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdHVwZGF0ZUd1dHRlcihwYXJlbnRHdXR0ZXIpIHtcclxuXHRcdFx0XHRwYXJlbnRHdXR0ZXIgPSBOdW1iZXIocGFyZW50R3V0dGVyKTtcclxuXHRcdFx0XHRpZiAoIWlzTmFOKHBhcmVudEd1dHRlcikpIHtcclxuXHRcdFx0XHRcdHRoaXMuZ3V0dGVyID0gcGFyZW50R3V0dGVyIC8gMlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gI2lmZGVmIEFQUC1OVlVFXHJcblx0XHRcdHVwZGF0ZU52dWVXaWR0aCh3aWR0aCkge1xyXG5cdFx0XHRcdC8vIOeUqOS6juWcqG52dWXnq6/vvIxzcGFu77yMb2Zmc2V077yMcHVsbO+8jHB1c2jnmoTorqHnrpdcclxuXHRcdFx0XHR0aGlzLnBhcmVudFdpZHRoID0gd2lkdGg7XHJcblx0XHRcdFx0WydzcGFuJywgJ29mZnNldCcsICdwdWxsJywgJ3B1c2gnXS5mb3JFYWNoKHNpemUgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgY3VyU2l6ZSA9IHRoaXNbc2l6ZV07XHJcblx0XHRcdFx0XHRpZiAoKGN1clNpemUgfHwgY3VyU2l6ZSA9PT0gMCkgJiYgY3VyU2l6ZSAhPT0gLTEpIHtcclxuXHRcdFx0XHRcdFx0bGV0IFJQWCA9IDEgLyAyNCAqIGN1clNpemUgKiB3aWR0aFxyXG5cdFx0XHRcdFx0XHRSUFggPSBOdW1iZXIoUlBYKTtcclxuXHRcdFx0XHRcdFx0c3dpdGNoIChzaXplKSB7XHJcblx0XHRcdFx0XHRcdFx0Y2FzZSAnc3Bhbic6XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm52dWVXaWR0aCA9IFJQWFxyXG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0Y2FzZSAnb2Zmc2V0JzpcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMubWFyZ2luTGVmdCA9IFJQWFxyXG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdFx0Y2FzZSAncHVsbCc6XHJcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnJpZ2h0ID0gUlBYXHJcblx0XHRcdFx0XHRcdFx0XHRicmVhaztcclxuXHRcdFx0XHRcdFx0XHRjYXNlICdwdXNoJzpcclxuXHRcdFx0XHRcdFx0XHRcdHRoaXMubGVmdCA9IFJQWFxyXG5cdFx0XHRcdFx0XHRcdFx0YnJlYWs7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fVxyXG5cdFx0XHQvLyAjZW5kaWZcclxuXHRcdH0sXHJcblx0XHR3YXRjaDoge1xyXG5cdFx0XHRzaXplTGlzdDoge1xyXG5cdFx0XHRcdGltbWVkaWF0ZTogdHJ1ZSxcclxuXHRcdFx0XHRoYW5kbGVyKG5ld1ZhbCkge1xyXG5cdFx0XHRcdFx0Ly8gI2lmbmRlZiBBUFAtTlZVRVxyXG5cdFx0XHRcdFx0bGV0IGNsYXNzTGlzdCA9IFtdO1xyXG5cdFx0XHRcdFx0Zm9yIChsZXQgc2l6ZSBpbiBuZXdWYWwpIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgY3VyU2l6ZSA9IG5ld1ZhbFtzaXplXTtcclxuXHRcdFx0XHRcdFx0aWYgKChjdXJTaXplIHx8IGN1clNpemUgPT09IDApICYmIGN1clNpemUgIT09IC0xKSB7XHJcblx0XHRcdFx0XHRcdFx0Y2xhc3NMaXN0LnB1c2goXHJcblx0XHRcdFx0XHRcdFx0XHRzaXplID09PSAnc3BhbicgP1xyXG5cdFx0XHRcdFx0XHRcdFx0YCR7Q29tcG9uZW50Q2xhc3N9LSR7Y3VyU2l6ZX1gIDpcclxuXHRcdFx0XHRcdFx0XHRcdGAke0NvbXBvbmVudENsYXNzfS0ke3NpemV9LSR7Y3VyU2l6ZX1gXHJcblx0XHRcdFx0XHRcdFx0KVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQvLyDmlK/ku5jlrp3lsI/nqIvluo/kvb/nlKggOmNsYXNzPVsgWydhJywnYiddIF3vvIzmuLLmn5PplJnor69cclxuXHRcdFx0XHRcdHRoaXMuc2l6ZUNsYXNzID0gY2xhc3NMaXN0LmpvaW4oJyAnKTtcclxuXHRcdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHRcdFx0Ly8gI2lmZGVmIEFQUC1OVlVFXHJcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZU52dWVXaWR0aCh0aGlzLnBhcmVudFdpZHRoKTtcclxuXHRcdFx0XHRcdC8vICNlbmRpZlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGUgbGFuZz0nc2NzcycgPlxyXG5cdC8qIGJyZWFrcG9pbnRzICovXHJcblx0JC0tc206IDc2OHB4ICFkZWZhdWx0O1xyXG5cdCQtLW1kOiA5OTJweCAhZGVmYXVsdDtcclxuXHQkLS1sZzogMTIwMHB4ICFkZWZhdWx0O1xyXG5cdCQtLXhsOiAxOTIwcHggIWRlZmF1bHQ7XHJcblxyXG5cdCRicmVha3BvaW50czogKCd4cycgOiAobWF4LXdpZHRoOiAkLS1zbSAtIDEpLFxyXG5cdCdzbScgOiAobWluLXdpZHRoOiAkLS1zbSksXHJcblx0J21kJyA6IChtaW4td2lkdGg6ICQtLW1kKSxcclxuXHQnbGcnIDogKG1pbi13aWR0aDogJC0tbGcpLFxyXG5cdCd4bCcgOiAobWluLXdpZHRoOiAkLS14bCkpO1xyXG5cclxuXHQkbGF5b3V0LW5hbWVzcGFjZTogXCIudW5pLVwiO1xyXG5cdCRjb2w6ICRsYXlvdXQtbmFtZXNwYWNlK1wiY29sXCI7XHJcblxyXG5cdEBmdW5jdGlvbiBnZXRTaXplKCRzaXplKSB7XHJcblx0XHQvKiBUT0RPIDEvMjQgKiAkc2l6ZSAqIDEwMCAqIDElOyDkvb/nlKjorqHnrpflkI7nmoTlgLzvvIzkuLrkuobop6PlhrMgdnVlMyDmjqfliLblj7DmiqXplJkgKi9cclxuXHRcdEByZXR1cm4gMC4wNDE2NjY2NjY2NiAqICRzaXplICogMTAwICogMSU7XHJcblx0fVxyXG5cclxuXHRAbWl4aW4gcmVzKCRrZXksICRtYXA6JGJyZWFrcG9pbnRzKSB7XHJcblx0XHRAaWYgbWFwLWhhcy1rZXkoJG1hcCwgJGtleSkge1xyXG5cdFx0XHRAbWVkaWEgc2NyZWVuIGFuZCAje2luc3BlY3QobWFwLWdldCgkbWFwLCRrZXkpKX0ge1xyXG5cdFx0XHRcdEBjb250ZW50O1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblxyXG5cdFx0QGVsc2Uge1xyXG5cdFx0XHRAd2FybiBcIlVuZGVpbmZlZCBwb2ludDogYCN7JGtleX1gXCI7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHQvKiAjaWZuZGVmIEFQUC1OVlVFICovXHJcblx0I3skY29sfSB7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHRcdGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcblx0fVxyXG5cclxuXHQjeyRjb2x9LTAge1xyXG5cdFx0LyogI2lmZGVmIEFQUC1OVlVFICovXHJcblx0XHR3aWR0aDogMDtcclxuXHRcdGhlaWdodDogMDtcclxuXHRcdG1hcmdpbi10b3A6IDA7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDA7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDA7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHRcdC8qICNpZm5kZWYgQVBQLU5WVUUgKi9cclxuXHRcdGRpc3BsYXk6IG5vbmU7XHJcblx0XHQvKiAjZW5kaWYgKi9cclxuXHR9XHJcblxyXG5cdEBmb3IgJGkgZnJvbSAwIHRocm91Z2ggMjQge1xyXG5cdFx0I3skY29sfS0jeyRpfSB7XHJcblx0XHRcdHdpZHRoOiBnZXRTaXplKCRpKTtcclxuXHRcdH1cclxuXHJcblx0XHQjeyRjb2x9LW9mZnNldC0jeyRpfSB7XHJcblx0XHRcdG1hcmdpbi1sZWZ0OiBnZXRTaXplKCRpKTtcclxuXHRcdH1cclxuXHJcblx0XHQjeyRjb2x9LXB1bGwtI3skaX0ge1xyXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdHJpZ2h0OiBnZXRTaXplKCRpKTtcclxuXHRcdH1cclxuXHJcblx0XHQjeyRjb2x9LXB1c2gtI3skaX0ge1xyXG5cdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdGxlZnQ6IGdldFNpemUoJGkpO1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0QGVhY2ggJHBvaW50IGluIG1hcC1rZXlzKCRicmVha3BvaW50cykge1xyXG5cdFx0QGluY2x1ZGUgcmVzKCRwb2ludCkge1xyXG5cdFx0XHQjeyRjb2x9LSN7JHBvaW50fS0wIHtcclxuXHRcdFx0XHRkaXNwbGF5OiBub25lO1xyXG5cdFx0XHR9XHJcblxyXG5cdFx0XHRAZm9yICRpIGZyb20gMCB0aHJvdWdoIDI0IHtcclxuXHRcdFx0XHQjeyRjb2x9LSN7JHBvaW50fS0jeyRpfSB7XHJcblx0XHRcdFx0XHR3aWR0aDogZ2V0U2l6ZSgkaSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQjeyRjb2x9LSN7JHBvaW50fS1vZmZzZXQtI3skaX0ge1xyXG5cdFx0XHRcdFx0bWFyZ2luLWxlZnQ6IGdldFNpemUoJGkpO1xyXG5cdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0I3skY29sfS0jeyRwb2ludH0tcHVsbC0jeyRpfSB7XHJcblx0XHRcdFx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRcdFx0XHRyaWdodDogZ2V0U2l6ZSgkaSk7XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQjeyRjb2x9LSN7JHBvaW50fS1wdXNoLSN7JGl9IHtcclxuXHRcdFx0XHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdFx0XHRcdGxlZnQ6IGdldFNpemUoJGkpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH1cclxuXHJcblx0LyogI2VuZGlmICovXHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///51\n");
  3101. /***/ }),
  3102. /* 52 */
  3103. /*!*********************************************************************************************************************!*\
  3104. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue ***!
  3105. \*********************************************************************************************************************/
  3106. /*! no static exports found */
  3107. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3108. "use strict";
  3109. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0%3D& */ 53);\n/* harmony import */ var _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./qiun-data-charts.vue?vue&type=script&lang=js& */ 90);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"fe947b98\",\n null,\n false,\n _qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBbVQ7QUFDblQ7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSxpUkFBTTtBQUNSLEVBQUUsMFJBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUscVJBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3FpdW4tZGF0YS1jaGFydHMudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPWZlOTQ3Yjk4JnNjb3BlZD10cnVlJmZpbHRlci1tb2R1bGVzPWV5SnlaR05vWVhKMGN5STZleUowZVhCbElqb2ljbVZ1WkdWeWFuTWlMQ0pqYjI1MFpXNTBJam9pSWl3aWMzUmhjblFpT2pNNE9Ea3dMQ0poZEhSeWN5STZleUp0YjJSMWJHVWlPaUp5WkdOb1lYSjBjeUlzSW14aGJtY2lPaUpxY3lKOUxDSmxibVFpT2pVME5qa3lmWDAlM0QmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9xaXVuLWRhdGEtY2hhcnRzLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vcWl1bi1kYXRhLWNoYXJ0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBcImZlOTQ3Yjk4XCIsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInVuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvY29tcG9uZW50cy9xaXVuLWRhdGEtY2hhcnRzL3FpdW4tZGF0YS1jaGFydHMudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///52\n");
  3110. /***/ }),
  3111. /* 53 */
  3112. /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3113. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0%3D& ***!
  3114. \******************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3115. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3116. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3117. "use strict";
  3118. __webpack_require__.r(__webpack_exports__);
  3119. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0%3D& */ 54);
  3120. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3121. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3122. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  3123. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_template_id_fe947b98_scoped_true_filter_modules_eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0_3D___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  3124. /***/ }),
  3125. /* 54 */
  3126. /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3127. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=template&id=fe947b98&scoped=true&filter-modules=eyJyZGNoYXJ0cyI6eyJ0eXBlIjoicmVuZGVyanMiLCJjb250ZW50IjoiIiwic3RhcnQiOjM4ODkwLCJhdHRycyI6eyJtb2R1bGUiOiJyZGNoYXJ0cyIsImxhbmciOiJqcyJ9LCJlbmQiOjU0NjkyfX0%3D& ***!
  3128. \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3129. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3130. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3131. "use strict";
  3132. __webpack_require__.r(__webpack_exports__);
  3133. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  3134. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  3135. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  3136. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  3137. var components
  3138. try {
  3139. components = {
  3140. qiunLoading:
  3141. __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue */ 55)
  3142. .default,
  3143. qiunError:
  3144. __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue */ 85)
  3145. .default,
  3146. }
  3147. } catch (e) {
  3148. if (
  3149. e.message.indexOf("Cannot find module") !== -1 &&
  3150. e.message.indexOf(".vue") !== -1
  3151. ) {
  3152. console.error(e.message)
  3153. console.error("1. 排查组件名称拼写是否正确")
  3154. console.error(
  3155. "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
  3156. )
  3157. console.error(
  3158. "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
  3159. )
  3160. } else {
  3161. throw e
  3162. }
  3163. }
  3164. var render = function () {
  3165. var _vm = this
  3166. var _h = _vm.$createElement
  3167. var _c = _vm._self._c || _h
  3168. return _c(
  3169. "view",
  3170. {
  3171. staticClass: _vm._$s(0, "sc", "chartsview"),
  3172. attrs: { id: _vm._$s(0, "a-id", "ChartBoxId" + _vm.cid), _i: 0 },
  3173. },
  3174. [
  3175. _vm._$s(1, "i", _vm.mixinDatacomLoading)
  3176. ? _c(
  3177. "view",
  3178. [
  3179. _c("qiun-loading", {
  3180. attrs: { loadingType: _vm.loadingType, _i: 2 },
  3181. }),
  3182. ],
  3183. 1
  3184. )
  3185. : _vm._e(),
  3186. _vm._$s(3, "i", _vm.mixinDatacomErrorMessage && _vm.errorShow)
  3187. ? _c(
  3188. "view",
  3189. { attrs: { _i: 3 }, on: { click: _vm.reloading } },
  3190. [
  3191. _c("qiun-error", {
  3192. attrs: { errorMessage: _vm.errorMessage, _i: 4 },
  3193. }),
  3194. ],
  3195. 1
  3196. )
  3197. : _vm._e(),
  3198. _vm._$s(5, "i", _vm.echarts)
  3199. ? [
  3200. _c("view", {
  3201. directives: [
  3202. {
  3203. name: "show",
  3204. rawName: "v-show",
  3205. value: _vm._$s(6, "v-show", _vm.showchart),
  3206. expression: "_$s(6,'v-show',showchart)",
  3207. },
  3208. ],
  3209. wxsProps: {
  3210. "change:resize": "echartsResize",
  3211. "change:prop": "echartsOpts",
  3212. },
  3213. style: _vm._$s(6, "s", { background: _vm.background }),
  3214. attrs: {
  3215. "data-directory": _vm._$s(6, "a-data-directory", _vm.directory),
  3216. id: _vm._$s(6, "a-id", "EC" + _vm.cid),
  3217. prop: _vm._$s(6, "change:echartsOpts", _vm.echartsOpts),
  3218. resize: _vm._$s(6, "change:echartsResize", _vm.echartsResize),
  3219. _i: 6,
  3220. },
  3221. }),
  3222. ]
  3223. : [
  3224. _c(
  3225. "view",
  3226. {
  3227. wxsProps: { "change:prop": "uchartsOpts" },
  3228. attrs: {
  3229. id: _vm._$s(8, "a-id", "UC" + _vm.cid),
  3230. prop: _vm._$s(8, "change:uchartsOpts", _vm.uchartsOpts),
  3231. _i: 8,
  3232. },
  3233. on: {},
  3234. },
  3235. [
  3236. _c("canvas", {
  3237. directives: [
  3238. {
  3239. name: "show",
  3240. rawName: "v-show",
  3241. value: _vm._$s(9, "v-show", _vm.showchart),
  3242. expression: "_$s(9,'v-show',showchart)",
  3243. },
  3244. ],
  3245. style: _vm._$s(9, "s", {
  3246. width: _vm.cWidth + "px",
  3247. height: _vm.cHeight + "px",
  3248. background: _vm.background,
  3249. }),
  3250. attrs: {
  3251. id: _vm._$s(9, "a-id", _vm.cid),
  3252. canvasId: _vm._$s(9, "a-canvasId", _vm.cid),
  3253. "disable-scroll": _vm._$s(
  3254. 9,
  3255. "a-disable-scroll",
  3256. _vm.disableScroll
  3257. ),
  3258. _i: 9,
  3259. },
  3260. on: { error: _vm._error },
  3261. }),
  3262. ]
  3263. ),
  3264. ],
  3265. ],
  3266. 2
  3267. )
  3268. }
  3269. var recyclableRender = false
  3270. var staticRenderFns = []
  3271. render._withStripped = true
  3272. /***/ }),
  3273. /* 55 */
  3274. /*!*************************************************************************************************************!*\
  3275. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue ***!
  3276. \*************************************************************************************************************/
  3277. /*! no static exports found */
  3278. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3279. "use strict";
  3280. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./qiun-loading.vue?vue&type=template&id=1c4fd998& */ 56);\n/* harmony import */ var _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./qiun-loading.vue?vue&type=script&lang=js& */ 58);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBeUg7QUFDekg7QUFDZ0U7QUFDTDs7O0FBRzNEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLGtGQUFNO0FBQ1IsRUFBRSx1RkFBTTtBQUNSLEVBQUUsZ0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsMkZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNTUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3FpdW4tbG9hZGluZy52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MWM0ZmQ5OTgmXCJcbnZhciByZW5kZXJqc1xuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9xaXVuLWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5leHBvcnQgKiBmcm9tIFwiLi9xaXVuLWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9xaXVuLWxvYWRpbmcudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///55\n");
  3281. /***/ }),
  3282. /* 56 */
  3283. /*!********************************************************************************************************************************************!*\
  3284. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=template&id=1c4fd998& ***!
  3285. \********************************************************************************************************************************************/
  3286. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3287. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3288. "use strict";
  3289. __webpack_require__.r(__webpack_exports__);
  3290. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-loading.vue?vue&type=template&id=1c4fd998& */ 57);
  3291. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3292. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3293. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  3294. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_template_id_1c4fd998___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  3295. /***/ }),
  3296. /* 57 */
  3297. /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3298. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=template&id=1c4fd998& ***!
  3299. \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3300. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3301. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3302. "use strict";
  3303. __webpack_require__.r(__webpack_exports__);
  3304. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  3305. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  3306. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  3307. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  3308. var components
  3309. var render = function () {
  3310. var _vm = this
  3311. var _h = _vm.$createElement
  3312. var _c = _vm._self._c || _h
  3313. return _c(
  3314. "view",
  3315. [
  3316. _vm._$s(1, "i", _vm.loadingType == 1)
  3317. ? _c("Loading1", { attrs: { _i: 1 } })
  3318. : _vm._e(),
  3319. _vm._$s(2, "i", _vm.loadingType == 2)
  3320. ? _c("Loading2", { attrs: { _i: 2 } })
  3321. : _vm._e(),
  3322. _vm._$s(3, "i", _vm.loadingType == 3)
  3323. ? _c("Loading3", { attrs: { _i: 3 } })
  3324. : _vm._e(),
  3325. _vm._$s(4, "i", _vm.loadingType == 4)
  3326. ? _c("Loading4", { attrs: { _i: 4 } })
  3327. : _vm._e(),
  3328. _vm._$s(5, "i", _vm.loadingType == 5)
  3329. ? _c("Loading5", { attrs: { _i: 5 } })
  3330. : _vm._e(),
  3331. ],
  3332. 1
  3333. )
  3334. }
  3335. var recyclableRender = false
  3336. var staticRenderFns = []
  3337. render._withStripped = true
  3338. /***/ }),
  3339. /* 58 */
  3340. /*!**************************************************************************************************************************************!*\
  3341. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=script&lang=js& ***!
  3342. \**************************************************************************************************************************************/
  3343. /*! no static exports found */
  3344. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3345. "use strict";
  3346. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-loading.vue?vue&type=script&lang=js& */ 59);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_loading_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXd2QixDQUFnQixrdUJBQUcsRUFBQyIsImZpbGUiOiI1OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1sb2FkaW5nLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stcHJlcHJvY2Vzcy1sb2FkZXIvaW5kZXguanM/P3JlZi0tNy0xIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXVuaS1hcHAtbG9hZGVyL3VzaW5nLWNvbXBvbmVudHMuanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9xaXVuLWxvYWRpbmcudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///58\n");
  3347. /***/ }),
  3348. /* 59 */
  3349. /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3350. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/qiun-loading.vue?vue&type=script&lang=js& ***!
  3351. \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3352. /*! no static exports found */
  3353. /***/ (function(module, exports, __webpack_require__) {
  3354. "use strict";
  3355. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _loading = _interopRequireDefault(__webpack_require__(/*! ./loading1.vue */ 60));\nvar _loading2 = _interopRequireDefault(__webpack_require__(/*! ./loading2.vue */ 65));\nvar _loading3 = _interopRequireDefault(__webpack_require__(/*! ./loading3.vue */ 70));\nvar _loading4 = _interopRequireDefault(__webpack_require__(/*! ./loading4.vue */ 75));\nvar _loading5 = _interopRequireDefault(__webpack_require__(/*! ./loading5.vue */ 80));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n components: {\n Loading1: _loading.default,\n Loading2: _loading2.default,\n Loading3: _loading3.default,\n Loading4: _loading4.default,\n Loading5: _loading5.default\n },\n name: 'qiun-loading',\n props: {\n loadingType: {\n type: Number,\n default: 2\n }\n },\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9xaXVuLWxvYWRpbmcudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJMb2FkaW5nMSIsIkxvYWRpbmcyIiwiTG9hZGluZzMiLCJMb2FkaW5nNCIsIkxvYWRpbmc1IiwibmFtZSIsInByb3BzIiwibG9hZGluZ1R5cGUiLCJ0eXBlIiwiZGVmYXVsdCIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFXQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7OztlQUNBO0VBQ0FBO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0lBQUFDO0VBQUE7RUFDQUM7RUFDQUM7SUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI1OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldz5cclxuXHQgPExvYWRpbmcxIHYtaWY9XCJsb2FkaW5nVHlwZT09MVwiLz5cclxuXHQgPExvYWRpbmcyIHYtaWY9XCJsb2FkaW5nVHlwZT09MlwiLz5cclxuXHQgPExvYWRpbmczIHYtaWY9XCJsb2FkaW5nVHlwZT09M1wiLz5cclxuXHQgPExvYWRpbmc0IHYtaWY9XCJsb2FkaW5nVHlwZT09NFwiLz5cclxuXHQgPExvYWRpbmc1IHYtaWY9XCJsb2FkaW5nVHlwZT09NVwiLz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCBMb2FkaW5nMSBmcm9tIFwiLi9sb2FkaW5nMS52dWVcIjtcclxuXHRpbXBvcnQgTG9hZGluZzIgZnJvbSBcIi4vbG9hZGluZzIudnVlXCI7XHJcblx0aW1wb3J0IExvYWRpbmczIGZyb20gXCIuL2xvYWRpbmczLnZ1ZVwiO1xyXG5cdGltcG9ydCBMb2FkaW5nNCBmcm9tIFwiLi9sb2FkaW5nNC52dWVcIjtcclxuXHRpbXBvcnQgTG9hZGluZzUgZnJvbSBcIi4vbG9hZGluZzUudnVlXCI7XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0Y29tcG9uZW50czp7TG9hZGluZzEsTG9hZGluZzIsTG9hZGluZzMsTG9hZGluZzQsTG9hZGluZzV9LFxyXG5cdFx0bmFtZTogJ3FpdW4tbG9hZGluZycsXHJcblx0XHRwcm9wczoge1xyXG5cdFx0XHRsb2FkaW5nVHlwZToge1xyXG5cdFx0XHRcdHR5cGU6IE51bWJlcixcclxuXHRcdFx0XHRkZWZhdWx0OiAyXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRcclxuXHRcdFx0fTtcclxuXHRcdH0sXHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZT5cclxuXHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///59\n");
  3356. /***/ }),
  3357. /* 60 */
  3358. /*!*********************************************************************************************************!*\
  3359. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue ***!
  3360. \*********************************************************************************************************/
  3361. /*! no static exports found */
  3362. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3363. "use strict";
  3364. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading1.vue?vue&type=template&id=e4e769ee&scoped=true& */ 61);\n/* harmony import */ var _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading1.vue?vue&type=script&lang=js& */ 63);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e4e769ee\",\n null,\n false,\n _loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNjAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmcxLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNGU3NjllZSZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmcxLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlNGU3NjllZVwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL2xvYWRpbmcxLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///60\n");
  3365. /***/ }),
  3366. /* 61 */
  3367. /*!****************************************************************************************************************************************************!*\
  3368. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=template&id=e4e769ee&scoped=true& ***!
  3369. \****************************************************************************************************************************************************/
  3370. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3371. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3372. "use strict";
  3373. __webpack_require__.r(__webpack_exports__);
  3374. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading1.vue?vue&type=template&id=e4e769ee&scoped=true& */ 62);
  3375. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3376. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3377. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  3378. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_template_id_e4e769ee_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  3379. /***/ }),
  3380. /* 62 */
  3381. /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3382. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=template&id=e4e769ee&scoped=true& ***!
  3383. \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3384. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3385. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3386. "use strict";
  3387. __webpack_require__.r(__webpack_exports__);
  3388. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  3389. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  3390. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  3391. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  3392. var components
  3393. var render = function () {
  3394. var _vm = this
  3395. var _h = _vm.$createElement
  3396. var _c = _vm._self._c || _h
  3397. return _c(
  3398. "view",
  3399. { staticClass: _vm._$s(0, "sc", "container loading1"), attrs: { _i: 0 } },
  3400. [
  3401. _c("view", {
  3402. staticClass: _vm._$s(1, "sc", "shape shape1"),
  3403. attrs: { _i: 1 },
  3404. }),
  3405. _c("view", {
  3406. staticClass: _vm._$s(2, "sc", "shape shape2"),
  3407. attrs: { _i: 2 },
  3408. }),
  3409. _c("view", {
  3410. staticClass: _vm._$s(3, "sc", "shape shape3"),
  3411. attrs: { _i: 3 },
  3412. }),
  3413. _c("view", {
  3414. staticClass: _vm._$s(4, "sc", "shape shape4"),
  3415. attrs: { _i: 4 },
  3416. }),
  3417. ]
  3418. )
  3419. }
  3420. var recyclableRender = false
  3421. var staticRenderFns = []
  3422. render._withStripped = true
  3423. /***/ }),
  3424. /* 63 */
  3425. /*!**********************************************************************************************************************************!*\
  3426. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=script&lang=js& ***!
  3427. \**********************************************************************************************************************************/
  3428. /*! no static exports found */
  3429. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3430. "use strict";
  3431. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading1.vue?vue&type=script&lang=js& */ 64);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading1_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW92QixDQUFnQiw4dEJBQUcsRUFBQyIsImZpbGUiOiI2My5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzEudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2xvYWRpbmcxLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///63\n");
  3432. /***/ }),
  3433. /* 64 */
  3434. /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3435. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading1.vue?vue&type=script&lang=js& ***!
  3436. \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3437. /*! no static exports found */
  3438. /***/ (function(module, exports, __webpack_require__) {
  3439. "use strict";
  3440. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'loading1',\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nMS52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI2NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzFcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmcxJyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuLmNvbnRhaW5lci5sb2FkaW5nMSB7XHJcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbiAgICAgICAgICB0cmFuc2Zvcm06IHJvdGF0ZSg0NWRlZyk7XHJcbn1cclxuXHJcbi5jb250YWluZXIgLnNoYXBlIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDEwcHg7XHJcbiAgaGVpZ2h0OiAxMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTEge1xyXG4gIGxlZnQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4OTBGRjtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTIge1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM5MUNCNzQ7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUzIHtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZBQzg1ODtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTQge1xyXG4gIGJvdHRvbTogMDtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NjY2O1xyXG59XHJcblxyXG4ubG9hZGluZzEgLnNoYXBlMSB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjFzaGFwZTEgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uMXNoYXBlMSAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uMXNoYXBlMSB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAxNnB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMTZweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTEge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE2cHgsIDE2cHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzEgLnNoYXBlMiB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjFzaGFwZTIgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uMXNoYXBlMiAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uMXNoYXBlMiB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTZweCwgMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAxNnB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMXNoYXBlMiB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTZweCwgMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAxNnB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmcxIC5zaGFwZTMge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24xc2hhcGUzIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjFzaGFwZTMgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTMge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgLTE2cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAtMTZweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTMge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTZweCwgLTE2cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNnB4LCAtMTZweCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nMSAuc2hhcGU0IHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uMXNoYXBlNCAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24xc2hhcGU0IDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24xc2hhcGU0IHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAtMTZweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNnB4LCAtMTZweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjFzaGFwZTQge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE2cHgsIC0xNnB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE2cHgsIC0xNnB4KTtcclxuICB9XHJcbn1cclxuXHJcblxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///64\n");
  3441. /***/ }),
  3442. /* 65 */
  3443. /*!*********************************************************************************************************!*\
  3444. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue ***!
  3445. \*********************************************************************************************************/
  3446. /*! no static exports found */
  3447. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3448. "use strict";
  3449. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& */ 66);\n/* harmony import */ var _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading2.vue?vue&type=script&lang=js& */ 68);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e4cb3aec\",\n null,\n false,\n _loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmcyLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNGNiM2FlYyZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmcyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlNGNiM2FlY1wiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL2xvYWRpbmcyLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///65\n");
  3450. /***/ }),
  3451. /* 66 */
  3452. /*!****************************************************************************************************************************************************!*\
  3453. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& ***!
  3454. \****************************************************************************************************************************************************/
  3455. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3456. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3457. "use strict";
  3458. __webpack_require__.r(__webpack_exports__);
  3459. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& */ 67);
  3460. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3461. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3462. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  3463. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_template_id_e4cb3aec_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  3464. /***/ }),
  3465. /* 67 */
  3466. /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3467. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=template&id=e4cb3aec&scoped=true& ***!
  3468. \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3469. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3470. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3471. "use strict";
  3472. __webpack_require__.r(__webpack_exports__);
  3473. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  3474. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  3475. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  3476. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  3477. var components
  3478. var render = function () {
  3479. var _vm = this
  3480. var _h = _vm.$createElement
  3481. var _c = _vm._self._c || _h
  3482. return _c(
  3483. "view",
  3484. { staticClass: _vm._$s(0, "sc", "container loading2"), attrs: { _i: 0 } },
  3485. [
  3486. _c("view", {
  3487. staticClass: _vm._$s(1, "sc", "shape shape1"),
  3488. attrs: { _i: 1 },
  3489. }),
  3490. _c("view", {
  3491. staticClass: _vm._$s(2, "sc", "shape shape2"),
  3492. attrs: { _i: 2 },
  3493. }),
  3494. _c("view", {
  3495. staticClass: _vm._$s(3, "sc", "shape shape3"),
  3496. attrs: { _i: 3 },
  3497. }),
  3498. _c("view", {
  3499. staticClass: _vm._$s(4, "sc", "shape shape4"),
  3500. attrs: { _i: 4 },
  3501. }),
  3502. ]
  3503. )
  3504. }
  3505. var recyclableRender = false
  3506. var staticRenderFns = []
  3507. render._withStripped = true
  3508. /***/ }),
  3509. /* 68 */
  3510. /*!**********************************************************************************************************************************!*\
  3511. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=script&lang=js& ***!
  3512. \**********************************************************************************************************************************/
  3513. /*! no static exports found */
  3514. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3515. "use strict";
  3516. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading2.vue?vue&type=script&lang=js& */ 69);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading2_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW92QixDQUFnQiw4dEJBQUcsRUFBQyIsImZpbGUiOiI2OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzIudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2xvYWRpbmcyLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///68\n");
  3517. /***/ }),
  3518. /* 69 */
  3519. /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3520. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading2.vue?vue&type=script&lang=js& ***!
  3521. \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3522. /*! no static exports found */
  3523. /***/ (function(module, exports, __webpack_require__) {
  3524. "use strict";
  3525. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'loading2',\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nMi52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI2OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzJcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmcyJyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5jb250YWluZXIubG9hZGluZzIge1xyXG4gIC13ZWJraXQtdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpO1xyXG4gICAgICAgICAgdHJhbnNmb3JtOiByb3RhdGUoMTBkZWcpO1xyXG59XHJcbi5jb250YWluZXIubG9hZGluZzIgLnNoYXBlIHtcclxuICBib3JkZXItcmFkaXVzOiA1cHg7XHJcbn1cclxuLmNvbnRhaW5lci5sb2FkaW5nMntcclxuICAtd2Via2l0LWFuaW1hdGlvbjogcm90YXRpb24gMXMgaW5maW5pdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IHJvdGF0aW9uIDFzIGluZmluaXRlO1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5zaGFwZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMHB4O1xyXG4gIGhlaWdodDogMTBweDtcclxuICBib3JkZXItcmFkaXVzOiAxcHg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUxIHtcclxuICBsZWZ0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMxODkwRkY7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUyIHtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTFDQjc0O1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlMyB7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGQUM4NTg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGU0IHtcclxuICBib3R0b206IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjY2NjtcclxufVxyXG5cclxuXHJcbi5sb2FkaW5nMiAuc2hhcGUxIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uMnNoYXBlMSAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24yc2hhcGUxIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24yc2hhcGUxIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIDIwcHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAyMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlMSB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAyMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMjBweCwgMjBweCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nMiAuc2hhcGUyIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uMnNoYXBlMiAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24yc2hhcGUyIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24yc2hhcGUyIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0yMHB4LCAyMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIDIwcHgpO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBhbmltYXRpb24yc2hhcGUyIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0yMHB4LCAyMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIDIwcHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzIgLnNoYXBlMyB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjJzaGFwZTMgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uMnNoYXBlMyAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlMyB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAtMjBweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIC0yMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlMyB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgyMHB4LCAtMjBweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDIwcHgsIC0yMHB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmcyIC5zaGFwZTQge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24yc2hhcGU0IDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjJzaGFwZTQgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjJzaGFwZTQge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIC0yMHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTIwcHgsIC0yMHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uMnNoYXBlNCB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMjBweCwgLTIwcHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMjBweCwgLTIwcHgpO1xyXG4gIH1cclxufVxyXG5cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///69\n");
  3526. /***/ }),
  3527. /* 70 */
  3528. /*!*********************************************************************************************************!*\
  3529. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue ***!
  3530. \*********************************************************************************************************/
  3531. /*! no static exports found */
  3532. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3533. "use strict";
  3534. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading3.vue?vue&type=template&id=e4af0bea&scoped=true& */ 71);\n/* harmony import */ var _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading3.vue?vue&type=script&lang=js& */ 73);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e4af0bea\",\n null,\n false,\n _loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNzAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmczLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNGFmMGJlYSZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmczLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlNGFmMGJlYVwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL2xvYWRpbmczLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///70\n");
  3535. /***/ }),
  3536. /* 71 */
  3537. /*!****************************************************************************************************************************************************!*\
  3538. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=template&id=e4af0bea&scoped=true& ***!
  3539. \****************************************************************************************************************************************************/
  3540. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3541. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3542. "use strict";
  3543. __webpack_require__.r(__webpack_exports__);
  3544. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading3.vue?vue&type=template&id=e4af0bea&scoped=true& */ 72);
  3545. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3546. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3547. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  3548. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_template_id_e4af0bea_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  3549. /***/ }),
  3550. /* 72 */
  3551. /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3552. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=template&id=e4af0bea&scoped=true& ***!
  3553. \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3554. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3555. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3556. "use strict";
  3557. __webpack_require__.r(__webpack_exports__);
  3558. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  3559. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  3560. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  3561. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  3562. var components
  3563. var render = function () {
  3564. var _vm = this
  3565. var _h = _vm.$createElement
  3566. var _c = _vm._self._c || _h
  3567. return _c(
  3568. "view",
  3569. { staticClass: _vm._$s(0, "sc", "container loading3"), attrs: { _i: 0 } },
  3570. [
  3571. _c("view", {
  3572. staticClass: _vm._$s(1, "sc", "shape shape1"),
  3573. attrs: { _i: 1 },
  3574. }),
  3575. _c("view", {
  3576. staticClass: _vm._$s(2, "sc", "shape shape2"),
  3577. attrs: { _i: 2 },
  3578. }),
  3579. _c("view", {
  3580. staticClass: _vm._$s(3, "sc", "shape shape3"),
  3581. attrs: { _i: 3 },
  3582. }),
  3583. _c("view", {
  3584. staticClass: _vm._$s(4, "sc", "shape shape4"),
  3585. attrs: { _i: 4 },
  3586. }),
  3587. ]
  3588. )
  3589. }
  3590. var recyclableRender = false
  3591. var staticRenderFns = []
  3592. render._withStripped = true
  3593. /***/ }),
  3594. /* 73 */
  3595. /*!**********************************************************************************************************************************!*\
  3596. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=script&lang=js& ***!
  3597. \**********************************************************************************************************************************/
  3598. /*! no static exports found */
  3599. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3600. "use strict";
  3601. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading3.vue?vue&type=script&lang=js& */ 74);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading3_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW92QixDQUFnQiw4dEJBQUcsRUFBQyIsImZpbGUiOiI3My5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzMudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2xvYWRpbmczLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///73\n");
  3602. /***/ }),
  3603. /* 74 */
  3604. /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3605. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading3.vue?vue&type=script&lang=js& ***!
  3606. \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3607. /*! no static exports found */
  3608. /***/ (function(module, exports, __webpack_require__) {
  3609. "use strict";
  3610. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'loading3',\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nMy52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI3NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzNcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmczJyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbiAuY29udGFpbmVyLmxvYWRpbmczIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogcm90YXRpb24gMXMgaW5maW5pdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IHJvdGF0aW9uIDFzIGluZmluaXRlO1xyXG59XHJcbi5jb250YWluZXIubG9hZGluZzMgLnNoYXBlMSB7XHJcbiAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogMTBweDtcclxufVxyXG4uY29udGFpbmVyLmxvYWRpbmczIC5zaGFwZTIge1xyXG4gIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiAxMHB4O1xyXG59XHJcbi5jb250YWluZXIubG9hZGluZzMgLnNoYXBlMyB7XHJcbiAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogMTBweDtcclxufVxyXG4uY29udGFpbmVyLmxvYWRpbmczIC5zaGFwZTQge1xyXG4gIGJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiAxMHB4O1xyXG59XHJcblxyXG4uY29udGFpbmVyIC5zaGFwZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMHB4O1xyXG4gIGhlaWdodDogMTBweDtcclxuICBib3JkZXItcmFkaXVzOiAxcHg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUxIHtcclxuICBsZWZ0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMxODkwRkY7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUyIHtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTFDQjc0O1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlMyB7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGQUM4NTg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGU0IHtcclxuICBib3R0b206IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjY2NjtcclxufVxyXG5cclxuLmxvYWRpbmczIC5zaGFwZTEge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24zc2hhcGUxIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjNzaGFwZTEgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTEge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCA1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIDVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTEge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCA1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIDVweCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nMyAuc2hhcGUyIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uM3NoYXBlMiAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb24zc2hhcGUyIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb24zc2hhcGUyIHtcclxuICBmcm9tIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICB0byB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC01cHgsIDVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01cHgsIDVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTIge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgNXB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmczIC5zaGFwZTMge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb24zc2hhcGUzIDAuNXMgZWFzZSAwcyBpbmZpbml0ZSBhbHRlcm5hdGU7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjNzaGFwZTMgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTMge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCAtNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoNXB4LCAtNXB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uM3NoYXBlMyB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIC01cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSg1cHgsIC01cHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzMgLnNoYXBlNCB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjNzaGFwZTQgMC41cyBlYXNlIDBzIGluZmluaXRlIGFsdGVybmF0ZTtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uM3NoYXBlNCAwLjVzIGVhc2UgMHMgaW5maW5pdGUgYWx0ZXJuYXRlO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uM3NoYXBlNCB7XHJcbiAgZnJvbSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgdG8ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNXB4LCAtNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgLTVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjNzaGFwZTQge1xyXG4gIGZyb20ge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIHRvIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTVweCwgLTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01cHgsIC01cHgpO1xyXG4gIH1cclxufVxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///74\n");
  3611. /***/ }),
  3612. /* 75 */
  3613. /*!*********************************************************************************************************!*\
  3614. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue ***!
  3615. \*********************************************************************************************************/
  3616. /*! no static exports found */
  3617. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3618. "use strict";
  3619. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading4.vue?vue&type=template&id=e492dce8&scoped=true& */ 76);\n/* harmony import */ var _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading4.vue?vue&type=script&lang=js& */ 78);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e492dce8\",\n null,\n false,\n _loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiNzUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmc0LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNDkyZGNlOCZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmc0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlNDkyZGNlOFwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL2xvYWRpbmc0LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///75\n");
  3620. /***/ }),
  3621. /* 76 */
  3622. /*!****************************************************************************************************************************************************!*\
  3623. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=template&id=e492dce8&scoped=true& ***!
  3624. \****************************************************************************************************************************************************/
  3625. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3626. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3627. "use strict";
  3628. __webpack_require__.r(__webpack_exports__);
  3629. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading4.vue?vue&type=template&id=e492dce8&scoped=true& */ 77);
  3630. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3631. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3632. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  3633. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_template_id_e492dce8_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  3634. /***/ }),
  3635. /* 77 */
  3636. /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3637. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=template&id=e492dce8&scoped=true& ***!
  3638. \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3639. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3640. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3641. "use strict";
  3642. __webpack_require__.r(__webpack_exports__);
  3643. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  3644. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  3645. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  3646. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  3647. var components
  3648. var render = function () {
  3649. var _vm = this
  3650. var _h = _vm.$createElement
  3651. var _c = _vm._self._c || _h
  3652. return _c(
  3653. "view",
  3654. { staticClass: _vm._$s(0, "sc", "container loading5"), attrs: { _i: 0 } },
  3655. [
  3656. _c("view", {
  3657. staticClass: _vm._$s(1, "sc", "shape shape1"),
  3658. attrs: { _i: 1 },
  3659. }),
  3660. _c("view", {
  3661. staticClass: _vm._$s(2, "sc", "shape shape2"),
  3662. attrs: { _i: 2 },
  3663. }),
  3664. _c("view", {
  3665. staticClass: _vm._$s(3, "sc", "shape shape3"),
  3666. attrs: { _i: 3 },
  3667. }),
  3668. _c("view", {
  3669. staticClass: _vm._$s(4, "sc", "shape shape4"),
  3670. attrs: { _i: 4 },
  3671. }),
  3672. ]
  3673. )
  3674. }
  3675. var recyclableRender = false
  3676. var staticRenderFns = []
  3677. render._withStripped = true
  3678. /***/ }),
  3679. /* 78 */
  3680. /*!**********************************************************************************************************************************!*\
  3681. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=script&lang=js& ***!
  3682. \**********************************************************************************************************************************/
  3683. /*! no static exports found */
  3684. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3685. "use strict";
  3686. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading4.vue?vue&type=script&lang=js& */ 79);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading4_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW92QixDQUFnQiw4dEJBQUcsRUFBQyIsImZpbGUiOiI3OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2xvYWRpbmc0LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///78\n");
  3687. /***/ }),
  3688. /* 79 */
  3689. /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3690. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading4.vue?vue&type=script&lang=js& ***!
  3691. \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3692. /*! no static exports found */
  3693. /***/ (function(module, exports, __webpack_require__) {
  3694. "use strict";
  3695. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'loading5',\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nNC52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI3OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzVcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmc1JyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBzY29wZWQ9XCJ0cnVlXCI+XHJcbi5jb250YWluZXIge1xyXG4gIHdpZHRoOiAzMHB4O1xyXG4gIGhlaWdodDogMzBweDtcclxuICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbn1cclxuXHJcbi5jb250YWluZXIubG9hZGluZzUgLnNoYXBlIHtcclxuICB3aWR0aDogMTVweDtcclxuICBoZWlnaHQ6IDE1cHg7XHJcbn1cclxuXHJcbi5jb250YWluZXIgLnNoYXBlIHtcclxuICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgd2lkdGg6IDEwcHg7XHJcbiAgaGVpZ2h0OiAxMHB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDFweDtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTEge1xyXG4gIGxlZnQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogIzE4OTBGRjtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTIge1xyXG4gIHJpZ2h0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICM5MUNCNzQ7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUzIHtcclxuICBib3R0b206IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0ZBQzg1ODtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZS5zaGFwZTQge1xyXG4gIGJvdHRvbTogMDtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRUU2NjY2O1xyXG59XHJcblxyXG4ubG9hZGluZzUgLnNoYXBlMSB7XHJcbiAgYW5pbWF0aW9uOiBhbmltYXRpb241c2hhcGUxIDJzIGVhc2UgMHMgaW5maW5pdGUgcmV2ZXJzZTtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjVzaGFwZTEge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTVweCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAxNXB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBhbmltYXRpb241c2hhcGUxIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE1cHgpO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc1IC5zaGFwZTIge1xyXG4gIGFuaW1hdGlvbjogYW5pbWF0aW9uNXNoYXBlMiAycyBlYXNlIDBzIGluZmluaXRlIHJldmVyc2U7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb241c2hhcGUyIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDE1cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMTVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjVzaGFwZTIge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMTVweCwgMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxNXB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc1IC5zaGFwZTMge1xyXG4gIGFuaW1hdGlvbjogYW5pbWF0aW9uNXNoYXBlMyAycyBlYXNlIDBzIGluZmluaXRlIHJldmVyc2U7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb241c2hhcGUzIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIDApO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIC0xNXB4KTtcclxuICB9XHJcbiAgNzUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjVzaGFwZTMge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxNXB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE1cHgsIC0xNXB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMTVweCwgLTE1cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xNXB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc1IC5zaGFwZTQge1xyXG4gIGFuaW1hdGlvbjogYW5pbWF0aW9uNXNoYXBlNCAycyBlYXNlIDBzIGluZmluaXRlIHJldmVyc2U7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb241c2hhcGU0IHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApO1xyXG4gIH1cclxufVxyXG5cclxuQGtleWZyYW1lcyBhbmltYXRpb241c2hhcGU0IHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE1cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMTVweCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAtMTVweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xNXB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE1cHgsIDApO1xyXG4gIH1cclxufVxyXG5cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///79\n");
  3696. /***/ }),
  3697. /* 80 */
  3698. /*!*********************************************************************************************************!*\
  3699. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue ***!
  3700. \*********************************************************************************************************/
  3701. /*! no static exports found */
  3702. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3703. "use strict";
  3704. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./loading5.vue?vue&type=template&id=e476ade6&scoped=true& */ 81);\n/* harmony import */ var _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./loading5.vue?vue&type=script&lang=js& */ 83);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n \"e476ade6\",\n null,\n false,\n _loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBaUk7QUFDakk7QUFDNEQ7QUFDTDs7O0FBR3ZEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLDhFQUFNO0FBQ1IsRUFBRSwrRkFBTTtBQUNSLEVBQUUsd0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsbUdBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL2xvYWRpbmc1LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1lNDc2YWRlNiZzY29wZWQ9dHJ1ZSZcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2xvYWRpbmc1LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIlxuZXhwb3J0ICogZnJvbSBcIi4vbG9hZGluZzUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgXCJlNDc2YWRlNlwiLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJ1bmlfbW9kdWxlcy9xaXVuLWRhdGEtY2hhcnRzL2NvbXBvbmVudHMvcWl1bi1sb2FkaW5nL2xvYWRpbmc1LnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///80\n");
  3705. /***/ }),
  3706. /* 81 */
  3707. /*!****************************************************************************************************************************************************!*\
  3708. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=template&id=e476ade6&scoped=true& ***!
  3709. \****************************************************************************************************************************************************/
  3710. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3711. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3712. "use strict";
  3713. __webpack_require__.r(__webpack_exports__);
  3714. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading5.vue?vue&type=template&id=e476ade6&scoped=true& */ 82);
  3715. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3716. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3717. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  3718. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_template_id_e476ade6_scoped_true___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  3719. /***/ }),
  3720. /* 82 */
  3721. /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3722. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=template&id=e476ade6&scoped=true& ***!
  3723. \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3724. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3725. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3726. "use strict";
  3727. __webpack_require__.r(__webpack_exports__);
  3728. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  3729. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  3730. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  3731. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  3732. var components
  3733. var render = function () {
  3734. var _vm = this
  3735. var _h = _vm.$createElement
  3736. var _c = _vm._self._c || _h
  3737. return _c(
  3738. "view",
  3739. { staticClass: _vm._$s(0, "sc", "container loading6"), attrs: { _i: 0 } },
  3740. [
  3741. _c("view", {
  3742. staticClass: _vm._$s(1, "sc", "shape shape1"),
  3743. attrs: { _i: 1 },
  3744. }),
  3745. _c("view", {
  3746. staticClass: _vm._$s(2, "sc", "shape shape2"),
  3747. attrs: { _i: 2 },
  3748. }),
  3749. _c("view", {
  3750. staticClass: _vm._$s(3, "sc", "shape shape3"),
  3751. attrs: { _i: 3 },
  3752. }),
  3753. _c("view", {
  3754. staticClass: _vm._$s(4, "sc", "shape shape4"),
  3755. attrs: { _i: 4 },
  3756. }),
  3757. ]
  3758. )
  3759. }
  3760. var recyclableRender = false
  3761. var staticRenderFns = []
  3762. render._withStripped = true
  3763. /***/ }),
  3764. /* 83 */
  3765. /*!**********************************************************************************************************************************!*\
  3766. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=script&lang=js& ***!
  3767. \**********************************************************************************************************************************/
  3768. /*! no static exports found */
  3769. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3770. "use strict";
  3771. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./loading5.vue?vue&type=script&lang=js& */ 84);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_loading5_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW92QixDQUFnQiw4dEJBQUcsRUFBQyIsImZpbGUiOiI4My5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vbG9hZGluZzUudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2xvYWRpbmc1LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///83\n");
  3772. /***/ }),
  3773. /* 84 */
  3774. /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3775. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-loading/loading5.vue?vue&type=script&lang=js& ***!
  3776. \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3777. /*! no static exports found */
  3778. /***/ (function(module, exports, __webpack_require__) {
  3779. "use strict";
  3780. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'loading6',\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tbG9hZGluZy9sb2FkaW5nNS52dWUiXSwibmFtZXMiOlsibmFtZSIsImRhdGEiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztlQVVBO0VBQ0FBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI4NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQgPHZpZXcgY2xhc3M9XCJjb250YWluZXIgbG9hZGluZzZcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGUxXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJzaGFwZSBzaGFwZTJcIj48L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cInNoYXBlIHNoYXBlM1wiPjwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwic2hhcGUgc2hhcGU0XCI+PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ2xvYWRpbmc2JyxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0XHJcblx0XHRcdH07XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cclxuPHN0eWxlIHNjb3BlZD1cInRydWVcIj5cclxuLmNvbnRhaW5lciB7XHJcbiAgd2lkdGg6IDMwcHg7XHJcbiAgaGVpZ2h0OiAzMHB4O1xyXG4gIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxufVxyXG5cclxuLmNvbnRhaW5lci5sb2FkaW5nNiB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IHJvdGF0aW9uIDFzIGluZmluaXRlO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiByb3RhdGlvbiAxcyBpbmZpbml0ZTtcclxufVxyXG4uY29udGFpbmVyLmxvYWRpbmc2IC5zaGFwZSB7XHJcbiAgd2lkdGg6IDEycHg7XHJcbiAgaGVpZ2h0OiAxMnB4O1xyXG4gIGJvcmRlci1yYWRpdXM6IDJweDtcclxufVxyXG4uY29udGFpbmVyIC5zaGFwZSB7XHJcbiAgcG9zaXRpb246IGFic29sdXRlO1xyXG4gIHdpZHRoOiAxMHB4O1xyXG4gIGhlaWdodDogMTBweDtcclxuICBib3JkZXItcmFkaXVzOiAxcHg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUxIHtcclxuICBsZWZ0OiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICMxODkwRkY7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGUyIHtcclxuICByaWdodDogMDtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjOTFDQjc0O1xyXG59XHJcbi5jb250YWluZXIgLnNoYXBlLnNoYXBlMyB7XHJcbiAgYm90dG9tOiAwO1xyXG4gIGJhY2tncm91bmQtY29sb3I6ICNGQUM4NTg7XHJcbn1cclxuLmNvbnRhaW5lciAuc2hhcGUuc2hhcGU0IHtcclxuICBib3R0b206IDA7XHJcbiAgcmlnaHQ6IDA7XHJcbiAgYmFja2dyb3VuZC1jb2xvcjogI0VFNjY2NjtcclxufVxyXG5cclxuXHJcbi5sb2FkaW5nNiAuc2hhcGUxIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uNnNoYXBlMSAycyBsaW5lYXIgMHMgaW5maW5pdGUgbm9ybWFsO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb242c2hhcGUxIDJzIGxpbmVhciAwcyBpbmZpbml0ZSBub3JtYWw7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb242c2hhcGUxIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE4cHgpO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAxOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMThweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAwKTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uNnNoYXBlMSB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIDI1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxOHB4KTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIDE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMCk7XHJcbiAgfVxyXG59XHJcbi5sb2FkaW5nNiAuc2hhcGUyIHtcclxuICAtd2Via2l0LWFuaW1hdGlvbjogYW5pbWF0aW9uNnNoYXBlMiAycyBsaW5lYXIgMHMgaW5maW5pdGUgbm9ybWFsO1xyXG4gICAgICAgICAgYW5pbWF0aW9uOiBhbmltYXRpb242c2hhcGUyIDJzIGxpbmVhciAwcyBpbmZpbml0ZSBub3JtYWw7XHJcbn1cclxuXHJcbkAtd2Via2l0LWtleWZyYW1lcyBhbmltYXRpb242c2hhcGUyIHtcclxuICAwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICB9XHJcbiAgMjUlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAxOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMThweCk7XHJcbiAgfVxyXG59XHJcblxyXG5Aa2V5ZnJhbWVzIGFuaW1hdGlvbjZzaGFwZTIge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAwKTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoLTE4cHgsIDE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMThweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAxOHB4KTtcclxuICB9XHJcbn1cclxuLmxvYWRpbmc2IC5zaGFwZTMge1xyXG4gIC13ZWJraXQtYW5pbWF0aW9uOiBhbmltYXRpb242c2hhcGUzIDJzIGxpbmVhciAwcyBpbmZpbml0ZSBub3JtYWw7XHJcbiAgICAgICAgICBhbmltYXRpb246IGFuaW1hdGlvbjZzaGFwZTMgMnMgbGluZWFyIDBzIGluZmluaXRlIG5vcm1hbDtcclxufVxyXG5cclxuQC13ZWJraXQta2V5ZnJhbWVzIGFuaW1hdGlvbjZzaGFwZTMge1xyXG4gIDAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIDApO1xyXG4gIH1cclxuICAyNSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgMCk7XHJcbiAgfVxyXG4gIDUwJSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgLTE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAtMThweCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uNnNoYXBlMyB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIDI1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDE4cHgsIDApO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAwKTtcclxuICB9XHJcbiAgNTAlIHtcclxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGUoMThweCwgLTE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgxOHB4LCAtMThweCk7XHJcbiAgfVxyXG4gIDc1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE4cHgpO1xyXG4gIH1cclxufVxyXG4ubG9hZGluZzYgLnNoYXBlNCB7XHJcbiAgLXdlYmtpdC1hbmltYXRpb246IGFuaW1hdGlvbjZzaGFwZTQgMnMgbGluZWFyIDBzIGluZmluaXRlIG5vcm1hbDtcclxuICAgICAgICAgIGFuaW1hdGlvbjogYW5pbWF0aW9uNnNoYXBlNCAycyBsaW5lYXIgMHMgaW5maW5pdGUgbm9ybWFsO1xyXG59XHJcblxyXG5ALXdlYmtpdC1rZXlmcmFtZXMgYW5pbWF0aW9uNnNoYXBlNCB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIDI1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE4cHgpO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgLTE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgLTE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAwKTtcclxuICB9XHJcbn1cclxuXHJcbkBrZXlmcmFtZXMgYW5pbWF0aW9uNnNoYXBlNCB7XHJcbiAgMCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgwLCAwKTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgMCk7XHJcbiAgfVxyXG4gIDI1JSB7XHJcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlKDAsIC0xOHB4KTtcclxuICAgICAgICAgICAgdHJhbnNmb3JtOiB0cmFuc2xhdGUoMCwgLTE4cHgpO1xyXG4gIH1cclxuICA1MCUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgLTE4cHgpO1xyXG4gICAgICAgICAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgLTE4cHgpO1xyXG4gIH1cclxuICA3NSUge1xyXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtMThweCwgMCk7XHJcbiAgICAgICAgICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlKC0xOHB4LCAwKTtcclxuICB9XHJcbn1cclxuPC9zdHlsZT5cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///84\n");
  3781. /***/ }),
  3782. /* 85 */
  3783. /*!*********************************************************************************************************!*\
  3784. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue ***!
  3785. \*********************************************************************************************************/
  3786. /*! no static exports found */
  3787. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3788. "use strict";
  3789. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./qiun-error.vue?vue&type=template&id=0507f1f4& */ 86);\n/* harmony import */ var _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./qiun-error.vue?vue&type=script&lang=js& */ 88);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBdUg7QUFDdkg7QUFDOEQ7QUFDTDs7O0FBR3pEO0FBQ3VOO0FBQ3ZOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLGdGQUFNO0FBQ1IsRUFBRSxxRkFBTTtBQUNSLEVBQUUsOEZBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUseUZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiODUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50cyB9IGZyb20gXCIuL3FpdW4tZXJyb3IudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTA1MDdmMWY0JlwiXG52YXIgcmVuZGVyanNcbmltcG9ydCBzY3JpcHQgZnJvbSBcIi4vcWl1bi1lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL3FpdW4tZXJyb3IudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzJlwiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgZmFsc2UsXG4gIGNvbXBvbmVudHMsXG4gIHJlbmRlcmpzXG4pXG5cbmNvbXBvbmVudC5vcHRpb25zLl9fZmlsZSA9IFwidW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tZXJyb3IvcWl1bi1lcnJvci52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///85\n");
  3790. /***/ }),
  3791. /* 86 */
  3792. /*!****************************************************************************************************************************************!*\
  3793. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=template&id=0507f1f4& ***!
  3794. \****************************************************************************************************************************************/
  3795. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3796. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3797. "use strict";
  3798. __webpack_require__.r(__webpack_exports__);
  3799. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-error.vue?vue&type=template&id=0507f1f4& */ 87);
  3800. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["render"]; });
  3801. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  3802. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  3803. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_template_id_0507f1f4___WEBPACK_IMPORTED_MODULE_0__["components"]; });
  3804. /***/ }),
  3805. /* 87 */
  3806. /*!********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3807. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=template&id=0507f1f4& ***!
  3808. \********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3809. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  3810. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3811. "use strict";
  3812. __webpack_require__.r(__webpack_exports__);
  3813. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  3814. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  3815. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  3816. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  3817. var components
  3818. var render = function () {
  3819. var _vm = this
  3820. var _h = _vm.$createElement
  3821. var _c = _vm._self._c || _h
  3822. return _c(
  3823. "view",
  3824. { staticClass: _vm._$s(0, "sc", "chartsview"), attrs: { _i: 0 } },
  3825. [
  3826. _c("view", {
  3827. staticClass: _vm._$s(1, "sc", "charts-error"),
  3828. attrs: { _i: 1 },
  3829. }),
  3830. _c(
  3831. "view",
  3832. { staticClass: _vm._$s(2, "sc", "charts-font"), attrs: { _i: 2 } },
  3833. [
  3834. _vm._v(
  3835. _vm._$s(
  3836. 2,
  3837. "t0-0",
  3838. _vm._s(_vm.errorMessage == null ? "请点击重试" : _vm.errorMessage)
  3839. )
  3840. ),
  3841. ]
  3842. ),
  3843. ]
  3844. )
  3845. }
  3846. var recyclableRender = false
  3847. var staticRenderFns = []
  3848. render._withStripped = true
  3849. /***/ }),
  3850. /* 88 */
  3851. /*!**********************************************************************************************************************************!*\
  3852. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=script&lang=js& ***!
  3853. \**********************************************************************************************************************************/
  3854. /*! no static exports found */
  3855. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3856. "use strict";
  3857. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-error.vue?vue&type=script&lang=js& */ 89);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_error_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQXN2QixDQUFnQixndUJBQUcsRUFBQyIsImZpbGUiOiI4OC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1lcnJvci52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///88\n");
  3858. /***/ }),
  3859. /* 89 */
  3860. /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3861. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-error/qiun-error.vue?vue&type=script&lang=js& ***!
  3862. \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3863. /*! no static exports found */
  3864. /***/ (function(module, exports, __webpack_require__) {
  3865. "use strict";
  3866. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n name: 'qiun-error',\n props: {\n errorMessage: {\n type: String,\n default: null\n }\n },\n data: function data() {\n return {};\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tZXJyb3IvcWl1bi1lcnJvci52dWUiXSwibmFtZXMiOlsibmFtZSIsInByb3BzIiwiZXJyb3JNZXNzYWdlIiwidHlwZSIsImRlZmF1bHQiLCJkYXRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O2VBUUE7RUFDQUE7RUFDQUM7SUFDQUM7TUFDQUM7TUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0EsUUFFQTtFQUNBO0FBQ0E7QUFBQSIsImZpbGUiOiI4OS5qcyIsInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cImNoYXJ0c3ZpZXdcIj5cclxuXHRcdDx2aWV3IGNsYXNzPVwiY2hhcnRzLWVycm9yXCI+PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJjaGFydHMtZm9udFwiPnt7ZXJyb3JNZXNzYWdlPT1udWxsPyfor7fngrnlh7vph43or5UnOmVycm9yTWVzc2FnZX19PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0bmFtZTogJ3FpdW4tZXJyb3InLFxyXG5cdFx0cHJvcHM6IHtcclxuXHRcdFx0ZXJyb3JNZXNzYWdlOiB7XHJcblx0XHRcdFx0dHlwZTogU3RyaW5nLFxyXG5cdFx0XHRcdGRlZmF1bHQ6IG51bGxcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdFxyXG5cdFx0XHR9O1xyXG5cdFx0fSxcclxuXHR9XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlPlxyXG5cdC5jaGFydHN2aWV3IHtcclxuXHRcdHdpZHRoOiAxMDAlO1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRmbGV4OiAxO1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdH1cclxuXHQuY2hhcnRzLWZvbnR7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0XHRjb2xvcjogI0NDQ0NDQztcclxuXHRcdG1hcmdpbi10b3A6IDEwcHg7XHJcblx0fVxyXG5cdC5jaGFydHMtZXJyb3J7XHJcblx0XHR3aWR0aDogMTI4cHg7XHJcblx0XHRoZWlnaHQ6IDEyOHB4O1xyXG5cdFx0YmFja2dyb3VuZDogdXJsKFwiZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFJQUFBQUNBQ0FZQUFBRERQbUhMQUFBVXowbEVRVlI0WHUxZGUzQmMxWDMrem1wM2pZVldma1BBZ0NXd1k4ekxFZ2xOUUNTVzB5VDlvMlNRYURLZE51bFV5a3dmTStrMDlwK0ozSW1ZSVBKWGk5eVp6RFNaWml3eWFadVpCQ3duTkcxRE1vZ0VtVUFBeTd4cy9NQXlOaENNaldXdHNLMWRlVS9uMjNPdnRMdTZqM1B2M3QyOWQ3MW54ak9TZGU0NTUvNSszL205ejdrQ2pSWTRCUjdlSzdma2NtaHJhc0xUMzdoYlRBWStRWUFEaWdESGFnd0ZZR2hjN2dad0hNQVVnRzRoTVB6TmU4Um9XSW5UQUVDQW5IbDRyK3lSRXQwRFhXSWJoeDNjSjVmSFA4VFlqbnRGUjREVEJEcVVJd0JtTXJKREN0eVBIRG9RdzBROGprZVhpbkNMdEVDcDQzR3doNTZSMjJJeFRCYnUrS0Z4T1RiUUpibzlEbFcxN3JZQVNHZGxOeVNlS2wySkFEcGJrbUtpYWl0MG1XaG9YSFprbXpFNTJDa29jbXZhdnZPc2JNdmw4TWhBbCtqbFFyZzJDUXp1NkJJOU5WMll3K1QyQUppVm8rRHVMMmtTZUxRMUtmckM4a0xjWWJrWUJ2L3BiakVXaGpVTmpVdlNwazlLU0FpY20ydEdYeGpBYVVjYmV3QmtKQW02eGVMQnAxUEoyb3MwNnR0Y0RsOEgwQ0VFYUdudkdlZ1NnMkVBUVpUVzRCMEFFbnRTUzJvdjBtaGdKYzVqbXdUNklERVdpMkUwek5aMldFRmhDNENaakNSeEg3R3dBZnBia21Ja0xDOUVGUUJnMjBCWGVPeVNzTkJHWngyT1hrQjZWZzVDZ0FiTVpnRDdCVERTa2hURE9nTTMra1NEQXI3aUFOTno4bjRoUVJkeG9qVXU5a1RqVlJ1cnRLS0FKd0JJS1pmUFpQT3VZV0ZnWTZ3bGdWNGhhdStHTlZqc25RS2VBSkRPU0lwL1d0NmxiU0tlUUc4alNPU2RBYlYrd2lzQTdGeERTR0FxQm13TlM1RElpR0l1Y3lOd0tpR2VkdXRUejMvM0JnQ2I0SkJKb0dxRElKMlZXNFJFbXhSb2cwUzNsR2dUL05sZlkzUnpDZ0pqUW1KU0NreGVEdUR3QmdDYjhIQWh2UWtDSWRDYlNnUWZtU1BEbVdHRHpIc20xVXF3akJFVUFNYnFFUkNlQUVCR3oyUmtud1IydVcweUFaUWRMNkRSK1dFVzkwc3lYTG1qdFc4U28wSmc5TW9FOXRTRDRlc1pBTlVBQWQxTTVOQWpHT1VMYWFPa0F6Q0tHRWFqN0FyN0FvQkhFR3hyU1lxZE9ueE1aK1czWkE1OVplaHhuV2tDN3lNbEprVU1JeTF4N0l5YVZQQU5BQU1FSFRsZ1RBQ08xcllFUmxxVG90K0o4bmJwNThDNVZjRUJEZnRuT0VwQUtBc0FnWVBBUGdOWlFiWUZQM1FlQ0F5YkovQmcyQ1ZDMlFEd0NvSlVBdHVkaUpLdUV4Q1FMb1piUEtpckFvT0hvdnVJVGhWQnl1WGlpMmpFL0M5STJUYVhCWXNmbVRoeWFoTXRDV3kxQTRFUmJqN3J2dlJJOWFDYTNGN3BJTm0zbjVYZFhndGpGZ0hBWUNRclc0djhiQm82TVlGZXA1Y3dtRWVmdVN3UXBETlNSb3E5K29zZHJxUmFHQnFYTWhmRFZpOGdXQVNBZEVidXN3dXlHQ0tOU0xhdEJ5Z1hCSFVxQVFvaE1tSEVTQUtycXpTcm80VElTMnlPcTEwZFZRUUF1eUtRVW9DN0JYbkl4SFFXd3dMNGF5L3FJTS84REhhRkp1aWp2N005OVF6YU5tQXg2aHpRRnN2aEtTbXh2YWtKbzdvSFVvb0E0TVVBMHdIQlREWWZRblZVQjZiRm5MYzFKSHFpRmdQd3hQblN6aEtqTFVuMEIrVXBzRG9xRmtPZkx2TzVITjhBTU41bE9KVVUyKzJJTUQwbmUwUU90Q2NxMGs3T0FOZTFWR1RvYWc3cWFCUlhlaUZGQUpqT3lCRU5zVjIwSnFjZ2oyRlFIZ3Z5SldZdkFRZlBBSnV2QXY3MTk4QURtNERNSEpCS0FtdWFnNXlwZW1QcEdOaVZXazJwRGNDREREUUNQVFU3RU9nbWpyeE1SZ0E4ZGdCWW13Sk9Yd0J1V2dIODdtM2d6MjZPTGdEeTZxOUc5UlNMdklBeW1GWlVHc2FDakp6RTdxQjErdnZuZ1hSR1FlYkc1UUIvUDMwZWFGMmlRQkhsbGs4d3hkRGZHcS9lWVZMTFFKQmZFT1FOT3BrMy9CZzg2aGJBOGlBWnd0Mi9hNzhhc1g4enNLUkovZnpZUWVEdHRGSUhVYmNKcWkwSm5NNEZhT1g5ZzJTdzdsZ0hUZ1BUczBESFJ4VGpUNXdEdHF6VGZUcjgvYW9KQXJmVHdYMDU1UDE1MTlxNmFwR1Y0djgvWGxVNm56di92bzhDdnp3SzNMMFcyTFM2V3F1by9EelZBb0ZyTWlpdnl6VlN2cFVueWNJTVZBVVUvLy8ya2dJQzliK3BEcXE1amlyTVZYRVgwUlVBZk1rd2dvRHJNb0ZRQlViVWNvcXhWRkpzcmRRQ3RBQVFaaEJVaWpDaEdsZml3ZFNTeXB4ODFnYUFBUUxMQTZPaElsYU5GMk1HcXJpTW0xY0ZxSm9FdGxhaTBsb2JBSXpxWmJQWUY3UnJWMk4rQlQ3OUw5OWM4RWgrZHpJNDc0UkdZU3FCOXFEeUJ1YUxhd01nblpFOEV4amF1MjRDNTZUUEFaOCt2c0QwNTk0R1BySFc1MERXandWdUQyZ0J3RGdtL3ExQVg2Vk9CL3Y1WWVEV05lcmxYbnNmK01LR1lGL1VMUXZyZFRaWEFGUWlvZU4xa1ZIcVR4dUFnU28yeGlXQ2RrK0RWZ1d1QUVqUHl0MzFYcUFSSllBWmE5MlpTcXE3Q010dGpnQ29oMXI5Y2drVTF1ZUR1cTdQRVFEVHMvSlkwTm04c0JJMGd1c0t4Q0NNWkRJb2dzeXF6SklEaUEzWUFxQ3greXZEczRCSExWc0tCRm9QRVBETE5ZYlRvVUNaVXNBU0FGSFkvU2ZUQ3hXdHE1cUJLNHppRUIyYTFWbWZzcVRBSWdCVXVwTFhML0V2c2hqME5OQ2FCTTdOQXI4OXNURFNwNjRIT2ovaWQrVG9QMWVPUjdBWUFENHFnNnRCd3VmZUFSaGFiVjhCZlBKYUZXeFpFZ2VTTVdEVG1zdGFBcEQ4dnVNQ1JRQUk0N0dzMzd3RnJHNEdya3NCUjg4Mm1HMjEyVmhXM3JwRXRQdlppTDZPaHZtWnlPc3pGUG03RDZxcVgrNzZMNnhmR0lIL2w3bWtWTUdOS3k3NzNaOG5qSXloMTA4MWNmSEJrSkFFZmdxWnYya1Y4Q21qNEhQL0g0QURaMVJCcU5tWWJmdkV0VjdoVlgvOS9YN0hZUjRBWVVyNlBQbW1ZalNaLzdrYmxSVDQ3eU9LOFV5dThEeEE2eFhxSEFEVncyWHNBUlFodVNXQkZWN3JCZVlCb0hzeXVOSjc1ODJ6d0JOSGdOVkxnYis4VFRILzhZT3Evbys3ZmZQVkN3eW5wQWlDK1crY1VmT2Nud091dmxJZE80dGk4Nk1HNWdHUWRya0Z0Rm9FMmZVeWtKNEYrdTRBa25IZ3g2K3BuZi9aZHVDVzFRRDlmM29EUEEvQTV0Y0ZwQTN4OGluZ3hYY1Z1UEo2MURndDI3TVJ1S0cxV204YzZEeWV2WUU4QU1Kay9mL25xOEJOSzVWZU4xMC9rOG12bndaK1pSdzFwZmpuWWRDT3ExVlp1SmQyL0J6d3YwY1hHTDlocGRyMVBHTklnTVVGOE9lM0FxdVdlaGsxRkgwblVrblI2V1VsZVFDRU5lMzd2WmVVRk9pL0F5aFVEYlFML0p3RTVxNG5nSTRZTnhCeGw3TmlaNWtCb0NlUEFiOS9SNG1CcTY0RWVqY0dYOURoaFRsKytzWVRhUGR5YTdzQ2dQb3lTTTFMdnVqek04RHpkM2N1TU55MDhpa1plQnFZcW9FN25qdjF0MjhwM2MzZi8raGFwU0xzMmpzekFJMUx1bzQwSk1uNGo2NHM3djNQenltcFFOZVNnTHRuTGZEeGlIa1lYa3ZHRkFBMHIyWWpzZjNzUEYwa20vci9IKzlhRVA4UDhPUlBFaGg1ZWNFcklQTnBHTEp4RjcvM29XTGNmZXNWODByYm9RK1V5RGY3ZjNIVFl1UHgrWGVBWDAwQ3Q2OEJQbjBEOE84VGFzeXZiZ1pha3JwdkVJcCtudXlBUEFDbU0vS3NXN2szYitONC9BQkE1bFNxOGNJSDAvbzM5ZjlmM0tvWVFZYWIwdURuUjRCalo0R3YzTFlBZ0IrOXFpUUIreGUyWDArcTRrdzIyaEw4Vjlyb1RYejNCVFhQMXo2bVZBSnpEZnhIcVVJRE5FTE4wMmY5aEk3L1Q2djd6U2tsYm1sOE1mRkNYenpvUnAxUHY1N24vV2o1TS9SckpubjIvUUc0cmxWSklQTTQrRGZ2V1ZqQjkvWXBGZkZKSXpCRVp2N2lNSEFpclVUKzU5cUJPMnpjdTd6dWYxZnRmck9LdHhBVVZFbEJGM2NHVFR0elBCYU50aWFGaFJ5MG5sSG9HSURjL2ErZlVsZXowRHEvWlkyNmtpWG9Sb0NSMEc1V3ZSa29NbmYwL3h3Rlhud1BpQUZJTmdFM0xBT21Md0tualBFb0tlamZXN1hqMCtxME1lZjkyc2VMVlFOTHZGOTVIL2lUbTRDTkpmWkMwTzhlNUhoZUFrSkNOd0JrSHN2Kyt6dURYS3Evc1NnZC91dTF4ZjQ3Z2ZuV09SNW1WZU5lMVF4OGFkT0NsVzhsK244d29RekRMOTY4MkNpazdmRFRnOEQxS2FEM1puOXJyZFJUbEhBMG1tbXZMSkpPSG9wRVJGZzhBSytFSWdpb21vNmRBeTdPS2RYd054M0FpUm5nUnk4RE9RbDBYZ044WnAxOXRKRE1KWk1MUlgvcE9oN2Vxd2hNTlJDbVp0cGtWcmVpZVBFRUNBRExqMFNINldXZDFrSWdQUDZHMnNWdHk0QXYzNnBFLys0M2dETVgxSzYrYjhOaUVKaEdIcVhFVjI2M0J3bTlBWTczMVE2Z0pWRjdxbkRuVDd5bmJDUzZ6RHg4UXBYSmdOaThKUEJ3bWxqb3VvQzFmM1g3RmRESEgzMERtTXNCRzFZb3NVK20wVmc4ZXhHNHBrVjVCMmJlZ0NGZzVodElNQ2Y3Z0RPYWRzQ1hiZ0d1c2JFanFra2JNcCtpdjdRUjVQT0crZVVHQURML3JXbWdTUUJ6RXVpNEN2alQ5Y0JVQm5qaWtQcWJDWUp6RjRFZkdCZE5NVzVnNXhtWUJLWTNjT2dNc0dFVmNDbFhUVlk3eitXa0FyeFVDSWtvRklBNmtlTFh4NERYVGl1RGIydWJpaGRrY3NDbkRaK2ZEUHpaSVJYK3BZdkpSQlBGNkdmYlZQUlF0MTI0RkU0QVVMSlpCT2UwWXdGVUFaRzltdjJGZDRHOUo0dGRPRWIwZm5OQ1ZReHR1UUhvdWc0Z0NINXlBRGd4cmRqdFpQUlplUXF2bkZJU2dFbWlNRFY2WmpidWVQMERnQm05UFllczlUaXpocjg0bXI5OE9sOVF3cHM2Nk9zelpPeUYrV1MyR1NRS2l3MmdDY0Q2QmtCTUFCVDlETkxZNlhGS2dpY25WV0NJdVFSNkJNd2IwT2p6MGhoaXBnM3g1ZHNpbFI2dWJ3QTB4d0dDZ0R2YUxzSkhKdFBQUC95Qkt2UWc4NjJTUUc1Z1lCeUFyWkk1RUxjMStQaTdQZ0NtTTVKZnVBck5SWkJ1TDB1R01rZGc1ZHNYUGt0d2NQZlM0UE1xOXMxeHpEQXhTOUtabFl4UTB3ZEFsT0lBRk9QVTVXeG0xczZLS2ZUenFidkxZVDdITldNQU5DWlppeGloVnA4QVlIU1BscnhkV3BjTU1pTjgvUG11YTFRVzBFK0xhamJRZU5mNkE0QloxTUd3NXo5OGJERkx5YkFuRHF2WVBwdE9rTWNKR0JHdUIrQnJhUmVGUkNZVS9PUFhnVk1mV2pPVytwNEduMW51NVJiZWRaTUlIT2U3TDZwZXZKYStFcWx2dHpXVTlYZFBvZUNRMUFNNnZiQ3ArMHQzUDNjOTZ3Slp6TUhHNmw0V2RKUjdWdUNSNTRFTGM2cTR4RXUwc0N5bUJmaXdwMnlnYmoxQWdPdnpQQlFqY1U4ZEw5YnBOUFFvcHMxZFQ3c2dDR1l4U2NTeEdVUmEyK3J1YlhoK21Xbzg0S2tlSUN1N0ljRmJRRVBiNlBxeDZtZHBYQlY5SHZsZ29SaWt0TFM3bkpjdzlYNGlwdUlNOUNKV1hxSFN4VkZxWGtyRFJaZ09oZGdST1pzRHZ2OFNjTW5NV2dpVjl1V09YeGZBQ1I2cUVycDhCSnBWWTdLRjJVVzNVclV3Z0VRQzUxcVRRcnRpVTFVRno4cEpJUkRxajY3TXpBR1B2YTVFUHNPN3pQa0h3WHlPOThOWDFJZW9tRTRteUZnblFIQXh5c2lRTWtQQkxJWmxzV29FbXJZTHlIZnhkQzZnMWkvUHhmSmtEOU8vYk9XSWYvT2FHZXA3TnVyOGVFd0JvTkNGcEhRdzZ3Yi85czd5RGN3cTBGRGJCVndBUUFROGdVTENVVlNQbjF5NEo0QmxYK3VXcWZJdjg1aVhGYUhONGc3dWFKNElOcjg0d3RMenJBUmVlRnM5OVZlM0Z4OE8vWmZuVmQzaFhkZXFieE9GdVhueEFPWUJFTmFMb1p3SVRXbkEzY3Q2QVBOMEwvdFRiRk9FWHhGWFAzT25UMTFVSTVIeGhZMkhQbmpZaENxRnBlWTgrOEJXR0duazg5L2ZCOUFPWVdQUkNYTUxZVzFlRE1CNUFQQ0hxQmFHRUFpc0RXQ0krUERaNHR0RFNwbEVZS3hmb2R5Nzl1VUtLT2FwSTU1SjRHbGcyZ0lzSnFGNklZQUlNdlpoLzJNR1FHNWJBM3ltTFhnSTBJQVRBajNtbDBHOFZteExpZU90UzRTbmxZWHVmb0J5eWRvVVV3ZEhlVWhrZGs2ZExxYnp3Q05uZE84S0c1bk84REdaYmxZSHMyYndKd2VMZ1dRR21GZ2J5RGdCRzA4T1h4K0FCMUswSUF2LzNjdEhQUDFjRXhPNkcwTEtCWUR1ODJRK3E0YTUyeW5TV1RsVUdFRmtLcGh0K1pKaXU0TC9UOC9nOCsxQWM2SlkvZWpPYmRjdmxSU1dSV2M4dlNVbFJ0M1M5bVhkRUtKelJyRGNGd3pMODZ5blo3cVl6Vyt0QUEzS254NVFoYWEwR2NvdHJIUTcwNmYxNlQ2SjBaWWsrcjNjRTFTRXVIUkdUZ0RZSEJaR1ZXSWRoY3ozV2hsY3VKN0NkREdEVW4vY3JvekpjcHJiRHRZQ0FlRHBZNVBGQUlpWU8raVYyTnoxNXVkY3lrMFhjKzdDcWlQZUtQTEF4dkpBb1BPNVdPT3I3S011Z1R0dEVCUUJvSjdWUUNIekdTOXdxaVgwQWl5Q3dLeEJxQllJalBBOXY5THVKSzBuNGduMHVsMFhFNW03Z3Iwd3BiU3ZlWXFtbkRGMG53M3FXaG0zZ0k0T0NIUWt5aUlBNk53WG9FdU1zUFNqSDgvSVgyYXVzaXVpSWNqYXdYSnRBWE9WZ1lCQVlqS1ZSS2VkWVdqM3ZZRFFKNGNxeThyd2pPNEdBcTUwMnVXR2R5ZmpzdkhGa1BEdzJuNGxBb09waEhqUWFhbE9JSEFDa1NVQXFGL1NXVXk2QlI2aVFMdDZXYU1FUmxxVG90OHJDQmhlVGlUUVlXY00yaDUzOUJLQ3JCY2loLzA5ZEVCQXZ1V0FZVzVlTWg4eDlKblh5QnU1aFMzNTl4UVlhNGxqcCtONTF5Z1Vpb1NkYVVHdmp5QklKYkRkTGRwSEtWN1l4eXF4eE55Qkl3RHEwU01JbWlFMUdrODcwR091eitvRUdOMUUxeFB2VVRvNlZpTm0xR3BhVHlDd0MvTzdBb0NoUnduc3E5VmJOdVoxcElBMkNDeTlCSWs5cmdEZzlPbU1IQWJ3OVFZelFra0JMUkFZa2NOUkFNb0lCUFlMb0U4TEFBWUk2ajVUR0VyMjZpM0tVeUZvNFpEYUFOQk1SZW90dDlFclVBcTQxUkk0VGFZTkFBNFNoV05rZ1ZJMlFvUFpWUk81dllJdEFJYkdaWWNRV0paWml2MkRuY0lvaDh4L1hDTFNONHU2RVNTcWZ3OFVBRVBqZWFPdmoxK2tCTEN1cVFtZDM3aGI4R2Z6KzBKdXVlaW8wakdTNi9aVERHcSs2Q0lKTUxoUExrK2N4OWxZRE8xaytrUFB5QkVoTURuUUpRYk5oMWc0a3MxaW9wRXJxRGhlOXNjVDZKbkxZQmdDOTF2TjVoYnJkMXZoSWdCODUxblpsc3ZoV0xZWkt5ajZEV21BZ1M2eHJYQ3dobEhvUnRyeS9zNGEvMVFTSFdZNGw2RmNLYkN0Y05PeFQweWdweVVwNktINWFwWTJnTEhydDFBRkNJSE9XQXdkcGdvb25LVVJLdlpGYzllSHVLdGpRSGNwWS9NbGUzTm9Rdzdkc2drVGZyNFZYRHE1clJINDhGN1prOHVocmFrSm8xYk1Od2RxWkExZCtlbXBneDN6UFEzaW9iTW5OOUJ1M0FZSVBGRGNvV3UxbWMrbEJBSUFEc1FEcHNoaHBHRVkrZ05ETFpnZkNBRG9OU1F2cVBMa1RTdXhmdU5xN0l3SmhPRFRDdjRZVVl1bnNqa2MzZjgrQm83TTR2OEtZeTVjaXhtUEtWeFhhV3ltbkRXWExRR0d4aVZqQW1hQ29aeTFYUGJQU29uOU8rNFZIU1loYUlkSmlkMmxoSkVTVXp2dTFmODBuQk5oeXdZQTNjWTVvT2hJOHVxbGFMaytoZldYUFVjMUNIQWlqU09uTDJDR1hlUEFaS0hCemQwUGdFRzUwalpSNnBaclRHWFpwV3dBK0oyNDhWdzRLTkFBUURqNFVMTlZCQTZBYno4cnU4VWw5U1Z5SVRDVmJVWS9EUnNqeEx4TFNtaGRZU1lFSGgzb0VpTWNoMnJtMGlYc3NxSFN4STU3eGZaS1UvQ2haK1FqQU9iMWM2WG5NK2czVDROS3pSYzRBSWJHWlI4VFNlYUNZekgwVWE4WkllWThRelhiU0JFQWN2bFNaeXZ3QktZUG5kYjEwTGprQlExYTROVjhQNTF1OHpUUTZleW5UK0FBOExPSXhqTzFvMEFEQUxXamZTaG1qaHdBQ2dOUG9hQ2dzbldPTytWTHdySk9xM1ZFRGdDR0xyYk1qZGVLMEVFR1pxcjlEcEVEZ0ZYZ3FkcEVLNTB2bHNQVVFKZi9uSHd0MS8vLzg5YnFEakNQV1BBQUFBQUFTVVZPUks1Q1lJST1cIik7XHJcblx0XHRiYWNrZ3JvdW5kLXBvc2l0aW9uOiBjZW50ZXI7XHJcblx0fVxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///89\n");
  3867. /***/ }),
  3868. /* 90 */
  3869. /*!**********************************************************************************************************************************************!*\
  3870. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=script&lang=js& ***!
  3871. \**********************************************************************************************************************************************/
  3872. /*! no static exports found */
  3873. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  3874. "use strict";
  3875. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./qiun-data-charts.vue?vue&type=script&lang=js& */ 91);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_qiun_data_charts_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQTR2QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiI5MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1kYXRhLWNoYXJ0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vcWl1bi1kYXRhLWNoYXJ0cy52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCIiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///90\n");
  3876. /***/ }),
  3877. /* 91 */
  3878. /*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  3879. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue?vue&type=script&lang=js& ***!
  3880. \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  3881. /*! no static exports found */
  3882. /***/ (function(module, exports, __webpack_require__) {
  3883. "use strict";
  3884. eval("/* WEBPACK VAR INJECTION */(function(uniCloud, __f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar _uCharts = _interopRequireDefault(__webpack_require__(/*! ../../js_sdk/u-charts/u-charts.js */ 122));\nvar _configUcharts = _interopRequireDefault(__webpack_require__(/*! ../../js_sdk/u-charts/config-ucharts.js */ 123));\nvar _configEcharts = _interopRequireDefault(__webpack_require__(/*! ../../js_sdk/u-charts/config-echarts.js */ 124));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\nfunction deepCloneAssign() {\n var origin = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n for (var i in args) {\n for (var key in args[i]) {\n if (args[i].hasOwnProperty(key)) {\n origin[key] = args[i][key] && (0, _typeof2.default)(args[i][key]) === 'object' ? deepCloneAssign(Array.isArray(args[i][key]) ? [] : {}, origin[key], args[i][key]) : args[i][key];\n }\n }\n }\n return origin;\n}\nfunction formatterAssign(args, formatter) {\n for (var key in args) {\n if (args.hasOwnProperty(key) && args[key] !== null && (0, _typeof2.default)(args[key]) === 'object') {\n formatterAssign(args[key], formatter);\n } else if (key === 'format' && typeof args[key] === 'string') {\n args['formatter'] = formatter[args[key]] ? formatter[args[key]] : undefined;\n }\n }\n return args;\n}\n\n// 时间转换函数,为了匹配uniClinetDB读取出的时间与categories不同\nfunction getFormatDate(date) {\n var seperator = \"-\";\n var year = date.getFullYear();\n var month = date.getMonth() + 1;\n var strDate = date.getDate();\n if (month >= 1 && month <= 9) {\n month = \"0\" + month;\n }\n if (strDate >= 0 && strDate <= 9) {\n strDate = \"0\" + strDate;\n }\n var currentdate = year + seperator + month + seperator + strDate;\n return currentdate;\n}\nvar lastMoveTime = null;\n/**\r\n * 防抖\r\n *\r\n * @param { Function } fn 要执行的方法\r\n * @param { Number } wait 防抖多少毫秒\r\n *\r\n * 在 vue 中使用(注意:不能使用箭头函数,否则this指向不对,并且不能再次封装如:\r\n * move(){ // 错误调用方式\r\n * debounce(function () {\r\n * console.log(this.title);\r\n * }, 1000)});\r\n * 应该直接使用:// 正确调用方式\r\n * move: debounce(function () {\r\n * console.log(this.title);\r\n * }, 1000)\r\n */\nfunction debounce(fn, wait) {\n var timer = false;\n return function () {\n var _arguments = arguments,\n _this = this;\n clearTimeout(timer);\n timer && clearTimeout(timer);\n timer = setTimeout(function () {\n timer = false;\n fn.apply(_this, _arguments); // 把参数传进去\n }, wait);\n };\n}\nvar _default2 = {\n name: 'qiun-data-charts',\n mixins: [uniCloud.mixinDatacom],\n props: {\n type: {\n type: String,\n default: null\n },\n canvasId: {\n type: String,\n default: 'uchartsid'\n },\n canvas2d: {\n type: Boolean,\n default: false\n },\n background: {\n type: String,\n default: 'rgba(0,0,0,0)'\n },\n animation: {\n type: Boolean,\n default: true\n },\n chartData: {\n type: Object,\n default: function _default() {\n return {\n categories: [],\n series: []\n };\n }\n },\n opts: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n eopts: {\n type: Object,\n default: function _default() {\n return {};\n }\n },\n loadingType: {\n type: Number,\n default: 2\n },\n errorShow: {\n type: Boolean,\n default: true\n },\n errorReload: {\n type: Boolean,\n default: true\n },\n errorMessage: {\n type: String,\n default: null\n },\n inScrollView: {\n type: Boolean,\n default: false\n },\n reshow: {\n type: Boolean,\n default: false\n },\n reload: {\n type: Boolean,\n default: false\n },\n disableScroll: {\n type: Boolean,\n default: false\n },\n optsWatch: {\n type: Boolean,\n default: true\n },\n onzoom: {\n type: Boolean,\n default: false\n },\n ontap: {\n type: Boolean,\n default: true\n },\n ontouch: {\n type: Boolean,\n default: false\n },\n onmouse: {\n type: Boolean,\n default: true\n },\n onmovetip: {\n type: Boolean,\n default: false\n },\n echartsH5: {\n type: Boolean,\n default: false\n },\n echartsApp: {\n type: Boolean,\n default: false\n },\n tooltipShow: {\n type: Boolean,\n default: true\n },\n tooltipFormat: {\n type: String,\n default: undefined\n },\n tooltipCustom: {\n type: Object,\n default: undefined\n },\n startDate: {\n type: String,\n default: undefined\n },\n endDate: {\n type: String,\n default: undefined\n },\n textEnum: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n groupEnum: {\n type: Array,\n default: function _default() {\n return [];\n }\n },\n pageScrollTop: {\n type: Number,\n default: 0\n },\n directory: {\n type: String,\n default: '/'\n },\n tapLegend: {\n type: Boolean,\n default: true\n },\n menus: {\n type: Array,\n default: function _default() {\n return [];\n }\n }\n },\n data: function data() {\n return {\n cid: 'uchartsid',\n inWx: false,\n inAli: false,\n inTt: false,\n inBd: false,\n inH5: false,\n inApp: false,\n inWin: false,\n type2d: true,\n disScroll: false,\n openmouse: false,\n pixel: 1,\n cWidth: 375,\n cHeight: 250,\n showchart: false,\n echarts: false,\n echartsResize: {\n state: false\n },\n uchartsOpts: {},\n echartsOpts: {},\n drawData: {},\n lastDrawTime: null\n };\n },\n created: function created() {\n this.cid = this.canvasId;\n if (this.canvasId == 'uchartsid' || this.canvasId == '') {\n var t = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';\n var len = t.length;\n var id = '';\n for (var i = 0; i < 32; i++) {\n id += t.charAt(Math.floor(Math.random() * len));\n }\n this.cid = id;\n }\n var systemInfo = uni.getSystemInfoSync();\n if (systemInfo.platform === 'windows' || systemInfo.platform === 'mac') {\n this.inWin = true;\n }\n\n //非微信小程序端强制关闭canvas2d模式\n\n this.type2d = false;\n this.disScroll = this.disableScroll;\n },\n mounted: function mounted() {\n var _this2 = this;\n this.inApp = true;\n if (this.echartsApp === true) {\n this.echarts = true;\n this.openmouse = false;\n }\n this.$nextTick(function () {\n _this2.beforeInit();\n });\n },\n destroyed: function destroyed() {\n if (this.echarts === true) {\n delete _configEcharts.default.option[this.cid];\n delete _configEcharts.default.instance[this.cid];\n } else {\n delete _configUcharts.default.option[this.cid];\n delete _configUcharts.default.instance[this.cid];\n }\n uni.offWindowResize(function () {});\n },\n watch: {\n chartDataProps: {\n handler: function handler(val, oldval) {\n if ((0, _typeof2.default)(val) === 'object') {\n if (JSON.stringify(val) !== JSON.stringify(oldval)) {\n this._clearChart();\n if (val.series && val.series.length > 0) {\n this.beforeInit();\n } else {\n this.mixinDatacomLoading = true;\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n }\n }\n } else {\n this.mixinDatacomLoading = false;\n this._clearChart();\n this.showchart = false;\n this.mixinDatacomErrorMessage = '参数错误:chartData数据类型错误';\n }\n },\n immediate: false,\n deep: true\n },\n localdata: {\n handler: function handler(val, oldval) {\n if (JSON.stringify(val) !== JSON.stringify(oldval)) {\n if (val.length > 0) {\n this.beforeInit();\n } else {\n this.mixinDatacomLoading = true;\n this._clearChart();\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n }\n }\n },\n immediate: false,\n deep: true\n },\n optsProps: {\n handler: function handler(val, oldval) {\n if ((0, _typeof2.default)(val) === 'object') {\n if (JSON.stringify(val) !== JSON.stringify(oldval) && this.echarts === false && this.optsWatch == true) {\n this.checkData(this.drawData);\n }\n } else {\n this.mixinDatacomLoading = false;\n this._clearChart();\n this.showchart = false;\n this.mixinDatacomErrorMessage = '参数错误:opts数据类型错误';\n }\n },\n immediate: false,\n deep: true\n },\n eoptsProps: {\n handler: function handler(val, oldval) {\n if ((0, _typeof2.default)(val) === 'object') {\n if (JSON.stringify(val) !== JSON.stringify(oldval) && this.echarts === true) {\n this.checkData(this.drawData);\n }\n } else {\n this.mixinDatacomLoading = false;\n this.showchart = false;\n this.mixinDatacomErrorMessage = '参数错误:eopts数据类型错误';\n }\n },\n immediate: false,\n deep: true\n },\n reshow: function reshow(val, oldval) {\n var _this3 = this;\n if (val === true && this.mixinDatacomLoading === false) {\n setTimeout(function () {\n _this3.mixinDatacomErrorMessage = null;\n _this3.echartsResize.state = !_this3.echartsResize.state;\n _this3.checkData(_this3.drawData);\n }, 200);\n }\n },\n reload: function reload(val, oldval) {\n if (val === true) {\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n this.reloading();\n }\n },\n mixinDatacomErrorMessage: function mixinDatacomErrorMessage(val, oldval) {\n if (val) {\n this.emitMsg({\n name: 'error',\n params: {\n type: \"error\",\n errorShow: this.errorShow,\n msg: val,\n id: this.cid\n }\n });\n if (this.errorShow) {\n __f__(\"log\", '[秋云图表组件]' + val, \" at uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue:611\");\n }\n }\n },\n errorMessage: function errorMessage(val, oldval) {\n if (val && this.errorShow && val !== null && val !== 'null' && val !== '') {\n this.showchart = false;\n this.mixinDatacomLoading = false;\n this.mixinDatacomErrorMessage = val;\n } else {\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n this.reloading();\n }\n }\n },\n computed: {\n optsProps: function optsProps() {\n return JSON.parse(JSON.stringify(this.opts));\n },\n eoptsProps: function eoptsProps() {\n return JSON.parse(JSON.stringify(this.eopts));\n },\n chartDataProps: function chartDataProps() {\n return JSON.parse(JSON.stringify(this.chartData));\n }\n },\n methods: {\n beforeInit: function beforeInit() {\n this.mixinDatacomErrorMessage = null;\n if ((0, _typeof2.default)(this.chartData) === 'object' && this.chartData != null && this.chartData.series !== undefined && this.chartData.series.length > 0) {\n //拷贝一下chartData,为了opts变更后统一数据来源\n this.drawData = deepCloneAssign({}, this.chartData);\n this.mixinDatacomLoading = false;\n this.showchart = true;\n this.checkData(this.chartData);\n } else if (this.localdata.length > 0) {\n this.mixinDatacomLoading = false;\n this.showchart = true;\n this.localdataInit(this.localdata);\n } else if (this.collection !== '') {\n this.mixinDatacomLoading = false;\n this.getCloudData();\n } else {\n this.mixinDatacomLoading = true;\n }\n },\n localdataInit: function localdataInit(resdata) {\n //替换enum类型为正确的描述\n if (this.groupEnum.length > 0) {\n for (var i = 0; i < resdata.length; i++) {\n for (var j = 0; j < this.groupEnum.length; j++) {\n if (resdata[i].group === this.groupEnum[j].value) {\n resdata[i].group = this.groupEnum[j].text;\n }\n }\n }\n }\n if (this.textEnum.length > 0) {\n for (var _i = 0; _i < resdata.length; _i++) {\n for (var _j = 0; _j < this.textEnum.length; _j++) {\n if (resdata[_i].text === this.textEnum[_j].value) {\n resdata[_i].text = this.textEnum[_j].text;\n }\n }\n }\n }\n var needCategories = false;\n var tmpData = {\n categories: [],\n series: []\n };\n var tmpcategories = [];\n var tmpseries = [];\n //拼接categories\n if (this.echarts === true) {\n needCategories = _configEcharts.default.categories.includes(this.type);\n } else {\n needCategories = _configUcharts.default.categories.includes(this.type);\n }\n if (needCategories === true) {\n //如果props中的chartData带有categories,则优先使用chartData的categories\n if (this.chartData && this.chartData.categories && this.chartData.categories.length > 0) {\n tmpcategories = this.chartData.categories;\n } else {\n //如果是日期类型的数据,不管是本地数据还是云数据,都按起止日期自动拼接categories\n if (this.startDate && this.endDate) {\n var idate = new Date(this.startDate);\n var edate = new Date(this.endDate);\n while (idate <= edate) {\n tmpcategories.push(getFormatDate(idate));\n idate = idate.setDate(idate.getDate() + 1);\n idate = new Date(idate);\n }\n //否则从结果中去重并拼接categories\n } else {\n var tempckey = {};\n resdata.map(function (item, index) {\n if (item.text != undefined && !tempckey[item.text]) {\n tmpcategories.push(item.text);\n tempckey[item.text] = true;\n }\n });\n }\n }\n tmpData.categories = tmpcategories;\n }\n //拼接series\n var tempskey = {};\n resdata.map(function (item, index) {\n if (item.group != undefined && !tempskey[item.group]) {\n tmpseries.push({\n name: item.group,\n data: []\n });\n tempskey[item.group] = true;\n }\n });\n //如果没有获取到分组名称(可能是带categories的数据,也可能是不带的饼图类)\n if (tmpseries.length == 0) {\n tmpseries = [{\n name: '默认分组',\n data: []\n }];\n //如果是需要categories的图表类型\n if (needCategories === true) {\n for (var _j2 = 0; _j2 < tmpcategories.length; _j2++) {\n var seriesdata = 0;\n for (var _i2 = 0; _i2 < resdata.length; _i2++) {\n if (resdata[_i2].text == tmpcategories[_j2]) {\n seriesdata = resdata[_i2].value;\n }\n }\n tmpseries[0].data.push(seriesdata);\n }\n //如果是饼图类的图表类型\n } else {\n for (var _i3 = 0; _i3 < resdata.length; _i3++) {\n tmpseries[0].data.push({\n \"name\": resdata[_i3].text,\n \"value\": resdata[_i3].value\n });\n }\n }\n //如果有分组名\n } else {\n for (var k = 0; k < tmpseries.length; k++) {\n //如果有categories\n if (tmpcategories.length > 0) {\n for (var _j3 = 0; _j3 < tmpcategories.length; _j3++) {\n var _seriesdata = 0;\n for (var _i4 = 0; _i4 < resdata.length; _i4++) {\n if (tmpseries[k].name == resdata[_i4].group && resdata[_i4].text == tmpcategories[_j3]) {\n _seriesdata = resdata[_i4].value;\n }\n }\n tmpseries[k].data.push(_seriesdata);\n }\n //如果传了group而没有传text,即没有categories(正常情况下这种数据是不符合数据要求规范的)\n } else {\n for (var _i5 = 0; _i5 < resdata.length; _i5++) {\n if (tmpseries[k].name == resdata[_i5].group) {\n tmpseries[k].data.push(resdata[_i5].value);\n }\n }\n }\n }\n }\n tmpData.series = tmpseries;\n //拷贝一下chartData,为了opts变更后统一数据来源\n this.drawData = deepCloneAssign({}, tmpData);\n this.checkData(tmpData);\n },\n reloading: function reloading() {\n if (this.errorReload === false) {\n return;\n }\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n if (this.collection !== '') {\n this.mixinDatacomLoading = false;\n this.onMixinDatacomPropsChange(true);\n } else {\n this.beforeInit();\n }\n },\n checkData: function checkData(anyData) {\n var _this4 = this;\n var cid = this.cid;\n //复位opts或eopts\n if (this.echarts === true) {\n _configEcharts.default.option[cid] = deepCloneAssign({}, this.eopts);\n _configEcharts.default.option[cid].id = cid;\n _configEcharts.default.option[cid].type = this.type;\n } else {\n if (this.type && _configUcharts.default.type.includes(this.type)) {\n _configUcharts.default.option[cid] = deepCloneAssign({}, _configUcharts.default[this.type], this.opts);\n _configUcharts.default.option[cid].canvasId = cid;\n } else {\n this.mixinDatacomLoading = false;\n this.showchart = false;\n this.mixinDatacomErrorMessage = '参数错误:props参数中type类型不正确';\n }\n }\n //挂载categories和series\n var newData = deepCloneAssign({}, anyData);\n if (newData.series !== undefined && newData.series.length > 0) {\n this.mixinDatacomErrorMessage = null;\n if (this.echarts === true) {\n _configEcharts.default.option[cid].chartData = newData;\n this.$nextTick(function () {\n _this4.init();\n });\n } else {\n _configUcharts.default.option[cid].categories = newData.categories;\n _configUcharts.default.option[cid].series = newData.series;\n this.$nextTick(function () {\n _this4.init();\n });\n }\n }\n },\n resizeHandler: function resizeHandler() {\n var _this5 = this;\n //渲染防抖\n var currTime = Date.now();\n var lastDrawTime = this.lastDrawTime ? this.lastDrawTime : currTime - 3000;\n var duration = currTime - lastDrawTime;\n if (duration < 1000) return;\n var chartdom = uni.createSelectorQuery().in(this).select('#ChartBoxId' + this.cid).boundingClientRect(function (data) {\n _this5.showchart = true;\n if (data.width > 0 && data.height > 0) {\n if (data.width !== _this5.cWidth || data.height !== _this5.cHeight) {\n _this5.checkData(_this5.drawData);\n }\n }\n }).exec();\n },\n getCloudData: function getCloudData() {\n var _this6 = this;\n if (this.mixinDatacomLoading == true) {\n return;\n }\n this.mixinDatacomLoading = true;\n this.mixinDatacomGet().then(function (res) {\n _this6.mixinDatacomResData = res.result.data;\n _this6.localdataInit(_this6.mixinDatacomResData);\n }).catch(function (err) {\n _this6.mixinDatacomLoading = false;\n _this6.showchart = false;\n _this6.mixinDatacomErrorMessage = '请求错误:' + err;\n });\n },\n onMixinDatacomPropsChange: function onMixinDatacomPropsChange(needReset, changed) {\n if (needReset == true && this.collection !== '') {\n this.showchart = false;\n this.mixinDatacomErrorMessage = null;\n this._clearChart();\n this.getCloudData();\n }\n },\n _clearChart: function _clearChart() {\n var cid = this.cid;\n if (this.echarts !== true && _configUcharts.default.option[cid] && _configUcharts.default.option[cid].context) {\n var ctx = _configUcharts.default.option[cid].context;\n if ((0, _typeof2.default)(ctx) === \"object\" && !!!_configUcharts.default.option[cid].update) {\n ctx.clearRect(0, 0, this.cWidth * this.pixel, this.cHeight * this.pixel);\n ctx.draw();\n }\n }\n },\n init: function init() {\n var _this7 = this;\n var cid = this.cid;\n var chartdom = uni.createSelectorQuery().in(this).select('#ChartBoxId' + cid).boundingClientRect(function (data) {\n if (data.width > 0 && data.height > 0) {\n _this7.mixinDatacomLoading = false;\n _this7.showchart = true;\n _this7.lastDrawTime = Date.now();\n _this7.cWidth = data.width;\n _this7.cHeight = data.height;\n if (_this7.echarts !== true) {\n _configUcharts.default.option[cid].background = _this7.background == 'rgba(0,0,0,0)' ? '#FFFFFF' : _this7.background;\n _configUcharts.default.option[cid].canvas2d = _this7.type2d;\n _configUcharts.default.option[cid].pixelRatio = _this7.pixel;\n _configUcharts.default.option[cid].animation = _this7.animation;\n _configUcharts.default.option[cid].width = data.width * _this7.pixel;\n _configUcharts.default.option[cid].height = data.height * _this7.pixel;\n _configUcharts.default.option[cid].onzoom = _this7.onzoom;\n _configUcharts.default.option[cid].ontap = _this7.ontap;\n _configUcharts.default.option[cid].ontouch = _this7.ontouch;\n _configUcharts.default.option[cid].onmouse = _this7.openmouse;\n _configUcharts.default.option[cid].onmovetip = _this7.onmovetip;\n _configUcharts.default.option[cid].tooltipShow = _this7.tooltipShow;\n _configUcharts.default.option[cid].tooltipFormat = _this7.tooltipFormat;\n _configUcharts.default.option[cid].tooltipCustom = _this7.tooltipCustom;\n _configUcharts.default.option[cid].inScrollView = _this7.inScrollView;\n _configUcharts.default.option[cid].lastDrawTime = _this7.lastDrawTime;\n _configUcharts.default.option[cid].tapLegend = _this7.tapLegend;\n }\n //如果是H5或者App端,采用renderjs渲染图表\n if (_this7.inH5 || _this7.inApp) {\n if (_this7.echarts == true) {\n _configEcharts.default.option[cid].ontap = _this7.ontap;\n _configEcharts.default.option[cid].onmouse = _this7.openmouse;\n _configEcharts.default.option[cid].tooltipShow = _this7.tooltipShow;\n _configEcharts.default.option[cid].tooltipFormat = _this7.tooltipFormat;\n _configEcharts.default.option[cid].tooltipCustom = _this7.tooltipCustom;\n _configEcharts.default.option[cid].lastDrawTime = _this7.lastDrawTime;\n _this7.echartsOpts = deepCloneAssign({}, _configEcharts.default.option[cid]);\n } else {\n _configUcharts.default.option[cid].rotateLock = _configUcharts.default.option[cid].rotate;\n _this7.uchartsOpts = deepCloneAssign({}, _configUcharts.default.option[cid]);\n }\n //如果是小程序端,采用uCharts渲染\n } else {\n _configUcharts.default.option[cid] = formatterAssign(_configUcharts.default.option[cid], _configUcharts.default.formatter);\n _this7.mixinDatacomErrorMessage = null;\n _this7.mixinDatacomLoading = false;\n _this7.showchart = true;\n _this7.$nextTick(function () {\n if (_this7.type2d === true) {\n var query = uni.createSelectorQuery().in(_this7);\n query.select('#' + cid).fields({\n node: true,\n size: true\n }).exec(function (res) {\n if (res[0]) {\n var canvas = res[0].node;\n var ctx = canvas.getContext('2d');\n _configUcharts.default.option[cid].context = ctx;\n _configUcharts.default.option[cid].rotateLock = _configUcharts.default.option[cid].rotate;\n if (_configUcharts.default.instance[cid] && _configUcharts.default.option[cid] && _configUcharts.default.option[cid].update === true) {\n _this7._updataUChart(cid);\n } else {\n canvas.width = data.width * _this7.pixel;\n canvas.height = data.height * _this7.pixel;\n canvas._width = data.width * _this7.pixel;\n canvas._height = data.height * _this7.pixel;\n setTimeout(function () {\n _configUcharts.default.option[cid].context.restore();\n _configUcharts.default.option[cid].context.save();\n _this7._newChart(cid);\n }, 100);\n }\n } else {\n _this7.showchart = false;\n _this7.mixinDatacomErrorMessage = '参数错误:开启2d模式后,未获取到dom节点,canvas-id:' + cid;\n }\n });\n } else {\n if (_this7.inAli) {\n _configUcharts.default.option[cid].rotateLock = _configUcharts.default.option[cid].rotate;\n }\n _configUcharts.default.option[cid].context = uni.createCanvasContext(cid, _this7);\n if (_configUcharts.default.instance[cid] && _configUcharts.default.option[cid] && _configUcharts.default.option[cid].update === true) {\n _this7._updataUChart(cid);\n } else {\n setTimeout(function () {\n _configUcharts.default.option[cid].context.restore();\n _configUcharts.default.option[cid].context.save();\n _this7._newChart(cid);\n }, 100);\n }\n }\n });\n }\n } else {\n _this7.mixinDatacomLoading = false;\n _this7.showchart = false;\n if (_this7.reshow == true) {\n _this7.mixinDatacomErrorMessage = '布局错误:未获取到父元素宽高尺寸!canvas-id:' + cid;\n }\n }\n }).exec();\n },\n saveImage: function saveImage() {\n uni.canvasToTempFilePath({\n canvasId: this.cid,\n success: function success(res) {\n uni.saveImageToPhotosAlbum({\n filePath: res.tempFilePath,\n success: function success() {\n uni.showToast({\n title: '保存成功',\n duration: 2000\n });\n }\n });\n }\n }, this);\n },\n getImage: function getImage() {\n var _this8 = this;\n if (this.type2d == false) {\n uni.canvasToTempFilePath({\n canvasId: this.cid,\n success: function success(res) {\n _this8.emitMsg({\n name: 'getImage',\n params: {\n type: \"getImage\",\n base64: res.tempFilePath\n }\n });\n }\n }, this);\n } else {\n var query = uni.createSelectorQuery().in(this);\n query.select('#' + this.cid).fields({\n node: true,\n size: true\n }).exec(function (res) {\n if (res[0]) {\n var canvas = res[0].node;\n _this8.emitMsg({\n name: 'getImage',\n params: {\n type: \"getImage\",\n base64: canvas.toDataURL('image/png')\n }\n });\n }\n });\n }\n },\n _error: function _error(e) {\n this.mixinDatacomErrorMessage = e.detail.errMsg;\n },\n emitMsg: function emitMsg(msg) {\n this.$emit(msg.name, msg.params);\n },\n getRenderType: function getRenderType() {\n //防止如果开启echarts且父元素为v-if的情况renderjs监听不到prop变化的问题\n if (this.echarts === true && this.mixinDatacomLoading === false) {\n this.beforeInit();\n }\n },\n toJSON: function toJSON() {\n return this;\n }\n }\n};\nexports.default = _default2;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js */ 92)[\"default\"], __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 121)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9jb21wb25lbnRzL3FpdW4tZGF0YS1jaGFydHMvcWl1bi1kYXRhLWNoYXJ0cy52dWUiXSwibmFtZXMiOlsiYXJncyIsIm9yaWdpbiIsImZvcm1hdHRlckFzc2lnbiIsIm1vbnRoIiwic3RyRGF0ZSIsImNsZWFyVGltZW91dCIsInRpbWVyIiwiZm4iLCJuYW1lIiwibWl4aW5zIiwicHJvcHMiLCJ0eXBlIiwiZGVmYXVsdCIsImNhbnZhc0lkIiwiY2FudmFzMmQiLCJiYWNrZ3JvdW5kIiwiYW5pbWF0aW9uIiwiY2hhcnREYXRhIiwiY2F0ZWdvcmllcyIsInNlcmllcyIsIm9wdHMiLCJlb3B0cyIsImxvYWRpbmdUeXBlIiwiZXJyb3JTaG93IiwiZXJyb3JSZWxvYWQiLCJlcnJvck1lc3NhZ2UiLCJpblNjcm9sbFZpZXciLCJyZXNob3ciLCJyZWxvYWQiLCJkaXNhYmxlU2Nyb2xsIiwib3B0c1dhdGNoIiwib256b29tIiwib250YXAiLCJvbnRvdWNoIiwib25tb3VzZSIsIm9ubW92ZXRpcCIsImVjaGFydHNINSIsImVjaGFydHNBcHAiLCJ0b29sdGlwU2hvdyIsInRvb2x0aXBGb3JtYXQiLCJ0b29sdGlwQ3VzdG9tIiwic3RhcnREYXRlIiwiZW5kRGF0ZSIsInRleHRFbnVtIiwiZ3JvdXBFbnVtIiwicGFnZVNjcm9sbFRvcCIsImRpcmVjdG9yeSIsInRhcExlZ2VuZCIsIm1lbnVzIiwiZGF0YSIsImNpZCIsImluV3giLCJpbkFsaSIsImluVHQiLCJpbkJkIiwiaW5INSIsImluQXBwIiwiaW5XaW4iLCJ0eXBlMmQiLCJkaXNTY3JvbGwiLCJvcGVubW91c2UiLCJwaXhlbCIsImNXaWR0aCIsImNIZWlnaHQiLCJzaG93Y2hhcnQiLCJlY2hhcnRzIiwiZWNoYXJ0c1Jlc2l6ZSIsInN0YXRlIiwidWNoYXJ0c09wdHMiLCJlY2hhcnRzT3B0cyIsImRyYXdEYXRhIiwibGFzdERyYXdUaW1lIiwiY3JlYXRlZCIsImlkIiwibW91bnRlZCIsImRlc3Ryb3llZCIsInVuaSIsIndhdGNoIiwiY2hhcnREYXRhUHJvcHMiLCJoYW5kbGVyIiwiaW1tZWRpYXRlIiwiZGVlcCIsImxvY2FsZGF0YSIsIm9wdHNQcm9wcyIsImVvcHRzUHJvcHMiLCJzZXRUaW1lb3V0IiwibWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlIiwicGFyYW1zIiwibXNnIiwiY29tcHV0ZWQiLCJtZXRob2RzIiwiYmVmb3JlSW5pdCIsImxvY2FsZGF0YUluaXQiLCJyZXNkYXRhIiwibmVlZENhdGVnb3JpZXMiLCJ0bXBjYXRlZ29yaWVzIiwiaWRhdGUiLCJ0ZW1wY2tleSIsInRtcERhdGEiLCJ0bXBzZXJpZXMiLCJ0ZW1wc2tleSIsInNlcmllc2RhdGEiLCJyZWxvYWRpbmciLCJjaGVja0RhdGEiLCJjZmUiLCJjZnUiLCJyZXNpemVIYW5kbGVyIiwiY3JlYXRlU2VsZWN0b3JRdWVyeSIsImluIiwic2VsZWN0IiwiYm91bmRpbmdDbGllbnRSZWN0IiwiZXhlYyIsImdldENsb3VkRGF0YSIsInRoZW4iLCJjYXRjaCIsIm9uTWl4aW5EYXRhY29tUHJvcHNDaGFuZ2UiLCJfY2xlYXJDaGFydCIsImN0eCIsImluaXQiLCJxdWVyeSIsImZpZWxkcyIsIm5vZGUiLCJzaXplIiwiY2FudmFzIiwic2F2ZUltYWdlIiwic3VjY2VzcyIsImZpbGVQYXRoIiwidGl0bGUiLCJkdXJhdGlvbiIsImdldEltYWdlIiwiYmFzZTY0IiwiX2Vycm9yIiwiZW1pdE1zZyIsImdldFJlbmRlclR5cGUiLCJ0b0pTT04iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBOEpBO0FBQ0E7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBR0E7RUFBQTtFQUFBO0lBQUFBO0VBQUE7RUFDQTtJQUNBO01BQ0E7UUFDQUM7TUFDQTtJQUNBO0VBQ0E7RUFDQTtBQUNBO0FBRUE7RUFDQTtJQUNBO01BQ0FDO0lBQ0E7TUFDQUY7SUFDQTtFQUNBO0VBQ0E7QUFDQTs7QUFFQTtBQUNBO0VBQ0E7RUFDQTtFQUNBO0VBQ0E7RUFDQTtJQUNBRztFQUNBO0VBQ0E7SUFDQUM7RUFDQTtFQUNBO0VBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtFQUNBO0VBQ0E7SUFBQTtNQUFBO0lBQ0FDO0lBQ0FDO0lBQ0FBO01BQ0FBO01BQ0FDO0lBQ0E7RUFDQTtBQUNBO0FBQUEsZ0JBRUE7RUFDQUM7RUFDQUM7RUFDQUM7SUFDQUM7TUFDQUE7TUFDQUM7SUFDQTtJQUNBQztNQUNBRjtNQUNBQztJQUNBO0lBQ0FFO01BQ0FIO01BQ0FDO0lBQ0E7SUFDQUc7TUFDQUo7TUFDQUM7SUFDQTtJQUNBSTtNQUNBTDtNQUNBQztJQUNBO0lBQ0FLO01BQ0FOO01BQ0FDO1FBQ0E7VUFDQU07VUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQVQ7TUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQVM7TUFDQVY7TUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQVU7TUFDQVg7TUFDQUM7SUFDQTtJQUNBVztNQUNBWjtNQUNBQztJQUNBO0lBQ0FZO01BQ0FiO01BQ0FDO0lBQ0E7SUFDQWE7TUFDQWQ7TUFDQUM7SUFDQTtJQUNBYztNQUNBZjtNQUNBQztJQUNBO0lBQ0FlO01BQ0FoQjtNQUNBQztJQUNBO0lBQ0FnQjtNQUNBakI7TUFDQUM7SUFDQTtJQUNBaUI7TUFDQWxCO01BQ0FDO0lBQ0E7SUFDQWtCO01BQ0FuQjtNQUNBQztJQUNBO0lBQ0FtQjtNQUNBcEI7TUFDQUM7SUFDQTtJQUNBb0I7TUFDQXJCO01BQ0FDO0lBQ0E7SUFDQXFCO01BQ0F0QjtNQUNBQztJQUNBO0lBQ0FzQjtNQUNBdkI7TUFDQUM7SUFDQTtJQUNBdUI7TUFDQXhCO01BQ0FDO0lBQ0E7SUFDQXdCO01BQ0F6QjtNQUNBQztJQUNBO0lBQ0F5QjtNQUNBMUI7TUFDQUM7SUFDQTtJQUNBMEI7TUFDQTNCO01BQ0FDO0lBQ0E7SUFDQTJCO01BQ0E1QjtNQUNBQztJQUNBO0lBQ0E0QjtNQUNBN0I7TUFDQUM7SUFDQTtJQUNBNkI7TUFDQTlCO01BQ0FDO0lBQ0E7SUFDQThCO01BQ0EvQjtNQUNBQztJQUNBO0lBQ0ErQjtNQUNBaEM7TUFDQUM7UUFDQTtNQUNBO0lBQ0E7SUFDQWdDO01BQ0FqQztNQUNBQztRQUNBO01BQ0E7SUFDQTtJQUNBaUM7TUFDQWxDO01BQ0FDO0lBQ0E7SUFDQWtDO01BQ0FuQztNQUNBQztJQUNBO0lBQ0FtQztNQUNBcEM7TUFDQUM7SUFDQTtJQUNBb0M7TUFDQXJDO01BQ0FDO1FBQ0E7TUFDQTtJQUNBO0VBQ0E7RUFDQXFDO0lBQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7UUFDQUM7TUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQUM7TUFDQTtNQUNBO0lBQ0E7SUFDQTtJQUNBO01BQ0E7SUFDQTs7SUFVQTs7SUFFQTtJQWVBO0VBQ0E7RUFDQUM7SUFBQTtJQUVBO0lBQ0E7TUFDQTtNQUNBO0lBQ0E7SUFnQkE7TUFDQTtJQUNBO0VBcUJBO0VBQ0FDO0lBQ0E7TUFDQTtNQUNBO0lBQ0E7TUFDQTtNQUNBO0lBQ0E7SUFFQUM7RUFFQTtFQUNBQztJQUNBQztNQUNBQztRQUNBO1VBQ0E7WUFDQTtZQUNBO2NBQ0E7WUFDQTtjQUNBO2NBQ0E7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztJQUNBO0lBQ0FDO01BQ0FIO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7WUFDQTtZQUNBO1lBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztJQUNBO0lBQ0FFO01BQ0FKO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztJQUNBO0lBQ0FHO01BQ0FMO1FBQ0E7VUFDQTtZQUNBO1VBQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtRQUNBO01BQ0E7TUFDQUM7TUFDQUM7SUFDQTtJQUNBdEQ7TUFBQTtNQUNBO1FBQ0EwRDtVQUNBO1VBQ0E7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBekQ7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQTBEO01BQ0E7UUFDQTtVQUFBOUU7VUFBQStFO1lBQUE1RTtZQUFBWTtZQUFBaUU7WUFBQWY7VUFBQTtRQUFBO1FBQ0E7VUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBaEQ7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0FnRTtJQUNBTjtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FOO01BQ0E7SUFDQTtFQUNBO0VBQ0FZO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO1VBQ0E7WUFDQTtjQUNBQztZQUNBO1VBQ0E7UUFDQTtNQUNBO01BQ0E7UUFDQTtVQUNBO1lBQ0E7Y0FDQUE7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBO01BQ0E7UUFBQTNFO1FBQUFDO01BQUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBMkU7TUFDQTtRQUNBQTtNQUNBO01BQ0E7UUFDQTtRQUNBO1VBQ0FDO1FBQ0E7VUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0FBO2NBQ0FDO2NBQ0FBO1lBQ0E7WUFDQTtVQUNBO1lBQ0E7WUFDQUg7Y0FDQTtnQkFDQUU7Z0JBQ0FFO2NBQ0E7WUFDQTtVQUNBO1FBQ0E7UUFDQUM7TUFDQTtNQUNBO01BQ0E7TUFDQUw7UUFDQTtVQUNBTTtZQUFBM0Y7WUFBQXlDO1VBQUE7VUFDQW1EO1FBQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQUQ7VUFBQTNGO1VBQUF5QztRQUFBO1FBQ0E7UUFDQTtVQUNBO1lBQ0E7WUFDQTtjQUNBO2dCQUNBb0Q7Y0FDQTtZQUNBO1lBQ0FGO1VBQ0E7VUFDQTtRQUNBO1VBQ0E7WUFDQUE7Y0FBQTtjQUFBO1lBQUE7VUFDQTtRQUNBO1FBQ0E7TUFDQTtRQUNBO1VBQ0E7VUFDQTtZQUNBO2NBQ0E7Y0FDQTtnQkFDQTtrQkFDQUU7Z0JBQ0E7Y0FDQTtjQUNBRjtZQUNBO1lBQ0E7VUFDQTtZQUNBO2NBQ0E7Z0JBQ0FBO2NBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQTtNQUNBRDtNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FJO01BQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtNQUNBO01BQ0E7UUFDQUM7UUFDQUE7UUFDQUE7TUFDQTtRQUNBO1VBQ0FDO1VBQ0FBO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7UUFDQTtVQUNBRDtVQUNBO1lBQ0E7VUFDQTtRQUNBO1VBQ0FDO1VBQ0FBO1VBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsbUJBQ0FDLHNCQUVBQyxTQUVBQyxpQ0FDQUM7UUFDQTtRQUNBO1VBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQSxHQUNBQztJQUNBO0lBQ0FDO01BQUE7TUFDQTtRQUNBO01BQ0E7TUFDQTtNQUNBLHVCQUNBQztRQUNBO1FBQ0E7TUFDQSxHQUNBQztRQUNBO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO01BQ0E7UUFDQTtRQUNBO1VBQ0FDO1VBQ0FBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtNQUNBLG1CQUNBWCxzQkFFQUMsU0FFQUMsNEJBQ0FDO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7WUFDQUw7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7WUFDQUE7VUFDQTtVQUNBO1VBQ0E7WUFDQTtjQUNBRDtjQUNBQTtjQUNBQTtjQUNBQTtjQUNBQTtjQUNBQTtjQUNBO1lBQ0E7Y0FDQUM7Y0FDQTtZQUNBO1lBQ0E7VUFDQTtZQUNBQTtZQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0E7Z0JBQ0E7Z0JBQ0FjLE1BQ0FWLGtCQUNBVztrQkFBQUM7a0JBQUFDO2dCQUFBLEdBQ0FYO2tCQUNBO29CQUNBO29CQUNBO29CQUNBTjtvQkFDQUE7b0JBQ0E7c0JBQ0E7b0JBQ0E7c0JBQ0FrQjtzQkFDQUE7c0JBQ0FBO3NCQUNBQTtzQkFDQXRDO3dCQUNBb0I7d0JBQ0FBO3dCQUNBO3NCQUNBO29CQUNBO2tCQUNBO29CQUNBO29CQUNBO2tCQUNBO2dCQUNBO2NBQ0E7Z0JBQ0E7a0JBQ0FBO2dCQUNBO2dCQUNBQTtnQkFDQTtrQkFDQTtnQkFDQTtrQkFDQXBCO29CQUNBb0I7b0JBQ0FBO29CQUNBO2tCQUNBO2dCQUNBO2NBQ0E7WUFDQTtVQUNBO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7WUFDQTtVQUNBO1FBQ0E7TUFDQSxHQUNBTTtJQUNBO0lBQ0FhO01BQ0FoRDtRQUNBL0Q7UUFDQWdIO1VBU0FqRDtZQUNBa0Q7WUFDQUQ7Y0FDQWpEO2dCQUNBbUQ7Z0JBQ0FDO2NBQ0E7WUFDQTtVQUNBO1FBRUE7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtRQUNBckQ7VUFDQS9EO1VBQ0FnSDtZQUNBO2NBQUFySDtjQUFBK0U7Z0JBQUE1RTtnQkFBQXVIO2NBQUE7WUFBQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO1FBQ0FYLE1BQ0FWLHVCQUNBVztVQUFBQztVQUFBQztRQUFBLEdBQ0FYO1VBQ0E7WUFDQTtZQUNBO2NBQUF2RztjQUFBK0U7Z0JBQUE1RTtnQkFBQXVIO2NBQUE7WUFBQTtVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBb0tBQztNQUNBO0lBQ0E7SUFDQUM7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBQztNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEsNEIiLCJmaWxlIjoiOTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8IS0tIFxyXG4gKiBxaXVuLWRhdGEtY2hhcnRzIOeni+S6kemrmOaAp+iDvei3qOWFqOerr+WbvuihqOe7hOS7tlxyXG4gKiBDb3B5cmlnaHQgKGMpIDIwMjEgUUlVTsKuIOeni+S6kSBodHRwczovL3d3dy51Y2hhcnRzLmNuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkICggaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIClcclxuICog5aSN5Yi25L2/55So6K+35L+d55WZ5pys5q615rOo6YeK77yM5oSf6LCi5pSv5oyB5byA5rqQ77yBXHJcbiAqIOS4uuaWueS+v+abtOWkmuW8gOWPkeiAheS9v+eUqO+8jOWmguacieabtOWlveeahOW7uuiuruivt+aPkOS6pOeggeS6kSBQdWxsIFJlcXVlc3RzIO+8gVxyXG4gKlxyXG4gKiB1Q2hhcnRzwq7lrpjmlrnnvZHnq5lcclxuICogaHR0cHM6Ly93d3cudUNoYXJ0cy5jblxyXG4gKiBcclxuICog5byA5rqQ5Zyw5Z2AOlxyXG4gKiBodHRwczovL2dpdGVlLmNvbS91Q2hhcnRzL3VDaGFydHNcclxuICogXHJcbiAqIHVuaS1hcHDmj5Lku7bluILlnLrlnLDlnYDvvJpcclxuICogaHR0cDovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yNzFcclxuICogXHJcbiAtLT5cclxuPHRlbXBsYXRlPlxyXG4gIDx2aWV3IGNsYXNzPVwiY2hhcnRzdmlld1wiIDppZD1cIidDaGFydEJveElkJytjaWRcIj5cclxuICAgIDx2aWV3IHYtaWY9XCJtaXhpbkRhdGFjb21Mb2FkaW5nXCI+XHJcbiAgICAgIDwhLS0g6Ieq5a6a5LmJ5Yqg6L2954q25oCB77yM6K+35pS56L+Z6YeMIC0tPlxyXG4gICAgICA8cWl1bi1sb2FkaW5nIDpsb2FkaW5nVHlwZT1cImxvYWRpbmdUeXBlXCIgLz5cclxuICAgIDwvdmlldz5cclxuICAgIDx2aWV3IHYtaWY9XCJtaXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgJiYgZXJyb3JTaG93XCIgQHRhcD1cInJlbG9hZGluZ1wiPlxyXG4gICAgICA8IS0tIOiHquWumuS5iemUmeivr+aPkOekuu+8jOivt+aUuei/memHjCAtLT5cclxuICAgICAgPHFpdW4tZXJyb3IgOmVycm9yTWVzc2FnZT1cImVycm9yTWVzc2FnZVwiIC8+XHJcbiAgICA8L3ZpZXc+XHJcbiAgICA8IS0tIEFQUOWSjEg16YeH55SocmVuZGVyanPmuLLmn5Plm77ooaggLS0+XHJcbiAgICA8IS0tICNpZmRlZiBBUFAtVlVFIHx8IEg1IC0tPlxyXG4gICAgPGJsb2NrIHYtaWY9XCJlY2hhcnRzXCI+XHJcbiAgICAgIDx2aWV3XHJcbiAgICAgICAgOnN0eWxlPVwieyBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgIHN0eWxlPVwid2lkdGg6IDEwMCU7aGVpZ2h0OiAxMDAlO1wiXHJcbiAgICAgICAgOmRhdGEtZGlyZWN0b3J5PVwiZGlyZWN0b3J5XCJcclxuICAgICAgICA6aWQ9XCInRUMnK2NpZFwiIFxyXG4gICAgICAgIDpwcm9wPVwiZWNoYXJ0c09wdHNcIiBcclxuICAgICAgICA6Y2hhbmdlOnByb3A9XCJyZGNoYXJ0cy5lY2luaXRcIiBcclxuICAgICAgICA6cmVzaXplPVwiZWNoYXJ0c1Jlc2l6ZVwiXHJcbiAgICAgICAgOmNoYW5nZTpyZXNpemU9XCJyZGNoYXJ0cy5lY3Jlc2l6ZVwiXHJcbiAgICAgICAgdi1zaG93PVwic2hvd2NoYXJ0XCJcclxuICAgICAgLz5cclxuICAgIDwvYmxvY2s+XHJcbiAgICA8YmxvY2sgdi1lbHNlPlxyXG4gICAgICA8dmlld1xyXG4gICAgICAgIHYtb246dGFwPVwicmRjaGFydHMudGFwXCJcclxuICAgICAgICB2LW9uOm1vdXNlbW92ZT1cInJkY2hhcnRzLm1vdXNlTW92ZVwiXHJcbiAgICAgICAgdi1vbjptb3VzZWRvd249XCJyZGNoYXJ0cy5tb3VzZURvd25cIlxyXG4gICAgICAgIHYtb246bW91c2V1cD1cInJkY2hhcnRzLm1vdXNlVXBcIlxyXG4gICAgICAgIHYtb246dG91Y2hzdGFydD1cInJkY2hhcnRzLnRvdWNoU3RhcnRcIlxyXG4gICAgICAgIHYtb246dG91Y2htb3ZlPVwicmRjaGFydHMudG91Y2hNb3ZlXCJcclxuICAgICAgICB2LW9uOnRvdWNoZW5kPVwicmRjaGFydHMudG91Y2hFbmRcIlxyXG4gICAgICAgIDppZD1cIidVQycrY2lkXCJcclxuICAgICAgICA6cHJvcD1cInVjaGFydHNPcHRzXCJcclxuICAgICAgICA6Y2hhbmdlOnByb3A9XCJyZGNoYXJ0cy51Y2luaXRcIlxyXG4gICAgICA+XHJcbiAgICAgICAgPGNhbnZhc1xyXG4gICAgICAgICAgOmlkPVwiY2lkXCJcclxuICAgICAgICAgIDpjYW52YXNJZD1cImNpZFwiXHJcbiAgICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBjV2lkdGggKyAncHgnLCBoZWlnaHQ6IGNIZWlnaHQgKyAncHgnLCBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgICAgOmRpc2FibGUtc2Nyb2xsPVwiZGlzYWJsZVNjcm9sbFwiXHJcbiAgICAgICAgICBAZXJyb3I9XCJfZXJyb3JcIlxyXG4gICAgICAgICAgdi1zaG93PVwic2hvd2NoYXJ0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3ZpZXc+XHJcbiAgICA8L2Jsb2NrPlxyXG4gICAgPCEtLSAjZW5kaWYgLS0+XHJcbiAgICA8IS0tIOaUr+S7mOWuneWwj+eoi+W6jyAtLT5cclxuICAgIDwhLS0gI2lmZGVmIE1QLUFMSVBBWSAtLT5cclxuICAgIDxibG9jayB2LWlmPVwib250b3VjaFwiPlxyXG4gICAgICA8Y2FudmFzXHJcbiAgICAgICAgOmlkPVwiY2lkXCJcclxuICAgICAgICA6Y2FudmFzSWQ9XCJjaWRcIlxyXG4gICAgICAgIDp3aWR0aD1cImNXaWR0aCAqIHBpeGVsXCJcclxuICAgICAgICA6aGVpZ2h0PVwiY0hlaWdodCAqIHBpeGVsXCJcclxuICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBjV2lkdGggKyAncHgnLCBoZWlnaHQ6IGNIZWlnaHQgKyAncHgnLCBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgIDpkaXNhYmxlLXNjcm9sbD1cImRpc1Njcm9sbFwiXHJcbiAgICAgICAgQHRhcD1cIl90YXBcIlxyXG4gICAgICAgIEB0b3VjaHN0YXJ0PVwiX3RvdWNoU3RhcnRcIlxyXG4gICAgICAgIEB0b3VjaG1vdmU9XCJfdG91Y2hNb3ZlXCJcclxuICAgICAgICBAdG91Y2hlbmQ9XCJfdG91Y2hFbmRcIlxyXG4gICAgICAgIEBlcnJvcj1cIl9lcnJvclwiXHJcbiAgICAgICAgdi1zaG93PVwic2hvd2NoYXJ0XCJcclxuICAgICAgLz5cclxuICAgIDwvYmxvY2s+XHJcbiAgICA8YmxvY2sgdi1pZj1cIiFvbnRvdWNoXCI+XHJcbiAgICAgIDxjYW52YXNcclxuICAgICAgICA6aWQ9XCJjaWRcIlxyXG4gICAgICAgIDpjYW52YXNJZD1cImNpZFwiXHJcbiAgICAgICAgOndpZHRoPVwiY1dpZHRoICogcGl4ZWxcIlxyXG4gICAgICAgIDpoZWlnaHQ9XCJjSGVpZ2h0ICogcGl4ZWxcIlxyXG4gICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGNXaWR0aCArICdweCcsIGhlaWdodDogY0hlaWdodCArICdweCcsIGJhY2tncm91bmQ6IGJhY2tncm91bmQgfVwiXHJcbiAgICAgICAgOmRpc2FibGUtc2Nyb2xsPVwiZGlzU2Nyb2xsXCJcclxuICAgICAgICBAdGFwPVwiX3RhcFwiXHJcbiAgICAgICAgQGVycm9yPVwiX2Vycm9yXCJcclxuICAgICAgICB2LXNob3c9XCJzaG93Y2hhcnRcIlxyXG4gICAgICAvPlxyXG4gICAgPC9ibG9jaz5cclxuICAgIDwhLS0gI2VuZGlmIC0tPlxyXG4gICAgPCEtLSDlhbbku5blsI/nqIvluo/pgJrov4d2dWXmuLLmn5Plm77ooaggLS0+XHJcbiAgICA8IS0tICNpZmRlZiBNUC1XRUlYSU4gfHwgTVAtQkFJRFUgfHwgTVAtUVEgfHwgTVAtVE9VVElBTyB8fCBNUC1LVUFJU0hPVSB8fCBNUC1MQVJLIHx8IE1QLUpEIHx8IE1QLTM2MCAtLT5cclxuICAgIDxibG9jayB2LWlmPVwidHlwZTJkXCI+XHJcbiAgICAgIDx2aWV3IHYtaWY9XCJvbnRvdWNoXCIgQHRhcD1cIl90YXBcIj5cclxuICAgICAgICA8Y2FudmFzXHJcbiAgICAgICAgICA6aWQ9XCJjaWRcIlxyXG4gICAgICAgICAgOmNhbnZhc0lkPVwiY2lkXCJcclxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGNXaWR0aCArICdweCcsIGhlaWdodDogY0hlaWdodCArICdweCcsIGJhY2tncm91bmQ6IGJhY2tncm91bmQgfVwiXHJcbiAgICAgICAgICB0eXBlPVwiMmRcIlxyXG4gICAgICAgICAgOmRpc2FibGUtc2Nyb2xsPVwiZGlzU2Nyb2xsXCJcclxuICAgICAgICAgIEB0b3VjaHN0YXJ0PVwiX3RvdWNoU3RhcnRcIlxyXG4gICAgICAgICAgQHRvdWNobW92ZT1cIl90b3VjaE1vdmVcIlxyXG4gICAgICAgICAgQHRvdWNoZW5kPVwiX3RvdWNoRW5kXCJcclxuICAgICAgICAgIEBlcnJvcj1cIl9lcnJvclwiXHJcbiAgICAgICAgICB2LXNob3c9XCJzaG93Y2hhcnRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvdmlldz5cclxuICAgICAgPHZpZXcgdi1pZj1cIiFvbnRvdWNoXCIgQHRhcD1cIl90YXBcIj5cclxuICAgICAgICA8Y2FudmFzXHJcbiAgICAgICAgICA6aWQ9XCJjaWRcIlxyXG4gICAgICAgICAgOmNhbnZhc0lkPVwiY2lkXCJcclxuICAgICAgICAgIDpzdHlsZT1cInsgd2lkdGg6IGNXaWR0aCArICdweCcsIGhlaWdodDogY0hlaWdodCArICdweCcsIGJhY2tncm91bmQ6IGJhY2tncm91bmQgfVwiXHJcbiAgICAgICAgICB0eXBlPVwiMmRcIlxyXG4gICAgICAgICAgOmRpc2FibGUtc2Nyb2xsPVwiZGlzU2Nyb2xsXCJcclxuICAgICAgICAgIEBlcnJvcj1cIl9lcnJvclwiXHJcbiAgICAgICAgICB2LXNob3c9XCJzaG93Y2hhcnRcIlxyXG4gICAgICAgIC8+XHJcbiAgICAgIDwvdmlldz5cclxuICAgIDwvYmxvY2s+XHJcbiAgICA8YmxvY2sgdi1pZj1cIiF0eXBlMmRcIj5cclxuICAgICAgPHZpZXcgdi1pZj1cIm9udG91Y2hcIiBAdGFwPVwiX3RhcFwiPlxyXG4gICAgICAgIDxjYW52YXNcclxuICAgICAgICAgIDppZD1cImNpZFwiXHJcbiAgICAgICAgICA6Y2FudmFzSWQ9XCJjaWRcIlxyXG4gICAgICAgICAgOnN0eWxlPVwieyB3aWR0aDogY1dpZHRoICsgJ3B4JywgaGVpZ2h0OiBjSGVpZ2h0ICsgJ3B4JywgYmFja2dyb3VuZDogYmFja2dyb3VuZCB9XCJcclxuICAgICAgICAgIEB0b3VjaHN0YXJ0PVwiX3RvdWNoU3RhcnRcIlxyXG4gICAgICAgICAgQHRvdWNobW92ZT1cIl90b3VjaE1vdmVcIlxyXG4gICAgICAgICAgQHRvdWNoZW5kPVwiX3RvdWNoRW5kXCJcclxuICAgICAgICAgIDpkaXNhYmxlLXNjcm9sbD1cImRpc1Njcm9sbFwiXHJcbiAgICAgICAgICBAZXJyb3I9XCJfZXJyb3JcIlxyXG4gICAgICAgICAgdi1pZj1cInNob3djaGFydFwiXHJcbiAgICAgICAgLz5cclxuICAgICAgPC92aWV3PlxyXG4gICAgICA8dmlldyB2LWlmPVwiIW9udG91Y2hcIiA+XHJcbiAgICAgICAgPGNhbnZhc1xyXG4gICAgICAgICAgOmlkPVwiY2lkXCJcclxuICAgICAgICAgIDpjYW52YXNJZD1cImNpZFwiXHJcbiAgICAgICAgICA6c3R5bGU9XCJ7IHdpZHRoOiBjV2lkdGggKyAncHgnLCBoZWlnaHQ6IGNIZWlnaHQgKyAncHgnLCBiYWNrZ3JvdW5kOiBiYWNrZ3JvdW5kIH1cIlxyXG4gICAgICAgICAgOmRpc2FibGUtc2Nyb2xsPVwiZGlzU2Nyb2xsXCJcclxuICAgICAgICAgIEB0YXA9XCJfdGFwXCJcclxuICAgICAgICAgIEBlcnJvcj1cIl9lcnJvclwiXHJcbiAgICAgICAgICB2LWlmPVwic2hvd2NoYXJ0XCJcclxuICAgICAgICAvPlxyXG4gICAgICA8L3ZpZXc+XHJcbiAgICA8L2Jsb2NrPlxyXG4gICAgPCEtLSAjZW5kaWYgLS0+XHJcbiAgPC92aWV3PlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuaW1wb3J0IHVDaGFydHMgZnJvbSAnLi4vLi4vanNfc2RrL3UtY2hhcnRzL3UtY2hhcnRzLmpzJztcclxuaW1wb3J0IGNmdSBmcm9tICcuLi8uLi9qc19zZGsvdS1jaGFydHMvY29uZmlnLXVjaGFydHMuanMnO1xyXG4vLyAjaWZkZWYgQVBQLVZVRSB8fCBINVxyXG5pbXBvcnQgY2ZlIGZyb20gJy4uLy4uL2pzX3Nkay91LWNoYXJ0cy9jb25maWctZWNoYXJ0cy5qcyc7XHJcbi8vICNlbmRpZlxyXG5cclxuZnVuY3Rpb24gZGVlcENsb25lQXNzaWduKG9yaWdpbiA9IHt9LCAuLi5hcmdzKSB7XHJcbiAgZm9yIChsZXQgaSBpbiBhcmdzKSB7XHJcbiAgICBmb3IgKGxldCBrZXkgaW4gYXJnc1tpXSkge1xyXG4gICAgICBpZiAoYXJnc1tpXS5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XHJcbiAgICAgICAgb3JpZ2luW2tleV0gPSBhcmdzW2ldW2tleV0gJiYgdHlwZW9mIGFyZ3NbaV1ba2V5XSA9PT0gJ29iamVjdCcgPyBkZWVwQ2xvbmVBc3NpZ24oQXJyYXkuaXNBcnJheShhcmdzW2ldW2tleV0pID8gW10gOiB7fSwgb3JpZ2luW2tleV0sIGFyZ3NbaV1ba2V5XSkgOiBhcmdzW2ldW2tleV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG9yaWdpbjtcclxufVxyXG5cclxuZnVuY3Rpb24gZm9ybWF0dGVyQXNzaWduKGFyZ3MsZm9ybWF0dGVyKSB7XHJcbiAgZm9yIChsZXQga2V5IGluIGFyZ3MpIHtcclxuICAgIGlmKGFyZ3MuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBhcmdzW2tleV0gIT09IG51bGwgJiYgdHlwZW9mIGFyZ3Nba2V5XSA9PT0gJ29iamVjdCcpe1xyXG4gICAgICBmb3JtYXR0ZXJBc3NpZ24oYXJnc1trZXldLGZvcm1hdHRlcilcclxuICAgIH1lbHNlIGlmKGtleSA9PT0gJ2Zvcm1hdCcgJiYgdHlwZW9mIGFyZ3Nba2V5XSA9PT0gJ3N0cmluZycpe1xyXG4gICAgICBhcmdzWydmb3JtYXR0ZXInXSA9IGZvcm1hdHRlclthcmdzW2tleV1dID8gZm9ybWF0dGVyW2FyZ3Nba2V5XV0gOiB1bmRlZmluZWQ7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBhcmdzO1xyXG59XHJcblxyXG4vLyDml7bpl7TovazmjaLlh73mlbDvvIzkuLrkuobljLnphY11bmlDbGluZXREQuivu+WPluWHuueahOaXtumXtOS4jmNhdGVnb3JpZXPkuI3lkIxcclxuZnVuY3Rpb24gZ2V0Rm9ybWF0RGF0ZShkYXRlKSB7XHJcblx0dmFyIHNlcGVyYXRvciA9IFwiLVwiO1xyXG5cdHZhciB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xyXG5cdHZhciBtb250aCA9IGRhdGUuZ2V0TW9udGgoKSArIDE7XHJcblx0dmFyIHN0ckRhdGUgPSBkYXRlLmdldERhdGUoKTtcclxuXHRpZiAobW9udGggPj0gMSAmJiBtb250aCA8PSA5KSB7XHJcblx0XHRcdG1vbnRoID0gXCIwXCIgKyBtb250aDtcclxuXHR9XHJcblx0aWYgKHN0ckRhdGUgPj0gMCAmJiBzdHJEYXRlIDw9IDkpIHtcclxuXHRcdFx0c3RyRGF0ZSA9IFwiMFwiICsgc3RyRGF0ZTtcclxuXHR9XHJcblx0dmFyIGN1cnJlbnRkYXRlID0geWVhciArIHNlcGVyYXRvciArIG1vbnRoICsgc2VwZXJhdG9yICsgc3RyRGF0ZTtcclxuXHRyZXR1cm4gY3VycmVudGRhdGU7XHJcbn1cclxuXHJcbnZhciBsYXN0TW92ZVRpbWUgPSBudWxsO1xyXG4vKipcclxuICog6Ziy5oqWXHJcbiAqXHJcbiAqIEBwYXJhbSB7IEZ1bmN0aW9uIH0gZm4g6KaB5omn6KGM55qE5pa55rOVXHJcbiAqIEBwYXJhbSB7IE51bWJlciB9IHdhaXQgIOmYsuaKluWkmuWwkeavq+enklxyXG4gKlxyXG4gKiDlnKggdnVlIOS4reS9v+eUqO+8iOazqOaEj++8muS4jeiDveS9v+eUqOeureWktOWHveaVsO+8jOWQpuWImXRoaXPmjIflkJHkuI3lr7nvvIzlubbkuJTkuI3og73lho3mrKHlsIHoo4XlpoLvvJpcclxuICogbW92ZSgpeyAgLy8g6ZSZ6K+v6LCD55So5pa55byPXHJcbiAqICAgZGVib3VuY2UoZnVuY3Rpb24gKCkge1xyXG4gKiAgIGNvbnNvbGUubG9nKHRoaXMudGl0bGUpO1xyXG4gKiB9LCAxMDAwKX3vvIk7XHJcbiAqIOW6lOivpeebtOaOpeS9v+eUqO+8mi8vIOato+ehruiwg+eUqOaWueW8j1xyXG4gKiBtb3ZlOiBkZWJvdW5jZShmdW5jdGlvbiAoKSB7XHJcbiAqICAgY29uc29sZS5sb2codGhpcy50aXRsZSk7XHJcbiAqIH0sIDEwMDApXHJcbiAqL1xyXG5mdW5jdGlvbiBkZWJvdW5jZShmbiwgd2FpdCkge1xyXG4gIGxldCB0aW1lciA9IGZhbHNlO1xyXG4gIHJldHVybiBmdW5jdGlvbigpIHtcclxuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XHJcbiAgICB0aW1lciAmJiBjbGVhclRpbWVvdXQodGltZXIpO1xyXG4gICAgdGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgdGltZXIgPSBmYWxzZTtcclxuICAgICAgZm4uYXBwbHkodGhpcywgYXJndW1lbnRzKTsgLy8g5oqK5Y+C5pWw5Lyg6L+b5Y67XHJcbiAgICB9LCB3YWl0KTtcclxuICB9O1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgbmFtZTogJ3FpdW4tZGF0YS1jaGFydHMnLFxyXG4gIG1peGluczogW3VuaUNsb3VkLm1peGluRGF0YWNvbV0sXHJcbiAgcHJvcHM6IHtcclxuICAgIHR5cGU6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiBudWxsXHJcbiAgICB9LFxyXG4gICAgY2FudmFzSWQ6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiAndWNoYXJ0c2lkJ1xyXG4gICAgfSxcclxuICAgIGNhbnZhczJkOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgYmFja2dyb3VuZDoge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIGRlZmF1bHQ6ICdyZ2JhKDAsMCwwLDApJ1xyXG4gICAgfSxcclxuICAgIGFuaW1hdGlvbjoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgY2hhcnREYXRhOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgY2F0ZWdvcmllczogW10sXHJcbiAgICAgICAgICBzZXJpZXM6IFtdXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIG9wdHM6IHtcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICBkZWZhdWx0KCkge1xyXG4gICAgICAgIHJldHVybiB7fTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGVvcHRzOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdCgpIHtcclxuICAgICAgICByZXR1cm4ge307XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBsb2FkaW5nVHlwZToge1xyXG4gICAgICB0eXBlOiBOdW1iZXIsXHJcbiAgICAgIGRlZmF1bHQ6IDJcclxuICAgIH0sXHJcbiAgICBlcnJvclNob3c6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIGVycm9yUmVsb2FkOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBlcnJvck1lc3NhZ2U6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiBudWxsXHJcbiAgICB9LFxyXG4gICAgaW5TY3JvbGxWaWV3OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgcmVzaG93OiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgcmVsb2FkOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgZGlzYWJsZVNjcm9sbDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiBmYWxzZVxyXG4gICAgfSxcclxuICAgIG9wdHNXYXRjaDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgb256b29tOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgb250YXA6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIG9udG91Y2g6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBvbm1vdXNlOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IHRydWVcclxuICAgIH0sXHJcbiAgICBvbm1vdmV0aXA6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBlY2hhcnRzSDU6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogZmFsc2VcclxuICAgIH0sXHJcbiAgICBlY2hhcnRzQXBwOiB7XHJcbiAgICAgIHR5cGU6IEJvb2xlYW4sXHJcbiAgICAgIGRlZmF1bHQ6IGZhbHNlXHJcbiAgICB9LFxyXG4gICAgdG9vbHRpcFNob3c6IHtcclxuICAgICAgdHlwZTogQm9vbGVhbixcclxuICAgICAgZGVmYXVsdDogdHJ1ZVxyXG4gICAgfSxcclxuICAgIHRvb2x0aXBGb3JtYXQ6IHtcclxuICAgICAgdHlwZTogU3RyaW5nLFxyXG4gICAgICBkZWZhdWx0OiB1bmRlZmluZWRcclxuICAgIH0sXHJcbiAgICB0b29sdGlwQ3VzdG9tOiB7XHJcbiAgICAgIHR5cGU6IE9iamVjdCxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgc3RhcnREYXRlOiB7XHJcbiAgICAgIHR5cGU6IFN0cmluZyxcclxuICAgICAgZGVmYXVsdDogdW5kZWZpbmVkXHJcbiAgICB9LFxyXG4gICAgZW5kRGF0ZToge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIGRlZmF1bHQ6IHVuZGVmaW5lZFxyXG4gICAgfSxcclxuICAgIHRleHRFbnVtOiB7XHJcbiAgICAgIHR5cGU6IEFycmF5LFxyXG4gICAgICBkZWZhdWx0ICgpIHtcclxuICAgICAgICByZXR1cm4gW11cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGdyb3VwRW51bToge1xyXG4gICAgICB0eXBlOiBBcnJheSxcclxuICAgICAgZGVmYXVsdCAoKSB7XHJcbiAgICAgICAgcmV0dXJuIFtdXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBwYWdlU2Nyb2xsVG9wOiB7XHJcbiAgICAgIHR5cGU6IE51bWJlcixcclxuICAgICAgZGVmYXVsdDogMFxyXG4gICAgfSxcclxuICAgIGRpcmVjdG9yeToge1xyXG4gICAgICB0eXBlOiBTdHJpbmcsXHJcbiAgICAgIGRlZmF1bHQ6ICcvJ1xyXG4gICAgfSxcclxuICAgIHRhcExlZ2VuZDoge1xyXG4gICAgICB0eXBlOiBCb29sZWFuLFxyXG4gICAgICBkZWZhdWx0OiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbWVudXM6IHtcclxuICAgICAgdHlwZTogQXJyYXksXHJcbiAgICAgIGRlZmF1bHQgKCkge1xyXG4gICAgICAgIHJldHVybiBbXVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgY2lkOiAndWNoYXJ0c2lkJyxcclxuICAgICAgaW5XeDogZmFsc2UsXHJcbiAgICAgIGluQWxpOiBmYWxzZSxcclxuICAgICAgaW5UdDogZmFsc2UsXHJcbiAgICAgIGluQmQ6IGZhbHNlLFxyXG4gICAgICBpbkg1OiBmYWxzZSxcclxuICAgICAgaW5BcHA6IGZhbHNlLFxyXG4gICAgICBpbldpbjogZmFsc2UsXHJcbiAgICAgIHR5cGUyZDogdHJ1ZSxcclxuICAgICAgZGlzU2Nyb2xsOiBmYWxzZSxcclxuICAgICAgb3Blbm1vdXNlOiBmYWxzZSxcclxuICAgICAgcGl4ZWw6IDEsXHJcbiAgICAgIGNXaWR0aDogMzc1LFxyXG4gICAgICBjSGVpZ2h0OiAyNTAsXHJcbiAgICAgIHNob3djaGFydDogZmFsc2UsXHJcbiAgICAgIGVjaGFydHM6IGZhbHNlLFxyXG4gICAgICBlY2hhcnRzUmVzaXplOntcclxuICAgICAgICBzdGF0ZTpmYWxzZVxyXG4gICAgICB9LFxyXG4gICAgICB1Y2hhcnRzT3B0czoge30sXHJcbiAgICAgIGVjaGFydHNPcHRzOiB7fSxcclxuICAgICAgZHJhd0RhdGE6e30sXHJcbiAgICAgIGxhc3REcmF3VGltZTpudWxsLFxyXG4gICAgfTtcclxuICB9LFxyXG4gIGNyZWF0ZWQoKXtcclxuICAgIHRoaXMuY2lkID0gdGhpcy5jYW52YXNJZFxyXG4gICAgaWYgKHRoaXMuY2FudmFzSWQgPT0gJ3VjaGFydHNpZCcgfHwgdGhpcy5jYW52YXNJZCA9PSAnJykge1xyXG4gICAgICBsZXQgdCA9ICdBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWmFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6J1xyXG4gICAgICBsZXQgbGVuID0gdC5sZW5ndGhcclxuICAgICAgbGV0IGlkID0gJydcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAzMjsgaSsrKSB7XHJcbiAgICAgICAgaWQgKz0gdC5jaGFyQXQoTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogbGVuKSlcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmNpZCA9IGlkXHJcbiAgICB9XHJcbiAgICBjb25zdCBzeXN0ZW1JbmZvID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKClcclxuICAgIGlmKHN5c3RlbUluZm8ucGxhdGZvcm0gPT09ICd3aW5kb3dzJyB8fCBzeXN0ZW1JbmZvLnBsYXRmb3JtID09PSAnbWFjJyl7XHJcbiAgICAgIHRoaXMuaW5XaW4gPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgLy8gI2lmZGVmIE1QLVdFSVhJTlxyXG4gICAgdGhpcy5pbld4ID0gdHJ1ZTtcclxuICAgIGlmICh0aGlzLmNhbnZhczJkID09PSBmYWxzZSB8fCBzeXN0ZW1JbmZvLnBsYXRmb3JtID09PSAnd2luZG93cycgfHwgc3lzdGVtSW5mby5wbGF0Zm9ybSA9PT0gJ21hYycpIHtcclxuICAgICAgdGhpcy50eXBlMmQgPSBmYWxzZTtcclxuICAgIH1lbHNle1xyXG4gICAgICB0aGlzLnR5cGUyZCA9IHRydWU7XHJcbiAgICAgIHRoaXMucGl4ZWwgPSBzeXN0ZW1JbmZvLnBpeGVsUmF0aW87XHJcbiAgICB9XHJcbiAgICAvLyAjZW5kaWZcclxuICAgIC8v6Z2e5b6u5L+h5bCP56iL5bqP56uv5by65Yi25YWz6ZetY2FudmFzMmTmqKHlvI9cclxuICAgIC8vICNpZm5kZWYgTVAtV0VJWElOXHJcbiAgICB0aGlzLnR5cGUyZCA9IGZhbHNlO1xyXG4gICAgLy8gI2VuZGlmXHJcbiAgICAvLyAjaWZkZWYgIE1QLVRPVVRJQU8gfHwgTVAtTEFSSyB8fCBNUC1BTElQQVlcclxuICAgIHRoaXMudHlwZTJkID0gdGhpcy5jYW52YXMyZDtcclxuICAgIC8vICNlbmRpZlxyXG4gICAgLy8gI2lmZGVmIE1QLUFMSVBBWVxyXG4gICAgdGhpcy5pbkFsaSA9IHRydWU7XHJcbiAgICB0aGlzLnBpeGVsID0gc3lzdGVtSW5mby5waXhlbFJhdGlvO1xyXG4gICAgLy8gI2VuZGlmXHJcbiAgICAvLyAjaWZkZWYgTVAtQkFJRFVcclxuICAgIHRoaXMuaW5CZCA9IHRydWU7XHJcbiAgICAvLyAjZW5kaWZcclxuICAgIC8vICNpZmRlZiBNUC1UT1VUSUFPXHJcbiAgICB0aGlzLmluVHQgPSB0cnVlO1xyXG4gICAgLy8gI2VuZGlmXHJcbiAgICB0aGlzLmRpc1Njcm9sbCA9IHRoaXMuZGlzYWJsZVNjcm9sbDtcclxuICB9LFxyXG4gIG1vdW50ZWQoKSB7XHJcbiAgICAvLyAjaWZkZWYgQVBQLVZVRVxyXG4gICAgdGhpcy5pbkFwcCA9IHRydWU7XHJcbiAgICBpZiAodGhpcy5lY2hhcnRzQXBwID09PSB0cnVlKSB7XHJcbiAgICAgIHRoaXMuZWNoYXJ0cyA9IHRydWU7XHJcbiAgICAgIHRoaXMub3Blbm1vdXNlID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgICAvLyAjZW5kaWZcclxuICAgIC8vICNpZmRlZiBBUFAtTlZVRVxyXG4gICAgdGhpcy5pbkFwcCA9IHRydWU7XHJcbiAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZVxyXG4gICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBcIuaaguS4jeaUr+aMgU5WVUVcIlxyXG4gICAgLy8gI2VuZGlmXHJcbiAgICAvLyAjaWZkZWYgSDVcclxuICAgIHRoaXMuaW5INSA9IHRydWU7XHJcbiAgICBpZih0aGlzLmluV2luID09PSB0cnVlKXtcclxuICAgICAgdGhpcy5vcGVubW91c2UgPSB0aGlzLm9ubW91c2U7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5lY2hhcnRzSDUgPT09IHRydWUpIHtcclxuICAgICAgdGhpcy5lY2hhcnRzID0gdHJ1ZTtcclxuICAgIH1cclxuICAgIC8vICNlbmRpZlxyXG4gICAgdGhpcy4kbmV4dFRpY2soKCk9PntcclxuICAgICAgdGhpcy5iZWZvcmVJbml0KCk7XHJcbiAgICB9KVxyXG4gICAgLy8gI2lmbmRlZiBNUC1BTElQQVkgfHwgTVAtQkFJRFUgfHwgTVAtVE9VVElBTyB8fCBBUFAtVlVFXHJcbiAgICBjb25zdCB0aW1lID0gdGhpcy5pbkg1ID8gNTAwIDogMjAwO1xyXG4gICAgY29uc3QgX3RoaXMgPSB0aGlzO1xyXG4gICAgdW5pLm9uV2luZG93UmVzaXplKFxyXG4gICAgICBkZWJvdW5jZShmdW5jdGlvbihyZXMpIHtcclxuICAgICAgICBpZiAoX3RoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9PSB0cnVlKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCBlcnJtc2cgPSBfdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2U7XHJcbiAgICAgICAgaWYgKGVycm1zZyAhPT0gbnVsbCAmJiBlcnJtc2cgIT09ICdudWxsJyAmJiBlcnJtc2cgIT09ICcnKSB7XHJcbiAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChfdGhpcy5lY2hhcnRzKSB7XHJcbiAgICAgICAgICBfdGhpcy5lY2hhcnRzUmVzaXplLnN0YXRlID0gIV90aGlzLmVjaGFydHNSZXNpemUuc3RhdGU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIF90aGlzLnJlc2l6ZUhhbmRsZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0sIHRpbWUpXHJcbiAgICApO1xyXG4gICAgLy8gI2VuZGlmXHJcbiAgfSxcclxuICBkZXN0cm95ZWQoKXtcclxuICAgIGlmKHRoaXMuZWNoYXJ0cyA9PT0gdHJ1ZSl7XHJcbiAgICAgIGRlbGV0ZSBjZmUub3B0aW9uW3RoaXMuY2lkXVxyXG4gICAgICBkZWxldGUgY2ZlLmluc3RhbmNlW3RoaXMuY2lkXVxyXG4gICAgfWVsc2V7XHJcbiAgICAgIGRlbGV0ZSBjZnUub3B0aW9uW3RoaXMuY2lkXVxyXG4gICAgICBkZWxldGUgY2Z1Lmluc3RhbmNlW3RoaXMuY2lkXVxyXG4gICAgfVxyXG4gICAgLy8gI2lmbmRlZiBNUC1BTElQQVkgfHwgTVAtQkFJRFUgfHwgTVAtVE9VVElBT1xyXG4gICAgdW5pLm9mZldpbmRvd1Jlc2l6ZSgoKT0+e30pXHJcbiAgICAvLyAjZW5kaWZcclxuICB9LFxyXG4gIHdhdGNoOiB7XHJcbiAgICBjaGFydERhdGFQcm9wczoge1xyXG4gICAgICBoYW5kbGVyKHZhbCwgb2xkdmFsKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodmFsKSAhPT0gSlNPTi5zdHJpbmdpZnkob2xkdmFsKSkge1xyXG4gICAgICAgICAgICB0aGlzLl9jbGVhckNoYXJ0KCk7XHJcbiAgICAgICAgICAgIGlmICh2YWwuc2VyaWVzICYmIHZhbC5zZXJpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgIHRoaXMuYmVmb3JlSW5pdCgpO1xyXG4gICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICAgICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5fY2xlYXJDaGFydCgpO1xyXG4gICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gJ+WPguaVsOmUmeivr++8mmNoYXJ0RGF0YeaVsOaNruexu+Wei+mUmeivryc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBpbW1lZGlhdGU6IGZhbHNlLFxyXG4gICAgICBkZWVwOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgbG9jYWxkYXRhOntcclxuICAgICAgaGFuZGxlcih2YWwsIG9sZHZhbCkge1xyXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh2YWwpICE9PSBKU09OLnN0cmluZ2lmeShvbGR2YWwpKSB7XHJcbiAgICAgICAgICBpZiAodmFsLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgdGhpcy5iZWZvcmVJbml0KCk7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgICAgICAgdGhpcy5fY2xlYXJDaGFydCgpO1xyXG4gICAgICAgICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBpbW1lZGlhdGU6IGZhbHNlLFxyXG4gICAgICBkZWVwOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgb3B0c1Byb3BzOiB7XHJcbiAgICAgIGhhbmRsZXIodmFsLCBvbGR2YWwpIHtcclxuICAgICAgICBpZiAodHlwZW9mIHZhbCA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICAgIGlmIChKU09OLnN0cmluZ2lmeSh2YWwpICE9PSBKU09OLnN0cmluZ2lmeShvbGR2YWwpICYmIHRoaXMuZWNoYXJ0cyA9PT0gZmFsc2UgJiYgdGhpcy5vcHRzV2F0Y2ggPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLmNoZWNrRGF0YSh0aGlzLmRyYXdEYXRhKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLl9jbGVhckNoYXJ0KCk7XHJcbiAgICAgICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSAn5Y+C5pWw6ZSZ6K+v77yab3B0c+aVsOaNruexu+Wei+mUmeivryc7XHJcbiAgICAgICAgfVxyXG4gICAgICB9LFxyXG4gICAgICBpbW1lZGlhdGU6IGZhbHNlLFxyXG4gICAgICBkZWVwOiB0cnVlXHJcbiAgICB9LFxyXG4gICAgZW9wdHNQcm9wczoge1xyXG4gICAgICBoYW5kbGVyKHZhbCwgb2xkdmFsKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB2YWwgPT09ICdvYmplY3QnKSB7XHJcbiAgICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkodmFsKSAhPT0gSlNPTi5zdHJpbmdpZnkob2xkdmFsKSAmJiB0aGlzLmVjaGFydHMgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5jaGVja0RhdGEodGhpcy5kcmF3RGF0YSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gJ+WPguaVsOmUmeivr++8mmVvcHRz5pWw5o2u57G75Z6L6ZSZ6K+vJztcclxuICAgICAgICB9XHJcbiAgICAgIH0sXHJcbiAgICAgIGltbWVkaWF0ZTogZmFsc2UsXHJcbiAgICAgIGRlZXA6IHRydWVcclxuICAgIH0sXHJcbiAgICByZXNob3codmFsLCBvbGR2YWwpIHtcclxuICAgICAgaWYgKHZhbCA9PT0gdHJ1ZSAmJiB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPT09IGZhbHNlKSB7XHJcbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgICB0aGlzLmVjaGFydHNSZXNpemUuc3RhdGUgPSAhdGhpcy5lY2hhcnRzUmVzaXplLnN0YXRlO1xyXG4gICAgICAgICAgdGhpcy5jaGVja0RhdGEodGhpcy5kcmF3RGF0YSk7XHJcbiAgICAgICAgfSwgMjAwKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIHJlbG9hZCh2YWwsIG9sZHZhbCkge1xyXG4gICAgICBpZiAodmFsID09PSB0cnVlKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWxvYWRpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIG1peGluRGF0YWNvbUVycm9yTWVzc2FnZSh2YWwsIG9sZHZhbCkge1xyXG4gICAgICBpZiAodmFsKSB7XHJcbiAgICAgICAgdGhpcy5lbWl0TXNnKHtuYW1lOiAnZXJyb3InLCBwYXJhbXM6IHt0eXBlOlwiZXJyb3JcIiwgZXJyb3JTaG93OiB0aGlzLmVycm9yU2hvdywgbXNnOiB2YWwsIGlkOiB0aGlzLmNpZH19KTtcclxuICAgICAgICBpZih0aGlzLmVycm9yU2hvdyl7XHJcbiAgICAgICAgICBjb25zb2xlLmxvZygnW+eni+S6keWbvuihqOe7hOS7tl0nICsgdmFsKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBlcnJvck1lc3NhZ2UodmFsLCBvbGR2YWwpIHtcclxuICAgICAgaWYgKHZhbCAmJiB0aGlzLmVycm9yU2hvdyAmJiB2YWwgIT09IG51bGwgJiYgdmFsICE9PSAnbnVsbCcgJiYgdmFsICE9PSAnJykge1xyXG4gICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSB2YWw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5yZWxvYWRpbmcoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgY29tcHV0ZWQ6IHtcclxuICAgIG9wdHNQcm9wcygpIHtcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5vcHRzKSk7XHJcbiAgICB9LFxyXG4gICAgZW9wdHNQcm9wcygpIHtcclxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy5lb3B0cykpO1xyXG4gICAgfSxcclxuICAgIGNoYXJ0RGF0YVByb3BzKCkge1xyXG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLmNoYXJ0RGF0YSkpO1xyXG4gICAgfSxcclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGJlZm9yZUluaXQoKXtcclxuICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICBpZiAodHlwZW9mIHRoaXMuY2hhcnREYXRhID09PSAnb2JqZWN0JyAmJiB0aGlzLmNoYXJ0RGF0YSAhPSBudWxsICYmIHRoaXMuY2hhcnREYXRhLnNlcmllcyAhPT0gdW5kZWZpbmVkICYmIHRoaXMuY2hhcnREYXRhLnNlcmllcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgLy/mi7fotJ3kuIDkuItjaGFydERhdGHvvIzkuLrkuoZvcHRz5Y+Y5pu05ZCO57uf5LiA5pWw5o2u5p2l5rqQXHJcbiAgICAgICAgdGhpcy5kcmF3RGF0YSA9IGRlZXBDbG9uZUFzc2lnbih7fSwgdGhpcy5jaGFydERhdGEpO1xyXG4gICAgICAgIHRoaXMubWl4aW5EYXRhY29tTG9hZGluZyA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmNoZWNrRGF0YSh0aGlzLmNoYXJ0RGF0YSk7XHJcbiAgICAgIH1lbHNlIGlmKHRoaXMubG9jYWxkYXRhLmxlbmd0aD4wKXtcclxuICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLnNob3djaGFydCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5sb2NhbGRhdGFJbml0KHRoaXMubG9jYWxkYXRhKTtcclxuICAgICAgfWVsc2UgaWYodGhpcy5jb2xsZWN0aW9uICE9PSAnJyl7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5nZXRDbG91ZERhdGEoKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIGxvY2FsZGF0YUluaXQocmVzZGF0YSl7XHJcbiAgICAgIC8v5pu/5o2iZW51beexu+Wei+S4uuato+ehrueahOaPj+i/sFxyXG4gICAgICBpZih0aGlzLmdyb3VwRW51bS5sZW5ndGg+MCl7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRoaXMuZ3JvdXBFbnVtLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGlmKHJlc2RhdGFbaV0uZ3JvdXAgPT09IHRoaXMuZ3JvdXBFbnVtW2pdLnZhbHVlKXtcclxuICAgICAgICAgICAgICByZXNkYXRhW2ldLmdyb3VwID0gdGhpcy5ncm91cEVudW1bal0udGV4dFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKHRoaXMudGV4dEVudW0ubGVuZ3RoPjApe1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcmVzZGF0YS5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB0aGlzLnRleHRFbnVtLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGlmKHJlc2RhdGFbaV0udGV4dCA9PT0gdGhpcy50ZXh0RW51bVtqXS52YWx1ZSl7XHJcbiAgICAgICAgICAgICAgcmVzZGF0YVtpXS50ZXh0ID0gdGhpcy50ZXh0RW51bVtqXS50ZXh0XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgbGV0IG5lZWRDYXRlZ29yaWVzID0gZmFsc2U7XHJcbiAgICAgIGxldCB0bXBEYXRhID0ge2NhdGVnb3JpZXM6W10sIHNlcmllczpbXX1cclxuICAgICAgbGV0IHRtcGNhdGVnb3JpZXMgPSBbXVxyXG4gICAgICBsZXQgdG1wc2VyaWVzID0gW107XHJcbiAgICAgIC8v5ou85o6lY2F0ZWdvcmllc1xyXG4gICAgICBpZih0aGlzLmVjaGFydHMgPT09IHRydWUpe1xyXG4gICAgICAgIG5lZWRDYXRlZ29yaWVzID0gY2ZlLmNhdGVnb3JpZXMuaW5jbHVkZXModGhpcy50eXBlKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBuZWVkQ2F0ZWdvcmllcyA9IGNmdS5jYXRlZ29yaWVzLmluY2x1ZGVzKHRoaXMudHlwZSlcclxuICAgICAgfVxyXG4gICAgICBpZihuZWVkQ2F0ZWdvcmllcyA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgLy/lpoLmnpxwcm9wc+S4reeahGNoYXJ0RGF0YeW4puaciWNhdGVnb3JpZXPvvIzliJnkvJjlhYjkvb/nlKhjaGFydERhdGHnmoRjYXRlZ29yaWVzXHJcbiAgICAgICAgaWYodGhpcy5jaGFydERhdGEgJiYgdGhpcy5jaGFydERhdGEuY2F0ZWdvcmllcyAmJiB0aGlzLmNoYXJ0RGF0YS5jYXRlZ29yaWVzLmxlbmd0aD4wKXtcclxuICAgICAgICAgIHRtcGNhdGVnb3JpZXMgPSB0aGlzLmNoYXJ0RGF0YS5jYXRlZ29yaWVzXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICAvL+WmguaenOaYr+aXpeacn+exu+Wei+eahOaVsOaNru+8jOS4jeeuoeaYr+acrOWcsOaVsOaNrui/mOaYr+S6keaVsOaNru+8jOmDveaMiei1t+atouaXpeacn+iHquWKqOaLvOaOpWNhdGVnb3JpZXNcclxuICAgICAgICAgIGlmKHRoaXMuc3RhcnREYXRlICYmIHRoaXMuZW5kRGF0ZSl7XHJcbiAgICAgICAgICAgIGxldCBpZGF0ZSA9IG5ldyBEYXRlKHRoaXMuc3RhcnREYXRlKVxyXG4gICAgICAgICAgICBsZXQgZWRhdGUgPSBuZXcgRGF0ZSh0aGlzLmVuZERhdGUpXHJcbiAgICAgICAgICAgIHdoaWxlIChpZGF0ZSA8PSBlZGF0ZSkge1xyXG4gICAgICAgICAgICBcdHRtcGNhdGVnb3JpZXMucHVzaChnZXRGb3JtYXREYXRlKGlkYXRlKSlcclxuICAgICAgICAgICAgXHRpZGF0ZSA9IGlkYXRlLnNldERhdGUoaWRhdGUuZ2V0RGF0ZSgpICsgMSlcclxuICAgICAgICAgICAgXHRpZGF0ZSA9IG5ldyBEYXRlKGlkYXRlKVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAvL+WQpuWImeS7jue7k+aenOS4reWOu+mHjeW5tuaLvOaOpWNhdGVnb3JpZXNcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBsZXQgdGVtcGNrZXkgPSB7fTtcclxuICAgICAgICAgICAgcmVzZGF0YS5tYXAoZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICAgICAgICBpZiAoaXRlbS50ZXh0ICE9IHVuZGVmaW5lZCAmJiAhdGVtcGNrZXlbaXRlbS50ZXh0XSkge1xyXG4gICAgICAgICAgICAgICAgdG1wY2F0ZWdvcmllcy5wdXNoKGl0ZW0udGV4dClcclxuICAgICAgICAgICAgICAgIHRlbXBja2V5W2l0ZW0udGV4dF0gPSB0cnVlXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgdG1wRGF0YS5jYXRlZ29yaWVzID0gdG1wY2F0ZWdvcmllc1xyXG4gICAgICB9XHJcbiAgICAgIC8v5ou85o6lc2VyaWVzXHJcbiAgICAgIGxldCB0ZW1wc2tleSA9IHt9O1xyXG4gICAgICByZXNkYXRhLm1hcChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChpdGVtLmdyb3VwICE9IHVuZGVmaW5lZCAmJiAhdGVtcHNrZXlbaXRlbS5ncm91cF0pIHtcclxuICAgICAgICAgIHRtcHNlcmllcy5wdXNoKHsgbmFtZTogaXRlbS5ncm91cCwgZGF0YTogW10gfSk7XHJcbiAgICAgICAgICB0ZW1wc2tleVtpdGVtLmdyb3VwXSA9IHRydWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgLy/lpoLmnpzmsqHmnInojrflj5bliLDliIbnu4TlkI3np7Ao5Y+v6IO95piv5bimY2F0ZWdvcmllc+eahOaVsOaNru+8jOS5n+WPr+iDveaYr+S4jeW4pueahOmlvOWbvuexuylcclxuICAgICAgaWYgKHRtcHNlcmllcy5sZW5ndGggPT0gMCkge1xyXG4gICAgICAgIHRtcHNlcmllcyA9IFt7IG5hbWU6ICfpu5jorqTliIbnu4QnLCBkYXRhOiBbXSB9XTtcclxuICAgICAgICAvL+WmguaenOaYr+mcgOimgWNhdGVnb3JpZXPnmoTlm77ooajnsbvlnotcclxuICAgICAgICBpZihuZWVkQ2F0ZWdvcmllcyA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRtcGNhdGVnb3JpZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgbGV0IHNlcmllc2RhdGEgPSAwO1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAocmVzZGF0YVtpXS50ZXh0ID09IHRtcGNhdGVnb3JpZXNbal0pIHtcclxuICAgICAgICAgICAgICAgIHNlcmllc2RhdGEgPSByZXNkYXRhW2ldLnZhbHVlO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0bXBzZXJpZXNbMF0uZGF0YS5wdXNoKHNlcmllc2RhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIC8v5aaC5p6c5piv6aW85Zu+57G755qE5Zu+6KGo57G75Z6LXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdG1wc2VyaWVzWzBdLmRhdGEucHVzaCh7XCJuYW1lXCI6IHJlc2RhdGFbaV0udGV4dCxcInZhbHVlXCI6IHJlc2RhdGFbaV0udmFsdWV9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIC8v5aaC5p6c5pyJ5YiG57uE5ZCNXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZm9yIChsZXQgayA9IDA7IGsgPCB0bXBzZXJpZXMubGVuZ3RoOyBrKyspIHtcclxuICAgICAgICAgIC8v5aaC5p6c5pyJY2F0ZWdvcmllc1xyXG4gICAgICAgICAgaWYgKHRtcGNhdGVnb3JpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHRtcGNhdGVnb3JpZXMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgc2VyaWVzZGF0YSA9IDA7XHJcbiAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCByZXNkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodG1wc2VyaWVzW2tdLm5hbWUgPT0gcmVzZGF0YVtpXS5ncm91cCAmJiByZXNkYXRhW2ldLnRleHQgPT0gdG1wY2F0ZWdvcmllc1tqXSkge1xyXG4gICAgICAgICAgICAgICAgICBzZXJpZXNkYXRhID0gcmVzZGF0YVtpXS52YWx1ZTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdG1wc2VyaWVzW2tdLmRhdGEucHVzaChzZXJpZXNkYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgLy/lpoLmnpzkvKDkuoZncm91cOiAjOayoeacieS8oHRleHTvvIzljbPmsqHmnIljYXRlZ29yaWVz77yI5q2j5bi45oOF5Ya15LiL6L+Z56eN5pWw5o2u5piv5LiN56ym5ZCI5pWw5o2u6KaB5rGC6KeE6IyD55qE77yJXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHJlc2RhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgICBpZiAodG1wc2VyaWVzW2tdLm5hbWUgPT0gcmVzZGF0YVtpXS5ncm91cCkge1xyXG4gICAgICAgICAgICAgICAgdG1wc2VyaWVzW2tdLmRhdGEucHVzaChyZXNkYXRhW2ldLnZhbHVlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgdG1wRGF0YS5zZXJpZXMgPSB0bXBzZXJpZXNcclxuICAgICAgLy/mi7fotJ3kuIDkuItjaGFydERhdGHvvIzkuLrkuoZvcHRz5Y+Y5pu05ZCO57uf5LiA5pWw5o2u5p2l5rqQXHJcbiAgICAgIHRoaXMuZHJhd0RhdGEgPSBkZWVwQ2xvbmVBc3NpZ24oe30sIHRtcERhdGEpO1xyXG4gICAgICB0aGlzLmNoZWNrRGF0YSh0bXBEYXRhKVxyXG4gICAgfSxcclxuICAgIHJlbG9hZGluZygpIHtcclxuICAgICAgaWYodGhpcy5lcnJvclJlbG9hZCA9PT0gZmFsc2Upe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgIGlmICh0aGlzLmNvbGxlY3Rpb24gIT09ICcnKSB7XHJcbiAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5vbk1peGluRGF0YWNvbVByb3BzQ2hhbmdlKHRydWUpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuYmVmb3JlSW5pdCgpO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgY2hlY2tEYXRhKGFueURhdGEpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuY2lkXHJcbiAgICAgIC8v5aSN5L2Nb3B0c+aIlmVvcHRzXHJcbiAgICAgIGlmKHRoaXMuZWNoYXJ0cyA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgY2ZlLm9wdGlvbltjaWRdID0gZGVlcENsb25lQXNzaWduKHt9LCB0aGlzLmVvcHRzKTtcclxuICAgICAgICBjZmUub3B0aW9uW2NpZF0uaWQgPSBjaWQ7XHJcbiAgICAgICAgY2ZlLm9wdGlvbltjaWRdLnR5cGUgPSB0aGlzLnR5cGU7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGlmICh0aGlzLnR5cGUgJiYgY2Z1LnR5cGUuaW5jbHVkZXModGhpcy50eXBlKSkge1xyXG4gICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdID0gZGVlcENsb25lQXNzaWduKHt9LCBjZnVbdGhpcy50eXBlXSwgdGhpcy5vcHRzKTtcclxuICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jYW52YXNJZCA9IGNpZDtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLnNob3djaGFydCA9IGZhbHNlO1xyXG4gICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSAn5Y+C5pWw6ZSZ6K+v77yacHJvcHPlj4LmlbDkuK10eXBl57G75Z6L5LiN5q2j56GuJztcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy/mjILovb1jYXRlZ29yaWVz5ZKMc2VyaWVzXHJcbiAgICAgIGxldCBuZXdEYXRhID0gZGVlcENsb25lQXNzaWduKHt9LCBhbnlEYXRhKTtcclxuICAgICAgaWYgKG5ld0RhdGEuc2VyaWVzICE9PSB1bmRlZmluZWQgJiYgbmV3RGF0YS5zZXJpZXMubGVuZ3RoID4gMCkge1xyXG4gICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICBpZiAodGhpcy5lY2hhcnRzID09PSB0cnVlKSB7XHJcbiAgICAgICAgICBjZmUub3B0aW9uW2NpZF0uY2hhcnREYXRhID0gbmV3RGF0YTtcclxuICAgICAgICAgIHRoaXMuJG5leHRUaWNrKCgpPT57XHJcbiAgICAgICAgICAgIHRoaXMuaW5pdCgpXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmNhdGVnb3JpZXMgPSBuZXdEYXRhLmNhdGVnb3JpZXM7XHJcbiAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uc2VyaWVzID0gbmV3RGF0YS5zZXJpZXM7XHJcbiAgICAgICAgICB0aGlzLiRuZXh0VGljaygoKT0+e1xyXG4gICAgICAgICAgICB0aGlzLmluaXQoKVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICByZXNpemVIYW5kbGVyKCkge1xyXG4gICAgICAvL+a4suafk+mYsuaKllxyXG4gICAgICBsZXQgY3VyclRpbWUgPSBEYXRlLm5vdygpO1xyXG4gICAgICBsZXQgbGFzdERyYXdUaW1lID0gdGhpcy5sYXN0RHJhd1RpbWU/dGhpcy5sYXN0RHJhd1RpbWU6Y3VyclRpbWUtMzAwMDtcclxuICAgICAgbGV0IGR1cmF0aW9uID0gY3VyclRpbWUgLSBsYXN0RHJhd1RpbWU7XHJcbiAgICAgIGlmIChkdXJhdGlvbiA8IDEwMDApIHJldHVybjtcclxuICAgICAgbGV0IGNoYXJ0ZG9tID0gdW5pXHJcbiAgICAgICAgLmNyZWF0ZVNlbGVjdG9yUXVlcnkoKVxyXG4gICAgICAgIC8vICNpZm5kZWYgTVAtQUxJUEFZXHJcbiAgICAgICAgLmluKHRoaXMpXHJcbiAgICAgICAgLy8gI2VuZGlmXHJcbiAgICAgICAgLnNlbGVjdCgnI0NoYXJ0Qm94SWQnK3RoaXMuY2lkKVxyXG4gICAgICAgIC5ib3VuZGluZ0NsaWVudFJlY3QoZGF0YSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnNob3djaGFydCA9IHRydWU7XHJcbiAgICAgICAgICBpZiAoZGF0YS53aWR0aCA+IDAgJiYgZGF0YS5oZWlnaHQgPiAwKSB7XHJcbiAgICAgICAgICAgIGlmIChkYXRhLndpZHRoICE9PSB0aGlzLmNXaWR0aCB8fCBkYXRhLmhlaWdodCAhPT0gdGhpcy5jSGVpZ2h0KSB7XHJcbiAgICAgICAgICAgICAgdGhpcy5jaGVja0RhdGEodGhpcy5kcmF3RGF0YSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmV4ZWMoKTtcclxuICAgIH0sXHJcbiAgICBnZXRDbG91ZERhdGEoKSB7XHJcbiAgICAgIGlmICh0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSB0cnVlO1xyXG4gICAgICB0aGlzLm1peGluRGF0YWNvbUdldCgpXHJcbiAgICAgICAgLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tUmVzRGF0YSA9IHJlcy5yZXN1bHQuZGF0YTtcclxuICAgICAgICAgIHRoaXMubG9jYWxkYXRhSW5pdCh0aGlzLm1peGluRGF0YWNvbVJlc0RhdGEpO1xyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmNhdGNoKGVyciA9PiB7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgIHRoaXMuc2hvd2NoYXJ0ID0gZmFsc2U7XHJcbiAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9ICfor7fmsYLplJnor6/vvJonICsgZXJyO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIG9uTWl4aW5EYXRhY29tUHJvcHNDaGFuZ2UobmVlZFJlc2V0LCBjaGFuZ2VkKSB7XHJcbiAgICAgIGlmIChuZWVkUmVzZXQgPT0gdHJ1ZSAmJiB0aGlzLmNvbGxlY3Rpb24gIT09ICcnKSB7XHJcbiAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IG51bGw7XHJcbiAgICAgICAgdGhpcy5fY2xlYXJDaGFydCgpO1xyXG4gICAgICAgIHRoaXMuZ2V0Q2xvdWREYXRhKCk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBfY2xlYXJDaGFydCgpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuY2lkXHJcbiAgICAgIGlmICh0aGlzLmVjaGFydHMgIT09IHRydWUgJiYgY2Z1Lm9wdGlvbltjaWRdICYmIGNmdS5vcHRpb25bY2lkXS5jb250ZXh0KSB7XHJcbiAgICAgICAgY29uc3QgY3R4ID0gY2Z1Lm9wdGlvbltjaWRdLmNvbnRleHQ7XHJcbiAgICAgICAgaWYodHlwZW9mIGN0eCA9PT0gXCJvYmplY3RcIiAmJiAhISFjZnUub3B0aW9uW2NpZF0udXBkYXRlKXtcclxuICAgICAgICAgIGN0eC5jbGVhclJlY3QoMCwgMCwgdGhpcy5jV2lkdGgqdGhpcy5waXhlbCwgdGhpcy5jSGVpZ2h0KnRoaXMucGl4ZWwpO1xyXG4gICAgICAgICAgY3R4LmRyYXcoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBpbml0KCkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5jaWRcclxuICAgICAgbGV0IGNoYXJ0ZG9tID0gdW5pXHJcbiAgICAgICAgLmNyZWF0ZVNlbGVjdG9yUXVlcnkoKVxyXG4gICAgICAgIC8vICNpZm5kZWYgTVAtQUxJUEFZXHJcbiAgICAgICAgLmluKHRoaXMpXHJcbiAgICAgICAgLy8gI2VuZGlmXHJcbiAgICAgICAgLnNlbGVjdCgnI0NoYXJ0Qm94SWQnK2NpZClcclxuICAgICAgICAuYm91bmRpbmdDbGllbnRSZWN0KGRhdGEgPT4ge1xyXG4gICAgICAgICAgaWYgKGRhdGEud2lkdGggPiAwICYmIGRhdGEuaGVpZ2h0ID4gMCkge1xyXG4gICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSB0cnVlO1xyXG4gICAgICAgICAgICB0aGlzLmxhc3REcmF3VGltZSA9IERhdGUubm93KCk7XHJcbiAgICAgICAgICAgIHRoaXMuY1dpZHRoID0gZGF0YS53aWR0aDtcclxuICAgICAgICAgICAgdGhpcy5jSGVpZ2h0ID0gZGF0YS5oZWlnaHQ7XHJcbiAgICAgICAgICAgIGlmKHRoaXMuZWNoYXJ0cyAhPT0gdHJ1ZSl7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmJhY2tncm91bmQgPSB0aGlzLmJhY2tncm91bmQgPT0gJ3JnYmEoMCwwLDAsMCknID8gJyNGRkZGRkYnIDogdGhpcy5iYWNrZ3JvdW5kO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jYW52YXMyZCA9IHRoaXMudHlwZTJkO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5waXhlbFJhdGlvID0gdGhpcy5waXhlbDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uYW5pbWF0aW9uID0gdGhpcy5hbmltYXRpb247XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLndpZHRoID0gZGF0YS53aWR0aCAqIHRoaXMucGl4ZWw7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmhlaWdodCA9IGRhdGEuaGVpZ2h0ICogdGhpcy5waXhlbDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ub256b29tID0gdGhpcy5vbnpvb207XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLm9udGFwID0gdGhpcy5vbnRhcDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ub250b3VjaCA9IHRoaXMub250b3VjaDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ub25tb3VzZSA9IHRoaXMub3Blbm1vdXNlO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5vbm1vdmV0aXAgPSB0aGlzLm9ubW92ZXRpcDtcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0udG9vbHRpcFNob3cgPSB0aGlzLnRvb2x0aXBTaG93O1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0ID0gdGhpcy50b29sdGlwRm9ybWF0O1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS50b29sdGlwQ3VzdG9tID0gdGhpcy50b29sdGlwQ3VzdG9tO1xyXG4gICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5pblNjcm9sbFZpZXcgPSB0aGlzLmluU2Nyb2xsVmlldztcclxuICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ubGFzdERyYXdUaW1lID0gdGhpcy5sYXN0RHJhd1RpbWU7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLnRhcExlZ2VuZCA9IHRoaXMudGFwTGVnZW5kO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v5aaC5p6c5pivSDXmiJbogIVBcHDnq6/vvIzph4fnlKhyZW5kZXJqc+a4suafk+WbvuihqFxyXG4gICAgICAgICAgICBpZiAodGhpcy5pbkg1IHx8IHRoaXMuaW5BcHApIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5lY2hhcnRzID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS5vbnRhcCA9IHRoaXMub250YXA7XHJcbiAgICAgICAgICAgICAgICBjZmUub3B0aW9uW2NpZF0ub25tb3VzZSA9IHRoaXMub3Blbm1vdXNlO1xyXG4gICAgICAgICAgICAgICAgY2ZlLm9wdGlvbltjaWRdLnRvb2x0aXBTaG93ID0gdGhpcy50b29sdGlwU2hvdztcclxuICAgICAgICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0ID0gdGhpcy50b29sdGlwRm9ybWF0O1xyXG4gICAgICAgICAgICAgICAgY2ZlLm9wdGlvbltjaWRdLnRvb2x0aXBDdXN0b20gPSB0aGlzLnRvb2x0aXBDdXN0b207XHJcbiAgICAgICAgICAgICAgICBjZmUub3B0aW9uW2NpZF0ubGFzdERyYXdUaW1lID0gdGhpcy5sYXN0RHJhd1RpbWU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVjaGFydHNPcHRzID0gZGVlcENsb25lQXNzaWduKHt9LCBjZmUub3B0aW9uW2NpZF0pO1xyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0ucm90YXRlTG9jayA9IGNmdS5vcHRpb25bY2lkXS5yb3RhdGU7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnVjaGFydHNPcHRzID0gZGVlcENsb25lQXNzaWduKHt9LCBjZnUub3B0aW9uW2NpZF0pO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy/lpoLmnpzmmK/lsI/nqIvluo/nq6/vvIzph4fnlKh1Q2hhcnRz5riy5p+TXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdID0gZm9ybWF0dGVyQXNzaWduKGNmdS5vcHRpb25bY2lkXSxjZnUuZm9ybWF0dGVyKVxyXG4gICAgICAgICAgICAgIHRoaXMubWl4aW5EYXRhY29tRXJyb3JNZXNzYWdlID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICB0aGlzLnNob3djaGFydCA9IHRydWU7XHJcbiAgICAgICAgICAgICAgdGhpcy4kbmV4dFRpY2soKCk9PntcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLnR5cGUyZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCBxdWVyeSA9IHVuaS5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuaW4odGhpcylcclxuICAgICAgICAgICAgICAgICAgcXVlcnlcclxuICAgICAgICAgICAgICAgICAgICAuc2VsZWN0KCcjJyArIGNpZClcclxuICAgICAgICAgICAgICAgICAgICAuZmllbGRzKHsgbm9kZTogdHJ1ZSwgc2l6ZTogdHJ1ZSB9KVxyXG4gICAgICAgICAgICAgICAgICAgIC5leGVjKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzWzBdKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IHJlc1swXS5ub2RlO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjdHggPSBjYW52YXMuZ2V0Q29udGV4dCgnMmQnKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmNvbnRleHQgPSBjdHg7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5yb3RhdGVMb2NrID0gY2Z1Lm9wdGlvbltjaWRdLnJvdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYoY2Z1Lmluc3RhbmNlW2NpZF0gJiYgY2Z1Lm9wdGlvbltjaWRdICYmIGNmdS5vcHRpb25bY2lkXS51cGRhdGUgPT09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0YVVDaGFydChjaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy53aWR0aCA9IGRhdGEud2lkdGggKiB0aGlzLnBpeGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5oZWlnaHQgPSBkYXRhLmhlaWdodCAqIHRoaXMucGl4ZWw7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgY2FudmFzLl93aWR0aCA9IGRhdGEud2lkdGggKiB0aGlzLnBpeGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIGNhbnZhcy5faGVpZ2h0ID0gZGF0YS5oZWlnaHQgKiB0aGlzLnBpeGVsO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgIHNldFRpbWVvdXQoKCk9PntcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jb250ZXh0LnJlc3RvcmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jb250ZXh0LnNhdmUoKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuX25ld0NoYXJ0KGNpZClcclxuICAgICAgICAgICAgICAgICAgICAgICAgICB9LDEwMClcclxuICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5taXhpbkRhdGFjb21FcnJvck1lc3NhZ2UgPSAn5Y+C5pWw6ZSZ6K+v77ya5byA5ZCvMmTmqKHlvI/lkI7vvIzmnKrojrflj5bliLBkb23oioLngrnvvIxjYW52YXMtaWQ6JyArIGNpZDtcclxuICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgIGlmKHRoaXMuaW5BbGkpe1xyXG4gICAgICAgICAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5yb3RhdGVMb2NrID0gY2Z1Lm9wdGlvbltjaWRdLnJvdGF0ZTtcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dCA9IHVuaS5jcmVhdGVDYW52YXNDb250ZXh0KGNpZCwgdGhpcyk7XHJcbiAgICAgICAgICAgICAgICAgIGlmKGNmdS5pbnN0YW5jZVtjaWRdICYmIGNmdS5vcHRpb25bY2lkXSAmJiBjZnUub3B0aW9uW2NpZF0udXBkYXRlID09PSB0cnVlKXtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLl91cGRhdGFVQ2hhcnQoY2lkKVxyXG4gICAgICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dC5zYXZlKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICB0aGlzLl9uZXdDaGFydChjaWQpXHJcbiAgICAgICAgICAgICAgICAgICAgfSwxMDApXHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgdGhpcy5zaG93Y2hhcnQgPSBmYWxzZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMucmVzaG93ID09IHRydWUpIHtcclxuICAgICAgICAgICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9ICfluIPlsYDplJnor6/vvJrmnKrojrflj5bliLDniLblhYPntKDlrr3pq5jlsLrlr7jvvIFjYW52YXMtaWQ6JyArIGNpZDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgLmV4ZWMoKTtcclxuICAgIH0sXHJcbiAgICBzYXZlSW1hZ2UoKXtcclxuICAgIFx0dW5pLmNhbnZhc1RvVGVtcEZpbGVQYXRoKHtcclxuICAgIFx0ICBjYW52YXNJZDogdGhpcy5jaWQsXHJcbiAgICBcdCAgc3VjY2VzczogcmVzPT57XHJcbiAgICBcdCAgICAvLyNpZmRlZiBINVxyXG4gICAgXHRcdFx0dmFyIGEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KFwiYVwiKTtcclxuICAgIFx0XHRcdGEuaHJlZiA9IHJlcy50ZW1wRmlsZVBhdGg7XHJcbiAgICBcdFx0XHRhLmRvd25sb2FkID0gdGhpcy5jaWQ7XHJcbiAgICBcdFx0XHRhLnRhcmdldCA9ICdfYmxhbmsnXHJcbiAgICBcdFx0XHRhLmNsaWNrKCk7XHJcbiAgICBcdCAgICAvLyNlbmRpZlxyXG4gICAgXHQgICAgLy8jaWZuZGVmIEg1XHJcbiAgICBcdCAgICAgIHVuaS5zYXZlSW1hZ2VUb1Bob3Rvc0FsYnVtKHtcclxuICAgICAgICAgICAgICBmaWxlUGF0aDogcmVzLnRlbXBGaWxlUGF0aCxcclxuICAgICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICB1bmkuc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkv53lrZjmiJDlip8nLFxyXG4gICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgXHQgICAgICB9KTtcclxuICAgIFx0ICAgIC8vI2VuZGlmXHJcbiAgICBcdCAgfSBcclxuICAgIFx0fSx0aGlzKTtcclxuICAgIH0sXHJcbiAgICBnZXRJbWFnZSgpe1xyXG4gICAgICBpZih0aGlzLnR5cGUyZCA9PSBmYWxzZSl7XHJcbiAgICAgICAgdW5pLmNhbnZhc1RvVGVtcEZpbGVQYXRoKHtcclxuICAgICAgICAgIGNhbnZhc0lkOiB0aGlzLmNpZCxcclxuICAgICAgICAgIHN1Y2Nlc3M6IHJlcz0+e1xyXG4gICAgICAgICAgICB0aGlzLmVtaXRNc2coe25hbWU6ICdnZXRJbWFnZScsIHBhcmFtczoge3R5cGU6XCJnZXRJbWFnZVwiLCBiYXNlNjQ6IHJlcy50ZW1wRmlsZVBhdGh9fSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSx0aGlzKTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgY29uc3QgcXVlcnkgPSB1bmkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLmluKHRoaXMpXHJcbiAgICAgICAgcXVlcnlcclxuICAgICAgICAgIC5zZWxlY3QoJyMnICsgdGhpcy5jaWQpXHJcbiAgICAgICAgICAuZmllbGRzKHsgbm9kZTogdHJ1ZSwgc2l6ZTogdHJ1ZSB9KVxyXG4gICAgICAgICAgLmV4ZWMocmVzID0+IHtcclxuICAgICAgICAgICAgaWYgKHJlc1swXSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGNhbnZhcyA9IHJlc1swXS5ub2RlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ2dldEltYWdlJywgcGFyYW1zOiB7dHlwZTpcImdldEltYWdlXCIsIGJhc2U2NDogY2FudmFzLnRvRGF0YVVSTCgnaW1hZ2UvcG5nJyl9fSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gI2lmbmRlZiBBUFAtVlVFIHx8IEg1XHJcbiAgICBfbmV3Q2hhcnQoY2lkKSB7XHJcbiAgICAgIGlmICh0aGlzLm1peGluRGF0YWNvbUxvYWRpbmcgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLnNob3djaGFydCA9IHRydWU7XHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdID0gbmV3IHVDaGFydHMoY2Z1Lm9wdGlvbltjaWRdKTtcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uYWRkRXZlbnRMaXN0ZW5lcigncmVuZGVyQ29tcGxldGUnLCAoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbWl0TXNnKHtuYW1lOiAnY29tcGxldGUnLCBwYXJhbXM6IHt0eXBlOlwiY29tcGxldGVcIiwgY29tcGxldGU6IHRydWUsIGlkOiBjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSk7XHJcbiAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uZGVsRXZlbnRMaXN0ZW5lcigncmVuZGVyQ29tcGxldGUnKVxyXG4gICAgICB9KTtcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsTGVmdCcsICgpID0+IHtcclxuICAgICAgICB0aGlzLmVtaXRNc2coe25hbWU6ICdzY3JvbGxMZWZ0JywgcGFyYW1zOiB7dHlwZTpcInNjcm9sbExlZnRcIiwgc2Nyb2xsTGVmdDogdHJ1ZSwgaWQ6IGNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KTtcclxuICAgICAgfSk7XHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbFJpZ2h0JywgKCkgPT4ge1xyXG4gICAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ3Njcm9sbFJpZ2h0JywgcGFyYW1zOiB7dHlwZTpcInNjcm9sbFJpZ2h0XCIsIHNjcm9sbFJpZ2h0OiB0cnVlLCBpZDogY2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pO1xyXG4gICAgICB9KTtcclxuICAgIH0sXHJcbiAgICBfdXBkYXRhVUNoYXJ0KGNpZCkge1xyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXS51cGRhdGVEYXRhKGNmdS5vcHRpb25bY2lkXSlcclxuICAgIH0sXHJcbiAgICBfdG9vbHRpcERlZmF1bHQoaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKSB7XHJcbiAgICAgIGlmIChjYXRlZ29yeSkge1xyXG4gICAgICAgIGxldCBkYXRhID0gaXRlbS5kYXRhXHJcbiAgICAgICAgaWYodHlwZW9mIGl0ZW0uZGF0YSA9PT0gXCJvYmplY3RcIil7XHJcbiAgICAgICAgICBkYXRhID0gaXRlbS5kYXRhLnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBjYXRlZ29yeSArICcgJyArIGl0ZW0ubmFtZSArICc6JyArIGRhdGE7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKGl0ZW0ucHJvcGVydGllcyAmJiBpdGVtLnByb3BlcnRpZXMubmFtZSkge1xyXG4gICAgICAgICAgcmV0dXJuIGl0ZW0ucHJvcGVydGllcy5uYW1lO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICByZXR1cm4gaXRlbS5uYW1lICsgJzonICsgaXRlbS5kYXRhO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIF9zaG93VG9vbHRpcChlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLmNpZFxyXG4gICAgICBsZXQgdGMgPSBjZnUub3B0aW9uW2NpZF0udG9vbHRpcEN1c3RvbVxyXG4gICAgICBpZiAodGMgJiYgdGMgIT09IHVuZGVmaW5lZCAmJiB0YyAhPT0gbnVsbCkge1xyXG4gICAgICAgIGxldCBvZmZzZXQgPSB1bmRlZmluZWQ7XHJcbiAgICAgICAgaWYgKHRjLnggPj0gMCAmJiB0Yy55ID49IDApIHtcclxuICAgICAgICAgIG9mZnNldCA9IHsgeDogdGMueCwgeTogdGMueSArIDEwIH07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNob3dUb29sVGlwKGUsIHtcclxuICAgICAgICAgIGluZGV4OiB0Yy5pbmRleCxcclxuICAgICAgICAgIG9mZnNldDogb2Zmc2V0LFxyXG4gICAgICAgICAgdGV4dExpc3Q6IHRjLnRleHRMaXN0LFxyXG4gICAgICAgICAgZm9ybWF0dGVyOiAoaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXQgPT09ICdzdHJpbmcnICYmIGNmdS5mb3JtYXR0ZXJbY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXRdKSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIGNmdS5mb3JtYXR0ZXJbY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBGb3JtYXRdKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyk7XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3Rvb2x0aXBEZWZhdWx0KGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zaG93VG9vbFRpcChlLCB7XHJcbiAgICAgICAgICBmb3JtYXR0ZXI6IChpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdCA9PT0gJ3N0cmluZycgJiYgY2Z1LmZvcm1hdHRlcltjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdF0pIHtcclxuICAgICAgICAgICAgICByZXR1cm4gY2Z1LmZvcm1hdHRlcltjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdF0oaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdG9vbHRpcERlZmF1bHQoaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgX3RhcChlLG1vdmUpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMuY2lkXHJcbiAgICAgIGxldCBjdXJyZW50SW5kZXggPSBudWxsO1xyXG4gICAgICBsZXQgbGVnZW5kSW5kZXggPSBudWxsO1xyXG4gICAgICBpZiAodGhpcy5pblNjcm9sbFZpZXcgPT09IHRydWUgfHwgdGhpcy5pbkFsaSkge1xyXG4gICAgICAgIGxldCBjaGFydGRvbSA9IHVuaVxyXG4gICAgICAgICAgLmNyZWF0ZVNlbGVjdG9yUXVlcnkoKVxyXG4gICAgICAgICAgLy8gI2lmbmRlZiBNUC1BTElQQVlcclxuICAgICAgICAgIC5pbih0aGlzKVxyXG4gICAgICAgICAgLnNlbGVjdCgnI0NoYXJ0Qm94SWQnK2NpZClcclxuICAgICAgICAgIC8vICNlbmRpZlxyXG4gICAgICAgICAgLy8gI2lmZGVmIE1QLUFMSVBBWVxyXG4gICAgICAgICAgLnNlbGVjdCgnIycrdGhpcy5jaWQpXHJcbiAgICAgICAgICAvLyAjZW5kaWZcclxuICAgICAgICAgIC5ib3VuZGluZ0NsaWVudFJlY3QoZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIGUuY2hhbmdlZFRvdWNoZXM9W107XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmluQWxpKSB7XHJcbiAgICAgICAgICAgICAgZS5jaGFuZ2VkVG91Y2hlcy51bnNoaWZ0KHsgeDogZS5kZXRhaWwuY2xpZW50WCAtIGRhdGEubGVmdCwgeTogZS5kZXRhaWwuY2xpZW50WSAtIGRhdGEudG9wfSk7XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIGUuY2hhbmdlZFRvdWNoZXMudW5zaGlmdCh7IHg6IGUuZGV0YWlsLnggLSBkYXRhLmxlZnQsIHk6IGUuZGV0YWlsLnkgLSBkYXRhLnRvcCAtIHRoaXMucGFnZVNjcm9sbFRvcH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmKG1vdmUpe1xyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnRvb2x0aXBTaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG93VG9vbHRpcChlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgIGN1cnJlbnRJbmRleCA9IGNmdS5pbnN0YW5jZVtjaWRdLmdldEN1cnJlbnREYXRhSW5kZXgoZSk7XHJcbiAgICAgICAgICAgICAgbGVnZW5kSW5kZXggPSBjZnUuaW5zdGFuY2VbY2lkXS5nZXRMZWdlbmREYXRhSW5kZXgoZSk7XHJcbiAgICAgICAgICAgICAgaWYodGhpcy50YXBMZWdlbmQgPT09IHRydWUpe1xyXG4gICAgICAgICAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0udG91Y2hMZWdlbmQoZSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmICh0aGlzLnRvb2x0aXBTaG93ID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLl9zaG93VG9vbHRpcChlKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgdGhpcy5lbWl0TXNnKHtuYW1lOiAnZ2V0SW5kZXgnLCBwYXJhbXM6IHsgdHlwZTpcImdldEluZGV4XCIsIGV2ZW50OnsgeDogZS5kZXRhaWwueCAtIGRhdGEubGVmdCwgeTogZS5kZXRhaWwueSAtIGRhdGEudG9wIH0sIGN1cnJlbnRJbmRleDogY3VycmVudEluZGV4LCBsZWdlbmRJbmRleDogbGVnZW5kSW5kZXgsIGlkOiBjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAuZXhlYygpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmKG1vdmUpe1xyXG4gICAgICAgICAgaWYgKHRoaXMudG9vbHRpcFNob3cgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgdGhpcy5fc2hvd1Rvb2x0aXAoZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBlLmNoYW5nZWRUb3VjaGVzPVtdO1xyXG4gICAgICAgICAgZS5jaGFuZ2VkVG91Y2hlcy51bnNoaWZ0KHsgeDogZS5kZXRhaWwueCAtIGUuY3VycmVudFRhcmdldC5vZmZzZXRMZWZ0LCB5OiBlLmRldGFpbC55IC0gZS5jdXJyZW50VGFyZ2V0Lm9mZnNldFRvcCB9KTtcclxuICAgICAgICAgIGN1cnJlbnRJbmRleCA9IGNmdS5pbnN0YW5jZVtjaWRdLmdldEN1cnJlbnREYXRhSW5kZXgoZSk7XHJcbiAgICAgICAgICBsZWdlbmRJbmRleCA9IGNmdS5pbnN0YW5jZVtjaWRdLmdldExlZ2VuZERhdGFJbmRleChlKTtcclxuICAgICAgICAgIGlmKHRoaXMudGFwTGVnZW5kID09PSB0cnVlKXtcclxuICAgICAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0udG91Y2hMZWdlbmQoZSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy50b29sdGlwU2hvdyA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICB0aGlzLl9zaG93VG9vbHRpcChlKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ2dldEluZGV4JywgcGFyYW1zOiB7dHlwZTpcImdldEluZGV4XCIsIGV2ZW50OnsgeDogZS5kZXRhaWwueCwgeTogZS5kZXRhaWwueSAtIGUuY3VycmVudFRhcmdldC5vZmZzZXRUb3AgfSwgY3VycmVudEluZGV4OiBjdXJyZW50SW5kZXgsIGxlZ2VuZEluZGV4OiBsZWdlbmRJbmRleCwgaWQ6IGNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBfdG91Y2hTdGFydChlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLmNpZFxyXG4gICAgICBsYXN0TW92ZVRpbWU9RGF0ZS5ub3coKTtcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBlLnRvdWNoZXMubGVuZ3RoID09IDEpe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbFN0YXJ0KGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTonZ2V0VG91Y2hTdGFydCcsIHBhcmFtczp7dHlwZTpcInRvdWNoU3RhcnRcIiwgZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSwgaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pO1xyXG4gICAgfSxcclxuICAgIF90b3VjaE1vdmUoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5jaWRcclxuICAgICAgbGV0IGN1cnJNb3ZlVGltZSA9IERhdGUubm93KCk7XHJcbiAgICAgIGxldCBkdXJhdGlvbiA9IGN1cnJNb3ZlVGltZSAtIGxhc3RNb3ZlVGltZTtcclxuICAgICAgbGV0IHRvdWNoTW92ZUxpbWl0ID0gY2Z1Lm9wdGlvbltjaWRdLnRvdWNoTW92ZUxpbWl0IHx8IDI0O1xyXG4gICAgICBpZiAoZHVyYXRpb24gPCBNYXRoLmZsb29yKDEwMDAgLyB0b3VjaE1vdmVMaW1pdCkpIHJldHVybjsvL+avj+enkjYw5binXHJcbiAgICAgIGxhc3RNb3ZlVGltZSA9IGN1cnJNb3ZlVGltZTtcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA9PSAxKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zY3JvbGwoZSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYodGhpcy5vbnRhcCA9PT0gdHJ1ZSAmJiBjZnUub3B0aW9uW2NpZF0uZW5hYmxlU2Nyb2xsID09PSBmYWxzZSAmJiB0aGlzLm9ubW92ZXRpcCA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5fdGFwKGUsdHJ1ZSlcclxuICAgICAgfVxyXG4gICAgICBpZih0aGlzLm9udG91Y2ggPT09IHRydWUgJiYgY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiB0aGlzLm9uem9vbSA9PT0gdHJ1ZSAmJiBlLmNoYW5nZWRUb3VjaGVzLmxlbmd0aCA9PSAyKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5kb2J1bGVab29tKGUpO1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMuZW1pdE1zZyh7bmFtZTogJ2dldFRvdWNoTW92ZScsIHBhcmFtczoge3R5cGU6XCJ0b3VjaE1vdmVcIiwgZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSwgaWQ6IGNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KTtcclxuICAgIH0sXHJcbiAgICBfdG91Y2hFbmQoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5jaWRcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBlLnRvdWNoZXMubGVuZ3RoID09IDApe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbEVuZChlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGlzLmVtaXRNc2coe25hbWU6J2dldFRvdWNoRW5kJywgcGFyYW1zOnt0eXBlOlwidG91Y2hFbmRcIiwgZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSwgaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pO1xyXG4gICAgICBpZih0aGlzLm9udGFwID09PSB0cnVlICYmIGNmdS5vcHRpb25bY2lkXS5lbmFibGVTY3JvbGwgPT09IGZhbHNlICYmIHRoaXMub25tb3ZldGlwID09PSB0cnVlKXtcclxuICAgICAgICB0aGlzLl90YXAoZSx0cnVlKVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy8gI2VuZGlmXHJcbiAgICBfZXJyb3IoZSkge1xyXG4gICAgICB0aGlzLm1peGluRGF0YWNvbUVycm9yTWVzc2FnZSA9IGUuZGV0YWlsLmVyck1zZztcclxuICAgIH0sXHJcbiAgICBlbWl0TXNnKG1zZykge1xyXG4gICAgICB0aGlzLiRlbWl0KG1zZy5uYW1lLCBtc2cucGFyYW1zKTtcclxuICAgIH0sXHJcbiAgICBnZXRSZW5kZXJUeXBlKCkge1xyXG4gICAgICAvL+mYsuatouWmguaenOW8gOWQr2VjaGFydHPkuJTniLblhYPntKDkuLp2LWlm55qE5oOF5Ya1cmVuZGVyanPnm5HlkKzkuI3liLBwcm9w5Y+Y5YyW55qE6Zeu6aKYXHJcbiAgICAgIGlmKHRoaXMuZWNoYXJ0cz09PXRydWUgJiYgdGhpcy5taXhpbkRhdGFjb21Mb2FkaW5nPT09ZmFsc2Upe1xyXG4gICAgICAgIHRoaXMuYmVmb3JlSW5pdCgpXHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB0b0pTT04oKXtcclxuICAgICAgcmV0dXJuIHRoaXNcclxuICAgIH1cclxuICB9XHJcbn07XHJcbjwvc2NyaXB0PlxyXG5cclxuPCEtLSAjaWZkZWYgQVBQLVZVRSB8fCBINSAtLT5cclxuPHNjcmlwdCBtb2R1bGU9XCJyZGNoYXJ0c1wiIGxhbmc9XCJyZW5kZXJqc1wiPlxyXG5pbXBvcnQgdUNoYXJ0c1JEIGZyb20gJy4uLy4uL2pzX3Nkay91LWNoYXJ0cy91LWNoYXJ0cy5qcyc7XHJcbmltcG9ydCBjZnUgZnJvbSAnLi4vLi4vanNfc2RrL3UtY2hhcnRzL2NvbmZpZy11Y2hhcnRzLmpzJztcclxuaW1wb3J0IGNmZSBmcm9tICcuLi8uLi9qc19zZGsvdS1jaGFydHMvY29uZmlnLWVjaGFydHMuanMnO1xyXG5cclxudmFyIHRoYXQgPSB7fTtcclxudmFyIHJvb3Rkb20gPSBudWxsO1xyXG5cclxuZnVuY3Rpb24gcmRkZWVwQ2xvbmVBc3NpZ24ob3JpZ2luID0ge30sIC4uLmFyZ3MpIHtcclxuICBmb3IgKGxldCBpIGluIGFyZ3MpIHtcclxuICAgIGZvciAobGV0IGtleSBpbiBhcmdzW2ldKSB7XHJcbiAgICAgIGlmIChhcmdzW2ldLmhhc093blByb3BlcnR5KGtleSkpIHtcclxuICAgICAgICBvcmlnaW5ba2V5XSA9IGFyZ3NbaV1ba2V5XSAmJiB0eXBlb2YgYXJnc1tpXVtrZXldID09PSAnb2JqZWN0JyA/IHJkZGVlcENsb25lQXNzaWduKEFycmF5LmlzQXJyYXkoYXJnc1tpXVtrZXldKSA/IFtdIDoge30sIG9yaWdpbltrZXldLCBhcmdzW2ldW2tleV0pIDogYXJnc1tpXVtrZXldO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBvcmlnaW47XHJcbn1cclxuXHJcbmZ1bmN0aW9uIHJkZm9ybWF0dGVyQXNzaWduKGFyZ3MsZm9ybWF0dGVyKSB7XHJcbiAgZm9yIChsZXQga2V5IGluIGFyZ3MpIHtcclxuICAgIGlmKGFyZ3MuaGFzT3duUHJvcGVydHkoa2V5KSAmJiBhcmdzW2tleV0gIT09IG51bGwgJiYgdHlwZW9mIGFyZ3Nba2V5XSA9PT0gJ29iamVjdCcpe1xyXG4gICAgICByZGZvcm1hdHRlckFzc2lnbihhcmdzW2tleV0sZm9ybWF0dGVyKVxyXG4gICAgfWVsc2UgaWYoa2V5ID09PSAnZm9ybWF0JyAmJiB0eXBlb2YgYXJnc1trZXldID09PSAnc3RyaW5nJyl7XHJcbiAgICAgIGFyZ3NbJ2Zvcm1hdHRlciddID0gZm9ybWF0dGVyW2FyZ3Nba2V5XV0gPyBmb3JtYXR0ZXJbYXJnc1trZXldXSA6IHVuZGVmaW5lZDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGFyZ3M7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgcmlkOm51bGxcclxuICAgIH1cclxuICB9LFxyXG4gIG1vdW50ZWQoKSB7XHJcbiAgICByb290ZG9tID0ge3RvcDowLGxlZnQ6MH1cclxuICAgIC8vICNpZmRlZiBINVxyXG4gICAgbGV0IGRtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndW5pLW1haW4nKVswXVxyXG4gICAgaWYoZG0gPT09IHVuZGVmaW5lZCl7XHJcbiAgICAgIGRtID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgndW5pLXBhZ2Utd3JhcHBlcicpWzBdXHJcbiAgICB9XHJcbiAgICByb290ZG9tID0ge3RvcDpkbS5vZmZzZXRUb3AsbGVmdDpkbS5vZmZzZXRMZWZ0fVxyXG4gICAgLy8gI2VuZGlmXHJcbiAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgIGlmKHRoaXMucmlkID09PSBudWxsKXtcclxuICAgICAgICB0aGlzLiRvd25lckluc3RhbmNlICYmIHRoaXMuJG93bmVySW5zdGFuY2UuY2FsbE1ldGhvZCgnZ2V0UmVuZGVyVHlwZScpXHJcbiAgICAgIH1cclxuICAgIH0sMjAwKVxyXG4gIH0sXHJcbiAgZGVzdHJveWVkKCl7XHJcbiAgICBkZWxldGUgY2Z1Lm9wdGlvblt0aGlzLnJpZF1cclxuICAgIGRlbGV0ZSBjZnUuaW5zdGFuY2VbdGhpcy5yaWRdXHJcbiAgICBkZWxldGUgY2ZlLm9wdGlvblt0aGlzLnJpZF1cclxuICAgIGRlbGV0ZSBjZmUuaW5zdGFuY2VbdGhpcy5yaWRdXHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICAvLz09PT09PT09PT09PT095Lul5LiL5pivRUNoYXJ0c+eahOaWueazlT09PT09PT09PT09PT09PT09PT09XHJcbiAgICBlY2luaXQobmV3VmFsLCBvbGRWYWwsIG93bmVyLCBpbnN0YW5jZSl7XHJcbiAgICAgIGxldCBjaWQgPSBKU09OLnN0cmluZ2lmeShuZXdWYWwuaWQpXHJcbiAgICAgIHRoaXMucmlkID0gY2lkXHJcbiAgICAgIHRoYXRbY2lkXSA9IHRoaXMuJG93bmVySW5zdGFuY2UgfHwgaW5zdGFuY2VcclxuICAgICAgbGV0IGVvcHRzID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShuZXdWYWwpKVxyXG4gICAgICBsZXQgdHlwZSA9IGVvcHRzLnR5cGU7XHJcbiAgICAgIC8v6L295YWl5bm26KaG55uW6buY6K6k6YWN572uXHJcbiAgICAgIGlmICh0eXBlICYmIGNmZS50eXBlLmluY2x1ZGVzKHR5cGUpKSB7XHJcbiAgICAgICAgY2ZlLm9wdGlvbltjaWRdID0gcmRkZWVwQ2xvbmVBc3NpZ24oe30sIGNmZVt0eXBlXSwgZW9wdHMpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBjZmUub3B0aW9uW2NpZF0gPSByZGRlZXBDbG9uZUFzc2lnbih7fSwgZW9wdHMpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBuZXdEYXRhID0gZW9wdHMuY2hhcnREYXRhO1xyXG4gICAgICBpZihuZXdEYXRhKXtcclxuICAgICAgICAvL+aMgui9vWNhdGVnb3JpZXPlkoxzZXJpZXNcclxuICAgICAgICBpZihjZmUub3B0aW9uW2NpZF0ueEF4aXMgJiYgY2ZlLm9wdGlvbltjaWRdLnhBeGlzLnR5cGUgJiYgY2ZlLm9wdGlvbltjaWRdLnhBeGlzLnR5cGUgPT09ICdjYXRlZ29yeScpe1xyXG4gICAgICAgICAgY2ZlLm9wdGlvbltjaWRdLnhBeGlzLmRhdGEgPSBuZXdEYXRhLmNhdGVnb3JpZXNcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYoY2ZlLm9wdGlvbltjaWRdLnlBeGlzICYmIGNmZS5vcHRpb25bY2lkXS55QXhpcy50eXBlICYmIGNmZS5vcHRpb25bY2lkXS55QXhpcy50eXBlID09PSAnY2F0ZWdvcnknKXtcclxuICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS55QXhpcy5kYXRhID0gbmV3RGF0YS5jYXRlZ29yaWVzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNmZS5vcHRpb25bY2lkXS5zZXJpZXMgPSBbXVxyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3RGF0YS5zZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGNmZS5vcHRpb25bY2lkXS5zZXJpZXNUZW1wbGF0ZSA9IGNmZS5vcHRpb25bY2lkXS5zZXJpZXNUZW1wbGF0ZSA/IGNmZS5vcHRpb25bY2lkXS5zZXJpZXNUZW1wbGF0ZSA6IHt9XHJcbiAgICAgICAgICBsZXQgVGVtcGxhdGUgPSByZGRlZXBDbG9uZUFzc2lnbih7fSxjZmUub3B0aW9uW2NpZF0uc2VyaWVzVGVtcGxhdGUsbmV3RGF0YS5zZXJpZXNbaV0pXHJcbiAgICAgICAgICBjZmUub3B0aW9uW2NpZF0uc2VyaWVzLnB1c2goVGVtcGxhdGUpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIFxyXG4gICAgICBpZiAodHlwZW9mIHdpbmRvdy5lY2hhcnRzID09PSAnb2JqZWN0Jykge1xyXG4gICAgICAgICAgdGhpcy5uZXdFQ2hhcnQoKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBjb25zdCBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKVxyXG4gICAgICAgIC8vICNpZmRlZiBBUFAtVlVFXHJcbiAgICAgICAgc2NyaXB0LnNyYyA9ICcuL3VuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvc3RhdGljL2FwcC1wbHVzL2VjaGFydHMubWluLmpzJ1xyXG4gICAgICAgIC8vICNlbmRpZlxyXG4gICAgICAgIC8vICNpZmRlZiBINVxyXG4gICAgICAgIGNvbnN0IHJvb3R1cmwgPSB3aW5kb3cubG9jYXRpb24ub3JpZ2luXHJcbiAgICAgICAgY29uc3QgZGlyZWN0b3J5ID0gaW5zdGFuY2UuZ2V0RGF0YXNldCgpLmRpcmVjdG9yeVxyXG4gICAgICAgIHNjcmlwdC5zcmMgPSByb290dXJsICsgZGlyZWN0b3J5ICsgJ3VuaV9tb2R1bGVzL3FpdW4tZGF0YS1jaGFydHMvc3RhdGljL2g1L2VjaGFydHMubWluLmpzJ1xyXG4gICAgICAgIC8vICNlbmRpZlxyXG4gICAgICAgIHNjcmlwdC5vbmxvYWQgPSB0aGlzLm5ld0VDaGFydFxyXG4gICAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc2NyaXB0KVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZWNyZXNpemUobmV3VmFsLCBvbGRWYWwsIG93bmVyLCBpbnN0YW5jZSl7XHJcbiAgICAgIGlmKGNmZS5pbnN0YW5jZVt0aGlzLnJpZF0pe1xyXG4gICAgICAgIGNmZS5pbnN0YW5jZVt0aGlzLnJpZF0ucmVzaXplKClcclxuICAgICAgfVxyXG4gICAgfSxcclxuICAgIG5ld0VDaGFydCgpe1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgaWYoY2ZlLmluc3RhbmNlW2NpZF0gPT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgY2ZlLmluc3RhbmNlW2NpZF0gPSBlY2hhcnRzLmluaXQodGhhdFtjaWRdLiRlbC5jaGlsZHJlblswXSlcclxuICAgICAgICAvL29udGFw5byA5ZCv5ZCO5omN6Kem5Y+RY2xpY2vkuovku7ZcclxuICAgICAgICBpZihjZmUub3B0aW9uW2NpZF0ub250YXAgPT09IHRydWUpe1xyXG4gICAgICAgICAgY2ZlLmluc3RhbmNlW2NpZF0ub24oJ2NsaWNrJywgcmVzZGF0YSA9PiB7XHJcbiAgICAgICAgICAgIGxldCBldmVudCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoe1xyXG4gICAgICAgICAgICAgIHg6cmVzZGF0YS5ldmVudC5vZmZzZXRYLHk6cmVzZGF0YS5ldmVudC5vZmZzZXRZXHJcbiAgICAgICAgICAgIH0pKVxyXG4gICAgICAgICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRJbmRleFwiLCBwYXJhbXM6e3R5cGU6XCJnZXRJbmRleFwiLCBldmVudDpldmVudCwgY3VycmVudEluZGV4OnJlc2RhdGEuZGF0YUluZGV4LCB2YWx1ZTpyZXNkYXRhLmRhdGEsIHNlcmllc05hbWU6IHJlc2RhdGEuc2VyaWVzTmFtZSxpZDpjaWR9fSlcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgICAvLyDlop7liqBFQ2hhcnRz55qEaGlnaGxpZ2h05raI5oGv77yM5a6e546w5oyJ5LiL56e75Yqo6L+U5Zue57Si5byV5Yqf6IO944CCYWRkIGJ5IG9uZWZpc2gg5Yib5bu65LqOIDIwMjEtMTItMTEgMDk6NTBcclxuICAgICAgICAgIGNmZS5pbnN0YW5jZVtjaWRdLm9uKCdoaWdobGlnaHQnLCByZXNkYXRhID0+IHtcclxuICAgICAgICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwiZ2V0SGlnaGxpZ2h0XCIsIHBhcmFtczp7dHlwZTpcImhpZ2hsaWdodFwiLCByZXM6cmVzZGF0YSwgaWQ6Y2lkfX0pXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLnVwZGF0YUVDaGFydChjaWQsY2ZlLm9wdGlvbltjaWRdKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICB0aGlzLnVwZGF0YUVDaGFydChjaWQsY2ZlLm9wdGlvbltjaWRdKVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgdXBkYXRhRUNoYXJ0KGNpZCxvcHRpb24pe1xyXG4gICAgICAvL+abv+aNom9wdGlvbuWGhWZvcm1hdOWxnuaAp+S4umZvcm1hdHRlcueahOmihOWumuS5ieaWueazlVxyXG4gICAgICBvcHRpb24gPSByZGZvcm1hdHRlckFzc2lnbihvcHRpb24sY2ZlLmZvcm1hdHRlcilcclxuICAgICAgaWYob3B0aW9uLnRvb2x0aXApe1xyXG4gICAgICAgIG9wdGlvbi50b29sdGlwLnNob3cgPSBvcHRpb24udG9vbHRpcFNob3c/dHJ1ZTpmYWxzZTtcclxuICAgICAgICBvcHRpb24udG9vbHRpcC5wb3NpdGlvbiA9IHRoaXMudG9vbHRpcFBvc2l0aW9uKClcclxuICAgICAgICAvL3Rvb2x0aXBGb3JtYXTmlrnms5XvvIzmm7/mjaLnu4Tku7bnmoR0b29sdGlwRm9ybWF05Li6Y29uZmlnLWVjaGFydHMuanPlhoXlr7nlupTnmoTmlrnms5VcclxuICAgICAgICBpZiAodHlwZW9mIG9wdGlvbi50b29sdGlwRm9ybWF0ID09PSAnc3RyaW5nJyAmJiBjZmUuZm9ybWF0dGVyW29wdGlvbi50b29sdGlwRm9ybWF0XSkge1xyXG4gICAgICAgICAgb3B0aW9uLnRvb2x0aXAuZm9ybWF0dGVyID0gb3B0aW9uLnRvb2x0aXAuZm9ybWF0dGVyID8gb3B0aW9uLnRvb2x0aXAuZm9ybWF0dGVyIDogY2ZlLmZvcm1hdHRlcltvcHRpb24udG9vbHRpcEZvcm1hdF1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgLy8g6aKc6Imy5riQ5Y+Y5re75Yqg55qE5pa55rOVXHJcbiAgICAgIGlmIChvcHRpb24uc2VyaWVzKSB7XHJcbiAgICAgIFx0Zm9yIChsZXQgaSBpbiBvcHRpb24uc2VyaWVzKSB7XHJcbiAgICAgIFx0XHRsZXQgbGluZWFyR3JhZGllbnQgPSBvcHRpb24uc2VyaWVzW2ldLmxpbmVhckdyYWRpZW50XHJcbiAgICAgIFx0XHRpZiAobGluZWFyR3JhZGllbnQpIHtcclxuICAgICAgXHRcdFx0b3B0aW9uLnNlcmllc1tpXS5jb2xvciA9IG5ldyBlY2hhcnRzLmdyYXBoaWMuTGluZWFyR3JhZGllbnQobGluZWFyR3JhZGllbnRbMF0sbGluZWFyR3JhZGllbnRbMV0sbGluZWFyR3JhZGllbnRbMl0sbGluZWFyR3JhZGllbnRbM10sbGluZWFyR3JhZGllbnRbNF0pXHJcbiAgICAgIFx0XHR9XHJcbiAgICAgIFx0fVxyXG4gICAgICB9XHJcbiAgICAgIGNmZS5pbnN0YW5jZVtjaWRdLnNldE9wdGlvbihvcHRpb24sIG9wdGlvbi5ub3RNZXJnZSlcclxuICAgICAgY2ZlLmluc3RhbmNlW2NpZF0ub24oJ2ZpbmlzaGVkJywgZnVuY3Rpb24oKXtcclxuICAgICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJjb21wbGV0ZVwiLHBhcmFtczp7dHlwZTpcImNvbXBsZXRlXCIsY29tcGxldGU6dHJ1ZSxpZDpjaWR9fSlcclxuICAgICAgICBpZihjZmUuaW5zdGFuY2VbY2lkXSl7XHJcbiAgICAgICAgICBjZmUuaW5zdGFuY2VbY2lkXS5vZmYoJ2ZpbmlzaGVkJylcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG5cclxuICAgICAgLy/kv67lpI1pbml05Yid5aeL5YyW5a6e5L6L6I635Y+W5a696auY5LiN5q2j56Gu6Zeu6aKYXHJcbiAgICAgIGlmKFxyXG4gICAgICAgIHR5cGVvZiB0aGF0W2NpZF0uJGVsLmNoaWxkcmVuWzBdLmNsaWVudFdpZHRoICE9ICd1bmRlZmluZWQnICYmXHJcbiAgICAgICAgICAoXHJcbiAgICAgICAgICAgIE1hdGguYWJzKCB0aGF0W2NpZF0uJGVsLmNoaWxkcmVuWzBdLmNsaWVudFdpZHRoIC0gY2ZlLmluc3RhbmNlW2NpZF0uZ2V0V2lkdGgoKSApPjMgfHxcclxuICAgICAgICAgICAgTWF0aC5hYnMoIHRoYXRbY2lkXS4kZWwuY2hpbGRyZW5bMF0uY2xpZW50SGVpZ2h0IC0gY2ZlLmluc3RhbmNlW2NpZF0uZ2V0SGVpZ2h0KCkgKT4zXHJcbiAgICAgICAgICApXHJcbiAgICAgICl7dGhpcy5lY3Jlc2l6ZSgpO31cclxuICAgIH0sXHJcbiAgICB0b29sdGlwUG9zaXRpb24oKXtcclxuICAgICAgcmV0dXJuIChwb2ludCwgcGFyYW1zLCBkb20sIHJlY3QsIHNpemUpID0+IHtcclxuICAgICAgXHRsZXQgeCA9IHBvaW50WzBdXHJcbiAgICAgIFx0bGV0IHkgPSBwb2ludFsxXVxyXG4gICAgICBcdGxldCB2aWV3V2lkdGggPSBzaXplLnZpZXdTaXplWzBdXHJcbiAgICAgIFx0bGV0IHZpZXdIZWlnaHQgPSBzaXplLnZpZXdTaXplWzFdXHJcbiAgICAgIFx0bGV0IGJveFdpZHRoID0gc2l6ZS5jb250ZW50U2l6ZVswXVxyXG4gICAgICBcdGxldCBib3hIZWlnaHQgPSBzaXplLmNvbnRlbnRTaXplWzFdXHJcbiAgICAgIFx0bGV0IHBvc1ggPSB4ICsgMzAgXHJcbiAgICAgIFx0bGV0IHBvc1kgPSB5ICsgMzAgXHJcbiAgICAgIFx0aWYgKHBvc1ggKyBib3hXaWR0aCA+IHZpZXdXaWR0aCkgeyBcclxuICAgICAgXHRcdHBvc1ggPSB4IC0gYm94V2lkdGggLSAzMFxyXG4gICAgICBcdH1cclxuICAgICAgXHRpZiAocG9zWSArIGJveEhlaWdodCA+IHZpZXdIZWlnaHQpIHtcclxuICAgICAgXHRcdHBvc1kgPSB5IC0gYm94SGVpZ2h0IC0gMzBcclxuICAgICAgXHR9XHJcbiAgICAgIFx0cmV0dXJuIFtwb3NYLCBwb3NZXVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgLy89PT09PT09PT09PT09PeS7peS4i+aYr3VDaGFydHPnmoTmlrnms5U9PT09PT09PT09PT09PT09PT09PVxyXG4gICAgdWNpbml0KG5ld1ZhbCwgb2xkVmFsLCBvd25lciwgaW5zdGFuY2Upe1xyXG4gICAgICBpZihKU09OLnN0cmluZ2lmeShuZXdWYWwpID09IEpTT04uc3RyaW5naWZ5KG9sZFZhbCkpe1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBpZighbmV3VmFsLmNhbnZhc0lkKXtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgbGV0IGNpZCA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkobmV3VmFsLmNhbnZhc0lkKSlcclxuICAgICAgdGhpcy5yaWQgPSBjaWRcclxuICAgICAgdGhhdFtjaWRdID0gdGhpcy4kb3duZXJJbnN0YW5jZSB8fCBpbnN0YW5jZVxyXG4gICAgICBjZnUub3B0aW9uW2NpZF0gPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkpXHJcbiAgICAgIGNmdS5vcHRpb25bY2lkXSA9IHJkZm9ybWF0dGVyQXNzaWduKGNmdS5vcHRpb25bY2lkXSxjZnUuZm9ybWF0dGVyKVxyXG4gICAgICBsZXQgY2FudmFzZG9tID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2lkKVxyXG4gICAgICBpZihjYW52YXNkb20gJiYgY2FudmFzZG9tLmNoaWxkcmVuWzBdKXtcclxuICAgICAgICBjZnUub3B0aW9uW2NpZF0uY29udGV4dCA9IGNhbnZhc2RvbS5jaGlsZHJlblswXS5nZXRDb250ZXh0KFwiMmRcIilcclxuICAgICAgICBpZihjZnUuaW5zdGFuY2VbY2lkXSAmJiBjZnUub3B0aW9uW2NpZF0gJiYgY2Z1Lm9wdGlvbltjaWRdLnVwZGF0ZSA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgICB0aGlzLnVwZGF0YVVDaGFydCgpXHJcbiAgICAgICAgfWVsc2V7XHJcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpPT57XHJcbiAgICAgICAgICAgIGNmdS5vcHRpb25bY2lkXS5jb250ZXh0LnJlc3RvcmUoKTtcclxuICAgICAgICAgICAgY2Z1Lm9wdGlvbltjaWRdLmNvbnRleHQuc2F2ZSgpO1xyXG4gICAgICAgICAgICB0aGlzLm5ld1VDaGFydCgpXHJcbiAgICAgICAgICB9LDEwMClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBuZXdVQ2hhcnQoKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLnJpZFxyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXSA9IG5ldyB1Q2hhcnRzUkQoY2Z1Lm9wdGlvbltjaWRdKVxyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXS5hZGRFdmVudExpc3RlbmVyKCdyZW5kZXJDb21wbGV0ZScsICgpID0+IHtcclxuICAgICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJjb21wbGV0ZVwiLHBhcmFtczp7dHlwZTpcImNvbXBsZXRlXCIsY29tcGxldGU6dHJ1ZSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5kZWxFdmVudExpc3RlbmVyKCdyZW5kZXJDb21wbGV0ZScpXHJcbiAgICAgIH0pO1xyXG4gICAgICBjZnUuaW5zdGFuY2VbY2lkXS5hZGRFdmVudExpc3RlbmVyKCdzY3JvbGxMZWZ0JywgKCkgPT4ge1xyXG4gICAgICAgIHRoYXRbY2lkXS5jYWxsTWV0aG9kKCdlbWl0TXNnJyx7bmFtZTpcInNjcm9sbExlZnRcIixwYXJhbXM6e3R5cGU6XCJzY3JvbGxMZWZ0XCIsc2Nyb2xsTGVmdDp0cnVlLGlkOmNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KVxyXG4gICAgICB9KTtcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uYWRkRXZlbnRMaXN0ZW5lcignc2Nyb2xsUmlnaHQnLCAoKSA9PiB7XHJcbiAgICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwic2Nyb2xsUmlnaHRcIixwYXJhbXM6e3R5cGU6XCJzY3JvbGxSaWdodFwiLHNjcm9sbFJpZ2h0OnRydWUsaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pXHJcbiAgICAgIH0pO1xyXG4gICAgfSxcclxuICAgIHVwZGF0YVVDaGFydCgpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMucmlkXHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnVwZGF0ZURhdGEoY2Z1Lm9wdGlvbltjaWRdKVxyXG4gICAgfSxcclxuICAgIHRvb2x0aXBEZWZhdWx0KGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cykge1xyXG4gICAgICBpZiAoY2F0ZWdvcnkpIHtcclxuICAgICAgICBsZXQgZGF0YSA9IGl0ZW0uZGF0YVxyXG4gICAgICAgIGlmKHR5cGVvZiBpdGVtLmRhdGEgPT09IFwib2JqZWN0XCIpe1xyXG4gICAgICAgICAgZGF0YSA9IGl0ZW0uZGF0YS52YWx1ZVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gY2F0ZWdvcnkgKyAnICcgKyBpdGVtLm5hbWUgKyAnOicgKyBkYXRhO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpdGVtLnByb3BlcnRpZXMgJiYgaXRlbS5wcm9wZXJ0aWVzLm5hbWUpIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLnByb3BlcnRpZXMubmFtZSA7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBpdGVtLm5hbWUgKyAnOicgKyBpdGVtLmRhdGE7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgc2hvd1Rvb2x0aXAoZSxjaWQpIHtcclxuICAgICAgbGV0IHRjID0gY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBDdXN0b21cclxuICAgICAgaWYgKHRjICYmIHRjICE9PSB1bmRlZmluZWQgJiYgdGMgIT09IG51bGwpIHtcclxuICAgICAgICBsZXQgb2Zmc2V0ID0gdW5kZWZpbmVkO1xyXG4gICAgICAgIGlmICh0Yy54ID49IDAgJiYgdGMueSA+PSAwKSB7XHJcbiAgICAgICAgICBvZmZzZXQgPSB7IHg6IHRjLngsIHk6IHRjLnkgKyAxMCB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zaG93VG9vbFRpcChlLCB7XHJcbiAgICAgICAgICBpbmRleDogdGMuaW5kZXgsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9mZnNldCxcclxuICAgICAgICAgIHRleHRMaXN0OiB0Yy50ZXh0TGlzdCxcclxuICAgICAgICAgIGZvcm1hdHRlcjogKGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cykgPT4ge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIGNmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0ID09PSAnc3RyaW5nJyAmJiBjZnUuZm9ybWF0dGVyW2NmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0XSkge1xyXG4gICAgICAgICAgICAgIHJldHVybiBjZnUuZm9ybWF0dGVyW2NmdS5vcHRpb25bY2lkXS50b29sdGlwRm9ybWF0XShpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHJldHVybiB0aGlzLnRvb2x0aXBEZWZhdWx0KGl0ZW0sIGNhdGVnb3J5LCBpbmRleCwgb3B0cyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zaG93VG9vbFRpcChlLCB7XHJcbiAgICAgICAgICBmb3JtYXR0ZXI6IChpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpID0+IHtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdCA9PT0gJ3N0cmluZycgJiYgY2Z1LmZvcm1hdHRlcltjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdF0pIHtcclxuICAgICAgICAgICAgICByZXR1cm4gY2Z1LmZvcm1hdHRlcltjZnUub3B0aW9uW2NpZF0udG9vbHRpcEZvcm1hdF0oaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4gdGhpcy50b29sdGlwRGVmYXVsdChpdGVtLCBjYXRlZ29yeSwgaW5kZXgsIG9wdHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICB0YXAoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgbGV0IG9udGFwID0gY2Z1Lm9wdGlvbltjaWRdLm9udGFwXHJcbiAgICAgIGxldCB0b29sdGlwU2hvdyA9IGNmdS5vcHRpb25bY2lkXS50b29sdGlwU2hvd1xyXG4gICAgICBsZXQgdGFwTGVnZW5kID0gY2Z1Lm9wdGlvbltjaWRdLnRhcExlZ2VuZFxyXG4gICAgICBpZihvbnRhcCA9PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICBsZXQgY3VycmVudEluZGV4PW51bGxcclxuICAgICAgbGV0IGxlZ2VuZEluZGV4PW51bGxcclxuICAgICAgbGV0IHJjaGFydGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdVQycrY2lkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICBsZXQgdG1wZSA9IHt9XHJcbiAgICAgIGlmKGUuZGV0YWlsLngpey8vdGFw5oiW6ICFY2xpY2vnmoTkuovku7ZcclxuICAgICAgICB0bXBlID0geyB4OiBlLmRldGFpbC54IC0gcmNoYXJ0ZG9tLmxlZnQsIHk6ZS5kZXRhaWwueSAtIHJjaGFydGRvbS50b3AgKyByb290ZG9tLnRvcH1cclxuICAgICAgfWVsc2V7Ly9tb3VzZeeahOS6i+S7tlxyXG4gICAgICAgIHRtcGUgPSB7IHg6IGUuY2xpZW50WCAtIHJjaGFydGRvbS5sZWZ0LCB5OmUuY2xpZW50WSAtIHJjaGFydGRvbS50b3AgKyByb290ZG9tLnRvcH1cclxuICAgICAgfVxyXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzID0gW107XHJcbiAgICAgIGUuY2hhbmdlZFRvdWNoZXMudW5zaGlmdCh0bXBlKVxyXG4gICAgICBjdXJyZW50SW5kZXg9Y2Z1Lmluc3RhbmNlW2NpZF0uZ2V0Q3VycmVudERhdGFJbmRleChlKVxyXG4gICAgICBsZWdlbmRJbmRleD1jZnUuaW5zdGFuY2VbY2lkXS5nZXRMZWdlbmREYXRhSW5kZXgoZSlcclxuICAgICAgaWYodGFwTGVnZW5kID09PSB0cnVlKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS50b3VjaExlZ2VuZChlKTtcclxuICAgICAgfVxyXG4gICAgICBpZih0b29sdGlwU2hvdz09dHJ1ZSl7XHJcbiAgICAgICAgdGhpcy5zaG93VG9vbHRpcChlLGNpZClcclxuICAgICAgfVxyXG4gICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRJbmRleFwiLHBhcmFtczp7dHlwZTpcImdldEluZGV4XCIsZXZlbnQ6dG1wZSxjdXJyZW50SW5kZXg6Y3VycmVudEluZGV4LGxlZ2VuZEluZGV4OmxlZ2VuZEluZGV4LGlkOmNpZCwgb3B0czogY2Z1Lmluc3RhbmNlW2NpZF0ub3B0c319KVxyXG4gICAgfSxcclxuICAgIHRvdWNoU3RhcnQoZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgbGV0IG9udG91Y2ggPSBjZnUub3B0aW9uW2NpZF0ub250b3VjaFxyXG4gICAgICBpZihvbnRvdWNoID09IGZhbHNlKSByZXR1cm47XHJcbiAgICAgIGlmKGNmdS5vcHRpb25bY2lkXS5lbmFibGVTY3JvbGwgPT09IHRydWUgJiYgZS50b3VjaGVzLmxlbmd0aCA9PSAxKXtcclxuICAgICAgICBjZnUuaW5zdGFuY2VbY2lkXS5zY3JvbGxTdGFydChlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRUb3VjaFN0YXJ0XCIscGFyYW1zOnt0eXBlOlwidG91Y2hTdGFydFwiLGV2ZW50OmUuY2hhbmdlZFRvdWNoZXNbMF0saWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pXHJcbiAgICB9LFxyXG4gICAgdG91Y2hNb3ZlKGUpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMucmlkXHJcbiAgICAgIGxldCBvbnRvdWNoID0gY2Z1Lm9wdGlvbltjaWRdLm9udG91Y2hcclxuICAgICAgaWYob250b3VjaCA9PSBmYWxzZSkgcmV0dXJuO1xyXG4gICAgICBpZihjZnUub3B0aW9uW2NpZF0uZW5hYmxlU2Nyb2xsID09PSB0cnVlICYmIGUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID09IDEpe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbChlKTtcclxuICAgICAgfVxyXG4gICAgICBpZihjZnUub3B0aW9uW2NpZF0ub250YXAgPT09IHRydWUgJiYgY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gZmFsc2UgJiYgY2Z1Lm9wdGlvbltjaWRdLm9ubW92ZXRpcCA9PT0gdHJ1ZSl7XHJcbiAgICAgICAgbGV0IHJjaGFydGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdVQycrY2lkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICAgIGxldCB0bXBlID0geyB4OiBlLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFggLSByY2hhcnRkb20ubGVmdCwgeTplLmNoYW5nZWRUb3VjaGVzWzBdLmNsaWVudFkgLSByY2hhcnRkb20udG9wICsgcm9vdGRvbS50b3B9XHJcbiAgICAgICAgZS5jaGFuZ2VkVG91Y2hlcy51bnNoaWZ0KHRtcGUpXHJcbiAgICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBTaG93ID09PSB0cnVlKXtcclxuICAgICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoZSxjaWQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGlmKG9udG91Y2ggPT09IHRydWUgJiYgY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBjZnUub3B0aW9uW2NpZF0ub256b29tID09PSB0cnVlICYmIGUuY2hhbmdlZFRvdWNoZXMubGVuZ3RoID09IDIpe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLmRvYnVsZVpvb20oZSk7XHJcbiAgICAgIH1cclxuICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwiZ2V0VG91Y2hNb3ZlXCIscGFyYW1zOnt0eXBlOlwidG91Y2hNb3ZlXCIsZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgIH0sXHJcbiAgICB0b3VjaEVuZChlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLnJpZFxyXG4gICAgICBsZXQgb250b3VjaCA9IGNmdS5vcHRpb25bY2lkXS5vbnRvdWNoXHJcbiAgICAgIGlmKG9udG91Y2ggPT0gZmFsc2UpIHJldHVybjtcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSAmJiBlLnRvdWNoZXMubGVuZ3RoID09IDApe1xyXG4gICAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbEVuZChlKTtcclxuICAgICAgfVxyXG4gICAgICB0aGF0W2NpZF0uY2FsbE1ldGhvZCgnZW1pdE1zZycse25hbWU6XCJnZXRUb3VjaEVuZFwiLHBhcmFtczp7dHlwZTpcInRvdWNoRW5kXCIsZXZlbnQ6ZS5jaGFuZ2VkVG91Y2hlc1swXSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgIH0sXHJcbiAgICBtb3VzZURvd24oZSkge1xyXG4gICAgICBsZXQgY2lkID0gdGhpcy5yaWRcclxuICAgICAgbGV0IG9ubW91c2UgPSBjZnUub3B0aW9uW2NpZF0ub25tb3VzZVxyXG4gICAgICBpZihvbm1vdXNlID09IGZhbHNlKSByZXR1cm47XHJcbiAgICAgIGxldCByY2hhcnRkb20gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnVUMnK2NpZCkuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KClcclxuICAgICAgbGV0IHRtcGUgPSB7fVxyXG4gICAgICB0bXBlID0geyB4OiBlLmNsaWVudFggLSByY2hhcnRkb20ubGVmdCwgeTplLmNsaWVudFkgLSByY2hhcnRkb20udG9wICsgcm9vdGRvbS50b3B9XHJcbiAgICAgIGUuY2hhbmdlZFRvdWNoZXMgPSBbXTtcclxuICAgICAgZS5jaGFuZ2VkVG91Y2hlcy51bnNoaWZ0KHRtcGUpXHJcbiAgICAgIGNmdS5pbnN0YW5jZVtjaWRdLnNjcm9sbFN0YXJ0KGUpXHJcbiAgICAgIGNmdS5vcHRpb25bY2lkXS5tb3VzZWRvd249dHJ1ZTtcclxuICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwiZ2V0VG91Y2hTdGFydFwiLHBhcmFtczp7dHlwZTpcIm1vdXNlRG93blwiLGV2ZW50OnRtcGUsaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pXHJcbiAgICB9LFxyXG4gICAgbW91c2VNb3ZlKGUpIHtcclxuICAgICAgbGV0IGNpZCA9IHRoaXMucmlkXHJcbiAgICAgIGxldCBvbm1vdXNlID0gY2Z1Lm9wdGlvbltjaWRdLm9ubW91c2VcclxuICAgICAgbGV0IHRvb2x0aXBTaG93ID0gY2Z1Lm9wdGlvbltjaWRdLnRvb2x0aXBTaG93XHJcbiAgICAgIGlmKG9ubW91c2UgPT0gZmFsc2UpIHJldHVybjtcclxuICAgICAgbGV0IHJjaGFydGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdVQycrY2lkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICBsZXQgdG1wZSA9IHt9XHJcbiAgICAgIHRtcGUgPSB7IHg6IGUuY2xpZW50WCAtIHJjaGFydGRvbS5sZWZ0LCB5OmUuY2xpZW50WSAtIHJjaGFydGRvbS50b3AgKyByb290ZG9tLnRvcH1cclxuICAgICAgZS5jaGFuZ2VkVG91Y2hlcyA9IFtdO1xyXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzLnVuc2hpZnQodG1wZSlcclxuICAgICAgaWYoY2Z1Lm9wdGlvbltjaWRdLm1vdXNlZG93bil7XHJcbiAgICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uc2Nyb2xsKGUpXHJcbiAgICAgICAgdGhhdFtjaWRdLmNhbGxNZXRob2QoJ2VtaXRNc2cnLHtuYW1lOlwiZ2V0VG91Y2hNb3ZlXCIscGFyYW1zOnt0eXBlOlwibW91c2VNb3ZlXCIsZXZlbnQ6dG1wZSxpZDpjaWQsIG9wdHM6IGNmdS5pbnN0YW5jZVtjaWRdLm9wdHN9fSlcclxuICAgICAgfWVsc2UgaWYoY2Z1Lmluc3RhbmNlW2NpZF0pe1xyXG4gICAgICAgIGlmKHRvb2x0aXBTaG93PT10cnVlKXtcclxuICAgICAgICAgIHRoaXMuc2hvd1Rvb2x0aXAoZSxjaWQpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgbW91c2VVcChlKSB7XHJcbiAgICAgIGxldCBjaWQgPSB0aGlzLnJpZFxyXG4gICAgICBsZXQgb25tb3VzZSA9IGNmdS5vcHRpb25bY2lkXS5vbm1vdXNlXHJcbiAgICAgIGlmKG9ubW91c2UgPT0gZmFsc2UpIHJldHVybjtcclxuICAgICAgbGV0IHJjaGFydGRvbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdVQycrY2lkKS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKVxyXG4gICAgICBsZXQgdG1wZSA9IHt9XHJcbiAgICAgIHRtcGUgPSB7IHg6IGUuY2xpZW50WCAtIHJjaGFydGRvbS5sZWZ0LCB5OmUuY2xpZW50WSAtIHJjaGFydGRvbS50b3AgKyByb290ZG9tLnRvcH1cclxuICAgICAgZS5jaGFuZ2VkVG91Y2hlcyA9IFtdO1xyXG4gICAgICBlLmNoYW5nZWRUb3VjaGVzLnVuc2hpZnQodG1wZSlcclxuICAgICAgY2Z1Lmluc3RhbmNlW2NpZF0uc2Nyb2xsRW5kKGUpXHJcbiAgICAgIGNmdS5vcHRpb25bY2lkXS5tb3VzZWRvd249ZmFsc2U7XHJcbiAgICAgIHRoYXRbY2lkXS5jYWxsTWV0aG9kKCdlbWl0TXNnJyx7bmFtZTpcImdldFRvdWNoRW5kXCIscGFyYW1zOnt0eXBlOlwibW91c2VVcFwiLGV2ZW50OnRtcGUsaWQ6Y2lkLCBvcHRzOiBjZnUuaW5zdGFuY2VbY2lkXS5vcHRzfX0pXHJcbiAgICB9LFxyXG4gIH1cclxufVxyXG48L3NjcmlwdD5cclxuPCEtLSAjZW5kaWYgLS0+XHJcblxyXG48c3R5bGUgc2NvcGVkPlxyXG4uY2hhcnRzdmlldyB7XHJcbiAgd2lkdGg6IDEwMCU7XHJcbiAgaGVpZ2h0OiAxMDAlO1xyXG4gIGRpc3BsYXk6IGZsZXg7XHJcbiAgZmxleDogMTtcclxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG59XHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///91\n");
  3885. /***/ }),
  3886. /* 92 */
  3887. /*!************************************************************************************!*\
  3888. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/uni-cloud/dist/index.js ***!
  3889. \************************************************************************************/
  3890. /*! no static exports found */
  3891. /***/ (function(module, exports, __webpack_require__) {
  3892. "use strict";
  3893. /* WEBPACK VAR INJECTION */(function(global, wx) {
  3894. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);
  3895. Object.defineProperty(exports, "__esModule", {
  3896. value: true
  3897. });
  3898. exports.default = void 0;
  3899. var _assertThisInitialized2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/assertThisInitialized */ 102));
  3900. var _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ 103));
  3901. var _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 15));
  3902. var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 95));
  3903. var _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));
  3904. var _toConsumableArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/toConsumableArray */ 105));
  3905. var _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 17));
  3906. var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));
  3907. var _inherits2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/inherits */ 109));
  3908. var _possibleConstructorReturn2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/possibleConstructorReturn */ 111));
  3909. var _getPrototypeOf2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/getPrototypeOf */ 112));
  3910. var _wrapNativeSuper2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/wrapNativeSuper */ 113));
  3911. var _classCallCheck2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/classCallCheck */ 117));
  3912. var _createClass2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/createClass */ 118));
  3913. var _pages = _interopRequireDefault(__webpack_require__(/*! @/pages.json */ 119));
  3914. var _excluded = ["spaceAppId", "accessKey"];
  3915. function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e34) { throw _e34; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e35) { didErr = true; err = _e35; }, f: function f() { try { if (!normalCompletion && it.return != null) it.return(); } finally { if (didErr) throw err; } } }; }
  3916. function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
  3917. function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
  3918. function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
  3919. function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2.default)(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
  3920. function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2.default)(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2.default)(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2.default)(this, result); }; }
  3921. function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
  3922. "undefined" != typeof globalThis ? globalThis : "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self && self;
  3923. function t(e) {
  3924. return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
  3925. }
  3926. function n(e, t, n) {
  3927. return e(n = {
  3928. path: t,
  3929. exports: {},
  3930. require: function require(e, t) {
  3931. return function () {
  3932. throw new Error("Dynamic requires are not currently supported by @rollup/plugin-commonjs");
  3933. }(null == t && n.path);
  3934. }
  3935. }, n.exports), n.exports;
  3936. }
  3937. var s = n(function (e, t) {
  3938. var n;
  3939. e.exports = (n = n || function (e, t) {
  3940. var n = Object.create || function () {
  3941. function e() {}
  3942. return function (t) {
  3943. var n;
  3944. return e.prototype = t, n = new e(), e.prototype = null, n;
  3945. };
  3946. }(),
  3947. s = {},
  3948. r = s.lib = {},
  3949. i = r.Base = {
  3950. extend: function extend(e) {
  3951. var t = n(this);
  3952. return e && t.mixIn(e), t.hasOwnProperty("init") && this.init !== t.init || (t.init = function () {
  3953. t.$super.init.apply(this, arguments);
  3954. }), t.init.prototype = t, t.$super = this, t;
  3955. },
  3956. create: function create() {
  3957. var e = this.extend();
  3958. return e.init.apply(e, arguments), e;
  3959. },
  3960. init: function init() {},
  3961. mixIn: function mixIn(e) {
  3962. for (var t in e) {
  3963. e.hasOwnProperty(t) && (this[t] = e[t]);
  3964. }
  3965. e.hasOwnProperty("toString") && (this.toString = e.toString);
  3966. },
  3967. clone: function clone() {
  3968. return this.init.prototype.extend(this);
  3969. }
  3970. },
  3971. o = r.WordArray = i.extend({
  3972. init: function init(e, n) {
  3973. e = this.words = e || [], this.sigBytes = n != t ? n : 4 * e.length;
  3974. },
  3975. toString: function toString(e) {
  3976. return (e || c).stringify(this);
  3977. },
  3978. concat: function concat(e) {
  3979. var t = this.words,
  3980. n = e.words,
  3981. s = this.sigBytes,
  3982. r = e.sigBytes;
  3983. if (this.clamp(), s % 4) for (var i = 0; i < r; i++) {
  3984. var o = n[i >>> 2] >>> 24 - i % 4 * 8 & 255;
  3985. t[s + i >>> 2] |= o << 24 - (s + i) % 4 * 8;
  3986. } else for (i = 0; i < r; i += 4) {
  3987. t[s + i >>> 2] = n[i >>> 2];
  3988. }
  3989. return this.sigBytes += r, this;
  3990. },
  3991. clamp: function clamp() {
  3992. var t = this.words,
  3993. n = this.sigBytes;
  3994. t[n >>> 2] &= 4294967295 << 32 - n % 4 * 8, t.length = e.ceil(n / 4);
  3995. },
  3996. clone: function clone() {
  3997. var e = i.clone.call(this);
  3998. return e.words = this.words.slice(0), e;
  3999. },
  4000. random: function random(t) {
  4001. for (var n, s = [], r = function r(t) {
  4002. t = t;
  4003. var n = 987654321,
  4004. s = 4294967295;
  4005. return function () {
  4006. var r = ((n = 36969 * (65535 & n) + (n >> 16) & s) << 16) + (t = 18e3 * (65535 & t) + (t >> 16) & s) & s;
  4007. return r /= 4294967296, (r += .5) * (e.random() > .5 ? 1 : -1);
  4008. };
  4009. }, i = 0; i < t; i += 4) {
  4010. var a = r(4294967296 * (n || e.random()));
  4011. n = 987654071 * a(), s.push(4294967296 * a() | 0);
  4012. }
  4013. return new o.init(s, t);
  4014. }
  4015. }),
  4016. a = s.enc = {},
  4017. c = a.Hex = {
  4018. stringify: function stringify(e) {
  4019. for (var t = e.words, n = e.sigBytes, s = [], r = 0; r < n; r++) {
  4020. var i = t[r >>> 2] >>> 24 - r % 4 * 8 & 255;
  4021. s.push((i >>> 4).toString(16)), s.push((15 & i).toString(16));
  4022. }
  4023. return s.join("");
  4024. },
  4025. parse: function parse(e) {
  4026. for (var t = e.length, n = [], s = 0; s < t; s += 2) {
  4027. n[s >>> 3] |= parseInt(e.substr(s, 2), 16) << 24 - s % 8 * 4;
  4028. }
  4029. return new o.init(n, t / 2);
  4030. }
  4031. },
  4032. u = a.Latin1 = {
  4033. stringify: function stringify(e) {
  4034. for (var t = e.words, n = e.sigBytes, s = [], r = 0; r < n; r++) {
  4035. var i = t[r >>> 2] >>> 24 - r % 4 * 8 & 255;
  4036. s.push(String.fromCharCode(i));
  4037. }
  4038. return s.join("");
  4039. },
  4040. parse: function parse(e) {
  4041. for (var t = e.length, n = [], s = 0; s < t; s++) {
  4042. n[s >>> 2] |= (255 & e.charCodeAt(s)) << 24 - s % 4 * 8;
  4043. }
  4044. return new o.init(n, t);
  4045. }
  4046. },
  4047. l = a.Utf8 = {
  4048. stringify: function stringify(e) {
  4049. try {
  4050. return decodeURIComponent(escape(u.stringify(e)));
  4051. } catch (e) {
  4052. throw new Error("Malformed UTF-8 data");
  4053. }
  4054. },
  4055. parse: function parse(e) {
  4056. return u.parse(unescape(encodeURIComponent(e)));
  4057. }
  4058. },
  4059. h = r.BufferedBlockAlgorithm = i.extend({
  4060. reset: function reset() {
  4061. this._data = new o.init(), this._nDataBytes = 0;
  4062. },
  4063. _append: function _append(e) {
  4064. "string" == typeof e && (e = l.parse(e)), this._data.concat(e), this._nDataBytes += e.sigBytes;
  4065. },
  4066. _process: function _process(t) {
  4067. var n = this._data,
  4068. s = n.words,
  4069. r = n.sigBytes,
  4070. i = this.blockSize,
  4071. a = r / (4 * i),
  4072. c = (a = t ? e.ceil(a) : e.max((0 | a) - this._minBufferSize, 0)) * i,
  4073. u = e.min(4 * c, r);
  4074. if (c) {
  4075. for (var l = 0; l < c; l += i) {
  4076. this._doProcessBlock(s, l);
  4077. }
  4078. var h = s.splice(0, c);
  4079. n.sigBytes -= u;
  4080. }
  4081. return new o.init(h, u);
  4082. },
  4083. clone: function clone() {
  4084. var e = i.clone.call(this);
  4085. return e._data = this._data.clone(), e;
  4086. },
  4087. _minBufferSize: 0
  4088. });
  4089. r.Hasher = h.extend({
  4090. cfg: i.extend(),
  4091. init: function init(e) {
  4092. this.cfg = this.cfg.extend(e), this.reset();
  4093. },
  4094. reset: function reset() {
  4095. h.reset.call(this), this._doReset();
  4096. },
  4097. update: function update(e) {
  4098. return this._append(e), this._process(), this;
  4099. },
  4100. finalize: function finalize(e) {
  4101. return e && this._append(e), this._doFinalize();
  4102. },
  4103. blockSize: 16,
  4104. _createHelper: function _createHelper(e) {
  4105. return function (t, n) {
  4106. return new e.init(n).finalize(t);
  4107. };
  4108. },
  4109. _createHmacHelper: function _createHmacHelper(e) {
  4110. return function (t, n) {
  4111. return new d.HMAC.init(e, n).finalize(t);
  4112. };
  4113. }
  4114. });
  4115. var d = s.algo = {};
  4116. return s;
  4117. }(Math), n);
  4118. }),
  4119. r = s,
  4120. i = (n(function (e, t) {
  4121. var n;
  4122. e.exports = (n = r, function (e) {
  4123. var t = n,
  4124. s = t.lib,
  4125. r = s.WordArray,
  4126. i = s.Hasher,
  4127. o = t.algo,
  4128. a = [];
  4129. !function () {
  4130. for (var t = 0; t < 64; t++) {
  4131. a[t] = 4294967296 * e.abs(e.sin(t + 1)) | 0;
  4132. }
  4133. }();
  4134. var c = o.MD5 = i.extend({
  4135. _doReset: function _doReset() {
  4136. this._hash = new r.init([1732584193, 4023233417, 2562383102, 271733878]);
  4137. },
  4138. _doProcessBlock: function _doProcessBlock(e, t) {
  4139. for (var n = 0; n < 16; n++) {
  4140. var s = t + n,
  4141. r = e[s];
  4142. e[s] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8);
  4143. }
  4144. var i = this._hash.words,
  4145. o = e[t + 0],
  4146. c = e[t + 1],
  4147. p = e[t + 2],
  4148. f = e[t + 3],
  4149. g = e[t + 4],
  4150. m = e[t + 5],
  4151. y = e[t + 6],
  4152. _ = e[t + 7],
  4153. w = e[t + 8],
  4154. v = e[t + 9],
  4155. I = e[t + 10],
  4156. S = e[t + 11],
  4157. b = e[t + 12],
  4158. k = e[t + 13],
  4159. A = e[t + 14],
  4160. P = e[t + 15],
  4161. T = i[0],
  4162. C = i[1],
  4163. x = i[2],
  4164. O = i[3];
  4165. T = u(T, C, x, O, o, 7, a[0]), O = u(O, T, C, x, c, 12, a[1]), x = u(x, O, T, C, p, 17, a[2]), C = u(C, x, O, T, f, 22, a[3]), T = u(T, C, x, O, g, 7, a[4]), O = u(O, T, C, x, m, 12, a[5]), x = u(x, O, T, C, y, 17, a[6]), C = u(C, x, O, T, _, 22, a[7]), T = u(T, C, x, O, w, 7, a[8]), O = u(O, T, C, x, v, 12, a[9]), x = u(x, O, T, C, I, 17, a[10]), C = u(C, x, O, T, S, 22, a[11]), T = u(T, C, x, O, b, 7, a[12]), O = u(O, T, C, x, k, 12, a[13]), x = u(x, O, T, C, A, 17, a[14]), T = l(T, C = u(C, x, O, T, P, 22, a[15]), x, O, c, 5, a[16]), O = l(O, T, C, x, y, 9, a[17]), x = l(x, O, T, C, S, 14, a[18]), C = l(C, x, O, T, o, 20, a[19]), T = l(T, C, x, O, m, 5, a[20]), O = l(O, T, C, x, I, 9, a[21]), x = l(x, O, T, C, P, 14, a[22]), C = l(C, x, O, T, g, 20, a[23]), T = l(T, C, x, O, v, 5, a[24]), O = l(O, T, C, x, A, 9, a[25]), x = l(x, O, T, C, f, 14, a[26]), C = l(C, x, O, T, w, 20, a[27]), T = l(T, C, x, O, k, 5, a[28]), O = l(O, T, C, x, p, 9, a[29]), x = l(x, O, T, C, _, 14, a[30]), T = h(T, C = l(C, x, O, T, b, 20, a[31]), x, O, m, 4, a[32]), O = h(O, T, C, x, w, 11, a[33]), x = h(x, O, T, C, S, 16, a[34]), C = h(C, x, O, T, A, 23, a[35]), T = h(T, C, x, O, c, 4, a[36]), O = h(O, T, C, x, g, 11, a[37]), x = h(x, O, T, C, _, 16, a[38]), C = h(C, x, O, T, I, 23, a[39]), T = h(T, C, x, O, k, 4, a[40]), O = h(O, T, C, x, o, 11, a[41]), x = h(x, O, T, C, f, 16, a[42]), C = h(C, x, O, T, y, 23, a[43]), T = h(T, C, x, O, v, 4, a[44]), O = h(O, T, C, x, b, 11, a[45]), x = h(x, O, T, C, P, 16, a[46]), T = d(T, C = h(C, x, O, T, p, 23, a[47]), x, O, o, 6, a[48]), O = d(O, T, C, x, _, 10, a[49]), x = d(x, O, T, C, A, 15, a[50]), C = d(C, x, O, T, m, 21, a[51]), T = d(T, C, x, O, b, 6, a[52]), O = d(O, T, C, x, f, 10, a[53]), x = d(x, O, T, C, I, 15, a[54]), C = d(C, x, O, T, c, 21, a[55]), T = d(T, C, x, O, w, 6, a[56]), O = d(O, T, C, x, P, 10, a[57]), x = d(x, O, T, C, y, 15, a[58]), C = d(C, x, O, T, k, 21, a[59]), T = d(T, C, x, O, g, 6, a[60]), O = d(O, T, C, x, S, 10, a[61]), x = d(x, O, T, C, p, 15, a[62]), C = d(C, x, O, T, v, 21, a[63]), i[0] = i[0] + T | 0, i[1] = i[1] + C | 0, i[2] = i[2] + x | 0, i[3] = i[3] + O | 0;
  4166. },
  4167. _doFinalize: function _doFinalize() {
  4168. var t = this._data,
  4169. n = t.words,
  4170. s = 8 * this._nDataBytes,
  4171. r = 8 * t.sigBytes;
  4172. n[r >>> 5] |= 128 << 24 - r % 32;
  4173. var i = e.floor(s / 4294967296),
  4174. o = s;
  4175. n[15 + (r + 64 >>> 9 << 4)] = 16711935 & (i << 8 | i >>> 24) | 4278255360 & (i << 24 | i >>> 8), n[14 + (r + 64 >>> 9 << 4)] = 16711935 & (o << 8 | o >>> 24) | 4278255360 & (o << 24 | o >>> 8), t.sigBytes = 4 * (n.length + 1), this._process();
  4176. for (var a = this._hash, c = a.words, u = 0; u < 4; u++) {
  4177. var l = c[u];
  4178. c[u] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8);
  4179. }
  4180. return a;
  4181. },
  4182. clone: function clone() {
  4183. var e = i.clone.call(this);
  4184. return e._hash = this._hash.clone(), e;
  4185. }
  4186. });
  4187. function u(e, t, n, s, r, i, o) {
  4188. var a = e + (t & n | ~t & s) + r + o;
  4189. return (a << i | a >>> 32 - i) + t;
  4190. }
  4191. function l(e, t, n, s, r, i, o) {
  4192. var a = e + (t & s | n & ~s) + r + o;
  4193. return (a << i | a >>> 32 - i) + t;
  4194. }
  4195. function h(e, t, n, s, r, i, o) {
  4196. var a = e + (t ^ n ^ s) + r + o;
  4197. return (a << i | a >>> 32 - i) + t;
  4198. }
  4199. function d(e, t, n, s, r, i, o) {
  4200. var a = e + (n ^ (t | ~s)) + r + o;
  4201. return (a << i | a >>> 32 - i) + t;
  4202. }
  4203. t.MD5 = i._createHelper(c), t.HmacMD5 = i._createHmacHelper(c);
  4204. }(Math), n.MD5);
  4205. }), n(function (e, t) {
  4206. var n;
  4207. e.exports = (n = r, void function () {
  4208. var e = n,
  4209. t = e.lib.Base,
  4210. s = e.enc.Utf8;
  4211. e.algo.HMAC = t.extend({
  4212. init: function init(e, t) {
  4213. e = this._hasher = new e.init(), "string" == typeof t && (t = s.parse(t));
  4214. var n = e.blockSize,
  4215. r = 4 * n;
  4216. t.sigBytes > r && (t = e.finalize(t)), t.clamp();
  4217. for (var i = this._oKey = t.clone(), o = this._iKey = t.clone(), a = i.words, c = o.words, u = 0; u < n; u++) {
  4218. a[u] ^= 1549556828, c[u] ^= 909522486;
  4219. }
  4220. i.sigBytes = o.sigBytes = r, this.reset();
  4221. },
  4222. reset: function reset() {
  4223. var e = this._hasher;
  4224. e.reset(), e.update(this._iKey);
  4225. },
  4226. update: function update(e) {
  4227. return this._hasher.update(e), this;
  4228. },
  4229. finalize: function finalize(e) {
  4230. var t = this._hasher,
  4231. n = t.finalize(e);
  4232. return t.reset(), t.finalize(this._oKey.clone().concat(n));
  4233. }
  4234. });
  4235. }());
  4236. }), n(function (e, t) {
  4237. e.exports = r.HmacMD5;
  4238. })),
  4239. o = n(function (e, t) {
  4240. e.exports = r.enc.Utf8;
  4241. }),
  4242. a = n(function (e, t) {
  4243. var n;
  4244. e.exports = (n = r, function () {
  4245. var e = n,
  4246. t = e.lib.WordArray;
  4247. function s(e, n, s) {
  4248. for (var r = [], i = 0, o = 0; o < n; o++) {
  4249. if (o % 4) {
  4250. var a = s[e.charCodeAt(o - 1)] << o % 4 * 2,
  4251. c = s[e.charCodeAt(o)] >>> 6 - o % 4 * 2;
  4252. r[i >>> 2] |= (a | c) << 24 - i % 4 * 8, i++;
  4253. }
  4254. }
  4255. return t.create(r, i);
  4256. }
  4257. e.enc.Base64 = {
  4258. stringify: function stringify(e) {
  4259. var t = e.words,
  4260. n = e.sigBytes,
  4261. s = this._map;
  4262. e.clamp();
  4263. for (var r = [], i = 0; i < n; i += 3) {
  4264. for (var o = (t[i >>> 2] >>> 24 - i % 4 * 8 & 255) << 16 | (t[i + 1 >>> 2] >>> 24 - (i + 1) % 4 * 8 & 255) << 8 | t[i + 2 >>> 2] >>> 24 - (i + 2) % 4 * 8 & 255, a = 0; a < 4 && i + .75 * a < n; a++) {
  4265. r.push(s.charAt(o >>> 6 * (3 - a) & 63));
  4266. }
  4267. }
  4268. var c = s.charAt(64);
  4269. if (c) for (; r.length % 4;) {
  4270. r.push(c);
  4271. }
  4272. return r.join("");
  4273. },
  4274. parse: function parse(e) {
  4275. var t = e.length,
  4276. n = this._map,
  4277. r = this._reverseMap;
  4278. if (!r) {
  4279. r = this._reverseMap = [];
  4280. for (var i = 0; i < n.length; i++) {
  4281. r[n.charCodeAt(i)] = i;
  4282. }
  4283. }
  4284. var o = n.charAt(64);
  4285. if (o) {
  4286. var a = e.indexOf(o);
  4287. -1 !== a && (t = a);
  4288. }
  4289. return s(e, t, r);
  4290. },
  4291. _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
  4292. };
  4293. }(), n.enc.Base64);
  4294. });
  4295. var c = "FUNCTION",
  4296. u = "OBJECT",
  4297. l = "CLIENT_DB",
  4298. h = "pending",
  4299. d = "fulfilled",
  4300. p = "rejected";
  4301. function f(e) {
  4302. return Object.prototype.toString.call(e).slice(8, -1).toLowerCase();
  4303. }
  4304. function g(e) {
  4305. return "object" === f(e);
  4306. }
  4307. function m(e) {
  4308. return "function" == typeof e;
  4309. }
  4310. function y(e) {
  4311. return function () {
  4312. try {
  4313. return e.apply(e, arguments);
  4314. } catch (e) {
  4315. console.error(e);
  4316. }
  4317. };
  4318. }
  4319. var _ = "REJECTED",
  4320. w = "NOT_PENDING";
  4321. var v = /*#__PURE__*/function () {
  4322. function v() {
  4323. var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  4324. e = _ref.createPromise,
  4325. _ref$retryRule = _ref.retryRule,
  4326. t = _ref$retryRule === void 0 ? _ : _ref$retryRule;
  4327. (0, _classCallCheck2.default)(this, v);
  4328. this.createPromise = e, this.status = null, this.promise = null, this.retryRule = t;
  4329. }
  4330. (0, _createClass2.default)(v, [{
  4331. key: "needRetry",
  4332. get: function get() {
  4333. if (!this.status) return !0;
  4334. switch (this.retryRule) {
  4335. case _:
  4336. return this.status === p;
  4337. case w:
  4338. return this.status !== h;
  4339. }
  4340. }
  4341. }, {
  4342. key: "exec",
  4343. value: function exec() {
  4344. var _this = this;
  4345. return this.needRetry ? (this.status = h, this.promise = this.createPromise().then(function (e) {
  4346. return _this.status = d, Promise.resolve(e);
  4347. }, function (e) {
  4348. return _this.status = p, Promise.reject(e);
  4349. }), this.promise) : this.promise;
  4350. }
  4351. }]);
  4352. return v;
  4353. }();
  4354. function I(e) {
  4355. return e && "string" == typeof e ? JSON.parse(e) : e;
  4356. }
  4357. var S = "development" === "development",
  4358. b = "app-plus",
  4359. k = "true" === false || !0 === false,
  4360. A = I([]),
  4361. P = "h5" === b ? "web" : "app-plus" === b ? "app" : b,
  4362. T = I(undefined),
  4363. C = I([]) || [],
  4364. x = true;
  4365. var O = "";
  4366. try {
  4367. O = (__webpack_require__(/*! uni-stat-config */ 120).default || __webpack_require__(/*! uni-stat-config */ 120)).appid;
  4368. } catch (e) {}
  4369. var E = {};
  4370. function L(e) {
  4371. var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  4372. var n, s;
  4373. return n = E, s = e, Object.prototype.hasOwnProperty.call(n, s) || (E[e] = t), E[e];
  4374. }
  4375. "app" === P && (E = uni._globalUniCloudObj ? uni._globalUniCloudObj : uni._globalUniCloudObj = {});
  4376. var R = ["invoke", "success", "fail", "complete"],
  4377. U = L("_globalUniCloudInterceptor");
  4378. function N(e, t) {
  4379. U[e] || (U[e] = {}), g(t) && Object.keys(t).forEach(function (n) {
  4380. R.indexOf(n) > -1 && function (e, t, n) {
  4381. var s = U[e][t];
  4382. s || (s = U[e][t] = []), -1 === s.indexOf(n) && m(n) && s.push(n);
  4383. }(e, n, t[n]);
  4384. });
  4385. }
  4386. function D(e, t) {
  4387. U[e] || (U[e] = {}), g(t) ? Object.keys(t).forEach(function (n) {
  4388. R.indexOf(n) > -1 && function (e, t, n) {
  4389. var s = U[e][t];
  4390. if (!s) return;
  4391. var r = s.indexOf(n);
  4392. r > -1 && s.splice(r, 1);
  4393. }(e, n, t[n]);
  4394. }) : delete U[e];
  4395. }
  4396. function M(e, t) {
  4397. return e && 0 !== e.length ? e.reduce(function (e, n) {
  4398. return e.then(function () {
  4399. return n(t);
  4400. });
  4401. }, Promise.resolve()) : Promise.resolve();
  4402. }
  4403. function q(e, t) {
  4404. return U[e] && U[e][t] || [];
  4405. }
  4406. function F(e) {
  4407. N("callObject", e);
  4408. }
  4409. var K = L("_globalUniCloudListener"),
  4410. j = "response",
  4411. B = "needLogin",
  4412. $ = "refreshToken",
  4413. W = "clientdb",
  4414. H = "cloudfunction",
  4415. z = "cloudobject";
  4416. function J(e) {
  4417. return K[e] || (K[e] = []), K[e];
  4418. }
  4419. function V(e, t) {
  4420. var n = J(e);
  4421. n.includes(t) || n.push(t);
  4422. }
  4423. function G(e, t) {
  4424. var n = J(e),
  4425. s = n.indexOf(t);
  4426. -1 !== s && n.splice(s, 1);
  4427. }
  4428. function Y(e, t) {
  4429. var n = J(e);
  4430. for (var _e2 = 0; _e2 < n.length; _e2++) {
  4431. (0, n[_e2])(t);
  4432. }
  4433. }
  4434. var Q,
  4435. X = !1;
  4436. function Z() {
  4437. return Q || (Q = new Promise(function (e) {
  4438. X && e(), function t() {
  4439. if ("function" == typeof getCurrentPages) {
  4440. var _t2 = getCurrentPages();
  4441. _t2 && _t2[0] && (X = !0, e());
  4442. }
  4443. X || setTimeout(function () {
  4444. t();
  4445. }, 30);
  4446. }();
  4447. }), Q);
  4448. }
  4449. function ee(e) {
  4450. var t = {};
  4451. for (var _n2 in e) {
  4452. var _s2 = e[_n2];
  4453. m(_s2) && (t[_n2] = y(_s2));
  4454. }
  4455. return t;
  4456. }
  4457. var te = /*#__PURE__*/function (_Error) {
  4458. (0, _inherits2.default)(te, _Error);
  4459. var _super = _createSuper(te);
  4460. function te(e) {
  4461. var _this2;
  4462. (0, _classCallCheck2.default)(this, te);
  4463. _this2 = _super.call(this, e.message), _this2.errMsg = e.message || e.errMsg || "unknown system error", _this2.code = _this2.errCode = e.code || e.errCode || "SYSTEM_ERROR", _this2.errSubject = _this2.subject = e.subject || e.errSubject, _this2.cause = e.cause, _this2.requestId = e.requestId;
  4464. return _this2;
  4465. }
  4466. (0, _createClass2.default)(te, [{
  4467. key: "toJson",
  4468. value: function toJson() {
  4469. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
  4470. if (!(e >= 10)) return e++, {
  4471. errCode: this.errCode,
  4472. errMsg: this.errMsg,
  4473. errSubject: this.errSubject,
  4474. cause: this.cause && this.cause.toJson ? this.cause.toJson(e) : this.cause
  4475. };
  4476. }
  4477. }]);
  4478. return te;
  4479. }( /*#__PURE__*/(0, _wrapNativeSuper2.default)(Error));
  4480. var ne = {
  4481. request: function request(e) {
  4482. return uni.request(e);
  4483. },
  4484. uploadFile: function uploadFile(e) {
  4485. return uni.uploadFile(e);
  4486. },
  4487. setStorageSync: function setStorageSync(e, t) {
  4488. return uni.setStorageSync(e, t);
  4489. },
  4490. getStorageSync: function getStorageSync(e) {
  4491. return uni.getStorageSync(e);
  4492. },
  4493. removeStorageSync: function removeStorageSync(e) {
  4494. return uni.removeStorageSync(e);
  4495. },
  4496. clearStorageSync: function clearStorageSync() {
  4497. return uni.clearStorageSync();
  4498. }
  4499. };
  4500. function se() {
  4501. return {
  4502. token: ne.getStorageSync("uni_id_token") || ne.getStorageSync("uniIdToken"),
  4503. tokenExpired: ne.getStorageSync("uni_id_token_expired")
  4504. };
  4505. }
  4506. function re() {
  4507. var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  4508. e = _ref2.token,
  4509. t = _ref2.tokenExpired;
  4510. e && ne.setStorageSync("uni_id_token", e), t && ne.setStorageSync("uni_id_token_expired", t);
  4511. }
  4512. var ie, oe;
  4513. function ae() {
  4514. return ie || (ie = uni.getSystemInfoSync()), ie;
  4515. }
  4516. function ce() {
  4517. var e, t;
  4518. try {
  4519. if (uni.getLaunchOptionsSync) {
  4520. if (uni.getLaunchOptionsSync.toString().indexOf("not yet implemented") > -1) return;
  4521. var _uni$getLaunchOptions = uni.getLaunchOptionsSync(),
  4522. _n3 = _uni$getLaunchOptions.scene,
  4523. _s3 = _uni$getLaunchOptions.channel;
  4524. e = _s3, t = _n3;
  4525. }
  4526. } catch (e) {}
  4527. return {
  4528. channel: e,
  4529. scene: t
  4530. };
  4531. }
  4532. function ue() {
  4533. var e = uni.getLocale && uni.getLocale() || "en";
  4534. if (oe) return _objectSpread(_objectSpread({}, oe), {}, {
  4535. locale: e,
  4536. LOCALE: e
  4537. });
  4538. var t = ae(),
  4539. n = t.deviceId,
  4540. s = t.osName,
  4541. r = t.uniPlatform,
  4542. i = t.appId,
  4543. o = ["pixelRatio", "brand", "model", "system", "language", "version", "platform", "host", "SDKVersion", "swanNativeVersion", "app", "AppPlatform", "fontSizeSetting"];
  4544. for (var _e3 = 0; _e3 < o.length; _e3++) {
  4545. delete t[o[_e3]];
  4546. }
  4547. return oe = _objectSpread(_objectSpread({
  4548. PLATFORM: r,
  4549. OS: s,
  4550. APPID: i,
  4551. DEVICEID: n
  4552. }, ce()), t), _objectSpread(_objectSpread({}, oe), {}, {
  4553. locale: e,
  4554. LOCALE: e
  4555. });
  4556. }
  4557. var le = {
  4558. sign: function sign(e, t) {
  4559. var n = "";
  4560. return Object.keys(e).sort().forEach(function (t) {
  4561. e[t] && (n = n + "&" + t + "=" + e[t]);
  4562. }), n = n.slice(1), i(n, t).toString();
  4563. },
  4564. wrappedRequest: function wrappedRequest(e, t) {
  4565. return new Promise(function (n, s) {
  4566. t(Object.assign(e, {
  4567. complete: function complete(e) {
  4568. e || (e = {}), S && "web" === P && e.errMsg && 0 === e.errMsg.indexOf("request:fail") && console.warn("发布H5,需要在uniCloud后台操作,绑定安全域名,否则会因为跨域问题而无法访问。教程参考:https://uniapp.dcloud.io/uniCloud/quickstart?id=useinh5");
  4569. var t = e.data && e.data.header && e.data.header["x-serverless-request-id"] || e.header && e.header["request-id"];
  4570. if (!e.statusCode || e.statusCode >= 400) return s(new te({
  4571. code: "SYS_ERR",
  4572. message: e.errMsg || "request:fail",
  4573. requestId: t
  4574. }));
  4575. var r = e.data;
  4576. if (r.error) return s(new te({
  4577. code: r.error.code,
  4578. message: r.error.message,
  4579. requestId: t
  4580. }));
  4581. r.result = r.data, r.requestId = t, delete r.data, n(r);
  4582. }
  4583. }));
  4584. });
  4585. },
  4586. toBase64: function toBase64(e) {
  4587. return a.stringify(o.parse(e));
  4588. }
  4589. };
  4590. var he = /*#__PURE__*/function () {
  4591. function he(e) {
  4592. var _this3 = this;
  4593. (0, _classCallCheck2.default)(this, he);
  4594. ["spaceId", "clientSecret"].forEach(function (t) {
  4595. if (!Object.prototype.hasOwnProperty.call(e, t)) throw new Error("".concat(t, " required"));
  4596. }), this.config = Object.assign({}, {
  4597. endpoint: 0 === e.spaceId.indexOf("mp-") ? "https://api.next.bspapp.com" : "https://api.bspapp.com"
  4598. }, e), this.config.provider = "aliyun", this.config.requestUrl = this.config.endpoint + "/client", this.config.envType = this.config.envType || "public", this.config.accessTokenKey = "access_token_" + this.config.spaceId, this.adapter = ne, this._getAccessTokenPromiseHub = new v({
  4599. createPromise: function createPromise() {
  4600. return _this3.requestAuth(_this3.setupRequest({
  4601. method: "serverless.auth.user.anonymousAuthorize",
  4602. params: "{}"
  4603. }, "auth")).then(function (e) {
  4604. if (!e.result || !e.result.accessToken) throw new te({
  4605. code: "AUTH_FAILED",
  4606. message: "获取accessToken失败"
  4607. });
  4608. _this3.setAccessToken(e.result.accessToken);
  4609. });
  4610. },
  4611. retryRule: w
  4612. });
  4613. }
  4614. (0, _createClass2.default)(he, [{
  4615. key: "hasAccessToken",
  4616. get: function get() {
  4617. return !!this.accessToken;
  4618. }
  4619. }, {
  4620. key: "setAccessToken",
  4621. value: function setAccessToken(e) {
  4622. this.accessToken = e;
  4623. }
  4624. }, {
  4625. key: "requestWrapped",
  4626. value: function requestWrapped(e) {
  4627. return le.wrappedRequest(e, this.adapter.request);
  4628. }
  4629. }, {
  4630. key: "requestAuth",
  4631. value: function requestAuth(e) {
  4632. return this.requestWrapped(e);
  4633. }
  4634. }, {
  4635. key: "request",
  4636. value: function request(e, t) {
  4637. var _this4 = this;
  4638. return Promise.resolve().then(function () {
  4639. return _this4.hasAccessToken ? t ? _this4.requestWrapped(e) : _this4.requestWrapped(e).catch(function (t) {
  4640. return new Promise(function (e, n) {
  4641. !t || "GATEWAY_INVALID_TOKEN" !== t.code && "InvalidParameter.InvalidToken" !== t.code ? n(t) : e();
  4642. }).then(function () {
  4643. return _this4.getAccessToken();
  4644. }).then(function () {
  4645. var t = _this4.rebuildRequest(e);
  4646. return _this4.request(t, !0);
  4647. });
  4648. }) : _this4.getAccessToken().then(function () {
  4649. var t = _this4.rebuildRequest(e);
  4650. return _this4.request(t, !0);
  4651. });
  4652. });
  4653. }
  4654. }, {
  4655. key: "rebuildRequest",
  4656. value: function rebuildRequest(e) {
  4657. var t = Object.assign({}, e);
  4658. return t.data.token = this.accessToken, t.header["x-basement-token"] = this.accessToken, t.header["x-serverless-sign"] = le.sign(t.data, this.config.clientSecret), t;
  4659. }
  4660. }, {
  4661. key: "setupRequest",
  4662. value: function setupRequest(e, t) {
  4663. var n = Object.assign({}, e, {
  4664. spaceId: this.config.spaceId,
  4665. timestamp: Date.now()
  4666. }),
  4667. s = {
  4668. "Content-Type": "application/json"
  4669. };
  4670. return "auth" !== t && (n.token = this.accessToken, s["x-basement-token"] = this.accessToken), s["x-serverless-sign"] = le.sign(n, this.config.clientSecret), {
  4671. url: this.config.requestUrl,
  4672. method: "POST",
  4673. data: n,
  4674. dataType: "json",
  4675. header: s
  4676. };
  4677. }
  4678. }, {
  4679. key: "getAccessToken",
  4680. value: function getAccessToken() {
  4681. return this._getAccessTokenPromiseHub.exec();
  4682. }
  4683. }, {
  4684. key: "authorize",
  4685. value: function () {
  4686. var _authorize = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {
  4687. return _regenerator.default.wrap(function _callee$(_context) {
  4688. while (1) {
  4689. switch (_context.prev = _context.next) {
  4690. case 0:
  4691. _context.next = 2;
  4692. return this.getAccessToken();
  4693. case 2:
  4694. case "end":
  4695. return _context.stop();
  4696. }
  4697. }
  4698. }, _callee, this);
  4699. }));
  4700. function authorize() {
  4701. return _authorize.apply(this, arguments);
  4702. }
  4703. return authorize;
  4704. }()
  4705. }, {
  4706. key: "callFunction",
  4707. value: function callFunction(e) {
  4708. var t = {
  4709. method: "serverless.function.runtime.invoke",
  4710. params: JSON.stringify({
  4711. functionTarget: e.name,
  4712. functionArgs: e.data || {}
  4713. })
  4714. };
  4715. return this.request(this.setupRequest(t));
  4716. }
  4717. }, {
  4718. key: "getOSSUploadOptionsFromPath",
  4719. value: function getOSSUploadOptionsFromPath(e) {
  4720. var t = {
  4721. method: "serverless.file.resource.generateProximalSign",
  4722. params: JSON.stringify(e)
  4723. };
  4724. return this.request(this.setupRequest(t));
  4725. }
  4726. }, {
  4727. key: "uploadFileToOSS",
  4728. value: function uploadFileToOSS(_ref3) {
  4729. var _this5 = this;
  4730. var e = _ref3.url,
  4731. t = _ref3.formData,
  4732. n = _ref3.name,
  4733. s = _ref3.filePath,
  4734. r = _ref3.fileType,
  4735. i = _ref3.onUploadProgress;
  4736. return new Promise(function (o, a) {
  4737. var c = _this5.adapter.uploadFile({
  4738. url: e,
  4739. formData: t,
  4740. name: n,
  4741. filePath: s,
  4742. fileType: r,
  4743. header: {
  4744. "X-OSS-server-side-encrpytion": "AES256"
  4745. },
  4746. success: function success(e) {
  4747. e && e.statusCode < 400 ? o(e) : a(new te({
  4748. code: "UPLOAD_FAILED",
  4749. message: "文件上传失败"
  4750. }));
  4751. },
  4752. fail: function fail(e) {
  4753. a(new te({
  4754. code: e.code || "UPLOAD_FAILED",
  4755. message: e.message || e.errMsg || "文件上传失败"
  4756. }));
  4757. }
  4758. });
  4759. "function" == typeof i && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (e) {
  4760. i({
  4761. loaded: e.totalBytesSent,
  4762. total: e.totalBytesExpectedToSend
  4763. });
  4764. });
  4765. });
  4766. }
  4767. }, {
  4768. key: "reportOSSUpload",
  4769. value: function reportOSSUpload(e) {
  4770. var t = {
  4771. method: "serverless.file.resource.report",
  4772. params: JSON.stringify(e)
  4773. };
  4774. return this.request(this.setupRequest(t));
  4775. }
  4776. }, {
  4777. key: "uploadFile",
  4778. value: function () {
  4779. var _uploadFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(_ref4) {
  4780. var e, t, _ref4$fileType, n, _ref4$cloudPathAsReal, s, r, i, o, a, c, u, l, h, d, p, g, m, y, _, _e4, w;
  4781. return _regenerator.default.wrap(function _callee2$(_context2) {
  4782. while (1) {
  4783. switch (_context2.prev = _context2.next) {
  4784. case 0:
  4785. e = _ref4.filePath, t = _ref4.cloudPath, _ref4$fileType = _ref4.fileType, n = _ref4$fileType === void 0 ? "image" : _ref4$fileType, _ref4$cloudPathAsReal = _ref4.cloudPathAsRealPath, s = _ref4$cloudPathAsReal === void 0 ? !1 : _ref4$cloudPathAsReal, r = _ref4.onUploadProgress, i = _ref4.config;
  4786. if (!("string" !== f(t))) {
  4787. _context2.next = 3;
  4788. break;
  4789. }
  4790. throw new te({
  4791. code: "INVALID_PARAM",
  4792. message: "cloudPath必须为字符串类型"
  4793. });
  4794. case 3:
  4795. if (t = t.trim()) {
  4796. _context2.next = 5;
  4797. break;
  4798. }
  4799. throw new te({
  4800. code: "INVALID_PARAM",
  4801. message: "cloudPath不可为空"
  4802. });
  4803. case 5:
  4804. if (!/:\/\//.test(t)) {
  4805. _context2.next = 7;
  4806. break;
  4807. }
  4808. throw new te({
  4809. code: "INVALID_PARAM",
  4810. message: "cloudPath不合法"
  4811. });
  4812. case 7:
  4813. o = i && i.envType || this.config.envType;
  4814. if (!(s && ("/" !== t[0] && (t = "/" + t), t.indexOf("\\") > -1))) {
  4815. _context2.next = 10;
  4816. break;
  4817. }
  4818. throw new te({
  4819. code: "INVALID_PARAM",
  4820. message: "使用cloudPath作为路径时,cloudPath不可包含“\\”"
  4821. });
  4822. case 10:
  4823. _context2.next = 12;
  4824. return this.getOSSUploadOptionsFromPath({
  4825. env: o,
  4826. filename: s ? t.split("/").pop() : t,
  4827. fileId: s ? t : void 0
  4828. });
  4829. case 12:
  4830. a = _context2.sent.result;
  4831. c = "https://" + a.cdnDomain + "/" + a.ossPath;
  4832. u = a.securityToken;
  4833. l = a.accessKeyId;
  4834. h = a.signature;
  4835. d = a.host;
  4836. p = a.ossPath;
  4837. g = a.id;
  4838. m = a.policy;
  4839. y = a.ossCallbackUrl;
  4840. _ = {
  4841. "Cache-Control": "max-age=2592000",
  4842. "Content-Disposition": "attachment",
  4843. OSSAccessKeyId: l,
  4844. Signature: h,
  4845. host: d,
  4846. id: g,
  4847. key: p,
  4848. policy: m,
  4849. success_action_status: 200
  4850. };
  4851. if (u && (_["x-oss-security-token"] = u), y) {
  4852. _e4 = JSON.stringify({
  4853. callbackUrl: y,
  4854. callbackBody: JSON.stringify({
  4855. fileId: g,
  4856. spaceId: this.config.spaceId
  4857. }),
  4858. callbackBodyType: "application/json"
  4859. });
  4860. _.callback = le.toBase64(_e4);
  4861. }
  4862. w = {
  4863. url: "https://" + a.host,
  4864. formData: _,
  4865. fileName: "file",
  4866. name: "file",
  4867. filePath: e,
  4868. fileType: n
  4869. };
  4870. _context2.next = 27;
  4871. return this.uploadFileToOSS(Object.assign({}, w, {
  4872. onUploadProgress: r
  4873. }));
  4874. case 27:
  4875. if (!y) {
  4876. _context2.next = 29;
  4877. break;
  4878. }
  4879. return _context2.abrupt("return", {
  4880. success: !0,
  4881. filePath: e,
  4882. fileID: c
  4883. });
  4884. case 29:
  4885. _context2.next = 31;
  4886. return this.reportOSSUpload({
  4887. id: g
  4888. });
  4889. case 31:
  4890. if (!_context2.sent.success) {
  4891. _context2.next = 33;
  4892. break;
  4893. }
  4894. return _context2.abrupt("return", {
  4895. success: !0,
  4896. filePath: e,
  4897. fileID: c
  4898. });
  4899. case 33:
  4900. throw new te({
  4901. code: "UPLOAD_FAILED",
  4902. message: "文件上传失败"
  4903. });
  4904. case 34:
  4905. case "end":
  4906. return _context2.stop();
  4907. }
  4908. }
  4909. }, _callee2, this);
  4910. }));
  4911. function uploadFile(_x) {
  4912. return _uploadFile.apply(this, arguments);
  4913. }
  4914. return uploadFile;
  4915. }()
  4916. }, {
  4917. key: "getTempFileURL",
  4918. value: function getTempFileURL() {
  4919. var _ref5 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  4920. e = _ref5.fileList;
  4921. return new Promise(function (t, n) {
  4922. Array.isArray(e) && 0 !== e.length || n(new te({
  4923. code: "INVALID_PARAM",
  4924. message: "fileList的元素必须是非空的字符串"
  4925. })), t({
  4926. fileList: e.map(function (e) {
  4927. return {
  4928. fileID: e,
  4929. tempFileURL: e
  4930. };
  4931. })
  4932. });
  4933. });
  4934. }
  4935. }, {
  4936. key: "getFileInfo",
  4937. value: function () {
  4938. var _getFileInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {
  4939. var _ref6,
  4940. e,
  4941. t,
  4942. _args3 = arguments;
  4943. return _regenerator.default.wrap(function _callee3$(_context3) {
  4944. while (1) {
  4945. switch (_context3.prev = _context3.next) {
  4946. case 0:
  4947. _ref6 = _args3.length > 0 && _args3[0] !== undefined ? _args3[0] : {}, e = _ref6.fileList;
  4948. if (!(!Array.isArray(e) || 0 === e.length)) {
  4949. _context3.next = 3;
  4950. break;
  4951. }
  4952. throw new te({
  4953. code: "INVALID_PARAM",
  4954. message: "fileList的元素必须是非空的字符串"
  4955. });
  4956. case 3:
  4957. t = {
  4958. method: "serverless.file.resource.info",
  4959. params: JSON.stringify({
  4960. id: e.map(function (e) {
  4961. return e.split("?")[0];
  4962. }).join(",")
  4963. })
  4964. };
  4965. _context3.next = 6;
  4966. return this.request(this.setupRequest(t));
  4967. case 6:
  4968. _context3.t0 = _context3.sent.result;
  4969. return _context3.abrupt("return", {
  4970. fileList: _context3.t0
  4971. });
  4972. case 8:
  4973. case "end":
  4974. return _context3.stop();
  4975. }
  4976. }
  4977. }, _callee3, this);
  4978. }));
  4979. function getFileInfo() {
  4980. return _getFileInfo.apply(this, arguments);
  4981. }
  4982. return getFileInfo;
  4983. }()
  4984. }]);
  4985. return he;
  4986. }();
  4987. var de = {
  4988. init: function init(e) {
  4989. var t = new he(e),
  4990. n = {
  4991. signInAnonymously: function signInAnonymously() {
  4992. return t.authorize();
  4993. },
  4994. getLoginState: function getLoginState() {
  4995. return Promise.resolve(!1);
  4996. }
  4997. };
  4998. return t.auth = function () {
  4999. return n;
  5000. }, t.customAuth = t.auth, t;
  5001. }
  5002. };
  5003. var pe = "undefined" != typeof location && "http:" === location.protocol ? "http:" : "https:";
  5004. var fe;
  5005. !function (e) {
  5006. e.local = "local", e.none = "none", e.session = "session";
  5007. }(fe || (fe = {}));
  5008. var ge = function ge() {},
  5009. me = n(function (e, t) {
  5010. var n;
  5011. e.exports = (n = r, function (e) {
  5012. var t = n,
  5013. s = t.lib,
  5014. r = s.WordArray,
  5015. i = s.Hasher,
  5016. o = t.algo,
  5017. a = [],
  5018. c = [];
  5019. !function () {
  5020. function t(t) {
  5021. for (var n = e.sqrt(t), s = 2; s <= n; s++) {
  5022. if (!(t % s)) return !1;
  5023. }
  5024. return !0;
  5025. }
  5026. function n(e) {
  5027. return 4294967296 * (e - (0 | e)) | 0;
  5028. }
  5029. for (var s = 2, r = 0; r < 64;) {
  5030. t(s) && (r < 8 && (a[r] = n(e.pow(s, .5))), c[r] = n(e.pow(s, 1 / 3)), r++), s++;
  5031. }
  5032. }();
  5033. var u = [],
  5034. l = o.SHA256 = i.extend({
  5035. _doReset: function _doReset() {
  5036. this._hash = new r.init(a.slice(0));
  5037. },
  5038. _doProcessBlock: function _doProcessBlock(e, t) {
  5039. for (var n = this._hash.words, s = n[0], r = n[1], i = n[2], o = n[3], a = n[4], l = n[5], h = n[6], d = n[7], p = 0; p < 64; p++) {
  5040. if (p < 16) u[p] = 0 | e[t + p];else {
  5041. var f = u[p - 15],
  5042. g = (f << 25 | f >>> 7) ^ (f << 14 | f >>> 18) ^ f >>> 3,
  5043. m = u[p - 2],
  5044. y = (m << 15 | m >>> 17) ^ (m << 13 | m >>> 19) ^ m >>> 10;
  5045. u[p] = g + u[p - 7] + y + u[p - 16];
  5046. }
  5047. var _ = s & r ^ s & i ^ r & i,
  5048. w = (s << 30 | s >>> 2) ^ (s << 19 | s >>> 13) ^ (s << 10 | s >>> 22),
  5049. v = d + ((a << 26 | a >>> 6) ^ (a << 21 | a >>> 11) ^ (a << 7 | a >>> 25)) + (a & l ^ ~a & h) + c[p] + u[p];
  5050. d = h, h = l, l = a, a = o + v | 0, o = i, i = r, r = s, s = v + (w + _) | 0;
  5051. }
  5052. n[0] = n[0] + s | 0, n[1] = n[1] + r | 0, n[2] = n[2] + i | 0, n[3] = n[3] + o | 0, n[4] = n[4] + a | 0, n[5] = n[5] + l | 0, n[6] = n[6] + h | 0, n[7] = n[7] + d | 0;
  5053. },
  5054. _doFinalize: function _doFinalize() {
  5055. var t = this._data,
  5056. n = t.words,
  5057. s = 8 * this._nDataBytes,
  5058. r = 8 * t.sigBytes;
  5059. return n[r >>> 5] |= 128 << 24 - r % 32, n[14 + (r + 64 >>> 9 << 4)] = e.floor(s / 4294967296), n[15 + (r + 64 >>> 9 << 4)] = s, t.sigBytes = 4 * n.length, this._process(), this._hash;
  5060. },
  5061. clone: function clone() {
  5062. var e = i.clone.call(this);
  5063. return e._hash = this._hash.clone(), e;
  5064. }
  5065. });
  5066. t.SHA256 = i._createHelper(l), t.HmacSHA256 = i._createHmacHelper(l);
  5067. }(Math), n.SHA256);
  5068. }),
  5069. ye = me,
  5070. _e = n(function (e, t) {
  5071. e.exports = r.HmacSHA256;
  5072. });
  5073. var we = function we() {
  5074. var e;
  5075. if (!Promise) {
  5076. e = function e() {}, e.promise = {};
  5077. var _t3 = function _t3() {
  5078. throw new te({
  5079. message: 'Your Node runtime does support ES6 Promises. Set "global.Promise" to your preferred implementation of promises.'
  5080. });
  5081. };
  5082. return Object.defineProperty(e.promise, "then", {
  5083. get: _t3
  5084. }), Object.defineProperty(e.promise, "catch", {
  5085. get: _t3
  5086. }), e;
  5087. }
  5088. var t = new Promise(function (t, n) {
  5089. e = function e(_e5, s) {
  5090. return _e5 ? n(_e5) : t(s);
  5091. };
  5092. });
  5093. return e.promise = t, e;
  5094. };
  5095. function ve(e) {
  5096. return void 0 === e;
  5097. }
  5098. function Ie(e) {
  5099. return "[object Null]" === Object.prototype.toString.call(e);
  5100. }
  5101. var Se;
  5102. function be(e) {
  5103. var t = (n = e, "[object Array]" === Object.prototype.toString.call(n) ? e : [e]);
  5104. var n;
  5105. var _iterator = _createForOfIteratorHelper(t),
  5106. _step;
  5107. try {
  5108. for (_iterator.s(); !(_step = _iterator.n()).done;) {
  5109. var _e6 = _step.value;
  5110. var _t4 = _e6.isMatch,
  5111. _n4 = _e6.genAdapter,
  5112. _s4 = _e6.runtime;
  5113. if (_t4()) return {
  5114. adapter: _n4(),
  5115. runtime: _s4
  5116. };
  5117. }
  5118. } catch (err) {
  5119. _iterator.e(err);
  5120. } finally {
  5121. _iterator.f();
  5122. }
  5123. }
  5124. !function (e) {
  5125. e.WEB = "web", e.WX_MP = "wx_mp";
  5126. }(Se || (Se = {}));
  5127. var ke = {
  5128. adapter: null,
  5129. runtime: void 0
  5130. },
  5131. Ae = ["anonymousUuidKey"];
  5132. var Pe = /*#__PURE__*/function (_ge) {
  5133. (0, _inherits2.default)(Pe, _ge);
  5134. var _super2 = _createSuper(Pe);
  5135. function Pe() {
  5136. var _this6;
  5137. (0, _classCallCheck2.default)(this, Pe);
  5138. _this6 = _super2.call(this), ke.adapter.root.tcbObject || (ke.adapter.root.tcbObject = {});
  5139. return _this6;
  5140. }
  5141. (0, _createClass2.default)(Pe, [{
  5142. key: "setItem",
  5143. value: function setItem(e, t) {
  5144. ke.adapter.root.tcbObject[e] = t;
  5145. }
  5146. }, {
  5147. key: "getItem",
  5148. value: function getItem(e) {
  5149. return ke.adapter.root.tcbObject[e];
  5150. }
  5151. }, {
  5152. key: "removeItem",
  5153. value: function removeItem(e) {
  5154. delete ke.adapter.root.tcbObject[e];
  5155. }
  5156. }, {
  5157. key: "clear",
  5158. value: function clear() {
  5159. delete ke.adapter.root.tcbObject;
  5160. }
  5161. }]);
  5162. return Pe;
  5163. }(ge);
  5164. function Te(e, t) {
  5165. switch (e) {
  5166. case "local":
  5167. return t.localStorage || new Pe();
  5168. case "none":
  5169. return new Pe();
  5170. default:
  5171. return t.sessionStorage || new Pe();
  5172. }
  5173. }
  5174. var Ce = /*#__PURE__*/function () {
  5175. function Ce(e) {
  5176. (0, _classCallCheck2.default)(this, Ce);
  5177. if (!this._storage) {
  5178. this._persistence = ke.adapter.primaryStorage || e.persistence, this._storage = Te(this._persistence, ke.adapter);
  5179. var _t5 = "access_token_".concat(e.env),
  5180. _n5 = "access_token_expire_".concat(e.env),
  5181. _s5 = "refresh_token_".concat(e.env),
  5182. _r = "anonymous_uuid_".concat(e.env),
  5183. _i = "login_type_".concat(e.env),
  5184. _o = "user_info_".concat(e.env);
  5185. this.keys = {
  5186. accessTokenKey: _t5,
  5187. accessTokenExpireKey: _n5,
  5188. refreshTokenKey: _s5,
  5189. anonymousUuidKey: _r,
  5190. loginTypeKey: _i,
  5191. userInfoKey: _o
  5192. };
  5193. }
  5194. }
  5195. (0, _createClass2.default)(Ce, [{
  5196. key: "updatePersistence",
  5197. value: function updatePersistence(e) {
  5198. if (e === this._persistence) return;
  5199. var t = "local" === this._persistence;
  5200. this._persistence = e;
  5201. var n = Te(e, ke.adapter);
  5202. for (var _e7 in this.keys) {
  5203. var _s6 = this.keys[_e7];
  5204. if (t && Ae.includes(_e7)) continue;
  5205. var _r2 = this._storage.getItem(_s6);
  5206. ve(_r2) || Ie(_r2) || (n.setItem(_s6, _r2), this._storage.removeItem(_s6));
  5207. }
  5208. this._storage = n;
  5209. }
  5210. }, {
  5211. key: "setStore",
  5212. value: function setStore(e, t, n) {
  5213. if (!this._storage) return;
  5214. var s = {
  5215. version: n || "localCachev1",
  5216. content: t
  5217. },
  5218. r = JSON.stringify(s);
  5219. try {
  5220. this._storage.setItem(e, r);
  5221. } catch (e) {
  5222. throw e;
  5223. }
  5224. }
  5225. }, {
  5226. key: "getStore",
  5227. value: function getStore(e, t) {
  5228. try {
  5229. if (!this._storage) return;
  5230. } catch (e) {
  5231. return "";
  5232. }
  5233. t = t || "localCachev1";
  5234. var n = this._storage.getItem(e);
  5235. if (!n) return "";
  5236. if (n.indexOf(t) >= 0) {
  5237. return JSON.parse(n).content;
  5238. }
  5239. return "";
  5240. }
  5241. }, {
  5242. key: "removeStore",
  5243. value: function removeStore(e) {
  5244. this._storage.removeItem(e);
  5245. }
  5246. }]);
  5247. return Ce;
  5248. }();
  5249. var xe = {},
  5250. Oe = {};
  5251. function Ee(e) {
  5252. return xe[e];
  5253. }
  5254. var Le = /*#__PURE__*/(0, _createClass2.default)(function Le(e, t) {
  5255. (0, _classCallCheck2.default)(this, Le);
  5256. this.data = t || null, this.name = e;
  5257. });
  5258. var Re = /*#__PURE__*/function (_Le) {
  5259. (0, _inherits2.default)(Re, _Le);
  5260. var _super3 = _createSuper(Re);
  5261. function Re(e, t) {
  5262. var _this7;
  5263. (0, _classCallCheck2.default)(this, Re);
  5264. _this7 = _super3.call(this, "error", {
  5265. error: e,
  5266. data: t
  5267. }), _this7.error = e;
  5268. return _this7;
  5269. }
  5270. return (0, _createClass2.default)(Re);
  5271. }(Le);
  5272. var Ue = new ( /*#__PURE__*/function () {
  5273. function _class() {
  5274. (0, _classCallCheck2.default)(this, _class);
  5275. this._listeners = {};
  5276. }
  5277. (0, _createClass2.default)(_class, [{
  5278. key: "on",
  5279. value: function on(e, t) {
  5280. return function (e, t, n) {
  5281. n[e] = n[e] || [], n[e].push(t);
  5282. }(e, t, this._listeners), this;
  5283. }
  5284. }, {
  5285. key: "off",
  5286. value: function off(e, t) {
  5287. return function (e, t, n) {
  5288. if (n && n[e]) {
  5289. var _s7 = n[e].indexOf(t);
  5290. -1 !== _s7 && n[e].splice(_s7, 1);
  5291. }
  5292. }(e, t, this._listeners), this;
  5293. }
  5294. }, {
  5295. key: "fire",
  5296. value: function fire(e, t) {
  5297. if (e instanceof Re) return console.error(e.error), this;
  5298. var n = "string" == typeof e ? new Le(e, t || {}) : e;
  5299. var s = n.name;
  5300. if (this._listens(s)) {
  5301. n.target = this;
  5302. var _e8 = this._listeners[s] ? (0, _toConsumableArray2.default)(this._listeners[s]) : [];
  5303. var _iterator2 = _createForOfIteratorHelper(_e8),
  5304. _step2;
  5305. try {
  5306. for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
  5307. var _t6 = _step2.value;
  5308. _t6.call(this, n);
  5309. }
  5310. } catch (err) {
  5311. _iterator2.e(err);
  5312. } finally {
  5313. _iterator2.f();
  5314. }
  5315. }
  5316. return this;
  5317. }
  5318. }, {
  5319. key: "_listens",
  5320. value: function _listens(e) {
  5321. return this._listeners[e] && this._listeners[e].length > 0;
  5322. }
  5323. }]);
  5324. return _class;
  5325. }())();
  5326. function Ne(e, t) {
  5327. Ue.on(e, t);
  5328. }
  5329. function De(e) {
  5330. var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  5331. Ue.fire(e, t);
  5332. }
  5333. function Me(e, t) {
  5334. Ue.off(e, t);
  5335. }
  5336. var qe = "loginStateChanged",
  5337. Fe = "loginStateExpire",
  5338. Ke = "loginTypeChanged",
  5339. je = "anonymousConverted",
  5340. Be = "refreshAccessToken";
  5341. var $e;
  5342. !function (e) {
  5343. e.ANONYMOUS = "ANONYMOUS", e.WECHAT = "WECHAT", e.WECHAT_PUBLIC = "WECHAT-PUBLIC", e.WECHAT_OPEN = "WECHAT-OPEN", e.CUSTOM = "CUSTOM", e.EMAIL = "EMAIL", e.USERNAME = "USERNAME", e.NULL = "NULL";
  5344. }($e || ($e = {}));
  5345. var We = ["auth.getJwt", "auth.logout", "auth.signInWithTicket", "auth.signInAnonymously", "auth.signIn", "auth.fetchAccessTokenWithRefreshToken", "auth.signUpWithEmailAndPassword", "auth.activateEndUserMail", "auth.sendPasswordResetEmail", "auth.resetPasswordWithToken", "auth.isUsernameRegistered"],
  5346. He = {
  5347. "X-SDK-Version": "1.3.5"
  5348. };
  5349. function ze(e, t, n) {
  5350. var s = e[t];
  5351. e[t] = function (t) {
  5352. var r = {},
  5353. i = {};
  5354. n.forEach(function (n) {
  5355. var _n$call = n.call(e, t),
  5356. s = _n$call.data,
  5357. o = _n$call.headers;
  5358. Object.assign(r, s), Object.assign(i, o);
  5359. });
  5360. var o = t.data;
  5361. return o && function () {
  5362. var e;
  5363. if (e = o, "[object FormData]" !== Object.prototype.toString.call(e)) t.data = _objectSpread(_objectSpread({}, o), r);else for (var _e9 in r) {
  5364. o.append(_e9, r[_e9]);
  5365. }
  5366. }(), t.headers = _objectSpread(_objectSpread({}, t.headers || {}), i), s.call(e, t);
  5367. };
  5368. }
  5369. function Je() {
  5370. var e = Math.random().toString(16).slice(2);
  5371. return {
  5372. data: {
  5373. seqId: e
  5374. },
  5375. headers: _objectSpread(_objectSpread({}, He), {}, {
  5376. "x-seqid": e
  5377. })
  5378. };
  5379. }
  5380. var Ve = /*#__PURE__*/function () {
  5381. function Ve() {
  5382. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  5383. (0, _classCallCheck2.default)(this, Ve);
  5384. var t;
  5385. this.config = e, this._reqClass = new ke.adapter.reqClass({
  5386. timeout: this.config.timeout,
  5387. timeoutMsg: "\u8BF7\u6C42\u5728".concat(this.config.timeout / 1e3, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD"),
  5388. restrictedMethods: ["post"]
  5389. }), this._cache = Ee(this.config.env), this._localCache = (t = this.config.env, Oe[t]), ze(this._reqClass, "post", [Je]), ze(this._reqClass, "upload", [Je]), ze(this._reqClass, "download", [Je]);
  5390. }
  5391. (0, _createClass2.default)(Ve, [{
  5392. key: "post",
  5393. value: function () {
  5394. var _post = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(e) {
  5395. return _regenerator.default.wrap(function _callee4$(_context4) {
  5396. while (1) {
  5397. switch (_context4.prev = _context4.next) {
  5398. case 0:
  5399. _context4.next = 2;
  5400. return this._reqClass.post(e);
  5401. case 2:
  5402. return _context4.abrupt("return", _context4.sent);
  5403. case 3:
  5404. case "end":
  5405. return _context4.stop();
  5406. }
  5407. }
  5408. }, _callee4, this);
  5409. }));
  5410. function post(_x2) {
  5411. return _post.apply(this, arguments);
  5412. }
  5413. return post;
  5414. }()
  5415. }, {
  5416. key: "upload",
  5417. value: function () {
  5418. var _upload = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(e) {
  5419. return _regenerator.default.wrap(function _callee5$(_context5) {
  5420. while (1) {
  5421. switch (_context5.prev = _context5.next) {
  5422. case 0:
  5423. _context5.next = 2;
  5424. return this._reqClass.upload(e);
  5425. case 2:
  5426. return _context5.abrupt("return", _context5.sent);
  5427. case 3:
  5428. case "end":
  5429. return _context5.stop();
  5430. }
  5431. }
  5432. }, _callee5, this);
  5433. }));
  5434. function upload(_x3) {
  5435. return _upload.apply(this, arguments);
  5436. }
  5437. return upload;
  5438. }()
  5439. }, {
  5440. key: "download",
  5441. value: function () {
  5442. var _download = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(e) {
  5443. return _regenerator.default.wrap(function _callee6$(_context6) {
  5444. while (1) {
  5445. switch (_context6.prev = _context6.next) {
  5446. case 0:
  5447. _context6.next = 2;
  5448. return this._reqClass.download(e);
  5449. case 2:
  5450. return _context6.abrupt("return", _context6.sent);
  5451. case 3:
  5452. case "end":
  5453. return _context6.stop();
  5454. }
  5455. }
  5456. }, _callee6, this);
  5457. }));
  5458. function download(_x4) {
  5459. return _download.apply(this, arguments);
  5460. }
  5461. return download;
  5462. }()
  5463. }, {
  5464. key: "refreshAccessToken",
  5465. value: function () {
  5466. var _refreshAccessToken2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7() {
  5467. var e, t;
  5468. return _regenerator.default.wrap(function _callee7$(_context7) {
  5469. while (1) {
  5470. switch (_context7.prev = _context7.next) {
  5471. case 0:
  5472. this._refreshAccessTokenPromise || (this._refreshAccessTokenPromise = this._refreshAccessToken());
  5473. _context7.prev = 1;
  5474. _context7.next = 4;
  5475. return this._refreshAccessTokenPromise;
  5476. case 4:
  5477. e = _context7.sent;
  5478. _context7.next = 10;
  5479. break;
  5480. case 7:
  5481. _context7.prev = 7;
  5482. _context7.t0 = _context7["catch"](1);
  5483. t = _context7.t0;
  5484. case 10:
  5485. if (!(this._refreshAccessTokenPromise = null, this._shouldRefreshAccessTokenHook = null, t)) {
  5486. _context7.next = 12;
  5487. break;
  5488. }
  5489. throw t;
  5490. case 12:
  5491. return _context7.abrupt("return", e);
  5492. case 13:
  5493. case "end":
  5494. return _context7.stop();
  5495. }
  5496. }
  5497. }, _callee7, this, [[1, 7]]);
  5498. }));
  5499. function refreshAccessToken() {
  5500. return _refreshAccessToken2.apply(this, arguments);
  5501. }
  5502. return refreshAccessToken;
  5503. }()
  5504. }, {
  5505. key: "_refreshAccessToken",
  5506. value: function () {
  5507. var _refreshAccessToken3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {
  5508. var _this$_cache$keys, e, t, n, s, r, i, o, a, _e10, _e11, _t7, _s8;
  5509. return _regenerator.default.wrap(function _callee8$(_context8) {
  5510. while (1) {
  5511. switch (_context8.prev = _context8.next) {
  5512. case 0:
  5513. _this$_cache$keys = this._cache.keys, e = _this$_cache$keys.accessTokenKey, t = _this$_cache$keys.accessTokenExpireKey, n = _this$_cache$keys.refreshTokenKey, s = _this$_cache$keys.loginTypeKey, r = _this$_cache$keys.anonymousUuidKey;
  5514. this._cache.removeStore(e), this._cache.removeStore(t);
  5515. i = this._cache.getStore(n);
  5516. if (i) {
  5517. _context8.next = 5;
  5518. break;
  5519. }
  5520. throw new te({
  5521. message: "未登录CloudBase"
  5522. });
  5523. case 5:
  5524. o = {
  5525. refresh_token: i
  5526. };
  5527. _context8.next = 8;
  5528. return this.request("auth.fetchAccessTokenWithRefreshToken", o);
  5529. case 8:
  5530. a = _context8.sent;
  5531. if (!a.data.code) {
  5532. _context8.next = 21;
  5533. break;
  5534. }
  5535. _e10 = a.data.code;
  5536. if (!("SIGN_PARAM_INVALID" === _e10 || "REFRESH_TOKEN_EXPIRED" === _e10 || "INVALID_REFRESH_TOKEN" === _e10)) {
  5537. _context8.next = 20;
  5538. break;
  5539. }
  5540. if (!(this._cache.getStore(s) === $e.ANONYMOUS && "INVALID_REFRESH_TOKEN" === _e10)) {
  5541. _context8.next = 19;
  5542. break;
  5543. }
  5544. _e11 = this._cache.getStore(r);
  5545. _t7 = this._cache.getStore(n);
  5546. _context8.next = 17;
  5547. return this.send("auth.signInAnonymously", {
  5548. anonymous_uuid: _e11,
  5549. refresh_token: _t7
  5550. });
  5551. case 17:
  5552. _s8 = _context8.sent;
  5553. return _context8.abrupt("return", (this.setRefreshToken(_s8.refresh_token), this._refreshAccessToken()));
  5554. case 19:
  5555. De(Fe), this._cache.removeStore(n);
  5556. case 20:
  5557. throw new te({
  5558. code: a.data.code,
  5559. message: "\u5237\u65B0access token\u5931\u8D25\uFF1A".concat(a.data.code)
  5560. });
  5561. case 21:
  5562. if (!a.data.access_token) {
  5563. _context8.next = 23;
  5564. break;
  5565. }
  5566. return _context8.abrupt("return", (De(Be), this._cache.setStore(e, a.data.access_token), this._cache.setStore(t, a.data.access_token_expire + Date.now()), {
  5567. accessToken: a.data.access_token,
  5568. accessTokenExpire: a.data.access_token_expire
  5569. }));
  5570. case 23:
  5571. a.data.refresh_token && (this._cache.removeStore(n), this._cache.setStore(n, a.data.refresh_token), this._refreshAccessToken());
  5572. case 24:
  5573. case "end":
  5574. return _context8.stop();
  5575. }
  5576. }
  5577. }, _callee8, this);
  5578. }));
  5579. function _refreshAccessToken() {
  5580. return _refreshAccessToken3.apply(this, arguments);
  5581. }
  5582. return _refreshAccessToken;
  5583. }()
  5584. }, {
  5585. key: "getAccessToken",
  5586. value: function () {
  5587. var _getAccessToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9() {
  5588. var _this$_cache$keys2, e, t, n, s, r, i;
  5589. return _regenerator.default.wrap(function _callee9$(_context9) {
  5590. while (1) {
  5591. switch (_context9.prev = _context9.next) {
  5592. case 0:
  5593. _this$_cache$keys2 = this._cache.keys, e = _this$_cache$keys2.accessTokenKey, t = _this$_cache$keys2.accessTokenExpireKey, n = _this$_cache$keys2.refreshTokenKey;
  5594. if (this._cache.getStore(n)) {
  5595. _context9.next = 3;
  5596. break;
  5597. }
  5598. throw new te({
  5599. message: "refresh token不存在,登录状态异常"
  5600. });
  5601. case 3:
  5602. s = this._cache.getStore(e), r = this._cache.getStore(t), i = !0;
  5603. _context9.t0 = this._shouldRefreshAccessTokenHook;
  5604. if (!_context9.t0) {
  5605. _context9.next = 9;
  5606. break;
  5607. }
  5608. _context9.next = 8;
  5609. return this._shouldRefreshAccessTokenHook(s, r);
  5610. case 8:
  5611. _context9.t0 = !_context9.sent;
  5612. case 9:
  5613. _context9.t1 = _context9.t0;
  5614. if (!_context9.t1) {
  5615. _context9.next = 12;
  5616. break;
  5617. }
  5618. i = !1;
  5619. case 12:
  5620. return _context9.abrupt("return", (!s || !r || r < Date.now()) && i ? this.refreshAccessToken() : {
  5621. accessToken: s,
  5622. accessTokenExpire: r
  5623. });
  5624. case 13:
  5625. case "end":
  5626. return _context9.stop();
  5627. }
  5628. }
  5629. }, _callee9, this);
  5630. }));
  5631. function getAccessToken() {
  5632. return _getAccessToken.apply(this, arguments);
  5633. }
  5634. return getAccessToken;
  5635. }()
  5636. }, {
  5637. key: "request",
  5638. value: function () {
  5639. var _request = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(e, t, n) {
  5640. var s, r, i, _e12, o, _e13, _e14, a, c, u, l, h, d, p, f, g;
  5641. return _regenerator.default.wrap(function _callee10$(_context10) {
  5642. while (1) {
  5643. switch (_context10.prev = _context10.next) {
  5644. case 0:
  5645. s = "x-tcb-trace_".concat(this.config.env);
  5646. r = "application/x-www-form-urlencoded";
  5647. i = _objectSpread({
  5648. action: e,
  5649. env: this.config.env,
  5650. dataVersion: "2019-08-16"
  5651. }, t);
  5652. if (!(-1 === We.indexOf(e))) {
  5653. _context10.next = 10;
  5654. break;
  5655. }
  5656. _e12 = this._cache.keys.refreshTokenKey;
  5657. _context10.t0 = this._cache.getStore(_e12);
  5658. if (!_context10.t0) {
  5659. _context10.next = 10;
  5660. break;
  5661. }
  5662. _context10.next = 9;
  5663. return this.getAccessToken();
  5664. case 9:
  5665. i.access_token = _context10.sent.accessToken;
  5666. case 10:
  5667. if ("storage.uploadFile" === e) {
  5668. o = new FormData();
  5669. for (_e13 in o) {
  5670. o.hasOwnProperty(_e13) && void 0 !== o[_e13] && o.append(_e13, i[_e13]);
  5671. }
  5672. r = "multipart/form-data";
  5673. } else {
  5674. r = "application/json", o = {};
  5675. for (_e14 in i) {
  5676. void 0 !== i[_e14] && (o[_e14] = i[_e14]);
  5677. }
  5678. }
  5679. a = {
  5680. headers: {
  5681. "content-type": r
  5682. }
  5683. };
  5684. n && n.onUploadProgress && (a.onUploadProgress = n.onUploadProgress);
  5685. c = this._localCache.getStore(s);
  5686. c && (a.headers["X-TCB-Trace"] = c);
  5687. u = t.parse, l = t.inQuery, h = t.search;
  5688. d = {
  5689. env: this.config.env
  5690. };
  5691. u && (d.parse = !0), l && (d = _objectSpread(_objectSpread({}, l), d));
  5692. p = function (e, t) {
  5693. var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
  5694. var s = /\?/.test(t);
  5695. var r = "";
  5696. for (var _e15 in n) {
  5697. "" === r ? !s && (t += "?") : r += "&", r += "".concat(_e15, "=").concat(encodeURIComponent(n[_e15]));
  5698. }
  5699. return /^http(s)?\:\/\//.test(t += r) ? t : "".concat(e).concat(t);
  5700. }(pe, "//tcb-api.tencentcloudapi.com/web", d);
  5701. h && (p += h);
  5702. _context10.next = 22;
  5703. return this.post(_objectSpread({
  5704. url: p,
  5705. data: o
  5706. }, a));
  5707. case 22:
  5708. f = _context10.sent;
  5709. g = f.header && f.header["x-tcb-trace"];
  5710. if (!(g && this._localCache.setStore(s, g), 200 !== Number(f.status) && 200 !== Number(f.statusCode) || !f.data)) {
  5711. _context10.next = 26;
  5712. break;
  5713. }
  5714. throw new te({
  5715. code: "NETWORK_ERROR",
  5716. message: "network request error"
  5717. });
  5718. case 26:
  5719. return _context10.abrupt("return", f);
  5720. case 27:
  5721. case "end":
  5722. return _context10.stop();
  5723. }
  5724. }
  5725. }, _callee10, this);
  5726. }));
  5727. function request(_x5, _x6, _x7) {
  5728. return _request.apply(this, arguments);
  5729. }
  5730. return request;
  5731. }()
  5732. }, {
  5733. key: "send",
  5734. value: function () {
  5735. var _send = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(e) {
  5736. var t,
  5737. n,
  5738. _n6,
  5739. _args11 = arguments;
  5740. return _regenerator.default.wrap(function _callee11$(_context11) {
  5741. while (1) {
  5742. switch (_context11.prev = _context11.next) {
  5743. case 0:
  5744. t = _args11.length > 1 && _args11[1] !== undefined ? _args11[1] : {};
  5745. _context11.next = 3;
  5746. return this.request(e, t, {
  5747. onUploadProgress: t.onUploadProgress
  5748. });
  5749. case 3:
  5750. n = _context11.sent;
  5751. if (!("ACCESS_TOKEN_EXPIRED" === n.data.code && -1 === We.indexOf(e))) {
  5752. _context11.next = 13;
  5753. break;
  5754. }
  5755. _context11.next = 7;
  5756. return this.refreshAccessToken();
  5757. case 7:
  5758. _context11.next = 9;
  5759. return this.request(e, t, {
  5760. onUploadProgress: t.onUploadProgress
  5761. });
  5762. case 9:
  5763. _n6 = _context11.sent;
  5764. if (!_n6.data.code) {
  5765. _context11.next = 12;
  5766. break;
  5767. }
  5768. throw new te({
  5769. code: _n6.data.code,
  5770. message: _n6.data.message
  5771. });
  5772. case 12:
  5773. return _context11.abrupt("return", _n6.data);
  5774. case 13:
  5775. if (!n.data.code) {
  5776. _context11.next = 15;
  5777. break;
  5778. }
  5779. throw new te({
  5780. code: n.data.code,
  5781. message: n.data.message
  5782. });
  5783. case 15:
  5784. return _context11.abrupt("return", n.data);
  5785. case 16:
  5786. case "end":
  5787. return _context11.stop();
  5788. }
  5789. }
  5790. }, _callee11, this);
  5791. }));
  5792. function send(_x8) {
  5793. return _send.apply(this, arguments);
  5794. }
  5795. return send;
  5796. }()
  5797. }, {
  5798. key: "setRefreshToken",
  5799. value: function setRefreshToken(e) {
  5800. var _this$_cache$keys3 = this._cache.keys,
  5801. t = _this$_cache$keys3.accessTokenKey,
  5802. n = _this$_cache$keys3.accessTokenExpireKey,
  5803. s = _this$_cache$keys3.refreshTokenKey;
  5804. this._cache.removeStore(t), this._cache.removeStore(n), this._cache.setStore(s, e);
  5805. }
  5806. }]);
  5807. return Ve;
  5808. }();
  5809. var Ge = {};
  5810. function Ye(e) {
  5811. return Ge[e];
  5812. }
  5813. var Qe = /*#__PURE__*/function () {
  5814. function Qe(e) {
  5815. (0, _classCallCheck2.default)(this, Qe);
  5816. this.config = e, this._cache = Ee(e.env), this._request = Ye(e.env);
  5817. }
  5818. (0, _createClass2.default)(Qe, [{
  5819. key: "setRefreshToken",
  5820. value: function setRefreshToken(e) {
  5821. var _this$_cache$keys4 = this._cache.keys,
  5822. t = _this$_cache$keys4.accessTokenKey,
  5823. n = _this$_cache$keys4.accessTokenExpireKey,
  5824. s = _this$_cache$keys4.refreshTokenKey;
  5825. this._cache.removeStore(t), this._cache.removeStore(n), this._cache.setStore(s, e);
  5826. }
  5827. }, {
  5828. key: "setAccessToken",
  5829. value: function setAccessToken(e, t) {
  5830. var _this$_cache$keys5 = this._cache.keys,
  5831. n = _this$_cache$keys5.accessTokenKey,
  5832. s = _this$_cache$keys5.accessTokenExpireKey;
  5833. this._cache.setStore(n, e), this._cache.setStore(s, t);
  5834. }
  5835. }, {
  5836. key: "refreshUserInfo",
  5837. value: function () {
  5838. var _refreshUserInfo = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee12() {
  5839. var _yield$this$_request$, e;
  5840. return _regenerator.default.wrap(function _callee12$(_context12) {
  5841. while (1) {
  5842. switch (_context12.prev = _context12.next) {
  5843. case 0:
  5844. _context12.next = 2;
  5845. return this._request.send("auth.getUserInfo", {});
  5846. case 2:
  5847. _yield$this$_request$ = _context12.sent;
  5848. e = _yield$this$_request$.data;
  5849. return _context12.abrupt("return", (this.setLocalUserInfo(e), e));
  5850. case 5:
  5851. case "end":
  5852. return _context12.stop();
  5853. }
  5854. }
  5855. }, _callee12, this);
  5856. }));
  5857. function refreshUserInfo() {
  5858. return _refreshUserInfo.apply(this, arguments);
  5859. }
  5860. return refreshUserInfo;
  5861. }()
  5862. }, {
  5863. key: "setLocalUserInfo",
  5864. value: function setLocalUserInfo(e) {
  5865. var t = this._cache.keys.userInfoKey;
  5866. this._cache.setStore(t, e);
  5867. }
  5868. }]);
  5869. return Qe;
  5870. }();
  5871. var Xe = /*#__PURE__*/function () {
  5872. function Xe(e) {
  5873. (0, _classCallCheck2.default)(this, Xe);
  5874. if (!e) throw new te({
  5875. code: "PARAM_ERROR",
  5876. message: "envId is not defined"
  5877. });
  5878. this._envId = e, this._cache = Ee(this._envId), this._request = Ye(this._envId), this.setUserInfo();
  5879. }
  5880. (0, _createClass2.default)(Xe, [{
  5881. key: "linkWithTicket",
  5882. value: function linkWithTicket(e) {
  5883. if ("string" != typeof e) throw new te({
  5884. code: "PARAM_ERROR",
  5885. message: "ticket must be string"
  5886. });
  5887. return this._request.send("auth.linkWithTicket", {
  5888. ticket: e
  5889. });
  5890. }
  5891. }, {
  5892. key: "linkWithRedirect",
  5893. value: function linkWithRedirect(e) {
  5894. e.signInWithRedirect();
  5895. }
  5896. }, {
  5897. key: "updatePassword",
  5898. value: function updatePassword(e, t) {
  5899. return this._request.send("auth.updatePassword", {
  5900. oldPassword: t,
  5901. newPassword: e
  5902. });
  5903. }
  5904. }, {
  5905. key: "updateEmail",
  5906. value: function updateEmail(e) {
  5907. return this._request.send("auth.updateEmail", {
  5908. newEmail: e
  5909. });
  5910. }
  5911. }, {
  5912. key: "updateUsername",
  5913. value: function updateUsername(e) {
  5914. if ("string" != typeof e) throw new te({
  5915. code: "PARAM_ERROR",
  5916. message: "username must be a string"
  5917. });
  5918. return this._request.send("auth.updateUsername", {
  5919. username: e
  5920. });
  5921. }
  5922. }, {
  5923. key: "getLinkedUidList",
  5924. value: function () {
  5925. var _getLinkedUidList = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee13() {
  5926. var _yield$this$_request$2, e, t, n;
  5927. return _regenerator.default.wrap(function _callee13$(_context13) {
  5928. while (1) {
  5929. switch (_context13.prev = _context13.next) {
  5930. case 0:
  5931. _context13.next = 2;
  5932. return this._request.send("auth.getLinkedUidList", {});
  5933. case 2:
  5934. _yield$this$_request$2 = _context13.sent;
  5935. e = _yield$this$_request$2.data;
  5936. t = !1;
  5937. n = e.users;
  5938. return _context13.abrupt("return", (n.forEach(function (e) {
  5939. e.wxOpenId && e.wxPublicId && (t = !0);
  5940. }), {
  5941. users: n,
  5942. hasPrimaryUid: t
  5943. }));
  5944. case 7:
  5945. case "end":
  5946. return _context13.stop();
  5947. }
  5948. }
  5949. }, _callee13, this);
  5950. }));
  5951. function getLinkedUidList() {
  5952. return _getLinkedUidList.apply(this, arguments);
  5953. }
  5954. return getLinkedUidList;
  5955. }()
  5956. }, {
  5957. key: "setPrimaryUid",
  5958. value: function setPrimaryUid(e) {
  5959. return this._request.send("auth.setPrimaryUid", {
  5960. uid: e
  5961. });
  5962. }
  5963. }, {
  5964. key: "unlink",
  5965. value: function unlink(e) {
  5966. return this._request.send("auth.unlink", {
  5967. platform: e
  5968. });
  5969. }
  5970. }, {
  5971. key: "update",
  5972. value: function () {
  5973. var _update = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee14(e) {
  5974. var t, n, s, r, i, o, _yield$this$_request$3, a;
  5975. return _regenerator.default.wrap(function _callee14$(_context14) {
  5976. while (1) {
  5977. switch (_context14.prev = _context14.next) {
  5978. case 0:
  5979. t = e.nickName;
  5980. n = e.gender;
  5981. s = e.avatarUrl;
  5982. r = e.province;
  5983. i = e.country;
  5984. o = e.city;
  5985. _context14.next = 8;
  5986. return this._request.send("auth.updateUserInfo", {
  5987. nickName: t,
  5988. gender: n,
  5989. avatarUrl: s,
  5990. province: r,
  5991. country: i,
  5992. city: o
  5993. });
  5994. case 8:
  5995. _yield$this$_request$3 = _context14.sent;
  5996. a = _yield$this$_request$3.data;
  5997. this.setLocalUserInfo(a);
  5998. case 11:
  5999. case "end":
  6000. return _context14.stop();
  6001. }
  6002. }
  6003. }, _callee14, this);
  6004. }));
  6005. function update(_x9) {
  6006. return _update.apply(this, arguments);
  6007. }
  6008. return update;
  6009. }()
  6010. }, {
  6011. key: "refresh",
  6012. value: function () {
  6013. var _refresh = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee15() {
  6014. var _yield$this$_request$4, e;
  6015. return _regenerator.default.wrap(function _callee15$(_context15) {
  6016. while (1) {
  6017. switch (_context15.prev = _context15.next) {
  6018. case 0:
  6019. _context15.next = 2;
  6020. return this._request.send("auth.getUserInfo", {});
  6021. case 2:
  6022. _yield$this$_request$4 = _context15.sent;
  6023. e = _yield$this$_request$4.data;
  6024. return _context15.abrupt("return", (this.setLocalUserInfo(e), e));
  6025. case 5:
  6026. case "end":
  6027. return _context15.stop();
  6028. }
  6029. }
  6030. }, _callee15, this);
  6031. }));
  6032. function refresh() {
  6033. return _refresh.apply(this, arguments);
  6034. }
  6035. return refresh;
  6036. }()
  6037. }, {
  6038. key: "setUserInfo",
  6039. value: function setUserInfo() {
  6040. var _this8 = this;
  6041. var e = this._cache.keys.userInfoKey,
  6042. t = this._cache.getStore(e);
  6043. ["uid", "loginType", "openid", "wxOpenId", "wxPublicId", "unionId", "qqMiniOpenId", "email", "hasPassword", "customUserId", "nickName", "gender", "avatarUrl"].forEach(function (e) {
  6044. _this8[e] = t[e];
  6045. }), this.location = {
  6046. country: t.country,
  6047. province: t.province,
  6048. city: t.city
  6049. };
  6050. }
  6051. }, {
  6052. key: "setLocalUserInfo",
  6053. value: function setLocalUserInfo(e) {
  6054. var t = this._cache.keys.userInfoKey;
  6055. this._cache.setStore(t, e), this.setUserInfo();
  6056. }
  6057. }]);
  6058. return Xe;
  6059. }();
  6060. var Ze = /*#__PURE__*/function () {
  6061. function Ze(e) {
  6062. (0, _classCallCheck2.default)(this, Ze);
  6063. if (!e) throw new te({
  6064. code: "PARAM_ERROR",
  6065. message: "envId is not defined"
  6066. });
  6067. this._cache = Ee(e);
  6068. var _this$_cache$keys6 = this._cache.keys,
  6069. t = _this$_cache$keys6.refreshTokenKey,
  6070. n = _this$_cache$keys6.accessTokenKey,
  6071. s = _this$_cache$keys6.accessTokenExpireKey,
  6072. r = this._cache.getStore(t),
  6073. i = this._cache.getStore(n),
  6074. o = this._cache.getStore(s);
  6075. this.credential = {
  6076. refreshToken: r,
  6077. accessToken: i,
  6078. accessTokenExpire: o
  6079. }, this.user = new Xe(e);
  6080. }
  6081. (0, _createClass2.default)(Ze, [{
  6082. key: "isAnonymousAuth",
  6083. get: function get() {
  6084. return this.loginType === $e.ANONYMOUS;
  6085. }
  6086. }, {
  6087. key: "isCustomAuth",
  6088. get: function get() {
  6089. return this.loginType === $e.CUSTOM;
  6090. }
  6091. }, {
  6092. key: "isWeixinAuth",
  6093. get: function get() {
  6094. return this.loginType === $e.WECHAT || this.loginType === $e.WECHAT_OPEN || this.loginType === $e.WECHAT_PUBLIC;
  6095. }
  6096. }, {
  6097. key: "loginType",
  6098. get: function get() {
  6099. return this._cache.getStore(this._cache.keys.loginTypeKey);
  6100. }
  6101. }]);
  6102. return Ze;
  6103. }();
  6104. var et = /*#__PURE__*/function (_Qe) {
  6105. (0, _inherits2.default)(et, _Qe);
  6106. var _super4 = _createSuper(et);
  6107. function et() {
  6108. (0, _classCallCheck2.default)(this, et);
  6109. return _super4.apply(this, arguments);
  6110. }
  6111. (0, _createClass2.default)(et, [{
  6112. key: "signIn",
  6113. value: function () {
  6114. var _signIn = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee16() {
  6115. var _this$_cache$keys7, e, t, n, s, r, _e16;
  6116. return _regenerator.default.wrap(function _callee16$(_context16) {
  6117. while (1) {
  6118. switch (_context16.prev = _context16.next) {
  6119. case 0:
  6120. this._cache.updatePersistence("local");
  6121. _this$_cache$keys7 = this._cache.keys;
  6122. e = _this$_cache$keys7.anonymousUuidKey;
  6123. t = _this$_cache$keys7.refreshTokenKey;
  6124. n = this._cache.getStore(e) || void 0;
  6125. s = this._cache.getStore(t) || void 0;
  6126. _context16.next = 8;
  6127. return this._request.send("auth.signInAnonymously", {
  6128. anonymous_uuid: n,
  6129. refresh_token: s
  6130. });
  6131. case 8:
  6132. r = _context16.sent;
  6133. if (!(r.uuid && r.refresh_token)) {
  6134. _context16.next = 20;
  6135. break;
  6136. }
  6137. this._setAnonymousUUID(r.uuid);
  6138. this.setRefreshToken(r.refresh_token);
  6139. _context16.next = 14;
  6140. return this._request.refreshAccessToken();
  6141. case 14:
  6142. De(qe);
  6143. De(Ke, {
  6144. env: this.config.env,
  6145. loginType: $e.ANONYMOUS,
  6146. persistence: "local"
  6147. });
  6148. _e16 = new Ze(this.config.env);
  6149. _context16.next = 19;
  6150. return _e16.user.refresh();
  6151. case 19:
  6152. return _context16.abrupt("return", _e16);
  6153. case 20:
  6154. throw new te({
  6155. message: "匿名登录失败"
  6156. });
  6157. case 21:
  6158. case "end":
  6159. return _context16.stop();
  6160. }
  6161. }
  6162. }, _callee16, this);
  6163. }));
  6164. function signIn() {
  6165. return _signIn.apply(this, arguments);
  6166. }
  6167. return signIn;
  6168. }()
  6169. }, {
  6170. key: "linkAndRetrieveDataWithTicket",
  6171. value: function () {
  6172. var _linkAndRetrieveDataWithTicket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee17(e) {
  6173. var _this$_cache$keys8, t, n, s, r, i;
  6174. return _regenerator.default.wrap(function _callee17$(_context17) {
  6175. while (1) {
  6176. switch (_context17.prev = _context17.next) {
  6177. case 0:
  6178. _this$_cache$keys8 = this._cache.keys;
  6179. t = _this$_cache$keys8.anonymousUuidKey;
  6180. n = _this$_cache$keys8.refreshTokenKey;
  6181. s = this._cache.getStore(t);
  6182. r = this._cache.getStore(n);
  6183. _context17.next = 7;
  6184. return this._request.send("auth.linkAndRetrieveDataWithTicket", {
  6185. anonymous_uuid: s,
  6186. refresh_token: r,
  6187. ticket: e
  6188. });
  6189. case 7:
  6190. i = _context17.sent;
  6191. if (!i.refresh_token) {
  6192. _context17.next = 16;
  6193. break;
  6194. }
  6195. this._clearAnonymousUUID();
  6196. this.setRefreshToken(i.refresh_token);
  6197. _context17.next = 13;
  6198. return this._request.refreshAccessToken();
  6199. case 13:
  6200. De(je, {
  6201. env: this.config.env
  6202. });
  6203. De(Ke, {
  6204. loginType: $e.CUSTOM,
  6205. persistence: "local"
  6206. });
  6207. return _context17.abrupt("return", {
  6208. credential: {
  6209. refreshToken: i.refresh_token
  6210. }
  6211. });
  6212. case 16:
  6213. throw new te({
  6214. message: "匿名转化失败"
  6215. });
  6216. case 17:
  6217. case "end":
  6218. return _context17.stop();
  6219. }
  6220. }
  6221. }, _callee17, this);
  6222. }));
  6223. function linkAndRetrieveDataWithTicket(_x10) {
  6224. return _linkAndRetrieveDataWithTicket.apply(this, arguments);
  6225. }
  6226. return linkAndRetrieveDataWithTicket;
  6227. }()
  6228. }, {
  6229. key: "_setAnonymousUUID",
  6230. value: function _setAnonymousUUID(e) {
  6231. var _this$_cache$keys9 = this._cache.keys,
  6232. t = _this$_cache$keys9.anonymousUuidKey,
  6233. n = _this$_cache$keys9.loginTypeKey;
  6234. this._cache.removeStore(t), this._cache.setStore(t, e), this._cache.setStore(n, $e.ANONYMOUS);
  6235. }
  6236. }, {
  6237. key: "_clearAnonymousUUID",
  6238. value: function _clearAnonymousUUID() {
  6239. this._cache.removeStore(this._cache.keys.anonymousUuidKey);
  6240. }
  6241. }]);
  6242. return et;
  6243. }(Qe);
  6244. var tt = /*#__PURE__*/function (_Qe2) {
  6245. (0, _inherits2.default)(tt, _Qe2);
  6246. var _super5 = _createSuper(tt);
  6247. function tt() {
  6248. (0, _classCallCheck2.default)(this, tt);
  6249. return _super5.apply(this, arguments);
  6250. }
  6251. (0, _createClass2.default)(tt, [{
  6252. key: "signIn",
  6253. value: function () {
  6254. var _signIn2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee18(e) {
  6255. var t, n;
  6256. return _regenerator.default.wrap(function _callee18$(_context18) {
  6257. while (1) {
  6258. switch (_context18.prev = _context18.next) {
  6259. case 0:
  6260. if (!("string" != typeof e)) {
  6261. _context18.next = 2;
  6262. break;
  6263. }
  6264. throw new te({
  6265. code: "PARAM_ERROR",
  6266. message: "ticket must be a string"
  6267. });
  6268. case 2:
  6269. t = this._cache.keys.refreshTokenKey;
  6270. _context18.next = 5;
  6271. return this._request.send("auth.signInWithTicket", {
  6272. ticket: e,
  6273. refresh_token: this._cache.getStore(t) || ""
  6274. });
  6275. case 5:
  6276. n = _context18.sent;
  6277. if (!n.refresh_token) {
  6278. _context18.next = 15;
  6279. break;
  6280. }
  6281. this.setRefreshToken(n.refresh_token);
  6282. _context18.next = 10;
  6283. return this._request.refreshAccessToken();
  6284. case 10:
  6285. De(qe);
  6286. De(Ke, {
  6287. env: this.config.env,
  6288. loginType: $e.CUSTOM,
  6289. persistence: this.config.persistence
  6290. });
  6291. _context18.next = 14;
  6292. return this.refreshUserInfo();
  6293. case 14:
  6294. return _context18.abrupt("return", new Ze(this.config.env));
  6295. case 15:
  6296. throw new te({
  6297. message: "自定义登录失败"
  6298. });
  6299. case 16:
  6300. case "end":
  6301. return _context18.stop();
  6302. }
  6303. }
  6304. }, _callee18, this);
  6305. }));
  6306. function signIn(_x11) {
  6307. return _signIn2.apply(this, arguments);
  6308. }
  6309. return signIn;
  6310. }()
  6311. }]);
  6312. return tt;
  6313. }(Qe);
  6314. var nt = /*#__PURE__*/function (_Qe3) {
  6315. (0, _inherits2.default)(nt, _Qe3);
  6316. var _super6 = _createSuper(nt);
  6317. function nt() {
  6318. (0, _classCallCheck2.default)(this, nt);
  6319. return _super6.apply(this, arguments);
  6320. }
  6321. (0, _createClass2.default)(nt, [{
  6322. key: "signIn",
  6323. value: function () {
  6324. var _signIn3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee19(e, t) {
  6325. var n, s, r, i, o;
  6326. return _regenerator.default.wrap(function _callee19$(_context19) {
  6327. while (1) {
  6328. switch (_context19.prev = _context19.next) {
  6329. case 0:
  6330. if (!("string" != typeof e)) {
  6331. _context19.next = 2;
  6332. break;
  6333. }
  6334. throw new te({
  6335. code: "PARAM_ERROR",
  6336. message: "email must be a string"
  6337. });
  6338. case 2:
  6339. n = this._cache.keys.refreshTokenKey;
  6340. _context19.next = 5;
  6341. return this._request.send("auth.signIn", {
  6342. loginType: "EMAIL",
  6343. email: e,
  6344. password: t,
  6345. refresh_token: this._cache.getStore(n) || ""
  6346. });
  6347. case 5:
  6348. s = _context19.sent;
  6349. r = s.refresh_token;
  6350. i = s.access_token;
  6351. o = s.access_token_expire;
  6352. if (!r) {
  6353. _context19.next = 22;
  6354. break;
  6355. }
  6356. this.setRefreshToken(r);
  6357. if (!(i && o)) {
  6358. _context19.next = 15;
  6359. break;
  6360. }
  6361. this.setAccessToken(i, o);
  6362. _context19.next = 17;
  6363. break;
  6364. case 15:
  6365. _context19.next = 17;
  6366. return this._request.refreshAccessToken();
  6367. case 17:
  6368. _context19.next = 19;
  6369. return this.refreshUserInfo();
  6370. case 19:
  6371. De(qe);
  6372. De(Ke, {
  6373. env: this.config.env,
  6374. loginType: $e.EMAIL,
  6375. persistence: this.config.persistence
  6376. });
  6377. return _context19.abrupt("return", new Ze(this.config.env));
  6378. case 22:
  6379. throw s.code ? new te({
  6380. code: s.code,
  6381. message: "\u90AE\u7BB1\u767B\u5F55\u5931\u8D25: ".concat(s.message)
  6382. }) : new te({
  6383. message: "邮箱登录失败"
  6384. });
  6385. case 23:
  6386. case "end":
  6387. return _context19.stop();
  6388. }
  6389. }
  6390. }, _callee19, this);
  6391. }));
  6392. function signIn(_x12, _x13) {
  6393. return _signIn3.apply(this, arguments);
  6394. }
  6395. return signIn;
  6396. }()
  6397. }, {
  6398. key: "activate",
  6399. value: function () {
  6400. var _activate = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee20(e) {
  6401. return _regenerator.default.wrap(function _callee20$(_context20) {
  6402. while (1) {
  6403. switch (_context20.prev = _context20.next) {
  6404. case 0:
  6405. return _context20.abrupt("return", this._request.send("auth.activateEndUserMail", {
  6406. token: e
  6407. }));
  6408. case 1:
  6409. case "end":
  6410. return _context20.stop();
  6411. }
  6412. }
  6413. }, _callee20, this);
  6414. }));
  6415. function activate(_x14) {
  6416. return _activate.apply(this, arguments);
  6417. }
  6418. return activate;
  6419. }()
  6420. }, {
  6421. key: "resetPasswordWithToken",
  6422. value: function () {
  6423. var _resetPasswordWithToken = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee21(e, t) {
  6424. return _regenerator.default.wrap(function _callee21$(_context21) {
  6425. while (1) {
  6426. switch (_context21.prev = _context21.next) {
  6427. case 0:
  6428. return _context21.abrupt("return", this._request.send("auth.resetPasswordWithToken", {
  6429. token: e,
  6430. newPassword: t
  6431. }));
  6432. case 1:
  6433. case "end":
  6434. return _context21.stop();
  6435. }
  6436. }
  6437. }, _callee21, this);
  6438. }));
  6439. function resetPasswordWithToken(_x15, _x16) {
  6440. return _resetPasswordWithToken.apply(this, arguments);
  6441. }
  6442. return resetPasswordWithToken;
  6443. }()
  6444. }]);
  6445. return nt;
  6446. }(Qe);
  6447. var st = /*#__PURE__*/function (_Qe4) {
  6448. (0, _inherits2.default)(st, _Qe4);
  6449. var _super7 = _createSuper(st);
  6450. function st() {
  6451. (0, _classCallCheck2.default)(this, st);
  6452. return _super7.apply(this, arguments);
  6453. }
  6454. (0, _createClass2.default)(st, [{
  6455. key: "signIn",
  6456. value: function () {
  6457. var _signIn4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee22(e, t) {
  6458. var n, s, r, i, o;
  6459. return _regenerator.default.wrap(function _callee22$(_context22) {
  6460. while (1) {
  6461. switch (_context22.prev = _context22.next) {
  6462. case 0:
  6463. if (!("string" != typeof e)) {
  6464. _context22.next = 2;
  6465. break;
  6466. }
  6467. throw new te({
  6468. code: "PARAM_ERROR",
  6469. message: "username must be a string"
  6470. });
  6471. case 2:
  6472. "string" != typeof t && (t = "", console.warn("password is empty"));
  6473. n = this._cache.keys.refreshTokenKey;
  6474. _context22.next = 6;
  6475. return this._request.send("auth.signIn", {
  6476. loginType: $e.USERNAME,
  6477. username: e,
  6478. password: t,
  6479. refresh_token: this._cache.getStore(n) || ""
  6480. });
  6481. case 6:
  6482. s = _context22.sent;
  6483. r = s.refresh_token;
  6484. i = s.access_token_expire;
  6485. o = s.access_token;
  6486. if (!r) {
  6487. _context22.next = 23;
  6488. break;
  6489. }
  6490. this.setRefreshToken(r);
  6491. if (!(o && i)) {
  6492. _context22.next = 16;
  6493. break;
  6494. }
  6495. this.setAccessToken(o, i);
  6496. _context22.next = 18;
  6497. break;
  6498. case 16:
  6499. _context22.next = 18;
  6500. return this._request.refreshAccessToken();
  6501. case 18:
  6502. _context22.next = 20;
  6503. return this.refreshUserInfo();
  6504. case 20:
  6505. De(qe);
  6506. De(Ke, {
  6507. env: this.config.env,
  6508. loginType: $e.USERNAME,
  6509. persistence: this.config.persistence
  6510. });
  6511. return _context22.abrupt("return", new Ze(this.config.env));
  6512. case 23:
  6513. throw s.code ? new te({
  6514. code: s.code,
  6515. message: "\u7528\u6237\u540D\u5BC6\u7801\u767B\u5F55\u5931\u8D25: ".concat(s.message)
  6516. }) : new te({
  6517. message: "用户名密码登录失败"
  6518. });
  6519. case 24:
  6520. case "end":
  6521. return _context22.stop();
  6522. }
  6523. }
  6524. }, _callee22, this);
  6525. }));
  6526. function signIn(_x17, _x18) {
  6527. return _signIn4.apply(this, arguments);
  6528. }
  6529. return signIn;
  6530. }()
  6531. }]);
  6532. return st;
  6533. }(Qe);
  6534. var rt = /*#__PURE__*/function () {
  6535. function rt(e) {
  6536. (0, _classCallCheck2.default)(this, rt);
  6537. this.config = e, this._cache = Ee(e.env), this._request = Ye(e.env), this._onAnonymousConverted = this._onAnonymousConverted.bind(this), this._onLoginTypeChanged = this._onLoginTypeChanged.bind(this), Ne(Ke, this._onLoginTypeChanged);
  6538. }
  6539. (0, _createClass2.default)(rt, [{
  6540. key: "currentUser",
  6541. get: function get() {
  6542. var e = this.hasLoginState();
  6543. return e && e.user || null;
  6544. }
  6545. }, {
  6546. key: "loginType",
  6547. get: function get() {
  6548. return this._cache.getStore(this._cache.keys.loginTypeKey);
  6549. }
  6550. }, {
  6551. key: "anonymousAuthProvider",
  6552. value: function anonymousAuthProvider() {
  6553. return new et(this.config);
  6554. }
  6555. }, {
  6556. key: "customAuthProvider",
  6557. value: function customAuthProvider() {
  6558. return new tt(this.config);
  6559. }
  6560. }, {
  6561. key: "emailAuthProvider",
  6562. value: function emailAuthProvider() {
  6563. return new nt(this.config);
  6564. }
  6565. }, {
  6566. key: "usernameAuthProvider",
  6567. value: function usernameAuthProvider() {
  6568. return new st(this.config);
  6569. }
  6570. }, {
  6571. key: "signInAnonymously",
  6572. value: function () {
  6573. var _signInAnonymously = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee23() {
  6574. return _regenerator.default.wrap(function _callee23$(_context23) {
  6575. while (1) {
  6576. switch (_context23.prev = _context23.next) {
  6577. case 0:
  6578. return _context23.abrupt("return", new et(this.config).signIn());
  6579. case 1:
  6580. case "end":
  6581. return _context23.stop();
  6582. }
  6583. }
  6584. }, _callee23, this);
  6585. }));
  6586. function signInAnonymously() {
  6587. return _signInAnonymously.apply(this, arguments);
  6588. }
  6589. return signInAnonymously;
  6590. }()
  6591. }, {
  6592. key: "signInWithEmailAndPassword",
  6593. value: function () {
  6594. var _signInWithEmailAndPassword = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee24(e, t) {
  6595. return _regenerator.default.wrap(function _callee24$(_context24) {
  6596. while (1) {
  6597. switch (_context24.prev = _context24.next) {
  6598. case 0:
  6599. return _context24.abrupt("return", new nt(this.config).signIn(e, t));
  6600. case 1:
  6601. case "end":
  6602. return _context24.stop();
  6603. }
  6604. }
  6605. }, _callee24, this);
  6606. }));
  6607. function signInWithEmailAndPassword(_x19, _x20) {
  6608. return _signInWithEmailAndPassword.apply(this, arguments);
  6609. }
  6610. return signInWithEmailAndPassword;
  6611. }()
  6612. }, {
  6613. key: "signInWithUsernameAndPassword",
  6614. value: function signInWithUsernameAndPassword(e, t) {
  6615. return new st(this.config).signIn(e, t);
  6616. }
  6617. }, {
  6618. key: "linkAndRetrieveDataWithTicket",
  6619. value: function () {
  6620. var _linkAndRetrieveDataWithTicket2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee25(e) {
  6621. return _regenerator.default.wrap(function _callee25$(_context25) {
  6622. while (1) {
  6623. switch (_context25.prev = _context25.next) {
  6624. case 0:
  6625. this._anonymousAuthProvider || (this._anonymousAuthProvider = new et(this.config)), Ne(je, this._onAnonymousConverted);
  6626. _context25.next = 3;
  6627. return this._anonymousAuthProvider.linkAndRetrieveDataWithTicket(e);
  6628. case 3:
  6629. return _context25.abrupt("return", _context25.sent);
  6630. case 4:
  6631. case "end":
  6632. return _context25.stop();
  6633. }
  6634. }
  6635. }, _callee25, this);
  6636. }));
  6637. function linkAndRetrieveDataWithTicket(_x21) {
  6638. return _linkAndRetrieveDataWithTicket2.apply(this, arguments);
  6639. }
  6640. return linkAndRetrieveDataWithTicket;
  6641. }()
  6642. }, {
  6643. key: "signOut",
  6644. value: function () {
  6645. var _signOut = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee26() {
  6646. var _this$_cache$keys10, e, t, n, s, r;
  6647. return _regenerator.default.wrap(function _callee26$(_context26) {
  6648. while (1) {
  6649. switch (_context26.prev = _context26.next) {
  6650. case 0:
  6651. if (!(this.loginType === $e.ANONYMOUS)) {
  6652. _context26.next = 2;
  6653. break;
  6654. }
  6655. throw new te({
  6656. message: "匿名用户不支持登出操作"
  6657. });
  6658. case 2:
  6659. _this$_cache$keys10 = this._cache.keys, e = _this$_cache$keys10.refreshTokenKey, t = _this$_cache$keys10.accessTokenKey, n = _this$_cache$keys10.accessTokenExpireKey, s = this._cache.getStore(e);
  6660. if (s) {
  6661. _context26.next = 5;
  6662. break;
  6663. }
  6664. return _context26.abrupt("return");
  6665. case 5:
  6666. _context26.next = 7;
  6667. return this._request.send("auth.logout", {
  6668. refresh_token: s
  6669. });
  6670. case 7:
  6671. r = _context26.sent;
  6672. return _context26.abrupt("return", (this._cache.removeStore(e), this._cache.removeStore(t), this._cache.removeStore(n), De(qe), De(Ke, {
  6673. env: this.config.env,
  6674. loginType: $e.NULL,
  6675. persistence: this.config.persistence
  6676. }), r));
  6677. case 9:
  6678. case "end":
  6679. return _context26.stop();
  6680. }
  6681. }
  6682. }, _callee26, this);
  6683. }));
  6684. function signOut() {
  6685. return _signOut.apply(this, arguments);
  6686. }
  6687. return signOut;
  6688. }()
  6689. }, {
  6690. key: "signUpWithEmailAndPassword",
  6691. value: function () {
  6692. var _signUpWithEmailAndPassword = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee27(e, t) {
  6693. return _regenerator.default.wrap(function _callee27$(_context27) {
  6694. while (1) {
  6695. switch (_context27.prev = _context27.next) {
  6696. case 0:
  6697. return _context27.abrupt("return", this._request.send("auth.signUpWithEmailAndPassword", {
  6698. email: e,
  6699. password: t
  6700. }));
  6701. case 1:
  6702. case "end":
  6703. return _context27.stop();
  6704. }
  6705. }
  6706. }, _callee27, this);
  6707. }));
  6708. function signUpWithEmailAndPassword(_x22, _x23) {
  6709. return _signUpWithEmailAndPassword.apply(this, arguments);
  6710. }
  6711. return signUpWithEmailAndPassword;
  6712. }()
  6713. }, {
  6714. key: "sendPasswordResetEmail",
  6715. value: function () {
  6716. var _sendPasswordResetEmail = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee28(e) {
  6717. return _regenerator.default.wrap(function _callee28$(_context28) {
  6718. while (1) {
  6719. switch (_context28.prev = _context28.next) {
  6720. case 0:
  6721. return _context28.abrupt("return", this._request.send("auth.sendPasswordResetEmail", {
  6722. email: e
  6723. }));
  6724. case 1:
  6725. case "end":
  6726. return _context28.stop();
  6727. }
  6728. }
  6729. }, _callee28, this);
  6730. }));
  6731. function sendPasswordResetEmail(_x24) {
  6732. return _sendPasswordResetEmail.apply(this, arguments);
  6733. }
  6734. return sendPasswordResetEmail;
  6735. }()
  6736. }, {
  6737. key: "onLoginStateChanged",
  6738. value: function onLoginStateChanged(e) {
  6739. var _this9 = this;
  6740. Ne(qe, function () {
  6741. var t = _this9.hasLoginState();
  6742. e.call(_this9, t);
  6743. });
  6744. var t = this.hasLoginState();
  6745. e.call(this, t);
  6746. }
  6747. }, {
  6748. key: "onLoginStateExpired",
  6749. value: function onLoginStateExpired(e) {
  6750. Ne(Fe, e.bind(this));
  6751. }
  6752. }, {
  6753. key: "onAccessTokenRefreshed",
  6754. value: function onAccessTokenRefreshed(e) {
  6755. Ne(Be, e.bind(this));
  6756. }
  6757. }, {
  6758. key: "onAnonymousConverted",
  6759. value: function onAnonymousConverted(e) {
  6760. Ne(je, e.bind(this));
  6761. }
  6762. }, {
  6763. key: "onLoginTypeChanged",
  6764. value: function onLoginTypeChanged(e) {
  6765. var _this10 = this;
  6766. Ne(Ke, function () {
  6767. var t = _this10.hasLoginState();
  6768. e.call(_this10, t);
  6769. });
  6770. }
  6771. }, {
  6772. key: "getAccessToken",
  6773. value: function () {
  6774. var _getAccessToken2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee29() {
  6775. return _regenerator.default.wrap(function _callee29$(_context29) {
  6776. while (1) {
  6777. switch (_context29.prev = _context29.next) {
  6778. case 0:
  6779. _context29.next = 2;
  6780. return this._request.getAccessToken();
  6781. case 2:
  6782. _context29.t0 = _context29.sent.accessToken;
  6783. _context29.t1 = this.config.env;
  6784. return _context29.abrupt("return", {
  6785. accessToken: _context29.t0,
  6786. env: _context29.t1
  6787. });
  6788. case 5:
  6789. case "end":
  6790. return _context29.stop();
  6791. }
  6792. }
  6793. }, _callee29, this);
  6794. }));
  6795. function getAccessToken() {
  6796. return _getAccessToken2.apply(this, arguments);
  6797. }
  6798. return getAccessToken;
  6799. }()
  6800. }, {
  6801. key: "hasLoginState",
  6802. value: function hasLoginState() {
  6803. var e = this._cache.keys.refreshTokenKey;
  6804. return this._cache.getStore(e) ? new Ze(this.config.env) : null;
  6805. }
  6806. }, {
  6807. key: "isUsernameRegistered",
  6808. value: function () {
  6809. var _isUsernameRegistered = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee30(e) {
  6810. var _yield$this$_request$5, t;
  6811. return _regenerator.default.wrap(function _callee30$(_context30) {
  6812. while (1) {
  6813. switch (_context30.prev = _context30.next) {
  6814. case 0:
  6815. if (!("string" != typeof e)) {
  6816. _context30.next = 2;
  6817. break;
  6818. }
  6819. throw new te({
  6820. code: "PARAM_ERROR",
  6821. message: "username must be a string"
  6822. });
  6823. case 2:
  6824. _context30.next = 4;
  6825. return this._request.send("auth.isUsernameRegistered", {
  6826. username: e
  6827. });
  6828. case 4:
  6829. _yield$this$_request$5 = _context30.sent;
  6830. t = _yield$this$_request$5.data;
  6831. return _context30.abrupt("return", t && t.isRegistered);
  6832. case 7:
  6833. case "end":
  6834. return _context30.stop();
  6835. }
  6836. }
  6837. }, _callee30, this);
  6838. }));
  6839. function isUsernameRegistered(_x25) {
  6840. return _isUsernameRegistered.apply(this, arguments);
  6841. }
  6842. return isUsernameRegistered;
  6843. }()
  6844. }, {
  6845. key: "getLoginState",
  6846. value: function getLoginState() {
  6847. return Promise.resolve(this.hasLoginState());
  6848. }
  6849. }, {
  6850. key: "signInWithTicket",
  6851. value: function () {
  6852. var _signInWithTicket = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee31(e) {
  6853. return _regenerator.default.wrap(function _callee31$(_context31) {
  6854. while (1) {
  6855. switch (_context31.prev = _context31.next) {
  6856. case 0:
  6857. return _context31.abrupt("return", new tt(this.config).signIn(e));
  6858. case 1:
  6859. case "end":
  6860. return _context31.stop();
  6861. }
  6862. }
  6863. }, _callee31, this);
  6864. }));
  6865. function signInWithTicket(_x26) {
  6866. return _signInWithTicket.apply(this, arguments);
  6867. }
  6868. return signInWithTicket;
  6869. }()
  6870. }, {
  6871. key: "shouldRefreshAccessToken",
  6872. value: function shouldRefreshAccessToken(e) {
  6873. this._request._shouldRefreshAccessTokenHook = e.bind(this);
  6874. }
  6875. }, {
  6876. key: "getUserInfo",
  6877. value: function getUserInfo() {
  6878. return this._request.send("auth.getUserInfo", {}).then(function (e) {
  6879. return e.code ? e : _objectSpread(_objectSpread({}, e.data), {}, {
  6880. requestId: e.seqId
  6881. });
  6882. });
  6883. }
  6884. }, {
  6885. key: "getAuthHeader",
  6886. value: function getAuthHeader() {
  6887. var _this$_cache$keys11 = this._cache.keys,
  6888. e = _this$_cache$keys11.refreshTokenKey,
  6889. t = _this$_cache$keys11.accessTokenKey,
  6890. n = this._cache.getStore(e);
  6891. return {
  6892. "x-cloudbase-credentials": this._cache.getStore(t) + "/@@/" + n
  6893. };
  6894. }
  6895. }, {
  6896. key: "_onAnonymousConverted",
  6897. value: function _onAnonymousConverted(e) {
  6898. var t = e.data.env;
  6899. t === this.config.env && this._cache.updatePersistence(this.config.persistence);
  6900. }
  6901. }, {
  6902. key: "_onLoginTypeChanged",
  6903. value: function _onLoginTypeChanged(e) {
  6904. var _e$data = e.data,
  6905. t = _e$data.loginType,
  6906. n = _e$data.persistence,
  6907. s = _e$data.env;
  6908. s === this.config.env && (this._cache.updatePersistence(n), this._cache.setStore(this._cache.keys.loginTypeKey, t));
  6909. }
  6910. }]);
  6911. return rt;
  6912. }();
  6913. var it = function it(e, t) {
  6914. t = t || we();
  6915. var n = Ye(this.config.env),
  6916. s = e.cloudPath,
  6917. r = e.filePath,
  6918. i = e.onUploadProgress,
  6919. _e$fileType = e.fileType,
  6920. o = _e$fileType === void 0 ? "image" : _e$fileType;
  6921. return n.send("storage.getUploadMetadata", {
  6922. path: s
  6923. }).then(function (e) {
  6924. var _e$data2 = e.data,
  6925. a = _e$data2.url,
  6926. c = _e$data2.authorization,
  6927. u = _e$data2.token,
  6928. l = _e$data2.fileId,
  6929. h = _e$data2.cosFileId,
  6930. d = e.requestId,
  6931. p = {
  6932. key: s,
  6933. signature: c,
  6934. "x-cos-meta-fileid": h,
  6935. success_action_status: "201",
  6936. "x-cos-security-token": u
  6937. };
  6938. n.upload({
  6939. url: a,
  6940. data: p,
  6941. file: r,
  6942. name: s,
  6943. fileType: o,
  6944. onUploadProgress: i
  6945. }).then(function (e) {
  6946. 201 === e.statusCode ? t(null, {
  6947. fileID: l,
  6948. requestId: d
  6949. }) : t(new te({
  6950. code: "STORAGE_REQUEST_FAIL",
  6951. message: "STORAGE_REQUEST_FAIL: ".concat(e.data)
  6952. }));
  6953. }).catch(function (e) {
  6954. t(e);
  6955. });
  6956. }).catch(function (e) {
  6957. t(e);
  6958. }), t.promise;
  6959. },
  6960. ot = function ot(e, t) {
  6961. t = t || we();
  6962. var n = Ye(this.config.env),
  6963. s = e.cloudPath;
  6964. return n.send("storage.getUploadMetadata", {
  6965. path: s
  6966. }).then(function (e) {
  6967. t(null, e);
  6968. }).catch(function (e) {
  6969. t(e);
  6970. }), t.promise;
  6971. },
  6972. at = function at(_ref7, t) {
  6973. var e = _ref7.fileList;
  6974. if (t = t || we(), !e || !Array.isArray(e)) return {
  6975. code: "INVALID_PARAM",
  6976. message: "fileList必须是非空的数组"
  6977. };
  6978. var _iterator3 = _createForOfIteratorHelper(e),
  6979. _step3;
  6980. try {
  6981. for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
  6982. var _t8 = _step3.value;
  6983. if (!_t8 || "string" != typeof _t8) return {
  6984. code: "INVALID_PARAM",
  6985. message: "fileList的元素必须是非空的字符串"
  6986. };
  6987. }
  6988. } catch (err) {
  6989. _iterator3.e(err);
  6990. } finally {
  6991. _iterator3.f();
  6992. }
  6993. var n = {
  6994. fileid_list: e
  6995. };
  6996. return Ye(this.config.env).send("storage.batchDeleteFile", n).then(function (e) {
  6997. e.code ? t(null, e) : t(null, {
  6998. fileList: e.data.delete_list,
  6999. requestId: e.requestId
  7000. });
  7001. }).catch(function (e) {
  7002. t(e);
  7003. }), t.promise;
  7004. },
  7005. ct = function ct(_ref8, t) {
  7006. var e = _ref8.fileList;
  7007. t = t || we(), e && Array.isArray(e) || t(null, {
  7008. code: "INVALID_PARAM",
  7009. message: "fileList必须是非空的数组"
  7010. });
  7011. var n = [];
  7012. var _iterator4 = _createForOfIteratorHelper(e),
  7013. _step4;
  7014. try {
  7015. for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
  7016. var _s9 = _step4.value;
  7017. "object" == (0, _typeof2.default)(_s9) ? (_s9.hasOwnProperty("fileID") && _s9.hasOwnProperty("maxAge") || t(null, {
  7018. code: "INVALID_PARAM",
  7019. message: "fileList的元素必须是包含fileID和maxAge的对象"
  7020. }), n.push({
  7021. fileid: _s9.fileID,
  7022. max_age: _s9.maxAge
  7023. })) : "string" == typeof _s9 ? n.push({
  7024. fileid: _s9
  7025. }) : t(null, {
  7026. code: "INVALID_PARAM",
  7027. message: "fileList的元素必须是字符串"
  7028. });
  7029. }
  7030. } catch (err) {
  7031. _iterator4.e(err);
  7032. } finally {
  7033. _iterator4.f();
  7034. }
  7035. var s = {
  7036. file_list: n
  7037. };
  7038. return Ye(this.config.env).send("storage.batchGetDownloadUrl", s).then(function (e) {
  7039. e.code ? t(null, e) : t(null, {
  7040. fileList: e.data.download_list,
  7041. requestId: e.requestId
  7042. });
  7043. }).catch(function (e) {
  7044. t(e);
  7045. }), t.promise;
  7046. },
  7047. ut = /*#__PURE__*/function () {
  7048. var _ref10 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee32(_ref9, t) {
  7049. var e, n, s, r;
  7050. return _regenerator.default.wrap(function _callee32$(_context32) {
  7051. while (1) {
  7052. switch (_context32.prev = _context32.next) {
  7053. case 0:
  7054. e = _ref9.fileID;
  7055. _context32.next = 3;
  7056. return ct.call(this, {
  7057. fileList: [{
  7058. fileID: e,
  7059. maxAge: 600
  7060. }]
  7061. });
  7062. case 3:
  7063. n = _context32.sent.fileList[0];
  7064. if (!("SUCCESS" !== n.code)) {
  7065. _context32.next = 6;
  7066. break;
  7067. }
  7068. return _context32.abrupt("return", t ? t(n) : new Promise(function (e) {
  7069. e(n);
  7070. }));
  7071. case 6:
  7072. s = Ye(this.config.env);
  7073. r = n.download_url;
  7074. if (!(r = encodeURI(r), !t)) {
  7075. _context32.next = 10;
  7076. break;
  7077. }
  7078. return _context32.abrupt("return", s.download({
  7079. url: r
  7080. }));
  7081. case 10:
  7082. _context32.t0 = t;
  7083. _context32.next = 13;
  7084. return s.download({
  7085. url: r
  7086. });
  7087. case 13:
  7088. _context32.t1 = _context32.sent;
  7089. (0, _context32.t0)(_context32.t1);
  7090. case 15:
  7091. case "end":
  7092. return _context32.stop();
  7093. }
  7094. }
  7095. }, _callee32, this);
  7096. }));
  7097. return function ut(_x27, _x28) {
  7098. return _ref10.apply(this, arguments);
  7099. };
  7100. }(),
  7101. lt = function lt(_ref11, i) {
  7102. var e = _ref11.name,
  7103. t = _ref11.data,
  7104. n = _ref11.query,
  7105. s = _ref11.parse,
  7106. r = _ref11.search;
  7107. var o = i || we();
  7108. var a;
  7109. try {
  7110. a = t ? JSON.stringify(t) : "";
  7111. } catch (e) {
  7112. return Promise.reject(e);
  7113. }
  7114. if (!e) return Promise.reject(new te({
  7115. code: "PARAM_ERROR",
  7116. message: "函数名不能为空"
  7117. }));
  7118. var c = {
  7119. inQuery: n,
  7120. parse: s,
  7121. search: r,
  7122. function_name: e,
  7123. request_data: a
  7124. };
  7125. return Ye(this.config.env).send("functions.invokeFunction", c).then(function (e) {
  7126. if (e.code) o(null, e);else {
  7127. var _t9 = e.data.response_data;
  7128. if (s) o(null, {
  7129. result: _t9,
  7130. requestId: e.requestId
  7131. });else try {
  7132. _t9 = JSON.parse(e.data.response_data), o(null, {
  7133. result: _t9,
  7134. requestId: e.requestId
  7135. });
  7136. } catch (e) {
  7137. o(new te({
  7138. message: "response data must be json"
  7139. }));
  7140. }
  7141. }
  7142. return o.promise;
  7143. }).catch(function (e) {
  7144. o(e);
  7145. }), o.promise;
  7146. },
  7147. ht = {
  7148. timeout: 15e3,
  7149. persistence: "session"
  7150. },
  7151. dt = {};
  7152. var pt = /*#__PURE__*/function () {
  7153. function pt(e) {
  7154. (0, _classCallCheck2.default)(this, pt);
  7155. this.config = e || this.config, this.authObj = void 0;
  7156. }
  7157. (0, _createClass2.default)(pt, [{
  7158. key: "init",
  7159. value: function init(e) {
  7160. switch (ke.adapter || (this.requestClient = new ke.adapter.reqClass({
  7161. timeout: e.timeout || 5e3,
  7162. timeoutMsg: "\u8BF7\u6C42\u5728".concat((e.timeout || 5e3) / 1e3, "s\u5185\u672A\u5B8C\u6210\uFF0C\u5DF2\u4E2D\u65AD")
  7163. })), this.config = _objectSpread(_objectSpread({}, ht), e), !0) {
  7164. case this.config.timeout > 6e5:
  7165. console.warn("timeout大于可配置上限[10分钟],已重置为上限数值"), this.config.timeout = 6e5;
  7166. break;
  7167. case this.config.timeout < 100:
  7168. console.warn("timeout小于可配置下限[100ms],已重置为下限数值"), this.config.timeout = 100;
  7169. }
  7170. return new pt(this.config);
  7171. }
  7172. }, {
  7173. key: "auth",
  7174. value: function auth() {
  7175. var _ref12 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  7176. e = _ref12.persistence;
  7177. if (this.authObj) return this.authObj;
  7178. var t = e || ke.adapter.primaryStorage || ht.persistence;
  7179. var n;
  7180. return t !== this.config.persistence && (this.config.persistence = t), function (e) {
  7181. var t = e.env;
  7182. xe[t] = new Ce(e), Oe[t] = new Ce(_objectSpread(_objectSpread({}, e), {}, {
  7183. persistence: "local"
  7184. }));
  7185. }(this.config), n = this.config, Ge[n.env] = new Ve(n), this.authObj = new rt(this.config), this.authObj;
  7186. }
  7187. }, {
  7188. key: "on",
  7189. value: function on(e, t) {
  7190. return Ne.apply(this, [e, t]);
  7191. }
  7192. }, {
  7193. key: "off",
  7194. value: function off(e, t) {
  7195. return Me.apply(this, [e, t]);
  7196. }
  7197. }, {
  7198. key: "callFunction",
  7199. value: function callFunction(e, t) {
  7200. return lt.apply(this, [e, t]);
  7201. }
  7202. }, {
  7203. key: "deleteFile",
  7204. value: function deleteFile(e, t) {
  7205. return at.apply(this, [e, t]);
  7206. }
  7207. }, {
  7208. key: "getTempFileURL",
  7209. value: function getTempFileURL(e, t) {
  7210. return ct.apply(this, [e, t]);
  7211. }
  7212. }, {
  7213. key: "downloadFile",
  7214. value: function downloadFile(e, t) {
  7215. return ut.apply(this, [e, t]);
  7216. }
  7217. }, {
  7218. key: "uploadFile",
  7219. value: function uploadFile(e, t) {
  7220. return it.apply(this, [e, t]);
  7221. }
  7222. }, {
  7223. key: "getUploadMetadata",
  7224. value: function getUploadMetadata(e, t) {
  7225. return ot.apply(this, [e, t]);
  7226. }
  7227. }, {
  7228. key: "registerExtension",
  7229. value: function registerExtension(e) {
  7230. dt[e.name] = e;
  7231. }
  7232. }, {
  7233. key: "invokeExtension",
  7234. value: function () {
  7235. var _invokeExtension = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee33(e, t) {
  7236. var n;
  7237. return _regenerator.default.wrap(function _callee33$(_context33) {
  7238. while (1) {
  7239. switch (_context33.prev = _context33.next) {
  7240. case 0:
  7241. n = dt[e];
  7242. if (n) {
  7243. _context33.next = 3;
  7244. break;
  7245. }
  7246. throw new te({
  7247. message: "\u6269\u5C55".concat(e, " \u5FC5\u987B\u5148\u6CE8\u518C")
  7248. });
  7249. case 3:
  7250. _context33.next = 5;
  7251. return n.invoke(t, this);
  7252. case 5:
  7253. return _context33.abrupt("return", _context33.sent);
  7254. case 6:
  7255. case "end":
  7256. return _context33.stop();
  7257. }
  7258. }
  7259. }, _callee33, this);
  7260. }));
  7261. function invokeExtension(_x29, _x30) {
  7262. return _invokeExtension.apply(this, arguments);
  7263. }
  7264. return invokeExtension;
  7265. }()
  7266. }, {
  7267. key: "useAdapters",
  7268. value: function useAdapters(e) {
  7269. var _ref13 = be(e) || {},
  7270. t = _ref13.adapter,
  7271. n = _ref13.runtime;
  7272. t && (ke.adapter = t), n && (ke.runtime = n);
  7273. }
  7274. }]);
  7275. return pt;
  7276. }();
  7277. var ft = new pt();
  7278. function gt(e, t, n) {
  7279. void 0 === n && (n = {});
  7280. var s = /\?/.test(t),
  7281. r = "";
  7282. for (var i in n) {
  7283. "" === r ? !s && (t += "?") : r += "&", r += i + "=" + encodeURIComponent(n[i]);
  7284. }
  7285. return /^http(s)?:\/\//.test(t += r) ? t : "" + e + t;
  7286. }
  7287. var mt = /*#__PURE__*/function () {
  7288. function mt() {
  7289. (0, _classCallCheck2.default)(this, mt);
  7290. }
  7291. (0, _createClass2.default)(mt, [{
  7292. key: "post",
  7293. value: function post(e) {
  7294. var t = e.url,
  7295. n = e.data,
  7296. s = e.headers;
  7297. return new Promise(function (e, r) {
  7298. ne.request({
  7299. url: gt("https:", t),
  7300. data: n,
  7301. method: "POST",
  7302. header: s,
  7303. success: function success(t) {
  7304. e(t);
  7305. },
  7306. fail: function fail(e) {
  7307. r(e);
  7308. }
  7309. });
  7310. });
  7311. }
  7312. }, {
  7313. key: "upload",
  7314. value: function upload(e) {
  7315. return new Promise(function (t, n) {
  7316. var s = e.url,
  7317. r = e.file,
  7318. i = e.data,
  7319. o = e.headers,
  7320. a = e.fileType,
  7321. c = ne.uploadFile({
  7322. url: gt("https:", s),
  7323. name: "file",
  7324. formData: Object.assign({}, i),
  7325. filePath: r,
  7326. fileType: a,
  7327. header: o,
  7328. success: function success(e) {
  7329. var n = {
  7330. statusCode: e.statusCode,
  7331. data: e.data || {}
  7332. };
  7333. 200 === e.statusCode && i.success_action_status && (n.statusCode = parseInt(i.success_action_status, 10)), t(n);
  7334. },
  7335. fail: function fail(e) {
  7336. n(new Error(e.errMsg || "uploadFile:fail"));
  7337. }
  7338. });
  7339. "function" == typeof e.onUploadProgress && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (t) {
  7340. e.onUploadProgress({
  7341. loaded: t.totalBytesSent,
  7342. total: t.totalBytesExpectedToSend
  7343. });
  7344. });
  7345. });
  7346. }
  7347. }]);
  7348. return mt;
  7349. }();
  7350. var yt = {
  7351. setItem: function setItem(e, t) {
  7352. ne.setStorageSync(e, t);
  7353. },
  7354. getItem: function getItem(e) {
  7355. return ne.getStorageSync(e);
  7356. },
  7357. removeItem: function removeItem(e) {
  7358. ne.removeStorageSync(e);
  7359. },
  7360. clear: function clear() {
  7361. ne.clearStorageSync();
  7362. }
  7363. };
  7364. var _t = {
  7365. genAdapter: function genAdapter() {
  7366. return {
  7367. root: {},
  7368. reqClass: mt,
  7369. localStorage: yt,
  7370. primaryStorage: "local"
  7371. };
  7372. },
  7373. isMatch: function isMatch() {
  7374. return !0;
  7375. },
  7376. runtime: "uni_app"
  7377. };
  7378. ft.useAdapters(_t);
  7379. var wt = ft,
  7380. vt = wt.init;
  7381. wt.init = function (e) {
  7382. e.env = e.spaceId;
  7383. var t = vt.call(this, e);
  7384. t.config.provider = "tencent", t.config.spaceId = e.spaceId;
  7385. var n = t.auth;
  7386. return t.auth = function (e) {
  7387. var t = n.call(this, e);
  7388. return ["linkAndRetrieveDataWithTicket", "signInAnonymously", "signOut", "getAccessToken", "getLoginState", "signInWithTicket", "getUserInfo"].forEach(function (e) {
  7389. var n;
  7390. t[e] = (n = t[e], function (e) {
  7391. e = e || {};
  7392. var _ee = ee(e),
  7393. t = _ee.success,
  7394. s = _ee.fail,
  7395. r = _ee.complete;
  7396. if (!(t || s || r)) return n.call(this, e);
  7397. n.call(this, e).then(function (e) {
  7398. t && t(e), r && r(e);
  7399. }, function (e) {
  7400. s && s(e), r && r(e);
  7401. });
  7402. }).bind(t);
  7403. }), t;
  7404. }, t.customAuth = t.auth, t;
  7405. };
  7406. var It = wt;
  7407. var St = /*#__PURE__*/function (_he) {
  7408. (0, _inherits2.default)(St, _he);
  7409. var _super8 = _createSuper(St);
  7410. function St() {
  7411. (0, _classCallCheck2.default)(this, St);
  7412. return _super8.apply(this, arguments);
  7413. }
  7414. (0, _createClass2.default)(St, [{
  7415. key: "getAccessToken",
  7416. value: function getAccessToken() {
  7417. var _this11 = this;
  7418. return new Promise(function (e, t) {
  7419. var n = "Anonymous_Access_token";
  7420. _this11.setAccessToken(n), e(n);
  7421. });
  7422. }
  7423. }, {
  7424. key: "setupRequest",
  7425. value: function setupRequest(e, t) {
  7426. var n = Object.assign({}, e, {
  7427. spaceId: this.config.spaceId,
  7428. timestamp: Date.now()
  7429. }),
  7430. s = {
  7431. "Content-Type": "application/json"
  7432. };
  7433. "auth" !== t && (n.token = this.accessToken, s["x-basement-token"] = this.accessToken), s["x-serverless-sign"] = le.sign(n, this.config.clientSecret);
  7434. var r = ue();
  7435. s["x-client-info"] = encodeURIComponent(JSON.stringify(r));
  7436. var _se = se(),
  7437. i = _se.token;
  7438. return s["x-client-token"] = i, {
  7439. url: this.config.requestUrl,
  7440. method: "POST",
  7441. data: n,
  7442. dataType: "json",
  7443. header: JSON.parse(JSON.stringify(s))
  7444. };
  7445. }
  7446. }, {
  7447. key: "uploadFileToOSS",
  7448. value: function uploadFileToOSS(_ref14) {
  7449. var _this12 = this;
  7450. var e = _ref14.url,
  7451. t = _ref14.formData,
  7452. n = _ref14.name,
  7453. s = _ref14.filePath,
  7454. r = _ref14.fileType,
  7455. i = _ref14.onUploadProgress;
  7456. return new Promise(function (o, a) {
  7457. var c = _this12.adapter.uploadFile({
  7458. url: e,
  7459. formData: t,
  7460. name: n,
  7461. filePath: s,
  7462. fileType: r,
  7463. success: function success(e) {
  7464. e && e.statusCode < 400 ? o(e) : a(new te({
  7465. code: "UPLOAD_FAILED",
  7466. message: "文件上传失败"
  7467. }));
  7468. },
  7469. fail: function fail(e) {
  7470. a(new te({
  7471. code: e.code || "UPLOAD_FAILED",
  7472. message: e.message || e.errMsg || "文件上传失败"
  7473. }));
  7474. }
  7475. });
  7476. "function" == typeof i && c && "function" == typeof c.onProgressUpdate && c.onProgressUpdate(function (e) {
  7477. i({
  7478. loaded: e.totalBytesSent,
  7479. total: e.totalBytesExpectedToSend
  7480. });
  7481. });
  7482. });
  7483. }
  7484. }, {
  7485. key: "uploadFile",
  7486. value: function uploadFile(_ref15) {
  7487. var _this13 = this;
  7488. var e = _ref15.filePath,
  7489. t = _ref15.cloudPath,
  7490. _ref15$fileType = _ref15.fileType,
  7491. n = _ref15$fileType === void 0 ? "image" : _ref15$fileType,
  7492. s = _ref15.onUploadProgress;
  7493. if (!t) throw new te({
  7494. code: "CLOUDPATH_REQUIRED",
  7495. message: "cloudPath不可为空"
  7496. });
  7497. var r;
  7498. return this.getOSSUploadOptionsFromPath({
  7499. cloudPath: t
  7500. }).then(function (t) {
  7501. var _t$result = t.result,
  7502. i = _t$result.url,
  7503. o = _t$result.formData,
  7504. a = _t$result.name;
  7505. r = t.result.fileUrl;
  7506. var c = {
  7507. url: i,
  7508. formData: o,
  7509. name: a,
  7510. filePath: e,
  7511. fileType: n
  7512. };
  7513. return _this13.uploadFileToOSS(Object.assign({}, c, {
  7514. onUploadProgress: s
  7515. }));
  7516. }).then(function () {
  7517. return _this13.reportOSSUpload({
  7518. cloudPath: t
  7519. });
  7520. }).then(function (t) {
  7521. return new Promise(function (n, s) {
  7522. t.success ? n({
  7523. success: !0,
  7524. filePath: e,
  7525. fileID: r
  7526. }) : s(new te({
  7527. code: "UPLOAD_FAILED",
  7528. message: "文件上传失败"
  7529. }));
  7530. });
  7531. });
  7532. }
  7533. }, {
  7534. key: "deleteFile",
  7535. value: function deleteFile(_ref16) {
  7536. var e = _ref16.fileList;
  7537. var t = {
  7538. method: "serverless.file.resource.delete",
  7539. params: JSON.stringify({
  7540. fileList: e
  7541. })
  7542. };
  7543. return this.request(this.setupRequest(t)).then(function (e) {
  7544. if (e.success) return e.result;
  7545. throw new te({
  7546. code: "DELETE_FILE_FAILED",
  7547. message: "删除文件失败"
  7548. });
  7549. });
  7550. }
  7551. }, {
  7552. key: "getTempFileURL",
  7553. value: function getTempFileURL() {
  7554. var _ref17 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  7555. e = _ref17.fileList,
  7556. t = _ref17.maxAge;
  7557. if (!Array.isArray(e) || 0 === e.length) throw new te({
  7558. code: "INVALID_PARAM",
  7559. message: "fileList的元素必须是非空的字符串"
  7560. });
  7561. var n = {
  7562. method: "serverless.file.resource.getTempFileURL",
  7563. params: JSON.stringify({
  7564. fileList: e,
  7565. maxAge: t
  7566. })
  7567. };
  7568. return this.request(this.setupRequest(n)).then(function (e) {
  7569. if (e.success) return {
  7570. fileList: e.result.fileList.map(function (e) {
  7571. return {
  7572. fileID: e.fileID,
  7573. tempFileURL: e.tempFileURL
  7574. };
  7575. })
  7576. };
  7577. throw new te({
  7578. code: "GET_TEMP_FILE_URL_FAILED",
  7579. message: "获取临时文件链接失败"
  7580. });
  7581. });
  7582. }
  7583. }]);
  7584. return St;
  7585. }(he);
  7586. var bt = {
  7587. init: function init(e) {
  7588. var t = new St(e),
  7589. n = {
  7590. signInAnonymously: function signInAnonymously() {
  7591. return t.authorize();
  7592. },
  7593. getLoginState: function getLoginState() {
  7594. return Promise.resolve(!1);
  7595. }
  7596. };
  7597. return t.auth = function () {
  7598. return n;
  7599. }, t.customAuth = t.auth, t;
  7600. }
  7601. },
  7602. kt = n(function (e, t) {
  7603. e.exports = r.enc.Hex;
  7604. });
  7605. function At() {
  7606. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
  7607. var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  7608. var n = t.data,
  7609. s = t.functionName,
  7610. r = t.method,
  7611. i = t.headers,
  7612. _t$signHeaderKeys = t.signHeaderKeys,
  7613. o = _t$signHeaderKeys === void 0 ? [] : _t$signHeaderKeys,
  7614. a = t.config,
  7615. c = Date.now(),
  7616. u = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function (e) {
  7617. var t = 16 * Math.random() | 0;
  7618. return ("x" === e ? t : 3 & t | 8).toString(16);
  7619. }),
  7620. l = Object.assign({}, i, {
  7621. "x-from-app-id": a.appId,
  7622. "x-from-env-id": a.envId,
  7623. "x-to-env-id": a.envId,
  7624. "x-from-instance-id": c,
  7625. "x-from-function-name": s,
  7626. "x-client-timestamp": c,
  7627. "x-alipay-source": "client",
  7628. "x-request-id": u,
  7629. "x-alipay-callid": u
  7630. }),
  7631. h = ["x-from-app-id", "x-from-env-id", "x-to-env-id", "x-from-instance-id", "x-from-function-name", "x-client-timestamp"].concat(o),
  7632. _ref18 = e.split("?") || [],
  7633. _ref19 = (0, _slicedToArray2.default)(_ref18, 2),
  7634. _ref19$ = _ref19[0],
  7635. d = _ref19$ === void 0 ? "" : _ref19$,
  7636. _ref19$2 = _ref19[1],
  7637. p = _ref19$2 === void 0 ? "" : _ref19$2,
  7638. f = function (e) {
  7639. var t = e.signedHeaders.join(";"),
  7640. n = e.signedHeaders.map(function (t) {
  7641. return "".concat(t.toLowerCase(), ":").concat(e.headers[t], "\n");
  7642. }).join(""),
  7643. s = ye(e.body).toString(kt),
  7644. r = "".concat(e.method.toUpperCase(), "\n").concat(e.path, "\n").concat(e.query, "\n").concat(n, "\n").concat(t, "\n").concat(s, "\n"),
  7645. i = ye(r).toString(kt),
  7646. o = "HMAC-SHA256\n".concat(e.timestamp, "\n").concat(i, "\n"),
  7647. a = _e(o, e.secretKey).toString(kt);
  7648. return "HMAC-SHA256 Credential=".concat(e.secretId, ", SignedHeaders=").concat(t, ", Signature=").concat(a);
  7649. }({
  7650. path: d,
  7651. query: p,
  7652. method: r,
  7653. headers: l,
  7654. timestamp: c,
  7655. body: JSON.stringify(n),
  7656. secretId: a.secretId,
  7657. secretKey: a.secretKey,
  7658. signedHeaders: h.sort()
  7659. });
  7660. return {
  7661. url: "".concat(a.endpoint).concat(e.replace(/^\//, "")),
  7662. headers: Object.assign({}, l, {
  7663. Authorization: f
  7664. })
  7665. };
  7666. }
  7667. function Pt(_ref20) {
  7668. var e = _ref20.url,
  7669. t = _ref20.data,
  7670. _ref20$method = _ref20.method,
  7671. n = _ref20$method === void 0 ? "POST" : _ref20$method,
  7672. _ref20$headers = _ref20.headers,
  7673. s = _ref20$headers === void 0 ? {} : _ref20$headers;
  7674. return new Promise(function (r, i) {
  7675. ne.request({
  7676. url: e,
  7677. method: n,
  7678. data: t,
  7679. header: s,
  7680. dataType: "json",
  7681. complete: function complete() {
  7682. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  7683. if (!e.statusCode || e.statusCode >= 400) {
  7684. var _ref21 = e.data || {},
  7685. _t10 = _ref21.errMsg;
  7686. return i(new te({
  7687. code: "SYS_ERR",
  7688. message: _t10 || e.errMsg || "request:fail"
  7689. }));
  7690. }
  7691. r({
  7692. status: e.statusCode,
  7693. data: e.data,
  7694. headers: e.header
  7695. });
  7696. }
  7697. });
  7698. });
  7699. }
  7700. function Tt(e, t) {
  7701. var n = e.path,
  7702. s = e.data,
  7703. _e$method = e.method,
  7704. r = _e$method === void 0 ? "GET" : _e$method,
  7705. _At = At(n, {
  7706. functionName: "",
  7707. data: s,
  7708. method: r,
  7709. headers: {
  7710. "x-alipay-cloud-mode": "oss",
  7711. "x-data-api-type": "oss",
  7712. "x-expire-timestamp": Date.now() + 6e4
  7713. },
  7714. signHeaderKeys: ["x-data-api-type", "x-expire-timestamp"],
  7715. config: t
  7716. }),
  7717. i = _At.url,
  7718. o = _At.headers;
  7719. return Pt({
  7720. url: i,
  7721. data: s,
  7722. method: r,
  7723. headers: o
  7724. }).then(function (e) {
  7725. var t = e.data || {};
  7726. if (!t.success) throw new te({
  7727. code: e.code,
  7728. message: e.message,
  7729. requestId: e.trace_id
  7730. });
  7731. return t.data || {};
  7732. }).catch(function (e) {
  7733. throw new te({
  7734. code: e.errCode,
  7735. message: e.errMsg,
  7736. requestId: e.requestId
  7737. });
  7738. });
  7739. }
  7740. function Ct() {
  7741. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
  7742. var t = e.trim().replace(/^cloud:\/\//, ""),
  7743. n = t.indexOf("/");
  7744. if (n <= 0) throw new te({
  7745. code: "INVALID_PARAM",
  7746. message: "fileID不合法"
  7747. });
  7748. var s = t.substring(0, n),
  7749. r = t.substring(n + 1);
  7750. return s !== this.config.envId && console.warn("file ".concat(e, " does not belong to env ").concat(this.config.envId)), r;
  7751. }
  7752. var xt = /*#__PURE__*/function () {
  7753. function xt(e) {
  7754. (0, _classCallCheck2.default)(this, xt);
  7755. ["spaceId", "spaceAppId", "accessKey", "secretKey"].forEach(function (t) {
  7756. if (!Object.prototype.hasOwnProperty.call(e, t)) throw new Error("".concat(t, " required"));
  7757. });
  7758. var t = e.spaceAppId,
  7759. n = e.accessKey,
  7760. s = (0, _objectWithoutProperties2.default)(e, _excluded);
  7761. this.config = Object.assign({}, {
  7762. endpoint: e.endpoint || "https://".concat(e.envId, ".api-hz.cloudbasefunction.cn/"),
  7763. envId: e.spaceId,
  7764. appId: t,
  7765. secretId: n
  7766. }, s);
  7767. }
  7768. (0, _createClass2.default)(xt, [{
  7769. key: "callFunction",
  7770. value: function callFunction(e) {
  7771. return function (e, t) {
  7772. var n = e.name,
  7773. s = e.data,
  7774. r = "POST",
  7775. _At2 = At("/functions/invokeFunction", {
  7776. functionName: n,
  7777. data: s,
  7778. method: r,
  7779. headers: {
  7780. "x-to-function-name": n
  7781. },
  7782. signHeaderKeys: ["x-to-function-name"],
  7783. config: t
  7784. }),
  7785. i = _At2.url,
  7786. o = _At2.headers;
  7787. return Pt({
  7788. url: i,
  7789. data: s,
  7790. method: r,
  7791. headers: o
  7792. }).then(function (e) {
  7793. return e.errCode = 0, e.success = !0, e.requestId = e.requestID || e.requestId, e.result = e.data, delete e.requestID, delete e.data, e;
  7794. }).catch(function (e) {
  7795. throw new te({
  7796. code: e.errCode,
  7797. message: e.errMsg,
  7798. requestId: e.requestId
  7799. });
  7800. });
  7801. }(e, this.config);
  7802. }
  7803. }, {
  7804. key: "uploadFileToOSS",
  7805. value: function uploadFileToOSS(_ref22) {
  7806. var e = _ref22.url,
  7807. t = _ref22.filePath,
  7808. n = _ref22.fileType,
  7809. s = _ref22.formData,
  7810. r = _ref22.onUploadProgress;
  7811. return new Promise(function (i, o) {
  7812. var a = ne.uploadFile({
  7813. url: e,
  7814. filePath: t,
  7815. fileType: n,
  7816. formData: s,
  7817. success: function success(e) {
  7818. e && e.statusCode < 400 ? i(e) : o(new te({
  7819. code: "UPLOAD_FAILED",
  7820. message: "文件上传失败"
  7821. }));
  7822. },
  7823. fail: function fail(e) {
  7824. o(new te({
  7825. code: e.code || "UPLOAD_FAILED",
  7826. message: e.message || e.errMsg || "文件上传失败"
  7827. }));
  7828. }
  7829. });
  7830. "function" == typeof r && a && "function" == typeof a.onProgressUpdate && a.onProgressUpdate(function (e) {
  7831. r({
  7832. loaded: e.totalBytesSent,
  7833. total: e.totalBytesExpectedToSend
  7834. });
  7835. });
  7836. });
  7837. }
  7838. }, {
  7839. key: "uploadFile",
  7840. value: function () {
  7841. var _uploadFile2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee34(_ref23) {
  7842. var e, _ref23$cloudPath, t, _ref23$fileType, n, s, r, i, o, a, c;
  7843. return _regenerator.default.wrap(function _callee34$(_context34) {
  7844. while (1) {
  7845. switch (_context34.prev = _context34.next) {
  7846. case 0:
  7847. e = _ref23.filePath, _ref23$cloudPath = _ref23.cloudPath, t = _ref23$cloudPath === void 0 ? "" : _ref23$cloudPath, _ref23$fileType = _ref23.fileType, n = _ref23$fileType === void 0 ? "image" : _ref23$fileType, s = _ref23.onUploadProgress;
  7848. if (!("string" !== f(t))) {
  7849. _context34.next = 3;
  7850. break;
  7851. }
  7852. throw new te({
  7853. code: "INVALID_PARAM",
  7854. message: "cloudPath必须为字符串类型"
  7855. });
  7856. case 3:
  7857. if (t = t.trim()) {
  7858. _context34.next = 5;
  7859. break;
  7860. }
  7861. throw new te({
  7862. code: "INVALID_PARAM",
  7863. message: "cloudPath不可为空"
  7864. });
  7865. case 5:
  7866. if (!/:\/\//.test(t)) {
  7867. _context34.next = 7;
  7868. break;
  7869. }
  7870. throw new te({
  7871. code: "INVALID_PARAM",
  7872. message: "cloudPath不合法"
  7873. });
  7874. case 7:
  7875. _context34.next = 9;
  7876. return Tt({
  7877. path: "/".concat(t.replace(/^\//, ""), "?post_url")
  7878. }, this.config);
  7879. case 9:
  7880. r = _context34.sent;
  7881. i = r.file_id;
  7882. o = r.upload_url;
  7883. a = r.form_data;
  7884. c = a && a.reduce(function (e, t) {
  7885. return e[t.key] = t.value, e;
  7886. }, {});
  7887. return _context34.abrupt("return", this.uploadFileToOSS({
  7888. url: o,
  7889. filePath: e,
  7890. fileType: n,
  7891. formData: c,
  7892. onUploadProgress: s
  7893. }).then(function () {
  7894. return {
  7895. fileID: i
  7896. };
  7897. }));
  7898. case 15:
  7899. case "end":
  7900. return _context34.stop();
  7901. }
  7902. }
  7903. }, _callee34, this);
  7904. }));
  7905. function uploadFile(_x31) {
  7906. return _uploadFile2.apply(this, arguments);
  7907. }
  7908. return uploadFile;
  7909. }()
  7910. }, {
  7911. key: "getTempFileURL",
  7912. value: function () {
  7913. var _getTempFileURL = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee35(_ref24) {
  7914. var _this14 = this;
  7915. var e;
  7916. return _regenerator.default.wrap(function _callee35$(_context35) {
  7917. while (1) {
  7918. switch (_context35.prev = _context35.next) {
  7919. case 0:
  7920. e = _ref24.fileList;
  7921. return _context35.abrupt("return", new Promise(function (t, n) {
  7922. (!e || e.length < 0) && n(new te({
  7923. errCode: "INVALID_PARAM",
  7924. errMsg: "fileList不能为空数组"
  7925. })), e.length > 50 && n(new te({
  7926. errCode: "INVALID_PARAM",
  7927. errMsg: "fileList数组长度不能超过50"
  7928. }));
  7929. var s = [];
  7930. var _iterator5 = _createForOfIteratorHelper(e),
  7931. _step5;
  7932. try {
  7933. for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
  7934. var _t11 = _step5.value;
  7935. "string" !== f(_t11) && n(new te({
  7936. errCode: "INVALID_PARAM",
  7937. errMsg: "fileList的元素必须是非空的字符串"
  7938. }));
  7939. var _e17 = Ct.call(_this14, _t11);
  7940. s.push({
  7941. file_id: _e17,
  7942. expire: 600
  7943. });
  7944. }
  7945. } catch (err) {
  7946. _iterator5.e(err);
  7947. } finally {
  7948. _iterator5.f();
  7949. }
  7950. Tt({
  7951. path: "/?download_url",
  7952. data: {
  7953. file_list: s
  7954. },
  7955. method: "POST"
  7956. }, _this14.config).then(function (e) {
  7957. var _e$file_list = e.file_list,
  7958. n = _e$file_list === void 0 ? [] : _e$file_list;
  7959. t({
  7960. fileList: n.map(function (e) {
  7961. return {
  7962. fileID: e.file_id,
  7963. tempFileURL: e.download_url
  7964. };
  7965. })
  7966. });
  7967. }).catch(function (e) {
  7968. return n(e);
  7969. });
  7970. }));
  7971. case 2:
  7972. case "end":
  7973. return _context35.stop();
  7974. }
  7975. }
  7976. }, _callee35);
  7977. }));
  7978. function getTempFileURL(_x32) {
  7979. return _getTempFileURL.apply(this, arguments);
  7980. }
  7981. return getTempFileURL;
  7982. }()
  7983. }, {
  7984. key: "deleteFile",
  7985. value: function () {
  7986. var _deleteFile = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee36(_ref25) {
  7987. var _this15 = this;
  7988. var e;
  7989. return _regenerator.default.wrap(function _callee36$(_context36) {
  7990. while (1) {
  7991. switch (_context36.prev = _context36.next) {
  7992. case 0:
  7993. e = _ref25.fileList;
  7994. return _context36.abrupt("return", new Promise(function (t, n) {
  7995. (!e || e.length < 0) && n(new te({
  7996. errCode: "INVALID_PARAM",
  7997. errMsg: "fileList不能为空数组"
  7998. })), e.length > 50 && n(new te({
  7999. errCode: "INVALID_PARAM",
  8000. errMsg: "fileList数组长度不能超过50"
  8001. }));
  8002. var s = [];
  8003. var _iterator6 = _createForOfIteratorHelper(e),
  8004. _step6;
  8005. try {
  8006. for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
  8007. var _t12 = _step6.value;
  8008. "string" !== f(_t12) && n(new te({
  8009. errCode: "INVALID_PARAM",
  8010. errMsg: "fileList的元素必须是非空的字符串"
  8011. })), s.push(Ct.call(_this15, _t12));
  8012. }
  8013. } catch (err) {
  8014. _iterator6.e(err);
  8015. } finally {
  8016. _iterator6.f();
  8017. }
  8018. Tt({
  8019. path: "/?delete",
  8020. data: {
  8021. file_list: s
  8022. },
  8023. method: "POST"
  8024. }, _this15.config).then(function (e) {
  8025. var _e$file_list2 = e.file_list,
  8026. n = _e$file_list2 === void 0 ? [] : _e$file_list2;
  8027. t({
  8028. fileList: n.map(function (e) {
  8029. return {
  8030. fileID: e.file_id,
  8031. tempFileURL: e.download_url
  8032. };
  8033. })
  8034. });
  8035. }).catch(function (e) {
  8036. return n(e);
  8037. });
  8038. }));
  8039. case 2:
  8040. case "end":
  8041. return _context36.stop();
  8042. }
  8043. }
  8044. }, _callee36);
  8045. }));
  8046. function deleteFile(_x33) {
  8047. return _deleteFile.apply(this, arguments);
  8048. }
  8049. return deleteFile;
  8050. }()
  8051. }]);
  8052. return xt;
  8053. }();
  8054. var Ot = {
  8055. init: function init(e) {
  8056. e.envId = e.spaceId, e.provider = "alipay";
  8057. var t = new xt(e);
  8058. return t.auth = function () {
  8059. return {
  8060. signInAnonymously: function signInAnonymously() {
  8061. return Promise.resolve();
  8062. },
  8063. getLoginState: function getLoginState() {
  8064. return Promise.resolve(!0);
  8065. }
  8066. };
  8067. }, t;
  8068. }
  8069. };
  8070. function Et(_ref26) {
  8071. var e = _ref26.data;
  8072. var t;
  8073. t = ue();
  8074. var n = JSON.parse(JSON.stringify(e || {}));
  8075. if (Object.assign(n, {
  8076. clientInfo: t
  8077. }), !n.uniIdToken) {
  8078. var _se2 = se(),
  8079. _e18 = _se2.token;
  8080. _e18 && (n.uniIdToken = _e18);
  8081. }
  8082. return n;
  8083. }
  8084. function Lt() {
  8085. return _Lt.apply(this, arguments);
  8086. }
  8087. function _Lt() {
  8088. _Lt = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee57() {
  8089. var _this28 = this;
  8090. var _ref68,
  8091. e,
  8092. t,
  8093. _this$__dev__,
  8094. n,
  8095. s,
  8096. r,
  8097. i,
  8098. o,
  8099. a,
  8100. _args6 = arguments;
  8101. return _regenerator.default.wrap(function _callee57$(_context57) {
  8102. while (1) {
  8103. switch (_context57.prev = _context57.next) {
  8104. case 0:
  8105. _ref68 = _args6.length > 0 && _args6[0] !== undefined ? _args6[0] : {}, e = _ref68.name, t = _ref68.data;
  8106. _context57.next = 3;
  8107. return this.__dev__.initLocalNetwork();
  8108. case 3:
  8109. _this$__dev__ = this.__dev__, n = _this$__dev__.localAddress, s = _this$__dev__.localPort, r = {
  8110. aliyun: "aliyun",
  8111. tencent: "tcb",
  8112. alipay: "alipay"
  8113. }[this.config.provider], i = this.config.spaceId, o = "http://".concat(n, ":").concat(s, "/system/check-function"), a = "http://".concat(n, ":").concat(s, "/cloudfunctions/").concat(e);
  8114. return _context57.abrupt("return", new Promise(function (t, n) {
  8115. ne.request({
  8116. method: "POST",
  8117. url: o,
  8118. data: {
  8119. name: e,
  8120. platform: P,
  8121. provider: r,
  8122. spaceId: i
  8123. },
  8124. timeout: 3e3,
  8125. success: function success(e) {
  8126. t(e);
  8127. },
  8128. fail: function fail() {
  8129. t({
  8130. data: {
  8131. code: "NETWORK_ERROR",
  8132. message: "连接本地调试服务失败,请检查客户端是否和主机在同一局域网下,自动切换为已部署的云函数。"
  8133. }
  8134. });
  8135. }
  8136. });
  8137. }).then(function () {
  8138. var _ref69 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  8139. e = _ref69.data;
  8140. var _ref70 = e || {},
  8141. t = _ref70.code,
  8142. n = _ref70.message;
  8143. return {
  8144. code: 0 === t ? 0 : t || "SYS_ERR",
  8145. message: n || "SYS_ERR"
  8146. };
  8147. }).then(function (_ref71) {
  8148. var n = _ref71.code,
  8149. s = _ref71.message;
  8150. if (0 !== n) {
  8151. switch (n) {
  8152. case "MODULE_ENCRYPTED":
  8153. console.error("\u6B64\u4E91\u51FD\u6570\uFF08".concat(e, "\uFF09\u4F9D\u8D56\u52A0\u5BC6\u516C\u5171\u6A21\u5757\u4E0D\u53EF\u672C\u5730\u8C03\u8BD5\uFF0C\u81EA\u52A8\u5207\u6362\u4E3A\u4E91\u7AEF\u5DF2\u90E8\u7F72\u7684\u4E91\u51FD\u6570"));
  8154. break;
  8155. case "FUNCTION_ENCRYPTED":
  8156. console.error("\u6B64\u4E91\u51FD\u6570\uFF08".concat(e, "\uFF09\u5DF2\u52A0\u5BC6\u4E0D\u53EF\u672C\u5730\u8C03\u8BD5\uFF0C\u81EA\u52A8\u5207\u6362\u4E3A\u4E91\u7AEF\u5DF2\u90E8\u7F72\u7684\u4E91\u51FD\u6570"));
  8157. break;
  8158. case "ACTION_ENCRYPTED":
  8159. console.error(s || "需要访问加密的uni-clientDB-action,自动切换为云端环境");
  8160. break;
  8161. case "NETWORK_ERROR":
  8162. {
  8163. var _e30 = "连接本地调试服务失败,请检查客户端是否和主机在同一局域网下";
  8164. throw console.error(_e30), new Error(_e30);
  8165. }
  8166. case "SWITCH_TO_CLOUD":
  8167. break;
  8168. default:
  8169. {
  8170. var _e31 = "\u68C0\u6D4B\u672C\u5730\u8C03\u8BD5\u670D\u52A1\u51FA\u73B0\u9519\u8BEF\uFF1A".concat(s, "\uFF0C\u8BF7\u68C0\u67E5\u7F51\u7EDC\u73AF\u5883\u6216\u91CD\u542F\u5BA2\u6237\u7AEF\u518D\u8BD5");
  8171. throw console.error(_e31), new Error(_e31);
  8172. }
  8173. }
  8174. return _this28._callCloudFunction({
  8175. name: e,
  8176. data: t
  8177. });
  8178. }
  8179. return new Promise(function (e, n) {
  8180. var s = Et.call(_this28, {
  8181. data: t
  8182. });
  8183. ne.request({
  8184. method: "POST",
  8185. url: a,
  8186. data: {
  8187. provider: r,
  8188. platform: P,
  8189. param: s
  8190. },
  8191. success: function success() {
  8192. var _ref72 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  8193. t = _ref72.statusCode,
  8194. s = _ref72.data;
  8195. return !t || t >= 400 ? n(new te({
  8196. code: s.code || "SYS_ERR",
  8197. message: s.message || "request:fail"
  8198. })) : e({
  8199. result: s
  8200. });
  8201. },
  8202. fail: function fail(e) {
  8203. n(new te({
  8204. code: e.code || e.errCode || "SYS_ERR",
  8205. message: e.message || e.errMsg || "request:fail"
  8206. }));
  8207. }
  8208. });
  8209. });
  8210. }));
  8211. case 5:
  8212. case "end":
  8213. return _context57.stop();
  8214. }
  8215. }
  8216. }, _callee57, this);
  8217. }));
  8218. return _Lt.apply(this, arguments);
  8219. }
  8220. var Rt = [{
  8221. rule: /fc_function_not_found|FUNCTION_NOT_FOUND/,
  8222. content: ",云函数[{functionName}]在云端不存在,请检查此云函数名称是否正确以及该云函数是否已上传到服务空间",
  8223. mode: "append"
  8224. }];
  8225. var Ut = /[\\^$.*+?()[\]{}|]/g,
  8226. Nt = RegExp(Ut.source);
  8227. function Dt(e, t, n) {
  8228. return e.replace(new RegExp((s = t) && Nt.test(s) ? s.replace(Ut, "\\$&") : s, "g"), n);
  8229. var s;
  8230. }
  8231. var Mt = "none",
  8232. qt = "request",
  8233. Ft = "response",
  8234. Kt = "both";
  8235. var jt = /*#__PURE__*/function () {
  8236. function jt() {
  8237. var _ref27 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  8238. e = _ref27.secretType,
  8239. t = _ref27.uniCloudIns;
  8240. (0, _classCallCheck2.default)(this, jt);
  8241. this.clientType = "", this.secretType = e || Mt, this.uniCloudIns = t;
  8242. var _this$uniCloudIns$con = this.uniCloudIns.config,
  8243. n = _this$uniCloudIns$con.provider,
  8244. s = _this$uniCloudIns$con.spaceId;
  8245. var r;
  8246. this.provider = n, this.spaceId = s, this.scopedGlobalCache = (r = this.uniCloudIns, L("_globalUniCloudSecureNetworkCache__{spaceId}".replace("{spaceId}", r.config.spaceId)));
  8247. }
  8248. (0, _createClass2.default)(jt, [{
  8249. key: "getSystemInfo",
  8250. value: function getSystemInfo() {
  8251. return this._systemInfo || (this._systemInfo = ae()), this._systemInfo;
  8252. }
  8253. }, {
  8254. key: "appId",
  8255. get: function get() {
  8256. return this.getSystemInfo().appId;
  8257. }
  8258. }, {
  8259. key: "deviceId",
  8260. get: function get() {
  8261. return this.getSystemInfo().deviceId;
  8262. }
  8263. }, {
  8264. key: "encryptData",
  8265. value: function () {
  8266. var _encryptData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee37(e) {
  8267. return _regenerator.default.wrap(function _callee37$(_context37) {
  8268. while (1) {
  8269. switch (_context37.prev = _context37.next) {
  8270. case 0:
  8271. return _context37.abrupt("return", this.secretType === Mt ? e : this.platformEncryptData(e));
  8272. case 1:
  8273. case "end":
  8274. return _context37.stop();
  8275. }
  8276. }
  8277. }, _callee37, this);
  8278. }));
  8279. function encryptData(_x34) {
  8280. return _encryptData.apply(this, arguments);
  8281. }
  8282. return encryptData;
  8283. }()
  8284. }, {
  8285. key: "decryptResult",
  8286. value: function () {
  8287. var _decryptResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee38(e) {
  8288. var _ref28, t, n;
  8289. return _regenerator.default.wrap(function _callee38$(_context38) {
  8290. while (1) {
  8291. switch (_context38.prev = _context38.next) {
  8292. case 0:
  8293. if (!(this.secretType === Mt)) {
  8294. _context38.next = 2;
  8295. break;
  8296. }
  8297. return _context38.abrupt("return", e);
  8298. case 2:
  8299. _ref28 = e || {}, t = _ref28.errCode, n = _ref28.content;
  8300. return _context38.abrupt("return", t || !n ? e : this.secretType === qt ? n : this.platformDecryptResult(e));
  8301. case 4:
  8302. case "end":
  8303. return _context38.stop();
  8304. }
  8305. }
  8306. }, _callee38, this);
  8307. }));
  8308. function decryptResult(_x35) {
  8309. return _decryptResult.apply(this, arguments);
  8310. }
  8311. return decryptResult;
  8312. }()
  8313. }, {
  8314. key: "wrapVerifyClientCallFunction",
  8315. value: function wrapVerifyClientCallFunction(e) {
  8316. var t = this;
  8317. return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee39() {
  8318. var _ref30,
  8319. n,
  8320. _ref30$data,
  8321. s,
  8322. r,
  8323. _args39 = arguments;
  8324. return _regenerator.default.wrap(function _callee39$(_context39) {
  8325. while (1) {
  8326. switch (_context39.prev = _context39.next) {
  8327. case 0:
  8328. _ref30 = _args39.length > 0 && _args39[0] !== undefined ? _args39[0] : {}, n = _ref30.name, _ref30$data = _ref30.data, s = _ref30$data === void 0 ? {} : _ref30$data;
  8329. _context39.next = 3;
  8330. return t.prepare();
  8331. case 3:
  8332. _context39.next = 5;
  8333. return t.platformGetSignOption();
  8334. case 5:
  8335. (s = JSON.parse(JSON.stringify(s)))._uniCloudOptions = _context39.sent;
  8336. _context39.next = 8;
  8337. return e({
  8338. name: n,
  8339. data: s
  8340. });
  8341. case 8:
  8342. r = _context39.sent;
  8343. _context39.t0 = t.isClientKeyNotFound(r);
  8344. if (!_context39.t0) {
  8345. _context39.next = 19;
  8346. break;
  8347. }
  8348. _context39.next = 13;
  8349. return t.prepare({
  8350. forceUpdate: !0
  8351. });
  8352. case 13:
  8353. _context39.next = 15;
  8354. return t.platformGetSignOption();
  8355. case 15:
  8356. s._uniCloudOptions = _context39.sent;
  8357. _context39.next = 18;
  8358. return e({
  8359. name: n,
  8360. data: s
  8361. });
  8362. case 18:
  8363. r = _context39.sent;
  8364. case 19:
  8365. return _context39.abrupt("return", r);
  8366. case 20:
  8367. case "end":
  8368. return _context39.stop();
  8369. }
  8370. }
  8371. }, _callee39);
  8372. }));
  8373. }
  8374. }, {
  8375. key: "wrapEncryptDataCallFunction",
  8376. value: function wrapEncryptDataCallFunction(e) {
  8377. var t = this;
  8378. return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee40() {
  8379. var _ref32,
  8380. n,
  8381. _ref32$data,
  8382. s,
  8383. r,
  8384. i,
  8385. _r3,
  8386. _args40 = arguments;
  8387. return _regenerator.default.wrap(function _callee40$(_context40) {
  8388. while (1) {
  8389. switch (_context40.prev = _context40.next) {
  8390. case 0:
  8391. _ref32 = _args40.length > 0 && _args40[0] !== undefined ? _args40[0] : {}, n = _ref32.name, _ref32$data = _ref32.data, s = _ref32$data === void 0 ? {} : _ref32$data;
  8392. _context40.next = 3;
  8393. return t.prepare();
  8394. case 3:
  8395. _context40.next = 5;
  8396. return t.encryptData(s);
  8397. case 5:
  8398. r = _context40.sent;
  8399. _context40.next = 8;
  8400. return e({
  8401. name: n,
  8402. data: r
  8403. });
  8404. case 8:
  8405. i = _context40.sent;
  8406. if (!t.isClientKeyNotFound(i)) {
  8407. _context40.next = 21;
  8408. break;
  8409. }
  8410. _context40.next = 12;
  8411. return t.prepare({
  8412. forceUpdate: !0
  8413. });
  8414. case 12:
  8415. _context40.next = 14;
  8416. return t.encryptData(s);
  8417. case 14:
  8418. _r3 = _context40.sent;
  8419. _context40.next = 17;
  8420. return t.platformGetSignOption();
  8421. case 17:
  8422. s._uniCloudOptions = _context40.sent;
  8423. _context40.next = 20;
  8424. return e({
  8425. name: n,
  8426. data: _r3
  8427. });
  8428. case 20:
  8429. i = _context40.sent;
  8430. case 21:
  8431. _context40.next = 23;
  8432. return t.decryptResult(i.result);
  8433. case 23:
  8434. i.result = _context40.sent;
  8435. return _context40.abrupt("return", i);
  8436. case 25:
  8437. case "end":
  8438. return _context40.stop();
  8439. }
  8440. }
  8441. }, _callee40);
  8442. }));
  8443. }
  8444. }]);
  8445. return jt;
  8446. }();
  8447. /*! MIT License. Copyright 2015-2018 Richard Moore <me@ricmoo.com>. See LICENSE.txt. */
  8448. function Bt(e) {
  8449. return parseInt(e) === e;
  8450. }
  8451. function $t(e) {
  8452. if (!Bt(e.length)) return !1;
  8453. for (var t = 0; t < e.length; t++) {
  8454. if (!Bt(e[t]) || e[t] < 0 || e[t] > 255) return !1;
  8455. }
  8456. return !0;
  8457. }
  8458. function Wt(e, t) {
  8459. if (e.buffer && "Uint8Array" === e.name) return t && (e = e.slice ? e.slice() : Array.prototype.slice.call(e)), e;
  8460. if (Array.isArray(e)) {
  8461. if (!$t(e)) throw new Error("Array contains invalid value: " + e);
  8462. return new Uint8Array(e);
  8463. }
  8464. if (Bt(e.length) && $t(e)) return new Uint8Array(e);
  8465. throw new Error("unsupported array-like object");
  8466. }
  8467. function Ht(e) {
  8468. return new Uint8Array(e);
  8469. }
  8470. function zt(e, t, n, s, r) {
  8471. null == s && null == r || (e = e.slice ? e.slice(s, r) : Array.prototype.slice.call(e, s, r)), t.set(e, n);
  8472. }
  8473. var Jt,
  8474. Vt = {
  8475. toBytes: function toBytes(e) {
  8476. var t = [],
  8477. n = 0;
  8478. for (e = encodeURI(e); n < e.length;) {
  8479. var s = e.charCodeAt(n++);
  8480. 37 === s ? (t.push(parseInt(e.substr(n, 2), 16)), n += 2) : t.push(s);
  8481. }
  8482. return Wt(t);
  8483. },
  8484. fromBytes: function fromBytes(e) {
  8485. for (var t = [], n = 0; n < e.length;) {
  8486. var s = e[n];
  8487. s < 128 ? (t.push(String.fromCharCode(s)), n++) : s > 191 && s < 224 ? (t.push(String.fromCharCode((31 & s) << 6 | 63 & e[n + 1])), n += 2) : (t.push(String.fromCharCode((15 & s) << 12 | (63 & e[n + 1]) << 6 | 63 & e[n + 2])), n += 3);
  8488. }
  8489. return t.join("");
  8490. }
  8491. },
  8492. Gt = (Jt = "0123456789abcdef", {
  8493. toBytes: function toBytes(e) {
  8494. for (var t = [], n = 0; n < e.length; n += 2) {
  8495. t.push(parseInt(e.substr(n, 2), 16));
  8496. }
  8497. return t;
  8498. },
  8499. fromBytes: function fromBytes(e) {
  8500. for (var t = [], n = 0; n < e.length; n++) {
  8501. var s = e[n];
  8502. t.push(Jt[(240 & s) >> 4] + Jt[15 & s]);
  8503. }
  8504. return t.join("");
  8505. }
  8506. }),
  8507. Yt = {
  8508. 16: 10,
  8509. 24: 12,
  8510. 32: 14
  8511. },
  8512. Qt = [1, 2, 4, 8, 16, 32, 64, 128, 27, 54, 108, 216, 171, 77, 154, 47, 94, 188, 99, 198, 151, 53, 106, 212, 179, 125, 250, 239, 197, 145],
  8513. Xt = [99, 124, 119, 123, 242, 107, 111, 197, 48, 1, 103, 43, 254, 215, 171, 118, 202, 130, 201, 125, 250, 89, 71, 240, 173, 212, 162, 175, 156, 164, 114, 192, 183, 253, 147, 38, 54, 63, 247, 204, 52, 165, 229, 241, 113, 216, 49, 21, 4, 199, 35, 195, 24, 150, 5, 154, 7, 18, 128, 226, 235, 39, 178, 117, 9, 131, 44, 26, 27, 110, 90, 160, 82, 59, 214, 179, 41, 227, 47, 132, 83, 209, 0, 237, 32, 252, 177, 91, 106, 203, 190, 57, 74, 76, 88, 207, 208, 239, 170, 251, 67, 77, 51, 133, 69, 249, 2, 127, 80, 60, 159, 168, 81, 163, 64, 143, 146, 157, 56, 245, 188, 182, 218, 33, 16, 255, 243, 210, 205, 12, 19, 236, 95, 151, 68, 23, 196, 167, 126, 61, 100, 93, 25, 115, 96, 129, 79, 220, 34, 42, 144, 136, 70, 238, 184, 20, 222, 94, 11, 219, 224, 50, 58, 10, 73, 6, 36, 92, 194, 211, 172, 98, 145, 149, 228, 121, 231, 200, 55, 109, 141, 213, 78, 169, 108, 86, 244, 234, 101, 122, 174, 8, 186, 120, 37, 46, 28, 166, 180, 198, 232, 221, 116, 31, 75, 189, 139, 138, 112, 62, 181, 102, 72, 3, 246, 14, 97, 53, 87, 185, 134, 193, 29, 158, 225, 248, 152, 17, 105, 217, 142, 148, 155, 30, 135, 233, 206, 85, 40, 223, 140, 161, 137, 13, 191, 230, 66, 104, 65, 153, 45, 15, 176, 84, 187, 22],
  8514. Zt = [82, 9, 106, 213, 48, 54, 165, 56, 191, 64, 163, 158, 129, 243, 215, 251, 124, 227, 57, 130, 155, 47, 255, 135, 52, 142, 67, 68, 196, 222, 233, 203, 84, 123, 148, 50, 166, 194, 35, 61, 238, 76, 149, 11, 66, 250, 195, 78, 8, 46, 161, 102, 40, 217, 36, 178, 118, 91, 162, 73, 109, 139, 209, 37, 114, 248, 246, 100, 134, 104, 152, 22, 212, 164, 92, 204, 93, 101, 182, 146, 108, 112, 72, 80, 253, 237, 185, 218, 94, 21, 70, 87, 167, 141, 157, 132, 144, 216, 171, 0, 140, 188, 211, 10, 247, 228, 88, 5, 184, 179, 69, 6, 208, 44, 30, 143, 202, 63, 15, 2, 193, 175, 189, 3, 1, 19, 138, 107, 58, 145, 17, 65, 79, 103, 220, 234, 151, 242, 207, 206, 240, 180, 230, 115, 150, 172, 116, 34, 231, 173, 53, 133, 226, 249, 55, 232, 28, 117, 223, 110, 71, 241, 26, 113, 29, 41, 197, 137, 111, 183, 98, 14, 170, 24, 190, 27, 252, 86, 62, 75, 198, 210, 121, 32, 154, 219, 192, 254, 120, 205, 90, 244, 31, 221, 168, 51, 136, 7, 199, 49, 177, 18, 16, 89, 39, 128, 236, 95, 96, 81, 127, 169, 25, 181, 74, 13, 45, 229, 122, 159, 147, 201, 156, 239, 160, 224, 59, 77, 174, 42, 245, 176, 200, 235, 187, 60, 131, 83, 153, 97, 23, 43, 4, 126, 186, 119, 214, 38, 225, 105, 20, 99, 85, 33, 12, 125],
  8515. en = [3328402341, 4168907908, 4000806809, 4135287693, 4294111757, 3597364157, 3731845041, 2445657428, 1613770832, 33620227, 3462883241, 1445669757, 3892248089, 3050821474, 1303096294, 3967186586, 2412431941, 528646813, 2311702848, 4202528135, 4026202645, 2992200171, 2387036105, 4226871307, 1101901292, 3017069671, 1604494077, 1169141738, 597466303, 1403299063, 3832705686, 2613100635, 1974974402, 3791519004, 1033081774, 1277568618, 1815492186, 2118074177, 4126668546, 2211236943, 1748251740, 1369810420, 3521504564, 4193382664, 3799085459, 2883115123, 1647391059, 706024767, 134480908, 2512897874, 1176707941, 2646852446, 806885416, 932615841, 168101135, 798661301, 235341577, 605164086, 461406363, 3756188221, 3454790438, 1311188841, 2142417613, 3933566367, 302582043, 495158174, 1479289972, 874125870, 907746093, 3698224818, 3025820398, 1537253627, 2756858614, 1983593293, 3084310113, 2108928974, 1378429307, 3722699582, 1580150641, 327451799, 2790478837, 3117535592, 0, 3253595436, 1075847264, 3825007647, 2041688520, 3059440621, 3563743934, 2378943302, 1740553945, 1916352843, 2487896798, 2555137236, 2958579944, 2244988746, 3151024235, 3320835882, 1336584933, 3992714006, 2252555205, 2588757463, 1714631509, 293963156, 2319795663, 3925473552, 67240454, 4269768577, 2689618160, 2017213508, 631218106, 1269344483, 2723238387, 1571005438, 2151694528, 93294474, 1066570413, 563977660, 1882732616, 4059428100, 1673313503, 2008463041, 2950355573, 1109467491, 537923632, 3858759450, 4260623118, 3218264685, 2177748300, 403442708, 638784309, 3287084079, 3193921505, 899127202, 2286175436, 773265209, 2479146071, 1437050866, 4236148354, 2050833735, 3362022572, 3126681063, 840505643, 3866325909, 3227541664, 427917720, 2655997905, 2749160575, 1143087718, 1412049534, 999329963, 193497219, 2353415882, 3354324521, 1807268051, 672404540, 2816401017, 3160301282, 369822493, 2916866934, 3688947771, 1681011286, 1949973070, 336202270, 2454276571, 201721354, 1210328172, 3093060836, 2680341085, 3184776046, 1135389935, 3294782118, 965841320, 831886756, 3554993207, 4068047243, 3588745010, 2345191491, 1849112409, 3664604599, 26054028, 2983581028, 2622377682, 1235855840, 3630984372, 2891339514, 4092916743, 3488279077, 3395642799, 4101667470, 1202630377, 268961816, 1874508501, 4034427016, 1243948399, 1546530418, 941366308, 1470539505, 1941222599, 2546386513, 3421038627, 2715671932, 3899946140, 1042226977, 2521517021, 1639824860, 227249030, 260737669, 3765465232, 2084453954, 1907733956, 3429263018, 2420656344, 100860677, 4160157185, 470683154, 3261161891, 1781871967, 2924959737, 1773779408, 394692241, 2579611992, 974986535, 664706745, 3655459128, 3958962195, 731420851, 571543859, 3530123707, 2849626480, 126783113, 865375399, 765172662, 1008606754, 361203602, 3387549984, 2278477385, 2857719295, 1344809080, 2782912378, 59542671, 1503764984, 160008576, 437062935, 1707065306, 3622233649, 2218934982, 3496503480, 2185314755, 697932208, 1512910199, 504303377, 2075177163, 2824099068, 1841019862, 739644986],
  8516. tn = [2781242211, 2230877308, 2582542199, 2381740923, 234877682, 3184946027, 2984144751, 1418839493, 1348481072, 50462977, 2848876391, 2102799147, 434634494, 1656084439, 3863849899, 2599188086, 1167051466, 2636087938, 1082771913, 2281340285, 368048890, 3954334041, 3381544775, 201060592, 3963727277, 1739838676, 4250903202, 3930435503, 3206782108, 4149453988, 2531553906, 1536934080, 3262494647, 484572669, 2923271059, 1783375398, 1517041206, 1098792767, 49674231, 1334037708, 1550332980, 4098991525, 886171109, 150598129, 2481090929, 1940642008, 1398944049, 1059722517, 201851908, 1385547719, 1699095331, 1587397571, 674240536, 2704774806, 252314885, 3039795866, 151914247, 908333586, 2602270848, 1038082786, 651029483, 1766729511, 3447698098, 2682942837, 454166793, 2652734339, 1951935532, 775166490, 758520603, 3000790638, 4004797018, 4217086112, 4137964114, 1299594043, 1639438038, 3464344499, 2068982057, 1054729187, 1901997871, 2534638724, 4121318227, 1757008337, 0, 750906861, 1614815264, 535035132, 3363418545, 3988151131, 3201591914, 1183697867, 3647454910, 1265776953, 3734260298, 3566750796, 3903871064, 1250283471, 1807470800, 717615087, 3847203498, 384695291, 3313910595, 3617213773, 1432761139, 2484176261, 3481945413, 283769337, 100925954, 2180939647, 4037038160, 1148730428, 3123027871, 3813386408, 4087501137, 4267549603, 3229630528, 2315620239, 2906624658, 3156319645, 1215313976, 82966005, 3747855548, 3245848246, 1974459098, 1665278241, 807407632, 451280895, 251524083, 1841287890, 1283575245, 337120268, 891687699, 801369324, 3787349855, 2721421207, 3431482436, 959321879, 1469301956, 4065699751, 2197585534, 1199193405, 2898814052, 3887750493, 724703513, 2514908019, 2696962144, 2551808385, 3516813135, 2141445340, 1715741218, 2119445034, 2872807568, 2198571144, 3398190662, 700968686, 3547052216, 1009259540, 2041044702, 3803995742, 487983883, 1991105499, 1004265696, 1449407026, 1316239930, 504629770, 3683797321, 168560134, 1816667172, 3837287516, 1570751170, 1857934291, 4014189740, 2797888098, 2822345105, 2754712981, 936633572, 2347923833, 852879335, 1133234376, 1500395319, 3084545389, 2348912013, 1689376213, 3533459022, 3762923945, 3034082412, 4205598294, 133428468, 634383082, 2949277029, 2398386810, 3913789102, 403703816, 3580869306, 2297460856, 1867130149, 1918643758, 607656988, 4049053350, 3346248884, 1368901318, 600565992, 2090982877, 2632479860, 557719327, 3717614411, 3697393085, 2249034635, 2232388234, 2430627952, 1115438654, 3295786421, 2865522278, 3633334344, 84280067, 33027830, 303828494, 2747425121, 1600795957, 4188952407, 3496589753, 2434238086, 1486471617, 658119965, 3106381470, 953803233, 334231800, 3005978776, 857870609, 3151128937, 1890179545, 2298973838, 2805175444, 3056442267, 574365214, 2450884487, 550103529, 1233637070, 4289353045, 2018519080, 2057691103, 2399374476, 4166623649, 2148108681, 387583245, 3664101311, 836232934, 3330556482, 3100665960, 3280093505, 2955516313, 2002398509, 287182607, 3413881008, 4238890068, 3597515707, 975967766],
  8517. nn = [1671808611, 2089089148, 2006576759, 2072901243, 4061003762, 1807603307, 1873927791, 3310653893, 810573872, 16974337, 1739181671, 729634347, 4263110654, 3613570519, 2883997099, 1989864566, 3393556426, 2191335298, 3376449993, 2106063485, 4195741690, 1508618841, 1204391495, 4027317232, 2917941677, 3563566036, 2734514082, 2951366063, 2629772188, 2767672228, 1922491506, 3227229120, 3082974647, 4246528509, 2477669779, 644500518, 911895606, 1061256767, 4144166391, 3427763148, 878471220, 2784252325, 3845444069, 4043897329, 1905517169, 3631459288, 827548209, 356461077, 67897348, 3344078279, 593839651, 3277757891, 405286936, 2527147926, 84871685, 2595565466, 118033927, 305538066, 2157648768, 3795705826, 3945188843, 661212711, 2999812018, 1973414517, 152769033, 2208177539, 745822252, 439235610, 455947803, 1857215598, 1525593178, 2700827552, 1391895634, 994932283, 3596728278, 3016654259, 695947817, 3812548067, 795958831, 2224493444, 1408607827, 3513301457, 0, 3979133421, 543178784, 4229948412, 2982705585, 1542305371, 1790891114, 3410398667, 3201918910, 961245753, 1256100938, 1289001036, 1491644504, 3477767631, 3496721360, 4012557807, 2867154858, 4212583931, 1137018435, 1305975373, 861234739, 2241073541, 1171229253, 4178635257, 33948674, 2139225727, 1357946960, 1011120188, 2679776671, 2833468328, 1374921297, 2751356323, 1086357568, 2408187279, 2460827538, 2646352285, 944271416, 4110742005, 3168756668, 3066132406, 3665145818, 560153121, 271589392, 4279952895, 4077846003, 3530407890, 3444343245, 202643468, 322250259, 3962553324, 1608629855, 2543990167, 1154254916, 389623319, 3294073796, 2817676711, 2122513534, 1028094525, 1689045092, 1575467613, 422261273, 1939203699, 1621147744, 2174228865, 1339137615, 3699352540, 577127458, 712922154, 2427141008, 2290289544, 1187679302, 3995715566, 3100863416, 339486740, 3732514782, 1591917662, 186455563, 3681988059, 3762019296, 844522546, 978220090, 169743370, 1239126601, 101321734, 611076132, 1558493276, 3260915650, 3547250131, 2901361580, 1655096418, 2443721105, 2510565781, 3828863972, 2039214713, 3878868455, 3359869896, 928607799, 1840765549, 2374762893, 3580146133, 1322425422, 2850048425, 1823791212, 1459268694, 4094161908, 3928346602, 1706019429, 2056189050, 2934523822, 135794696, 3134549946, 2022240376, 628050469, 779246638, 472135708, 2800834470, 3032970164, 3327236038, 3894660072, 3715932637, 1956440180, 522272287, 1272813131, 3185336765, 2340818315, 2323976074, 1888542832, 1044544574, 3049550261, 1722469478, 1222152264, 50660867, 4127324150, 236067854, 1638122081, 895445557, 1475980887, 3117443513, 2257655686, 3243809217, 489110045, 2662934430, 3778599393, 4162055160, 2561878936, 288563729, 1773916777, 3648039385, 2391345038, 2493985684, 2612407707, 505560094, 2274497927, 3911240169, 3460925390, 1442818645, 678973480, 3749357023, 2358182796, 2717407649, 2306869641, 219617805, 3218761151, 3862026214, 1120306242, 1756942440, 1103331905, 2578459033, 762796589, 252780047, 2966125488, 1425844308, 3151392187, 372911126],
  8518. sn = [1667474886, 2088535288, 2004326894, 2071694838, 4075949567, 1802223062, 1869591006, 3318043793, 808472672, 16843522, 1734846926, 724270422, 4278065639, 3621216949, 2880169549, 1987484396, 3402253711, 2189597983, 3385409673, 2105378810, 4210693615, 1499065266, 1195886990, 4042263547, 2913856577, 3570689971, 2728590687, 2947541573, 2627518243, 2762274643, 1920112356, 3233831835, 3082273397, 4261223649, 2475929149, 640051788, 909531756, 1061110142, 4160160501, 3435941763, 875846760, 2779116625, 3857003729, 4059105529, 1903268834, 3638064043, 825316194, 353713962, 67374088, 3351728789, 589522246, 3284360861, 404236336, 2526454071, 84217610, 2593830191, 117901582, 303183396, 2155911963, 3806477791, 3958056653, 656894286, 2998062463, 1970642922, 151591698, 2206440989, 741110872, 437923380, 454765878, 1852748508, 1515908788, 2694904667, 1381168804, 993742198, 3604373943, 3014905469, 690584402, 3823320797, 791638366, 2223281939, 1398011302, 3520161977, 0, 3991743681, 538992704, 4244381667, 2981218425, 1532751286, 1785380564, 3419096717, 3200178535, 960056178, 1246420628, 1280103576, 1482221744, 3486468741, 3503319995, 4025428677, 2863326543, 4227536621, 1128514950, 1296947098, 859002214, 2240123921, 1162203018, 4193849577, 33687044, 2139062782, 1347481760, 1010582648, 2678045221, 2829640523, 1364325282, 2745433693, 1077985408, 2408548869, 2459086143, 2644360225, 943212656, 4126475505, 3166494563, 3065430391, 3671750063, 555836226, 269496352, 4294908645, 4092792573, 3537006015, 3452783745, 202118168, 320025894, 3974901699, 1600119230, 2543297077, 1145359496, 387397934, 3301201811, 2812801621, 2122220284, 1027426170, 1684319432, 1566435258, 421079858, 1936954854, 1616945344, 2172753945, 1330631070, 3705438115, 572679748, 707427924, 2425400123, 2290647819, 1179044492, 4008585671, 3099120491, 336870440, 3739122087, 1583276732, 185277718, 3688593069, 3772791771, 842159716, 976899700, 168435220, 1229577106, 101059084, 606366792, 1549591736, 3267517855, 3553849021, 2897014595, 1650632388, 2442242105, 2509612081, 3840161747, 2038008818, 3890688725, 3368567691, 926374254, 1835907034, 2374863873, 3587531953, 1313788572, 2846482505, 1819063512, 1448540844, 4109633523, 3941213647, 1701162954, 2054852340, 2930698567, 134748176, 3132806511, 2021165296, 623210314, 774795868, 471606328, 2795958615, 3031746419, 3334885783, 3907527627, 3722280097, 1953799400, 522133822, 1263263126, 3183336545, 2341176845, 2324333839, 1886425312, 1044267644, 3048588401, 1718004428, 1212733584, 50529542, 4143317495, 235803164, 1633788866, 892690282, 1465383342, 3115962473, 2256965911, 3250673817, 488449850, 2661202215, 3789633753, 4177007595, 2560144171, 286339874, 1768537042, 3654906025, 2391705863, 2492770099, 2610673197, 505291324, 2273808917, 3924369609, 3469625735, 1431699370, 673740880, 3755965093, 2358021891, 2711746649, 2307489801, 218961690, 3217021541, 3873845719, 1111672452, 1751693520, 1094828930, 2576986153, 757954394, 252645662, 2964376443, 1414855848, 3149649517, 370555436],
  8519. rn = [1374988112, 2118214995, 437757123, 975658646, 1001089995, 530400753, 2902087851, 1273168787, 540080725, 2910219766, 2295101073, 4110568485, 1340463100, 3307916247, 641025152, 3043140495, 3736164937, 632953703, 1172967064, 1576976609, 3274667266, 2169303058, 2370213795, 1809054150, 59727847, 361929877, 3211623147, 2505202138, 3569255213, 1484005843, 1239443753, 2395588676, 1975683434, 4102977912, 2572697195, 666464733, 3202437046, 4035489047, 3374361702, 2110667444, 1675577880, 3843699074, 2538681184, 1649639237, 2976151520, 3144396420, 4269907996, 4178062228, 1883793496, 2403728665, 2497604743, 1383856311, 2876494627, 1917518562, 3810496343, 1716890410, 3001755655, 800440835, 2261089178, 3543599269, 807962610, 599762354, 33778362, 3977675356, 2328828971, 2809771154, 4077384432, 1315562145, 1708848333, 101039829, 3509871135, 3299278474, 875451293, 2733856160, 92987698, 2767645557, 193195065, 1080094634, 1584504582, 3178106961, 1042385657, 2531067453, 3711829422, 1306967366, 2438237621, 1908694277, 67556463, 1615861247, 429456164, 3602770327, 2302690252, 1742315127, 2968011453, 126454664, 3877198648, 2043211483, 2709260871, 2084704233, 4169408201, 0, 159417987, 841739592, 504459436, 1817866830, 4245618683, 260388950, 1034867998, 908933415, 168810852, 1750902305, 2606453969, 607530554, 202008497, 2472011535, 3035535058, 463180190, 2160117071, 1641816226, 1517767529, 470948374, 3801332234, 3231722213, 1008918595, 303765277, 235474187, 4069246893, 766945465, 337553864, 1475418501, 2943682380, 4003061179, 2743034109, 4144047775, 1551037884, 1147550661, 1543208500, 2336434550, 3408119516, 3069049960, 3102011747, 3610369226, 1113818384, 328671808, 2227573024, 2236228733, 3535486456, 2935566865, 3341394285, 496906059, 3702665459, 226906860, 2009195472, 733156972, 2842737049, 294930682, 1206477858, 2835123396, 2700099354, 1451044056, 573804783, 2269728455, 3644379585, 2362090238, 2564033334, 2801107407, 2776292904, 3669462566, 1068351396, 742039012, 1350078989, 1784663195, 1417561698, 4136440770, 2430122216, 775550814, 2193862645, 2673705150, 1775276924, 1876241833, 3475313331, 3366754619, 270040487, 3902563182, 3678124923, 3441850377, 1851332852, 3969562369, 2203032232, 3868552805, 2868897406, 566021896, 4011190502, 3135740889, 1248802510, 3936291284, 699432150, 832877231, 708780849, 3332740144, 899835584, 1951317047, 4236429990, 3767586992, 866637845, 4043610186, 1106041591, 2144161806, 395441711, 1984812685, 1139781709, 3433712980, 3835036895, 2664543715, 1282050075, 3240894392, 1181045119, 2640243204, 25965917, 4203181171, 4211818798, 3009879386, 2463879762, 3910161971, 1842759443, 2597806476, 933301370, 1509430414, 3943906441, 3467192302, 3076639029, 3776767469, 2051518780, 2631065433, 1441952575, 404016761, 1942435775, 1408749034, 1610459739, 3745345300, 2017778566, 3400528769, 3110650942, 941896748, 3265478751, 371049330, 3168937228, 675039627, 4279080257, 967311729, 135050206, 3635733660, 1683407248, 2076935265, 3576870512, 1215061108, 3501741890],
  8520. on = [1347548327, 1400783205, 3273267108, 2520393566, 3409685355, 4045380933, 2880240216, 2471224067, 1428173050, 4138563181, 2441661558, 636813900, 4233094615, 3620022987, 2149987652, 2411029155, 1239331162, 1730525723, 2554718734, 3781033664, 46346101, 310463728, 2743944855, 3328955385, 3875770207, 2501218972, 3955191162, 3667219033, 768917123, 3545789473, 692707433, 1150208456, 1786102409, 2029293177, 1805211710, 3710368113, 3065962831, 401639597, 1724457132, 3028143674, 409198410, 2196052529, 1620529459, 1164071807, 3769721975, 2226875310, 486441376, 2499348523, 1483753576, 428819965, 2274680428, 3075636216, 598438867, 3799141122, 1474502543, 711349675, 129166120, 53458370, 2592523643, 2782082824, 4063242375, 2988687269, 3120694122, 1559041666, 730517276, 2460449204, 4042459122, 2706270690, 3446004468, 3573941694, 533804130, 2328143614, 2637442643, 2695033685, 839224033, 1973745387, 957055980, 2856345839, 106852767, 1371368976, 4181598602, 1033297158, 2933734917, 1179510461, 3046200461, 91341917, 1862534868, 4284502037, 605657339, 2547432937, 3431546947, 2003294622, 3182487618, 2282195339, 954669403, 3682191598, 1201765386, 3917234703, 3388507166, 0, 2198438022, 1211247597, 2887651696, 1315723890, 4227665663, 1443857720, 507358933, 657861945, 1678381017, 560487590, 3516619604, 975451694, 2970356327, 261314535, 3535072918, 2652609425, 1333838021, 2724322336, 1767536459, 370938394, 182621114, 3854606378, 1128014560, 487725847, 185469197, 2918353863, 3106780840, 3356761769, 2237133081, 1286567175, 3152976349, 4255350624, 2683765030, 3160175349, 3309594171, 878443390, 1988838185, 3704300486, 1756818940, 1673061617, 3403100636, 272786309, 1075025698, 545572369, 2105887268, 4174560061, 296679730, 1841768865, 1260232239, 4091327024, 3960309330, 3497509347, 1814803222, 2578018489, 4195456072, 575138148, 3299409036, 446754879, 3629546796, 4011996048, 3347532110, 3252238545, 4270639778, 915985419, 3483825537, 681933534, 651868046, 2755636671, 3828103837, 223377554, 2607439820, 1649704518, 3270937875, 3901806776, 1580087799, 4118987695, 3198115200, 2087309459, 2842678573, 3016697106, 1003007129, 2802849917, 1860738147, 2077965243, 164439672, 4100872472, 32283319, 2827177882, 1709610350, 2125135846, 136428751, 3874428392, 3652904859, 3460984630, 3572145929, 3593056380, 2939266226, 824852259, 818324884, 3224740454, 930369212, 2801566410, 2967507152, 355706840, 1257309336, 4148292826, 243256656, 790073846, 2373340630, 1296297904, 1422699085, 3756299780, 3818836405, 457992840, 3099667487, 2135319889, 77422314, 1560382517, 1945798516, 788204353, 1521706781, 1385356242, 870912086, 325965383, 2358957921, 2050466060, 2388260884, 2313884476, 4006521127, 901210569, 3990953189, 1014646705, 1503449823, 1062597235, 2031621326, 3212035895, 3931371469, 1533017514, 350174575, 2256028891, 2177544179, 1052338372, 741876788, 1606591296, 1914052035, 213705253, 2334669897, 1107234197, 1899603969, 3725069491, 2631447780, 2422494913, 1635502980, 1893020342, 1950903388, 1120974935],
  8521. an = [2807058932, 1699970625, 2764249623, 1586903591, 1808481195, 1173430173, 1487645946, 59984867, 4199882800, 1844882806, 1989249228, 1277555970, 3623636965, 3419915562, 1149249077, 2744104290, 1514790577, 459744698, 244860394, 3235995134, 1963115311, 4027744588, 2544078150, 4190530515, 1608975247, 2627016082, 2062270317, 1507497298, 2200818878, 567498868, 1764313568, 3359936201, 2305455554, 2037970062, 1047239e3, 1910319033, 1337376481, 2904027272, 2892417312, 984907214, 1243112415, 830661914, 861968209, 2135253587, 2011214180, 2927934315, 2686254721, 731183368, 1750626376, 4246310725, 1820824798, 4172763771, 3542330227, 48394827, 2404901663, 2871682645, 671593195, 3254988725, 2073724613, 145085239, 2280796200, 2779915199, 1790575107, 2187128086, 472615631, 3029510009, 4075877127, 3802222185, 4107101658, 3201631749, 1646252340, 4270507174, 1402811438, 1436590835, 3778151818, 3950355702, 3963161475, 4020912224, 2667994737, 273792366, 2331590177, 104699613, 95345982, 3175501286, 2377486676, 1560637892, 3564045318, 369057872, 4213447064, 3919042237, 1137477952, 2658625497, 1119727848, 2340947849, 1530455833, 4007360968, 172466556, 266959938, 516552836, 0, 2256734592, 3980931627, 1890328081, 1917742170, 4294704398, 945164165, 3575528878, 958871085, 3647212047, 2787207260, 1423022939, 775562294, 1739656202, 3876557655, 2530391278, 2443058075, 3310321856, 547512796, 1265195639, 437656594, 3121275539, 719700128, 3762502690, 387781147, 218828297, 3350065803, 2830708150, 2848461854, 428169201, 122466165, 3720081049, 1627235199, 648017665, 4122762354, 1002783846, 2117360635, 695634755, 3336358691, 4234721005, 4049844452, 3704280881, 2232435299, 574624663, 287343814, 612205898, 1039717051, 840019705, 2708326185, 793451934, 821288114, 1391201670, 3822090177, 376187827, 3113855344, 1224348052, 1679968233, 2361698556, 1058709744, 752375421, 2431590963, 1321699145, 3519142200, 2734591178, 188127444, 2177869557, 3727205754, 2384911031, 3215212461, 2648976442, 2450346104, 3432737375, 1180849278, 331544205, 3102249176, 4150144569, 2952102595, 2159976285, 2474404304, 766078933, 313773861, 2570832044, 2108100632, 1668212892, 3145456443, 2013908262, 418672217, 3070356634, 2594734927, 1852171925, 3867060991, 3473416636, 3907448597, 2614737639, 919489135, 164948639, 2094410160, 2997825956, 590424639, 2486224549, 1723872674, 3157750862, 3399941250, 3501252752, 3625268135, 2555048196, 3673637356, 1343127501, 4130281361, 3599595085, 2957853679, 1297403050, 81781910, 3051593425, 2283490410, 532201772, 1367295589, 3926170974, 895287692, 1953757831, 1093597963, 492483431, 3528626907, 1446242576, 1192455638, 1636604631, 209336225, 344873464, 1015671571, 669961897, 3375740769, 3857572124, 2973530695, 3747192018, 1933530610, 3464042516, 935293895, 3454686199, 2858115069, 1863638845, 3683022916, 4085369519, 3292445032, 875313188, 1080017571, 3279033885, 621591778, 1233856572, 2504130317, 24197544, 3017672716, 3835484340, 3247465558, 2220981195, 3060847922, 1551124588, 1463996600],
  8522. cn = [4104605777, 1097159550, 396673818, 660510266, 2875968315, 2638606623, 4200115116, 3808662347, 821712160, 1986918061, 3430322568, 38544885, 3856137295, 718002117, 893681702, 1654886325, 2975484382, 3122358053, 3926825029, 4274053469, 796197571, 1290801793, 1184342925, 3556361835, 2405426947, 2459735317, 1836772287, 1381620373, 3196267988, 1948373848, 3764988233, 3385345166, 3263785589, 2390325492, 1480485785, 3111247143, 3780097726, 2293045232, 548169417, 3459953789, 3746175075, 439452389, 1362321559, 1400849762, 1685577905, 1806599355, 2174754046, 137073913, 1214797936, 1174215055, 3731654548, 2079897426, 1943217067, 1258480242, 529487843, 1437280870, 3945269170, 3049390895, 3313212038, 923313619, 679998e3, 3215307299, 57326082, 377642221, 3474729866, 2041877159, 133361907, 1776460110, 3673476453, 96392454, 878845905, 2801699524, 777231668, 4082475170, 2330014213, 4142626212, 2213296395, 1626319424, 1906247262, 1846563261, 562755902, 3708173718, 1040559837, 3871163981, 1418573201, 3294430577, 114585348, 1343618912, 2566595609, 3186202582, 1078185097, 3651041127, 3896688048, 2307622919, 425408743, 3371096953, 2081048481, 1108339068, 2216610296, 0, 2156299017, 736970802, 292596766, 1517440620, 251657213, 2235061775, 2933202493, 758720310, 265905162, 1554391400, 1532285339, 908999204, 174567692, 1474760595, 4002861748, 2610011675, 3234156416, 3693126241, 2001430874, 303699484, 2478443234, 2687165888, 585122620, 454499602, 151849742, 2345119218, 3064510765, 514443284, 4044981591, 1963412655, 2581445614, 2137062819, 19308535, 1928707164, 1715193156, 4219352155, 1126790795, 600235211, 3992742070, 3841024952, 836553431, 1669664834, 2535604243, 3323011204, 1243905413, 3141400786, 4180808110, 698445255, 2653899549, 2989552604, 2253581325, 3252932727, 3004591147, 1891211689, 2487810577, 3915653703, 4237083816, 4030667424, 2100090966, 865136418, 1229899655, 953270745, 3399679628, 3557504664, 4118925222, 2061379749, 3079546586, 2915017791, 983426092, 2022837584, 1607244650, 2118541908, 2366882550, 3635996816, 972512814, 3283088770, 1568718495, 3499326569, 3576539503, 621982671, 2895723464, 410887952, 2623762152, 1002142683, 645401037, 1494807662, 2595684844, 1335535747, 2507040230, 4293295786, 3167684641, 367585007, 3885750714, 1865862730, 2668221674, 2960971305, 2763173681, 1059270954, 2777952454, 2724642869, 1320957812, 2194319100, 2429595872, 2815956275, 77089521, 3973773121, 3444575871, 2448830231, 1305906550, 4021308739, 2857194700, 2516901860, 3518358430, 1787304780, 740276417, 1699839814, 1592394909, 2352307457, 2272556026, 188821243, 1729977011, 3687994002, 274084841, 3594982253, 3613494426, 2701949495, 4162096729, 322734571, 2837966542, 1640576439, 484830689, 1202797690, 3537852828, 4067639125, 349075736, 3342319475, 4157467219, 4255800159, 1030690015, 1155237496, 2951971274, 1757691577, 607398968, 2738905026, 499347990, 3794078908, 1011452712, 227885567, 2818666809, 213114376, 3034881240, 1455525988, 3414450555, 850817237, 1817998408, 3092726480],
  8523. un = [0, 235474187, 470948374, 303765277, 941896748, 908933415, 607530554, 708780849, 1883793496, 2118214995, 1817866830, 1649639237, 1215061108, 1181045119, 1417561698, 1517767529, 3767586992, 4003061179, 4236429990, 4069246893, 3635733660, 3602770327, 3299278474, 3400528769, 2430122216, 2664543715, 2362090238, 2193862645, 2835123396, 2801107407, 3035535058, 3135740889, 3678124923, 3576870512, 3341394285, 3374361702, 3810496343, 3977675356, 4279080257, 4043610186, 2876494627, 2776292904, 3076639029, 3110650942, 2472011535, 2640243204, 2403728665, 2169303058, 1001089995, 899835584, 666464733, 699432150, 59727847, 226906860, 530400753, 294930682, 1273168787, 1172967064, 1475418501, 1509430414, 1942435775, 2110667444, 1876241833, 1641816226, 2910219766, 2743034109, 2976151520, 3211623147, 2505202138, 2606453969, 2302690252, 2269728455, 3711829422, 3543599269, 3240894392, 3475313331, 3843699074, 3943906441, 4178062228, 4144047775, 1306967366, 1139781709, 1374988112, 1610459739, 1975683434, 2076935265, 1775276924, 1742315127, 1034867998, 866637845, 566021896, 800440835, 92987698, 193195065, 429456164, 395441711, 1984812685, 2017778566, 1784663195, 1683407248, 1315562145, 1080094634, 1383856311, 1551037884, 101039829, 135050206, 437757123, 337553864, 1042385657, 807962610, 573804783, 742039012, 2531067453, 2564033334, 2328828971, 2227573024, 2935566865, 2700099354, 3001755655, 3168937228, 3868552805, 3902563182, 4203181171, 4102977912, 3736164937, 3501741890, 3265478751, 3433712980, 1106041591, 1340463100, 1576976609, 1408749034, 2043211483, 2009195472, 1708848333, 1809054150, 832877231, 1068351396, 766945465, 599762354, 159417987, 126454664, 361929877, 463180190, 2709260871, 2943682380, 3178106961, 3009879386, 2572697195, 2538681184, 2236228733, 2336434550, 3509871135, 3745345300, 3441850377, 3274667266, 3910161971, 3877198648, 4110568485, 4211818798, 2597806476, 2497604743, 2261089178, 2295101073, 2733856160, 2902087851, 3202437046, 2968011453, 3936291284, 3835036895, 4136440770, 4169408201, 3535486456, 3702665459, 3467192302, 3231722213, 2051518780, 1951317047, 1716890410, 1750902305, 1113818384, 1282050075, 1584504582, 1350078989, 168810852, 67556463, 371049330, 404016761, 841739592, 1008918595, 775550814, 540080725, 3969562369, 3801332234, 4035489047, 4269907996, 3569255213, 3669462566, 3366754619, 3332740144, 2631065433, 2463879762, 2160117071, 2395588676, 2767645557, 2868897406, 3102011747, 3069049960, 202008497, 33778362, 270040487, 504459436, 875451293, 975658646, 675039627, 641025152, 2084704233, 1917518562, 1615861247, 1851332852, 1147550661, 1248802510, 1484005843, 1451044056, 933301370, 967311729, 733156972, 632953703, 260388950, 25965917, 328671808, 496906059, 1206477858, 1239443753, 1543208500, 1441952575, 2144161806, 1908694277, 1675577880, 1842759443, 3610369226, 3644379585, 3408119516, 3307916247, 4011190502, 3776767469, 4077384432, 4245618683, 2809771154, 2842737049, 3144396420, 3043140495, 2673705150, 2438237621, 2203032232, 2370213795],
  8524. ln = [0, 185469197, 370938394, 487725847, 741876788, 657861945, 975451694, 824852259, 1483753576, 1400783205, 1315723890, 1164071807, 1950903388, 2135319889, 1649704518, 1767536459, 2967507152, 3152976349, 2801566410, 2918353863, 2631447780, 2547432937, 2328143614, 2177544179, 3901806776, 3818836405, 4270639778, 4118987695, 3299409036, 3483825537, 3535072918, 3652904859, 2077965243, 1893020342, 1841768865, 1724457132, 1474502543, 1559041666, 1107234197, 1257309336, 598438867, 681933534, 901210569, 1052338372, 261314535, 77422314, 428819965, 310463728, 3409685355, 3224740454, 3710368113, 3593056380, 3875770207, 3960309330, 4045380933, 4195456072, 2471224067, 2554718734, 2237133081, 2388260884, 3212035895, 3028143674, 2842678573, 2724322336, 4138563181, 4255350624, 3769721975, 3955191162, 3667219033, 3516619604, 3431546947, 3347532110, 2933734917, 2782082824, 3099667487, 3016697106, 2196052529, 2313884476, 2499348523, 2683765030, 1179510461, 1296297904, 1347548327, 1533017514, 1786102409, 1635502980, 2087309459, 2003294622, 507358933, 355706840, 136428751, 53458370, 839224033, 957055980, 605657339, 790073846, 2373340630, 2256028891, 2607439820, 2422494913, 2706270690, 2856345839, 3075636216, 3160175349, 3573941694, 3725069491, 3273267108, 3356761769, 4181598602, 4063242375, 4011996048, 3828103837, 1033297158, 915985419, 730517276, 545572369, 296679730, 446754879, 129166120, 213705253, 1709610350, 1860738147, 1945798516, 2029293177, 1239331162, 1120974935, 1606591296, 1422699085, 4148292826, 4233094615, 3781033664, 3931371469, 3682191598, 3497509347, 3446004468, 3328955385, 2939266226, 2755636671, 3106780840, 2988687269, 2198438022, 2282195339, 2501218972, 2652609425, 1201765386, 1286567175, 1371368976, 1521706781, 1805211710, 1620529459, 2105887268, 1988838185, 533804130, 350174575, 164439672, 46346101, 870912086, 954669403, 636813900, 788204353, 2358957921, 2274680428, 2592523643, 2441661558, 2695033685, 2880240216, 3065962831, 3182487618, 3572145929, 3756299780, 3270937875, 3388507166, 4174560061, 4091327024, 4006521127, 3854606378, 1014646705, 930369212, 711349675, 560487590, 272786309, 457992840, 106852767, 223377554, 1678381017, 1862534868, 1914052035, 2031621326, 1211247597, 1128014560, 1580087799, 1428173050, 32283319, 182621114, 401639597, 486441376, 768917123, 651868046, 1003007129, 818324884, 1503449823, 1385356242, 1333838021, 1150208456, 1973745387, 2125135846, 1673061617, 1756818940, 2970356327, 3120694122, 2802849917, 2887651696, 2637442643, 2520393566, 2334669897, 2149987652, 3917234703, 3799141122, 4284502037, 4100872472, 3309594171, 3460984630, 3545789473, 3629546796, 2050466060, 1899603969, 1814803222, 1730525723, 1443857720, 1560382517, 1075025698, 1260232239, 575138148, 692707433, 878443390, 1062597235, 243256656, 91341917, 409198410, 325965383, 3403100636, 3252238545, 3704300486, 3620022987, 3874428392, 3990953189, 4042459122, 4227665663, 2460449204, 2578018489, 2226875310, 2411029155, 3198115200, 3046200461, 2827177882, 2743944855],
  8525. hn = [0, 218828297, 437656594, 387781147, 875313188, 958871085, 775562294, 590424639, 1750626376, 1699970625, 1917742170, 2135253587, 1551124588, 1367295589, 1180849278, 1265195639, 3501252752, 3720081049, 3399941250, 3350065803, 3835484340, 3919042237, 4270507174, 4085369519, 3102249176, 3051593425, 2734591178, 2952102595, 2361698556, 2177869557, 2530391278, 2614737639, 3145456443, 3060847922, 2708326185, 2892417312, 2404901663, 2187128086, 2504130317, 2555048196, 3542330227, 3727205754, 3375740769, 3292445032, 3876557655, 3926170974, 4246310725, 4027744588, 1808481195, 1723872674, 1910319033, 2094410160, 1608975247, 1391201670, 1173430173, 1224348052, 59984867, 244860394, 428169201, 344873464, 935293895, 984907214, 766078933, 547512796, 1844882806, 1627235199, 2011214180, 2062270317, 1507497298, 1423022939, 1137477952, 1321699145, 95345982, 145085239, 532201772, 313773861, 830661914, 1015671571, 731183368, 648017665, 3175501286, 2957853679, 2807058932, 2858115069, 2305455554, 2220981195, 2474404304, 2658625497, 3575528878, 3625268135, 3473416636, 3254988725, 3778151818, 3963161475, 4213447064, 4130281361, 3599595085, 3683022916, 3432737375, 3247465558, 3802222185, 4020912224, 4172763771, 4122762354, 3201631749, 3017672716, 2764249623, 2848461854, 2331590177, 2280796200, 2431590963, 2648976442, 104699613, 188127444, 472615631, 287343814, 840019705, 1058709744, 671593195, 621591778, 1852171925, 1668212892, 1953757831, 2037970062, 1514790577, 1463996600, 1080017571, 1297403050, 3673637356, 3623636965, 3235995134, 3454686199, 4007360968, 3822090177, 4107101658, 4190530515, 2997825956, 3215212461, 2830708150, 2779915199, 2256734592, 2340947849, 2627016082, 2443058075, 172466556, 122466165, 273792366, 492483431, 1047239e3, 861968209, 612205898, 695634755, 1646252340, 1863638845, 2013908262, 1963115311, 1446242576, 1530455833, 1277555970, 1093597963, 1636604631, 1820824798, 2073724613, 1989249228, 1436590835, 1487645946, 1337376481, 1119727848, 164948639, 81781910, 331544205, 516552836, 1039717051, 821288114, 669961897, 719700128, 2973530695, 3157750862, 2871682645, 2787207260, 2232435299, 2283490410, 2667994737, 2450346104, 3647212047, 3564045318, 3279033885, 3464042516, 3980931627, 3762502690, 4150144569, 4199882800, 3070356634, 3121275539, 2904027272, 2686254721, 2200818878, 2384911031, 2570832044, 2486224549, 3747192018, 3528626907, 3310321856, 3359936201, 3950355702, 3867060991, 4049844452, 4234721005, 1739656202, 1790575107, 2108100632, 1890328081, 1402811438, 1586903591, 1233856572, 1149249077, 266959938, 48394827, 369057872, 418672217, 1002783846, 919489135, 567498868, 752375421, 209336225, 24197544, 376187827, 459744698, 945164165, 895287692, 574624663, 793451934, 1679968233, 1764313568, 2117360635, 1933530610, 1343127501, 1560637892, 1243112415, 1192455638, 3704280881, 3519142200, 3336358691, 3419915562, 3907448597, 3857572124, 4075877127, 4294704398, 3029510009, 3113855344, 2927934315, 2744104290, 2159976285, 2377486676, 2594734927, 2544078150],
  8526. dn = [0, 151849742, 303699484, 454499602, 607398968, 758720310, 908999204, 1059270954, 1214797936, 1097159550, 1517440620, 1400849762, 1817998408, 1699839814, 2118541908, 2001430874, 2429595872, 2581445614, 2194319100, 2345119218, 3034881240, 3186202582, 2801699524, 2951971274, 3635996816, 3518358430, 3399679628, 3283088770, 4237083816, 4118925222, 4002861748, 3885750714, 1002142683, 850817237, 698445255, 548169417, 529487843, 377642221, 227885567, 77089521, 1943217067, 2061379749, 1640576439, 1757691577, 1474760595, 1592394909, 1174215055, 1290801793, 2875968315, 2724642869, 3111247143, 2960971305, 2405426947, 2253581325, 2638606623, 2487810577, 3808662347, 3926825029, 4044981591, 4162096729, 3342319475, 3459953789, 3576539503, 3693126241, 1986918061, 2137062819, 1685577905, 1836772287, 1381620373, 1532285339, 1078185097, 1229899655, 1040559837, 923313619, 740276417, 621982671, 439452389, 322734571, 137073913, 19308535, 3871163981, 4021308739, 4104605777, 4255800159, 3263785589, 3414450555, 3499326569, 3651041127, 2933202493, 2815956275, 3167684641, 3049390895, 2330014213, 2213296395, 2566595609, 2448830231, 1305906550, 1155237496, 1607244650, 1455525988, 1776460110, 1626319424, 2079897426, 1928707164, 96392454, 213114376, 396673818, 514443284, 562755902, 679998e3, 865136418, 983426092, 3708173718, 3557504664, 3474729866, 3323011204, 4180808110, 4030667424, 3945269170, 3794078908, 2507040230, 2623762152, 2272556026, 2390325492, 2975484382, 3092726480, 2738905026, 2857194700, 3973773121, 3856137295, 4274053469, 4157467219, 3371096953, 3252932727, 3673476453, 3556361835, 2763173681, 2915017791, 3064510765, 3215307299, 2156299017, 2307622919, 2459735317, 2610011675, 2081048481, 1963412655, 1846563261, 1729977011, 1480485785, 1362321559, 1243905413, 1126790795, 878845905, 1030690015, 645401037, 796197571, 274084841, 425408743, 38544885, 188821243, 3613494426, 3731654548, 3313212038, 3430322568, 4082475170, 4200115116, 3780097726, 3896688048, 2668221674, 2516901860, 2366882550, 2216610296, 3141400786, 2989552604, 2837966542, 2687165888, 1202797690, 1320957812, 1437280870, 1554391400, 1669664834, 1787304780, 1906247262, 2022837584, 265905162, 114585348, 499347990, 349075736, 736970802, 585122620, 972512814, 821712160, 2595684844, 2478443234, 2293045232, 2174754046, 3196267988, 3079546586, 2895723464, 2777952454, 3537852828, 3687994002, 3234156416, 3385345166, 4142626212, 4293295786, 3841024952, 3992742070, 174567692, 57326082, 410887952, 292596766, 777231668, 660510266, 1011452712, 893681702, 1108339068, 1258480242, 1343618912, 1494807662, 1715193156, 1865862730, 1948373848, 2100090966, 2701949495, 2818666809, 3004591147, 3122358053, 2235061775, 2352307457, 2535604243, 2653899549, 3915653703, 3764988233, 4219352155, 4067639125, 3444575871, 3294430577, 3746175075, 3594982253, 836553431, 953270745, 600235211, 718002117, 367585007, 484830689, 133361907, 251657213, 2041877159, 1891211689, 1806599355, 1654886325, 1568718495, 1418573201, 1335535747, 1184342925];
  8527. function pn(e) {
  8528. for (var t = [], n = 0; n < e.length; n += 4) {
  8529. t.push(e[n] << 24 | e[n + 1] << 16 | e[n + 2] << 8 | e[n + 3]);
  8530. }
  8531. return t;
  8532. }
  8533. var fn = /*#__PURE__*/function () {
  8534. function fn(e) {
  8535. (0, _classCallCheck2.default)(this, fn);
  8536. if (!(this instanceof fn)) throw Error("AES must be instanitated with `new`");
  8537. Object.defineProperty(this, "key", {
  8538. value: Wt(e, !0)
  8539. }), this._prepare();
  8540. }
  8541. (0, _createClass2.default)(fn, [{
  8542. key: "_prepare",
  8543. value: function _prepare() {
  8544. var e = Yt[this.key.length];
  8545. if (null == e) throw new Error("invalid key size (must be 16, 24 or 32 bytes)");
  8546. this._Ke = [], this._Kd = [];
  8547. for (var t = 0; t <= e; t++) {
  8548. this._Ke.push([0, 0, 0, 0]), this._Kd.push([0, 0, 0, 0]);
  8549. }
  8550. var n,
  8551. s = 4 * (e + 1),
  8552. r = this.key.length / 4,
  8553. i = pn(this.key);
  8554. for (t = 0; t < r; t++) {
  8555. n = t >> 2, this._Ke[n][t % 4] = i[t], this._Kd[e - n][t % 4] = i[t];
  8556. }
  8557. for (var o, a = 0, c = r; c < s;) {
  8558. if (o = i[r - 1], i[0] ^= Xt[o >> 16 & 255] << 24 ^ Xt[o >> 8 & 255] << 16 ^ Xt[255 & o] << 8 ^ Xt[o >> 24 & 255] ^ Qt[a] << 24, a += 1, 8 != r) for (t = 1; t < r; t++) {
  8559. i[t] ^= i[t - 1];
  8560. } else {
  8561. for (t = 1; t < r / 2; t++) {
  8562. i[t] ^= i[t - 1];
  8563. }
  8564. o = i[r / 2 - 1], i[r / 2] ^= Xt[255 & o] ^ Xt[o >> 8 & 255] << 8 ^ Xt[o >> 16 & 255] << 16 ^ Xt[o >> 24 & 255] << 24;
  8565. for (t = r / 2 + 1; t < r; t++) {
  8566. i[t] ^= i[t - 1];
  8567. }
  8568. }
  8569. for (t = 0; t < r && c < s;) {
  8570. u = c >> 2, l = c % 4, this._Ke[u][l] = i[t], this._Kd[e - u][l] = i[t++], c++;
  8571. }
  8572. }
  8573. for (var u = 1; u < e; u++) {
  8574. for (var l = 0; l < 4; l++) {
  8575. o = this._Kd[u][l], this._Kd[u][l] = un[o >> 24 & 255] ^ ln[o >> 16 & 255] ^ hn[o >> 8 & 255] ^ dn[255 & o];
  8576. }
  8577. }
  8578. }
  8579. }, {
  8580. key: "encrypt",
  8581. value: function encrypt(e) {
  8582. if (16 != e.length) throw new Error("invalid plaintext size (must be 16 bytes)");
  8583. for (var t = this._Ke.length - 1, n = [0, 0, 0, 0], s = pn(e), r = 0; r < 4; r++) {
  8584. s[r] ^= this._Ke[0][r];
  8585. }
  8586. for (var i = 1; i < t; i++) {
  8587. for (r = 0; r < 4; r++) {
  8588. n[r] = en[s[r] >> 24 & 255] ^ tn[s[(r + 1) % 4] >> 16 & 255] ^ nn[s[(r + 2) % 4] >> 8 & 255] ^ sn[255 & s[(r + 3) % 4]] ^ this._Ke[i][r];
  8589. }
  8590. s = n.slice();
  8591. }
  8592. var o,
  8593. a = Ht(16);
  8594. for (r = 0; r < 4; r++) {
  8595. o = this._Ke[t][r], a[4 * r] = 255 & (Xt[s[r] >> 24 & 255] ^ o >> 24), a[4 * r + 1] = 255 & (Xt[s[(r + 1) % 4] >> 16 & 255] ^ o >> 16), a[4 * r + 2] = 255 & (Xt[s[(r + 2) % 4] >> 8 & 255] ^ o >> 8), a[4 * r + 3] = 255 & (Xt[255 & s[(r + 3) % 4]] ^ o);
  8596. }
  8597. return a;
  8598. }
  8599. }, {
  8600. key: "decrypt",
  8601. value: function decrypt(e) {
  8602. if (16 != e.length) throw new Error("invalid ciphertext size (must be 16 bytes)");
  8603. for (var t = this._Kd.length - 1, n = [0, 0, 0, 0], s = pn(e), r = 0; r < 4; r++) {
  8604. s[r] ^= this._Kd[0][r];
  8605. }
  8606. for (var i = 1; i < t; i++) {
  8607. for (r = 0; r < 4; r++) {
  8608. n[r] = rn[s[r] >> 24 & 255] ^ on[s[(r + 3) % 4] >> 16 & 255] ^ an[s[(r + 2) % 4] >> 8 & 255] ^ cn[255 & s[(r + 1) % 4]] ^ this._Kd[i][r];
  8609. }
  8610. s = n.slice();
  8611. }
  8612. var o,
  8613. a = Ht(16);
  8614. for (r = 0; r < 4; r++) {
  8615. o = this._Kd[t][r], a[4 * r] = 255 & (Zt[s[r] >> 24 & 255] ^ o >> 24), a[4 * r + 1] = 255 & (Zt[s[(r + 3) % 4] >> 16 & 255] ^ o >> 16), a[4 * r + 2] = 255 & (Zt[s[(r + 2) % 4] >> 8 & 255] ^ o >> 8), a[4 * r + 3] = 255 & (Zt[255 & s[(r + 1) % 4]] ^ o);
  8616. }
  8617. return a;
  8618. }
  8619. }]);
  8620. return fn;
  8621. }();
  8622. var gn = /*#__PURE__*/function () {
  8623. function gn(e) {
  8624. (0, _classCallCheck2.default)(this, gn);
  8625. if (!(this instanceof gn)) throw Error("AES must be instanitated with `new`");
  8626. this.description = "Electronic Code Block", this.name = "ecb", this._aes = new fn(e);
  8627. }
  8628. (0, _createClass2.default)(gn, [{
  8629. key: "encrypt",
  8630. value: function encrypt(e) {
  8631. if ((e = Wt(e)).length % 16 != 0) throw new Error("invalid plaintext size (must be multiple of 16 bytes)");
  8632. for (var t = Ht(e.length), n = Ht(16), s = 0; s < e.length; s += 16) {
  8633. zt(e, n, 0, s, s + 16), zt(n = this._aes.encrypt(n), t, s);
  8634. }
  8635. return t;
  8636. }
  8637. }, {
  8638. key: "decrypt",
  8639. value: function decrypt(e) {
  8640. if ((e = Wt(e)).length % 16 != 0) throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");
  8641. for (var t = Ht(e.length), n = Ht(16), s = 0; s < e.length; s += 16) {
  8642. zt(e, n, 0, s, s + 16), zt(n = this._aes.decrypt(n), t, s);
  8643. }
  8644. return t;
  8645. }
  8646. }]);
  8647. return gn;
  8648. }();
  8649. var mn = /*#__PURE__*/function () {
  8650. function mn(e, t) {
  8651. (0, _classCallCheck2.default)(this, mn);
  8652. if (!(this instanceof mn)) throw Error("AES must be instanitated with `new`");
  8653. if (this.description = "Cipher Block Chaining", this.name = "cbc", t) {
  8654. if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 bytes)");
  8655. } else t = Ht(16);
  8656. this._lastCipherblock = Wt(t, !0), this._aes = new fn(e);
  8657. }
  8658. (0, _createClass2.default)(mn, [{
  8659. key: "encrypt",
  8660. value: function encrypt(e) {
  8661. if ((e = Wt(e)).length % 16 != 0) throw new Error("invalid plaintext size (must be multiple of 16 bytes)");
  8662. for (var t = Ht(e.length), n = Ht(16), s = 0; s < e.length; s += 16) {
  8663. zt(e, n, 0, s, s + 16);
  8664. for (var r = 0; r < 16; r++) {
  8665. n[r] ^= this._lastCipherblock[r];
  8666. }
  8667. this._lastCipherblock = this._aes.encrypt(n), zt(this._lastCipherblock, t, s);
  8668. }
  8669. return t;
  8670. }
  8671. }, {
  8672. key: "decrypt",
  8673. value: function decrypt(e) {
  8674. if ((e = Wt(e)).length % 16 != 0) throw new Error("invalid ciphertext size (must be multiple of 16 bytes)");
  8675. for (var t = Ht(e.length), n = Ht(16), s = 0; s < e.length; s += 16) {
  8676. zt(e, n, 0, s, s + 16), n = this._aes.decrypt(n);
  8677. for (var r = 0; r < 16; r++) {
  8678. t[s + r] = n[r] ^ this._lastCipherblock[r];
  8679. }
  8680. zt(e, this._lastCipherblock, 0, s, s + 16);
  8681. }
  8682. return t;
  8683. }
  8684. }]);
  8685. return mn;
  8686. }();
  8687. var yn = /*#__PURE__*/function () {
  8688. function yn(e, t, n) {
  8689. (0, _classCallCheck2.default)(this, yn);
  8690. if (!(this instanceof yn)) throw Error("AES must be instanitated with `new`");
  8691. if (this.description = "Cipher Feedback", this.name = "cfb", t) {
  8692. if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 size)");
  8693. } else t = Ht(16);
  8694. n || (n = 1), this.segmentSize = n, this._shiftRegister = Wt(t, !0), this._aes = new fn(e);
  8695. }
  8696. (0, _createClass2.default)(yn, [{
  8697. key: "encrypt",
  8698. value: function encrypt(e) {
  8699. if (e.length % this.segmentSize != 0) throw new Error("invalid plaintext size (must be segmentSize bytes)");
  8700. for (var t, n = Wt(e, !0), s = 0; s < n.length; s += this.segmentSize) {
  8701. t = this._aes.encrypt(this._shiftRegister);
  8702. for (var r = 0; r < this.segmentSize; r++) {
  8703. n[s + r] ^= t[r];
  8704. }
  8705. zt(this._shiftRegister, this._shiftRegister, 0, this.segmentSize), zt(n, this._shiftRegister, 16 - this.segmentSize, s, s + this.segmentSize);
  8706. }
  8707. return n;
  8708. }
  8709. }, {
  8710. key: "decrypt",
  8711. value: function decrypt(e) {
  8712. if (e.length % this.segmentSize != 0) throw new Error("invalid ciphertext size (must be segmentSize bytes)");
  8713. for (var t, n = Wt(e, !0), s = 0; s < n.length; s += this.segmentSize) {
  8714. t = this._aes.encrypt(this._shiftRegister);
  8715. for (var r = 0; r < this.segmentSize; r++) {
  8716. n[s + r] ^= t[r];
  8717. }
  8718. zt(this._shiftRegister, this._shiftRegister, 0, this.segmentSize), zt(e, this._shiftRegister, 16 - this.segmentSize, s, s + this.segmentSize);
  8719. }
  8720. return n;
  8721. }
  8722. }]);
  8723. return yn;
  8724. }();
  8725. var _n = /*#__PURE__*/function () {
  8726. function _n(e, t) {
  8727. (0, _classCallCheck2.default)(this, _n);
  8728. if (!(this instanceof _n)) throw Error("AES must be instanitated with `new`");
  8729. if (this.description = "Output Feedback", this.name = "ofb", t) {
  8730. if (16 != t.length) throw new Error("invalid initialation vector size (must be 16 bytes)");
  8731. } else t = Ht(16);
  8732. this._lastPrecipher = Wt(t, !0), this._lastPrecipherIndex = 16, this._aes = new fn(e);
  8733. }
  8734. (0, _createClass2.default)(_n, [{
  8735. key: "encrypt",
  8736. value: function encrypt(e) {
  8737. for (var t = Wt(e, !0), n = 0; n < t.length; n++) {
  8738. 16 === this._lastPrecipherIndex && (this._lastPrecipher = this._aes.encrypt(this._lastPrecipher), this._lastPrecipherIndex = 0), t[n] ^= this._lastPrecipher[this._lastPrecipherIndex++];
  8739. }
  8740. return t;
  8741. }
  8742. }, {
  8743. key: "decrypt",
  8744. value: function decrypt(e) {
  8745. return this.encrypt(e);
  8746. }
  8747. }]);
  8748. return _n;
  8749. }();
  8750. var wn = /*#__PURE__*/function () {
  8751. function wn(e) {
  8752. (0, _classCallCheck2.default)(this, wn);
  8753. if (!(this instanceof wn)) throw Error("Counter must be instanitated with `new`");
  8754. 0 === e || e || (e = 1), "number" == typeof e ? (this._counter = Ht(16), this.setValue(e)) : this.setBytes(e);
  8755. }
  8756. (0, _createClass2.default)(wn, [{
  8757. key: "setValue",
  8758. value: function setValue(e) {
  8759. if ("number" != typeof e || parseInt(e) != e) throw new Error("invalid counter value (must be an integer)");
  8760. if (e > Number.MAX_SAFE_INTEGER) throw new Error("integer value out of safe range");
  8761. for (var t = 15; t >= 0; --t) {
  8762. this._counter[t] = e % 256, e = parseInt(e / 256);
  8763. }
  8764. }
  8765. }, {
  8766. key: "setBytes",
  8767. value: function setBytes(e) {
  8768. if (16 != (e = Wt(e, !0)).length) throw new Error("invalid counter bytes size (must be 16 bytes)");
  8769. this._counter = e;
  8770. }
  8771. }, {
  8772. key: "increment",
  8773. value: function increment() {
  8774. for (var e = 15; e >= 0; e--) {
  8775. if (255 !== this._counter[e]) {
  8776. this._counter[e]++;
  8777. break;
  8778. }
  8779. this._counter[e] = 0;
  8780. }
  8781. }
  8782. }]);
  8783. return wn;
  8784. }();
  8785. var vn = /*#__PURE__*/function () {
  8786. function vn(e, t) {
  8787. (0, _classCallCheck2.default)(this, vn);
  8788. if (!(this instanceof vn)) throw Error("AES must be instanitated with `new`");
  8789. this.description = "Counter", this.name = "ctr", t instanceof wn || (t = new wn(t)), this._counter = t, this._remainingCounter = null, this._remainingCounterIndex = 16, this._aes = new fn(e);
  8790. }
  8791. (0, _createClass2.default)(vn, [{
  8792. key: "encrypt",
  8793. value: function encrypt(e) {
  8794. for (var t = Wt(e, !0), n = 0; n < t.length; n++) {
  8795. 16 === this._remainingCounterIndex && (this._remainingCounter = this._aes.encrypt(this._counter._counter), this._remainingCounterIndex = 0, this._counter.increment()), t[n] ^= this._remainingCounter[this._remainingCounterIndex++];
  8796. }
  8797. return t;
  8798. }
  8799. }, {
  8800. key: "decrypt",
  8801. value: function decrypt(e) {
  8802. return this.encrypt(e);
  8803. }
  8804. }]);
  8805. return vn;
  8806. }();
  8807. var In = {
  8808. AES: fn,
  8809. Counter: wn,
  8810. ModeOfOperation: {
  8811. ecb: gn,
  8812. cbc: mn,
  8813. cfb: yn,
  8814. ofb: _n,
  8815. ctr: vn
  8816. },
  8817. utils: {
  8818. hex: Gt,
  8819. utf8: Vt
  8820. },
  8821. padding: {
  8822. pkcs7: {
  8823. pad: function pad(e) {
  8824. var t = 16 - (e = Wt(e, !0)).length % 16,
  8825. n = Ht(e.length + t);
  8826. zt(e, n);
  8827. for (var s = e.length; s < n.length; s++) {
  8828. n[s] = t;
  8829. }
  8830. return n;
  8831. },
  8832. strip: function strip(e) {
  8833. if ((e = Wt(e, !0)).length < 16) throw new Error("PKCS#7 invalid length");
  8834. var t = e[e.length - 1];
  8835. if (t > 16) throw new Error("PKCS#7 padding byte out of range");
  8836. for (var n = e.length - t, s = 0; s < t; s++) {
  8837. if (e[n + s] !== t) throw new Error("PKCS#7 invalid padding byte");
  8838. }
  8839. var r = Ht(n);
  8840. return zt(e, r, 0, 0, n), r;
  8841. }
  8842. }
  8843. },
  8844. _arrayTest: {
  8845. coerceArray: Wt,
  8846. createArray: Ht,
  8847. copyArray: zt
  8848. }
  8849. };
  8850. function Sn(e, t, n) {
  8851. var s = new Uint8Array(uni.base64ToArrayBuffer(t)),
  8852. r = In.utils.utf8.toBytes(n),
  8853. i = In.utils.utf8.toBytes(e),
  8854. o = new In.ModeOfOperation.cbc(s, r),
  8855. a = In.padding.pkcs7.pad(i),
  8856. c = o.encrypt(a);
  8857. return uni.arrayBufferToBase64(c);
  8858. }
  8859. var bn = {
  8860. code: 2e4,
  8861. message: "System error"
  8862. },
  8863. kn = {
  8864. code: 20101,
  8865. message: "Invalid client"
  8866. },
  8867. An = {
  8868. code: 20102,
  8869. message: "Get encrypt key failed"
  8870. },
  8871. Pn = {
  8872. 10001: "Secure network is not supported on current playground or unimpsdk",
  8873. 10003: "Config missing in current app. If the problem pesist, please contact DCloud.",
  8874. 10009: "Encrypt payload failed",
  8875. 10010: "Decrypt response failed"
  8876. };
  8877. function Tn(e) {
  8878. var _ref33 = e || {},
  8879. t = _ref33.errSubject,
  8880. n = _ref33.subject,
  8881. s = _ref33.errCode,
  8882. r = _ref33.errMsg,
  8883. i = _ref33.code,
  8884. o = _ref33.message,
  8885. a = _ref33.cause;
  8886. return new te({
  8887. subject: t || n || "uni-secure-network",
  8888. code: s || i || bn.code,
  8889. message: r || o,
  8890. cause: a
  8891. });
  8892. }
  8893. var Cn,
  8894. xn,
  8895. On = null;
  8896. var En = /*#__PURE__*/function (_jt) {
  8897. (0, _inherits2.default)(En, _jt);
  8898. var _super9 = _createSuper(En);
  8899. function En(e) {
  8900. var _this16;
  8901. (0, _classCallCheck2.default)(this, En);
  8902. _this16 = _super9.call(this, e), _this16.clientType = "mp-weixin", _this16.userEncryptKey = null;
  8903. return _this16;
  8904. }
  8905. (0, _createClass2.default)(En, [{
  8906. key: "isLogin",
  8907. value: function isLogin() {
  8908. return !!this.scopedGlobalCache.mpWeixinCode || !!this.scopedGlobalCache.mpWeixinOpenid;
  8909. }
  8910. }, {
  8911. key: "prepare",
  8912. value: function () {
  8913. var _prepare2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee41() {
  8914. return _regenerator.default.wrap(function _callee41$(_context41) {
  8915. while (1) {
  8916. switch (_context41.prev = _context41.next) {
  8917. case 0:
  8918. if (this.isLogin()) {
  8919. _context41.next = 7;
  8920. break;
  8921. }
  8922. if (this.scopedGlobalCache.initPromise) {
  8923. _context41.next = 3;
  8924. break;
  8925. }
  8926. throw new Error("`uniCloud.initSecureNetworkByWeixin` has not yet been called");
  8927. case 3:
  8928. _context41.next = 5;
  8929. return this.scopedGlobalCache.initPromise;
  8930. case 5:
  8931. if (this.isLogin()) {
  8932. _context41.next = 7;
  8933. break;
  8934. }
  8935. throw new Error("uniCloud.initSecureNetworkByWeixin` has not yet been called or successfully excuted");
  8936. case 7:
  8937. case "end":
  8938. return _context41.stop();
  8939. }
  8940. }
  8941. }, _callee41, this);
  8942. }));
  8943. function prepare() {
  8944. return _prepare2.apply(this, arguments);
  8945. }
  8946. return prepare;
  8947. }()
  8948. }, {
  8949. key: "getUserEncryptKey",
  8950. value: function () {
  8951. var _getUserEncryptKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee42() {
  8952. var _this17 = this;
  8953. var e;
  8954. return _regenerator.default.wrap(function _callee42$(_context42) {
  8955. while (1) {
  8956. switch (_context42.prev = _context42.next) {
  8957. case 0:
  8958. if (!this.userEncryptKey) {
  8959. _context42.next = 2;
  8960. break;
  8961. }
  8962. return _context42.abrupt("return", this.userEncryptKey);
  8963. case 2:
  8964. if (!(On && On.expireTime)) {
  8965. _context42.next = 6;
  8966. break;
  8967. }
  8968. e = Date.now();
  8969. if (!(On.expireTime - e > 0)) {
  8970. _context42.next = 6;
  8971. break;
  8972. }
  8973. return _context42.abrupt("return", (this.userEncryptKey = On, this.userEncryptKey));
  8974. case 6:
  8975. return _context42.abrupt("return", new Promise(function (e, t) {
  8976. uni.getUserCryptoManager().getLatestUserKey({
  8977. success: function success(t) {
  8978. On = t, _this17.userEncryptKey = t, e(_this17.userEncryptKey);
  8979. },
  8980. fail: function fail(e) {
  8981. t(Tn(_objectSpread(_objectSpread({}, An), {}, {
  8982. cause: e
  8983. })));
  8984. }
  8985. });
  8986. }));
  8987. case 7:
  8988. case "end":
  8989. return _context42.stop();
  8990. }
  8991. }
  8992. }, _callee42, this);
  8993. }));
  8994. function getUserEncryptKey() {
  8995. return _getUserEncryptKey.apply(this, arguments);
  8996. }
  8997. return getUserEncryptKey;
  8998. }()
  8999. }, {
  9000. key: "getWxAppId",
  9001. value: function getWxAppId() {
  9002. return wx.getAccountInfoSync().miniProgram.appId;
  9003. }
  9004. }, {
  9005. key: "platformGetSignOption",
  9006. value: function () {
  9007. var _platformGetSignOption = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee43() {
  9008. var _yield$this$getUserEn, e, t, n;
  9009. return _regenerator.default.wrap(function _callee43$(_context43) {
  9010. while (1) {
  9011. switch (_context43.prev = _context43.next) {
  9012. case 0:
  9013. _context43.next = 2;
  9014. return this.getUserEncryptKey();
  9015. case 2:
  9016. _yield$this$getUserEn = _context43.sent;
  9017. e = _yield$this$getUserEn.encryptKey;
  9018. t = _yield$this$getUserEn.iv;
  9019. n = _yield$this$getUserEn.version;
  9020. return _context43.abrupt("return", {
  9021. verifyClientSign: Sn(JSON.stringify({
  9022. data: JSON.stringify({}),
  9023. appId: this.appId,
  9024. deviceId: this.deviceId,
  9025. wxAppId: this.getWxAppId(),
  9026. simulator: "devtools" === ae().platform,
  9027. timestamp: Date.now()
  9028. }), e, t),
  9029. encryptKeyId: n,
  9030. mpWeixinCode: this.scopedGlobalCache.mpWeixinCode,
  9031. mpWeixinOpenid: this.scopedGlobalCache.mpWeixinOpenid
  9032. });
  9033. case 7:
  9034. case "end":
  9035. return _context43.stop();
  9036. }
  9037. }
  9038. }, _callee43, this);
  9039. }));
  9040. function platformGetSignOption() {
  9041. return _platformGetSignOption.apply(this, arguments);
  9042. }
  9043. return platformGetSignOption;
  9044. }()
  9045. }, {
  9046. key: "platformEncryptData",
  9047. value: function () {
  9048. var _platformEncryptData = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee44(e) {
  9049. var _yield$this$getUserEn2, t, n, s, r;
  9050. return _regenerator.default.wrap(function _callee44$(_context44) {
  9051. while (1) {
  9052. switch (_context44.prev = _context44.next) {
  9053. case 0:
  9054. _context44.next = 2;
  9055. return this.getUserEncryptKey();
  9056. case 2:
  9057. _yield$this$getUserEn2 = _context44.sent;
  9058. t = _yield$this$getUserEn2.encryptKey;
  9059. n = _yield$this$getUserEn2.iv;
  9060. s = _yield$this$getUserEn2.version;
  9061. r = {
  9062. secretType: this.secretType,
  9063. encryptKeyId: s,
  9064. mpWeixinCode: this.scopedGlobalCache.mpWeixinCode,
  9065. mpWeixinOpenid: this.scopedGlobalCache.mpWeixinOpenid
  9066. };
  9067. return _context44.abrupt("return", this.secretType === Ft ? {
  9068. content: e,
  9069. _uniCloudOptions: r
  9070. } : {
  9071. content: Sn(JSON.stringify({
  9072. data: JSON.stringify(e),
  9073. appId: this.appId,
  9074. deviceId: this.deviceId,
  9075. wxAppId: this.getWxAppId(),
  9076. simulator: "devtools" === ae().platform,
  9077. timestamp: Date.now()
  9078. }), t, n),
  9079. _uniCloudOptions: r
  9080. });
  9081. case 8:
  9082. case "end":
  9083. return _context44.stop();
  9084. }
  9085. }
  9086. }, _callee44, this);
  9087. }));
  9088. function platformEncryptData(_x36) {
  9089. return _platformEncryptData.apply(this, arguments);
  9090. }
  9091. return platformEncryptData;
  9092. }()
  9093. }, {
  9094. key: "platformDecryptResult",
  9095. value: function () {
  9096. var _platformDecryptResult = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee45(e) {
  9097. var t, _yield$this$getUserEn3, n, s;
  9098. return _regenerator.default.wrap(function _callee45$(_context45) {
  9099. while (1) {
  9100. switch (_context45.prev = _context45.next) {
  9101. case 0:
  9102. t = e.content;
  9103. _context45.next = 3;
  9104. return this.getUserEncryptKey();
  9105. case 3:
  9106. _yield$this$getUserEn3 = _context45.sent;
  9107. n = _yield$this$getUserEn3.encryptKey;
  9108. s = _yield$this$getUserEn3.iv;
  9109. return _context45.abrupt("return", JSON.parse(function (e, t, n) {
  9110. var s = new Uint8Array(uni.base64ToArrayBuffer(e)),
  9111. r = new Uint8Array(uni.base64ToArrayBuffer(t)),
  9112. i = In.utils.utf8.toBytes(n),
  9113. o = new In.ModeOfOperation.cbc(r, i),
  9114. a = In.padding.pkcs7.strip(o.decrypt(s));
  9115. return In.utils.utf8.fromBytes(a);
  9116. }(t, n, s)));
  9117. case 7:
  9118. case "end":
  9119. return _context45.stop();
  9120. }
  9121. }
  9122. }, _callee45, this);
  9123. }));
  9124. function platformDecryptResult(_x37) {
  9125. return _platformDecryptResult.apply(this, arguments);
  9126. }
  9127. return platformDecryptResult;
  9128. }()
  9129. }, {
  9130. key: "isClientKeyNotFound",
  9131. value: function isClientKeyNotFound() {
  9132. return !1;
  9133. }
  9134. }]);
  9135. return En;
  9136. }(jt);
  9137. function Ln(e) {
  9138. var t = ["hasClientKey", "encryptGetClientKeyPayload", "setClientKey", "encrypt", "decrypt"],
  9139. n = {};
  9140. var _loop = function _loop(_s10) {
  9141. var r = t[_s10];
  9142. n[r] = function () {
  9143. for (var _len = arguments.length, t = new Array(_len), _key = 0; _key < _len; _key++) {
  9144. t[_key] = arguments[_key];
  9145. }
  9146. return new Promise(function (n, s) {
  9147. "function" == typeof e[r] ? e[r].apply(e, t.concat([function () {
  9148. var _ref34 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  9149. e = _ref34.type,
  9150. t = _ref34.data,
  9151. r = _ref34.errCode,
  9152. i = _ref34.errMsg,
  9153. o = _ref34.errSubject,
  9154. a = _ref34.message;
  9155. "success" === e ? n(t) : s(Tn({
  9156. errCode: r,
  9157. errMsg: Pn[r] || i || a,
  9158. errSubject: o
  9159. }));
  9160. }])) : s(Tn({
  9161. message: "请检查manifest.json内是否开启安全网络模块,另外注意标准基座不支持安全网络模块"
  9162. }));
  9163. });
  9164. };
  9165. };
  9166. for (var _s10 = 0; _s10 < t.length; _s10++) {
  9167. _loop(_s10);
  9168. }
  9169. return n;
  9170. }
  9171. var Rn = /*#__PURE__*/function (_jt2) {
  9172. (0, _inherits2.default)(Rn, _jt2);
  9173. var _super10 = _createSuper(Rn);
  9174. function Rn(e) {
  9175. var _this18;
  9176. (0, _classCallCheck2.default)(this, Rn);
  9177. _this18 = _super10.call(this, e), _this18.clientType = "app", _this18.appUtils = _objectSpread({}, Ln(uni.requireNativePlugin("plus"))), _this18.systemInfo = Cn || (Cn = ae());
  9178. return _this18;
  9179. }
  9180. (0, _createClass2.default)(Rn, [{
  9181. key: "hasClientKey",
  9182. value: function () {
  9183. var _hasClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee46() {
  9184. return _regenerator.default.wrap(function _callee46$(_context46) {
  9185. while (1) {
  9186. switch (_context46.prev = _context46.next) {
  9187. case 0:
  9188. _context46.next = 2;
  9189. return this.appUtils.hasClientKey({
  9190. provider: this.provider,
  9191. spaceId: this.spaceId
  9192. });
  9193. case 2:
  9194. this._hasClientKey = _context46.sent;
  9195. return _context46.abrupt("return", this._hasClientKey);
  9196. case 4:
  9197. case "end":
  9198. return _context46.stop();
  9199. }
  9200. }
  9201. }, _callee46, this);
  9202. }));
  9203. function hasClientKey() {
  9204. return _hasClientKey.apply(this, arguments);
  9205. }
  9206. return hasClientKey;
  9207. }()
  9208. }, {
  9209. key: "getAppClientKey",
  9210. value: function () {
  9211. var _getAppClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee47() {
  9212. var _yield$this$appUtils$, e, t, n, s, r;
  9213. return _regenerator.default.wrap(function _callee47$(_context47) {
  9214. while (1) {
  9215. switch (_context47.prev = _context47.next) {
  9216. case 0:
  9217. _context47.next = 2;
  9218. return this.appUtils.encryptGetClientKeyPayload({
  9219. data: JSON.stringify({})
  9220. });
  9221. case 2:
  9222. _yield$this$appUtils$ = _context47.sent;
  9223. e = _yield$this$appUtils$.data;
  9224. t = _yield$this$appUtils$.key;
  9225. _context47.next = 7;
  9226. return this.uniCloudIns.callFunction({
  9227. name: "DCloud-clientDB",
  9228. data: {
  9229. redirectTo: "encryption",
  9230. action: "getAppClientKey",
  9231. data: e,
  9232. key: t
  9233. }
  9234. });
  9235. case 7:
  9236. _context47.t0 = _context47.sent.result;
  9237. if (_context47.t0) {
  9238. _context47.next = 10;
  9239. break;
  9240. }
  9241. _context47.t0 = {};
  9242. case 10:
  9243. n = _context47.t0;
  9244. if (!(0 !== n.errCode)) {
  9245. _context47.next = 13;
  9246. break;
  9247. }
  9248. throw function (e) {
  9249. return new te({
  9250. subject: e.errSubject || "uni-secure-network",
  9251. code: e.errCode || e.code || bn.code,
  9252. message: e.errMsg || e.message
  9253. });
  9254. }(n);
  9255. case 13:
  9256. s = n.clientKey, r = n.key;
  9257. _context47.next = 16;
  9258. return this.appUtils.setClientKey({
  9259. provider: this.provider,
  9260. spaceId: this.spaceId,
  9261. clientKey: s,
  9262. key: r
  9263. });
  9264. case 16:
  9265. case "end":
  9266. return _context47.stop();
  9267. }
  9268. }
  9269. }, _callee47, this);
  9270. }));
  9271. function getAppClientKey() {
  9272. return _getAppClientKey.apply(this, arguments);
  9273. }
  9274. return getAppClientKey;
  9275. }()
  9276. }, {
  9277. key: "ensureClientKey",
  9278. value: function () {
  9279. var _ensureClientKey = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee48() {
  9280. var _this19 = this;
  9281. var _ref35,
  9282. _ref35$forceUpdate,
  9283. e,
  9284. _args48 = arguments;
  9285. return _regenerator.default.wrap(function _callee48$(_context48) {
  9286. while (1) {
  9287. switch (_context48.prev = _context48.next) {
  9288. case 0:
  9289. _ref35 = _args48.length > 0 && _args48[0] !== undefined ? _args48[0] : {}, _ref35$forceUpdate = _ref35.forceUpdate, e = _ref35$forceUpdate === void 0 ? !1 : _ref35$forceUpdate;
  9290. _context48.t1 = !0;
  9291. _context48.next = 4;
  9292. return this.hasClientKey();
  9293. case 4:
  9294. _context48.t2 = _context48.sent;
  9295. _context48.t0 = _context48.t1 !== _context48.t2;
  9296. if (_context48.t0) {
  9297. _context48.next = 8;
  9298. break;
  9299. }
  9300. _context48.t0 = e;
  9301. case 8:
  9302. if (!_context48.t0) {
  9303. _context48.next = 10;
  9304. break;
  9305. }
  9306. return _context48.abrupt("return", (e && this.scopedGlobalCache.initPromise && this.scopedGlobalCache.initStatus === h || !e && this.scopedGlobalCache.initPromise && this.scopedGlobalCache.initStatus !== p || (this.scopedGlobalCache.initPromise = this.getAppClientKey(), this.scopedGlobalCache.initPromise.then(function (e) {
  9307. _this19.scopedGlobalCache.initStatus = d;
  9308. }).catch(function (e) {
  9309. throw _this19.scopedGlobalCache.initStatus = p, e;
  9310. }), this.scopedGlobalCache.initStatus = h), this.scopedGlobalCache.initPromise));
  9311. case 10:
  9312. case "end":
  9313. return _context48.stop();
  9314. }
  9315. }
  9316. }, _callee48, this);
  9317. }));
  9318. function ensureClientKey() {
  9319. return _ensureClientKey.apply(this, arguments);
  9320. }
  9321. return ensureClientKey;
  9322. }()
  9323. }, {
  9324. key: "prepare",
  9325. value: function () {
  9326. var _prepare3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee49() {
  9327. var _ref36,
  9328. _ref36$forceUpdate,
  9329. e,
  9330. _args49 = arguments;
  9331. return _regenerator.default.wrap(function _callee49$(_context49) {
  9332. while (1) {
  9333. switch (_context49.prev = _context49.next) {
  9334. case 0:
  9335. _ref36 = _args49.length > 0 && _args49[0] !== undefined ? _args49[0] : {}, _ref36$forceUpdate = _ref36.forceUpdate, e = _ref36$forceUpdate === void 0 ? !1 : _ref36$forceUpdate;
  9336. _context49.next = 3;
  9337. return this.ensureClientKey({
  9338. forceUpdate: e
  9339. });
  9340. case 3:
  9341. case "end":
  9342. return _context49.stop();
  9343. }
  9344. }
  9345. }, _callee49, this);
  9346. }));
  9347. function prepare() {
  9348. return _prepare3.apply(this, arguments);
  9349. }
  9350. return prepare;
  9351. }()
  9352. }, {
  9353. key: "platformGetSignOption",
  9354. value: function () {
  9355. var _platformGetSignOption2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee50() {
  9356. var _yield$this$appUtils$2, e, t;
  9357. return _regenerator.default.wrap(function _callee50$(_context50) {
  9358. while (1) {
  9359. switch (_context50.prev = _context50.next) {
  9360. case 0:
  9361. _context50.next = 2;
  9362. return this.appUtils.encrypt({
  9363. provider: this.provider,
  9364. spaceId: this.spaceId,
  9365. data: JSON.stringify({})
  9366. });
  9367. case 2:
  9368. _yield$this$appUtils$2 = _context50.sent;
  9369. e = _yield$this$appUtils$2.data;
  9370. t = _yield$this$appUtils$2.key;
  9371. return _context50.abrupt("return", {
  9372. verifyClientSign: e,
  9373. encryptKeyId: t
  9374. });
  9375. case 6:
  9376. case "end":
  9377. return _context50.stop();
  9378. }
  9379. }
  9380. }, _callee50, this);
  9381. }));
  9382. function platformGetSignOption() {
  9383. return _platformGetSignOption2.apply(this, arguments);
  9384. }
  9385. return platformGetSignOption;
  9386. }()
  9387. }, {
  9388. key: "platformEncryptData",
  9389. value: function () {
  9390. var _platformEncryptData2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee51(e) {
  9391. var _yield$this$appUtils$3, t, n, s;
  9392. return _regenerator.default.wrap(function _callee51$(_context51) {
  9393. while (1) {
  9394. switch (_context51.prev = _context51.next) {
  9395. case 0:
  9396. _context51.next = 2;
  9397. return this.appUtils.encrypt({
  9398. provider: this.provider,
  9399. spaceId: this.spaceId,
  9400. data: JSON.stringify(e)
  9401. });
  9402. case 2:
  9403. _yield$this$appUtils$3 = _context51.sent;
  9404. t = _yield$this$appUtils$3.data;
  9405. n = _yield$this$appUtils$3.key;
  9406. s = {
  9407. secretType: this.secretType,
  9408. encryptKeyId: n
  9409. };
  9410. return _context51.abrupt("return", this.secretType === Ft ? {
  9411. content: e,
  9412. _uniCloudOptions: s
  9413. } : {
  9414. content: t,
  9415. _uniCloudOptions: s
  9416. });
  9417. case 7:
  9418. case "end":
  9419. return _context51.stop();
  9420. }
  9421. }
  9422. }, _callee51, this);
  9423. }));
  9424. function platformEncryptData(_x38) {
  9425. return _platformEncryptData2.apply(this, arguments);
  9426. }
  9427. return platformEncryptData;
  9428. }()
  9429. }, {
  9430. key: "platformDecryptResult",
  9431. value: function () {
  9432. var _platformDecryptResult2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee52(e) {
  9433. var t, _e$_uniCloudOptions, n, s, r;
  9434. return _regenerator.default.wrap(function _callee52$(_context52) {
  9435. while (1) {
  9436. switch (_context52.prev = _context52.next) {
  9437. case 0:
  9438. t = e.content;
  9439. _e$_uniCloudOptions = e._uniCloudOptions;
  9440. n = _e$_uniCloudOptions === void 0 ? {} : _e$_uniCloudOptions;
  9441. s = n.encryptKeyId;
  9442. _context52.next = 6;
  9443. return this.appUtils.decrypt({
  9444. provider: this.provider,
  9445. spaceId: this.spaceId,
  9446. data: t,
  9447. key: s
  9448. });
  9449. case 6:
  9450. r = _context52.sent;
  9451. return _context52.abrupt("return", JSON.parse(r.data));
  9452. case 8:
  9453. case "end":
  9454. return _context52.stop();
  9455. }
  9456. }
  9457. }, _callee52, this);
  9458. }));
  9459. function platformDecryptResult(_x39) {
  9460. return _platformDecryptResult2.apply(this, arguments);
  9461. }
  9462. return platformDecryptResult;
  9463. }()
  9464. }, {
  9465. key: "isClientKeyNotFound",
  9466. value: function isClientKeyNotFound() {
  9467. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  9468. var t = e.result || {};
  9469. return 70009 === t.errCode && "uni-secure-network" === t.errSubject;
  9470. }
  9471. }]);
  9472. return Rn;
  9473. }(jt);
  9474. function Un() {
  9475. var _ref37 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  9476. e = _ref37.secretType;
  9477. return e === qt || e === Ft || e === Kt;
  9478. }
  9479. function Nn() {
  9480. var _ref38 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  9481. e = _ref38.name,
  9482. _ref38$data = _ref38.data,
  9483. t = _ref38$data === void 0 ? {} : _ref38$data;
  9484. return "app" === P && "DCloud-clientDB" === e && "encryption" === t.redirectTo && "getAppClientKey" === t.action;
  9485. }
  9486. function Dn() {
  9487. var _ref39 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  9488. e = _ref39.provider,
  9489. t = _ref39.spaceId,
  9490. n = _ref39.functionName;
  9491. var _ae = ae(),
  9492. s = _ae.appId,
  9493. r = _ae.uniPlatform,
  9494. i = _ae.osName;
  9495. var o = r;
  9496. "app" === r && (o = i);
  9497. var a = function () {
  9498. var _ref40 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  9499. e = _ref40.provider,
  9500. t = _ref40.spaceId;
  9501. var n = A;
  9502. if (!n) return {};
  9503. e = function (e) {
  9504. return "tencent" === e ? "tcb" : e;
  9505. }(e);
  9506. var s = n.find(function (n) {
  9507. return n.provider === e && n.spaceId === t;
  9508. });
  9509. return s && s.config;
  9510. }({
  9511. provider: e,
  9512. spaceId: t
  9513. });
  9514. if (!a || !a.accessControl || !a.accessControl.enable) return !1;
  9515. var c = a.accessControl.function || {},
  9516. u = Object.keys(c);
  9517. if (0 === u.length) return !0;
  9518. var l = function (e, t) {
  9519. var n, s, r;
  9520. for (var _i2 = 0; _i2 < e.length; _i2++) {
  9521. var _o2 = e[_i2];
  9522. _o2 !== t ? "*" !== _o2 ? _o2.split(",").map(function (e) {
  9523. return e.trim();
  9524. }).indexOf(t) > -1 && (s = _o2) : r = _o2 : n = _o2;
  9525. }
  9526. return n || s || r;
  9527. }(u, n);
  9528. if (!l) return !1;
  9529. if ((c[l] || []).find(function () {
  9530. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  9531. return e.appId === s && (e.platform || "").toLowerCase() === o.toLowerCase();
  9532. })) return !0;
  9533. throw console.error("\u6B64\u5E94\u7528[appId: ".concat(s, ", platform: ").concat(o, "]\u4E0D\u5728\u4E91\u7AEF\u914D\u7F6E\u7684\u5141\u8BB8\u8BBF\u95EE\u7684\u5E94\u7528\u5217\u8868\u5185\uFF0C\u53C2\u8003\uFF1Ahttps://uniapp.dcloud.net.cn/uniCloud/secure-network.html#verify-client")), Tn(kn);
  9534. }
  9535. function Mn(_ref41) {
  9536. var e = _ref41.functionName,
  9537. t = _ref41.result,
  9538. n = _ref41.logPvd;
  9539. if (S && this.__dev__.debugLog && t && t.requestId) {
  9540. var _s11 = JSON.stringify({
  9541. spaceId: this.config.spaceId,
  9542. functionName: e,
  9543. requestId: t.requestId
  9544. });
  9545. console.log("[".concat(n, "-request]").concat(_s11, "[/").concat(n, "-request]"));
  9546. }
  9547. }
  9548. function qn(e) {
  9549. var t = e.callFunction,
  9550. n = function n(_n7) {
  9551. var _this20 = this;
  9552. var s = _n7.name;
  9553. _n7.data = Et.call(e, {
  9554. data: _n7.data
  9555. });
  9556. var r = {
  9557. aliyun: "aliyun",
  9558. tencent: "tcb",
  9559. tcb: "tcb",
  9560. alipay: "alipay"
  9561. }[this.config.provider],
  9562. i = Un(_n7),
  9563. o = Nn(_n7),
  9564. a = i || o;
  9565. return t.call(this, _n7).then(function (e) {
  9566. return e.errCode = 0, !a && Mn.call(_this20, {
  9567. functionName: s,
  9568. result: e,
  9569. logPvd: r
  9570. }), Promise.resolve(e);
  9571. }, function (e) {
  9572. return !a && Mn.call(_this20, {
  9573. functionName: s,
  9574. result: e,
  9575. logPvd: r
  9576. }), e && e.message && (e.message = function () {
  9577. var _ref42 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  9578. _ref42$message = _ref42.message,
  9579. e = _ref42$message === void 0 ? "" : _ref42$message,
  9580. _ref42$extraInfo = _ref42.extraInfo,
  9581. t = _ref42$extraInfo === void 0 ? {} : _ref42$extraInfo,
  9582. _ref42$formatter = _ref42.formatter,
  9583. n = _ref42$formatter === void 0 ? [] : _ref42$formatter;
  9584. for (var _s12 = 0; _s12 < n.length; _s12++) {
  9585. var _n$_s = n[_s12],
  9586. _r4 = _n$_s.rule,
  9587. _i3 = _n$_s.content,
  9588. _o3 = _n$_s.mode,
  9589. _a = e.match(_r4);
  9590. if (!_a) continue;
  9591. var _c = _i3;
  9592. for (var _e19 = 1; _e19 < _a.length; _e19++) {
  9593. _c = Dt(_c, "{$".concat(_e19, "}"), _a[_e19]);
  9594. }
  9595. for (var _e20 in t) {
  9596. _c = Dt(_c, "{".concat(_e20, "}"), t[_e20]);
  9597. }
  9598. return "replace" === _o3 ? _c : e + _c;
  9599. }
  9600. return e;
  9601. }({
  9602. message: "[".concat(_n7.name, "]: ").concat(e.message),
  9603. formatter: Rt,
  9604. extraInfo: {
  9605. functionName: s
  9606. }
  9607. })), Promise.reject(e);
  9608. });
  9609. };
  9610. e.callFunction = function (t) {
  9611. var _e$config = e.config,
  9612. s = _e$config.provider,
  9613. r = _e$config.spaceId,
  9614. i = t.name;
  9615. var o, a;
  9616. if (t.data = t.data || {}, S && e.__dev__.debugInfo && !e.__dev__.debugInfo.forceRemote && C ? (e._callCloudFunction || (e._callCloudFunction = n, e._callLocalFunction = Lt), o = Lt) : o = n, o = o.bind(e), Nn(t)) a = n.call(e, t);else if (function (_ref43) {
  9617. var e = _ref43.name,
  9618. _ref43$data = _ref43.data,
  9619. t = _ref43$data === void 0 ? {} : _ref43$data;
  9620. return "mp-weixin" === P && "uni-id-co" === e && "secureNetworkHandshakeByWeixin" === t.method;
  9621. }(t)) a = o.call(e, t);else if (Un(t)) {
  9622. a = new xn({
  9623. secretType: t.secretType,
  9624. uniCloudIns: e
  9625. }).wrapEncryptDataCallFunction(n.bind(e))(t);
  9626. } else if (Dn({
  9627. provider: s,
  9628. spaceId: r,
  9629. functionName: i
  9630. })) {
  9631. a = new xn({
  9632. secretType: t.secretType,
  9633. uniCloudIns: e
  9634. }).wrapVerifyClientCallFunction(n.bind(e))(t);
  9635. } else a = o(t);
  9636. return Object.defineProperty(a, "result", {
  9637. get: function get() {
  9638. return console.warn("当前返回结果为Promise类型,不可直接访问其result属性,详情请参考:https://uniapp.dcloud.net.cn/uniCloud/faq?id=promise"), {};
  9639. }
  9640. }), a;
  9641. };
  9642. }
  9643. xn = "mp-weixin" !== P && "app" !== P ? /*#__PURE__*/function () {
  9644. function _class2() {
  9645. (0, _classCallCheck2.default)(this, _class2);
  9646. throw Tn({
  9647. message: "Platform ".concat(P, " is not supported by secure network")
  9648. });
  9649. }
  9650. return (0, _createClass2.default)(_class2);
  9651. }() : k ? "mp-weixin" === P ? En : Rn : /*#__PURE__*/function () {
  9652. function _class3() {
  9653. (0, _classCallCheck2.default)(this, _class3);
  9654. throw Tn({
  9655. message: "Platform ".concat(P, " is not enabled, please check whether secure network module is enabled in your manifest.json")
  9656. });
  9657. }
  9658. return (0, _createClass2.default)(_class3);
  9659. }();
  9660. var Fn = Symbol("CLIENT_DB_INTERNAL");
  9661. function Kn(e, t) {
  9662. return e.then = "DoNotReturnProxyWithAFunctionNamedThen", e._internalType = Fn, e.inspect = null, e.__ob__ = void 0, new Proxy(e, {
  9663. get: function get(e, n, s) {
  9664. if ("_uniClient" === n) return null;
  9665. if ("symbol" == (0, _typeof2.default)(n)) return e[n];
  9666. if (n in e || "string" != typeof n) {
  9667. var _t13 = e[n];
  9668. return "function" == typeof _t13 ? _t13.bind(e) : _t13;
  9669. }
  9670. return t.get(e, n, s);
  9671. }
  9672. });
  9673. }
  9674. function jn(e) {
  9675. return {
  9676. on: function on(t, n) {
  9677. e[t] = e[t] || [], e[t].indexOf(n) > -1 || e[t].push(n);
  9678. },
  9679. off: function off(t, n) {
  9680. e[t] = e[t] || [];
  9681. var s = e[t].indexOf(n);
  9682. -1 !== s && e[t].splice(s, 1);
  9683. }
  9684. };
  9685. }
  9686. var Bn = ["db.Geo", "db.command", "command.aggregate"];
  9687. function $n(e, t) {
  9688. return Bn.indexOf("".concat(e, ".").concat(t)) > -1;
  9689. }
  9690. function Wn(e) {
  9691. switch (f(e)) {
  9692. case "array":
  9693. return e.map(function (e) {
  9694. return Wn(e);
  9695. });
  9696. case "object":
  9697. return e._internalType === Fn || Object.keys(e).forEach(function (t) {
  9698. e[t] = Wn(e[t]);
  9699. }), e;
  9700. case "regexp":
  9701. return {
  9702. $regexp: {
  9703. source: e.source,
  9704. flags: e.flags
  9705. }
  9706. };
  9707. case "date":
  9708. return {
  9709. $date: e.toISOString()
  9710. };
  9711. default:
  9712. return e;
  9713. }
  9714. }
  9715. function Hn(e) {
  9716. return e && e.content && e.content.$method;
  9717. }
  9718. var zn = /*#__PURE__*/function () {
  9719. function zn(e, t, n) {
  9720. (0, _classCallCheck2.default)(this, zn);
  9721. this.content = e, this.prevStage = t || null, this.udb = null, this._database = n;
  9722. }
  9723. (0, _createClass2.default)(zn, [{
  9724. key: "toJSON",
  9725. value: function toJSON() {
  9726. var e = this;
  9727. var t = [e.content];
  9728. for (; e.prevStage;) {
  9729. e = e.prevStage, t.push(e.content);
  9730. }
  9731. return {
  9732. $db: t.reverse().map(function (e) {
  9733. return {
  9734. $method: e.$method,
  9735. $param: Wn(e.$param)
  9736. };
  9737. })
  9738. };
  9739. }
  9740. }, {
  9741. key: "toString",
  9742. value: function toString() {
  9743. return JSON.stringify(this.toJSON());
  9744. }
  9745. }, {
  9746. key: "getAction",
  9747. value: function getAction() {
  9748. var e = this.toJSON().$db.find(function (e) {
  9749. return "action" === e.$method;
  9750. });
  9751. return e && e.$param && e.$param[0];
  9752. }
  9753. }, {
  9754. key: "getCommand",
  9755. value: function getCommand() {
  9756. return {
  9757. $db: this.toJSON().$db.filter(function (e) {
  9758. return "action" !== e.$method;
  9759. })
  9760. };
  9761. }
  9762. }, {
  9763. key: "isAggregate",
  9764. get: function get() {
  9765. var e = this;
  9766. for (; e;) {
  9767. var t = Hn(e),
  9768. _n8 = Hn(e.prevStage);
  9769. if ("aggregate" === t && "collection" === _n8 || "pipeline" === t) return !0;
  9770. e = e.prevStage;
  9771. }
  9772. return !1;
  9773. }
  9774. }, {
  9775. key: "isCommand",
  9776. get: function get() {
  9777. var e = this;
  9778. for (; e;) {
  9779. if ("command" === Hn(e)) return !0;
  9780. e = e.prevStage;
  9781. }
  9782. return !1;
  9783. }
  9784. }, {
  9785. key: "isAggregateCommand",
  9786. get: function get() {
  9787. var e = this;
  9788. for (; e;) {
  9789. var t = Hn(e),
  9790. _n9 = Hn(e.prevStage);
  9791. if ("aggregate" === t && "command" === _n9) return !0;
  9792. e = e.prevStage;
  9793. }
  9794. return !1;
  9795. }
  9796. }, {
  9797. key: "getNextStageFn",
  9798. value: function getNextStageFn(e) {
  9799. var t = this;
  9800. return function () {
  9801. return Jn({
  9802. $method: e,
  9803. $param: Wn(Array.from(arguments))
  9804. }, t, t._database);
  9805. };
  9806. }
  9807. }, {
  9808. key: "count",
  9809. get: function get() {
  9810. return this.isAggregate ? this.getNextStageFn("count") : function () {
  9811. return this._send("count", Array.from(arguments));
  9812. };
  9813. }
  9814. }, {
  9815. key: "remove",
  9816. get: function get() {
  9817. return this.isCommand ? this.getNextStageFn("remove") : function () {
  9818. return this._send("remove", Array.from(arguments));
  9819. };
  9820. }
  9821. }, {
  9822. key: "get",
  9823. value: function get() {
  9824. return this._send("get", Array.from(arguments));
  9825. }
  9826. }, {
  9827. key: "add",
  9828. get: function get() {
  9829. return this.isCommand ? this.getNextStageFn("add") : function () {
  9830. return this._send("add", Array.from(arguments));
  9831. };
  9832. }
  9833. }, {
  9834. key: "update",
  9835. value: function update() {
  9836. return this._send("update", Array.from(arguments));
  9837. }
  9838. }, {
  9839. key: "end",
  9840. value: function end() {
  9841. return this._send("end", Array.from(arguments));
  9842. }
  9843. }, {
  9844. key: "set",
  9845. get: function get() {
  9846. return this.isCommand ? this.getNextStageFn("set") : function () {
  9847. throw new Error("JQL禁止使用set方法");
  9848. };
  9849. }
  9850. }, {
  9851. key: "_send",
  9852. value: function _send(e, t) {
  9853. var n = this.getAction(),
  9854. s = this.getCommand();
  9855. if (s.$db.push({
  9856. $method: e,
  9857. $param: Wn(t)
  9858. }), S) {
  9859. var _e21 = s.$db.find(function (e) {
  9860. return "collection" === e.$method;
  9861. }),
  9862. _t14 = _e21 && _e21.$param;
  9863. _t14 && 1 === _t14.length && "string" == typeof _e21.$param[0] && _e21.$param[0].indexOf(",") > -1 && console.warn("检测到使用JQL语法联表查询时,未使用getTemp先过滤主表数据,在主表数据量大的情况下可能会查询缓慢。\n- 如何优化请参考此文档:https://uniapp.dcloud.net.cn/uniCloud/jql?id=lookup-with-temp \n- 如果主表数据量很小请忽略此信息,项目发行时不会出现此提示。");
  9864. }
  9865. return this._database._callCloudFunction({
  9866. action: n,
  9867. command: s
  9868. });
  9869. }
  9870. }]);
  9871. return zn;
  9872. }();
  9873. function Jn(e, t, n) {
  9874. return Kn(new zn(e, t, n), {
  9875. get: function get(e, t) {
  9876. var s = "db";
  9877. return e && e.content && (s = e.content.$method), $n(s, t) ? Jn({
  9878. $method: t
  9879. }, e, n) : function () {
  9880. return Jn({
  9881. $method: t,
  9882. $param: Wn(Array.from(arguments))
  9883. }, e, n);
  9884. };
  9885. }
  9886. });
  9887. }
  9888. function Vn(_ref44) {
  9889. var e = _ref44.path,
  9890. t = _ref44.method;
  9891. return /*#__PURE__*/function () {
  9892. function _class4() {
  9893. (0, _classCallCheck2.default)(this, _class4);
  9894. this.param = Array.from(arguments);
  9895. }
  9896. (0, _createClass2.default)(_class4, [{
  9897. key: "toJSON",
  9898. value: function toJSON() {
  9899. return {
  9900. $newDb: [].concat((0, _toConsumableArray2.default)(e.map(function (e) {
  9901. return {
  9902. $method: e
  9903. };
  9904. })), [{
  9905. $method: t,
  9906. $param: this.param
  9907. }])
  9908. };
  9909. }
  9910. }, {
  9911. key: "toString",
  9912. value: function toString() {
  9913. return JSON.stringify(this.toJSON());
  9914. }
  9915. }]);
  9916. return _class4;
  9917. }();
  9918. }
  9919. function Gn(e) {
  9920. var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  9921. return Kn(new e(t), {
  9922. get: function get(e, t) {
  9923. return $n("db", t) ? Jn({
  9924. $method: t
  9925. }, null, e) : function () {
  9926. return Jn({
  9927. $method: t,
  9928. $param: Wn(Array.from(arguments))
  9929. }, null, e);
  9930. };
  9931. }
  9932. });
  9933. }
  9934. var Yn = /*#__PURE__*/function (_ref45) {
  9935. (0, _inherits2.default)(Yn, _ref45);
  9936. var _super11 = _createSuper(Yn);
  9937. function Yn() {
  9938. (0, _classCallCheck2.default)(this, Yn);
  9939. return _super11.apply(this, arguments);
  9940. }
  9941. (0, _createClass2.default)(Yn, [{
  9942. key: "_parseResult",
  9943. value: function _parseResult(e) {
  9944. return this._isJQL ? e.result : e;
  9945. }
  9946. }, {
  9947. key: "_callCloudFunction",
  9948. value: function _callCloudFunction(_ref46) {
  9949. var _this21 = this;
  9950. var e = _ref46.action,
  9951. t = _ref46.command,
  9952. n = _ref46.multiCommand,
  9953. s = _ref46.queryList;
  9954. function r(e, t) {
  9955. if (n && s) for (var _n10 = 0; _n10 < s.length; _n10++) {
  9956. var _r5 = s[_n10];
  9957. _r5.udb && "function" == typeof _r5.udb.setResult && (t ? _r5.udb.setResult(t) : _r5.udb.setResult(e.result.dataList[_n10]));
  9958. }
  9959. }
  9960. var i = this,
  9961. o = this._isJQL ? "databaseForJQL" : "database";
  9962. function a(e) {
  9963. return i._callback("error", [e]), M(q(o, "fail"), e).then(function () {
  9964. return M(q(o, "complete"), e);
  9965. }).then(function () {
  9966. return r(null, e), Y(j, {
  9967. type: W,
  9968. content: e
  9969. }), Promise.reject(e);
  9970. });
  9971. }
  9972. var c = M(q(o, "invoke")),
  9973. u = this._uniClient;
  9974. return c.then(function () {
  9975. return u.callFunction({
  9976. name: "DCloud-clientDB",
  9977. type: l,
  9978. data: {
  9979. action: e,
  9980. command: t,
  9981. multiCommand: n
  9982. }
  9983. });
  9984. }).then(function (e) {
  9985. var _e$result = e.result,
  9986. t = _e$result.code,
  9987. n = _e$result.message,
  9988. s = _e$result.token,
  9989. c = _e$result.tokenExpired,
  9990. _e$result$systemInfo = _e$result.systemInfo,
  9991. u = _e$result$systemInfo === void 0 ? [] : _e$result$systemInfo;
  9992. if (u) for (var _e22 = 0; _e22 < u.length; _e22++) {
  9993. var _u$_e = u[_e22],
  9994. _t15 = _u$_e.level,
  9995. _n11 = _u$_e.message,
  9996. _s13 = _u$_e.detail,
  9997. _r6 = console["app" === P && "warn" === _t15 ? "error" : _t15] || console.log;
  9998. var _i4 = "[System Info]" + _n11;
  9999. _s13 && (_i4 = "".concat(_i4, "\n\u8BE6\u7EC6\u4FE1\u606F\uFF1A").concat(_s13)), _r6(_i4);
  10000. }
  10001. if (t) {
  10002. return a(new te({
  10003. code: t,
  10004. message: n,
  10005. requestId: e.requestId
  10006. }));
  10007. }
  10008. e.result.errCode = e.result.errCode || e.result.code, e.result.errMsg = e.result.errMsg || e.result.message, s && c && (re({
  10009. token: s,
  10010. tokenExpired: c
  10011. }), _this21._callbackAuth("refreshToken", [{
  10012. token: s,
  10013. tokenExpired: c
  10014. }]), _this21._callback("refreshToken", [{
  10015. token: s,
  10016. tokenExpired: c
  10017. }]), Y($, {
  10018. token: s,
  10019. tokenExpired: c
  10020. }));
  10021. var l = [{
  10022. prop: "affectedDocs",
  10023. tips: "affectedDocs不再推荐使用,请使用inserted/deleted/updated/data.length替代"
  10024. }, {
  10025. prop: "code",
  10026. tips: "code不再推荐使用,请使用errCode替代"
  10027. }, {
  10028. prop: "message",
  10029. tips: "message不再推荐使用,请使用errMsg替代"
  10030. }];
  10031. var _loop2 = function _loop2(_t16) {
  10032. var _l$_t = l[_t16],
  10033. n = _l$_t.prop,
  10034. s = _l$_t.tips;
  10035. if (n in e.result) {
  10036. var _t17 = e.result[n];
  10037. Object.defineProperty(e.result, n, {
  10038. get: function get() {
  10039. return console.warn(s), _t17;
  10040. }
  10041. });
  10042. }
  10043. };
  10044. for (var _t16 = 0; _t16 < l.length; _t16++) {
  10045. _loop2(_t16);
  10046. }
  10047. return function (e) {
  10048. return M(q(o, "success"), e).then(function () {
  10049. return M(q(o, "complete"), e);
  10050. }).then(function () {
  10051. r(e, null);
  10052. var t = i._parseResult(e);
  10053. return Y(j, {
  10054. type: W,
  10055. content: t
  10056. }), Promise.resolve(t);
  10057. });
  10058. }(e);
  10059. }, function (e) {
  10060. /fc_function_not_found|FUNCTION_NOT_FOUND/g.test(e.message) && console.warn("clientDB未初始化,请在web控制台保存一次schema以开启clientDB");
  10061. return a(new te({
  10062. code: e.code || "SYSTEM_ERROR",
  10063. message: e.message,
  10064. requestId: e.requestId
  10065. }));
  10066. });
  10067. }
  10068. }]);
  10069. return Yn;
  10070. }( /*#__PURE__*/function () {
  10071. function _class5() {
  10072. var _ref47 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  10073. _ref47$uniClient = _ref47.uniClient,
  10074. e = _ref47$uniClient === void 0 ? {} : _ref47$uniClient,
  10075. _ref47$isJQL = _ref47.isJQL,
  10076. t = _ref47$isJQL === void 0 ? !1 : _ref47$isJQL;
  10077. (0, _classCallCheck2.default)(this, _class5);
  10078. this._uniClient = e, this._authCallBacks = {}, this._dbCallBacks = {}, e._isDefault && (this._dbCallBacks = L("_globalUniCloudDatabaseCallback")), t || (this.auth = jn(this._authCallBacks)), this._isJQL = t, Object.assign(this, jn(this._dbCallBacks)), this.env = Kn({}, {
  10079. get: function get(e, t) {
  10080. return {
  10081. $env: t
  10082. };
  10083. }
  10084. }), this.Geo = Kn({}, {
  10085. get: function get(e, t) {
  10086. return Vn({
  10087. path: ["Geo"],
  10088. method: t
  10089. });
  10090. }
  10091. }), this.serverDate = Vn({
  10092. path: [],
  10093. method: "serverDate"
  10094. }), this.RegExp = Vn({
  10095. path: [],
  10096. method: "RegExp"
  10097. });
  10098. }
  10099. (0, _createClass2.default)(_class5, [{
  10100. key: "getCloudEnv",
  10101. value: function getCloudEnv(e) {
  10102. if ("string" != typeof e || !e.trim()) throw new Error("getCloudEnv参数错误");
  10103. return {
  10104. $env: e.replace("$cloudEnv_", "")
  10105. };
  10106. }
  10107. }, {
  10108. key: "_callback",
  10109. value: function _callback(e, t) {
  10110. var n = this._dbCallBacks;
  10111. n[e] && n[e].forEach(function (e) {
  10112. e.apply(void 0, (0, _toConsumableArray2.default)(t));
  10113. });
  10114. }
  10115. }, {
  10116. key: "_callbackAuth",
  10117. value: function _callbackAuth(e, t) {
  10118. var n = this._authCallBacks;
  10119. n[e] && n[e].forEach(function (e) {
  10120. e.apply(void 0, (0, _toConsumableArray2.default)(t));
  10121. });
  10122. }
  10123. }, {
  10124. key: "multiSend",
  10125. value: function multiSend() {
  10126. var e = Array.from(arguments),
  10127. t = e.map(function (e) {
  10128. var t = e.getAction(),
  10129. n = e.getCommand();
  10130. if ("getTemp" !== n.$db[n.$db.length - 1].$method) throw new Error("multiSend只支持子命令内使用getTemp");
  10131. return {
  10132. action: t,
  10133. command: n
  10134. };
  10135. });
  10136. return this._callCloudFunction({
  10137. multiCommand: t,
  10138. queryList: e
  10139. });
  10140. }
  10141. }]);
  10142. return _class5;
  10143. }());
  10144. var Qn = "token无效,跳转登录页面",
  10145. Xn = "token过期,跳转登录页面",
  10146. Zn = {
  10147. TOKEN_INVALID_TOKEN_EXPIRED: Xn,
  10148. TOKEN_INVALID_INVALID_CLIENTID: Qn,
  10149. TOKEN_INVALID: Qn,
  10150. TOKEN_INVALID_WRONG_TOKEN: Qn,
  10151. TOKEN_INVALID_ANONYMOUS_USER: Qn
  10152. },
  10153. es = {
  10154. "uni-id-token-expired": Xn,
  10155. "uni-id-check-token-failed": Qn,
  10156. "uni-id-token-not-exist": Qn,
  10157. "uni-id-check-device-feature-failed": Qn
  10158. };
  10159. function ts(e, t) {
  10160. var n = "";
  10161. return n = e ? "".concat(e, "/").concat(t) : t, n.replace(/^\//, "");
  10162. }
  10163. function ns() {
  10164. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  10165. var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "";
  10166. var n = [],
  10167. s = [];
  10168. return e.forEach(function (e) {
  10169. !0 === e.needLogin ? n.push(ts(t, e.path)) : !1 === e.needLogin && s.push(ts(t, e.path));
  10170. }), {
  10171. needLoginPage: n,
  10172. notNeedLoginPage: s
  10173. };
  10174. }
  10175. function ss(e) {
  10176. return e.split("?")[0].replace(/^\//, "");
  10177. }
  10178. function rs() {
  10179. return function (e) {
  10180. var t = e && e.$page && e.$page.fullPath || "";
  10181. return t ? ("/" !== t.charAt(0) && (t = "/" + t), t) : t;
  10182. }(function () {
  10183. var e = getCurrentPages();
  10184. return e[e.length - 1];
  10185. }());
  10186. }
  10187. function is() {
  10188. return ss(rs());
  10189. }
  10190. function os() {
  10191. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
  10192. var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  10193. if (!e) return !1;
  10194. if (!(t && t.list && t.list.length)) return !1;
  10195. var n = t.list,
  10196. s = ss(e);
  10197. return n.some(function (e) {
  10198. return e.pagePath === s;
  10199. });
  10200. }
  10201. var as = !!_pages.default.uniIdRouter;
  10202. var _ref48 = function () {
  10203. var _ref29 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _pages.default,
  10204. _ref29$pages = _ref29.pages,
  10205. t = _ref29$pages === void 0 ? [] : _ref29$pages,
  10206. _ref29$subPackages = _ref29.subPackages,
  10207. n = _ref29$subPackages === void 0 ? [] : _ref29$subPackages,
  10208. _ref29$uniIdRouter = _ref29.uniIdRouter,
  10209. s = _ref29$uniIdRouter === void 0 ? {} : _ref29$uniIdRouter,
  10210. _ref29$tabBar = _ref29.tabBar,
  10211. r = _ref29$tabBar === void 0 ? {} : _ref29$tabBar;
  10212. var i = s.loginPage,
  10213. _s$needLogin = s.needLogin,
  10214. o = _s$needLogin === void 0 ? [] : _s$needLogin,
  10215. _s$resToLogin = s.resToLogin,
  10216. a = _s$resToLogin === void 0 ? !0 : _s$resToLogin,
  10217. _ns = ns(t),
  10218. c = _ns.needLoginPage,
  10219. u = _ns.notNeedLoginPage,
  10220. _ref31 = function () {
  10221. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  10222. var t = [],
  10223. n = [];
  10224. return e.forEach(function (e) {
  10225. var s = e.root,
  10226. _e$pages = e.pages,
  10227. r = _e$pages === void 0 ? [] : _e$pages,
  10228. _ns2 = ns(r, s),
  10229. i = _ns2.needLoginPage,
  10230. o = _ns2.notNeedLoginPage;
  10231. t.push.apply(t, (0, _toConsumableArray2.default)(i)), n.push.apply(n, (0, _toConsumableArray2.default)(o));
  10232. }), {
  10233. needLoginPage: t,
  10234. notNeedLoginPage: n
  10235. };
  10236. }(n),
  10237. l = _ref31.needLoginPage,
  10238. h = _ref31.notNeedLoginPage;
  10239. return {
  10240. loginPage: i,
  10241. routerNeedLogin: o,
  10242. resToLogin: a,
  10243. needLoginPage: [].concat((0, _toConsumableArray2.default)(c), (0, _toConsumableArray2.default)(l)),
  10244. notNeedLoginPage: [].concat((0, _toConsumableArray2.default)(u), (0, _toConsumableArray2.default)(h)),
  10245. loginPageInTabBar: os(i, r)
  10246. };
  10247. }(),
  10248. cs = _ref48.loginPage,
  10249. us = _ref48.routerNeedLogin,
  10250. ls = _ref48.resToLogin,
  10251. hs = _ref48.needLoginPage,
  10252. ds = _ref48.notNeedLoginPage,
  10253. ps = _ref48.loginPageInTabBar;
  10254. if (hs.indexOf(cs) > -1) throw new Error("Login page [".concat(cs, "] should not be \"needLogin\", please check your pages.json"));
  10255. function fs(e) {
  10256. var t = is();
  10257. if ("/" === e.charAt(0)) return e;
  10258. var _e$split = e.split("?"),
  10259. _e$split2 = (0, _slicedToArray2.default)(_e$split, 2),
  10260. n = _e$split2[0],
  10261. s = _e$split2[1],
  10262. r = n.replace(/^\//, "").split("/"),
  10263. i = t.split("/");
  10264. i.pop();
  10265. for (var _e23 = 0; _e23 < r.length; _e23++) {
  10266. var _t18 = r[_e23];
  10267. ".." === _t18 ? i.pop() : "." !== _t18 && i.push(_t18);
  10268. }
  10269. return "" === i[0] && i.shift(), "/" + i.join("/") + (s ? "?" + s : "");
  10270. }
  10271. function gs(e) {
  10272. var t = ss(fs(e));
  10273. return !(ds.indexOf(t) > -1) && (hs.indexOf(t) > -1 || us.some(function (t) {
  10274. return function (e, t) {
  10275. return new RegExp(t).test(e);
  10276. }(e, t);
  10277. }));
  10278. }
  10279. function ms(_ref49) {
  10280. var e = _ref49.redirect;
  10281. var t = ss(e),
  10282. n = ss(cs);
  10283. return is() !== n && t !== n;
  10284. }
  10285. function ys() {
  10286. var _ref50 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  10287. e = _ref50.api,
  10288. t = _ref50.redirect;
  10289. if (!t || !ms({
  10290. redirect: t
  10291. })) return;
  10292. var n = function (e, t) {
  10293. return "/" !== e.charAt(0) && (e = "/" + e), t ? e.indexOf("?") > -1 ? e + "&uniIdRedirectUrl=".concat(encodeURIComponent(t)) : e + "?uniIdRedirectUrl=".concat(encodeURIComponent(t)) : e;
  10294. }(cs, t);
  10295. ps ? "navigateTo" !== e && "redirectTo" !== e || (e = "switchTab") : "switchTab" === e && (e = "navigateTo");
  10296. var s = {
  10297. navigateTo: uni.navigateTo,
  10298. redirectTo: uni.redirectTo,
  10299. switchTab: uni.switchTab,
  10300. reLaunch: uni.reLaunch
  10301. };
  10302. setTimeout(function () {
  10303. s[e]({
  10304. url: n
  10305. });
  10306. });
  10307. }
  10308. function _s() {
  10309. var _ref51 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  10310. e = _ref51.url;
  10311. var t = {
  10312. abortLoginPageJump: !1,
  10313. autoToLoginPage: !1
  10314. },
  10315. n = function () {
  10316. var _se3 = se(),
  10317. e = _se3.token,
  10318. t = _se3.tokenExpired;
  10319. var n;
  10320. if (e) {
  10321. if (t < Date.now()) {
  10322. var _e24 = "uni-id-token-expired";
  10323. n = {
  10324. errCode: _e24,
  10325. errMsg: es[_e24]
  10326. };
  10327. }
  10328. } else {
  10329. var _e25 = "uni-id-check-token-failed";
  10330. n = {
  10331. errCode: _e25,
  10332. errMsg: es[_e25]
  10333. };
  10334. }
  10335. return n;
  10336. }();
  10337. if (gs(e) && n) {
  10338. n.uniIdRedirectUrl = e;
  10339. if (J(B).length > 0) return setTimeout(function () {
  10340. Y(B, n);
  10341. }, 0), t.abortLoginPageJump = !0, t;
  10342. t.autoToLoginPage = !0;
  10343. }
  10344. return t;
  10345. }
  10346. function ws() {
  10347. !function () {
  10348. var e = rs(),
  10349. _s14 = _s({
  10350. url: e
  10351. }),
  10352. t = _s14.abortLoginPageJump,
  10353. n = _s14.autoToLoginPage;
  10354. t || n && ys({
  10355. api: "redirectTo",
  10356. redirect: e
  10357. });
  10358. }();
  10359. var e = ["navigateTo", "redirectTo", "reLaunch", "switchTab"];
  10360. var _loop3 = function _loop3(_t19) {
  10361. var n = e[_t19];
  10362. uni.addInterceptor(n, {
  10363. invoke: function invoke(e) {
  10364. var _s15 = _s({
  10365. url: e.url
  10366. }),
  10367. t = _s15.abortLoginPageJump,
  10368. s = _s15.autoToLoginPage;
  10369. return t ? e : s ? (ys({
  10370. api: n,
  10371. redirect: fs(e.url)
  10372. }), !1) : e;
  10373. }
  10374. });
  10375. };
  10376. for (var _t19 = 0; _t19 < e.length; _t19++) {
  10377. _loop3(_t19);
  10378. }
  10379. }
  10380. function vs() {
  10381. this.onResponse(function (e) {
  10382. var t = e.type,
  10383. n = e.content;
  10384. var s = !1;
  10385. switch (t) {
  10386. case "cloudobject":
  10387. s = function (e) {
  10388. if ("object" != (0, _typeof2.default)(e)) return !1;
  10389. var _ref52 = e || {},
  10390. t = _ref52.errCode;
  10391. return t in es;
  10392. }(n);
  10393. break;
  10394. case "clientdb":
  10395. s = function (e) {
  10396. if ("object" != (0, _typeof2.default)(e)) return !1;
  10397. var _ref53 = e || {},
  10398. t = _ref53.errCode;
  10399. return t in Zn;
  10400. }(n);
  10401. }
  10402. s && function () {
  10403. var e = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  10404. var t = J(B);
  10405. Z().then(function () {
  10406. var n = rs();
  10407. if (n && ms({
  10408. redirect: n
  10409. })) return t.length > 0 ? Y(B, Object.assign({
  10410. uniIdRedirectUrl: n
  10411. }, e)) : void (cs && ys({
  10412. api: "navigateTo",
  10413. redirect: n
  10414. }));
  10415. });
  10416. }(n);
  10417. });
  10418. }
  10419. function Is(e) {
  10420. !function (e) {
  10421. e.onResponse = function (e) {
  10422. V(j, e);
  10423. }, e.offResponse = function (e) {
  10424. G(j, e);
  10425. };
  10426. }(e), function (e) {
  10427. e.onNeedLogin = function (e) {
  10428. V(B, e);
  10429. }, e.offNeedLogin = function (e) {
  10430. G(B, e);
  10431. }, as && (L("_globalUniCloudStatus").needLoginInit || (L("_globalUniCloudStatus").needLoginInit = !0, Z().then(function () {
  10432. ws.call(e);
  10433. }), ls && vs.call(e)));
  10434. }(e), function (e) {
  10435. e.onRefreshToken = function (e) {
  10436. V($, e);
  10437. }, e.offRefreshToken = function (e) {
  10438. G($, e);
  10439. };
  10440. }(e);
  10441. }
  10442. var Ss;
  10443. var bs = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
  10444. ks = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/;
  10445. function As() {
  10446. var e = se().token || "",
  10447. t = e.split(".");
  10448. if (!e || 3 !== t.length) return {
  10449. uid: null,
  10450. role: [],
  10451. permission: [],
  10452. tokenExpired: 0
  10453. };
  10454. var n;
  10455. try {
  10456. n = JSON.parse((s = t[1], decodeURIComponent(Ss(s).split("").map(function (e) {
  10457. return "%" + ("00" + e.charCodeAt(0).toString(16)).slice(-2);
  10458. }).join(""))));
  10459. } catch (e) {
  10460. throw new Error("获取当前用户信息出错,详细错误信息为:" + e.message);
  10461. }
  10462. var s;
  10463. return n.tokenExpired = 1e3 * n.exp, delete n.exp, delete n.iat, n;
  10464. }
  10465. Ss = "function" != typeof atob ? function (e) {
  10466. if (e = String(e).replace(/[\t\n\f\r ]+/g, ""), !ks.test(e)) throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.");
  10467. var t;
  10468. e += "==".slice(2 - (3 & e.length));
  10469. for (var n, s, r = "", i = 0; i < e.length;) {
  10470. t = bs.indexOf(e.charAt(i++)) << 18 | bs.indexOf(e.charAt(i++)) << 12 | (n = bs.indexOf(e.charAt(i++))) << 6 | (s = bs.indexOf(e.charAt(i++))), r += 64 === n ? String.fromCharCode(t >> 16 & 255) : 64 === s ? String.fromCharCode(t >> 16 & 255, t >> 8 & 255) : String.fromCharCode(t >> 16 & 255, t >> 8 & 255, 255 & t);
  10471. }
  10472. return r;
  10473. } : atob;
  10474. var Ps = n(function (e, t) {
  10475. Object.defineProperty(t, "__esModule", {
  10476. value: !0
  10477. });
  10478. var n = "chooseAndUploadFile:ok",
  10479. s = "chooseAndUploadFile:fail";
  10480. function r(e, t) {
  10481. return e.tempFiles.forEach(function (e, n) {
  10482. e.name || (e.name = e.path.substring(e.path.lastIndexOf("/") + 1)), t && (e.fileType = t), e.cloudPath = Date.now() + "_" + n + e.name.substring(e.name.lastIndexOf("."));
  10483. }), e.tempFilePaths || (e.tempFilePaths = e.tempFiles.map(function (e) {
  10484. return e.path;
  10485. })), e;
  10486. }
  10487. function i(e, t, _ref54) {
  10488. var s = _ref54.onChooseFile,
  10489. r = _ref54.onUploadProgress;
  10490. return t.then(function (e) {
  10491. if (s) {
  10492. var _t20 = s(e);
  10493. if (void 0 !== _t20) return Promise.resolve(_t20).then(function (t) {
  10494. return void 0 === t ? e : t;
  10495. });
  10496. }
  10497. return e;
  10498. }).then(function (t) {
  10499. return !1 === t ? {
  10500. errMsg: n,
  10501. tempFilePaths: [],
  10502. tempFiles: []
  10503. } : function (e, t) {
  10504. var s = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 5;
  10505. var r = arguments.length > 3 ? arguments[3] : undefined;
  10506. (t = Object.assign({}, t)).errMsg = n;
  10507. var i = t.tempFiles,
  10508. o = i.length;
  10509. var a = 0;
  10510. return new Promise(function (n) {
  10511. for (; a < s;) {
  10512. c();
  10513. }
  10514. function c() {
  10515. var s = a++;
  10516. if (s >= o) return void (!i.find(function (e) {
  10517. return !e.url && !e.errMsg;
  10518. }) && n(t));
  10519. var u = i[s];
  10520. e.uploadFile({
  10521. filePath: u.path,
  10522. cloudPath: u.cloudPath,
  10523. fileType: u.fileType,
  10524. cloudPathAsRealPath: u.cloudPathAsRealPath,
  10525. onUploadProgress: function onUploadProgress(e) {
  10526. e.index = s, e.tempFile = u, e.tempFilePath = u.path, r && r(e);
  10527. }
  10528. }).then(function (e) {
  10529. u.url = e.fileID, s < o && c();
  10530. }).catch(function (e) {
  10531. u.errMsg = e.errMsg || e.message, s < o && c();
  10532. });
  10533. }
  10534. });
  10535. }(e, t, 5, r);
  10536. });
  10537. }
  10538. t.initChooseAndUploadFile = function (e) {
  10539. return function () {
  10540. var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
  10541. type: "all"
  10542. };
  10543. return "image" === t.type ? i(e, function (e) {
  10544. var t = e.count,
  10545. n = e.sizeType,
  10546. _e$sourceType = e.sourceType,
  10547. i = _e$sourceType === void 0 ? ["album", "camera"] : _e$sourceType,
  10548. o = e.extension;
  10549. return new Promise(function (e, a) {
  10550. uni.chooseImage({
  10551. count: t,
  10552. sizeType: n,
  10553. sourceType: i,
  10554. extension: o,
  10555. success: function success(t) {
  10556. e(r(t, "image"));
  10557. },
  10558. fail: function fail(e) {
  10559. a({
  10560. errMsg: e.errMsg.replace("chooseImage:fail", s)
  10561. });
  10562. }
  10563. });
  10564. });
  10565. }(t), t) : "video" === t.type ? i(e, function (e) {
  10566. var t = e.camera,
  10567. n = e.compressed,
  10568. i = e.maxDuration,
  10569. _e$sourceType2 = e.sourceType,
  10570. o = _e$sourceType2 === void 0 ? ["album", "camera"] : _e$sourceType2,
  10571. a = e.extension;
  10572. return new Promise(function (e, c) {
  10573. uni.chooseVideo({
  10574. camera: t,
  10575. compressed: n,
  10576. maxDuration: i,
  10577. sourceType: o,
  10578. extension: a,
  10579. success: function success(t) {
  10580. var n = t.tempFilePath,
  10581. s = t.duration,
  10582. i = t.size,
  10583. o = t.height,
  10584. a = t.width;
  10585. e(r({
  10586. errMsg: "chooseVideo:ok",
  10587. tempFilePaths: [n],
  10588. tempFiles: [{
  10589. name: t.tempFile && t.tempFile.name || "",
  10590. path: n,
  10591. size: i,
  10592. type: t.tempFile && t.tempFile.type || "",
  10593. width: a,
  10594. height: o,
  10595. duration: s,
  10596. fileType: "video",
  10597. cloudPath: ""
  10598. }]
  10599. }, "video"));
  10600. },
  10601. fail: function fail(e) {
  10602. c({
  10603. errMsg: e.errMsg.replace("chooseVideo:fail", s)
  10604. });
  10605. }
  10606. });
  10607. });
  10608. }(t), t) : i(e, function (e) {
  10609. var t = e.count,
  10610. n = e.extension;
  10611. return new Promise(function (e, i) {
  10612. var o = uni.chooseFile;
  10613. if ("undefined" != typeof wx && "function" == typeof wx.chooseMessageFile && (o = wx.chooseMessageFile), "function" != typeof o) return i({
  10614. errMsg: s + " 请指定 type 类型,该平台仅支持选择 image 或 video。"
  10615. });
  10616. o({
  10617. type: "all",
  10618. count: t,
  10619. extension: n,
  10620. success: function success(t) {
  10621. e(r(t));
  10622. },
  10623. fail: function fail(e) {
  10624. i({
  10625. errMsg: e.errMsg.replace("chooseFile:fail", s)
  10626. });
  10627. }
  10628. });
  10629. });
  10630. }(t), t);
  10631. };
  10632. };
  10633. }),
  10634. Ts = t(Ps);
  10635. var Cs = "manual";
  10636. function xs(e) {
  10637. return {
  10638. props: {
  10639. localdata: {
  10640. type: Array,
  10641. default: function _default() {
  10642. return [];
  10643. }
  10644. },
  10645. options: {
  10646. type: [Object, Array],
  10647. default: function _default() {
  10648. return {};
  10649. }
  10650. },
  10651. spaceInfo: {
  10652. type: Object,
  10653. default: function _default() {
  10654. return {};
  10655. }
  10656. },
  10657. collection: {
  10658. type: [String, Array],
  10659. default: ""
  10660. },
  10661. action: {
  10662. type: String,
  10663. default: ""
  10664. },
  10665. field: {
  10666. type: String,
  10667. default: ""
  10668. },
  10669. orderby: {
  10670. type: String,
  10671. default: ""
  10672. },
  10673. where: {
  10674. type: [String, Object],
  10675. default: ""
  10676. },
  10677. pageData: {
  10678. type: String,
  10679. default: "add"
  10680. },
  10681. pageCurrent: {
  10682. type: Number,
  10683. default: 1
  10684. },
  10685. pageSize: {
  10686. type: Number,
  10687. default: 20
  10688. },
  10689. getcount: {
  10690. type: [Boolean, String],
  10691. default: !1
  10692. },
  10693. gettree: {
  10694. type: [Boolean, String],
  10695. default: !1
  10696. },
  10697. gettreepath: {
  10698. type: [Boolean, String],
  10699. default: !1
  10700. },
  10701. startwith: {
  10702. type: String,
  10703. default: ""
  10704. },
  10705. limitlevel: {
  10706. type: Number,
  10707. default: 10
  10708. },
  10709. groupby: {
  10710. type: String,
  10711. default: ""
  10712. },
  10713. groupField: {
  10714. type: String,
  10715. default: ""
  10716. },
  10717. distinct: {
  10718. type: [Boolean, String],
  10719. default: !1
  10720. },
  10721. foreignKey: {
  10722. type: String,
  10723. default: ""
  10724. },
  10725. loadtime: {
  10726. type: String,
  10727. default: "auto"
  10728. },
  10729. manual: {
  10730. type: Boolean,
  10731. default: !1
  10732. }
  10733. },
  10734. data: function data() {
  10735. return {
  10736. mixinDatacomLoading: !1,
  10737. mixinDatacomHasMore: !1,
  10738. mixinDatacomResData: [],
  10739. mixinDatacomErrorMessage: "",
  10740. mixinDatacomPage: {}
  10741. };
  10742. },
  10743. created: function created() {
  10744. var _this22 = this;
  10745. this.mixinDatacomPage = {
  10746. current: this.pageCurrent,
  10747. size: this.pageSize,
  10748. count: 0
  10749. }, this.$watch(function () {
  10750. var e = [];
  10751. return ["pageCurrent", "pageSize", "localdata", "collection", "action", "field", "orderby", "where", "getont", "getcount", "gettree", "groupby", "groupField", "distinct"].forEach(function (t) {
  10752. e.push(_this22[t]);
  10753. }), e;
  10754. }, function (e, t) {
  10755. if (_this22.loadtime === Cs) return;
  10756. var n = !1;
  10757. var s = [];
  10758. for (var _r7 = 2; _r7 < e.length; _r7++) {
  10759. e[_r7] !== t[_r7] && (s.push(e[_r7]), n = !0);
  10760. }
  10761. e[0] !== t[0] && (_this22.mixinDatacomPage.current = _this22.pageCurrent), _this22.mixinDatacomPage.size = _this22.pageSize, _this22.onMixinDatacomPropsChange(n, s);
  10762. });
  10763. },
  10764. methods: {
  10765. onMixinDatacomPropsChange: function onMixinDatacomPropsChange(e, t) {},
  10766. mixinDatacomEasyGet: function mixinDatacomEasyGet() {
  10767. var _this23 = this;
  10768. var _ref55 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  10769. _ref55$getone = _ref55.getone,
  10770. e = _ref55$getone === void 0 ? !1 : _ref55$getone,
  10771. t = _ref55.success,
  10772. n = _ref55.fail;
  10773. this.mixinDatacomLoading || (this.mixinDatacomLoading = !0, this.mixinDatacomErrorMessage = "", this.mixinDatacomGet().then(function (n) {
  10774. _this23.mixinDatacomLoading = !1;
  10775. var _n$result = n.result,
  10776. s = _n$result.data,
  10777. r = _n$result.count;
  10778. _this23.getcount && (_this23.mixinDatacomPage.count = r), _this23.mixinDatacomHasMore = s.length < _this23.pageSize;
  10779. var i = e ? s.length ? s[0] : void 0 : s;
  10780. _this23.mixinDatacomResData = i, t && t(i);
  10781. }).catch(function (e) {
  10782. _this23.mixinDatacomLoading = !1, _this23.mixinDatacomErrorMessage = e, n && n(e);
  10783. }));
  10784. },
  10785. mixinDatacomGet: function mixinDatacomGet() {
  10786. var _n12;
  10787. var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  10788. var n = e.database(this.spaceInfo);
  10789. var s = t.action || this.action;
  10790. s && (n = n.action(s));
  10791. var r = t.collection || this.collection;
  10792. n = Array.isArray(r) ? (_n12 = n).collection.apply(_n12, (0, _toConsumableArray2.default)(r)) : n.collection(r);
  10793. var i = t.where || this.where;
  10794. i && Object.keys(i).length && (n = n.where(i));
  10795. var o = t.field || this.field;
  10796. o && (n = n.field(o));
  10797. var a = t.foreignKey || this.foreignKey;
  10798. a && (n = n.foreignKey(a));
  10799. var c = t.groupby || this.groupby;
  10800. c && (n = n.groupBy(c));
  10801. var u = t.groupField || this.groupField;
  10802. u && (n = n.groupField(u));
  10803. !0 === (void 0 !== t.distinct ? t.distinct : this.distinct) && (n = n.distinct());
  10804. var l = t.orderby || this.orderby;
  10805. l && (n = n.orderBy(l));
  10806. var h = void 0 !== t.pageCurrent ? t.pageCurrent : this.mixinDatacomPage.current,
  10807. d = void 0 !== t.pageSize ? t.pageSize : this.mixinDatacomPage.size,
  10808. p = void 0 !== t.getcount ? t.getcount : this.getcount,
  10809. f = void 0 !== t.gettree ? t.gettree : this.gettree,
  10810. g = void 0 !== t.gettreepath ? t.gettreepath : this.gettreepath,
  10811. m = {
  10812. getCount: p
  10813. },
  10814. y = {
  10815. limitLevel: void 0 !== t.limitlevel ? t.limitlevel : this.limitlevel,
  10816. startWith: void 0 !== t.startwith ? t.startwith : this.startwith
  10817. };
  10818. return f && (m.getTree = y), g && (m.getTreePath = y), n = n.skip(d * (h - 1)).limit(d).get(m), n;
  10819. }
  10820. }
  10821. };
  10822. }
  10823. function Os(e) {
  10824. return function (t) {
  10825. var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  10826. n = function (e) {
  10827. var t = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
  10828. return e.customUI = t.customUI || e.customUI, e.parseSystemError = t.parseSystemError || e.parseSystemError, Object.assign(e.loadingOptions, t.loadingOptions), Object.assign(e.errorOptions, t.errorOptions), "object" == (0, _typeof2.default)(t.secretMethods) && (e.secretMethods = t.secretMethods), e;
  10829. }({
  10830. customUI: !1,
  10831. loadingOptions: {
  10832. title: "加载中...",
  10833. mask: !0
  10834. },
  10835. errorOptions: {
  10836. type: "modal",
  10837. retry: !1
  10838. }
  10839. }, n);
  10840. var _n13 = n,
  10841. s = _n13.customUI,
  10842. r = _n13.loadingOptions,
  10843. i = _n13.errorOptions,
  10844. o = _n13.parseSystemError,
  10845. a = !s;
  10846. return new Proxy({}, {
  10847. get: function get(s, c) {
  10848. return function () {
  10849. var _ref56 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  10850. e = _ref56.fn,
  10851. t = _ref56.interceptorName,
  10852. n = _ref56.getCallbackArgs;
  10853. return /*#__PURE__*/(0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee53() {
  10854. var _len2,
  10855. s,
  10856. _key2,
  10857. r,
  10858. i,
  10859. o,
  10860. _args = arguments;
  10861. return _regenerator.default.wrap(function _callee53$(_context53) {
  10862. while (1) {
  10863. switch (_context53.prev = _context53.next) {
  10864. case 0:
  10865. for (_len2 = _args.length, s = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
  10866. s[_key2] = _args[_key2];
  10867. }
  10868. r = n ? n({
  10869. params: s
  10870. }) : {};
  10871. _context53.prev = 2;
  10872. _context53.next = 5;
  10873. return M(q(t, "invoke"), _objectSpread({}, r));
  10874. case 5:
  10875. _context53.next = 7;
  10876. return e.apply(void 0, s);
  10877. case 7:
  10878. i = _context53.sent;
  10879. _context53.next = 10;
  10880. return M(q(t, "success"), _objectSpread(_objectSpread({}, r), {}, {
  10881. result: i
  10882. }));
  10883. case 10:
  10884. return _context53.abrupt("return", i);
  10885. case 13:
  10886. _context53.prev = 13;
  10887. _context53.t0 = _context53["catch"](2);
  10888. o = _context53.t0;
  10889. _context53.next = 18;
  10890. return M(q(t, "fail"), _objectSpread(_objectSpread({}, r), {}, {
  10891. error: o
  10892. }));
  10893. case 18:
  10894. throw o;
  10895. case 19:
  10896. _context53.prev = 19;
  10897. _context53.next = 22;
  10898. return M(q(t, "complete"), o ? _objectSpread(_objectSpread({}, r), {}, {
  10899. error: o
  10900. }) : _objectSpread(_objectSpread({}, r), {}, {
  10901. result: i
  10902. }));
  10903. case 22:
  10904. return _context53.finish(19);
  10905. case 23:
  10906. case "end":
  10907. return _context53.stop();
  10908. }
  10909. }
  10910. }, _callee53, null, [[2, 13, 19, 23]]);
  10911. }));
  10912. }({
  10913. fn: function () {
  10914. var _s16 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee55() {
  10915. var h,
  10916. _len3,
  10917. l,
  10918. _key3,
  10919. d,
  10920. p,
  10921. _ref58,
  10922. f,
  10923. g,
  10924. m,
  10925. y,
  10926. _e26,
  10927. _yield,
  10928. _t21,
  10929. _n14,
  10930. _args4 = arguments;
  10931. return _regenerator.default.wrap(function _callee55$(_context55) {
  10932. while (1) {
  10933. switch (_context55.prev = _context55.next) {
  10934. case 0:
  10935. a && uni.showLoading({
  10936. title: r.title,
  10937. mask: r.mask
  10938. });
  10939. for (_len3 = _args4.length, l = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
  10940. l[_key3] = _args4[_key3];
  10941. }
  10942. d = {
  10943. name: t,
  10944. type: u,
  10945. data: {
  10946. method: c,
  10947. params: l
  10948. }
  10949. };
  10950. "object" == (0, _typeof2.default)(n.secretMethods) && function (e, t) {
  10951. var n = t.data.method,
  10952. s = e.secretMethods || {},
  10953. r = s[n] || s["*"];
  10954. r && (t.secretType = r);
  10955. }(n, d);
  10956. p = !1;
  10957. _context55.prev = 5;
  10958. _context55.next = 8;
  10959. return e.callFunction(d);
  10960. case 8:
  10961. h = _context55.sent;
  10962. _context55.next = 14;
  10963. break;
  10964. case 11:
  10965. _context55.prev = 11;
  10966. _context55.t0 = _context55["catch"](5);
  10967. p = !0, h = {
  10968. result: new te(_context55.t0)
  10969. };
  10970. case 14:
  10971. _ref58 = h.result || {}, f = _ref58.errSubject, g = _ref58.errCode, m = _ref58.errMsg, y = _ref58.newToken;
  10972. if (!(a && uni.hideLoading(), y && y.token && y.tokenExpired && (re(y), Y($, _objectSpread({}, y))), g)) {
  10973. _context55.next = 39;
  10974. break;
  10975. }
  10976. _e26 = m;
  10977. if (!(p && o)) {
  10978. _context55.next = 24;
  10979. break;
  10980. }
  10981. _context55.next = 20;
  10982. return o({
  10983. objectName: t,
  10984. methodName: c,
  10985. params: l,
  10986. errSubject: f,
  10987. errCode: g,
  10988. errMsg: m
  10989. });
  10990. case 20:
  10991. _context55.t1 = _context55.sent.errMsg;
  10992. if (_context55.t1) {
  10993. _context55.next = 23;
  10994. break;
  10995. }
  10996. _context55.t1 = m;
  10997. case 23:
  10998. _e26 = _context55.t1;
  10999. case 24:
  11000. if (!a) {
  11001. _context55.next = 37;
  11002. break;
  11003. }
  11004. if (!("toast" === i.type)) {
  11005. _context55.next = 29;
  11006. break;
  11007. }
  11008. uni.showToast({
  11009. title: _e26,
  11010. icon: "none"
  11011. });
  11012. _context55.next = 37;
  11013. break;
  11014. case 29:
  11015. if (!("modal" !== i.type)) {
  11016. _context55.next = 31;
  11017. break;
  11018. }
  11019. throw new Error("Invalid errorOptions.type: ".concat(i.type));
  11020. case 31:
  11021. _context55.next = 33;
  11022. return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee54() {
  11023. var _ref60,
  11024. e,
  11025. t,
  11026. n,
  11027. s,
  11028. r,
  11029. _args2 = arguments;
  11030. return _regenerator.default.wrap(function _callee54$(_context54) {
  11031. while (1) {
  11032. switch (_context54.prev = _context54.next) {
  11033. case 0:
  11034. _ref60 = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : {}, e = _ref60.title, t = _ref60.content, n = _ref60.showCancel, s = _ref60.cancelText, r = _ref60.confirmText;
  11035. return _context54.abrupt("return", new Promise(function (i, o) {
  11036. uni.showModal({
  11037. title: e,
  11038. content: t,
  11039. showCancel: n,
  11040. cancelText: s,
  11041. confirmText: r,
  11042. success: function success(e) {
  11043. i(e);
  11044. },
  11045. fail: function fail() {
  11046. i({
  11047. confirm: !1,
  11048. cancel: !0
  11049. });
  11050. }
  11051. });
  11052. }));
  11053. case 2:
  11054. case "end":
  11055. return _context54.stop();
  11056. }
  11057. }
  11058. }, _callee54);
  11059. }))({
  11060. title: "提示",
  11061. content: _e26,
  11062. showCancel: i.retry,
  11063. cancelText: "取消",
  11064. confirmText: i.retry ? "重试" : "确定"
  11065. });
  11066. case 33:
  11067. _yield = _context55.sent;
  11068. _t21 = _yield.confirm;
  11069. if (!(i.retry && _t21)) {
  11070. _context55.next = 37;
  11071. break;
  11072. }
  11073. return _context55.abrupt("return", s.apply(void 0, l));
  11074. case 37:
  11075. _n14 = new te({
  11076. subject: f,
  11077. code: g,
  11078. message: m,
  11079. requestId: h.requestId
  11080. });
  11081. throw _n14.detail = h.result, Y(j, {
  11082. type: z,
  11083. content: _n14
  11084. }), _n14;
  11085. case 39:
  11086. return _context55.abrupt("return", (Y(j, {
  11087. type: z,
  11088. content: h.result
  11089. }), h.result));
  11090. case 40:
  11091. case "end":
  11092. return _context55.stop();
  11093. }
  11094. }
  11095. }, _callee55, null, [[5, 11]]);
  11096. }));
  11097. function s() {
  11098. return _s16.apply(this, arguments);
  11099. }
  11100. return s;
  11101. }(),
  11102. interceptorName: "callObject",
  11103. getCallbackArgs: function getCallbackArgs() {
  11104. var _ref61 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  11105. e = _ref61.params;
  11106. return {
  11107. objectName: t,
  11108. methodName: c,
  11109. params: e
  11110. };
  11111. }
  11112. });
  11113. }
  11114. });
  11115. };
  11116. }
  11117. function Es(e) {
  11118. return L("_globalUniCloudSecureNetworkCache__{spaceId}".replace("{spaceId}", e.config.spaceId));
  11119. }
  11120. function Ls() {
  11121. return _Ls.apply(this, arguments);
  11122. }
  11123. function _Ls() {
  11124. _Ls = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee58() {
  11125. var _ref73,
  11126. e,
  11127. _ref73$callLoginByWei,
  11128. t,
  11129. n,
  11130. s,
  11131. r,
  11132. _args7 = arguments;
  11133. return _regenerator.default.wrap(function _callee58$(_context58) {
  11134. while (1) {
  11135. switch (_context58.prev = _context58.next) {
  11136. case 0:
  11137. _ref73 = _args7.length > 0 && _args7[0] !== undefined ? _args7[0] : {}, e = _ref73.openid, _ref73$callLoginByWei = _ref73.callLoginByWeixin, t = _ref73$callLoginByWei === void 0 ? !1 : _ref73$callLoginByWei;
  11138. n = Es(this);
  11139. if (!("mp-weixin" !== P)) {
  11140. _context58.next = 4;
  11141. break;
  11142. }
  11143. throw new Error("[SecureNetwork] API `initSecureNetworkByWeixin` is not supported on platform `".concat(P, "`"));
  11144. case 4:
  11145. if (!(e && t)) {
  11146. _context58.next = 6;
  11147. break;
  11148. }
  11149. throw new Error("[SecureNetwork] openid and callLoginByWeixin cannot be passed at the same time");
  11150. case 6:
  11151. if (!e) {
  11152. _context58.next = 8;
  11153. break;
  11154. }
  11155. return _context58.abrupt("return", (n.mpWeixinOpenid = e, {}));
  11156. case 8:
  11157. _context58.next = 10;
  11158. return new Promise(function (e, t) {
  11159. uni.login({
  11160. success: function success(t) {
  11161. e(t.code);
  11162. },
  11163. fail: function fail(e) {
  11164. t(new Error(e.errMsg));
  11165. }
  11166. });
  11167. });
  11168. case 10:
  11169. s = _context58.sent;
  11170. r = this.importObject("uni-id-co", {
  11171. customUI: !0
  11172. });
  11173. _context58.next = 14;
  11174. return r.secureNetworkHandshakeByWeixin({
  11175. code: s,
  11176. callLoginByWeixin: t
  11177. });
  11178. case 14:
  11179. n.mpWeixinCode = s;
  11180. return _context58.abrupt("return", {
  11181. code: s
  11182. });
  11183. case 16:
  11184. case "end":
  11185. return _context58.stop();
  11186. }
  11187. }
  11188. }, _callee58, this);
  11189. }));
  11190. return _Ls.apply(this, arguments);
  11191. }
  11192. function Rs(_x40) {
  11193. return _Rs.apply(this, arguments);
  11194. }
  11195. function _Rs() {
  11196. _Rs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee59(e) {
  11197. var t;
  11198. return _regenerator.default.wrap(function _callee59$(_context59) {
  11199. while (1) {
  11200. switch (_context59.prev = _context59.next) {
  11201. case 0:
  11202. t = Es(this);
  11203. return _context59.abrupt("return", (t.initPromise || (t.initPromise = Ls.call(this, e)), t.initPromise));
  11204. case 2:
  11205. case "end":
  11206. return _context59.stop();
  11207. }
  11208. }
  11209. }, _callee59, this);
  11210. }));
  11211. return _Rs.apply(this, arguments);
  11212. }
  11213. function Us(e) {
  11214. return function () {
  11215. var _ref62 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  11216. t = _ref62.openid,
  11217. _ref62$callLoginByWei = _ref62.callLoginByWeixin,
  11218. n = _ref62$callLoginByWei === void 0 ? !1 : _ref62$callLoginByWei;
  11219. return Rs.call(e, {
  11220. openid: t,
  11221. callLoginByWeixin: n
  11222. });
  11223. };
  11224. }
  11225. function Ns(e) {
  11226. var t = {
  11227. getSystemInfo: uni.getSystemInfo,
  11228. getPushClientId: uni.getPushClientId
  11229. };
  11230. return function (n) {
  11231. return new Promise(function (s, r) {
  11232. t[e](_objectSpread(_objectSpread({}, n), {}, {
  11233. success: function success(e) {
  11234. s(e);
  11235. },
  11236. fail: function fail(e) {
  11237. r(e);
  11238. }
  11239. }));
  11240. });
  11241. };
  11242. }
  11243. var Ds = /*#__PURE__*/function (_ref63) {
  11244. (0, _inherits2.default)(Ds, _ref63);
  11245. var _super12 = _createSuper(Ds);
  11246. function Ds() {
  11247. var _this24;
  11248. (0, _classCallCheck2.default)(this, Ds);
  11249. _this24 = _super12.call(this), _this24._uniPushMessageCallback = _this24._receivePushMessage.bind((0, _assertThisInitialized2.default)(_this24)), _this24._currentMessageId = -1, _this24._payloadQueue = [];
  11250. return _this24;
  11251. }
  11252. (0, _createClass2.default)(Ds, [{
  11253. key: "init",
  11254. value: function init() {
  11255. var _this25 = this;
  11256. return Promise.all([Ns("getSystemInfo")(), Ns("getPushClientId")()]).then(function () {
  11257. var _ref64 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [],
  11258. _ref65 = (0, _slicedToArray2.default)(_ref64, 2),
  11259. _ref65$ = _ref65[0];
  11260. _ref65$ = _ref65$ === void 0 ? {} : _ref65$;
  11261. var e = _ref65$.appId,
  11262. _ref65$2 = _ref65[1];
  11263. _ref65$2 = _ref65$2 === void 0 ? {} : _ref65$2;
  11264. var t = _ref65$2.cid;
  11265. if (!e) throw new Error("Invalid appId, please check the manifest.json file");
  11266. if (!t) throw new Error("Invalid push client id");
  11267. _this25._appId = e, _this25._pushClientId = t, _this25._seqId = Date.now() + "-" + Math.floor(9e5 * Math.random() + 1e5), _this25.emit("open"), _this25._initMessageListener();
  11268. }, function (e) {
  11269. throw _this25.emit("error", e), _this25.close(), e;
  11270. });
  11271. }
  11272. }, {
  11273. key: "open",
  11274. value: function () {
  11275. var _open = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee56() {
  11276. return _regenerator.default.wrap(function _callee56$(_context56) {
  11277. while (1) {
  11278. switch (_context56.prev = _context56.next) {
  11279. case 0:
  11280. return _context56.abrupt("return", this.init());
  11281. case 1:
  11282. case "end":
  11283. return _context56.stop();
  11284. }
  11285. }
  11286. }, _callee56, this);
  11287. }));
  11288. function open() {
  11289. return _open.apply(this, arguments);
  11290. }
  11291. return open;
  11292. }()
  11293. }, {
  11294. key: "_isUniCloudSSE",
  11295. value: function _isUniCloudSSE(e) {
  11296. if ("receive" !== e.type) return !1;
  11297. var t = e && e.data && e.data.payload;
  11298. return !(!t || "UNI_CLOUD_SSE" !== t.channel || t.seqId !== this._seqId);
  11299. }
  11300. }, {
  11301. key: "_receivePushMessage",
  11302. value: function _receivePushMessage(e) {
  11303. if (!this._isUniCloudSSE(e)) return;
  11304. var t = e && e.data && e.data.payload,
  11305. n = t.action,
  11306. s = t.messageId,
  11307. r = t.message;
  11308. this._payloadQueue.push({
  11309. action: n,
  11310. messageId: s,
  11311. message: r
  11312. }), this._consumMessage();
  11313. }
  11314. }, {
  11315. key: "_consumMessage",
  11316. value: function _consumMessage() {
  11317. var _this26 = this;
  11318. for (;;) {
  11319. var _e27 = this._payloadQueue.find(function (e) {
  11320. return e.messageId === _this26._currentMessageId + 1;
  11321. });
  11322. if (!_e27) break;
  11323. this._currentMessageId++, this._parseMessagePayload(_e27);
  11324. }
  11325. }
  11326. }, {
  11327. key: "_parseMessagePayload",
  11328. value: function _parseMessagePayload(e) {
  11329. var t = e.action,
  11330. n = e.messageId,
  11331. s = e.message;
  11332. "end" === t ? this._end({
  11333. messageId: n,
  11334. message: s
  11335. }) : "message" === t && this._appendMessage({
  11336. messageId: n,
  11337. message: s
  11338. });
  11339. }
  11340. }, {
  11341. key: "_appendMessage",
  11342. value: function _appendMessage() {
  11343. var _ref66 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  11344. e = _ref66.messageId,
  11345. t = _ref66.message;
  11346. this.emit("message", t);
  11347. }
  11348. }, {
  11349. key: "_end",
  11350. value: function _end() {
  11351. var _ref67 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
  11352. e = _ref67.messageId,
  11353. t = _ref67.message;
  11354. this.emit("end", t), this.close();
  11355. }
  11356. }, {
  11357. key: "_initMessageListener",
  11358. value: function _initMessageListener() {
  11359. uni.onPushMessage(this._uniPushMessageCallback);
  11360. }
  11361. }, {
  11362. key: "_destroy",
  11363. value: function _destroy() {
  11364. uni.offPushMessage(this._uniPushMessageCallback);
  11365. }
  11366. }, {
  11367. key: "toJSON",
  11368. value: function toJSON() {
  11369. return {
  11370. appId: this._appId,
  11371. pushClientId: this._pushClientId,
  11372. seqId: this._seqId
  11373. };
  11374. }
  11375. }, {
  11376. key: "close",
  11377. value: function close() {
  11378. this._destroy(), this.emit("close");
  11379. }
  11380. }]);
  11381. return Ds;
  11382. }( /*#__PURE__*/function () {
  11383. function _class6() {
  11384. (0, _classCallCheck2.default)(this, _class6);
  11385. this._callback = {};
  11386. }
  11387. (0, _createClass2.default)(_class6, [{
  11388. key: "addListener",
  11389. value: function addListener(e, t) {
  11390. this._callback[e] || (this._callback[e] = []), this._callback[e].push(t);
  11391. }
  11392. }, {
  11393. key: "on",
  11394. value: function on(e, t) {
  11395. return this.addListener(e, t);
  11396. }
  11397. }, {
  11398. key: "removeListener",
  11399. value: function removeListener(e, t) {
  11400. if (!t) throw new Error('The "listener" argument must be of type function. Received undefined');
  11401. var n = this._callback[e];
  11402. if (!n) return;
  11403. var s = function (e, t) {
  11404. for (var _n15 = e.length - 1; _n15 >= 0; _n15--) {
  11405. if (e[_n15] === t) return _n15;
  11406. }
  11407. return -1;
  11408. }(n, t);
  11409. n.splice(s, 1);
  11410. }
  11411. }, {
  11412. key: "off",
  11413. value: function off(e, t) {
  11414. return this.removeListener(e, t);
  11415. }
  11416. }, {
  11417. key: "removeAllListener",
  11418. value: function removeAllListener(e) {
  11419. delete this._callback[e];
  11420. }
  11421. }, {
  11422. key: "emit",
  11423. value: function emit(e) {
  11424. var n = this._callback[e];
  11425. for (var _len4 = arguments.length, t = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {
  11426. t[_key4 - 1] = arguments[_key4];
  11427. }
  11428. if (n) for (var _e28 = 0; _e28 < n.length; _e28++) {
  11429. n[_e28].apply(n, t);
  11430. }
  11431. }
  11432. }]);
  11433. return _class6;
  11434. }());
  11435. function Ms(_x41, _x42) {
  11436. return _Ms.apply(this, arguments);
  11437. }
  11438. function _Ms() {
  11439. _Ms = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee60(e, t) {
  11440. var n, _e32, s;
  11441. return _regenerator.default.wrap(function _callee60$(_context60) {
  11442. while (1) {
  11443. switch (_context60.prev = _context60.next) {
  11444. case 0:
  11445. n = "http://".concat(e, ":").concat(t, "/system/ping");
  11446. _context60.prev = 1;
  11447. _context60.next = 4;
  11448. return s = {
  11449. url: n,
  11450. timeout: 500
  11451. }, new Promise(function (e, t) {
  11452. ne.request(_objectSpread(_objectSpread({}, s), {}, {
  11453. success: function success(t) {
  11454. e(t);
  11455. },
  11456. fail: function fail(e) {
  11457. t(e);
  11458. }
  11459. }));
  11460. });
  11461. case 4:
  11462. _e32 = _context60.sent;
  11463. return _context60.abrupt("return", !(!_e32.data || 0 !== _e32.data.code));
  11464. case 8:
  11465. _context60.prev = 8;
  11466. _context60.t0 = _context60["catch"](1);
  11467. return _context60.abrupt("return", !1);
  11468. case 11:
  11469. case "end":
  11470. return _context60.stop();
  11471. }
  11472. }
  11473. }, _callee60, null, [[1, 8]]);
  11474. }));
  11475. return _Ms.apply(this, arguments);
  11476. }
  11477. function qs(_x43) {
  11478. return _qs.apply(this, arguments);
  11479. }
  11480. function _qs() {
  11481. _qs = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee62(e) {
  11482. var _ae2, _e33, _t23, t, _t$debugInfo, n, s, _yield2, r, i, o;
  11483. return _regenerator.default.wrap(function _callee62$(_context62) {
  11484. while (1) {
  11485. switch (_context62.prev = _context62.next) {
  11486. case 0:
  11487. if (S) {
  11488. _context62.next = 2;
  11489. break;
  11490. }
  11491. return _context62.abrupt("return", Promise.resolve());
  11492. case 2:
  11493. if ("app" === P) {
  11494. _ae2 = ae(), _e33 = _ae2.osName, _t23 = _ae2.osVersion;
  11495. "ios" === _e33 && function (e) {
  11496. if (!e || "string" != typeof e) return 0;
  11497. var t = e.match(/^(\d+)./);
  11498. return t && t[1] ? parseInt(t[1]) : 0;
  11499. }(_t23) >= 14 && console.warn("iOS 14及以上版本连接uniCloud本地调试服务需要允许客户端查找并连接到本地网络上的设备(仅开发模式生效,发行模式会连接uniCloud云端服务)");
  11500. }
  11501. t = e.__dev__;
  11502. if (t.debugInfo) {
  11503. _context62.next = 6;
  11504. break;
  11505. }
  11506. return _context62.abrupt("return");
  11507. case 6:
  11508. _t$debugInfo = t.debugInfo;
  11509. n = _t$debugInfo.address;
  11510. s = _t$debugInfo.servePort;
  11511. _context62.next = 11;
  11512. return function () {
  11513. var _ref74 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee61(e, t) {
  11514. var n, _s17, _r8;
  11515. return _regenerator.default.wrap(function _callee61$(_context61) {
  11516. while (1) {
  11517. switch (_context61.prev = _context61.next) {
  11518. case 0:
  11519. _s17 = 0;
  11520. case 1:
  11521. if (!(_s17 < e.length)) {
  11522. _context61.next = 11;
  11523. break;
  11524. }
  11525. _r8 = e[_s17];
  11526. _context61.next = 5;
  11527. return Ms(_r8, t);
  11528. case 5:
  11529. if (!_context61.sent) {
  11530. _context61.next = 8;
  11531. break;
  11532. }
  11533. n = _r8;
  11534. return _context61.abrupt("break", 11);
  11535. case 8:
  11536. _s17++;
  11537. _context61.next = 1;
  11538. break;
  11539. case 11:
  11540. return _context61.abrupt("return", {
  11541. address: n,
  11542. port: t
  11543. });
  11544. case 12:
  11545. case "end":
  11546. return _context61.stop();
  11547. }
  11548. }
  11549. }, _callee61);
  11550. }));
  11551. return function (_x44, _x45) {
  11552. return _ref74.apply(this, arguments);
  11553. };
  11554. }()(n, s);
  11555. case 11:
  11556. _yield2 = _context62.sent;
  11557. r = _yield2.address;
  11558. if (!r) {
  11559. _context62.next = 15;
  11560. break;
  11561. }
  11562. return _context62.abrupt("return", (t.localAddress = r, void (t.localPort = s)));
  11563. case 15:
  11564. i = console["app" === P ? "error" : "warn"];
  11565. o = "";
  11566. if (!("remote" === t.debugInfo.initialLaunchType ? (t.debugInfo.forceRemote = !0, o = "当前客户端和HBuilderX不在同一局域网下(或其他网络原因无法连接HBuilderX),uniCloud本地调试服务不对当前客户端生效。\n- 如果不使用uniCloud本地调试服务,请直接忽略此信息。\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。") : o = "无法连接uniCloud本地调试服务,请检查当前客户端是否与主机在同一局域网下。\n- 如需使用uniCloud本地调试服务,请将客户端与主机连接到同一局域网下并重新运行到客户端。", o += "\n- 如果在HBuilderX开启的状态下切换过网络环境,请重启HBuilderX后再试\n- 检查系统防火墙是否拦截了HBuilderX自带的nodejs\n- 检查是否错误的使用拦截器修改uni.request方法的参数", "web" === P && (o += "\n- 部分浏览器开启节流模式之后访问本地地址受限,请检查是否启用了节流模式"), 0 === P.indexOf("mp-") && (o += "\n- 小程序中如何使用uniCloud,请参考:https://uniapp.dcloud.net.cn/uniCloud/publish.html#useinmp"), !t.debugInfo.forceRemote)) {
  11567. _context62.next = 19;
  11568. break;
  11569. }
  11570. throw new Error(o);
  11571. case 19:
  11572. i(o);
  11573. case 20:
  11574. case "end":
  11575. return _context62.stop();
  11576. }
  11577. }
  11578. }, _callee62);
  11579. }));
  11580. return _qs.apply(this, arguments);
  11581. }
  11582. function Fs(e) {
  11583. e._initPromiseHub || (e._initPromiseHub = new v({
  11584. createPromise: function createPromise() {
  11585. var t = Promise.resolve();
  11586. var n;
  11587. n = 1, t = new Promise(function (e) {
  11588. setTimeout(function () {
  11589. e();
  11590. }, n);
  11591. });
  11592. var s = e.auth();
  11593. return t.then(function () {
  11594. return s.getLoginState();
  11595. }).then(function (e) {
  11596. return e ? Promise.resolve() : s.signInAnonymously();
  11597. });
  11598. }
  11599. }));
  11600. }
  11601. var Ks = {
  11602. tcb: It,
  11603. tencent: It,
  11604. aliyun: de,
  11605. private: bt,
  11606. alipay: Ot
  11607. };
  11608. var js = new ( /*#__PURE__*/function () {
  11609. function _class7() {
  11610. (0, _classCallCheck2.default)(this, _class7);
  11611. }
  11612. (0, _createClass2.default)(_class7, [{
  11613. key: "init",
  11614. value: function init(e) {
  11615. var t = {};
  11616. var n = Ks[e.provider];
  11617. if (!n) throw new Error("未提供正确的provider参数");
  11618. t = n.init(e), S && function (e) {
  11619. if (!S) return;
  11620. var t = {};
  11621. e.__dev__ = t, t.debugLog = S && ("web" === P && navigator.userAgent.indexOf("HBuilderX") > 0 || "app" === P);
  11622. var n = T;
  11623. n && !n.code && (t.debugInfo = n);
  11624. var s = new v({
  11625. createPromise: function createPromise() {
  11626. return qs(e);
  11627. }
  11628. });
  11629. t.initLocalNetwork = function () {
  11630. return s.exec();
  11631. };
  11632. }(t), Fs(t), qn(t), function (e) {
  11633. var t = e.uploadFile;
  11634. e.uploadFile = function (e) {
  11635. return t.call(this, e);
  11636. };
  11637. }(t), function (e) {
  11638. e.database = function (t) {
  11639. if (t && Object.keys(t).length > 0) return e.init(t).database();
  11640. if (this._database) return this._database;
  11641. var n = Gn(Yn, {
  11642. uniClient: e
  11643. });
  11644. return this._database = n, n;
  11645. }, e.databaseForJQL = function (t) {
  11646. if (t && Object.keys(t).length > 0) return e.init(t).databaseForJQL();
  11647. if (this._databaseForJQL) return this._databaseForJQL;
  11648. var n = Gn(Yn, {
  11649. uniClient: e,
  11650. isJQL: !0
  11651. });
  11652. return this._databaseForJQL = n, n;
  11653. };
  11654. }(t), function (e) {
  11655. e.getCurrentUserInfo = As, e.chooseAndUploadFile = Ts.initChooseAndUploadFile(e), Object.assign(e, {
  11656. get mixinDatacom() {
  11657. return xs(e);
  11658. }
  11659. }), e.SSEChannel = Ds, e.initSecureNetworkByWeixin = Us(e), e.importObject = Os(e);
  11660. }(t);
  11661. return ["callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "chooseAndUploadFile"].forEach(function (e) {
  11662. if (!t[e]) return;
  11663. var n = t[e];
  11664. t[e] = function () {
  11665. return n.apply(t, Array.from(arguments));
  11666. }, t[e] = function (e, t) {
  11667. return function (n) {
  11668. var _this27 = this;
  11669. var s = !1;
  11670. if ("callFunction" === t) {
  11671. var _e29 = n && n.type || c;
  11672. s = _e29 !== c;
  11673. }
  11674. var r = "callFunction" === t && !s,
  11675. i = this._initPromiseHub.exec();
  11676. n = n || {};
  11677. var _ee2 = ee(n),
  11678. o = _ee2.success,
  11679. a = _ee2.fail,
  11680. u = _ee2.complete,
  11681. l = i.then(function () {
  11682. return s ? Promise.resolve() : M(q(t, "invoke"), n);
  11683. }).then(function () {
  11684. return e.call(_this27, n);
  11685. }).then(function (e) {
  11686. return s ? Promise.resolve(e) : M(q(t, "success"), e).then(function () {
  11687. return M(q(t, "complete"), e);
  11688. }).then(function () {
  11689. return r && Y(j, {
  11690. type: H,
  11691. content: e
  11692. }), Promise.resolve(e);
  11693. });
  11694. }, function (e) {
  11695. return s ? Promise.reject(e) : M(q(t, "fail"), e).then(function () {
  11696. return M(q(t, "complete"), e);
  11697. }).then(function () {
  11698. return Y(j, {
  11699. type: H,
  11700. content: e
  11701. }), Promise.reject(e);
  11702. });
  11703. });
  11704. if (!(o || a || u)) return l;
  11705. l.then(function (e) {
  11706. o && o(e), u && u(e), r && Y(j, {
  11707. type: H,
  11708. content: e
  11709. });
  11710. }, function (e) {
  11711. a && a(e), u && u(e), r && Y(j, {
  11712. type: H,
  11713. content: e
  11714. });
  11715. });
  11716. };
  11717. }(t[e], e).bind(t);
  11718. }), t.init = this.init, t;
  11719. }
  11720. }]);
  11721. return _class7;
  11722. }())();
  11723. (function () {
  11724. var e = C;
  11725. var t = {};
  11726. if (e && 1 === e.length) t = e[0], js = js.init(t), js._isDefault = !0;else {
  11727. var _t22 = ["auth", "callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "database", "getCurrentUSerInfo", "importObject"];
  11728. var _n16;
  11729. _n16 = e && e.length > 0 ? "应用有多个服务空间,请通过uniCloud.init方法指定要使用的服务空间" : x ? "应用未关联服务空间,请在uniCloud目录右键关联服务空间" : "uni-app cli项目内使用uniCloud需要使用HBuilderX的运行菜单运行项目,且需要在uniCloud目录关联服务空间", _t22.forEach(function (e) {
  11730. js[e] = function () {
  11731. return console.error(_n16), Promise.reject(new te({
  11732. code: "SYS_ERR",
  11733. message: _n16
  11734. }));
  11735. };
  11736. });
  11737. }
  11738. Object.assign(js, {
  11739. get mixinDatacom() {
  11740. return xs(js);
  11741. }
  11742. }), Is(js), js.addInterceptor = N, js.removeInterceptor = D, js.interceptObject = F, S && "web" === P && (window.uniCloud = js);
  11743. })();
  11744. var Bs = js;
  11745. exports.default = Bs;
  11746. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 93), __webpack_require__(/*! @dcloudio/uni-mp-weixin/dist/mp.js */ 94)["default"]))
  11747. /***/ }),
  11748. /* 93 */
  11749. /*!***********************************!*\
  11750. !*** (webpack)/buildin/global.js ***!
  11751. \***********************************/
  11752. /*! no static exports found */
  11753. /***/ (function(module, exports) {
  11754. var g;
  11755. // This works in non-strict mode
  11756. g = (function() {
  11757. return this;
  11758. })();
  11759. try {
  11760. // This works if eval is allowed (see CSP)
  11761. g = g || new Function("return this")();
  11762. } catch (e) {
  11763. // This works if the window reference is available
  11764. if (typeof window === "object") g = window;
  11765. }
  11766. // g can still be undefined, but nothing to do about it...
  11767. // We return undefined, instead of nothing here, so it's
  11768. // easier to handle this case. if(!global) { ...}
  11769. module.exports = g;
  11770. /***/ }),
  11771. /* 94 */
  11772. /*!*********************************************************!*\
  11773. !*** ./node_modules/@dcloudio/uni-mp-weixin/dist/mp.js ***!
  11774. \*********************************************************/
  11775. /*! no static exports found */
  11776. /***/ (function(module, exports, __webpack_require__) {
  11777. "use strict";
  11778. /* WEBPACK VAR INJECTION */(function(global) {
  11779. var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);
  11780. Object.defineProperty(exports, "__esModule", {
  11781. value: true
  11782. });
  11783. exports.Behavior = Behavior;
  11784. exports.Component = Component;
  11785. exports.Page = Page;
  11786. exports.nextTick = exports.default = void 0;
  11787. var _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));
  11788. var _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 95));
  11789. var _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 101));
  11790. var _PROP_DEFAULT_VALUES;
  11791. function parseData(data, vueComponentOptions) {
  11792. if (!data) {
  11793. return;
  11794. }
  11795. vueComponentOptions.mpOptions.data = data;
  11796. }
  11797. function parseComponents(vueComponentOptions) {
  11798. vueComponentOptions.components = global.__wxVueOptions.components;
  11799. }
  11800. var _toString = Object.prototype.toString;
  11801. var hasOwnProperty = Object.prototype.hasOwnProperty;
  11802. function isFn(fn) {
  11803. return typeof fn === 'function';
  11804. }
  11805. function isPlainObject(obj) {
  11806. return _toString.call(obj) === '[object Object]';
  11807. }
  11808. function hasOwn(obj, key) {
  11809. return hasOwnProperty.call(obj, key);
  11810. }
  11811. function noop() {}
  11812. /**
  11813. * Create a cached version of a pure function.
  11814. */
  11815. function cached(fn) {
  11816. var cache = Object.create(null);
  11817. return function cachedFn(str) {
  11818. var hit = cache[str];
  11819. return hit || (cache[str] = fn(str));
  11820. };
  11821. }
  11822. /**
  11823. * Camelize a hyphen-delimited string.
  11824. */
  11825. var camelizeRE = /-(\w)/g;
  11826. var camelize = cached(function (str) {
  11827. return str.replace(camelizeRE, function (_, c) {
  11828. return c ? c.toUpperCase() : '';
  11829. });
  11830. });
  11831. var SOURCE_KEY = '__data__';
  11832. var COMPONENT_LIFECYCLE = {
  11833. created: 'onServiceCreated',
  11834. attached: 'onServiceAttached',
  11835. ready: 'mounted',
  11836. moved: 'moved',
  11837. detached: 'destroyed'
  11838. };
  11839. var COMPONENT_LIFECYCLE_KEYS = Object.keys(COMPONENT_LIFECYCLE);
  11840. var PAGE_LIFETIMES = {
  11841. show: 'onPageShow',
  11842. hide: 'onPageHide',
  11843. resize: 'onPageResize'
  11844. };
  11845. var PAGE_LIFETIMES_KEYS = Object.keys(PAGE_LIFETIMES);
  11846. var PAGE_LIFECYCLE = ['onLoad', 'onShow', 'onReady', 'onHide', 'onUnload', 'onPullDownRefresh', 'onReachBottom', 'onShareAppMessage', 'onPageScroll', 'onResize', 'onTabItemTap'];
  11847. function parsePageMethods(mpComponentOptions, vueComponentOptions) {
  11848. var methods = Object.create(null);
  11849. Object.keys(mpComponentOptions).forEach(function (key) {
  11850. var value = mpComponentOptions[key];
  11851. if (isFn(value) && PAGE_LIFECYCLE.indexOf(key) === -1) {
  11852. methods[key] = value;
  11853. }
  11854. });
  11855. vueComponentOptions.methods = methods;
  11856. }
  11857. function parsePageLifecycle(mpComponentOptions, vueComponentOptions) {
  11858. Object.keys(mpComponentOptions).forEach(function (key) {
  11859. if (PAGE_LIFECYCLE.indexOf(key) !== -1) {
  11860. vueComponentOptions[key] = mpComponentOptions[key];
  11861. }
  11862. });
  11863. }
  11864. function parsePage(mpComponentOptions) {
  11865. var vueComponentOptions = {
  11866. mixins: [],
  11867. mpOptions: {}
  11868. };
  11869. parseComponents(vueComponentOptions);
  11870. parseData(mpComponentOptions.data, vueComponentOptions);
  11871. parsePageMethods(mpComponentOptions, vueComponentOptions);
  11872. parsePageLifecycle(mpComponentOptions, vueComponentOptions);
  11873. return vueComponentOptions;
  11874. }
  11875. function parseProperties(properties, vueComponentOptions) {
  11876. if (!properties) {
  11877. return;
  11878. }
  11879. vueComponentOptions.mpOptions.properties = properties;
  11880. }
  11881. function parseOptions(options, vueComponentOptions) {
  11882. if (!options) {
  11883. return;
  11884. }
  11885. vueComponentOptions.mpOptions.options = options;
  11886. }
  11887. function parseMethods(methods, vueComponentOptions) {
  11888. if (!methods) {
  11889. return;
  11890. }
  11891. if (methods.$emit) {
  11892. console.warn('Method "$emit" conflicts with an existing Vue instance method');
  11893. delete methods.$emit;
  11894. }
  11895. vueComponentOptions.methods = methods;
  11896. }
  11897. function parseLifecycle(mpComponentOptions, vueComponentOptions) {
  11898. COMPONENT_LIFECYCLE_KEYS.forEach(function (name) {
  11899. if (hasOwn(mpComponentOptions, name)) {
  11900. (vueComponentOptions[COMPONENT_LIFECYCLE[name]] || (vueComponentOptions[COMPONENT_LIFECYCLE[name]] = [])).push(mpComponentOptions[name]);
  11901. }
  11902. });
  11903. }
  11904. var mpBehaviors = {
  11905. 'wx://form-field': {},
  11906. 'wx://component-export': {}
  11907. };
  11908. function callDefinitionFilter(mpComponentOptions) {
  11909. var behaviors = mpComponentOptions.behaviors,
  11910. definitionFilter = mpComponentOptions.definitionFilter;
  11911. var behaviorDefinitionFilters = [];
  11912. if (Array.isArray(behaviors)) {
  11913. behaviors.forEach(function (behavior) {
  11914. behavior = typeof behavior === 'string' ? mpBehaviors[behavior] : behavior;
  11915. if (behavior.definitionFilter) {
  11916. behaviorDefinitionFilters.push(behavior.definitionFilter);
  11917. behavior.definitionFilter.call(null, mpComponentOptions, []);
  11918. }
  11919. });
  11920. }
  11921. if (isFn(definitionFilter)) {
  11922. return function (defFields) {
  11923. definitionFilter(defFields, behaviorDefinitionFilters);
  11924. };
  11925. }
  11926. }
  11927. function parseDefinitionFilter(mpComponentOptions, vueComponentOptions) {
  11928. callDefinitionFilter(mpComponentOptions);
  11929. }
  11930. function parseBehavior(behavior) {
  11931. var data = behavior.data,
  11932. methods = behavior.methods,
  11933. behaviors = behavior.behaviors,
  11934. properties = behavior.properties;
  11935. var vueComponentOptions = {
  11936. watch: {},
  11937. mpOptions: {
  11938. mpObservers: []
  11939. }
  11940. };
  11941. parseData(data, vueComponentOptions);
  11942. parseMethods(methods, vueComponentOptions);
  11943. parseBehaviors(behaviors, vueComponentOptions);
  11944. parseProperties(properties, vueComponentOptions);
  11945. parseLifecycle(behavior, vueComponentOptions);
  11946. parseDefinitionFilter(behavior);
  11947. return vueComponentOptions;
  11948. }
  11949. var BEHAVIORS = {
  11950. 'wx://form-field': {
  11951. beforeCreate: function beforeCreate() {
  11952. var mpOptions = this.$options.mpOptions;
  11953. if (!mpOptions.properties) {
  11954. mpOptions.properties = Object.create(null);
  11955. }
  11956. var props = mpOptions.properties;
  11957. // TODO form submit,reset
  11958. if (!hasOwn(props, 'name')) {
  11959. props.name = {
  11960. type: String
  11961. };
  11962. }
  11963. if (!hasOwn(props, 'value')) {
  11964. props.value = {
  11965. type: String // 默认类型调整为 String,否则默认值为 null,导致一些自定义 input 显示不正确
  11966. };
  11967. }
  11968. }
  11969. }
  11970. };
  11971. function parseBehaviors(behaviors, vueComponentOptions) {
  11972. if (!behaviors) {
  11973. return;
  11974. }
  11975. behaviors.forEach(function (behavior) {
  11976. if (typeof behavior === 'string') {
  11977. BEHAVIORS[behavior] && vueComponentOptions.mixins.push(BEHAVIORS[behavior]);
  11978. } else {
  11979. vueComponentOptions.mixins.push(parseBehavior(behavior));
  11980. }
  11981. });
  11982. }
  11983. function parseSinglePath(path) {
  11984. return path.split('.');
  11985. }
  11986. function parseMultiPaths(paths) {
  11987. return paths.split(',').map(function (path) {
  11988. return parseSinglePath(path);
  11989. });
  11990. }
  11991. function parseObservers(observers, vueComponentOptions) {
  11992. if (!observers) {
  11993. return;
  11994. }
  11995. var mpObservers = vueComponentOptions.mpOptions.mpObservers;
  11996. Object.keys(observers).forEach(function (path) {
  11997. mpObservers.push({
  11998. paths: parseMultiPaths(path),
  11999. observer: observers[path]
  12000. });
  12001. });
  12002. }
  12003. function relative(from, to) {
  12004. if (to.indexOf('/') === 0) {
  12005. from = '';
  12006. }
  12007. var fromArr = from.split('/');
  12008. var toArr = to.split('/');
  12009. fromArr.pop();
  12010. while (toArr.length) {
  12011. var part = toArr.shift();
  12012. if (part !== '' && part !== '.') {
  12013. if (part !== '..') {
  12014. fromArr.push(part);
  12015. } else {
  12016. fromArr.pop();
  12017. }
  12018. }
  12019. }
  12020. return fromArr.join('/');
  12021. }
  12022. function parseRelations(relations, vueComponentOptions) {
  12023. if (!relations) {
  12024. return;
  12025. }
  12026. Object.keys(relations).forEach(function (name) {
  12027. var relation = relations[name];
  12028. relation.name = name;
  12029. relation.target = relation.target ? String(relation.target) : relative(global.__wxRoute, name);
  12030. });
  12031. vueComponentOptions.mpOptions.relations = relations;
  12032. }
  12033. function parseExternalClasses(externalClasses, vueComponentOptions) {
  12034. if (!externalClasses) {
  12035. return;
  12036. }
  12037. if (!Array.isArray(externalClasses)) {
  12038. externalClasses = [externalClasses];
  12039. }
  12040. vueComponentOptions.mpOptions.externalClasses = externalClasses;
  12041. if (!vueComponentOptions.mpOptions.properties) {
  12042. vueComponentOptions.mpOptions.properties = Object.create(null);
  12043. }
  12044. externalClasses.forEach(function (externalClass) {
  12045. vueComponentOptions.mpOptions.properties[camelize(externalClass)] = {
  12046. type: String,
  12047. value: ''
  12048. };
  12049. });
  12050. }
  12051. function parseLifetimes(lifetimes, vueComponentOptions) {
  12052. if (!lifetimes) {
  12053. return;
  12054. }
  12055. parseLifecycle(lifetimes, vueComponentOptions);
  12056. }
  12057. function parsePageLifetimes(pageLifetimes, vueComponentOptions) {
  12058. if (!pageLifetimes) {
  12059. return;
  12060. }
  12061. PAGE_LIFETIMES_KEYS.forEach(function (key) {
  12062. var lifetimeFn = pageLifetimes[key];
  12063. isFn(lifetimeFn) && (vueComponentOptions[PAGE_LIFETIMES[key]] = lifetimeFn);
  12064. });
  12065. }
  12066. function parseComponent(mpComponentOptions) {
  12067. var data = mpComponentOptions.data,
  12068. options = mpComponentOptions.options,
  12069. methods = mpComponentOptions.methods,
  12070. behaviors = mpComponentOptions.behaviors,
  12071. lifetimes = mpComponentOptions.lifetimes,
  12072. observers = mpComponentOptions.observers,
  12073. relations = mpComponentOptions.relations,
  12074. properties = mpComponentOptions.properties,
  12075. pageLifetimes = mpComponentOptions.pageLifetimes,
  12076. externalClasses = mpComponentOptions.externalClasses;
  12077. var vueComponentOptions = {
  12078. mixins: [],
  12079. props: {},
  12080. watch: {},
  12081. mpOptions: {
  12082. mpObservers: []
  12083. }
  12084. };
  12085. parseComponents(vueComponentOptions);
  12086. parseData(data, vueComponentOptions);
  12087. parseOptions(options, vueComponentOptions);
  12088. parseMethods(methods, vueComponentOptions);
  12089. parseBehaviors(behaviors, vueComponentOptions);
  12090. parseLifetimes(lifetimes, vueComponentOptions);
  12091. parseObservers(observers, vueComponentOptions);
  12092. parseRelations(relations, vueComponentOptions);
  12093. parseProperties(properties, vueComponentOptions);
  12094. parsePageLifetimes(pageLifetimes, vueComponentOptions);
  12095. parseExternalClasses(externalClasses, vueComponentOptions);
  12096. parseLifecycle(mpComponentOptions, vueComponentOptions);
  12097. parseDefinitionFilter(mpComponentOptions);
  12098. return vueComponentOptions;
  12099. }
  12100. function initRelationHandlers(type, handler, target, ctx) {
  12101. if (!handler) {
  12102. return;
  12103. }
  12104. var name = "_$".concat(type, "Handlers");
  12105. (ctx[name] || (ctx[name] = [])).push(function () {
  12106. handler.call(ctx, target);
  12107. });
  12108. }
  12109. function initLinkedHandlers(relation, target, ctx) {
  12110. var type = 'linked';
  12111. var name = relation.name;
  12112. var relationNodes = ctx._$relationNodes || (ctx._$relationNodes = Object.create(null));
  12113. (relationNodes[name] || (relationNodes[name] = [])).push(target);
  12114. initRelationHandlers(type, relation[type], target, ctx);
  12115. }
  12116. function initUnlinkedHandlers(relation, target, ctx) {
  12117. var type = 'unlinked';
  12118. initRelationHandlers(type, relation[type], target, ctx);
  12119. }
  12120. function findParentRelation(parentVm, target, type) {
  12121. var relations = parentVm && parentVm.$options.mpOptions && parentVm.$options.mpOptions.relations;
  12122. if (!relations) {
  12123. return [];
  12124. }
  12125. var name = Object.keys(relations).find(function (name) {
  12126. var relation = relations[name];
  12127. return relation.target === target && relation.type === type;
  12128. });
  12129. if (!name) {
  12130. return [];
  12131. }
  12132. return [relations[name], parentVm];
  12133. }
  12134. function initParentRelation(vm, childRelation, match) {
  12135. var _match = match(vm, vm.$options.mpOptions.path),
  12136. _match2 = (0, _slicedToArray2.default)(_match, 2),
  12137. parentRelation = _match2[0],
  12138. parentVm = _match2[1];
  12139. if (!parentRelation) {
  12140. return;
  12141. }
  12142. initLinkedHandlers(parentRelation, vm, parentVm);
  12143. initLinkedHandlers(childRelation, parentVm, vm);
  12144. initUnlinkedHandlers(parentRelation, vm, parentVm);
  12145. initUnlinkedHandlers(childRelation, parentVm, vm);
  12146. }
  12147. function initRelation(relation, vm) {
  12148. var type = relation.type;
  12149. if (type === 'parent') {
  12150. initParentRelation(vm, relation, function matchParent(vm, target) {
  12151. return findParentRelation(vm.$parent, target, 'child');
  12152. });
  12153. } else if (type === 'ancestor') {
  12154. initParentRelation(vm, relation, function matchAncestor(vm, target) {
  12155. var $parent = vm.$parent;
  12156. while ($parent) {
  12157. var ret = findParentRelation($parent, target, 'descendant');
  12158. if (ret.length) {
  12159. return ret;
  12160. }
  12161. $parent = $parent.$parent;
  12162. }
  12163. return [];
  12164. });
  12165. }
  12166. }
  12167. function initRelations(vm) {
  12168. var _ref = vm.$options.mpOptions || {},
  12169. relations = _ref.relations;
  12170. if (!relations) {
  12171. return;
  12172. }
  12173. Object.keys(relations).forEach(function (name) {
  12174. initRelation(relations[name], vm);
  12175. });
  12176. }
  12177. function handleRelations(vm, type) {
  12178. // TODO 需要移除 relationNodes
  12179. var handlers = vm["_$".concat(type, "Handlers")];
  12180. if (!handlers) {
  12181. return;
  12182. }
  12183. handlers.forEach(function (handler) {
  12184. return handler();
  12185. });
  12186. }
  12187. var sharedPropertyDefinition = {
  12188. enumerable: true,
  12189. configurable: true,
  12190. get: noop,
  12191. set: noop
  12192. };
  12193. function proxy(target, sourceKey, key) {
  12194. sharedPropertyDefinition.get = function proxyGetter() {
  12195. return this[sourceKey][key];
  12196. };
  12197. sharedPropertyDefinition.set = function proxySetter(val) {
  12198. this[sourceKey][key] = val;
  12199. };
  12200. Object.defineProperty(target, key, sharedPropertyDefinition);
  12201. }
  12202. function setDataByExprPath(exprPath, value, data) {
  12203. var keys = exprPath.replace(/\[(\d+?)\]/g, '.$1').split('.');
  12204. keys.reduce(function (obj, key, idx) {
  12205. if (idx === keys.length - 1) {
  12206. obj[key] = value;
  12207. } else {
  12208. if (typeof obj[key] === 'undefined') {
  12209. obj[key] = {};
  12210. }
  12211. return obj[key];
  12212. }
  12213. }, data);
  12214. return keys.length === 1;
  12215. }
  12216. function setData(data, callback) {
  12217. var _this = this;
  12218. if (!isPlainObject(data)) {
  12219. return;
  12220. }
  12221. Object.keys(data).forEach(function (key) {
  12222. if (setDataByExprPath(key, data[key], _this.data)) {
  12223. !hasOwn(_this, key) && proxy(_this, SOURCE_KEY, key);
  12224. }
  12225. });
  12226. this.$forceUpdate();
  12227. isFn(callback) && this.$nextTick(callback);
  12228. }
  12229. /**
  12230. * https://github.com/swan-team/swan-js/blob/61e2a63f7aa576b5daafbe77fdfa7c65b977060c/src/utils/index.js
  12231. */
  12232. var _toString$1 = Object.prototype.toString;
  12233. /**
  12234. * 深度assign的函数
  12235. * @param {Object} targetObject 要被拷贝的目标对象
  12236. * @param {Object} originObject 拷贝的源对象
  12237. * @return {Object} merge后的对象
  12238. */
  12239. var deepAssign = function deepAssign() {
  12240. var targetObject = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
  12241. var originObject = arguments.length > 1 ? arguments[1] : undefined;
  12242. var originType = _toString$1.call(originObject);
  12243. if (originType === '[object Array]') {
  12244. targetObject = originObject.slice(0);
  12245. return targetObject;
  12246. } else if (originType === '[object Object]') {
  12247. for (var key in originObject) {
  12248. targetObject[key] = deepAssign(targetObject[key], originObject[key]);
  12249. }
  12250. return targetObject;
  12251. } else if (originType === '[object Date]') {
  12252. return new Date(originObject.getTime());
  12253. } else if (originType === '[object RegExp]') {
  12254. var target = String(originObject);
  12255. var lastIndex = target.lastIndexOf('/');
  12256. return new RegExp(target.slice(1, lastIndex), target.slice(lastIndex + 1));
  12257. }
  12258. return originObject;
  12259. };
  12260. /**
  12261. * 深度拷贝逻辑,不同于lodash等库,但是与微信一致
  12262. * @param {*} [originObj] 原对象
  12263. * @return {Object|Array} 拷贝结果
  12264. */
  12265. var deepClone = function deepClone(originObj) {
  12266. return deepAssign(_toString$1.call(originObj) === '[object Array]' ? [] : {}, originObj);
  12267. };
  12268. var PROP_DEFAULT_VALUES = (_PROP_DEFAULT_VALUES = {}, (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, String, ''), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Number, 0), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Boolean, false), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Object, null), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, Array, []), (0, _defineProperty2.default)(_PROP_DEFAULT_VALUES, null, null), _PROP_DEFAULT_VALUES);
  12269. function getDefaultVal(propType) {
  12270. return PROP_DEFAULT_VALUES[propType];
  12271. }
  12272. function getPropertyVal(options) {
  12273. if (isPlainObject(options)) {
  12274. if (hasOwn(options, 'value')) {
  12275. return options.value;
  12276. }
  12277. return getDefaultVal(options.type);
  12278. }
  12279. return getDefaultVal(options);
  12280. }
  12281. function getType(propOptions) {
  12282. return isPlainObject(propOptions) ? propOptions.type : propOptions;
  12283. }
  12284. function validateProp(key, propsOptions, propsData, vm) {
  12285. var value = propsData[key];
  12286. if (value !== undefined) {
  12287. var propOptions = propsOptions[key];
  12288. var type = getType(propOptions);
  12289. value = formatVal(value, type);
  12290. var observer = propOptions && propOptions.observer;
  12291. if (observer) {
  12292. // 初始化时,异步触发 observer,否则 observer 中无法访问 methods 或其他
  12293. setTimeout(function () {
  12294. observe(observer, vm, value);
  12295. }, 4);
  12296. }
  12297. return value;
  12298. }
  12299. return getPropertyVal(propsOptions[key]);
  12300. }
  12301. function formatVal(val, type) {
  12302. if (type === Boolean) {
  12303. return !!val;
  12304. } else if (type === String) {
  12305. return String(val);
  12306. }
  12307. return val;
  12308. }
  12309. function observe(observer, vm, newVal, oldVal) {
  12310. try {
  12311. if (typeof observer === 'function') {
  12312. observer.call(vm, newVal, oldVal);
  12313. } else if (typeof observer === 'string' && typeof vm[observer] === 'function') {
  12314. vm[observer](newVal, oldVal);
  12315. }
  12316. } catch (err) {
  12317. console.error("execute observer ".concat(observer, " callback fail! err: ").concat(err));
  12318. }
  12319. }
  12320. function initProperties(vm, instanceData) {
  12321. var properties = vm.$options.mpOptions.properties;
  12322. if (!properties) {
  12323. return;
  12324. }
  12325. var propsData = deepClone(vm.$options.propsData) || {};
  12326. var _loop = function _loop(key) {
  12327. var observer = isPlainObject(properties[key]) ? properties[key].observer : false;
  12328. var value = validateProp(key, properties, propsData, vm);
  12329. Object.defineProperty(instanceData, key, {
  12330. enumerable: true,
  12331. configurable: true,
  12332. get: function get() {
  12333. return value;
  12334. },
  12335. set: function set(newVal) {
  12336. var oldVal = value;
  12337. /* eslint-disable no-self-compare */
  12338. if (newVal === value || newVal !== newVal && value !== value) {
  12339. return;
  12340. }
  12341. // TODO 临时方案,clone array
  12342. value = Array.isArray(newVal) ? newVal.slice(0) : newVal;
  12343. if (observer) {
  12344. observe(observer, vm, newVal, oldVal);
  12345. }
  12346. // 触发渲染
  12347. vm.$forceUpdate();
  12348. }
  12349. });
  12350. };
  12351. for (var key in properties) {
  12352. _loop(key);
  12353. }
  12354. }
  12355. function updateProperties(vm) {
  12356. var properties = vm.$options.mpOptions && vm.$options.mpOptions.properties;
  12357. var propsData = vm.$options.propsData;
  12358. if (propsData && properties) {
  12359. Object.keys(properties).forEach(function (key) {
  12360. if (hasOwn(propsData, key)) {
  12361. vm[key] = formatVal(propsData[key], getType(properties[key]));
  12362. }
  12363. });
  12364. }
  12365. }
  12366. function initState(vm) {
  12367. var instanceData = JSON.parse(JSON.stringify(vm.$options.mpOptions.data || {}));
  12368. vm[SOURCE_KEY] = instanceData;
  12369. var propertyDefinition = {
  12370. get: function get() {
  12371. return vm[SOURCE_KEY];
  12372. },
  12373. set: function set(value) {
  12374. vm[SOURCE_KEY] = value;
  12375. }
  12376. };
  12377. Object.defineProperties(vm, {
  12378. data: propertyDefinition,
  12379. properties: propertyDefinition
  12380. });
  12381. vm.setData = setData;
  12382. initProperties(vm, instanceData);
  12383. Object.keys(instanceData).forEach(function (key) {
  12384. proxy(vm, SOURCE_KEY, key);
  12385. });
  12386. }
  12387. function initMethods(vm) {
  12388. var oldEmit = vm.$emit;
  12389. vm.triggerEvent = function (eventName, detail, options) {
  12390. var target = {
  12391. dataset: vm.$el.dataset
  12392. };
  12393. var event = {
  12394. target: target,
  12395. currentTarget: target,
  12396. detail: detail,
  12397. preventDefault: noop,
  12398. stopPropagation: noop
  12399. };
  12400. oldEmit.call(vm, eventName, event);
  12401. };
  12402. // 主要是Vant 自己封装了 $emit,放到 methods 中会触发 Vue 的警告,索性,框架直接重写该方法
  12403. vm.$emit = function () {
  12404. vm.triggerEvent.apply(vm, arguments);
  12405. };
  12406. vm.getRelationNodes = function (relationKey) {
  12407. // 需要过滤已被销毁的vm
  12408. /* eslint-disable no-mixed-operators */
  12409. return (vm._$relationNodes && vm._$relationNodes[relationKey] || []).filter(function (vm) {
  12410. return !vm._isDestroyed;
  12411. });
  12412. };
  12413. vm._$updateProperties = updateProperties;
  12414. }
  12415. function handleObservers(vm) {
  12416. var watch = vm.$options.watch;
  12417. if (!watch) {
  12418. return;
  12419. }
  12420. Object.keys(watch).forEach(function (name) {
  12421. var observer = watch[name];
  12422. if (observer.mounted) {
  12423. var val = vm[name];
  12424. var handler = observer.handler;
  12425. if (typeof handler === 'string') {
  12426. handler = vm[handler];
  12427. }
  12428. handler && handler.call(vm, val, val);
  12429. }
  12430. });
  12431. }
  12432. var polyfill = {
  12433. beforeCreate: function beforeCreate() {
  12434. // 取消 development 时的 Proxy,避免小程序组件模板中使用尚未定义的属性告警
  12435. this._renderProxy = this;
  12436. this._$self = this;
  12437. this._$noop = noop;
  12438. },
  12439. created: function created() {
  12440. // properties 中可能会访问 methods,故需要在 created 中初始化
  12441. initState(this);
  12442. initMethods(this);
  12443. initRelations(this);
  12444. },
  12445. mounted: function mounted() {
  12446. handleObservers(this);
  12447. },
  12448. destroyed: function destroyed() {
  12449. handleRelations(this, 'unlinked');
  12450. }
  12451. };
  12452. global.__wxRoute = '';
  12453. global.__wxComponents = Object.create(null);
  12454. global.__wxVueOptions = Object.create(null);
  12455. function Page(options) {
  12456. var pageOptions = parsePage(options);
  12457. pageOptions.mixins.unshift(polyfill);
  12458. pageOptions.mpOptions.path = global.__wxRoute;
  12459. global.__wxComponents[global.__wxRoute] = pageOptions;
  12460. }
  12461. function initRelationsHandler(vueComponentOptions) {
  12462. // linked 需要在当前组件 attached 之后再执行
  12463. if (!vueComponentOptions.onServiceAttached) {
  12464. vueComponentOptions.onServiceAttached = [];
  12465. }
  12466. vueComponentOptions.onServiceAttached.push(function onServiceAttached() {
  12467. handleRelations(this, 'linked');
  12468. });
  12469. }
  12470. function Component(options) {
  12471. var componentOptions = parseComponent(options);
  12472. componentOptions.mixins.unshift(polyfill);
  12473. componentOptions.mpOptions.path = global.__wxRoute;
  12474. initRelationsHandler(componentOptions);
  12475. global.__wxComponents[global.__wxRoute] = componentOptions;
  12476. }
  12477. function Behavior(options) {
  12478. return options;
  12479. }
  12480. var nextTick = _vue.default.nextTick;
  12481. exports.nextTick = nextTick;
  12482. var index = uni.__$wx__;
  12483. var _default = index;
  12484. exports.default = _default;
  12485. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../webpack/buildin/global.js */ 93)))
  12486. /***/ }),
  12487. /* 95 */
  12488. /*!**************************************************************!*\
  12489. !*** ./node_modules/@babel/runtime/helpers/slicedToArray.js ***!
  12490. \**************************************************************/
  12491. /*! no static exports found */
  12492. /***/ (function(module, exports, __webpack_require__) {
  12493. var arrayWithHoles = __webpack_require__(/*! ./arrayWithHoles.js */ 96);
  12494. var iterableToArrayLimit = __webpack_require__(/*! ./iterableToArrayLimit.js */ 97);
  12495. var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 98);
  12496. var nonIterableRest = __webpack_require__(/*! ./nonIterableRest.js */ 100);
  12497. function _slicedToArray(arr, i) {
  12498. return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();
  12499. }
  12500. module.exports = _slicedToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12501. /***/ }),
  12502. /* 96 */
  12503. /*!***************************************************************!*\
  12504. !*** ./node_modules/@babel/runtime/helpers/arrayWithHoles.js ***!
  12505. \***************************************************************/
  12506. /*! no static exports found */
  12507. /***/ (function(module, exports) {
  12508. function _arrayWithHoles(arr) {
  12509. if (Array.isArray(arr)) return arr;
  12510. }
  12511. module.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12512. /***/ }),
  12513. /* 97 */
  12514. /*!*********************************************************************!*\
  12515. !*** ./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js ***!
  12516. \*********************************************************************/
  12517. /*! no static exports found */
  12518. /***/ (function(module, exports) {
  12519. function _iterableToArrayLimit(arr, i) {
  12520. var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"];
  12521. if (null != _i) {
  12522. var _s,
  12523. _e,
  12524. _x,
  12525. _r,
  12526. _arr = [],
  12527. _n = !0,
  12528. _d = !1;
  12529. try {
  12530. if (_x = (_i = _i.call(arr)).next, 0 === i) {
  12531. if (Object(_i) !== _i) return;
  12532. _n = !1;
  12533. } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {
  12534. ;
  12535. }
  12536. } catch (err) {
  12537. _d = !0, _e = err;
  12538. } finally {
  12539. try {
  12540. if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return;
  12541. } finally {
  12542. if (_d) throw _e;
  12543. }
  12544. }
  12545. return _arr;
  12546. }
  12547. }
  12548. module.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12549. /***/ }),
  12550. /* 98 */
  12551. /*!***************************************************************************!*\
  12552. !*** ./node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js ***!
  12553. \***************************************************************************/
  12554. /*! no static exports found */
  12555. /***/ (function(module, exports, __webpack_require__) {
  12556. var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 99);
  12557. function _unsupportedIterableToArray(o, minLen) {
  12558. if (!o) return;
  12559. if (typeof o === "string") return arrayLikeToArray(o, minLen);
  12560. var n = Object.prototype.toString.call(o).slice(8, -1);
  12561. if (n === "Object" && o.constructor) n = o.constructor.name;
  12562. if (n === "Map" || n === "Set") return Array.from(o);
  12563. if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);
  12564. }
  12565. module.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12566. /***/ }),
  12567. /* 99 */
  12568. /*!*****************************************************************!*\
  12569. !*** ./node_modules/@babel/runtime/helpers/arrayLikeToArray.js ***!
  12570. \*****************************************************************/
  12571. /*! no static exports found */
  12572. /***/ (function(module, exports) {
  12573. function _arrayLikeToArray(arr, len) {
  12574. if (len == null || len > arr.length) len = arr.length;
  12575. for (var i = 0, arr2 = new Array(len); i < len; i++) {
  12576. arr2[i] = arr[i];
  12577. }
  12578. return arr2;
  12579. }
  12580. module.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12581. /***/ }),
  12582. /* 100 */
  12583. /*!****************************************************************!*\
  12584. !*** ./node_modules/@babel/runtime/helpers/nonIterableRest.js ***!
  12585. \****************************************************************/
  12586. /*! no static exports found */
  12587. /***/ (function(module, exports) {
  12588. function _nonIterableRest() {
  12589. throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  12590. }
  12591. module.exports = _nonIterableRest, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12592. /***/ }),
  12593. /* 101 */
  12594. /*!**********************!*\
  12595. !*** external "Vue" ***!
  12596. \**********************/
  12597. /*! no static exports found */
  12598. /***/ (function(module, exports) {
  12599. module.exports = Vue;
  12600. /***/ }),
  12601. /* 102 */
  12602. /*!**********************************************************************!*\
  12603. !*** ./node_modules/@babel/runtime/helpers/assertThisInitialized.js ***!
  12604. \**********************************************************************/
  12605. /*! no static exports found */
  12606. /***/ (function(module, exports) {
  12607. function _assertThisInitialized(self) {
  12608. if (self === void 0) {
  12609. throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
  12610. }
  12611. return self;
  12612. }
  12613. module.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12614. /***/ }),
  12615. /* 103 */
  12616. /*!************************************************************************!*\
  12617. !*** ./node_modules/@babel/runtime/helpers/objectWithoutProperties.js ***!
  12618. \************************************************************************/
  12619. /*! no static exports found */
  12620. /***/ (function(module, exports, __webpack_require__) {
  12621. var objectWithoutPropertiesLoose = __webpack_require__(/*! ./objectWithoutPropertiesLoose.js */ 104);
  12622. function _objectWithoutProperties(source, excluded) {
  12623. if (source == null) return {};
  12624. var target = objectWithoutPropertiesLoose(source, excluded);
  12625. var key, i;
  12626. if (Object.getOwnPropertySymbols) {
  12627. var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
  12628. for (i = 0; i < sourceSymbolKeys.length; i++) {
  12629. key = sourceSymbolKeys[i];
  12630. if (excluded.indexOf(key) >= 0) continue;
  12631. if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
  12632. target[key] = source[key];
  12633. }
  12634. }
  12635. return target;
  12636. }
  12637. module.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12638. /***/ }),
  12639. /* 104 */
  12640. /*!*****************************************************************************!*\
  12641. !*** ./node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js ***!
  12642. \*****************************************************************************/
  12643. /*! no static exports found */
  12644. /***/ (function(module, exports) {
  12645. function _objectWithoutPropertiesLoose(source, excluded) {
  12646. if (source == null) return {};
  12647. var target = {};
  12648. var sourceKeys = Object.keys(source);
  12649. var key, i;
  12650. for (i = 0; i < sourceKeys.length; i++) {
  12651. key = sourceKeys[i];
  12652. if (excluded.indexOf(key) >= 0) continue;
  12653. target[key] = source[key];
  12654. }
  12655. return target;
  12656. }
  12657. module.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12658. /***/ }),
  12659. /* 105 */
  12660. /*!******************************************************************!*\
  12661. !*** ./node_modules/@babel/runtime/helpers/toConsumableArray.js ***!
  12662. \******************************************************************/
  12663. /*! no static exports found */
  12664. /***/ (function(module, exports, __webpack_require__) {
  12665. var arrayWithoutHoles = __webpack_require__(/*! ./arrayWithoutHoles.js */ 106);
  12666. var iterableToArray = __webpack_require__(/*! ./iterableToArray.js */ 107);
  12667. var unsupportedIterableToArray = __webpack_require__(/*! ./unsupportedIterableToArray.js */ 98);
  12668. var nonIterableSpread = __webpack_require__(/*! ./nonIterableSpread.js */ 108);
  12669. function _toConsumableArray(arr) {
  12670. return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();
  12671. }
  12672. module.exports = _toConsumableArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12673. /***/ }),
  12674. /* 106 */
  12675. /*!******************************************************************!*\
  12676. !*** ./node_modules/@babel/runtime/helpers/arrayWithoutHoles.js ***!
  12677. \******************************************************************/
  12678. /*! no static exports found */
  12679. /***/ (function(module, exports, __webpack_require__) {
  12680. var arrayLikeToArray = __webpack_require__(/*! ./arrayLikeToArray.js */ 99);
  12681. function _arrayWithoutHoles(arr) {
  12682. if (Array.isArray(arr)) return arrayLikeToArray(arr);
  12683. }
  12684. module.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12685. /***/ }),
  12686. /* 107 */
  12687. /*!****************************************************************!*\
  12688. !*** ./node_modules/@babel/runtime/helpers/iterableToArray.js ***!
  12689. \****************************************************************/
  12690. /*! no static exports found */
  12691. /***/ (function(module, exports) {
  12692. function _iterableToArray(iter) {
  12693. if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter);
  12694. }
  12695. module.exports = _iterableToArray, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12696. /***/ }),
  12697. /* 108 */
  12698. /*!******************************************************************!*\
  12699. !*** ./node_modules/@babel/runtime/helpers/nonIterableSpread.js ***!
  12700. \******************************************************************/
  12701. /*! no static exports found */
  12702. /***/ (function(module, exports) {
  12703. function _nonIterableSpread() {
  12704. throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
  12705. }
  12706. module.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12707. /***/ }),
  12708. /* 109 */
  12709. /*!*********************************************************!*\
  12710. !*** ./node_modules/@babel/runtime/helpers/inherits.js ***!
  12711. \*********************************************************/
  12712. /*! no static exports found */
  12713. /***/ (function(module, exports, __webpack_require__) {
  12714. var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 110);
  12715. function _inherits(subClass, superClass) {
  12716. if (typeof superClass !== "function" && superClass !== null) {
  12717. throw new TypeError("Super expression must either be null or a function");
  12718. }
  12719. subClass.prototype = Object.create(superClass && superClass.prototype, {
  12720. constructor: {
  12721. value: subClass,
  12722. writable: true,
  12723. configurable: true
  12724. }
  12725. });
  12726. Object.defineProperty(subClass, "prototype", {
  12727. writable: false
  12728. });
  12729. if (superClass) setPrototypeOf(subClass, superClass);
  12730. }
  12731. module.exports = _inherits, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12732. /***/ }),
  12733. /* 110 */
  12734. /*!***************************************************************!*\
  12735. !*** ./node_modules/@babel/runtime/helpers/setPrototypeOf.js ***!
  12736. \***************************************************************/
  12737. /*! no static exports found */
  12738. /***/ (function(module, exports) {
  12739. function _setPrototypeOf(o, p) {
  12740. module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {
  12741. o.__proto__ = p;
  12742. return o;
  12743. }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12744. return _setPrototypeOf(o, p);
  12745. }
  12746. module.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12747. /***/ }),
  12748. /* 111 */
  12749. /*!**************************************************************************!*\
  12750. !*** ./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js ***!
  12751. \**************************************************************************/
  12752. /*! no static exports found */
  12753. /***/ (function(module, exports, __webpack_require__) {
  12754. var _typeof = __webpack_require__(/*! ./typeof.js */ 4)["default"];
  12755. var assertThisInitialized = __webpack_require__(/*! ./assertThisInitialized.js */ 102);
  12756. function _possibleConstructorReturn(self, call) {
  12757. if (call && (_typeof(call) === "object" || typeof call === "function")) {
  12758. return call;
  12759. } else if (call !== void 0) {
  12760. throw new TypeError("Derived constructors may only return object or undefined");
  12761. }
  12762. return assertThisInitialized(self);
  12763. }
  12764. module.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12765. /***/ }),
  12766. /* 112 */
  12767. /*!***************************************************************!*\
  12768. !*** ./node_modules/@babel/runtime/helpers/getPrototypeOf.js ***!
  12769. \***************************************************************/
  12770. /*! no static exports found */
  12771. /***/ (function(module, exports) {
  12772. function _getPrototypeOf(o) {
  12773. module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {
  12774. return o.__proto__ || Object.getPrototypeOf(o);
  12775. }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12776. return _getPrototypeOf(o);
  12777. }
  12778. module.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12779. /***/ }),
  12780. /* 113 */
  12781. /*!****************************************************************!*\
  12782. !*** ./node_modules/@babel/runtime/helpers/wrapNativeSuper.js ***!
  12783. \****************************************************************/
  12784. /*! no static exports found */
  12785. /***/ (function(module, exports, __webpack_require__) {
  12786. var getPrototypeOf = __webpack_require__(/*! ./getPrototypeOf.js */ 112);
  12787. var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 110);
  12788. var isNativeFunction = __webpack_require__(/*! ./isNativeFunction.js */ 114);
  12789. var construct = __webpack_require__(/*! ./construct.js */ 115);
  12790. function _wrapNativeSuper(Class) {
  12791. var _cache = typeof Map === "function" ? new Map() : undefined;
  12792. module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {
  12793. if (Class === null || !isNativeFunction(Class)) return Class;
  12794. if (typeof Class !== "function") {
  12795. throw new TypeError("Super expression must either be null or a function");
  12796. }
  12797. if (typeof _cache !== "undefined") {
  12798. if (_cache.has(Class)) return _cache.get(Class);
  12799. _cache.set(Class, Wrapper);
  12800. }
  12801. function Wrapper() {
  12802. return construct(Class, arguments, getPrototypeOf(this).constructor);
  12803. }
  12804. Wrapper.prototype = Object.create(Class.prototype, {
  12805. constructor: {
  12806. value: Wrapper,
  12807. enumerable: false,
  12808. writable: true,
  12809. configurable: true
  12810. }
  12811. });
  12812. return setPrototypeOf(Wrapper, Class);
  12813. }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12814. return _wrapNativeSuper(Class);
  12815. }
  12816. module.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12817. /***/ }),
  12818. /* 114 */
  12819. /*!*****************************************************************!*\
  12820. !*** ./node_modules/@babel/runtime/helpers/isNativeFunction.js ***!
  12821. \*****************************************************************/
  12822. /*! no static exports found */
  12823. /***/ (function(module, exports) {
  12824. function _isNativeFunction(fn) {
  12825. return Function.toString.call(fn).indexOf("[native code]") !== -1;
  12826. }
  12827. module.exports = _isNativeFunction, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12828. /***/ }),
  12829. /* 115 */
  12830. /*!**********************************************************!*\
  12831. !*** ./node_modules/@babel/runtime/helpers/construct.js ***!
  12832. \**********************************************************/
  12833. /*! no static exports found */
  12834. /***/ (function(module, exports, __webpack_require__) {
  12835. var setPrototypeOf = __webpack_require__(/*! ./setPrototypeOf.js */ 110);
  12836. var isNativeReflectConstruct = __webpack_require__(/*! ./isNativeReflectConstruct.js */ 116);
  12837. function _construct(Parent, args, Class) {
  12838. if (isNativeReflectConstruct()) {
  12839. module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports["default"] = module.exports;
  12840. } else {
  12841. module.exports = _construct = function _construct(Parent, args, Class) {
  12842. var a = [null];
  12843. a.push.apply(a, args);
  12844. var Constructor = Function.bind.apply(Parent, a);
  12845. var instance = new Constructor();
  12846. if (Class) setPrototypeOf(instance, Class.prototype);
  12847. return instance;
  12848. }, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12849. }
  12850. return _construct.apply(null, arguments);
  12851. }
  12852. module.exports = _construct, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12853. /***/ }),
  12854. /* 116 */
  12855. /*!*************************************************************************!*\
  12856. !*** ./node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js ***!
  12857. \*************************************************************************/
  12858. /*! no static exports found */
  12859. /***/ (function(module, exports) {
  12860. function _isNativeReflectConstruct() {
  12861. if (typeof Reflect === "undefined" || !Reflect.construct) return false;
  12862. if (Reflect.construct.sham) return false;
  12863. if (typeof Proxy === "function") return true;
  12864. try {
  12865. Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
  12866. return true;
  12867. } catch (e) {
  12868. return false;
  12869. }
  12870. }
  12871. module.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12872. /***/ }),
  12873. /* 117 */
  12874. /*!***************************************************************!*\
  12875. !*** ./node_modules/@babel/runtime/helpers/classCallCheck.js ***!
  12876. \***************************************************************/
  12877. /*! no static exports found */
  12878. /***/ (function(module, exports) {
  12879. function _classCallCheck(instance, Constructor) {
  12880. if (!(instance instanceof Constructor)) {
  12881. throw new TypeError("Cannot call a class as a function");
  12882. }
  12883. }
  12884. module.exports = _classCallCheck, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12885. /***/ }),
  12886. /* 118 */
  12887. /*!************************************************************!*\
  12888. !*** ./node_modules/@babel/runtime/helpers/createClass.js ***!
  12889. \************************************************************/
  12890. /*! no static exports found */
  12891. /***/ (function(module, exports, __webpack_require__) {
  12892. var toPropertyKey = __webpack_require__(/*! ./toPropertyKey.js */ 3);
  12893. function _defineProperties(target, props) {
  12894. for (var i = 0; i < props.length; i++) {
  12895. var descriptor = props[i];
  12896. descriptor.enumerable = descriptor.enumerable || false;
  12897. descriptor.configurable = true;
  12898. if ("value" in descriptor) descriptor.writable = true;
  12899. Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);
  12900. }
  12901. }
  12902. function _createClass(Constructor, protoProps, staticProps) {
  12903. if (protoProps) _defineProperties(Constructor.prototype, protoProps);
  12904. if (staticProps) _defineProperties(Constructor, staticProps);
  12905. Object.defineProperty(Constructor, "prototype", {
  12906. writable: false
  12907. });
  12908. return Constructor;
  12909. }
  12910. module.exports = _createClass, module.exports.__esModule = true, module.exports["default"] = module.exports;
  12911. /***/ }),
  12912. /* 119 */
  12913. /*!*******************************************************************************!*\
  12914. !*** D:/Intelligent/jn_uniapp/jn_app/pages.json?{"type":"origin-pages-json"} ***!
  12915. \*******************************************************************************/
  12916. /*! no static exports found */
  12917. /***/ (function(module, exports, __webpack_require__) {
  12918. "use strict";
  12919. Object.defineProperty(exports, "__esModule", {
  12920. value: true
  12921. });
  12922. exports.default = void 0;
  12923. var _default = {
  12924. "pages": [{
  12925. "path": "pages/login/login",
  12926. "style": {
  12927. "navigationBarTitleText": "登录",
  12928. "navigationStyle": "custom"
  12929. }
  12930. }, {
  12931. "path": "pages/home/index",
  12932. "style": {
  12933. "navigationBarTitleText": "首页",
  12934. "navigationStyle": "custom"
  12935. }
  12936. }, {
  12937. "path": "pages/power/index",
  12938. "style": {
  12939. "navigationBarTitleText": "电量预测",
  12940. "navigationStyle": "custom"
  12941. }
  12942. }, {
  12943. "path": "pages/type/index",
  12944. "style": {
  12945. "navigationBarTitleText": "故障分类",
  12946. "navigationStyle": "custom"
  12947. }
  12948. }, {
  12949. "path": "pages/report/index",
  12950. "style": {
  12951. "navigationBarTitleText": "数据简报",
  12952. "navigationStyle": "custom"
  12953. }
  12954. }, {
  12955. "path": "pages/warn/index",
  12956. "style": {
  12957. "navigationBarTitleText": "故障预警",
  12958. "navigationStyle": "custom"
  12959. }
  12960. }],
  12961. "tabBar": {
  12962. "color": "#6A98CB",
  12963. "selectedColor": "#FF8902",
  12964. "borderStyle": "white",
  12965. "backgroundColor": "#000",
  12966. "list": [{
  12967. "pagePath": "pages/home/index",
  12968. "iconPath": "static/jnImage/indexPage/home.png",
  12969. "selectedIconPath": "static/jnImage/indexPage/homeS.png",
  12970. "text": "首页"
  12971. }, {
  12972. "pagePath": "pages/power/index",
  12973. "iconPath": "static/jnImage/indexPage/power.png",
  12974. "selectedIconPath": "static/jnImage/indexPage/powerS.png",
  12975. "text": "电量预测"
  12976. }, {
  12977. "pagePath": "pages/type/index",
  12978. "iconPath": "static/jnImage/indexPage/type.png",
  12979. "selectedIconPath": "static/jnImage/indexPage/typeS.png",
  12980. "text": "故障分类"
  12981. }, {
  12982. "pagePath": "pages/report/index",
  12983. "iconPath": "static/jnImage/indexPage/report.png",
  12984. "selectedIconPath": "static/jnImage/indexPage/reportS.png",
  12985. "text": "数据简报"
  12986. }, {
  12987. "pagePath": "pages/warn/index",
  12988. "iconPath": "static/jnImage/indexPage/warn.png",
  12989. "selectedIconPath": "static/jnImage/indexPage/warnS.png",
  12990. "text": "故障预警"
  12991. }]
  12992. },
  12993. "globalStyle": {
  12994. "navigationBarTextStyle": "black",
  12995. "navigationBarTitleText": "RuoYi",
  12996. "navigationBarBackgroundColor": "#FFFFFF"
  12997. }
  12998. };
  12999. exports.default = _default;
  13000. /***/ }),
  13001. /* 120 */
  13002. /*!******************************************************************!*\
  13003. !*** D:/Intelligent/jn_uniapp/jn_app/pages.json?{"type":"stat"} ***!
  13004. \******************************************************************/
  13005. /*! no static exports found */
  13006. /***/ (function(module, exports, __webpack_require__) {
  13007. "use strict";
  13008. Object.defineProperty(exports, "__esModule", {
  13009. value: true
  13010. });
  13011. exports.default = void 0;
  13012. var _default = {
  13013. "appid": "__UNI__B5DFCD0"
  13014. };
  13015. exports.default = _default;
  13016. /***/ }),
  13017. /* 121 */
  13018. /*!*********************************************************************!*\
  13019. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js ***!
  13020. \*********************************************************************/
  13021. /*! exports provided: log, default */
  13022. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  13023. "use strict";
  13024. __webpack_require__.r(__webpack_exports__);
  13025. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "log", function() { return log; });
  13026. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return formatLog; });
  13027. function typof (v) {
  13028. var s = Object.prototype.toString.call(v)
  13029. return s.substring(8, s.length - 1)
  13030. }
  13031. function isDebugMode () {
  13032. /* eslint-disable no-undef */
  13033. return typeof __channelId__ === 'string' && __channelId__
  13034. }
  13035. function jsonStringifyReplacer (k, p) {
  13036. switch (typof(p)) {
  13037. case 'Function':
  13038. return 'function() { [native code] }'
  13039. default :
  13040. return p
  13041. }
  13042. }
  13043. function log (type) {
  13044. for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
  13045. args[_key - 1] = arguments[_key]
  13046. }
  13047. console[type].apply(console, args)
  13048. }
  13049. function formatLog () {
  13050. for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
  13051. args[_key] = arguments[_key]
  13052. }
  13053. var type = args.shift()
  13054. if (isDebugMode()) {
  13055. args.push(args.pop().replace('at ', 'uni-app:///'))
  13056. return console[type].apply(console, args)
  13057. }
  13058. var msgs = args.map(function (v) {
  13059. var type = Object.prototype.toString.call(v).toLowerCase()
  13060. if (type === '[object object]' || type === '[object array]') {
  13061. try {
  13062. v = '---BEGIN:JSON---' + JSON.stringify(v, jsonStringifyReplacer) + '---END:JSON---'
  13063. } catch (e) {
  13064. v = type
  13065. }
  13066. } else {
  13067. if (v === null) {
  13068. v = '---NULL---'
  13069. } else if (v === undefined) {
  13070. v = '---UNDEFINED---'
  13071. } else {
  13072. var vType = typof(v).toUpperCase()
  13073. if (vType === 'NUMBER' || vType === 'BOOLEAN') {
  13074. v = '---BEGIN:' + vType + '---' + v + '---END:' + vType + '---'
  13075. } else {
  13076. v = String(v)
  13077. }
  13078. }
  13079. }
  13080. return v
  13081. })
  13082. var msg = ''
  13083. if (msgs.length > 1) {
  13084. var lastMsg = msgs.pop()
  13085. msg = msgs.join('---COMMA---')
  13086. if (lastMsg.indexOf(' at ') === 0) {
  13087. msg += lastMsg
  13088. } else {
  13089. msg += '---COMMA---' + lastMsg
  13090. }
  13091. } else {
  13092. msg = msgs[0]
  13093. }
  13094. console[type](msg)
  13095. }
  13096. /***/ }),
  13097. /* 122 */
  13098. /*!************************************************************************************************!*\
  13099. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js ***!
  13100. \************************************************************************************************/
  13101. /*! no static exports found */
  13102. /***/ (function(module, exports, __webpack_require__) {
  13103. "use strict";
  13104. eval("/* WEBPACK VAR INJECTION */(function(__f__) {/*\r\n * uCharts (R)\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360/快手)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (C) 2018-2022 QIUN (R) 秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts (R) 官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\n\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 95));\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar config = {\n version: 'v2.5.0-20230101',\n yAxisWidth: 15,\n xAxisHeight: 22,\n padding: [10, 10, 10, 10],\n rotate: false,\n fontSize: 13,\n fontColor: '#666666',\n dataPointShape: ['circle', 'circle', 'circle', 'circle'],\n color: ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'],\n linearColor: ['#0EE2F8', '#2BDCA8', '#FA7D8D', '#EB88E2', '#2AE3A0', '#0EE2F8', '#EB88E2', '#6773E3', '#F78A85'],\n pieChartLinePadding: 15,\n pieChartTextPadding: 5,\n titleFontSize: 20,\n subtitleFontSize: 15,\n radarLabelTextMargin: 13\n};\nvar assign = function assign(target) {\n for (var _len2 = arguments.length, varArgs = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n varArgs[_key2 - 1] = arguments[_key2];\n }\n if (target == null) {\n throw new TypeError('[uCharts] Cannot convert undefined or null to object');\n }\n if (!varArgs || varArgs.length <= 0) {\n return target;\n }\n // 深度合并对象\n function deepAssign(obj1, obj2) {\n for (var key in obj2) {\n obj1[key] = obj1[key] && obj1[key].toString() === \"[object Object]\" ? deepAssign(obj1[key], obj2[key]) : obj1[key] = obj2[key];\n }\n return obj1;\n }\n varArgs.forEach(function (val) {\n target = deepAssign(target, val);\n });\n return target;\n};\nvar util = {\n toFixed: function toFixed(num, limit) {\n limit = limit || 2;\n if (this.isFloat(num)) {\n num = num.toFixed(limit);\n }\n return num;\n },\n isFloat: function isFloat(num) {\n return num % 1 !== 0;\n },\n approximatelyEqual: function approximatelyEqual(num1, num2) {\n return Math.abs(num1 - num2) < 1e-10;\n },\n isSameSign: function isSameSign(num1, num2) {\n return Math.abs(num1) === num1 && Math.abs(num2) === num2 || Math.abs(num1) !== num1 && Math.abs(num2) !== num2;\n },\n isSameXCoordinateArea: function isSameXCoordinateArea(p1, p2) {\n return this.isSameSign(p1.x, p2.x);\n },\n isCollision: function isCollision(obj1, obj2) {\n obj1.end = {};\n obj1.end.x = obj1.start.x + obj1.width;\n obj1.end.y = obj1.start.y - obj1.height;\n obj2.end = {};\n obj2.end.x = obj2.start.x + obj2.width;\n obj2.end.y = obj2.start.y - obj2.height;\n var flag = obj2.start.x > obj1.end.x || obj2.end.x < obj1.start.x || obj2.end.y > obj1.start.y || obj2.start.y < obj1.end.y;\n return !flag;\n }\n};\n\n//兼容H5点击事件\nfunction getH5Offset(e) {\n e.mp = {\n changedTouches: []\n };\n e.mp.changedTouches.push({\n x: e.offsetX,\n y: e.offsetY\n });\n return e;\n}\n\n// hex 转 rgba\nfunction hexToRgb(hexValue, opc) {\n var rgx = /^#?([a-f\\d])([a-f\\d])([a-f\\d])$/i;\n var hex = hexValue.replace(rgx, function (m, r, g, b) {\n return r + r + g + g + b + b;\n });\n var rgb = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n var r = parseInt(rgb[1], 16);\n var g = parseInt(rgb[2], 16);\n var b = parseInt(rgb[3], 16);\n return 'rgba(' + r + ',' + g + ',' + b + ',' + opc + ')';\n}\nfunction findRange(num, type, limit) {\n if (isNaN(num)) {\n throw new Error('[uCharts] series数据需为Number格式');\n }\n limit = limit || 10;\n type = type ? type : 'upper';\n var multiple = 1;\n while (limit < 1) {\n limit *= 10;\n multiple *= 10;\n }\n if (type === 'upper') {\n num = Math.ceil(num * multiple);\n } else {\n num = Math.floor(num * multiple);\n }\n while (num % limit !== 0) {\n if (type === 'upper') {\n if (num == num + 1) {\n //修复数据值过大num++无效的bug by 向日葵 @xrk_jy\n break;\n }\n num++;\n } else {\n num--;\n }\n }\n return num / multiple;\n}\nfunction calCandleMA(dayArr, nameArr, colorArr, kdata) {\n var seriesTemp = [];\n for (var k = 0; k < dayArr.length; k++) {\n var seriesItem = {\n data: [],\n name: nameArr[k],\n color: colorArr[k]\n };\n for (var i = 0, len = kdata.length; i < len; i++) {\n if (i < dayArr[k]) {\n seriesItem.data.push(null);\n continue;\n }\n var sum = 0;\n for (var j = 0; j < dayArr[k]; j++) {\n sum += kdata[i - j][1];\n }\n seriesItem.data.push(+(sum / dayArr[k]).toFixed(3));\n }\n seriesTemp.push(seriesItem);\n }\n return seriesTemp;\n}\nfunction calValidDistance(self, distance, chartData, config, opts) {\n var dataChartAreaWidth = opts.width - opts.area[1] - opts.area[3];\n var dataChartWidth = chartData.eachSpacing * (opts.chartData.xAxisData.xAxisPoints.length - 1);\n if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n dataChartWidth += (opts.extra.mount.widthRatio - 1) * chartData.eachSpacing;\n }\n var validDistance = distance;\n if (distance >= 0) {\n validDistance = 0;\n self.uevent.trigger('scrollLeft');\n self.scrollOption.position = 'left';\n opts.xAxis.scrollPosition = 'left';\n } else if (Math.abs(distance) >= dataChartWidth - dataChartAreaWidth) {\n validDistance = dataChartAreaWidth - dataChartWidth;\n self.uevent.trigger('scrollRight');\n self.scrollOption.position = 'right';\n opts.xAxis.scrollPosition = 'right';\n } else {\n self.scrollOption.position = distance;\n opts.xAxis.scrollPosition = distance;\n }\n return validDistance;\n}\nfunction isInAngleRange(angle, startAngle, endAngle) {\n function adjust(angle) {\n while (angle < 0) {\n angle += 2 * Math.PI;\n }\n while (angle > 2 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n return angle;\n }\n angle = adjust(angle);\n startAngle = adjust(startAngle);\n endAngle = adjust(endAngle);\n if (startAngle > endAngle) {\n endAngle += 2 * Math.PI;\n if (angle < startAngle) {\n angle += 2 * Math.PI;\n }\n }\n return angle >= startAngle && angle <= endAngle;\n}\nfunction createCurveControlPoints(points, i) {\n function isNotMiddlePoint(points, i) {\n if (points[i - 1] && points[i + 1]) {\n return points[i].y >= Math.max(points[i - 1].y, points[i + 1].y) || points[i].y <= Math.min(points[i - 1].y, points[i + 1].y);\n } else {\n return false;\n }\n }\n function isNotMiddlePointX(points, i) {\n if (points[i - 1] && points[i + 1]) {\n return points[i].x >= Math.max(points[i - 1].x, points[i + 1].x) || points[i].x <= Math.min(points[i - 1].x, points[i + 1].x);\n } else {\n return false;\n }\n }\n var a = 0.2;\n var b = 0.2;\n var pAx = null;\n var pAy = null;\n var pBx = null;\n var pBy = null;\n if (i < 1) {\n pAx = points[0].x + (points[1].x - points[0].x) * a;\n pAy = points[0].y + (points[1].y - points[0].y) * a;\n } else {\n pAx = points[i].x + (points[i + 1].x - points[i - 1].x) * a;\n pAy = points[i].y + (points[i + 1].y - points[i - 1].y) * a;\n }\n if (i > points.length - 3) {\n var last = points.length - 1;\n pBx = points[last].x - (points[last].x - points[last - 1].x) * b;\n pBy = points[last].y - (points[last].y - points[last - 1].y) * b;\n } else {\n pBx = points[i + 1].x - (points[i + 2].x - points[i].x) * b;\n pBy = points[i + 1].y - (points[i + 2].y - points[i].y) * b;\n }\n if (isNotMiddlePoint(points, i + 1)) {\n pBy = points[i + 1].y;\n }\n if (isNotMiddlePoint(points, i)) {\n pAy = points[i].y;\n }\n if (isNotMiddlePointX(points, i + 1)) {\n pBx = points[i + 1].x;\n }\n if (isNotMiddlePointX(points, i)) {\n pAx = points[i].x;\n }\n if (pAy >= Math.max(points[i].y, points[i + 1].y) || pAy <= Math.min(points[i].y, points[i + 1].y)) {\n pAy = points[i].y;\n }\n if (pBy >= Math.max(points[i].y, points[i + 1].y) || pBy <= Math.min(points[i].y, points[i + 1].y)) {\n pBy = points[i + 1].y;\n }\n if (pAx >= Math.max(points[i].x, points[i + 1].x) || pAx <= Math.min(points[i].x, points[i + 1].x)) {\n pAx = points[i].x;\n }\n if (pBx >= Math.max(points[i].x, points[i + 1].x) || pBx <= Math.min(points[i].x, points[i + 1].x)) {\n pBx = points[i + 1].x;\n }\n return {\n ctrA: {\n x: pAx,\n y: pAy\n },\n ctrB: {\n x: pBx,\n y: pBy\n }\n };\n}\nfunction convertCoordinateOrigin(x, y, center) {\n return {\n x: center.x + x,\n y: center.y - y\n };\n}\nfunction avoidCollision(obj, target) {\n if (target) {\n // is collision test\n while (util.isCollision(obj, target)) {\n if (obj.start.x > 0) {\n obj.start.y--;\n } else if (obj.start.x < 0) {\n obj.start.y++;\n } else {\n if (obj.start.y > 0) {\n obj.start.y++;\n } else {\n obj.start.y--;\n }\n }\n }\n }\n return obj;\n}\nfunction fixPieSeries(series, opts, config) {\n var pieSeriesArr = [];\n if (series.length > 0 && series[0].data.constructor.toString().indexOf('Array') > -1) {\n opts._pieSeries_ = series;\n var oldseries = series[0].data;\n for (var i = 0; i < oldseries.length; i++) {\n oldseries[i].formatter = series[0].formatter;\n oldseries[i].data = oldseries[i].value;\n pieSeriesArr.push(oldseries[i]);\n }\n opts.series = pieSeriesArr;\n } else {\n pieSeriesArr = series;\n }\n return pieSeriesArr;\n}\nfunction fillSeries(series, opts, config) {\n var index = 0;\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n if (!item.color) {\n item.color = config.color[index];\n index = (index + 1) % config.color.length;\n }\n if (!item.linearIndex) {\n item.linearIndex = i;\n }\n if (!item.index) {\n item.index = 0;\n }\n if (!item.type) {\n item.type = opts.type;\n }\n if (typeof item.show == \"undefined\") {\n item.show = true;\n }\n if (!item.type) {\n item.type = opts.type;\n }\n if (!item.pointShape) {\n item.pointShape = \"circle\";\n }\n if (!item.legendShape) {\n switch (item.type) {\n case 'line':\n item.legendShape = \"line\";\n break;\n case 'column':\n case 'bar':\n item.legendShape = \"rect\";\n break;\n case 'area':\n case 'mount':\n item.legendShape = \"triangle\";\n break;\n default:\n item.legendShape = \"circle\";\n }\n }\n }\n return series;\n}\nfunction fillCustomColor(linearType, customColor, series, config) {\n var newcolor = customColor || [];\n if (linearType == 'custom' && newcolor.length == 0) {\n newcolor = config.linearColor;\n }\n if (linearType == 'custom' && newcolor.length < series.length) {\n var chazhi = series.length - newcolor.length;\n for (var i = 0; i < chazhi; i++) {\n newcolor.push(config.linearColor[(i + 1) % config.linearColor.length]);\n }\n }\n return newcolor;\n}\nfunction getDataRange(minData, maxData) {\n var limit = 0;\n var range = maxData - minData;\n if (range >= 10000) {\n limit = 1000;\n } else if (range >= 1000) {\n limit = 100;\n } else if (range >= 100) {\n limit = 10;\n } else if (range >= 10) {\n limit = 5;\n } else if (range >= 1) {\n limit = 1;\n } else if (range >= 0.1) {\n limit = 0.1;\n } else if (range >= 0.01) {\n limit = 0.01;\n } else if (range >= 0.001) {\n limit = 0.001;\n } else if (range >= 0.0001) {\n limit = 0.0001;\n } else if (range >= 0.00001) {\n limit = 0.00001;\n } else {\n limit = 0.000001;\n }\n return {\n minRange: findRange(minData, 'lower', limit),\n maxRange: findRange(maxData, 'upper', limit)\n };\n}\nfunction measureText(text, fontSize, context) {\n var width = 0;\n text = String(text);\n if (context !== false && context !== undefined && context.setFontSize && context.measureText) {\n context.setFontSize(fontSize);\n return context.measureText(text).width;\n } else {\n var text = text.split('');\n for (var i = 0; i < text.length; i++) {\n var item = text[i];\n if (/[a-zA-Z]/.test(item)) {\n width += 7;\n } else if (/[0-9]/.test(item)) {\n width += 5.5;\n } else if (/\\./.test(item)) {\n width += 2.7;\n } else if (/-/.test(item)) {\n width += 3.25;\n } else if (/:/.test(item)) {\n width += 2.5;\n } else if (/[\\u4e00-\\u9fa5]/.test(item)) {\n width += 10;\n } else if (/\\(|\\)/.test(item)) {\n width += 3.73;\n } else if (/\\s/.test(item)) {\n width += 2.5;\n } else if (/%/.test(item)) {\n width += 8;\n } else {\n width += 10;\n }\n }\n return width * fontSize / 10;\n }\n}\nfunction dataCombine(series) {\n return series.reduce(function (a, b) {\n return (a.data ? a.data : a).concat(b.data);\n }, []);\n}\nfunction dataCombineStack(series, len) {\n var sum = new Array(len);\n for (var j = 0; j < sum.length; j++) {\n sum[j] = 0;\n }\n for (var i = 0; i < series.length; i++) {\n for (var j = 0; j < sum.length; j++) {\n sum[j] += series[i].data[j];\n }\n }\n return series.reduce(function (a, b) {\n return (a.data ? a.data : a).concat(b.data).concat(sum);\n }, []);\n}\nfunction getTouches(touches, opts, e) {\n var x, y;\n if (touches.clientX) {\n if (opts.rotate) {\n y = opts.height - touches.clientX * opts.pix;\n x = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;\n } else {\n x = touches.clientX * opts.pix;\n y = (touches.pageY - e.currentTarget.offsetTop - opts.height / opts.pix / 2 * (opts.pix - 1)) * opts.pix;\n }\n } else {\n if (opts.rotate) {\n y = opts.height - touches.x * opts.pix;\n x = touches.y * opts.pix;\n } else {\n x = touches.x * opts.pix;\n y = touches.y * opts.pix;\n }\n }\n return {\n x: x,\n y: y\n };\n}\nfunction getSeriesDataItem(series, index, group) {\n var data = [];\n var newSeries = [];\n var indexIsArr = index.constructor.toString().indexOf('Array') > -1;\n if (indexIsArr) {\n var tempSeries = filterSeries(series);\n for (var i = 0; i < group.length; i++) {\n newSeries.push(tempSeries[group[i]]);\n }\n } else {\n newSeries = series;\n }\n ;\n for (var _i = 0; _i < newSeries.length; _i++) {\n var item = newSeries[_i];\n var tmpindex = -1;\n if (indexIsArr) {\n tmpindex = index[_i];\n } else {\n tmpindex = index;\n }\n if (item.data[tmpindex] !== null && typeof item.data[tmpindex] !== 'undefined' && item.show) {\n var seriesItem = {};\n seriesItem.color = item.color;\n seriesItem.type = item.type;\n seriesItem.style = item.style;\n seriesItem.pointShape = item.pointShape;\n seriesItem.disableLegend = item.disableLegend;\n seriesItem.legendShape = item.legendShape;\n seriesItem.name = item.name;\n seriesItem.show = item.show;\n seriesItem.data = item.formatter ? item.formatter(item.data[tmpindex]) : item.data[tmpindex];\n data.push(seriesItem);\n }\n }\n return data;\n}\nfunction getMaxTextListLength(list, fontSize, context) {\n var lengthList = list.map(function (item) {\n return measureText(item, fontSize, context);\n });\n return Math.max.apply(null, lengthList);\n}\nfunction getRadarCoordinateSeries(length) {\n var eachAngle = 2 * Math.PI / length;\n var CoordinateSeries = [];\n for (var i = 0; i < length; i++) {\n CoordinateSeries.push(eachAngle * i);\n }\n return CoordinateSeries.map(function (item) {\n return -1 * item + Math.PI / 2;\n });\n}\nfunction getToolTipData(seriesData, opts, index, group, categories) {\n var option = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var calPoints = opts.chartData.calPoints ? opts.chartData.calPoints : [];\n var points = {};\n if (group.length > 0) {\n var filterPoints = [];\n for (var i = 0; i < group.length; i++) {\n filterPoints.push(calPoints[group[i]]);\n }\n points = filterPoints[0][index[0]];\n } else {\n for (var _i2 = 0; _i2 < calPoints.length; _i2++) {\n if (calPoints[_i2][index]) {\n points = calPoints[_i2][index];\n break;\n }\n }\n }\n ;\n var textList = seriesData.map(function (item) {\n var titleText = null;\n if (opts.categories && opts.categories.length > 0) {\n titleText = categories[index];\n }\n ;\n return {\n text: option.formatter ? option.formatter(item, titleText, index, opts) : item.name + ': ' + item.data,\n color: item.color,\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n });\n var offset = {\n x: Math.round(points.x),\n y: Math.round(points.y)\n };\n return {\n textList: textList,\n offset: offset\n };\n}\nfunction getMixToolTipData(seriesData, opts, index, categories) {\n var option = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var points = opts.chartData.xAxisPoints[index] + opts.chartData.eachSpacing / 2;\n var textList = seriesData.map(function (item) {\n return {\n text: option.formatter ? option.formatter(item, categories[index], index, opts) : item.name + ': ' + item.data,\n color: item.color,\n disableLegend: item.disableLegend ? true : false,\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n });\n textList = textList.filter(function (item) {\n if (item.disableLegend !== true) {\n return item;\n }\n });\n var offset = {\n x: Math.round(points),\n y: 0\n };\n return {\n textList: textList,\n offset: offset\n };\n}\nfunction getCandleToolTipData(series, seriesData, opts, index, categories, extra) {\n var option = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};\n var calPoints = opts.chartData.calPoints;\n var upColor = extra.color.upFill;\n var downColor = extra.color.downFill;\n //颜色顺序为开盘,收盘,最低,最高\n var color = [upColor, upColor, downColor, upColor];\n var textList = [];\n seriesData.map(function (item) {\n if (index == 0) {\n if (item.data[1] - item.data[0] < 0) {\n color[1] = downColor;\n } else {\n color[1] = upColor;\n }\n } else {\n if (item.data[0] < series[index - 1][1]) {\n color[0] = downColor;\n }\n if (item.data[1] < item.data[0]) {\n color[1] = downColor;\n }\n if (item.data[2] > series[index - 1][1]) {\n color[2] = upColor;\n }\n if (item.data[3] < series[index - 1][1]) {\n color[3] = downColor;\n }\n }\n var text1 = {\n text: '开盘:' + item.data[0],\n color: color[0],\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n var text2 = {\n text: '收盘:' + item.data[1],\n color: color[1],\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n var text3 = {\n text: '最低:' + item.data[2],\n color: color[2],\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n var text4 = {\n text: '最高:' + item.data[3],\n color: color[3],\n legendShape: opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : opts.extra.tooltip.legendShape\n };\n textList.push(text1, text2, text3, text4);\n });\n var validCalPoints = [];\n var offset = {\n x: 0,\n y: 0\n };\n for (var i = 0; i < calPoints.length; i++) {\n var points = calPoints[i];\n if (typeof points[index] !== 'undefined' && points[index] !== null) {\n validCalPoints.push(points[index]);\n }\n }\n offset.x = Math.round(validCalPoints[0][0].x);\n return {\n textList: textList,\n offset: offset\n };\n}\nfunction filterSeries(series) {\n var tempSeries = [];\n for (var i = 0; i < series.length; i++) {\n if (series[i].show == true) {\n tempSeries.push(series[i]);\n }\n }\n return tempSeries;\n}\nfunction findCurrentIndex(currentPoints, calPoints, opts, config) {\n var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var current = {\n index: -1,\n group: []\n };\n var spacing = opts.chartData.eachSpacing / 2;\n var xAxisPoints = [];\n if (calPoints && calPoints.length > 0) {\n if (!opts.categories) {\n spacing = 0;\n } else {\n for (var i = 1; i < opts.chartData.xAxisPoints.length; i++) {\n xAxisPoints.push(opts.chartData.xAxisPoints[i] - spacing);\n }\n if ((opts.type == 'line' || opts.type == 'area') && opts.xAxis.boundaryGap == 'justify') {\n xAxisPoints = opts.chartData.xAxisPoints;\n }\n }\n if (isInExactChartArea(currentPoints, opts, config)) {\n if (!opts.categories) {\n var timePoints = Array(calPoints.length);\n for (var _i3 = 0; _i3 < calPoints.length; _i3++) {\n timePoints[_i3] = Array(calPoints[_i3].length);\n for (var j = 0; j < calPoints[_i3].length; j++) {\n timePoints[_i3][j] = Math.abs(calPoints[_i3][j].x - currentPoints.x);\n }\n }\n ;\n var pointValue = Array(timePoints.length);\n var pointIndex = Array(timePoints.length);\n for (var _i4 = 0; _i4 < timePoints.length; _i4++) {\n pointValue[_i4] = Math.min.apply(null, timePoints[_i4]);\n pointIndex[_i4] = timePoints[_i4].indexOf(pointValue[_i4]);\n }\n var minValue = Math.min.apply(null, pointValue);\n current.index = [];\n for (var _i5 = 0; _i5 < pointValue.length; _i5++) {\n if (pointValue[_i5] == minValue) {\n current.group.push(_i5);\n current.index.push(pointIndex[_i5]);\n }\n }\n ;\n } else {\n xAxisPoints.forEach(function (item, index) {\n if (currentPoints.x + offset + spacing > item) {\n current.index = index;\n }\n });\n }\n }\n }\n return current;\n}\nfunction findBarChartCurrentIndex(currentPoints, calPoints, opts, config) {\n var offset = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;\n var current = {\n index: -1,\n group: []\n };\n var spacing = opts.chartData.eachSpacing / 2;\n var yAxisPoints = opts.chartData.yAxisPoints;\n if (calPoints && calPoints.length > 0) {\n if (isInExactChartArea(currentPoints, opts, config)) {\n yAxisPoints.forEach(function (item, index) {\n if (currentPoints.y + offset + spacing > item) {\n current.index = index;\n }\n });\n }\n }\n return current;\n}\nfunction findLegendIndex(currentPoints, legendData, opts) {\n var currentIndex = -1;\n var gap = 0;\n if (isInExactLegendArea(currentPoints, legendData.area)) {\n var points = legendData.points;\n var index = -1;\n for (var i = 0, len = points.length; i < len; i++) {\n var item = points[i];\n for (var j = 0; j < item.length; j++) {\n index += 1;\n var area = item[j]['area'];\n if (area && currentPoints.x > area[0] - gap && currentPoints.x < area[2] + gap && currentPoints.y > area[1] - gap && currentPoints.y < area[3] + gap) {\n currentIndex = index;\n break;\n }\n }\n }\n return currentIndex;\n }\n return currentIndex;\n}\nfunction isInExactLegendArea(currentPoints, area) {\n return currentPoints.x > area.start.x && currentPoints.x < area.end.x && currentPoints.y > area.start.y && currentPoints.y < area.end.y;\n}\nfunction isInExactChartArea(currentPoints, opts, config) {\n return currentPoints.x <= opts.width - opts.area[1] + 10 && currentPoints.x >= opts.area[3] - 10 && currentPoints.y >= opts.area[0] && currentPoints.y <= opts.height - opts.area[2];\n}\nfunction findRadarChartCurrentIndex(currentPoints, radarData, count) {\n var eachAngleArea = 2 * Math.PI / count;\n var currentIndex = -1;\n if (isInExactPieChartArea(currentPoints, radarData.center, radarData.radius)) {\n var fixAngle = function fixAngle(angle) {\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n if (angle > 2 * Math.PI) {\n angle -= 2 * Math.PI;\n }\n return angle;\n };\n var angle = Math.atan2(radarData.center.y - currentPoints.y, currentPoints.x - radarData.center.x);\n angle = -1 * angle;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n var angleList = radarData.angleList.map(function (item) {\n item = fixAngle(-1 * item);\n return item;\n });\n angleList.forEach(function (item, index) {\n var rangeStart = fixAngle(item - eachAngleArea / 2);\n var rangeEnd = fixAngle(item + eachAngleArea / 2);\n if (rangeEnd < rangeStart) {\n rangeEnd += 2 * Math.PI;\n }\n if (angle >= rangeStart && angle <= rangeEnd || angle + 2 * Math.PI >= rangeStart && angle + 2 * Math.PI <= rangeEnd) {\n currentIndex = index;\n }\n });\n }\n return currentIndex;\n}\nfunction findFunnelChartCurrentIndex(currentPoints, funnelData) {\n var currentIndex = -1;\n for (var i = 0, len = funnelData.series.length; i < len; i++) {\n var item = funnelData.series[i];\n if (currentPoints.x > item.funnelArea[0] && currentPoints.x < item.funnelArea[2] && currentPoints.y > item.funnelArea[1] && currentPoints.y < item.funnelArea[3]) {\n currentIndex = i;\n break;\n }\n }\n return currentIndex;\n}\nfunction findWordChartCurrentIndex(currentPoints, wordData) {\n var currentIndex = -1;\n for (var i = 0, len = wordData.length; i < len; i++) {\n var item = wordData[i];\n if (currentPoints.x > item.area[0] && currentPoints.x < item.area[2] && currentPoints.y > item.area[1] && currentPoints.y < item.area[3]) {\n currentIndex = i;\n break;\n }\n }\n return currentIndex;\n}\nfunction findMapChartCurrentIndex(currentPoints, opts) {\n var currentIndex = -1;\n var cData = opts.chartData.mapData;\n var data = opts.series;\n var tmp = pointToCoordinate(currentPoints.y, currentPoints.x, cData.bounds, cData.scale, cData.xoffset, cData.yoffset);\n var poi = [tmp.x, tmp.y];\n for (var i = 0, len = data.length; i < len; i++) {\n var item = data[i].geometry.coordinates;\n if (isPoiWithinPoly(poi, item, opts.chartData.mapData.mercator)) {\n currentIndex = i;\n break;\n }\n }\n return currentIndex;\n}\nfunction findRoseChartCurrentIndex(currentPoints, pieData, opts) {\n var currentIndex = -1;\n var series = getRoseDataPoints(opts._series_, opts.extra.rose.type, pieData.radius, pieData.radius);\n if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\n var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\n angle = -angle;\n if (opts.extra.rose && opts.extra.rose.offsetAngle) {\n angle = angle - opts.extra.rose.offsetAngle * Math.PI / 180;\n }\n for (var i = 0, len = series.length; i < len; i++) {\n if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._rose_proportion_ * 2 * Math.PI)) {\n currentIndex = i;\n break;\n }\n }\n }\n return currentIndex;\n}\nfunction findPieChartCurrentIndex(currentPoints, pieData, opts) {\n var currentIndex = -1;\n var series = getPieDataPoints(pieData.series);\n if (pieData && pieData.center && isInExactPieChartArea(currentPoints, pieData.center, pieData.radius)) {\n var angle = Math.atan2(pieData.center.y - currentPoints.y, currentPoints.x - pieData.center.x);\n angle = -angle;\n if (opts.extra.pie && opts.extra.pie.offsetAngle) {\n angle = angle - opts.extra.pie.offsetAngle * Math.PI / 180;\n }\n if (opts.extra.ring && opts.extra.ring.offsetAngle) {\n angle = angle - opts.extra.ring.offsetAngle * Math.PI / 180;\n }\n for (var i = 0, len = series.length; i < len; i++) {\n if (isInAngleRange(angle, series[i]._start_, series[i]._start_ + series[i]._proportion_ * 2 * Math.PI)) {\n currentIndex = i;\n break;\n }\n }\n }\n return currentIndex;\n}\nfunction isInExactPieChartArea(currentPoints, center, radius) {\n return Math.pow(currentPoints.x - center.x, 2) + Math.pow(currentPoints.y - center.y, 2) <= Math.pow(radius, 2);\n}\nfunction splitPoints(points, eachSeries) {\n var newPoints = [];\n var items = [];\n points.forEach(function (item, index) {\n if (eachSeries.connectNulls) {\n if (item !== null) {\n items.push(item);\n }\n } else {\n if (item !== null) {\n items.push(item);\n } else {\n if (items.length) {\n newPoints.push(items);\n }\n items = [];\n }\n }\n });\n if (items.length) {\n newPoints.push(items);\n }\n return newPoints;\n}\nfunction calLegendData(series, opts, config, chartData, context) {\n var legendData = {\n area: {\n start: {\n x: 0,\n y: 0\n },\n end: {\n x: 0,\n y: 0\n },\n width: 0,\n height: 0,\n wholeWidth: 0,\n wholeHeight: 0\n },\n points: [],\n widthArr: [],\n heightArr: []\n };\n if (opts.legend.show === false) {\n chartData.legendData = legendData;\n return legendData;\n }\n var padding = opts.legend.padding * opts.pix;\n var margin = opts.legend.margin * opts.pix;\n var fontSize = opts.legend.fontSize ? opts.legend.fontSize * opts.pix : config.fontSize;\n var shapeWidth = 15 * opts.pix;\n var shapeRight = 5 * opts.pix;\n var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n var legendList = [];\n var widthCount = 0;\n var widthCountArr = [];\n var currentRow = [];\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n var legendText = item.legendText ? item.legendText : item.name;\n var itemWidth = shapeWidth + shapeRight + measureText(legendText || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\n if (widthCount + itemWidth > opts.width - opts.area[1] - opts.area[3]) {\n legendList.push(currentRow);\n widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\n widthCount = itemWidth;\n currentRow = [item];\n } else {\n widthCount += itemWidth;\n currentRow.push(item);\n }\n }\n if (currentRow.length) {\n legendList.push(currentRow);\n widthCountArr.push(widthCount - opts.legend.itemGap * opts.pix);\n legendData.widthArr = widthCountArr;\n var legendWidth = Math.max.apply(null, widthCountArr);\n switch (opts.legend.float) {\n case 'left':\n legendData.area.start.x = opts.area[3];\n legendData.area.end.x = opts.area[3] + legendWidth + 2 * padding;\n break;\n case 'right':\n legendData.area.start.x = opts.width - opts.area[1] - legendWidth - 2 * padding;\n legendData.area.end.x = opts.width - opts.area[1];\n break;\n default:\n legendData.area.start.x = (opts.width - legendWidth) / 2 - padding;\n legendData.area.end.x = (opts.width + legendWidth) / 2 + padding;\n }\n legendData.area.width = legendWidth + 2 * padding;\n legendData.area.wholeWidth = legendWidth + 2 * padding;\n legendData.area.height = legendList.length * lineHeight + 2 * padding;\n legendData.area.wholeHeight = legendList.length * lineHeight + 2 * padding + 2 * margin;\n legendData.points = legendList;\n }\n } else {\n var len = series.length;\n var maxHeight = opts.height - opts.area[0] - opts.area[2] - 2 * margin - 2 * padding;\n var maxLength = Math.min(Math.floor(maxHeight / lineHeight), len);\n legendData.area.height = maxLength * lineHeight + padding * 2;\n legendData.area.wholeHeight = maxLength * lineHeight + padding * 2;\n switch (opts.legend.float) {\n case 'top':\n legendData.area.start.y = opts.area[0] + margin;\n legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\n break;\n case 'bottom':\n legendData.area.start.y = opts.height - opts.area[2] - margin - legendData.area.height;\n legendData.area.end.y = opts.height - opts.area[2] - margin;\n break;\n default:\n legendData.area.start.y = (opts.height - legendData.area.height) / 2;\n legendData.area.end.y = (opts.height + legendData.area.height) / 2;\n }\n var lineNum = len % maxLength === 0 ? len / maxLength : Math.floor(len / maxLength + 1);\n var _currentRow = [];\n for (var _i6 = 0; _i6 < lineNum; _i6++) {\n var temp = series.slice(_i6 * maxLength, _i6 * maxLength + maxLength);\n _currentRow.push(temp);\n }\n legendData.points = _currentRow;\n if (_currentRow.length) {\n for (var _i7 = 0; _i7 < _currentRow.length; _i7++) {\n var _item = _currentRow[_i7];\n var maxWidth = 0;\n for (var j = 0; j < _item.length; j++) {\n var _itemWidth = shapeWidth + shapeRight + measureText(_item[j].name || 'undefined', fontSize, context) + opts.legend.itemGap * opts.pix;\n if (_itemWidth > maxWidth) {\n maxWidth = _itemWidth;\n }\n }\n legendData.widthArr.push(maxWidth);\n legendData.heightArr.push(_item.length * lineHeight + padding * 2);\n }\n var _legendWidth = 0;\n for (var _i8 = 0; _i8 < legendData.widthArr.length; _i8++) {\n _legendWidth += legendData.widthArr[_i8];\n }\n legendData.area.width = _legendWidth - opts.legend.itemGap * opts.pix + 2 * padding;\n legendData.area.wholeWidth = legendData.area.width + padding;\n }\n }\n switch (opts.legend.position) {\n case 'top':\n legendData.area.start.y = opts.area[0] + margin;\n legendData.area.end.y = opts.area[0] + margin + legendData.area.height;\n break;\n case 'bottom':\n legendData.area.start.y = opts.height - opts.area[2] - legendData.area.height - margin;\n legendData.area.end.y = opts.height - opts.area[2] - margin;\n break;\n case 'left':\n legendData.area.start.x = opts.area[3];\n legendData.area.end.x = opts.area[3] + legendData.area.width;\n break;\n case 'right':\n legendData.area.start.x = opts.width - opts.area[1] - legendData.area.width;\n legendData.area.end.x = opts.width - opts.area[1];\n break;\n }\n chartData.legendData = legendData;\n return legendData;\n}\nfunction calCategoriesData(categories, opts, config, eachSpacing, context) {\n var result = {\n angle: 0,\n xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix\n };\n var fontSize = opts.xAxis.fontSize * opts.pix;\n var categoriesTextLenth = categories.map(function (item, index) {\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;\n return measureText(String(xitem), fontSize, context);\n });\n var maxTextLength = Math.max.apply(this, categoriesTextLenth);\n if (opts.xAxis.rotateLabel == true) {\n result.angle = opts.xAxis.rotateAngle * Math.PI / 180;\n var tempHeight = opts.xAxis.marginTop * opts.pix * 2 + Math.abs(maxTextLength * Math.sin(result.angle));\n tempHeight = tempHeight < fontSize + opts.xAxis.marginTop * opts.pix * 2 ? tempHeight + opts.xAxis.marginTop * opts.pix * 2 : tempHeight;\n result.xAxisHeight = tempHeight;\n }\n if (opts.enableScroll && opts.xAxis.scrollShow) {\n result.xAxisHeight += 6 * opts.pix;\n }\n if (opts.xAxis.disabled) {\n result.xAxisHeight = 0;\n }\n return result;\n}\nfunction getXAxisTextList(series, opts, config, stack) {\n var index = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : -1;\n var data;\n if (stack == 'stack') {\n data = dataCombineStack(series, opts.categories.length);\n } else {\n data = dataCombine(series);\n }\n var sorted = [];\n // remove null from data\n data = data.filter(function (item) {\n //return item !== null;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n if (item.constructor.toString().indexOf('Array') > -1) {\n return item !== null;\n } else {\n return item.value !== null;\n }\n } else {\n return item !== null;\n }\n });\n data.map(function (item) {\n if ((0, _typeof2.default)(item) === 'object') {\n if (item.constructor.toString().indexOf('Array') > -1) {\n if (opts.type == 'candle') {\n item.map(function (subitem) {\n sorted.push(subitem);\n });\n } else {\n sorted.push(item[0]);\n }\n } else {\n sorted.push(item.value);\n }\n } else {\n sorted.push(item);\n }\n });\n var minData = 0;\n var maxData = 0;\n if (sorted.length > 0) {\n minData = Math.min.apply(this, sorted);\n maxData = Math.max.apply(this, sorted);\n }\n //为了兼容v1.9.0之前的项目\n if (index > -1) {\n if (typeof opts.xAxis.data[index].min === 'number') {\n minData = Math.min(opts.xAxis.data[index].min, minData);\n }\n if (typeof opts.xAxis.data[index].max === 'number') {\n maxData = Math.max(opts.xAxis.data[index].max, maxData);\n }\n } else {\n if (typeof opts.xAxis.min === 'number') {\n minData = Math.min(opts.xAxis.min, minData);\n }\n if (typeof opts.xAxis.max === 'number') {\n maxData = Math.max(opts.xAxis.max, maxData);\n }\n }\n if (minData === maxData) {\n var rangeSpan = maxData || 10;\n maxData += rangeSpan;\n }\n //var dataRange = getDataRange(minData, maxData);\n var minRange = minData;\n var maxRange = maxData;\n var range = [];\n var eachRange = (maxRange - minRange) / opts.xAxis.splitNumber;\n for (var i = 0; i <= opts.xAxis.splitNumber; i++) {\n range.push(minRange + eachRange * i);\n }\n return range;\n}\nfunction calXAxisData(series, opts, config, context) {\n //堆叠图重算Y轴\n var columnstyle = assign({}, {\n type: \"\"\n }, opts.extra.bar);\n var result = {\n angle: 0,\n xAxisHeight: opts.xAxis.lineHeight * opts.pix + opts.xAxis.marginTop * opts.pix\n };\n result.ranges = getXAxisTextList(series, opts, config, columnstyle.type);\n result.rangesFormat = result.ranges.map(function (item) {\n //item = opts.xAxis.formatter ? opts.xAxis.formatter(item) : util.toFixed(item, 2);\n item = util.toFixed(item, 2);\n return item;\n });\n var xAxisScaleValues = result.ranges.map(function (item) {\n // 如果刻度值是浮点数,则保留两位小数\n item = util.toFixed(item, 2);\n // 若有自定义格式则调用自定义的格式化函数\n //item = opts.xAxis.formatter ? opts.xAxis.formatter(Number(item)) : item;\n return item;\n });\n result = Object.assign(result, getXAxisPoints(xAxisScaleValues, opts, config));\n // 计算X轴刻度的属性譬如每个刻度的间隔,刻度的起始点\\结束点以及总长\n var eachSpacing = result.eachSpacing;\n var textLength = xAxisScaleValues.map(function (item) {\n return measureText(item, opts.xAxis.fontSize * opts.pix, context);\n });\n if (opts.xAxis.disabled === true) {\n result.xAxisHeight = 0;\n }\n return result;\n}\nfunction getRadarDataPoints(angleList, center, radius, series, opts) {\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n var radarOption = opts.extra.radar || {};\n radarOption.max = radarOption.max || 0;\n var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\n var data = [];\n var _loop2 = function _loop2(i) {\n var each = series[i];\n var listItem = {};\n listItem.color = each.color;\n listItem.legendShape = each.legendShape;\n listItem.pointShape = each.pointShape;\n listItem.data = [];\n each.data.forEach(function (item, index) {\n var tmp = {};\n tmp.angle = angleList[index];\n tmp.proportion = item / maxData;\n tmp.value = item;\n tmp.position = convertCoordinateOrigin(radius * tmp.proportion * process * Math.cos(tmp.angle), radius * tmp.proportion * process * Math.sin(tmp.angle), center);\n listItem.data.push(tmp);\n });\n data.push(listItem);\n };\n for (var i = 0; i < series.length; i++) {\n _loop2(i);\n }\n return data;\n}\nfunction getPieDataPoints(series, radius) {\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var count = 0;\n var _start_ = 0;\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n item.data = item.data === null ? 0 : item.data;\n count += item.data;\n }\n for (var _i9 = 0; _i9 < series.length; _i9++) {\n var _item2 = series[_i9];\n _item2.data = _item2.data === null ? 0 : _item2.data;\n if (count === 0) {\n _item2._proportion_ = 1 / series.length * process;\n } else {\n _item2._proportion_ = _item2.data / count * process;\n }\n _item2._radius_ = radius;\n }\n for (var _i10 = 0; _i10 < series.length; _i10++) {\n var _item3 = series[_i10];\n _item3._start_ = _start_;\n _start_ += 2 * _item3._proportion_ * Math.PI;\n }\n return series;\n}\nfunction getFunnelDataPoints(series, radius, option, eachSpacing) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n for (var i = 0; i < series.length; i++) {\n if (option.type == 'funnel') {\n series[i].radius = series[i].data / series[0].data * radius * process;\n } else {\n series[i].radius = eachSpacing * (series.length - i) / (eachSpacing * series.length) * radius * process;\n }\n series[i]._proportion_ = series[i].data / series[0].data;\n }\n // if(option.type !== 'pyramid'){\n // series.reverse();\n // }\n return series;\n}\nfunction getRoseDataPoints(series, type, minRadius, radius) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var count = 0;\n var _start_ = 0;\n var dataArr = [];\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n item.data = item.data === null ? 0 : item.data;\n count += item.data;\n dataArr.push(item.data);\n }\n var minData = Math.min.apply(null, dataArr);\n var maxData = Math.max.apply(null, dataArr);\n var radiusLength = radius - minRadius;\n for (var _i11 = 0; _i11 < series.length; _i11++) {\n var _item4 = series[_i11];\n _item4.data = _item4.data === null ? 0 : _item4.data;\n if (count === 0) {\n _item4._proportion_ = 1 / series.length * process;\n _item4._rose_proportion_ = 1 / series.length * process;\n } else {\n _item4._proportion_ = _item4.data / count * process;\n if (type == 'area') {\n _item4._rose_proportion_ = 1 / series.length * process;\n } else {\n _item4._rose_proportion_ = _item4.data / count * process;\n }\n }\n _item4._radius_ = minRadius + radiusLength * ((_item4.data - minData) / (maxData - minData)) || radius;\n }\n for (var _i12 = 0; _i12 < series.length; _i12++) {\n var _item5 = series[_i12];\n _item5._start_ = _start_;\n _start_ += 2 * _item5._rose_proportion_ * Math.PI;\n }\n return series;\n}\nfunction getArcbarDataPoints(series, arcbarOption) {\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n if (process == 1) {\n process = 0.999999;\n }\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n item.data = item.data === null ? 0 : item.data;\n var totalAngle = void 0;\n if (arcbarOption.type == 'circle') {\n totalAngle = 2;\n } else {\n if (arcbarOption.direction == 'ccw') {\n if (arcbarOption.startAngle < arcbarOption.endAngle) {\n totalAngle = 2 + arcbarOption.startAngle - arcbarOption.endAngle;\n } else {\n totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\n }\n } else {\n if (arcbarOption.endAngle < arcbarOption.startAngle) {\n totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\n } else {\n totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\n }\n }\n }\n item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;\n if (arcbarOption.direction == 'ccw') {\n item._proportion_ = arcbarOption.startAngle - totalAngle * item.data * process;\n }\n if (item._proportion_ >= 2) {\n item._proportion_ = item._proportion_ % 2;\n }\n }\n return series;\n}\nfunction getGaugeArcbarDataPoints(series, arcbarOption) {\n var process = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n if (process == 1) {\n process = 0.999999;\n }\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n item.data = item.data === null ? 0 : item.data;\n var totalAngle = void 0;\n if (arcbarOption.type == 'circle') {\n totalAngle = 2;\n } else {\n if (arcbarOption.endAngle < arcbarOption.startAngle) {\n totalAngle = 2 + arcbarOption.endAngle - arcbarOption.startAngle;\n } else {\n totalAngle = arcbarOption.startAngle - arcbarOption.endAngle;\n }\n }\n item._proportion_ = totalAngle * item.data * process + arcbarOption.startAngle;\n if (item._proportion_ >= 2) {\n item._proportion_ = item._proportion_ % 2;\n }\n }\n return series;\n}\nfunction getGaugeAxisPoints(categories, startAngle, endAngle) {\n var totalAngle;\n if (endAngle < startAngle) {\n totalAngle = 2 + endAngle - startAngle;\n } else {\n totalAngle = startAngle - endAngle;\n }\n var tempStartAngle = startAngle;\n for (var i = 0; i < categories.length; i++) {\n categories[i].value = categories[i].value === null ? 0 : categories[i].value;\n categories[i]._startAngle_ = tempStartAngle;\n categories[i]._endAngle_ = totalAngle * categories[i].value + startAngle;\n if (categories[i]._endAngle_ >= 2) {\n categories[i]._endAngle_ = categories[i]._endAngle_ % 2;\n }\n tempStartAngle = categories[i]._endAngle_;\n }\n return categories;\n}\nfunction getGaugeDataPoints(series, categories, gaugeOption) {\n var process = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n item.data = item.data === null ? 0 : item.data;\n if (gaugeOption.pointer.color == 'auto') {\n for (var _i13 = 0; _i13 < categories.length; _i13++) {\n if (item.data <= categories[_i13].value) {\n item.color = categories[_i13].color;\n break;\n }\n }\n } else {\n item.color = gaugeOption.pointer.color;\n }\n var totalAngle = void 0;\n if (gaugeOption.endAngle < gaugeOption.startAngle) {\n totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;\n } else {\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;\n }\n item._endAngle_ = totalAngle * item.data + gaugeOption.startAngle;\n item._oldAngle_ = gaugeOption.oldAngle;\n if (gaugeOption.oldAngle < gaugeOption.endAngle) {\n item._oldAngle_ += 2;\n }\n if (item.data >= gaugeOption.oldData) {\n item._proportion_ = (item._endAngle_ - item._oldAngle_) * process + gaugeOption.oldAngle;\n } else {\n item._proportion_ = item._oldAngle_ - (item._oldAngle_ - item._endAngle_) * process;\n }\n if (item._proportion_ >= 2) {\n item._proportion_ = item._proportion_ % 2;\n }\n }\n return series;\n}\nfunction getPieTextMaxLength(series, config, context, opts) {\n series = getPieDataPoints(series);\n var maxLength = 0;\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n var text = item.formatter ? item.formatter(+item._proportion_.toFixed(2)) : util.toFixed(item._proportion_ * 100) + '%';\n maxLength = Math.max(maxLength, measureText(text, item.textSize * opts.pix || config.fontSize, context));\n }\n return maxLength;\n}\nfunction fixColumeData(points, eachSpacing, columnLen, index, config, opts) {\n return points.map(function (item) {\n if (item === null) {\n return null;\n }\n var seriesGap = 0;\n var categoryGap = 0;\n if (opts.type == 'mix') {\n seriesGap = opts.extra.mix.column.seriesGap * opts.pix || 0;\n categoryGap = opts.extra.mix.column.categoryGap * opts.pix || 0;\n } else {\n seriesGap = opts.extra.column.seriesGap * opts.pix || 0;\n categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n }\n seriesGap = Math.min(seriesGap, eachSpacing / columnLen);\n categoryGap = Math.min(categoryGap, eachSpacing / columnLen);\n item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\n if (opts.extra.mix && opts.extra.mix.column.width && +opts.extra.mix.column.width > 0) {\n item.width = Math.min(item.width, +opts.extra.mix.column.width * opts.pix);\n }\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n }\n if (item.width <= 0) {\n item.width = 1;\n }\n item.x += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\n return item;\n });\n}\nfunction fixBarData(points, eachSpacing, columnLen, index, config, opts) {\n return points.map(function (item) {\n if (item === null) {\n return null;\n }\n var seriesGap = 0;\n var categoryGap = 0;\n seriesGap = opts.extra.bar.seriesGap * opts.pix || 0;\n categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\n seriesGap = Math.min(seriesGap, eachSpacing / columnLen);\n categoryGap = Math.min(categoryGap, eachSpacing / columnLen);\n item.width = Math.ceil((eachSpacing - 2 * categoryGap - seriesGap * (columnLen - 1)) / columnLen);\n if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\n item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\n }\n if (item.width <= 0) {\n item.width = 1;\n }\n item.y += (index + 0.5 - columnLen / 2) * (item.width + seriesGap);\n return item;\n });\n}\nfunction fixColumeMeterData(points, eachSpacing, columnLen, index, config, opts, border) {\n var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n return points.map(function (item) {\n if (item === null) {\n return null;\n }\n item.width = eachSpacing - 2 * categoryGap;\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n }\n if (index > 0) {\n item.width -= border;\n }\n return item;\n });\n}\nfunction fixColumeStackData(points, eachSpacing, columnLen, index, config, opts, series) {\n var categoryGap = opts.extra.column.categoryGap * opts.pix || 0;\n return points.map(function (item, indexn) {\n if (item === null) {\n return null;\n }\n item.width = Math.ceil(eachSpacing - 2 * categoryGap);\n if (opts.extra.column && opts.extra.column.width && +opts.extra.column.width > 0) {\n item.width = Math.min(item.width, +opts.extra.column.width * opts.pix);\n }\n if (item.width <= 0) {\n item.width = 1;\n }\n return item;\n });\n}\nfunction fixBarStackData(points, eachSpacing, columnLen, index, config, opts, series) {\n var categoryGap = opts.extra.bar.categoryGap * opts.pix || 0;\n return points.map(function (item, indexn) {\n if (item === null) {\n return null;\n }\n item.width = Math.ceil(eachSpacing - 2 * categoryGap);\n if (opts.extra.bar && opts.extra.bar.width && +opts.extra.bar.width > 0) {\n item.width = Math.min(item.width, +opts.extra.bar.width * opts.pix);\n }\n if (item.width <= 0) {\n item.width = 1;\n }\n return item;\n });\n}\nfunction getXAxisPoints(categories, opts, config) {\n var spacingValid = opts.width - opts.area[1] - opts.area[3];\n var dataCount = opts.enableScroll ? Math.min(opts.xAxis.itemCount, categories.length) : categories.length;\n if ((opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble' || opts.type == 'bar') && dataCount > 1 && opts.xAxis.boundaryGap == 'justify') {\n dataCount -= 1;\n }\n var widthRatio = 0;\n if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n widthRatio = opts.extra.mount.widthRatio - 1;\n dataCount += widthRatio;\n }\n var eachSpacing = spacingValid / dataCount;\n var xAxisPoints = [];\n var startX = opts.area[3];\n var endX = opts.width - opts.area[1];\n categories.forEach(function (item, index) {\n xAxisPoints.push(startX + widthRatio / 2 * eachSpacing + index * eachSpacing);\n });\n if (opts.xAxis.boundaryGap !== 'justify') {\n if (opts.enableScroll === true) {\n xAxisPoints.push(startX + widthRatio * eachSpacing + categories.length * eachSpacing);\n } else {\n xAxisPoints.push(endX);\n }\n }\n return {\n xAxisPoints: xAxisPoints,\n startX: startX,\n endX: endX,\n eachSpacing: eachSpacing\n };\n}\nfunction getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var cPoints = [];\n item.forEach(function (items, indexs) {\n var point = {};\n point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\n var value = items.value || items;\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n height *= process;\n point.y = opts.height - Math.round(height) - opts.area[2];\n cPoints.push(point);\n });\n points.push(cPoints);\n }\n });\n return points;\n}\nfunction getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config) {\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n var boundaryGap = 'center';\n if (opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {\n boundaryGap = opts.xAxis.boundaryGap;\n }\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n var validWidth = opts.width - opts.area[1] - opts.area[3];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.x = xAxisPoints[index];\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n if (item.constructor.toString().indexOf('Array') > -1) {\n var xranges, xminRange, xmaxRange;\n xranges = [].concat(opts.chartData.xAxisData.ranges);\n xminRange = xranges.shift();\n xmaxRange = xranges.pop();\n value = item[1];\n point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\n if (opts.type == 'bubble') {\n point.r = item[2];\n point.t = item[3];\n }\n } else {\n value = item.value;\n }\n }\n if (boundaryGap == 'center') {\n point.x += eachSpacing / 2;\n }\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n height *= process;\n point.y = opts.height - height - opts.area[2];\n points.push(point);\n }\n });\n return points;\n}\nfunction getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process) {\n var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;\n var boundaryGap = opts.xAxis.boundaryGap;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n var validWidth = opts.width - opts.area[1] - opts.area[3];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n if (lineOption.animation == 'vertical') {\n point.x = xAxisPoints[index];\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n if (item.constructor.toString().indexOf('Array') > -1) {\n var xranges, xminRange, xmaxRange;\n xranges = [].concat(opts.chartData.xAxisData.ranges);\n xminRange = xranges.shift();\n xmaxRange = xranges.pop();\n value = item[1];\n point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\n } else {\n value = item.value;\n }\n }\n if (boundaryGap == 'center') {\n point.x += eachSpacing / 2;\n }\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n height *= process;\n point.y = opts.height - height - opts.area[2];\n points.push(point);\n } else {\n point.x = xAxisPoints[0] + eachSpacing * index * process;\n var value = item;\n if (boundaryGap == 'center') {\n point.x += eachSpacing / 2;\n }\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n point.y = opts.height - height - opts.area[2];\n points.push(point);\n }\n }\n });\n return points;\n}\nfunction getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process) {\n var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n var validWidth = opts.width - opts.area[1] - opts.area[3];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.x = xAxisPoints[index];\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n if (item.constructor.toString().indexOf('Array') > -1) {\n var xranges, xminRange, xmaxRange;\n xranges = [].concat(opts.chartData.xAxisData.ranges);\n xminRange = xranges.shift();\n xmaxRange = xranges.pop();\n value = item[1];\n point.x = opts.area[3] + validWidth * (item[0] - xminRange) / (xmaxRange - xminRange);\n } else {\n value = item.value;\n }\n }\n point.x += eachSpacing / 2;\n var height = validHeight * (value * process - minRange) / (maxRange - minRange);\n point.y = opts.height - height - opts.area[2];\n points.push(point);\n }\n });\n return points;\n}\nfunction getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints) {\n var process = arguments.length > 8 && arguments[8] !== undefined ? arguments[8] : 1;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n var validWidth = opts.width - opts.area[1] - opts.area[3];\n var mountWidth = eachSpacing * mountOption.widthRatio;\n series.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.x = xAxisPoints[index];\n point.x += eachSpacing / 2;\n var value = item.data;\n var height = validHeight * (value * process - minRange) / (maxRange - minRange);\n point.y = opts.height - height - opts.area[2];\n point.value = value;\n point.width = mountWidth;\n points.push(point);\n }\n });\n return points;\n}\nfunction getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config) {\n var process = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : 1;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n var validWidth = opts.width - opts.area[1] - opts.area[3];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.y = yAxisPoints[index];\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n value = item.value;\n }\n var height = validWidth * (value - minRange) / (maxRange - minRange);\n height *= process;\n point.height = height;\n point.value = value;\n point.x = height + opts.area[3];\n points.push(point);\n }\n });\n return points;\n}\nfunction getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\n var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\n var points = [];\n var validHeight = opts.height - opts.area[0] - opts.area[2];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.x = xAxisPoints[index] + Math.round(eachSpacing / 2);\n if (seriesIndex > 0) {\n var value = 0;\n for (var i = 0; i <= seriesIndex; i++) {\n value += stackSeries[i].data[index];\n }\n var value0 = value - item;\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\n } else {\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n value = item.value;\n }\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n var height0 = 0;\n }\n var heightc = height0;\n height *= process;\n heightc *= process;\n point.y = opts.height - Math.round(height) - opts.area[2];\n point.y0 = opts.height - Math.round(heightc) - opts.area[2];\n points.push(point);\n }\n });\n return points;\n}\nfunction getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, stackSeries) {\n var process = arguments.length > 9 && arguments[9] !== undefined ? arguments[9] : 1;\n var points = [];\n var validHeight = opts.width - opts.area[1] - opts.area[3];\n data.forEach(function (item, index) {\n if (item === null) {\n points.push(null);\n } else {\n var point = {};\n point.color = item.color;\n point.y = yAxisPoints[index];\n if (seriesIndex > 0) {\n var value = 0;\n for (var i = 0; i <= seriesIndex; i++) {\n value += stackSeries[i].data[index];\n }\n var value0 = value - item;\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n var height0 = validHeight * (value0 - minRange) / (maxRange - minRange);\n } else {\n var value = item;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n value = item.value;\n }\n var height = validHeight * (value - minRange) / (maxRange - minRange);\n var height0 = 0;\n }\n var heightc = height0;\n height *= process;\n heightc *= process;\n point.height = height - heightc;\n point.x = opts.area[3] + height;\n point.x0 = opts.area[3] + heightc;\n points.push(point);\n }\n });\n return points;\n}\nfunction getYAxisTextList(series, opts, config, stack, yData) {\n var index = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : -1;\n var data;\n if (stack == 'stack') {\n data = dataCombineStack(series, opts.categories.length);\n } else {\n data = dataCombine(series);\n }\n var sorted = [];\n // remove null from data\n data = data.filter(function (item) {\n //return item !== null;\n if ((0, _typeof2.default)(item) === 'object' && item !== null) {\n if (item.constructor.toString().indexOf('Array') > -1) {\n return item !== null;\n } else {\n return item.value !== null;\n }\n } else {\n return item !== null;\n }\n });\n data.map(function (item) {\n if ((0, _typeof2.default)(item) === 'object') {\n if (item.constructor.toString().indexOf('Array') > -1) {\n if (opts.type == 'candle') {\n item.map(function (subitem) {\n sorted.push(subitem);\n });\n } else {\n sorted.push(item[1]);\n }\n } else {\n sorted.push(item.value);\n }\n } else {\n sorted.push(item);\n }\n });\n var minData = yData.min || 0;\n var maxData = yData.max || 0;\n if (sorted.length > 0) {\n minData = Math.min.apply(this, sorted);\n maxData = Math.max.apply(this, sorted);\n }\n if (minData === maxData) {\n if (maxData == 0) {\n maxData = 10;\n } else {\n minData = 0;\n }\n }\n var dataRange = getDataRange(minData, maxData);\n var minRange = yData.min === undefined || yData.min === null ? dataRange.minRange : yData.min;\n var maxRange = yData.max === undefined || yData.max === null ? dataRange.maxRange : yData.max;\n var eachRange = (maxRange - minRange) / opts.yAxis.splitNumber;\n var range = [];\n for (var i = 0; i <= opts.yAxis.splitNumber; i++) {\n range.push(minRange + eachRange * i);\n }\n return range.reverse();\n}\nfunction calYAxisData(series, opts, config, context) {\n //堆叠图重算Y轴\n var columnstyle = assign({}, {\n type: \"\"\n }, opts.extra.column);\n //如果是多Y轴,重新计算\n var YLength = opts.yAxis.data.length;\n var newSeries = new Array(YLength);\n if (YLength > 0) {\n for (var i = 0; i < YLength; i++) {\n newSeries[i] = [];\n for (var j = 0; j < series.length; j++) {\n if (series[j].index == i) {\n newSeries[i].push(series[j]);\n }\n }\n }\n var rangesArr = new Array(YLength);\n var rangesFormatArr = new Array(YLength);\n var yAxisWidthArr = new Array(YLength);\n var _loop3 = function _loop3(_i14) {\n var yData = opts.yAxis.data[_i14];\n //如果总开关不显示,强制每个Y轴为不显示\n if (opts.yAxis.disabled == true) {\n yData.disabled = true;\n }\n if (yData.type === 'categories') {\n if (!yData.formatter) {\n yData.formatter = function (val, index, opts) {\n return val + (yData.unit || '');\n };\n }\n yData.categories = yData.categories || opts.categories;\n rangesArr[_i14] = yData.categories;\n } else {\n if (!yData.formatter) {\n yData.formatter = function (val, index, opts) {\n return util.toFixed(val, yData.tofix || 0) + (yData.unit || '');\n };\n }\n rangesArr[_i14] = getYAxisTextList(newSeries[_i14], opts, config, columnstyle.type, yData, _i14);\n }\n var yAxisFontSizes = yData.fontSize * opts.pix || config.fontSize;\n yAxisWidthArr[_i14] = {\n position: yData.position ? yData.position : 'left',\n width: 0\n };\n rangesFormatArr[_i14] = rangesArr[_i14].map(function (items, index) {\n items = yData.formatter(items, index, opts);\n yAxisWidthArr[_i14].width = Math.max(yAxisWidthArr[_i14].width, measureText(items, yAxisFontSizes, context) + 5);\n return items;\n });\n var calibration = yData.calibration ? 4 * opts.pix : 0;\n yAxisWidthArr[_i14].width += calibration + 3 * opts.pix;\n if (yData.disabled === true) {\n yAxisWidthArr[_i14].width = 0;\n }\n };\n for (var _i14 = 0; _i14 < YLength; _i14++) {\n _loop3(_i14);\n }\n } else {\n var rangesArr = new Array(1);\n var rangesFormatArr = new Array(1);\n var yAxisWidthArr = new Array(1);\n if (opts.type === 'bar') {\n rangesArr[0] = opts.categories;\n if (!opts.yAxis.formatter) {\n opts.yAxis.formatter = function (val, index, opts) {\n return val + (opts.yAxis.unit || '');\n };\n }\n } else {\n if (!opts.yAxis.formatter) {\n opts.yAxis.formatter = function (val, index, opts) {\n return val.toFixed(opts.yAxis.tofix) + (opts.yAxis.unit || '');\n };\n }\n rangesArr[0] = getYAxisTextList(series, opts, config, columnstyle.type, {});\n }\n yAxisWidthArr[0] = {\n position: 'left',\n width: 0\n };\n var yAxisFontSize = opts.yAxis.fontSize * opts.pix || config.fontSize;\n rangesFormatArr[0] = rangesArr[0].map(function (item, index) {\n item = opts.yAxis.formatter(item, index, opts);\n yAxisWidthArr[0].width = Math.max(yAxisWidthArr[0].width, measureText(item, yAxisFontSize, context) + 5);\n return item;\n });\n yAxisWidthArr[0].width += 3 * opts.pix;\n if (opts.yAxis.disabled === true) {\n yAxisWidthArr[0] = {\n position: 'left',\n width: 0\n };\n opts.yAxis.data[0] = {\n disabled: true\n };\n } else {\n opts.yAxis.data[0] = {\n disabled: false,\n position: 'left',\n max: opts.yAxis.max,\n min: opts.yAxis.min,\n formatter: opts.yAxis.formatter\n };\n if (opts.type === 'bar') {\n opts.yAxis.data[0].categories = opts.categories;\n opts.yAxis.data[0].type = 'categories';\n }\n }\n }\n return {\n rangesFormat: rangesFormatArr,\n ranges: rangesArr,\n yAxisWidth: yAxisWidthArr\n };\n}\nfunction calTooltipYAxisData(point, series, opts, config, eachSpacing) {\n var ranges = [].concat(opts.chartData.yAxisData.ranges);\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n var minAxis = opts.area[0];\n var items = [];\n for (var i = 0; i < ranges.length; i++) {\n var maxVal = Math.max.apply(this, ranges[i]);\n var minVal = Math.min.apply(this, ranges[i]);\n var item = maxVal - (maxVal - minVal) * (point - minAxis) / spacingValid;\n item = opts.yAxis.data && opts.yAxis.data[i].formatter ? opts.yAxis.data[i].formatter(item, i, opts) : item.toFixed(0);\n items.push(String(item));\n }\n return items;\n}\nfunction calMarkLineData(points, opts) {\n var minRange, maxRange;\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n for (var i = 0; i < points.length; i++) {\n points[i].yAxisIndex = points[i].yAxisIndex ? points[i].yAxisIndex : 0;\n var range = [].concat(opts.chartData.yAxisData.ranges[points[i].yAxisIndex]);\n minRange = range.pop();\n maxRange = range.shift();\n var height = spacingValid * (points[i].value - minRange) / (maxRange - minRange);\n points[i].y = opts.height - Math.round(height) - opts.area[2];\n }\n return points;\n}\nfunction contextRotate(context, opts) {\n if (opts.rotateLock !== true) {\n context.translate(opts.height, 0);\n context.rotate(90 * Math.PI / 180);\n } else if (opts._rotate_ !== true) {\n context.translate(opts.height, 0);\n context.rotate(90 * Math.PI / 180);\n opts._rotate_ = true;\n }\n}\nfunction drawPointShape(points, color, shape, context, opts) {\n context.beginPath();\n if (opts.dataPointShapeType == 'hollow') {\n context.setStrokeStyle(color);\n context.setFillStyle(opts.background);\n context.setLineWidth(2 * opts.pix);\n } else {\n context.setStrokeStyle(\"#ffffff\");\n context.setFillStyle(color);\n context.setLineWidth(1 * opts.pix);\n }\n if (shape === 'diamond') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y);\n context.lineTo(item.x, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'circle') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x + 2.5 * opts.pix, item.y);\n context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\n }\n });\n } else if (shape === 'square') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x - 3.5, item.y - 3.5);\n context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\n }\n });\n } else if (shape === 'triangle') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y + 4.5);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'none') {\n return;\n }\n context.closePath();\n context.fill();\n context.stroke();\n}\nfunction drawActivePoint(points, color, shape, context, opts, option, seriesIndex) {\n if (!opts.tooltip) {\n return;\n }\n if (opts.tooltip.group.length > 0 && opts.tooltip.group.includes(seriesIndex) == false) {\n return;\n }\n var pointIndex = typeof opts.tooltip.index === 'number' ? opts.tooltip.index : opts.tooltip.index[opts.tooltip.group.indexOf(seriesIndex)];\n context.beginPath();\n if (option.activeType == 'hollow') {\n context.setStrokeStyle(color);\n context.setFillStyle(opts.background);\n context.setLineWidth(2 * opts.pix);\n } else {\n context.setStrokeStyle(\"#ffffff\");\n context.setFillStyle(color);\n context.setLineWidth(1 * opts.pix);\n }\n if (shape === 'diamond') {\n points.forEach(function (item, index) {\n if (item !== null && pointIndex == index) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y);\n context.lineTo(item.x, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'circle') {\n points.forEach(function (item, index) {\n if (item !== null && pointIndex == index) {\n context.moveTo(item.x + 2.5 * opts.pix, item.y);\n context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\n }\n });\n } else if (shape === 'square') {\n points.forEach(function (item, index) {\n if (item !== null && pointIndex == index) {\n context.moveTo(item.x - 3.5, item.y - 3.5);\n context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\n }\n });\n } else if (shape === 'triangle') {\n points.forEach(function (item, index) {\n if (item !== null && pointIndex == index) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y + 4.5);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'none') {\n return;\n }\n context.closePath();\n context.fill();\n context.stroke();\n}\nfunction drawRingTitle(opts, config, context, center) {\n var titlefontSize = opts.title.fontSize || config.titleFontSize;\n var subtitlefontSize = opts.subtitle.fontSize || config.subtitleFontSize;\n var title = opts.title.name || '';\n var subtitle = opts.subtitle.name || '';\n var titleFontColor = opts.title.color || opts.fontColor;\n var subtitleFontColor = opts.subtitle.color || opts.fontColor;\n var titleHeight = title ? titlefontSize : 0;\n var subtitleHeight = subtitle ? subtitlefontSize : 0;\n var margin = 5;\n if (subtitle) {\n var textWidth = measureText(subtitle, subtitlefontSize * opts.pix, context);\n var startX = center.x - textWidth / 2 + (opts.subtitle.offsetX || 0) * opts.pix;\n var startY = center.y + subtitlefontSize * opts.pix / 2 + (opts.subtitle.offsetY || 0) * opts.pix;\n if (title) {\n startY += (titleHeight * opts.pix + margin) / 2;\n }\n context.beginPath();\n context.setFontSize(subtitlefontSize * opts.pix);\n context.setFillStyle(subtitleFontColor);\n context.fillText(subtitle, startX, startY);\n context.closePath();\n context.stroke();\n }\n if (title) {\n var _textWidth = measureText(title, titlefontSize * opts.pix, context);\n var _startX = center.x - _textWidth / 2 + (opts.title.offsetX || 0);\n var _startY = center.y + titlefontSize * opts.pix / 2 + (opts.title.offsetY || 0) * opts.pix;\n if (subtitle) {\n _startY -= (subtitleHeight * opts.pix + margin) / 2;\n }\n context.beginPath();\n context.setFontSize(titlefontSize * opts.pix);\n context.setFillStyle(titleFontColor);\n context.fillText(title, _startX, _startY);\n context.closePath();\n context.stroke();\n }\n}\nfunction drawPointText(points, series, config, context, opts) {\n // 绘制数据文案\n var data = series.data;\n var textOffset = series.textOffset ? series.textOffset : 0;\n points.forEach(function (item, index) {\n if (item !== null) {\n context.beginPath();\n var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(series.textColor || opts.fontColor);\n var value = data[index];\n if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {\n if (data[index].constructor.toString().indexOf('Array') > -1) {\n value = data[index][1];\n } else {\n value = data[index].value;\n }\n }\n var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;\n context.setTextAlign('center');\n context.fillText(String(formatVal), item.x, item.y - 4 + textOffset * opts.pix);\n context.closePath();\n context.stroke();\n context.setTextAlign('left');\n }\n });\n}\nfunction drawColumePointText(points, series, config, context, opts) {\n // 绘制数据文案\n var data = series.data;\n var textOffset = series.textOffset ? series.textOffset : 0;\n var Position = opts.extra.column.labelPosition;\n points.forEach(function (item, index) {\n if (item !== null) {\n context.beginPath();\n var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(series.textColor || opts.fontColor);\n var value = data[index];\n if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {\n if (data[index].constructor.toString().indexOf('Array') > -1) {\n value = data[index][1];\n } else {\n value = data[index].value;\n }\n }\n var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;\n context.setTextAlign('center');\n var startY = item.y - 4 * opts.pix + textOffset * opts.pix;\n if (item.y > series.zeroPoints) {\n startY = item.y + textOffset * opts.pix + fontSize;\n }\n if (Position == 'insideTop') {\n startY = item.y + fontSize + textOffset * opts.pix;\n if (item.y > series.zeroPoints) {\n startY = item.y - textOffset * opts.pix - 4 * opts.pix;\n }\n }\n if (Position == 'center') {\n startY = item.y + textOffset * opts.pix + (opts.height - opts.area[2] - item.y + fontSize) / 2;\n if (series.zeroPoints < opts.height - opts.area[2]) {\n startY = item.y + textOffset * opts.pix + (series.zeroPoints - item.y + fontSize) / 2;\n }\n if (item.y > series.zeroPoints) {\n startY = item.y - textOffset * opts.pix - (item.y - series.zeroPoints - fontSize) / 2;\n }\n if (opts.extra.column.type == 'stack') {\n startY = item.y + textOffset * opts.pix + (item.y0 - item.y + fontSize) / 2;\n }\n }\n if (Position == 'bottom') {\n startY = opts.height - opts.area[2] + textOffset * opts.pix - 4 * opts.pix;\n if (series.zeroPoints < opts.height - opts.area[2]) {\n startY = series.zeroPoints + textOffset * opts.pix - 4 * opts.pix;\n }\n if (item.y > series.zeroPoints) {\n startY = series.zeroPoints - textOffset * opts.pix + fontSize + 2 * opts.pix;\n }\n if (opts.extra.column.type == 'stack') {\n startY = item.y0 + textOffset * opts.pix - 4 * opts.pix;\n }\n }\n context.fillText(String(formatVal), item.x, startY);\n context.closePath();\n context.stroke();\n context.setTextAlign('left');\n }\n });\n}\nfunction drawMountPointText(points, series, config, context, opts, zeroPoints) {\n // 绘制数据文案\n var data = series.data;\n var textOffset = series.textOffset ? series.textOffset : 0;\n var Position = opts.extra.mount.labelPosition;\n points.forEach(function (item, index) {\n if (item !== null) {\n context.beginPath();\n var fontSize = series[index].textSize ? series[index].textSize * opts.pix : config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(series[index].textColor || opts.fontColor);\n var value = item.value;\n var formatVal = series[index].formatter ? series[index].formatter(value, index, series, opts) : value;\n context.setTextAlign('center');\n var startY = item.y - 4 * opts.pix + textOffset * opts.pix;\n if (item.y > zeroPoints) {\n startY = item.y + textOffset * opts.pix + fontSize;\n }\n context.fillText(String(formatVal), item.x, startY);\n context.closePath();\n context.stroke();\n context.setTextAlign('left');\n }\n });\n}\nfunction drawBarPointText(points, series, config, context, opts) {\n // 绘制数据文案\n var data = series.data;\n var textOffset = series.textOffset ? series.textOffset : 0;\n points.forEach(function (item, index) {\n if (item !== null) {\n context.beginPath();\n var fontSize = series.textSize ? series.textSize * opts.pix : config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(series.textColor || opts.fontColor);\n var value = data[index];\n if ((0, _typeof2.default)(data[index]) === 'object' && data[index] !== null) {\n value = data[index].value;\n }\n var formatVal = series.formatter ? series.formatter(value, index, series, opts) : value;\n context.setTextAlign('left');\n context.fillText(String(formatVal), item.x + 4 * opts.pix, item.y + fontSize / 2 - 3);\n context.closePath();\n context.stroke();\n }\n });\n}\nfunction drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context) {\n radius -= gaugeOption.width / 2 + gaugeOption.labelOffset * opts.pix;\n radius = radius < 10 ? 10 : radius;\n var totalAngle;\n if (gaugeOption.endAngle < gaugeOption.startAngle) {\n totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;\n } else {\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;\n }\n var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n var totalNumber = gaugeOption.endNumber - gaugeOption.startNumber;\n var splitNumber = totalNumber / gaugeOption.splitLine.splitNumber;\n var nowAngle = gaugeOption.startAngle;\n var nowNumber = gaugeOption.startNumber;\n for (var i = 0; i < gaugeOption.splitLine.splitNumber + 1; i++) {\n var pos = {\n x: radius * Math.cos(nowAngle * Math.PI),\n y: radius * Math.sin(nowAngle * Math.PI)\n };\n var labelText = gaugeOption.formatter ? gaugeOption.formatter(nowNumber, i, opts) : nowNumber;\n pos.x += centerPosition.x - measureText(labelText, config.fontSize, context) / 2;\n pos.y += centerPosition.y;\n var startX = pos.x;\n var startY = pos.y;\n context.beginPath();\n context.setFontSize(config.fontSize);\n context.setFillStyle(gaugeOption.labelColor || opts.fontColor);\n context.fillText(labelText, startX, startY + config.fontSize / 2);\n context.closePath();\n context.stroke();\n nowAngle += splitAngle;\n if (nowAngle >= 2) {\n nowAngle = nowAngle % 2;\n }\n nowNumber += splitNumber;\n }\n}\nfunction drawRadarLabel(angleList, radius, centerPosition, opts, config, context) {\n var radarOption = opts.extra.radar || {};\n angleList.forEach(function (angle, index) {\n if (radarOption.labelPointShow === true && opts.categories[index] !== '') {\n var posPoint = {\n x: radius * Math.cos(angle),\n y: radius * Math.sin(angle)\n };\n var posPointAxis = convertCoordinateOrigin(posPoint.x, posPoint.y, centerPosition);\n context.setFillStyle(radarOption.labelPointColor);\n context.beginPath();\n context.arc(posPointAxis.x, posPointAxis.y, radarOption.labelPointRadius * opts.pix, 0, 2 * Math.PI, false);\n context.closePath();\n context.fill();\n }\n if (radarOption.labelShow === true) {\n var pos = {\n x: (radius + config.radarLabelTextMargin * opts.pix) * Math.cos(angle),\n y: (radius + config.radarLabelTextMargin * opts.pix) * Math.sin(angle)\n };\n var posRelativeCanvas = convertCoordinateOrigin(pos.x, pos.y, centerPosition);\n var startX = posRelativeCanvas.x;\n var startY = posRelativeCanvas.y;\n if (util.approximatelyEqual(pos.x, 0)) {\n startX -= measureText(opts.categories[index] || '', config.fontSize, context) / 2;\n } else if (pos.x < 0) {\n startX -= measureText(opts.categories[index] || '', config.fontSize, context);\n }\n context.beginPath();\n context.setFontSize(config.fontSize);\n context.setFillStyle(radarOption.labelColor || opts.fontColor);\n context.fillText(opts.categories[index] || '', startX, startY + config.fontSize / 2);\n context.closePath();\n context.stroke();\n }\n });\n}\nfunction drawPieText(series, opts, config, context, radius, center) {\n var lineRadius = config.pieChartLinePadding;\n var textObjectCollection = [];\n var lastTextObject = null;\n var seriesConvert = series.map(function (item, index) {\n var text = item.formatter ? item.formatter(item, index, series, opts) : util.toFixed(item._proportion_.toFixed(4) * 100) + '%';\n text = item.labelText ? item.labelText : text;\n var arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._proportion_ / 2);\n if (item._rose_proportion_) {\n arc = 2 * Math.PI - (item._start_ + 2 * Math.PI * item._rose_proportion_ / 2);\n }\n var color = item.color;\n var radius = item._radius_;\n return {\n arc: arc,\n text: text,\n color: color,\n radius: radius,\n textColor: item.textColor,\n textSize: item.textSize,\n labelShow: item.labelShow\n };\n });\n for (var i = 0; i < seriesConvert.length; i++) {\n var item = seriesConvert[i];\n // line end\n var orginX1 = Math.cos(item.arc) * (item.radius + lineRadius);\n var orginY1 = Math.sin(item.arc) * (item.radius + lineRadius);\n // line start\n var orginX2 = Math.cos(item.arc) * item.radius;\n var orginY2 = Math.sin(item.arc) * item.radius;\n // text start\n var orginX3 = orginX1 >= 0 ? orginX1 + config.pieChartTextPadding : orginX1 - config.pieChartTextPadding;\n var orginY3 = orginY1;\n var textWidth = measureText(item.text, item.textSize * opts.pix || config.fontSize, context);\n var startY = orginY3;\n if (lastTextObject && util.isSameXCoordinateArea(lastTextObject.start, {\n x: orginX3\n })) {\n if (orginX3 > 0) {\n startY = Math.min(orginY3, lastTextObject.start.y);\n } else if (orginX1 < 0) {\n startY = Math.max(orginY3, lastTextObject.start.y);\n } else {\n if (orginY3 > 0) {\n startY = Math.max(orginY3, lastTextObject.start.y);\n } else {\n startY = Math.min(orginY3, lastTextObject.start.y);\n }\n }\n }\n if (orginX3 < 0) {\n orginX3 -= textWidth;\n }\n var textObject = {\n lineStart: {\n x: orginX2,\n y: orginY2\n },\n lineEnd: {\n x: orginX1,\n y: orginY1\n },\n start: {\n x: orginX3,\n y: startY\n },\n width: textWidth,\n height: config.fontSize,\n text: item.text,\n color: item.color,\n textColor: item.textColor,\n textSize: item.textSize\n };\n lastTextObject = avoidCollision(textObject, lastTextObject);\n textObjectCollection.push(lastTextObject);\n }\n for (var _i15 = 0; _i15 < textObjectCollection.length; _i15++) {\n if (seriesConvert[_i15].labelShow === false) {\n continue;\n }\n var _item6 = textObjectCollection[_i15];\n var lineStartPoistion = convertCoordinateOrigin(_item6.lineStart.x, _item6.lineStart.y, center);\n var lineEndPoistion = convertCoordinateOrigin(_item6.lineEnd.x, _item6.lineEnd.y, center);\n var textPosition = convertCoordinateOrigin(_item6.start.x, _item6.start.y, center);\n context.setLineWidth(1 * opts.pix);\n context.setFontSize(_item6.textSize * opts.pix || config.fontSize);\n context.beginPath();\n context.setStrokeStyle(_item6.color);\n context.setFillStyle(_item6.color);\n context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\n var curveStartX = _item6.start.x < 0 ? textPosition.x + _item6.width : textPosition.x;\n var textStartX = _item6.start.x < 0 ? textPosition.x - 5 : textPosition.x + 5;\n context.quadraticCurveTo(lineEndPoistion.x, lineEndPoistion.y, curveStartX, textPosition.y);\n context.moveTo(lineStartPoistion.x, lineStartPoistion.y);\n context.stroke();\n context.closePath();\n context.beginPath();\n context.moveTo(textPosition.x + _item6.width, textPosition.y);\n context.arc(curveStartX, textPosition.y, 2 * opts.pix, 0, 2 * Math.PI);\n context.closePath();\n context.fill();\n context.beginPath();\n context.setFontSize(_item6.textSize * opts.pix || config.fontSize);\n context.setFillStyle(_item6.textColor || opts.fontColor);\n context.fillText(_item6.text, textStartX, textPosition.y + 3);\n context.closePath();\n context.stroke();\n context.closePath();\n }\n}\nfunction drawToolTipSplitLine(offsetX, opts, config, context) {\n var toolTipOption = opts.extra.tooltip || {};\n toolTipOption.gridType = toolTipOption.gridType == undefined ? 'solid' : toolTipOption.gridType;\n toolTipOption.dashLength = toolTipOption.dashLength == undefined ? 4 : toolTipOption.dashLength;\n var startY = opts.area[0];\n var endY = opts.height - opts.area[2];\n if (toolTipOption.gridType == 'dash') {\n context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\n }\n context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\n context.setLineWidth(1 * opts.pix);\n context.beginPath();\n context.moveTo(offsetX, startY);\n context.lineTo(offsetX, endY);\n context.stroke();\n context.setLineDash([]);\n if (toolTipOption.xAxisLabel) {\n var labelText = opts.categories[opts.tooltip.index];\n context.setFontSize(config.fontSize);\n var textWidth = measureText(labelText, config.fontSize, context);\n var textX = offsetX - 0.5 * textWidth;\n var textY = endY + 2 * opts.pix;\n context.beginPath();\n context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\n context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\n context.setLineWidth(1 * opts.pix);\n context.rect(textX - toolTipOption.boxPadding * opts.pix, textY, textWidth + 2 * toolTipOption.boxPadding * opts.pix, config.fontSize + 2 * toolTipOption.boxPadding * opts.pix);\n context.closePath();\n context.stroke();\n context.fill();\n context.beginPath();\n context.setFontSize(config.fontSize);\n context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);\n context.fillText(String(labelText), textX, textY + toolTipOption.boxPadding * opts.pix + config.fontSize);\n context.closePath();\n context.stroke();\n }\n}\nfunction drawMarkLine(opts, config, context) {\n var markLineOption = assign({}, {\n type: 'solid',\n dashLength: 4,\n data: []\n }, opts.extra.markLine);\n var startX = opts.area[3];\n var endX = opts.width - opts.area[1];\n var points = calMarkLineData(markLineOption.data, opts);\n for (var i = 0; i < points.length; i++) {\n var item = assign({}, {\n lineColor: '#DE4A42',\n showLabel: false,\n labelFontSize: 13,\n labelPadding: 6,\n labelFontColor: '#666666',\n labelBgColor: '#DFE8FF',\n labelBgOpacity: 0.8,\n labelAlign: 'left',\n labelOffsetX: 0,\n labelOffsetY: 0\n }, points[i]);\n if (markLineOption.type == 'dash') {\n context.setLineDash([markLineOption.dashLength, markLineOption.dashLength]);\n }\n context.setStrokeStyle(item.lineColor);\n context.setLineWidth(1 * opts.pix);\n context.beginPath();\n context.moveTo(startX, item.y);\n context.lineTo(endX, item.y);\n context.stroke();\n context.setLineDash([]);\n if (item.showLabel) {\n var fontSize = item.labelFontSize * opts.pix;\n var labelText = item.labelText ? item.labelText : item.value;\n context.setFontSize(fontSize);\n var textWidth = measureText(labelText, fontSize, context);\n var bgWidth = textWidth + item.labelPadding * opts.pix * 2;\n var bgStartX = item.labelAlign == 'left' ? opts.area[3] - bgWidth : opts.width - opts.area[1];\n bgStartX += item.labelOffsetX;\n var bgStartY = item.y - 0.5 * fontSize - item.labelPadding * opts.pix;\n bgStartY += item.labelOffsetY;\n var textX = bgStartX + item.labelPadding * opts.pix;\n var textY = item.y;\n context.setFillStyle(hexToRgb(item.labelBgColor, item.labelBgOpacity));\n context.setStrokeStyle(item.labelBgColor);\n context.setLineWidth(1 * opts.pix);\n context.beginPath();\n context.rect(bgStartX, bgStartY, bgWidth, fontSize + 2 * item.labelPadding * opts.pix);\n context.closePath();\n context.stroke();\n context.fill();\n context.setFontSize(fontSize);\n context.setTextAlign('left');\n context.setFillStyle(item.labelFontColor);\n context.fillText(String(labelText), textX, bgStartY + fontSize + item.labelPadding * opts.pix / 2);\n context.stroke();\n context.setTextAlign('left');\n }\n }\n}\nfunction drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints) {\n var toolTipOption = assign({}, {\n gridType: 'solid',\n dashLength: 4\n }, opts.extra.tooltip);\n var startX = opts.area[3];\n var endX = opts.width - opts.area[1];\n if (toolTipOption.gridType == 'dash') {\n context.setLineDash([toolTipOption.dashLength, toolTipOption.dashLength]);\n }\n context.setStrokeStyle(toolTipOption.gridColor || '#cccccc');\n context.setLineWidth(1 * opts.pix);\n context.beginPath();\n context.moveTo(startX, opts.tooltip.offset.y);\n context.lineTo(endX, opts.tooltip.offset.y);\n context.stroke();\n context.setLineDash([]);\n if (toolTipOption.yAxisLabel) {\n var boxPadding = toolTipOption.boxPadding * opts.pix;\n var labelText = calTooltipYAxisData(opts.tooltip.offset.y, opts.series, opts, config, eachSpacing);\n var widthArr = opts.chartData.yAxisData.yAxisWidth;\n var tStartLeft = opts.area[3];\n var tStartRight = opts.width - opts.area[1];\n for (var i = 0; i < labelText.length; i++) {\n context.setFontSize(toolTipOption.fontSize * opts.pix);\n var textWidth = measureText(labelText[i], toolTipOption.fontSize * opts.pix, context);\n var bgStartX = void 0,\n bgEndX = void 0,\n bgWidth = void 0;\n if (widthArr[i].position == 'left') {\n bgStartX = tStartLeft - (textWidth + boxPadding * 2) - 2 * opts.pix;\n bgEndX = Math.max(bgStartX, bgStartX + textWidth + boxPadding * 2);\n } else {\n bgStartX = tStartRight + 2 * opts.pix;\n bgEndX = Math.max(bgStartX + widthArr[i].width, bgStartX + textWidth + boxPadding * 2);\n }\n bgWidth = bgEndX - bgStartX;\n var textX = bgStartX + (bgWidth - textWidth) / 2;\n var textY = opts.tooltip.offset.y;\n context.beginPath();\n context.setFillStyle(hexToRgb(toolTipOption.labelBgColor || config.toolTipBackground, toolTipOption.labelBgOpacity || config.toolTipOpacity));\n context.setStrokeStyle(toolTipOption.labelBgColor || config.toolTipBackground);\n context.setLineWidth(1 * opts.pix);\n context.rect(bgStartX, textY - 0.5 * config.fontSize - boxPadding, bgWidth, config.fontSize + 2 * boxPadding);\n context.closePath();\n context.stroke();\n context.fill();\n context.beginPath();\n context.setFontSize(config.fontSize);\n context.setFillStyle(toolTipOption.labelFontColor || opts.fontColor);\n context.fillText(labelText[i], textX, textY + 0.5 * config.fontSize);\n context.closePath();\n context.stroke();\n if (widthArr[i].position == 'left') {\n tStartLeft -= widthArr[i].width + opts.yAxis.padding * opts.pix;\n } else {\n tStartRight += widthArr[i].width + opts.yAxis.padding * opts.pix;\n }\n }\n }\n}\nfunction drawToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\n var toolTipOption = assign({}, {\n activeBgColor: '#000000',\n activeBgOpacity: 0.08,\n activeWidth: eachSpacing\n }, opts.extra.column);\n toolTipOption.activeWidth = toolTipOption.activeWidth > eachSpacing ? eachSpacing : toolTipOption.activeWidth;\n var startY = opts.area[0];\n var endY = opts.height - opts.area[2];\n context.beginPath();\n context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\n context.rect(offsetX - toolTipOption.activeWidth / 2, startY, toolTipOption.activeWidth, endY - startY);\n context.closePath();\n context.fill();\n context.setFillStyle(\"#FFFFFF\");\n}\nfunction drawBarToolTipSplitArea(offsetX, opts, config, context, eachSpacing) {\n var toolTipOption = assign({}, {\n activeBgColor: '#000000',\n activeBgOpacity: 0.08\n }, opts.extra.bar);\n var startX = opts.area[3];\n var endX = opts.width - opts.area[1];\n context.beginPath();\n context.setFillStyle(hexToRgb(toolTipOption.activeBgColor, toolTipOption.activeBgOpacity));\n context.rect(startX, offsetX - eachSpacing / 2, endX - startX, eachSpacing);\n context.closePath();\n context.fill();\n context.setFillStyle(\"#FFFFFF\");\n}\nfunction drawToolTip(textList, offset, opts, config, context, eachSpacing, xAxisPoints) {\n var toolTipOption = assign({}, {\n showBox: true,\n showArrow: true,\n showCategory: false,\n bgColor: '#000000',\n bgOpacity: 0.7,\n borderColor: '#000000',\n borderWidth: 0,\n borderRadius: 0,\n borderOpacity: 0.7,\n boxPadding: 3,\n fontColor: '#FFFFFF',\n fontSize: 13,\n lineHeight: 20,\n legendShow: true,\n legendShape: 'auto',\n splitLine: true\n }, opts.extra.tooltip);\n if (toolTipOption.showCategory == true && opts.categories) {\n textList.unshift({\n text: opts.categories[opts.tooltip.index],\n color: null\n });\n }\n var fontSize = toolTipOption.fontSize * opts.pix;\n var lineHeight = toolTipOption.lineHeight * opts.pix;\n var boxPadding = toolTipOption.boxPadding * opts.pix;\n var legendWidth = fontSize;\n var legendMarginRight = 5 * opts.pix;\n if (toolTipOption.legendShow == false) {\n legendWidth = 0;\n legendMarginRight = 0;\n }\n var arrowWidth = toolTipOption.showArrow ? 8 * opts.pix : 0;\n var isOverRightBorder = false;\n if (opts.type == 'line' || opts.type == 'mount' || opts.type == 'area' || opts.type == 'candle' || opts.type == 'mix') {\n if (toolTipOption.splitLine == true) {\n drawToolTipSplitLine(opts.tooltip.offset.x, opts, config, context);\n }\n }\n offset = assign({\n x: 0,\n y: 0\n }, offset);\n offset.y -= 8 * opts.pix;\n var textWidth = textList.map(function (item) {\n return measureText(item.text, fontSize, context);\n });\n var toolTipWidth = legendWidth + legendMarginRight + 4 * boxPadding + Math.max.apply(null, textWidth);\n var toolTipHeight = 2 * boxPadding + textList.length * lineHeight;\n if (toolTipOption.showBox == false) {\n return;\n }\n // if beyond the right border\n if (offset.x - Math.abs(opts._scrollDistance_ || 0) + arrowWidth + toolTipWidth > opts.width) {\n isOverRightBorder = true;\n }\n if (toolTipHeight + offset.y > opts.height) {\n offset.y = opts.height - toolTipHeight;\n }\n // draw background rect\n context.beginPath();\n context.setFillStyle(hexToRgb(toolTipOption.bgColor, toolTipOption.bgOpacity));\n context.setLineWidth(toolTipOption.borderWidth * opts.pix);\n context.setStrokeStyle(hexToRgb(toolTipOption.borderColor, toolTipOption.borderOpacity));\n var radius = toolTipOption.borderRadius;\n if (isOverRightBorder) {\n // 增加左侧仍然超出的判断\n if (toolTipWidth + arrowWidth > opts.width) {\n offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width);\n }\n if (toolTipWidth > offset.x) {\n offset.x = opts.width + Math.abs(opts._scrollDistance_ || 0) + arrowWidth + (toolTipWidth - opts.width);\n }\n if (toolTipOption.showArrow) {\n context.moveTo(offset.x, offset.y + 10 * opts.pix);\n context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\n }\n context.arc(offset.x - arrowWidth - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);\n context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);\n context.arc(offset.x - arrowWidth - Math.round(toolTipWidth) + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\n context.arc(offset.x - arrowWidth - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);\n if (toolTipOption.showArrow) {\n context.lineTo(offset.x - arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\n context.lineTo(offset.x, offset.y + 10 * opts.pix);\n }\n } else {\n if (toolTipOption.showArrow) {\n context.moveTo(offset.x, offset.y + 10 * opts.pix);\n context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix - 5 * opts.pix);\n }\n context.arc(offset.x + arrowWidth + radius, offset.y + radius, radius, -Math.PI, -Math.PI / 2, false);\n context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + radius, radius, -Math.PI / 2, 0, false);\n context.arc(offset.x + arrowWidth + Math.round(toolTipWidth) - radius, offset.y + toolTipHeight - radius, radius, 0, Math.PI / 2, false);\n context.arc(offset.x + arrowWidth + radius, offset.y + toolTipHeight - radius, radius, Math.PI / 2, Math.PI, false);\n if (toolTipOption.showArrow) {\n context.lineTo(offset.x + arrowWidth, offset.y + 10 * opts.pix + 5 * opts.pix);\n context.lineTo(offset.x, offset.y + 10 * opts.pix);\n }\n }\n context.closePath();\n context.fill();\n if (toolTipOption.borderWidth > 0) {\n context.stroke();\n }\n // draw legend\n if (toolTipOption.legendShow) {\n textList.forEach(function (item, index) {\n if (item.color !== null) {\n context.beginPath();\n context.setFillStyle(item.color);\n var startX = offset.x + arrowWidth + 2 * boxPadding;\n var startY = offset.y + (lineHeight - fontSize) / 2 + lineHeight * index + boxPadding + 1;\n if (isOverRightBorder) {\n startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding;\n }\n switch (item.legendShape) {\n case 'line':\n context.moveTo(startX, startY + 0.5 * legendWidth - 2 * opts.pix);\n context.fillRect(startX, startY + 0.5 * legendWidth - 2 * opts.pix, legendWidth, 4 * opts.pix);\n break;\n case 'triangle':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);\n break;\n case 'diamond':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * legendWidth);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth + 5 * opts.pix);\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * legendWidth);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);\n break;\n case 'circle':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth);\n context.arc(startX + 7.5 * opts.pix, startY + 0.5 * legendWidth, 5 * opts.pix, 0, 2 * Math.PI);\n break;\n case 'rect':\n context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix);\n context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n break;\n case 'square':\n context.moveTo(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix);\n context.fillRect(startX + 2 * opts.pix, startY + 0.5 * legendWidth - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);\n break;\n default:\n context.moveTo(startX, startY + 0.5 * legendWidth - 5 * opts.pix);\n context.fillRect(startX, startY + 0.5 * legendWidth - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n }\n context.closePath();\n context.fill();\n }\n });\n }\n\n // draw text list\n textList.forEach(function (item, index) {\n var startX = offset.x + arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight;\n if (isOverRightBorder) {\n startX = offset.x - toolTipWidth - arrowWidth + 2 * boxPadding + legendWidth + legendMarginRight;\n }\n var startY = offset.y + lineHeight * index + (lineHeight - fontSize) / 2 - 1 + boxPadding + fontSize;\n context.beginPath();\n context.setFontSize(fontSize);\n context.setTextBaseline('normal');\n context.setFillStyle(toolTipOption.fontColor);\n context.fillText(item.text, startX, startY);\n context.closePath();\n context.stroke();\n });\n}\nfunction drawColumnDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var columnOption = assign({}, {\n type: 'group',\n width: eachSpacing / 2,\n meterBorder: 4,\n meterFillColor: '#FFFFFF',\n barBorderCircle: false,\n barBorderRadius: [],\n seriesGap: 2,\n linearType: 'none',\n linearOpacity: 1,\n customColor: [],\n colorStop: 0,\n labelPosition: 'outside'\n }, opts.extra.column);\n var calPoints = [];\n context.save();\n var leftNum = -2;\n var rightNum = xAxisPoints.length + 2;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n rightNum = leftNum + opts.xAxis.itemCount + 4;\n }\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n drawToolTipSplitArea(opts.tooltip.offset.x, opts, config, context, eachSpacing);\n }\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n\n // 计算0轴坐标\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n var zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange);\n var zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2];\n eachSeries.zeroPoints = zeroPoints;\n var data = eachSeries.data;\n switch (columnOption.type) {\n case 'group':\n var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, zeroPoints, process);\n var tooltipPoints = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n calPoints.push(tooltipPoints);\n points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\n for (var i = 0; i < points.length; i++) {\n var item = points[i];\n //fix issues/I27B1N yyoinge & Joeshu\n if (item !== null && i > leftNum && i < rightNum) {\n var startX = item.x - item.width / 2;\n var height = opts.height - item.y - opts.area[2];\n context.beginPath();\n var fillColor = item.color || eachSeries.color;\n var strokeColor = item.color || eachSeries.color;\n if (columnOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints);\n //透明渐变\n if (columnOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n // 圆角边框\n if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n var left = startX;\n var top = item.y > zeroPoints ? zeroPoints : item.y;\n var width = item.width;\n var _height = Math.abs(zeroPoints - item.y);\n if (columnOption.barBorderCircle) {\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n }\n if (item.y > zeroPoints) {\n columnOption.barBorderRadius = [0, 0, width / 2, width / 2];\n }\n var _columnOption$barBord = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n r0 = _columnOption$barBord[0],\n r1 = _columnOption$barBord[1],\n r2 = _columnOption$barBord[2],\n r3 = _columnOption$barBord[3];\n var minRadius = Math.min(width / 2, _height / 2);\n r0 = r0 > minRadius ? minRadius : r0;\n r1 = r1 > minRadius ? minRadius : r1;\n r2 = r2 > minRadius ? minRadius : r2;\n r3 = r3 > minRadius ? minRadius : r3;\n r0 = r0 < 0 ? 0 : r0;\n r1 = r1 < 0 ? 0 : r1;\n r2 = r2 < 0 ? 0 : r2;\n r3 = r3 < 0 ? 0 : r3;\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n context.arc(left + width - r2, top + _height - r2, r2, 0, Math.PI / 2);\n context.arc(left + r3, top + _height - r3, r3, Math.PI / 2, Math.PI);\n } else {\n context.moveTo(startX, item.y);\n context.lineTo(startX + item.width, item.y);\n context.lineTo(startX + item.width, zeroPoints);\n context.lineTo(startX, zeroPoints);\n context.lineTo(startX, item.y);\n context.setLineWidth(1);\n context.setStrokeStyle(strokeColor);\n }\n context.setFillStyle(fillColor);\n context.closePath();\n //context.stroke();\n context.fill();\n }\n }\n ;\n break;\n case 'stack':\n // 绘制堆叠数据图\n var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n calPoints.push(points);\n points = fixColumeStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\n for (var _i16 = 0; _i16 < points.length; _i16++) {\n var _item7 = points[_i16];\n if (_item7 !== null && _i16 > leftNum && _i16 < rightNum) {\n context.beginPath();\n var fillColor = _item7.color || eachSeries.color;\n var startX = _item7.x - _item7.width / 2 + 1;\n var height = opts.height - _item7.y - opts.area[2];\n var height0 = opts.height - _item7.y0 - opts.area[2];\n if (seriesIndex > 0) {\n height -= height0;\n }\n context.setFillStyle(fillColor);\n context.moveTo(startX, _item7.y);\n context.fillRect(startX, _item7.y, _item7.width, height);\n context.closePath();\n context.fill();\n }\n }\n ;\n break;\n case 'meter':\n // 绘制温度计数据图\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n calPoints.push(points);\n points = fixColumeMeterData(points, eachSpacing, series.length, seriesIndex, config, opts, columnOption.meterBorder);\n for (var _i17 = 0; _i17 < points.length; _i17++) {\n var _item8 = points[_i17];\n if (_item8 !== null && _i17 > leftNum && _i17 < rightNum) {\n //画背景颜色\n context.beginPath();\n if (seriesIndex == 0 && columnOption.meterBorder > 0) {\n context.setStrokeStyle(eachSeries.color);\n context.setLineWidth(columnOption.meterBorder * opts.pix);\n }\n if (seriesIndex == 0) {\n context.setFillStyle(columnOption.meterFillColor);\n } else {\n context.setFillStyle(_item8.color || eachSeries.color);\n }\n var startX = _item8.x - _item8.width / 2;\n var height = opts.height - _item8.y - opts.area[2];\n if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n var _left = startX;\n var _top = _item8.y;\n var _width = _item8.width;\n var _height2 = zeroPoints - _item8.y;\n if (columnOption.barBorderCircle) {\n columnOption.barBorderRadius = [_width / 2, _width / 2, 0, 0];\n }\n var _columnOption$barBord2 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n _r = _columnOption$barBord2[0],\n _r2 = _columnOption$barBord2[1],\n _r3 = _columnOption$barBord2[2],\n _r4 = _columnOption$barBord2[3];\n var _minRadius = Math.min(_width / 2, _height2 / 2);\n _r = _r > _minRadius ? _minRadius : _r;\n _r2 = _r2 > _minRadius ? _minRadius : _r2;\n _r3 = _r3 > _minRadius ? _minRadius : _r3;\n _r4 = _r4 > _minRadius ? _minRadius : _r4;\n _r = _r < 0 ? 0 : _r;\n _r2 = _r2 < 0 ? 0 : _r2;\n _r3 = _r3 < 0 ? 0 : _r3;\n _r4 = _r4 < 0 ? 0 : _r4;\n context.arc(_left + _r, _top + _r, _r, -Math.PI, -Math.PI / 2);\n context.arc(_left + _width - _r2, _top + _r2, _r2, -Math.PI / 2, 0);\n context.arc(_left + _width - _r3, _top + _height2 - _r3, _r3, 0, Math.PI / 2);\n context.arc(_left + _r4, _top + _height2 - _r4, _r4, Math.PI / 2, Math.PI);\n context.fill();\n } else {\n context.moveTo(startX, _item8.y);\n context.lineTo(startX + _item8.width, _item8.y);\n context.lineTo(startX + _item8.width, zeroPoints);\n context.lineTo(startX, zeroPoints);\n context.lineTo(startX, _item8.y);\n context.fill();\n }\n if (seriesIndex == 0 && columnOption.meterBorder > 0) {\n context.closePath();\n context.stroke();\n }\n }\n }\n break;\n }\n });\n if (opts.dataLabel !== false && process === 1) {\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n switch (columnOption.type) {\n case 'group':\n var points = getColumnDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n points = fixColumeData(points, eachSpacing, series.length, seriesIndex, config, opts);\n drawColumePointText(points, eachSeries, config, context, opts);\n break;\n case 'stack':\n var points = getStackDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n drawColumePointText(points, eachSeries, config, context, opts);\n break;\n case 'meter':\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n drawColumePointText(points, eachSeries, config, context, opts);\n break;\n }\n });\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawMountDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var mountOption = assign({}, {\n type: 'mount',\n widthRatio: 1,\n borderWidth: 1,\n barBorderCircle: false,\n barBorderRadius: [],\n linearType: 'none',\n linearOpacity: 1,\n customColor: [],\n colorStop: 0\n }, opts.extra.mount);\n mountOption.widthRatio = mountOption.widthRatio <= 0 ? 0 : mountOption.widthRatio;\n mountOption.widthRatio = mountOption.widthRatio >= 2 ? 2 : mountOption.widthRatio;\n var calPoints = [];\n context.save();\n var leftNum = -2;\n var rightNum = xAxisPoints.length + 2;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n rightNum = leftNum + opts.xAxis.itemCount + 4;\n }\n mountOption.customColor = fillCustomColor(mountOption.linearType, mountOption.customColor, series, config);\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[0]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n\n // 计算0轴坐标\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n var zeroHeight = spacingValid * (0 - minRange) / (maxRange - minRange);\n var zeroPoints = opts.height - Math.round(zeroHeight) - opts.area[2];\n var points = getMountDataPoints(series, minRange, maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process);\n switch (mountOption.type) {\n case 'bar':\n for (var i = 0; i < points.length; i++) {\n var item = points[i];\n if (item !== null && i > leftNum && i < rightNum) {\n var startX = item.x - eachSpacing * mountOption.widthRatio / 2;\n var height = opts.height - item.y - opts.area[2];\n context.beginPath();\n var fillColor = item.color || series[i].color;\n var strokeColor = item.color || series[i].color;\n if (mountOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, item.y, startX, zeroPoints);\n //透明渐变\n if (mountOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[i].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n // 圆角边框\n if (mountOption.barBorderRadius && mountOption.barBorderRadius.length === 4 || mountOption.barBorderCircle === true) {\n var left = startX;\n var top = item.y > zeroPoints ? zeroPoints : item.y;\n var width = item.width;\n var _height3 = Math.abs(zeroPoints - item.y);\n if (mountOption.barBorderCircle) {\n mountOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n }\n if (item.y > zeroPoints) {\n mountOption.barBorderRadius = [0, 0, width / 2, width / 2];\n }\n var _mountOption$barBorde = (0, _slicedToArray2.default)(mountOption.barBorderRadius, 4),\n r0 = _mountOption$barBorde[0],\n r1 = _mountOption$barBorde[1],\n r2 = _mountOption$barBorde[2],\n r3 = _mountOption$barBorde[3];\n var minRadius = Math.min(width / 2, _height3 / 2);\n r0 = r0 > minRadius ? minRadius : r0;\n r1 = r1 > minRadius ? minRadius : r1;\n r2 = r2 > minRadius ? minRadius : r2;\n r3 = r3 > minRadius ? minRadius : r3;\n r0 = r0 < 0 ? 0 : r0;\n r1 = r1 < 0 ? 0 : r1;\n r2 = r2 < 0 ? 0 : r2;\n r3 = r3 < 0 ? 0 : r3;\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n context.arc(left + width - r2, top + _height3 - r2, r2, 0, Math.PI / 2);\n context.arc(left + r3, top + _height3 - r3, r3, Math.PI / 2, Math.PI);\n } else {\n context.moveTo(startX, item.y);\n context.lineTo(startX + item.width, item.y);\n context.lineTo(startX + item.width, zeroPoints);\n context.lineTo(startX, zeroPoints);\n context.lineTo(startX, item.y);\n }\n context.setStrokeStyle(strokeColor);\n context.setFillStyle(fillColor);\n if (mountOption.borderWidth > 0) {\n context.setLineWidth(mountOption.borderWidth * opts.pix);\n context.closePath();\n context.stroke();\n }\n context.fill();\n }\n }\n ;\n break;\n case 'triangle':\n for (var _i18 = 0; _i18 < points.length; _i18++) {\n var _item9 = points[_i18];\n if (_item9 !== null && _i18 > leftNum && _i18 < rightNum) {\n var startX = _item9.x - eachSpacing * mountOption.widthRatio / 2;\n var height = opts.height - _item9.y - opts.area[2];\n context.beginPath();\n var fillColor = _item9.color || series[_i18].color;\n var strokeColor = _item9.color || series[_i18].color;\n if (mountOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, _item9.y, startX, zeroPoints);\n //透明渐变\n if (mountOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i18].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n context.moveTo(startX, zeroPoints);\n context.lineTo(_item9.x, _item9.y);\n context.lineTo(startX + _item9.width, zeroPoints);\n context.setStrokeStyle(strokeColor);\n context.setFillStyle(fillColor);\n if (mountOption.borderWidth > 0) {\n context.setLineWidth(mountOption.borderWidth * opts.pix);\n context.stroke();\n }\n context.fill();\n }\n }\n ;\n break;\n case 'mount':\n for (var _i19 = 0; _i19 < points.length; _i19++) {\n var _item10 = points[_i19];\n if (_item10 !== null && _i19 > leftNum && _i19 < rightNum) {\n var startX = _item10.x - eachSpacing * mountOption.widthRatio / 2;\n var height = opts.height - _item10.y - opts.area[2];\n context.beginPath();\n var fillColor = _item10.color || series[_i19].color;\n var strokeColor = _item10.color || series[_i19].color;\n if (mountOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, _item10.y, startX, zeroPoints);\n //透明渐变\n if (mountOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i19].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n context.moveTo(startX, zeroPoints);\n context.bezierCurveTo(_item10.x - _item10.width / 4, zeroPoints, _item10.x - _item10.width / 4, _item10.y, _item10.x, _item10.y);\n context.bezierCurveTo(_item10.x + _item10.width / 4, _item10.y, _item10.x + _item10.width / 4, zeroPoints, startX + _item10.width, zeroPoints);\n context.setStrokeStyle(strokeColor);\n context.setFillStyle(fillColor);\n if (mountOption.borderWidth > 0) {\n context.setLineWidth(mountOption.borderWidth * opts.pix);\n context.stroke();\n }\n context.fill();\n }\n }\n ;\n break;\n case 'sharp':\n for (var _i20 = 0; _i20 < points.length; _i20++) {\n var _item11 = points[_i20];\n if (_item11 !== null && _i20 > leftNum && _i20 < rightNum) {\n var startX = _item11.x - eachSpacing * mountOption.widthRatio / 2;\n var height = opts.height - _item11.y - opts.area[2];\n context.beginPath();\n var fillColor = _item11.color || series[_i20].color;\n var strokeColor = _item11.color || series[_i20].color;\n if (mountOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, _item11.y, startX, zeroPoints);\n //透明渐变\n if (mountOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(mountOption.colorStop, hexToRgb(mountOption.customColor[series[_i20].linearIndex], mountOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n context.moveTo(startX, zeroPoints);\n context.quadraticCurveTo(_item11.x - 0, zeroPoints - height / 4, _item11.x, _item11.y);\n context.quadraticCurveTo(_item11.x + 0, zeroPoints - height / 4, startX + _item11.width, zeroPoints);\n context.setStrokeStyle(strokeColor);\n context.setFillStyle(fillColor);\n if (mountOption.borderWidth > 0) {\n context.setLineWidth(mountOption.borderWidth * opts.pix);\n context.stroke();\n }\n context.fill();\n }\n }\n ;\n break;\n }\n if (opts.dataLabel !== false && process === 1) {\n var _ranges, _minRange, _maxRange;\n _ranges = [].concat(opts.chartData.yAxisData.ranges[0]);\n _minRange = _ranges.pop();\n _maxRange = _ranges.shift();\n var points = getMountDataPoints(series, _minRange, _maxRange, xAxisPoints, eachSpacing, opts, mountOption, zeroPoints, process);\n drawMountPointText(points, series, config, context, opts, zeroPoints);\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: points,\n eachSpacing: eachSpacing\n };\n}\nfunction drawBarDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var yAxisPoints = [];\n var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / opts.categories.length;\n for (var i = 0; i < opts.categories.length; i++) {\n yAxisPoints.push(opts.area[0] + eachSpacing / 2 + eachSpacing * i);\n }\n var columnOption = assign({}, {\n type: 'group',\n width: eachSpacing / 2,\n meterBorder: 4,\n meterFillColor: '#FFFFFF',\n barBorderCircle: false,\n barBorderRadius: [],\n seriesGap: 2,\n linearType: 'none',\n linearOpacity: 1,\n customColor: [],\n colorStop: 0\n }, opts.extra.bar);\n var calPoints = [];\n context.save();\n var leftNum = -2;\n var rightNum = yAxisPoints.length + 2;\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n drawBarToolTipSplitArea(opts.tooltip.offset.y, opts, config, context, eachSpacing);\n }\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.xAxisData.ranges);\n maxRange = ranges.pop();\n minRange = ranges.shift();\n var data = eachSeries.data;\n switch (columnOption.type) {\n case 'group':\n var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\n var tooltipPoints = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n calPoints.push(tooltipPoints);\n points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\n for (var _i21 = 0; _i21 < points.length; _i21++) {\n var item = points[_i21];\n //fix issues/I27B1N yyoinge & Joeshu\n if (item !== null && _i21 > leftNum && _i21 < rightNum) {\n //var startX = item.x - item.width / 2;\n var startX = opts.area[3];\n var startY = item.y - item.width / 2;\n var height = item.height;\n context.beginPath();\n var fillColor = item.color || eachSeries.color;\n var strokeColor = item.color || eachSeries.color;\n if (columnOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, item.y, item.x, item.y);\n //透明渐变\n if (columnOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n // 圆角边框\n if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle === true) {\n var left = startX;\n var width = item.width;\n var top = item.y - item.width / 2;\n var _height4 = item.height;\n if (columnOption.barBorderCircle) {\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n }\n var _columnOption$barBord3 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n r0 = _columnOption$barBord3[0],\n r1 = _columnOption$barBord3[1],\n r2 = _columnOption$barBord3[2],\n r3 = _columnOption$barBord3[3];\n var minRadius = Math.min(width / 2, _height4 / 2);\n r0 = r0 > minRadius ? minRadius : r0;\n r1 = r1 > minRadius ? minRadius : r1;\n r2 = r2 > minRadius ? minRadius : r2;\n r3 = r3 > minRadius ? minRadius : r3;\n r0 = r0 < 0 ? 0 : r0;\n r1 = r1 < 0 ? 0 : r1;\n r2 = r2 < 0 ? 0 : r2;\n r3 = r3 < 0 ? 0 : r3;\n context.arc(left + r3, top + r3, r3, -Math.PI, -Math.PI / 2);\n context.arc(item.x - r0, top + r0, r0, -Math.PI / 2, 0);\n context.arc(item.x - r1, top + width - r1, r1, 0, Math.PI / 2);\n context.arc(left + r2, top + width - r2, r2, Math.PI / 2, Math.PI);\n } else {\n context.moveTo(startX, startY);\n context.lineTo(item.x, startY);\n context.lineTo(item.x, startY + item.width);\n context.lineTo(startX, startY + item.width);\n context.lineTo(startX, startY);\n context.setLineWidth(1);\n context.setStrokeStyle(strokeColor);\n }\n context.setFillStyle(fillColor);\n context.closePath();\n //context.stroke();\n context.fill();\n }\n }\n ;\n break;\n case 'stack':\n // 绘制堆叠数据图\n var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n calPoints.push(points);\n points = fixBarStackData(points, eachSpacing, series.length, seriesIndex, config, opts, series);\n for (var _i22 = 0; _i22 < points.length; _i22++) {\n var _item12 = points[_i22];\n if (_item12 !== null && _i22 > leftNum && _i22 < rightNum) {\n context.beginPath();\n var fillColor = _item12.color || eachSeries.color;\n var startX = _item12.x0;\n context.setFillStyle(fillColor);\n context.moveTo(startX, _item12.y - _item12.width / 2);\n context.fillRect(startX, _item12.y - _item12.width / 2, _item12.height, _item12.width);\n context.closePath();\n context.fill();\n }\n }\n ;\n break;\n }\n });\n if (opts.dataLabel !== false && process === 1) {\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.xAxisData.ranges);\n maxRange = ranges.pop();\n minRange = ranges.shift();\n var data = eachSeries.data;\n switch (columnOption.type) {\n case 'group':\n var points = getBarDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, process);\n points = fixBarData(points, eachSpacing, series.length, seriesIndex, config, opts);\n drawBarPointText(points, eachSeries, config, context, opts);\n break;\n case 'stack':\n var points = getBarStackDataPoints(data, minRange, maxRange, yAxisPoints, eachSpacing, opts, config, seriesIndex, series, process);\n drawBarPointText(points, eachSeries, config, context, opts);\n break;\n }\n });\n }\n return {\n yAxisPoints: yAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawCandleDataPoints(series, seriesMA, opts, config, context) {\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n var candleOption = assign({}, {\n color: {},\n average: {}\n }, opts.extra.candle);\n candleOption.color = assign({}, {\n upLine: '#f04864',\n upFill: '#f04864',\n downLine: '#2fc25b',\n downFill: '#2fc25b'\n }, candleOption.color);\n candleOption.average = assign({}, {\n show: false,\n name: [],\n day: [],\n color: config.color\n }, candleOption.average);\n opts.extra.candle = candleOption;\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var calPoints = [];\n context.save();\n var leftNum = -2;\n var rightNum = xAxisPoints.length + 2;\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n rightNum = leftNum + opts.xAxis.itemCount + 4;\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n //画均线\n if (candleOption.average.show || seriesMA) {\n //Merge pull request !12 from 邱贵翔\n seriesMA.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n var splitPointList = splitPoints(points, eachSeries);\n for (var i = 0; i < splitPointList.length; i++) {\n var _points = splitPointList[i];\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setLineWidth(1);\n if (_points.length === 1) {\n context.moveTo(_points[0].x, _points[0].y);\n context.arc(_points[0].x, _points[0].y, 1, 0, 2 * Math.PI);\n } else {\n context.moveTo(_points[0].x, _points[0].y);\n var startPoint = 0;\n for (var j = 0; j < _points.length; j++) {\n var item = _points[j];\n if (startPoint == 0 && item.x > leftSpace) {\n context.moveTo(item.x, item.y);\n startPoint = 1;\n }\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n var ctrlPoint = createCurveControlPoints(_points, j - 1);\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n }\n }\n context.moveTo(_points[0].x, _points[0].y);\n }\n context.closePath();\n context.stroke();\n }\n });\n }\n //画K线\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getCandleDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n calPoints.push(points);\n var splitPointList = splitPoints(points, eachSeries);\n for (var i = 0; i < splitPointList[0].length; i++) {\n if (i > leftNum && i < rightNum) {\n var item = splitPointList[0][i];\n context.beginPath();\n //如果上涨\n if (data[i][1] - data[i][0] > 0) {\n context.setStrokeStyle(candleOption.color.upLine);\n context.setFillStyle(candleOption.color.upFill);\n context.setLineWidth(1 * opts.pix);\n context.moveTo(item[3].x, item[3].y); //顶点\n context.lineTo(item[1].x, item[1].y); //收盘中间点\n context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\n context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\n context.lineTo(item[0].x, item[0].y); //开盘中间点\n context.lineTo(item[2].x, item[2].y); //底点\n context.lineTo(item[0].x, item[0].y); //开盘中间点\n context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\n context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\n context.lineTo(item[1].x, item[1].y); //收盘中间点\n context.moveTo(item[3].x, item[3].y); //顶点\n } else {\n context.setStrokeStyle(candleOption.color.downLine);\n context.setFillStyle(candleOption.color.downFill);\n context.setLineWidth(1 * opts.pix);\n context.moveTo(item[3].x, item[3].y); //顶点\n context.lineTo(item[0].x, item[0].y); //开盘中间点\n context.lineTo(item[0].x - eachSpacing / 4, item[0].y); //开盘左侧点\n context.lineTo(item[1].x - eachSpacing / 4, item[1].y); //收盘左侧点\n context.lineTo(item[1].x, item[1].y); //收盘中间点\n context.lineTo(item[2].x, item[2].y); //底点\n context.lineTo(item[1].x, item[1].y); //收盘中间点\n context.lineTo(item[1].x + eachSpacing / 4, item[1].y); //收盘右侧点\n context.lineTo(item[0].x + eachSpacing / 4, item[0].y); //开盘右侧点\n context.lineTo(item[0].x, item[0].y); //开盘中间点\n context.moveTo(item[3].x, item[3].y); //顶点\n }\n\n context.closePath();\n context.fill();\n context.stroke();\n }\n }\n });\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawAreaDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var areaOption = assign({}, {\n type: 'straight',\n opacity: 0.2,\n addLine: false,\n width: 2,\n gradient: false,\n activeType: 'none'\n }, opts.extra.area);\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var endY = opts.height - opts.area[2];\n var calPoints = [];\n context.save();\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n calPoints.push(points);\n var splitPointList = splitPoints(points, eachSeries);\n for (var i = 0; i < splitPointList.length; i++) {\n var _points2 = splitPointList[i];\n // 绘制区域数\n context.beginPath();\n context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n if (areaOption.gradient) {\n var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\n gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n context.setFillStyle(gradient);\n } else {\n context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n }\n context.setLineWidth(areaOption.width * opts.pix);\n if (_points2.length > 1) {\n var firstPoint = _points2[0];\n var lastPoint = _points2[_points2.length - 1];\n context.moveTo(firstPoint.x, firstPoint.y);\n var startPoint = 0;\n if (areaOption.type === 'curve') {\n for (var j = 0; j < _points2.length; j++) {\n var item = _points2[j];\n if (startPoint == 0 && item.x > leftSpace) {\n context.moveTo(item.x, item.y);\n startPoint = 1;\n }\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n var ctrlPoint = createCurveControlPoints(_points2, j - 1);\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n }\n }\n ;\n }\n if (areaOption.type === 'straight') {\n for (var _j = 0; _j < _points2.length; _j++) {\n var _item13 = _points2[_j];\n if (startPoint == 0 && _item13.x > leftSpace) {\n context.moveTo(_item13.x, _item13.y);\n startPoint = 1;\n }\n if (_j > 0 && _item13.x > leftSpace && _item13.x < rightSpace) {\n context.lineTo(_item13.x, _item13.y);\n }\n }\n ;\n }\n if (areaOption.type === 'step') {\n for (var _j2 = 0; _j2 < _points2.length; _j2++) {\n var _item14 = _points2[_j2];\n if (startPoint == 0 && _item14.x > leftSpace) {\n context.moveTo(_item14.x, _item14.y);\n startPoint = 1;\n }\n if (_j2 > 0 && _item14.x > leftSpace && _item14.x < rightSpace) {\n context.lineTo(_item14.x, _points2[_j2 - 1].y);\n context.lineTo(_item14.x, _item14.y);\n }\n }\n ;\n }\n context.lineTo(lastPoint.x, endY);\n context.lineTo(firstPoint.x, endY);\n context.lineTo(firstPoint.x, firstPoint.y);\n } else {\n var _item15 = _points2[0];\n context.moveTo(_item15.x - eachSpacing / 2, _item15.y);\n // context.lineTo(item.x + eachSpacing / 2, item.y);\n // context.lineTo(item.x + eachSpacing / 2, endY);\n // context.lineTo(item.x - eachSpacing / 2, endY);\n // context.moveTo(item.x - eachSpacing / 2, item.y);\n }\n\n context.closePath();\n context.fill();\n //画连线\n if (areaOption.addLine) {\n if (eachSeries.lineType == 'dash') {\n var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n dashLength *= opts.pix;\n context.setLineDash([dashLength, dashLength]);\n }\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setLineWidth(areaOption.width * opts.pix);\n if (_points2.length === 1) {\n context.moveTo(_points2[0].x, _points2[0].y);\n // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\n } else {\n context.moveTo(_points2[0].x, _points2[0].y);\n var _startPoint = 0;\n if (areaOption.type === 'curve') {\n for (var _j3 = 0; _j3 < _points2.length; _j3++) {\n var _item16 = _points2[_j3];\n if (_startPoint == 0 && _item16.x > leftSpace) {\n context.moveTo(_item16.x, _item16.y);\n _startPoint = 1;\n }\n if (_j3 > 0 && _item16.x > leftSpace && _item16.x < rightSpace) {\n var _ctrlPoint = createCurveControlPoints(_points2, _j3 - 1);\n context.bezierCurveTo(_ctrlPoint.ctrA.x, _ctrlPoint.ctrA.y, _ctrlPoint.ctrB.x, _ctrlPoint.ctrB.y, _item16.x, _item16.y);\n }\n }\n ;\n }\n if (areaOption.type === 'straight') {\n for (var _j4 = 0; _j4 < _points2.length; _j4++) {\n var _item17 = _points2[_j4];\n if (_startPoint == 0 && _item17.x > leftSpace) {\n context.moveTo(_item17.x, _item17.y);\n _startPoint = 1;\n }\n if (_j4 > 0 && _item17.x > leftSpace && _item17.x < rightSpace) {\n context.lineTo(_item17.x, _item17.y);\n }\n }\n ;\n }\n if (areaOption.type === 'step') {\n for (var _j5 = 0; _j5 < _points2.length; _j5++) {\n var _item18 = _points2[_j5];\n if (_startPoint == 0 && _item18.x > leftSpace) {\n context.moveTo(_item18.x, _item18.y);\n _startPoint = 1;\n }\n if (_j5 > 0 && _item18.x > leftSpace && _item18.x < rightSpace) {\n context.lineTo(_item18.x, _points2[_j5 - 1].y);\n context.lineTo(_item18.x, _item18.y);\n }\n }\n ;\n }\n context.moveTo(_points2[0].x, _points2[0].y);\n }\n context.stroke();\n context.setLineDash([]);\n }\n }\n //画点\n if (opts.dataPointShape !== false) {\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n }\n drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, areaOption, seriesIndex);\n });\n if (opts.dataLabel !== false && process === 1) {\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n drawPointText(points, eachSeries, config, context, opts);\n });\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawScatterDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var scatterOption = assign({}, {\n type: 'circle'\n }, opts.extra.scatter);\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var calPoints = [];\n context.save();\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setFillStyle(eachSeries.color);\n context.setLineWidth(1 * opts.pix);\n var shape = eachSeries.pointShape;\n if (shape === 'diamond') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y);\n context.lineTo(item.x, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'circle') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x + 2.5 * opts.pix, item.y);\n context.arc(item.x, item.y, 3 * opts.pix, 0, 2 * Math.PI, false);\n }\n });\n } else if (shape === 'square') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x - 3.5, item.y - 3.5);\n context.rect(item.x - 3.5, item.y - 3.5, 7, 7);\n }\n });\n } else if (shape === 'triangle') {\n points.forEach(function (item, index) {\n if (item !== null) {\n context.moveTo(item.x, item.y - 4.5);\n context.lineTo(item.x - 4.5, item.y + 4.5);\n context.lineTo(item.x + 4.5, item.y + 4.5);\n context.lineTo(item.x, item.y - 4.5);\n }\n });\n } else if (shape === 'triangle') {\n return;\n }\n context.closePath();\n context.fill();\n context.stroke();\n });\n if (opts.dataLabel !== false && process === 1) {\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n drawPointText(points, eachSeries, config, context, opts);\n });\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawBubbleDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var bubbleOption = assign({}, {\n opacity: 1,\n border: 2\n }, opts.extra.bubble);\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var calPoints = [];\n context.save();\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setLineWidth(bubbleOption.border * opts.pix);\n context.setFillStyle(hexToRgb(eachSeries.color, bubbleOption.opacity));\n points.forEach(function (item, index) {\n context.moveTo(item.x + item.r, item.y);\n context.arc(item.x, item.y, item.r * opts.pix, 0, 2 * Math.PI, false);\n });\n context.closePath();\n context.fill();\n context.stroke();\n if (opts.dataLabel !== false && process === 1) {\n points.forEach(function (item, index) {\n context.beginPath();\n var fontSize = eachSeries.textSize * opts.pix || config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(eachSeries.textColor || \"#FFFFFF\");\n context.setTextAlign('center');\n context.fillText(String(item.t), item.x, item.y + fontSize / 2);\n context.closePath();\n context.stroke();\n context.setTextAlign('left');\n });\n }\n });\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawLineDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var lineOption = assign({}, {\n type: 'straight',\n width: 2,\n activeType: 'none',\n linearType: 'none',\n onShadow: false,\n animation: 'vertical'\n }, opts.extra.line);\n lineOption.width *= opts.pix;\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var calPoints = [];\n context.save();\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n series.forEach(function (eachSeries, seriesIndex) {\n // 这段很神奇的代码用于解决ios16的setStrokeStyle失效的bug\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.moveTo(-10000, -10000);\n context.lineTo(-10001, -10001);\n context.stroke();\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getLineDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, lineOption, process);\n calPoints.push(points);\n var splitPointList = splitPoints(points, eachSeries);\n if (eachSeries.lineType == 'dash') {\n var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n dashLength *= opts.pix;\n context.setLineDash([dashLength, dashLength]);\n }\n context.beginPath();\n var strokeColor = eachSeries.color;\n if (lineOption.linearType !== 'none' && eachSeries.linearColor && eachSeries.linearColor.length > 0) {\n var grd = context.createLinearGradient(opts.chartData.xAxisData.startX, opts.height / 2, opts.chartData.xAxisData.endX, opts.height / 2);\n for (var i = 0; i < eachSeries.linearColor.length; i++) {\n grd.addColorStop(eachSeries.linearColor[i][0], hexToRgb(eachSeries.linearColor[i][1], 1));\n }\n strokeColor = grd;\n }\n context.setStrokeStyle(strokeColor);\n if (lineOption.onShadow == true && eachSeries.setShadow && eachSeries.setShadow.length > 0) {\n context.setShadow(eachSeries.setShadow[0], eachSeries.setShadow[1], eachSeries.setShadow[2], eachSeries.setShadow[3]);\n } else {\n context.setShadow(0, 0, 0, 'rgba(0,0,0,0)');\n }\n context.setLineWidth(lineOption.width);\n splitPointList.forEach(function (points, index) {\n if (points.length === 1) {\n context.moveTo(points[0].x, points[0].y);\n // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\n } else {\n context.moveTo(points[0].x, points[0].y);\n var startPoint = 0;\n if (lineOption.type === 'curve') {\n for (var j = 0; j < points.length; j++) {\n var item = points[j];\n if (startPoint == 0 && item.x > leftSpace) {\n context.moveTo(item.x, item.y);\n startPoint = 1;\n }\n if (j > 0 && item.x > leftSpace && item.x < rightSpace) {\n var ctrlPoint = createCurveControlPoints(points, j - 1);\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, item.x, item.y);\n }\n }\n ;\n }\n if (lineOption.type === 'straight') {\n for (var _j6 = 0; _j6 < points.length; _j6++) {\n var _item19 = points[_j6];\n if (startPoint == 0 && _item19.x > leftSpace) {\n context.moveTo(_item19.x, _item19.y);\n startPoint = 1;\n }\n if (_j6 > 0 && _item19.x > leftSpace && _item19.x < rightSpace) {\n context.lineTo(_item19.x, _item19.y);\n }\n }\n ;\n }\n if (lineOption.type === 'step') {\n for (var _j7 = 0; _j7 < points.length; _j7++) {\n var _item20 = points[_j7];\n if (startPoint == 0 && _item20.x > leftSpace) {\n context.moveTo(_item20.x, _item20.y);\n startPoint = 1;\n }\n if (_j7 > 0 && _item20.x > leftSpace && _item20.x < rightSpace) {\n context.lineTo(_item20.x, points[_j7 - 1].y);\n context.lineTo(_item20.x, _item20.y);\n }\n }\n ;\n }\n context.moveTo(points[0].x, points[0].y);\n }\n });\n context.stroke();\n context.setLineDash([]);\n if (opts.dataPointShape !== false) {\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n }\n drawActivePoint(points, eachSeries.color, eachSeries.pointShape, context, opts, lineOption);\n });\n if (opts.dataLabel !== false && process === 1) {\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n drawPointText(points, eachSeries, config, context, opts);\n });\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawMixDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n eachSpacing = xAxisData.eachSpacing;\n var columnOption = assign({}, {\n width: eachSpacing / 2,\n barBorderCircle: false,\n barBorderRadius: [],\n seriesGap: 2,\n linearType: 'none',\n linearOpacity: 1,\n customColor: [],\n colorStop: 0\n }, opts.extra.mix.column);\n var areaOption = assign({}, {\n opacity: 0.2,\n gradient: false\n }, opts.extra.mix.area);\n var lineOption = assign({}, {\n width: 2\n }, opts.extra.mix.line);\n var endY = opts.height - opts.area[2];\n var calPoints = [];\n var columnIndex = 0;\n var columnLength = 0;\n series.forEach(function (eachSeries, seriesIndex) {\n if (eachSeries.type == 'column') {\n columnLength += 1;\n }\n });\n context.save();\n var leftNum = -2;\n var rightNum = xAxisPoints.length + 2;\n var leftSpace = 0;\n var rightSpace = opts.width + eachSpacing;\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n leftNum = Math.floor(-opts._scrollDistance_ / eachSpacing) - 2;\n rightNum = leftNum + opts.xAxis.itemCount + 4;\n leftSpace = -opts._scrollDistance_ - eachSpacing * 2 + opts.area[3];\n rightSpace = leftSpace + (opts.xAxis.itemCount + 4) * eachSpacing;\n }\n columnOption.customColor = fillCustomColor(columnOption.linearType, columnOption.customColor, series, config);\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n calPoints.push(points);\n // 绘制柱状数据图\n if (eachSeries.type == 'column') {\n points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\n for (var i = 0; i < points.length; i++) {\n var item = points[i];\n if (item !== null && i > leftNum && i < rightNum) {\n var startX = item.x - item.width / 2;\n var height = opts.height - item.y - opts.area[2];\n context.beginPath();\n var fillColor = item.color || eachSeries.color;\n var strokeColor = item.color || eachSeries.color;\n if (columnOption.linearType !== 'none') {\n var grd = context.createLinearGradient(startX, item.y, startX, opts.height - opts.area[2]);\n //透明渐变\n if (columnOption.linearType == 'opacity') {\n grd.addColorStop(0, hexToRgb(fillColor, columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n } else {\n grd.addColorStop(0, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(columnOption.colorStop, hexToRgb(columnOption.customColor[eachSeries.linearIndex], columnOption.linearOpacity));\n grd.addColorStop(1, hexToRgb(fillColor, 1));\n }\n fillColor = grd;\n }\n // 圆角边框\n if (columnOption.barBorderRadius && columnOption.barBorderRadius.length === 4 || columnOption.barBorderCircle) {\n var left = startX;\n var top = item.y;\n var width = item.width;\n var _height5 = opts.height - opts.area[2] - item.y;\n if (columnOption.barBorderCircle) {\n columnOption.barBorderRadius = [width / 2, width / 2, 0, 0];\n }\n var _columnOption$barBord4 = (0, _slicedToArray2.default)(columnOption.barBorderRadius, 4),\n r0 = _columnOption$barBord4[0],\n r1 = _columnOption$barBord4[1],\n r2 = _columnOption$barBord4[2],\n r3 = _columnOption$barBord4[3];\n var minRadius = Math.min(width / 2, _height5 / 2);\n r0 = r0 > minRadius ? minRadius : r0;\n r1 = r1 > minRadius ? minRadius : r1;\n r2 = r2 > minRadius ? minRadius : r2;\n r3 = r3 > minRadius ? minRadius : r3;\n r0 = r0 < 0 ? 0 : r0;\n r1 = r1 < 0 ? 0 : r1;\n r2 = r2 < 0 ? 0 : r2;\n r3 = r3 < 0 ? 0 : r3;\n context.arc(left + r0, top + r0, r0, -Math.PI, -Math.PI / 2);\n context.arc(left + width - r1, top + r1, r1, -Math.PI / 2, 0);\n context.arc(left + width - r2, top + _height5 - r2, r2, 0, Math.PI / 2);\n context.arc(left + r3, top + _height5 - r3, r3, Math.PI / 2, Math.PI);\n } else {\n context.moveTo(startX, item.y);\n context.lineTo(startX + item.width, item.y);\n context.lineTo(startX + item.width, opts.height - opts.area[2]);\n context.lineTo(startX, opts.height - opts.area[2]);\n context.lineTo(startX, item.y);\n context.setLineWidth(1);\n context.setStrokeStyle(strokeColor);\n }\n context.setFillStyle(fillColor);\n context.closePath();\n context.fill();\n }\n }\n columnIndex += 1;\n }\n //绘制区域图数据\n if (eachSeries.type == 'area') {\n var _splitPointList = splitPoints(points, eachSeries);\n for (var _i23 = 0; _i23 < _splitPointList.length; _i23++) {\n var _points3 = _splitPointList[_i23];\n // 绘制区域数据\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setStrokeStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n if (areaOption.gradient) {\n var gradient = context.createLinearGradient(0, opts.area[0], 0, opts.height - opts.area[2]);\n gradient.addColorStop('0', hexToRgb(eachSeries.color, areaOption.opacity));\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n context.setFillStyle(gradient);\n } else {\n context.setFillStyle(hexToRgb(eachSeries.color, areaOption.opacity));\n }\n context.setLineWidth(2 * opts.pix);\n if (_points3.length > 1) {\n var firstPoint = _points3[0];\n var lastPoint = _points3[_points3.length - 1];\n context.moveTo(firstPoint.x, firstPoint.y);\n var startPoint = 0;\n if (eachSeries.style === 'curve') {\n for (var j = 0; j < _points3.length; j++) {\n var _item21 = _points3[j];\n if (startPoint == 0 && _item21.x > leftSpace) {\n context.moveTo(_item21.x, _item21.y);\n startPoint = 1;\n }\n if (j > 0 && _item21.x > leftSpace && _item21.x < rightSpace) {\n var ctrlPoint = createCurveControlPoints(_points3, j - 1);\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item21.x, _item21.y);\n }\n }\n ;\n } else {\n for (var _j8 = 0; _j8 < _points3.length; _j8++) {\n var _item22 = _points3[_j8];\n if (startPoint == 0 && _item22.x > leftSpace) {\n context.moveTo(_item22.x, _item22.y);\n startPoint = 1;\n }\n if (_j8 > 0 && _item22.x > leftSpace && _item22.x < rightSpace) {\n context.lineTo(_item22.x, _item22.y);\n }\n }\n ;\n }\n context.lineTo(lastPoint.x, endY);\n context.lineTo(firstPoint.x, endY);\n context.lineTo(firstPoint.x, firstPoint.y);\n } else {\n var _item23 = _points3[0];\n context.moveTo(_item23.x - eachSpacing / 2, _item23.y);\n // context.lineTo(item.x + eachSpacing / 2, item.y);\n // context.lineTo(item.x + eachSpacing / 2, endY);\n // context.lineTo(item.x - eachSpacing / 2, endY);\n // context.moveTo(item.x - eachSpacing / 2, item.y);\n }\n\n context.closePath();\n context.fill();\n }\n }\n // 绘制折线数据图\n if (eachSeries.type == 'line') {\n var splitPointList = splitPoints(points, eachSeries);\n splitPointList.forEach(function (points, index) {\n if (eachSeries.lineType == 'dash') {\n var dashLength = eachSeries.dashLength ? eachSeries.dashLength : 8;\n dashLength *= opts.pix;\n context.setLineDash([dashLength, dashLength]);\n }\n context.beginPath();\n context.setStrokeStyle(eachSeries.color);\n context.setLineWidth(lineOption.width * opts.pix);\n if (points.length === 1) {\n context.moveTo(points[0].x, points[0].y);\n // context.arc(points[0].x, points[0].y, 1, 0, 2 * Math.PI);\n } else {\n context.moveTo(points[0].x, points[0].y);\n var _startPoint2 = 0;\n if (eachSeries.style == 'curve') {\n for (var _j9 = 0; _j9 < points.length; _j9++) {\n var _item24 = points[_j9];\n if (_startPoint2 == 0 && _item24.x > leftSpace) {\n context.moveTo(_item24.x, _item24.y);\n _startPoint2 = 1;\n }\n if (_j9 > 0 && _item24.x > leftSpace && _item24.x < rightSpace) {\n var ctrlPoint = createCurveControlPoints(points, _j9 - 1);\n context.bezierCurveTo(ctrlPoint.ctrA.x, ctrlPoint.ctrA.y, ctrlPoint.ctrB.x, ctrlPoint.ctrB.y, _item24.x, _item24.y);\n }\n }\n } else {\n for (var _j10 = 0; _j10 < points.length; _j10++) {\n var _item25 = points[_j10];\n if (_startPoint2 == 0 && _item25.x > leftSpace) {\n context.moveTo(_item25.x, _item25.y);\n _startPoint2 = 1;\n }\n if (_j10 > 0 && _item25.x > leftSpace && _item25.x < rightSpace) {\n context.lineTo(_item25.x, _item25.y);\n }\n }\n }\n context.moveTo(points[0].x, points[0].y);\n }\n context.stroke();\n context.setLineDash([]);\n });\n }\n // 绘制点数据图\n if (eachSeries.type == 'point') {\n eachSeries.addPoint = true;\n }\n if (eachSeries.addPoint == true && eachSeries.type !== 'column') {\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n }\n });\n if (opts.dataLabel !== false && process === 1) {\n var columnIndex = 0;\n series.forEach(function (eachSeries, seriesIndex) {\n var ranges, minRange, maxRange;\n ranges = [].concat(opts.chartData.yAxisData.ranges[eachSeries.index]);\n minRange = ranges.pop();\n maxRange = ranges.shift();\n var data = eachSeries.data;\n var points = getDataPoints(data, minRange, maxRange, xAxisPoints, eachSpacing, opts, config, process);\n if (eachSeries.type !== 'column') {\n drawPointText(points, eachSeries, config, context, opts);\n } else {\n points = fixColumeData(points, eachSpacing, columnLength, columnIndex, config, opts);\n drawPointText(points, eachSeries, config, context, opts);\n columnIndex += 1;\n }\n });\n }\n context.restore();\n return {\n xAxisPoints: xAxisPoints,\n calPoints: calPoints,\n eachSpacing: eachSpacing\n };\n}\nfunction drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints) {\n var toolTipOption = opts.extra.tooltip || {};\n if (toolTipOption.horizentalLine && opts.tooltip && process === 1 && (opts.type == 'line' || opts.type == 'area' || opts.type == 'column' || opts.type == 'mount' || opts.type == 'candle' || opts.type == 'mix')) {\n drawToolTipHorizentalLine(opts, config, context, eachSpacing, xAxisPoints);\n }\n context.save();\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0 && opts.enableScroll === true) {\n context.translate(opts._scrollDistance_, 0);\n }\n if (opts.tooltip && opts.tooltip.textList && opts.tooltip.textList.length && process === 1) {\n drawToolTip(opts.tooltip.textList, opts.tooltip.offset, opts, config, context, eachSpacing, xAxisPoints);\n }\n context.restore();\n}\nfunction drawXAxis(categories, opts, config, context) {\n var xAxisData = opts.chartData.xAxisData,\n xAxisPoints = xAxisData.xAxisPoints,\n startX = xAxisData.startX,\n endX = xAxisData.endX,\n eachSpacing = xAxisData.eachSpacing;\n var boundaryGap = 'center';\n if (opts.type == 'bar' || opts.type == 'line' || opts.type == 'area' || opts.type == 'scatter' || opts.type == 'bubble') {\n boundaryGap = opts.xAxis.boundaryGap;\n }\n var startY = opts.height - opts.area[2];\n var endY = opts.area[0];\n\n //绘制滚动条\n if (opts.enableScroll && opts.xAxis.scrollShow) {\n var scrollY = opts.height - opts.area[2] + config.xAxisHeight;\n var scrollScreenWidth = endX - startX;\n var scrollTotalWidth = eachSpacing * (xAxisPoints.length - 1);\n if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n scrollTotalWidth += (opts.extra.mount.widthRatio - 1) * eachSpacing;\n }\n var scrollWidth = scrollScreenWidth * scrollScreenWidth / scrollTotalWidth;\n var scrollLeft = 0;\n if (opts._scrollDistance_) {\n scrollLeft = -opts._scrollDistance_ * scrollScreenWidth / scrollTotalWidth;\n }\n context.beginPath();\n context.setLineCap('round');\n context.setLineWidth(6 * opts.pix);\n context.setStrokeStyle(opts.xAxis.scrollBackgroundColor || \"#EFEBEF\");\n context.moveTo(startX, scrollY);\n context.lineTo(endX, scrollY);\n context.stroke();\n context.closePath();\n context.beginPath();\n context.setLineCap('round');\n context.setLineWidth(6 * opts.pix);\n context.setStrokeStyle(opts.xAxis.scrollColor || \"#A6A6A6\");\n context.moveTo(startX + scrollLeft, scrollY);\n context.lineTo(startX + scrollLeft + scrollWidth, scrollY);\n context.stroke();\n context.closePath();\n context.setLineCap('butt');\n }\n context.save();\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\n context.translate(opts._scrollDistance_, 0);\n }\n //绘制X轴刻度线\n if (opts.xAxis.calibration === true) {\n context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\n context.setLineCap('butt');\n context.setLineWidth(1 * opts.pix);\n xAxisPoints.forEach(function (item, index) {\n if (index > 0) {\n context.beginPath();\n context.moveTo(item - eachSpacing / 2, startY);\n context.lineTo(item - eachSpacing / 2, startY + 3 * opts.pix);\n context.closePath();\n context.stroke();\n }\n });\n }\n //绘制X轴网格\n if (opts.xAxis.disableGrid !== true) {\n context.setStrokeStyle(opts.xAxis.gridColor || \"#cccccc\");\n context.setLineCap('butt');\n context.setLineWidth(1 * opts.pix);\n if (opts.xAxis.gridType == 'dash') {\n context.setLineDash([opts.xAxis.dashLength * opts.pix, opts.xAxis.dashLength * opts.pix]);\n }\n opts.xAxis.gridEval = opts.xAxis.gridEval || 1;\n xAxisPoints.forEach(function (item, index) {\n if (index % opts.xAxis.gridEval == 0) {\n context.beginPath();\n context.moveTo(item, startY);\n context.lineTo(item, endY);\n context.stroke();\n }\n });\n context.setLineDash([]);\n }\n //绘制X轴文案\n if (opts.xAxis.disabled !== true) {\n // 对X轴列表做抽稀处理\n //默认全部显示X轴标签\n var maxXAxisListLength = categories.length;\n //如果设置了X轴单屏数量\n if (opts.xAxis.labelCount) {\n //如果设置X轴密度\n if (opts.xAxis.itemCount) {\n maxXAxisListLength = Math.ceil(categories.length / opts.xAxis.itemCount * opts.xAxis.labelCount);\n } else {\n maxXAxisListLength = opts.xAxis.labelCount;\n }\n maxXAxisListLength -= 1;\n }\n var ratio = Math.ceil(categories.length / maxXAxisListLength);\n var newCategories = [];\n var cgLength = categories.length;\n for (var i = 0; i < cgLength; i++) {\n if (i % ratio !== 0) {\n newCategories.push(\"\");\n } else {\n newCategories.push(categories[i]);\n }\n }\n newCategories[cgLength - 1] = categories[cgLength - 1];\n var xAxisFontSize = opts.xAxis.fontSize * opts.pix || config.fontSize;\n if (config._xAxisTextAngle_ === 0) {\n newCategories.forEach(function (item, index) {\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item, index, opts) : item;\n var offset = -measureText(String(xitem), xAxisFontSize, context) / 2;\n if (boundaryGap == 'center') {\n offset += eachSpacing / 2;\n }\n var scrollHeight = 0;\n if (opts.xAxis.scrollShow) {\n scrollHeight = 6 * opts.pix;\n }\n // 如果在主视图区域内\n var _scrollDistance_ = opts._scrollDistance_ || 0;\n var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index];\n if (truePoints - Math.abs(_scrollDistance_) >= opts.area[3] - 1 && truePoints - Math.abs(_scrollDistance_) <= opts.width - opts.area[1] + 1) {\n context.beginPath();\n context.setFontSize(xAxisFontSize);\n context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\n context.fillText(String(xitem), xAxisPoints[index] + offset, startY + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.fontSize) * opts.pix / 2 + opts.xAxis.fontSize * opts.pix);\n context.closePath();\n context.stroke();\n }\n });\n } else {\n newCategories.forEach(function (item, index) {\n var xitem = opts.xAxis.formatter ? opts.xAxis.formatter(item) : item;\n // 如果在主视图区域内\n var _scrollDistance_ = opts._scrollDistance_ || 0;\n var truePoints = boundaryGap == 'center' ? xAxisPoints[index] + eachSpacing / 2 : xAxisPoints[index];\n if (truePoints - Math.abs(_scrollDistance_) >= opts.area[3] - 1 && truePoints - Math.abs(_scrollDistance_) <= opts.width - opts.area[1] + 1) {\n context.save();\n context.beginPath();\n context.setFontSize(xAxisFontSize);\n context.setFillStyle(opts.xAxis.fontColor || opts.fontColor);\n var textWidth = measureText(String(xitem), xAxisFontSize, context);\n var offsetX = xAxisPoints[index];\n if (boundaryGap == 'center') {\n offsetX = xAxisPoints[index] + eachSpacing / 2;\n }\n var scrollHeight = 0;\n if (opts.xAxis.scrollShow) {\n scrollHeight = 6 * opts.pix;\n }\n var offsetY = startY + opts.xAxis.marginTop * opts.pix + xAxisFontSize - xAxisFontSize * Math.abs(Math.sin(config._xAxisTextAngle_));\n if (opts.xAxis.rotateAngle < 0) {\n offsetX -= xAxisFontSize / 2;\n textWidth = 0;\n } else {\n offsetX += xAxisFontSize / 2;\n textWidth = -textWidth;\n }\n context.translate(offsetX, offsetY);\n context.rotate(-1 * config._xAxisTextAngle_);\n context.fillText(String(xitem), textWidth, 0);\n context.closePath();\n context.stroke();\n context.restore();\n }\n });\n }\n }\n context.restore();\n\n //画X轴标题\n if (opts.xAxis.title) {\n context.beginPath();\n context.setFontSize(opts.xAxis.titleFontSize * opts.pix);\n context.setFillStyle(opts.xAxis.titleFontColor);\n context.fillText(String(opts.xAxis.title), opts.width - opts.area[1] + opts.xAxis.titleOffsetX * opts.pix, opts.height - opts.area[2] + opts.xAxis.marginTop * opts.pix + (opts.xAxis.lineHeight - opts.xAxis.titleFontSize) * opts.pix / 2 + (opts.xAxis.titleFontSize + opts.xAxis.titleOffsetY) * opts.pix);\n context.closePath();\n context.stroke();\n }\n\n //绘制X轴轴线\n if (opts.xAxis.axisLine) {\n context.beginPath();\n context.setStrokeStyle(opts.xAxis.axisLineColor);\n context.setLineWidth(1 * opts.pix);\n context.moveTo(startX, opts.height - opts.area[2]);\n context.lineTo(endX, opts.height - opts.area[2]);\n context.stroke();\n }\n}\nfunction drawYAxisGrid(categories, opts, config, context) {\n if (opts.yAxis.disableGrid === true) {\n return;\n }\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n var eachSpacing = spacingValid / opts.yAxis.splitNumber;\n var startX = opts.area[3];\n var xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\n xAxiseachSpacing = opts.chartData.xAxisData.eachSpacing;\n var TotalWidth = xAxiseachSpacing * (xAxisPoints.length - 1);\n if (opts.type == 'mount' && opts.extra && opts.extra.mount && opts.extra.mount.widthRatio && opts.extra.mount.widthRatio > 1) {\n if (opts.extra.mount.widthRatio > 2) opts.extra.mount.widthRatio = 2;\n TotalWidth += (opts.extra.mount.widthRatio - 1) * xAxiseachSpacing;\n }\n var endX = startX + TotalWidth;\n var points = [];\n var startY = 1;\n if (opts.xAxis.axisLine === false) {\n startY = 0;\n }\n for (var i = startY; i < opts.yAxis.splitNumber + 1; i++) {\n points.push(opts.height - opts.area[2] - eachSpacing * i);\n }\n context.save();\n if (opts._scrollDistance_ && opts._scrollDistance_ !== 0) {\n context.translate(opts._scrollDistance_, 0);\n }\n if (opts.yAxis.gridType == 'dash') {\n context.setLineDash([opts.yAxis.dashLength * opts.pix, opts.yAxis.dashLength * opts.pix]);\n }\n context.setStrokeStyle(opts.yAxis.gridColor);\n context.setLineWidth(1 * opts.pix);\n points.forEach(function (item, index) {\n context.beginPath();\n context.moveTo(startX, item);\n context.lineTo(endX, item);\n context.stroke();\n });\n context.setLineDash([]);\n context.restore();\n}\nfunction drawYAxis(series, opts, config, context) {\n if (opts.yAxis.disabled === true) {\n return;\n }\n var spacingValid = opts.height - opts.area[0] - opts.area[2];\n var eachSpacing = spacingValid / opts.yAxis.splitNumber;\n var startX = opts.area[3];\n var endX = opts.width - opts.area[1];\n var endY = opts.height - opts.area[2];\n // set YAxis background\n context.beginPath();\n context.setFillStyle(opts.background);\n if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'left') {\n context.fillRect(0, 0, startX, endY + 2 * opts.pix);\n }\n if (opts.enableScroll == true && opts.xAxis.scrollPosition && opts.xAxis.scrollPosition !== 'right') {\n context.fillRect(endX, 0, opts.width, endY + 2 * opts.pix);\n }\n context.closePath();\n context.stroke();\n var tStartLeft = opts.area[3];\n var tStartRight = opts.width - opts.area[1];\n var tStartCenter = opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2;\n if (opts.yAxis.data) {\n var _loop4 = function _loop4(i) {\n var yData = opts.yAxis.data[i];\n points = [];\n if (yData.type === 'categories') {\n for (var _i24 = 0; _i24 <= yData.categories.length; _i24++) {\n points.push(opts.area[0] + spacingValid / yData.categories.length / 2 + spacingValid / yData.categories.length * _i24);\n }\n } else {\n for (var _i25 = 0; _i25 <= opts.yAxis.splitNumber; _i25++) {\n points.push(opts.area[0] + eachSpacing * _i25);\n }\n }\n if (yData.disabled !== true) {\n var rangesFormat = opts.chartData.yAxisData.rangesFormat[i];\n var yAxisFontSize = yData.fontSize ? yData.fontSize * opts.pix : config.fontSize;\n var yAxisWidth = opts.chartData.yAxisData.yAxisWidth[i];\n var textAlign = yData.textAlign || \"right\";\n //画Y轴刻度及文案\n rangesFormat.forEach(function (item, index) {\n var pos = points[index];\n context.beginPath();\n context.setFontSize(yAxisFontSize);\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(yData.axisLineColor || '#cccccc');\n context.setFillStyle(yData.fontColor || opts.fontColor);\n var tmpstrat = 0;\n var gapwidth = 4 * opts.pix;\n if (yAxisWidth.position == 'left') {\n //画刻度线\n if (yData.calibration == true) {\n context.moveTo(tStartLeft, pos);\n context.lineTo(tStartLeft - 3 * opts.pix, pos);\n gapwidth += 3 * opts.pix;\n }\n //画文字\n switch (textAlign) {\n case \"left\":\n context.setTextAlign('left');\n tmpstrat = tStartLeft - yAxisWidth.width;\n break;\n case \"right\":\n context.setTextAlign('right');\n tmpstrat = tStartLeft - gapwidth;\n break;\n default:\n context.setTextAlign('center');\n tmpstrat = tStartLeft - yAxisWidth.width / 2;\n }\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n } else if (yAxisWidth.position == 'right') {\n //画刻度线\n if (yData.calibration == true) {\n context.moveTo(tStartRight, pos);\n context.lineTo(tStartRight + 3 * opts.pix, pos);\n gapwidth += 3 * opts.pix;\n }\n switch (textAlign) {\n case \"left\":\n context.setTextAlign('left');\n tmpstrat = tStartRight + gapwidth;\n break;\n case \"right\":\n context.setTextAlign('right');\n tmpstrat = tStartRight + yAxisWidth.width;\n break;\n default:\n context.setTextAlign('center');\n tmpstrat = tStartRight + yAxisWidth.width / 2;\n }\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n } else if (yAxisWidth.position == 'center') {\n //画刻度线\n if (yData.calibration == true) {\n context.moveTo(tStartCenter, pos);\n context.lineTo(tStartCenter - 3 * opts.pix, pos);\n gapwidth += 3 * opts.pix;\n }\n //画文字\n switch (textAlign) {\n case \"left\":\n context.setTextAlign('left');\n tmpstrat = tStartCenter - yAxisWidth.width;\n break;\n case \"right\":\n context.setTextAlign('right');\n tmpstrat = tStartCenter - gapwidth;\n break;\n default:\n context.setTextAlign('center');\n tmpstrat = tStartCenter - yAxisWidth.width / 2;\n }\n context.fillText(String(item), tmpstrat, pos + yAxisFontSize / 2 - 3 * opts.pix);\n }\n context.closePath();\n context.stroke();\n context.setTextAlign('left');\n });\n //画Y轴轴线\n if (yData.axisLine !== false) {\n context.beginPath();\n context.setStrokeStyle(yData.axisLineColor || '#cccccc');\n context.setLineWidth(1 * opts.pix);\n if (yAxisWidth.position == 'left') {\n context.moveTo(tStartLeft, opts.height - opts.area[2]);\n context.lineTo(tStartLeft, opts.area[0]);\n } else if (yAxisWidth.position == 'right') {\n context.moveTo(tStartRight, opts.height - opts.area[2]);\n context.lineTo(tStartRight, opts.area[0]);\n } else if (yAxisWidth.position == 'center') {\n context.moveTo(tStartCenter, opts.height - opts.area[2]);\n context.lineTo(tStartCenter, opts.area[0]);\n }\n context.stroke();\n }\n //画Y轴标题\n if (opts.yAxis.showTitle) {\n var titleFontSize = yData.titleFontSize * opts.pix || config.fontSize;\n var title = yData.title;\n context.beginPath();\n context.setFontSize(titleFontSize);\n context.setFillStyle(yData.titleFontColor || opts.fontColor);\n if (yAxisWidth.position == 'left') {\n context.fillText(title, tStartLeft - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n } else if (yAxisWidth.position == 'right') {\n context.fillText(title, tStartRight - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n } else if (yAxisWidth.position == 'center') {\n context.fillText(title, tStartCenter - measureText(title, titleFontSize, context) / 2 + (yData.titleOffsetX || 0), opts.area[0] - (10 - (yData.titleOffsetY || 0)) * opts.pix);\n }\n context.closePath();\n context.stroke();\n }\n if (yAxisWidth.position == 'left') {\n tStartLeft -= yAxisWidth.width + opts.yAxis.padding * opts.pix;\n } else {\n tStartRight += yAxisWidth.width + opts.yAxis.padding * opts.pix;\n }\n }\n };\n for (var i = 0; i < opts.yAxis.data.length; i++) {\n var points;\n _loop4(i);\n }\n }\n}\nfunction drawLegend(series, opts, config, context, chartData) {\n if (opts.legend.show === false) {\n return;\n }\n var legendData = chartData.legendData;\n var legendList = legendData.points;\n var legendArea = legendData.area;\n var padding = opts.legend.padding * opts.pix;\n var fontSize = opts.legend.fontSize * opts.pix;\n var shapeWidth = 15 * opts.pix;\n var shapeRight = 5 * opts.pix;\n var itemGap = opts.legend.itemGap * opts.pix;\n var lineHeight = Math.max(opts.legend.lineHeight * opts.pix, fontSize);\n //画背景及边框\n context.beginPath();\n context.setLineWidth(opts.legend.borderWidth * opts.pix);\n context.setStrokeStyle(opts.legend.borderColor);\n context.setFillStyle(opts.legend.backgroundColor);\n context.moveTo(legendArea.start.x, legendArea.start.y);\n context.rect(legendArea.start.x, legendArea.start.y, legendArea.width, legendArea.height);\n context.closePath();\n context.fill();\n context.stroke();\n legendList.forEach(function (itemList, listIndex) {\n var width = 0;\n var height = 0;\n width = legendData.widthArr[listIndex];\n height = legendData.heightArr[listIndex];\n var startX = 0;\n var startY = 0;\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n switch (opts.legend.float) {\n case 'left':\n startX = legendArea.start.x + padding;\n break;\n case 'right':\n startX = legendArea.start.x + legendArea.width - width;\n break;\n default:\n startX = legendArea.start.x + (legendArea.width - width) / 2;\n }\n startY = legendArea.start.y + padding + listIndex * lineHeight;\n } else {\n if (listIndex == 0) {\n width = 0;\n } else {\n width = legendData.widthArr[listIndex - 1];\n }\n startX = legendArea.start.x + padding + width;\n startY = legendArea.start.y + padding + (legendArea.height - height) / 2;\n }\n context.setFontSize(config.fontSize);\n for (var i = 0; i < itemList.length; i++) {\n var item = itemList[i];\n item.area = [0, 0, 0, 0];\n item.area[0] = startX;\n item.area[1] = startY;\n item.area[3] = startY + lineHeight;\n context.beginPath();\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(item.show ? item.color : opts.legend.hiddenColor);\n context.setFillStyle(item.show ? item.color : opts.legend.hiddenColor);\n switch (item.legendShape) {\n case 'line':\n context.moveTo(startX, startY + 0.5 * lineHeight - 2 * opts.pix);\n context.fillRect(startX, startY + 0.5 * lineHeight - 2 * opts.pix, 15 * opts.pix, 4 * opts.pix);\n break;\n case 'triangle':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n break;\n case 'diamond':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n context.lineTo(startX + 2.5 * opts.pix, startY + 0.5 * lineHeight);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight + 5 * opts.pix);\n context.lineTo(startX + 12.5 * opts.pix, startY + 0.5 * lineHeight);\n context.lineTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n break;\n case 'circle':\n context.moveTo(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight);\n context.arc(startX + 7.5 * opts.pix, startY + 0.5 * lineHeight, 5 * opts.pix, 0, 2 * Math.PI);\n break;\n case 'rect':\n context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\n context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n break;\n case 'square':\n context.moveTo(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix);\n context.fillRect(startX + 5 * opts.pix, startY + 0.5 * lineHeight - 5 * opts.pix, 10 * opts.pix, 10 * opts.pix);\n break;\n case 'none':\n break;\n default:\n context.moveTo(startX, startY + 0.5 * lineHeight - 5 * opts.pix);\n context.fillRect(startX, startY + 0.5 * lineHeight - 5 * opts.pix, 15 * opts.pix, 10 * opts.pix);\n }\n context.closePath();\n context.fill();\n context.stroke();\n startX += shapeWidth + shapeRight;\n var fontTrans = 0.5 * lineHeight + 0.5 * fontSize - 2;\n var legendText = item.legendText ? item.legendText : item.name;\n context.beginPath();\n context.setFontSize(fontSize);\n context.setFillStyle(item.show ? opts.legend.fontColor : opts.legend.hiddenColor);\n context.fillText(legendText, startX, startY + fontTrans);\n context.closePath();\n context.stroke();\n if (opts.legend.position == 'top' || opts.legend.position == 'bottom') {\n startX += measureText(legendText, fontSize, context) + itemGap;\n item.area[2] = startX;\n } else {\n item.area[2] = startX + measureText(legendText, fontSize, context) + itemGap;\n ;\n startX -= shapeWidth + shapeRight;\n startY += lineHeight;\n }\n }\n });\n}\nfunction drawPieDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var pieOption = assign({}, {\n activeOpacity: 0.5,\n activeRadius: 10,\n offsetAngle: 0,\n labelWidth: 15,\n ringWidth: 30,\n customRadius: 0,\n border: false,\n borderWidth: 2,\n borderColor: '#FFFFFF',\n centerColor: '#FFFFFF',\n linearType: 'none',\n customColor: []\n }, opts.type == \"pie\" ? opts.extra.pie : opts.extra.ring);\n var centerPosition = {\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\n };\n if (config.pieChartLinePadding == 0) {\n config.pieChartLinePadding = pieOption.activeRadius * opts.pix;\n }\n var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\n radius = radius < 10 ? 10 : radius;\n if (pieOption.customRadius > 0) {\n radius = pieOption.customRadius * opts.pix;\n }\n series = getPieDataPoints(series, radius, process);\n var activeRadius = pieOption.activeRadius * opts.pix;\n pieOption.customColor = fillCustomColor(pieOption.linearType, pieOption.customColor, series, config);\n series = series.map(function (eachSeries) {\n eachSeries._start_ += pieOption.offsetAngle * Math.PI / 180;\n return eachSeries;\n });\n series.forEach(function (eachSeries, seriesIndex) {\n if (opts.tooltip) {\n if (opts.tooltip.index == seriesIndex) {\n context.beginPath();\n context.setFillStyle(hexToRgb(eachSeries.color, pieOption.activeOpacity || 0.5));\n context.moveTo(centerPosition.x, centerPosition.y);\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_ + activeRadius, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\n context.closePath();\n context.fill();\n }\n }\n context.beginPath();\n context.setLineWidth(pieOption.borderWidth * opts.pix);\n context.lineJoin = \"round\";\n context.setStrokeStyle(pieOption.borderColor);\n var fillcolor = eachSeries.color;\n if (pieOption.linearType == 'custom') {\n var grd;\n if (context.createCircularGradient) {\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);\n } else {\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);\n }\n grd.addColorStop(0, hexToRgb(pieOption.customColor[eachSeries.linearIndex], 1));\n grd.addColorStop(1, hexToRgb(eachSeries.color, 1));\n fillcolor = grd;\n }\n context.setFillStyle(fillcolor);\n context.moveTo(centerPosition.x, centerPosition.y);\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._proportion_ * Math.PI);\n context.closePath();\n context.fill();\n if (pieOption.border == true) {\n context.stroke();\n }\n });\n if (opts.type === 'ring') {\n var innerPieWidth = radius * 0.6;\n if (typeof pieOption.ringWidth === 'number' && pieOption.ringWidth > 0) {\n innerPieWidth = Math.max(0, radius - pieOption.ringWidth * opts.pix);\n }\n context.beginPath();\n context.setFillStyle(pieOption.centerColor);\n context.moveTo(centerPosition.x, centerPosition.y);\n context.arc(centerPosition.x, centerPosition.y, innerPieWidth, 0, 2 * Math.PI);\n context.closePath();\n context.fill();\n }\n if (opts.dataLabel !== false && process === 1) {\n drawPieText(series, opts, config, context, radius, centerPosition);\n }\n if (process === 1 && opts.type === 'ring') {\n drawRingTitle(opts, config, context, centerPosition);\n }\n return {\n center: centerPosition,\n radius: radius,\n series: series\n };\n}\nfunction drawRoseDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var roseOption = assign({}, {\n type: 'area',\n activeOpacity: 0.5,\n activeRadius: 10,\n offsetAngle: 0,\n labelWidth: 15,\n border: false,\n borderWidth: 2,\n borderColor: '#FFFFFF',\n linearType: 'none',\n customColor: []\n }, opts.extra.rose);\n if (config.pieChartLinePadding == 0) {\n config.pieChartLinePadding = roseOption.activeRadius * opts.pix;\n }\n var centerPosition = {\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\n };\n var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding - config._pieTextMaxLength_, (opts.height - opts.area[0] - opts.area[2]) / 2 - config.pieChartLinePadding - config.pieChartTextPadding);\n radius = radius < 10 ? 10 : radius;\n var minRadius = roseOption.minRadius || radius * 0.5;\n if (radius < minRadius) {\n radius = minRadius + 10;\n }\n series = getRoseDataPoints(series, roseOption.type, minRadius, radius, process);\n var activeRadius = roseOption.activeRadius * opts.pix;\n roseOption.customColor = fillCustomColor(roseOption.linearType, roseOption.customColor, series, config);\n series = series.map(function (eachSeries) {\n eachSeries._start_ += (roseOption.offsetAngle || 0) * Math.PI / 180;\n return eachSeries;\n });\n series.forEach(function (eachSeries, seriesIndex) {\n if (opts.tooltip) {\n if (opts.tooltip.index == seriesIndex) {\n context.beginPath();\n context.setFillStyle(hexToRgb(eachSeries.color, roseOption.activeOpacity || 0.5));\n context.moveTo(centerPosition.x, centerPosition.y);\n context.arc(centerPosition.x, centerPosition.y, activeRadius + eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\n context.closePath();\n context.fill();\n }\n }\n context.beginPath();\n context.setLineWidth(roseOption.borderWidth * opts.pix);\n context.lineJoin = \"round\";\n context.setStrokeStyle(roseOption.borderColor);\n var fillcolor = eachSeries.color;\n if (roseOption.linearType == 'custom') {\n var grd;\n if (context.createCircularGradient) {\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, eachSeries._radius_);\n } else {\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, eachSeries._radius_);\n }\n grd.addColorStop(0, hexToRgb(roseOption.customColor[eachSeries.linearIndex], 1));\n grd.addColorStop(1, hexToRgb(eachSeries.color, 1));\n fillcolor = grd;\n }\n context.setFillStyle(fillcolor);\n context.moveTo(centerPosition.x, centerPosition.y);\n context.arc(centerPosition.x, centerPosition.y, eachSeries._radius_, eachSeries._start_, eachSeries._start_ + 2 * eachSeries._rose_proportion_ * Math.PI);\n context.closePath();\n context.fill();\n if (roseOption.border == true) {\n context.stroke();\n }\n });\n if (opts.dataLabel !== false && process === 1) {\n drawPieText(series, opts, config, context, radius, centerPosition);\n }\n return {\n center: centerPosition,\n radius: radius,\n series: series\n };\n}\nfunction drawArcbarDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var arcbarOption = assign({}, {\n startAngle: 0.75,\n endAngle: 0.25,\n type: 'default',\n direction: 'cw',\n lineCap: 'round',\n width: 12,\n gap: 2,\n linearType: 'none',\n customColor: []\n }, opts.extra.arcbar);\n series = getArcbarDataPoints(series, arcbarOption, process);\n var centerPosition;\n if (arcbarOption.centerX || arcbarOption.centerY) {\n centerPosition = {\n x: arcbarOption.centerX ? arcbarOption.centerX : opts.width / 2,\n y: arcbarOption.centerY ? arcbarOption.centerY : opts.height / 2\n };\n } else {\n centerPosition = {\n x: opts.width / 2,\n y: opts.height / 2\n };\n }\n var radius;\n if (arcbarOption.radius) {\n radius = arcbarOption.radius;\n } else {\n radius = Math.min(centerPosition.x, centerPosition.y);\n radius -= 5 * opts.pix;\n radius -= arcbarOption.width / 2;\n }\n radius = radius < 10 ? 10 : radius;\n arcbarOption.customColor = fillCustomColor(arcbarOption.linearType, arcbarOption.customColor, series, config);\n for (var i = 0; i < series.length; i++) {\n var eachSeries = series[i];\n //背景颜色\n context.setLineWidth(arcbarOption.width * opts.pix);\n context.setStrokeStyle(arcbarOption.backgroundColor || '#E9E9E9');\n context.setLineCap(arcbarOption.lineCap);\n context.beginPath();\n if (arcbarOption.type == 'default') {\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, arcbarOption.endAngle * Math.PI, arcbarOption.direction == 'ccw');\n } else {\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, 0, 2 * Math.PI, arcbarOption.direction == 'ccw');\n }\n context.stroke();\n //进度条\n var fillColor = eachSeries.color;\n if (arcbarOption.linearType == 'custom') {\n var grd = context.createLinearGradient(centerPosition.x - radius, centerPosition.y, centerPosition.x + radius, centerPosition.y);\n grd.addColorStop(1, hexToRgb(arcbarOption.customColor[eachSeries.linearIndex], 1));\n grd.addColorStop(0, hexToRgb(eachSeries.color, 1));\n fillColor = grd;\n }\n context.setLineWidth(arcbarOption.width * opts.pix);\n context.setStrokeStyle(fillColor);\n context.setLineCap(arcbarOption.lineCap);\n context.beginPath();\n context.arc(centerPosition.x, centerPosition.y, radius - (arcbarOption.width * opts.pix + arcbarOption.gap * opts.pix) * i, arcbarOption.startAngle * Math.PI, eachSeries._proportion_ * Math.PI, arcbarOption.direction == 'ccw');\n context.stroke();\n }\n drawRingTitle(opts, config, context, centerPosition);\n return {\n center: centerPosition,\n radius: radius,\n series: series\n };\n}\nfunction drawGaugeDataPoints(categories, series, opts, config, context) {\n var process = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : 1;\n var gaugeOption = assign({}, {\n type: 'default',\n startAngle: 0.75,\n endAngle: 0.25,\n width: 15,\n labelOffset: 13,\n splitLine: {\n fixRadius: 0,\n splitNumber: 10,\n width: 15,\n color: '#FFFFFF',\n childNumber: 5,\n childWidth: 5\n },\n pointer: {\n width: 15,\n color: 'auto'\n }\n }, opts.extra.gauge);\n if (gaugeOption.oldAngle == undefined) {\n gaugeOption.oldAngle = gaugeOption.startAngle;\n }\n if (gaugeOption.oldData == undefined) {\n gaugeOption.oldData = 0;\n }\n categories = getGaugeAxisPoints(categories, gaugeOption.startAngle, gaugeOption.endAngle);\n var centerPosition = {\n x: opts.width / 2,\n y: opts.height / 2\n };\n var radius = Math.min(centerPosition.x, centerPosition.y);\n radius -= 5 * opts.pix;\n radius -= gaugeOption.width / 2;\n radius = radius < 10 ? 10 : radius;\n var innerRadius = radius - gaugeOption.width;\n var totalAngle = 0;\n //判断仪表盘的样式:default百度样式,progress新样式\n if (gaugeOption.type == 'progress') {\n //## 第一步画中心圆形背景和进度条背景\n //中心圆形背景\n var pieRadius = radius - gaugeOption.width * 3;\n context.beginPath();\n var gradient = context.createLinearGradient(centerPosition.x, centerPosition.y - pieRadius, centerPosition.x, centerPosition.y + pieRadius);\n //配置渐变填充(起点:中心点向上减半径;结束点中心点向下加半径)\n gradient.addColorStop('0', hexToRgb(series[0].color, 0.3));\n gradient.addColorStop('1.0', hexToRgb(\"#FFFFFF\", 0.1));\n context.setFillStyle(gradient);\n context.arc(centerPosition.x, centerPosition.y, pieRadius, 0, 2 * Math.PI, false);\n context.fill();\n //画进度条背景\n context.setLineWidth(gaugeOption.width);\n context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\n context.setLineCap('round');\n context.beginPath();\n context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, gaugeOption.endAngle * Math.PI, false);\n context.stroke();\n //## 第二步画刻度线\n if (gaugeOption.endAngle < gaugeOption.startAngle) {\n totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;\n } else {\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;\n }\n var splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n var childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\n var startX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\n var endX = -radius - gaugeOption.width - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\n context.save();\n context.translate(centerPosition.x, centerPosition.y);\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n var len = gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1;\n var proc = series[0].data * process;\n for (var i = 0; i < len; i++) {\n context.beginPath();\n //刻度线随进度变色\n if (proc > i / len) {\n context.setStrokeStyle(hexToRgb(series[0].color, 1));\n } else {\n context.setStrokeStyle(hexToRgb(series[0].color, 0.3));\n }\n context.setLineWidth(3 * opts.pix);\n context.moveTo(startX, 0);\n context.lineTo(endX, 0);\n context.stroke();\n context.rotate(childAngle * Math.PI);\n }\n context.restore();\n //## 第三步画进度条\n series = getGaugeArcbarDataPoints(series, gaugeOption, process);\n context.setLineWidth(gaugeOption.width);\n context.setStrokeStyle(series[0].color);\n context.setLineCap('round');\n context.beginPath();\n context.arc(centerPosition.x, centerPosition.y, innerRadius, gaugeOption.startAngle * Math.PI, series[0]._proportion_ * Math.PI, false);\n context.stroke();\n //## 第四步画指针\n var pointerRadius = radius - gaugeOption.width * 2.5;\n context.save();\n context.translate(centerPosition.x, centerPosition.y);\n context.rotate((series[0]._proportion_ - 1) * Math.PI);\n context.beginPath();\n context.setLineWidth(gaugeOption.width / 3);\n var gradient3 = context.createLinearGradient(0, -pointerRadius * 0.6, 0, pointerRadius * 0.6);\n gradient3.addColorStop('0', hexToRgb('#FFFFFF', 0));\n gradient3.addColorStop('0.5', hexToRgb(series[0].color, 1));\n gradient3.addColorStop('1.0', hexToRgb('#FFFFFF', 0));\n context.setStrokeStyle(gradient3);\n context.arc(0, 0, pointerRadius, 0.85 * Math.PI, 1.15 * Math.PI, false);\n context.stroke();\n context.beginPath();\n context.setLineWidth(1);\n context.setStrokeStyle(series[0].color);\n context.setFillStyle(series[0].color);\n context.moveTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2 - 4, 0);\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, 4);\n context.lineTo(-pointerRadius - gaugeOption.width / 3 / 2, -4);\n context.stroke();\n context.fill();\n context.restore();\n //default百度样式\n } else {\n //画背景\n context.setLineWidth(gaugeOption.width);\n context.setLineCap('butt');\n for (var _i26 = 0; _i26 < categories.length; _i26++) {\n var eachCategories = categories[_i26];\n context.beginPath();\n context.setStrokeStyle(eachCategories.color);\n context.arc(centerPosition.x, centerPosition.y, radius, eachCategories._startAngle_ * Math.PI, eachCategories._endAngle_ * Math.PI, false);\n context.stroke();\n }\n context.save();\n //画刻度线\n if (gaugeOption.endAngle < gaugeOption.startAngle) {\n totalAngle = 2 + gaugeOption.endAngle - gaugeOption.startAngle;\n } else {\n totalAngle = gaugeOption.startAngle - gaugeOption.endAngle;\n }\n var _splitAngle = totalAngle / gaugeOption.splitLine.splitNumber;\n var _childAngle = totalAngle / gaugeOption.splitLine.splitNumber / gaugeOption.splitLine.childNumber;\n var _startX2 = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius;\n var _endX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.width;\n var childendX = -radius - gaugeOption.width * 0.5 - gaugeOption.splitLine.fixRadius + gaugeOption.splitLine.childWidth;\n context.translate(centerPosition.x, centerPosition.y);\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n for (var _i27 = 0; _i27 < gaugeOption.splitLine.splitNumber + 1; _i27++) {\n context.beginPath();\n context.setStrokeStyle(gaugeOption.splitLine.color);\n context.setLineWidth(2 * opts.pix);\n context.moveTo(_startX2, 0);\n context.lineTo(_endX, 0);\n context.stroke();\n context.rotate(_splitAngle * Math.PI);\n }\n context.restore();\n context.save();\n context.translate(centerPosition.x, centerPosition.y);\n context.rotate((gaugeOption.startAngle - 1) * Math.PI);\n for (var _i28 = 0; _i28 < gaugeOption.splitLine.splitNumber * gaugeOption.splitLine.childNumber + 1; _i28++) {\n context.beginPath();\n context.setStrokeStyle(gaugeOption.splitLine.color);\n context.setLineWidth(1 * opts.pix);\n context.moveTo(_startX2, 0);\n context.lineTo(childendX, 0);\n context.stroke();\n context.rotate(_childAngle * Math.PI);\n }\n context.restore();\n //画指针\n series = getGaugeDataPoints(series, categories, gaugeOption, process);\n for (var _i29 = 0; _i29 < series.length; _i29++) {\n var eachSeries = series[_i29];\n context.save();\n context.translate(centerPosition.x, centerPosition.y);\n context.rotate((eachSeries._proportion_ - 1) * Math.PI);\n context.beginPath();\n context.setFillStyle(eachSeries.color);\n context.moveTo(gaugeOption.pointer.width, 0);\n context.lineTo(0, -gaugeOption.pointer.width / 2);\n context.lineTo(-innerRadius, 0);\n context.lineTo(0, gaugeOption.pointer.width / 2);\n context.lineTo(gaugeOption.pointer.width, 0);\n context.closePath();\n context.fill();\n context.beginPath();\n context.setFillStyle('#FFFFFF');\n context.arc(0, 0, gaugeOption.pointer.width / 6, 0, 2 * Math.PI, false);\n context.fill();\n context.restore();\n }\n if (opts.dataLabel !== false) {\n drawGaugeLabel(gaugeOption, radius, centerPosition, opts, config, context);\n }\n }\n //画仪表盘标题,副标题\n drawRingTitle(opts, config, context, centerPosition);\n if (process === 1 && opts.type === 'gauge') {\n opts.extra.gauge.oldAngle = series[0]._proportion_;\n opts.extra.gauge.oldData = series[0].data;\n }\n return {\n center: centerPosition,\n radius: radius,\n innerRadius: innerRadius,\n categories: categories,\n totalAngle: totalAngle\n };\n}\nfunction drawRadarDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var radarOption = assign({}, {\n gridColor: '#cccccc',\n gridType: 'radar',\n gridEval: 1,\n axisLabel: false,\n axisLabelTofix: 0,\n labelShow: true,\n labelColor: '#666666',\n labelPointShow: false,\n labelPointRadius: 3,\n labelPointColor: '#cccccc',\n opacity: 0.2,\n gridCount: 3,\n border: false,\n borderWidth: 2,\n linearType: 'none',\n customColor: []\n }, opts.extra.radar);\n var coordinateAngle = getRadarCoordinateSeries(opts.categories.length);\n var centerPosition = {\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n y: opts.area[0] + (opts.height - opts.area[0] - opts.area[2]) / 2\n };\n var xr = (opts.width - opts.area[1] - opts.area[3]) / 2;\n var yr = (opts.height - opts.area[0] - opts.area[2]) / 2;\n var radius = Math.min(xr - (getMaxTextListLength(opts.categories, config.fontSize, context) + config.radarLabelTextMargin), yr - config.radarLabelTextMargin);\n radius -= config.radarLabelTextMargin * opts.pix;\n radius = radius < 10 ? 10 : radius;\n radius = radarOption.radius ? radarOption.radius : radius;\n // 画分割线\n context.beginPath();\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(radarOption.gridColor);\n coordinateAngle.forEach(function (angle, index) {\n var pos = convertCoordinateOrigin(radius * Math.cos(angle), radius * Math.sin(angle), centerPosition);\n context.moveTo(centerPosition.x, centerPosition.y);\n if (index % radarOption.gridEval == 0) {\n context.lineTo(pos.x, pos.y);\n }\n });\n context.stroke();\n context.closePath();\n\n // 画背景网格\n var _loop = function _loop(i) {\n var startPos = {};\n context.beginPath();\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(radarOption.gridColor);\n if (radarOption.gridType == 'radar') {\n coordinateAngle.forEach(function (angle, index) {\n var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(angle), radius / radarOption.gridCount * i * Math.sin(angle), centerPosition);\n if (index === 0) {\n startPos = pos;\n context.moveTo(pos.x, pos.y);\n } else {\n context.lineTo(pos.x, pos.y);\n }\n });\n context.lineTo(startPos.x, startPos.y);\n } else {\n var pos = convertCoordinateOrigin(radius / radarOption.gridCount * i * Math.cos(1.5), radius / radarOption.gridCount * i * Math.sin(1.5), centerPosition);\n context.arc(centerPosition.x, centerPosition.y, centerPosition.y - pos.y, 0, 2 * Math.PI, false);\n }\n context.stroke();\n context.closePath();\n };\n for (var i = 1; i <= radarOption.gridCount; i++) {\n _loop(i);\n }\n radarOption.customColor = fillCustomColor(radarOption.linearType, radarOption.customColor, series, config);\n var radarDataPoints = getRadarDataPoints(coordinateAngle, centerPosition, radius, series, opts, process);\n radarDataPoints.forEach(function (eachSeries, seriesIndex) {\n // 绘制区域数据\n context.beginPath();\n context.setLineWidth(radarOption.borderWidth * opts.pix);\n context.setStrokeStyle(eachSeries.color);\n var fillcolor = hexToRgb(eachSeries.color, radarOption.opacity);\n if (radarOption.linearType == 'custom') {\n var grd;\n if (context.createCircularGradient) {\n grd = context.createCircularGradient(centerPosition.x, centerPosition.y, radius);\n } else {\n grd = context.createRadialGradient(centerPosition.x, centerPosition.y, 0, centerPosition.x, centerPosition.y, radius);\n }\n grd.addColorStop(0, hexToRgb(radarOption.customColor[series[seriesIndex].linearIndex], radarOption.opacity));\n grd.addColorStop(1, hexToRgb(eachSeries.color, radarOption.opacity));\n fillcolor = grd;\n }\n context.setFillStyle(fillcolor);\n eachSeries.data.forEach(function (item, index) {\n if (index === 0) {\n context.moveTo(item.position.x, item.position.y);\n } else {\n context.lineTo(item.position.x, item.position.y);\n }\n });\n context.closePath();\n context.fill();\n if (radarOption.border === true) {\n context.stroke();\n }\n context.closePath();\n if (opts.dataPointShape !== false) {\n var points = eachSeries.data.map(function (item) {\n return item.position;\n });\n drawPointShape(points, eachSeries.color, eachSeries.pointShape, context, opts);\n }\n });\n // 画刻度值\n if (radarOption.axisLabel === true) {\n var maxData = Math.max(radarOption.max, Math.max.apply(null, dataCombine(series)));\n var stepLength = radius / radarOption.gridCount;\n var fontSize = opts.fontSize * opts.pix;\n context.setFontSize(fontSize);\n context.setFillStyle(opts.fontColor);\n context.setTextAlign('left');\n for (var i = 0; i < radarOption.gridCount + 1; i++) {\n var label = i * maxData / radarOption.gridCount;\n label = label.toFixed(radarOption.axisLabelTofix);\n context.fillText(String(label), centerPosition.x + 3 * opts.pix, centerPosition.y - i * stepLength + fontSize / 2);\n }\n }\n\n // draw label text\n drawRadarLabel(coordinateAngle, radius, centerPosition, opts, config, context);\n\n // draw dataLabel\n if (opts.dataLabel !== false && process === 1) {\n radarDataPoints.forEach(function (eachSeries, seriesIndex) {\n context.beginPath();\n var fontSize = eachSeries.textSize * opts.pix || config.fontSize;\n context.setFontSize(fontSize);\n context.setFillStyle(eachSeries.textColor || opts.fontColor);\n eachSeries.data.forEach(function (item, index) {\n //如果是中心点垂直的上下点位\n if (Math.abs(item.position.x - centerPosition.x) < 2) {\n //如果在上面\n if (item.position.y < centerPosition.y) {\n context.setTextAlign('center');\n context.fillText(item.value, item.position.x, item.position.y - 4);\n } else {\n context.setTextAlign('center');\n context.fillText(item.value, item.position.x, item.position.y + fontSize + 2);\n }\n } else {\n //如果在左侧\n if (item.position.x < centerPosition.x) {\n context.setTextAlign('right');\n context.fillText(item.value, item.position.x - 4, item.position.y + fontSize / 2 - 2);\n } else {\n context.setTextAlign('left');\n context.fillText(item.value, item.position.x + 4, item.position.y + fontSize / 2 - 2);\n }\n }\n });\n context.closePath();\n context.stroke();\n });\n context.setTextAlign('left');\n }\n return {\n center: centerPosition,\n radius: radius,\n angleList: coordinateAngle\n };\n}\n\n// 经纬度转墨卡托\nfunction lonlat2mercator(longitude, latitude) {\n var mercator = Array(2);\n var x = longitude * 20037508.34 / 180;\n var y = Math.log(Math.tan((90 + latitude) * Math.PI / 360)) / (Math.PI / 180);\n y = y * 20037508.34 / 180;\n mercator[0] = x;\n mercator[1] = y;\n return mercator;\n}\n\n// 墨卡托转经纬度\nfunction mercator2lonlat(longitude, latitude) {\n var lonlat = Array(2);\n var x = longitude / 20037508.34 * 180;\n var y = latitude / 20037508.34 * 180;\n y = 180 / Math.PI * (2 * Math.atan(Math.exp(y * Math.PI / 180)) - Math.PI / 2);\n lonlat[0] = x;\n lonlat[1] = y;\n return lonlat;\n}\nfunction getBoundingBox(data) {\n var bounds = {},\n coords;\n bounds.xMin = 180;\n bounds.xMax = 0;\n bounds.yMin = 90;\n bounds.yMax = 0;\n for (var i = 0; i < data.length; i++) {\n var coorda = data[i].geometry.coordinates;\n for (var k = 0; k < coorda.length; k++) {\n coords = coorda[k];\n if (coords.length == 1) {\n coords = coords[0];\n }\n for (var j = 0; j < coords.length; j++) {\n var longitude = coords[j][0];\n var latitude = coords[j][1];\n var point = {\n x: longitude,\n y: latitude\n };\n bounds.xMin = bounds.xMin < point.x ? bounds.xMin : point.x;\n bounds.xMax = bounds.xMax > point.x ? bounds.xMax : point.x;\n bounds.yMin = bounds.yMin < point.y ? bounds.yMin : point.y;\n bounds.yMax = bounds.yMax > point.y ? bounds.yMax : point.y;\n }\n }\n }\n return bounds;\n}\nfunction coordinateToPoint(latitude, longitude, bounds, scale, xoffset, yoffset) {\n return {\n x: (longitude - bounds.xMin) * scale + xoffset,\n y: (bounds.yMax - latitude) * scale + yoffset\n };\n}\nfunction pointToCoordinate(pointY, pointX, bounds, scale, xoffset, yoffset) {\n return {\n x: (pointX - xoffset) / scale + bounds.xMin,\n y: bounds.yMax - (pointY - yoffset) / scale\n };\n}\nfunction isRayIntersectsSegment(poi, s_poi, e_poi) {\n if (s_poi[1] == e_poi[1]) {\n return false;\n }\n if (s_poi[1] > poi[1] && e_poi[1] > poi[1]) {\n return false;\n }\n if (s_poi[1] < poi[1] && e_poi[1] < poi[1]) {\n return false;\n }\n if (s_poi[1] == poi[1] && e_poi[1] > poi[1]) {\n return false;\n }\n if (e_poi[1] == poi[1] && s_poi[1] > poi[1]) {\n return false;\n }\n if (s_poi[0] < poi[0] && e_poi[1] < poi[1]) {\n return false;\n }\n var xseg = e_poi[0] - (e_poi[0] - s_poi[0]) * (e_poi[1] - poi[1]) / (e_poi[1] - s_poi[1]);\n if (xseg < poi[0]) {\n return false;\n } else {\n return true;\n }\n}\nfunction isPoiWithinPoly(poi, poly, mercator) {\n var sinsc = 0;\n for (var i = 0; i < poly.length; i++) {\n var epoly = poly[i][0];\n if (poly.length == 1) {\n epoly = poly[i][0];\n }\n for (var j = 0; j < epoly.length - 1; j++) {\n var s_poi = epoly[j];\n var e_poi = epoly[j + 1];\n if (mercator) {\n s_poi = lonlat2mercator(epoly[j][0], epoly[j][1]);\n e_poi = lonlat2mercator(epoly[j + 1][0], epoly[j + 1][1]);\n }\n if (isRayIntersectsSegment(poi, s_poi, e_poi)) {\n sinsc += 1;\n }\n }\n }\n if (sinsc % 2 == 1) {\n return true;\n } else {\n return false;\n }\n}\nfunction drawMapDataPoints(series, opts, config, context) {\n var mapOption = assign({}, {\n border: true,\n mercator: false,\n borderWidth: 1,\n active: true,\n borderColor: '#666666',\n fillOpacity: 0.6,\n activeBorderColor: '#f04864',\n activeFillColor: '#facc14',\n activeFillOpacity: 1\n }, opts.extra.map);\n var coords, point;\n var data = series;\n var bounds = getBoundingBox(data);\n if (mapOption.mercator) {\n var max = lonlat2mercator(bounds.xMax, bounds.yMax);\n var min = lonlat2mercator(bounds.xMin, bounds.yMin);\n bounds.xMax = max[0];\n bounds.yMax = max[1];\n bounds.xMin = min[0];\n bounds.yMin = min[1];\n }\n var xScale = opts.width / Math.abs(bounds.xMax - bounds.xMin);\n var yScale = opts.height / Math.abs(bounds.yMax - bounds.yMin);\n var scale = xScale < yScale ? xScale : yScale;\n var xoffset = opts.width / 2 - Math.abs(bounds.xMax - bounds.xMin) / 2 * scale;\n var yoffset = opts.height / 2 - Math.abs(bounds.yMax - bounds.yMin) / 2 * scale;\n for (var i = 0; i < data.length; i++) {\n context.beginPath();\n context.setLineWidth(mapOption.borderWidth * opts.pix);\n context.setStrokeStyle(mapOption.borderColor);\n context.setFillStyle(hexToRgb(series[i].color, series[i].fillOpacity || mapOption.fillOpacity));\n if (mapOption.active == true && opts.tooltip) {\n if (opts.tooltip.index == i) {\n context.setStrokeStyle(mapOption.activeBorderColor);\n context.setFillStyle(hexToRgb(mapOption.activeFillColor, mapOption.activeFillOpacity));\n }\n }\n var coorda = data[i].geometry.coordinates;\n for (var k = 0; k < coorda.length; k++) {\n coords = coorda[k];\n if (coords.length == 1) {\n coords = coords[0];\n }\n for (var j = 0; j < coords.length; j++) {\n var gaosi = Array(2);\n if (mapOption.mercator) {\n gaosi = lonlat2mercator(coords[j][0], coords[j][1]);\n } else {\n gaosi = coords[j];\n }\n point = coordinateToPoint(gaosi[1], gaosi[0], bounds, scale, xoffset, yoffset);\n if (j === 0) {\n context.beginPath();\n context.moveTo(point.x, point.y);\n } else {\n context.lineTo(point.x, point.y);\n }\n }\n context.fill();\n if (mapOption.border == true) {\n context.stroke();\n }\n }\n }\n if (opts.dataLabel == true) {\n for (var i = 0; i < data.length; i++) {\n var centerPoint = data[i].properties.centroid;\n if (centerPoint) {\n if (mapOption.mercator) {\n centerPoint = lonlat2mercator(data[i].properties.centroid[0], data[i].properties.centroid[1]);\n }\n point = coordinateToPoint(centerPoint[1], centerPoint[0], bounds, scale, xoffset, yoffset);\n var fontSize = data[i].textSize * opts.pix || config.fontSize;\n var fontColor = data[i].textColor || opts.fontColor;\n if (mapOption.active && mapOption.activeTextColor && opts.tooltip && opts.tooltip.index == i) {\n fontColor = mapOption.activeTextColor;\n }\n var text = data[i].properties.name;\n context.beginPath();\n context.setFontSize(fontSize);\n context.setFillStyle(fontColor);\n context.fillText(text, point.x - measureText(text, fontSize, context) / 2, point.y + fontSize / 2);\n context.closePath();\n context.stroke();\n }\n }\n }\n opts.chartData.mapData = {\n bounds: bounds,\n scale: scale,\n xoffset: xoffset,\n yoffset: yoffset,\n mercator: mapOption.mercator\n };\n drawToolTipBridge(opts, config, context, 1);\n context.draw();\n}\nfunction normalInt(min, max, iter) {\n iter = iter == 0 ? 1 : iter;\n var arr = [];\n for (var i = 0; i < iter; i++) {\n arr[i] = Math.random();\n }\n ;\n return Math.floor(arr.reduce(function (i, j) {\n return i + j;\n }) / iter * (max - min)) + min;\n}\n;\nfunction collisionNew(area, points, width, height) {\n var isIn = false;\n for (var i = 0; i < points.length; i++) {\n if (points[i].area) {\n if (area[3] < points[i].area[1] || area[0] > points[i].area[2] || area[1] > points[i].area[3] || area[2] < points[i].area[0]) {\n if (area[0] < 0 || area[1] < 0 || area[2] > width || area[3] > height) {\n isIn = true;\n break;\n } else {\n isIn = false;\n }\n } else {\n isIn = true;\n break;\n }\n }\n }\n return isIn;\n}\n;\nfunction getWordCloudPoint(opts, type, context) {\n var points = opts.series;\n switch (type) {\n case 'normal':\n for (var i = 0; i < points.length; i++) {\n var text = points[i].name;\n var tHeight = points[i].textSize * opts.pix;\n var tWidth = measureText(text, tHeight, context);\n var x = void 0,\n y = void 0;\n var area = void 0;\n var breaknum = 0;\n while (true) {\n breaknum++;\n x = normalInt(-opts.width / 2, opts.width / 2, 5) - tWidth / 2;\n y = normalInt(-opts.height / 2, opts.height / 2, 5) + tHeight / 2;\n area = [x - 5 + opts.width / 2, y - 5 - tHeight + opts.height / 2, x + tWidth + 5 + opts.width / 2, y + 5 + opts.height / 2];\n var isCollision = collisionNew(area, points, opts.width, opts.height);\n if (!isCollision) break;\n if (breaknum == 1000) {\n area = [-100, -100, -100, -100];\n break;\n }\n }\n ;\n points[i].area = area;\n }\n break;\n case 'vertical':\n var Spin = function Spin() {\n //获取均匀随机值,是否旋转,旋转的概率为(1-0.5)\n if (Math.random() > 0.7) {\n return true;\n } else {\n return false;\n }\n ;\n };\n ;\n for (var _i30 = 0; _i30 < points.length; _i30++) {\n var _text = points[_i30].name;\n var _tHeight = points[_i30].textSize * opts.pix;\n var _tWidth = measureText(_text, _tHeight, context);\n var isSpin = Spin();\n var _x = void 0,\n _y = void 0,\n _area = void 0,\n areav = void 0;\n var _breaknum = 0;\n while (true) {\n _breaknum++;\n var _isCollision = void 0;\n if (isSpin) {\n _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;\n _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;\n _area = [_y - 5 - _tWidth + opts.width / 2, -_x - 5 + opts.height / 2, _y + 5 + opts.width / 2, -_x + _tHeight + 5 + opts.height / 2];\n areav = [opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) - 5, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) - 5, opts.width - (opts.width / 2 - opts.height / 2) - (-_x + _tHeight + 5 + opts.height / 2) + _tHeight, opts.height / 2 - opts.width / 2 + (_y - 5 - _tWidth + opts.width / 2) + _tWidth + 5];\n _isCollision = collisionNew(areav, points, opts.height, opts.width);\n } else {\n _x = normalInt(-opts.width / 2, opts.width / 2, 5) - _tWidth / 2;\n _y = normalInt(-opts.height / 2, opts.height / 2, 5) + _tHeight / 2;\n _area = [_x - 5 + opts.width / 2, _y - 5 - _tHeight + opts.height / 2, _x + _tWidth + 5 + opts.width / 2, _y + 5 + opts.height / 2];\n _isCollision = collisionNew(_area, points, opts.width, opts.height);\n }\n if (!_isCollision) break;\n if (_breaknum == 1000) {\n _area = [-1000, -1000, -1000, -1000];\n break;\n }\n }\n ;\n if (isSpin) {\n points[_i30].area = areav;\n points[_i30].areav = _area;\n } else {\n points[_i30].area = _area;\n }\n points[_i30].rotate = isSpin;\n }\n ;\n break;\n }\n return points;\n}\nfunction drawWordCloudDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var wordOption = assign({}, {\n type: 'normal',\n autoColors: true\n }, opts.extra.word);\n if (!opts.chartData.wordCloudData) {\n opts.chartData.wordCloudData = getWordCloudPoint(opts, wordOption.type, context);\n }\n context.beginPath();\n context.setFillStyle(opts.background);\n context.rect(0, 0, opts.width, opts.height);\n context.fill();\n context.save();\n var points = opts.chartData.wordCloudData;\n context.translate(opts.width / 2, opts.height / 2);\n for (var i = 0; i < points.length; i++) {\n context.save();\n if (points[i].rotate) {\n context.rotate(90 * Math.PI / 180);\n }\n var text = points[i].name;\n var tHeight = points[i].textSize * opts.pix;\n var tWidth = measureText(text, tHeight, context);\n context.beginPath();\n context.setStrokeStyle(points[i].color);\n context.setFillStyle(points[i].color);\n context.setFontSize(tHeight);\n if (points[i].rotate) {\n if (points[i].areav[0] > 0) {\n if (opts.tooltip) {\n if (opts.tooltip.index == i) {\n context.strokeText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n } else {\n context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n }\n } else {\n context.fillText(text, (points[i].areav[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].areav[1] + 5 + tHeight - opts.height / 2) * process);\n }\n }\n } else {\n if (points[i].area[0] > 0) {\n if (opts.tooltip) {\n if (opts.tooltip.index == i) {\n context.strokeText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n } else {\n context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n }\n } else {\n context.fillText(text, (points[i].area[0] + 5 - opts.width / 2) * process - tWidth * (1 - process) / 2, (points[i].area[1] + 5 + tHeight - opts.height / 2) * process);\n }\n }\n }\n context.stroke();\n context.restore();\n }\n context.restore();\n}\nfunction drawFunnelDataPoints(series, opts, config, context) {\n var process = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 1;\n var funnelOption = assign({}, {\n type: 'funnel',\n activeWidth: 10,\n activeOpacity: 0.3,\n border: false,\n borderWidth: 2,\n borderColor: '#FFFFFF',\n fillOpacity: 1,\n minSize: 0,\n labelAlign: 'right',\n linearType: 'none',\n customColor: []\n }, opts.extra.funnel);\n var eachSpacing = (opts.height - opts.area[0] - opts.area[2]) / series.length;\n var centerPosition = {\n x: opts.area[3] + (opts.width - opts.area[1] - opts.area[3]) / 2,\n y: opts.height - opts.area[2]\n };\n var activeWidth = funnelOption.activeWidth * opts.pix;\n var radius = Math.min((opts.width - opts.area[1] - opts.area[3]) / 2 - activeWidth, (opts.height - opts.area[0] - opts.area[2]) / 2 - activeWidth);\n var seriesNew = getFunnelDataPoints(series, radius, funnelOption, eachSpacing, process);\n context.save();\n context.translate(centerPosition.x, centerPosition.y);\n funnelOption.customColor = fillCustomColor(funnelOption.linearType, funnelOption.customColor, series, config);\n if (funnelOption.type == 'pyramid') {\n for (var i = 0; i < seriesNew.length; i++) {\n if (i == seriesNew.length - 1) {\n if (opts.tooltip) {\n if (opts.tooltip.index == i) {\n context.beginPath();\n context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity));\n context.moveTo(-activeWidth, -eachSpacing);\n context.lineTo(-seriesNew[i].radius - activeWidth, 0);\n context.lineTo(seriesNew[i].radius + activeWidth, 0);\n context.lineTo(activeWidth, -eachSpacing);\n context.lineTo(-activeWidth, -eachSpacing);\n context.closePath();\n context.fill();\n }\n }\n seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i];\n context.beginPath();\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\n context.setStrokeStyle(funnelOption.borderColor);\n var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity);\n if (funnelOption.linearType == 'custom') {\n var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing);\n grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity));\n grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n fillColor = grd;\n }\n context.setFillStyle(fillColor);\n context.moveTo(0, -eachSpacing);\n context.lineTo(-seriesNew[i].radius, 0);\n context.lineTo(seriesNew[i].radius, 0);\n context.lineTo(0, -eachSpacing);\n context.closePath();\n context.fill();\n if (funnelOption.border == true) {\n context.stroke();\n }\n } else {\n if (opts.tooltip) {\n if (opts.tooltip.index == i) {\n context.beginPath();\n context.setFillStyle(hexToRgb(seriesNew[i].color, funnelOption.activeOpacity));\n context.moveTo(0, 0);\n context.lineTo(-seriesNew[i].radius - activeWidth, 0);\n context.lineTo(-seriesNew[i + 1].radius - activeWidth, -eachSpacing);\n context.lineTo(seriesNew[i + 1].radius + activeWidth, -eachSpacing);\n context.lineTo(seriesNew[i].radius + activeWidth, 0);\n context.lineTo(0, 0);\n context.closePath();\n context.fill();\n }\n }\n seriesNew[i].funnelArea = [centerPosition.x - seriesNew[i].radius, centerPosition.y - eachSpacing * (i + 1), centerPosition.x + seriesNew[i].radius, centerPosition.y - eachSpacing * i];\n context.beginPath();\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\n context.setStrokeStyle(funnelOption.borderColor);\n var fillColor = hexToRgb(seriesNew[i].color, funnelOption.fillOpacity);\n if (funnelOption.linearType == 'custom') {\n var grd = context.createLinearGradient(seriesNew[i].radius, -eachSpacing, -seriesNew[i].radius, -eachSpacing);\n grd.addColorStop(0, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[i].linearIndex], funnelOption.fillOpacity));\n grd.addColorStop(1, hexToRgb(seriesNew[i].color, funnelOption.fillOpacity));\n fillColor = grd;\n }\n context.setFillStyle(fillColor);\n context.moveTo(0, 0);\n context.lineTo(-seriesNew[i].radius, 0);\n context.lineTo(-seriesNew[i + 1].radius, -eachSpacing);\n context.lineTo(seriesNew[i + 1].radius, -eachSpacing);\n context.lineTo(seriesNew[i].radius, 0);\n context.lineTo(0, 0);\n context.closePath();\n context.fill();\n if (funnelOption.border == true) {\n context.stroke();\n }\n }\n context.translate(0, -eachSpacing);\n }\n } else {\n context.translate(0, -(seriesNew.length - 1) * eachSpacing);\n for (var _i31 = 0; _i31 < seriesNew.length; _i31++) {\n if (_i31 == seriesNew.length - 1) {\n if (opts.tooltip) {\n if (opts.tooltip.index == _i31) {\n context.beginPath();\n context.setFillStyle(hexToRgb(seriesNew[_i31].color, funnelOption.activeOpacity));\n context.moveTo(-activeWidth - funnelOption.minSize / 2, 0);\n context.lineTo(-seriesNew[_i31].radius - activeWidth, -eachSpacing);\n context.lineTo(seriesNew[_i31].radius + activeWidth, -eachSpacing);\n context.lineTo(activeWidth + funnelOption.minSize / 2, 0);\n context.lineTo(-activeWidth - funnelOption.minSize / 2, 0);\n context.closePath();\n context.fill();\n }\n }\n seriesNew[_i31].funnelArea = [centerPosition.x - seriesNew[_i31].radius, centerPosition.y - eachSpacing, centerPosition.x + seriesNew[_i31].radius, centerPosition.y];\n context.beginPath();\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\n context.setStrokeStyle(funnelOption.borderColor);\n var fillColor = hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity);\n if (funnelOption.linearType == 'custom') {\n var grd = context.createLinearGradient(seriesNew[_i31].radius, -eachSpacing, -seriesNew[_i31].radius, -eachSpacing);\n grd.addColorStop(0, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[_i31].linearIndex], funnelOption.fillOpacity));\n grd.addColorStop(1, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n fillColor = grd;\n }\n context.setFillStyle(fillColor);\n context.moveTo(0, 0);\n context.lineTo(-funnelOption.minSize / 2, 0);\n context.lineTo(-seriesNew[_i31].radius, -eachSpacing);\n context.lineTo(seriesNew[_i31].radius, -eachSpacing);\n context.lineTo(funnelOption.minSize / 2, 0);\n context.lineTo(0, 0);\n context.closePath();\n context.fill();\n if (funnelOption.border == true) {\n context.stroke();\n }\n } else {\n if (opts.tooltip) {\n if (opts.tooltip.index == _i31) {\n context.beginPath();\n context.setFillStyle(hexToRgb(seriesNew[_i31].color, funnelOption.activeOpacity));\n context.moveTo(0, 0);\n context.lineTo(-seriesNew[_i31 + 1].radius - activeWidth, 0);\n context.lineTo(-seriesNew[_i31].radius - activeWidth, -eachSpacing);\n context.lineTo(seriesNew[_i31].radius + activeWidth, -eachSpacing);\n context.lineTo(seriesNew[_i31 + 1].radius + activeWidth, 0);\n context.lineTo(0, 0);\n context.closePath();\n context.fill();\n }\n }\n seriesNew[_i31].funnelArea = [centerPosition.x - seriesNew[_i31].radius, centerPosition.y - eachSpacing * (seriesNew.length - _i31), centerPosition.x + seriesNew[_i31].radius, centerPosition.y - eachSpacing * (seriesNew.length - _i31 - 1)];\n context.beginPath();\n context.setLineWidth(funnelOption.borderWidth * opts.pix);\n context.setStrokeStyle(funnelOption.borderColor);\n var fillColor = hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity);\n if (funnelOption.linearType == 'custom') {\n var grd = context.createLinearGradient(seriesNew[_i31].radius, -eachSpacing, -seriesNew[_i31].radius, -eachSpacing);\n grd.addColorStop(0, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n grd.addColorStop(0.5, hexToRgb(funnelOption.customColor[seriesNew[_i31].linearIndex], funnelOption.fillOpacity));\n grd.addColorStop(1, hexToRgb(seriesNew[_i31].color, funnelOption.fillOpacity));\n fillColor = grd;\n }\n context.setFillStyle(fillColor);\n context.moveTo(0, 0);\n context.lineTo(-seriesNew[_i31 + 1].radius, 0);\n context.lineTo(-seriesNew[_i31].radius, -eachSpacing);\n context.lineTo(seriesNew[_i31].radius, -eachSpacing);\n context.lineTo(seriesNew[_i31 + 1].radius, 0);\n context.lineTo(0, 0);\n context.closePath();\n context.fill();\n if (funnelOption.border == true) {\n context.stroke();\n }\n }\n context.translate(0, eachSpacing);\n }\n }\n context.restore();\n if (opts.dataLabel !== false && process === 1) {\n drawFunnelText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);\n }\n if (process === 1) {\n drawFunnelCenterText(seriesNew, opts, context, eachSpacing, funnelOption.labelAlign, activeWidth, centerPosition);\n }\n return {\n center: centerPosition,\n radius: radius,\n series: seriesNew\n };\n}\nfunction drawFunnelText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n if (item.labelShow === false) {\n continue;\n }\n var startX = void 0,\n endX = void 0,\n startY = void 0,\n fontSize = void 0;\n var text = item.formatter ? item.formatter(item, i, series, opts) : util.toFixed(item._proportion_ * 100) + '%';\n text = item.labelText ? item.labelText : text;\n if (labelAlign == 'right') {\n if (i == series.length - 1) {\n startX = (item.funnelArea[2] + centerPosition.x) / 2;\n } else {\n startX = (item.funnelArea[2] + series[i + 1].funnelArea[2]) / 2;\n }\n endX = startX + activeWidth * 2;\n startY = item.funnelArea[1] + eachSpacing / 2;\n fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(item.color);\n context.setFillStyle(item.color);\n context.beginPath();\n context.moveTo(startX, startY);\n context.lineTo(endX, startY);\n context.stroke();\n context.closePath();\n context.beginPath();\n context.moveTo(endX, startY);\n context.arc(endX, startY, 2 * opts.pix, 0, 2 * Math.PI);\n context.closePath();\n context.fill();\n context.beginPath();\n context.setFontSize(fontSize);\n context.setFillStyle(item.textColor || opts.fontColor);\n context.fillText(text, endX + 5, startY + fontSize / 2 - 2);\n context.closePath();\n context.stroke();\n context.closePath();\n }\n if (labelAlign == 'left') {\n if (i == series.length - 1) {\n startX = (item.funnelArea[0] + centerPosition.x) / 2;\n } else {\n startX = (item.funnelArea[0] + series[i + 1].funnelArea[0]) / 2;\n }\n endX = startX - activeWidth * 2;\n startY = item.funnelArea[1] + eachSpacing / 2;\n fontSize = item.textSize * opts.pix || opts.fontSize * opts.pix;\n context.setLineWidth(1 * opts.pix);\n context.setStrokeStyle(item.color);\n context.setFillStyle(item.color);\n context.beginPath();\n context.moveTo(startX, startY);\n context.lineTo(endX, startY);\n context.stroke();\n context.closePath();\n context.beginPath();\n context.moveTo(endX, startY);\n context.arc(endX, startY, 2, 0, 2 * Math.PI);\n context.closePath();\n context.fill();\n context.beginPath();\n context.setFontSize(fontSize);\n context.setFillStyle(item.textColor || opts.fontColor);\n context.fillText(text, endX - 5 - measureText(text, fontSize, context), startY + fontSize / 2 - 2);\n context.closePath();\n context.stroke();\n context.closePath();\n }\n }\n}\nfunction drawFunnelCenterText(series, opts, context, eachSpacing, labelAlign, activeWidth, centerPosition) {\n for (var i = 0; i < series.length; i++) {\n var item = series[i];\n var startY = void 0,\n fontSize = void 0;\n if (item.centerText) {\n startY = item.funnelArea[1] + eachSpacing / 2;\n fontSize = item.centerTextSize * opts.pix || opts.fontSize * opts.pix;\n context.beginPath();\n context.setFontSize(fontSize);\n context.setFillStyle(item.centerTextColor || \"#FFFFFF\");\n context.fillText(item.centerText, centerPosition.x - measureText(item.centerText, fontSize, context) / 2, startY + fontSize / 2 - 2);\n context.closePath();\n context.stroke();\n context.closePath();\n }\n }\n}\nfunction drawCanvas(opts, context) {\n context.save();\n context.translate(0, 0.5);\n context.restore();\n context.draw();\n}\nvar Timing = {\n easeIn: function easeIn(pos) {\n return Math.pow(pos, 3);\n },\n easeOut: function easeOut(pos) {\n return Math.pow(pos - 1, 3) + 1;\n },\n easeInOut: function easeInOut(pos) {\n if ((pos /= 0.5) < 1) {\n return 0.5 * Math.pow(pos, 3);\n } else {\n return 0.5 * (Math.pow(pos - 2, 3) + 2);\n }\n },\n linear: function linear(pos) {\n return pos;\n }\n};\nfunction Animation(opts) {\n this.isStop = false;\n opts.duration = typeof opts.duration === 'undefined' ? 1000 : opts.duration;\n opts.timing = opts.timing || 'easeInOut';\n var delay = 17;\n function createAnimationFrame() {\n if (typeof setTimeout !== 'undefined') {\n return function (step, delay) {\n setTimeout(function () {\n var timeStamp = +new Date();\n step(timeStamp);\n }, delay);\n };\n } else if (typeof requestAnimationFrame !== 'undefined') {\n return requestAnimationFrame;\n } else {\n return function (step) {\n step(null);\n };\n }\n }\n ;\n var animationFrame = createAnimationFrame();\n var startTimeStamp = null;\n var _step = function step(timestamp) {\n if (timestamp === null || this.isStop === true) {\n opts.onProcess && opts.onProcess(1);\n opts.onAnimationFinish && opts.onAnimationFinish();\n return;\n }\n if (startTimeStamp === null) {\n startTimeStamp = timestamp;\n }\n if (timestamp - startTimeStamp < opts.duration) {\n var process = (timestamp - startTimeStamp) / opts.duration;\n var timingFunction = Timing[opts.timing];\n process = timingFunction(process);\n opts.onProcess && opts.onProcess(process);\n animationFrame(_step, delay);\n } else {\n opts.onProcess && opts.onProcess(1);\n opts.onAnimationFinish && opts.onAnimationFinish();\n }\n };\n _step = _step.bind(this);\n animationFrame(_step, delay);\n}\nAnimation.prototype.stop = function () {\n this.isStop = true;\n};\nfunction drawCharts(type, opts, config, context) {\n var _this2 = this;\n var _this = this;\n var series = opts.series;\n //兼容ECharts饼图类数据格式\n if (type === 'pie' || type === 'ring' || type === 'mount' || type === 'rose' || type === 'funnel') {\n series = fixPieSeries(series, opts, config);\n }\n var categories = opts.categories;\n if (type === 'mount') {\n categories = [];\n for (var j = 0; j < series.length; j++) {\n if (series[j].show !== false) categories.push(series[j].name);\n }\n opts.categories = categories;\n }\n series = fillSeries(series, opts, config);\n var duration = opts.animation ? opts.duration : 0;\n _this.animationInstance && _this.animationInstance.stop();\n var seriesMA = null;\n if (type == 'candle') {\n var average = assign({}, opts.extra.candle.average);\n if (average.show) {\n seriesMA = calCandleMA(average.day, average.name, average.color, series[0].data);\n seriesMA = fillSeries(seriesMA, opts, config);\n opts.seriesMA = seriesMA;\n } else if (opts.seriesMA) {\n seriesMA = opts.seriesMA = fillSeries(opts.seriesMA, opts, config);\n } else {\n seriesMA = series;\n }\n } else {\n seriesMA = series;\n }\n /* 过滤掉show=false的series */\n opts._series_ = series = filterSeries(series);\n //重新计算图表区域\n opts.area = new Array(4);\n //复位绘图区域\n for (var _j11 = 0; _j11 < 4; _j11++) {\n opts.area[_j11] = opts.padding[_j11] * opts.pix;\n }\n //通过计算三大区域:图例、X轴、Y轴的大小,确定绘图区域\n var _calLegendData = calLegendData(seriesMA, opts, config, opts.chartData, context),\n legendHeight = _calLegendData.area.wholeHeight,\n legendWidth = _calLegendData.area.wholeWidth;\n switch (opts.legend.position) {\n case 'top':\n opts.area[0] += legendHeight;\n break;\n case 'bottom':\n opts.area[2] += legendHeight;\n break;\n case 'left':\n opts.area[3] += legendWidth;\n break;\n case 'right':\n opts.area[1] += legendWidth;\n break;\n }\n var _calYAxisData = {},\n yAxisWidth = 0;\n if (opts.type === 'line' || opts.type === 'column' || opts.type === 'mount' || opts.type === 'area' || opts.type === 'mix' || opts.type === 'candle' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\n _calYAxisData = calYAxisData(series, opts, config, context);\n yAxisWidth = _calYAxisData.yAxisWidth;\n //如果显示Y轴标题\n if (opts.yAxis.showTitle) {\n var maxTitleHeight = 0;\n for (var i = 0; i < opts.yAxis.data.length; i++) {\n maxTitleHeight = Math.max(maxTitleHeight, opts.yAxis.data[i].titleFontSize ? opts.yAxis.data[i].titleFontSize * opts.pix : config.fontSize);\n }\n opts.area[0] += maxTitleHeight;\n }\n var rightIndex = 0,\n leftIndex = 0;\n //计算主绘图区域左右位置\n for (var _i32 = 0; _i32 < yAxisWidth.length; _i32++) {\n if (yAxisWidth[_i32].position == 'left') {\n if (leftIndex > 0) {\n opts.area[3] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;\n } else {\n opts.area[3] += yAxisWidth[_i32].width;\n }\n leftIndex += 1;\n } else if (yAxisWidth[_i32].position == 'right') {\n if (rightIndex > 0) {\n opts.area[1] += yAxisWidth[_i32].width + opts.yAxis.padding * opts.pix;\n } else {\n opts.area[1] += yAxisWidth[_i32].width;\n }\n rightIndex += 1;\n }\n }\n } else {\n config.yAxisWidth = yAxisWidth;\n }\n opts.chartData.yAxisData = _calYAxisData;\n if (opts.categories && opts.categories.length && opts.type !== 'radar' && opts.type !== 'gauge' && opts.type !== 'bar') {\n opts.chartData.xAxisData = getXAxisPoints(opts.categories, opts, config);\n var _calCategoriesData = calCategoriesData(opts.categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\n xAxisHeight = _calCategoriesData.xAxisHeight,\n angle = _calCategoriesData.angle;\n config.xAxisHeight = xAxisHeight;\n config._xAxisTextAngle_ = angle;\n opts.area[2] += xAxisHeight;\n opts.chartData.categoriesData = _calCategoriesData;\n } else {\n if (opts.type === 'line' || opts.type === 'area' || opts.type === 'scatter' || opts.type === 'bubble' || opts.type === 'bar') {\n opts.chartData.xAxisData = calXAxisData(series, opts, config, context);\n categories = opts.chartData.xAxisData.rangesFormat;\n var _calCategoriesData2 = calCategoriesData(categories, opts, config, opts.chartData.xAxisData.eachSpacing, context),\n _xAxisHeight = _calCategoriesData2.xAxisHeight,\n _angle = _calCategoriesData2.angle;\n config.xAxisHeight = _xAxisHeight;\n config._xAxisTextAngle_ = _angle;\n opts.area[2] += _xAxisHeight;\n opts.chartData.categoriesData = _calCategoriesData2;\n } else {\n opts.chartData.xAxisData = {\n xAxisPoints: []\n };\n }\n }\n\n //计算右对齐偏移距离\n if (opts.enableScroll && opts.xAxis.scrollAlign == 'right' && opts._scrollDistance_ === undefined) {\n var offsetLeft = 0,\n xAxisPoints = opts.chartData.xAxisData.xAxisPoints,\n startX = opts.chartData.xAxisData.startX,\n endX = opts.chartData.xAxisData.endX,\n eachSpacing = opts.chartData.xAxisData.eachSpacing;\n var totalWidth = eachSpacing * (xAxisPoints.length - 1);\n var screenWidth = endX - startX;\n offsetLeft = screenWidth - totalWidth;\n _this.scrollOption.currentOffset = offsetLeft;\n _this.scrollOption.startTouchX = offsetLeft;\n _this.scrollOption.distance = 0;\n _this.scrollOption.lastMoveTime = 0;\n opts._scrollDistance_ = offsetLeft;\n }\n if (type === 'pie' || type === 'ring' || type === 'rose') {\n config._pieTextMaxLength_ = opts.dataLabel === false ? 0 : getPieTextMaxLength(seriesMA, config, context, opts);\n }\n switch (type) {\n case 'word':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawWordCloudDataPoints(series, opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'map':\n context.clearRect(0, 0, opts.width, opts.height);\n drawMapDataPoints(series, opts, config, context);\n setTimeout(function () {\n _this2.uevent.trigger('renderComplete');\n }, 50);\n break;\n case 'funnel':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.funnelData = drawFunnelDataPoints(series, opts, config, context, process);\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'line':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawLineDataPoints = drawLineDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawLineDataPoints.xAxisPoints,\n calPoints = _drawLineDataPoints.calPoints,\n eachSpacing = _drawLineDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'scatter':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawScatterDataPoints = drawScatterDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawScatterDataPoints.xAxisPoints,\n calPoints = _drawScatterDataPoints.calPoints,\n eachSpacing = _drawScatterDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'bubble':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawBubbleDataPoints = drawBubbleDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawBubbleDataPoints.xAxisPoints,\n calPoints = _drawBubbleDataPoints.calPoints,\n eachSpacing = _drawBubbleDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'mix':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawMixDataPoints = drawMixDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawMixDataPoints.xAxisPoints,\n calPoints = _drawMixDataPoints.calPoints,\n eachSpacing = _drawMixDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'column':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawColumnDataPoints = drawColumnDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawColumnDataPoints.xAxisPoints,\n calPoints = _drawColumnDataPoints.calPoints,\n eachSpacing = _drawColumnDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'mount':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawMountDataPoints = drawMountDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawMountDataPoints.xAxisPoints,\n calPoints = _drawMountDataPoints.calPoints,\n eachSpacing = _drawMountDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'bar':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawXAxis(categories, opts, config, context);\n var _drawBarDataPoints = drawBarDataPoints(series, opts, config, context, process),\n yAxisPoints = _drawBarDataPoints.yAxisPoints,\n calPoints = _drawBarDataPoints.calPoints,\n eachSpacing = _drawBarDataPoints.eachSpacing;\n opts.chartData.yAxisPoints = yAxisPoints;\n opts.chartData.xAxisPoints = opts.chartData.xAxisData.xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, yAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'area':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawAreaDataPoints = drawAreaDataPoints(series, opts, config, context, process),\n xAxisPoints = _drawAreaDataPoints.xAxisPoints,\n calPoints = _drawAreaDataPoints.calPoints,\n eachSpacing = _drawAreaDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'ring':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'pie':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.pieData = drawPieDataPoints(series, opts, config, context, process);\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'rose':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.pieData = drawRoseDataPoints(series, opts, config, context, process);\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'radar':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.radarData = drawRadarDataPoints(series, opts, config, context, process);\n drawLegend(opts.series, opts, config, context, opts.chartData);\n drawToolTipBridge(opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'arcbar':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.arcbarData = drawArcbarDataPoints(series, opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'gauge':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n opts.chartData.gaugeData = drawGaugeDataPoints(categories, series, opts, config, context, process);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n case 'candle':\n this.animationInstance = new Animation({\n timing: opts.timing,\n duration: duration,\n onProcess: function onProcess(process) {\n context.clearRect(0, 0, opts.width, opts.height);\n if (opts.rotate) {\n contextRotate(context, opts);\n }\n drawYAxisGrid(categories, opts, config, context);\n drawXAxis(categories, opts, config, context);\n var _drawCandleDataPoints = drawCandleDataPoints(series, seriesMA, opts, config, context, process),\n xAxisPoints = _drawCandleDataPoints.xAxisPoints,\n calPoints = _drawCandleDataPoints.calPoints,\n eachSpacing = _drawCandleDataPoints.eachSpacing;\n opts.chartData.xAxisPoints = xAxisPoints;\n opts.chartData.calPoints = calPoints;\n opts.chartData.eachSpacing = eachSpacing;\n drawYAxis(series, opts, config, context);\n if (opts.enableMarkLine !== false && process === 1) {\n drawMarkLine(opts, config, context);\n }\n if (seriesMA) {\n drawLegend(seriesMA, opts, config, context, opts.chartData);\n } else {\n drawLegend(opts.series, opts, config, context, opts.chartData);\n }\n drawToolTipBridge(opts, config, context, process, eachSpacing, xAxisPoints);\n drawCanvas(opts, context);\n },\n onAnimationFinish: function onAnimationFinish() {\n _this.uevent.trigger('renderComplete');\n }\n });\n break;\n }\n}\nfunction uChartsEvent() {\n this.events = {};\n}\nuChartsEvent.prototype.addEventListener = function (type, listener) {\n this.events[type] = this.events[type] || [];\n this.events[type].push(listener);\n};\nuChartsEvent.prototype.delEventListener = function (type) {\n this.events[type] = [];\n};\nuChartsEvent.prototype.trigger = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n var type = args[0];\n var params = args.slice(1);\n if (!!this.events[type]) {\n this.events[type].forEach(function (listener) {\n try {\n listener.apply(null, params);\n } catch (e) {\n //console.log('[uCharts] '+e);\n }\n });\n }\n};\nvar uCharts = function uCharts(opts) {\n opts.pix = opts.pixelRatio ? opts.pixelRatio : 1;\n opts.fontSize = opts.fontSize ? opts.fontSize : 13;\n opts.fontColor = opts.fontColor ? opts.fontColor : config.fontColor;\n if (opts.background == \"\" || opts.background == \"none\") {\n opts.background = \"#FFFFFF\";\n }\n opts.title = assign({}, opts.title);\n opts.subtitle = assign({}, opts.subtitle);\n opts.duration = opts.duration ? opts.duration : 1000;\n opts.yAxis = assign({}, {\n data: [],\n showTitle: false,\n disabled: false,\n disableGrid: false,\n gridSet: 'number',\n splitNumber: 5,\n gridType: 'solid',\n dashLength: 4 * opts.pix,\n gridColor: '#cccccc',\n padding: 10,\n fontColor: '#666666'\n }, opts.yAxis);\n opts.xAxis = assign({}, {\n rotateLabel: false,\n rotateAngle: 45,\n disabled: false,\n disableGrid: false,\n splitNumber: 5,\n calibration: false,\n fontColor: '#666666',\n fontSize: 13,\n lineHeight: 20,\n marginTop: 0,\n gridType: 'solid',\n dashLength: 4,\n scrollAlign: 'left',\n boundaryGap: 'center',\n axisLine: true,\n axisLineColor: '#cccccc',\n titleFontSize: 13,\n titleOffsetY: 0,\n titleOffsetX: 0,\n titleFontColor: '#666666'\n }, opts.xAxis);\n opts.xAxis.scrollPosition = opts.xAxis.scrollAlign;\n opts.legend = assign({}, {\n show: true,\n position: 'bottom',\n float: 'center',\n backgroundColor: 'rgba(0,0,0,0)',\n borderColor: 'rgba(0,0,0,0)',\n borderWidth: 0,\n padding: 5,\n margin: 5,\n itemGap: 10,\n fontSize: opts.fontSize,\n lineHeight: opts.fontSize,\n fontColor: opts.fontColor,\n formatter: {},\n hiddenColor: '#CECECE'\n }, opts.legend);\n opts.extra = assign({\n tooltip: {\n legendShape: 'auto'\n }\n }, opts.extra);\n opts.rotate = opts.rotate ? true : false;\n opts.animation = opts.animation ? true : false;\n opts.rotate = opts.rotate ? true : false;\n opts.canvas2d = opts.canvas2d ? true : false;\n var config$$1 = assign({}, config);\n config$$1.color = opts.color ? opts.color : config$$1.color;\n if (opts.type == 'pie') {\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.pie.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n }\n if (opts.type == 'ring') {\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.ring.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n }\n if (opts.type == 'rose') {\n config$$1.pieChartLinePadding = opts.dataLabel === false ? 0 : opts.extra.rose.labelWidth * opts.pix || config$$1.pieChartLinePadding * opts.pix;\n }\n config$$1.pieChartTextPadding = opts.dataLabel === false ? 0 : config$$1.pieChartTextPadding * opts.pix;\n\n //屏幕旋转\n config$$1.rotate = opts.rotate;\n if (opts.rotate) {\n var tempWidth = opts.width;\n var tempHeight = opts.height;\n opts.width = tempHeight;\n opts.height = tempWidth;\n }\n\n //适配高分屏\n opts.padding = opts.padding ? opts.padding : config$$1.padding;\n config$$1.yAxisWidth = config.yAxisWidth * opts.pix;\n config$$1.fontSize = opts.fontSize * opts.pix;\n config$$1.titleFontSize = config.titleFontSize * opts.pix;\n config$$1.subtitleFontSize = config.subtitleFontSize * opts.pix;\n if (!opts.context) {\n throw new Error('[uCharts] 未获取到context!注意:v2.0版本后,需要自行获取canvas的绘图上下文并传入opts.context!');\n }\n this.context = opts.context;\n if (!this.context.setTextAlign) {\n this.context.setStrokeStyle = function (e) {\n return this.strokeStyle = e;\n };\n this.context.setLineWidth = function (e) {\n return this.lineWidth = e;\n };\n this.context.setLineCap = function (e) {\n return this.lineCap = e;\n };\n this.context.setFontSize = function (e) {\n return this.font = e + \"px sans-serif\";\n };\n this.context.setFillStyle = function (e) {\n return this.fillStyle = e;\n };\n this.context.setTextAlign = function (e) {\n return this.textAlign = e;\n };\n this.context.setTextBaseline = function (e) {\n return this.textBaseline = e;\n };\n this.context.setShadow = function (offsetX, offsetY, blur, color) {\n this.shadowColor = color;\n this.shadowOffsetX = offsetX;\n this.shadowOffsetY = offsetY;\n this.shadowBlur = blur;\n };\n this.context.draw = function () {};\n }\n //兼容NVUEsetLineDash\n if (!this.context.setLineDash) {\n this.context.setLineDash = function (e) {};\n }\n opts.chartData = {};\n this.uevent = new uChartsEvent();\n this.scrollOption = {\n currentOffset: 0,\n startTouchX: 0,\n distance: 0,\n lastMoveTime: 0\n };\n this.opts = opts;\n this.config = config$$1;\n drawCharts.call(this, opts.type, opts, config$$1, this.context);\n};\nuCharts.prototype.updateData = function () {\n var data = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.opts = assign({}, this.opts, data);\n this.opts.updateData = true;\n var scrollPosition = data.scrollPosition || 'current';\n switch (scrollPosition) {\n case 'current':\n this.opts._scrollDistance_ = this.scrollOption.currentOffset;\n break;\n case 'left':\n this.opts._scrollDistance_ = 0;\n this.scrollOption = {\n currentOffset: 0,\n startTouchX: 0,\n distance: 0,\n lastMoveTime: 0\n };\n break;\n case 'right':\n var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),\n yAxisWidth = _calYAxisData.yAxisWidth;\n this.config.yAxisWidth = yAxisWidth;\n var offsetLeft = 0;\n var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\n xAxisPoints = _getXAxisPoints0.xAxisPoints,\n startX = _getXAxisPoints0.startX,\n endX = _getXAxisPoints0.endX,\n eachSpacing = _getXAxisPoints0.eachSpacing;\n var totalWidth = eachSpacing * (xAxisPoints.length - 1);\n var screenWidth = endX - startX;\n offsetLeft = screenWidth - totalWidth;\n this.scrollOption = {\n currentOffset: offsetLeft,\n startTouchX: offsetLeft,\n distance: 0,\n lastMoveTime: 0\n };\n this.opts._scrollDistance_ = offsetLeft;\n break;\n }\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\nuCharts.prototype.zoom = function () {\n var val = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.opts.xAxis.itemCount;\n if (this.opts.enableScroll !== true) {\n __f__(\"log\", '[uCharts] 请启用滚动条后使用', \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:7193\");\n return;\n }\n //当前屏幕中间点\n var centerPoint = Math.round(Math.abs(this.scrollOption.currentOffset) / this.opts.chartData.eachSpacing) + Math.round(this.opts.xAxis.itemCount / 2);\n this.opts.animation = false;\n this.opts.xAxis.itemCount = val.itemCount;\n //重新计算x轴偏移距离\n var _calYAxisData = calYAxisData(this.opts.series, this.opts, this.config, this.context),\n yAxisWidth = _calYAxisData.yAxisWidth;\n this.config.yAxisWidth = yAxisWidth;\n var offsetLeft = 0;\n var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\n xAxisPoints = _getXAxisPoints0.xAxisPoints,\n startX = _getXAxisPoints0.startX,\n endX = _getXAxisPoints0.endX,\n eachSpacing = _getXAxisPoints0.eachSpacing;\n var centerLeft = eachSpacing * centerPoint;\n var screenWidth = endX - startX;\n var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\n offsetLeft = screenWidth / 2 - centerLeft;\n if (offsetLeft > 0) {\n offsetLeft = 0;\n }\n if (offsetLeft < MaxLeft) {\n offsetLeft = MaxLeft;\n }\n this.scrollOption = {\n currentOffset: offsetLeft,\n startTouchX: 0,\n distance: 0,\n lastMoveTime: 0\n };\n calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);\n this.opts._scrollDistance_ = offsetLeft;\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\nuCharts.prototype.dobuleZoom = function (e) {\n if (this.opts.enableScroll !== true) {\n __f__(\"log\", '[uCharts] 请启用滚动条后使用', \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:7233\");\n return;\n }\n var tcs = e.changedTouches;\n if (tcs.length < 2) {\n return;\n }\n for (var i = 0; i < tcs.length; i++) {\n tcs[i].x = tcs[i].x ? tcs[i].x : tcs[i].clientX;\n tcs[i].y = tcs[i].y ? tcs[i].y : tcs[i].clientY;\n }\n var ntcs = [getTouches(tcs[0], this.opts, e), getTouches(tcs[1], this.opts, e)];\n var xlength = Math.abs(ntcs[0].x - ntcs[1].x);\n // 记录初始的两指之间的数据\n if (!this.scrollOption.moveCount) {\n var cts0 = {\n changedTouches: [{\n x: tcs[0].x,\n y: this.opts.area[0] / this.opts.pix + 2\n }]\n };\n var cts1 = {\n changedTouches: [{\n x: tcs[1].x,\n y: this.opts.area[0] / this.opts.pix + 2\n }]\n };\n if (this.opts.rotate) {\n cts0 = {\n changedTouches: [{\n x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,\n y: tcs[0].y\n }]\n };\n cts1 = {\n changedTouches: [{\n x: this.opts.height / this.opts.pix - this.opts.area[0] / this.opts.pix - 2,\n y: tcs[1].y\n }]\n };\n }\n var moveCurrent1 = this.getCurrentDataIndex(cts0).index;\n var moveCurrent2 = this.getCurrentDataIndex(cts1).index;\n var moveCount = Math.abs(moveCurrent1 - moveCurrent2);\n this.scrollOption.moveCount = moveCount;\n this.scrollOption.moveCurrent1 = Math.min(moveCurrent1, moveCurrent2);\n this.scrollOption.moveCurrent2 = Math.max(moveCurrent1, moveCurrent2);\n return;\n }\n var currentEachSpacing = xlength / this.scrollOption.moveCount;\n var itemCount = (this.opts.width - this.opts.area[1] - this.opts.area[3]) / currentEachSpacing;\n itemCount = itemCount <= 2 ? 2 : itemCount;\n itemCount = itemCount >= this.opts.categories.length ? this.opts.categories.length : itemCount;\n this.opts.animation = false;\n this.opts.xAxis.itemCount = itemCount;\n // 重新计算滚动条偏移距离\n var offsetLeft = 0;\n var _getXAxisPoints0 = getXAxisPoints(this.opts.categories, this.opts, this.config),\n xAxisPoints = _getXAxisPoints0.xAxisPoints,\n startX = _getXAxisPoints0.startX,\n endX = _getXAxisPoints0.endX,\n eachSpacing = _getXAxisPoints0.eachSpacing;\n var currentLeft = eachSpacing * this.scrollOption.moveCurrent1;\n var screenWidth = endX - startX;\n var MaxLeft = screenWidth - eachSpacing * (xAxisPoints.length - 1);\n offsetLeft = -currentLeft + Math.min(ntcs[0].x, ntcs[1].x) - this.opts.area[3] - eachSpacing;\n if (offsetLeft > 0) {\n offsetLeft = 0;\n }\n if (offsetLeft < MaxLeft) {\n offsetLeft = MaxLeft;\n }\n this.scrollOption.currentOffset = offsetLeft;\n this.scrollOption.startTouchX = 0;\n this.scrollOption.distance = 0;\n calValidDistance(this, offsetLeft, this.opts.chartData, this.config, this.opts);\n this.opts._scrollDistance_ = offsetLeft;\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n};\nuCharts.prototype.stopAnimation = function () {\n this.animationInstance && this.animationInstance.stop();\n};\nuCharts.prototype.addEventListener = function (type, listener) {\n this.uevent.addEventListener(type, listener);\n};\nuCharts.prototype.delEventListener = function (type) {\n this.uevent.delEventListener(type);\n};\nuCharts.prototype.getCurrentDataIndex = function (e) {\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n if (touches) {\n var _touches$ = getTouches(touches, this.opts, e);\n if (this.opts.type === 'pie' || this.opts.type === 'ring') {\n return findPieChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.pieData, this.opts);\n } else if (this.opts.type === 'rose') {\n return findRoseChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.pieData, this.opts);\n } else if (this.opts.type === 'radar') {\n return findRadarChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.radarData, this.opts.categories.length);\n } else if (this.opts.type === 'funnel') {\n return findFunnelChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.funnelData);\n } else if (this.opts.type === 'map') {\n return findMapChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts);\n } else if (this.opts.type === 'word') {\n return findWordChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.wordCloudData);\n } else if (this.opts.type === 'bar') {\n return findBarChartCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\n } else {\n return findCurrentIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.calPoints, this.opts, this.config, Math.abs(this.scrollOption.currentOffset));\n }\n }\n return -1;\n};\nuCharts.prototype.getLegendDataIndex = function (e) {\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n if (touches) {\n var _touches$ = getTouches(touches, this.opts, e);\n return findLegendIndex({\n x: _touches$.x,\n y: _touches$.y\n }, this.opts.chartData.legendData);\n }\n return -1;\n};\nuCharts.prototype.touchLegend = function (e) {\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n if (touches) {\n var _touches$ = getTouches(touches, this.opts, e);\n var index = this.getLegendDataIndex(e);\n if (index >= 0) {\n if (this.opts.type == 'candle') {\n this.opts.seriesMA[index].show = !this.opts.seriesMA[index].show;\n } else {\n this.opts.series[index].show = !this.opts.series[index].show;\n }\n this.opts.animation = option.animation ? true : false;\n this.opts._scrollDistance_ = this.scrollOption.currentOffset;\n drawCharts.call(this, this.opts.type, this.opts, this.config, this.context);\n }\n }\n};\nuCharts.prototype.showToolTip = function (e) {\n var _this3 = this;\n var option = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n if (!touches) {\n __f__(\"log\", \"[uCharts] 未获取到event坐标信息\", \" at uni_modules/qiun-data-charts/js_sdk/u-charts/u-charts.js:7411\");\n }\n var _touches$ = getTouches(touches, this.opts, e);\n var currentOffset = this.scrollOption.currentOffset;\n var opts = assign({}, this.opts, {\n _scrollDistance_: currentOffset,\n animation: false\n });\n if (this.opts.type === 'line' || this.opts.type === 'area' || this.opts.type === 'column' || this.opts.type === 'scatter' || this.opts.type === 'bubble') {\n var current = this.getCurrentDataIndex(e);\n var index = option.index == undefined ? current.index : option.index;\n if (index > -1 || index.length > 0) {\n var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\n if (seriesData.length !== 0) {\n var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\n textList = _getToolTipData.textList,\n offset = _getToolTipData.offset;\n offset.y = _touches$.y;\n opts.tooltip = {\n textList: option.textList !== undefined ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index,\n group: current.group\n };\n }\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'mount') {\n var index = option.index == undefined ? this.getCurrentDataIndex(e).index : option.index;\n if (index > -1) {\n var opts = assign({}, this.opts, {\n animation: false\n });\n var seriesData = assign({}, opts._series_[index]);\n var textList = [{\n text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,\n color: seriesData.color,\n legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape\n }];\n var offset = {\n x: opts.chartData.calPoints[index].x,\n y: _touches$.y\n };\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'bar') {\n var current = this.getCurrentDataIndex(e);\n var index = option.index == undefined ? current.index : option.index;\n if (index > -1 || index.length > 0) {\n var seriesData = getSeriesDataItem(this.opts.series, index, current.group);\n if (seriesData.length !== 0) {\n var _getToolTipData = getToolTipData(seriesData, this.opts, index, current.group, this.opts.categories, option),\n textList = _getToolTipData.textList,\n offset = _getToolTipData.offset;\n offset.x = _touches$.x;\n opts.tooltip = {\n textList: option.textList !== undefined ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'mix') {\n var current = this.getCurrentDataIndex(e);\n var index = option.index == undefined ? current.index : option.index;\n if (index > -1) {\n var currentOffset = this.scrollOption.currentOffset;\n var opts = assign({}, this.opts, {\n _scrollDistance_: currentOffset,\n animation: false\n });\n var seriesData = getSeriesDataItem(this.opts.series, index);\n if (seriesData.length !== 0) {\n var _getMixToolTipData = getMixToolTipData(seriesData, this.opts, index, this.opts.categories, option),\n textList = _getMixToolTipData.textList,\n offset = _getMixToolTipData.offset;\n offset.y = _touches$.y;\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'candle') {\n var current = this.getCurrentDataIndex(e);\n var index = option.index == undefined ? current.index : option.index;\n if (index > -1) {\n var currentOffset = this.scrollOption.currentOffset;\n var opts = assign({}, this.opts, {\n _scrollDistance_: currentOffset,\n animation: false\n });\n var seriesData = getSeriesDataItem(this.opts.series, index);\n if (seriesData.length !== 0) {\n var _getToolTipData = getCandleToolTipData(this.opts.series[0].data, seriesData, this.opts, index, this.opts.categories, this.opts.extra.candle, option),\n textList = _getToolTipData.textList,\n offset = _getToolTipData.offset;\n offset.y = _touches$.y;\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'pie' || this.opts.type === 'ring' || this.opts.type === 'rose' || this.opts.type === 'funnel') {\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n if (index > -1) {\n var opts = assign({}, this.opts, {\n animation: false\n });\n var seriesData = assign({}, opts._series_[index]);\n var textList = [{\n text: option.formatter ? option.formatter(seriesData, undefined, index, opts) : seriesData.name + ': ' + seriesData.data,\n color: seriesData.color,\n legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape\n }];\n var offset = {\n x: _touches$.x,\n y: _touches$.y\n };\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'map') {\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n if (index > -1) {\n var opts = assign({}, this.opts, {\n animation: false\n });\n var seriesData = assign({}, this.opts.series[index]);\n seriesData.name = seriesData.properties.name;\n var textList = [{\n text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,\n color: seriesData.color,\n legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape\n }];\n var offset = {\n x: _touches$.x,\n y: _touches$.y\n };\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n opts.updateData = false;\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'word') {\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n if (index > -1) {\n var opts = assign({}, this.opts, {\n animation: false\n });\n var seriesData = assign({}, this.opts.series[index]);\n var textList = [{\n text: option.formatter ? option.formatter(seriesData, undefined, index, this.opts) : seriesData.name,\n color: seriesData.color,\n legendShape: this.opts.extra.tooltip.legendShape == 'auto' ? seriesData.legendShape : this.opts.extra.tooltip.legendShape\n }];\n var offset = {\n x: _touches$.x,\n y: _touches$.y\n };\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n opts.updateData = false;\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n if (this.opts.type === 'radar') {\n var index = option.index == undefined ? this.getCurrentDataIndex(e) : option.index;\n if (index > -1) {\n var opts = assign({}, this.opts, {\n animation: false\n });\n var seriesData = getSeriesDataItem(this.opts.series, index);\n if (seriesData.length !== 0) {\n var textList = seriesData.map(function (item) {\n return {\n text: option.formatter ? option.formatter(item, _this3.opts.categories[index], index, _this3.opts) : item.name + ': ' + item.data,\n color: item.color,\n legendShape: _this3.opts.extra.tooltip.legendShape == 'auto' ? item.legendShape : _this3.opts.extra.tooltip.legendShape\n };\n });\n var offset = {\n x: _touches$.x,\n y: _touches$.y\n };\n opts.tooltip = {\n textList: option.textList ? option.textList : textList,\n offset: option.offset !== undefined ? option.offset : offset,\n option: option,\n index: index\n };\n }\n }\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n }\n};\nuCharts.prototype.translate = function (distance) {\n this.scrollOption = {\n currentOffset: distance,\n startTouchX: distance,\n distance: 0,\n lastMoveTime: 0\n };\n var opts = assign({}, this.opts, {\n _scrollDistance_: distance,\n animation: false\n });\n drawCharts.call(this, this.opts.type, opts, this.config, this.context);\n};\nuCharts.prototype.scrollStart = function (e) {\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n var _touches$ = getTouches(touches, this.opts, e);\n if (touches && this.opts.enableScroll === true) {\n this.scrollOption.startTouchX = _touches$.x;\n }\n};\nuCharts.prototype.scroll = function (e) {\n if (this.scrollOption.lastMoveTime === 0) {\n this.scrollOption.lastMoveTime = Date.now();\n }\n var Limit = this.opts.touchMoveLimit || 60;\n var currMoveTime = Date.now();\n var duration = currMoveTime - this.scrollOption.lastMoveTime;\n if (duration < Math.floor(1000 / Limit)) return;\n if (this.scrollOption.startTouchX == 0) return;\n this.scrollOption.lastMoveTime = currMoveTime;\n var touches = null;\n if (e.changedTouches) {\n touches = e.changedTouches[0];\n } else {\n touches = e.mp.changedTouches[0];\n }\n if (touches && this.opts.enableScroll === true) {\n var _touches$ = getTouches(touches, this.opts, e);\n var _distance;\n _distance = _touches$.x - this.scrollOption.startTouchX;\n var currentOffset = this.scrollOption.currentOffset;\n var validDistance = calValidDistance(this, currentOffset + _distance, this.opts.chartData, this.config, this.opts);\n this.scrollOption.distance = _distance = validDistance - currentOffset;\n var opts = assign({}, this.opts, {\n _scrollDistance_: currentOffset + _distance,\n animation: false\n });\n this.opts = opts;\n drawCharts.call(this, opts.type, opts, this.config, this.context);\n return currentOffset + _distance;\n }\n};\nuCharts.prototype.scrollEnd = function (e) {\n if (this.opts.enableScroll === true) {\n var _scrollOption = this.scrollOption,\n currentOffset = _scrollOption.currentOffset,\n distance = _scrollOption.distance;\n this.scrollOption.currentOffset = currentOffset + distance;\n this.scrollOption.distance = 0;\n this.scrollOption.moveCount = 0;\n }\n};\nvar _default = uCharts;\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 121)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvdS1jaGFydHMuanMiXSwibmFtZXMiOlsiY29uZmlnIiwidmVyc2lvbiIsInlBeGlzV2lkdGgiLCJ4QXhpc0hlaWdodCIsInBhZGRpbmciLCJyb3RhdGUiLCJmb250U2l6ZSIsImZvbnRDb2xvciIsImRhdGFQb2ludFNoYXBlIiwiY29sb3IiLCJsaW5lYXJDb2xvciIsInBpZUNoYXJ0TGluZVBhZGRpbmciLCJwaWVDaGFydFRleHRQYWRkaW5nIiwidGl0bGVGb250U2l6ZSIsInN1YnRpdGxlRm9udFNpemUiLCJyYWRhckxhYmVsVGV4dE1hcmdpbiIsImFzc2lnbiIsInRhcmdldCIsInZhckFyZ3MiLCJUeXBlRXJyb3IiLCJsZW5ndGgiLCJkZWVwQXNzaWduIiwib2JqMSIsIm9iajIiLCJrZXkiLCJ0b1N0cmluZyIsImZvckVhY2giLCJ2YWwiLCJ1dGlsIiwidG9GaXhlZCIsIm51bSIsImxpbWl0IiwiaXNGbG9hdCIsImFwcHJveGltYXRlbHlFcXVhbCIsIm51bTEiLCJudW0yIiwiTWF0aCIsImFicyIsImlzU2FtZVNpZ24iLCJpc1NhbWVYQ29vcmRpbmF0ZUFyZWEiLCJwMSIsInAyIiwieCIsImlzQ29sbGlzaW9uIiwiZW5kIiwic3RhcnQiLCJ3aWR0aCIsInkiLCJoZWlnaHQiLCJmbGFnIiwiZ2V0SDVPZmZzZXQiLCJlIiwibXAiLCJjaGFuZ2VkVG91Y2hlcyIsInB1c2giLCJvZmZzZXRYIiwib2Zmc2V0WSIsImhleFRvUmdiIiwiaGV4VmFsdWUiLCJvcGMiLCJyZ3giLCJoZXgiLCJyZXBsYWNlIiwibSIsInIiLCJnIiwiYiIsInJnYiIsImV4ZWMiLCJwYXJzZUludCIsImZpbmRSYW5nZSIsInR5cGUiLCJpc05hTiIsIkVycm9yIiwibXVsdGlwbGUiLCJjZWlsIiwiZmxvb3IiLCJjYWxDYW5kbGVNQSIsImRheUFyciIsIm5hbWVBcnIiLCJjb2xvckFyciIsImtkYXRhIiwic2VyaWVzVGVtcCIsImsiLCJzZXJpZXNJdGVtIiwiZGF0YSIsIm5hbWUiLCJpIiwibGVuIiwic3VtIiwiaiIsImNhbFZhbGlkRGlzdGFuY2UiLCJzZWxmIiwiZGlzdGFuY2UiLCJjaGFydERhdGEiLCJvcHRzIiwiZGF0YUNoYXJ0QXJlYVdpZHRoIiwiYXJlYSIsImRhdGFDaGFydFdpZHRoIiwiZWFjaFNwYWNpbmciLCJ4QXhpc0RhdGEiLCJ4QXhpc1BvaW50cyIsImV4dHJhIiwibW91bnQiLCJ3aWR0aFJhdGlvIiwidmFsaWREaXN0YW5jZSIsInVldmVudCIsInRyaWdnZXIiLCJzY3JvbGxPcHRpb24iLCJwb3NpdGlvbiIsInhBeGlzIiwic2Nyb2xsUG9zaXRpb24iLCJpc0luQW5nbGVSYW5nZSIsImFuZ2xlIiwic3RhcnRBbmdsZSIsImVuZEFuZ2xlIiwiYWRqdXN0IiwiUEkiLCJjcmVhdGVDdXJ2ZUNvbnRyb2xQb2ludHMiLCJwb2ludHMiLCJpc05vdE1pZGRsZVBvaW50IiwibWF4IiwibWluIiwiaXNOb3RNaWRkbGVQb2ludFgiLCJhIiwicEF4IiwicEF5IiwicEJ4IiwicEJ5IiwibGFzdCIsImN0ckEiLCJjdHJCIiwiY29udmVydENvb3JkaW5hdGVPcmlnaW4iLCJjZW50ZXIiLCJhdm9pZENvbGxpc2lvbiIsIm9iaiIsImZpeFBpZVNlcmllcyIsInNlcmllcyIsInBpZVNlcmllc0FyciIsImNvbnN0cnVjdG9yIiwiaW5kZXhPZiIsIl9waWVTZXJpZXNfIiwib2xkc2VyaWVzIiwiZm9ybWF0dGVyIiwidmFsdWUiLCJmaWxsU2VyaWVzIiwiaW5kZXgiLCJpdGVtIiwibGluZWFySW5kZXgiLCJzaG93IiwicG9pbnRTaGFwZSIsImxlZ2VuZFNoYXBlIiwiZmlsbEN1c3RvbUNvbG9yIiwibGluZWFyVHlwZSIsImN1c3RvbUNvbG9yIiwibmV3Y29sb3IiLCJjaGF6aGkiLCJnZXREYXRhUmFuZ2UiLCJtaW5EYXRhIiwibWF4RGF0YSIsInJhbmdlIiwibWluUmFuZ2UiLCJtYXhSYW5nZSIsIm1lYXN1cmVUZXh0IiwidGV4dCIsImNvbnRleHQiLCJTdHJpbmciLCJ1bmRlZmluZWQiLCJzZXRGb250U2l6ZSIsInNwbGl0IiwidGVzdCIsImRhdGFDb21iaW5lIiwicmVkdWNlIiwiY29uY2F0IiwiZGF0YUNvbWJpbmVTdGFjayIsIkFycmF5IiwiZ2V0VG91Y2hlcyIsInRvdWNoZXMiLCJjbGllbnRYIiwicGl4IiwicGFnZVkiLCJjdXJyZW50VGFyZ2V0Iiwib2Zmc2V0VG9wIiwiZ2V0U2VyaWVzRGF0YUl0ZW0iLCJncm91cCIsIm5ld1NlcmllcyIsImluZGV4SXNBcnIiLCJ0ZW1wU2VyaWVzIiwiZmlsdGVyU2VyaWVzIiwidG1waW5kZXgiLCJzdHlsZSIsImRpc2FibGVMZWdlbmQiLCJnZXRNYXhUZXh0TGlzdExlbmd0aCIsImxpc3QiLCJsZW5ndGhMaXN0IiwibWFwIiwiYXBwbHkiLCJnZXRSYWRhckNvb3JkaW5hdGVTZXJpZXMiLCJlYWNoQW5nbGUiLCJDb29yZGluYXRlU2VyaWVzIiwiZ2V0VG9vbFRpcERhdGEiLCJzZXJpZXNEYXRhIiwiY2F0ZWdvcmllcyIsIm9wdGlvbiIsImFyZ3VtZW50cyIsImNhbFBvaW50cyIsImZpbHRlclBvaW50cyIsInRleHRMaXN0IiwidGl0bGVUZXh0IiwidG9vbHRpcCIsIm9mZnNldCIsInJvdW5kIiwiZ2V0TWl4VG9vbFRpcERhdGEiLCJmaWx0ZXIiLCJnZXRDYW5kbGVUb29sVGlwRGF0YSIsInVwQ29sb3IiLCJ1cEZpbGwiLCJkb3duQ29sb3IiLCJkb3duRmlsbCIsInRleHQxIiwidGV4dDIiLCJ0ZXh0MyIsInRleHQ0IiwidmFsaWRDYWxQb2ludHMiLCJmaW5kQ3VycmVudEluZGV4IiwiY3VycmVudFBvaW50cyIsImN1cnJlbnQiLCJzcGFjaW5nIiwiYm91bmRhcnlHYXAiLCJpc0luRXhhY3RDaGFydEFyZWEiLCJ0aW1lUG9pbnRzIiwicG9pbnRWYWx1ZSIsInBvaW50SW5kZXgiLCJtaW5WYWx1ZSIsImZpbmRCYXJDaGFydEN1cnJlbnRJbmRleCIsInlBeGlzUG9pbnRzIiwiZmluZExlZ2VuZEluZGV4IiwibGVnZW5kRGF0YSIsImN1cnJlbnRJbmRleCIsImdhcCIsImlzSW5FeGFjdExlZ2VuZEFyZWEiLCJmaW5kUmFkYXJDaGFydEN1cnJlbnRJbmRleCIsInJhZGFyRGF0YSIsImNvdW50IiwiZWFjaEFuZ2xlQXJlYSIsImlzSW5FeGFjdFBpZUNoYXJ0QXJlYSIsInJhZGl1cyIsImZpeEFuZ2xlIiwiYXRhbjIiLCJhbmdsZUxpc3QiLCJyYW5nZVN0YXJ0IiwicmFuZ2VFbmQiLCJmaW5kRnVubmVsQ2hhcnRDdXJyZW50SW5kZXgiLCJmdW5uZWxEYXRhIiwiZnVubmVsQXJlYSIsImZpbmRXb3JkQ2hhcnRDdXJyZW50SW5kZXgiLCJ3b3JkRGF0YSIsImZpbmRNYXBDaGFydEN1cnJlbnRJbmRleCIsImNEYXRhIiwibWFwRGF0YSIsInRtcCIsInBvaW50VG9Db29yZGluYXRlIiwiYm91bmRzIiwic2NhbGUiLCJ4b2Zmc2V0IiwieW9mZnNldCIsInBvaSIsImdlb21ldHJ5IiwiY29vcmRpbmF0ZXMiLCJpc1BvaVdpdGhpblBvbHkiLCJtZXJjYXRvciIsImZpbmRSb3NlQ2hhcnRDdXJyZW50SW5kZXgiLCJwaWVEYXRhIiwiZ2V0Um9zZURhdGFQb2ludHMiLCJfc2VyaWVzXyIsInJvc2UiLCJvZmZzZXRBbmdsZSIsIl9zdGFydF8iLCJfcm9zZV9wcm9wb3J0aW9uXyIsImZpbmRQaWVDaGFydEN1cnJlbnRJbmRleCIsImdldFBpZURhdGFQb2ludHMiLCJwaWUiLCJyaW5nIiwiX3Byb3BvcnRpb25fIiwicG93Iiwic3BsaXRQb2ludHMiLCJlYWNoU2VyaWVzIiwibmV3UG9pbnRzIiwiaXRlbXMiLCJjb25uZWN0TnVsbHMiLCJjYWxMZWdlbmREYXRhIiwid2hvbGVXaWR0aCIsIndob2xlSGVpZ2h0Iiwid2lkdGhBcnIiLCJoZWlnaHRBcnIiLCJsZWdlbmQiLCJtYXJnaW4iLCJzaGFwZVdpZHRoIiwic2hhcGVSaWdodCIsImxpbmVIZWlnaHQiLCJsZWdlbmRMaXN0Iiwid2lkdGhDb3VudCIsIndpZHRoQ291bnRBcnIiLCJjdXJyZW50Um93IiwibGVnZW5kVGV4dCIsIml0ZW1XaWR0aCIsIml0ZW1HYXAiLCJsZWdlbmRXaWR0aCIsImZsb2F0IiwibWF4SGVpZ2h0IiwibWF4TGVuZ3RoIiwibGluZU51bSIsInRlbXAiLCJzbGljZSIsIm1heFdpZHRoIiwiY2FsQ2F0ZWdvcmllc0RhdGEiLCJyZXN1bHQiLCJtYXJnaW5Ub3AiLCJjYXRlZ29yaWVzVGV4dExlbnRoIiwieGl0ZW0iLCJtYXhUZXh0TGVuZ3RoIiwicm90YXRlTGFiZWwiLCJyb3RhdGVBbmdsZSIsInRlbXBIZWlnaHQiLCJzaW4iLCJlbmFibGVTY3JvbGwiLCJzY3JvbGxTaG93IiwiZGlzYWJsZWQiLCJnZXRYQXhpc1RleHRMaXN0Iiwic3RhY2siLCJzb3J0ZWQiLCJzdWJpdGVtIiwicmFuZ2VTcGFuIiwiZWFjaFJhbmdlIiwic3BsaXROdW1iZXIiLCJjYWxYQXhpc0RhdGEiLCJjb2x1bW5zdHlsZSIsImJhciIsInJhbmdlcyIsInJhbmdlc0Zvcm1hdCIsInhBeGlzU2NhbGVWYWx1ZXMiLCJPYmplY3QiLCJnZXRYQXhpc1BvaW50cyIsInRleHRMZW5ndGgiLCJnZXRSYWRhckRhdGFQb2ludHMiLCJwcm9jZXNzIiwicmFkYXJPcHRpb24iLCJyYWRhciIsImVhY2giLCJsaXN0SXRlbSIsInByb3BvcnRpb24iLCJjb3MiLCJfcmFkaXVzXyIsImdldEZ1bm5lbERhdGFQb2ludHMiLCJtaW5SYWRpdXMiLCJkYXRhQXJyIiwicmFkaXVzTGVuZ3RoIiwiZ2V0QXJjYmFyRGF0YVBvaW50cyIsImFyY2Jhck9wdGlvbiIsInRvdGFsQW5nbGUiLCJkaXJlY3Rpb24iLCJnZXRHYXVnZUFyY2JhckRhdGFQb2ludHMiLCJnZXRHYXVnZUF4aXNQb2ludHMiLCJ0ZW1wU3RhcnRBbmdsZSIsIl9zdGFydEFuZ2xlXyIsIl9lbmRBbmdsZV8iLCJnZXRHYXVnZURhdGFQb2ludHMiLCJnYXVnZU9wdGlvbiIsInBvaW50ZXIiLCJfb2xkQW5nbGVfIiwib2xkQW5nbGUiLCJvbGREYXRhIiwiZ2V0UGllVGV4dE1heExlbmd0aCIsInRleHRTaXplIiwiZml4Q29sdW1lRGF0YSIsImNvbHVtbkxlbiIsInNlcmllc0dhcCIsImNhdGVnb3J5R2FwIiwibWl4IiwiY29sdW1uIiwiZml4QmFyRGF0YSIsImZpeENvbHVtZU1ldGVyRGF0YSIsImJvcmRlciIsImZpeENvbHVtZVN0YWNrRGF0YSIsImluZGV4biIsImZpeEJhclN0YWNrRGF0YSIsInNwYWNpbmdWYWxpZCIsImRhdGFDb3VudCIsIml0ZW1Db3VudCIsInN0YXJ0WCIsImVuZFgiLCJnZXRDYW5kbGVEYXRhUG9pbnRzIiwidmFsaWRIZWlnaHQiLCJjUG9pbnRzIiwiaW5kZXhzIiwicG9pbnQiLCJnZXREYXRhUG9pbnRzIiwidmFsaWRXaWR0aCIsInhyYW5nZXMiLCJ4bWluUmFuZ2UiLCJ4bWF4UmFuZ2UiLCJzaGlmdCIsInBvcCIsInQiLCJnZXRMaW5lRGF0YVBvaW50cyIsImxpbmVPcHRpb24iLCJhbmltYXRpb24iLCJnZXRDb2x1bW5EYXRhUG9pbnRzIiwiemVyb1BvaW50cyIsImdldE1vdW50RGF0YVBvaW50cyIsIm1vdW50T3B0aW9uIiwibW91bnRXaWR0aCIsImdldEJhckRhdGFQb2ludHMiLCJnZXRTdGFja0RhdGFQb2ludHMiLCJzZXJpZXNJbmRleCIsInN0YWNrU2VyaWVzIiwidmFsdWUwIiwiaGVpZ2h0MCIsImhlaWdodGMiLCJ5MCIsImdldEJhclN0YWNrRGF0YVBvaW50cyIsIngwIiwiZ2V0WUF4aXNUZXh0TGlzdCIsInlEYXRhIiwiZGF0YVJhbmdlIiwieUF4aXMiLCJyZXZlcnNlIiwiY2FsWUF4aXNEYXRhIiwiWUxlbmd0aCIsInJhbmdlc0FyciIsInJhbmdlc0Zvcm1hdEFyciIsInlBeGlzV2lkdGhBcnIiLCJ1bml0IiwidG9maXgiLCJ5QXhpc0ZvbnRTaXplcyIsImNhbGlicmF0aW9uIiwieUF4aXNGb250U2l6ZSIsImNhbFRvb2x0aXBZQXhpc0RhdGEiLCJ5QXhpc0RhdGEiLCJtaW5BeGlzIiwibWF4VmFsIiwibWluVmFsIiwiY2FsTWFya0xpbmVEYXRhIiwieUF4aXNJbmRleCIsImNvbnRleHRSb3RhdGUiLCJyb3RhdGVMb2NrIiwidHJhbnNsYXRlIiwiX3JvdGF0ZV8iLCJkcmF3UG9pbnRTaGFwZSIsInNoYXBlIiwiYmVnaW5QYXRoIiwiZGF0YVBvaW50U2hhcGVUeXBlIiwic2V0U3Ryb2tlU3R5bGUiLCJzZXRGaWxsU3R5bGUiLCJiYWNrZ3JvdW5kIiwic2V0TGluZVdpZHRoIiwibW92ZVRvIiwibGluZVRvIiwiYXJjIiwicmVjdCIsImNsb3NlUGF0aCIsImZpbGwiLCJzdHJva2UiLCJkcmF3QWN0aXZlUG9pbnQiLCJpbmNsdWRlcyIsImFjdGl2ZVR5cGUiLCJkcmF3UmluZ1RpdGxlIiwidGl0bGVmb250U2l6ZSIsInRpdGxlIiwic3VidGl0bGVmb250U2l6ZSIsInN1YnRpdGxlIiwidGl0bGVGb250Q29sb3IiLCJzdWJ0aXRsZUZvbnRDb2xvciIsInRpdGxlSGVpZ2h0Iiwic3VidGl0bGVIZWlnaHQiLCJ0ZXh0V2lkdGgiLCJzdGFydFkiLCJmaWxsVGV4dCIsIl90ZXh0V2lkdGgiLCJfc3RhcnRYIiwiX3N0YXJ0WSIsImRyYXdQb2ludFRleHQiLCJ0ZXh0T2Zmc2V0IiwidGV4dENvbG9yIiwiZm9ybWF0VmFsIiwic2V0VGV4dEFsaWduIiwiZHJhd0NvbHVtZVBvaW50VGV4dCIsIlBvc2l0aW9uIiwibGFiZWxQb3NpdGlvbiIsImRyYXdNb3VudFBvaW50VGV4dCIsImRyYXdCYXJQb2ludFRleHQiLCJkcmF3R2F1Z2VMYWJlbCIsImNlbnRlclBvc2l0aW9uIiwibGFiZWxPZmZzZXQiLCJzcGxpdEFuZ2xlIiwic3BsaXRMaW5lIiwidG90YWxOdW1iZXIiLCJlbmROdW1iZXIiLCJzdGFydE51bWJlciIsIm5vd0FuZ2xlIiwibm93TnVtYmVyIiwicG9zIiwibGFiZWxUZXh0IiwibGFiZWxDb2xvciIsImRyYXdSYWRhckxhYmVsIiwibGFiZWxQb2ludFNob3ciLCJwb3NQb2ludCIsInBvc1BvaW50QXhpcyIsImxhYmVsUG9pbnRDb2xvciIsImxhYmVsUG9pbnRSYWRpdXMiLCJsYWJlbFNob3ciLCJwb3NSZWxhdGl2ZUNhbnZhcyIsImRyYXdQaWVUZXh0IiwibGluZVJhZGl1cyIsInRleHRPYmplY3RDb2xsZWN0aW9uIiwibGFzdFRleHRPYmplY3QiLCJzZXJpZXNDb252ZXJ0Iiwib3JnaW5YMSIsIm9yZ2luWTEiLCJvcmdpblgyIiwib3JnaW5ZMiIsIm9yZ2luWDMiLCJvcmdpblkzIiwidGV4dE9iamVjdCIsImxpbmVTdGFydCIsImxpbmVFbmQiLCJsaW5lU3RhcnRQb2lzdGlvbiIsImxpbmVFbmRQb2lzdGlvbiIsInRleHRQb3NpdGlvbiIsImN1cnZlU3RhcnRYIiwidGV4dFN0YXJ0WCIsInF1YWRyYXRpY0N1cnZlVG8iLCJkcmF3VG9vbFRpcFNwbGl0TGluZSIsInRvb2xUaXBPcHRpb24iLCJncmlkVHlwZSIsImRhc2hMZW5ndGgiLCJlbmRZIiwic2V0TGluZURhc2giLCJncmlkQ29sb3IiLCJ4QXhpc0xhYmVsIiwidGV4dFgiLCJ0ZXh0WSIsImxhYmVsQmdDb2xvciIsInRvb2xUaXBCYWNrZ3JvdW5kIiwibGFiZWxCZ09wYWNpdHkiLCJ0b29sVGlwT3BhY2l0eSIsImJveFBhZGRpbmciLCJsYWJlbEZvbnRDb2xvciIsImRyYXdNYXJrTGluZSIsIm1hcmtMaW5lT3B0aW9uIiwibWFya0xpbmUiLCJsaW5lQ29sb3IiLCJzaG93TGFiZWwiLCJsYWJlbEZvbnRTaXplIiwibGFiZWxQYWRkaW5nIiwibGFiZWxBbGlnbiIsImxhYmVsT2Zmc2V0WCIsImxhYmVsT2Zmc2V0WSIsImJnV2lkdGgiLCJiZ1N0YXJ0WCIsImJnU3RhcnRZIiwiZHJhd1Rvb2xUaXBIb3JpemVudGFsTGluZSIsInlBeGlzTGFiZWwiLCJ0U3RhcnRMZWZ0IiwidFN0YXJ0UmlnaHQiLCJiZ0VuZFgiLCJkcmF3VG9vbFRpcFNwbGl0QXJlYSIsImFjdGl2ZUJnQ29sb3IiLCJhY3RpdmVCZ09wYWNpdHkiLCJhY3RpdmVXaWR0aCIsImRyYXdCYXJUb29sVGlwU3BsaXRBcmVhIiwiZHJhd1Rvb2xUaXAiLCJzaG93Qm94Iiwic2hvd0Fycm93Iiwic2hvd0NhdGVnb3J5IiwiYmdDb2xvciIsImJnT3BhY2l0eSIsImJvcmRlckNvbG9yIiwiYm9yZGVyV2lkdGgiLCJib3JkZXJSYWRpdXMiLCJib3JkZXJPcGFjaXR5IiwibGVnZW5kU2hvdyIsInVuc2hpZnQiLCJsZWdlbmRNYXJnaW5SaWdodCIsImFycm93V2lkdGgiLCJpc092ZXJSaWdodEJvcmRlciIsInRvb2xUaXBXaWR0aCIsInRvb2xUaXBIZWlnaHQiLCJfc2Nyb2xsRGlzdGFuY2VfIiwiZmlsbFJlY3QiLCJzZXRUZXh0QmFzZWxpbmUiLCJkcmF3Q29sdW1uRGF0YVBvaW50cyIsImNvbHVtbk9wdGlvbiIsIm1ldGVyQm9yZGVyIiwibWV0ZXJGaWxsQ29sb3IiLCJiYXJCb3JkZXJDaXJjbGUiLCJiYXJCb3JkZXJSYWRpdXMiLCJsaW5lYXJPcGFjaXR5IiwiY29sb3JTdG9wIiwic2F2ZSIsImxlZnROdW0iLCJyaWdodE51bSIsInplcm9IZWlnaHQiLCJ0b29sdGlwUG9pbnRzIiwiZmlsbENvbG9yIiwic3Ryb2tlQ29sb3IiLCJncmQiLCJjcmVhdGVMaW5lYXJHcmFkaWVudCIsImFkZENvbG9yU3RvcCIsImxlZnQiLCJ0b3AiLCJyMCIsInIxIiwicjIiLCJyMyIsImRhdGFMYWJlbCIsInJlc3RvcmUiLCJkcmF3TW91bnREYXRhUG9pbnRzIiwiYmV6aWVyQ3VydmVUbyIsImRyYXdCYXJEYXRhUG9pbnRzIiwiZHJhd0NhbmRsZURhdGFQb2ludHMiLCJzZXJpZXNNQSIsImNhbmRsZU9wdGlvbiIsImF2ZXJhZ2UiLCJjYW5kbGUiLCJ1cExpbmUiLCJkb3duTGluZSIsImRheSIsImxlZnRTcGFjZSIsInJpZ2h0U3BhY2UiLCJzcGxpdFBvaW50TGlzdCIsInN0YXJ0UG9pbnQiLCJjdHJsUG9pbnQiLCJkcmF3QXJlYURhdGFQb2ludHMiLCJhcmVhT3B0aW9uIiwib3BhY2l0eSIsImFkZExpbmUiLCJncmFkaWVudCIsImZpcnN0UG9pbnQiLCJsYXN0UG9pbnQiLCJsaW5lVHlwZSIsImRyYXdTY2F0dGVyRGF0YVBvaW50cyIsInNjYXR0ZXJPcHRpb24iLCJzY2F0dGVyIiwiZHJhd0J1YmJsZURhdGFQb2ludHMiLCJidWJibGVPcHRpb24iLCJidWJibGUiLCJkcmF3TGluZURhdGFQb2ludHMiLCJvblNoYWRvdyIsImxpbmUiLCJzZXRTaGFkb3ciLCJkcmF3TWl4RGF0YVBvaW50cyIsImNvbHVtbkluZGV4IiwiY29sdW1uTGVuZ3RoIiwiYWRkUG9pbnQiLCJkcmF3VG9vbFRpcEJyaWRnZSIsImhvcml6ZW50YWxMaW5lIiwiZHJhd1hBeGlzIiwic2Nyb2xsWSIsInNjcm9sbFNjcmVlbldpZHRoIiwic2Nyb2xsVG90YWxXaWR0aCIsInNjcm9sbFdpZHRoIiwic2Nyb2xsTGVmdCIsInNldExpbmVDYXAiLCJzY3JvbGxCYWNrZ3JvdW5kQ29sb3IiLCJzY3JvbGxDb2xvciIsImRpc2FibGVHcmlkIiwiZ3JpZEV2YWwiLCJtYXhYQXhpc0xpc3RMZW5ndGgiLCJsYWJlbENvdW50IiwicmF0aW8iLCJuZXdDYXRlZ29yaWVzIiwiY2dMZW5ndGgiLCJ4QXhpc0ZvbnRTaXplIiwiX3hBeGlzVGV4dEFuZ2xlXyIsInNjcm9sbEhlaWdodCIsInRydWVQb2ludHMiLCJ0aXRsZU9mZnNldFgiLCJ0aXRsZU9mZnNldFkiLCJheGlzTGluZSIsImF4aXNMaW5lQ29sb3IiLCJkcmF3WUF4aXNHcmlkIiwieEF4aXNlYWNoU3BhY2luZyIsIlRvdGFsV2lkdGgiLCJkcmF3WUF4aXMiLCJ0U3RhcnRDZW50ZXIiLCJ0ZXh0QWxpZ24iLCJ0bXBzdHJhdCIsImdhcHdpZHRoIiwic2hvd1RpdGxlIiwiZHJhd0xlZ2VuZCIsImxlZ2VuZEFyZWEiLCJiYWNrZ3JvdW5kQ29sb3IiLCJpdGVtTGlzdCIsImxpc3RJbmRleCIsImhpZGRlbkNvbG9yIiwiZm9udFRyYW5zIiwiZHJhd1BpZURhdGFQb2ludHMiLCJwaWVPcHRpb24iLCJhY3RpdmVPcGFjaXR5IiwiYWN0aXZlUmFkaXVzIiwibGFiZWxXaWR0aCIsInJpbmdXaWR0aCIsImN1c3RvbVJhZGl1cyIsImNlbnRlckNvbG9yIiwiX3BpZVRleHRNYXhMZW5ndGhfIiwibGluZUpvaW4iLCJmaWxsY29sb3IiLCJjcmVhdGVDaXJjdWxhckdyYWRpZW50IiwiY3JlYXRlUmFkaWFsR3JhZGllbnQiLCJpbm5lclBpZVdpZHRoIiwiZHJhd1Jvc2VEYXRhUG9pbnRzIiwicm9zZU9wdGlvbiIsImRyYXdBcmNiYXJEYXRhUG9pbnRzIiwibGluZUNhcCIsImFyY2JhciIsImNlbnRlclgiLCJjZW50ZXJZIiwiZHJhd0dhdWdlRGF0YVBvaW50cyIsImZpeFJhZGl1cyIsImNoaWxkTnVtYmVyIiwiY2hpbGRXaWR0aCIsImdhdWdlIiwiaW5uZXJSYWRpdXMiLCJwaWVSYWRpdXMiLCJjaGlsZEFuZ2xlIiwicHJvYyIsInBvaW50ZXJSYWRpdXMiLCJncmFkaWVudDMiLCJlYWNoQ2F0ZWdvcmllcyIsImNoaWxkZW5kWCIsImRyYXdSYWRhckRhdGFQb2ludHMiLCJheGlzTGFiZWwiLCJheGlzTGFiZWxUb2ZpeCIsImdyaWRDb3VudCIsImNvb3JkaW5hdGVBbmdsZSIsInhyIiwieXIiLCJfbG9vcCIsInN0YXJ0UG9zIiwicmFkYXJEYXRhUG9pbnRzIiwic3RlcExlbmd0aCIsImxhYmVsIiwibG9ubGF0Mm1lcmNhdG9yIiwibG9uZ2l0dWRlIiwibGF0aXR1ZGUiLCJsb2ciLCJ0YW4iLCJtZXJjYXRvcjJsb25sYXQiLCJsb25sYXQiLCJhdGFuIiwiZXhwIiwiZ2V0Qm91bmRpbmdCb3giLCJjb29yZHMiLCJ4TWluIiwieE1heCIsInlNaW4iLCJ5TWF4IiwiY29vcmRhIiwiY29vcmRpbmF0ZVRvUG9pbnQiLCJwb2ludFkiLCJwb2ludFgiLCJpc1JheUludGVyc2VjdHNTZWdtZW50Iiwic19wb2kiLCJlX3BvaSIsInhzZWciLCJwb2x5Iiwic2luc2MiLCJlcG9seSIsImRyYXdNYXBEYXRhUG9pbnRzIiwibWFwT3B0aW9uIiwiYWN0aXZlIiwiZmlsbE9wYWNpdHkiLCJhY3RpdmVCb3JkZXJDb2xvciIsImFjdGl2ZUZpbGxDb2xvciIsImFjdGl2ZUZpbGxPcGFjaXR5IiwieFNjYWxlIiwieVNjYWxlIiwiZ2Fvc2kiLCJjZW50ZXJQb2ludCIsInByb3BlcnRpZXMiLCJjZW50cm9pZCIsImFjdGl2ZVRleHRDb2xvciIsImRyYXciLCJub3JtYWxJbnQiLCJpdGVyIiwiYXJyIiwicmFuZG9tIiwiY29sbGlzaW9uTmV3IiwiaXNJbiIsImdldFdvcmRDbG91ZFBvaW50IiwidEhlaWdodCIsInRXaWR0aCIsImJyZWFrbnVtIiwiU3BpbiIsImlzU3BpbiIsImFyZWF2IiwiZHJhd1dvcmRDbG91ZERhdGFQb2ludHMiLCJ3b3JkT3B0aW9uIiwiYXV0b0NvbG9ycyIsIndvcmQiLCJ3b3JkQ2xvdWREYXRhIiwic3Ryb2tlVGV4dCIsImRyYXdGdW5uZWxEYXRhUG9pbnRzIiwiZnVubmVsT3B0aW9uIiwibWluU2l6ZSIsImZ1bm5lbCIsInNlcmllc05ldyIsImRyYXdGdW5uZWxUZXh0IiwiZHJhd0Z1bm5lbENlbnRlclRleHQiLCJjZW50ZXJUZXh0IiwiY2VudGVyVGV4dFNpemUiLCJjZW50ZXJUZXh0Q29sb3IiLCJkcmF3Q2FudmFzIiwiVGltaW5nIiwiZWFzZUluIiwiZWFzZU91dCIsImVhc2VJbk91dCIsImxpbmVhciIsIkFuaW1hdGlvbiIsImlzU3RvcCIsImR1cmF0aW9uIiwidGltaW5nIiwiZGVsYXkiLCJjcmVhdGVBbmltYXRpb25GcmFtZSIsInNldFRpbWVvdXQiLCJzdGVwIiwidGltZVN0YW1wIiwiRGF0ZSIsInJlcXVlc3RBbmltYXRpb25GcmFtZSIsImFuaW1hdGlvbkZyYW1lIiwic3RhcnRUaW1lU3RhbXAiLCJfc3RlcCIsInRpbWVzdGFtcCIsIm9uUHJvY2VzcyIsIm9uQW5pbWF0aW9uRmluaXNoIiwidGltaW5nRnVuY3Rpb24iLCJiaW5kIiwicHJvdG90eXBlIiwic3RvcCIsImRyYXdDaGFydHMiLCJfdGhpcyIsImFuaW1hdGlvbkluc3RhbmNlIiwiX2NhbExlZ2VuZERhdGEiLCJsZWdlbmRIZWlnaHQiLCJfY2FsWUF4aXNEYXRhIiwibWF4VGl0bGVIZWlnaHQiLCJyaWdodEluZGV4IiwibGVmdEluZGV4IiwiX2NhbENhdGVnb3JpZXNEYXRhIiwiY2F0ZWdvcmllc0RhdGEiLCJzY3JvbGxBbGlnbiIsIm9mZnNldExlZnQiLCJ0b3RhbFdpZHRoIiwic2NyZWVuV2lkdGgiLCJjdXJyZW50T2Zmc2V0Iiwic3RhcnRUb3VjaFgiLCJsYXN0TW92ZVRpbWUiLCJjbGVhclJlY3QiLCJfZHJhd0xpbmVEYXRhUG9pbnRzIiwiZW5hYmxlTWFya0xpbmUiLCJfZHJhd1NjYXR0ZXJEYXRhUG9pbnRzIiwiX2RyYXdCdWJibGVEYXRhUG9pbnRzIiwiX2RyYXdNaXhEYXRhUG9pbnRzIiwiX2RyYXdDb2x1bW5EYXRhUG9pbnRzIiwiX2RyYXdNb3VudERhdGFQb2ludHMiLCJfZHJhd0JhckRhdGFQb2ludHMiLCJfZHJhd0FyZWFEYXRhUG9pbnRzIiwiYXJjYmFyRGF0YSIsImdhdWdlRGF0YSIsIl9kcmF3Q2FuZGxlRGF0YVBvaW50cyIsInVDaGFydHNFdmVudCIsImV2ZW50cyIsImFkZEV2ZW50TGlzdGVuZXIiLCJsaXN0ZW5lciIsImRlbEV2ZW50TGlzdGVuZXIiLCJfbGVuIiwiYXJncyIsIl9rZXkiLCJwYXJhbXMiLCJ1Q2hhcnRzIiwicGl4ZWxSYXRpbyIsImdyaWRTZXQiLCJjYW52YXMyZCIsImNvbmZpZyQkMSIsInRlbXBXaWR0aCIsInN0cm9rZVN0eWxlIiwibGluZVdpZHRoIiwiZm9udCIsImZpbGxTdHlsZSIsInRleHRCYXNlbGluZSIsImJsdXIiLCJzaGFkb3dDb2xvciIsInNoYWRvd09mZnNldFgiLCJzaGFkb3dPZmZzZXRZIiwic2hhZG93Qmx1ciIsImNhbGwiLCJ1cGRhdGVEYXRhIiwiX2dldFhBeGlzUG9pbnRzMCIsInpvb20iLCJjZW50ZXJMZWZ0IiwiTWF4TGVmdCIsImRvYnVsZVpvb20iLCJ0Y3MiLCJjbGllbnRZIiwibnRjcyIsInhsZW5ndGgiLCJtb3ZlQ291bnQiLCJjdHMwIiwiY3RzMSIsIm1vdmVDdXJyZW50MSIsImdldEN1cnJlbnREYXRhSW5kZXgiLCJtb3ZlQ3VycmVudDIiLCJjdXJyZW50RWFjaFNwYWNpbmciLCJjdXJyZW50TGVmdCIsInN0b3BBbmltYXRpb24iLCJfdG91Y2hlcyQiLCJnZXRMZWdlbmREYXRhSW5kZXgiLCJ0b3VjaExlZ2VuZCIsInNob3dUb29sVGlwIiwiX2dldFRvb2xUaXBEYXRhIiwiX2dldE1peFRvb2xUaXBEYXRhIiwic2Nyb2xsU3RhcnQiLCJzY3JvbGwiLCJub3ciLCJMaW1pdCIsInRvdWNoTW92ZUxpbWl0IiwiY3Vyck1vdmVUaW1lIiwiX2Rpc3RhbmNlIiwic2Nyb2xsRW5kIiwiX3Njcm9sbE9wdGlvbiJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFYTs7QUFBQTtBQUFBO0VBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUViLElBQUlBLE1BQU0sR0FBRztFQUNYQyxPQUFPLEVBQUUsaUJBQWlCO0VBQzFCQyxVQUFVLEVBQUUsRUFBRTtFQUNkQyxXQUFXLEVBQUUsRUFBRTtFQUNmQyxPQUFPLEVBQUUsQ0FBQyxFQUFFLEVBQUUsRUFBRSxFQUFFLEVBQUUsRUFBRSxFQUFFLENBQUM7RUFDekJDLE1BQU0sRUFBRSxLQUFLO0VBQ2JDLFFBQVEsRUFBRSxFQUFFO0VBQ1pDLFNBQVMsRUFBRSxTQUFTO0VBQ3BCQyxjQUFjLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFFBQVEsRUFBRSxRQUFRLENBQUM7RUFDeERDLEtBQUssRUFBRSxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0VBQzFHQyxXQUFXLEVBQUUs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LEVBQUU7TUFDL0I2ZSxnQkFBZ0IsRUFBRTJRLGFBQWEsR0FBR3lFLFNBQVM7TUFDM0MxZ0IsU0FBUyxFQUFFO0lBQ2IsQ0FBQyxDQUFDO0lBQ0osSUFBSSxDQUFDdlQsSUFBSSxHQUFHQSxJQUFJO0lBQ2R5dUIsVUFBVSxDQUFDd0QsSUFBSSxDQUFDLElBQUksRUFBRWp5QixJQUFJLENBQUN4QixJQUFJLEVBQUV3QixJQUFJLEVBQUUsSUFBSSxDQUFDL0YsTUFBTSxFQUFFLElBQUksQ0FBQ3FLLE9BQU8sQ0FBQztJQUNqRSxPQUFPa3JCLGFBQWEsR0FBR3lFLFNBQVM7RUFDbEM7QUFDRixDQUFDO0FBRURoRCxPQUFPLENBQUMxQyxTQUFTLENBQUMyRixTQUFTLEdBQUcsVUFBUzkyQixDQUFDLEVBQUU7RUFDeEMsSUFBSSxJQUFJLENBQUM0QyxJQUFJLENBQUNzTyxZQUFZLEtBQUssSUFBSSxFQUFFO0lBQ25DLElBQUk2bEIsYUFBYSxHQUFHLElBQUksQ0FBQ3R6QixZQUFZO01BQ25DMnVCLGFBQWEsR0FBRzJFLGFBQWEsQ0FBQzNFLGFBQWE7TUFDM0MxdkIsUUFBUSxHQUFHcTBCLGFBQWEsQ0FBQ3IwQixRQUFRO0lBQ25DLElBQUksQ0FBQ2UsWUFBWSxDQUFDMnVCLGFBQWEsR0FBR0EsYUFBYSxHQUFHMXZCLFFBQVE7SUFDMUQsSUFBSSxDQUFDZSxZQUFZLENBQUNmLFFBQVEsR0FBRyxDQUFDO0lBQzlCLElBQUksQ0FBQ2UsWUFBWSxDQUFDK3hCLFNBQVMsR0FBRyxDQUFDO0VBQ2pDO0FBQ0YsQ0FBQztBQUFDLGVBRWEzQixPQUFPO0FBQUEsMkIiLCJmaWxlIjoiMTIyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogdUNoYXJ0cyAoUilcclxuICog6auY5oCn6IO96Leo5bmz5Y+w5Zu+6KGo5bqT77yM5pSv5oyBSDXjgIFBUFDjgIHlsI/nqIvluo/vvIjlvq7kv6Ev5pSv5LuY5a6dL+eZvuW6pi/lpLTmnaEvUVEvMzYwL+W/q+aJi++8ieOAgVZ1ZeOAgVRhcm/nrYnmlK/mjIFjYW52YXPnmoTmoYbmnrblubPlj7BcclxuICogQ29weXJpZ2h0IChDKSAyMDE4LTIwMjIgUUlVTiAoUikg56eL5LqRIGh0dHBzOi8vd3d3LnVjaGFydHMuY24gQWxsIHJpZ2h0cyByZXNlcnZlZC5cclxuICogTGljZW5zZWQgKCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAgKVxyXG4gKiDlpI3liLbkvb/nlKjor7fkv53nlZnmnKzmrrXms6jph4rvvIzmhJ/osKLmlK/mjIHlvIDmupDvvIFcclxuICogXHJcbiAqIHVDaGFydHMgKFIpIOWumOaWuee9keermVxyXG4gKiBodHRwczovL3d3dy51Q2hhcnRzLmNuXHJcbiAqIFxyXG4gKiDlvIDmupDlnLDlnYA6XHJcbiAqIGh0dHBzOi8vZ2l0ZWUuY29tL3VDaGFydHMvdUNoYXJ0c1xyXG4gKiBcclxuICogdW5pLWFwcOaPkuS7tuW4guWcuuWcsOWdgO+8mlxyXG4gKiBodHRwOi8vZXh0LmRjbG91ZC5uZXQuY24vcGx1Z2luP2lkPTI3MVxyXG4gKiBcclxuICovXHJcblxyXG4ndXNlIHN0cmljdCc7XHJcblxyXG52YXIgY29uZmlnID0ge1xyXG4gIHZlcnNpb246ICd2Mi41LjAtMjAyMzAxMDEnLFxyXG4gIHlBeGlzV2lkdGg6IDE1LFxyXG4gIHhBeGlzSGVpZ2h0OiAyMixcclxuICBwYWRkaW5nOiBbMTAsIDEwLCAxMCwgMTBdLFxyXG4gIHJvdGF0ZTogZmFsc2UsXHJcbiAgZm9udFNpemU6IDEzLFxyXG4gIGZvbnRDb2xvcjogJyM2NjY2NjYnLFxyXG4gIGRhdGFQb2ludFNoYXBlOiBbJ2NpcmNsZScsICdjaXJjbGUnLCAnY2lyY2xlJywgJ2NpcmNsZSddLFxyXG4gIGNvbG9yOiBbJyMxODkwRkYnLCAnIzkxQ0I3NCcsICcjRkFDODU4JywgJyNFRTY2NjYnLCAnIzczQzBERScsICcjM0NBMjcyJywgJyNGQzg0NTInLCAnIzlBNjBCNCcsICcjZWE3Y2NjJ10sXHJcbiAgbGluZWFyQ29sb3I6IFsnIzBFRTJGOCcsICcjMkJEQ0E4JywgJyNGQTdEOEQnLCAnI0VCODhFMicsICcjMkFFM0EwJywgJyMwRUUyRjgnLCAnI0VCODhFMicsICcjNjc3M0UzJywgJyNGNzhBODUnXSxcclxuICBwaWVDaGFydExpbmVQYWRkaW5nOiAxNSxcclxuICBwaWVDaGFydFRleHRQYWRkaW5nOiA1LFxyXG4gIHRpdGxlRm9udFNpemU6IDIwLFxyXG4gIHN1YnRpdGxlRm9udFNpemU6IDE1LFxyXG4gIHJhZGFyTGFiZWxUZXh0TWFyZ2luOiAxMyxcclxufTtcclxuXHJcbnZhciBhc3NpZ24gPSBmdW5jdGlvbih0YXJnZXQsIC4uLnZhckFyZ3MpIHtcclxuICBpZiAodGFyZ2V0ID09IG51bGwpIHtcclxuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1t1Q2hhcnRzXSBDYW5ub3QgY29udmVydCB1bmRlZmluZWQgb3IgbnVsbCB0byBvYmplY3QnKTtcclxuICB9XHJcbiAgaWYgKCF2YXJBcmdzIHx8IHZhckFyZ3MubGVuZ3RoIDw9IDApIHtcclxuICAgIHJldHVybiB0YXJnZXQ7XHJcbiAgfVxyXG4gIC8vIOa3seW6puWQiOW5tuWvueixoVxyXG4gIGZ1bmN0aW9uIGRlZXBBc3NpZ24ob2JqMSwgb2JqMikge1xyXG4gICAgZm9yIChsZXQga2V5IGluIG9iajIpIHtcclxuICAgICAgb2JqMVtrZXldID0gb2JqMVtrZXldICYmIG9iajFba2V5XS50b1N0cmluZygpID09PSBcIltvYmplY3QgT2JqZWN0XVwiID9cclxuICAgICAgICBkZWVwQXNzaWduKG9iajFba2V5XSwgb2JqMltrZXldKSA6IG9iajFba2V5XSA9IG9iajJba2V5XTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmoxO1xyXG4gIH1cclxuICB2YXJBcmdzLmZvckVhY2godmFsID0+IHtcclxuICAgIHRhcmdldCA9IGRlZXBBc3NpZ24odGFyZ2V0LCB2YWwpO1xyXG4gIH0pO1xyXG4gIHJldHVybiB0YXJnZXQ7XHJcbn07XHJcblxyXG52YXIgdXRpbCA9IHtcclxuICB0b0ZpeGVkOiBmdW5jdGlvbiB0b0ZpeGVkKG51bSwgbGltaXQpIHtcclxuICAgIGxpbWl0ID0gbGltaXQgfHwgMjtcclxuICAgIGlmICh0aGlzLmlzRmxvYXQobnVtKSkge1xyXG4gICAgICBudW0gPSBudW0udG9GaXhlZChsaW1pdCk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gbnVtO1xyXG4gIH0sXHJcbiAgaXNGbG9hdDogZnVuY3Rpb24gaXNGbG9hdChudW0pIHtcclxuICAgIHJldHVybiBudW0gJSAxICE9PSAwO1xyXG4gIH0sXHJcbiAgYXBwcm94aW1hdGVseUVxdWFsOiBmdW5jdGlvbiBhcHByb3hpbWF0ZWx5RXF1YWwobnVtMSwgbnVtMikge1xyXG4gICAgcmV0dXJuIE1hdGguYWJzKG51bTEgLSBudW0yKSA8IDFlLTEwO1xyXG4gIH0sXHJcbiAgaXNTYW1lU2lnbjogZnVuY3Rpb24gaXNTYW1lU2lnbihudW0xLCBudW0yKSB7XHJcbiAgICByZXR1cm4gTWF0aC5hYnMobnVtMSkgPT09IG51bTEgJiYgTWF0aC5hYnMobnVtMikgPT09IG51bTIgfHwgTWF0aC5hYnMobnVtMSkgIT09IG51bTEgJiYgTWF0aC5hYnMobnVtMikgIT09IG51bTI7XHJcbiAgfSxcclxuICBpc1NhbWVYQ29vcmRpbmF0ZUFyZWE6IGZ1bmN0aW9uIGlzU2FtZVhDb29yZGluYXRlQXJlYShwMSwgcDIpIHtcclxuICAgIHJldHVybiB0aGlzLmlzU2FtZVNpZ24ocDEueCwgcDIueCk7XHJcbiAgfSxcclxuICBpc0NvbGxpc2lvbjogZnVuY3Rpb24gaXNDb2xsaXNpb24ob2JqMSwgb2JqMikge1xyXG4gICAgb2JqMS5lbmQgPSB7fTtcclxuICAgIG9iajEuZW5kLnggPSBvYmoxLnN0YXJ0LnggKyBvYmoxLndpZHRoO1xyXG4gICAgb2JqMS5lbmQueSA9IG9iajEuc3RhcnQueSAtIG9iajEuaGVpZ2h0O1xyXG4gICAgb2JqMi5lbmQgPSB7fTtcclxuICAgIG9iajIuZW5kLnggPSBvYmoyLnN0YXJ0LnggKyBvYmoyLndpZHRoO1xyXG4gICAgb2JqMi5lbmQueSA9IG9iajIuc3RhcnQueSAtIG9iajIuaGVpZ2h0O1xyXG4gICAgdmFyIGZsYWcgPSBvYmoyLnN0YXJ0LnggPiBvYmoxLmVuZC54IHx8IG9iajIuZW5kLnggPCBvYmoxLnN0YXJ0LnggfHwgb2JqMi5lbmQueSA+IG9iajEuc3RhcnQueSB8fCBvYmoyLnN0YXJ0LnkgPCBvYmoxLmVuZC55O1xyXG4gICAgcmV0dXJuICFmbGFnO1xyXG4gIH1cclxufTtcclxuXHJcbi8v5YW85a65SDXngrnlh7vkuovku7ZcclxuZnVuY3Rpb24gZ2V0SDVPZmZzZXQoZSkge1xyXG4gIGUubXAgPSB7XHJcbiAgICBjaGFuZ2VkVG91Y2hlczogW11cclxuICB9O1xyXG4gIGUubXAuY2hhbmdlZFRvdWNoZXMucHVzaCh7XHJcbiAgICB4OiBlLm9mZnNldFgsXHJcbiAgICB5OiBlLm9mZnNldFlcclxuICB9KTtcclxuICByZXR1cm4gZTtcclxufVxyXG5cclxuLy8gaGV4IOi9rCByZ2JhXHJcbmZ1bmN0aW9uIGhleFRvUmdiKGhleFZhbHVlLCBvcGMpIHtcclxuICB2YXIgcmd4ID0gL14jPyhbYS1mXFxkXSkoW2EtZlxcZF0pKFthLWZcXGRdKSQvaTtcclxuICB2YXIgaGV4ID0gaGV4VmFsdWUucmVwbGFjZShyZ3gsIGZ1bmN0aW9uKG0sIHIsIGcsIGIpIHtcclxuICAgIHJldHVybiByICsgciArIGcgKyBnICsgYiArIGI7XHJcbiAgfSk7XHJcbiAgdmFyIHJnYiA9IC9eIz8oW2EtZlxcZF17Mn0pKFthLWZcXGRdezJ9KShbYS1mXFxkXXsyfSkkL2kuZXhlYyhoZXgpO1xyXG4gIHZhciByID0gcGFyc2VJbnQocmdiWzFdLCAxNik7XHJcbiAgdmFyIGcgPSBwYXJzZUludChyZ2JbMl0sIDE2KTtcclxuICB2YXIgYiA9IHBhcnNlSW50KHJnYlszXSwgMTYpO1xyXG4gIHJldHVybiAncmdiYSgnICsgciArICcsJyArIGcgKyAnLCcgKyBiICsgJywnICsgb3BjICsgJyknO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kUmFuZ2UobnVtLCB0eXBlLCBsaW1pdCkge1xyXG4gIGlmIChpc05hTihudW0pKSB7XHJcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1t1Q2hhcnRzXSBzZXJpZXPmlbDmja7pnIDkuLpOdW1iZXLmoLzlvI8nKTtcclxuICB9XHJcbiAgbGltaXQgPSBsaW1pdCB8fCAxMDtcclxuICB0eXBlID0gdHlwZSA/IHR5cGUgOiAndXBwZXInO1xyXG4gIHZhciBtdWx0aXBsZSA9IDE7XHJcbiAgd2hpbGUgKGxpbWl0IDwgMSkge1xyXG4gICAgbGltaXQgKj0gMTA7XHJcbiAgICBtdWx0aXBsZSAqPSAxMDtcclxuICB9XHJcbiAgaWYgKHR5cGUgPT09ICd1cHBlcicpIHtcclxuICAgIG51bSA9IE1hdGguY2VpbChudW0gKiBtdWx0aXBsZSk7XHJcbiAgfSBlbHNlIHtcclxuICAgIG51bSA9IE1hdGguZmxvb3IobnVtICogbXVsdGlwbGUpO1xyXG4gIH1cclxuICB3aGlsZSAobnVtICUgbGltaXQgIT09IDApIHtcclxuICAgIGlmICh0eXBlID09PSAndXBwZXInKSB7XHJcbiAgICAgIGlmIChudW0gPT0gbnVtICsgMSkgeyAvL+S/ruWkjeaVsOaNruWAvOi/h+Wkp251bSsr5peg5pWI55qEYnVnIGJ5IOWQkeaXpeiRtSBAeHJrX2p5XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgICAgbnVtKys7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBudW0tLTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIG51bSAvIG11bHRpcGxlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxDYW5kbGVNQShkYXlBcnIsIG5hbWVBcnIsIGNvbG9yQXJyLCBrZGF0YSkge1xyXG4gIGxldCBzZXJpZXNUZW1wID0gW107XHJcbiAgZm9yIChsZXQgayA9IDA7IGsgPCBkYXlBcnIubGVuZ3RoOyBrKyspIHtcclxuICAgIGxldCBzZXJpZXNJdGVtID0ge1xyXG4gICAgICBkYXRhOiBbXSxcclxuICAgICAgbmFtZTogbmFtZUFycltrXSxcclxuICAgICAgY29sb3I6IGNvbG9yQXJyW2tdXHJcbiAgICB9O1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IGtkYXRhLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGlmIChpIDwgZGF5QXJyW2tdKSB7XHJcbiAgICAgICAgc2VyaWVzSXRlbS5kYXRhLnB1c2gobnVsbCk7XHJcbiAgICAgICAgY29udGludWU7XHJcbiAgICAgIH1cclxuICAgICAgbGV0IHN1bSA9IDA7XHJcbiAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgZGF5QXJyW2tdOyBqKyspIHtcclxuICAgICAgICBzdW0gKz0ga2RhdGFbaSAtIGpdWzFdO1xyXG4gICAgICB9XHJcbiAgICAgIHNlcmllc0l0ZW0uZGF0YS5wdXNoKCsoc3VtIC8gZGF5QXJyW2tdKS50b0ZpeGVkKDMpKTtcclxuICAgIH1cclxuICAgIHNlcmllc1RlbXAucHVzaChzZXJpZXNJdGVtKTtcclxuICB9XHJcbiAgcmV0dXJuIHNlcmllc1RlbXA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbFZhbGlkRGlzdGFuY2Uoc2VsZiwgZGlzdGFuY2UsIGNoYXJ0RGF0YSwgY29uZmlnLCBvcHRzKSB7XHJcbiAgdmFyIGRhdGFDaGFydEFyZWFXaWR0aCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM107XHJcbiAgdmFyIGRhdGFDaGFydFdpZHRoID0gY2hhcnREYXRhLmVhY2hTcGFjaW5nICogKG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS54QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICBpZihvcHRzLnR5cGUgPT0gJ21vdW50JyAmJiBvcHRzLmV4dHJhICYmIG9wdHMuZXh0cmEubW91bnQgJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvICYmIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA+IDEpe1xyXG4gICAgaWYob3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvPjIpIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA9IDJcclxuICAgIGRhdGFDaGFydFdpZHRoICs9IChvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gLSAxKSpjaGFydERhdGEuZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHZhciB2YWxpZERpc3RhbmNlID0gZGlzdGFuY2U7XHJcbiAgaWYgKGRpc3RhbmNlID49IDApIHtcclxuICAgIHZhbGlkRGlzdGFuY2UgPSAwO1xyXG4gICAgc2VsZi51ZXZlbnQudHJpZ2dlcignc2Nyb2xsTGVmdCcpO1xyXG4gICAgc2VsZi5zY3JvbGxPcHRpb24ucG9zaXRpb24gPSAnbGVmdCdcclxuICAgIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gPSAnbGVmdCc7XHJcbiAgfSBlbHNlIGlmIChNYXRoLmFicyhkaXN0YW5jZSkgPj0gZGF0YUNoYXJ0V2lkdGggLSBkYXRhQ2hhcnRBcmVhV2lkdGgpIHtcclxuICAgIHZhbGlkRGlzdGFuY2UgPSBkYXRhQ2hhcnRBcmVhV2lkdGggLSBkYXRhQ2hhcnRXaWR0aDtcclxuICAgIHNlbGYudWV2ZW50LnRyaWdnZXIoJ3Njcm9sbFJpZ2h0Jyk7XHJcbiAgICBzZWxmLnNjcm9sbE9wdGlvbi5wb3NpdGlvbiA9ICdyaWdodCdcclxuICAgIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gPSAncmlnaHQnO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBzZWxmLnNjcm9sbE9wdGlvbi5wb3NpdGlvbiA9IGRpc3RhbmNlXHJcbiAgICBvcHRzLnhBeGlzLnNjcm9sbFBvc2l0aW9uID0gZGlzdGFuY2U7XHJcbiAgfVxyXG4gIHJldHVybiB2YWxpZERpc3RhbmNlO1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0luQW5nbGVSYW5nZShhbmdsZSwgc3RhcnRBbmdsZSwgZW5kQW5nbGUpIHtcclxuICBmdW5jdGlvbiBhZGp1c3QoYW5nbGUpIHtcclxuICAgIHdoaWxlIChhbmdsZSA8IDApIHtcclxuICAgICAgYW5nbGUgKz0gMiAqIE1hdGguUEk7XHJcbiAgICB9XHJcbiAgICB3aGlsZSAoYW5nbGUgPiAyICogTWF0aC5QSSkge1xyXG4gICAgICBhbmdsZSAtPSAyICogTWF0aC5QSTtcclxuICAgIH1cclxuICAgIHJldHVybiBhbmdsZTtcclxuICB9XHJcbiAgYW5nbGUgPSBhZGp1c3QoYW5nbGUpO1xyXG4gIHN0YXJ0QW5nbGUgPSBhZGp1c3Qoc3RhcnRBbmdsZSk7XHJcbiAgZW5kQW5nbGUgPSBhZGp1c3QoZW5kQW5nbGUpO1xyXG4gIGlmIChzdGFydEFuZ2xlID4gZW5kQW5nbGUpIHtcclxuICAgIGVuZEFuZ2xlICs9IDIgKiBNYXRoLlBJO1xyXG4gICAgaWYgKGFuZ2xlIDwgc3RhcnRBbmdsZSkge1xyXG4gICAgICBhbmdsZSArPSAyICogTWF0aC5QSTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGFuZ2xlID49IHN0YXJ0QW5nbGUgJiYgYW5nbGUgPD0gZW5kQW5nbGU7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGkpIHtcclxuICBmdW5jdGlvbiBpc05vdE1pZGRsZVBvaW50KHBvaW50cywgaSkge1xyXG4gICAgaWYgKHBvaW50c1tpIC0gMV0gJiYgcG9pbnRzW2kgKyAxXSkge1xyXG4gICAgICByZXR1cm4gcG9pbnRzW2ldLnkgPj0gTWF0aC5tYXgocG9pbnRzW2kgLSAxXS55LCBwb2ludHNbaSArIDFdLnkpIHx8IHBvaW50c1tpXS55IDw9IE1hdGgubWluKHBvaW50c1tpIC0gMV0ueSxcclxuICAgICAgICBwb2ludHNbaSArIDFdLnkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuICBmdW5jdGlvbiBpc05vdE1pZGRsZVBvaW50WChwb2ludHMsIGkpIHtcclxuICAgIGlmIChwb2ludHNbaSAtIDFdICYmIHBvaW50c1tpICsgMV0pIHtcclxuICAgICAgcmV0dXJuIHBvaW50c1tpXS54ID49IE1hdGgubWF4KHBvaW50c1tpIC0gMV0ueCwgcG9pbnRzW2kgKyAxXS54KSB8fCBwb2ludHNbaV0ueCA8PSBNYXRoLm1pbihwb2ludHNbaSAtIDFdLngsXHJcbiAgICAgICAgcG9pbnRzW2kgKyAxXS54KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcbiAgdmFyIGEgPSAwLjI7XHJcbiAgdmFyIGIgPSAwLjI7XHJcbiAgdmFyIHBBeCA9IG51bGw7XHJcbiAgdmFyIHBBeSA9IG51bGw7XHJcbiAgdmFyIHBCeCA9IG51bGw7XHJcbiAgdmFyIHBCeSA9IG51bGw7XHJcbiAgaWYgKGkgPCAxKSB7XHJcbiAgICBwQXggPSBwb2ludHNbMF0ueCArIChwb2ludHNbMV0ueCAtIHBvaW50c1swXS54KSAqIGE7XHJcbiAgICBwQXkgPSBwb2ludHNbMF0ueSArIChwb2ludHNbMV0ueSAtIHBvaW50c1swXS55KSAqIGE7XHJcbiAgfSBlbHNlIHtcclxuICAgIHBBeCA9IHBvaW50c1tpXS54ICsgKHBvaW50c1tpICsgMV0ueCAtIHBvaW50c1tpIC0gMV0ueCkgKiBhO1xyXG4gICAgcEF5ID0gcG9pbnRzW2ldLnkgKyAocG9pbnRzW2kgKyAxXS55IC0gcG9pbnRzW2kgLSAxXS55KSAqIGE7XHJcbiAgfVxyXG5cclxuICBpZiAoaSA+IHBvaW50cy5sZW5ndGggLSAzKSB7XHJcbiAgICB2YXIgbGFzdCA9IHBvaW50cy5sZW5ndGggLSAxO1xyXG4gICAgcEJ4ID0gcG9pbnRzW2xhc3RdLnggLSAocG9pbnRzW2xhc3RdLnggLSBwb2ludHNbbGFzdCAtIDFdLngpICogYjtcclxuICAgIHBCeSA9IHBvaW50c1tsYXN0XS55IC0gKHBvaW50c1tsYXN0XS55IC0gcG9pbnRzW2xhc3QgLSAxXS55KSAqIGI7XHJcbiAgfSBlbHNlIHtcclxuICAgIHBCeCA9IHBvaW50c1tpICsgMV0ueCAtIChwb2ludHNbaSArIDJdLnggLSBwb2ludHNbaV0ueCkgKiBiO1xyXG4gICAgcEJ5ID0gcG9pbnRzW2kgKyAxXS55IC0gKHBvaW50c1tpICsgMl0ueSAtIHBvaW50c1tpXS55KSAqIGI7XHJcbiAgfVxyXG4gIGlmIChpc05vdE1pZGRsZVBvaW50KHBvaW50cywgaSArIDEpKSB7XHJcbiAgICBwQnkgPSBwb2ludHNbaSArIDFdLnk7XHJcbiAgfVxyXG4gIGlmIChpc05vdE1pZGRsZVBvaW50KHBvaW50cywgaSkpIHtcclxuICAgIHBBeSA9IHBvaW50c1tpXS55O1xyXG4gIH1cclxuICBpZiAoaXNOb3RNaWRkbGVQb2ludFgocG9pbnRzLCBpICsgMSkpIHtcclxuICAgIHBCeCA9IHBvaW50c1tpICsgMV0ueDtcclxuICB9XHJcbiAgaWYgKGlzTm90TWlkZGxlUG9pbnRYKHBvaW50cywgaSkpIHtcclxuICAgIHBBeCA9IHBvaW50c1tpXS54O1xyXG4gIH1cclxuICBpZiAocEF5ID49IE1hdGgubWF4KHBvaW50c1tpXS55LCBwb2ludHNbaSArIDFdLnkpIHx8IHBBeSA8PSBNYXRoLm1pbihwb2ludHNbaV0ueSwgcG9pbnRzW2kgKyAxXS55KSkge1xyXG4gICAgcEF5ID0gcG9pbnRzW2ldLnk7XHJcbiAgfVxyXG4gIGlmIChwQnkgPj0gTWF0aC5tYXgocG9pbnRzW2ldLnksIHBvaW50c1tpICsgMV0ueSkgfHwgcEJ5IDw9IE1hdGgubWluKHBvaW50c1tpXS55LCBwb2ludHNbaSArIDFdLnkpKSB7XHJcbiAgICBwQnkgPSBwb2ludHNbaSArIDFdLnk7XHJcbiAgfVxyXG4gIGlmIChwQXggPj0gTWF0aC5tYXgocG9pbnRzW2ldLngsIHBvaW50c1tpICsgMV0ueCkgfHwgcEF4IDw9IE1hdGgubWluKHBvaW50c1tpXS54LCBwb2ludHNbaSArIDFdLngpKSB7XHJcbiAgICBwQXggPSBwb2ludHNbaV0ueDtcclxuICB9XHJcbiAgaWYgKHBCeCA+PSBNYXRoLm1heChwb2ludHNbaV0ueCwgcG9pbnRzW2kgKyAxXS54KSB8fCBwQnggPD0gTWF0aC5taW4ocG9pbnRzW2ldLngsIHBvaW50c1tpICsgMV0ueCkpIHtcclxuICAgIHBCeCA9IHBvaW50c1tpICsgMV0ueDtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIGN0ckE6IHtcclxuICAgICAgeDogcEF4LFxyXG4gICAgICB5OiBwQXlcclxuICAgIH0sXHJcbiAgICBjdHJCOiB7XHJcbiAgICAgIHg6IHBCeCxcclxuICAgICAgeTogcEJ5XHJcbiAgICB9XHJcbiAgfTtcclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKHgsIHksIGNlbnRlcikge1xyXG4gIHJldHVybiB7XHJcbiAgICB4OiBjZW50ZXIueCArIHgsXHJcbiAgICB5OiBjZW50ZXIueSAtIHlcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBhdm9pZENvbGxpc2lvbihvYmosIHRhcmdldCkge1xyXG4gIGlmICh0YXJnZXQpIHtcclxuICAgIC8vIGlzIGNvbGxpc2lvbiB0ZXN0XHJcbiAgICB3aGlsZSAodXRpbC5pc0NvbGxpc2lvbihvYmosIHRhcmdldCkpIHtcclxuICAgICAgaWYgKG9iai5zdGFydC54ID4gMCkge1xyXG4gICAgICAgIG9iai5zdGFydC55LS07XHJcbiAgICAgIH0gZWxzZSBpZiAob2JqLnN0YXJ0LnggPCAwKSB7XHJcbiAgICAgICAgb2JqLnN0YXJ0LnkrKztcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpZiAob2JqLnN0YXJ0LnkgPiAwKSB7XHJcbiAgICAgICAgICBvYmouc3RhcnQueSsrO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBvYmouc3RhcnQueS0tO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gb2JqO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaXhQaWVTZXJpZXMoc2VyaWVzLCBvcHRzLCBjb25maWcpe1xyXG4gIGxldCBwaWVTZXJpZXNBcnIgPSBbXTtcclxuICBpZihzZXJpZXMubGVuZ3RoPjAgJiYgc2VyaWVzWzBdLmRhdGEuY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTEpe1xyXG4gICAgb3B0cy5fcGllU2VyaWVzXyA9IHNlcmllcztcclxuICAgIGxldCBvbGRzZXJpZXMgPSBzZXJpZXNbMF0uZGF0YTtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2xkc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG9sZHNlcmllc1tpXS5mb3JtYXR0ZXIgPSBzZXJpZXNbMF0uZm9ybWF0dGVyO1xyXG4gICAgICBvbGRzZXJpZXNbaV0uZGF0YSA9IG9sZHNlcmllc1tpXS52YWx1ZTtcclxuICAgICAgcGllU2VyaWVzQXJyLnB1c2gob2xkc2VyaWVzW2ldKTtcclxuICAgIH1cclxuICAgIG9wdHMuc2VyaWVzID0gcGllU2VyaWVzQXJyO1xyXG4gIH1lbHNle1xyXG4gICAgcGllU2VyaWVzQXJyID0gc2VyaWVzO1xyXG4gIH1cclxuICByZXR1cm4gcGllU2VyaWVzQXJyO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxsU2VyaWVzKHNlcmllcywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIGluZGV4ID0gMDtcclxuICBmb3IgKHZhciBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpZiAoIWl0ZW0uY29sb3IpIHtcclxuICAgICAgaXRlbS5jb2xvciA9IGNvbmZpZy5jb2xvcltpbmRleF07XHJcbiAgICAgIGluZGV4ID0gKGluZGV4ICsgMSkgJSBjb25maWcuY29sb3IubGVuZ3RoO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLmxpbmVhckluZGV4KSB7XHJcbiAgICAgIGl0ZW0ubGluZWFySW5kZXggPSBpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLmluZGV4KSB7XHJcbiAgICAgIGl0ZW0uaW5kZXggPSAwO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLnR5cGUpIHtcclxuICAgICAgaXRlbS50eXBlID0gb3B0cy50eXBlO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBpdGVtLnNob3cgPT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICBpdGVtLnNob3cgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLnR5cGUpIHtcclxuICAgICAgaXRlbS50eXBlID0gb3B0cy50eXBlO1xyXG4gICAgfVxyXG4gICAgaWYgKCFpdGVtLnBvaW50U2hhcGUpIHtcclxuICAgICAgaXRlbS5wb2ludFNoYXBlID0gXCJjaXJjbGVcIjtcclxuICAgIH1cclxuICAgIGlmICghaXRlbS5sZWdlbmRTaGFwZSkge1xyXG4gICAgICBzd2l0Y2ggKGl0ZW0udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2xpbmUnOlxyXG4gICAgICAgICAgaXRlbS5sZWdlbmRTaGFwZSA9IFwibGluZVwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnY29sdW1uJzpcclxuICAgICAgICBjYXNlICdiYXInOlxyXG4gICAgICAgICAgaXRlbS5sZWdlbmRTaGFwZSA9IFwicmVjdFwiO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnYXJlYSc6XHJcbiAgICAgICAgY2FzZSAnbW91bnQnOlxyXG4gICAgICAgICAgaXRlbS5sZWdlbmRTaGFwZSA9IFwidHJpYW5nbGVcIjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpdGVtLmxlZ2VuZFNoYXBlID0gXCJjaXJjbGVcIjtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWxsQ3VzdG9tQ29sb3IobGluZWFyVHlwZSwgY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKSB7XHJcbiAgdmFyIG5ld2NvbG9yID0gY3VzdG9tQ29sb3IgfHwgW107XHJcbiAgaWYgKGxpbmVhclR5cGUgPT0gJ2N1c3RvbScgJiYgbmV3Y29sb3IubGVuZ3RoID09IDAgKSB7XHJcbiAgICBuZXdjb2xvciA9IGNvbmZpZy5saW5lYXJDb2xvcjtcclxuICB9XHJcbiAgaWYgKGxpbmVhclR5cGUgPT0gJ2N1c3RvbScgJiYgbmV3Y29sb3IubGVuZ3RoIDwgc2VyaWVzLmxlbmd0aCkge1xyXG4gICAgbGV0IGNoYXpoaSA9IHNlcmllcy5sZW5ndGggLSBuZXdjb2xvci5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNoYXpoaTsgaSsrKSB7XHJcbiAgICAgIG5ld2NvbG9yLnB1c2goY29uZmlnLmxpbmVhckNvbG9yWyhpICsgMSkgJSBjb25maWcubGluZWFyQ29sb3IubGVuZ3RoXSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiBuZXdjb2xvcjtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RGF0YVJhbmdlKG1pbkRhdGEsIG1heERhdGEpIHtcclxuICB2YXIgbGltaXQgPSAwO1xyXG4gIHZhciByYW5nZSA9IG1heERhdGEgLSBtaW5EYXRhO1xyXG4gIGlmIChyYW5nZSA+PSAxMDAwMCkge1xyXG4gICAgbGltaXQgPSAxMDAwO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMTAwMCkge1xyXG4gICAgbGltaXQgPSAxMDA7XHJcbiAgfSBlbHNlIGlmIChyYW5nZSA+PSAxMDApIHtcclxuICAgIGxpbWl0ID0gMTA7XHJcbiAgfSBlbHNlIGlmIChyYW5nZSA+PSAxMCkge1xyXG4gICAgbGltaXQgPSA1O1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMSkge1xyXG4gICAgbGltaXQgPSAxO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMC4xKSB7XHJcbiAgICBsaW1pdCA9IDAuMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMDEpIHtcclxuICAgIGxpbWl0ID0gMC4wMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMDAxKSB7XHJcbiAgICBsaW1pdCA9IDAuMDAxO1xyXG4gIH0gZWxzZSBpZiAocmFuZ2UgPj0gMC4wMDAxKSB7XHJcbiAgICBsaW1pdCA9IDAuMDAwMTtcclxuICB9IGVsc2UgaWYgKHJhbmdlID49IDAuMDAwMDEpIHtcclxuICAgIGxpbWl0ID0gMC4wMDAwMTtcclxuICB9IGVsc2Uge1xyXG4gICAgbGltaXQgPSAwLjAwMDAwMTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIG1pblJhbmdlOiBmaW5kUmFuZ2UobWluRGF0YSwgJ2xvd2VyJywgbGltaXQpLFxyXG4gICAgbWF4UmFuZ2U6IGZpbmRSYW5nZShtYXhEYXRhLCAndXBwZXInLCBsaW1pdClcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBtZWFzdXJlVGV4dCh0ZXh0LCBmb250U2l6ZSwgY29udGV4dCkge1xyXG4gIHZhciB3aWR0aCA9IDA7XHJcbiAgdGV4dCA9IFN0cmluZyh0ZXh0KTtcclxuXHJcblxyXG5cclxuICBpZiAoY29udGV4dCAhPT0gZmFsc2UgJiYgY29udGV4dCAhPT0gdW5kZWZpbmVkICYmIGNvbnRleHQuc2V0Rm9udFNpemUgJiYgY29udGV4dC5tZWFzdXJlVGV4dCkge1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICByZXR1cm4gY29udGV4dC5tZWFzdXJlVGV4dCh0ZXh0KS53aWR0aDtcclxuICB9IGVsc2Uge1xyXG4gICAgdmFyIHRleHQgPSB0ZXh0LnNwbGl0KCcnKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGV4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IHRleHRbaV07XHJcbiAgICAgIGlmICgvW2EtekEtWl0vLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSA3O1xyXG4gICAgICB9IGVsc2UgaWYgKC9bMC05XS8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDUuNTtcclxuICAgICAgfSBlbHNlIGlmICgvXFwuLy50ZXN0KGl0ZW0pKSB7XHJcbiAgICAgICAgd2lkdGggKz0gMi43O1xyXG4gICAgICB9IGVsc2UgaWYgKC8tLy50ZXN0KGl0ZW0pKSB7XHJcbiAgICAgICAgd2lkdGggKz0gMy4yNTtcclxuICAgICAgfSBlbHNlIGlmICgvOi8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDIuNTtcclxuICAgICAgfSBlbHNlIGlmICgvW1xcdTRlMDAtXFx1OWZhNV0vLnRlc3QoaXRlbSkpIHtcclxuICAgICAgICB3aWR0aCArPSAxMDtcclxuICAgICAgfSBlbHNlIGlmICgvXFwofFxcKS8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDMuNzM7XHJcbiAgICAgIH0gZWxzZSBpZiAoL1xccy8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDIuNTtcclxuICAgICAgfSBlbHNlIGlmICgvJS8udGVzdChpdGVtKSkge1xyXG4gICAgICAgIHdpZHRoICs9IDg7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2lkdGggKz0gMTA7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiB3aWR0aCAqIGZvbnRTaXplIC8gMTA7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkYXRhQ29tYmluZShzZXJpZXMpIHtcclxuICByZXR1cm4gc2VyaWVzLnJlZHVjZShmdW5jdGlvbihhLCBiKSB7XHJcbiAgICByZXR1cm4gKGEuZGF0YSA/IGEuZGF0YSA6IGEpLmNvbmNhdChiLmRhdGEpO1xyXG4gIH0sIFtdKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZGF0YUNvbWJpbmVTdGFjayhzZXJpZXMsIGxlbikge1xyXG4gIHZhciBzdW0gPSBuZXcgQXJyYXkobGVuKTtcclxuICBmb3IgKHZhciBqID0gMDsgaiA8IHN1bS5sZW5ndGg7IGorKykge1xyXG4gICAgc3VtW2pdID0gMDtcclxuICB9XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGZvciAodmFyIGogPSAwOyBqIDwgc3VtLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgIHN1bVtqXSArPSBzZXJpZXNbaV0uZGF0YVtqXTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHNlcmllcy5yZWR1Y2UoZnVuY3Rpb24oYSwgYikge1xyXG4gICAgcmV0dXJuIChhLmRhdGEgPyBhLmRhdGEgOiBhKS5jb25jYXQoYi5kYXRhKS5jb25jYXQoc3VtKTtcclxuICB9LCBbXSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFRvdWNoZXModG91Y2hlcywgb3B0cywgZSkge1xyXG4gIGxldCB4LCB5O1xyXG4gIGlmICh0b3VjaGVzLmNsaWVudFgpIHtcclxuICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICB5ID0gb3B0cy5oZWlnaHQgLSB0b3VjaGVzLmNsaWVudFggKiBvcHRzLnBpeDtcclxuICAgICAgeCA9ICh0b3VjaGVzLnBhZ2VZIC0gZS5jdXJyZW50VGFyZ2V0Lm9mZnNldFRvcCAtIChvcHRzLmhlaWdodCAvIG9wdHMucGl4IC8gMikgKiAob3B0cy5waXggLSAxKSkgKiBvcHRzLnBpeDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHggPSB0b3VjaGVzLmNsaWVudFggKiBvcHRzLnBpeDtcclxuICAgICAgeSA9ICh0b3VjaGVzLnBhZ2VZIC0gZS5jdXJyZW50VGFyZ2V0Lm9mZnNldFRvcCAtIChvcHRzLmhlaWdodCAvIG9wdHMucGl4IC8gMikgKiAob3B0cy5waXggLSAxKSkgKiBvcHRzLnBpeDtcclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgIHkgPSBvcHRzLmhlaWdodCAtIHRvdWNoZXMueCAqIG9wdHMucGl4O1xyXG4gICAgICB4ID0gdG91Y2hlcy55ICogb3B0cy5waXg7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB4ID0gdG91Y2hlcy54ICogb3B0cy5waXg7XHJcbiAgICAgIHkgPSB0b3VjaGVzLnkgKiBvcHRzLnBpeDtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIHg6IHgsXHJcbiAgICB5OiB5XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRTZXJpZXNEYXRhSXRlbShzZXJpZXMsIGluZGV4LCBncm91cCkge1xyXG4gIHZhciBkYXRhID0gW107XHJcbiAgdmFyIG5ld1NlcmllcyA9IFtdO1xyXG4gIHZhciBpbmRleElzQXJyID0gaW5kZXguY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTE7XHJcbiAgaWYoaW5kZXhJc0Fycil7XHJcbiAgICBsZXQgdGVtcFNlcmllcyA9IGZpbHRlclNlcmllcyhzZXJpZXMpO1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBncm91cC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBuZXdTZXJpZXMucHVzaCh0ZW1wU2VyaWVzW2dyb3VwW2ldXSk7XHJcbiAgICB9XHJcbiAgfWVsc2V7XHJcbiAgICBuZXdTZXJpZXMgPSBzZXJpZXM7XHJcbiAgfTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IG5ld1Nlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBuZXdTZXJpZXNbaV07XHJcbiAgICBsZXQgdG1waW5kZXggPSAtMTtcclxuICAgIGlmKGluZGV4SXNBcnIpe1xyXG4gICAgICB0bXBpbmRleCA9IGluZGV4W2ldO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHRtcGluZGV4ID0gaW5kZXg7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS5kYXRhW3RtcGluZGV4XSAhPT0gbnVsbCAmJiB0eXBlb2YgaXRlbS5kYXRhW3RtcGluZGV4XSAhPT0gJ3VuZGVmaW5lZCcgJiYgaXRlbS5zaG93KSB7XHJcbiAgICAgIGxldCBzZXJpZXNJdGVtID0ge307XHJcbiAgICAgIHNlcmllc0l0ZW0uY29sb3IgPSBpdGVtLmNvbG9yO1xyXG4gICAgICBzZXJpZXNJdGVtLnR5cGUgPSBpdGVtLnR5cGU7XHJcbiAgICAgIHNlcmllc0l0ZW0uc3R5bGUgPSBpdGVtLnN0eWxlO1xyXG4gICAgICBzZXJpZXNJdGVtLnBvaW50U2hhcGUgPSBpdGVtLnBvaW50U2hhcGU7XHJcbiAgICAgIHNlcmllc0l0ZW0uZGlzYWJsZUxlZ2VuZCA9IGl0ZW0uZGlzYWJsZUxlZ2VuZDtcclxuICAgICAgc2VyaWVzSXRlbS5sZWdlbmRTaGFwZSA9IGl0ZW0ubGVnZW5kU2hhcGU7XHJcbiAgICAgIHNlcmllc0l0ZW0ubmFtZSA9IGl0ZW0ubmFtZTtcclxuICAgICAgc2VyaWVzSXRlbS5zaG93ID0gaXRlbS5zaG93O1xyXG4gICAgICBzZXJpZXNJdGVtLmRhdGEgPSBpdGVtLmZvcm1hdHRlciA/IGl0ZW0uZm9ybWF0dGVyKGl0ZW0uZGF0YVt0bXBpbmRleF0pIDogaXRlbS5kYXRhW3RtcGluZGV4XTtcclxuICAgICAgZGF0YS5wdXNoKHNlcmllc0l0ZW0pO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gZGF0YTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TWF4VGV4dExpc3RMZW5ndGgobGlzdCwgZm9udFNpemUsIGNvbnRleHQpIHtcclxuICB2YXIgbGVuZ3RoTGlzdCA9IGxpc3QubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIHJldHVybiBtZWFzdXJlVGV4dChpdGVtLCBmb250U2l6ZSwgY29udGV4dCk7XHJcbiAgfSk7XHJcbiAgcmV0dXJuIE1hdGgubWF4LmFwcGx5KG51bGwsIGxlbmd0aExpc3QpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRSYWRhckNvb3JkaW5hdGVTZXJpZXMobGVuZ3RoKSB7XHJcbiAgdmFyIGVhY2hBbmdsZSA9IDIgKiBNYXRoLlBJIC8gbGVuZ3RoO1xyXG4gIHZhciBDb29yZGluYXRlU2VyaWVzID0gW107XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykge1xyXG4gICAgQ29vcmRpbmF0ZVNlcmllcy5wdXNoKGVhY2hBbmdsZSAqIGkpO1xyXG4gIH1cclxuICByZXR1cm4gQ29vcmRpbmF0ZVNlcmllcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgcmV0dXJuIC0xICogaXRlbSArIE1hdGguUEkgLyAyO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRUb29sVGlwRGF0YShzZXJpZXNEYXRhLCBvcHRzLCBpbmRleCwgZ3JvdXAsIGNhdGVnb3JpZXMpIHtcclxuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiB7fTtcclxuICB2YXIgY2FsUG9pbnRzID0gb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzP29wdHMuY2hhcnREYXRhLmNhbFBvaW50czpbXTtcclxuICBsZXQgcG9pbnRzID0ge307XHJcbiAgaWYoZ3JvdXAubGVuZ3RoID4gMCl7XHJcbiAgICBsZXQgZmlsdGVyUG9pbnRzID0gW107XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGdyb3VwLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGZpbHRlclBvaW50cy5wdXNoKGNhbFBvaW50c1tncm91cFtpXV0pXHJcbiAgICB9XHJcbiAgICBwb2ludHMgPSBmaWx0ZXJQb2ludHNbMF1baW5kZXhbMF1dO1xyXG4gIH1lbHNle1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYWxQb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYoY2FsUG9pbnRzW2ldW2luZGV4XSl7XHJcbiAgICAgICAgcG9pbnRzID0gY2FsUG9pbnRzW2ldW2luZGV4XTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH07XHJcbiAgdmFyIHRleHRMaXN0ID0gc2VyaWVzRGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgbGV0IHRpdGxlVGV4dCA9IG51bGw7XHJcbiAgICBpZiAob3B0cy5jYXRlZ29yaWVzICYmIG9wdHMuY2F0ZWdvcmllcy5sZW5ndGg+MCkge1xyXG4gICAgICB0aXRsZVRleHQgPSBjYXRlZ29yaWVzW2luZGV4XTtcclxuICAgIH07XHJcbiAgICByZXR1cm4ge1xyXG4gICAgICB0ZXh0OiBvcHRpb24uZm9ybWF0dGVyID8gb3B0aW9uLmZvcm1hdHRlcihpdGVtLCB0aXRsZVRleHQsIGluZGV4LCBvcHRzKSA6IGl0ZW0ubmFtZSArICc6ICcgKyBpdGVtLmRhdGEsXHJcbiAgICAgIGNvbG9yOiBpdGVtLmNvbG9yLFxyXG4gICAgICBsZWdlbmRTaGFwZTogb3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlID09ICdhdXRvJz8gaXRlbS5sZWdlbmRTaGFwZSA6IG9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZVxyXG4gICAgfTtcclxuICB9KTtcclxuICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgeDogTWF0aC5yb3VuZChwb2ludHMueCksXHJcbiAgICB5OiBNYXRoLnJvdW5kKHBvaW50cy55KVxyXG4gIH07XHJcbiAgcmV0dXJuIHtcclxuICAgIHRleHRMaXN0OiB0ZXh0TGlzdCxcclxuICAgIG9mZnNldDogb2Zmc2V0XHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0TWl4VG9vbFRpcERhdGEoc2VyaWVzRGF0YSwgb3B0cywgaW5kZXgsIGNhdGVnb3JpZXMpIHtcclxuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiB7fTtcclxuICB2YXIgcG9pbnRzID0gb3B0cy5jaGFydERhdGEueEF4aXNQb2ludHNbaW5kZXhdICsgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgLyAyO1xyXG4gIHZhciB0ZXh0TGlzdCA9IHNlcmllc0RhdGEubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKGl0ZW0sIGNhdGVnb3JpZXNbaW5kZXhdLCBpbmRleCwgb3B0cykgOiBpdGVtLm5hbWUgKyAnOiAnICsgaXRlbS5kYXRhLFxyXG4gICAgICBjb2xvcjogaXRlbS5jb2xvcixcclxuICAgICAgZGlzYWJsZUxlZ2VuZDogaXRlbS5kaXNhYmxlTGVnZW5kID8gdHJ1ZSA6IGZhbHNlLFxyXG4gICAgICBsZWdlbmRTaGFwZTogb3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlID09ICdhdXRvJz8gaXRlbS5sZWdlbmRTaGFwZSA6IG9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZVxyXG4gICAgfTtcclxuICB9KTtcclxuICB0ZXh0TGlzdCA9IHRleHRMaXN0LmZpbHRlcihmdW5jdGlvbihpdGVtKSB7XHJcbiAgICBpZiAoaXRlbS5kaXNhYmxlTGVnZW5kICE9PSB0cnVlKSB7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHZhciBvZmZzZXQgPSB7XHJcbiAgICB4OiBNYXRoLnJvdW5kKHBvaW50cyksXHJcbiAgICB5OiAwXHJcbiAgfTtcclxuICByZXR1cm4ge1xyXG4gICAgdGV4dExpc3Q6IHRleHRMaXN0LFxyXG4gICAgb2Zmc2V0OiBvZmZzZXRcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRDYW5kbGVUb29sVGlwRGF0YShzZXJpZXMsIHNlcmllc0RhdGEsIG9wdHMsIGluZGV4LCBjYXRlZ29yaWVzLCBleHRyYSkge1xyXG4gIHZhciBvcHRpb24gPSBhcmd1bWVudHMubGVuZ3RoID4gNiAmJiBhcmd1bWVudHNbNl0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s2XSA6IHt9O1xyXG4gIHZhciBjYWxQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHM7XHJcbiAgbGV0IHVwQ29sb3IgPSBleHRyYS5jb2xvci51cEZpbGw7XHJcbiAgbGV0IGRvd25Db2xvciA9IGV4dHJhLmNvbG9yLmRvd25GaWxsO1xyXG4gIC8v6aKc6Imy6aG65bqP5Li65byA55uY77yM5pS255uY77yM5pyA5L2O77yM5pyA6auYXHJcbiAgbGV0IGNvbG9yID0gW3VwQ29sb3IsIHVwQ29sb3IsIGRvd25Db2xvciwgdXBDb2xvcl07XHJcbiAgdmFyIHRleHRMaXN0ID0gW107XHJcbiAgc2VyaWVzRGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgaWYgKGluZGV4ID09IDApIHtcclxuICAgICAgaWYgKGl0ZW0uZGF0YVsxXSAtIGl0ZW0uZGF0YVswXSA8IDApIHtcclxuICAgICAgICBjb2xvclsxXSA9IGRvd25Db2xvcjtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb2xvclsxXSA9IHVwQ29sb3I7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChpdGVtLmRhdGFbMF0gPCBzZXJpZXNbaW5kZXggLSAxXVsxXSkge1xyXG4gICAgICAgIGNvbG9yWzBdID0gZG93bkNvbG9yO1xyXG4gICAgICB9XHJcbiAgICAgIGlmIChpdGVtLmRhdGFbMV0gPCBpdGVtLmRhdGFbMF0pIHtcclxuICAgICAgICBjb2xvclsxXSA9IGRvd25Db2xvcjtcclxuICAgICAgfVxyXG4gICAgICBpZiAoaXRlbS5kYXRhWzJdID4gc2VyaWVzW2luZGV4IC0gMV1bMV0pIHtcclxuICAgICAgICBjb2xvclsyXSA9IHVwQ29sb3I7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGl0ZW0uZGF0YVszXSA8IHNlcmllc1tpbmRleCAtIDFdWzFdKSB7XHJcbiAgICAgICAgY29sb3JbM10gPSBkb3duQ29sb3I7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGxldCB0ZXh0MSA9IHtcclxuICAgICAgdGV4dDogJ+W8gOebmO+8micgKyBpdGVtLmRhdGFbMF0sXHJcbiAgICAgIGNvbG9yOiBjb2xvclswXSxcclxuICAgICAgbGVnZW5kU2hhcGU6IG9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZSA9PSAnYXV0byc/IGl0ZW0ubGVnZW5kU2hhcGUgOiBvcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGVcclxuICAgIH07XHJcbiAgICBsZXQgdGV4dDIgPSB7XHJcbiAgICAgIHRleHQ6ICfmlLbnm5jvvJonICsgaXRlbS5kYXRhWzFdLFxyXG4gICAgICBjb2xvcjogY29sb3JbMV0sXHJcbiAgICAgIGxlZ2VuZFNoYXBlOiBvcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGUgPT0gJ2F1dG8nPyBpdGVtLmxlZ2VuZFNoYXBlIDogb3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlXHJcbiAgICB9O1xyXG4gICAgbGV0IHRleHQzID0ge1xyXG4gICAgICB0ZXh0OiAn5pyA5L2O77yaJyArIGl0ZW0uZGF0YVsyXSxcclxuICAgICAgY29sb3I6IGNvbG9yWzJdLFxyXG4gICAgICBsZWdlbmRTaGFwZTogb3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlID09ICdhdXRvJz8gaXRlbS5sZWdlbmRTaGFwZSA6IG9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZVxyXG4gICAgfTtcclxuICAgIGxldCB0ZXh0NCA9IHtcclxuICAgICAgdGV4dDogJ+acgOmrmO+8micgKyBpdGVtLmRhdGFbM10sXHJcbiAgICAgIGNvbG9yOiBjb2xvclszXSxcclxuICAgICAgbGVnZW5kU2hhcGU6IG9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZSA9PSAnYXV0byc/IGl0ZW0ubGVnZW5kU2hhcGUgOiBvcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGVcclxuICAgIH07XHJcbiAgICB0ZXh0TGlzdC5wdXNoKHRleHQxLCB0ZXh0MiwgdGV4dDMsIHRleHQ0KTtcclxuICB9KTtcclxuICB2YXIgdmFsaWRDYWxQb2ludHMgPSBbXTtcclxuICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgeDogMCxcclxuICAgIHk6IDBcclxuICB9O1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgcG9pbnRzID0gY2FsUG9pbnRzW2ldO1xyXG4gICAgaWYgKHR5cGVvZiBwb2ludHNbaW5kZXhdICE9PSAndW5kZWZpbmVkJyAmJiBwb2ludHNbaW5kZXhdICE9PSBudWxsKSB7XHJcbiAgICAgIHZhbGlkQ2FsUG9pbnRzLnB1c2gocG9pbnRzW2luZGV4XSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIG9mZnNldC54ID0gTWF0aC5yb3VuZCh2YWxpZENhbFBvaW50c1swXVswXS54KTtcclxuICByZXR1cm4ge1xyXG4gICAgdGV4dExpc3Q6IHRleHRMaXN0LFxyXG4gICAgb2Zmc2V0OiBvZmZzZXRcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaWx0ZXJTZXJpZXMoc2VyaWVzKSB7XHJcbiAgbGV0IHRlbXBTZXJpZXMgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgaWYgKHNlcmllc1tpXS5zaG93ID09IHRydWUpIHtcclxuICAgICAgdGVtcFNlcmllcy5wdXNoKHNlcmllc1tpXSlcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHRlbXBTZXJpZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRDdXJyZW50SW5kZXgoY3VycmVudFBvaW50cywgY2FsUG9pbnRzLCBvcHRzLCBjb25maWcpIHtcclxuICB2YXIgb2Zmc2V0ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAwO1xyXG4gIHZhciBjdXJyZW50PXsgaW5kZXg6LTEsIGdyb3VwOltdIH07XHJcbiAgdmFyIHNwYWNpbmcgPSBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyAvIDI7XHJcbiAgbGV0IHhBeGlzUG9pbnRzID0gW107XHJcbiAgaWYgKGNhbFBvaW50cyAmJiBjYWxQb2ludHMubGVuZ3RoID4gMCkge1xyXG4gICAgaWYgKCFvcHRzLmNhdGVnb3JpZXMpIHtcclxuICAgICAgc3BhY2luZyA9IDA7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgZm9yIChsZXQgaSA9IDE7IGkgPCBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHhBeGlzUG9pbnRzLnB1c2gob3B0cy5jaGFydERhdGEueEF4aXNQb2ludHNbaV0gLSBzcGFjaW5nKTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoKG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJykgJiYgb3B0cy54QXhpcy5ib3VuZGFyeUdhcCA9PSAnanVzdGlmeScpIHtcclxuICAgICAgICB4QXhpc1BvaW50cyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoaXNJbkV4YWN0Q2hhcnRBcmVhKGN1cnJlbnRQb2ludHMsIG9wdHMsIGNvbmZpZykpIHtcclxuICAgICAgaWYgKCFvcHRzLmNhdGVnb3JpZXMpIHtcclxuICAgICAgICBsZXQgdGltZVBvaW50cyA9IEFycmF5KGNhbFBvaW50cy5sZW5ndGgpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2FsUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICB0aW1lUG9pbnRzW2ldID0gQXJyYXkoY2FsUG9pbnRzW2ldLmxlbmd0aClcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY2FsUG9pbnRzW2ldLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIHRpbWVQb2ludHNbaV1bal0gPSAoTWF0aC5hYnMoY2FsUG9pbnRzW2ldW2pdLnggLSBjdXJyZW50UG9pbnRzLngpKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGxldCBwb2ludFZhbHVlID0gIEFycmF5KHRpbWVQb2ludHMubGVuZ3RoKTtcclxuICAgICAgICBsZXQgcG9pbnRJbmRleCA9ICBBcnJheSh0aW1lUG9pbnRzLmxlbmd0aCk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0aW1lUG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBwb2ludFZhbHVlW2ldID0gTWF0aC5taW4uYXBwbHkobnVsbCwgdGltZVBvaW50c1tpXSk7XHJcbiAgICAgICAgICBwb2ludEluZGV4W2ldID0gdGltZVBvaW50c1tpXS5pbmRleE9mKHBvaW50VmFsdWVbaV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZXQgbWluVmFsdWUgPSBNYXRoLm1pbi5hcHBseShudWxsLCBwb2ludFZhbHVlKTtcclxuICAgICAgICBjdXJyZW50LmluZGV4ID0gW107XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludFZhbHVlLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICBpZihwb2ludFZhbHVlW2ldID09IG1pblZhbHVlKXtcclxuICAgICAgICAgICAgY3VycmVudC5ncm91cC5wdXNoKGkpO1xyXG4gICAgICAgICAgICBjdXJyZW50LmluZGV4LnB1c2gocG9pbnRJbmRleFtpXSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgeEF4aXNQb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgICAgaWYgKGN1cnJlbnRQb2ludHMueCArIG9mZnNldCArIHNwYWNpbmcgPiBpdGVtKSB7XHJcbiAgICAgICAgICAgIGN1cnJlbnQuaW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZEJhckNoYXJ0Q3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIGNhbFBvaW50cywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIG9mZnNldCA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMDtcclxuICB2YXIgY3VycmVudD17IGluZGV4Oi0xLCBncm91cDpbXSB9O1xyXG4gIHZhciBzcGFjaW5nID0gb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgLyAyO1xyXG4gIGxldCB5QXhpc1BvaW50cyA9IG9wdHMuY2hhcnREYXRhLnlBeGlzUG9pbnRzO1xyXG4gIGlmIChjYWxQb2ludHMgJiYgY2FsUG9pbnRzLmxlbmd0aCA+IDApIHtcclxuICAgIGlmIChpc0luRXhhY3RDaGFydEFyZWEoY3VycmVudFBvaW50cywgb3B0cywgY29uZmlnKSkge1xyXG4gICAgICB5QXhpc1BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgaWYgKGN1cnJlbnRQb2ludHMueSArIG9mZnNldCArIHNwYWNpbmcgPiBpdGVtKSB7XHJcbiAgICAgICAgICBjdXJyZW50LmluZGV4ID0gaW5kZXg7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpbmRMZWdlbmRJbmRleChjdXJyZW50UG9pbnRzLCBsZWdlbmREYXRhLCBvcHRzKSB7XHJcbiAgbGV0IGN1cnJlbnRJbmRleCA9IC0xO1xyXG4gIGxldCBnYXAgPSAwO1xyXG4gIGlmIChpc0luRXhhY3RMZWdlbmRBcmVhKGN1cnJlbnRQb2ludHMsIGxlZ2VuZERhdGEuYXJlYSkpIHtcclxuICAgIGxldCBwb2ludHMgPSBsZWdlbmREYXRhLnBvaW50cztcclxuICAgIGxldCBpbmRleCA9IC0xO1xyXG4gICAgZm9yIChsZXQgaSA9IDAsIGxlbiA9IHBvaW50cy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBsZXQgaXRlbSA9IHBvaW50c1tpXTtcclxuICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBpdGVtLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgaW5kZXggKz0gMTtcclxuICAgICAgICBsZXQgYXJlYSA9IGl0ZW1bal1bJ2FyZWEnXTtcclxuICAgICAgICBpZiAoYXJlYSAmJiBjdXJyZW50UG9pbnRzLnggPiBhcmVhWzBdIC0gZ2FwICYmIGN1cnJlbnRQb2ludHMueCA8IGFyZWFbMl0gKyBnYXAgJiYgY3VycmVudFBvaW50cy55ID4gYXJlYVsxXSAtIGdhcCAmJiBjdXJyZW50UG9pbnRzLnkgPCBhcmVhWzNdICsgZ2FwKSB7XHJcbiAgICAgICAgICBjdXJyZW50SW5kZXggPSBpbmRleDtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNJbkV4YWN0TGVnZW5kQXJlYShjdXJyZW50UG9pbnRzLCBhcmVhKSB7XHJcbiAgcmV0dXJuIGN1cnJlbnRQb2ludHMueCA+IGFyZWEuc3RhcnQueCAmJiBjdXJyZW50UG9pbnRzLnggPCBhcmVhLmVuZC54ICYmIGN1cnJlbnRQb2ludHMueSA+IGFyZWEuc3RhcnQueSAmJiBjdXJyZW50UG9pbnRzLnkgPCBhcmVhLmVuZC55O1xyXG59XHJcblxyXG5mdW5jdGlvbiBpc0luRXhhY3RDaGFydEFyZWEoY3VycmVudFBvaW50cywgb3B0cywgY29uZmlnKSB7XHJcbiAgcmV0dXJuIGN1cnJlbnRQb2ludHMueCA8PSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdICsgMTAgJiYgY3VycmVudFBvaW50cy54ID49IG9wdHMuYXJlYVszXSAtIDEwICYmIGN1cnJlbnRQb2ludHMueSA+PSBvcHRzLmFyZWFbMF0gJiYgY3VycmVudFBvaW50cy55IDw9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kUmFkYXJDaGFydEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCByYWRhckRhdGEsIGNvdW50KSB7XHJcbiAgdmFyIGVhY2hBbmdsZUFyZWEgPSAyICogTWF0aC5QSSAvIGNvdW50O1xyXG4gIHZhciBjdXJyZW50SW5kZXggPSAtMTtcclxuICBpZiAoaXNJbkV4YWN0UGllQ2hhcnRBcmVhKGN1cnJlbnRQb2ludHMsIHJhZGFyRGF0YS5jZW50ZXIsIHJhZGFyRGF0YS5yYWRpdXMpKSB7XHJcbiAgICB2YXIgZml4QW5nbGUgPSBmdW5jdGlvbiBmaXhBbmdsZShhbmdsZSkge1xyXG4gICAgICBpZiAoYW5nbGUgPCAwKSB7XHJcbiAgICAgICAgYW5nbGUgKz0gMiAqIE1hdGguUEk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGFuZ2xlID4gMiAqIE1hdGguUEkpIHtcclxuICAgICAgICBhbmdsZSAtPSAyICogTWF0aC5QSTtcclxuICAgICAgfVxyXG4gICAgICByZXR1cm4gYW5nbGU7XHJcbiAgICB9O1xyXG4gICAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuMihyYWRhckRhdGEuY2VudGVyLnkgLSBjdXJyZW50UG9pbnRzLnksIGN1cnJlbnRQb2ludHMueCAtIHJhZGFyRGF0YS5jZW50ZXIueCk7XHJcbiAgICBhbmdsZSA9IC0xICogYW5nbGU7XHJcbiAgICBpZiAoYW5nbGUgPCAwKSB7XHJcbiAgICAgIGFuZ2xlICs9IDIgKiBNYXRoLlBJO1xyXG4gICAgfVxyXG4gICAgdmFyIGFuZ2xlTGlzdCA9IHJhZGFyRGF0YS5hbmdsZUxpc3QubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgICAgaXRlbSA9IGZpeEFuZ2xlKC0xICogaXRlbSk7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfSk7XHJcbiAgICBhbmdsZUxpc3QuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICB2YXIgcmFuZ2VTdGFydCA9IGZpeEFuZ2xlKGl0ZW0gLSBlYWNoQW5nbGVBcmVhIC8gMik7XHJcbiAgICAgIHZhciByYW5nZUVuZCA9IGZpeEFuZ2xlKGl0ZW0gKyBlYWNoQW5nbGVBcmVhIC8gMik7XHJcbiAgICAgIGlmIChyYW5nZUVuZCA8IHJhbmdlU3RhcnQpIHtcclxuICAgICAgICByYW5nZUVuZCArPSAyICogTWF0aC5QSTtcclxuICAgICAgfVxyXG4gICAgICBpZiAoYW5nbGUgPj0gcmFuZ2VTdGFydCAmJiBhbmdsZSA8PSByYW5nZUVuZCB8fCBhbmdsZSArIDIgKiBNYXRoLlBJID49IHJhbmdlU3RhcnQgJiYgYW5nbGUgKyAyICogTWF0aC5QSSA8PSByYW5nZUVuZCkge1xyXG4gICAgICAgIGN1cnJlbnRJbmRleCA9IGluZGV4O1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZEZ1bm5lbENoYXJ0Q3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIGZ1bm5lbERhdGEpIHtcclxuICB2YXIgY3VycmVudEluZGV4ID0gLTE7XHJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGZ1bm5lbERhdGEuc2VyaWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICB2YXIgaXRlbSA9IGZ1bm5lbERhdGEuc2VyaWVzW2ldO1xyXG4gICAgaWYgKGN1cnJlbnRQb2ludHMueCA+IGl0ZW0uZnVubmVsQXJlYVswXSAmJiBjdXJyZW50UG9pbnRzLnggPCBpdGVtLmZ1bm5lbEFyZWFbMl0gJiYgY3VycmVudFBvaW50cy55ID4gaXRlbS5mdW5uZWxBcmVhWzFdICYmIGN1cnJlbnRQb2ludHMueSA8IGl0ZW0uZnVubmVsQXJlYVszXSkge1xyXG4gICAgICBjdXJyZW50SW5kZXggPSBpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZFdvcmRDaGFydEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCB3b3JkRGF0YSkge1xyXG4gIHZhciBjdXJyZW50SW5kZXggPSAtMTtcclxuICBmb3IgKHZhciBpID0gMCwgbGVuID0gd29yZERhdGEubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgIHZhciBpdGVtID0gd29yZERhdGFbaV07XHJcbiAgICBpZiAoY3VycmVudFBvaW50cy54ID4gaXRlbS5hcmVhWzBdICYmIGN1cnJlbnRQb2ludHMueCA8IGl0ZW0uYXJlYVsyXSAmJiBjdXJyZW50UG9pbnRzLnkgPiBpdGVtLmFyZWFbMV0gJiYgY3VycmVudFBvaW50cy55IDwgaXRlbS5hcmVhWzNdKSB7XHJcbiAgICAgIGN1cnJlbnRJbmRleCA9IGk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gY3VycmVudEluZGV4O1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaW5kTWFwQ2hhcnRDdXJyZW50SW5kZXgoY3VycmVudFBvaW50cywgb3B0cykge1xyXG4gIHZhciBjdXJyZW50SW5kZXggPSAtMTtcclxuICB2YXIgY0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS5tYXBEYXRhO1xyXG4gIHZhciBkYXRhID0gb3B0cy5zZXJpZXM7XHJcbiAgdmFyIHRtcCA9IHBvaW50VG9Db29yZGluYXRlKGN1cnJlbnRQb2ludHMueSwgY3VycmVudFBvaW50cy54LCBjRGF0YS5ib3VuZHMsIGNEYXRhLnNjYWxlLCBjRGF0YS54b2Zmc2V0LCBjRGF0YS55b2Zmc2V0KTtcclxuICB2YXIgcG9pID0gW3RtcC54LCB0bXAueV07XHJcbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IGRhdGEubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHtcclxuICAgIHZhciBpdGVtID0gZGF0YVtpXS5nZW9tZXRyeS5jb29yZGluYXRlcztcclxuICAgIGlmIChpc1BvaVdpdGhpblBvbHkocG9pLCBpdGVtLCBvcHRzLmNoYXJ0RGF0YS5tYXBEYXRhLm1lcmNhdG9yKSkge1xyXG4gICAgICBjdXJyZW50SW5kZXggPSBpO1xyXG4gICAgICBicmVhaztcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZFJvc2VDaGFydEN1cnJlbnRJbmRleChjdXJyZW50UG9pbnRzLCBwaWVEYXRhLCBvcHRzKSB7XHJcbiAgdmFyIGN1cnJlbnRJbmRleCA9IC0xO1xyXG4gIHZhciBzZXJpZXMgPSBnZXRSb3NlRGF0YVBvaW50cyhvcHRzLl9zZXJpZXNfLCBvcHRzLmV4dHJhLnJvc2UudHlwZSwgcGllRGF0YS5yYWRpdXMsIHBpZURhdGEucmFkaXVzKTtcclxuICBpZiAocGllRGF0YSAmJiBwaWVEYXRhLmNlbnRlciAmJiBpc0luRXhhY3RQaWVDaGFydEFyZWEoY3VycmVudFBvaW50cywgcGllRGF0YS5jZW50ZXIsIHBpZURhdGEucmFkaXVzKSkge1xyXG4gICAgdmFyIGFuZ2xlID0gTWF0aC5hdGFuMihwaWVEYXRhLmNlbnRlci55IC0gY3VycmVudFBvaW50cy55LCBjdXJyZW50UG9pbnRzLnggLSBwaWVEYXRhLmNlbnRlci54KTtcclxuICAgIGFuZ2xlID0gLWFuZ2xlO1xyXG4gICAgaWYob3B0cy5leHRyYS5yb3NlICYmIG9wdHMuZXh0cmEucm9zZS5vZmZzZXRBbmdsZSl7XHJcbiAgICAgIGFuZ2xlID0gYW5nbGUgLSBvcHRzLmV4dHJhLnJvc2Uub2Zmc2V0QW5nbGUgKiBNYXRoLlBJIC8gMTgwO1xyXG4gICAgfVxyXG4gICAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IHNlcmllcy5sZW5ndGg7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBpZiAoaXNJbkFuZ2xlUmFuZ2UoYW5nbGUsIHNlcmllc1tpXS5fc3RhcnRfLCBzZXJpZXNbaV0uX3N0YXJ0XyArIHNlcmllc1tpXS5fcm9zZV9wcm9wb3J0aW9uXyAqIDIgKiBNYXRoLlBJKSkge1xyXG4gICAgICAgIGN1cnJlbnRJbmRleCA9IGk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gZmluZFBpZUNoYXJ0Q3VycmVudEluZGV4KGN1cnJlbnRQb2ludHMsIHBpZURhdGEsIG9wdHMpIHtcclxuICB2YXIgY3VycmVudEluZGV4ID0gLTE7XHJcbiAgdmFyIHNlcmllcyA9IGdldFBpZURhdGFQb2ludHMocGllRGF0YS5zZXJpZXMpO1xyXG4gIGlmIChwaWVEYXRhICYmIHBpZURhdGEuY2VudGVyICYmIGlzSW5FeGFjdFBpZUNoYXJ0QXJlYShjdXJyZW50UG9pbnRzLCBwaWVEYXRhLmNlbnRlciwgcGllRGF0YS5yYWRpdXMpKSB7XHJcbiAgICB2YXIgYW5nbGUgPSBNYXRoLmF0YW4yKHBpZURhdGEuY2VudGVyLnkgLSBjdXJyZW50UG9pbnRzLnksIGN1cnJlbnRQb2ludHMueCAtIHBpZURhdGEuY2VudGVyLngpO1xyXG4gICAgYW5nbGUgPSAtYW5nbGU7XHJcbiAgICBpZihvcHRzLmV4dHJhLnBpZSAmJiBvcHRzLmV4dHJhLnBpZS5vZmZzZXRBbmdsZSl7XHJcbiAgICAgIGFuZ2xlID0gYW5nbGUgLSBvcHRzLmV4dHJhLnBpZS5vZmZzZXRBbmdsZSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICB9XHJcbiAgICBpZihvcHRzLmV4dHJhLnJpbmcgJiYgb3B0cy5leHRyYS5yaW5nLm9mZnNldEFuZ2xlKXtcclxuICAgICAgYW5nbGUgPSBhbmdsZSAtIG9wdHMuZXh0cmEucmluZy5vZmZzZXRBbmdsZSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICB9XHJcbiAgICBmb3IgKHZhciBpID0gMCwgbGVuID0gc2VyaWVzLmxlbmd0aDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgIGlmIChpc0luQW5nbGVSYW5nZShhbmdsZSwgc2VyaWVzW2ldLl9zdGFydF8sIHNlcmllc1tpXS5fc3RhcnRfICsgc2VyaWVzW2ldLl9wcm9wb3J0aW9uXyAqIDIgKiBNYXRoLlBJKSkge1xyXG4gICAgICAgIGN1cnJlbnRJbmRleCA9IGk7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIGN1cnJlbnRJbmRleDtcclxufVxyXG5cclxuZnVuY3Rpb24gaXNJbkV4YWN0UGllQ2hhcnRBcmVhKGN1cnJlbnRQb2ludHMsIGNlbnRlciwgcmFkaXVzKSB7XHJcbiAgcmV0dXJuIE1hdGgucG93KGN1cnJlbnRQb2ludHMueCAtIGNlbnRlci54LCAyKSArIE1hdGgucG93KGN1cnJlbnRQb2ludHMueSAtIGNlbnRlci55LCAyKSA8PSBNYXRoLnBvdyhyYWRpdXMsIDIpO1xyXG59XHJcblxyXG5cclxuZnVuY3Rpb24gc3BsaXRQb2ludHMocG9pbnRzLGVhY2hTZXJpZXMpIHtcclxuICB2YXIgbmV3UG9pbnRzID0gW107XHJcbiAgdmFyIGl0ZW1zID0gW107XHJcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmKGVhY2hTZXJpZXMuY29ubmVjdE51bGxzKXtcclxuICAgICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICBpdGVtcy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChpdGVtcy5sZW5ndGgpIHtcclxuICAgICAgICAgIG5ld1BvaW50cy5wdXNoKGl0ZW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaXRlbXMgPSBbXTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgXHJcbiAgfSk7XHJcbiAgaWYgKGl0ZW1zLmxlbmd0aCkge1xyXG4gICAgbmV3UG9pbnRzLnB1c2goaXRlbXMpO1xyXG4gIH1cclxuICByZXR1cm4gbmV3UG9pbnRzO1xyXG59XHJcblxyXG5cclxuZnVuY3Rpb24gY2FsTGVnZW5kRGF0YShzZXJpZXMsIG9wdHMsIGNvbmZpZywgY2hhcnREYXRhLCBjb250ZXh0KSB7XHJcbiAgbGV0IGxlZ2VuZERhdGEgPSB7XHJcbiAgICBhcmVhOiB7XHJcbiAgICAgIHN0YXJ0OiB7XHJcbiAgICAgICAgeDogMCxcclxuICAgICAgICB5OiAwXHJcbiAgICAgIH0sXHJcbiAgICAgIGVuZDoge1xyXG4gICAgICAgIHg6IDAsXHJcbiAgICAgICAgeTogMFxyXG4gICAgICB9LFxyXG4gICAgICB3aWR0aDogMCxcclxuICAgICAgaGVpZ2h0OiAwLFxyXG4gICAgICB3aG9sZVdpZHRoOiAwLFxyXG4gICAgICB3aG9sZUhlaWdodDogMFxyXG4gICAgfSxcclxuICAgIHBvaW50czogW10sXHJcbiAgICB3aWR0aEFycjogW10sXHJcbiAgICBoZWlnaHRBcnI6IFtdXHJcbiAgfTtcclxuICBpZiAob3B0cy5sZWdlbmQuc2hvdyA9PT0gZmFsc2UpIHtcclxuICAgIGNoYXJ0RGF0YS5sZWdlbmREYXRhID0gbGVnZW5kRGF0YTtcclxuICAgIHJldHVybiBsZWdlbmREYXRhO1xyXG4gIH1cclxuICBsZXQgcGFkZGluZyA9IG9wdHMubGVnZW5kLnBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICBsZXQgbWFyZ2luID0gb3B0cy5sZWdlbmQubWFyZ2luICogb3B0cy5waXg7XHJcbiAgbGV0IGZvbnRTaXplID0gb3B0cy5sZWdlbmQuZm9udFNpemUgPyBvcHRzLmxlZ2VuZC5mb250U2l6ZSAqIG9wdHMucGl4IDogY29uZmlnLmZvbnRTaXplO1xyXG4gIGxldCBzaGFwZVdpZHRoID0gMTUgKiBvcHRzLnBpeDtcclxuICBsZXQgc2hhcGVSaWdodCA9IDUgKiBvcHRzLnBpeDtcclxuICBsZXQgbGluZUhlaWdodCA9IE1hdGgubWF4KG9wdHMubGVnZW5kLmxpbmVIZWlnaHQgKiBvcHRzLnBpeCwgZm9udFNpemUpO1xyXG4gIGlmIChvcHRzLmxlZ2VuZC5wb3NpdGlvbiA9PSAndG9wJyB8fCBvcHRzLmxlZ2VuZC5wb3NpdGlvbiA9PSAnYm90dG9tJykge1xyXG4gICAgbGV0IGxlZ2VuZExpc3QgPSBbXTtcclxuICAgIGxldCB3aWR0aENvdW50ID0gMDtcclxuICAgIGxldCB3aWR0aENvdW50QXJyID0gW107XHJcbiAgICBsZXQgY3VycmVudFJvdyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICAgIGNvbnN0IGxlZ2VuZFRleHQgPSBpdGVtLmxlZ2VuZFRleHQgPyBpdGVtLmxlZ2VuZFRleHQgOiBpdGVtLm5hbWU7XHJcbiAgICAgIGxldCBpdGVtV2lkdGggPSBzaGFwZVdpZHRoICsgc2hhcGVSaWdodCArIG1lYXN1cmVUZXh0KGxlZ2VuZFRleHQgfHwgJ3VuZGVmaW5lZCcsIGZvbnRTaXplLCBjb250ZXh0KSArIG9wdHMubGVnZW5kLml0ZW1HYXAgKiBvcHRzLnBpeDtcclxuICAgICAgaWYgKHdpZHRoQ291bnQgKyBpdGVtV2lkdGggPiBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSB7XHJcbiAgICAgICAgbGVnZW5kTGlzdC5wdXNoKGN1cnJlbnRSb3cpO1xyXG4gICAgICAgIHdpZHRoQ291bnRBcnIucHVzaCh3aWR0aENvdW50IC0gb3B0cy5sZWdlbmQuaXRlbUdhcCAqIG9wdHMucGl4KTtcclxuICAgICAgICB3aWR0aENvdW50ID0gaXRlbVdpZHRoO1xyXG4gICAgICAgIGN1cnJlbnRSb3cgPSBbaXRlbV07XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgd2lkdGhDb3VudCArPSBpdGVtV2lkdGg7XHJcbiAgICAgICAgY3VycmVudFJvdy5wdXNoKGl0ZW0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY3VycmVudFJvdy5sZW5ndGgpIHtcclxuICAgICAgbGVnZW5kTGlzdC5wdXNoKGN1cnJlbnRSb3cpO1xyXG4gICAgICB3aWR0aENvdW50QXJyLnB1c2god2lkdGhDb3VudCAtIG9wdHMubGVnZW5kLml0ZW1HYXAgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGxlZ2VuZERhdGEud2lkdGhBcnIgPSB3aWR0aENvdW50QXJyO1xyXG4gICAgICBsZXQgbGVnZW5kV2lkdGggPSBNYXRoLm1heC5hcHBseShudWxsLCB3aWR0aENvdW50QXJyKTtcclxuICAgICAgc3dpdGNoIChvcHRzLmxlZ2VuZC5mbG9hdCkge1xyXG4gICAgICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnggPSBvcHRzLmFyZWFbM107XHJcbiAgICAgICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnggPSBvcHRzLmFyZWFbM10gKyBsZWdlbmRXaWR0aCArIDIgKiBwYWRkaW5nO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gbGVnZW5kV2lkdGggLSAyICogcGFkZGluZztcclxuICAgICAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnggPSAob3B0cy53aWR0aCAtIGxlZ2VuZFdpZHRoKSAvIDIgLSBwYWRkaW5nO1xyXG4gICAgICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC54ID0gKG9wdHMud2lkdGggKyBsZWdlbmRXaWR0aCkgLyAyICsgcGFkZGluZztcclxuICAgICAgfVxyXG4gICAgICBsZWdlbmREYXRhLmFyZWEud2lkdGggPSBsZWdlbmRXaWR0aCArIDIgKiBwYWRkaW5nO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEud2hvbGVXaWR0aCA9IGxlZ2VuZFdpZHRoICsgMiAqIHBhZGRpbmc7XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQgPSBsZWdlbmRMaXN0Lmxlbmd0aCAqIGxpbmVIZWlnaHQgKyAyICogcGFkZGluZztcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLndob2xlSGVpZ2h0ID0gbGVnZW5kTGlzdC5sZW5ndGggKiBsaW5lSGVpZ2h0ICsgMiAqIHBhZGRpbmcgKyAyICogbWFyZ2luO1xyXG4gICAgICBsZWdlbmREYXRhLnBvaW50cyA9IGxlZ2VuZExpc3Q7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIGxldCBsZW4gPSBzZXJpZXMubGVuZ3RoO1xyXG4gICAgbGV0IG1heEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdIC0gMiAqIG1hcmdpbiAtIDIgKiBwYWRkaW5nO1xyXG4gICAgbGV0IG1heExlbmd0aCA9IE1hdGgubWluKE1hdGguZmxvb3IobWF4SGVpZ2h0IC8gbGluZUhlaWdodCksIGxlbik7XHJcbiAgICBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0ID0gbWF4TGVuZ3RoICogbGluZUhlaWdodCArIHBhZGRpbmcgKiAyO1xyXG4gICAgbGVnZW5kRGF0YS5hcmVhLndob2xlSGVpZ2h0ID0gbWF4TGVuZ3RoICogbGluZUhlaWdodCArIHBhZGRpbmcgKiAyO1xyXG4gICAgc3dpdGNoIChvcHRzLmxlZ2VuZC5mbG9hdCkge1xyXG4gICAgICBjYXNlICd0b3AnOlxyXG4gICAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC55ID0gb3B0cy5hcmVhWzBdICsgbWFyZ2luO1xyXG4gICAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueSA9IG9wdHMuYXJlYVswXSArIG1hcmdpbiArIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQ7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ2JvdHRvbSc6XHJcbiAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSAtIG1hcmdpbiAtIGxlZ2VuZERhdGEuYXJlYS5oZWlnaHQ7XHJcbiAgICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC55ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gLSBtYXJnaW47XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnkgPSAob3B0cy5oZWlnaHQgLSBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0KSAvIDI7XHJcbiAgICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC55ID0gKG9wdHMuaGVpZ2h0ICsgbGVnZW5kRGF0YS5hcmVhLmhlaWdodCkgLyAyO1xyXG4gICAgfVxyXG4gICAgbGV0IGxpbmVOdW0gPSBsZW4gJSBtYXhMZW5ndGggPT09IDAgPyBsZW4gLyBtYXhMZW5ndGggOiBNYXRoLmZsb29yKChsZW4gLyBtYXhMZW5ndGgpICsgMSk7XHJcbiAgICBsZXQgY3VycmVudFJvdyA9IFtdO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsaW5lTnVtOyBpKyspIHtcclxuICAgICAgbGV0IHRlbXAgPSBzZXJpZXMuc2xpY2UoaSAqIG1heExlbmd0aCwgaSAqIG1heExlbmd0aCArIG1heExlbmd0aCk7XHJcbiAgICAgIGN1cnJlbnRSb3cucHVzaCh0ZW1wKTtcclxuICAgIH1cclxuICAgIGxlZ2VuZERhdGEucG9pbnRzID0gY3VycmVudFJvdztcclxuICAgIGlmIChjdXJyZW50Um93Lmxlbmd0aCkge1xyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGN1cnJlbnRSb3cubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgaXRlbSA9IGN1cnJlbnRSb3dbaV07XHJcbiAgICAgICAgbGV0IG1heFdpZHRoID0gMDtcclxuICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IGl0ZW0ubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtV2lkdGggPSBzaGFwZVdpZHRoICsgc2hhcGVSaWdodCArIG1lYXN1cmVUZXh0KGl0ZW1bal0ubmFtZSB8fCAndW5kZWZpbmVkJywgZm9udFNpemUsIGNvbnRleHQpICsgb3B0cy5sZWdlbmQuaXRlbUdhcCAqIG9wdHMucGl4O1xyXG4gICAgICAgICAgaWYgKGl0ZW1XaWR0aCA+IG1heFdpZHRoKSB7XHJcbiAgICAgICAgICAgIG1heFdpZHRoID0gaXRlbVdpZHRoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBsZWdlbmREYXRhLndpZHRoQXJyLnB1c2gobWF4V2lkdGgpO1xyXG4gICAgICAgIGxlZ2VuZERhdGEuaGVpZ2h0QXJyLnB1c2goaXRlbS5sZW5ndGggKiBsaW5lSGVpZ2h0ICsgcGFkZGluZyAqIDIpO1xyXG4gICAgICB9XHJcbiAgICAgIGxldCBsZWdlbmRXaWR0aCA9IDBcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZWdlbmREYXRhLndpZHRoQXJyLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGVnZW5kV2lkdGggKz0gbGVnZW5kRGF0YS53aWR0aEFycltpXTtcclxuICAgICAgfVxyXG4gICAgICBsZWdlbmREYXRhLmFyZWEud2lkdGggPSBsZWdlbmRXaWR0aCAtIG9wdHMubGVnZW5kLml0ZW1HYXAgKiBvcHRzLnBpeCArIDIgKiBwYWRkaW5nO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEud2hvbGVXaWR0aCA9IGxlZ2VuZERhdGEuYXJlYS53aWR0aCArIHBhZGRpbmc7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHN3aXRjaCAob3B0cy5sZWdlbmQucG9zaXRpb24pIHtcclxuICAgIGNhc2UgJ3RvcCc6XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC55ID0gb3B0cy5hcmVhWzBdICsgbWFyZ2luO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnkgPSBvcHRzLmFyZWFbMF0gKyBtYXJnaW4gKyBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0O1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2JvdHRvbSc6XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC55ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gLSBsZWdlbmREYXRhLmFyZWEuaGVpZ2h0IC0gbWFyZ2luO1xyXG4gICAgICBsZWdlbmREYXRhLmFyZWEuZW5kLnkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSAtIG1hcmdpbjtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLnN0YXJ0LnggPSBvcHRzLmFyZWFbM107XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5lbmQueCA9IG9wdHMuYXJlYVszXSArIGxlZ2VuZERhdGEuYXJlYS53aWR0aDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyaWdodCc6XHJcbiAgICAgIGxlZ2VuZERhdGEuYXJlYS5zdGFydC54ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIGxlZ2VuZERhdGEuYXJlYS53aWR0aDtcclxuICAgICAgbGVnZW5kRGF0YS5hcmVhLmVuZC54ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXTtcclxuICAgICAgYnJlYWs7XHJcbiAgfVxyXG4gIGNoYXJ0RGF0YS5sZWdlbmREYXRhID0gbGVnZW5kRGF0YTtcclxuICByZXR1cm4gbGVnZW5kRGF0YTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FsQ2F0ZWdvcmllc0RhdGEoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBlYWNoU3BhY2luZywgY29udGV4dCkge1xyXG4gIHZhciByZXN1bHQgPSB7XHJcbiAgICBhbmdsZTogMCxcclxuICAgIHhBeGlzSGVpZ2h0OiBvcHRzLnhBeGlzLmxpbmVIZWlnaHQgKiBvcHRzLnBpeCArIG9wdHMueEF4aXMubWFyZ2luVG9wICogb3B0cy5waXhcclxuICB9O1xyXG4gIHZhciBmb250U2l6ZSA9IG9wdHMueEF4aXMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICB2YXIgY2F0ZWdvcmllc1RleHRMZW50aCA9IGNhdGVnb3JpZXMubWFwKGZ1bmN0aW9uKGl0ZW0saW5kZXgpIHtcclxuICAgIHZhciB4aXRlbSA9IG9wdHMueEF4aXMuZm9ybWF0dGVyID8gb3B0cy54QXhpcy5mb3JtYXR0ZXIoaXRlbSxpbmRleCxvcHRzKSA6IGl0ZW07XHJcbiAgICByZXR1cm4gbWVhc3VyZVRleHQoU3RyaW5nKHhpdGVtKSwgZm9udFNpemUsIGNvbnRleHQpO1xyXG4gIH0pO1xyXG4gIHZhciBtYXhUZXh0TGVuZ3RoID0gTWF0aC5tYXguYXBwbHkodGhpcywgY2F0ZWdvcmllc1RleHRMZW50aCk7XHJcbiAgaWYgKG9wdHMueEF4aXMucm90YXRlTGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgcmVzdWx0LmFuZ2xlID0gb3B0cy54QXhpcy5yb3RhdGVBbmdsZSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICBsZXQgdGVtcEhlaWdodCA9IG9wdHMueEF4aXMubWFyZ2luVG9wICogb3B0cy5waXggKiAyICsgIE1hdGguYWJzKG1heFRleHRMZW5ndGggKiBNYXRoLnNpbihyZXN1bHQuYW5nbGUpKVxyXG4gICAgdGVtcEhlaWdodCA9IHRlbXBIZWlnaHQgPCBmb250U2l6ZSArIG9wdHMueEF4aXMubWFyZ2luVG9wICogb3B0cy5waXggKiAyID8gdGVtcEhlaWdodCArIG9wdHMueEF4aXMubWFyZ2luVG9wICogb3B0cy5waXggKiAyIDogdGVtcEhlaWdodDtcclxuICAgIHJlc3VsdC54QXhpc0hlaWdodCA9IHRlbXBIZWlnaHQ7XHJcbiAgfVxyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCAmJiBvcHRzLnhBeGlzLnNjcm9sbFNob3cpIHtcclxuICAgIHJlc3VsdC54QXhpc0hlaWdodCArPSA2ICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnhBeGlzLmRpc2FibGVkKXtcclxuICAgIHJlc3VsdC54QXhpc0hlaWdodCA9IDA7XHJcbiAgfVxyXG4gIHJldHVybiByZXN1bHQ7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFhBeGlzVGV4dExpc3Qoc2VyaWVzLCBvcHRzLCBjb25maWcsIHN0YWNrKSB7XHJcbiAgdmFyIGluZGV4ID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAtMTtcclxuICB2YXIgZGF0YTtcclxuICBpZiAoc3RhY2sgPT0gJ3N0YWNrJykge1xyXG4gICAgZGF0YSA9IGRhdGFDb21iaW5lU3RhY2soc2VyaWVzLCBvcHRzLmNhdGVnb3JpZXMubGVuZ3RoKTtcclxuICB9IGVsc2Uge1xyXG4gICAgZGF0YSA9IGRhdGFDb21iaW5lKHNlcmllcyk7XHJcbiAgfVxyXG4gIHZhciBzb3J0ZWQgPSBbXTtcclxuICAvLyByZW1vdmUgbnVsbCBmcm9tIGRhdGFcclxuICBkYXRhID0gZGF0YS5maWx0ZXIoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgLy9yZXR1cm4gaXRlbSAhPT0gbnVsbDtcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoaXRlbS5jb25zdHJ1Y3Rvci50b1N0cmluZygpLmluZGV4T2YoJ0FycmF5JykgPiAtMSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtICE9PSBudWxsO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnZhbHVlICE9PSBudWxsO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICByZXR1cm4gaXRlbSAhPT0gbnVsbDtcclxuICAgIH1cclxuICB9KTtcclxuICBkYXRhLm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKSB7XHJcbiAgICAgICAgaWYgKG9wdHMudHlwZSA9PSAnY2FuZGxlJykge1xyXG4gICAgICAgICAgaXRlbS5tYXAoZnVuY3Rpb24oc3ViaXRlbSkge1xyXG4gICAgICAgICAgICBzb3J0ZWQucHVzaChzdWJpdGVtKTtcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHNvcnRlZC5wdXNoKGl0ZW1bMF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBzb3J0ZWQucHVzaChpdGVtLnZhbHVlKTtcclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc29ydGVkLnB1c2goaXRlbSk7XHJcbiAgICB9XHJcbiAgfSlcclxuXHJcbiAgdmFyIG1pbkRhdGEgPSAwO1xyXG4gIHZhciBtYXhEYXRhID0gMDtcclxuICBpZiAoc29ydGVkLmxlbmd0aCA+IDApIHtcclxuICAgIG1pbkRhdGEgPSBNYXRoLm1pbi5hcHBseSh0aGlzLCBzb3J0ZWQpO1xyXG4gICAgbWF4RGF0YSA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIHNvcnRlZCk7XHJcbiAgfVxyXG4gIC8v5Li65LqG5YW85a65djEuOS4w5LmL5YmN55qE6aG555uuXHJcbiAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgIGlmICh0eXBlb2Ygb3B0cy54QXhpcy5kYXRhW2luZGV4XS5taW4gPT09ICdudW1iZXInKSB7XHJcbiAgICAgIG1pbkRhdGEgPSBNYXRoLm1pbihvcHRzLnhBeGlzLmRhdGFbaW5kZXhdLm1pbiwgbWluRGF0YSk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIG9wdHMueEF4aXMuZGF0YVtpbmRleF0ubWF4ID09PSAnbnVtYmVyJykge1xyXG4gICAgICBtYXhEYXRhID0gTWF0aC5tYXgob3B0cy54QXhpcy5kYXRhW2luZGV4XS5tYXgsIG1heERhdGEpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAodHlwZW9mIG9wdHMueEF4aXMubWluID09PSAnbnVtYmVyJykge1xyXG4gICAgICBtaW5EYXRhID0gTWF0aC5taW4ob3B0cy54QXhpcy5taW4sIG1pbkRhdGEpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBvcHRzLnhBeGlzLm1heCA9PT0gJ251bWJlcicpIHtcclxuICAgICAgbWF4RGF0YSA9IE1hdGgubWF4KG9wdHMueEF4aXMubWF4LCBtYXhEYXRhKTtcclxuICAgIH1cclxuICB9XHJcbiAgaWYgKG1pbkRhdGEgPT09IG1heERhdGEpIHtcclxuICAgIHZhciByYW5nZVNwYW4gPSBtYXhEYXRhIHx8IDEwO1xyXG4gICAgbWF4RGF0YSArPSByYW5nZVNwYW47XHJcbiAgfVxyXG4gIC8vdmFyIGRhdGFSYW5nZSA9IGdldERhdGFSYW5nZShtaW5EYXRhLCBtYXhEYXRhKTtcclxuICB2YXIgbWluUmFuZ2UgPSBtaW5EYXRhO1xyXG4gIHZhciBtYXhSYW5nZSA9IG1heERhdGE7XHJcbiAgdmFyIHJhbmdlID0gW107XHJcbiAgdmFyIGVhY2hSYW5nZSA9IChtYXhSYW5nZSAtIG1pblJhbmdlKSAvIG9wdHMueEF4aXMuc3BsaXROdW1iZXI7XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gb3B0cy54QXhpcy5zcGxpdE51bWJlcjsgaSsrKSB7XHJcbiAgICByYW5nZS5wdXNoKG1pblJhbmdlICsgZWFjaFJhbmdlICogaSk7XHJcbiAgfVxyXG4gIHJldHVybiByYW5nZTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FsWEF4aXNEYXRhKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgLy/loIblj6Dlm77ph43nrpdZ6L20XHJcbiAgdmFyIGNvbHVtbnN0eWxlID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiBcIlwiXHJcbiAgfSwgb3B0cy5leHRyYS5iYXIpO1xyXG4gIHZhciByZXN1bHQgPSB7XHJcbiAgICBhbmdsZTogMCxcclxuICAgIHhBeGlzSGVpZ2h0OiBvcHRzLnhBeGlzLmxpbmVIZWlnaHQgKiBvcHRzLnBpeCArIG9wdHMueEF4aXMubWFyZ2luVG9wICogb3B0cy5waXhcclxuICB9O1xyXG4gIHJlc3VsdC5yYW5nZXMgPSBnZXRYQXhpc1RleHRMaXN0KHNlcmllcywgb3B0cywgY29uZmlnLCBjb2x1bW5zdHlsZS50eXBlKTtcclxuICByZXN1bHQucmFuZ2VzRm9ybWF0ID0gcmVzdWx0LnJhbmdlcy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgLy9pdGVtID0gb3B0cy54QXhpcy5mb3JtYXR0ZXIgPyBvcHRzLnhBeGlzLmZvcm1hdHRlcihpdGVtKSA6IHV0aWwudG9GaXhlZChpdGVtLCAyKTtcclxuICAgIGl0ZW0gPSB1dGlsLnRvRml4ZWQoaXRlbSwgMik7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxuICB2YXIgeEF4aXNTY2FsZVZhbHVlcyA9IHJlc3VsdC5yYW5nZXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIC8vIOWmguaenOWIu+W6puWAvOaYr+a1rueCueaVsCzliJnkv53nlZnkuKTkvY3lsI/mlbBcclxuICAgIGl0ZW0gPSB1dGlsLnRvRml4ZWQoaXRlbSwgMik7XHJcbiAgICAvLyDoi6XmnInoh6rlrprkuYnmoLzlvI/liJnosIPnlKjoh6rlrprkuYnnmoTmoLzlvI/ljJblh73mlbBcclxuICAgIC8vaXRlbSA9IG9wdHMueEF4aXMuZm9ybWF0dGVyID8gb3B0cy54QXhpcy5mb3JtYXR0ZXIoTnVtYmVyKGl0ZW0pKSA6IGl0ZW07XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxuICByZXN1bHQgPSBPYmplY3QuYXNzaWduKHJlc3VsdCwgZ2V0WEF4aXNQb2ludHMoeEF4aXNTY2FsZVZhbHVlcywgb3B0cywgY29uZmlnKSk7XHJcbiAgLy8g6K6h566XWOi9tOWIu+W6pueahOWxnuaAp+itrOWmguavj+S4quWIu+W6pueahOmXtOmalCzliLvluqbnmoTotbflp4vngrlcXOe7k+adn+eCueS7peWPiuaAu+mVv1xyXG4gIHZhciBlYWNoU3BhY2luZyA9IHJlc3VsdC5lYWNoU3BhY2luZztcclxuICB2YXIgdGV4dExlbmd0aCA9IHhBeGlzU2NhbGVWYWx1ZXMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIHJldHVybiBtZWFzdXJlVGV4dChpdGVtLCBvcHRzLnhBeGlzLmZvbnRTaXplICogb3B0cy5waXgsIGNvbnRleHQpO1xyXG4gIH0pO1xyXG4gIGlmIChvcHRzLnhBeGlzLmRpc2FibGVkID09PSB0cnVlKSB7XHJcbiAgICByZXN1bHQueEF4aXNIZWlnaHQgPSAwO1xyXG4gIH1cclxuICByZXR1cm4gcmVzdWx0O1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRSYWRhckRhdGFQb2ludHMoYW5nbGVMaXN0LCBjZW50ZXIsIHJhZGl1cywgc2VyaWVzLCBvcHRzKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IDE7XHJcbiAgdmFyIHJhZGFyT3B0aW9uID0gb3B0cy5leHRyYS5yYWRhciB8fCB7fTtcclxuICByYWRhck9wdGlvbi5tYXggPSByYWRhck9wdGlvbi5tYXggfHwgMDtcclxuICB2YXIgbWF4RGF0YSA9IE1hdGgubWF4KHJhZGFyT3B0aW9uLm1heCwgTWF0aC5tYXguYXBwbHkobnVsbCwgZGF0YUNvbWJpbmUoc2VyaWVzKSkpO1xyXG4gIHZhciBkYXRhID0gW107XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGxldCBlYWNoID0gc2VyaWVzW2ldO1xyXG4gICAgbGV0IGxpc3RJdGVtID0ge307XHJcbiAgICBsaXN0SXRlbS5jb2xvciA9IGVhY2guY29sb3I7XHJcbiAgICBsaXN0SXRlbS5sZWdlbmRTaGFwZSA9IGVhY2gubGVnZW5kU2hhcGU7XHJcbiAgICBsaXN0SXRlbS5wb2ludFNoYXBlID0gZWFjaC5wb2ludFNoYXBlO1xyXG4gICAgbGlzdEl0ZW0uZGF0YSA9IFtdO1xyXG4gICAgZWFjaC5kYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgbGV0IHRtcCA9IHt9O1xyXG4gICAgICB0bXAuYW5nbGUgPSBhbmdsZUxpc3RbaW5kZXhdO1xyXG4gICAgICB0bXAucHJvcG9ydGlvbiA9IGl0ZW0gLyBtYXhEYXRhO1xyXG4gICAgICB0bXAudmFsdWUgPSBpdGVtO1xyXG4gICAgICB0bXAucG9zaXRpb24gPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihyYWRpdXMgKiB0bXAucHJvcG9ydGlvbiAqIHByb2Nlc3MgKiBNYXRoLmNvcyh0bXAuYW5nbGUpLCByYWRpdXMgKiB0bXAucHJvcG9ydGlvbiAqIHByb2Nlc3MgKiBNYXRoLnNpbih0bXAuYW5nbGUpLCBjZW50ZXIpO1xyXG4gICAgICBsaXN0SXRlbS5kYXRhLnB1c2godG1wKTtcclxuICAgIH0pO1xyXG4gICAgZGF0YS5wdXNoKGxpc3RJdGVtKTtcclxuICB9XHJcbiAgcmV0dXJuIGRhdGE7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldFBpZURhdGFQb2ludHMoc2VyaWVzLCByYWRpdXMpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMTtcclxuICB2YXIgY291bnQgPSAwO1xyXG4gIHZhciBfc3RhcnRfID0gMDtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgY291bnQgKz0gaXRlbS5kYXRhO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgaWYgKGNvdW50ID09PSAwKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gMSAvIHNlcmllcy5sZW5ndGggKiBwcm9jZXNzO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSBpdGVtLmRhdGEgLyBjb3VudCAqIHByb2Nlc3M7XHJcbiAgICB9XHJcbiAgICBpdGVtLl9yYWRpdXNfID0gcmFkaXVzO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLl9zdGFydF8gPSBfc3RhcnRfO1xyXG4gICAgX3N0YXJ0XyArPSAyICogaXRlbS5fcHJvcG9ydGlvbl8gKiBNYXRoLlBJO1xyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRGdW5uZWxEYXRhUG9pbnRzKHNlcmllcywgcmFkaXVzLCBvcHRpb24sIGVhY2hTcGFjaW5nKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBzZXJpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIGlmKG9wdGlvbi50eXBlID09ICdmdW5uZWwnKXtcclxuICAgICAgc2VyaWVzW2ldLnJhZGl1cyA9IHNlcmllc1tpXS5kYXRhIC8gc2VyaWVzWzBdLmRhdGEgKiByYWRpdXMgKiBwcm9jZXNzO1xyXG4gICAgfWVsc2V7XHJcbiAgICAgIHNlcmllc1tpXS5yYWRpdXMgPSAgKGVhY2hTcGFjaW5nICogKHNlcmllcy5sZW5ndGggLSBpKSkgLyAoZWFjaFNwYWNpbmcgKiBzZXJpZXMubGVuZ3RoKSAqIHJhZGl1cyAqIHByb2Nlc3M7XHJcbiAgICB9XHJcbiAgICBzZXJpZXNbaV0uX3Byb3BvcnRpb25fID0gc2VyaWVzW2ldLmRhdGEgLyBzZXJpZXNbMF0uZGF0YTtcclxuICB9XHJcbiAgLy8gaWYob3B0aW9uLnR5cGUgIT09ICdweXJhbWlkJyl7XHJcbiAgLy8gICBzZXJpZXMucmV2ZXJzZSgpO1xyXG4gIC8vIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRSb3NlRGF0YVBvaW50cyhzZXJpZXMsIHR5cGUsIG1pblJhZGl1cywgcmFkaXVzKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgdmFyIGNvdW50ID0gMDtcclxuICB2YXIgX3N0YXJ0XyA9IDA7XHJcbiAgdmFyIGRhdGFBcnIgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLmRhdGEgPSBpdGVtLmRhdGEgPT09IG51bGwgPyAwIDogaXRlbS5kYXRhO1xyXG4gICAgY291bnQgKz0gaXRlbS5kYXRhO1xyXG4gICAgZGF0YUFyci5wdXNoKGl0ZW0uZGF0YSk7XHJcbiAgfVxyXG4gIHZhciBtaW5EYXRhID0gTWF0aC5taW4uYXBwbHkobnVsbCwgZGF0YUFycik7XHJcbiAgdmFyIG1heERhdGEgPSBNYXRoLm1heC5hcHBseShudWxsLCBkYXRhQXJyKTtcclxuICB2YXIgcmFkaXVzTGVuZ3RoID0gcmFkaXVzIC0gbWluUmFkaXVzO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBpZiAoY291bnQgPT09IDApIHtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSAxIC8gc2VyaWVzLmxlbmd0aCAqIHByb2Nlc3M7XHJcbiAgICAgIGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8gPSAxIC8gc2VyaWVzLmxlbmd0aCAqIHByb2Nlc3M7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IGl0ZW0uZGF0YSAvIGNvdW50ICogcHJvY2VzcztcclxuICAgICAgaWYodHlwZSA9PSAnYXJlYScpe1xyXG4gICAgICAgIGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8gPSAxIC8gc2VyaWVzLmxlbmd0aCAqIHByb2Nlc3M7XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGl0ZW0uX3Jvc2VfcHJvcG9ydGlvbl8gPSBpdGVtLmRhdGEgLyBjb3VudCAqIHByb2Nlc3M7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGl0ZW0uX3JhZGl1c18gPSBtaW5SYWRpdXMgKyByYWRpdXNMZW5ndGggKiAoKGl0ZW0uZGF0YSAtIG1pbkRhdGEpIC8gKG1heERhdGEgLSBtaW5EYXRhKSkgfHwgcmFkaXVzO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpdGVtLl9zdGFydF8gPSBfc3RhcnRfO1xyXG4gICAgX3N0YXJ0XyArPSAyICogaXRlbS5fcm9zZV9wcm9wb3J0aW9uXyAqIE1hdGguUEk7XHJcbiAgfVxyXG4gIHJldHVybiBzZXJpZXM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEFyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBhcmNiYXJPcHRpb24pIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMTtcclxuICBpZiAocHJvY2VzcyA9PSAxKSB7XHJcbiAgICBwcm9jZXNzID0gMC45OTk5OTk7XHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBsZXQgdG90YWxBbmdsZTtcclxuICAgIGlmIChhcmNiYXJPcHRpb24udHlwZSA9PSAnY2lyY2xlJykge1xyXG4gICAgICB0b3RhbEFuZ2xlID0gMjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmKGFyY2Jhck9wdGlvbi5kaXJlY3Rpb24gPT0gJ2Njdycpe1xyXG4gICAgICAgIGlmIChhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSA8IGFyY2Jhck9wdGlvbi5lbmRBbmdsZSkge1xyXG4gICAgICAgICAgdG90YWxBbmdsZSA9IDIgKyBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSAtIGFyY2Jhck9wdGlvbi5lbmRBbmdsZTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdG90YWxBbmdsZSA9IGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlIC0gYXJjYmFyT3B0aW9uLmVuZEFuZ2xlO1xyXG4gICAgICAgIH1cclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgaWYgKGFyY2Jhck9wdGlvbi5lbmRBbmdsZSA8IGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlKSB7XHJcbiAgICAgICAgICB0b3RhbEFuZ2xlID0gMiArIGFyY2Jhck9wdGlvbi5lbmRBbmdsZSAtIGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0b3RhbEFuZ2xlID0gYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGUgLSBhcmNiYXJPcHRpb24uZW5kQW5nbGU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IHRvdGFsQW5nbGUgKiBpdGVtLmRhdGEgKiBwcm9jZXNzICsgYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICBpZihhcmNiYXJPcHRpb24uZGlyZWN0aW9uID09ICdjY3cnKXtcclxuICAgICAgaXRlbS5fcHJvcG9ydGlvbl8gPSBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSAtIHRvdGFsQW5nbGUgKiBpdGVtLmRhdGEgKiBwcm9jZXNzIDtcclxuICAgIH1cclxuICAgIGlmIChpdGVtLl9wcm9wb3J0aW9uXyA+PSAyKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gaXRlbS5fcHJvcG9ydGlvbl8gJSAyO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRHYXVnZUFyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBhcmNiYXJPcHRpb24pIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiAyICYmIGFyZ3VtZW50c1syXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzJdIDogMTtcclxuICBpZiAocHJvY2VzcyA9PSAxKSB7XHJcbiAgICBwcm9jZXNzID0gMC45OTk5OTk7XHJcbiAgfVxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBsZXQgdG90YWxBbmdsZTtcclxuICAgIGlmIChhcmNiYXJPcHRpb24udHlwZSA9PSAnY2lyY2xlJykge1xyXG4gICAgICB0b3RhbEFuZ2xlID0gMjtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGlmIChhcmNiYXJPcHRpb24uZW5kQW5nbGUgPCBhcmNiYXJPcHRpb24uc3RhcnRBbmdsZSkge1xyXG4gICAgICAgIHRvdGFsQW5nbGUgPSAyICsgYXJjYmFyT3B0aW9uLmVuZEFuZ2xlIC0gYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdG90YWxBbmdsZSA9IGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlIC0gYXJjYmFyT3B0aW9uLmVuZEFuZ2xlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IHRvdGFsQW5nbGUgKiBpdGVtLmRhdGEgKiBwcm9jZXNzICsgYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICBpZiAoaXRlbS5fcHJvcG9ydGlvbl8gPj0gMikge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IGl0ZW0uX3Byb3BvcnRpb25fICUgMjtcclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHNlcmllcztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0R2F1Z2VBeGlzUG9pbnRzKGNhdGVnb3JpZXMsIHN0YXJ0QW5nbGUsIGVuZEFuZ2xlKSB7XHJcbiAgbGV0IHRvdGFsQW5nbGU7XHJcbiAgaWYgKGVuZEFuZ2xlIDwgc3RhcnRBbmdsZSkge1xyXG4gICAgdG90YWxBbmdsZSA9IDIgKyBlbmRBbmdsZSAtIHN0YXJ0QW5nbGU7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRvdGFsQW5nbGUgPSBzdGFydEFuZ2xlIC0gZW5kQW5nbGU7XHJcbiAgfVxyXG4gIGxldCB0ZW1wU3RhcnRBbmdsZSA9IHN0YXJ0QW5nbGU7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjYXRlZ29yaWVzW2ldLnZhbHVlID0gY2F0ZWdvcmllc1tpXS52YWx1ZSA9PT0gbnVsbCA/IDAgOiBjYXRlZ29yaWVzW2ldLnZhbHVlO1xyXG4gICAgY2F0ZWdvcmllc1tpXS5fc3RhcnRBbmdsZV8gPSB0ZW1wU3RhcnRBbmdsZTtcclxuICAgIGNhdGVnb3JpZXNbaV0uX2VuZEFuZ2xlXyA9IHRvdGFsQW5nbGUgKiBjYXRlZ29yaWVzW2ldLnZhbHVlICsgc3RhcnRBbmdsZTtcclxuICAgIGlmIChjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV8gPj0gMikge1xyXG4gICAgICBjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV8gPSBjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV8gJSAyO1xyXG4gICAgfVxyXG4gICAgdGVtcFN0YXJ0QW5nbGUgPSBjYXRlZ29yaWVzW2ldLl9lbmRBbmdsZV87XHJcbiAgfVxyXG4gIHJldHVybiBjYXRlZ29yaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRHYXVnZURhdGFQb2ludHMoc2VyaWVzLCBjYXRlZ29yaWVzLCBnYXVnZU9wdGlvbikge1xyXG4gIGxldCBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDMgJiYgYXJndW1lbnRzWzNdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbM10gOiAxO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGl0ZW0uZGF0YSA9IGl0ZW0uZGF0YSA9PT0gbnVsbCA/IDAgOiBpdGVtLmRhdGE7XHJcbiAgICBpZiAoZ2F1Z2VPcHRpb24ucG9pbnRlci5jb2xvciA9PSAnYXV0bycpIHtcclxuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uZGF0YSA8PSBjYXRlZ29yaWVzW2ldLnZhbHVlKSB7XHJcbiAgICAgICAgICBpdGVtLmNvbG9yID0gY2F0ZWdvcmllc1tpXS5jb2xvcjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaXRlbS5jb2xvciA9IGdhdWdlT3B0aW9uLnBvaW50ZXIuY29sb3I7XHJcbiAgICB9XHJcbiAgICBsZXQgdG90YWxBbmdsZTtcclxuICAgIGlmIChnYXVnZU9wdGlvbi5lbmRBbmdsZSA8IGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUpIHtcclxuICAgICAgdG90YWxBbmdsZSA9IDIgKyBnYXVnZU9wdGlvbi5lbmRBbmdsZSAtIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0b3RhbEFuZ2xlID0gZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSAtIGdhdWdlT3B0aW9uLmVuZEFuZ2xlO1xyXG4gICAgfVxyXG4gICAgaXRlbS5fZW5kQW5nbGVfID0gdG90YWxBbmdsZSAqIGl0ZW0uZGF0YSArIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgICBpdGVtLl9vbGRBbmdsZV8gPSBnYXVnZU9wdGlvbi5vbGRBbmdsZTtcclxuICAgIGlmIChnYXVnZU9wdGlvbi5vbGRBbmdsZSA8IGdhdWdlT3B0aW9uLmVuZEFuZ2xlKSB7XHJcbiAgICAgIGl0ZW0uX29sZEFuZ2xlXyArPSAyO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0uZGF0YSA+PSBnYXVnZU9wdGlvbi5vbGREYXRhKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gKGl0ZW0uX2VuZEFuZ2xlXyAtIGl0ZW0uX29sZEFuZ2xlXykgKiBwcm9jZXNzICsgZ2F1Z2VPcHRpb24ub2xkQW5nbGU7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBpdGVtLl9wcm9wb3J0aW9uXyA9IGl0ZW0uX29sZEFuZ2xlXyAtIChpdGVtLl9vbGRBbmdsZV8gLSBpdGVtLl9lbmRBbmdsZV8pICogcHJvY2VzcztcclxuICAgIH1cclxuICAgIGlmIChpdGVtLl9wcm9wb3J0aW9uXyA+PSAyKSB7XHJcbiAgICAgIGl0ZW0uX3Byb3BvcnRpb25fID0gaXRlbS5fcHJvcG9ydGlvbl8gJSAyO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gc2VyaWVzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRQaWVUZXh0TWF4TGVuZ3RoKHNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKSB7XHJcbiAgc2VyaWVzID0gZ2V0UGllRGF0YVBvaW50cyhzZXJpZXMpO1xyXG4gIGxldCBtYXhMZW5ndGggPSAwO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGxldCB0ZXh0ID0gaXRlbS5mb3JtYXR0ZXIgPyBpdGVtLmZvcm1hdHRlcigraXRlbS5fcHJvcG9ydGlvbl8udG9GaXhlZCgyKSkgOiB1dGlsLnRvRml4ZWQoaXRlbS5fcHJvcG9ydGlvbl8gKiAxMDApICsgJyUnO1xyXG4gICAgbWF4TGVuZ3RoID0gTWF0aC5tYXgobWF4TGVuZ3RoLCBtZWFzdXJlVGV4dCh0ZXh0LCBpdGVtLnRleHRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplLCBjb250ZXh0KSk7XHJcbiAgfVxyXG4gIHJldHVybiBtYXhMZW5ndGg7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpeENvbHVtZURhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgY29sdW1uTGVuLCBpbmRleCwgY29uZmlnLCBvcHRzKSB7XHJcbiAgcmV0dXJuIHBvaW50cy5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICB2YXIgc2VyaWVzR2FwID0gMDtcclxuICAgIHZhciBjYXRlZ29yeUdhcCA9IDA7XHJcbiAgICBpZiAob3B0cy50eXBlID09ICdtaXgnKSB7XHJcbiAgICAgIHNlcmllc0dhcCA9IG9wdHMuZXh0cmEubWl4LmNvbHVtbi5zZXJpZXNHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgICBjYXRlZ29yeUdhcCA9IG9wdHMuZXh0cmEubWl4LmNvbHVtbi5jYXRlZ29yeUdhcCAqIG9wdHMucGl4IHx8IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzZXJpZXNHYXAgPSBvcHRzLmV4dHJhLmNvbHVtbi5zZXJpZXNHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgICBjYXRlZ29yeUdhcCA9IG9wdHMuZXh0cmEuY29sdW1uLmNhdGVnb3J5R2FwICogb3B0cy5waXggfHwgMDtcclxuICAgIH1cclxuICAgIHNlcmllc0dhcCA9ICBNYXRoLm1pbihzZXJpZXNHYXAsIGVhY2hTcGFjaW5nIC8gY29sdW1uTGVuKVxyXG4gICAgY2F0ZWdvcnlHYXAgPSAgTWF0aC5taW4oY2F0ZWdvcnlHYXAsIGVhY2hTcGFjaW5nIC8gY29sdW1uTGVuKVxyXG4gICAgaXRlbS53aWR0aCA9IE1hdGguY2VpbCgoZWFjaFNwYWNpbmcgLSAyICogY2F0ZWdvcnlHYXAgLSBzZXJpZXNHYXAgKiAoY29sdW1uTGVuIC0gMSkpIC8gY29sdW1uTGVuKTtcclxuICAgIGlmIChvcHRzLmV4dHJhLm1peCAmJiBvcHRzLmV4dHJhLm1peC5jb2x1bW4ud2lkdGggJiYgK29wdHMuZXh0cmEubWl4LmNvbHVtbi53aWR0aCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IE1hdGgubWluKGl0ZW0ud2lkdGgsICtvcHRzLmV4dHJhLm1peC5jb2x1bW4ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBpZiAob3B0cy5leHRyYS5jb2x1bW4gJiYgb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggJiYgK29wdHMuZXh0cmEuY29sdW1uLndpZHRoID4gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gTWF0aC5taW4oaXRlbS53aWR0aCwgK29wdHMuZXh0cmEuY29sdW1uLndpZHRoICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0ud2lkdGggPD0gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gMTtcclxuICAgIH1cclxuICAgIGl0ZW0ueCArPSAoaW5kZXggKyAwLjUgLSBjb2x1bW5MZW4gLyAyKSAqIChpdGVtLndpZHRoICsgc2VyaWVzR2FwKTtcclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBmaXhCYXJEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbiwgaW5kZXgsIGNvbmZpZywgb3B0cykge1xyXG4gIHJldHVybiBwb2ludHMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgdmFyIHNlcmllc0dhcCA9IDA7XHJcbiAgICB2YXIgY2F0ZWdvcnlHYXAgPSAwO1xyXG4gICAgc2VyaWVzR2FwID0gb3B0cy5leHRyYS5iYXIuc2VyaWVzR2FwICogb3B0cy5waXggfHwgMDtcclxuICAgIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5iYXIuY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gICAgc2VyaWVzR2FwID0gIE1hdGgubWluKHNlcmllc0dhcCwgZWFjaFNwYWNpbmcgLyBjb2x1bW5MZW4pXHJcbiAgICBjYXRlZ29yeUdhcCA9ICBNYXRoLm1pbihjYXRlZ29yeUdhcCwgZWFjaFNwYWNpbmcgLyBjb2x1bW5MZW4pXHJcbiAgICBpdGVtLndpZHRoID0gTWF0aC5jZWlsKChlYWNoU3BhY2luZyAtIDIgKiBjYXRlZ29yeUdhcCAtIHNlcmllc0dhcCAqIChjb2x1bW5MZW4gLSAxKSkgLyBjb2x1bW5MZW4pO1xyXG4gICAgaWYgKG9wdHMuZXh0cmEuYmFyICYmIG9wdHMuZXh0cmEuYmFyLndpZHRoICYmICtvcHRzLmV4dHJhLmJhci53aWR0aCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IE1hdGgubWluKGl0ZW0ud2lkdGgsICtvcHRzLmV4dHJhLmJhci53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICAgIGlmIChpdGVtLndpZHRoIDw9IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IDE7XHJcbiAgICB9XHJcbiAgICBpdGVtLnkgKz0gKGluZGV4ICsgMC41IC0gY29sdW1uTGVuIC8gMikgKiAoaXRlbS53aWR0aCArIHNlcmllc0dhcCk7XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZml4Q29sdW1lTWV0ZXJEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbiwgaW5kZXgsIGNvbmZpZywgb3B0cywgYm9yZGVyKSB7XHJcbiAgdmFyIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5jb2x1bW4uY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gIHJldHVybiBwb2ludHMubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaXRlbS53aWR0aCA9IGVhY2hTcGFjaW5nIC0gMiAqIGNhdGVnb3J5R2FwO1xyXG4gICAgaWYgKG9wdHMuZXh0cmEuY29sdW1uICYmIG9wdHMuZXh0cmEuY29sdW1uLndpZHRoICYmICtvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCA9IE1hdGgubWluKGl0ZW0ud2lkdGgsICtvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICAgIGlmIChpbmRleCA+IDApIHtcclxuICAgICAgaXRlbS53aWR0aCAtPSBib3JkZXI7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gaXRlbTtcclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZml4Q29sdW1lU3RhY2tEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbiwgaW5kZXgsIGNvbmZpZywgb3B0cywgc2VyaWVzKSB7XHJcbiAgdmFyIGNhdGVnb3J5R2FwID0gb3B0cy5leHRyYS5jb2x1bW4uY2F0ZWdvcnlHYXAgKiBvcHRzLnBpeCB8fCAwO1xyXG4gIHJldHVybiBwb2ludHMubWFwKGZ1bmN0aW9uKGl0ZW0sIGluZGV4bikge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICB9XHJcbiAgICBpdGVtLndpZHRoID0gTWF0aC5jZWlsKGVhY2hTcGFjaW5nIC0gMiAqIGNhdGVnb3J5R2FwKTtcclxuICAgIGlmIChvcHRzLmV4dHJhLmNvbHVtbiAmJiBvcHRzLmV4dHJhLmNvbHVtbi53aWR0aCAmJiArb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggPiAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSBNYXRoLm1pbihpdGVtLndpZHRoLCArb3B0cy5leHRyYS5jb2x1bW4ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBpZiAoaXRlbS53aWR0aCA8PSAwKSB7XHJcbiAgICAgIGl0ZW0ud2lkdGggPSAxO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGl0ZW07XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGZpeEJhclN0YWNrRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBjb2x1bW5MZW4sIGluZGV4LCBjb25maWcsIG9wdHMsIHNlcmllcykge1xyXG4gIHZhciBjYXRlZ29yeUdhcCA9IG9wdHMuZXh0cmEuYmFyLmNhdGVnb3J5R2FwICogb3B0cy5waXggfHwgMDtcclxuICByZXR1cm4gcG9pbnRzLm1hcChmdW5jdGlvbihpdGVtLCBpbmRleG4pIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaXRlbS53aWR0aCA9IE1hdGguY2VpbChlYWNoU3BhY2luZyAtIDIgKiBjYXRlZ29yeUdhcCk7XHJcbiAgICBpZiAob3B0cy5leHRyYS5iYXIgJiYgb3B0cy5leHRyYS5iYXIud2lkdGggJiYgK29wdHMuZXh0cmEuYmFyLndpZHRoID4gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gTWF0aC5taW4oaXRlbS53aWR0aCwgK29wdHMuZXh0cmEuYmFyLndpZHRoICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGl0ZW0ud2lkdGggPD0gMCkge1xyXG4gICAgICBpdGVtLndpZHRoID0gMTtcclxuICAgIH1cclxuICAgIHJldHVybiBpdGVtO1xyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRYQXhpc1BvaW50cyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcpIHtcclxuICB2YXIgc3BhY2luZ1ZhbGlkID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICB2YXIgZGF0YUNvdW50ID0gb3B0cy5lbmFibGVTY3JvbGwgPyBNYXRoLm1pbihvcHRzLnhBeGlzLml0ZW1Db3VudCwgY2F0ZWdvcmllcy5sZW5ndGgpIDogY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgaWYgKChvcHRzLnR5cGUgPT0gJ2xpbmUnIHx8IG9wdHMudHlwZSA9PSAnYXJlYScgfHwgb3B0cy50eXBlID09ICdzY2F0dGVyJyB8fCBvcHRzLnR5cGUgPT0gJ2J1YmJsZScgfHwgb3B0cy50eXBlID09ICdiYXInKSAmJiBkYXRhQ291bnQgPiAxICYmIG9wdHMueEF4aXMuYm91bmRhcnlHYXAgPT0gJ2p1c3RpZnknKSB7XHJcbiAgICBkYXRhQ291bnQgLT0gMTtcclxuICB9XHJcbiAgdmFyIHdpZHRoUmF0aW8gPSAwO1xyXG4gIGlmKG9wdHMudHlwZSA9PSAnbW91bnQnICYmIG9wdHMuZXh0cmEgJiYgb3B0cy5leHRyYS5tb3VudCAmJiBvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvID4gMSl7XHJcbiAgICBpZihvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8+Mikgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvID0gMlxyXG4gICAgd2lkdGhSYXRpbyA9IG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyAtIDE7XHJcbiAgICBkYXRhQ291bnQgKz0gd2lkdGhSYXRpbztcclxuICB9XHJcbiAgdmFyIGVhY2hTcGFjaW5nID0gc3BhY2luZ1ZhbGlkIC8gZGF0YUNvdW50O1xyXG4gIHZhciB4QXhpc1BvaW50cyA9IFtdO1xyXG4gIHZhciBzdGFydFggPSBvcHRzLmFyZWFbM107XHJcbiAgdmFyIGVuZFggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdO1xyXG4gIGNhdGVnb3JpZXMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgeEF4aXNQb2ludHMucHVzaChzdGFydFggKyB3aWR0aFJhdGlvIC8gMiAqIGVhY2hTcGFjaW5nICsgaW5kZXggKiBlYWNoU3BhY2luZyk7XHJcbiAgfSk7XHJcbiAgaWYgKG9wdHMueEF4aXMuYm91bmRhcnlHYXAgIT09ICdqdXN0aWZ5Jykge1xyXG4gICAgaWYgKG9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICAgIHhBeGlzUG9pbnRzLnB1c2goc3RhcnRYICsgd2lkdGhSYXRpbyAqIGVhY2hTcGFjaW5nICsgY2F0ZWdvcmllcy5sZW5ndGggKiBlYWNoU3BhY2luZyk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB4QXhpc1BvaW50cy5wdXNoKGVuZFgpO1xyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgc3RhcnRYOiBzdGFydFgsXHJcbiAgICBlbmRYOiBlbmRYLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Q2FuZGxlRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IDE7XHJcbiAgdmFyIHBvaW50cyA9IFtdO1xyXG4gIHZhciB2YWxpZEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIGRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcG9pbnRzLnB1c2gobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgY1BvaW50cyA9IFtdO1xyXG4gICAgICBpdGVtLmZvckVhY2goZnVuY3Rpb24oaXRlbXMsIGluZGV4cykge1xyXG4gICAgICAgIHZhciBwb2ludCA9IHt9O1xyXG4gICAgICAgIHBvaW50LnggPSB4QXhpc1BvaW50c1tpbmRleF0gKyBNYXRoLnJvdW5kKGVhY2hTcGFjaW5nIC8gMik7XHJcbiAgICAgICAgdmFyIHZhbHVlID0gaXRlbXMudmFsdWUgfHwgaXRlbXM7XHJcbiAgICAgICAgdmFyIGhlaWdodCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICAgIGhlaWdodCAqPSBwcm9jZXNzO1xyXG4gICAgICAgIHBvaW50LnkgPSBvcHRzLmhlaWdodCAtIE1hdGgucm91bmQoaGVpZ2h0KSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICBjUG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgICB9KTtcclxuICAgICAgcG9pbnRzLnB1c2goY1BvaW50cyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IDE7XHJcbiAgdmFyIGJvdW5kYXJ5R2FwID0gJ2NlbnRlcic7XHJcbiAgaWYgKG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJyB8fCBvcHRzLnR5cGUgPT0gJ3NjYXR0ZXInIHx8IG9wdHMudHlwZSA9PSAnYnViYmxlJyApIHtcclxuICAgIGJvdW5kYXJ5R2FwID0gb3B0cy54QXhpcy5ib3VuZGFyeUdhcDtcclxuICB9XHJcbiAgdmFyIHBvaW50cyA9IFtdO1xyXG4gIHZhciB2YWxpZEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIHZhciB2YWxpZFdpZHRoID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueCA9IHhBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgdmFyIHZhbHVlID0gaXRlbTtcclxuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgaWYgKGl0ZW0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTEpIHtcclxuICAgICAgICAgIGxldCB4cmFuZ2VzLCB4bWluUmFuZ2UsIHhtYXhSYW5nZTtcclxuICAgICAgICAgIHhyYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnJhbmdlcyk7XHJcbiAgICAgICAgICB4bWluUmFuZ2UgPSB4cmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgICAgICB4bWF4UmFuZ2UgPSB4cmFuZ2VzLnBvcCgpO1xyXG4gICAgICAgICAgdmFsdWUgPSBpdGVtWzFdO1xyXG4gICAgICAgICAgcG9pbnQueCA9IG9wdHMuYXJlYVszXSArIHZhbGlkV2lkdGggKiAoaXRlbVswXSAtIHhtaW5SYW5nZSkgLyAoeG1heFJhbmdlIC0geG1pblJhbmdlKTtcclxuICAgICAgICAgIGlmKG9wdHMudHlwZSA9PSAnYnViYmxlJyl7XHJcbiAgICAgICAgICAgIHBvaW50LnIgPSBpdGVtWzJdO1xyXG4gICAgICAgICAgICBwb2ludC50ID0gaXRlbVszXTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBpZiAoYm91bmRhcnlHYXAgPT0gJ2NlbnRlcicpIHtcclxuICAgICAgICBwb2ludC54ICs9IGVhY2hTcGFjaW5nIC8gMjtcclxuICAgICAgfVxyXG4gICAgICB2YXIgaGVpZ2h0ID0gdmFsaWRIZWlnaHQgKiAodmFsdWUgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgIGhlaWdodCAqPSBwcm9jZXNzO1xyXG4gICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBoZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgIHBvaW50cy5wdXNoKHBvaW50KTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gcG9pbnRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRMaW5lRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBsaW5lT3B0aW9uLCBwcm9jZXNzKXtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA4ICYmIGFyZ3VtZW50c1s4XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzhdIDogMTtcclxuICB2YXIgYm91bmRhcnlHYXAgPSBvcHRzLnhBeGlzLmJvdW5kYXJ5R2FwO1xyXG4gIHZhciBwb2ludHMgPSBbXTtcclxuICB2YXIgdmFsaWRIZWlnaHQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICB2YXIgdmFsaWRXaWR0aCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM107XHJcbiAgZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICBwb2ludHMucHVzaChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBwb2ludCA9IHt9O1xyXG4gICAgICBwb2ludC5jb2xvciA9IGl0ZW0uY29sb3I7XHJcbiAgICAgIGlmKGxpbmVPcHRpb24uYW5pbWF0aW9uID09ICd2ZXJ0aWNhbCcpe1xyXG4gICAgICAgIHBvaW50LnggPSB4QXhpc1BvaW50c1tpbmRleF07XHJcbiAgICAgICAgdmFyIHZhbHVlID0gaXRlbTtcclxuICAgICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICAgIGlmIChpdGVtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKSB7XHJcbiAgICAgICAgICAgIGxldCB4cmFuZ2VzLCB4bWluUmFuZ2UsIHhtYXhSYW5nZTtcclxuICAgICAgICAgICAgeHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEucmFuZ2VzKTtcclxuICAgICAgICAgICAgeG1pblJhbmdlID0geHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgICAgICAgICB4bWF4UmFuZ2UgPSB4cmFuZ2VzLnBvcCgpO1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGl0ZW1bMV07XHJcbiAgICAgICAgICAgIHBvaW50LnggPSBvcHRzLmFyZWFbM10gKyB2YWxpZFdpZHRoICogKGl0ZW1bMF0gLSB4bWluUmFuZ2UpIC8gKHhtYXhSYW5nZSAtIHhtaW5SYW5nZSk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChib3VuZGFyeUdhcCA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgcG9pbnQueCArPSBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBoZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgcG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBwb2ludC54ID0geEF4aXNQb2ludHNbMF0gKyBlYWNoU3BhY2luZyAqIGluZGV4ICogcHJvY2VzcztcclxuICAgICAgICB2YXIgdmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIGlmIChib3VuZGFyeUdhcCA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgcG9pbnQueCArPSBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBoZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgcG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Q29sdW1uRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCB6ZXJvUG9pbnRzLCBwcm9jZXNzKXtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA4ICYmIGFyZ3VtZW50c1s4XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzhdIDogMTtcclxuICB2YXIgcG9pbnRzID0gW107XHJcbiAgdmFyIHZhbGlkSGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgdmFyIHZhbGlkV2lkdGggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdO1xyXG4gIGRhdGEuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gPT09IG51bGwpIHtcclxuICAgICAgcG9pbnRzLnB1c2gobnVsbCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB2YXIgcG9pbnQgPSB7fTtcclxuICAgICAgcG9pbnQuY29sb3IgPSBpdGVtLmNvbG9yO1xyXG4gICAgICBwb2ludC54ID0geEF4aXNQb2ludHNbaW5kZXhdO1xyXG4gICAgICB2YXIgdmFsdWUgPSBpdGVtO1xyXG4gICAgICBpZiAodHlwZW9mIGl0ZW0gPT09ICdvYmplY3QnICYmIGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoaXRlbS5jb25zdHJ1Y3Rvci50b1N0cmluZygpLmluZGV4T2YoJ0FycmF5JykgPiAtMSkge1xyXG4gICAgICAgICAgbGV0IHhyYW5nZXMsIHhtaW5SYW5nZSwgeG1heFJhbmdlO1xyXG4gICAgICAgICAgeHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEucmFuZ2VzKTtcclxuICAgICAgICAgIHhtaW5SYW5nZSA9IHhyYW5nZXMuc2hpZnQoKTtcclxuICAgICAgICAgIHhtYXhSYW5nZSA9IHhyYW5nZXMucG9wKCk7XHJcbiAgICAgICAgICB2YWx1ZSA9IGl0ZW1bMV07XHJcbiAgICAgICAgICBwb2ludC54ID0gb3B0cy5hcmVhWzNdICsgdmFsaWRXaWR0aCAqIChpdGVtWzBdIC0geG1pblJhbmdlKSAvICh4bWF4UmFuZ2UgLSB4bWluUmFuZ2UpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHBvaW50LnggKz0gZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICB2YXIgaGVpZ2h0ID0gdmFsaWRIZWlnaHQgKiAodmFsdWUgKiBwcm9jZXNzIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICBwb2ludC55ID0gb3B0cy5oZWlnaHQgLSBoZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgIHBvaW50cy5wdXNoKHBvaW50KTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gcG9pbnRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRNb3VudERhdGFQb2ludHMoc2VyaWVzLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgbW91bnRPcHRpb24sIHplcm9Qb2ludHMpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA4ICYmIGFyZ3VtZW50c1s4XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzhdIDogMTtcclxuICB2YXIgcG9pbnRzID0gW107XHJcbiAgdmFyIHZhbGlkSGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgdmFyIHZhbGlkV2lkdGggPSBvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdO1xyXG4gIHZhciBtb3VudFdpZHRoID0gZWFjaFNwYWNpbmcgKiBtb3VudE9wdGlvbi53aWR0aFJhdGlvO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICBpZiAoaXRlbSA9PT0gbnVsbCkge1xyXG4gICAgICBwb2ludHMucHVzaChudWxsKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBwb2ludCA9IHt9O1xyXG4gICAgICBwb2ludC5jb2xvciA9IGl0ZW0uY29sb3I7XHJcbiAgICAgIHBvaW50LnggPSB4QXhpc1BvaW50c1tpbmRleF07XHJcbiAgICAgIHBvaW50LnggKz0gZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICB2YXIgdmFsdWUgPSBpdGVtLmRhdGE7XHJcbiAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAqIHByb2Nlc3MgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgIHBvaW50LnkgPSBvcHRzLmhlaWdodCAtIGhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgcG9pbnQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgcG9pbnQud2lkdGggPSBtb3VudFdpZHRoO1xyXG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0QmFyRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnKSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNyAmJiBhcmd1bWVudHNbN10gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s3XSA6IDE7XHJcbiAgdmFyIHBvaW50cyA9IFtdO1xyXG4gIHZhciB2YWxpZEhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIHZhciB2YWxpZFdpZHRoID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueSA9IHlBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgdmFyIHZhbHVlID0gaXRlbTtcclxuICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBoZWlnaHQgPSB2YWxpZFdpZHRoICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgcG9pbnQuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICBwb2ludC52YWx1ZSA9IHZhbHVlO1xyXG4gICAgICBwb2ludC54ID0gaGVpZ2h0ICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgICBwb2ludHMucHVzaChwb2ludCk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0U3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzdGFja1Nlcmllcykge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDkgJiYgYXJndW1lbnRzWzldICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbOV0gOiAxO1xyXG4gIHZhciBwb2ludHMgPSBbXTtcclxuICB2YXIgdmFsaWRIZWlnaHQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueCA9IHhBeGlzUG9pbnRzW2luZGV4XSArIE1hdGgucm91bmQoZWFjaFNwYWNpbmcgLyAyKTtcclxuXHJcbiAgICAgIGlmIChzZXJpZXNJbmRleCA+IDApIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSAwO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IHNlcmllc0luZGV4OyBpKyspIHtcclxuICAgICAgICAgIHZhbHVlICs9IHN0YWNrU2VyaWVzW2ldLmRhdGFbaW5kZXhdO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgdmFsdWUwID0gdmFsdWUgLSBpdGVtO1xyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICB2YXIgaGVpZ2h0MCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlMCAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICB2YXIgdmFsdWUgPSBpdGVtO1xyXG4gICAgICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcgJiYgaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG4gICAgICAgIH1cclxuICAgICAgICB2YXIgaGVpZ2h0ID0gdmFsaWRIZWlnaHQgKiAodmFsdWUgLSBtaW5SYW5nZSkgLyAobWF4UmFuZ2UgLSBtaW5SYW5nZSk7XHJcbiAgICAgICAgdmFyIGhlaWdodDAgPSAwO1xyXG4gICAgICB9XHJcbiAgICAgIHZhciBoZWlnaHRjID0gaGVpZ2h0MDtcclxuICAgICAgaGVpZ2h0ICo9IHByb2Nlc3M7XHJcbiAgICAgIGhlaWdodGMgKj0gcHJvY2VzcztcclxuICAgICAgcG9pbnQueSA9IG9wdHMuaGVpZ2h0IC0gTWF0aC5yb3VuZChoZWlnaHQpIC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICBwb2ludC55MCA9IG9wdHMuaGVpZ2h0IC0gTWF0aC5yb3VuZChoZWlnaHRjKSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgcG9pbnRzLnB1c2gocG9pbnQpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIHJldHVybiBwb2ludHM7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGdldEJhclN0YWNrRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBzZXJpZXNJbmRleCwgc3RhY2tTZXJpZXMpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA5ICYmIGFyZ3VtZW50c1s5XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzldIDogMTtcclxuICB2YXIgcG9pbnRzID0gW107XHJcbiAgdmFyIHZhbGlkSGVpZ2h0ID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXTtcclxuICBkYXRhLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGlmIChpdGVtID09PSBudWxsKSB7XHJcbiAgICAgIHBvaW50cy5wdXNoKG51bGwpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdmFyIHBvaW50ID0ge307XHJcbiAgICAgIHBvaW50LmNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgICAgcG9pbnQueSA9IHlBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgaWYgKHNlcmllc0luZGV4ID4gMCkge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IDA7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0gc2VyaWVzSW5kZXg7IGkrKykge1xyXG4gICAgICAgICAgdmFsdWUgKz0gc3RhY2tTZXJpZXNbaV0uZGF0YVtpbmRleF07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciB2YWx1ZTAgPSB2YWx1ZSAtIGl0ZW07XHJcbiAgICAgICAgdmFyIGhlaWdodCA9IHZhbGlkSGVpZ2h0ICogKHZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICAgIHZhciBoZWlnaHQwID0gdmFsaWRIZWlnaHQgKiAodmFsdWUwIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHZhciB2YWx1ZSA9IGl0ZW07XHJcbiAgICAgICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBoZWlnaHQgPSB2YWxpZEhlaWdodCAqICh2YWx1ZSAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgICAgICB2YXIgaGVpZ2h0MCA9IDA7XHJcbiAgICAgIH1cclxuICAgICAgdmFyIGhlaWdodGMgPSBoZWlnaHQwO1xyXG4gICAgICBoZWlnaHQgKj0gcHJvY2VzcztcclxuICAgICAgaGVpZ2h0YyAqPSBwcm9jZXNzO1xyXG4gICAgICBwb2ludC5oZWlnaHQgPSBoZWlnaHQgLSBoZWlnaHRjO1xyXG4gICAgICBwb2ludC54ID0gb3B0cy5hcmVhWzNdICsgaGVpZ2h0O1xyXG4gICAgICBwb2ludC54MCA9IG9wdHMuYXJlYVszXSArIGhlaWdodGM7XHJcbiAgICAgIHBvaW50cy5wdXNoKHBvaW50KTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gcG9pbnRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBnZXRZQXhpc1RleHRMaXN0KHNlcmllcywgb3B0cywgY29uZmlnLCBzdGFjaywgeURhdGEpIHtcclxuICB2YXIgaW5kZXggPSBhcmd1bWVudHMubGVuZ3RoID4gNSAmJiBhcmd1bWVudHNbNV0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s1XSA6IC0xO1xyXG4gIHZhciBkYXRhO1xyXG4gIGlmIChzdGFjayA9PSAnc3RhY2snKSB7XHJcbiAgICBkYXRhID0gZGF0YUNvbWJpbmVTdGFjayhzZXJpZXMsIG9wdHMuY2F0ZWdvcmllcy5sZW5ndGgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBkYXRhID0gZGF0YUNvbWJpbmUoc2VyaWVzKTtcclxuICB9XHJcbiAgdmFyIHNvcnRlZCA9IFtdO1xyXG4gIC8vIHJlbW92ZSBudWxsIGZyb20gZGF0YVxyXG4gIGRhdGEgPSBkYXRhLmZpbHRlcihmdW5jdGlvbihpdGVtKSB7XHJcbiAgICAvL3JldHVybiBpdGVtICE9PSBudWxsO1xyXG4gICAgaWYgKHR5cGVvZiBpdGVtID09PSAnb2JqZWN0JyAmJiBpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgIGlmIChpdGVtLmNvbnN0cnVjdG9yLnRvU3RyaW5nKCkuaW5kZXhPZignQXJyYXknKSA+IC0xKSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0gIT09IG51bGw7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgcmV0dXJuIGl0ZW0udmFsdWUgIT09IG51bGw7XHJcbiAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiBpdGVtICE9PSBudWxsO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGRhdGEubWFwKGZ1bmN0aW9uKGl0ZW0pIHtcclxuICAgIGlmICh0eXBlb2YgaXRlbSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgaWYgKGl0ZW0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpID4gLTEpIHtcclxuICAgICAgICBpZiAob3B0cy50eXBlID09ICdjYW5kbGUnKSB7XHJcbiAgICAgICAgICBpdGVtLm1hcChmdW5jdGlvbihzdWJpdGVtKSB7XHJcbiAgICAgICAgICAgIHNvcnRlZC5wdXNoKHN1Yml0ZW0pO1xyXG4gICAgICAgICAgfSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc29ydGVkLnB1c2goaXRlbVsxXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHNvcnRlZC5wdXNoKGl0ZW0udmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICBzb3J0ZWQucHVzaChpdGVtKTtcclxuICAgIH1cclxuICB9KVxyXG4gIHZhciBtaW5EYXRhID0geURhdGEubWluIHx8IDA7XHJcbiAgdmFyIG1heERhdGEgPSB5RGF0YS5tYXggfHwgMDtcclxuICBpZiAoc29ydGVkLmxlbmd0aCA+IDApIHtcclxuICAgIG1pbkRhdGEgPSBNYXRoLm1pbi5hcHBseSh0aGlzLCBzb3J0ZWQpO1xyXG4gICAgbWF4RGF0YSA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIHNvcnRlZCk7XHJcbiAgfVxyXG4gIGlmIChtaW5EYXRhID09PSBtYXhEYXRhKSB7XHJcbiAgICBpZihtYXhEYXRhID09IDApe1xyXG4gICAgICBtYXhEYXRhID0gMTA7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgbWluRGF0YSA9IDA7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHZhciBkYXRhUmFuZ2UgPSBnZXREYXRhUmFuZ2UobWluRGF0YSwgbWF4RGF0YSk7XHJcbiAgdmFyIG1pblJhbmdlID0gKHlEYXRhLm1pbiA9PT0gdW5kZWZpbmVkIHx8IHlEYXRhLm1pbiA9PT0gbnVsbCkgPyBkYXRhUmFuZ2UubWluUmFuZ2UgOiB5RGF0YS5taW47XHJcbiAgdmFyIG1heFJhbmdlID0gKHlEYXRhLm1heCA9PT0gdW5kZWZpbmVkIHx8IHlEYXRhLm1heCA9PT0gbnVsbCkgPyBkYXRhUmFuZ2UubWF4UmFuZ2UgOiB5RGF0YS5tYXg7XHJcbiAgdmFyIGVhY2hSYW5nZSA9IChtYXhSYW5nZSAtIG1pblJhbmdlKSAvIG9wdHMueUF4aXMuc3BsaXROdW1iZXI7XHJcbiAgdmFyIHJhbmdlID0gW107XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPD0gb3B0cy55QXhpcy5zcGxpdE51bWJlcjsgaSsrKSB7XHJcbiAgICByYW5nZS5wdXNoKG1pblJhbmdlICsgZWFjaFJhbmdlICogaSk7XHJcbiAgfVxyXG4gIHJldHVybiByYW5nZS5yZXZlcnNlKCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbFlBeGlzRGF0YShzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIC8v5aCG5Y+g5Zu+6YeN566XWei9tFxyXG4gIHZhciBjb2x1bW5zdHlsZSA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogXCJcIlxyXG4gIH0sIG9wdHMuZXh0cmEuY29sdW1uKTtcclxuICAvL+WmguaenOaYr+WkmlnovbTvvIzph43mlrDorqHnrpdcclxuICB2YXIgWUxlbmd0aCA9IG9wdHMueUF4aXMuZGF0YS5sZW5ndGg7XHJcbiAgdmFyIG5ld1NlcmllcyA9IG5ldyBBcnJheShZTGVuZ3RoKTtcclxuICBpZiAoWUxlbmd0aCA+IDApIHtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgWUxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIG5ld1Nlcmllc1tpXSA9IFtdO1xyXG4gICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHNlcmllcy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgIGlmIChzZXJpZXNbal0uaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgbmV3U2VyaWVzW2ldLnB1c2goc2VyaWVzW2pdKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHZhciByYW5nZXNBcnIgPSBuZXcgQXJyYXkoWUxlbmd0aCk7XHJcbiAgICB2YXIgcmFuZ2VzRm9ybWF0QXJyID0gbmV3IEFycmF5KFlMZW5ndGgpO1xyXG4gICAgdmFyIHlBeGlzV2lkdGhBcnIgPSBuZXcgQXJyYXkoWUxlbmd0aCk7XHJcblxyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBZTGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHlEYXRhID0gb3B0cy55QXhpcy5kYXRhW2ldO1xyXG4gICAgICAvL+WmguaenOaAu+W8gOWFs+S4jeaYvuekuu+8jOW8uuWItuavj+S4qlnovbTkuLrkuI3mmL7npLpcclxuICAgICAgaWYgKG9wdHMueUF4aXMuZGlzYWJsZWQgPT0gdHJ1ZSkge1xyXG4gICAgICAgIHlEYXRhLmRpc2FibGVkID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgICBpZih5RGF0YS50eXBlID09PSAnY2F0ZWdvcmllcycpe1xyXG4gICAgICAgIGlmKCF5RGF0YS5mb3JtYXR0ZXIpe1xyXG4gICAgICAgICAgeURhdGEuZm9ybWF0dGVyID0gKHZhbCxpbmRleCxvcHRzKSA9PiB7cmV0dXJuIHZhbCArICh5RGF0YS51bml0IHx8ICcnKX07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHlEYXRhLmNhdGVnb3JpZXMgPSB5RGF0YS5jYXRlZ29yaWVzIHx8IG9wdHMuY2F0ZWdvcmllcztcclxuICAgICAgICByYW5nZXNBcnJbaV0gPSB5RGF0YS5jYXRlZ29yaWVzO1xyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBpZigheURhdGEuZm9ybWF0dGVyKXtcclxuICAgICAgICAgIHlEYXRhLmZvcm1hdHRlciA9ICh2YWwsaW5kZXgsb3B0cykgPT4ge3JldHVybiB1dGlsLnRvRml4ZWQodmFsLCB5RGF0YS50b2ZpeCB8fCAwKSArICh5RGF0YS51bml0IHx8ICcnKX07XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJhbmdlc0FycltpXSA9IGdldFlBeGlzVGV4dExpc3QobmV3U2VyaWVzW2ldLCBvcHRzLCBjb25maWcsIGNvbHVtbnN0eWxlLnR5cGUsIHlEYXRhLCBpKTtcclxuICAgICAgfVxyXG4gICAgICBsZXQgeUF4aXNGb250U2l6ZXMgPSB5RGF0YS5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgeUF4aXNXaWR0aEFycltpXSA9IHtcclxuICAgICAgICBwb3NpdGlvbjogeURhdGEucG9zaXRpb24gPyB5RGF0YS5wb3NpdGlvbiA6ICdsZWZ0JyxcclxuICAgICAgICB3aWR0aDogMFxyXG4gICAgICB9O1xyXG4gICAgICByYW5nZXNGb3JtYXRBcnJbaV0gPSByYW5nZXNBcnJbaV0ubWFwKGZ1bmN0aW9uKGl0ZW1zLGluZGV4KSB7XHJcbiAgICAgICAgaXRlbXMgPSB5RGF0YS5mb3JtYXR0ZXIoaXRlbXMsaW5kZXgsb3B0cyk7XHJcbiAgICAgICAgeUF4aXNXaWR0aEFycltpXS53aWR0aCA9IE1hdGgubWF4KHlBeGlzV2lkdGhBcnJbaV0ud2lkdGgsIG1lYXN1cmVUZXh0KGl0ZW1zLCB5QXhpc0ZvbnRTaXplcywgY29udGV4dCkgKyA1KTtcclxuICAgICAgICByZXR1cm4gaXRlbXM7XHJcbiAgICAgIH0pO1xyXG4gICAgICBsZXQgY2FsaWJyYXRpb24gPSB5RGF0YS5jYWxpYnJhdGlvbiA/IDQgKiBvcHRzLnBpeCA6IDA7XHJcbiAgICAgIHlBeGlzV2lkdGhBcnJbaV0ud2lkdGggKz0gY2FsaWJyYXRpb24gKyAzICogb3B0cy5waXg7XHJcbiAgICAgIGlmICh5RGF0YS5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xyXG4gICAgICAgIHlBeGlzV2lkdGhBcnJbaV0ud2lkdGggPSAwO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIHZhciByYW5nZXNBcnIgPSBuZXcgQXJyYXkoMSk7XHJcbiAgICB2YXIgcmFuZ2VzRm9ybWF0QXJyID0gbmV3IEFycmF5KDEpO1xyXG4gICAgdmFyIHlBeGlzV2lkdGhBcnIgPSBuZXcgQXJyYXkoMSk7XHJcbiAgICBpZihvcHRzLnR5cGUgPT09ICdiYXInKXtcclxuICAgICAgcmFuZ2VzQXJyWzBdID0gb3B0cy5jYXRlZ29yaWVzO1xyXG4gICAgICBpZighb3B0cy55QXhpcy5mb3JtYXR0ZXIpe1xyXG4gICAgICAgIG9wdHMueUF4aXMuZm9ybWF0dGVyID0gKHZhbCxpbmRleCxvcHRzKSA9PiB7cmV0dXJuIHZhbCArIChvcHRzLnlBeGlzLnVuaXQgfHwgJycpfVxyXG4gICAgICB9XHJcbiAgICB9ZWxzZXtcclxuICAgICAgaWYoIW9wdHMueUF4aXMuZm9ybWF0dGVyKXtcclxuICAgICAgICBvcHRzLnlBeGlzLmZvcm1hdHRlciA9ICh2YWwsaW5kZXgsb3B0cykgPT4ge3JldHVybiB2YWwudG9GaXhlZChvcHRzLnlBeGlzLnRvZml4ICkgKyAob3B0cy55QXhpcy51bml0IHx8ICcnKX1cclxuICAgICAgfVxyXG4gICAgICByYW5nZXNBcnJbMF0gPSBnZXRZQXhpc1RleHRMaXN0KHNlcmllcywgb3B0cywgY29uZmlnLCBjb2x1bW5zdHlsZS50eXBlLCB7fSk7XHJcbiAgICB9XHJcbiAgICB5QXhpc1dpZHRoQXJyWzBdID0ge1xyXG4gICAgICBwb3NpdGlvbjogJ2xlZnQnLFxyXG4gICAgICB3aWR0aDogMFxyXG4gICAgfTtcclxuICAgIHZhciB5QXhpc0ZvbnRTaXplID0gb3B0cy55QXhpcy5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgIHJhbmdlc0Zvcm1hdEFyclswXSA9IHJhbmdlc0FyclswXS5tYXAoZnVuY3Rpb24oaXRlbSxpbmRleCkge1xyXG4gICAgICBpdGVtID0gb3B0cy55QXhpcy5mb3JtYXR0ZXIoaXRlbSxpbmRleCxvcHRzKTtcclxuICAgICAgeUF4aXNXaWR0aEFyclswXS53aWR0aCA9IE1hdGgubWF4KHlBeGlzV2lkdGhBcnJbMF0ud2lkdGgsIG1lYXN1cmVUZXh0KGl0ZW0sIHlBeGlzRm9udFNpemUsIGNvbnRleHQpICsgNSk7XHJcbiAgICAgIHJldHVybiBpdGVtO1xyXG4gICAgfSk7XHJcbiAgICB5QXhpc1dpZHRoQXJyWzBdLndpZHRoICs9IDMgKiBvcHRzLnBpeDtcclxuICAgIGlmIChvcHRzLnlBeGlzLmRpc2FibGVkID09PSB0cnVlKSB7XHJcbiAgICAgIHlBeGlzV2lkdGhBcnJbMF0gPSB7XHJcbiAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcclxuICAgICAgICB3aWR0aDogMFxyXG4gICAgICB9O1xyXG4gICAgICBvcHRzLnlBeGlzLmRhdGFbMF0gPSB7XHJcbiAgICAgICAgZGlzYWJsZWQ6IHRydWVcclxuICAgICAgfTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9wdHMueUF4aXMuZGF0YVswXSA9IHtcclxuICAgICAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICAgICAgcG9zaXRpb246ICdsZWZ0JyxcclxuICAgICAgICBtYXg6IG9wdHMueUF4aXMubWF4LFxyXG4gICAgICAgIG1pbjogb3B0cy55QXhpcy5taW4sXHJcbiAgICAgICAgZm9ybWF0dGVyOiBvcHRzLnlBeGlzLmZvcm1hdHRlclxyXG4gICAgICB9O1xyXG4gICAgICBpZihvcHRzLnR5cGUgPT09ICdiYXInKXtcclxuICAgICAgICBvcHRzLnlBeGlzLmRhdGFbMF0uY2F0ZWdvcmllcyA9IG9wdHMuY2F0ZWdvcmllcztcclxuICAgICAgICBvcHRzLnlBeGlzLmRhdGFbMF0udHlwZSA9ICdjYXRlZ29yaWVzJztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgcmFuZ2VzRm9ybWF0OiByYW5nZXNGb3JtYXRBcnIsXHJcbiAgICByYW5nZXM6IHJhbmdlc0FycixcclxuICAgIHlBeGlzV2lkdGg6IHlBeGlzV2lkdGhBcnJcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxUb29sdGlwWUF4aXNEYXRhKHBvaW50LCBzZXJpZXMsIG9wdHMsIGNvbmZpZywgZWFjaFNwYWNpbmcpIHtcclxuICBsZXQgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXMpO1xyXG4gIGxldCBzcGFjaW5nVmFsaWQgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXTtcclxuICBsZXQgbWluQXhpcyA9IG9wdHMuYXJlYVswXTtcclxuICBsZXQgaXRlbXMgPSBbXTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHJhbmdlcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IG1heFZhbCA9IE1hdGgubWF4LmFwcGx5KHRoaXMsIHJhbmdlc1tpXSk7XHJcbiAgICBsZXQgbWluVmFsID0gTWF0aC5taW4uYXBwbHkodGhpcywgcmFuZ2VzW2ldKTtcclxuICAgIGxldCBpdGVtID0gbWF4VmFsIC0gKG1heFZhbCAtIG1pblZhbCkgKiAocG9pbnQgLSBtaW5BeGlzKSAvIHNwYWNpbmdWYWxpZDtcclxuICAgIGl0ZW0gPSBvcHRzLnlBeGlzLmRhdGEgJiYgb3B0cy55QXhpcy5kYXRhW2ldLmZvcm1hdHRlciA/IG9wdHMueUF4aXMuZGF0YVtpXS5mb3JtYXR0ZXIoaXRlbSwgaSwgb3B0cykgOiBpdGVtLnRvRml4ZWQoMCk7XHJcbiAgICBpdGVtcy5wdXNoKFN0cmluZyhpdGVtKSlcclxuICB9XHJcbiAgcmV0dXJuIGl0ZW1zO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxNYXJrTGluZURhdGEocG9pbnRzLCBvcHRzKSB7XHJcbiAgbGV0IG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICBsZXQgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgIHBvaW50c1tpXS55QXhpc0luZGV4ID0gcG9pbnRzW2ldLnlBeGlzSW5kZXggPyBwb2ludHNbaV0ueUF4aXNJbmRleCA6IDA7XHJcbiAgICBsZXQgcmFuZ2UgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1twb2ludHNbaV0ueUF4aXNJbmRleF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZS5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2Uuc2hpZnQoKTtcclxuICAgIGxldCBoZWlnaHQgPSBzcGFjaW5nVmFsaWQgKiAocG9pbnRzW2ldLnZhbHVlIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgcG9pbnRzW2ldLnkgPSBvcHRzLmhlaWdodCAtIE1hdGgucm91bmQoaGVpZ2h0KSAtIG9wdHMuYXJlYVsyXTtcclxuICB9XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKSB7XHJcbiAgaWYgKG9wdHMucm90YXRlTG9jayAhPT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5oZWlnaHQsIDApO1xyXG4gICAgY29udGV4dC5yb3RhdGUoOTAgKiBNYXRoLlBJIC8gMTgwKTtcclxuICB9IGVsc2UgaWYgKG9wdHMuX3JvdGF0ZV8gIT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuaGVpZ2h0LCAwKTtcclxuICAgIGNvbnRleHQucm90YXRlKDkwICogTWF0aC5QSSAvIDE4MCk7XHJcbiAgICBvcHRzLl9yb3RhdGVfID0gdHJ1ZTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdQb2ludFNoYXBlKHBvaW50cywgY29sb3IsIHNoYXBlLCBjb250ZXh0LCBvcHRzKSB7XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBpZiAob3B0cy5kYXRhUG9pbnRTaGFwZVR5cGUgPT0gJ2hvbGxvdycpIHtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUob3B0cy5iYWNrZ3JvdW5kKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDIgKiBvcHRzLnBpeCk7XHJcbiAgfSBlbHNlIHtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoXCIjZmZmZmZmXCIpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICB9XHJcbiAgaWYgKHNoYXBlID09PSAnZGlhbW9uZCcpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIDQuNSwgaXRlbS55KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54ICsgNC41LCBpdGVtLnkpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55IC0gNC41KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ2NpcmNsZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54ICsgMi41ICogb3B0cy5waXgsIGl0ZW0ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIDMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3NxdWFyZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gMy41LCBpdGVtLnkgLSAzLjUpO1xyXG4gICAgICAgIGNvbnRleHQucmVjdChpdGVtLnggLSAzLjUsIGl0ZW0ueSAtIDMuNSwgNywgNyk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZWxzZSBpZiAoc2hhcGUgPT09ICd0cmlhbmdsZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIDQuNSwgaXRlbS55ICsgNC41KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkgLSA0LjUpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9IGVsc2UgaWYgKHNoYXBlID09PSAnbm9uZScpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QWN0aXZlUG9pbnQocG9pbnRzLCBjb2xvciwgc2hhcGUsIGNvbnRleHQsIG9wdHMsIG9wdGlvbiwgc2VyaWVzSW5kZXgpIHtcclxuICBpZighb3B0cy50b29sdGlwKXtcclxuICAgIHJldHVyblxyXG4gIH1cclxuICBpZihvcHRzLnRvb2x0aXAuZ3JvdXAubGVuZ3RoPjAgJiYgb3B0cy50b29sdGlwLmdyb3VwLmluY2x1ZGVzKHNlcmllc0luZGV4KSA9PSBmYWxzZSl7XHJcbiAgICByZXR1cm5cclxuICB9XHJcbiAgdmFyIHBvaW50SW5kZXggPSB0eXBlb2Ygb3B0cy50b29sdGlwLmluZGV4ID09PSAnbnVtYmVyJyA/IG9wdHMudG9vbHRpcC5pbmRleCA6IG9wdHMudG9vbHRpcC5pbmRleFtvcHRzLnRvb2x0aXAuZ3JvdXAuaW5kZXhPZihzZXJpZXNJbmRleCldO1xyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgaWYgKG9wdGlvbi5hY3RpdmVUeXBlID09ICdob2xsb3cnKSB7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKG9wdHMuYmFja2dyb3VuZCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCgyICogb3B0cy5waXgpO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKFwiI2ZmZmZmZlwiKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgfVxyXG4gIGlmIChzaGFwZSA9PT0gJ2RpYW1vbmQnKSB7XHJcbiAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBwb2ludEluZGV4ID09IGluZGV4ICkge1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55IC0gNC41KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkgKyA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCArIDQuNSwgaXRlbS55KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH0gZWxzZSBpZiAoc2hhcGUgPT09ICdjaXJjbGUnKSB7XHJcbiAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBwb2ludEluZGV4ID09IGluZGV4KSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54ICsgMi41ICogb3B0cy5waXgsIGl0ZW0ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIDMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3NxdWFyZScpIHtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIHBvaW50SW5kZXggPT0gaW5kZXgpIHtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLnggLSAzLjUsIGl0ZW0ueSAtIDMuNSk7XHJcbiAgICAgICAgY29udGV4dC5yZWN0KGl0ZW0ueCAtIDMuNSwgaXRlbS55IC0gMy41LCA3LCA3KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3RyaWFuZ2xlJykge1xyXG4gICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgcG9pbnRJbmRleCA9PSBpbmRleCkge1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55IC0gNC41KTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54ICsgNC41LCBpdGVtLnkgKyA0LjUpO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55IC0gNC41KTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ25vbmUnKSB7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgY29udGV4dC5maWxsKCk7XHJcbiAgY29udGV4dC5zdHJva2UoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1JpbmdUaXRsZShvcHRzLCBjb25maWcsIGNvbnRleHQsIGNlbnRlcikge1xyXG4gIHZhciB0aXRsZWZvbnRTaXplID0gb3B0cy50aXRsZS5mb250U2l6ZSB8fCBjb25maWcudGl0bGVGb250U2l6ZTtcclxuICB2YXIgc3VidGl0bGVmb250U2l6ZSA9IG9wdHMuc3VidGl0bGUuZm9udFNpemUgfHwgY29uZmlnLnN1YnRpdGxlRm9udFNpemU7XHJcbiAgdmFyIHRpdGxlID0gb3B0cy50aXRsZS5uYW1lIHx8ICcnO1xyXG4gIHZhciBzdWJ0aXRsZSA9IG9wdHMuc3VidGl0bGUubmFtZSB8fCAnJztcclxuICB2YXIgdGl0bGVGb250Q29sb3IgPSBvcHRzLnRpdGxlLmNvbG9yIHx8IG9wdHMuZm9udENvbG9yO1xyXG4gIHZhciBzdWJ0aXRsZUZvbnRDb2xvciA9IG9wdHMuc3VidGl0bGUuY29sb3IgfHwgb3B0cy5mb250Q29sb3I7XHJcbiAgdmFyIHRpdGxlSGVpZ2h0ID0gdGl0bGUgPyB0aXRsZWZvbnRTaXplIDogMDtcclxuICB2YXIgc3VidGl0bGVIZWlnaHQgPSBzdWJ0aXRsZSA/IHN1YnRpdGxlZm9udFNpemUgOiAwO1xyXG4gIHZhciBtYXJnaW4gPSA1O1xyXG4gIGlmIChzdWJ0aXRsZSkge1xyXG4gICAgdmFyIHRleHRXaWR0aCA9IG1lYXN1cmVUZXh0KHN1YnRpdGxlLCBzdWJ0aXRsZWZvbnRTaXplICogb3B0cy5waXgsIGNvbnRleHQpO1xyXG4gICAgdmFyIHN0YXJ0WCA9IGNlbnRlci54IC0gdGV4dFdpZHRoIC8gMiArIChvcHRzLnN1YnRpdGxlLm9mZnNldFh8fCAwKSAqIG9wdHMucGl4IDtcclxuICAgIHZhciBzdGFydFkgPSBjZW50ZXIueSArIHN1YnRpdGxlZm9udFNpemUgKiBvcHRzLnBpeCAvIDIgKyAob3B0cy5zdWJ0aXRsZS5vZmZzZXRZIHx8IDApICogb3B0cy5waXg7XHJcbiAgICBpZiAodGl0bGUpIHtcclxuICAgICAgc3RhcnRZICs9ICh0aXRsZUhlaWdodCAqIG9wdHMucGl4ICsgbWFyZ2luKSAvIDI7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShzdWJ0aXRsZWZvbnRTaXplICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoc3VidGl0bGVGb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dChzdWJ0aXRsZSwgc3RhcnRYLCBzdGFydFkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG4gIGlmICh0aXRsZSkge1xyXG4gICAgdmFyIF90ZXh0V2lkdGggPSBtZWFzdXJlVGV4dCh0aXRsZSwgdGl0bGVmb250U2l6ZSAqIG9wdHMucGl4LCBjb250ZXh0KTtcclxuICAgIHZhciBfc3RhcnRYID0gY2VudGVyLnggLSBfdGV4dFdpZHRoIC8gMiArIChvcHRzLnRpdGxlLm9mZnNldFggfHwgMCk7XHJcbiAgICB2YXIgX3N0YXJ0WSA9IGNlbnRlci55ICsgdGl0bGVmb250U2l6ZSAqIG9wdHMucGl4IC8gMiArIChvcHRzLnRpdGxlLm9mZnNldFkgfHwgMCkgKiBvcHRzLnBpeDtcclxuICAgIGlmIChzdWJ0aXRsZSkge1xyXG4gICAgICBfc3RhcnRZIC09IChzdWJ0aXRsZUhlaWdodCAqIG9wdHMucGl4ICsgbWFyZ2luKSAvIDI7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZSh0aXRsZWZvbnRTaXplICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUodGl0bGVGb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dCh0aXRsZSwgX3N0YXJ0WCwgX3N0YXJ0WSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdQb2ludFRleHQocG9pbnRzLCBzZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cykge1xyXG4gIC8vIOe7mOWItuaVsOaNruaWh+ahiFxyXG4gIHZhciBkYXRhID0gc2VyaWVzLmRhdGE7XHJcbiAgdmFyIHRleHRPZmZzZXQgPSBzZXJpZXMudGV4dE9mZnNldCA/IHNlcmllcy50ZXh0T2Zmc2V0IDogMDtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gc2VyaWVzLnRleHRTaXplID8gc2VyaWVzLnRleHRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzZXJpZXMudGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgdmFyIHZhbHVlID0gZGF0YVtpbmRleF1cclxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2luZGV4XSA9PT0gJ29iamVjdCcgJiYgZGF0YVtpbmRleF0gIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoZGF0YVtpbmRleF0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpPi0xKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdWzFdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdLnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHZhciBmb3JtYXRWYWwgPSBzZXJpZXMuZm9ybWF0dGVyID8gc2VyaWVzLmZvcm1hdHRlcih2YWx1ZSxpbmRleCxzZXJpZXMsb3B0cykgOiB2YWx1ZTtcclxuICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhmb3JtYXRWYWwpLCBpdGVtLngsIGl0ZW0ueSAtIDQgKyB0ZXh0T2Zmc2V0ICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3Q29sdW1lUG9pbnRUZXh0KHBvaW50cywgc2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpIHtcclxuICAvLyDnu5jliLbmlbDmja7mlofmoYhcclxuICB2YXIgZGF0YSA9IHNlcmllcy5kYXRhO1xyXG4gIHZhciB0ZXh0T2Zmc2V0ID0gc2VyaWVzLnRleHRPZmZzZXQgPyBzZXJpZXMudGV4dE9mZnNldCA6IDA7XHJcbiAgdmFyIFBvc2l0aW9uID0gb3B0cy5leHRyYS5jb2x1bW4ubGFiZWxQb3NpdGlvbjtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gc2VyaWVzLnRleHRTaXplID8gc2VyaWVzLnRleHRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzZXJpZXMudGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgdmFyIHZhbHVlID0gZGF0YVtpbmRleF1cclxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2luZGV4XSA9PT0gJ29iamVjdCcgJiYgZGF0YVtpbmRleF0gIT09IG51bGwpIHtcclxuICAgICAgICBpZiAoZGF0YVtpbmRleF0uY29uc3RydWN0b3IudG9TdHJpbmcoKS5pbmRleE9mKCdBcnJheScpPi0xKSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdWzFdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdLnZhbHVlXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHZhciBmb3JtYXRWYWwgPSBzZXJpZXMuZm9ybWF0dGVyID8gc2VyaWVzLmZvcm1hdHRlcih2YWx1ZSxpbmRleCxzZXJpZXMsb3B0cykgOiB2YWx1ZTtcclxuICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICB2YXIgc3RhcnRZID0gaXRlbS55IC0gNCAqIG9wdHMucGl4ICsgdGV4dE9mZnNldCAqIG9wdHMucGl4O1xyXG4gICAgICBpZihpdGVtLnkgPiBzZXJpZXMuemVyb1BvaW50cyl7XHJcbiAgICAgICAgc3RhcnRZID0gaXRlbS55ICsgdGV4dE9mZnNldCAqIG9wdHMucGl4ICsgZm9udFNpemU7XHJcbiAgICAgIH1cclxuICAgICAgaWYoUG9zaXRpb24gPT0gJ2luc2lkZVRvcCcpe1xyXG4gICAgICAgIHN0YXJ0WSA9IGl0ZW0ueSArIGZvbnRTaXplICsgdGV4dE9mZnNldCAqIG9wdHMucGl4O1xyXG4gICAgICAgIGlmKGl0ZW0ueSA+IHNlcmllcy56ZXJvUG9pbnRzKXtcclxuICAgICAgICAgIHN0YXJ0WSA9IGl0ZW0ueSAtIHRleHRPZmZzZXQgKiBvcHRzLnBpeCAtIDQgKiBvcHRzLnBpeDtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYoUG9zaXRpb24gPT0gJ2NlbnRlcicpe1xyXG4gICAgICAgIHN0YXJ0WSA9IGl0ZW0ueSArIHRleHRPZmZzZXQgKiBvcHRzLnBpeCArIChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSAtIGl0ZW0ueSArIGZvbnRTaXplKS8yO1xyXG4gICAgICAgIGlmKHNlcmllcy56ZXJvUG9pbnRzIDwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pe1xyXG4gICAgICAgICAgc3RhcnRZID0gaXRlbS55ICsgdGV4dE9mZnNldCAqIG9wdHMucGl4ICsgKHNlcmllcy56ZXJvUG9pbnRzIC0gaXRlbS55ICsgZm9udFNpemUpLzI7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGl0ZW0ueSA+IHNlcmllcy56ZXJvUG9pbnRzKXtcclxuICAgICAgICAgIHN0YXJ0WSA9IGl0ZW0ueSAtIHRleHRPZmZzZXQgKiBvcHRzLnBpeCAtIChpdGVtLnkgLSBzZXJpZXMuemVyb1BvaW50cyAtIGZvbnRTaXplKS8yO1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZihvcHRzLmV4dHJhLmNvbHVtbi50eXBlID09ICdzdGFjaycpe1xyXG4gICAgICAgICAgc3RhcnRZID0gaXRlbS55ICsgdGV4dE9mZnNldCAqIG9wdHMucGl4ICsgKGl0ZW0ueTAgLSBpdGVtLnkgKyBmb250U2l6ZSkvMjtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYoUG9zaXRpb24gPT0gJ2JvdHRvbScpe1xyXG4gICAgICAgIHN0YXJ0WSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdICsgdGV4dE9mZnNldCAqIG9wdHMucGl4IC0gNCAqIG9wdHMucGl4O1xyXG4gICAgICAgIGlmKHNlcmllcy56ZXJvUG9pbnRzIDwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pe1xyXG4gICAgICAgICAgc3RhcnRZID0gc2VyaWVzLnplcm9Qb2ludHMgKyB0ZXh0T2Zmc2V0ICogb3B0cy5waXggLSA0ICogb3B0cy5waXg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKGl0ZW0ueSA+IHNlcmllcy56ZXJvUG9pbnRzKXtcclxuICAgICAgICAgIHN0YXJ0WSA9IHNlcmllcy56ZXJvUG9pbnRzIC0gdGV4dE9mZnNldCAqIG9wdHMucGl4ICsgZm9udFNpemUgKyAyICogb3B0cy5waXg7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmKG9wdHMuZXh0cmEuY29sdW1uLnR5cGUgPT0gJ3N0YWNrJyl7XHJcbiAgICAgICAgICBzdGFydFkgPSBpdGVtLnkwICsgdGV4dE9mZnNldCAqIG9wdHMucGl4IC0gNCAqIG9wdHMucGl4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhmb3JtYXRWYWwpLCBpdGVtLngsIHN0YXJ0WSk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdNb3VudFBvaW50VGV4dChwb2ludHMsIHNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzLCB6ZXJvUG9pbnRzKSB7XHJcbiAgLy8g57uY5Yi25pWw5o2u5paH5qGIXHJcbiAgdmFyIGRhdGEgPSBzZXJpZXMuZGF0YTtcclxuICB2YXIgdGV4dE9mZnNldCA9IHNlcmllcy50ZXh0T2Zmc2V0ID8gc2VyaWVzLnRleHRPZmZzZXQgOiAwO1xyXG4gIHZhciBQb3NpdGlvbiA9IG9wdHMuZXh0cmEubW91bnQubGFiZWxQb3NpdGlvbjtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gc2VyaWVzW2luZGV4XS50ZXh0U2l6ZSA/IHNlcmllc1tpbmRleF0udGV4dFNpemUgKiBvcHRzLnBpeCA6IGNvbmZpZy5mb250U2l6ZTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHNlcmllc1tpbmRleF0udGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgdmFyIHZhbHVlID0gaXRlbS52YWx1ZVxyXG4gICAgICB2YXIgZm9ybWF0VmFsID0gc2VyaWVzW2luZGV4XS5mb3JtYXR0ZXIgPyBzZXJpZXNbaW5kZXhdLmZvcm1hdHRlcih2YWx1ZSxpbmRleCxzZXJpZXMsb3B0cykgOiB2YWx1ZTtcclxuICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICB2YXIgc3RhcnRZID0gaXRlbS55IC0gNCAqIG9wdHMucGl4ICsgdGV4dE9mZnNldCAqIG9wdHMucGl4O1xyXG4gICAgICBpZihpdGVtLnkgPiB6ZXJvUG9pbnRzKXtcclxuICAgICAgICBzdGFydFkgPSBpdGVtLnkgKyB0ZXh0T2Zmc2V0ICogb3B0cy5waXggKyBmb250U2l6ZTtcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhmb3JtYXRWYWwpLCBpdGVtLngsIHN0YXJ0WSk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdCYXJQb2ludFRleHQocG9pbnRzLCBzZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cykge1xyXG4gIC8vIOe7mOWItuaVsOaNruaWh+ahiFxyXG4gIHZhciBkYXRhID0gc2VyaWVzLmRhdGE7XHJcbiAgdmFyIHRleHRPZmZzZXQgPSBzZXJpZXMudGV4dE9mZnNldCA/IHNlcmllcy50ZXh0T2Zmc2V0IDogMDtcclxuICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgdmFyIGZvbnRTaXplID0gc2VyaWVzLnRleHRTaXplID8gc2VyaWVzLnRleHRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShzZXJpZXMudGV4dENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgdmFyIHZhbHVlID0gZGF0YVtpbmRleF1cclxuICAgICAgaWYgKHR5cGVvZiBkYXRhW2luZGV4XSA9PT0gJ29iamVjdCcgJiYgZGF0YVtpbmRleF0gIT09IG51bGwpIHtcclxuICAgICAgICB2YWx1ZSA9IGRhdGFbaW5kZXhdLnZhbHVlIDtcclxuICAgICAgfVxyXG4gICAgICB2YXIgZm9ybWF0VmFsID0gc2VyaWVzLmZvcm1hdHRlciA/IHNlcmllcy5mb3JtYXR0ZXIodmFsdWUsaW5kZXgsc2VyaWVzLG9wdHMpIDogdmFsdWU7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKGZvcm1hdFZhbCksIGl0ZW0ueCArIDQgKiBvcHRzLnBpeCAsIGl0ZW0ueSArIGZvbnRTaXplIC8gMiAtIDMgKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH1cclxuICB9KTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0dhdWdlTGFiZWwoZ2F1Z2VPcHRpb24sIHJhZGl1cywgY2VudGVyUG9zaXRpb24sIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHJhZGl1cyAtPSBnYXVnZU9wdGlvbi53aWR0aCAvIDIgKyBnYXVnZU9wdGlvbi5sYWJlbE9mZnNldCAqIG9wdHMucGl4O1xyXG4gIHJhZGl1cyA9IHJhZGl1cyA8IDEwID8gMTAgOiByYWRpdXM7XHJcbiAgbGV0IHRvdGFsQW5nbGU7XHJcbiAgaWYgKGdhdWdlT3B0aW9uLmVuZEFuZ2xlIDwgZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSkge1xyXG4gICAgdG90YWxBbmdsZSA9IDIgKyBnYXVnZU9wdGlvbi5lbmRBbmdsZSAtIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGU7XHJcbiAgfSBlbHNlIHtcclxuICAgIHRvdGFsQW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gZ2F1Z2VPcHRpb24uZW5kQW5nbGU7XHJcbiAgfVxyXG4gIGxldCBzcGxpdEFuZ2xlID0gdG90YWxBbmdsZSAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlcjtcclxuICBsZXQgdG90YWxOdW1iZXIgPSBnYXVnZU9wdGlvbi5lbmROdW1iZXIgLSBnYXVnZU9wdGlvbi5zdGFydE51bWJlcjtcclxuICBsZXQgc3BsaXROdW1iZXIgPSB0b3RhbE51bWJlciAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlcjtcclxuICBsZXQgbm93QW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlO1xyXG4gIGxldCBub3dOdW1iZXIgPSBnYXVnZU9wdGlvbi5zdGFydE51bWJlcjtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlciArIDE7IGkrKykge1xyXG4gICAgdmFyIHBvcyA9IHtcclxuICAgICAgeDogcmFkaXVzICogTWF0aC5jb3Mobm93QW5nbGUgKiBNYXRoLlBJKSxcclxuICAgICAgeTogcmFkaXVzICogTWF0aC5zaW4obm93QW5nbGUgKiBNYXRoLlBJKVxyXG4gICAgfTtcclxuICAgIHZhciBsYWJlbFRleHQgPSBnYXVnZU9wdGlvbi5mb3JtYXR0ZXIgPyBnYXVnZU9wdGlvbi5mb3JtYXR0ZXIobm93TnVtYmVyLGksb3B0cykgOiBub3dOdW1iZXI7XHJcbiAgICBwb3MueCArPSBjZW50ZXJQb3NpdGlvbi54IC0gbWVhc3VyZVRleHQobGFiZWxUZXh0LCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpIC8gMjtcclxuICAgIHBvcy55ICs9IGNlbnRlclBvc2l0aW9uLnk7XHJcbiAgICB2YXIgc3RhcnRYID0gcG9zLng7XHJcbiAgICB2YXIgc3RhcnRZID0gcG9zLnk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZ2F1Z2VPcHRpb24ubGFiZWxDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KGxhYmVsVGV4dCwgc3RhcnRYLCBzdGFydFkgKyBjb25maWcuZm9udFNpemUgLyAyKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgbm93QW5nbGUgKz0gc3BsaXRBbmdsZTtcclxuICAgIGlmIChub3dBbmdsZSA+PSAyKSB7XHJcbiAgICAgIG5vd0FuZ2xlID0gbm93QW5nbGUgJSAyO1xyXG4gICAgfVxyXG4gICAgbm93TnVtYmVyICs9IHNwbGl0TnVtYmVyO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1JhZGFyTGFiZWwoYW5nbGVMaXN0LCByYWRpdXMsIGNlbnRlclBvc2l0aW9uLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcmFkYXJPcHRpb24gPSBvcHRzLmV4dHJhLnJhZGFyIHx8IHt9O1xyXG4gIGFuZ2xlTGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGFuZ2xlLCBpbmRleCkge1xyXG4gICAgaWYocmFkYXJPcHRpb24ubGFiZWxQb2ludFNob3cgPT09IHRydWUgJiYgb3B0cy5jYXRlZ29yaWVzW2luZGV4XSAhPT0gJycpe1xyXG4gICAgICB2YXIgcG9zUG9pbnQgPSB7XHJcbiAgICAgICAgeDogcmFkaXVzICogTWF0aC5jb3MoYW5nbGUpLFxyXG4gICAgICAgIHk6IHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlKVxyXG4gICAgICB9O1xyXG4gICAgICB2YXIgcG9zUG9pbnRBeGlzID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4ocG9zUG9pbnQueCwgcG9zUG9pbnQueSwgY2VudGVyUG9zaXRpb24pO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShyYWRhck9wdGlvbi5sYWJlbFBvaW50Q29sb3IpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LmFyYyhwb3NQb2ludEF4aXMueCwgcG9zUG9pbnRBeGlzLnksIHJhZGFyT3B0aW9uLmxhYmVsUG9pbnRSYWRpdXMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICB9XHJcbiAgICBpZihyYWRhck9wdGlvbi5sYWJlbFNob3cgPT09IHRydWUpe1xyXG4gICAgICB2YXIgcG9zID0ge1xyXG4gICAgICAgIHg6IChyYWRpdXMgKyBjb25maWcucmFkYXJMYWJlbFRleHRNYXJnaW4gKiBvcHRzLnBpeCkgKiBNYXRoLmNvcyhhbmdsZSksXHJcbiAgICAgICAgeTogKHJhZGl1cyArIGNvbmZpZy5yYWRhckxhYmVsVGV4dE1hcmdpbiAqIG9wdHMucGl4KSAqIE1hdGguc2luKGFuZ2xlKVxyXG4gICAgICB9O1xyXG4gICAgICB2YXIgcG9zUmVsYXRpdmVDYW52YXMgPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihwb3MueCwgcG9zLnksIGNlbnRlclBvc2l0aW9uKTtcclxuICAgICAgdmFyIHN0YXJ0WCA9IHBvc1JlbGF0aXZlQ2FudmFzLng7XHJcbiAgICAgIHZhciBzdGFydFkgPSBwb3NSZWxhdGl2ZUNhbnZhcy55O1xyXG4gICAgICBpZiAodXRpbC5hcHByb3hpbWF0ZWx5RXF1YWwocG9zLngsIDApKSB7XHJcbiAgICAgICAgc3RhcnRYIC09IG1lYXN1cmVUZXh0KG9wdHMuY2F0ZWdvcmllc1tpbmRleF0gfHwgJycsIGNvbmZpZy5mb250U2l6ZSwgY29udGV4dCkgLyAyO1xyXG4gICAgICB9IGVsc2UgaWYgKHBvcy54IDwgMCkge1xyXG4gICAgICAgIHN0YXJ0WCAtPSBtZWFzdXJlVGV4dChvcHRzLmNhdGVnb3JpZXNbaW5kZXhdIHx8ICcnLCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUocmFkYXJPcHRpb24ubGFiZWxDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQob3B0cy5jYXRlZ29yaWVzW2luZGV4XSB8fCAnJywgc3RhcnRYLCBzdGFydFkgKyBjb25maWcuZm9udFNpemUgLyAyKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH1cclxuICB9KTtcclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdQaWVUZXh0KHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCByYWRpdXMsIGNlbnRlcikge1xyXG4gIHZhciBsaW5lUmFkaXVzID0gY29uZmlnLnBpZUNoYXJ0TGluZVBhZGRpbmc7XHJcbiAgdmFyIHRleHRPYmplY3RDb2xsZWN0aW9uID0gW107XHJcbiAgdmFyIGxhc3RUZXh0T2JqZWN0ID0gbnVsbDtcclxuICB2YXIgc2VyaWVzQ29udmVydCA9IHNlcmllcy5tYXAoZnVuY3Rpb24oaXRlbSxpbmRleCkge1xyXG4gICAgdmFyIHRleHQgPSBpdGVtLmZvcm1hdHRlciA/IGl0ZW0uZm9ybWF0dGVyKGl0ZW0saW5kZXgsc2VyaWVzLG9wdHMpIDogdXRpbC50b0ZpeGVkKGl0ZW0uX3Byb3BvcnRpb25fLnRvRml4ZWQoNCkgKiAxMDApICsgJyUnO1xyXG4gICAgdGV4dCA9IGl0ZW0ubGFiZWxUZXh0ID8gaXRlbS5sYWJlbFRleHQgOiB0ZXh0O1xyXG4gICAgdmFyIGFyYyA9IDIgKiBNYXRoLlBJIC0gKGl0ZW0uX3N0YXJ0XyArIDIgKiBNYXRoLlBJICogaXRlbS5fcHJvcG9ydGlvbl8gLyAyKTtcclxuICAgIGlmIChpdGVtLl9yb3NlX3Byb3BvcnRpb25fKSB7XHJcbiAgICAgIGFyYyA9IDIgKiBNYXRoLlBJIC0gKGl0ZW0uX3N0YXJ0XyArIDIgKiBNYXRoLlBJICogaXRlbS5fcm9zZV9wcm9wb3J0aW9uXyAvIDIpO1xyXG4gICAgfVxyXG4gICAgdmFyIGNvbG9yID0gaXRlbS5jb2xvcjtcclxuICAgIHZhciByYWRpdXMgPSBpdGVtLl9yYWRpdXNfO1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgYXJjOiBhcmMsXHJcbiAgICAgIHRleHQ6IHRleHQsXHJcbiAgICAgIGNvbG9yOiBjb2xvcixcclxuICAgICAgcmFkaXVzOiByYWRpdXMsXHJcbiAgICAgIHRleHRDb2xvcjogaXRlbS50ZXh0Q29sb3IsXHJcbiAgICAgIHRleHRTaXplOiBpdGVtLnRleHRTaXplLFxyXG4gICAgICBsYWJlbFNob3c6IGl0ZW0ubGFiZWxTaG93XHJcbiAgICB9O1xyXG4gIH0pO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzQ29udmVydC5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNDb252ZXJ0W2ldO1xyXG4gICAgLy8gbGluZSBlbmRcclxuICAgIGxldCBvcmdpblgxID0gTWF0aC5jb3MoaXRlbS5hcmMpICogKGl0ZW0ucmFkaXVzICsgbGluZVJhZGl1cyk7XHJcbiAgICBsZXQgb3JnaW5ZMSA9IE1hdGguc2luKGl0ZW0uYXJjKSAqIChpdGVtLnJhZGl1cyArIGxpbmVSYWRpdXMpO1xyXG4gICAgLy8gbGluZSBzdGFydFxyXG4gICAgbGV0IG9yZ2luWDIgPSBNYXRoLmNvcyhpdGVtLmFyYykgKiBpdGVtLnJhZGl1cztcclxuICAgIGxldCBvcmdpblkyID0gTWF0aC5zaW4oaXRlbS5hcmMpICogaXRlbS5yYWRpdXM7XHJcbiAgICAvLyB0ZXh0IHN0YXJ0XHJcbiAgICBsZXQgb3JnaW5YMyA9IG9yZ2luWDEgPj0gMCA/IG9yZ2luWDEgKyBjb25maWcucGllQ2hhcnRUZXh0UGFkZGluZyA6IG9yZ2luWDEgLSBjb25maWcucGllQ2hhcnRUZXh0UGFkZGluZztcclxuICAgIGxldCBvcmdpblkzID0gb3JnaW5ZMTtcclxuICAgIGxldCB0ZXh0V2lkdGggPSBtZWFzdXJlVGV4dChpdGVtLnRleHQsIGl0ZW0udGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemUsIGNvbnRleHQpO1xyXG4gICAgbGV0IHN0YXJ0WSA9IG9yZ2luWTM7XHJcbiAgICBpZiAobGFzdFRleHRPYmplY3QgJiYgdXRpbC5pc1NhbWVYQ29vcmRpbmF0ZUFyZWEobGFzdFRleHRPYmplY3Quc3RhcnQsIHtcclxuICAgICAgICB4OiBvcmdpblgzXHJcbiAgICAgIH0pKSB7XHJcbiAgICAgIGlmIChvcmdpblgzID4gMCkge1xyXG4gICAgICAgIHN0YXJ0WSA9IE1hdGgubWluKG9yZ2luWTMsIGxhc3RUZXh0T2JqZWN0LnN0YXJ0LnkpO1xyXG4gICAgICB9IGVsc2UgaWYgKG9yZ2luWDEgPCAwKSB7XHJcbiAgICAgICAgc3RhcnRZID0gTWF0aC5tYXgob3JnaW5ZMywgbGFzdFRleHRPYmplY3Quc3RhcnQueSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgaWYgKG9yZ2luWTMgPiAwKSB7XHJcbiAgICAgICAgICBzdGFydFkgPSBNYXRoLm1heChvcmdpblkzLCBsYXN0VGV4dE9iamVjdC5zdGFydC55KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgc3RhcnRZID0gTWF0aC5taW4ob3JnaW5ZMywgbGFzdFRleHRPYmplY3Quc3RhcnQueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAob3JnaW5YMyA8IDApIHtcclxuICAgICAgb3JnaW5YMyAtPSB0ZXh0V2lkdGg7XHJcbiAgICB9XHJcbiAgICBsZXQgdGV4dE9iamVjdCA9IHtcclxuICAgICAgbGluZVN0YXJ0OiB7XHJcbiAgICAgICAgeDogb3JnaW5YMixcclxuICAgICAgICB5OiBvcmdpblkyXHJcbiAgICAgIH0sXHJcbiAgICAgIGxpbmVFbmQ6IHtcclxuICAgICAgICB4OiBvcmdpblgxLFxyXG4gICAgICAgIHk6IG9yZ2luWTFcclxuICAgICAgfSxcclxuICAgICAgc3RhcnQ6IHtcclxuICAgICAgICB4OiBvcmdpblgzLFxyXG4gICAgICAgIHk6IHN0YXJ0WVxyXG4gICAgICB9LFxyXG4gICAgICB3aWR0aDogdGV4dFdpZHRoLFxyXG4gICAgICBoZWlnaHQ6IGNvbmZpZy5mb250U2l6ZSxcclxuICAgICAgdGV4dDogaXRlbS50ZXh0LFxyXG4gICAgICBjb2xvcjogaXRlbS5jb2xvcixcclxuICAgICAgdGV4dENvbG9yOiBpdGVtLnRleHRDb2xvcixcclxuICAgICAgdGV4dFNpemU6IGl0ZW0udGV4dFNpemVcclxuICAgIH07XHJcbiAgICBsYXN0VGV4dE9iamVjdCA9IGF2b2lkQ29sbGlzaW9uKHRleHRPYmplY3QsIGxhc3RUZXh0T2JqZWN0KTtcclxuICAgIHRleHRPYmplY3RDb2xsZWN0aW9uLnB1c2gobGFzdFRleHRPYmplY3QpO1xyXG4gIH1cclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHRleHRPYmplY3RDb2xsZWN0aW9uLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZihzZXJpZXNDb252ZXJ0W2ldLmxhYmVsU2hvdyA9PT0gZmFsc2Upe1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuICAgIGxldCBpdGVtID0gdGV4dE9iamVjdENvbGxlY3Rpb25baV07XHJcbiAgICBsZXQgbGluZVN0YXJ0UG9pc3Rpb24gPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihpdGVtLmxpbmVTdGFydC54LCBpdGVtLmxpbmVTdGFydC55LCBjZW50ZXIpO1xyXG4gICAgbGV0IGxpbmVFbmRQb2lzdGlvbiA9IGNvbnZlcnRDb29yZGluYXRlT3JpZ2luKGl0ZW0ubGluZUVuZC54LCBpdGVtLmxpbmVFbmQueSwgY2VudGVyKTtcclxuICAgIGxldCB0ZXh0UG9zaXRpb24gPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihpdGVtLnN0YXJ0LngsIGl0ZW0uc3RhcnQueSwgY2VudGVyKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldEZvbnRTaXplKGl0ZW0udGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaXRlbS5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgIGNvbnRleHQubW92ZVRvKGxpbmVTdGFydFBvaXN0aW9uLngsIGxpbmVTdGFydFBvaXN0aW9uLnkpO1xyXG4gICAgbGV0IGN1cnZlU3RhcnRYID0gaXRlbS5zdGFydC54IDwgMCA/IHRleHRQb3NpdGlvbi54ICsgaXRlbS53aWR0aCA6IHRleHRQb3NpdGlvbi54O1xyXG4gICAgbGV0IHRleHRTdGFydFggPSBpdGVtLnN0YXJ0LnggPCAwID8gdGV4dFBvc2l0aW9uLnggLSA1IDogdGV4dFBvc2l0aW9uLnggKyA1O1xyXG4gICAgY29udGV4dC5xdWFkcmF0aWNDdXJ2ZVRvKGxpbmVFbmRQb2lzdGlvbi54LCBsaW5lRW5kUG9pc3Rpb24ueSwgY3VydmVTdGFydFgsIHRleHRQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQubW92ZVRvKGxpbmVTdGFydFBvaXN0aW9uLngsIGxpbmVTdGFydFBvaXN0aW9uLnkpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8odGV4dFBvc2l0aW9uLnggKyBpdGVtLndpZHRoLCB0ZXh0UG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LmFyYyhjdXJ2ZVN0YXJ0WCwgdGV4dFBvc2l0aW9uLnksIDIgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoaXRlbS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZSk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udGV4dCwgdGV4dFN0YXJ0WCwgdGV4dFBvc2l0aW9uLnkgKyAzKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdUb29sVGlwU3BsaXRMaW5lKG9mZnNldFgsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gb3B0cy5leHRyYS50b29sdGlwIHx8IHt9O1xyXG4gIHRvb2xUaXBPcHRpb24uZ3JpZFR5cGUgPSB0b29sVGlwT3B0aW9uLmdyaWRUeXBlID09IHVuZGVmaW5lZCA/ICdzb2xpZCcgOiB0b29sVGlwT3B0aW9uLmdyaWRUeXBlO1xyXG4gIHRvb2xUaXBPcHRpb24uZGFzaExlbmd0aCA9IHRvb2xUaXBPcHRpb24uZGFzaExlbmd0aCA9PSB1bmRlZmluZWQgPyA0IDogdG9vbFRpcE9wdGlvbi5kYXNoTGVuZ3RoO1xyXG4gIHZhciBzdGFydFkgPSBvcHRzLmFyZWFbMF07XHJcbiAgdmFyIGVuZFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICBpZiAodG9vbFRpcE9wdGlvbi5ncmlkVHlwZSA9PSAnZGFzaCcpIHtcclxuICAgIGNvbnRleHQuc2V0TGluZURhc2goW3Rvb2xUaXBPcHRpb24uZGFzaExlbmd0aCwgdG9vbFRpcE9wdGlvbi5kYXNoTGVuZ3RoXSk7XHJcbiAgfVxyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodG9vbFRpcE9wdGlvbi5ncmlkQ29sb3IgfHwgJyNjY2NjY2MnKTtcclxuICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgY29udGV4dC5tb3ZlVG8ob2Zmc2V0WCwgc3RhcnRZKTtcclxuICBjb250ZXh0LmxpbmVUbyhvZmZzZXRYLCBlbmRZKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLnhBeGlzTGFiZWwpIHtcclxuICAgIGxldCBsYWJlbFRleHQgPSBvcHRzLmNhdGVnb3JpZXNbb3B0cy50b29sdGlwLmluZGV4XTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGxldCB0ZXh0V2lkdGggPSBtZWFzdXJlVGV4dChsYWJlbFRleHQsIGNvbmZpZy5mb250U2l6ZSwgY29udGV4dCk7XHJcbiAgICBsZXQgdGV4dFggPSBvZmZzZXRYIC0gMC41ICogdGV4dFdpZHRoO1xyXG4gICAgbGV0IHRleHRZID0gZW5kWSArIDIgKiBvcHRzLnBpeDtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmxhYmVsQmdDb2xvciB8fCBjb25maWcudG9vbFRpcEJhY2tncm91bmQsIHRvb2xUaXBPcHRpb24ubGFiZWxCZ09wYWNpdHkgfHwgY29uZmlnLnRvb2xUaXBPcGFjaXR5KSk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHRvb2xUaXBPcHRpb24ubGFiZWxCZ0NvbG9yIHx8IGNvbmZpZy50b29sVGlwQmFja2dyb3VuZCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5yZWN0KHRleHRYIC0gdG9vbFRpcE9wdGlvbi5ib3hQYWRkaW5nICogb3B0cy5waXgsIHRleHRZLCB0ZXh0V2lkdGggKyAyICogdG9vbFRpcE9wdGlvbi5ib3hQYWRkaW5nICogb3B0cy5waXgsIGNvbmZpZy5mb250U2l6ZSArIDIgKiB0b29sVGlwT3B0aW9uLmJveFBhZGRpbmcgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHRvb2xUaXBPcHRpb24ubGFiZWxGb250Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgY29udGV4dC5maWxsVGV4dChTdHJpbmcobGFiZWxUZXh0KSwgdGV4dFgsIHRleHRZICsgdG9vbFRpcE9wdGlvbi5ib3hQYWRkaW5nICogb3B0cy5waXggKyBjb25maWcuZm9udFNpemUpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IG1hcmtMaW5lT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiAnc29saWQnLFxyXG4gICAgZGFzaExlbmd0aDogNCxcclxuICAgIGRhdGE6IFtdXHJcbiAgfSwgb3B0cy5leHRyYS5tYXJrTGluZSk7XHJcbiAgbGV0IHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICBsZXQgZW5kWCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgbGV0IHBvaW50cyA9IGNhbE1hcmtMaW5lRGF0YShtYXJrTGluZU9wdGlvbi5kYXRhLCBvcHRzKTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBhc3NpZ24oe30sIHtcclxuICAgICAgbGluZUNvbG9yOiAnI0RFNEE0MicsXHJcbiAgICAgIHNob3dMYWJlbDogZmFsc2UsXHJcbiAgICAgIGxhYmVsRm9udFNpemU6IDEzLFxyXG4gICAgICBsYWJlbFBhZGRpbmc6IDYsXHJcbiAgICAgIGxhYmVsRm9udENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICAgIGxhYmVsQmdDb2xvcjogJyNERkU4RkYnLFxyXG4gICAgICBsYWJlbEJnT3BhY2l0eTogMC44LFxyXG4gICAgICBsYWJlbEFsaWduOiAnbGVmdCcsXHJcbiAgICAgIGxhYmVsT2Zmc2V0WDogMCxcclxuICAgICAgbGFiZWxPZmZzZXRZOiAwLFxyXG4gICAgfSwgcG9pbnRzW2ldKTtcclxuICAgIGlmIChtYXJrTGluZU9wdGlvbi50eXBlID09ICdkYXNoJykge1xyXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFttYXJrTGluZU9wdGlvbi5kYXNoTGVuZ3RoLCBtYXJrTGluZU9wdGlvbi5kYXNoTGVuZ3RoXSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGl0ZW0ubGluZUNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgaXRlbS55KTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcclxuICAgIGlmIChpdGVtLnNob3dMYWJlbCkge1xyXG4gICAgICBsZXQgZm9udFNpemUgPSBpdGVtLmxhYmVsRm9udFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgbGV0IGxhYmVsVGV4dCA9IGl0ZW0ubGFiZWxUZXh0ID8gaXRlbS5sYWJlbFRleHQgOiBpdGVtLnZhbHVlO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgbGV0IHRleHRXaWR0aCA9IG1lYXN1cmVUZXh0KGxhYmVsVGV4dCwgZm9udFNpemUsIGNvbnRleHQpO1xyXG4gICAgICBsZXQgYmdXaWR0aCA9IHRleHRXaWR0aCArIGl0ZW0ubGFiZWxQYWRkaW5nICogb3B0cy5waXggKiAyO1xyXG4gICAgICBsZXQgYmdTdGFydFggPSBpdGVtLmxhYmVsQWxpZ24gPT0gJ2xlZnQnID8gb3B0cy5hcmVhWzNdIC0gYmdXaWR0aCA6IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgICAgIGJnU3RhcnRYICs9IGl0ZW0ubGFiZWxPZmZzZXRYO1xyXG4gICAgICBsZXQgYmdTdGFydFkgPSBpdGVtLnkgLSAwLjUgKiBmb250U2l6ZSAtIGl0ZW0ubGFiZWxQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgICAgIGJnU3RhcnRZICs9IGl0ZW0ubGFiZWxPZmZzZXRZO1xyXG4gICAgICBsZXQgdGV4dFggPSBiZ1N0YXJ0WCArIGl0ZW0ubGFiZWxQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgICAgIGxldCB0ZXh0WSA9IGl0ZW0ueTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoaXRlbS5sYWJlbEJnQ29sb3IsIGl0ZW0ubGFiZWxCZ09wYWNpdHkpKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLmxhYmVsQmdDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQucmVjdChiZ1N0YXJ0WCwgYmdTdGFydFksIGJnV2lkdGgsIGZvbnRTaXplICsgMiAqIGl0ZW0ubGFiZWxQYWRkaW5nICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0ubGFiZWxGb250Q29sb3IpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhsYWJlbFRleHQpLCB0ZXh0WCwgYmdTdGFydFkgKyBmb250U2l6ZSArIGl0ZW0ubGFiZWxQYWRkaW5nICogb3B0cy5waXgvMik7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICB9XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcEhvcml6ZW50YWxMaW5lKG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKSB7XHJcbiAgdmFyIHRvb2xUaXBPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGdyaWRUeXBlOiAnc29saWQnLFxyXG4gICAgZGFzaExlbmd0aDogNFxyXG4gIH0sIG9wdHMuZXh0cmEudG9vbHRpcCk7XHJcbiAgdmFyIHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICB2YXIgZW5kWCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24uZ3JpZFR5cGUgPT0gJ2Rhc2gnKSB7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFt0b29sVGlwT3B0aW9uLmRhc2hMZW5ndGgsIHRvb2xUaXBPcHRpb24uZGFzaExlbmd0aF0pO1xyXG4gIH1cclxuICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHRvb2xUaXBPcHRpb24uZ3JpZENvbG9yIHx8ICcjY2NjY2NjJyk7XHJcbiAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgb3B0cy50b29sdGlwLm9mZnNldC55KTtcclxuICBjb250ZXh0LmxpbmVUbyhlbmRYLCBvcHRzLnRvb2x0aXAub2Zmc2V0LnkpO1xyXG4gIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24ueUF4aXNMYWJlbCkge1xyXG4gICAgbGV0IGJveFBhZGRpbmcgPSB0b29sVGlwT3B0aW9uLmJveFBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICAgIGxldCBsYWJlbFRleHQgPSBjYWxUb29sdGlwWUF4aXNEYXRhKG9wdHMudG9vbHRpcC5vZmZzZXQueSwgb3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgZWFjaFNwYWNpbmcpO1xyXG4gICAgbGV0IHdpZHRoQXJyID0gb3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnlBeGlzV2lkdGg7XHJcbiAgICBsZXQgdFN0YXJ0TGVmdCA9IG9wdHMuYXJlYVszXTtcclxuICAgIGxldCB0U3RhcnRSaWdodCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxhYmVsVGV4dC5sZW5ndGg7IGkrKykge1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKHRvb2xUaXBPcHRpb24uZm9udFNpemUgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGxldCB0ZXh0V2lkdGggPSBtZWFzdXJlVGV4dChsYWJlbFRleHRbaV0sIHRvb2xUaXBPcHRpb24uZm9udFNpemUgKiBvcHRzLnBpeCwgY29udGV4dCk7XHJcbiAgICAgIGxldCBiZ1N0YXJ0WCwgYmdFbmRYLCBiZ1dpZHRoO1xyXG4gICAgICBpZiAod2lkdGhBcnJbaV0ucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgYmdTdGFydFggPSB0U3RhcnRMZWZ0IC0gKHRleHRXaWR0aCArIGJveFBhZGRpbmcgKiAyKSAtIDIgKiBvcHRzLnBpeDtcclxuICAgICAgICBiZ0VuZFggPSBNYXRoLm1heChiZ1N0YXJ0WCwgYmdTdGFydFggKyB0ZXh0V2lkdGggKyBib3hQYWRkaW5nICogMik7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgYmdTdGFydFggPSB0U3RhcnRSaWdodCArIDIgKiBvcHRzLnBpeDtcclxuICAgICAgICBiZ0VuZFggPSBNYXRoLm1heChiZ1N0YXJ0WCArIHdpZHRoQXJyW2ldLndpZHRoLCBiZ1N0YXJ0WCArIHRleHRXaWR0aCArIGJveFBhZGRpbmcgKiAyKTtcclxuICAgICAgfVxyXG4gICAgICBiZ1dpZHRoID0gYmdFbmRYIC0gYmdTdGFydFg7XHJcbiAgICAgIGxldCB0ZXh0WCA9IGJnU3RhcnRYICsgKGJnV2lkdGggLSB0ZXh0V2lkdGgpIC8gMjtcclxuICAgICAgbGV0IHRleHRZID0gb3B0cy50b29sdGlwLm9mZnNldC55O1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmxhYmVsQmdDb2xvciB8fCBjb25maWcudG9vbFRpcEJhY2tncm91bmQsIHRvb2xUaXBPcHRpb24ubGFiZWxCZ09wYWNpdHkgfHwgY29uZmlnLnRvb2xUaXBPcGFjaXR5KSk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUodG9vbFRpcE9wdGlvbi5sYWJlbEJnQ29sb3IgfHwgY29uZmlnLnRvb2xUaXBCYWNrZ3JvdW5kKTtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5yZWN0KGJnU3RhcnRYLCB0ZXh0WSAtIDAuNSAqIGNvbmZpZy5mb250U2l6ZSAtIGJveFBhZGRpbmcsIGJnV2lkdGgsIGNvbmZpZy5mb250U2l6ZSArIDIgKiBib3hQYWRkaW5nKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUodG9vbFRpcE9wdGlvbi5sYWJlbEZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQobGFiZWxUZXh0W2ldLCB0ZXh0WCwgdGV4dFkgKyAwLjUgKiBjb25maWcuZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBpZiAod2lkdGhBcnJbaV0ucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgdFN0YXJ0TGVmdCAtPSAod2lkdGhBcnJbaV0ud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeCk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdFN0YXJ0UmlnaHQgKz0gd2lkdGhBcnJbaV0ud2lkdGggKyBvcHRzLnlBeGlzLnBhZGRpbmcgKiBvcHRzLnBpeDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1Rvb2xUaXBTcGxpdEFyZWEob2Zmc2V0WCwgb3B0cywgY29uZmlnLCBjb250ZXh0LCBlYWNoU3BhY2luZykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBhY3RpdmVCZ0NvbG9yOiAnIzAwMDAwMCcsXHJcbiAgICBhY3RpdmVCZ09wYWNpdHk6IDAuMDgsXHJcbiAgICBhY3RpdmVXaWR0aDogZWFjaFNwYWNpbmdcclxuICB9LCBvcHRzLmV4dHJhLmNvbHVtbik7XHJcbiAgdG9vbFRpcE9wdGlvbi5hY3RpdmVXaWR0aCA9IHRvb2xUaXBPcHRpb24uYWN0aXZlV2lkdGggPiBlYWNoU3BhY2luZyA/IGVhY2hTcGFjaW5nIDogdG9vbFRpcE9wdGlvbi5hY3RpdmVXaWR0aDtcclxuICB2YXIgc3RhcnRZID0gb3B0cy5hcmVhWzBdO1xyXG4gIHZhciBlbmRZID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl07XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmFjdGl2ZUJnQ29sb3IsIHRvb2xUaXBPcHRpb24uYWN0aXZlQmdPcGFjaXR5KSk7XHJcbiAgY29udGV4dC5yZWN0KG9mZnNldFggLSB0b29sVGlwT3B0aW9uLmFjdGl2ZVdpZHRoIC8gMiwgc3RhcnRZLCB0b29sVGlwT3B0aW9uLmFjdGl2ZVdpZHRoLCBlbmRZIC0gc3RhcnRZKTtcclxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIGNvbnRleHQuZmlsbCgpO1xyXG4gIGNvbnRleHQuc2V0RmlsbFN0eWxlKFwiI0ZGRkZGRlwiKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0JhclRvb2xUaXBTcGxpdEFyZWEob2Zmc2V0WCwgb3B0cywgY29uZmlnLCBjb250ZXh0LCBlYWNoU3BhY2luZykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBhY3RpdmVCZ0NvbG9yOiAnIzAwMDAwMCcsXHJcbiAgICBhY3RpdmVCZ09wYWNpdHk6IDAuMDhcclxuICB9LCBvcHRzLmV4dHJhLmJhcik7XHJcbiAgdmFyIHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICB2YXIgZW5kWCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYih0b29sVGlwT3B0aW9uLmFjdGl2ZUJnQ29sb3IsIHRvb2xUaXBPcHRpb24uYWN0aXZlQmdPcGFjaXR5KSk7XHJcbiAgY29udGV4dC5yZWN0KCBzdGFydFggLG9mZnNldFggLSBlYWNoU3BhY2luZyAvIDIgLCAgZW5kWCAtIHN0YXJ0WCxlYWNoU3BhY2luZyk7XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShcIiNGRkZGRkZcIik7XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcCh0ZXh0TGlzdCwgb2Zmc2V0LCBvcHRzLCBjb25maWcsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBzaG93Qm94OiB0cnVlLFxyXG4gICAgc2hvd0Fycm93OiB0cnVlLFxyXG4gICAgc2hvd0NhdGVnb3J5OiBmYWxzZSxcclxuICAgIGJnQ29sb3I6ICcjMDAwMDAwJyxcclxuICAgIGJnT3BhY2l0eTogMC43LFxyXG4gICAgYm9yZGVyQ29sb3I6ICcjMDAwMDAwJyxcclxuICAgIGJvcmRlcldpZHRoOiAwLFxyXG4gICAgYm9yZGVyUmFkaXVzOiAwLFxyXG4gICAgYm9yZGVyT3BhY2l0eTogMC43LFxyXG4gICAgYm94UGFkZGluZzogMyxcclxuICAgIGZvbnRDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgZm9udFNpemU6IDEzLFxyXG4gICAgbGluZUhlaWdodDogMjAsXHJcbiAgICBsZWdlbmRTaG93OiB0cnVlLFxyXG4gICAgbGVnZW5kU2hhcGU6ICdhdXRvJyxcclxuICAgIHNwbGl0TGluZTogdHJ1ZSxcclxuICB9LCBvcHRzLmV4dHJhLnRvb2x0aXApO1xyXG4gIGlmKHRvb2xUaXBPcHRpb24uc2hvd0NhdGVnb3J5PT10cnVlICYmIG9wdHMuY2F0ZWdvcmllcyl7XHJcbiAgICB0ZXh0TGlzdC51bnNoaWZ0KHt0ZXh0Om9wdHMuY2F0ZWdvcmllc1tvcHRzLnRvb2x0aXAuaW5kZXhdLGNvbG9yOm51bGx9KVxyXG4gIH1cclxuICB2YXIgZm9udFNpemUgPSB0b29sVGlwT3B0aW9uLmZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgdmFyIGxpbmVIZWlnaHQgPSB0b29sVGlwT3B0aW9uLmxpbmVIZWlnaHQgKiBvcHRzLnBpeDtcclxuICB2YXIgYm94UGFkZGluZyA9IHRvb2xUaXBPcHRpb24uYm94UGFkZGluZyAqIG9wdHMucGl4O1xyXG4gIHZhciBsZWdlbmRXaWR0aCA9IGZvbnRTaXplO1xyXG4gIHZhciBsZWdlbmRNYXJnaW5SaWdodCA9IDUgKiBvcHRzLnBpeDtcclxuICBpZih0b29sVGlwT3B0aW9uLmxlZ2VuZFNob3cgPT0gZmFsc2Upe1xyXG4gICAgbGVnZW5kV2lkdGggPSAwO1xyXG4gICAgbGVnZW5kTWFyZ2luUmlnaHQgPSAwO1xyXG4gIH1cclxuICB2YXIgYXJyb3dXaWR0aCA9IHRvb2xUaXBPcHRpb24uc2hvd0Fycm93ID8gOCAqIG9wdHMucGl4IDogMDtcclxuICB2YXIgaXNPdmVyUmlnaHRCb3JkZXIgPSBmYWxzZTtcclxuICBpZiAob3B0cy50eXBlID09ICdsaW5lJyB8fCBvcHRzLnR5cGUgPT0gJ21vdW50JyB8fCBvcHRzLnR5cGUgPT0gJ2FyZWEnIHx8IG9wdHMudHlwZSA9PSAnY2FuZGxlJyB8fCBvcHRzLnR5cGUgPT0gJ21peCcpIHtcclxuICAgIGlmICh0b29sVGlwT3B0aW9uLnNwbGl0TGluZSA9PSB0cnVlKSB7XHJcbiAgICAgIGRyYXdUb29sVGlwU3BsaXRMaW5lKG9wdHMudG9vbHRpcC5vZmZzZXQueCwgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcbiAgb2Zmc2V0ID0gYXNzaWduKHtcclxuICAgIHg6IDAsXHJcbiAgICB5OiAwXHJcbiAgfSwgb2Zmc2V0KTtcclxuICBvZmZzZXQueSAtPSA4ICogb3B0cy5waXg7XHJcbiAgdmFyIHRleHRXaWR0aCA9IHRleHRMaXN0Lm1hcChmdW5jdGlvbihpdGVtKSB7XHJcbiAgICByZXR1cm4gbWVhc3VyZVRleHQoaXRlbS50ZXh0LCBmb250U2l6ZSwgY29udGV4dCk7XHJcbiAgfSk7XHJcbiAgdmFyIHRvb2xUaXBXaWR0aCA9IGxlZ2VuZFdpZHRoICsgbGVnZW5kTWFyZ2luUmlnaHQgKyA0ICogYm94UGFkZGluZyArIE1hdGgubWF4LmFwcGx5KG51bGwsIHRleHRXaWR0aCk7XHJcbiAgdmFyIHRvb2xUaXBIZWlnaHQgPSAyICogYm94UGFkZGluZyArIHRleHRMaXN0Lmxlbmd0aCAqIGxpbmVIZWlnaHQ7XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24uc2hvd0JveCA9PSBmYWxzZSkge1xyXG4gICAgcmV0dXJuXHJcbiAgfVxyXG4gIC8vIGlmIGJleW9uZCB0aGUgcmlnaHQgYm9yZGVyXHJcbiAgaWYgKG9mZnNldC54IC0gTWF0aC5hYnMob3B0cy5fc2Nyb2xsRGlzdGFuY2VfIHx8IDApICsgYXJyb3dXaWR0aCArIHRvb2xUaXBXaWR0aCA+IG9wdHMud2lkdGgpIHtcclxuICAgIGlzT3ZlclJpZ2h0Qm9yZGVyID0gdHJ1ZTtcclxuICB9XHJcbiAgaWYgKHRvb2xUaXBIZWlnaHQgKyBvZmZzZXQueSA+IG9wdHMuaGVpZ2h0KSB7XHJcbiAgICBvZmZzZXQueSA9IG9wdHMuaGVpZ2h0IC0gdG9vbFRpcEhlaWdodDtcclxuICB9XHJcbiAgLy8gZHJhdyBiYWNrZ3JvdW5kIHJlY3RcclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHRvb2xUaXBPcHRpb24uYmdDb2xvciwgdG9vbFRpcE9wdGlvbi5iZ09wYWNpdHkpKTtcclxuICBjb250ZXh0LnNldExpbmVXaWR0aCh0b29sVGlwT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2IodG9vbFRpcE9wdGlvbi5ib3JkZXJDb2xvciwgdG9vbFRpcE9wdGlvbi5ib3JkZXJPcGFjaXR5KSk7XHJcbiAgdmFyIHJhZGl1cyA9IHRvb2xUaXBPcHRpb24uYm9yZGVyUmFkaXVzO1xyXG4gIGlmIChpc092ZXJSaWdodEJvcmRlcikge1xyXG4gICAgLy8g5aKe5Yqg5bem5L6n5LuN54S26LaF5Ye655qE5Yik5patXHJcbiAgICBpZih0b29sVGlwV2lkdGggKyBhcnJvd1dpZHRoID4gb3B0cy53aWR0aCl7XHJcbiAgICAgIG9mZnNldC54ID0gb3B0cy53aWR0aCArIE1hdGguYWJzKG9wdHMuX3Njcm9sbERpc3RhbmNlXyB8fCAwKSArIGFycm93V2lkdGggKyAodG9vbFRpcFdpZHRoIC0gb3B0cy53aWR0aClcclxuICAgIH1cclxuICAgIGlmKHRvb2xUaXBXaWR0aCA+IG9mZnNldC54KXtcclxuICAgICAgb2Zmc2V0LnggPSBvcHRzLndpZHRoICsgTWF0aC5hYnMob3B0cy5fc2Nyb2xsRGlzdGFuY2VfIHx8IDApICsgYXJyb3dXaWR0aCArICh0b29sVGlwV2lkdGggLSBvcHRzLndpZHRoKVxyXG4gICAgfVxyXG4gICAgaWYgKHRvb2xUaXBPcHRpb24uc2hvd0Fycm93KSB7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKG9mZnNldC54LCBvZmZzZXQueSArIDEwICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhvZmZzZXQueCAtIGFycm93V2lkdGgsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCArIDUgKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmFyYyhvZmZzZXQueCAtIGFycm93V2lkdGggLSByYWRpdXMsIG9mZnNldC55ICsgdG9vbFRpcEhlaWdodCAtIHJhZGl1cywgcmFkaXVzLCAwLCBNYXRoLlBJIC8gMiwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5hcmMob2Zmc2V0LnggLSBhcnJvd1dpZHRoIC0gTWF0aC5yb3VuZCh0b29sVGlwV2lkdGgpICsgcmFkaXVzLCBvZmZzZXQueSArIHRvb2xUaXBIZWlnaHQgLSByYWRpdXMsIHJhZGl1cyxcclxuICAgICAgTWF0aC5QSSAvIDIsIE1hdGguUEksIGZhbHNlKTtcclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54IC0gYXJyb3dXaWR0aCAtIE1hdGgucm91bmQodG9vbFRpcFdpZHRoKSArIHJhZGl1cywgb2Zmc2V0LnkgKyByYWRpdXMsIHJhZGl1cywgLU1hdGguUEksIC1NYXRoLlBJIC8gMiwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5hcmMob2Zmc2V0LnggLSBhcnJvd1dpZHRoIC0gcmFkaXVzLCBvZmZzZXQueSArIHJhZGl1cywgcmFkaXVzLCAtTWF0aC5QSSAvIDIsIDAsIGZhbHNlKTtcclxuICAgIGlmICh0b29sVGlwT3B0aW9uLnNob3dBcnJvdykge1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhvZmZzZXQueCAtIGFycm93V2lkdGgsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKG9mZnNldC54LCBvZmZzZXQueSArIDEwICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAodG9vbFRpcE9wdGlvbi5zaG93QXJyb3cpIHtcclxuICAgICAgY29udGV4dC5tb3ZlVG8ob2Zmc2V0LngsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKG9mZnNldC54ICsgYXJyb3dXaWR0aCwgb2Zmc2V0LnkgKyAxMCAqIG9wdHMucGl4IC0gNSAqIG9wdHMucGl4KTtcclxuICAgIH1cclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54ICsgYXJyb3dXaWR0aCArIHJhZGl1cywgb2Zmc2V0LnkgKyByYWRpdXMsIHJhZGl1cywgLU1hdGguUEksIC1NYXRoLlBJIC8gMiwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5hcmMob2Zmc2V0LnggKyBhcnJvd1dpZHRoICsgTWF0aC5yb3VuZCh0b29sVGlwV2lkdGgpIC0gcmFkaXVzLCBvZmZzZXQueSArIHJhZGl1cywgcmFkaXVzLCAtTWF0aC5QSSAvIDIsIDAsXHJcbiAgICAgIGZhbHNlKTtcclxuICAgIGNvbnRleHQuYXJjKG9mZnNldC54ICsgYXJyb3dXaWR0aCArIE1hdGgucm91bmQodG9vbFRpcFdpZHRoKSAtIHJhZGl1cywgb2Zmc2V0LnkgKyB0b29sVGlwSGVpZ2h0IC0gcmFkaXVzLCByYWRpdXMsIDAsXHJcbiAgICAgIE1hdGguUEkgLyAyLCBmYWxzZSk7XHJcbiAgICBjb250ZXh0LmFyYyhvZmZzZXQueCArIGFycm93V2lkdGggKyByYWRpdXMsIG9mZnNldC55ICsgdG9vbFRpcEhlaWdodCAtIHJhZGl1cywgcmFkaXVzLCBNYXRoLlBJIC8gMiwgTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgaWYgKHRvb2xUaXBPcHRpb24uc2hvd0Fycm93KSB7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKG9mZnNldC54ICsgYXJyb3dXaWR0aCwgb2Zmc2V0LnkgKyAxMCAqIG9wdHMucGl4ICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5saW5lVG8ob2Zmc2V0LngsIG9mZnNldC55ICsgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgY29udGV4dC5maWxsKCk7XHJcbiAgaWYgKHRvb2xUaXBPcHRpb24uYm9yZGVyV2lkdGggPiAwKSB7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH1cclxuICAvLyBkcmF3IGxlZ2VuZFxyXG4gIGlmKHRvb2xUaXBPcHRpb24ubGVnZW5kU2hvdyl7XHJcbiAgICB0ZXh0TGlzdC5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpdGVtLmNvbG9yICE9PSBudWxsKSB7XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgICAgICB2YXIgc3RhcnRYID0gb2Zmc2V0LnggKyBhcnJvd1dpZHRoICsgMiAqIGJveFBhZGRpbmc7XHJcbiAgICAgICAgdmFyIHN0YXJ0WSA9IG9mZnNldC55ICsgKGxpbmVIZWlnaHQgLSBmb250U2l6ZSkgLyAyICsgbGluZUhlaWdodCAqIGluZGV4ICsgYm94UGFkZGluZyArIDE7XHJcbiAgICAgICAgaWYgKGlzT3ZlclJpZ2h0Qm9yZGVyKSB7XHJcbiAgICAgICAgICBzdGFydFggPSBvZmZzZXQueCAtIHRvb2xUaXBXaWR0aCAtIGFycm93V2lkdGggKyAyICogYm94UGFkZGluZztcclxuICAgICAgICB9XHJcbiAgICAgICAgc3dpdGNoIChpdGVtLmxlZ2VuZFNoYXBlKSB7XHJcbiAgICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDIgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDIgKiBvcHRzLnBpeCwgbGVnZW5kV2lkdGgsIDQgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAndHJpYW5nbGUnOlxyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGVnZW5kV2lkdGggLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyAyLjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGVnZW5kV2lkdGggKyA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyAxMi41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoIC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdkaWFtb25kJzpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoIC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgMi41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgMTIuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnY2lyY2xlJzpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoKTtcclxuICAgICAgICAgICAgY29udGV4dC5hcmMoc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxlZ2VuZFdpZHRoLCA1ICogb3B0cy5waXgsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICBjYXNlICdyZWN0JzpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCwgMTUgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgY2FzZSAnc3F1YXJlJzpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgMiAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYICsgMiAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBzdGFydFkgKyAwLjUgKiBsZWdlbmRXaWR0aCAtIDUgKiBvcHRzLnBpeCwgMTUgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBcclxuICAvLyBkcmF3IHRleHQgbGlzdFxyXG4gIHRleHRMaXN0LmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIHZhciBzdGFydFggPSBvZmZzZXQueCArIGFycm93V2lkdGggKyAyICogYm94UGFkZGluZyArIGxlZ2VuZFdpZHRoICsgbGVnZW5kTWFyZ2luUmlnaHQ7XHJcbiAgICBpZiAoaXNPdmVyUmlnaHRCb3JkZXIpIHtcclxuICAgICAgc3RhcnRYID0gb2Zmc2V0LnggLSB0b29sVGlwV2lkdGggLSBhcnJvd1dpZHRoICsgMiAqIGJveFBhZGRpbmcgKyBsZWdlbmRXaWR0aCArIGxlZ2VuZE1hcmdpblJpZ2h0O1xyXG4gICAgfVxyXG4gICAgdmFyIHN0YXJ0WSA9IG9mZnNldC55ICsgbGluZUhlaWdodCAqIGluZGV4ICsgKGxpbmVIZWlnaHQgLSBmb250U2l6ZSkvMiAtIDEgKyBib3hQYWRkaW5nICsgZm9udFNpemU7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICBjb250ZXh0LnNldFRleHRCYXNlbGluZSgnbm9ybWFsJyk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZSh0b29sVGlwT3B0aW9uLmZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udGV4dCwgc3RhcnRYLCBzdGFydFkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfSk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdDb2x1bW5EYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGNvbHVtbk9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2dyb3VwJyxcclxuICAgIHdpZHRoOiBlYWNoU3BhY2luZyAvIDIsXHJcbiAgICBtZXRlckJvcmRlcjogNCxcclxuICAgIG1ldGVyRmlsbENvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBiYXJCb3JkZXJDaXJjbGU6IGZhbHNlLFxyXG4gICAgYmFyQm9yZGVyUmFkaXVzOiBbXSxcclxuICAgIHNlcmllc0dhcDogMixcclxuICAgIGxpbmVhclR5cGU6ICdub25lJyxcclxuICAgIGxpbmVhck9wYWNpdHk6IDEsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgICBjb2xvclN0b3A6IDAsXHJcbiAgICBsYWJlbFBvc2l0aW9uOiAnb3V0c2lkZSdcclxuICB9LCBvcHRzLmV4dHJhLmNvbHVtbik7XHJcbiAgbGV0IGNhbFBvaW50cyA9IFtdO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0TnVtID0gLTI7XHJcbiAgbGV0IHJpZ2h0TnVtID0geEF4aXNQb2ludHMubGVuZ3RoICsgMjtcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICAgIGxlZnROdW0gPSBNYXRoLmZsb29yKC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLyBlYWNoU3BhY2luZykgLSAyO1xyXG4gICAgcmlnaHROdW0gPSBsZWZ0TnVtICsgb3B0cy54QXhpcy5pdGVtQ291bnQgKyA0O1xyXG4gIH1cclxuICBpZiAob3B0cy50b29sdGlwICYmIG9wdHMudG9vbHRpcC50ZXh0TGlzdCAmJiBvcHRzLnRvb2x0aXAudGV4dExpc3QubGVuZ3RoICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIGRyYXdUb29sVGlwU3BsaXRBcmVhKG9wdHMudG9vbHRpcC5vZmZzZXQueCwgb3B0cywgY29uZmlnLCBjb250ZXh0LCBlYWNoU3BhY2luZyk7XHJcbiAgfVxyXG4gIGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihjb2x1bW5PcHRpb24ubGluZWFyVHlwZSwgY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgIFxyXG4gICAgLy8g6K6h566XMOi9tOWdkOagh1xyXG4gICAgbGV0IHNwYWNpbmdWYWxpZCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgbGV0IHplcm9IZWlnaHQgPSBzcGFjaW5nVmFsaWQgKiAoMCAtIG1pblJhbmdlKSAvIChtYXhSYW5nZSAtIG1pblJhbmdlKTtcclxuICAgIGxldCB6ZXJvUG9pbnRzID0gb3B0cy5oZWlnaHQgLSBNYXRoLnJvdW5kKHplcm9IZWlnaHQpIC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgZWFjaFNlcmllcy56ZXJvUG9pbnRzID0gemVyb1BvaW50cztcclxuICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgc3dpdGNoIChjb2x1bW5PcHRpb24udHlwZSkge1xyXG4gICAgICBjYXNlICdncm91cCc6XHJcbiAgICAgICAgdmFyIHBvaW50cyA9IGdldENvbHVtbkRhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgemVyb1BvaW50cywgcHJvY2Vzcyk7XHJcbiAgICAgICAgdmFyIHRvb2x0aXBQb2ludHMgPSBnZXRTdGFja0RhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgc2VyaWVzSW5kZXgsIHNlcmllcywgcHJvY2Vzcyk7XHJcbiAgICAgICAgY2FsUG9pbnRzLnB1c2godG9vbHRpcFBvaW50cyk7XHJcbiAgICAgICAgcG9pbnRzID0gZml4Q29sdW1lRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBzZXJpZXMubGVuZ3RoLCBzZXJpZXNJbmRleCwgY29uZmlnLCBvcHRzKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgICAvL2ZpeCBpc3N1ZXMvSTI3QjFOIHl5b2luZ2UgJiBKb2VzaHVcclxuICAgICAgICAgIGlmIChpdGVtICE9PSBudWxsICYmIGkgPiBsZWZ0TnVtICYmIGkgPCByaWdodE51bSkge1xyXG4gICAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvclxyXG4gICAgICAgICAgICB2YXIgc3Ryb2tlQ29sb3IgPSBpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3JcclxuICAgICAgICAgICAgaWYgKGNvbHVtbk9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24ubGluZWFyVHlwZSA9PSAnb3BhY2l0eScpIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoZmlsbENvbG9yLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3JbZWFjaFNlcmllcy5saW5lYXJJbmRleF0sIGNvbHVtbk9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKGNvbHVtbk9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSxjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5ZyG6KeS6L655qGGXHJcbiAgICAgICAgICAgIGlmICgoY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyAmJiBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzLmxlbmd0aCA9PT0gNCkgfHwgY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBzdGFydFg7XHJcbiAgICAgICAgICAgICAgY29uc3QgdG9wID0gaXRlbS55ID4gemVyb1BvaW50cyA/IHplcm9Qb2ludHMgOiBpdGVtLnk7XHJcbiAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBpdGVtLndpZHRoO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IE1hdGguYWJzKHplcm9Qb2ludHMgLSBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzID0gW3dpZHRoIC8gMiwgd2lkdGggLyAyLCAwLCAwXTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYoaXRlbS55ID4gemVyb1BvaW50cyl7XHJcbiAgICAgICAgICAgICAgICBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzID0gWzAsIDAsd2lkdGggLyAyLCB3aWR0aCAvIDJdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgW3IwLCByMSwgcjIsIHIzXSA9IGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXM7XHJcbiAgICAgICAgICAgICAgbGV0IG1pblJhZGl1cyA9IE1hdGgubWluKHdpZHRoLzIsaGVpZ2h0LzIpO1xyXG4gICAgICAgICAgICAgIHIwID0gcjAgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMDtcclxuICAgICAgICAgICAgICByMSA9IHIxID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjE7XHJcbiAgICAgICAgICAgICAgcjIgPSByMiA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIyO1xyXG4gICAgICAgICAgICAgIHIzID0gcjMgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMztcclxuICAgICAgICAgICAgICByMCA9IHIwIDwgMCA/IDAgOiByMDtcclxuICAgICAgICAgICAgICByMSA9IHIxIDwgMCA/IDAgOiByMTtcclxuICAgICAgICAgICAgICByMiA9IHIyIDwgMCA/IDAgOiByMjtcclxuICAgICAgICAgICAgICByMyA9IHIzIDwgMCA/IDAgOiByMztcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjAsIHRvcCArIHIwLCByMCwgLU1hdGguUEksIC1NYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjEsIHRvcCArIHIxLCByMSwgLU1hdGguUEkgLyAyLCAwKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgd2lkdGggLSByMiwgdG9wICsgaGVpZ2h0IC0gcjIsIHIyLCAwLCBNYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHIzLCB0b3AgKyBoZWlnaHQgLSByMywgcjMsIE1hdGguUEkgLyAyLCBNYXRoLlBJKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgaXRlbS53aWR0aCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxKVxyXG4gICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIC8vY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnc3RhY2snOlxyXG4gICAgICAgIC8vIOe7mOWItuWghuWPoOaVsOaNruWbvlxyXG4gICAgICAgIHZhciBwb2ludHMgPSBnZXRTdGFja0RhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgc2VyaWVzSW5kZXgsIHNlcmllcywgcHJvY2Vzcyk7XHJcbiAgICAgICAgY2FsUG9pbnRzLnB1c2gocG9pbnRzKTtcclxuICAgICAgICBwb2ludHMgPSBmaXhDb2x1bWVTdGFja0RhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgc2VyaWVzLmxlbmd0aCwgc2VyaWVzSW5kZXgsIGNvbmZpZywgb3B0cywgc2VyaWVzKTtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBpID4gbGVmdE51bSAmJiBpIDwgcmlnaHROdW0pIHtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvcjtcclxuICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGl0ZW0ueCAtIGl0ZW0ud2lkdGggLyAyICsgMTtcclxuICAgICAgICAgICAgdmFyIGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55IC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICAgICAgICB2YXIgaGVpZ2h0MCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55MCAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgaWYgKHNlcmllc0luZGV4ID4gMCkge1xyXG4gICAgICAgICAgICAgIGhlaWdodCAtPSBoZWlnaHQwO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsUmVjdChzdGFydFgsIGl0ZW0ueSwgaXRlbS53aWR0aCwgaGVpZ2h0KTtcclxuICAgICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgY2FzZSAnbWV0ZXInOlxyXG4gICAgICAgIC8vIOe7mOWItua4qeW6puiuoeaVsOaNruWbvlxyXG4gICAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICAgICAgcG9pbnRzID0gZml4Q29sdW1lTWV0ZXJEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMsIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlcik7XHJcbiAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tpXTtcclxuICAgICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgICAgLy/nlLvog4zmma/popzoibJcclxuICAgICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICAgIGlmIChzZXJpZXNJbmRleCA9PSAwICYmIGNvbHVtbk9wdGlvbi5tZXRlckJvcmRlciA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aChjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKHNlcmllc0luZGV4ID09IDApe1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoY29sdW1uT3B0aW9uLm1ldGVyRmlsbENvbG9yKTtcclxuICAgICAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBpdGVtLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgICB2YXIgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBpdGVtLnkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgICAgICAgaWYgKChjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzICYmIGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMubGVuZ3RoID09PSA0KSB8fCBjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlID09PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gc3RhcnRYO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgdG9wID0gaXRlbS55O1xyXG4gICAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBpdGVtLndpZHRoO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gemVyb1BvaW50cyAtIGl0ZW0ueTtcclxuICAgICAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMgPSBbd2lkdGggLyAyLCB3aWR0aCAvIDIsIDAsIDBdO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgbGV0IFtyMCwgcjEsIHIyLCByM10gPSBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzO1xyXG4gICAgICAgICAgICAgICAgbGV0IG1pblJhZGl1cyA9IE1hdGgubWluKHdpZHRoLzIsaGVpZ2h0LzIpO1xyXG4gICAgICAgICAgICAgICAgcjAgPSByMCA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIwO1xyXG4gICAgICAgICAgICAgICAgcjEgPSByMSA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIxO1xyXG4gICAgICAgICAgICAgICAgcjIgPSByMiA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIyO1xyXG4gICAgICAgICAgICAgICAgcjMgPSByMyA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIzO1xyXG4gICAgICAgICAgICAgICAgcjAgPSByMCA8IDAgPyAwIDogcjA7XHJcbiAgICAgICAgICAgICAgICByMSA9IHIxIDwgMCA/IDAgOiByMTtcclxuICAgICAgICAgICAgICAgIHIyID0gcjIgPCAwID8gMCA6IHIyO1xyXG4gICAgICAgICAgICAgICAgcjMgPSByMyA8IDAgPyAwIDogcjM7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjAsIHRvcCArIHIwLCByMCwgLU1hdGguUEksIC1NYXRoLlBJIC8gMik7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgd2lkdGggLSByMSwgdG9wICsgcjEsIHIxLCAtTWF0aC5QSSAvIDIsIDApO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjIsIHRvcCArIGhlaWdodCAtIHIyLCByMiwgMCwgTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHIzLCB0b3AgKyBoZWlnaHQgLSByMywgcjMsIE1hdGguUEkgLyAyLCBNYXRoLlBJKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYICsgaXRlbS53aWR0aCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoc2VyaWVzSW5kZXggPT0gMCAmJiBjb2x1bW5PcHRpb24ubWV0ZXJCb3JkZXIgPiAwKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuICB9KTtcclxuXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICBzd2l0Y2ggKGNvbHVtbk9wdGlvbi50eXBlKSB7XHJcbiAgICAgICAgY2FzZSAnZ3JvdXAnOlxyXG4gICAgICAgICAgdmFyIHBvaW50cyA9IGdldENvbHVtbkRhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBwb2ludHMgPSBmaXhDb2x1bWVEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMpO1xyXG4gICAgICAgICAgZHJhd0NvbHVtZVBvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdzdGFjayc6XHJcbiAgICAgICAgICB2YXIgcG9pbnRzID0gZ2V0U3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzZXJpZXMsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NvbHVtZVBvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdtZXRlcic6XHJcbiAgICAgICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDb2x1bWVQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TW91bnREYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IG1vdW50T3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiAnbW91bnQnLFxyXG4gICAgd2lkdGhSYXRpbzogMSxcclxuICAgIGJvcmRlcldpZHRoOiAxLFxyXG4gICAgYmFyQm9yZGVyQ2lyY2xlOiBmYWxzZSxcclxuICAgIGJhckJvcmRlclJhZGl1czogW10sXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBsaW5lYXJPcGFjaXR5OiAxLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gICAgY29sb3JTdG9wOiAwLFxyXG4gIH0sIG9wdHMuZXh0cmEubW91bnQpO1xyXG4gIG1vdW50T3B0aW9uLndpZHRoUmF0aW8gPSBtb3VudE9wdGlvbi53aWR0aFJhdGlvIDw9IDAgPyAwIDogbW91bnRPcHRpb24ud2lkdGhSYXRpbztcclxuICBtb3VudE9wdGlvbi53aWR0aFJhdGlvID0gbW91bnRPcHRpb24ud2lkdGhSYXRpbyA+PSAyID8gMiA6IG1vdW50T3B0aW9uLndpZHRoUmF0aW87XHJcbiAgbGV0IGNhbFBvaW50cyA9IFtdO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0TnVtID0gLTI7XHJcbiAgbGV0IHJpZ2h0TnVtID0geEF4aXNQb2ludHMubGVuZ3RoICsgMjtcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICAgIGxlZnROdW0gPSBNYXRoLmZsb29yKC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLyBlYWNoU3BhY2luZykgLSAyO1xyXG4gICAgcmlnaHROdW0gPSBsZWZ0TnVtICsgb3B0cy54QXhpcy5pdGVtQ291bnQgKyA0O1xyXG4gIH1cclxuICBtb3VudE9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihtb3VudE9wdGlvbi5saW5lYXJUeXBlLCBtb3VudE9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbMF0pO1xyXG4gICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgXHJcbiAgICAvLyDorqHnrpcw6L205Z2Q5qCHXHJcbiAgICBsZXQgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgICBsZXQgemVyb0hlaWdodCA9IHNwYWNpbmdWYWxpZCAqICgwIC0gbWluUmFuZ2UpIC8gKG1heFJhbmdlIC0gbWluUmFuZ2UpO1xyXG4gICAgbGV0IHplcm9Qb2ludHMgPSBvcHRzLmhlaWdodCAtIE1hdGgucm91bmQoemVyb0hlaWdodCkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICBcclxuICAgIHZhciBwb2ludHMgPSBnZXRNb3VudERhdGFQb2ludHMoc2VyaWVzLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgbW91bnRPcHRpb24sIHplcm9Qb2ludHMsIHByb2Nlc3MpO1xyXG4gICAgc3dpdGNoIChtb3VudE9wdGlvbi50eXBlKSB7XHJcbiAgICAgIGNhc2UgJ2Jhcic6XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBlYWNoU3BhY2luZyptb3VudE9wdGlvbi53aWR0aFJhdGlvLzI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlID09ICdvcGFjaXR5Jykge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihmaWxsQ29sb3IsIG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IobW91bnRPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSwgbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcChtb3VudE9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKG1vdW50T3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc1tpXS5saW5lYXJJbmRleF0sbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLy8g5ZyG6KeS6L655qGGXHJcbiAgICAgICAgICAgIGlmICgobW91bnRPcHRpb24uYmFyQm9yZGVyUmFkaXVzICYmIG1vdW50T3B0aW9uLmJhckJvcmRlclJhZGl1cy5sZW5ndGggPT09IDQpIHx8IG1vdW50T3B0aW9uLmJhckJvcmRlckNpcmNsZSA9PT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnN0IGxlZnQgPSBzdGFydFg7XHJcbiAgICAgICAgICAgICAgY29uc3QgdG9wID0gaXRlbS55ID4gemVyb1BvaW50cyA/IHplcm9Qb2ludHMgOiBpdGVtLnk7XHJcbiAgICAgICAgICAgICAgY29uc3Qgd2lkdGggPSBpdGVtLndpZHRoO1xyXG4gICAgICAgICAgICAgIGNvbnN0IGhlaWdodCA9IE1hdGguYWJzKHplcm9Qb2ludHMgLSBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5iYXJCb3JkZXJDaXJjbGUpIHtcclxuICAgICAgICAgICAgICAgIG1vdW50T3B0aW9uLmJhckJvcmRlclJhZGl1cyA9IFt3aWR0aCAvIDIsIHdpZHRoIC8gMiwgMCwgMF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmKGl0ZW0ueSA+IHplcm9Qb2ludHMpe1xyXG4gICAgICAgICAgICAgICAgbW91bnRPcHRpb24uYmFyQm9yZGVyUmFkaXVzID0gWzAsIDAsd2lkdGggLyAyLCB3aWR0aCAvIDJdO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBsZXQgW3IwLCByMSwgcjIsIHIzXSA9IG1vdW50T3B0aW9uLmJhckJvcmRlclJhZGl1cztcclxuICAgICAgICAgICAgICBsZXQgbWluUmFkaXVzID0gTWF0aC5taW4od2lkdGgvMixoZWlnaHQvMik7XHJcbiAgICAgICAgICAgICAgcjAgPSByMCA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIwO1xyXG4gICAgICAgICAgICAgIHIxID0gcjEgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMTtcclxuICAgICAgICAgICAgICByMiA9IHIyID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjI7XHJcbiAgICAgICAgICAgICAgcjMgPSByMyA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIzO1xyXG4gICAgICAgICAgICAgIHIwID0gcjAgPCAwID8gMCA6IHIwO1xyXG4gICAgICAgICAgICAgIHIxID0gcjEgPCAwID8gMCA6IHIxO1xyXG4gICAgICAgICAgICAgIHIyID0gcjIgPCAwID8gMCA6IHIyO1xyXG4gICAgICAgICAgICAgIHIzID0gcjMgPCAwID8gMCA6IHIzO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMCwgdG9wICsgcjAsIHIwLCAtTWF0aC5QSSwgLU1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgd2lkdGggLSByMSwgdG9wICsgcjEsIHIxLCAtTWF0aC5QSSAvIDIsIDApO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyB3aWR0aCAtIHIyLCB0b3AgKyBoZWlnaHQgLSByMiwgcjIsIDAsIE1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjMsIHRvcCArIGhlaWdodCAtIHIzLCByMywgTWF0aC5QSSAvIDIsIE1hdGguUEkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIGl0ZW0ud2lkdGgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgemVyb1BvaW50cyk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBpZihtb3VudE9wdGlvbi5ib3JkZXJXaWR0aCA+IDApe1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKG1vdW50T3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICd0cmlhbmdsZSc6XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBlYWNoU3BhY2luZyptb3VudE9wdGlvbi53aWR0aFJhdGlvLzI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlID09ICdvcGFjaXR5Jykge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihmaWxsQ29sb3IsIG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IobW91bnRPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSwgbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcChtb3VudE9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKG1vdW50T3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc1tpXS5saW5lYXJJbmRleF0sbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShzdHJva2VDb2xvcik7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgICAgIGlmKG1vdW50T3B0aW9uLmJvcmRlcldpZHRoID4gMCl7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgobW91bnRPcHRpb24uYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9O1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlICdtb3VudCc6XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLnggLSBlYWNoU3BhY2luZyptb3VudE9wdGlvbi53aWR0aFJhdGlvLzI7XHJcbiAgICAgICAgICAgIHZhciBoZWlnaHQgPSBvcHRzLmhlaWdodCAtIGl0ZW0ueSAtIG9wdHMuYXJlYVsyXTtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgc2VyaWVzW2ldLmNvbG9yXHJcbiAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlICE9PSAnbm9uZScpIHtcclxuICAgICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgICAvL+mAj+aYjua4kOWPmFxyXG4gICAgICAgICAgICAgIGlmIChtb3VudE9wdGlvbi5saW5lYXJUeXBlID09ICdvcGFjaXR5Jykge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihmaWxsQ29sb3IsIG1vdW50T3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IobW91bnRPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSwgbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcChtb3VudE9wdGlvbi5jb2xvclN0b3AsIGhleFRvUmdiKG1vdW50T3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc1tpXS5saW5lYXJJbmRleF0sbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCB6ZXJvUG9pbnRzKTtcclxuICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGl0ZW0ueCAtIGl0ZW0ud2lkdGgvNCwgemVyb1BvaW50cywgaXRlbS54IC0gaXRlbS53aWR0aC80LCBpdGVtLnksIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGl0ZW0ueCArIGl0ZW0ud2lkdGgvNCwgaXRlbS55LCBpdGVtLnggKyBpdGVtLndpZHRoLzQsIHplcm9Qb2ludHMsIHN0YXJ0WCArIGl0ZW0ud2lkdGgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHN0cm9rZUNvbG9yKTtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgICAgaWYobW91bnRPcHRpb24uYm9yZGVyV2lkdGggPiAwKXtcclxuICAgICAgICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aChtb3VudE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3NoYXJwJzpcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBpID4gbGVmdE51bSAmJiBpIDwgcmlnaHROdW0pIHtcclxuICAgICAgICAgICAgdmFyIHN0YXJ0WCA9IGl0ZW0ueCAtIGVhY2hTcGFjaW5nKm1vdW50T3B0aW9uLndpZHRoUmF0aW8vMjtcclxuICAgICAgICAgICAgdmFyIGhlaWdodCA9IG9wdHMuaGVpZ2h0IC0gaXRlbS55IC0gb3B0cy5hcmVhWzJdO1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICB2YXIgZmlsbENvbG9yID0gaXRlbS5jb2xvciB8fCBzZXJpZXNbaV0uY29sb3JcclxuICAgICAgICAgICAgdmFyIHN0cm9rZUNvbG9yID0gaXRlbS5jb2xvciB8fCBzZXJpZXNbaV0uY29sb3JcclxuICAgICAgICAgICAgaWYgKG1vdW50T3B0aW9uLmxpbmVhclR5cGUgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHN0YXJ0WCwgaXRlbS55LCBzdGFydFgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICAgIC8v6YCP5piO5riQ5Y+YXHJcbiAgICAgICAgICAgICAgaWYgKG1vdW50T3B0aW9uLmxpbmVhclR5cGUgPT0gJ29wYWNpdHknKSB7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGZpbGxDb2xvciwgbW91bnRPcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihmaWxsQ29sb3IsIDEpKTtcclxuICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihtb3VudE9wdGlvbi5jdXN0b21Db2xvcltzZXJpZXNbaV0ubGluZWFySW5kZXhdLCBtb3VudE9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKG1vdW50T3B0aW9uLmNvbG9yU3RvcCwgaGV4VG9SZ2IobW91bnRPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW2ldLmxpbmVhckluZGV4XSxtb3VudE9wdGlvbi5saW5lYXJPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHplcm9Qb2ludHMpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnF1YWRyYXRpY0N1cnZlVG8oaXRlbS54IC0gMCwgemVyb1BvaW50cyAtIGhlaWdodC80LCBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQucXVhZHJhdGljQ3VydmVUbyhpdGVtLnggKyAwLCB6ZXJvUG9pbnRzIC0gaGVpZ2h0LzQsIHN0YXJ0WCArIGl0ZW0ud2lkdGgsIHplcm9Qb2ludHMpXHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBpZihtb3VudE9wdGlvbi5ib3JkZXJXaWR0aCA+IDApe1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKG1vdW50T3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBicmVhaztcclxuICAgIH1cclxuXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1swXSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgcG9pbnRzID0gZ2V0TW91bnREYXRhUG9pbnRzKHNlcmllcywgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIG1vdW50T3B0aW9uLCB6ZXJvUG9pbnRzLCBwcm9jZXNzKTtcclxuICAgIGRyYXdNb3VudFBvaW50VGV4dChwb2ludHMsIHNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzLCB6ZXJvUG9pbnRzKTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHhBeGlzUG9pbnRzOiB4QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogcG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0JhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBsZXQgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICBsZXQgeUF4aXNQb2ludHMgPSBbXTtcclxuICBsZXQgZWFjaFNwYWNpbmcgPSAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pL29wdHMuY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRzLmNhdGVnb3JpZXMubGVuZ3RoOyBpKyspIHtcclxuICAgIHlBeGlzUG9pbnRzLnB1c2gob3B0cy5hcmVhWzBdICsgZWFjaFNwYWNpbmcgLyAyICsgZWFjaFNwYWNpbmcgKiBpKTtcclxuICB9XHJcbiAgbGV0IGNvbHVtbk9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2dyb3VwJyxcclxuICAgIHdpZHRoOiBlYWNoU3BhY2luZyAvIDIsXHJcbiAgICBtZXRlckJvcmRlcjogNCxcclxuICAgIG1ldGVyRmlsbENvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBiYXJCb3JkZXJDaXJjbGU6IGZhbHNlLFxyXG4gICAgYmFyQm9yZGVyUmFkaXVzOiBbXSxcclxuICAgIHNlcmllc0dhcDogMixcclxuICAgIGxpbmVhclR5cGU6ICdub25lJyxcclxuICAgIGxpbmVhck9wYWNpdHk6IDEsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgICBjb2xvclN0b3A6IDAsXHJcbiAgfSwgb3B0cy5leHRyYS5iYXIpO1xyXG4gIGxldCBjYWxQb2ludHMgPSBbXTtcclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBsZXQgbGVmdE51bSA9IC0yO1xyXG4gIGxldCByaWdodE51bSA9IHlBeGlzUG9pbnRzLmxlbmd0aCArIDI7XHJcbiAgaWYgKG9wdHMudG9vbHRpcCAmJiBvcHRzLnRvb2x0aXAudGV4dExpc3QgJiYgb3B0cy50b29sdGlwLnRleHRMaXN0Lmxlbmd0aCAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3QmFyVG9vbFRpcFNwbGl0QXJlYShvcHRzLnRvb2x0aXAub2Zmc2V0LnksIG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcpO1xyXG4gIH1cclxuICBjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3IoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUsIGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnJhbmdlcyk7XHJcbiAgICBtYXhSYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1pblJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHN3aXRjaCAoY29sdW1uT3B0aW9uLnR5cGUpIHtcclxuICAgICAgY2FzZSAnZ3JvdXAnOlxyXG4gICAgICAgIHZhciBwb2ludHMgPSBnZXRCYXJEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeUF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICAgIHZhciB0b29sdGlwUG9pbnRzID0gZ2V0QmFyU3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeUF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzZXJpZXMsIHByb2Nlc3MpO1xyXG4gICAgICAgIGNhbFBvaW50cy5wdXNoKHRvb2x0aXBQb2ludHMpO1xyXG4gICAgICAgIHBvaW50cyA9IGZpeEJhckRhdGEocG9pbnRzLCBlYWNoU3BhY2luZywgc2VyaWVzLmxlbmd0aCwgc2VyaWVzSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgLy9maXggaXNzdWVzL0kyN0IxTiB5eW9pbmdlICYgSm9lc2h1XHJcbiAgICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCAmJiBpID4gbGVmdE51bSAmJiBpIDwgcmlnaHROdW0pIHtcclxuICAgICAgICAgICAgLy92YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBvcHRzLmFyZWFbM107XHJcbiAgICAgICAgICAgIHZhciBzdGFydFkgPSBpdGVtLnkgLSBpdGVtLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgdmFyIGhlaWdodCA9IGl0ZW0uaGVpZ2h0O1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICB2YXIgZmlsbENvbG9yID0gaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICAgICAgICAgIHZhciBzdHJva2VDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvclxyXG4gICAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHN0YXJ0WCwgaXRlbS55LCBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgLy/pgI/mmI7muJDlj5hcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUgPT0gJ29wYWNpdHknKSB7XHJcbiAgICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGZpbGxDb2xvciwgY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcChjb2x1bW5PcHRpb24uY29sb3JTdG9wLCBoZXhUb1JnYihjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3JbZWFjaFNlcmllcy5saW5lYXJJbmRleF0sY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGZpbGxDb2xvciA9IGdyZFxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOWchuinkui+ueahhlxyXG4gICAgICAgICAgICBpZiAoKGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJSYWRpdXMgJiYgY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cy5sZW5ndGggPT09IDQpIHx8IGNvbHVtbk9wdGlvbi5iYXJCb3JkZXJDaXJjbGUgPT09IHRydWUpIHtcclxuICAgICAgICAgICAgICBjb25zdCBsZWZ0ID0gc3RhcnRYO1xyXG4gICAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gaXRlbS53aWR0aDtcclxuICAgICAgICAgICAgICBjb25zdCB0b3AgPSBpdGVtLnkgLSBpdGVtLndpZHRoIC8gMjtcclxuICAgICAgICAgICAgICBjb25zdCBoZWlnaHQgPSBpdGVtLmhlaWdodDtcclxuICAgICAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSkge1xyXG4gICAgICAgICAgICAgICAgY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyA9IFt3aWR0aCAvIDIsIHdpZHRoIC8gMiwgMCwgMF07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGxldCBbcjAsIHIxLCByMiwgcjNdID0gY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cztcclxuICAgICAgICAgICAgICBsZXQgbWluUmFkaXVzID0gTWF0aC5taW4od2lkdGgvMixoZWlnaHQvMik7XHJcbiAgICAgICAgICAgICAgcjAgPSByMCA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIwO1xyXG4gICAgICAgICAgICAgIHIxID0gcjEgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMTtcclxuICAgICAgICAgICAgICByMiA9IHIyID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjI7XHJcbiAgICAgICAgICAgICAgcjMgPSByMyA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIzO1xyXG4gICAgICAgICAgICAgIHIwID0gcjAgPCAwID8gMCA6IHIwO1xyXG4gICAgICAgICAgICAgIHIxID0gcjEgPCAwID8gMCA6IHIxO1xyXG4gICAgICAgICAgICAgIHIyID0gcjIgPCAwID8gMCA6IHIyO1xyXG4gICAgICAgICAgICAgIHIzID0gcjMgPCAwID8gMCA6IHIzO1xyXG4gICAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMywgdG9wICsgcjMsIHIzLCAtTWF0aC5QSSwgLU1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmFyYyhpdGVtLnggLSByMCwgdG9wICsgcjAsIHIwLCAtTWF0aC5QSSAvIDIsIDApO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGl0ZW0ueCAtIHIxLCB0b3AgKyB3aWR0aCAtIHIxLCByMSwgMCwgTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMiwgdG9wICsgd2lkdGggLSByMiwgcjIsIE1hdGguUEkgLyAyLCBNYXRoLlBJKTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBzdGFydFkpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgc3RhcnRZICsgaXRlbS53aWR0aCk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc3RhcnRYLCBzdGFydFkgKyBpdGVtLndpZHRoKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIHN0YXJ0WSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSlcclxuICAgICAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHN0cm9rZUNvbG9yKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICAvL2NvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgJ3N0YWNrJzpcclxuICAgICAgICAvLyDnu5jliLbloIblj6DmlbDmja7lm75cclxuICAgICAgICB2YXIgcG9pbnRzID0gZ2V0QmFyU3RhY2tEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeUF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHNlcmllc0luZGV4LCBzZXJpZXMsIHByb2Nlc3MpO1xyXG4gICAgICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICAgICAgcG9pbnRzID0gZml4QmFyU3RhY2tEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIHNlcmllcy5sZW5ndGgsIHNlcmllc0luZGV4LCBjb25maWcsIG9wdHMsIHNlcmllcyk7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBwb2ludHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2ldO1xyXG4gICAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIHZhciBmaWxsQ29sb3IgPSBpdGVtLmNvbG9yIHx8IGVhY2hTZXJpZXMuY29sb3I7XHJcbiAgICAgICAgICAgIHZhciBzdGFydFggPSBpdGVtLngwO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0ueSAtIGl0ZW0ud2lkdGgvMik7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFJlY3Qoc3RhcnRYLCBpdGVtLnkgLSBpdGVtLndpZHRoLzIsIGl0ZW0uaGVpZ2h0ICwgaXRlbS53aWR0aCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIGlmIChvcHRzLmRhdGFMYWJlbCAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnJhbmdlcyk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgICBtaW5SYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgICAgc3dpdGNoIChjb2x1bW5PcHRpb24udHlwZSkge1xyXG4gICAgICAgIGNhc2UgJ2dyb3VwJzpcclxuICAgICAgICAgIHZhciBwb2ludHMgPSBnZXRCYXJEYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeUF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgcG9pbnRzID0gZml4QmFyRGF0YShwb2ludHMsIGVhY2hTcGFjaW5nLCBzZXJpZXMubGVuZ3RoLCBzZXJpZXNJbmRleCwgY29uZmlnLCBvcHRzKTtcclxuICAgICAgICAgIGRyYXdCYXJQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc3RhY2snOlxyXG4gICAgICAgICAgdmFyIHBvaW50cyA9IGdldEJhclN0YWNrRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHlBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBzZXJpZXNJbmRleCwgc2VyaWVzLCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdCYXJQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgeUF4aXNQb2ludHM6IHlBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3Q2FuZGxlRGF0YVBvaW50cyhzZXJpZXMsIHNlcmllc01BLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA1ICYmIGFyZ3VtZW50c1s1XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzVdIDogMTtcclxuICB2YXIgY2FuZGxlT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBjb2xvcjoge30sXHJcbiAgICBhdmVyYWdlOiB7fVxyXG4gIH0sIG9wdHMuZXh0cmEuY2FuZGxlKTtcclxuICBjYW5kbGVPcHRpb24uY29sb3IgPSBhc3NpZ24oe30sIHtcclxuICAgIHVwTGluZTogJyNmMDQ4NjQnLFxyXG4gICAgdXBGaWxsOiAnI2YwNDg2NCcsXHJcbiAgICBkb3duTGluZTogJyMyZmMyNWInLFxyXG4gICAgZG93bkZpbGw6ICcjMmZjMjViJ1xyXG4gIH0sIGNhbmRsZU9wdGlvbi5jb2xvcik7XHJcbiAgY2FuZGxlT3B0aW9uLmF2ZXJhZ2UgPSBhc3NpZ24oe30sIHtcclxuICAgIHNob3c6IGZhbHNlLFxyXG4gICAgbmFtZTogW10sXHJcbiAgICBkYXk6IFtdLFxyXG4gICAgY29sb3I6IGNvbmZpZy5jb2xvclxyXG4gIH0sIGNhbmRsZU9wdGlvbi5hdmVyYWdlKTtcclxuICBvcHRzLmV4dHJhLmNhbmRsZSA9IGNhbmRsZU9wdGlvbjtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICBsZXQgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnROdW0gPSAtMjtcclxuICBsZXQgcmlnaHROdW0gPSB4QXhpc1BvaW50cy5sZW5ndGggKyAyO1xyXG4gIGxldCBsZWZ0U3BhY2UgPSAwO1xyXG4gIGxldCByaWdodFNwYWNlID0gb3B0cy53aWR0aCArIGVhY2hTcGFjaW5nO1xyXG4gIGlmIChvcHRzLl9zY3JvbGxEaXN0YW5jZV8gJiYgb3B0cy5fc2Nyb2xsRGlzdGFuY2VfICE9PSAwICYmIG9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShvcHRzLl9zY3JvbGxEaXN0YW5jZV8sIDApO1xyXG4gICAgbGVmdE51bSA9IE1hdGguZmxvb3IoLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAvIGVhY2hTcGFjaW5nKSAtIDI7XHJcbiAgICByaWdodE51bSA9IGxlZnROdW0gKyBvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQ7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIC8v55S75Z2H57q/XHJcbiAgaWYgKGNhbmRsZU9wdGlvbi5hdmVyYWdlLnNob3cgfHwgc2VyaWVzTUEpIHsgLy9NZXJnZSBwdWxsIHJlcXVlc3QgITEyIGZyb20g6YKx6LS157+UXHJcbiAgICBzZXJpZXNNQS5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICB2YXIgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRQb2ludExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9pbnRzID0gc3BsaXRQb2ludExpc3RbaV07XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEpO1xyXG4gICAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgICAgY29udGV4dC5hcmMocG9pbnRzWzBdLngsIHBvaW50c1swXS55LCAxLCAwLCAyICogTWF0aC5QSSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgICBsZXQgc3RhcnRQb2ludCA9IDA7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8oY3RybFBvaW50LmN0ckEueCwgY3RybFBvaW50LmN0ckEueSwgY3RybFBvaW50LmN0ckIueCwgY3RybFBvaW50LmN0ckIueSwgaXRlbS54LFxyXG4gICAgICAgICAgICAgICAgaXRlbS55KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbiAgLy/nlLtL57q/XHJcbiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgdmFyIHBvaW50cyA9IGdldENhbmRsZURhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICBjYWxQb2ludHMucHVzaChwb2ludHMpO1xyXG4gICAgdmFyIHNwbGl0UG9pbnRMaXN0ID0gc3BsaXRQb2ludHMocG9pbnRzLGVhY2hTZXJpZXMpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBzcGxpdFBvaW50TGlzdFswXS5sZW5ndGg7IGkrKykge1xyXG4gICAgICBpZiAoaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgbGV0IGl0ZW0gPSBzcGxpdFBvaW50TGlzdFswXVtpXTtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIC8v5aaC5p6c5LiK5raoXHJcbiAgICAgICAgaWYgKGRhdGFbaV1bMV0gLSBkYXRhW2ldWzBdID4gMCkge1xyXG4gICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShjYW5kbGVPcHRpb24uY29sb3IudXBMaW5lKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGNhbmRsZU9wdGlvbi5jb2xvci51cEZpbGwpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW1bM10ueCwgaXRlbVszXS55KTsgLy/pobbngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMV0ueCwgaXRlbVsxXS55KTsgLy/mlLbnm5jkuK3pl7TngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMV0ueCAtIGVhY2hTcGFjaW5nIC8gNCwgaXRlbVsxXS55KTsgLy/mlLbnm5jlt6bkvqfngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMF0ueCAtIGVhY2hTcGFjaW5nIC8gNCwgaXRlbVswXS55KTsgLy/lvIDnm5jlt6bkvqfngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMF0ueCwgaXRlbVswXS55KTsgLy/lvIDnm5jkuK3pl7TngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMl0ueCwgaXRlbVsyXS55KTsgLy/lupXngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMF0ueCwgaXRlbVswXS55KTsgLy/lvIDnm5jkuK3pl7TngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMF0ueCArIGVhY2hTcGFjaW5nIC8gNCwgaXRlbVswXS55KTsgLy/lvIDnm5jlj7PkvqfngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMV0ueCArIGVhY2hTcGFjaW5nIC8gNCwgaXRlbVsxXS55KTsgLy/mlLbnm5jlj7PkvqfngrlcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW1bMV0ueCwgaXRlbVsxXS55KTsgLy/mlLbnm5jkuK3pl7TngrlcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW1bM10ueCwgaXRlbVszXS55KTsgLy/pobbngrlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShjYW5kbGVPcHRpb24uY29sb3IuZG93bkxpbmUpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoY2FuZGxlT3B0aW9uLmNvbG9yLmRvd25GaWxsKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtWzNdLngsIGl0ZW1bM10ueSk7IC8v6aG254K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLngsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLnggLSBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMF0ueSk7IC8v5byA55uY5bem5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLnggLSBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMV0ueSk7IC8v5pS255uY5bem5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLngsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzJdLngsIGl0ZW1bMl0ueSk7IC8v5bqV54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLngsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzFdLnggKyBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMV0ueSk7IC8v5pS255uY5Y+z5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLnggKyBlYWNoU3BhY2luZyAvIDQsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Y+z5L6n54K5XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtWzBdLngsIGl0ZW1bMF0ueSk7IC8v5byA55uY5Lit6Ze054K5XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtWzNdLngsIGl0ZW1bM10ueSk7IC8v6aG254K5XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIHJldHVybiB7XHJcbiAgICB4QXhpc1BvaW50czogeEF4aXNQb2ludHMsXHJcbiAgICBjYWxQb2ludHM6IGNhbFBvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nOiBlYWNoU3BhY2luZ1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdBcmVhRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBhcmVhT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOiAnc3RyYWlnaHQnLFxyXG4gICAgb3BhY2l0eTogMC4yLFxyXG4gICAgYWRkTGluZTogZmFsc2UsXHJcbiAgICB3aWR0aDogMixcclxuICAgIGdyYWRpZW50OiBmYWxzZSxcclxuICAgIGFjdGl2ZVR5cGU6ICdub25lJ1xyXG4gIH0sIG9wdHMuZXh0cmEuYXJlYSk7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGVuZFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICBsZXQgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICBsZXQgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIGxldCBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY2FsUG9pbnRzLnB1c2gocG9pbnRzKTtcclxuICAgIGxldCBzcGxpdFBvaW50TGlzdCA9IHNwbGl0UG9pbnRzKHBvaW50cyxlYWNoU2VyaWVzKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRQb2ludExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHBvaW50cyA9IHNwbGl0UG9pbnRMaXN0W2ldO1xyXG4gICAgICAvLyDnu5jliLbljLrln5/mlbBcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgaWYgKGFyZWFPcHRpb24uZ3JhZGllbnQpIHtcclxuICAgICAgICBsZXQgZ3JhZGllbnQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KDAsIG9wdHMuYXJlYVswXSwgMCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgnMCcsIGhleFRvUmdiKGVhY2hTZXJpZXMuY29sb3IsIGFyZWFPcHRpb24ub3BhY2l0eSkpO1xyXG4gICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgnMS4wJywgaGV4VG9SZ2IoXCIjRkZGRkZGXCIsIDAuMSkpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGdyYWRpZW50KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aChhcmVhT3B0aW9uLndpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICBsZXQgZmlyc3RQb2ludCA9IHBvaW50c1swXTtcclxuICAgICAgICBsZXQgbGFzdFBvaW50ID0gcG9pbnRzW3BvaW50cy5sZW5ndGggLSAxXTtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueSk7XHJcbiAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSAwO1xyXG4gICAgICAgIGlmIChhcmVhT3B0aW9uLnR5cGUgPT09ICdjdXJ2ZScpIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBsZXQgY3RybFBvaW50ID0gY3JlYXRlQ3VydmVDb250cm9sUG9pbnRzKHBvaW50cywgaiAtIDEpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhjdHJsUG9pbnQuY3RyQS54LCBjdHJsUG9pbnQuY3RyQS55LCBjdHJsUG9pbnQuY3RyQi54LCBjdHJsUG9pbnQuY3RyQi55LCBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH07XHJcbiAgICAgICAgfSBcclxuICAgICAgICBpZiAoYXJlYU9wdGlvbi50eXBlID09PSAnc3RyYWlnaHQnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoYXJlYU9wdGlvbi50eXBlID09PSAnc3RlcCcpIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIHBvaW50c1tqIC0gMV0ueSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhsYXN0UG9pbnQueCwgZW5kWSk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oZmlyc3RQb2ludC54LCBlbmRZKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbMF07XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gZWFjaFNwYWNpbmcgLyAyLCBpdGVtLnkpO1xyXG4gICAgICAgIC8vIGNvbnRleHQubGluZVRvKGl0ZW0ueCArIGVhY2hTcGFjaW5nIC8gMiwgaXRlbS55KTtcclxuICAgICAgICAvLyBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyBlYWNoU3BhY2luZyAvIDIsIGVuZFkpO1xyXG4gICAgICAgIC8vIGNvbnRleHQubGluZVRvKGl0ZW0ueCAtIGVhY2hTcGFjaW5nIC8gMiwgZW5kWSk7XHJcbiAgICAgICAgLy8gY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gZWFjaFNwYWNpbmcgLyAyLCBpdGVtLnkpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAvL+eUu+i/nue6v1xyXG4gICAgICBpZiAoYXJlYU9wdGlvbi5hZGRMaW5lKSB7XHJcbiAgICAgICAgaWYgKGVhY2hTZXJpZXMubGluZVR5cGUgPT0gJ2Rhc2gnKSB7XHJcbiAgICAgICAgICBsZXQgZGFzaExlbmd0aCA9IGVhY2hTZXJpZXMuZGFzaExlbmd0aCA/IGVhY2hTZXJpZXMuZGFzaExlbmd0aCA6IDg7XHJcbiAgICAgICAgICBkYXNoTGVuZ3RoICo9IG9wdHMucGl4O1xyXG4gICAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbZGFzaExlbmd0aCwgZGFzaExlbmd0aF0pO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoYXJlYU9wdGlvbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA9PT0gMSkge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAgIC8vIGNvbnRleHQuYXJjKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSwgMSwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgICAgbGV0IHN0YXJ0UG9pbnQgPSAwO1xyXG4gICAgICAgICAgaWYgKGFyZWFPcHRpb24udHlwZSA9PT0gJ2N1cnZlJykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgY3RybFBvaW50ID0gY3JlYXRlQ3VydmVDb250cm9sUG9pbnRzKHBvaW50cywgaiAtIDEpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGN0cmxQb2ludC5jdHJBLngsIGN0cmxQb2ludC5jdHJBLnksIGN0cmxQb2ludC5jdHJCLngsIGN0cmxQb2ludC5jdHJCLnksIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoYXJlYU9wdGlvbi50eXBlID09PSAnc3RyYWlnaHQnKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbal07XHJcbiAgICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICAgIHN0YXJ0UG9pbnQgPSAxO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoYXJlYU9wdGlvbi50eXBlID09PSAnc3RlcCcpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBwb2ludHNbaiAtIDFdLnkpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lRGFzaChbXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIC8v55S754K5XHJcbiAgICBpZiAob3B0cy5kYXRhUG9pbnRTaGFwZSAhPT0gZmFsc2UpIHtcclxuICAgICAgZHJhd1BvaW50U2hhcGUocG9pbnRzLCBlYWNoU2VyaWVzLmNvbG9yLCBlYWNoU2VyaWVzLnBvaW50U2hhcGUsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgfVxyXG4gICAgZHJhd0FjdGl2ZVBvaW50KHBvaW50cywgZWFjaFNlcmllcy5jb2xvciwgZWFjaFNlcmllcy5wb2ludFNoYXBlLCBjb250ZXh0LCBvcHRzLCBhcmVhT3B0aW9uLHNlcmllc0luZGV4KTtcclxuICB9KTtcclxuXHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICB9KTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgcmV0dXJuIHtcclxuICAgIHhBeGlzUG9pbnRzOiB4QXhpc1BvaW50cyxcclxuICAgIGNhbFBvaW50czogY2FsUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmc6IGVhY2hTcGFjaW5nXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1NjYXR0ZXJEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgdmFyIHNjYXR0ZXJPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIHR5cGU6ICdjaXJjbGUnXHJcbiAgfSwgb3B0cy5leHRyYS5zY2F0dGVyKTtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICB2YXIgc2hhcGUgPSBlYWNoU2VyaWVzLnBvaW50U2hhcGU7XHJcbiAgICBpZiAoc2hhcGUgPT09ICdkaWFtb25kJykge1xyXG4gICAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2hhcGUgPT09ICdjaXJjbGUnKSB7XHJcbiAgICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwpIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCArIDIuNSAqIG9wdHMucGl4LCBpdGVtLnkpO1xyXG4gICAgICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIDMgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3NxdWFyZScpIHtcclxuICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICBpZiAoaXRlbSAhPT0gbnVsbCkge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54IC0gMy41LCBpdGVtLnkgLSAzLjUpO1xyXG4gICAgICAgICAgY29udGV4dC5yZWN0KGl0ZW0ueCAtIDMuNSwgaXRlbS55IC0gMy41LCA3LCA3KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIGlmIChzaGFwZSA9PT0gJ3RyaWFuZ2xlJykge1xyXG4gICAgICBwb2ludHMuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChpdGVtICE9PSBudWxsKSB7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggLSA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyA0LjUsIGl0ZW0ueSArIDQuNSk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSAtIDQuNSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSBpZiAoc2hhcGUgPT09ICd0cmlhbmdsZScpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9KTtcclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAgIGxldCByYW5nZXMsIG1pblJhbmdlLCBtYXhSYW5nZTtcclxuICAgICAgcmFuZ2VzID0gW10uY29uY2F0KG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNbZWFjaFNlcmllcy5pbmRleF0pO1xyXG4gICAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgICAgbWF4UmFuZ2UgPSByYW5nZXMuc2hpZnQoKTtcclxuICAgICAgdmFyIGRhdGEgPSBlYWNoU2VyaWVzLmRhdGE7XHJcbiAgICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgICBkcmF3UG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgIH0pO1xyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3QnViYmxlRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBidWJibGVPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIG9wYWNpdHk6IDEsXHJcbiAgICBib3JkZXI6MlxyXG4gIH0sIG9wdHMuZXh0cmEuYnViYmxlKTtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaFNlcmllcy5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChidWJibGVPcHRpb24uYm9yZGVyICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYnViYmxlT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgIHBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCArIGl0ZW0uciwgaXRlbS55KTtcclxuICAgICAgY29udGV4dC5hcmMoaXRlbS54LCBpdGVtLnksIGl0ZW0uciAqIG9wdHMucGl4LCAwLCAyICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgfSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgXHJcbiAgICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgICAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIHZhciBmb250U2l6ZSA9IGVhY2hTZXJpZXMudGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemU7XHJcbiAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZWFjaFNlcmllcy50ZXh0Q29sb3IgfHwgXCIjRkZGRkZGXCIpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdjZW50ZXInKTtcclxuICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhpdGVtLnQpLCBpdGVtLngsIGl0ZW0ueSArIGZvbnRTaXplLzIpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICB9KTtcclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICByZXR1cm4ge1xyXG4gICAgeEF4aXNQb2ludHM6IHhBeGlzUG9pbnRzLFxyXG4gICAgY2FsUG9pbnRzOiBjYWxQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZzogZWFjaFNwYWNpbmdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TGluZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgbGluZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ3N0cmFpZ2h0JyxcclxuICAgIHdpZHRoOiAyLFxyXG4gICAgYWN0aXZlVHlwZTogJ25vbmUnLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgb25TaGFkb3c6IGZhbHNlLFxyXG4gICAgYW5pbWF0aW9uOiAndmVydGljYWwnLFxyXG4gIH0sIG9wdHMuZXh0cmEubGluZSk7XHJcbiAgbGluZU9wdGlvbi53aWR0aCAqPSBvcHRzLnBpeDtcclxuICBsZXQgeEF4aXNEYXRhID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLFxyXG4gICAgeEF4aXNQb2ludHMgPSB4QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgY2FsUG9pbnRzID0gW107XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgbGV0IGxlZnRTcGFjZSA9IDA7XHJcbiAgbGV0IHJpZ2h0U3BhY2UgPSBvcHRzLndpZHRoICsgZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDAgJiYgb3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgICBsZWZ0U3BhY2UgPSAtb3B0cy5fc2Nyb2xsRGlzdGFuY2VfIC0gZWFjaFNwYWNpbmcgKiAyICsgb3B0cy5hcmVhWzNdO1xyXG4gICAgcmlnaHRTcGFjZSA9IGxlZnRTcGFjZSArIChvcHRzLnhBeGlzLml0ZW1Db3VudCArIDQpICogZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAvLyDov5nmrrXlvojnpZ7lpYfnmoTku6PnoIHnlKjkuo7op6PlhrNpb3MxNueahHNldFN0cm9rZVN0eWxl5aSx5pWI55qEYnVnXHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgIGNvbnRleHQubW92ZVRvKC0xMDAwMCwgLTEwMDAwKTtcclxuICAgIGNvbnRleHQubGluZVRvKC0xMDAwMSwgLTEwMDAxKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXRMaW5lRGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBsaW5lT3B0aW9uLCBwcm9jZXNzKTtcclxuICAgIGNhbFBvaW50cy5wdXNoKHBvaW50cyk7XHJcbiAgICB2YXIgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICBpZiAoZWFjaFNlcmllcy5saW5lVHlwZSA9PSAnZGFzaCcpIHtcclxuICAgICAgbGV0IGRhc2hMZW5ndGggPSBlYWNoU2VyaWVzLmRhc2hMZW5ndGggPyBlYWNoU2VyaWVzLmRhc2hMZW5ndGggOiA4O1xyXG4gICAgICBkYXNoTGVuZ3RoICo9IG9wdHMucGl4O1xyXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtkYXNoTGVuZ3RoLCBkYXNoTGVuZ3RoXSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgdmFyIHN0cm9rZUNvbG9yID0gZWFjaFNlcmllcy5jb2xvcjtcclxuICAgIGlmIChsaW5lT3B0aW9uLmxpbmVhclR5cGUgIT09ICdub25lJyAmJiBlYWNoU2VyaWVzLmxpbmVhckNvbG9yICYmIGVhY2hTZXJpZXMubGluZWFyQ29sb3IubGVuZ3RoID4gMCkge1xyXG4gICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuc3RhcnRYLCBvcHRzLmhlaWdodC8yLCBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuZW5kWCwgb3B0cy5oZWlnaHQvMik7XHJcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZWFjaFNlcmllcy5saW5lYXJDb2xvci5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGdyZC5hZGRDb2xvclN0b3AoZWFjaFNlcmllcy5saW5lYXJDb2xvcltpXVswXSwgaGV4VG9SZ2IoZWFjaFNlcmllcy5saW5lYXJDb2xvcltpXVsxXSwgMSkpO1xyXG4gICAgICB9XHJcbiAgICAgIHN0cm9rZUNvbG9yID0gZ3JkXHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHN0cm9rZUNvbG9yKTtcclxuICAgIGlmIChsaW5lT3B0aW9uLm9uU2hhZG93ID09IHRydWUgJiYgZWFjaFNlcmllcy5zZXRTaGFkb3cgJiYgZWFjaFNlcmllcy5zZXRTaGFkb3cubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb250ZXh0LnNldFNoYWRvdyhlYWNoU2VyaWVzLnNldFNoYWRvd1swXSwgZWFjaFNlcmllcy5zZXRTaGFkb3dbMV0sIGVhY2hTZXJpZXMuc2V0U2hhZG93WzJdLCBlYWNoU2VyaWVzLnNldFNoYWRvd1szXSk7XHJcbiAgICB9ZWxzZXtcclxuICAgICAgY29udGV4dC5zZXRTaGFkb3coMCwgMCwgMCwgJ3JnYmEoMCwwLDAsMCknKTtcclxuICAgIH1cclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGxpbmVPcHRpb24ud2lkdGgpO1xyXG4gICAgc3BsaXRQb2ludExpc3QuZm9yRWFjaChmdW5jdGlvbihwb2ludHMsIGluZGV4KSB7XHJcbiAgICAgIGlmIChwb2ludHMubGVuZ3RoID09PSAxKSB7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAvLyBjb250ZXh0LmFyYyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnksIDEsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgIGxldCBzdGFydFBvaW50ID0gMDtcclxuICAgICAgICBpZiAobGluZU9wdGlvbi50eXBlID09PSAnY3VydmUnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgdmFyIGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmJlemllckN1cnZlVG8oY3RybFBvaW50LmN0ckEueCwgY3RybFBvaW50LmN0ckEueSwgY3RybFBvaW50LmN0ckIueCwgY3RybFBvaW50LmN0ckIueSwgaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGluZU9wdGlvbi50eXBlID09PSAnc3RyYWlnaHQnKSB7XHJcbiAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgaWYgKHN0YXJ0UG9pbnQgPT0gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAobGluZU9wdGlvbi50eXBlID09PSAnc3RlcCcpIHtcclxuICAgICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgcG9pbnRzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoaiA+IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlICYmIGl0ZW0ueCA8IHJpZ2h0U3BhY2UpIHtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIHBvaW50c1tqIC0gMV0ueSk7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5saW5lVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVEYXNoKFtdKTtcclxuICAgIGlmIChvcHRzLmRhdGFQb2ludFNoYXBlICE9PSBmYWxzZSkge1xyXG4gICAgICBkcmF3UG9pbnRTaGFwZShwb2ludHMsIGVhY2hTZXJpZXMuY29sb3IsIGVhY2hTZXJpZXMucG9pbnRTaGFwZSwgY29udGV4dCwgb3B0cyk7XHJcbiAgICB9XHJcbiAgICBkcmF3QWN0aXZlUG9pbnQocG9pbnRzLCBlYWNoU2VyaWVzLmNvbG9yLCBlYWNoU2VyaWVzLnBvaW50U2hhcGUsIGNvbnRleHQsIG9wdHMsIGxpbmVPcHRpb24pO1xyXG4gIH0pO1xyXG4gIGlmIChvcHRzLmRhdGFMYWJlbCAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgICAgbGV0IHJhbmdlcywgbWluUmFuZ2UsIG1heFJhbmdlO1xyXG4gICAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICAgIG1pblJhbmdlID0gcmFuZ2VzLnBvcCgpO1xyXG4gICAgICBtYXhSYW5nZSA9IHJhbmdlcy5zaGlmdCgpO1xyXG4gICAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgICAgdmFyIHBvaW50cyA9IGdldERhdGFQb2ludHMoZGF0YSwgbWluUmFuZ2UsIG1heFJhbmdlLCB4QXhpc1BvaW50cywgZWFjaFNwYWNpbmcsIG9wdHMsIGNvbmZpZywgcHJvY2Vzcyk7XHJcbiAgICAgIGRyYXdQb2ludFRleHQocG9pbnRzLCBlYWNoU2VyaWVzLCBjb25maWcsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIHJldHVybiB7XHJcbiAgICB4QXhpc1BvaW50czogeEF4aXNQb2ludHMsXHJcbiAgICBjYWxQb2ludHM6IGNhbFBvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nOiBlYWNoU3BhY2luZ1xyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdNaXhEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgbGV0IHByb2Nlc3MgPSBhcmd1bWVudHMubGVuZ3RoID4gNCAmJiBhcmd1bWVudHNbNF0gIT09IHVuZGVmaW5lZCA/IGFyZ3VtZW50c1s0XSA6IDE7XHJcbiAgbGV0IHhBeGlzRGF0YSA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSxcclxuICAgIHhBeGlzUG9pbnRzID0geEF4aXNEYXRhLnhBeGlzUG9pbnRzLFxyXG4gICAgZWFjaFNwYWNpbmcgPSB4QXhpc0RhdGEuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGNvbHVtbk9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgd2lkdGg6IGVhY2hTcGFjaW5nIC8gMixcclxuICAgIGJhckJvcmRlckNpcmNsZTogZmFsc2UsXHJcbiAgICBiYXJCb3JkZXJSYWRpdXM6IFtdLFxyXG4gICAgc2VyaWVzR2FwOiAyLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgbGluZWFyT3BhY2l0eTogMSxcclxuICAgIGN1c3RvbUNvbG9yOiBbXSxcclxuICAgIGNvbG9yU3RvcDogMCxcclxuICB9LCBvcHRzLmV4dHJhLm1peC5jb2x1bW4pO1xyXG4gIGxldCBhcmVhT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBvcGFjaXR5OiAwLjIsXHJcbiAgICBncmFkaWVudDogZmFsc2VcclxuICB9LCBvcHRzLmV4dHJhLm1peC5hcmVhKTtcclxuICBsZXQgbGluZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgd2lkdGg6IDJcclxuICB9LCBvcHRzLmV4dHJhLm1peC5saW5lKTtcclxuICBsZXQgZW5kWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG4gIGxldCBjYWxQb2ludHMgPSBbXTtcclxuICB2YXIgY29sdW1uSW5kZXggPSAwO1xyXG4gIHZhciBjb2x1bW5MZW5ndGggPSAwO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBpZiAoZWFjaFNlcmllcy50eXBlID09ICdjb2x1bW4nKSB7XHJcbiAgICAgIGNvbHVtbkxlbmd0aCArPSAxO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGxldCBsZWZ0TnVtID0gLTI7XHJcbiAgbGV0IHJpZ2h0TnVtID0geEF4aXNQb2ludHMubGVuZ3RoICsgMjtcclxuICBsZXQgbGVmdFNwYWNlID0gMDtcclxuICBsZXQgcmlnaHRTcGFjZSA9IG9wdHMud2lkdGggKyBlYWNoU3BhY2luZztcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICAgIGxlZnROdW0gPSBNYXRoLmZsb29yKC1vcHRzLl9zY3JvbGxEaXN0YW5jZV8gLyBlYWNoU3BhY2luZykgLSAyO1xyXG4gICAgcmlnaHROdW0gPSBsZWZ0TnVtICsgb3B0cy54QXhpcy5pdGVtQ291bnQgKyA0O1xyXG4gICAgbGVmdFNwYWNlID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAtIGVhY2hTcGFjaW5nICogMiArIG9wdHMuYXJlYVszXTtcclxuICAgIHJpZ2h0U3BhY2UgPSBsZWZ0U3BhY2UgKyAob3B0cy54QXhpcy5pdGVtQ291bnQgKyA0KSAqIGVhY2hTcGFjaW5nO1xyXG4gIH1cclxuICBjb2x1bW5PcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3IoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUsIGNvbHVtbk9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gIHNlcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICByYW5nZXMgPSBbXS5jb25jYXQob3B0cy5jaGFydERhdGEueUF4aXNEYXRhLnJhbmdlc1tlYWNoU2VyaWVzLmluZGV4XSk7XHJcbiAgICBtaW5SYW5nZSA9IHJhbmdlcy5wb3AoKTtcclxuICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICB2YXIgZGF0YSA9IGVhY2hTZXJpZXMuZGF0YTtcclxuICAgIHZhciBwb2ludHMgPSBnZXREYXRhUG9pbnRzKGRhdGEsIG1pblJhbmdlLCBtYXhSYW5nZSwgeEF4aXNQb2ludHMsIGVhY2hTcGFjaW5nLCBvcHRzLCBjb25maWcsIHByb2Nlc3MpO1xyXG4gICAgY2FsUG9pbnRzLnB1c2gocG9pbnRzKTtcclxuICAgIC8vIOe7mOWItuafseeKtuaVsOaNruWbvlxyXG4gICAgaWYgKGVhY2hTZXJpZXMudHlwZSA9PSAnY29sdW1uJykge1xyXG4gICAgICBwb2ludHMgPSBmaXhDb2x1bWVEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbmd0aCwgY29sdW1uSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbaV07XHJcbiAgICAgICAgaWYgKGl0ZW0gIT09IG51bGwgJiYgaSA+IGxlZnROdW0gJiYgaSA8IHJpZ2h0TnVtKSB7XHJcbiAgICAgICAgICB2YXIgc3RhcnRYID0gaXRlbS54IC0gaXRlbS53aWR0aCAvIDI7XHJcbiAgICAgICAgICB2YXIgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBpdGVtLnkgLSBvcHRzLmFyZWFbMl07XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgdmFyIGZpbGxDb2xvciA9IGl0ZW0uY29sb3IgfHwgZWFjaFNlcmllcy5jb2xvclxyXG4gICAgICAgICAgdmFyIHN0cm9rZUNvbG9yID0gaXRlbS5jb2xvciB8fCBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICAgICAgICBpZiAoY29sdW1uT3B0aW9uLmxpbmVhclR5cGUgIT09ICdub25lJykge1xyXG4gICAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzdGFydFgsIGl0ZW0ueSwgc3RhcnRYLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIC8v6YCP5piO5riQ5Y+YXHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24ubGluZWFyVHlwZSA9PSAnb3BhY2l0eScpIHtcclxuICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKGZpbGxDb2xvciwgY29sdW1uT3B0aW9uLmxpbmVhck9wYWNpdHkpKTtcclxuICAgICAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGZpbGxDb2xvciwgMSkpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoY29sdW1uT3B0aW9uLmNvbG9yU3RvcCwgaGV4VG9SZ2IoY29sdW1uT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCBjb2x1bW5PcHRpb24ubGluZWFyT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2IoZmlsbENvbG9yLCAxKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICAvLyDlnIbop5LovrnmoYZcclxuICAgICAgICAgIGlmICgoY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyAmJiBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzLmxlbmd0aCA9PT0gNCkgfHwgY29sdW1uT3B0aW9uLmJhckJvcmRlckNpcmNsZSkge1xyXG4gICAgICAgICAgICBjb25zdCBsZWZ0ID0gc3RhcnRYO1xyXG4gICAgICAgICAgICBjb25zdCB0b3AgPSBpdGVtLnk7XHJcbiAgICAgICAgICAgIGNvbnN0IHdpZHRoID0gaXRlbS53aWR0aDtcclxuICAgICAgICAgICAgY29uc3QgaGVpZ2h0ID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gLSBpdGVtLnk7XHJcbiAgICAgICAgICAgIGlmIChjb2x1bW5PcHRpb24uYmFyQm9yZGVyQ2lyY2xlKSB7XHJcbiAgICAgICAgICAgICAgY29sdW1uT3B0aW9uLmJhckJvcmRlclJhZGl1cyA9IFt3aWR0aCAvIDIsIHdpZHRoIC8gMiwgMCwgMF07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgbGV0IFtyMCwgcjEsIHIyLCByM10gPSBjb2x1bW5PcHRpb24uYmFyQm9yZGVyUmFkaXVzO1xyXG4gICAgICAgICAgICBsZXQgbWluUmFkaXVzID0gTWF0aC5taW4od2lkdGgvMixoZWlnaHQvMik7XHJcbiAgICAgICAgICAgIHIwID0gcjAgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMDtcclxuICAgICAgICAgICAgcjEgPSByMSA+IG1pblJhZGl1cyA/IG1pblJhZGl1cyA6IHIxO1xyXG4gICAgICAgICAgICByMiA9IHIyID4gbWluUmFkaXVzID8gbWluUmFkaXVzIDogcjI7XHJcbiAgICAgICAgICAgIHIzID0gcjMgPiBtaW5SYWRpdXMgPyBtaW5SYWRpdXMgOiByMztcclxuICAgICAgICAgICAgcjAgPSByMCA8IDAgPyAwIDogcjA7XHJcbiAgICAgICAgICAgIHIxID0gcjEgPCAwID8gMCA6IHIxO1xyXG4gICAgICAgICAgICByMiA9IHIyIDwgMCA/IDAgOiByMjtcclxuICAgICAgICAgICAgcjMgPSByMyA8IDAgPyAwIDogcjM7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYXJjKGxlZnQgKyByMCwgdG9wICsgcjAsIHIwLCAtTWF0aC5QSSwgLU1hdGguUEkgLyAyKTtcclxuICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjEsIHRvcCArIHIxLCByMSwgLU1hdGguUEkgLyAyLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5hcmMobGVmdCArIHdpZHRoIC0gcjIsIHRvcCArIGhlaWdodCAtIHIyLCByMiwgMCwgTWF0aC5QSSAvIDIpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmFyYyhsZWZ0ICsgcjMsIHRvcCArIGhlaWdodCAtIHIzLCByMywgTWF0aC5QSSAvIDIsIE1hdGguUEkpO1xyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBpdGVtLnkpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBpdGVtLndpZHRoLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFgsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEpXHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc3Ryb2tlQ29sb3IpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgY29sdW1uSW5kZXggKz0gMTtcclxuICAgIH1cclxuICAgIC8v57uY5Yi25Yy65Z+f5Zu+5pWw5o2uXHJcbiAgICBpZiAoZWFjaFNlcmllcy50eXBlID09ICdhcmVhJykge1xyXG4gICAgICBsZXQgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3BsaXRQb2ludExpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICBsZXQgcG9pbnRzID0gc3BsaXRQb2ludExpc3RbaV07XHJcbiAgICAgICAgLy8g57uY5Yi25Yy65Z+f5pWw5o2uXHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgYXJlYU9wdGlvbi5vcGFjaXR5KSk7XHJcbiAgICAgICAgaWYgKGFyZWFPcHRpb24uZ3JhZGllbnQpIHtcclxuICAgICAgICAgIGxldCBncmFkaWVudCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgb3B0cy5hcmVhWzBdLCAwLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoJzAnLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyYWRpZW50LmFkZENvbG9yU3RvcCgnMS4wJywgaGV4VG9SZ2IoXCIjRkZGRkZGXCIsIDAuMSkpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZ3JhZGllbnQpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCBhcmVhT3B0aW9uLm9wYWNpdHkpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMiAqIG9wdHMucGl4KTtcclxuICAgICAgICBpZiAocG9pbnRzLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgIHZhciBmaXJzdFBvaW50ID0gcG9pbnRzWzBdO1xyXG4gICAgICAgICAgbGV0IGxhc3RQb2ludCA9IHBvaW50c1twb2ludHMubGVuZ3RoIC0gMV07XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhmaXJzdFBvaW50LngsIGZpcnN0UG9pbnQueSk7XHJcbiAgICAgICAgICBsZXQgc3RhcnRQb2ludCA9IDA7XHJcbiAgICAgICAgICBpZiAoZWFjaFNlcmllcy5zdHlsZSA9PT0gJ2N1cnZlJykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgY3RybFBvaW50ID0gY3JlYXRlQ3VydmVDb250cm9sUG9pbnRzKHBvaW50cywgaiAtIDEpO1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5iZXppZXJDdXJ2ZVRvKGN0cmxQb2ludC5jdHJBLngsIGN0cmxQb2ludC5jdHJBLnksIGN0cmxQb2ludC5jdHJCLngsIGN0cmxQb2ludC5jdHJCLnksIGl0ZW0ueCwgaXRlbS55KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8obGFzdFBvaW50LngsIGVuZFkpO1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8oZmlyc3RQb2ludC54LCBlbmRZKTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKGZpcnN0UG9pbnQueCwgZmlyc3RQb2ludC55KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgbGV0IGl0ZW0gPSBwb2ludHNbMF07XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLnggLSBlYWNoU3BhY2luZyAvIDIsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAvLyBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyBlYWNoU3BhY2luZyAvIDIsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAvLyBjb250ZXh0LmxpbmVUbyhpdGVtLnggKyBlYWNoU3BhY2luZyAvIDIsIGVuZFkpO1xyXG4gICAgICAgICAgLy8gY29udGV4dC5saW5lVG8oaXRlbS54IC0gZWFjaFNwYWNpbmcgLyAyLCBlbmRZKTtcclxuICAgICAgICAgIC8vIGNvbnRleHQubW92ZVRvKGl0ZW0ueCAtIGVhY2hTcGFjaW5nIC8gMiwgaXRlbS55KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgLy8g57uY5Yi25oqY57q/5pWw5o2u5Zu+XHJcbiAgICBpZiAoZWFjaFNlcmllcy50eXBlID09ICdsaW5lJykge1xyXG4gICAgICB2YXIgc3BsaXRQb2ludExpc3QgPSBzcGxpdFBvaW50cyhwb2ludHMsZWFjaFNlcmllcyk7XHJcbiAgICAgIHNwbGl0UG9pbnRMaXN0LmZvckVhY2goZnVuY3Rpb24ocG9pbnRzLCBpbmRleCkge1xyXG4gICAgICAgIGlmIChlYWNoU2VyaWVzLmxpbmVUeXBlID09ICdkYXNoJykge1xyXG4gICAgICAgICAgbGV0IGRhc2hMZW5ndGggPSBlYWNoU2VyaWVzLmRhc2hMZW5ndGggPyBlYWNoU2VyaWVzLmRhc2hMZW5ndGggOiA4O1xyXG4gICAgICAgICAgZGFzaExlbmd0aCAqPSBvcHRzLnBpeDtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW2Rhc2hMZW5ndGgsIGRhc2hMZW5ndGhdKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGVhY2hTZXJpZXMuY29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGxpbmVPcHRpb24ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgaWYgKHBvaW50cy5sZW5ndGggPT09IDEpIHtcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHBvaW50c1swXS54LCBwb2ludHNbMF0ueSk7XHJcbiAgICAgICAgICAvLyBjb250ZXh0LmFyYyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnksIDEsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9pbnRzWzBdLngsIHBvaW50c1swXS55KTtcclxuICAgICAgICAgIGxldCBzdGFydFBvaW50ID0gMDtcclxuICAgICAgICAgIGlmIChlYWNoU2VyaWVzLnN0eWxlID09ICdjdXJ2ZScpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBwb2ludHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICAgICAgICBsZXQgaXRlbSA9IHBvaW50c1tqXTtcclxuICAgICAgICAgICAgICBpZiAoc3RhcnRQb2ludCA9PSAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbS54LCBpdGVtLnkpO1xyXG4gICAgICAgICAgICAgICAgc3RhcnRQb2ludCA9IDE7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIGlmIChqID4gMCAmJiBpdGVtLnggPiBsZWZ0U3BhY2UgJiYgaXRlbS54IDwgcmlnaHRTcGFjZSkge1xyXG4gICAgICAgICAgICAgICAgdmFyIGN0cmxQb2ludCA9IGNyZWF0ZUN1cnZlQ29udHJvbFBvaW50cyhwb2ludHMsIGogLSAxKTtcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuYmV6aWVyQ3VydmVUbyhjdHJsUG9pbnQuY3RyQS54LCBjdHJsUG9pbnQuY3RyQS55LCBjdHJsUG9pbnQuY3RyQi54LCBjdHJsUG9pbnQuY3RyQi55LFxyXG4gICAgICAgICAgICAgICAgICBpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBqID0gMDsgaiA8IHBvaW50cy5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgICAgIGxldCBpdGVtID0gcG9pbnRzW2pdO1xyXG4gICAgICAgICAgICAgIGlmIChzdGFydFBvaW50ID09IDAgJiYgaXRlbS54ID4gbGVmdFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgICBzdGFydFBvaW50ID0gMTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgaWYgKGogPiAwICYmIGl0ZW0ueCA+IGxlZnRTcGFjZSAmJiBpdGVtLnggPCByaWdodFNwYWNlKSB7XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLngsIGl0ZW0ueSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludHNbMF0ueCwgcG9pbnRzWzBdLnkpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIC8vIOe7mOWItueCueaVsOaNruWbvlxyXG4gICAgaWYgKGVhY2hTZXJpZXMudHlwZSA9PSAncG9pbnQnKSB7XHJcbiAgICAgIGVhY2hTZXJpZXMuYWRkUG9pbnQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgaWYgKGVhY2hTZXJpZXMuYWRkUG9pbnQgPT0gdHJ1ZSAmJiBlYWNoU2VyaWVzLnR5cGUgIT09ICdjb2x1bW4nKSB7XHJcbiAgICAgIGRyYXdQb2ludFNoYXBlKHBvaW50cywgZWFjaFNlcmllcy5jb2xvciwgZWFjaFNlcmllcy5wb2ludFNoYXBlLCBjb250ZXh0LCBvcHRzKTtcclxuICAgIH1cclxuICB9KTtcclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHZhciBjb2x1bW5JbmRleCA9IDA7XHJcbiAgICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgICBsZXQgcmFuZ2VzLCBtaW5SYW5nZSwgbWF4UmFuZ2U7XHJcbiAgICAgIHJhbmdlcyA9IFtdLmNvbmNhdChvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEucmFuZ2VzW2VhY2hTZXJpZXMuaW5kZXhdKTtcclxuICAgICAgbWluUmFuZ2UgPSByYW5nZXMucG9wKCk7XHJcbiAgICAgIG1heFJhbmdlID0gcmFuZ2VzLnNoaWZ0KCk7XHJcbiAgICAgIHZhciBkYXRhID0gZWFjaFNlcmllcy5kYXRhO1xyXG4gICAgICB2YXIgcG9pbnRzID0gZ2V0RGF0YVBvaW50cyhkYXRhLCBtaW5SYW5nZSwgbWF4UmFuZ2UsIHhBeGlzUG9pbnRzLCBlYWNoU3BhY2luZywgb3B0cywgY29uZmlnLCBwcm9jZXNzKTtcclxuICAgICAgaWYgKGVhY2hTZXJpZXMudHlwZSAhPT0gJ2NvbHVtbicpIHtcclxuICAgICAgICBkcmF3UG9pbnRUZXh0KHBvaW50cywgZWFjaFNlcmllcywgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBwb2ludHMgPSBmaXhDb2x1bWVEYXRhKHBvaW50cywgZWFjaFNwYWNpbmcsIGNvbHVtbkxlbmd0aCwgY29sdW1uSW5kZXgsIGNvbmZpZywgb3B0cyk7XHJcbiAgICAgICAgZHJhd1BvaW50VGV4dChwb2ludHMsIGVhY2hTZXJpZXMsIGNvbmZpZywgY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgY29sdW1uSW5kZXggKz0gMTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIHJldHVybiB7XHJcbiAgICB4QXhpc1BvaW50czogeEF4aXNQb2ludHMsXHJcbiAgICBjYWxQb2ludHM6IGNhbFBvaW50cyxcclxuICAgIGVhY2hTcGFjaW5nOiBlYWNoU3BhY2luZyxcclxuICB9XHJcbn1cclxuXHJcblxyXG5mdW5jdGlvbiBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cykge1xyXG4gIHZhciB0b29sVGlwT3B0aW9uID0gb3B0cy5leHRyYS50b29sdGlwIHx8IHt9O1xyXG4gIGlmICh0b29sVGlwT3B0aW9uLmhvcml6ZW50YWxMaW5lICYmIG9wdHMudG9vbHRpcCAmJiBwcm9jZXNzID09PSAxICYmIChvcHRzLnR5cGUgPT0gJ2xpbmUnIHx8IG9wdHMudHlwZSA9PSAnYXJlYScgfHwgb3B0cy50eXBlID09ICdjb2x1bW4nIHx8IG9wdHMudHlwZSA9PSAnbW91bnQnIHx8IG9wdHMudHlwZSA9PSAnY2FuZGxlJyB8fCBvcHRzLnR5cGUgPT0gJ21peCcpKSB7XHJcbiAgICBkcmF3VG9vbFRpcEhvcml6ZW50YWxMaW5lKG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKVxyXG4gIH1cclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBpZiAob3B0cy5fc2Nyb2xsRGlzdGFuY2VfICYmIG9wdHMuX3Njcm9sbERpc3RhbmNlXyAhPT0gMCAmJiBvcHRzLmVuYWJsZVNjcm9sbCA9PT0gdHJ1ZSkge1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUob3B0cy5fc2Nyb2xsRGlzdGFuY2VfLCAwKTtcclxuICB9XHJcbiAgaWYgKG9wdHMudG9vbHRpcCAmJiBvcHRzLnRvb2x0aXAudGV4dExpc3QgJiYgb3B0cy50b29sdGlwLnRleHRMaXN0Lmxlbmd0aCAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3VG9vbFRpcChvcHRzLnRvb2x0aXAudGV4dExpc3QsIG9wdHMudG9vbHRpcC5vZmZzZXQsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgZWFjaFNwYWNpbmcsIHhBeGlzUG9pbnRzKTtcclxuICB9XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcblxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcblxyXG4gIGxldCB4QXhpc0RhdGEgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEsXHJcbiAgICB4QXhpc1BvaW50cyA9IHhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgIHN0YXJ0WCA9IHhBeGlzRGF0YS5zdGFydFgsXHJcbiAgICBlbmRYID0geEF4aXNEYXRhLmVuZFgsXHJcbiAgICBlYWNoU3BhY2luZyA9IHhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICB2YXIgYm91bmRhcnlHYXAgPSAnY2VudGVyJztcclxuICBpZiAob3B0cy50eXBlID09ICdiYXInIHx8IG9wdHMudHlwZSA9PSAnbGluZScgfHwgb3B0cy50eXBlID09ICdhcmVhJ3x8IG9wdHMudHlwZSA9PSAnc2NhdHRlcicgfHwgb3B0cy50eXBlID09ICdidWJibGUnKSB7XHJcbiAgICBib3VuZGFyeUdhcCA9IG9wdHMueEF4aXMuYm91bmRhcnlHYXA7XHJcbiAgfVxyXG4gIHZhciBzdGFydFkgPSBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXTtcclxuICB2YXIgZW5kWSA9IG9wdHMuYXJlYVswXTtcclxuXHJcbiAgLy/nu5jliLbmu5rliqjmnaFcclxuICBpZiAob3B0cy5lbmFibGVTY3JvbGwgJiYgb3B0cy54QXhpcy5zY3JvbGxTaG93KSB7XHJcbiAgICB2YXIgc2Nyb2xsWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdICsgY29uZmlnLnhBeGlzSGVpZ2h0O1xyXG4gICAgdmFyIHNjcm9sbFNjcmVlbldpZHRoID0gZW5kWCAtIHN0YXJ0WDtcclxuICAgIHZhciBzY3JvbGxUb3RhbFdpZHRoID0gZWFjaFNwYWNpbmcgKiAoeEF4aXNQb2ludHMubGVuZ3RoIC0gMSk7XHJcbiAgICBpZihvcHRzLnR5cGUgPT0gJ21vdW50JyAmJiBvcHRzLmV4dHJhICYmIG9wdHMuZXh0cmEubW91bnQgJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvICYmIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA+IDEpe1xyXG4gICAgICBpZihvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8+Mikgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvID0gMlxyXG4gICAgICBzY3JvbGxUb3RhbFdpZHRoICs9IChvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gLSAxKSplYWNoU3BhY2luZztcclxuICAgIH1cclxuICAgIHZhciBzY3JvbGxXaWR0aCA9IHNjcm9sbFNjcmVlbldpZHRoICogc2Nyb2xsU2NyZWVuV2lkdGggLyBzY3JvbGxUb3RhbFdpZHRoO1xyXG4gICAgdmFyIHNjcm9sbExlZnQgPSAwO1xyXG4gICAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXykge1xyXG4gICAgICBzY3JvbGxMZWZ0ID0gLW9wdHMuX3Njcm9sbERpc3RhbmNlXyAqIChzY3JvbGxTY3JlZW5XaWR0aCkgLyBzY3JvbGxUb3RhbFdpZHRoO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgncm91bmQnKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDYgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuc2Nyb2xsQmFja2dyb3VuZENvbG9yIHx8IFwiI0VGRUJFRlwiKTtcclxuICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgc2Nyb2xsWSk7XHJcbiAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCBzY3JvbGxZKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgncm91bmQnKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDYgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuc2Nyb2xsQ29sb3IgfHwgXCIjQTZBNkE2XCIpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgc2Nyb2xsTGVmdCwgc2Nyb2xsWSk7XHJcbiAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyBzY3JvbGxMZWZ0ICsgc2Nyb2xsV2lkdGgsIHNjcm9sbFkpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ2J1dHQnKTtcclxuICB9XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDApIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgfVxyXG4gIC8v57uY5Yi2WOi9tOWIu+W6pue6v1xyXG4gIGlmIChvcHRzLnhBeGlzLmNhbGlicmF0aW9uID09PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuZ3JpZENvbG9yIHx8IFwiI2NjY2NjY1wiKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgnYnV0dCcpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIHhBeGlzUG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgaWYgKGluZGV4ID4gMCkge1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbSAtIGVhY2hTcGFjaW5nIC8gMiwgc3RhcnRZKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtIC0gZWFjaFNwYWNpbmcgLyAyLCBzdGFydFkgKyAzICogb3B0cy5waXgpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG4gIC8v57uY5Yi2WOi9tOe9keagvFxyXG4gIGlmIChvcHRzLnhBeGlzLmRpc2FibGVHcmlkICE9PSB0cnVlKSB7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKG9wdHMueEF4aXMuZ3JpZENvbG9yIHx8IFwiI2NjY2NjY1wiKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgnYnV0dCcpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIGlmIChvcHRzLnhBeGlzLmdyaWRUeXBlID09ICdkYXNoJykge1xyXG4gICAgICBjb250ZXh0LnNldExpbmVEYXNoKFtvcHRzLnhBeGlzLmRhc2hMZW5ndGggKiBvcHRzLnBpeCwgb3B0cy54QXhpcy5kYXNoTGVuZ3RoICogb3B0cy5waXhdKTtcclxuICAgIH1cclxuICAgIG9wdHMueEF4aXMuZ3JpZEV2YWwgPSBvcHRzLnhBeGlzLmdyaWRFdmFsIHx8IDE7XHJcbiAgICB4QXhpc1BvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpbmRleCAlIG9wdHMueEF4aXMuZ3JpZEV2YWwgPT0gMCkge1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oaXRlbSwgc3RhcnRZKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLCBlbmRZKTtcclxuICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICAgIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIH1cclxuICAvL+e7mOWItljovbTmlofmoYhcclxuICBpZiAob3B0cy54QXhpcy5kaXNhYmxlZCAhPT0gdHJ1ZSkge1xyXG4gICAgLy8g5a+5WOi9tOWIl+ihqOWBmuaKveeogOWkhOeQhlxyXG4gICAgLy/pu5jorqTlhajpg6jmmL7npLpY6L205qCH562+XHJcbiAgICBsZXQgbWF4WEF4aXNMaXN0TGVuZ3RoID0gY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgICAvL+WmguaenOiuvue9ruS6hljovbTljZXlsY/mlbDph49cclxuICAgIGlmIChvcHRzLnhBeGlzLmxhYmVsQ291bnQpIHtcclxuICAgICAgLy/lpoLmnpzorr7nva5Y6L205a+G5bqmXHJcbiAgICAgIGlmIChvcHRzLnhBeGlzLml0ZW1Db3VudCkge1xyXG4gICAgICAgIG1heFhBeGlzTGlzdExlbmd0aCA9IE1hdGguY2VpbChjYXRlZ29yaWVzLmxlbmd0aCAvIG9wdHMueEF4aXMuaXRlbUNvdW50ICogb3B0cy54QXhpcy5sYWJlbENvdW50KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBtYXhYQXhpc0xpc3RMZW5ndGggPSBvcHRzLnhBeGlzLmxhYmVsQ291bnQ7XHJcbiAgICAgIH1cclxuICAgICAgbWF4WEF4aXNMaXN0TGVuZ3RoIC09IDE7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHJhdGlvID0gTWF0aC5jZWlsKGNhdGVnb3JpZXMubGVuZ3RoIC8gbWF4WEF4aXNMaXN0TGVuZ3RoKTtcclxuXHJcbiAgICBsZXQgbmV3Q2F0ZWdvcmllcyA9IFtdO1xyXG4gICAgbGV0IGNnTGVuZ3RoID0gY2F0ZWdvcmllcy5sZW5ndGg7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNnTGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKGkgJSByYXRpbyAhPT0gMCkge1xyXG4gICAgICAgIG5ld0NhdGVnb3JpZXMucHVzaChcIlwiKTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBuZXdDYXRlZ29yaWVzLnB1c2goY2F0ZWdvcmllc1tpXSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIG5ld0NhdGVnb3JpZXNbY2dMZW5ndGggLSAxXSA9IGNhdGVnb3JpZXNbY2dMZW5ndGggLSAxXTtcclxuICAgIHZhciB4QXhpc0ZvbnRTaXplID0gb3B0cy54QXhpcy5mb250U2l6ZSAqIG9wdHMucGl4IHx8IGNvbmZpZy5mb250U2l6ZTtcclxuICAgIGlmIChjb25maWcuX3hBeGlzVGV4dEFuZ2xlXyA9PT0gMCkge1xyXG4gICAgICBuZXdDYXRlZ29yaWVzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgeGl0ZW0gPSBvcHRzLnhBeGlzLmZvcm1hdHRlciA/IG9wdHMueEF4aXMuZm9ybWF0dGVyKGl0ZW0saW5kZXgsb3B0cykgOiBpdGVtO1xyXG4gICAgICAgIHZhciBvZmZzZXQgPSAtbWVhc3VyZVRleHQoU3RyaW5nKHhpdGVtKSwgeEF4aXNGb250U2l6ZSwgY29udGV4dCkgLyAyO1xyXG4gICAgICAgIGlmIChib3VuZGFyeUdhcCA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgb2Zmc2V0ICs9IGVhY2hTcGFjaW5nIC8gMjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IDA7XHJcbiAgICAgICAgaWYgKG9wdHMueEF4aXMuc2Nyb2xsU2hvdykge1xyXG4gICAgICAgICAgc2Nyb2xsSGVpZ2h0ID0gNiAqIG9wdHMucGl4O1xyXG4gICAgICAgIH1cclxuICAgICAgICAvLyDlpoLmnpzlnKjkuLvop4blm77ljLrln5/lhoVcclxuICAgICAgICB2YXIgX3Njcm9sbERpc3RhbmNlXyA9IG9wdHMuX3Njcm9sbERpc3RhbmNlXyB8fCAwO1xyXG4gICAgICAgIHZhciB0cnVlUG9pbnRzID0gYm91bmRhcnlHYXAgPT0gJ2NlbnRlcicgPyB4QXhpc1BvaW50c1tpbmRleF0gKyBlYWNoU3BhY2luZyAvIDIgOiB4QXhpc1BvaW50c1tpbmRleF07XHJcbiAgICAgICAgaWYoKHRydWVQb2ludHMgLSBNYXRoLmFicyhfc2Nyb2xsRGlzdGFuY2VfKSkgPj0gKG9wdHMuYXJlYVszXSAtIDEpICYmICh0cnVlUG9pbnRzIC0gTWF0aC5hYnMoX3Njcm9sbERpc3RhbmNlXykpIDw9IChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdICsgMSkpe1xyXG4gICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoeEF4aXNGb250U2l6ZSk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLnhBeGlzLmZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyh4aXRlbSksIHhBeGlzUG9pbnRzW2luZGV4XSArIG9mZnNldCwgc3RhcnRZICsgb3B0cy54QXhpcy5tYXJnaW5Ub3AgKiBvcHRzLnBpeCArIChvcHRzLnhBeGlzLmxpbmVIZWlnaHQgLSBvcHRzLnhBeGlzLmZvbnRTaXplKSAqIG9wdHMucGl4IC8gMiArIG9wdHMueEF4aXMuZm9udFNpemUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgbmV3Q2F0ZWdvcmllcy5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgdmFyIHhpdGVtID0gb3B0cy54QXhpcy5mb3JtYXR0ZXIgPyBvcHRzLnhBeGlzLmZvcm1hdHRlcihpdGVtKSA6IGl0ZW07XHJcbiAgICAgICAgLy8g5aaC5p6c5Zyo5Li76KeG5Zu+5Yy65Z+f5YaFXHJcbiAgICAgICAgdmFyIF9zY3JvbGxEaXN0YW5jZV8gPSBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gfHwgMDtcclxuICAgICAgICB2YXIgdHJ1ZVBvaW50cyA9IGJvdW5kYXJ5R2FwID09ICdjZW50ZXInID8geEF4aXNQb2ludHNbaW5kZXhdICsgZWFjaFNwYWNpbmcgLyAyIDogeEF4aXNQb2ludHNbaW5kZXhdO1xyXG4gICAgICAgIGlmKCh0cnVlUG9pbnRzIC0gTWF0aC5hYnMoX3Njcm9sbERpc3RhbmNlXykpID49IChvcHRzLmFyZWFbM10gLSAxKSAmJiAodHJ1ZVBvaW50cyAtIE1hdGguYWJzKF9zY3JvbGxEaXN0YW5jZV8pKSA8PSAob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSArIDEpKXtcclxuICAgICAgICAgIGNvbnRleHQuc2F2ZSgpO1xyXG4gICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoeEF4aXNGb250U2l6ZSk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLnhBeGlzLmZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgICAgICB2YXIgdGV4dFdpZHRoID0gbWVhc3VyZVRleHQoU3RyaW5nKHhpdGVtKSwgeEF4aXNGb250U2l6ZSwgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgb2Zmc2V0WCA9IHhBeGlzUG9pbnRzW2luZGV4XTtcclxuICAgICAgICAgIGlmIChib3VuZGFyeUdhcCA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgICBvZmZzZXRYID0geEF4aXNQb2ludHNbaW5kZXhdICsgZWFjaFNwYWNpbmcgLyAyO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgdmFyIHNjcm9sbEhlaWdodCA9IDA7XHJcbiAgICAgICAgICBpZiAob3B0cy54QXhpcy5zY3JvbGxTaG93KSB7XHJcbiAgICAgICAgICAgIHNjcm9sbEhlaWdodCA9IDYgKiBvcHRzLnBpeDtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIHZhciBvZmZzZXRZID0gc3RhcnRZICsgb3B0cy54QXhpcy5tYXJnaW5Ub3AgKiBvcHRzLnBpeCArIHhBeGlzRm9udFNpemUgLSB4QXhpc0ZvbnRTaXplICogTWF0aC5hYnMoTWF0aC5zaW4oY29uZmlnLl94QXhpc1RleHRBbmdsZV8pKTtcclxuICAgICAgICAgIGlmKG9wdHMueEF4aXMucm90YXRlQW5nbGUgPCAwKXtcclxuICAgICAgICAgICAgb2Zmc2V0WCAtPSB4QXhpc0ZvbnRTaXplIC8gMjtcclxuICAgICAgICAgICAgdGV4dFdpZHRoID0gMDtcclxuICAgICAgICAgIH1lbHNle1xyXG4gICAgICAgICAgICBvZmZzZXRYICs9IHhBeGlzRm9udFNpemUgLyAyO1xyXG4gICAgICAgICAgICB0ZXh0V2lkdGggPSAtdGV4dFdpZHRoO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC50cmFuc2xhdGUob2Zmc2V0WCwgb2Zmc2V0WSk7XHJcbiAgICAgICAgICBjb250ZXh0LnJvdGF0ZSgtMSAqIGNvbmZpZy5feEF4aXNUZXh0QW5nbGVfKTtcclxuICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKHhpdGVtKSwgdGV4dFdpZHRoICwgMCApO1xyXG4gICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICBcclxuICAvL+eUu1jovbTmoIfpophcclxuICBpZiAob3B0cy54QXhpcy50aXRsZSkge1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUob3B0cy54QXhpcy50aXRsZUZvbnRTaXplICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUob3B0cy54QXhpcy50aXRsZUZvbnRDb2xvcik7XHJcbiAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhvcHRzLnhBeGlzLnRpdGxlKSwgb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSArIG9wdHMueEF4aXMudGl0bGVPZmZzZXRYICogb3B0cy5waXgsb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0gKyBvcHRzLnhBeGlzLm1hcmdpblRvcCAqIG9wdHMucGl4ICsgKG9wdHMueEF4aXMubGluZUhlaWdodCAtIG9wdHMueEF4aXMudGl0bGVGb250U2l6ZSkgKiBvcHRzLnBpeCAvIDIgKyAob3B0cy54QXhpcy50aXRsZUZvbnRTaXplICsgb3B0cy54QXhpcy50aXRsZU9mZnNldFkpICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG4gIFxyXG4gIC8v57uY5Yi2WOi9tOi9tOe6v1xyXG4gIGlmIChvcHRzLnhBeGlzLmF4aXNMaW5lKSB7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShvcHRzLnhBeGlzLmF4aXNMaW5lQ29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdZQXhpc0dyaWQoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgaWYgKG9wdHMueUF4aXMuZGlzYWJsZUdyaWQgPT09IHRydWUpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgbGV0IHNwYWNpbmdWYWxpZCA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdO1xyXG4gIGxldCBlYWNoU3BhY2luZyA9IHNwYWNpbmdWYWxpZCAvIG9wdHMueUF4aXMuc3BsaXROdW1iZXI7XHJcbiAgbGV0IHN0YXJ0WCA9IG9wdHMuYXJlYVszXTtcclxuICBsZXQgeEF4aXNQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEueEF4aXNQb2ludHMsXHJcbiAgICB4QXhpc2VhY2hTcGFjaW5nID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLmVhY2hTcGFjaW5nO1xyXG4gIGxldCBUb3RhbFdpZHRoID0geEF4aXNlYWNoU3BhY2luZyAqICh4QXhpc1BvaW50cy5sZW5ndGggLSAxKTtcclxuICBpZihvcHRzLnR5cGUgPT0gJ21vdW50JyAmJiBvcHRzLmV4dHJhICYmIG9wdHMuZXh0cmEubW91bnQgJiYgb3B0cy5leHRyYS5tb3VudC53aWR0aFJhdGlvICYmIG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbyA+IDEgKXtcclxuICAgIGlmKG9wdHMuZXh0cmEubW91bnQud2lkdGhSYXRpbz4yKSBvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gPSAyXHJcbiAgICBUb3RhbFdpZHRoICs9IChvcHRzLmV4dHJhLm1vdW50LndpZHRoUmF0aW8gLSAxKSAqIHhBeGlzZWFjaFNwYWNpbmc7XHJcbiAgfVxyXG4gIGxldCBlbmRYID0gc3RhcnRYICsgVG90YWxXaWR0aDtcclxuICBsZXQgcG9pbnRzID0gW107XHJcbiAgbGV0IHN0YXJ0WSA9IDFcclxuICBpZiAob3B0cy54QXhpcy5heGlzTGluZSA9PT0gZmFsc2UpIHtcclxuICAgIHN0YXJ0WSA9IDBcclxuICB9XHJcbiAgZm9yIChsZXQgaSA9IHN0YXJ0WTsgaSA8IG9wdHMueUF4aXMuc3BsaXROdW1iZXIgKyAxOyBpKyspIHtcclxuICAgIHBvaW50cy5wdXNoKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdIC0gZWFjaFNwYWNpbmcgKiBpKTtcclxuICB9XHJcbiAgY29udGV4dC5zYXZlKCk7XHJcbiAgaWYgKG9wdHMuX3Njcm9sbERpc3RhbmNlXyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gIT09IDApIHtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKG9wdHMuX3Njcm9sbERpc3RhbmNlXywgMCk7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnlBeGlzLmdyaWRUeXBlID09ICdkYXNoJykge1xyXG4gICAgY29udGV4dC5zZXRMaW5lRGFzaChbb3B0cy55QXhpcy5kYXNoTGVuZ3RoICogb3B0cy5waXgsIG9wdHMueUF4aXMuZGFzaExlbmd0aCAqIG9wdHMucGl4XSk7XHJcbiAgfVxyXG4gIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUob3B0cy55QXhpcy5ncmlkQ29sb3IpO1xyXG4gIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgcG9pbnRzLmZvckVhY2goZnVuY3Rpb24oaXRlbSwgaW5kZXgpIHtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIGl0ZW0pO1xyXG4gICAgY29udGV4dC5saW5lVG8oZW5kWCwgaXRlbSk7XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIH0pO1xyXG4gIGNvbnRleHQuc2V0TGluZURhc2goW10pO1xyXG4gIGNvbnRleHQucmVzdG9yZSgpO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3WUF4aXMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBpZiAob3B0cy55QXhpcy5kaXNhYmxlZCA9PT0gdHJ1ZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICB2YXIgc3BhY2luZ1ZhbGlkID0gb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl07XHJcbiAgdmFyIGVhY2hTcGFjaW5nID0gc3BhY2luZ1ZhbGlkIC8gb3B0cy55QXhpcy5zcGxpdE51bWJlcjtcclxuICB2YXIgc3RhcnRYID0gb3B0cy5hcmVhWzNdO1xyXG4gIHZhciBlbmRYID0gb3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXTtcclxuICB2YXIgZW5kWSA9IG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdO1xyXG4gIC8vIHNldCBZQXhpcyBiYWNrZ3JvdW5kXHJcbiAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICBjb250ZXh0LnNldEZpbGxTdHlsZShvcHRzLmJhY2tncm91bmQpO1xyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCA9PSB0cnVlICYmIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gJiYgb3B0cy54QXhpcy5zY3JvbGxQb3NpdGlvbiAhPT0gJ2xlZnQnKSB7XHJcbiAgICBjb250ZXh0LmZpbGxSZWN0KDAsIDAsIHN0YXJ0WCwgZW5kWSArIDIgKiBvcHRzLnBpeCk7XHJcbiAgfVxyXG4gIGlmIChvcHRzLmVuYWJsZVNjcm9sbCA9PSB0cnVlICYmIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gJiYgb3B0cy54QXhpcy5zY3JvbGxQb3NpdGlvbiAhPT0gJ3JpZ2h0Jykge1xyXG4gICAgY29udGV4dC5maWxsUmVjdChlbmRYLCAwLCBvcHRzLndpZHRoLCBlbmRZICsgMiAqIG9wdHMucGl4KTtcclxuICB9XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIFxyXG4gIGxldCB0U3RhcnRMZWZ0ID0gb3B0cy5hcmVhWzNdO1xyXG4gIGxldCB0U3RhcnRSaWdodCA9IG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV07XHJcbiAgbGV0IHRTdGFydENlbnRlciA9IG9wdHMuYXJlYVszXSArIChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDI7XHJcbiAgaWYgKG9wdHMueUF4aXMuZGF0YSkge1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBvcHRzLnlBeGlzLmRhdGEubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IHlEYXRhID0gb3B0cy55QXhpcy5kYXRhW2ldO1xyXG4gICAgICB2YXIgcG9pbnRzID0gW107XHJcbiAgICAgIGlmKHlEYXRhLnR5cGUgPT09ICdjYXRlZ29yaWVzJyl7XHJcbiAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPD0geURhdGEuY2F0ZWdvcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgICAgcG9pbnRzLnB1c2gob3B0cy5hcmVhWzBdICsgc3BhY2luZ1ZhbGlkIC8geURhdGEuY2F0ZWdvcmllcy5sZW5ndGggLyAyICsgc3BhY2luZ1ZhbGlkIC8geURhdGEuY2F0ZWdvcmllcy5sZW5ndGggKiBpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDw9IG9wdHMueUF4aXMuc3BsaXROdW1iZXI7IGkrKykge1xyXG4gICAgICAgICAgcG9pbnRzLnB1c2gob3B0cy5hcmVhWzBdICsgZWFjaFNwYWNpbmcgKiBpKTtcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgaWYgKHlEYXRhLmRpc2FibGVkICE9PSB0cnVlKSB7XHJcbiAgICAgICAgbGV0IHJhbmdlc0Zvcm1hdCA9IG9wdHMuY2hhcnREYXRhLnlBeGlzRGF0YS5yYW5nZXNGb3JtYXRbaV07XHJcbiAgICAgICAgbGV0IHlBeGlzRm9udFNpemUgPSB5RGF0YS5mb250U2l6ZSA/IHlEYXRhLmZvbnRTaXplICogb3B0cy5waXggOiBjb25maWcuZm9udFNpemU7XHJcbiAgICAgICAgbGV0IHlBeGlzV2lkdGggPSBvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEueUF4aXNXaWR0aFtpXTtcclxuICAgICAgICBsZXQgdGV4dEFsaWduID0geURhdGEudGV4dEFsaWduIHx8IFwicmlnaHRcIjtcclxuICAgICAgICAvL+eUu1novbTliLvluqblj4rmlofmoYhcclxuICAgICAgICByYW5nZXNGb3JtYXQuZm9yRWFjaChmdW5jdGlvbihpdGVtLCBpbmRleCkge1xyXG4gICAgICAgICAgdmFyIHBvcyA9IHBvaW50c1tpbmRleF07XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZSh5QXhpc0ZvbnRTaXplKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHlEYXRhLmF4aXNMaW5lQ29sb3IgfHwgJyNjY2NjY2MnKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHlEYXRhLmZvbnRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgICAgICBsZXQgdG1wc3RyYXQgPSAwO1xyXG4gICAgICAgICAgbGV0IGdhcHdpZHRoID0gNCAqIG9wdHMucGl4O1xyXG4gICAgICAgICAgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgICAgIC8v55S75Yi75bqm57q/XHJcbiAgICAgICAgICAgIGlmICh5RGF0YS5jYWxpYnJhdGlvbiA9PSB0cnVlKSB7XHJcbiAgICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0TGVmdCwgcG9zKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRMZWZ0IC0gMyAqIG9wdHMucGl4LCBwb3MpO1xyXG4gICAgICAgICAgICAgIGdhcHdpZHRoICs9IDMgKiBvcHRzLnBpeDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvL+eUu+aWh+Wtl1xyXG4gICAgICAgICAgICBzd2l0Y2ggKHRleHRBbGlnbikge1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRMZWZ0IC0geUF4aXNXaWR0aC53aWR0aFxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgICAgY2FzZSBcInJpZ2h0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbigncmlnaHQnKTtcclxuICAgICAgICAgICAgICAgIHRtcHN0cmF0ID0gdFN0YXJ0TGVmdCAtIGdhcHdpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRMZWZ0IC0geUF4aXNXaWR0aC53aWR0aCAvIDJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhpdGVtKSwgdG1wc3RyYXQsIHBvcyArIHlBeGlzRm9udFNpemUgLyAyIC0gMyAqIG9wdHMucGl4KTtcclxuXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ3JpZ2h0Jykge1xyXG4gICAgICAgICAgICAvL+eUu+WIu+W6pue6v1xyXG4gICAgICAgICAgICBpZiAoeURhdGEuY2FsaWJyYXRpb24gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHRTdGFydFJpZ2h0LCBwb3MpO1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHRTdGFydFJpZ2h0ICsgMyAqIG9wdHMucGl4LCBwb3MpO1xyXG4gICAgICAgICAgICAgIGdhcHdpZHRoICs9IDMgKiBvcHRzLnBpeDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBzd2l0Y2ggKHRleHRBbGlnbikge1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJsZWZ0XCI6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRSaWdodCArIGdhcHdpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBjYXNlIFwicmlnaHRcIjpcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdyaWdodCcpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRSaWdodCArIHlBeGlzV2lkdGgud2lkdGhcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignY2VudGVyJyk7XHJcbiAgICAgICAgICAgICAgICB0bXBzdHJhdCA9IHRTdGFydFJpZ2h0ICsgeUF4aXNXaWR0aC53aWR0aCAvIDJcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KFN0cmluZyhpdGVtKSwgdG1wc3RyYXQsIHBvcyArIHlBeGlzRm9udFNpemUgLyAyIC0gMyAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoeUF4aXNXaWR0aC5wb3NpdGlvbiA9PSAnY2VudGVyJykge1xyXG4gICAgICAgICAgICAvL+eUu+WIu+W6pue6v1xyXG4gICAgICAgICAgICBpZiAoeURhdGEuY2FsaWJyYXRpb24gPT0gdHJ1ZSkge1xyXG4gICAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKHRTdGFydENlbnRlciwgcG9zKTtcclxuICAgICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRDZW50ZXIgLSAzICogb3B0cy5waXgsIHBvcyk7XHJcbiAgICAgICAgICAgICAgZ2Fwd2lkdGggKz0gMyAqIG9wdHMucGl4O1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8v55S75paH5a2XXHJcbiAgICAgICAgICAgIHN3aXRjaCAodGV4dEFsaWduKSB7XHJcbiAgICAgICAgICAgICAgY2FzZSBcImxlZnRcIjpcclxuICAgICAgICAgICAgICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICAgICAgICAgICAgICB0bXBzdHJhdCA9IHRTdGFydENlbnRlciAtIHlBeGlzV2lkdGgud2lkdGhcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICAgIGNhc2UgXCJyaWdodFwiOlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ3JpZ2h0Jyk7XHJcbiAgICAgICAgICAgICAgICB0bXBzdHJhdCA9IHRTdGFydENlbnRlciAtIGdhcHdpZHRoXHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgICBkZWZhdWx0OlxyXG4gICAgICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICAgICAgdG1wc3RyYXQgPSB0U3RhcnRDZW50ZXIgLSB5QXhpc1dpZHRoLndpZHRoIC8gMlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoU3RyaW5nKGl0ZW0pLCB0bXBzdHJhdCwgcG9zICsgeUF4aXNGb250U2l6ZSAvIDIgLSAzICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICAgIC8v55S7Wei9tOi9tOe6v1xyXG4gICAgICAgIGlmICh5RGF0YS5heGlzTGluZSAhPT0gZmFsc2UpIHtcclxuICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHlEYXRhLmF4aXNMaW5lQ29sb3IgfHwgJyNjY2NjY2MnKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBpZiAoeUF4aXNXaWR0aC5wb3NpdGlvbiA9PSAnbGVmdCcpIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0TGVmdCwgb3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMl0pO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyh0U3RhcnRMZWZ0LCBvcHRzLmFyZWFbMF0pO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0UmlnaHQsIG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzJdKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8odFN0YXJ0UmlnaHQsIG9wdHMuYXJlYVswXSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2NlbnRlcicpIHtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8odFN0YXJ0Q2VudGVyLCBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHRTdGFydENlbnRlciwgb3B0cy5hcmVhWzBdKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIC8v55S7Wei9tOagh+mimFxyXG4gICAgICAgIGlmIChvcHRzLnlBeGlzLnNob3dUaXRsZSkge1xyXG4gICAgICAgICAgbGV0IHRpdGxlRm9udFNpemUgPSB5RGF0YS50aXRsZUZvbnRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplO1xyXG4gICAgICAgICAgbGV0IHRpdGxlID0geURhdGEudGl0bGU7XHJcbiAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgY29udGV4dC5zZXRGb250U2l6ZSh0aXRsZUZvbnRTaXplKTtcclxuICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHlEYXRhLnRpdGxlRm9udENvbG9yIHx8IG9wdHMuZm9udENvbG9yKTtcclxuICAgICAgICAgIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdsZWZ0Jykge1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRpdGxlLCB0U3RhcnRMZWZ0IC0gbWVhc3VyZVRleHQodGl0bGUsIHRpdGxlRm9udFNpemUsIGNvbnRleHQpIC8gMiArICh5RGF0YS50aXRsZU9mZnNldFggfHwgMCksIG9wdHMuYXJlYVswXSAtICgxMCAtICh5RGF0YS50aXRsZU9mZnNldFkgfHwgMCkpICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdyaWdodCcpIHtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0aXRsZSwgdFN0YXJ0UmlnaHQgLSBtZWFzdXJlVGV4dCh0aXRsZSwgdGl0bGVGb250U2l6ZSwgY29udGV4dCkgLyAyICsgKHlEYXRhLnRpdGxlT2Zmc2V0WCB8fCAwKSwgb3B0cy5hcmVhWzBdIC0gKDEwIC0gKHlEYXRhLnRpdGxlT2Zmc2V0WSB8fCAwKSkgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKHlBeGlzV2lkdGgucG9zaXRpb24gPT0gJ2NlbnRlcicpIHtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0aXRsZSwgdFN0YXJ0Q2VudGVyIC0gbWVhc3VyZVRleHQodGl0bGUsIHRpdGxlRm9udFNpemUsIGNvbnRleHQpIC8gMiArICh5RGF0YS50aXRsZU9mZnNldFggfHwgMCksIG9wdHMuYXJlYVswXSAtICgxMCAtICh5RGF0YS50aXRsZU9mZnNldFkgfHwgMCkpICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmICh5QXhpc1dpZHRoLnBvc2l0aW9uID09ICdsZWZ0Jykge1xyXG4gICAgICAgICAgdFN0YXJ0TGVmdCAtPSAoeUF4aXNXaWR0aC53aWR0aCArIG9wdHMueUF4aXMucGFkZGluZyAqIG9wdHMucGl4KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdFN0YXJ0UmlnaHQgKz0geUF4aXNXaWR0aC53aWR0aCArIG9wdHMueUF4aXMucGFkZGluZyAqIG9wdHMucGl4O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdMZWdlbmQoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIGNoYXJ0RGF0YSkge1xyXG4gIGlmIChvcHRzLmxlZ2VuZC5zaG93ID09PSBmYWxzZSkge1xyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICBsZXQgbGVnZW5kRGF0YSA9IGNoYXJ0RGF0YS5sZWdlbmREYXRhO1xyXG4gIGxldCBsZWdlbmRMaXN0ID0gbGVnZW5kRGF0YS5wb2ludHM7XHJcbiAgbGV0IGxlZ2VuZEFyZWEgPSBsZWdlbmREYXRhLmFyZWE7XHJcbiAgbGV0IHBhZGRpbmcgPSBvcHRzLmxlZ2VuZC5wYWRkaW5nICogb3B0cy5waXg7XHJcbiAgbGV0IGZvbnRTaXplID0gb3B0cy5sZWdlbmQuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICBsZXQgc2hhcGVXaWR0aCA9IDE1ICogb3B0cy5waXg7XHJcbiAgbGV0IHNoYXBlUmlnaHQgPSA1ICogb3B0cy5waXg7XHJcbiAgbGV0IGl0ZW1HYXAgPSBvcHRzLmxlZ2VuZC5pdGVtR2FwICogb3B0cy5waXg7XHJcbiAgbGV0IGxpbmVIZWlnaHQgPSBNYXRoLm1heChvcHRzLmxlZ2VuZC5saW5lSGVpZ2h0ICogb3B0cy5waXgsIGZvbnRTaXplKTtcclxuICAvL+eUu+iDjOaZr+WPiui+ueahhlxyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgY29udGV4dC5zZXRMaW5lV2lkdGgob3B0cy5sZWdlbmQuYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgY29udGV4dC5zZXRTdHJva2VTdHlsZShvcHRzLmxlZ2VuZC5ib3JkZXJDb2xvcik7XHJcbiAgY29udGV4dC5zZXRGaWxsU3R5bGUob3B0cy5sZWdlbmQuYmFja2dyb3VuZENvbG9yKTtcclxuICBjb250ZXh0Lm1vdmVUbyhsZWdlbmRBcmVhLnN0YXJ0LngsIGxlZ2VuZEFyZWEuc3RhcnQueSk7XHJcbiAgY29udGV4dC5yZWN0KGxlZ2VuZEFyZWEuc3RhcnQueCwgbGVnZW5kQXJlYS5zdGFydC55LCBsZWdlbmRBcmVhLndpZHRoLCBsZWdlbmRBcmVhLmhlaWdodCk7XHJcbiAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gIGxlZ2VuZExpc3QuZm9yRWFjaChmdW5jdGlvbihpdGVtTGlzdCwgbGlzdEluZGV4KSB7XHJcbiAgICBsZXQgd2lkdGggPSAwO1xyXG4gICAgbGV0IGhlaWdodCA9IDA7XHJcbiAgICB3aWR0aCA9IGxlZ2VuZERhdGEud2lkdGhBcnJbbGlzdEluZGV4XTtcclxuICAgIGhlaWdodCA9IGxlZ2VuZERhdGEuaGVpZ2h0QXJyW2xpc3RJbmRleF07XHJcbiAgICBsZXQgc3RhcnRYID0gMDtcclxuICAgIGxldCBzdGFydFkgPSAwO1xyXG4gICAgaWYgKG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICd0b3AnIHx8IG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICdib3R0b20nKSB7XHJcbiAgICAgIHN3aXRjaCAob3B0cy5sZWdlbmQuZmxvYXQpIHtcclxuICAgICAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgICAgIHN0YXJ0WCA9IGxlZ2VuZEFyZWEuc3RhcnQueCArIHBhZGRpbmc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICAgICAgc3RhcnRYID0gbGVnZW5kQXJlYS5zdGFydC54ICsgbGVnZW5kQXJlYS53aWR0aCAtIHdpZHRoO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgc3RhcnRYID0gbGVnZW5kQXJlYS5zdGFydC54ICsgKGxlZ2VuZEFyZWEud2lkdGggLSB3aWR0aCkgLyAyO1xyXG4gICAgICB9XHJcbiAgICAgIHN0YXJ0WSA9IGxlZ2VuZEFyZWEuc3RhcnQueSArIHBhZGRpbmcgKyBsaXN0SW5kZXggKiBsaW5lSGVpZ2h0O1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKGxpc3RJbmRleCA9PSAwKSB7XHJcbiAgICAgICAgd2lkdGggPSAwO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHdpZHRoID0gbGVnZW5kRGF0YS53aWR0aEFycltsaXN0SW5kZXggLSAxXTtcclxuICAgICAgfVxyXG4gICAgICBzdGFydFggPSBsZWdlbmRBcmVhLnN0YXJ0LnggKyBwYWRkaW5nICsgd2lkdGg7XHJcbiAgICAgIHN0YXJ0WSA9IGxlZ2VuZEFyZWEuc3RhcnQueSArIHBhZGRpbmcgKyAobGVnZW5kQXJlYS5oZWlnaHQgLSBoZWlnaHQpIC8gMjtcclxuICAgIH1cclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUoY29uZmlnLmZvbnRTaXplKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgaXRlbUxpc3QubGVuZ3RoOyBpKyspIHtcclxuICAgICAgbGV0IGl0ZW0gPSBpdGVtTGlzdFtpXTtcclxuICAgICAgaXRlbS5hcmVhID0gWzAsIDAsIDAsIDBdO1xyXG4gICAgICBpdGVtLmFyZWFbMF0gPSBzdGFydFg7XHJcbiAgICAgIGl0ZW0uYXJlYVsxXSA9IHN0YXJ0WTtcclxuICAgICAgaXRlbS5hcmVhWzNdID0gc3RhcnRZICsgbGluZUhlaWdodDtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLnNob3cgPyBpdGVtLmNvbG9yIDogb3B0cy5sZWdlbmQuaGlkZGVuQ29sb3IpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLnNob3cgPyBpdGVtLmNvbG9yIDogb3B0cy5sZWdlbmQuaGlkZGVuQ29sb3IpO1xyXG4gICAgICBzd2l0Y2ggKGl0ZW0ubGVnZW5kU2hhcGUpIHtcclxuICAgICAgICBjYXNlICdsaW5lJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDIgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDIgKiBvcHRzLnBpeCwgMTUgKiBvcHRzLnBpeCwgNCAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ3RyaWFuZ2xlJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0IC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDIuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0ICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDEyLjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCArIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdkaWFtb25kJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0IC0gNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDIuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDcuNSAqIG9wdHMucGl4LCBzdGFydFkgKyAwLjUgKiBsaW5lSGVpZ2h0ICsgNSAqIG9wdHMucGl4KTtcclxuICAgICAgICAgIGNvbnRleHQubGluZVRvKHN0YXJ0WCArIDEyLjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCk7XHJcbiAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFggKyA3LjUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdjaXJjbGUnOlxyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8oc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQpO1xyXG4gICAgICAgICAgY29udGV4dC5hcmMoc3RhcnRYICsgNy41ICogb3B0cy5waXgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQsIDUgKiBvcHRzLnBpeCwgMCwgMiAqIE1hdGguUEkpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAncmVjdCc6XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5maWxsUmVjdChzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgsIDE1ICogb3B0cy5waXgsIDEwICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnc3F1YXJlJzpcclxuICAgICAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCArIDUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxSZWN0KHN0YXJ0WCArIDUgKiBvcHRzLnBpeCwgc3RhcnRZICsgMC41ICogbGluZUhlaWdodCAtIDUgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCwgMTAgKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICBjYXNlICdub25lJzpcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgpO1xyXG4gICAgICAgICAgY29udGV4dC5maWxsUmVjdChzdGFydFgsIHN0YXJ0WSArIDAuNSAqIGxpbmVIZWlnaHQgLSA1ICogb3B0cy5waXgsIDE1ICogb3B0cy5waXgsIDEwICogb3B0cy5waXgpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBzdGFydFggKz0gc2hhcGVXaWR0aCArIHNoYXBlUmlnaHQ7XHJcbiAgICAgIGxldCBmb250VHJhbnMgPSAwLjUgKiBsaW5lSGVpZ2h0ICsgMC41ICogZm9udFNpemUgLSAyO1xyXG4gICAgICBjb25zdCBsZWdlbmRUZXh0ID0gaXRlbS5sZWdlbmRUZXh0ID8gaXRlbS5sZWdlbmRUZXh0IDogaXRlbS5uYW1lO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS5zaG93ID8gb3B0cy5sZWdlbmQuZm9udENvbG9yIDogb3B0cy5sZWdlbmQuaGlkZGVuQ29sb3IpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KGxlZ2VuZFRleHQsIHN0YXJ0WCwgc3RhcnRZICsgZm9udFRyYW5zKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgaWYgKG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICd0b3AnIHx8IG9wdHMubGVnZW5kLnBvc2l0aW9uID09ICdib3R0b20nKSB7XHJcbiAgICAgICAgc3RhcnRYICs9IG1lYXN1cmVUZXh0KGxlZ2VuZFRleHQsIGZvbnRTaXplLCBjb250ZXh0KSArIGl0ZW1HYXA7XHJcbiAgICAgICAgaXRlbS5hcmVhWzJdID0gc3RhcnRYO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGl0ZW0uYXJlYVsyXSA9IHN0YXJ0WCArIG1lYXN1cmVUZXh0KGxlZ2VuZFRleHQsIGZvbnRTaXplLCBjb250ZXh0KSArIGl0ZW1HYXA7O1xyXG4gICAgICAgIHN0YXJ0WCAtPSBzaGFwZVdpZHRoICsgc2hhcGVSaWdodDtcclxuICAgICAgICBzdGFydFkgKz0gbGluZUhlaWdodDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH0pO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3UGllRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciBwaWVPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGFjdGl2ZU9wYWNpdHk6IDAuNSxcclxuICAgIGFjdGl2ZVJhZGl1czogMTAsXHJcbiAgICBvZmZzZXRBbmdsZTogMCxcclxuICAgIGxhYmVsV2lkdGg6IDE1LFxyXG4gICAgcmluZ1dpZHRoOiAzMCxcclxuICAgIGN1c3RvbVJhZGl1czogMCxcclxuICAgIGJvcmRlcjogZmFsc2UsXHJcbiAgICBib3JkZXJXaWR0aDogMixcclxuICAgIGJvcmRlckNvbG9yOiAnI0ZGRkZGRicsXHJcbiAgICBjZW50ZXJDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gIH0sIG9wdHMudHlwZSA9PSBcInBpZVwiID8gb3B0cy5leHRyYS5waWUgOiBvcHRzLmV4dHJhLnJpbmcpO1xyXG4gIHZhciBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgIHg6IG9wdHMuYXJlYVszXSArIChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIsXHJcbiAgICB5OiBvcHRzLmFyZWFbMF0gKyAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gMlxyXG4gIH07XHJcbiAgaWYgKGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID09IDApIHtcclxuICAgIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID0gcGllT3B0aW9uLmFjdGl2ZVJhZGl1cyAqIG9wdHMucGl4O1xyXG4gIH1cclxuXHJcbiAgdmFyIHJhZGl1cyA9IE1hdGgubWluKChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIgLSBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyAtIGNvbmZpZy5waWVDaGFydFRleHRQYWRkaW5nIC0gY29uZmlnLl9waWVUZXh0TWF4TGVuZ3RoXywgKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKSAvIDIgLSBjb25maWcucGllQ2hhcnRMaW5lUGFkZGluZyAtIGNvbmZpZy5waWVDaGFydFRleHRQYWRkaW5nKTtcclxuICByYWRpdXMgPSByYWRpdXMgPCAxMCA/IDEwIDogcmFkaXVzO1xyXG4gIGlmIChwaWVPcHRpb24uY3VzdG9tUmFkaXVzID4gMCkge1xyXG4gICAgcmFkaXVzID0gcGllT3B0aW9uLmN1c3RvbVJhZGl1cyAqIG9wdHMucGl4O1xyXG4gIH1cclxuICBzZXJpZXMgPSBnZXRQaWVEYXRhUG9pbnRzKHNlcmllcywgcmFkaXVzLCBwcm9jZXNzKTtcclxuICB2YXIgYWN0aXZlUmFkaXVzID0gcGllT3B0aW9uLmFjdGl2ZVJhZGl1cyAqIG9wdHMucGl4O1xyXG4gIHBpZU9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihwaWVPcHRpb24ubGluZWFyVHlwZSwgcGllT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgc2VyaWVzID0gc2VyaWVzLm1hcChmdW5jdGlvbihlYWNoU2VyaWVzKSB7XHJcbiAgICBlYWNoU2VyaWVzLl9zdGFydF8gKz0gKHBpZU9wdGlvbi5vZmZzZXRBbmdsZSkgKiBNYXRoLlBJIC8gMTgwO1xyXG4gICAgcmV0dXJuIGVhY2hTZXJpZXM7XHJcbiAgfSk7XHJcbiAgc2VyaWVzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBzZXJpZXNJbmRleCkge1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgcGllT3B0aW9uLmFjdGl2ZU9wYWNpdHkgfHwgMC41KSk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgZWFjaFNlcmllcy5fcmFkaXVzXyArIGFjdGl2ZVJhZGl1cywgZWFjaFNlcmllcy5fc3RhcnRfLCBlYWNoU2VyaWVzLl9zdGFydF8gKyAyICogZWFjaFNlcmllcy5fcHJvcG9ydGlvbl8gKiBNYXRoLlBJKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgocGllT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5saW5lSm9pbiA9IFwicm91bmRcIjtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUocGllT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgIHZhciBmaWxsY29sb3IgPSBlYWNoU2VyaWVzLmNvbG9yO1xyXG4gICAgaWYgKHBpZU9wdGlvbi5saW5lYXJUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgIHZhciBncmQ7XHJcbiAgICAgIGlmKGNvbnRleHQuY3JlYXRlQ2lyY3VsYXJHcmFkaWVudCl7XHJcbiAgICAgICAgZ3JkID0gY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGVhY2hTZXJpZXMuX3JhZGl1c18pXHJcbiAgICAgIH1lbHNle1xyXG4gICAgICAgIGdyZCA9IGNvbnRleHQuY3JlYXRlUmFkaWFsR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgMCxjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfKVxyXG4gICAgICB9XHJcbiAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IocGllT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCAxKSlcclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCAxKSlcclxuICAgICAgZmlsbGNvbG9yID0gZ3JkXHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsY29sb3IpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfLCBlYWNoU2VyaWVzLl9zdGFydF8sIGVhY2hTZXJpZXMuX3N0YXJ0XyArIDIgKiBlYWNoU2VyaWVzLl9wcm9wb3J0aW9uXyAqIE1hdGguUEkpO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgaWYgKHBpZU9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIGlmIChvcHRzLnR5cGUgPT09ICdyaW5nJykge1xyXG4gICAgdmFyIGlubmVyUGllV2lkdGggPSByYWRpdXMgKiAwLjY7XHJcbiAgICBpZiAodHlwZW9mIHBpZU9wdGlvbi5yaW5nV2lkdGggPT09ICdudW1iZXInICYmIHBpZU9wdGlvbi5yaW5nV2lkdGggPiAwKSB7XHJcbiAgICAgIGlubmVyUGllV2lkdGggPSBNYXRoLm1heCgwLCByYWRpdXMgLSBwaWVPcHRpb24ucmluZ1dpZHRoICogb3B0cy5waXgpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHBpZU9wdGlvbi5jZW50ZXJDb2xvcik7XHJcbiAgICBjb250ZXh0Lm1vdmVUbyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGlubmVyUGllV2lkdGgsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBjb250ZXh0LmZpbGwoKTtcclxuICB9XHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3UGllVGV4dChzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcmFkaXVzLCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgfVxyXG4gIGlmIChwcm9jZXNzID09PSAxICYmIG9wdHMudHlwZSA9PT0gJ3JpbmcnKSB7XHJcbiAgICBkcmF3UmluZ1RpdGxlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgY2VudGVyUG9zaXRpb24pO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2VudGVyOiBjZW50ZXJQb3NpdGlvbixcclxuICAgIHJhZGl1czogcmFkaXVzLFxyXG4gICAgc2VyaWVzOiBzZXJpZXNcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3Um9zZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgcm9zZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2FyZWEnLFxyXG4gICAgYWN0aXZlT3BhY2l0eTogMC41LFxyXG4gICAgYWN0aXZlUmFkaXVzOiAxMCxcclxuICAgIG9mZnNldEFuZ2xlOiAwLFxyXG4gICAgbGFiZWxXaWR0aDogMTUsXHJcbiAgICBib3JkZXI6IGZhbHNlLFxyXG4gICAgYm9yZGVyV2lkdGg6IDIsXHJcbiAgICBib3JkZXJDb2xvcjogJyNGRkZGRkYnLFxyXG4gICAgbGluZWFyVHlwZTogJ25vbmUnLFxyXG4gICAgY3VzdG9tQ29sb3I6IFtdLFxyXG4gIH0sIG9wdHMuZXh0cmEucm9zZSk7XHJcbiAgaWYgKGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID09IDApIHtcclxuICAgIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nID0gcm9zZU9wdGlvbi5hY3RpdmVSYWRpdXMgKiBvcHRzLnBpeDtcclxuICB9XHJcbiAgdmFyIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgeDogb3B0cy5hcmVhWzNdICsgKG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM10pIC8gMixcclxuICAgIHk6IG9wdHMuYXJlYVswXSArIChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkgLyAyXHJcbiAgfTtcclxuICB2YXIgcmFkaXVzID0gTWF0aC5taW4oKG9wdHMud2lkdGggLSBvcHRzLmFyZWFbMV0gLSBvcHRzLmFyZWFbM10pIC8gMiAtIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nIC0gY29uZmlnLnBpZUNoYXJ0VGV4dFBhZGRpbmcgLSBjb25maWcuX3BpZVRleHRNYXhMZW5ndGhfLCAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gMiAtIGNvbmZpZy5waWVDaGFydExpbmVQYWRkaW5nIC0gY29uZmlnLnBpZUNoYXJ0VGV4dFBhZGRpbmcpO1xyXG4gIHJhZGl1cyA9IHJhZGl1cyA8IDEwID8gMTAgOiByYWRpdXM7XHJcbiAgdmFyIG1pblJhZGl1cyA9IHJvc2VPcHRpb24ubWluUmFkaXVzIHx8IHJhZGl1cyAqIDAuNTtcclxuICBpZihyYWRpdXMgPCBtaW5SYWRpdXMpe1xyXG4gICAgcmFkaXVzID0gbWluUmFkaXVzICsgMTA7XHJcbiAgfVxyXG4gIHNlcmllcyA9IGdldFJvc2VEYXRhUG9pbnRzKHNlcmllcywgcm9zZU9wdGlvbi50eXBlLCBtaW5SYWRpdXMsIHJhZGl1cywgcHJvY2Vzcyk7XHJcbiAgdmFyIGFjdGl2ZVJhZGl1cyA9IHJvc2VPcHRpb24uYWN0aXZlUmFkaXVzICogb3B0cy5waXg7XHJcbiAgcm9zZU9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihyb3NlT3B0aW9uLmxpbmVhclR5cGUsIHJvc2VPcHRpb24uY3VzdG9tQ29sb3IsIHNlcmllcywgY29uZmlnKTtcclxuICBzZXJpZXMgPSBzZXJpZXMubWFwKGZ1bmN0aW9uKGVhY2hTZXJpZXMpIHtcclxuICAgIGVhY2hTZXJpZXMuX3N0YXJ0XyArPSAocm9zZU9wdGlvbi5vZmZzZXRBbmdsZSB8fCAwKSAqIE1hdGguUEkgLyAxODA7XHJcbiAgICByZXR1cm4gZWFjaFNlcmllcztcclxuICB9KTtcclxuICBzZXJpZXMuZm9yRWFjaChmdW5jdGlvbihlYWNoU2VyaWVzLCBzZXJpZXNJbmRleCkge1xyXG4gICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICBpZiAob3B0cy50b29sdGlwLmluZGV4ID09IHNlcmllc0luZGV4KSB7XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCByb3NlT3B0aW9uLmFjdGl2ZU9wYWNpdHkgfHwgMC41KSk7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgYWN0aXZlUmFkaXVzICsgZWFjaFNlcmllcy5fcmFkaXVzXywgZWFjaFNlcmllcy5fc3RhcnRfLCBlYWNoU2VyaWVzLl9zdGFydF8gKyAyICogZWFjaFNlcmllcy5fcm9zZV9wcm9wb3J0aW9uXyAqIE1hdGguUEkpO1xyXG4gICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChyb3NlT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5saW5lSm9pbiA9IFwicm91bmRcIjtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUocm9zZU9wdGlvbi5ib3JkZXJDb2xvcik7XHJcbiAgICB2YXIgZmlsbGNvbG9yID0gZWFjaFNlcmllcy5jb2xvcjtcclxuICAgIGlmIChyb3NlT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgdmFyIGdyZDtcclxuICAgICAgaWYoY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KXtcclxuICAgICAgICBncmQgPSBjb250ZXh0LmNyZWF0ZUNpcmN1bGFyR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgZWFjaFNlcmllcy5fcmFkaXVzXylcclxuICAgICAgfWVsc2V7XHJcbiAgICAgICAgZ3JkID0gY29udGV4dC5jcmVhdGVSYWRpYWxHcmFkaWVudChjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCAwLGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIGVhY2hTZXJpZXMuX3JhZGl1c18pXHJcbiAgICAgIH1cclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihyb3NlT3B0aW9uLmN1c3RvbUNvbG9yW2VhY2hTZXJpZXMubGluZWFySW5kZXhdLCAxKSlcclxuICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihlYWNoU2VyaWVzLmNvbG9yLCAxKSlcclxuICAgICAgZmlsbGNvbG9yID0gZ3JkXHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsY29sb3IpO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBlYWNoU2VyaWVzLl9yYWRpdXNfLCBlYWNoU2VyaWVzLl9zdGFydF8sIGVhY2hTZXJpZXMuX3N0YXJ0XyArIDIgKiBlYWNoU2VyaWVzLl9yb3NlX3Byb3BvcnRpb25fICogTWF0aC5QSSk7XHJcbiAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgY29udGV4dC5maWxsKCk7XHJcbiAgICBpZiAocm9zZU9wdGlvbi5ib3JkZXIgPT0gdHJ1ZSkge1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIGRyYXdQaWVUZXh0KHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCByYWRpdXMsIGNlbnRlclBvc2l0aW9uKTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbnRlcjogY2VudGVyUG9zaXRpb24sXHJcbiAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgIHNlcmllczogc2VyaWVzXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0FyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICB2YXIgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICB2YXIgYXJjYmFyT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICBzdGFydEFuZ2xlOiAwLjc1LFxyXG4gICAgZW5kQW5nbGU6IDAuMjUsXHJcbiAgICB0eXBlOiAnZGVmYXVsdCcsXHJcbiAgICBkaXJlY3Rpb246ICdjdycsXHJcbiAgICBsaW5lQ2FwOiAncm91bmQnLFxyXG4gICAgd2lkdGg6IDEyICxcclxuICAgIGdhcDogMiAsXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgfSwgb3B0cy5leHRyYS5hcmNiYXIpO1xyXG4gIHNlcmllcyA9IGdldEFyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBhcmNiYXJPcHRpb24sIHByb2Nlc3MpO1xyXG4gIHZhciBjZW50ZXJQb3NpdGlvbjtcclxuICBpZiAoYXJjYmFyT3B0aW9uLmNlbnRlclggfHwgYXJjYmFyT3B0aW9uLmNlbnRlclkpIHtcclxuICAgIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgICB4OiBhcmNiYXJPcHRpb24uY2VudGVyWCA/IGFyY2Jhck9wdGlvbi5jZW50ZXJYIDogb3B0cy53aWR0aCAvIDIsXHJcbiAgICAgIHk6IGFyY2Jhck9wdGlvbi5jZW50ZXJZID8gYXJjYmFyT3B0aW9uLmNlbnRlclkgOiBvcHRzLmhlaWdodCAvIDJcclxuICAgIH07XHJcbiAgfSBlbHNlIHtcclxuICAgIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgICB4OiBvcHRzLndpZHRoIC8gMixcclxuICAgICAgeTogb3B0cy5oZWlnaHQgLyAyXHJcbiAgICB9O1xyXG4gIH1cclxuICB2YXIgcmFkaXVzO1xyXG4gIGlmIChhcmNiYXJPcHRpb24ucmFkaXVzKSB7XHJcbiAgICByYWRpdXMgPSBhcmNiYXJPcHRpb24ucmFkaXVzO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByYWRpdXMgPSBNYXRoLm1pbihjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgIHJhZGl1cyAtPSA1ICogb3B0cy5waXg7XHJcbiAgICByYWRpdXMgLT0gYXJjYmFyT3B0aW9uLndpZHRoIC8gMjtcclxuICB9XHJcbiAgcmFkaXVzID0gcmFkaXVzIDwgMTAgPyAxMCA6IHJhZGl1cztcclxuICBhcmNiYXJPcHRpb24uY3VzdG9tQ29sb3IgPSBmaWxsQ3VzdG9tQ29sb3IoYXJjYmFyT3B0aW9uLmxpbmVhclR5cGUsIGFyY2Jhck9wdGlvbi5jdXN0b21Db2xvciwgc2VyaWVzLCBjb25maWcpO1xyXG4gIFxyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgZWFjaFNlcmllcyA9IHNlcmllc1tpXTtcclxuICAgIC8v6IOM5pmv6aKc6ImyXHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChhcmNiYXJPcHRpb24ud2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGFyY2Jhck9wdGlvbi5iYWNrZ3JvdW5kQ29sb3IgfHwgJyNFOUU5RTknKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcChhcmNiYXJPcHRpb24ubGluZUNhcCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgaWYgKGFyY2Jhck9wdGlvbi50eXBlID09ICdkZWZhdWx0Jykge1xyXG4gICAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCByYWRpdXMgLSAoYXJjYmFyT3B0aW9uLndpZHRoICogb3B0cy5waXggKyBhcmNiYXJPcHRpb24uZ2FwICogb3B0cy5waXgpICogaSwgYXJjYmFyT3B0aW9uLnN0YXJ0QW5nbGUgKiBNYXRoLlBJLCBhcmNiYXJPcHRpb24uZW5kQW5nbGUgKiBNYXRoLlBJLCBhcmNiYXJPcHRpb24uZGlyZWN0aW9uID09ICdjY3cnKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIGNvbnRleHQuYXJjKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIHJhZGl1cyAtIChhcmNiYXJPcHRpb24ud2lkdGggKiBvcHRzLnBpeCArIGFyY2Jhck9wdGlvbi5nYXAgKiBvcHRzLnBpeCkgKiBpLCAwLCAyICogTWF0aC5QSSwgYXJjYmFyT3B0aW9uLmRpcmVjdGlvbiA9PSAnY2N3Jyk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgLy/ov5vluqbmnaFcclxuICAgIHZhciBmaWxsQ29sb3IgPSBlYWNoU2VyaWVzLmNvbG9yXHJcbiAgICBpZihhcmNiYXJPcHRpb24ubGluZWFyVHlwZSA9PSAnY3VzdG9tJyl7XHJcbiAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KGNlbnRlclBvc2l0aW9uLnggLSByYWRpdXMsIGNlbnRlclBvc2l0aW9uLnksIGNlbnRlclBvc2l0aW9uLnggKyByYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGFyY2Jhck9wdGlvbi5jdXN0b21Db2xvcltlYWNoU2VyaWVzLmxpbmVhckluZGV4XSwgMSkpXHJcbiAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IoZWFjaFNlcmllcy5jb2xvciwgMSkpXHJcbiAgICAgIGZpbGxDb2xvciA9IGdyZDtcclxuICAgIH1cclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGFyY2Jhck9wdGlvbi53aWR0aCAqIG9wdHMucGl4KTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZmlsbENvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcChhcmNiYXJPcHRpb24ubGluZUNhcCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcmFkaXVzIC0gKGFyY2Jhck9wdGlvbi53aWR0aCAqIG9wdHMucGl4ICsgYXJjYmFyT3B0aW9uLmdhcCAqIG9wdHMucGl4KSAqIGksIGFyY2Jhck9wdGlvbi5zdGFydEFuZ2xlICogTWF0aC5QSSwgZWFjaFNlcmllcy5fcHJvcG9ydGlvbl8gKiBNYXRoLlBJLCBhcmNiYXJPcHRpb24uZGlyZWN0aW9uID09ICdjY3cnKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgfVxyXG4gIGRyYXdSaW5nVGl0bGUob3B0cywgY29uZmlnLCBjb250ZXh0LCBjZW50ZXJQb3NpdGlvbik7XHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbnRlcjogY2VudGVyUG9zaXRpb24sXHJcbiAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgIHNlcmllczogc2VyaWVzXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0dhdWdlRGF0YVBvaW50cyhjYXRlZ29yaWVzLCBzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDUgJiYgYXJndW1lbnRzWzVdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNV0gOiAxO1xyXG4gIHZhciBnYXVnZU9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ2RlZmF1bHQnLFxyXG4gICAgc3RhcnRBbmdsZTogMC43NSxcclxuICAgIGVuZEFuZ2xlOiAwLjI1LFxyXG4gICAgd2lkdGg6IDE1LFxyXG4gICAgbGFiZWxPZmZzZXQ6MTMsXHJcbiAgICBzcGxpdExpbmU6IHtcclxuICAgICAgZml4UmFkaXVzOiAwLFxyXG4gICAgICBzcGxpdE51bWJlcjogMTAsXHJcbiAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgY29sb3I6ICcjRkZGRkZGJyxcclxuICAgICAgY2hpbGROdW1iZXI6IDUsXHJcbiAgICAgIGNoaWxkV2lkdGg6IDVcclxuICAgIH0sXHJcbiAgICBwb2ludGVyOiB7XHJcbiAgICAgIHdpZHRoOiAxNSxcclxuICAgICAgY29sb3I6ICdhdXRvJ1xyXG4gICAgfVxyXG4gIH0sIG9wdHMuZXh0cmEuZ2F1Z2UpO1xyXG4gIGlmIChnYXVnZU9wdGlvbi5vbGRBbmdsZSA9PSB1bmRlZmluZWQpIHtcclxuICAgIGdhdWdlT3B0aW9uLm9sZEFuZ2xlID0gZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZTtcclxuICB9XHJcbiAgaWYgKGdhdWdlT3B0aW9uLm9sZERhdGEgPT0gdW5kZWZpbmVkKSB7XHJcbiAgICBnYXVnZU9wdGlvbi5vbGREYXRhID0gMDtcclxuICB9XHJcbiAgY2F0ZWdvcmllcyA9IGdldEdhdWdlQXhpc1BvaW50cyhjYXRlZ29yaWVzLCBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlLCBnYXVnZU9wdGlvbi5lbmRBbmdsZSk7XHJcbiAgdmFyIGNlbnRlclBvc2l0aW9uID0ge1xyXG4gICAgeDogb3B0cy53aWR0aCAvIDIsXHJcbiAgICB5OiBvcHRzLmhlaWdodCAvIDJcclxuICB9O1xyXG4gIHZhciByYWRpdXMgPSBNYXRoLm1pbihjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICByYWRpdXMgLT0gNSAqIG9wdHMucGl4O1xyXG4gIHJhZGl1cyAtPSBnYXVnZU9wdGlvbi53aWR0aCAvIDI7XHJcbiAgcmFkaXVzID0gcmFkaXVzIDwgMTAgPyAxMCA6IHJhZGl1cztcclxuICB2YXIgaW5uZXJSYWRpdXMgPSByYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aDtcclxuICB2YXIgdG90YWxBbmdsZSA9IDA7XHJcbiAgLy/liKTmlq3ku6rooajnm5jnmoTmoLflvI/vvJpkZWZhdWx055m+5bqm5qC35byP77yMcHJvZ3Jlc3PmlrDmoLflvI9cclxuICBpZiAoZ2F1Z2VPcHRpb24udHlwZSA9PSAncHJvZ3Jlc3MnKSB7XHJcbiAgICAvLyMjIOesrOS4gOatpeeUu+S4reW/g+WchuW9ouiDjOaZr+WSjOi/m+W6puadoeiDjOaZr1xyXG4gICAgLy/kuK3lv4PlnIblvaLog4zmma9cclxuICAgIHZhciBwaWVSYWRpdXMgPSByYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAqIDM7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgbGV0IGdyYWRpZW50ID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55IC0gcGllUmFkaXVzLCBjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55ICsgcGllUmFkaXVzKTtcclxuICAgIC8v6YWN572u5riQ5Y+Y5aGr5YWF77yI6LW354K577ya5Lit5b+D54K55ZCR5LiK5YeP5Y2K5b6E77yb57uT5p2f54K55Lit5b+D54K55ZCR5LiL5Yqg5Y2K5b6E77yJXHJcbiAgICBncmFkaWVudC5hZGRDb2xvclN0b3AoJzAnLCBoZXhUb1JnYihzZXJpZXNbMF0uY29sb3IsIDAuMykpO1xyXG4gICAgZ3JhZGllbnQuYWRkQ29sb3JTdG9wKCcxLjAnLCBoZXhUb1JnYihcIiNGRkZGRkZcIiwgMC4xKSk7XHJcbiAgICBjb250ZXh0LnNldEZpbGxTdHlsZShncmFkaWVudCk7XHJcbiAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCBwaWVSYWRpdXMsIDAsIDIgKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgIC8v55S76L+b5bqm5p2h6IOM5pmvXHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChnYXVnZU9wdGlvbi53aWR0aCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGhleFRvUmdiKHNlcmllc1swXS5jb2xvciwgMC4zKSk7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ3JvdW5kJyk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgaW5uZXJSYWRpdXMsIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgKiBNYXRoLlBJLCBnYXVnZU9wdGlvbi5lbmRBbmdsZSAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAvLyMjIOesrOS6jOatpeeUu+WIu+W6pue6v1xyXG4gICAgaWYgKGdhdWdlT3B0aW9uLmVuZEFuZ2xlIDwgZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSkge1xyXG4gICAgICB0b3RhbEFuZ2xlID0gMiArIGdhdWdlT3B0aW9uLmVuZEFuZ2xlIC0gZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRvdGFsQW5nbGUgPSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlIC0gZ2F1Z2VPcHRpb24uZW5kQW5nbGU7XHJcbiAgICB9XHJcbiAgICBsZXQgc3BsaXRBbmdsZSA9IHRvdGFsQW5nbGUgLyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuc3BsaXROdW1iZXI7XHJcbiAgICBsZXQgY2hpbGRBbmdsZSA9IHRvdGFsQW5nbGUgLyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuc3BsaXROdW1iZXIgLyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuY2hpbGROdW1iZXI7XHJcbiAgICBsZXQgc3RhcnRYID0gLXJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoICogMC41IC0gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmZpeFJhZGl1cztcclxuICAgIGxldCBlbmRYID0gLXJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoIC0gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmZpeFJhZGl1cyArIGdhdWdlT3B0aW9uLnNwbGl0TGluZS53aWR0aDtcclxuICAgIGNvbnRleHQuc2F2ZSgpO1xyXG4gICAgY29udGV4dC50cmFuc2xhdGUoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBjb250ZXh0LnJvdGF0ZSgoZ2F1Z2VPcHRpb24uc3RhcnRBbmdsZSAtIDEpICogTWF0aC5QSSk7XHJcbiAgICBsZXQgbGVuID0gZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLnNwbGl0TnVtYmVyICogZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLmNoaWxkTnVtYmVyICsgMTtcclxuICAgIGxldCBwcm9jID0gc2VyaWVzWzBdLmRhdGEgKiBwcm9jZXNzO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBsZW47IGkrKykge1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAvL+WIu+W6pue6v+maj+i/m+W6puWPmOiJslxyXG4gICAgICBpZiAocHJvYyA+IChpIC8gbGVuKSkge1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzWzBdLmNvbG9yLCAxKSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShoZXhUb1JnYihzZXJpZXNbMF0uY29sb3IsIDAuMykpO1xyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDMgKiBvcHRzLnBpeCk7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgMCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKGVuZFgsIDApO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LnJvdGF0ZShjaGlsZEFuZ2xlICogTWF0aC5QSSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICAgIC8vIyMg56ys5LiJ5q2l55S76L+b5bqm5p2hXHJcbiAgICBzZXJpZXMgPSBnZXRHYXVnZUFyY2JhckRhdGFQb2ludHMoc2VyaWVzLCBnYXVnZU9wdGlvbiwgcHJvY2Vzcyk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChnYXVnZU9wdGlvbi53aWR0aCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHNlcmllc1swXS5jb2xvcik7XHJcbiAgICBjb250ZXh0LnNldExpbmVDYXAoJ3JvdW5kJyk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgaW5uZXJSYWRpdXMsIGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgKiBNYXRoLlBJLCBzZXJpZXNbMF0uX3Byb3BvcnRpb25fICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIC8vIyMg56ys5Zub5q2l55S75oyH6ZKIXHJcbiAgICBsZXQgcG9pbnRlclJhZGl1cyA9IHJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoICogMi41O1xyXG4gICAgY29udGV4dC5zYXZlKCk7XHJcbiAgICBjb250ZXh0LnRyYW5zbGF0ZShjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55KTtcclxuICAgIGNvbnRleHQucm90YXRlKChzZXJpZXNbMF0uX3Byb3BvcnRpb25fIC0gMSkgKiBNYXRoLlBJKTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aChnYXVnZU9wdGlvbi53aWR0aCAvIDMpO1xyXG4gICAgbGV0IGdyYWRpZW50MyA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoMCwgLXBvaW50ZXJSYWRpdXMgKiAwLjYsIDAsIHBvaW50ZXJSYWRpdXMgKiAwLjYpO1xyXG4gICAgZ3JhZGllbnQzLmFkZENvbG9yU3RvcCgnMCcsIGhleFRvUmdiKCcjRkZGRkZGJywgMCkpO1xyXG4gICAgZ3JhZGllbnQzLmFkZENvbG9yU3RvcCgnMC41JywgaGV4VG9SZ2Ioc2VyaWVzWzBdLmNvbG9yLCAxKSk7XHJcbiAgICBncmFkaWVudDMuYWRkQ29sb3JTdG9wKCcxLjAnLCBoZXhUb1JnYignI0ZGRkZGRicsIDApKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZ3JhZGllbnQzKTtcclxuICAgIGNvbnRleHQuYXJjKDAsIDAsIHBvaW50ZXJSYWRpdXMsIDAuODUgKiBNYXRoLlBJLCAxLjE1ICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxKTtcclxuICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoc2VyaWVzWzBdLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKHNlcmllc1swXS5jb2xvcik7XHJcbiAgICBjb250ZXh0Lm1vdmVUbygtcG9pbnRlclJhZGl1cyAtIGdhdWdlT3B0aW9uLndpZHRoIC8gMyAvIDIsIC00KTtcclxuICAgIGNvbnRleHQubGluZVRvKC1wb2ludGVyUmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggLyAzIC8gMiAtIDQsIDApO1xyXG4gICAgY29udGV4dC5saW5lVG8oLXBvaW50ZXJSYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAvIDMgLyAyLCA0KTtcclxuICAgIGNvbnRleHQubGluZVRvKC1wb2ludGVyUmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggLyAzIC8gMiwgLTQpO1xyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICAvL2RlZmF1bHTnmb7luqbmoLflvI9cclxuICB9IGVsc2Uge1xyXG4gICAgLy/nlLvog4zmma9cclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGdhdWdlT3B0aW9uLndpZHRoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZUNhcCgnYnV0dCcpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjYXRlZ29yaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGxldCBlYWNoQ2F0ZWdvcmllcyA9IGNhdGVnb3JpZXNbaV07XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZWFjaENhdGVnb3JpZXMuY29sb3IpO1xyXG4gICAgICBjb250ZXh0LmFyYyhjZW50ZXJQb3NpdGlvbi54LCBjZW50ZXJQb3NpdGlvbi55LCByYWRpdXMsIGVhY2hDYXRlZ29yaWVzLl9zdGFydEFuZ2xlXyAqIE1hdGguUEksIGVhY2hDYXRlZ29yaWVzLl9lbmRBbmdsZV8gKiBNYXRoLlBJLCBmYWxzZSk7XHJcbiAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnNhdmUoKTtcclxuICAgIC8v55S75Yi75bqm57q/XHJcbiAgICBpZiAoZ2F1Z2VPcHRpb24uZW5kQW5nbGUgPCBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlKSB7XHJcbiAgICAgIHRvdGFsQW5nbGUgPSAyICsgZ2F1Z2VPcHRpb24uZW5kQW5nbGUgLSBnYXVnZU9wdGlvbi5zdGFydEFuZ2xlO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdG90YWxBbmdsZSA9IGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSBnYXVnZU9wdGlvbi5lbmRBbmdsZTtcclxuICAgIH1cclxuICAgIGxldCBzcGxpdEFuZ2xlID0gdG90YWxBbmdsZSAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlcjtcclxuICAgIGxldCBjaGlsZEFuZ2xlID0gdG90YWxBbmdsZSAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5zcGxpdE51bWJlciAvIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5jaGlsZE51bWJlcjtcclxuICAgIGxldCBzdGFydFggPSAtcmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggKiAwLjUgLSBnYXVnZU9wdGlvbi5zcGxpdExpbmUuZml4UmFkaXVzO1xyXG4gICAgbGV0IGVuZFggPSAtcmFkaXVzIC0gZ2F1Z2VPcHRpb24ud2lkdGggKiAwLjUgLSBnYXVnZU9wdGlvbi5zcGxpdExpbmUuZml4UmFkaXVzICsgZ2F1Z2VPcHRpb24uc3BsaXRMaW5lLndpZHRoO1xyXG4gICAgbGV0IGNoaWxkZW5kWCA9IC1yYWRpdXMgLSBnYXVnZU9wdGlvbi53aWR0aCAqIDAuNSAtIGdhdWdlT3B0aW9uLnNwbGl0TGluZS5maXhSYWRpdXMgKyBnYXVnZU9wdGlvbi5zcGxpdExpbmUuY2hpbGRXaWR0aDtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5yb3RhdGUoKGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSAxKSAqIE1hdGguUEkpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnYXVnZU9wdGlvbi5zcGxpdExpbmUuc3BsaXROdW1iZXIgKyAxOyBpKyspIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShnYXVnZU9wdGlvbi5zcGxpdExpbmUuY29sb3IpO1xyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgyICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIDApO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhlbmRYLCAwKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5yb3RhdGUoc3BsaXRBbmdsZSAqIE1hdGguUEkpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgICBjb250ZXh0LnNhdmUoKTtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgY29udGV4dC5yb3RhdGUoKGdhdWdlT3B0aW9uLnN0YXJ0QW5nbGUgLSAxKSAqIE1hdGguUEkpO1xyXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBnYXVnZU9wdGlvbi5zcGxpdExpbmUuc3BsaXROdW1iZXIgKiBnYXVnZU9wdGlvbi5zcGxpdExpbmUuY2hpbGROdW1iZXIgKyAxOyBpKyspIHtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShnYXVnZU9wdGlvbi5zcGxpdExpbmUuY29sb3IpO1xyXG4gICAgICBjb250ZXh0LnNldExpbmVXaWR0aCgxICogb3B0cy5waXgpO1xyXG4gICAgICBjb250ZXh0Lm1vdmVUbyhzdGFydFgsIDApO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhjaGlsZGVuZFgsIDApO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LnJvdGF0ZShjaGlsZEFuZ2xlICogTWF0aC5QSSk7XHJcbiAgICB9XHJcbiAgICBjb250ZXh0LnJlc3RvcmUoKTtcclxuICAgIC8v55S75oyH6ZKIXHJcbiAgICBzZXJpZXMgPSBnZXRHYXVnZURhdGFQb2ludHMoc2VyaWVzLCBjYXRlZ29yaWVzLCBnYXVnZU9wdGlvbiwgcHJvY2Vzcyk7XHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgICBsZXQgZWFjaFNlcmllcyA9IHNlcmllc1tpXTtcclxuICAgICAgY29udGV4dC5zYXZlKCk7XHJcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gICAgICBjb250ZXh0LnJvdGF0ZSgoZWFjaFNlcmllcy5fcHJvcG9ydGlvbl8gLSAxKSAqIE1hdGguUEkpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oZ2F1Z2VPcHRpb24ucG9pbnRlci53aWR0aCwgMCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKDAsIC1nYXVnZU9wdGlvbi5wb2ludGVyLndpZHRoIC8gMik7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKC1pbm5lclJhZGl1cywgMCk7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKDAsIGdhdWdlT3B0aW9uLnBvaW50ZXIud2lkdGggLyAyKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oZ2F1Z2VPcHRpb24ucG9pbnRlci53aWR0aCwgMCk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZSgnI0ZGRkZGRicpO1xyXG4gICAgICBjb250ZXh0LmFyYygwLCAwLCBnYXVnZU9wdGlvbi5wb2ludGVyLndpZHRoIC8gNiwgMCwgMiAqIE1hdGguUEksIGZhbHNlKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gICAgfVxyXG4gICAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSkge1xyXG4gICAgICBkcmF3R2F1Z2VMYWJlbChnYXVnZU9wdGlvbiwgcmFkaXVzLCBjZW50ZXJQb3NpdGlvbiwgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcbiAgLy/nlLvku6rooajnm5jmoIfpopjvvIzlia/moIfpophcclxuICBkcmF3UmluZ1RpdGxlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgY2VudGVyUG9zaXRpb24pO1xyXG4gIGlmIChwcm9jZXNzID09PSAxICYmIG9wdHMudHlwZSA9PT0gJ2dhdWdlJykge1xyXG4gICAgb3B0cy5leHRyYS5nYXVnZS5vbGRBbmdsZSA9IHNlcmllc1swXS5fcHJvcG9ydGlvbl87XHJcbiAgICBvcHRzLmV4dHJhLmdhdWdlLm9sZERhdGEgPSBzZXJpZXNbMF0uZGF0YTtcclxuICB9XHJcbiAgcmV0dXJuIHtcclxuICAgIGNlbnRlcjogY2VudGVyUG9zaXRpb24sXHJcbiAgICByYWRpdXM6IHJhZGl1cyxcclxuICAgIGlubmVyUmFkaXVzOiBpbm5lclJhZGl1cyxcclxuICAgIGNhdGVnb3JpZXM6IGNhdGVnb3JpZXMsXHJcbiAgICB0b3RhbEFuZ2xlOiB0b3RhbEFuZ2xlXHJcbiAgfTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1JhZGFyRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBwcm9jZXNzID0gYXJndW1lbnRzLmxlbmd0aCA+IDQgJiYgYXJndW1lbnRzWzRdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbNF0gOiAxO1xyXG4gIHZhciByYWRhck9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgZ3JpZENvbG9yOiAnI2NjY2NjYycsXHJcbiAgICBncmlkVHlwZTogJ3JhZGFyJyxcclxuICAgIGdyaWRFdmFsOjEsXHJcbiAgICBheGlzTGFiZWw6ZmFsc2UsXHJcbiAgICBheGlzTGFiZWxUb2ZpeDowLFxyXG4gICAgbGFiZWxTaG93OnRydWUsXHJcbiAgICBsYWJlbENvbG9yOicjNjY2NjY2JyxcclxuICAgIGxhYmVsUG9pbnRTaG93OmZhbHNlLFxyXG4gICAgbGFiZWxQb2ludFJhZGl1czozLFxyXG4gICAgbGFiZWxQb2ludENvbG9yOicjY2NjY2NjJyxcclxuICAgIG9wYWNpdHk6IDAuMixcclxuICAgIGdyaWRDb3VudDogMyxcclxuICAgIGJvcmRlcjpmYWxzZSxcclxuICAgIGJvcmRlcldpZHRoOjIsXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgfSwgb3B0cy5leHRyYS5yYWRhcik7XHJcbiAgdmFyIGNvb3JkaW5hdGVBbmdsZSA9IGdldFJhZGFyQ29vcmRpbmF0ZVNlcmllcyhvcHRzLmNhdGVnb3JpZXMubGVuZ3RoKTtcclxuICB2YXIgY2VudGVyUG9zaXRpb24gPSB7XHJcbiAgICB4OiBvcHRzLmFyZWFbM10gKyAob3B0cy53aWR0aCAtIG9wdHMuYXJlYVsxXSAtIG9wdHMuYXJlYVszXSkgLyAyLFxyXG4gICAgeTogb3B0cy5hcmVhWzBdICsgKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKSAvIDJcclxuICB9O1xyXG4gIHZhciB4ciA9IChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDJcclxuICB2YXIgeXIgPSAob3B0cy5oZWlnaHQgLSBvcHRzLmFyZWFbMF0gLSBvcHRzLmFyZWFbMl0pIC8gMlxyXG4gIHZhciByYWRpdXMgPSBNYXRoLm1pbih4ciAtIChnZXRNYXhUZXh0TGlzdExlbmd0aChvcHRzLmNhdGVnb3JpZXMsIGNvbmZpZy5mb250U2l6ZSwgY29udGV4dCkgKyBjb25maWcucmFkYXJMYWJlbFRleHRNYXJnaW4pLCB5ciAtIGNvbmZpZy5yYWRhckxhYmVsVGV4dE1hcmdpbik7XHJcbiAgcmFkaXVzIC09IGNvbmZpZy5yYWRhckxhYmVsVGV4dE1hcmdpbiAqIG9wdHMucGl4O1xyXG4gIHJhZGl1cyA9IHJhZGl1cyA8IDEwID8gMTAgOiByYWRpdXM7XHJcbiAgcmFkaXVzID0gcmFkYXJPcHRpb24ucmFkaXVzID8gcmFkYXJPcHRpb24ucmFkaXVzIDogcmFkaXVzO1xyXG4gIC8vIOeUu+WIhuWJsue6v1xyXG4gIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHJhZGFyT3B0aW9uLmdyaWRDb2xvcik7XHJcbiAgY29vcmRpbmF0ZUFuZ2xlLmZvckVhY2goZnVuY3Rpb24oYW5nbGUsaW5kZXgpIHtcclxuICAgIHZhciBwb3MgPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihyYWRpdXMgKiBNYXRoLmNvcyhhbmdsZSksIHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlKSwgY2VudGVyUG9zaXRpb24pO1xyXG4gICAgY29udGV4dC5tb3ZlVG8oY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSk7XHJcbiAgICBpZiAoaW5kZXggJSByYWRhck9wdGlvbi5ncmlkRXZhbCA9PSAwKSB7XHJcbiAgICAgIGNvbnRleHQubGluZVRvKHBvcy54LCBwb3MueSk7XHJcbiAgICB9XHJcbiAgfSk7XHJcbiAgY29udGV4dC5zdHJva2UoKTtcclxuICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gIFxyXG4gIC8vIOeUu+iDjOaZr+e9keagvFxyXG4gIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKGkpIHtcclxuICAgIHZhciBzdGFydFBvcyA9IHt9O1xyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKDEgKiBvcHRzLnBpeCk7XHJcbiAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKHJhZGFyT3B0aW9uLmdyaWRDb2xvcik7XHJcbiAgICBpZiAocmFkYXJPcHRpb24uZ3JpZFR5cGUgPT0gJ3JhZGFyJykge1xyXG4gICAgICBjb29yZGluYXRlQW5nbGUuZm9yRWFjaChmdW5jdGlvbihhbmdsZSwgaW5kZXgpIHtcclxuICAgICAgICB2YXIgcG9zID0gY29udmVydENvb3JkaW5hdGVPcmlnaW4ocmFkaXVzIC8gcmFkYXJPcHRpb24uZ3JpZENvdW50ICogaSAqIE1hdGguY29zKGFuZ2xlKSwgcmFkaXVzIC9cclxuICAgICAgICAgIHJhZGFyT3B0aW9uLmdyaWRDb3VudCAqIGkgKiBNYXRoLnNpbihhbmdsZSksIGNlbnRlclBvc2l0aW9uKTtcclxuICAgICAgICBpZiAoaW5kZXggPT09IDApIHtcclxuICAgICAgICAgIHN0YXJ0UG9zID0gcG9zO1xyXG4gICAgICAgICAgY29udGV4dC5tb3ZlVG8ocG9zLngsIHBvcy55KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8ocG9zLngsIHBvcy55KTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb250ZXh0LmxpbmVUbyhzdGFydFBvcy54LCBzdGFydFBvcy55KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHZhciBwb3MgPSBjb252ZXJ0Q29vcmRpbmF0ZU9yaWdpbihyYWRpdXMgLyByYWRhck9wdGlvbi5ncmlkQ291bnQgKiBpICogTWF0aC5jb3MoMS41KSwgcmFkaXVzIC8gcmFkYXJPcHRpb24uZ3JpZENvdW50ICogaSAqIE1hdGguc2luKDEuNSksIGNlbnRlclBvc2l0aW9uKTtcclxuICAgICAgY29udGV4dC5hcmMoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgY2VudGVyUG9zaXRpb24ueSAtIHBvcy55LCAwLCAyICogTWF0aC5QSSwgZmFsc2UpO1xyXG4gICAgfVxyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgfTtcclxuICBmb3IgKHZhciBpID0gMTsgaSA8PSByYWRhck9wdGlvbi5ncmlkQ291bnQ7IGkrKykge1xyXG4gICAgX2xvb3AoaSk7XHJcbiAgfVxyXG4gIHJhZGFyT3B0aW9uLmN1c3RvbUNvbG9yID0gZmlsbEN1c3RvbUNvbG9yKHJhZGFyT3B0aW9uLmxpbmVhclR5cGUsIHJhZGFyT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgdmFyIHJhZGFyRGF0YVBvaW50cyA9IGdldFJhZGFyRGF0YVBvaW50cyhjb29yZGluYXRlQW5nbGUsIGNlbnRlclBvc2l0aW9uLCByYWRpdXMsIHNlcmllcywgb3B0cywgcHJvY2Vzcyk7XHJcbiAgcmFkYXJEYXRhUG9pbnRzLmZvckVhY2goZnVuY3Rpb24oZWFjaFNlcmllcywgc2VyaWVzSW5kZXgpIHtcclxuICAgIC8vIOe7mOWItuWMuuWfn+aVsOaNrlxyXG4gICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKHJhZGFyT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShlYWNoU2VyaWVzLmNvbG9yKTtcclxuICAgIFxyXG4gICAgdmFyIGZpbGxjb2xvciA9IGhleFRvUmdiKGVhY2hTZXJpZXMuY29sb3IsIHJhZGFyT3B0aW9uLm9wYWNpdHkpO1xyXG4gICAgaWYgKHJhZGFyT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgdmFyIGdyZDtcclxuICAgICAgaWYoY29udGV4dC5jcmVhdGVDaXJjdWxhckdyYWRpZW50KXtcclxuICAgICAgICBncmQgPSBjb250ZXh0LmNyZWF0ZUNpcmN1bGFyR3JhZGllbnQoY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcmFkaXVzKVxyXG4gICAgICB9ZWxzZXtcclxuICAgICAgICBncmQgPSBjb250ZXh0LmNyZWF0ZVJhZGlhbEdyYWRpZW50KGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnksIDAsY2VudGVyUG9zaXRpb24ueCwgY2VudGVyUG9zaXRpb24ueSwgcmFkaXVzKVxyXG4gICAgICB9XHJcbiAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2IocmFkYXJPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzW3Nlcmllc0luZGV4XS5saW5lYXJJbmRleF0sIHJhZGFyT3B0aW9uLm9wYWNpdHkpKVxyXG4gICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKGVhY2hTZXJpZXMuY29sb3IsIHJhZGFyT3B0aW9uLm9wYWNpdHkpKVxyXG4gICAgICBmaWxsY29sb3IgPSBncmRcclxuICAgIH1cclxuICAgIFxyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbGNvbG9yKTtcclxuICAgIGVhY2hTZXJpZXMuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgIGlmIChpbmRleCA9PT0gMCkge1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKGl0ZW0ucG9zaXRpb24ueCwgaXRlbS5wb3NpdGlvbi55KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhpdGVtLnBvc2l0aW9uLngsIGl0ZW0ucG9zaXRpb24ueSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgaWYocmFkYXJPcHRpb24uYm9yZGVyID09PSB0cnVlKXtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIH1cclxuICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICBpZiAob3B0cy5kYXRhUG9pbnRTaGFwZSAhPT0gZmFsc2UpIHtcclxuICAgICAgdmFyIHBvaW50cyA9IGVhY2hTZXJpZXMuZGF0YS5tYXAoZnVuY3Rpb24oaXRlbSkge1xyXG4gICAgICAgIHJldHVybiBpdGVtLnBvc2l0aW9uO1xyXG4gICAgICB9KTtcclxuICAgICAgZHJhd1BvaW50U2hhcGUocG9pbnRzLCBlYWNoU2VyaWVzLmNvbG9yLCBlYWNoU2VyaWVzLnBvaW50U2hhcGUsIGNvbnRleHQsIG9wdHMpO1xyXG4gICAgfVxyXG4gIH0pO1xyXG4gIC8vIOeUu+WIu+W6puWAvFxyXG4gIGlmKHJhZGFyT3B0aW9uLmF4aXNMYWJlbCA9PT0gdHJ1ZSl7XHJcbiAgICBjb25zdCBtYXhEYXRhID0gTWF0aC5tYXgocmFkYXJPcHRpb24ubWF4LCBNYXRoLm1heC5hcHBseShudWxsLCBkYXRhQ29tYmluZShzZXJpZXMpKSk7XHJcbiAgICBjb25zdCBzdGVwTGVuZ3RoID0gcmFkaXVzIC8gcmFkYXJPcHRpb24uZ3JpZENvdW50O1xyXG4gICAgY29uc3QgZm9udFNpemUgPSBvcHRzLmZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKG9wdHMuZm9udENvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0VGV4dEFsaWduKCdsZWZ0Jyk7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJhZGFyT3B0aW9uLmdyaWRDb3VudCArIDE7IGkrKykge1xyXG4gICAgICBsZXQgbGFiZWwgPSBpICogbWF4RGF0YSAvIHJhZGFyT3B0aW9uLmdyaWRDb3VudDtcclxuICAgICAgbGFiZWwgPSBsYWJlbC50b0ZpeGVkKHJhZGFyT3B0aW9uLmF4aXNMYWJlbFRvZml4KTtcclxuICAgICAgY29udGV4dC5maWxsVGV4dChTdHJpbmcobGFiZWwpLCBjZW50ZXJQb3NpdGlvbi54ICsgMyAqIG9wdHMucGl4LCBjZW50ZXJQb3NpdGlvbi55IC0gaSAqIHN0ZXBMZW5ndGggKyBmb250U2l6ZSAvIDIpO1xyXG4gICAgfVxyXG4gIH1cclxuICBcclxuICAvLyBkcmF3IGxhYmVsIHRleHRcclxuICBkcmF3UmFkYXJMYWJlbChjb29yZGluYXRlQW5nbGUsIHJhZGl1cywgY2VudGVyUG9zaXRpb24sIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgXHJcbiAgLy8gZHJhdyBkYXRhTGFiZWxcclxuICBpZiAob3B0cy5kYXRhTGFiZWwgIT09IGZhbHNlICYmIHByb2Nlc3MgPT09IDEpIHtcclxuICAgIHJhZGFyRGF0YVBvaW50cy5mb3JFYWNoKGZ1bmN0aW9uKGVhY2hTZXJpZXMsIHNlcmllc0luZGV4KSB7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIHZhciBmb250U2l6ZSA9IGVhY2hTZXJpZXMudGV4dFNpemUgKiBvcHRzLnBpeCB8fCBjb25maWcuZm9udFNpemU7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShlYWNoU2VyaWVzLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGVhY2hTZXJpZXMuZGF0YS5mb3JFYWNoKGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XHJcbiAgICAgICAgLy/lpoLmnpzmmK/kuK3lv4PngrnlnoLnm7TnmoTkuIrkuIvngrnkvY1cclxuICAgICAgICBpZihNYXRoLmFicyhpdGVtLnBvc2l0aW9uLnggLSBjZW50ZXJQb3NpdGlvbi54KTwyKXtcclxuICAgICAgICAgIC8v5aaC5p6c5Zyo5LiK6Z2iXHJcbiAgICAgICAgICBpZihpdGVtLnBvc2l0aW9uLnkgPCBjZW50ZXJQb3NpdGlvbi55KXtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udmFsdWUsIGl0ZW0ucG9zaXRpb24ueCwgaXRlbS5wb3NpdGlvbi55IC0gNCk7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2NlbnRlcicpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KGl0ZW0udmFsdWUsIGl0ZW0ucG9zaXRpb24ueCwgaXRlbS5wb3NpdGlvbi55ICsgZm9udFNpemUgKyAyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgIC8v5aaC5p6c5Zyo5bem5L6nXHJcbiAgICAgICAgICBpZihpdGVtLnBvc2l0aW9uLnggPCBjZW50ZXJQb3NpdGlvbi54KXtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ3JpZ2h0Jyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQoaXRlbS52YWx1ZSwgaXRlbS5wb3NpdGlvbi54IC0gNCwgaXRlbS5wb3NpdGlvbi55ICsgZm9udFNpemUgLyAyIC0gMik7XHJcbiAgICAgICAgICB9ZWxzZXtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRUZXh0QWxpZ24oJ2xlZnQnKTtcclxuICAgICAgICAgICAgY29udGV4dC5maWxsVGV4dChpdGVtLnZhbHVlLCBpdGVtLnBvc2l0aW9uLnggKyA0LCBpdGVtLnBvc2l0aW9uLnkgKyBmb250U2l6ZSAvIDIgLSAyKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgfSk7XHJcbiAgICBjb250ZXh0LnNldFRleHRBbGlnbignbGVmdCcpO1xyXG4gIH1cclxuICBcclxuICByZXR1cm4ge1xyXG4gICAgY2VudGVyOiBjZW50ZXJQb3NpdGlvbixcclxuICAgIHJhZGl1czogcmFkaXVzLFxyXG4gICAgYW5nbGVMaXN0OiBjb29yZGluYXRlQW5nbGVcclxuICB9O1xyXG59XHJcblxyXG4vLyDnu4/nuqzluqbovazloqjljaHmiZhcclxuZnVuY3Rpb24gbG9ubGF0Mm1lcmNhdG9yKGxvbmdpdHVkZSwgbGF0aXR1ZGUpIHtcclxuICB2YXIgbWVyY2F0b3IgPSBBcnJheSgyKTtcclxuICB2YXIgeCA9IGxvbmdpdHVkZSAqIDIwMDM3NTA4LjM0IC8gMTgwO1xyXG4gIHZhciB5ID0gTWF0aC5sb2coTWF0aC50YW4oKDkwICsgbGF0aXR1ZGUpICogTWF0aC5QSSAvIDM2MCkpIC8gKE1hdGguUEkgLyAxODApO1xyXG4gIHkgPSB5ICogMjAwMzc1MDguMzQgLyAxODA7XHJcbiAgbWVyY2F0b3JbMF0gPSB4O1xyXG4gIG1lcmNhdG9yWzFdID0geTtcclxuICByZXR1cm4gbWVyY2F0b3I7XHJcbn1cclxuXHJcbi8vIOWiqOWNoeaJmOi9rOe7j+e6rOW6plxyXG5mdW5jdGlvbiBtZXJjYXRvcjJsb25sYXQobG9uZ2l0dWRlLCBsYXRpdHVkZSkge1xyXG4gIHZhciBsb25sYXQgPSBBcnJheSgyKVxyXG4gIHZhciB4ID0gbG9uZ2l0dWRlIC8gMjAwMzc1MDguMzQgKiAxODA7XHJcbiAgdmFyIHkgPSBsYXRpdHVkZSAvIDIwMDM3NTA4LjM0ICogMTgwO1xyXG4gIHkgPSAxODAgLyBNYXRoLlBJICogKDIgKiBNYXRoLmF0YW4oTWF0aC5leHAoeSAqIE1hdGguUEkgLyAxODApKSAtIE1hdGguUEkgLyAyKTtcclxuICBsb25sYXRbMF0gPSB4O1xyXG4gIGxvbmxhdFsxXSA9IHk7XHJcbiAgcmV0dXJuIGxvbmxhdDtcclxufVxyXG5cclxuZnVuY3Rpb24gZ2V0Qm91bmRpbmdCb3goZGF0YSkge1xyXG4gIHZhciBib3VuZHMgPSB7fSxjb29yZHM7XHJcbiAgYm91bmRzLnhNaW4gPSAxODA7XHJcbiAgYm91bmRzLnhNYXggPSAwO1xyXG4gIGJvdW5kcy55TWluID0gOTA7XHJcbiAgYm91bmRzLnlNYXggPSAwXHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICB2YXIgY29vcmRhID0gZGF0YVtpXS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBjb29yZGEubGVuZ3RoOyBrKyspIHtcclxuICAgICAgY29vcmRzID0gY29vcmRhW2tdO1xyXG4gICAgICBpZiAoY29vcmRzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgY29vcmRzID0gY29vcmRzWzBdXHJcbiAgICAgIH1cclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjb29yZHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICB2YXIgbG9uZ2l0dWRlID0gY29vcmRzW2pdWzBdO1xyXG4gICAgICAgIHZhciBsYXRpdHVkZSA9IGNvb3Jkc1tqXVsxXTtcclxuICAgICAgICB2YXIgcG9pbnQgPSB7XHJcbiAgICAgICAgICB4OiBsb25naXR1ZGUsXHJcbiAgICAgICAgICB5OiBsYXRpdHVkZVxyXG4gICAgICAgIH1cclxuICAgICAgICBib3VuZHMueE1pbiA9IGJvdW5kcy54TWluIDwgcG9pbnQueCA/IGJvdW5kcy54TWluIDogcG9pbnQueDtcclxuICAgICAgICBib3VuZHMueE1heCA9IGJvdW5kcy54TWF4ID4gcG9pbnQueCA/IGJvdW5kcy54TWF4IDogcG9pbnQueDtcclxuICAgICAgICBib3VuZHMueU1pbiA9IGJvdW5kcy55TWluIDwgcG9pbnQueSA/IGJvdW5kcy55TWluIDogcG9pbnQueTtcclxuICAgICAgICBib3VuZHMueU1heCA9IGJvdW5kcy55TWF4ID4gcG9pbnQueSA/IGJvdW5kcy55TWF4IDogcG9pbnQueTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gYm91bmRzO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjb29yZGluYXRlVG9Qb2ludChsYXRpdHVkZSwgbG9uZ2l0dWRlLCBib3VuZHMsIHNjYWxlLCB4b2Zmc2V0LCB5b2Zmc2V0KSB7XHJcbiAgcmV0dXJuIHtcclxuICAgIHg6IChsb25naXR1ZGUgLSBib3VuZHMueE1pbikgKiBzY2FsZSArIHhvZmZzZXQsXHJcbiAgICB5OiAoYm91bmRzLnlNYXggLSBsYXRpdHVkZSkgKiBzY2FsZSArIHlvZmZzZXRcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBwb2ludFRvQ29vcmRpbmF0ZShwb2ludFksIHBvaW50WCwgYm91bmRzLCBzY2FsZSwgeG9mZnNldCwgeW9mZnNldCkge1xyXG4gIHJldHVybiB7XHJcbiAgICB4OiAocG9pbnRYIC0geG9mZnNldCkgLyBzY2FsZSArIGJvdW5kcy54TWluLFxyXG4gICAgeTogYm91bmRzLnlNYXggLSAocG9pbnRZIC0geW9mZnNldCkgLyBzY2FsZVxyXG4gIH07XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGlzUmF5SW50ZXJzZWN0c1NlZ21lbnQocG9pLCBzX3BvaSwgZV9wb2kpIHtcclxuICBpZiAoc19wb2lbMV0gPT0gZV9wb2lbMV0pIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaWYgKHNfcG9pWzFdID4gcG9pWzFdICYmIGVfcG9pWzFdID4gcG9pWzFdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChzX3BvaVsxXSA8IHBvaVsxXSAmJiBlX3BvaVsxXSA8IHBvaVsxXSkge1xyXG4gICAgcmV0dXJuIGZhbHNlO1xyXG4gIH1cclxuICBpZiAoc19wb2lbMV0gPT0gcG9pWzFdICYmIGVfcG9pWzFdID4gcG9pWzFdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGlmIChlX3BvaVsxXSA9PSBwb2lbMV0gJiYgc19wb2lbMV0gPiBwb2lbMV0pIHtcclxuICAgIHJldHVybiBmYWxzZTtcclxuICB9XHJcbiAgaWYgKHNfcG9pWzBdIDwgcG9pWzBdICYmIGVfcG9pWzFdIDwgcG9pWzFdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG4gIGxldCB4c2VnID0gZV9wb2lbMF0gLSAoZV9wb2lbMF0gLSBzX3BvaVswXSkgKiAoZV9wb2lbMV0gLSBwb2lbMV0pIC8gKGVfcG9pWzFdIC0gc19wb2lbMV0pO1xyXG4gIGlmICh4c2VnIDwgcG9pWzBdKSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gaXNQb2lXaXRoaW5Qb2x5KHBvaSwgcG9seSwgbWVyY2F0b3IpIHtcclxuICBsZXQgc2luc2MgPSAwO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9seS5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGVwb2x5ID0gcG9seVtpXVswXTtcclxuICAgIGlmIChwb2x5Lmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgIGVwb2x5ID0gcG9seVtpXVswXVxyXG4gICAgfVxyXG4gICAgZm9yIChsZXQgaiA9IDA7IGogPCBlcG9seS5sZW5ndGggLSAxOyBqKyspIHtcclxuICAgICAgbGV0IHNfcG9pID0gZXBvbHlbal07XHJcbiAgICAgIGxldCBlX3BvaSA9IGVwb2x5W2ogKyAxXTtcclxuICAgICAgaWYgKG1lcmNhdG9yKSB7XHJcbiAgICAgICAgc19wb2kgPSBsb25sYXQybWVyY2F0b3IoZXBvbHlbal1bMF0sIGVwb2x5W2pdWzFdKTtcclxuICAgICAgICBlX3BvaSA9IGxvbmxhdDJtZXJjYXRvcihlcG9seVtqICsgMV1bMF0sIGVwb2x5W2ogKyAxXVsxXSk7XHJcbiAgICAgIH1cclxuICAgICAgaWYgKGlzUmF5SW50ZXJzZWN0c1NlZ21lbnQocG9pLCBzX3BvaSwgZV9wb2kpKSB7XHJcbiAgICAgICAgc2luc2MgKz0gMTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBpZiAoc2luc2MgJSAyID09IDEpIHtcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZmFsc2U7XHJcbiAgfVxyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3TWFwRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCkge1xyXG4gIHZhciBtYXBPcHRpb24gPSBhc3NpZ24oe30sIHtcclxuICAgIGJvcmRlcjogdHJ1ZSxcclxuICAgIG1lcmNhdG9yOiBmYWxzZSxcclxuICAgIGJvcmRlcldpZHRoOiAxLFxyXG4gICAgYWN0aXZlOnRydWUsXHJcbiAgICBib3JkZXJDb2xvcjogJyM2NjY2NjYnLFxyXG4gICAgZmlsbE9wYWNpdHk6IDAuNixcclxuICAgIGFjdGl2ZUJvcmRlckNvbG9yOiAnI2YwNDg2NCcsXHJcbiAgICBhY3RpdmVGaWxsQ29sb3I6ICcjZmFjYzE0JyxcclxuICAgIGFjdGl2ZUZpbGxPcGFjaXR5OiAxXHJcbiAgfSwgb3B0cy5leHRyYS5tYXApO1xyXG4gIHZhciBjb29yZHMsIHBvaW50O1xyXG4gIHZhciBkYXRhID0gc2VyaWVzO1xyXG4gIHZhciBib3VuZHMgPSBnZXRCb3VuZGluZ0JveChkYXRhKTtcclxuICBpZiAobWFwT3B0aW9uLm1lcmNhdG9yKSB7XHJcbiAgICB2YXIgbWF4ID0gbG9ubGF0Mm1lcmNhdG9yKGJvdW5kcy54TWF4LCBib3VuZHMueU1heClcclxuICAgIHZhciBtaW4gPSBsb25sYXQybWVyY2F0b3IoYm91bmRzLnhNaW4sIGJvdW5kcy55TWluKVxyXG4gICAgYm91bmRzLnhNYXggPSBtYXhbMF1cclxuICAgIGJvdW5kcy55TWF4ID0gbWF4WzFdXHJcbiAgICBib3VuZHMueE1pbiA9IG1pblswXVxyXG4gICAgYm91bmRzLnlNaW4gPSBtaW5bMV1cclxuICB9XHJcbiAgdmFyIHhTY2FsZSA9IG9wdHMud2lkdGggLyBNYXRoLmFicyhib3VuZHMueE1heCAtIGJvdW5kcy54TWluKTtcclxuICB2YXIgeVNjYWxlID0gb3B0cy5oZWlnaHQgLyBNYXRoLmFicyhib3VuZHMueU1heCAtIGJvdW5kcy55TWluKTtcclxuICB2YXIgc2NhbGUgPSB4U2NhbGUgPCB5U2NhbGUgPyB4U2NhbGUgOiB5U2NhbGU7XHJcbiAgdmFyIHhvZmZzZXQgPSBvcHRzLndpZHRoIC8gMiAtIE1hdGguYWJzKGJvdW5kcy54TWF4IC0gYm91bmRzLnhNaW4pIC8gMiAqIHNjYWxlO1xyXG4gIHZhciB5b2Zmc2V0ID0gb3B0cy5oZWlnaHQgLyAyIC0gTWF0aC5hYnMoYm91bmRzLnlNYXggLSBib3VuZHMueU1pbikgLyAyICogc2NhbGU7XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRMaW5lV2lkdGgobWFwT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShtYXBPcHRpb24uYm9yZGVyQ29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzW2ldLmNvbG9yLCBzZXJpZXNbaV0uZmlsbE9wYWNpdHl8fG1hcE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgaWYgKG1hcE9wdGlvbi5hY3RpdmUgPT0gdHJ1ZSAmJiBvcHRzLnRvb2x0aXApIHtcclxuICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKSB7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShtYXBPcHRpb24uYWN0aXZlQm9yZGVyQ29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKG1hcE9wdGlvbi5hY3RpdmVGaWxsQ29sb3IsIG1hcE9wdGlvbi5hY3RpdmVGaWxsT3BhY2l0eSkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICB2YXIgY29vcmRhID0gZGF0YVtpXS5nZW9tZXRyeS5jb29yZGluYXRlc1xyXG4gICAgZm9yICh2YXIgayA9IDA7IGsgPCBjb29yZGEubGVuZ3RoOyBrKyspIHtcclxuICAgICAgY29vcmRzID0gY29vcmRhW2tdO1xyXG4gICAgICBpZiAoY29vcmRzLmxlbmd0aCA9PSAxKSB7XHJcbiAgICAgICAgY29vcmRzID0gY29vcmRzWzBdXHJcbiAgICAgIH1cclxuICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCBjb29yZHMubGVuZ3RoOyBqKyspIHtcclxuICAgICAgICB2YXIgZ2Fvc2kgPSBBcnJheSgyKTtcclxuICAgICAgICBpZiAobWFwT3B0aW9uLm1lcmNhdG9yKSB7XHJcbiAgICAgICAgICBnYW9zaSA9IGxvbmxhdDJtZXJjYXRvcihjb29yZHNbal1bMF0sIGNvb3Jkc1tqXVsxXSlcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgZ2Fvc2kgPSBjb29yZHNbal1cclxuICAgICAgICB9XHJcbiAgICAgICAgcG9pbnQgPSBjb29yZGluYXRlVG9Qb2ludChnYW9zaVsxXSwgZ2Fvc2lbMF0sIGJvdW5kcywgc2NhbGUsIHhvZmZzZXQsIHlvZmZzZXQpXHJcbiAgICAgICAgaWYgKGogPT09IDApIHtcclxuICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICBjb250ZXh0Lm1vdmVUbyhwb2ludC54LCBwb2ludC55KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5saW5lVG8ocG9pbnQueCwgcG9pbnQueSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBpZiAobWFwT3B0aW9uLmJvcmRlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICBpZiAob3B0cy5kYXRhTGFiZWwgPT0gdHJ1ZSkge1xyXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBkYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIHZhciBjZW50ZXJQb2ludCA9IGRhdGFbaV0ucHJvcGVydGllcy5jZW50cm9pZDtcclxuICAgICAgaWYgKGNlbnRlclBvaW50KSB7XHJcbiAgICAgICAgaWYgKG1hcE9wdGlvbi5tZXJjYXRvcikge1xyXG4gICAgICAgICAgY2VudGVyUG9pbnQgPSBsb25sYXQybWVyY2F0b3IoZGF0YVtpXS5wcm9wZXJ0aWVzLmNlbnRyb2lkWzBdLCBkYXRhW2ldLnByb3BlcnRpZXMuY2VudHJvaWRbMV0pXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHBvaW50ID0gY29vcmRpbmF0ZVRvUG9pbnQoY2VudGVyUG9pbnRbMV0sIGNlbnRlclBvaW50WzBdLCBib3VuZHMsIHNjYWxlLCB4b2Zmc2V0LCB5b2Zmc2V0KTtcclxuICAgICAgICBsZXQgZm9udFNpemUgPSBkYXRhW2ldLnRleHRTaXplICogb3B0cy5waXggfHwgY29uZmlnLmZvbnRTaXplO1xyXG4gICAgICAgIGxldCBmb250Q29sb3IgPSBkYXRhW2ldLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcjtcclxuICAgICAgICBpZihtYXBPcHRpb24uYWN0aXZlICYmIG1hcE9wdGlvbi5hY3RpdmVUZXh0Q29sb3IgJiYgb3B0cy50b29sdGlwICYmIG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKXtcclxuICAgICAgICAgIGZvbnRDb2xvciA9IG1hcE9wdGlvbi5hY3RpdmVUZXh0Q29sb3I7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGxldCB0ZXh0ID0gZGF0YVtpXS5wcm9wZXJ0aWVzLm5hbWU7XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKVxyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZvbnRDb2xvcilcclxuICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIHBvaW50LnggLSBtZWFzdXJlVGV4dCh0ZXh0LCBmb250U2l6ZSwgY29udGV4dCkgLyAyLCBwb2ludC55ICsgZm9udFNpemUgLyAyKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgb3B0cy5jaGFydERhdGEubWFwRGF0YSA9IHtcclxuICAgIGJvdW5kczogYm91bmRzLFxyXG4gICAgc2NhbGU6IHNjYWxlLFxyXG4gICAgeG9mZnNldDogeG9mZnNldCxcclxuICAgIHlvZmZzZXQ6IHlvZmZzZXQsXHJcbiAgICBtZXJjYXRvcjogbWFwT3B0aW9uLm1lcmNhdG9yXHJcbiAgfVxyXG4gIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgMSk7XHJcbiAgY29udGV4dC5kcmF3KCk7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIG5vcm1hbEludChtaW4sIG1heCwgaXRlcikge1xyXG4gIGl0ZXIgPSBpdGVyID09IDAgPyAxIDogaXRlcjtcclxuICB2YXIgYXJyID0gW107XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBpdGVyOyBpKyspIHtcclxuICAgIGFycltpXSA9IE1hdGgucmFuZG9tKCk7XHJcbiAgfTtcclxuICByZXR1cm4gTWF0aC5mbG9vcihhcnIucmVkdWNlKGZ1bmN0aW9uKGksIGopIHtcclxuICAgIHJldHVybiBpICsgalxyXG4gIH0pIC8gaXRlciAqIChtYXggLSBtaW4pKSArIG1pbjtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGNvbGxpc2lvbk5ldyhhcmVhLCBwb2ludHMsIHdpZHRoLCBoZWlnaHQpIHtcclxuICB2YXIgaXNJbiA9IGZhbHNlO1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBpZiAocG9pbnRzW2ldLmFyZWEpIHtcclxuICAgICAgaWYgKGFyZWFbM10gPCBwb2ludHNbaV0uYXJlYVsxXSB8fCBhcmVhWzBdID4gcG9pbnRzW2ldLmFyZWFbMl0gfHwgYXJlYVsxXSA+IHBvaW50c1tpXS5hcmVhWzNdIHx8IGFyZWFbMl0gPCBwb2ludHNbaV0uYXJlYVswXSkge1xyXG4gICAgICAgIGlmIChhcmVhWzBdIDwgMCB8fCBhcmVhWzFdIDwgMCB8fCBhcmVhWzJdID4gd2lkdGggfHwgYXJlYVszXSA+IGhlaWdodCkge1xyXG4gICAgICAgICAgaXNJbiA9IHRydWU7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgaXNJbiA9IGZhbHNlO1xyXG4gICAgICAgIH1cclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBpc0luID0gdHJ1ZTtcclxuICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gIH1cclxuICByZXR1cm4gaXNJbjtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGdldFdvcmRDbG91ZFBvaW50KG9wdHMsIHR5cGUsIGNvbnRleHQpIHtcclxuICBsZXQgcG9pbnRzID0gb3B0cy5zZXJpZXM7XHJcbiAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICBjYXNlICdub3JtYWwnOlxyXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgICAgIGxldCB0ZXh0ID0gcG9pbnRzW2ldLm5hbWU7XHJcbiAgICAgICAgbGV0IHRIZWlnaHQgPSBwb2ludHNbaV0udGV4dFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgICBsZXQgdFdpZHRoID0gbWVhc3VyZVRleHQodGV4dCwgdEhlaWdodCwgY29udGV4dCk7XHJcbiAgICAgICAgbGV0IHgsIHk7XHJcbiAgICAgICAgbGV0IGFyZWE7XHJcbiAgICAgICAgbGV0IGJyZWFrbnVtID0gMDtcclxuICAgICAgICB3aGlsZSAodHJ1ZSkge1xyXG4gICAgICAgICAgYnJlYWtudW0rKztcclxuICAgICAgICAgIHggPSBub3JtYWxJbnQoLW9wdHMud2lkdGggLyAyLCBvcHRzLndpZHRoIC8gMiwgNSkgLSB0V2lkdGggLyAyO1xyXG4gICAgICAgICAgeSA9IG5vcm1hbEludCgtb3B0cy5oZWlnaHQgLyAyLCBvcHRzLmhlaWdodCAvIDIsIDUpICsgdEhlaWdodCAvIDI7XHJcbiAgICAgICAgICBhcmVhID0gW3ggLSA1ICsgb3B0cy53aWR0aCAvIDIsIHkgLSA1IC0gdEhlaWdodCArIG9wdHMuaGVpZ2h0IC8gMiwgeCArIHRXaWR0aCArIDUgKyBvcHRzLndpZHRoIC8gMiwgeSArIDUgK1xyXG4gICAgICAgICAgICBvcHRzLmhlaWdodCAvIDJcclxuICAgICAgICAgIF07XHJcbiAgICAgICAgICBsZXQgaXNDb2xsaXNpb24gPSBjb2xsaXNpb25OZXcoYXJlYSwgcG9pbnRzLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAoIWlzQ29sbGlzaW9uKSBicmVhaztcclxuICAgICAgICAgIGlmIChicmVha251bSA9PSAxMDAwKSB7XHJcbiAgICAgICAgICAgIGFyZWEgPSBbLTEwMCwgLTEwMCwgLTEwMCwgLTEwMF07XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcG9pbnRzW2ldLmFyZWEgPSBhcmVhO1xyXG4gICAgICB9XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAndmVydGljYWwnOlxyXG4gICAgICBmdW5jdGlvbiBTcGluKCkge1xyXG4gICAgICAgIC8v6I635Y+W5Z2H5YyA6ZqP5py65YC877yM5piv5ZCm5peL6L2s77yM5peL6L2s55qE5qaC546H5Li677yIMS0wLjXvvIlcclxuICAgICAgICBpZiAoTWF0aC5yYW5kb20oKSA+IDAuNykge1xyXG4gICAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIHJldHVybiBmYWxzZVxyXG4gICAgICAgIH07XHJcbiAgICAgIH07XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcG9pbnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbGV0IHRleHQgPSBwb2ludHNbaV0ubmFtZTtcclxuICAgICAgICBsZXQgdEhlaWdodCA9IHBvaW50c1tpXS50ZXh0U2l6ZSAqIG9wdHMucGl4O1xyXG4gICAgICAgIGxldCB0V2lkdGggPSBtZWFzdXJlVGV4dCh0ZXh0LCB0SGVpZ2h0LCBjb250ZXh0KTtcclxuICAgICAgICBsZXQgaXNTcGluID0gU3BpbigpO1xyXG4gICAgICAgIGxldCB4LCB5LCBhcmVhLCBhcmVhdjtcclxuICAgICAgICBsZXQgYnJlYWtudW0gPSAwO1xyXG4gICAgICAgIHdoaWxlICh0cnVlKSB7XHJcbiAgICAgICAgICBicmVha251bSsrO1xyXG4gICAgICAgICAgbGV0IGlzQ29sbGlzaW9uO1xyXG4gICAgICAgICAgaWYgKGlzU3Bpbikge1xyXG4gICAgICAgICAgICB4ID0gbm9ybWFsSW50KC1vcHRzLndpZHRoIC8gMiwgb3B0cy53aWR0aCAvIDIsIDUpIC0gdFdpZHRoIC8gMjtcclxuICAgICAgICAgICAgeSA9IG5vcm1hbEludCgtb3B0cy5oZWlnaHQgLyAyLCBvcHRzLmhlaWdodCAvIDIsIDUpICsgdEhlaWdodCAvIDI7XHJcbiAgICAgICAgICAgIGFyZWEgPSBbeSAtIDUgLSB0V2lkdGggKyBvcHRzLndpZHRoIC8gMiwgKC14IC0gNSArIG9wdHMuaGVpZ2h0IC8gMiksIHkgKyA1ICsgb3B0cy53aWR0aCAvIDIsICgteCArIHRIZWlnaHQgKyA1ICsgb3B0cy5oZWlnaHQgLyAyKV07XHJcbiAgICAgICAgICAgIGFyZWF2ID0gW29wdHMud2lkdGggLSAob3B0cy53aWR0aCAvIDIgLSBvcHRzLmhlaWdodCAvIDIpIC0gKC14ICsgdEhlaWdodCArIDUgKyBvcHRzLmhlaWdodCAvIDIpIC0gNSwgKG9wdHMuaGVpZ2h0IC8gMiAtIG9wdHMud2lkdGggLyAyKSArICh5IC0gNSAtIHRXaWR0aCArIG9wdHMud2lkdGggLyAyKSAtIDUsIG9wdHMud2lkdGggLSAob3B0cy53aWR0aCAvIDIgLSBvcHRzLmhlaWdodCAvIDIpIC0gKC14ICsgdEhlaWdodCArIDUgKyBvcHRzLmhlaWdodCAvIDIpICsgdEhlaWdodCwgKG9wdHMuaGVpZ2h0IC8gMiAtIG9wdHMud2lkdGggLyAyKSArICh5IC0gNSAtIHRXaWR0aCArIG9wdHMud2lkdGggLyAyKSArIHRXaWR0aCArIDVdO1xyXG4gICAgICAgICAgICBpc0NvbGxpc2lvbiA9IGNvbGxpc2lvbk5ldyhhcmVhdiwgcG9pbnRzLCBvcHRzLmhlaWdodCwgb3B0cy53aWR0aCk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB4ID0gbm9ybWFsSW50KC1vcHRzLndpZHRoIC8gMiwgb3B0cy53aWR0aCAvIDIsIDUpIC0gdFdpZHRoIC8gMjtcclxuICAgICAgICAgICAgeSA9IG5vcm1hbEludCgtb3B0cy5oZWlnaHQgLyAyLCBvcHRzLmhlaWdodCAvIDIsIDUpICsgdEhlaWdodCAvIDI7XHJcbiAgICAgICAgICAgIGFyZWEgPSBbeCAtIDUgKyBvcHRzLndpZHRoIC8gMiwgeSAtIDUgLSB0SGVpZ2h0ICsgb3B0cy5oZWlnaHQgLyAyLCB4ICsgdFdpZHRoICsgNSArIG9wdHMud2lkdGggLyAyLCB5ICsgNSArIG9wdHMuaGVpZ2h0IC8gMl07XHJcbiAgICAgICAgICAgIGlzQ29sbGlzaW9uID0gY29sbGlzaW9uTmV3KGFyZWEsIHBvaW50cywgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgaWYgKCFpc0NvbGxpc2lvbikgYnJlYWs7XHJcbiAgICAgICAgICBpZiAoYnJlYWtudW0gPT0gMTAwMCkge1xyXG4gICAgICAgICAgICBhcmVhID0gWy0xMDAwLCAtMTAwMCwgLTEwMDAsIC0xMDAwXTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfTtcclxuICAgICAgICBpZiAoaXNTcGluKSB7XHJcbiAgICAgICAgICBwb2ludHNbaV0uYXJlYSA9IGFyZWF2O1xyXG4gICAgICAgICAgcG9pbnRzW2ldLmFyZWF2ID0gYXJlYTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgcG9pbnRzW2ldLmFyZWEgPSBhcmVhO1xyXG4gICAgICAgIH1cclxuICAgICAgICBwb2ludHNbaV0ucm90YXRlID0gaXNTcGluO1xyXG4gICAgICB9O1xyXG4gICAgICBicmVhaztcclxuICB9XHJcbiAgcmV0dXJuIHBvaW50cztcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd1dvcmRDbG91ZERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBsZXQgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICBsZXQgd29yZE9wdGlvbiA9IGFzc2lnbih7fSwge1xyXG4gICAgdHlwZTogJ25vcm1hbCcsXHJcbiAgICBhdXRvQ29sb3JzOiB0cnVlXHJcbiAgfSwgb3B0cy5leHRyYS53b3JkKTtcclxuICBpZiAoIW9wdHMuY2hhcnREYXRhLndvcmRDbG91ZERhdGEpIHtcclxuICAgIG9wdHMuY2hhcnREYXRhLndvcmRDbG91ZERhdGEgPSBnZXRXb3JkQ2xvdWRQb2ludChvcHRzLCB3b3JkT3B0aW9uLnR5cGUsIGNvbnRleHQpO1xyXG4gIH1cclxuICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gIGNvbnRleHQuc2V0RmlsbFN0eWxlKG9wdHMuYmFja2dyb3VuZCk7XHJcbiAgY29udGV4dC5yZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICBjb250ZXh0LmZpbGwoKTtcclxuICBjb250ZXh0LnNhdmUoKTtcclxuICBsZXQgcG9pbnRzID0gb3B0cy5jaGFydERhdGEud29yZENsb3VkRGF0YTtcclxuICBjb250ZXh0LnRyYW5zbGF0ZShvcHRzLndpZHRoIC8gMiwgb3B0cy5oZWlnaHQgLyAyKTtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHBvaW50cy5sZW5ndGg7IGkrKykge1xyXG4gICAgY29udGV4dC5zYXZlKCk7XHJcbiAgICBpZiAocG9pbnRzW2ldLnJvdGF0ZSkge1xyXG4gICAgICBjb250ZXh0LnJvdGF0ZSg5MCAqIE1hdGguUEkgLyAxODApO1xyXG4gICAgfVxyXG4gICAgbGV0IHRleHQgPSBwb2ludHNbaV0ubmFtZTtcclxuICAgIGxldCB0SGVpZ2h0ID0gcG9pbnRzW2ldLnRleHRTaXplICogb3B0cy5waXg7XHJcbiAgICBsZXQgdFdpZHRoID0gbWVhc3VyZVRleHQodGV4dCwgdEhlaWdodCwgY29udGV4dCk7XHJcbiAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShwb2ludHNbaV0uY29sb3IpO1xyXG4gICAgY29udGV4dC5zZXRGaWxsU3R5bGUocG9pbnRzW2ldLmNvbG9yKTtcclxuICAgIGNvbnRleHQuc2V0Rm9udFNpemUodEhlaWdodCk7XHJcbiAgICBpZiAocG9pbnRzW2ldLnJvdGF0ZSkge1xyXG4gICAgICBpZiAocG9pbnRzW2ldLmFyZWF2WzBdID4gMCkge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQodGV4dCwgKHBvaW50c1tpXS5hcmVhdlswXSArIDUgLSBvcHRzLndpZHRoIC8gMikgKiBwcm9jZXNzIC0gdFdpZHRoICogKDEgLSBwcm9jZXNzKSAvIDIsIChwb2ludHNbaV0uYXJlYXZbMV0gKyA1ICsgdEhlaWdodCAtIG9wdHMuaGVpZ2h0IC8gMikgKiBwcm9jZXNzKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbFRleHQodGV4dCwgKHBvaW50c1tpXS5hcmVhdlswXSArIDUgLSBvcHRzLndpZHRoIC8gMikgKiBwcm9jZXNzIC0gdFdpZHRoICogKDEgLSBwcm9jZXNzKSAvIDIsIChwb2ludHNbaV0uYXJlYXZbMV0gKyA1ICsgdEhlaWdodCAtIG9wdHMuaGVpZ2h0IC8gMikgKiBwcm9jZXNzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgY29udGV4dC5maWxsVGV4dCh0ZXh0LCAocG9pbnRzW2ldLmFyZWF2WzBdICsgNSAtIG9wdHMud2lkdGggLyAyKSAqIHByb2Nlc3MgLSB0V2lkdGggKiAoMSAtIHByb2Nlc3MpIC8gMiwgKHBvaW50c1tpXS5hcmVhdlsxXSArIDUgKyB0SGVpZ2h0IC0gb3B0cy5oZWlnaHQgLyAyKSAqIHByb2Nlc3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgaWYgKHBvaW50c1tpXS5hcmVhWzBdID4gMCkge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LnN0cm9rZVRleHQodGV4dCwgKHBvaW50c1tpXS5hcmVhWzBdICsgNSAtIG9wdHMud2lkdGggLyAyKSAqIHByb2Nlc3MgLSB0V2lkdGggKiAoMSAtIHByb2Nlc3MpIC8gMiwgKHBvaW50c1tpXS5hcmVhWzFdICsgNSArIHRIZWlnaHQgLSBvcHRzLmhlaWdodCAvIDIpICogcHJvY2Vzcyk7XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIChwb2ludHNbaV0uYXJlYVswXSArIDUgLSBvcHRzLndpZHRoIC8gMikgKiBwcm9jZXNzIC0gdFdpZHRoICogKDEgLSBwcm9jZXNzKSAvIDIsIChwb2ludHNbaV0uYXJlYVsxXSArIDUgKyB0SGVpZ2h0IC0gb3B0cy5oZWlnaHQgLyAyKSAqIHByb2Nlc3MpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIChwb2ludHNbaV0uYXJlYVswXSArIDUgLSBvcHRzLndpZHRoIC8gMikgKiBwcm9jZXNzIC0gdFdpZHRoICogKDEgLSBwcm9jZXNzKSAvIDIsIChwb2ludHNbaV0uYXJlYVsxXSArIDUgKyB0SGVpZ2h0IC0gb3B0cy5oZWlnaHQgLyAyKSAqIHByb2Nlc3MpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgIGNvbnRleHQucmVzdG9yZSgpO1xyXG4gIH1cclxuICBjb250ZXh0LnJlc3RvcmUoKTtcclxufVxyXG5cclxuZnVuY3Rpb24gZHJhd0Z1bm5lbERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpIHtcclxuICBsZXQgcHJvY2VzcyA9IGFyZ3VtZW50cy5sZW5ndGggPiA0ICYmIGFyZ3VtZW50c1s0XSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzRdIDogMTtcclxuICBsZXQgZnVubmVsT3B0aW9uID0gYXNzaWduKHt9LCB7XHJcbiAgICB0eXBlOidmdW5uZWwnLFxyXG4gICAgYWN0aXZlV2lkdGg6IDEwLFxyXG4gICAgYWN0aXZlT3BhY2l0eTogMC4zLFxyXG4gICAgYm9yZGVyOiBmYWxzZSxcclxuICAgIGJvcmRlcldpZHRoOiAyLFxyXG4gICAgYm9yZGVyQ29sb3I6ICcjRkZGRkZGJyxcclxuICAgIGZpbGxPcGFjaXR5OiAxLFxyXG4gICAgbWluU2l6ZTogMCxcclxuICAgIGxhYmVsQWxpZ246ICdyaWdodCcsXHJcbiAgICBsaW5lYXJUeXBlOiAnbm9uZScsXHJcbiAgICBjdXN0b21Db2xvcjogW10sXHJcbiAgfSwgb3B0cy5leHRyYS5mdW5uZWwpO1xyXG4gIGxldCBlYWNoU3BhY2luZyA9IChvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVswXSAtIG9wdHMuYXJlYVsyXSkgLyBzZXJpZXMubGVuZ3RoO1xyXG4gIGxldCBjZW50ZXJQb3NpdGlvbiA9IHtcclxuICAgIHg6IG9wdHMuYXJlYVszXSArIChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIsXHJcbiAgICB5OiBvcHRzLmhlaWdodCAtIG9wdHMuYXJlYVsyXVxyXG4gIH07XHJcbiAgbGV0IGFjdGl2ZVdpZHRoID0gZnVubmVsT3B0aW9uLmFjdGl2ZVdpZHRoICogb3B0cy5waXg7XHJcbiAgbGV0IHJhZGl1cyA9IE1hdGgubWluKChvcHRzLndpZHRoIC0gb3B0cy5hcmVhWzFdIC0gb3B0cy5hcmVhWzNdKSAvIDIgLSBhY3RpdmVXaWR0aCwgKG9wdHMuaGVpZ2h0IC0gb3B0cy5hcmVhWzBdIC0gb3B0cy5hcmVhWzJdKSAvIDIgLSBhY3RpdmVXaWR0aCk7XHJcbiAgbGV0IHNlcmllc05ldyA9IGdldEZ1bm5lbERhdGFQb2ludHMoc2VyaWVzLCByYWRpdXMsIGZ1bm5lbE9wdGlvbiwgZWFjaFNwYWNpbmcsIHByb2Nlc3MpO1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGNvbnRleHQudHJhbnNsYXRlKGNlbnRlclBvc2l0aW9uLngsIGNlbnRlclBvc2l0aW9uLnkpO1xyXG4gIGZ1bm5lbE9wdGlvbi5jdXN0b21Db2xvciA9IGZpbGxDdXN0b21Db2xvcihmdW5uZWxPcHRpb24ubGluZWFyVHlwZSwgZnVubmVsT3B0aW9uLmN1c3RvbUNvbG9yLCBzZXJpZXMsIGNvbmZpZyk7XHJcbiAgaWYoZnVubmVsT3B0aW9uLnR5cGUgPT0gJ3B5cmFtaWQnKXtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzTmV3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpID09IHNlcmllc05ldy5sZW5ndGggLTEpIHtcclxuICAgICAgICBpZiAob3B0cy50b29sdGlwKSB7XHJcbiAgICAgICAgICBpZiAob3B0cy50b29sdGlwLmluZGV4ID09IGkpIHtcclxuICAgICAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uYWN0aXZlT3BhY2l0eSkpO1xyXG4gICAgICAgICAgICBjb250ZXh0Lm1vdmVUbygtYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaV0ucmFkaXVzICsgYWN0aXZlV2lkdGgsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbyhhY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oLWFjdGl2ZVdpZHRoLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzTmV3W2ldLmZ1bm5lbEFyZWEgPSBbY2VudGVyUG9zaXRpb24ueCAtIHNlcmllc05ld1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZyAqIChpICsgMSksIGNlbnRlclBvc2l0aW9uLnggKyBzZXJpZXNOZXdbaV0ucmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55IC0gZWFjaFNwYWNpbmcgKiBpXTtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGZ1bm5lbE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGZ1bm5lbE9wdGlvbi5ib3JkZXJDb2xvcik7XHJcbiAgICAgICAgdmFyIGZpbGxDb2xvciA9IGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KTtcclxuICAgICAgICBpZiAoZnVubmVsT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZywgLXNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAuNSwgaGV4VG9SZ2IoZnVubmVsT3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc05ld1tpXS5saW5lYXJJbmRleF0sIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oMCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2ldLnJhZGl1cywgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2ldLnJhZGl1cywgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oMCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24uYm9yZGVyID09IHRydWUpIHtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5hY3RpdmVPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKDAsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2ldLnJhZGl1cyAtIGFjdGl2ZVdpZHRoLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpICsgMV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpICsgMV0ucmFkaXVzICsgYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKDAsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzTmV3W2ldLmZ1bm5lbEFyZWEgPSBbY2VudGVyUG9zaXRpb24ueCAtIHNlcmllc05ld1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZyAqIChpICsgMSksIGNlbnRlclBvc2l0aW9uLnggKyBzZXJpZXNOZXdbaV0ucmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55IC0gZWFjaFNwYWNpbmcgKiBpXTtcclxuICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0TGluZVdpZHRoKGZ1bm5lbE9wdGlvbi5ib3JkZXJXaWR0aCAqIG9wdHMucGl4KTtcclxuICAgICAgICBjb250ZXh0LnNldFN0cm9rZVN0eWxlKGZ1bm5lbE9wdGlvbi5ib3JkZXJDb2xvcik7XHJcbiAgICAgICAgdmFyIGZpbGxDb2xvciA9IGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KTtcclxuICAgICAgICBpZiAoZnVubmVsT3B0aW9uLmxpbmVhclR5cGUgPT0gJ2N1c3RvbScpIHtcclxuICAgICAgICAgIHZhciBncmQgPSBjb250ZXh0LmNyZWF0ZUxpbmVhckdyYWRpZW50KHNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZywgLXNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAsIGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDAuNSwgaGV4VG9SZ2IoZnVubmVsT3B0aW9uLmN1c3RvbUNvbG9yW3Nlcmllc05ld1tpXS5saW5lYXJJbmRleF0sIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgxLCBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZmlsbENvbG9yID0gZ3JkXHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGZpbGxDb2xvcik7XHJcbiAgICAgICAgY29udGV4dC5tb3ZlVG8oMCwgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpXS5yYWRpdXMsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaSArIDFdLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaSArIDFdLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaV0ucmFkaXVzLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygwLCAwKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24uYm9yZGVyID09IHRydWUpIHtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC1lYWNoU3BhY2luZylcclxuICAgIH1cclxuICB9ZWxzZXtcclxuICAgIGNvbnRleHQudHJhbnNsYXRlKDAsIC0gKHNlcmllc05ldy5sZW5ndGggLSAxKSAqIGVhY2hTcGFjaW5nKTtcclxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzTmV3Lmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgIGlmIChpID09IHNlcmllc05ldy5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgaWYgKG9wdHMudG9vbHRpcCkge1xyXG4gICAgICAgICAgaWYgKG9wdHMudG9vbHRpcC5pbmRleCA9PSBpKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmFjdGl2ZU9wYWNpdHkpKTtcclxuICAgICAgICAgICAgY29udGV4dC5tb3ZlVG8oLWFjdGl2ZVdpZHRoIC0gZnVubmVsT3B0aW9uLm1pblNpemUvMiwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oYWN0aXZlV2lkdGggKyBmdW5uZWxPcHRpb24ubWluU2l6ZS8yLCAwKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oLWFjdGl2ZVdpZHRoIC0gZnVubmVsT3B0aW9uLm1pblNpemUvMiwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBzZXJpZXNOZXdbaV0uZnVubmVsQXJlYSA9IFtjZW50ZXJQb3NpdGlvbi54IC0gc2VyaWVzTmV3W2ldLnJhZGl1cywgY2VudGVyUG9zaXRpb24ueSAtIGVhY2hTcGFjaW5nLCBjZW50ZXJQb3NpdGlvbi54ICsgc2VyaWVzTmV3W2ldLnJhZGl1cywgY2VudGVyUG9zaXRpb24ueSBdO1xyXG4gICAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoZnVubmVsT3B0aW9uLmJvcmRlcldpZHRoICogb3B0cy5waXgpO1xyXG4gICAgICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoZnVubmVsT3B0aW9uLmJvcmRlckNvbG9yKTtcclxuICAgICAgICB2YXIgZmlsbENvbG9yID0gaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24ubGluZWFyVHlwZSA9PSAnY3VzdG9tJykge1xyXG4gICAgICAgICAgdmFyIGdyZCA9IGNvbnRleHQuY3JlYXRlTGluZWFyR3JhZGllbnQoc2VyaWVzTmV3W2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nLCAtc2VyaWVzTmV3W2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMCwgaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMC41LCBoZXhUb1JnYihmdW5uZWxPcHRpb24uY3VzdG9tQ29sb3Jbc2VyaWVzTmV3W2ldLmxpbmVhckluZGV4XSwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBncmQuYWRkQ29sb3JTdG9wKDEsIGhleFRvUmdiKHNlcmllc05ld1tpXS5jb2xvciwgZnVubmVsT3B0aW9uLmZpbGxPcGFjaXR5KSk7XHJcbiAgICAgICAgICBmaWxsQ29sb3IgPSBncmRcclxuICAgICAgICB9XHJcbiAgICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoZmlsbENvbG9yKTtcclxuICAgICAgICBjb250ZXh0Lm1vdmVUbygwLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygtZnVubmVsT3B0aW9uLm1pblNpemUvMiwgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhmdW5uZWxPcHRpb24ubWluU2l6ZS8yLCAwKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbygwLCAwKTtcclxuICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICAgIGlmIChmdW5uZWxPcHRpb24uYm9yZGVyID09IHRydWUpIHtcclxuICAgICAgICAgIGNvbnRleHQuc3Ryb2tlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmIChvcHRzLnRvb2x0aXApIHtcclxuICAgICAgICAgIGlmIChvcHRzLnRvb2x0aXAuaW5kZXggPT0gaSkge1xyXG4gICAgICAgICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5hY3RpdmVPcGFjaXR5KSk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubW92ZVRvKDAsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmxpbmVUbygtc2VyaWVzTmV3W2kgKyAxXS5yYWRpdXMgLSBhY3RpdmVXaWR0aCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaV0ucmFkaXVzIC0gYWN0aXZlV2lkdGgsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKHNlcmllc05ld1tpXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2kgKyAxXS5yYWRpdXMgKyBhY3RpdmVXaWR0aCwgMCk7XHJcbiAgICAgICAgICAgIGNvbnRleHQubGluZVRvKDAsIDApO1xyXG4gICAgICAgICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgc2VyaWVzTmV3W2ldLmZ1bm5lbEFyZWEgPSBbY2VudGVyUG9zaXRpb24ueCAtIHNlcmllc05ld1tpXS5yYWRpdXMsIGNlbnRlclBvc2l0aW9uLnkgLSBlYWNoU3BhY2luZyAqIChzZXJpZXNOZXcubGVuZ3RoIC0gaSksIGNlbnRlclBvc2l0aW9uLnggKyBzZXJpZXNOZXdbaV0ucmFkaXVzLCBjZW50ZXJQb3NpdGlvbi55IC0gZWFjaFNwYWNpbmcgKiAoc2VyaWVzTmV3Lmxlbmd0aCAtIGkgLSAxKV07XHJcbiAgICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LnNldExpbmVXaWR0aChmdW5uZWxPcHRpb24uYm9yZGVyV2lkdGggKiBvcHRzLnBpeCk7XHJcbiAgICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShmdW5uZWxPcHRpb24uYm9yZGVyQ29sb3IpO1xyXG4gICAgICAgIHZhciBmaWxsQ29sb3IgPSBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSk7XHJcbiAgICAgICAgaWYgKGZ1bm5lbE9wdGlvbi5saW5lYXJUeXBlID09ICdjdXN0b20nKSB7XHJcbiAgICAgICAgICB2YXIgZ3JkID0gY29udGV4dC5jcmVhdGVMaW5lYXJHcmFkaWVudChzZXJpZXNOZXdbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcsIC1zZXJpZXNOZXdbaV0ucmFkaXVzLCAtZWFjaFNwYWNpbmcpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLCBoZXhUb1JnYihzZXJpZXNOZXdbaV0uY29sb3IsIGZ1bm5lbE9wdGlvbi5maWxsT3BhY2l0eSkpO1xyXG4gICAgICAgICAgZ3JkLmFkZENvbG9yU3RvcCgwLjUsIGhleFRvUmdiKGZ1bm5lbE9wdGlvbi5jdXN0b21Db2xvcltzZXJpZXNOZXdbaV0ubGluZWFySW5kZXhdLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGdyZC5hZGRDb2xvclN0b3AoMSwgaGV4VG9SZ2Ioc2VyaWVzTmV3W2ldLmNvbG9yLCBmdW5uZWxPcHRpb24uZmlsbE9wYWNpdHkpKTtcclxuICAgICAgICAgIGZpbGxDb2xvciA9IGdyZFxyXG4gICAgICAgIH1cclxuICAgICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShmaWxsQ29sb3IpO1xyXG4gICAgICAgIGNvbnRleHQubW92ZVRvKDAsIDApO1xyXG4gICAgICAgIGNvbnRleHQubGluZVRvKC1zZXJpZXNOZXdbaSArIDFdLnJhZGl1cywgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oLXNlcmllc05ld1tpXS5yYWRpdXMsIC1lYWNoU3BhY2luZyk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oc2VyaWVzTmV3W2ldLnJhZGl1cywgLWVhY2hTcGFjaW5nKTtcclxuICAgICAgICBjb250ZXh0LmxpbmVUbyhzZXJpZXNOZXdbaSArIDFdLnJhZGl1cywgMCk7XHJcbiAgICAgICAgY29udGV4dC5saW5lVG8oMCwgMCk7XHJcbiAgICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgICBjb250ZXh0LmZpbGwoKTtcclxuICAgICAgICBpZiAoZnVubmVsT3B0aW9uLmJvcmRlciA9PSB0cnVlKSB7XHJcbiAgICAgICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICBjb250ZXh0LnRyYW5zbGF0ZSgwLCBlYWNoU3BhY2luZylcclxuICAgIH1cclxuICB9XHJcbiAgXHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgaWYgKG9wdHMuZGF0YUxhYmVsICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICBkcmF3RnVubmVsVGV4dChzZXJpZXNOZXcsIG9wdHMsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCBmdW5uZWxPcHRpb24ubGFiZWxBbGlnbiwgYWN0aXZlV2lkdGgsIGNlbnRlclBvc2l0aW9uKTtcclxuICB9XHJcbiAgaWYgKHByb2Nlc3MgPT09IDEpIHtcclxuICAgIGRyYXdGdW5uZWxDZW50ZXJUZXh0KHNlcmllc05ldywgb3B0cywgY29udGV4dCwgZWFjaFNwYWNpbmcsIGZ1bm5lbE9wdGlvbi5sYWJlbEFsaWduLCBhY3RpdmVXaWR0aCwgY2VudGVyUG9zaXRpb24pO1xyXG4gIH1cclxuICByZXR1cm4ge1xyXG4gICAgY2VudGVyOiBjZW50ZXJQb3NpdGlvbixcclxuICAgIHJhZGl1czogcmFkaXVzLFxyXG4gICAgc2VyaWVzOiBzZXJpZXNOZXdcclxuICB9O1xyXG59XHJcblxyXG5mdW5jdGlvbiBkcmF3RnVubmVsVGV4dChzZXJpZXMsIG9wdHMsIGNvbnRleHQsIGVhY2hTcGFjaW5nLCBsYWJlbEFsaWduLCBhY3RpdmVXaWR0aCwgY2VudGVyUG9zaXRpb24pIHtcclxuICBmb3IgKGxldCBpID0gMDsgaSA8IHNlcmllcy5sZW5ndGg7IGkrKykge1xyXG4gICAgbGV0IGl0ZW0gPSBzZXJpZXNbaV07XHJcbiAgICBpZihpdGVtLmxhYmVsU2hvdyA9PT0gZmFsc2Upe1xyXG4gICAgICBjb250aW51ZTtcclxuICAgIH1cclxuICAgIGxldCBzdGFydFgsIGVuZFgsIHN0YXJ0WSwgZm9udFNpemU7XHJcbiAgICBsZXQgdGV4dCA9IGl0ZW0uZm9ybWF0dGVyID8gaXRlbS5mb3JtYXR0ZXIoaXRlbSxpLHNlcmllcyxvcHRzKSA6IHV0aWwudG9GaXhlZChpdGVtLl9wcm9wb3J0aW9uXyAqIDEwMCkgKyAnJSc7XHJcbiAgICB0ZXh0ID0gaXRlbS5sYWJlbFRleHQgPyBpdGVtLmxhYmVsVGV4dCA6IHRleHQ7XHJcbiAgICBpZiAobGFiZWxBbGlnbiA9PSAncmlnaHQnKSB7XHJcbiAgICAgIGlmIChpID09IHNlcmllcy5sZW5ndGggLTEpIHtcclxuICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzJdICsgY2VudGVyUG9zaXRpb24ueCkgLyAyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0YXJ0WCA9IChpdGVtLmZ1bm5lbEFyZWFbMl0gKyBzZXJpZXNbaSArIDFdLmZ1bm5lbEFyZWFbMl0pIC8gMjtcclxuICAgICAgfVxyXG4gICAgICBlbmRYID0gc3RhcnRYICsgYWN0aXZlV2lkdGggKiAyO1xyXG4gICAgICBzdGFydFkgPSBpdGVtLmZ1bm5lbEFyZWFbMV0gKyBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgIGZvbnRTaXplID0gaXRlbS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IG9wdHMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS5jb2xvcik7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oZW5kWCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oZW5kWCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5hcmMoZW5kWCwgc3RhcnRZLCAyICogb3B0cy5waXgsIDAsIDIgKiBNYXRoLlBJKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5maWxsKCk7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuc2V0Rm9udFNpemUoZm9udFNpemUpO1xyXG4gICAgICBjb250ZXh0LnNldEZpbGxTdHlsZShpdGVtLnRleHRDb2xvciB8fCBvcHRzLmZvbnRDb2xvcik7XHJcbiAgICAgIGNvbnRleHQuZmlsbFRleHQodGV4dCwgZW5kWCArIDUsIHN0YXJ0WSArIGZvbnRTaXplIC8gMiAtIDIpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKGxhYmVsQWxpZ24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgIGlmIChpID09IHNlcmllcy5sZW5ndGggLTEpIHtcclxuICAgICAgICBzdGFydFggPSAoaXRlbS5mdW5uZWxBcmVhWzBdICsgY2VudGVyUG9zaXRpb24ueCkgLyAyO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHN0YXJ0WCA9IChpdGVtLmZ1bm5lbEFyZWFbMF0gKyBzZXJpZXNbaSArIDFdLmZ1bm5lbEFyZWFbMF0pIC8gMjtcclxuICAgICAgfVxyXG4gICAgICBlbmRYID0gc3RhcnRYIC0gYWN0aXZlV2lkdGggKiAyO1xyXG4gICAgICBzdGFydFkgPSBpdGVtLmZ1bm5lbEFyZWFbMV0gKyBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgIGZvbnRTaXplID0gaXRlbS50ZXh0U2l6ZSAqIG9wdHMucGl4IHx8IG9wdHMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgY29udGV4dC5zZXRMaW5lV2lkdGgoMSAqIG9wdHMucGl4KTtcclxuICAgICAgY29udGV4dC5zZXRTdHJva2VTdHlsZShpdGVtLmNvbG9yKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS5jb2xvcik7XHJcbiAgICAgIGNvbnRleHQuYmVnaW5QYXRoKCk7XHJcbiAgICAgIGNvbnRleHQubW92ZVRvKHN0YXJ0WCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5saW5lVG8oZW5kWCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5tb3ZlVG8oZW5kWCwgc3RhcnRZKTtcclxuICAgICAgY29udGV4dC5hcmMoZW5kWCwgc3RhcnRZLCAyLCAwLCAyICogTWF0aC5QSSk7XHJcbiAgICAgIGNvbnRleHQuY2xvc2VQYXRoKCk7XHJcbiAgICAgIGNvbnRleHQuZmlsbCgpO1xyXG4gICAgICBjb250ZXh0LmJlZ2luUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnNldEZvbnRTaXplKGZvbnRTaXplKTtcclxuICAgICAgY29udGV4dC5zZXRGaWxsU3R5bGUoaXRlbS50ZXh0Q29sb3IgfHwgb3B0cy5mb250Q29sb3IpO1xyXG4gICAgICBjb250ZXh0LmZpbGxUZXh0KHRleHQsIGVuZFggLSA1IC0gbWVhc3VyZVRleHQodGV4dCwgZm9udFNpemUsIGNvbnRleHQpLCBzdGFydFkgKyBmb250U2l6ZSAvIDIgLSAyKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgICAgY29udGV4dC5zdHJva2UoKTtcclxuICAgICAgY29udGV4dC5jbG9zZVBhdGgoKTtcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGRyYXdGdW5uZWxDZW50ZXJUZXh0KHNlcmllcywgb3B0cywgY29udGV4dCwgZWFjaFNwYWNpbmcsIGxhYmVsQWxpZ24sIGFjdGl2ZVdpZHRoLCBjZW50ZXJQb3NpdGlvbikge1xyXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc2VyaWVzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICBsZXQgaXRlbSA9IHNlcmllc1tpXTtcclxuICAgIGxldCBzdGFydFksIGZvbnRTaXplO1xyXG4gICAgaWYgKGl0ZW0uY2VudGVyVGV4dCkge1xyXG4gICAgICBzdGFydFkgPSBpdGVtLmZ1bm5lbEFyZWFbMV0gKyBlYWNoU3BhY2luZyAvIDI7XHJcbiAgICAgIGZvbnRTaXplID0gaXRlbS5jZW50ZXJUZXh0U2l6ZSAqIG9wdHMucGl4IHx8IG9wdHMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICAgICAgY29udGV4dC5iZWdpblBhdGgoKTtcclxuICAgICAgY29udGV4dC5zZXRGb250U2l6ZShmb250U2l6ZSk7XHJcbiAgICAgIGNvbnRleHQuc2V0RmlsbFN0eWxlKGl0ZW0uY2VudGVyVGV4dENvbG9yIHx8IFwiI0ZGRkZGRlwiKTtcclxuICAgICAgY29udGV4dC5maWxsVGV4dChpdGVtLmNlbnRlclRleHQsIGNlbnRlclBvc2l0aW9uLnggLSBtZWFzdXJlVGV4dChpdGVtLmNlbnRlclRleHQsIGZvbnRTaXplLCBjb250ZXh0KSAvIDIsIHN0YXJ0WSArIGZvbnRTaXplIC8gMiAtIDIpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgICBjb250ZXh0LnN0cm9rZSgpO1xyXG4gICAgICBjb250ZXh0LmNsb3NlUGF0aCgpO1xyXG4gICAgfVxyXG4gIH1cclxufVxyXG5cclxuXHJcbmZ1bmN0aW9uIGRyYXdDYW52YXMob3B0cywgY29udGV4dCkge1xyXG4gIGNvbnRleHQuc2F2ZSgpO1xyXG4gIGNvbnRleHQudHJhbnNsYXRlKDAsIDAuNSk7XHJcbiAgY29udGV4dC5yZXN0b3JlKCk7XHJcbiAgY29udGV4dC5kcmF3KCk7XHJcbn1cclxuXHJcbnZhciBUaW1pbmcgPSB7XHJcbiAgZWFzZUluOiBmdW5jdGlvbiBlYXNlSW4ocG9zKSB7XHJcbiAgICByZXR1cm4gTWF0aC5wb3cocG9zLCAzKTtcclxuICB9LFxyXG4gIGVhc2VPdXQ6IGZ1bmN0aW9uIGVhc2VPdXQocG9zKSB7XHJcbiAgICByZXR1cm4gTWF0aC5wb3cocG9zIC0gMSwgMykgKyAxO1xyXG4gIH0sXHJcbiAgZWFzZUluT3V0OiBmdW5jdGlvbiBlYXNlSW5PdXQocG9zKSB7XHJcbiAgICBpZiAoKHBvcyAvPSAwLjUpIDwgMSkge1xyXG4gICAgICByZXR1cm4gMC41ICogTWF0aC5wb3cocG9zLCAzKTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHJldHVybiAwLjUgKiAoTWF0aC5wb3cocG9zIC0gMiwgMykgKyAyKTtcclxuICAgIH1cclxuICB9LFxyXG4gIGxpbmVhcjogZnVuY3Rpb24gbGluZWFyKHBvcykge1xyXG4gICAgcmV0dXJuIHBvcztcclxuICB9XHJcbn07XHJcblxyXG5mdW5jdGlvbiBBbmltYXRpb24ob3B0cykge1xyXG4gIHRoaXMuaXNTdG9wID0gZmFsc2U7XHJcbiAgb3B0cy5kdXJhdGlvbiA9IHR5cGVvZiBvcHRzLmR1cmF0aW9uID09PSAndW5kZWZpbmVkJyA/IDEwMDAgOiBvcHRzLmR1cmF0aW9uO1xyXG4gIG9wdHMudGltaW5nID0gb3B0cy50aW1pbmcgfHwgJ2Vhc2VJbk91dCc7XHJcbiAgdmFyIGRlbGF5ID0gMTc7XHJcbiAgZnVuY3Rpb24gY3JlYXRlQW5pbWF0aW9uRnJhbWUoKSB7XHJcbiAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgIHJldHVybiBmdW5jdGlvbihzdGVwLCBkZWxheSkge1xyXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgICB2YXIgdGltZVN0YW1wID0gK25ldyBEYXRlKCk7XHJcbiAgICAgICAgICBzdGVwKHRpbWVTdGFtcCk7XHJcbiAgICAgICAgfSwgZGVsYXkpO1xyXG4gICAgICB9O1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgcmVxdWVzdEFuaW1hdGlvbkZyYW1lICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICByZXR1cm4gcmVxdWVzdEFuaW1hdGlvbkZyYW1lO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZ1bmN0aW9uKHN0ZXApIHtcclxuICAgICAgICBzdGVwKG51bGwpO1xyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gIH07XHJcbiAgdmFyIGFuaW1hdGlvbkZyYW1lID0gY3JlYXRlQW5pbWF0aW9uRnJhbWUoKTtcclxuICB2YXIgc3RhcnRUaW1lU3RhbXAgPSBudWxsO1xyXG4gIHZhciBfc3RlcCA9IGZ1bmN0aW9uIHN0ZXAodGltZXN0YW1wKSB7XHJcbiAgICBpZiAodGltZXN0YW1wID09PSBudWxsIHx8IHRoaXMuaXNTdG9wID09PSB0cnVlKSB7XHJcbiAgICAgIG9wdHMub25Qcm9jZXNzICYmIG9wdHMub25Qcm9jZXNzKDEpO1xyXG4gICAgICBvcHRzLm9uQW5pbWF0aW9uRmluaXNoICYmIG9wdHMub25BbmltYXRpb25GaW5pc2goKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG4gICAgaWYgKHN0YXJ0VGltZVN0YW1wID09PSBudWxsKSB7XHJcbiAgICAgIHN0YXJ0VGltZVN0YW1wID0gdGltZXN0YW1wO1xyXG4gICAgfVxyXG4gICAgaWYgKHRpbWVzdGFtcCAtIHN0YXJ0VGltZVN0YW1wIDwgb3B0cy5kdXJhdGlvbikge1xyXG4gICAgICB2YXIgcHJvY2VzcyA9ICh0aW1lc3RhbXAgLSBzdGFydFRpbWVTdGFtcCkgLyBvcHRzLmR1cmF0aW9uO1xyXG4gICAgICB2YXIgdGltaW5nRnVuY3Rpb24gPSBUaW1pbmdbb3B0cy50aW1pbmddO1xyXG4gICAgICBwcm9jZXNzID0gdGltaW5nRnVuY3Rpb24ocHJvY2Vzcyk7XHJcbiAgICAgIG9wdHMub25Qcm9jZXNzICYmIG9wdHMub25Qcm9jZXNzKHByb2Nlc3MpO1xyXG4gICAgICBhbmltYXRpb25GcmFtZShfc3RlcCwgZGVsYXkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgb3B0cy5vblByb2Nlc3MgJiYgb3B0cy5vblByb2Nlc3MoMSk7XHJcbiAgICAgIG9wdHMub25BbmltYXRpb25GaW5pc2ggJiYgb3B0cy5vbkFuaW1hdGlvbkZpbmlzaCgpO1xyXG4gICAgfVxyXG4gIH07XHJcbiAgX3N0ZXAgPSBfc3RlcC5iaW5kKHRoaXMpO1xyXG4gIGFuaW1hdGlvbkZyYW1lKF9zdGVwLCBkZWxheSk7XHJcbn1cclxuXHJcbkFuaW1hdGlvbi5wcm90b3R5cGUuc3RvcCA9IGZ1bmN0aW9uKCkge1xyXG4gIHRoaXMuaXNTdG9wID0gdHJ1ZTtcclxufTtcclxuXHJcbmZ1bmN0aW9uIGRyYXdDaGFydHModHlwZSwgb3B0cywgY29uZmlnLCBjb250ZXh0KSB7XHJcbiAgdmFyIF90aGlzID0gdGhpcztcclxuICB2YXIgc2VyaWVzID0gb3B0cy5zZXJpZXM7XHJcbiAgLy/lhbzlrrlFQ2hhcnRz6aW85Zu+57G75pWw5o2u5qC85byPXHJcbiAgaWYgKHR5cGUgPT09ICdwaWUnIHx8IHR5cGUgPT09ICdyaW5nJyB8fCB0eXBlID09PSAnbW91bnQnIHx8IHR5cGUgPT09ICdyb3NlJyB8fCB0eXBlID09PSAnZnVubmVsJykge1xyXG4gICAgc2VyaWVzID0gZml4UGllU2VyaWVzKHNlcmllcywgb3B0cywgY29uZmlnKTtcclxuICB9XHJcbiAgdmFyIGNhdGVnb3JpZXMgPSBvcHRzLmNhdGVnb3JpZXM7XHJcbiAgaWYgKHR5cGUgPT09ICdtb3VudCcpIHtcclxuICAgIGNhdGVnb3JpZXMgPSBbXTtcclxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgc2VyaWVzLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgIGlmKHNlcmllc1tqXS5zaG93ICE9PSBmYWxzZSkgY2F0ZWdvcmllcy5wdXNoKHNlcmllc1tqXS5uYW1lKVxyXG4gICAgfVxyXG4gICAgb3B0cy5jYXRlZ29yaWVzID0gY2F0ZWdvcmllcztcclxuICB9XHJcbiAgc2VyaWVzID0gZmlsbFNlcmllcyhzZXJpZXMsIG9wdHMsIGNvbmZpZyk7XHJcbiAgdmFyIGR1cmF0aW9uID0gb3B0cy5hbmltYXRpb24gPyBvcHRzLmR1cmF0aW9uIDogMDtcclxuICBfdGhpcy5hbmltYXRpb25JbnN0YW5jZSAmJiBfdGhpcy5hbmltYXRpb25JbnN0YW5jZS5zdG9wKCk7XHJcbiAgdmFyIHNlcmllc01BID0gbnVsbDtcclxuICBpZiAodHlwZSA9PSAnY2FuZGxlJykge1xyXG4gICAgbGV0IGF2ZXJhZ2UgPSBhc3NpZ24oe30sIG9wdHMuZXh0cmEuY2FuZGxlLmF2ZXJhZ2UpO1xyXG4gICAgaWYgKGF2ZXJhZ2Uuc2hvdykge1xyXG4gICAgICBzZXJpZXNNQSA9IGNhbENhbmRsZU1BKGF2ZXJhZ2UuZGF5LCBhdmVyYWdlLm5hbWUsIGF2ZXJhZ2UuY29sb3IsIHNlcmllc1swXS5kYXRhKTtcclxuICAgICAgc2VyaWVzTUEgPSBmaWxsU2VyaWVzKHNlcmllc01BLCBvcHRzLCBjb25maWcpO1xyXG4gICAgICBvcHRzLnNlcmllc01BID0gc2VyaWVzTUE7XHJcbiAgICB9IGVsc2UgaWYgKG9wdHMuc2VyaWVzTUEpIHtcclxuICAgICAgc2VyaWVzTUEgPSBvcHRzLnNlcmllc01BID0gZmlsbFNlcmllcyhvcHRzLnNlcmllc01BLCBvcHRzLCBjb25maWcpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgc2VyaWVzTUEgPSBzZXJpZXM7XHJcbiAgICB9XHJcbiAgfSBlbHNlIHtcclxuICAgIHNlcmllc01BID0gc2VyaWVzO1xyXG4gIH1cclxuICAvKiDov4fmu6TmjolzaG93PWZhbHNl55qEc2VyaWVzICovXHJcbiAgb3B0cy5fc2VyaWVzXyA9IHNlcmllcyA9IGZpbHRlclNlcmllcyhzZXJpZXMpO1xyXG4gIC8v6YeN5paw6K6h566X5Zu+6KGo5Yy65Z+fXHJcbiAgb3B0cy5hcmVhID0gbmV3IEFycmF5KDQpO1xyXG4gIC8v5aSN5L2N57uY5Zu+5Yy65Z+fXHJcbiAgZm9yIChsZXQgaiA9IDA7IGogPCA0OyBqKyspIHtcclxuICAgIG9wdHMuYXJlYVtqXSA9IG9wdHMucGFkZGluZ1tqXSAqIG9wdHMucGl4O1xyXG4gIH1cclxuICAvL+mAmui/h+iuoeeul+S4ieWkp+WMuuWfn++8muWbvuS+i+OAgVjovbTjgIFZ6L2055qE5aSn5bCP77yM56Gu5a6a57uY5Zu+5Yy65Z+fXHJcbiAgdmFyIF9jYWxMZWdlbmREYXRhID0gY2FsTGVnZW5kRGF0YShzZXJpZXNNQSwgb3B0cywgY29uZmlnLCBvcHRzLmNoYXJ0RGF0YSwgY29udGV4dCksXHJcbiAgICBsZWdlbmRIZWlnaHQgPSBfY2FsTGVnZW5kRGF0YS5hcmVhLndob2xlSGVpZ2h0LFxyXG4gICAgbGVnZW5kV2lkdGggPSBfY2FsTGVnZW5kRGF0YS5hcmVhLndob2xlV2lkdGg7XHJcblxyXG4gIHN3aXRjaCAob3B0cy5sZWdlbmQucG9zaXRpb24pIHtcclxuICAgIGNhc2UgJ3RvcCc6XHJcbiAgICAgIG9wdHMuYXJlYVswXSArPSBsZWdlbmRIZWlnaHQ7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYm90dG9tJzpcclxuICAgICAgb3B0cy5hcmVhWzJdICs9IGxlZ2VuZEhlaWdodDtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdsZWZ0JzpcclxuICAgICAgb3B0cy5hcmVhWzNdICs9IGxlZ2VuZFdpZHRoO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3JpZ2h0JzpcclxuICAgICAgb3B0cy5hcmVhWzFdICs9IGxlZ2VuZFdpZHRoO1xyXG4gICAgICBicmVhaztcclxuICB9XHJcblxyXG4gIGxldCBfY2FsWUF4aXNEYXRhID0ge30sXHJcbiAgICB5QXhpc1dpZHRoID0gMDtcclxuICBpZiAob3B0cy50eXBlID09PSAnbGluZScgfHwgb3B0cy50eXBlID09PSAnY29sdW1uJ3x8IG9wdHMudHlwZSA9PT0gJ21vdW50JyB8fCBvcHRzLnR5cGUgPT09ICdhcmVhJyB8fCBvcHRzLnR5cGUgPT09ICdtaXgnIHx8IG9wdHMudHlwZSA9PT0gJ2NhbmRsZScgfHwgb3B0cy50eXBlID09PSAnc2NhdHRlcicgIHx8IG9wdHMudHlwZSA9PT0gJ2J1YmJsZScgfHwgb3B0cy50eXBlID09PSAnYmFyJykge1xyXG4gICAgICBfY2FsWUF4aXNEYXRhID0gY2FsWUF4aXNEYXRhKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgeUF4aXNXaWR0aCA9IF9jYWxZQXhpc0RhdGEueUF4aXNXaWR0aDtcclxuICAgIC8v5aaC5p6c5pi+56S6Wei9tOagh+mimFxyXG4gICAgaWYgKG9wdHMueUF4aXMuc2hvd1RpdGxlKSB7XHJcbiAgICAgIGxldCBtYXhUaXRsZUhlaWdodCA9IDA7XHJcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb3B0cy55QXhpcy5kYXRhLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgbWF4VGl0bGVIZWlnaHQgPSBNYXRoLm1heChtYXhUaXRsZUhlaWdodCwgb3B0cy55QXhpcy5kYXRhW2ldLnRpdGxlRm9udFNpemUgPyBvcHRzLnlBeGlzLmRhdGFbaV0udGl0bGVGb250U2l6ZSAqIG9wdHMucGl4IDogY29uZmlnLmZvbnRTaXplKVxyXG4gICAgICB9XHJcbiAgICAgIG9wdHMuYXJlYVswXSArPSBtYXhUaXRsZUhlaWdodDtcclxuICAgIH1cclxuICAgIGxldCByaWdodEluZGV4ID0gMCxcclxuICAgICAgbGVmdEluZGV4ID0gMDtcclxuICAgIC8v6K6h566X5Li757uY5Zu+5Yy65Z+f5bem5Y+z5L2N572uXHJcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHlBeGlzV2lkdGgubGVuZ3RoOyBpKyspIHtcclxuICAgICAgaWYgKHlBeGlzV2lkdGhbaV0ucG9zaXRpb24gPT0gJ2xlZnQnKSB7XHJcbiAgICAgICAgaWYgKGxlZnRJbmRleCA+IDApIHtcclxuICAgICAgICAgIG9wdHMuYXJlYVszXSArPSB5QXhpc1dpZHRoW2ldLndpZHRoICsgb3B0cy55QXhpcy5wYWRkaW5nICogb3B0cy5waXg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9wdHMuYXJlYVszXSArPSB5QXhpc1dpZHRoW2ldLndpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgICBsZWZ0SW5kZXggKz0gMTtcclxuICAgICAgfSBlbHNlIGlmICh5QXhpc1dpZHRoW2ldLnBvc2l0aW9uID09ICdyaWdodCcpIHtcclxuICAgICAgICBpZiAocmlnaHRJbmRleCA+IDApIHtcclxuICAgICAgICAgIG9wdHMuYXJlYVsxXSArPSB5QXhpc1dpZHRoW2ldLndpZHRoICsgb3B0cy55QXhpcy5wYWRkaW5nICogb3B0cy5waXg7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgIG9wdHMuYXJlYVsxXSArPSB5QXhpc1dpZHRoW2ldLndpZHRoO1xyXG4gICAgICAgIH1cclxuICAgICAgICByaWdodEluZGV4ICs9IDE7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9IGVsc2Uge1xyXG4gICAgY29uZmlnLnlBeGlzV2lkdGggPSB5QXhpc1dpZHRoO1xyXG4gIH1cclxuICBvcHRzLmNoYXJ0RGF0YS55QXhpc0RhdGEgPSBfY2FsWUF4aXNEYXRhO1xyXG5cclxuICBpZiAob3B0cy5jYXRlZ29yaWVzICYmIG9wdHMuY2F0ZWdvcmllcy5sZW5ndGggJiYgb3B0cy50eXBlICE9PSAncmFkYXInICYmIG9wdHMudHlwZSAhPT0gJ2dhdWdlJyAmJiBvcHRzLnR5cGUgIT09ICdiYXInKSB7XHJcbiAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEgPSBnZXRYQXhpc1BvaW50cyhvcHRzLmNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZyk7XHJcbiAgICBsZXQgX2NhbENhdGVnb3JpZXNEYXRhID0gY2FsQ2F0ZWdvcmllc0RhdGEob3B0cy5jYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5lYWNoU3BhY2luZywgY29udGV4dCksXHJcbiAgICAgIHhBeGlzSGVpZ2h0ID0gX2NhbENhdGVnb3JpZXNEYXRhLnhBeGlzSGVpZ2h0LFxyXG4gICAgICBhbmdsZSA9IF9jYWxDYXRlZ29yaWVzRGF0YS5hbmdsZTtcclxuICAgIGNvbmZpZy54QXhpc0hlaWdodCA9IHhBeGlzSGVpZ2h0O1xyXG4gICAgY29uZmlnLl94QXhpc1RleHRBbmdsZV8gPSBhbmdsZTtcclxuICAgIG9wdHMuYXJlYVsyXSArPSB4QXhpc0hlaWdodDtcclxuICAgIG9wdHMuY2hhcnREYXRhLmNhdGVnb3JpZXNEYXRhID0gX2NhbENhdGVnb3JpZXNEYXRhO1xyXG4gIH0gZWxzZSB7XHJcbiAgICBpZiAob3B0cy50eXBlID09PSAnbGluZScgfHwgb3B0cy50eXBlID09PSAnYXJlYScgfHwgb3B0cy50eXBlID09PSAnc2NhdHRlcicgfHwgb3B0cy50eXBlID09PSAnYnViYmxlJyB8fCBvcHRzLnR5cGUgPT09ICdiYXInKSB7XHJcbiAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSA9IGNhbFhBeGlzRGF0YShzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgIGNhdGVnb3JpZXMgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEucmFuZ2VzRm9ybWF0O1xyXG4gICAgICBsZXQgX2NhbENhdGVnb3JpZXNEYXRhID0gY2FsQ2F0ZWdvcmllc0RhdGEoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEuZWFjaFNwYWNpbmcsIGNvbnRleHQpLFxyXG4gICAgICAgIHhBeGlzSGVpZ2h0ID0gX2NhbENhdGVnb3JpZXNEYXRhLnhBeGlzSGVpZ2h0LFxyXG4gICAgICAgIGFuZ2xlID0gX2NhbENhdGVnb3JpZXNEYXRhLmFuZ2xlO1xyXG4gICAgICBjb25maWcueEF4aXNIZWlnaHQgPSB4QXhpc0hlaWdodDtcclxuICAgICAgY29uZmlnLl94QXhpc1RleHRBbmdsZV8gPSBhbmdsZTtcclxuICAgICAgb3B0cy5hcmVhWzJdICs9IHhBeGlzSGVpZ2h0O1xyXG4gICAgICBvcHRzLmNoYXJ0RGF0YS5jYXRlZ29yaWVzRGF0YSA9IF9jYWxDYXRlZ29yaWVzRGF0YTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YSA9IHtcclxuICAgICAgICB4QXhpc1BvaW50czogW11cclxuICAgICAgfTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8v6K6h566X5Y+z5a+56b2Q5YGP56e76Led56a7XHJcbiAgaWYgKG9wdHMuZW5hYmxlU2Nyb2xsICYmIG9wdHMueEF4aXMuc2Nyb2xsQWxpZ24gPT0gJ3JpZ2h0JyAmJiBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gPT09IHVuZGVmaW5lZCkge1xyXG4gICAgbGV0IG9mZnNldExlZnQgPSAwLFxyXG4gICAgICB4QXhpc1BvaW50cyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS54QXhpc1BvaW50cyxcclxuICAgICAgc3RhcnRYID0gb3B0cy5jaGFydERhdGEueEF4aXNEYXRhLnN0YXJ0WCxcclxuICAgICAgZW5kWCA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5lbmRYLFxyXG4gICAgICBlYWNoU3BhY2luZyA9IG9wdHMuY2hhcnREYXRhLnhBeGlzRGF0YS5lYWNoU3BhY2luZztcclxuICAgIGxldCB0b3RhbFdpZHRoID0gZWFjaFNwYWNpbmcgKiAoeEF4aXNQb2ludHMubGVuZ3RoIC0gMSk7XHJcbiAgICBsZXQgc2NyZWVuV2lkdGggPSBlbmRYIC0gc3RhcnRYO1xyXG4gICAgb2Zmc2V0TGVmdCA9IHNjcmVlbldpZHRoIC0gdG90YWxXaWR0aDtcclxuICAgIF90aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0ID0gb2Zmc2V0TGVmdDtcclxuICAgIF90aGlzLnNjcm9sbE9wdGlvbi5zdGFydFRvdWNoWCA9IG9mZnNldExlZnQ7XHJcbiAgICBfdGhpcy5zY3JvbGxPcHRpb24uZGlzdGFuY2UgPSAwO1xyXG4gICAgX3RoaXMuc2Nyb2xsT3B0aW9uLmxhc3RNb3ZlVGltZSA9IDA7XHJcbiAgICBvcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSBvZmZzZXRMZWZ0O1xyXG4gIH1cclxuXHJcbiAgaWYgKHR5cGUgPT09ICdwaWUnIHx8IHR5cGUgPT09ICdyaW5nJyB8fCB0eXBlID09PSAncm9zZScpIHtcclxuICAgIGNvbmZpZy5fcGllVGV4dE1heExlbmd0aF8gPSBvcHRzLmRhdGFMYWJlbCA9PT0gZmFsc2UgPyAwIDogZ2V0UGllVGV4dE1heExlbmd0aChzZXJpZXNNQSwgY29uZmlnLCBjb250ZXh0LCBvcHRzKTtcclxuICB9XHJcbiAgXHJcbiAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICBjYXNlICd3b3JkJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24ocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3V29yZENsb3VkRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdtYXAnOlxyXG4gICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgIGRyYXdNYXBEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgc2V0VGltZW91dCgoKT0+e1xyXG4gICAgICAgIHRoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgIH0sNTApXHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnZnVubmVsJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24ocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5mdW5uZWxEYXRhID0gZHJhd0Z1bm5lbERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnbGluZSc6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdZQXhpc0dyaWQoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGRyYXdYQXhpcyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgdmFyIF9kcmF3TGluZURhdGFQb2ludHMgPSBkcmF3TGluZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3TGluZURhdGFQb2ludHMueEF4aXNQb2ludHMsXHJcbiAgICAgICAgICAgIGNhbFBvaW50cyA9IF9kcmF3TGluZURhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3TGluZURhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnc2NhdHRlcic6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdZQXhpc0dyaWQoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGRyYXdYQXhpcyhjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgdmFyIF9kcmF3U2NhdHRlckRhdGFQb2ludHMgPSBkcmF3U2NhdHRlckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3U2NhdHRlckRhdGFQb2ludHMueEF4aXNQb2ludHMsXHJcbiAgICAgICAgICAgIGNhbFBvaW50cyA9IF9kcmF3U2NhdHRlckRhdGFQb2ludHMuY2FsUG9pbnRzLFxyXG4gICAgICAgICAgICBlYWNoU3BhY2luZyA9IF9kcmF3U2NhdHRlckRhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYnViYmxlJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdCdWJibGVEYXRhUG9pbnRzID0gZHJhd0J1YmJsZURhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3QnViYmxlRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdCdWJibGVEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0J1YmJsZURhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnbWl4JzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdNaXhEYXRhUG9pbnRzID0gZHJhd01peERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3TWl4RGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdNaXhEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd01peERhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnY29sdW1uJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdDb2x1bW5EYXRhUG9pbnRzID0gZHJhd0NvbHVtbkRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3Q29sdW1uRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdDb2x1bW5EYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0NvbHVtbkRhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnbW91bnQnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3WUF4aXNHcmlkKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBfZHJhd01vdW50RGF0YVBvaW50cyA9IGRyYXdNb3VudERhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3TW91bnREYXRhUG9pbnRzLnhBeGlzUG9pbnRzLFxyXG4gICAgICAgICAgICBjYWxQb2ludHMgPSBfZHJhd01vdW50RGF0YVBvaW50cy5jYWxQb2ludHMsXHJcbiAgICAgICAgICAgIGVhY2hTcGFjaW5nID0gX2RyYXdNb3VudERhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYmFyJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdCYXJEYXRhUG9pbnRzID0gZHJhd0JhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB5QXhpc1BvaW50cyA9IF9kcmF3QmFyRGF0YVBvaW50cy55QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdCYXJEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0JhckRhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS55QXhpc1BvaW50cyA9IHlBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEueEF4aXNQb2ludHMgPSBvcHRzLmNoYXJ0RGF0YS54QXhpc0RhdGEueEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB5QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdhcmVhJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1lBeGlzR3JpZChjYXRlZ29yaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgZHJhd1hBeGlzKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICB2YXIgX2RyYXdBcmVhRGF0YVBvaW50cyA9IGRyYXdBcmVhRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2VzcyksXHJcbiAgICAgICAgICAgIHhBeGlzUG9pbnRzID0gX2RyYXdBcmVhRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdBcmVhRGF0YVBvaW50cy5jYWxQb2ludHMsXHJcbiAgICAgICAgICAgIGVhY2hTcGFjaW5nID0gX2RyYXdBcmVhRGF0YVBvaW50cy5lYWNoU3BhY2luZztcclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnhBeGlzUG9pbnRzID0geEF4aXNQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5jYWxQb2ludHMgPSBjYWxQb2ludHM7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS5lYWNoU3BhY2luZyA9IGVhY2hTcGFjaW5nO1xyXG4gICAgICAgICAgZHJhd1lBeGlzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIGlmIChvcHRzLmVuYWJsZU1hcmtMaW5lICE9PSBmYWxzZSAmJiBwcm9jZXNzID09PSAxKSB7XHJcbiAgICAgICAgICAgIGRyYXdNYXJrTGluZShvcHRzLCBjb25maWcsIGNvbnRleHQpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MsIGVhY2hTcGFjaW5nLCB4QXhpc1BvaW50cyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyaW5nJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEucGllRGF0YSA9IGRyYXdQaWVEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ3BpZSc6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnBpZURhdGEgPSBkcmF3UGllRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3TGVnZW5kKG9wdHMuc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyb3NlJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEucGllRGF0YSA9IGRyYXdSb3NlRGF0YVBvaW50cyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3TGVnZW5kKG9wdHMuc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIGRyYXdUb29sVGlwQnJpZGdlKG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdyYWRhcic6XHJcbiAgICAgIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgPSBuZXcgQW5pbWF0aW9uKHtcclxuICAgICAgICB0aW1pbmc6IG9wdHMudGltaW5nLFxyXG4gICAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcclxuICAgICAgICBvblByb2Nlc3M6IGZ1bmN0aW9uIG9uUHJvY2Vzcyhwcm9jZXNzKSB7XHJcbiAgICAgICAgICBjb250ZXh0LmNsZWFyUmVjdCgwLCAwLCBvcHRzLndpZHRoLCBvcHRzLmhlaWdodCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5yb3RhdGUpIHtcclxuICAgICAgICAgICAgY29udGV4dFJvdGF0ZShjb250ZXh0LCBvcHRzKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIG9wdHMuY2hhcnREYXRhLnJhZGFyRGF0YSA9IGRyYXdSYWRhckRhdGFQb2ludHMoc2VyaWVzLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0xlZ2VuZChvcHRzLnNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBvcHRzLmNoYXJ0RGF0YSk7XHJcbiAgICAgICAgICBkcmF3VG9vbFRpcEJyaWRnZShvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAnYXJjYmFyJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuYXJjYmFyRGF0YSA9IGRyYXdBcmNiYXJEYXRhUG9pbnRzKHNlcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzKTtcclxuICAgICAgICAgIGRyYXdDYW52YXMob3B0cywgY29udGV4dCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBvbkFuaW1hdGlvbkZpbmlzaDogZnVuY3Rpb24gb25BbmltYXRpb25GaW5pc2goKSB7XHJcbiAgICAgICAgICBfdGhpcy51ZXZlbnQudHJpZ2dlcigncmVuZGVyQ29tcGxldGUnKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2dhdWdlJzpcclxuICAgICAgdGhpcy5hbmltYXRpb25JbnN0YW5jZSA9IG5ldyBBbmltYXRpb24oe1xyXG4gICAgICAgIHRpbWluZzogb3B0cy50aW1pbmcsXHJcbiAgICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxyXG4gICAgICAgIG9uUHJvY2VzczogZnVuY3Rpb24gb25Qcm9jZXNzKHByb2Nlc3MpIHtcclxuICAgICAgICAgIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIG9wdHMud2lkdGgsIG9wdHMuaGVpZ2h0KTtcclxuICAgICAgICAgIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgICAgICAgICBjb250ZXh0Um90YXRlKGNvbnRleHQsIG9wdHMpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZ2F1Z2VEYXRhID0gZHJhd0dhdWdlRGF0YVBvaW50cyhjYXRlZ29yaWVzLCBzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgcHJvY2Vzcyk7XHJcbiAgICAgICAgICBkcmF3Q2FudmFzKG9wdHMsIGNvbnRleHQpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb25BbmltYXRpb25GaW5pc2g6IGZ1bmN0aW9uIG9uQW5pbWF0aW9uRmluaXNoKCkge1xyXG4gICAgICAgICAgX3RoaXMudWV2ZW50LnRyaWdnZXIoJ3JlbmRlckNvbXBsZXRlJyk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgICAgYnJlYWs7XHJcbiAgICBjYXNlICdjYW5kbGUnOlxyXG4gICAgICB0aGlzLmFuaW1hdGlvbkluc3RhbmNlID0gbmV3IEFuaW1hdGlvbih7XHJcbiAgICAgICAgdGltaW5nOiBvcHRzLnRpbWluZyxcclxuICAgICAgICBkdXJhdGlvbjogZHVyYXRpb24sXHJcbiAgICAgICAgb25Qcm9jZXNzOiBmdW5jdGlvbiBvblByb2Nlc3MocHJvY2Vzcykge1xyXG4gICAgICAgICAgY29udGV4dC5jbGVhclJlY3QoMCwgMCwgb3B0cy53aWR0aCwgb3B0cy5oZWlnaHQpO1xyXG4gICAgICAgICAgaWYgKG9wdHMucm90YXRlKSB7XHJcbiAgICAgICAgICAgIGNvbnRleHRSb3RhdGUoY29udGV4dCwgb3B0cyk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBkcmF3WUF4aXNHcmlkKGNhdGVnb3JpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBkcmF3WEF4aXMoY2F0ZWdvcmllcywgb3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIHZhciBfZHJhd0NhbmRsZURhdGFQb2ludHMgPSBkcmF3Q2FuZGxlRGF0YVBvaW50cyhzZXJpZXMsIHNlcmllc01BLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIHByb2Nlc3MpLFxyXG4gICAgICAgICAgICB4QXhpc1BvaW50cyA9IF9kcmF3Q2FuZGxlRGF0YVBvaW50cy54QXhpc1BvaW50cyxcclxuICAgICAgICAgICAgY2FsUG9pbnRzID0gX2RyYXdDYW5kbGVEYXRhUG9pbnRzLmNhbFBvaW50cyxcclxuICAgICAgICAgICAgZWFjaFNwYWNpbmcgPSBfZHJhd0NhbmRsZURhdGFQb2ludHMuZWFjaFNwYWNpbmc7XHJcbiAgICAgICAgICBvcHRzLmNoYXJ0RGF0YS54QXhpc1BvaW50cyA9IHhBeGlzUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzID0gY2FsUG9pbnRzO1xyXG4gICAgICAgICAgb3B0cy5jaGFydERhdGEuZWFjaFNwYWNpbmcgPSBlYWNoU3BhY2luZztcclxuICAgICAgICAgIGRyYXdZQXhpcyhzZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCk7XHJcbiAgICAgICAgICBpZiAob3B0cy5lbmFibGVNYXJrTGluZSAhPT0gZmFsc2UgJiYgcHJvY2VzcyA9PT0gMSkge1xyXG4gICAgICAgICAgICBkcmF3TWFya0xpbmUob3B0cywgY29uZmlnLCBjb250ZXh0KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChzZXJpZXNNQSkge1xyXG4gICAgICAgICAgICBkcmF3TGVnZW5kKHNlcmllc01BLCBvcHRzLCBjb25maWcsIGNvbnRleHQsIG9wdHMuY2hhcnREYXRhKTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGRyYXdMZWdlbmQob3B0cy5zZXJpZXMsIG9wdHMsIGNvbmZpZywgY29udGV4dCwgb3B0cy5jaGFydERhdGEpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgZHJhd1Rvb2xUaXBCcmlkZ2Uob3B0cywgY29uZmlnLCBjb250ZXh0LCBwcm9jZXNzLCBlYWNoU3BhY2luZywgeEF4aXNQb2ludHMpO1xyXG4gICAgICAgICAgZHJhd0NhbnZhcyhvcHRzLCBjb250ZXh0KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9uQW5pbWF0aW9uRmluaXNoOiBmdW5jdGlvbiBvbkFuaW1hdGlvbkZpbmlzaCgpIHtcclxuICAgICAgICAgIF90aGlzLnVldmVudC50cmlnZ2VyKCdyZW5kZXJDb21wbGV0ZScpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxufVxyXG5cclxuZnVuY3Rpb24gdUNoYXJ0c0V2ZW50KCkge1xyXG4gIHRoaXMuZXZlbnRzID0ge307XHJcbn1cclxuXHJcbnVDaGFydHNFdmVudC5wcm90b3R5cGUuYWRkRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUsIGxpc3RlbmVyKSB7XHJcbiAgdGhpcy5ldmVudHNbdHlwZV0gPSB0aGlzLmV2ZW50c1t0eXBlXSB8fCBbXTtcclxuICB0aGlzLmV2ZW50c1t0eXBlXS5wdXNoKGxpc3RlbmVyKTtcclxufTtcclxuXHJcbnVDaGFydHNFdmVudC5wcm90b3R5cGUuZGVsRXZlbnRMaXN0ZW5lciA9IGZ1bmN0aW9uKHR5cGUpIHtcclxuICB0aGlzLmV2ZW50c1t0eXBlXSA9IFtdO1xyXG59O1xyXG5cclxudUNoYXJ0c0V2ZW50LnByb3RvdHlwZS50cmlnZ2VyID0gZnVuY3Rpb24oKSB7XHJcbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcclxuICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XHJcbiAgfVxyXG4gIHZhciB0eXBlID0gYXJnc1swXTtcclxuICB2YXIgcGFyYW1zID0gYXJncy5zbGljZSgxKTtcclxuICBpZiAoISF0aGlzLmV2ZW50c1t0eXBlXSkge1xyXG4gICAgdGhpcy5ldmVudHNbdHlwZV0uZm9yRWFjaChmdW5jdGlvbihsaXN0ZW5lcikge1xyXG4gICAgICB0cnkge1xyXG4gICAgICAgIGxpc3RlbmVyLmFwcGx5KG51bGwsIHBhcmFtcyk7XHJcbiAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgIC8vY29uc29sZS5sb2coJ1t1Q2hhcnRzXSAnK2UpO1xyXG4gICAgICB9XHJcbiAgICB9KTtcclxuICB9XHJcbn07XHJcblxyXG52YXIgdUNoYXJ0cyA9IGZ1bmN0aW9uIHVDaGFydHMob3B0cykge1xyXG4gIG9wdHMucGl4ID0gb3B0cy5waXhlbFJhdGlvID8gb3B0cy5waXhlbFJhdGlvIDogMTtcclxuICBvcHRzLmZvbnRTaXplID0gb3B0cy5mb250U2l6ZSA/IG9wdHMuZm9udFNpemUgOiAxMztcclxuICBvcHRzLmZvbnRDb2xvciA9IG9wdHMuZm9udENvbG9yID8gb3B0cy5mb250Q29sb3IgOiBjb25maWcuZm9udENvbG9yO1xyXG4gIGlmIChvcHRzLmJhY2tncm91bmQgPT0gXCJcIiB8fCBvcHRzLmJhY2tncm91bmQgPT0gXCJub25lXCIpIHtcclxuICAgIG9wdHMuYmFja2dyb3VuZCA9IFwiI0ZGRkZGRlwiXHJcbiAgfVxyXG4gIG9wdHMudGl0bGUgPSBhc3NpZ24oe30sIG9wdHMudGl0bGUpO1xyXG4gIG9wdHMuc3VidGl0bGUgPSBhc3NpZ24oe30sIG9wdHMuc3VidGl0bGUpO1xyXG4gIG9wdHMuZHVyYXRpb24gPSBvcHRzLmR1cmF0aW9uID8gb3B0cy5kdXJhdGlvbiA6IDEwMDA7XHJcbiAgb3B0cy55QXhpcyA9IGFzc2lnbih7fSwge1xyXG4gICAgZGF0YTogW10sXHJcbiAgICBzaG93VGl0bGU6IGZhbHNlLFxyXG4gICAgZGlzYWJsZWQ6IGZhbHNlLFxyXG4gICAgZGlzYWJsZUdyaWQ6IGZhbHNlLFxyXG4gICAgZ3JpZFNldDogJ251bWJlcicsXHJcbiAgICBzcGxpdE51bWJlcjogNSxcclxuICAgIGdyaWRUeXBlOiAnc29saWQnLFxyXG4gICAgZGFzaExlbmd0aDogNCAqIG9wdHMucGl4LFxyXG4gICAgZ3JpZENvbG9yOiAnI2NjY2NjYycsXHJcbiAgICBwYWRkaW5nOiAxMCxcclxuICAgIGZvbnRDb2xvcjogJyM2NjY2NjYnXHJcbiAgfSwgb3B0cy55QXhpcyk7XHJcbiAgb3B0cy54QXhpcyA9IGFzc2lnbih7fSwge1xyXG4gICAgcm90YXRlTGFiZWw6IGZhbHNlLFxyXG4gICAgcm90YXRlQW5nbGU6NDUsXHJcbiAgICBkaXNhYmxlZDogZmFsc2UsXHJcbiAgICBkaXNhYmxlR3JpZDogZmFsc2UsXHJcbiAgICBzcGxpdE51bWJlcjogNSxcclxuICAgIGNhbGlicmF0aW9uOmZhbHNlLFxyXG4gICAgZm9udENvbG9yOiAnIzY2NjY2NicsXHJcbiAgICBmb250U2l6ZTogMTMsXHJcbiAgICBsaW5lSGVpZ2h0OiAyMCxcclxuICAgIG1hcmdpblRvcDogMCxcclxuICAgIGdyaWRUeXBlOiAnc29saWQnLFxyXG4gICAgZGFzaExlbmd0aDogNCxcclxuICAgIHNjcm9sbEFsaWduOiAnbGVmdCcsXHJcbiAgICBib3VuZGFyeUdhcDogJ2NlbnRlcicsXHJcbiAgICBheGlzTGluZTogdHJ1ZSxcclxuICAgIGF4aXNMaW5lQ29sb3I6ICcjY2NjY2NjJyxcclxuICAgIHRpdGxlRm9udFNpemU6IDEzLFxyXG4gICAgdGl0bGVPZmZzZXRZOiAwLFxyXG4gICAgdGl0bGVPZmZzZXRYOiAwLFxyXG4gICAgdGl0bGVGb250Q29sb3I6ICcjNjY2NjY2J1xyXG4gIH0sIG9wdHMueEF4aXMpO1xyXG4gIG9wdHMueEF4aXMuc2Nyb2xsUG9zaXRpb24gPSBvcHRzLnhBeGlzLnNjcm9sbEFsaWduO1xyXG4gIG9wdHMubGVnZW5kID0gYXNzaWduKHt9LCB7XHJcbiAgICBzaG93OiB0cnVlLFxyXG4gICAgcG9zaXRpb246ICdib3R0b20nLFxyXG4gICAgZmxvYXQ6ICdjZW50ZXInLFxyXG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLDAsMCwwKScsXHJcbiAgICBib3JkZXJDb2xvcjogJ3JnYmEoMCwwLDAsMCknLFxyXG4gICAgYm9yZGVyV2lkdGg6IDAsXHJcbiAgICBwYWRkaW5nOiA1LFxyXG4gICAgbWFyZ2luOiA1LFxyXG4gICAgaXRlbUdhcDogMTAsXHJcbiAgICBmb250U2l6ZTogb3B0cy5mb250U2l6ZSxcclxuICAgIGxpbmVIZWlnaHQ6IG9wdHMuZm9udFNpemUsXHJcbiAgICBmb250Q29sb3I6IG9wdHMuZm9udENvbG9yLFxyXG4gICAgZm9ybWF0dGVyOiB7fSxcclxuICAgIGhpZGRlbkNvbG9yOiAnI0NFQ0VDRSdcclxuICB9LCBvcHRzLmxlZ2VuZCk7XHJcbiAgb3B0cy5leHRyYSA9IGFzc2lnbih7XHJcbiAgICB0b29sdGlwOntcclxuICAgICAgbGVnZW5kU2hhcGU6ICdhdXRvJ1xyXG4gICAgfVxyXG4gIH0sIG9wdHMuZXh0cmEpO1xyXG4gIG9wdHMucm90YXRlID0gb3B0cy5yb3RhdGUgPyB0cnVlIDogZmFsc2U7XHJcbiAgb3B0cy5hbmltYXRpb24gPSBvcHRzLmFuaW1hdGlvbiA/IHRydWUgOiBmYWxzZTtcclxuICBvcHRzLnJvdGF0ZSA9IG9wdHMucm90YXRlID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIG9wdHMuY2FudmFzMmQgPSBvcHRzLmNhbnZhczJkID8gdHJ1ZSA6IGZhbHNlO1xyXG4gIFxyXG4gIGxldCBjb25maWckJDEgPSBhc3NpZ24oe30sIGNvbmZpZyk7XHJcbiAgY29uZmlnJCQxLmNvbG9yID0gb3B0cy5jb2xvciA/IG9wdHMuY29sb3IgOiBjb25maWckJDEuY29sb3I7XHJcbiAgaWYgKG9wdHMudHlwZSA9PSAncGllJykge1xyXG4gICAgY29uZmlnJCQxLnBpZUNoYXJ0TGluZVBhZGRpbmcgPSBvcHRzLmRhdGFMYWJlbCA9PT0gZmFsc2UgPyAwIDogb3B0cy5leHRyYS5waWUubGFiZWxXaWR0aCAqIG9wdHMucGl4IHx8IGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnR5cGUgPT0gJ3JpbmcnKSB7XHJcbiAgICBjb25maWckJDEucGllQ2hhcnRMaW5lUGFkZGluZyA9IG9wdHMuZGF0YUxhYmVsID09PSBmYWxzZSA/IDAgOiBvcHRzLmV4dHJhLnJpbmcubGFiZWxXaWR0aCAqIG9wdHMucGl4IHx8IGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGlmIChvcHRzLnR5cGUgPT0gJ3Jvc2UnKSB7XHJcbiAgICBjb25maWckJDEucGllQ2hhcnRMaW5lUGFkZGluZyA9IG9wdHMuZGF0YUxhYmVsID09PSBmYWxzZSA/IDAgOiBvcHRzLmV4dHJhLnJvc2UubGFiZWxXaWR0aCAqIG9wdHMucGl4IHx8IGNvbmZpZyQkMS5waWVDaGFydExpbmVQYWRkaW5nICogb3B0cy5waXg7XHJcbiAgfVxyXG4gIGNvbmZpZyQkMS5waWVDaGFydFRleHRQYWRkaW5nID0gb3B0cy5kYXRhTGFiZWwgPT09IGZhbHNlID8gMCA6IGNvbmZpZyQkMS5waWVDaGFydFRleHRQYWRkaW5nICogb3B0cy5waXg7XHJcblxyXG4gIC8v5bGP5bmV5peL6L2sXHJcbiAgY29uZmlnJCQxLnJvdGF0ZSA9IG9wdHMucm90YXRlO1xyXG4gIGlmIChvcHRzLnJvdGF0ZSkge1xyXG4gICAgbGV0IHRlbXBXaWR0aCA9IG9wdHMud2lkdGg7XHJcbiAgICBsZXQgdGVtcEhlaWdodCA9IG9wdHMuaGVpZ2h0O1xyXG4gICAgb3B0cy53aWR0aCA9IHRlbXBIZWlnaHQ7XHJcbiAgICBvcHRzLmhlaWdodCA9IHRlbXBXaWR0aDtcclxuICB9XHJcblxyXG4gIC8v6YCC6YWN6auY5YiG5bGPXHJcbiAgb3B0cy5wYWRkaW5nID0gb3B0cy5wYWRkaW5nID8gb3B0cy5wYWRkaW5nIDogY29uZmlnJCQxLnBhZGRpbmc7XHJcbiAgY29uZmlnJCQxLnlBeGlzV2lkdGggPSBjb25maWcueUF4aXNXaWR0aCAqIG9wdHMucGl4O1xyXG4gIGNvbmZpZyQkMS5mb250U2l6ZSA9IG9wdHMuZm9udFNpemUgKiBvcHRzLnBpeDtcclxuICBjb25maWckJDEudGl0bGVGb250U2l6ZSA9IGNvbmZpZy50aXRsZUZvbnRTaXplICogb3B0cy5waXg7XHJcbiAgY29uZmlnJCQxLnN1YnRpdGxlRm9udFNpemUgPSBjb25maWcuc3VidGl0bGVGb250U2l6ZSAqIG9wdHMucGl4O1xyXG4gIGlmKCFvcHRzLmNvbnRleHQpe1xyXG4gICAgdGhyb3cgbmV3IEVycm9yKCdbdUNoYXJ0c10g5pyq6I635Y+W5YiwY29udGV4dO+8geazqOaEj++8mnYyLjDniYjmnKzlkI7vvIzpnIDopoHoh6rooYzojrflj5ZjYW52YXPnmoTnu5jlm77kuIrkuIvmloflubbkvKDlhaVvcHRzLmNvbnRleHTvvIEnKTtcclxuICB9XHJcbiAgdGhpcy5jb250ZXh0ID0gb3B0cy5jb250ZXh0O1xyXG4gIGlmICghdGhpcy5jb250ZXh0LnNldFRleHRBbGlnbikge1xyXG4gICAgdGhpcy5jb250ZXh0LnNldFN0cm9rZVN0eWxlID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5zdHJva2VTdHlsZSA9IGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRleHQuc2V0TGluZVdpZHRoID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5saW5lV2lkdGggPSBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldExpbmVDYXAgPSBmdW5jdGlvbihlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLmxpbmVDYXAgPSBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldEZvbnRTaXplID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy5mb250ID0gZSArIFwicHggc2Fucy1zZXJpZlwiO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldEZpbGxTdHlsZSA9IGZ1bmN0aW9uKGUpIHtcclxuICAgICAgcmV0dXJuIHRoaXMuZmlsbFN0eWxlID0gZTtcclxuICAgIH1cclxuICAgIHRoaXMuY29udGV4dC5zZXRUZXh0QWxpZ24gPSBmdW5jdGlvbihlKSB7XHJcbiAgICAgIHJldHVybiB0aGlzLnRleHRBbGlnbiA9IGU7XHJcbiAgICB9XHJcbiAgICB0aGlzLmNvbnRleHQuc2V0VGV4dEJhc2VsaW5lID0gZnVuY3Rpb24oZSkge1xyXG4gICAgICByZXR1cm4gdGhpcy50ZXh0QmFzZWxpbmUgPSBlO1xyXG4gICAgfVxyXG4gICAgdGhpcy5jb250ZXh0LnNldFNoYWRvdyA9IGZ1bmN0aW9uKG9mZnNldFgsb2Zmc2V0WSxibHVyLGNvbG9yKSB7XHJcbiAgICAgIHRoaXMuc2hhZG93Q29sb3IgPSBjb2xvcjtcclxuICAgICAgdGhpcy5zaGFkb3dPZmZzZXRYID0gb2Zmc2V0WDtcclxuICAgICAgdGhpcy5zaGFkb3dPZmZzZXRZID0gb2Zmc2V0WTtcclxuICAgICAgdGhpcy5zaGFkb3dCbHVyID0gYmx1cjtcclxuICAgIH1cclxuICAgIHRoaXMuY29udGV4dC5kcmF3ID0gZnVuY3Rpb24oKSB7fVxyXG4gIH1cclxuICAvL+WFvOWuuU5WVUVzZXRMaW5lRGFzaFxyXG4gIGlmKCF0aGlzLmNvbnRleHQuc2V0TGluZURhc2gpe1xyXG4gICAgdGhpcy5jb250ZXh0LnNldExpbmVEYXNoID0gZnVuY3Rpb24oZSkge31cclxuICB9XHJcbiAgb3B0cy5jaGFydERhdGEgPSB7fTtcclxuICB0aGlzLnVldmVudCA9IG5ldyB1Q2hhcnRzRXZlbnQoKTtcclxuICB0aGlzLnNjcm9sbE9wdGlvbiA9IHtcclxuICAgIGN1cnJlbnRPZmZzZXQ6IDAsXHJcbiAgICBzdGFydFRvdWNoWDogMCxcclxuICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgbGFzdE1vdmVUaW1lOiAwXHJcbiAgfTtcclxuICB0aGlzLm9wdHMgPSBvcHRzO1xyXG4gIHRoaXMuY29uZmlnID0gY29uZmlnJCQxO1xyXG4gIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIGNvbmZpZyQkMSwgdGhpcy5jb250ZXh0KTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLnVwZGF0ZURhdGEgPSBmdW5jdGlvbigpIHtcclxuICBsZXQgZGF0YSA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDoge307XHJcbiAgdGhpcy5vcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIGRhdGEpO1xyXG4gIHRoaXMub3B0cy51cGRhdGVEYXRhID0gdHJ1ZTtcclxuICBsZXQgc2Nyb2xsUG9zaXRpb24gPSBkYXRhLnNjcm9sbFBvc2l0aW9uIHx8ICdjdXJyZW50JztcclxuICBzd2l0Y2ggKHNjcm9sbFBvc2l0aW9uKSB7XHJcbiAgICBjYXNlICdjdXJyZW50JzpcclxuICAgICAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0O1xyXG4gICAgICBicmVhaztcclxuICAgIGNhc2UgJ2xlZnQnOlxyXG4gICAgICB0aGlzLm9wdHMuX3Njcm9sbERpc3RhbmNlXyA9IDA7XHJcbiAgICAgIHRoaXMuc2Nyb2xsT3B0aW9uID0ge1xyXG4gICAgICAgIGN1cnJlbnRPZmZzZXQ6IDAsXHJcbiAgICAgICAgc3RhcnRUb3VjaFg6IDAsXHJcbiAgICAgICAgZGlzdGFuY2U6IDAsXHJcbiAgICAgICAgbGFzdE1vdmVUaW1lOiAwXHJcbiAgICAgIH07XHJcbiAgICAgIGJyZWFrO1xyXG4gICAgY2FzZSAncmlnaHQnOlxyXG4gICAgICBsZXQgX2NhbFlBeGlzRGF0YSA9IGNhbFlBeGlzRGF0YSh0aGlzLm9wdHMuc2VyaWVzLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpLCB5QXhpc1dpZHRoID0gX2NhbFlBeGlzRGF0YS55QXhpc1dpZHRoO1xyXG4gICAgICB0aGlzLmNvbmZpZy55QXhpc1dpZHRoID0geUF4aXNXaWR0aDtcclxuICAgICAgbGV0IG9mZnNldExlZnQgPSAwO1xyXG4gICAgICBsZXQgX2dldFhBeGlzUG9pbnRzMCA9IGdldFhBeGlzUG9pbnRzKHRoaXMub3B0cy5jYXRlZ29yaWVzLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnKSwgeEF4aXNQb2ludHMgPSBfZ2V0WEF4aXNQb2ludHMwLnhBeGlzUG9pbnRzLFxyXG4gICAgICAgIHN0YXJ0WCA9IF9nZXRYQXhpc1BvaW50czAuc3RhcnRYLFxyXG4gICAgICAgIGVuZFggPSBfZ2V0WEF4aXNQb2ludHMwLmVuZFgsXHJcbiAgICAgICAgZWFjaFNwYWNpbmcgPSBfZ2V0WEF4aXNQb2ludHMwLmVhY2hTcGFjaW5nO1xyXG4gICAgICBsZXQgdG90YWxXaWR0aCA9IGVhY2hTcGFjaW5nICogKHhBeGlzUG9pbnRzLmxlbmd0aCAtIDEpO1xyXG4gICAgICBsZXQgc2NyZWVuV2lkdGggPSBlbmRYIC0gc3RhcnRYO1xyXG4gICAgICBvZmZzZXRMZWZ0ID0gc2NyZWVuV2lkdGggLSB0b3RhbFdpZHRoO1xyXG4gICAgICB0aGlzLnNjcm9sbE9wdGlvbiA9IHtcclxuICAgICAgICBjdXJyZW50T2Zmc2V0OiBvZmZzZXRMZWZ0LFxyXG4gICAgICAgIHN0YXJ0VG91Y2hYOiBvZmZzZXRMZWZ0LFxyXG4gICAgICAgIGRpc3RhbmNlOiAwLFxyXG4gICAgICAgIGxhc3RNb3ZlVGltZTogMFxyXG4gICAgICB9O1xyXG4gICAgICB0aGlzLm9wdHMuX3Njcm9sbERpc3RhbmNlXyA9IG9mZnNldExlZnQ7XHJcbiAgICAgIGJyZWFrO1xyXG4gIH1cclxuICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgdGhpcy5vcHRzLnR5cGUsIHRoaXMub3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS56b29tID0gZnVuY3Rpb24oKSB7XHJcbiAgdmFyIHZhbCA9IGFyZ3VtZW50cy5sZW5ndGggPiAwICYmIGFyZ3VtZW50c1swXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzBdIDogdGhpcy5vcHRzLnhBeGlzLml0ZW1Db3VudDtcclxuICBpZiAodGhpcy5vcHRzLmVuYWJsZVNjcm9sbCAhPT0gdHJ1ZSkge1xyXG4gICAgY29uc29sZS5sb2coJ1t1Q2hhcnRzXSDor7flkK/nlKjmu5rliqjmnaHlkI7kvb/nlKgnKVxyXG4gICAgcmV0dXJuO1xyXG4gIH1cclxuICAvL+W9k+WJjeWxj+W5leS4remXtOeCuVxyXG4gIGxldCBjZW50ZXJQb2ludCA9IE1hdGgucm91bmQoTWF0aC5hYnModGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldCkgLyB0aGlzLm9wdHMuY2hhcnREYXRhLmVhY2hTcGFjaW5nKSArIE1hdGgucm91bmQodGhpcy5vcHRzLnhBeGlzLml0ZW1Db3VudCAvIDIpO1xyXG4gIHRoaXMub3B0cy5hbmltYXRpb24gPSBmYWxzZTtcclxuICB0aGlzLm9wdHMueEF4aXMuaXRlbUNvdW50ID0gdmFsLml0ZW1Db3VudDtcclxuICAvL+mHjeaWsOiuoeeul3jovbTlgY/np7vot53nprtcclxuICBsZXQgX2NhbFlBeGlzRGF0YSA9IGNhbFlBeGlzRGF0YSh0aGlzLm9wdHMuc2VyaWVzLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpLFxyXG4gICAgeUF4aXNXaWR0aCA9IF9jYWxZQXhpc0RhdGEueUF4aXNXaWR0aDtcclxuICB0aGlzLmNvbmZpZy55QXhpc1dpZHRoID0geUF4aXNXaWR0aDtcclxuICBsZXQgb2Zmc2V0TGVmdCA9IDA7XHJcbiAgbGV0IF9nZXRYQXhpc1BvaW50czAgPSBnZXRYQXhpc1BvaW50cyh0aGlzLm9wdHMuY2F0ZWdvcmllcywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZyksXHJcbiAgICB4QXhpc1BvaW50cyA9IF9nZXRYQXhpc1BvaW50czAueEF4aXNQb2ludHMsXHJcbiAgICBzdGFydFggPSBfZ2V0WEF4aXNQb2ludHMwLnN0YXJ0WCxcclxuICAgIGVuZFggPSBfZ2V0WEF4aXNQb2ludHMwLmVuZFgsXHJcbiAgICBlYWNoU3BhY2luZyA9IF9nZXRYQXhpc1BvaW50czAuZWFjaFNwYWNpbmc7XHJcbiAgbGV0IGNlbnRlckxlZnQgPSBlYWNoU3BhY2luZyAqIGNlbnRlclBvaW50O1xyXG4gIGxldCBzY3JlZW5XaWR0aCA9IGVuZFggLSBzdGFydFg7XHJcbiAgbGV0IE1heExlZnQgPSBzY3JlZW5XaWR0aCAtIGVhY2hTcGFjaW5nICogKHhBeGlzUG9pbnRzLmxlbmd0aCAtIDEpO1xyXG4gIG9mZnNldExlZnQgPSBzY3JlZW5XaWR0aCAvIDIgLSBjZW50ZXJMZWZ0O1xyXG4gIGlmIChvZmZzZXRMZWZ0ID4gMCkge1xyXG4gICAgb2Zmc2V0TGVmdCA9IDA7XHJcbiAgfVxyXG4gIGlmIChvZmZzZXRMZWZ0IDwgTWF4TGVmdCkge1xyXG4gICAgb2Zmc2V0TGVmdCA9IE1heExlZnQ7XHJcbiAgfVxyXG4gIHRoaXMuc2Nyb2xsT3B0aW9uID0ge1xyXG4gICAgY3VycmVudE9mZnNldDogb2Zmc2V0TGVmdCxcclxuICAgIHN0YXJ0VG91Y2hYOiAwLFxyXG4gICAgZGlzdGFuY2U6IDAsXHJcbiAgICBsYXN0TW92ZVRpbWU6IDBcclxuICB9O1xyXG4gIGNhbFZhbGlkRGlzdGFuY2UodGhpcywgb2Zmc2V0TGVmdCwgdGhpcy5vcHRzLmNoYXJ0RGF0YSwgdGhpcy5jb25maWcsIHRoaXMub3B0cyk7XHJcbiAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSBvZmZzZXRMZWZ0O1xyXG4gIGRyYXdDaGFydHMuY2FsbCh0aGlzLCB0aGlzLm9wdHMudHlwZSwgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmRvYnVsZVpvb20gPSBmdW5jdGlvbihlKSB7XHJcbiAgaWYgKHRoaXMub3B0cy5lbmFibGVTY3JvbGwgIT09IHRydWUpIHtcclxuICAgIGNvbnNvbGUubG9nKCdbdUNoYXJ0c10g6K+35ZCv55So5rua5Yqo5p2h5ZCO5L2/55SoJylcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgY29uc3QgdGNzID0gZS5jaGFuZ2VkVG91Y2hlcztcclxuICBpZiAodGNzLmxlbmd0aCA8IDIpIHtcclxuICAgIHJldHVybjtcclxuICB9XHJcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCB0Y3MubGVuZ3RoOyBpKyspIHtcclxuICAgIHRjc1tpXS54ID0gdGNzW2ldLnggPyB0Y3NbaV0ueCA6IHRjc1tpXS5jbGllbnRYO1xyXG4gICAgdGNzW2ldLnkgPSB0Y3NbaV0ueSA/IHRjc1tpXS55IDogdGNzW2ldLmNsaWVudFk7XHJcbiAgfVxyXG4gIGNvbnN0IG50Y3MgPSBbZ2V0VG91Y2hlcyh0Y3NbMF0sIHRoaXMub3B0cywgZSksZ2V0VG91Y2hlcyh0Y3NbMV0sIHRoaXMub3B0cywgZSldOyBcclxuICBjb25zdCB4bGVuZ3RoID0gTWF0aC5hYnMobnRjc1swXS54IC0gbnRjc1sxXS54KTtcclxuICAvLyDorrDlvZXliJ3lp4vnmoTkuKTmjIfkuYvpl7TnmoTmlbDmja5cclxuICBpZighdGhpcy5zY3JvbGxPcHRpb24ubW92ZUNvdW50KXtcclxuICAgIGxldCBjdHMwID0ge2NoYW5nZWRUb3VjaGVzOlt7eDp0Y3NbMF0ueCx5OnRoaXMub3B0cy5hcmVhWzBdIC8gdGhpcy5vcHRzLnBpeCArIDJ9XX07XHJcbiAgICBsZXQgY3RzMSA9IHtjaGFuZ2VkVG91Y2hlczpbe3g6dGNzWzFdLngseTp0aGlzLm9wdHMuYXJlYVswXSAvIHRoaXMub3B0cy5waXggKyAyfV19O1xyXG4gICAgaWYodGhpcy5vcHRzLnJvdGF0ZSl7XHJcbiAgICAgIGN0czAgPSB7Y2hhbmdlZFRvdWNoZXM6W3t4OnRoaXMub3B0cy5oZWlnaHQgLyB0aGlzLm9wdHMucGl4IC0gdGhpcy5vcHRzLmFyZWFbMF0gLyB0aGlzLm9wdHMucGl4IC0gMix5OnRjc1swXS55fV19O1xyXG4gICAgICBjdHMxID0ge2NoYW5nZWRUb3VjaGVzOlt7eDp0aGlzLm9wdHMuaGVpZ2h0IC8gdGhpcy5vcHRzLnBpeCAtIHRoaXMub3B0cy5hcmVhWzBdIC8gdGhpcy5vcHRzLnBpeCAtIDIseTp0Y3NbMV0ueX1dfTtcclxuICAgIH1cclxuICAgIGNvbnN0IG1vdmVDdXJyZW50MSA9IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChjdHMwKS5pbmRleDtcclxuICAgIGNvbnN0IG1vdmVDdXJyZW50MiA9IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChjdHMxKS5pbmRleDtcclxuICAgIGNvbnN0IG1vdmVDb3VudCA9IE1hdGguYWJzKG1vdmVDdXJyZW50MSAtIG1vdmVDdXJyZW50Mik7XHJcbiAgICB0aGlzLnNjcm9sbE9wdGlvbi5tb3ZlQ291bnQgPSBtb3ZlQ291bnQ7XHJcbiAgICB0aGlzLnNjcm9sbE9wdGlvbi5tb3ZlQ3VycmVudDEgPSBNYXRoLm1pbihtb3ZlQ3VycmVudDEsIG1vdmVDdXJyZW50Mik7XHJcbiAgICB0aGlzLnNjcm9sbE9wdGlvbi5tb3ZlQ3VycmVudDIgPSBNYXRoLm1heChtb3ZlQ3VycmVudDEsIG1vdmVDdXJyZW50Mik7XHJcbiAgICByZXR1cm47XHJcbiAgfVxyXG4gIFxyXG4gIGxldCBjdXJyZW50RWFjaFNwYWNpbmcgPSB4bGVuZ3RoIC8gdGhpcy5zY3JvbGxPcHRpb24ubW92ZUNvdW50O1xyXG4gIGxldCBpdGVtQ291bnQgPSAodGhpcy5vcHRzLndpZHRoIC0gdGhpcy5vcHRzLmFyZWFbMV0gLSB0aGlzLm9wdHMuYXJlYVszXSkgLyBjdXJyZW50RWFjaFNwYWNpbmc7XHJcbiAgaXRlbUNvdW50ID0gaXRlbUNvdW50IDw9IDIgPyAyIDogaXRlbUNvdW50O1xyXG4gIGl0ZW1Db3VudCA9IGl0ZW1Db3VudCA+PSB0aGlzLm9wdHMuY2F0ZWdvcmllcy5sZW5ndGggPyB0aGlzLm9wdHMuY2F0ZWdvcmllcy5sZW5ndGggOiBpdGVtQ291bnQ7XHJcbiAgdGhpcy5vcHRzLmFuaW1hdGlvbiA9IGZhbHNlO1xyXG4gIHRoaXMub3B0cy54QXhpcy5pdGVtQ291bnQgPSBpdGVtQ291bnQ7XHJcbiAgLy8g6YeN5paw6K6h566X5rua5Yqo5p2h5YGP56e76Led56a7XHJcbiAgbGV0IG9mZnNldExlZnQgPSAwO1xyXG4gIGxldCBfZ2V0WEF4aXNQb2ludHMwID0gZ2V0WEF4aXNQb2ludHModGhpcy5vcHRzLmNhdGVnb3JpZXMsIHRoaXMub3B0cywgdGhpcy5jb25maWcpLFxyXG4gICAgeEF4aXNQb2ludHMgPSBfZ2V0WEF4aXNQb2ludHMwLnhBeGlzUG9pbnRzLFxyXG4gICAgc3RhcnRYID0gX2dldFhBeGlzUG9pbnRzMC5zdGFydFgsXHJcbiAgICBlbmRYID0gX2dldFhBeGlzUG9pbnRzMC5lbmRYLFxyXG4gICAgZWFjaFNwYWNpbmcgPSBfZ2V0WEF4aXNQb2ludHMwLmVhY2hTcGFjaW5nO1xyXG4gIGxldCBjdXJyZW50TGVmdCA9IGVhY2hTcGFjaW5nICogdGhpcy5zY3JvbGxPcHRpb24ubW92ZUN1cnJlbnQxO1xyXG4gIGxldCBzY3JlZW5XaWR0aCA9IGVuZFggLSBzdGFydFg7XHJcbiAgbGV0IE1heExlZnQgPSBzY3JlZW5XaWR0aCAtIGVhY2hTcGFjaW5nICogKHhBeGlzUG9pbnRzLmxlbmd0aCAtIDEpO1xyXG4gIG9mZnNldExlZnQgPSAtY3VycmVudExlZnQrTWF0aC5taW4obnRjc1swXS54LG50Y3NbMV0ueCktdGhpcy5vcHRzLmFyZWFbM10tZWFjaFNwYWNpbmc7XHJcbiAgaWYgKG9mZnNldExlZnQgPiAwKSB7XHJcbiAgICBvZmZzZXRMZWZ0ID0gMDtcclxuICB9XHJcbiAgaWYgKG9mZnNldExlZnQgPCBNYXhMZWZ0KSB7XHJcbiAgICBvZmZzZXRMZWZ0ID0gTWF4TGVmdDtcclxuICB9XHJcbiAgdGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldD0gb2Zmc2V0TGVmdDtcclxuICB0aGlzLnNjcm9sbE9wdGlvbi5zdGFydFRvdWNoWD0gMDtcclxuICB0aGlzLnNjcm9sbE9wdGlvbi5kaXN0YW5jZT0wO1xyXG4gIGNhbFZhbGlkRGlzdGFuY2UodGhpcywgb2Zmc2V0TGVmdCwgdGhpcy5vcHRzLmNoYXJ0RGF0YSwgdGhpcy5jb25maWcsIHRoaXMub3B0cyk7XHJcbiAgdGhpcy5vcHRzLl9zY3JvbGxEaXN0YW5jZV8gPSBvZmZzZXRMZWZ0O1xyXG4gIGRyYXdDaGFydHMuY2FsbCh0aGlzLCB0aGlzLm9wdHMudHlwZSwgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxufVxyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc3RvcEFuaW1hdGlvbiA9IGZ1bmN0aW9uKCkge1xyXG4gIHRoaXMuYW5pbWF0aW9uSW5zdGFuY2UgJiYgdGhpcy5hbmltYXRpb25JbnN0YW5jZS5zdG9wKCk7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS5hZGRFdmVudExpc3RlbmVyID0gZnVuY3Rpb24odHlwZSwgbGlzdGVuZXIpIHtcclxuICB0aGlzLnVldmVudC5hZGRFdmVudExpc3RlbmVyKHR5cGUsIGxpc3RlbmVyKTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmRlbEV2ZW50TGlzdGVuZXIgPSBmdW5jdGlvbih0eXBlKSB7XHJcbiAgdGhpcy51ZXZlbnQuZGVsRXZlbnRMaXN0ZW5lcih0eXBlKTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmdldEN1cnJlbnREYXRhSW5kZXggPSBmdW5jdGlvbihlKSB7XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICh0b3VjaGVzKSB7XHJcbiAgICBsZXQgX3RvdWNoZXMkID0gZ2V0VG91Y2hlcyh0b3VjaGVzLCB0aGlzLm9wdHMsIGUpO1xyXG4gICAgaWYgKHRoaXMub3B0cy50eXBlID09PSAncGllJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ3JpbmcnKSB7XHJcbiAgICAgIHJldHVybiBmaW5kUGllQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEucGllRGF0YSwgdGhpcy5vcHRzKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdyb3NlJykge1xyXG4gICAgICByZXR1cm4gZmluZFJvc2VDaGFydEN1cnJlbnRJbmRleCh7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfSwgdGhpcy5vcHRzLmNoYXJ0RGF0YS5waWVEYXRhLCB0aGlzLm9wdHMpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ3JhZGFyJykge1xyXG4gICAgICByZXR1cm4gZmluZFJhZGFyQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEucmFkYXJEYXRhLCB0aGlzLm9wdHMuY2F0ZWdvcmllcy5sZW5ndGgpO1xyXG4gICAgfSBlbHNlIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ2Z1bm5lbCcpIHtcclxuICAgICAgcmV0dXJuIGZpbmRGdW5uZWxDaGFydEN1cnJlbnRJbmRleCh7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfSwgdGhpcy5vcHRzLmNoYXJ0RGF0YS5mdW5uZWxEYXRhKTtcclxuICAgIH0gZWxzZSBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdtYXAnKSB7XHJcbiAgICAgIHJldHVybiBmaW5kTWFwQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cyk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy50eXBlID09PSAnd29yZCcpIHtcclxuICAgICAgcmV0dXJuIGZpbmRXb3JkQ2hhcnRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEud29yZENsb3VkRGF0YSk7XHJcbiAgICB9IGVsc2UgaWYgKHRoaXMub3B0cy50eXBlID09PSAnYmFyJykge1xyXG4gICAgICByZXR1cm4gZmluZEJhckNoYXJ0Q3VycmVudEluZGV4KHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9LCB0aGlzLm9wdHMuY2hhcnREYXRhLmNhbFBvaW50cywgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgTWF0aC5hYnModGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldCkpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgcmV0dXJuIGZpbmRDdXJyZW50SW5kZXgoe1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH0sIHRoaXMub3B0cy5jaGFydERhdGEuY2FsUG9pbnRzLCB0aGlzLm9wdHMsIHRoaXMuY29uZmlnLCBNYXRoLmFicyh0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0KSk7XHJcbiAgICB9XHJcbiAgfVxyXG4gIHJldHVybiAtMTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLmdldExlZ2VuZERhdGFJbmRleCA9IGZ1bmN0aW9uKGUpIHtcclxuICB2YXIgdG91Y2hlcyA9IG51bGw7XHJcbiAgaWYgKGUuY2hhbmdlZFRvdWNoZXMpIHtcclxuICAgIHRvdWNoZXMgPSBlLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0b3VjaGVzID0gZS5tcC5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9XHJcbiAgaWYgKHRvdWNoZXMpIHtcclxuICAgIGxldCBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgICByZXR1cm4gZmluZExlZ2VuZEluZGV4KHtcclxuICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICB9LCB0aGlzLm9wdHMuY2hhcnREYXRhLmxlZ2VuZERhdGEpO1xyXG4gIH1cclxuICByZXR1cm4gLTE7XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS50b3VjaExlZ2VuZCA9IGZ1bmN0aW9uKGUpIHtcclxuICB2YXIgb3B0aW9uID0gYXJndW1lbnRzLmxlbmd0aCA+IDEgJiYgYXJndW1lbnRzWzFdICE9PSB1bmRlZmluZWQgPyBhcmd1bWVudHNbMV0gOiB7fTtcclxuICB2YXIgdG91Y2hlcyA9IG51bGw7XHJcbiAgaWYgKGUuY2hhbmdlZFRvdWNoZXMpIHtcclxuICAgIHRvdWNoZXMgPSBlLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH0gZWxzZSB7XHJcbiAgICB0b3VjaGVzID0gZS5tcC5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9XHJcbiAgaWYgKHRvdWNoZXMpIHtcclxuICAgIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgICB2YXIgaW5kZXggPSB0aGlzLmdldExlZ2VuZERhdGFJbmRleChlKTtcclxuICAgIGlmIChpbmRleCA+PSAwKSB7XHJcbiAgICAgIGlmICh0aGlzLm9wdHMudHlwZSA9PSAnY2FuZGxlJykge1xyXG4gICAgICAgIHRoaXMub3B0cy5zZXJpZXNNQVtpbmRleF0uc2hvdyA9ICF0aGlzLm9wdHMuc2VyaWVzTUFbaW5kZXhdLnNob3c7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5vcHRzLnNlcmllc1tpbmRleF0uc2hvdyA9ICF0aGlzLm9wdHMuc2VyaWVzW2luZGV4XS5zaG93O1xyXG4gICAgICB9XHJcbiAgICAgIHRoaXMub3B0cy5hbmltYXRpb24gPSBvcHRpb24uYW5pbWF0aW9uID8gdHJ1ZSA6IGZhbHNlO1xyXG4gICAgICB0aGlzLm9wdHMuX3Njcm9sbERpc3RhbmNlXyA9IHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQ7XHJcbiAgICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCB0aGlzLm9wdHMudHlwZSwgdGhpcy5vcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICAgIH1cclxuICB9XHJcblxyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2hvd1Rvb2xUaXAgPSBmdW5jdGlvbihlKSB7XHJcbiAgdmFyIG9wdGlvbiA9IGFyZ3VtZW50cy5sZW5ndGggPiAxICYmIGFyZ3VtZW50c1sxXSAhPT0gdW5kZWZpbmVkID8gYXJndW1lbnRzWzFdIDoge307XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICghdG91Y2hlcykge1xyXG4gICAgY29uc29sZS5sb2coXCJbdUNoYXJ0c10g5pyq6I635Y+W5YiwZXZlbnTlnZDmoIfkv6Hmga9cIik7XHJcbiAgfVxyXG4gIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0O1xyXG4gIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtcclxuICAgIF9zY3JvbGxEaXN0YW5jZV86IGN1cnJlbnRPZmZzZXQsXHJcbiAgICBhbmltYXRpb246IGZhbHNlXHJcbiAgfSk7XHJcbiAgaWYgKHRoaXMub3B0cy50eXBlID09PSAnbGluZScgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdhcmVhJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ2NvbHVtbicgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdzY2F0dGVyJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ2J1YmJsZScpIHtcclxuICAgIHZhciBjdXJyZW50ID0gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpO1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IGN1cnJlbnQuaW5kZXggOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSB8fCBpbmRleC5sZW5ndGg+MCkge1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGdldFNlcmllc0RhdGFJdGVtKHRoaXMub3B0cy5zZXJpZXMsIGluZGV4LCBjdXJyZW50Lmdyb3VwKTtcclxuICAgICAgaWYgKHNlcmllc0RhdGEubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdmFyIF9nZXRUb29sVGlwRGF0YSA9IGdldFRvb2xUaXBEYXRhKHNlcmllc0RhdGEsIHRoaXMub3B0cywgaW5kZXgsIGN1cnJlbnQuZ3JvdXAsIHRoaXMub3B0cy5jYXRlZ29yaWVzLCBvcHRpb24pLFxyXG4gICAgICAgICAgdGV4dExpc3QgPSBfZ2V0VG9vbFRpcERhdGEudGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQgPSBfZ2V0VG9vbFRpcERhdGEub2Zmc2V0O1xyXG4gICAgICAgIG9mZnNldC55ID0gX3RvdWNoZXMkLnk7XHJcbiAgICAgICAgb3B0cy50b29sdGlwID0ge1xyXG4gICAgICAgICAgdGV4dExpc3Q6IG9wdGlvbi50ZXh0TGlzdCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICAgIGluZGV4OiBpbmRleCxcclxuICAgICAgICAgIGdyb3VwOiBjdXJyZW50Lmdyb3VwXHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ21vdW50Jykge1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChlKS5pbmRleCA6IG9wdGlvbi5pbmRleDtcclxuICAgIGlmIChpbmRleCA+IC0xKSB7XHJcbiAgICAgIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHthbmltYXRpb246IGZhbHNlfSk7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gYXNzaWduKHt9LCBvcHRzLl9zZXJpZXNfW2luZGV4XSk7XHJcbiAgICAgIHZhciB0ZXh0TGlzdCA9IFt7XHJcbiAgICAgICAgdGV4dDogb3B0aW9uLmZvcm1hdHRlciA/IG9wdGlvbi5mb3JtYXR0ZXIoc2VyaWVzRGF0YSwgdW5kZWZpbmVkLCBpbmRleCwgb3B0cykgOiBzZXJpZXNEYXRhLm5hbWUgKyAnOiAnICsgc2VyaWVzRGF0YS5kYXRhLFxyXG4gICAgICAgIGNvbG9yOiBzZXJpZXNEYXRhLmNvbG9yLFxyXG4gICAgICAgIGxlZ2VuZFNoYXBlOiB0aGlzLm9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZSA9PSAnYXV0bycgPyBzZXJpZXNEYXRhLmxlZ2VuZFNoYXBlIDogdGhpcy5vcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGVcclxuICAgICAgfV07XHJcbiAgICAgIHZhciBvZmZzZXQgPSB7XHJcbiAgICAgICAgeDogb3B0cy5jaGFydERhdGEuY2FsUG9pbnRzW2luZGV4XS54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH07XHJcbiAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgb3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICB9XHJcbiAgaWYgKHRoaXMub3B0cy50eXBlID09PSAnYmFyJykge1xyXG4gICAgdmFyIGN1cnJlbnQgPSB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSk7XHJcbiAgICB2YXIgaW5kZXggPSBvcHRpb24uaW5kZXggPT0gdW5kZWZpbmVkID8gY3VycmVudC5pbmRleCA6IG9wdGlvbi5pbmRleDtcclxuICAgIGlmIChpbmRleCA+IC0xIHx8IGluZGV4Lmxlbmd0aD4wKSB7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gZ2V0U2VyaWVzRGF0YUl0ZW0odGhpcy5vcHRzLnNlcmllcywgaW5kZXgsIGN1cnJlbnQuZ3JvdXApO1xyXG4gICAgICBpZiAoc2VyaWVzRGF0YS5sZW5ndGggIT09IDApIHtcclxuICAgICAgICB2YXIgX2dldFRvb2xUaXBEYXRhID0gZ2V0VG9vbFRpcERhdGEoc2VyaWVzRGF0YSwgdGhpcy5vcHRzLCBpbmRleCwgY3VycmVudC5ncm91cCwgdGhpcy5vcHRzLmNhdGVnb3JpZXMsIG9wdGlvbiksXHJcbiAgICAgICAgICB0ZXh0TGlzdCA9IF9nZXRUb29sVGlwRGF0YS50ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldCA9IF9nZXRUb29sVGlwRGF0YS5vZmZzZXQ7XHJcbiAgICAgICAgb2Zmc2V0LnggPSBfdG91Y2hlcyQueDtcclxuICAgICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24udGV4dExpc3QgOiB0ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldDogb3B0aW9uLm9mZnNldCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLm9mZnNldCA6IG9mZnNldCxcclxuICAgICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgICAgaW5kZXg6IGluZGV4XHJcbiAgICAgICAgfTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ21peCcpIHtcclxuICAgIHZhciBjdXJyZW50ID0gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpO1xyXG4gICAgdmFyIGluZGV4ID0gb3B0aW9uLmluZGV4ID09IHVuZGVmaW5lZCA/IGN1cnJlbnQuaW5kZXggOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgY3VycmVudE9mZnNldCA9IHRoaXMuc2Nyb2xsT3B0aW9uLmN1cnJlbnRPZmZzZXQ7XHJcbiAgICAgIHZhciBvcHRzID0gYXNzaWduKHt9LCB0aGlzLm9wdHMsIHtcclxuICAgICAgICBfc2Nyb2xsRGlzdGFuY2VfOiBjdXJyZW50T2Zmc2V0LFxyXG4gICAgICAgIGFuaW1hdGlvbjogZmFsc2VcclxuICAgICAgfSk7XHJcbiAgICAgIHZhciBzZXJpZXNEYXRhID0gZ2V0U2VyaWVzRGF0YUl0ZW0odGhpcy5vcHRzLnNlcmllcywgaW5kZXgpO1xyXG4gICAgICBpZiAoc2VyaWVzRGF0YS5sZW5ndGggIT09IDApIHtcclxuICAgICAgICB2YXIgX2dldE1peFRvb2xUaXBEYXRhID0gZ2V0TWl4VG9vbFRpcERhdGEoc2VyaWVzRGF0YSwgdGhpcy5vcHRzLCBpbmRleCwgdGhpcy5vcHRzLmNhdGVnb3JpZXMsIG9wdGlvbiksXHJcbiAgICAgICAgICB0ZXh0TGlzdCA9IF9nZXRNaXhUb29sVGlwRGF0YS50ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldCA9IF9nZXRNaXhUb29sVGlwRGF0YS5vZmZzZXQ7XHJcbiAgICAgICAgb2Zmc2V0LnkgPSBfdG91Y2hlcyQueTtcclxuICAgICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdjYW5kbGUnKSB7XHJcbiAgICB2YXIgY3VycmVudCA9IHRoaXMuZ2V0Q3VycmVudERhdGFJbmRleChlKTtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyBjdXJyZW50LmluZGV4IDogb3B0aW9uLmluZGV4O1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdmFyIGN1cnJlbnRPZmZzZXQgPSB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0O1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7XHJcbiAgICAgICAgX3Njcm9sbERpc3RhbmNlXzogY3VycmVudE9mZnNldCxcclxuICAgICAgICBhbmltYXRpb246IGZhbHNlXHJcbiAgICAgIH0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGdldFNlcmllc0RhdGFJdGVtKHRoaXMub3B0cy5zZXJpZXMsIGluZGV4KTtcclxuICAgICAgaWYgKHNlcmllc0RhdGEubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdmFyIF9nZXRUb29sVGlwRGF0YSA9IGdldENhbmRsZVRvb2xUaXBEYXRhKHRoaXMub3B0cy5zZXJpZXNbMF0uZGF0YSwgc2VyaWVzRGF0YSwgdGhpcy5vcHRzLCBpbmRleCwgdGhpcy5vcHRzLmNhdGVnb3JpZXMsIHRoaXMub3B0cy5leHRyYS5jYW5kbGUsIG9wdGlvbiksXHJcbiAgICAgICAgICB0ZXh0TGlzdCA9IF9nZXRUb29sVGlwRGF0YS50ZXh0TGlzdCxcclxuICAgICAgICAgIG9mZnNldCA9IF9nZXRUb29sVGlwRGF0YS5vZmZzZXQ7XHJcbiAgICAgICAgb2Zmc2V0LnkgPSBfdG91Y2hlcyQueTtcclxuICAgICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICAgIH07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdwaWUnIHx8IHRoaXMub3B0cy50eXBlID09PSAncmluZycgfHwgdGhpcy5vcHRzLnR5cGUgPT09ICdyb3NlJyB8fCB0aGlzLm9wdHMudHlwZSA9PT0gJ2Z1bm5lbCcpIHtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSkgOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7YW5pbWF0aW9uOiBmYWxzZX0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGFzc2lnbih7fSwgb3B0cy5fc2VyaWVzX1tpbmRleF0pO1xyXG4gICAgICB2YXIgdGV4dExpc3QgPSBbe1xyXG4gICAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKHNlcmllc0RhdGEsIHVuZGVmaW5lZCwgaW5kZXgsIG9wdHMpIDogc2VyaWVzRGF0YS5uYW1lICsgJzogJyArIHNlcmllc0RhdGEuZGF0YSxcclxuICAgICAgICBjb2xvcjogc2VyaWVzRGF0YS5jb2xvcixcclxuICAgICAgICBsZWdlbmRTaGFwZTogdGhpcy5vcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGUgPT0gJ2F1dG8nID8gc2VyaWVzRGF0YS5sZWdlbmRTaGFwZSA6IHRoaXMub3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlXHJcbiAgICAgIH1dO1xyXG4gICAgICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgICAgIHg6IF90b3VjaGVzJC54LFxyXG4gICAgICAgIHk6IF90b3VjaGVzJC55XHJcbiAgICAgIH07XHJcbiAgICAgIG9wdHMudG9vbHRpcCA9IHtcclxuICAgICAgICB0ZXh0TGlzdDogb3B0aW9uLnRleHRMaXN0ID8gb3B0aW9uLnRleHRMaXN0IDogdGV4dExpc3QsXHJcbiAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgIG9wdGlvbjogb3B0aW9uLFxyXG4gICAgICAgIGluZGV4OiBpbmRleFxyXG4gICAgICB9O1xyXG4gICAgfVxyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ21hcCcpIHtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSkgOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7YW5pbWF0aW9uOiBmYWxzZX0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLnNlcmllc1tpbmRleF0pO1xyXG4gICAgICBzZXJpZXNEYXRhLm5hbWUgPSBzZXJpZXNEYXRhLnByb3BlcnRpZXMubmFtZVxyXG4gICAgICB2YXIgdGV4dExpc3QgPSBbe1xyXG4gICAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKHNlcmllc0RhdGEsIHVuZGVmaW5lZCwgaW5kZXgsIHRoaXMub3B0cykgOiBzZXJpZXNEYXRhLm5hbWUsXHJcbiAgICAgICAgY29sb3I6IHNlcmllc0RhdGEuY29sb3IsXHJcbiAgICAgICAgbGVnZW5kU2hhcGU6IHRoaXMub3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlID09ICdhdXRvJyA/IHNlcmllc0RhdGEubGVnZW5kU2hhcGUgOiB0aGlzLm9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZVxyXG4gICAgICB9XTtcclxuICAgICAgdmFyIG9mZnNldCA9IHtcclxuICAgICAgICB4OiBfdG91Y2hlcyQueCxcclxuICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICB9O1xyXG4gICAgICBvcHRzLnRvb2x0aXAgPSB7XHJcbiAgICAgICAgdGV4dExpc3Q6IG9wdGlvbi50ZXh0TGlzdCA/IG9wdGlvbi50ZXh0TGlzdCA6IHRleHRMaXN0LFxyXG4gICAgICAgIG9mZnNldDogb3B0aW9uLm9mZnNldCAhPT0gdW5kZWZpbmVkID8gb3B0aW9uLm9mZnNldCA6IG9mZnNldCxcclxuICAgICAgICBvcHRpb246IG9wdGlvbixcclxuICAgICAgICBpbmRleDogaW5kZXhcclxuICAgICAgfTtcclxuICAgIH1cclxuICAgIG9wdHMudXBkYXRlRGF0YSA9IGZhbHNlO1xyXG4gICAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIG9wdHMudHlwZSwgb3B0cywgdGhpcy5jb25maWcsIHRoaXMuY29udGV4dCk7XHJcbiAgfVxyXG4gIGlmICh0aGlzLm9wdHMudHlwZSA9PT0gJ3dvcmQnKSB7XHJcbiAgICB2YXIgaW5kZXggPSBvcHRpb24uaW5kZXggPT0gdW5kZWZpbmVkID8gdGhpcy5nZXRDdXJyZW50RGF0YUluZGV4KGUpIDogb3B0aW9uLmluZGV4O1xyXG4gICAgaWYgKGluZGV4ID4gLTEpIHtcclxuICAgICAgdmFyIG9wdHMgPSBhc3NpZ24oe30sIHRoaXMub3B0cywge2FuaW1hdGlvbjogZmFsc2V9KTtcclxuICAgICAgdmFyIHNlcmllc0RhdGEgPSBhc3NpZ24oe30sIHRoaXMub3B0cy5zZXJpZXNbaW5kZXhdKTtcclxuICAgICAgdmFyIHRleHRMaXN0ID0gW3tcclxuICAgICAgICB0ZXh0OiBvcHRpb24uZm9ybWF0dGVyID8gb3B0aW9uLmZvcm1hdHRlcihzZXJpZXNEYXRhLCB1bmRlZmluZWQsIGluZGV4LCB0aGlzLm9wdHMpIDogc2VyaWVzRGF0YS5uYW1lLFxyXG4gICAgICAgIGNvbG9yOiBzZXJpZXNEYXRhLmNvbG9yLFxyXG4gICAgICAgIGxlZ2VuZFNoYXBlOiB0aGlzLm9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZSA9PSAnYXV0bycgPyBzZXJpZXNEYXRhLmxlZ2VuZFNoYXBlIDogdGhpcy5vcHRzLmV4dHJhLnRvb2x0aXAubGVnZW5kU2hhcGVcclxuICAgICAgfV07XHJcbiAgICAgIHZhciBvZmZzZXQgPSB7XHJcbiAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgeTogX3RvdWNoZXMkLnlcclxuICAgICAgfTtcclxuICAgICAgb3B0cy50b29sdGlwID0ge1xyXG4gICAgICAgIHRleHRMaXN0OiBvcHRpb24udGV4dExpc3QgPyBvcHRpb24udGV4dExpc3QgOiB0ZXh0TGlzdCxcclxuICAgICAgICBvZmZzZXQ6IG9wdGlvbi5vZmZzZXQgIT09IHVuZGVmaW5lZCA/IG9wdGlvbi5vZmZzZXQgOiBvZmZzZXQsXHJcbiAgICAgICAgb3B0aW9uOiBvcHRpb24sXHJcbiAgICAgICAgaW5kZXg6IGluZGV4XHJcbiAgICAgIH07XHJcbiAgICB9XHJcbiAgICBvcHRzLnVwZGF0ZURhdGEgPSBmYWxzZTtcclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gIH1cclxuICBpZiAodGhpcy5vcHRzLnR5cGUgPT09ICdyYWRhcicpIHtcclxuICAgIHZhciBpbmRleCA9IG9wdGlvbi5pbmRleCA9PSB1bmRlZmluZWQgPyB0aGlzLmdldEN1cnJlbnREYXRhSW5kZXgoZSkgOiBvcHRpb24uaW5kZXg7XHJcbiAgICBpZiAoaW5kZXggPiAtMSkge1xyXG4gICAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7YW5pbWF0aW9uOiBmYWxzZX0pO1xyXG4gICAgICB2YXIgc2VyaWVzRGF0YSA9IGdldFNlcmllc0RhdGFJdGVtKHRoaXMub3B0cy5zZXJpZXMsIGluZGV4KTtcclxuICAgICAgaWYgKHNlcmllc0RhdGEubGVuZ3RoICE9PSAwKSB7XHJcbiAgICAgICAgdmFyIHRleHRMaXN0ID0gc2VyaWVzRGF0YS5tYXAoKGl0ZW0pID0+IHtcclxuICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgIHRleHQ6IG9wdGlvbi5mb3JtYXR0ZXIgPyBvcHRpb24uZm9ybWF0dGVyKGl0ZW0sIHRoaXMub3B0cy5jYXRlZ29yaWVzW2luZGV4XSwgaW5kZXgsIHRoaXMub3B0cykgOiBpdGVtLm5hbWUgKyAnOiAnICsgaXRlbS5kYXRhLFxyXG4gICAgICAgICAgICBjb2xvcjogaXRlbS5jb2xvcixcclxuICAgICAgICAgICAgbGVnZW5kU2hhcGU6IHRoaXMub3B0cy5leHRyYS50b29sdGlwLmxlZ2VuZFNoYXBlID09ICdhdXRvJyA/IGl0ZW0ubGVnZW5kU2hhcGUgOiB0aGlzLm9wdHMuZXh0cmEudG9vbHRpcC5sZWdlbmRTaGFwZVxyXG4gICAgICAgICAgfTtcclxuICAgICAgICB9KTtcclxuICAgICAgICB2YXIgb2Zmc2V0ID0ge1xyXG4gICAgICAgICAgeDogX3RvdWNoZXMkLngsXHJcbiAgICAgICAgICB5OiBfdG91Y2hlcyQueVxyXG4gICAgICAgIH07XHJcbiAgICAgICAgb3B0cy50b29sdGlwID0ge1xyXG4gICAgICAgICAgdGV4dExpc3Q6IG9wdGlvbi50ZXh0TGlzdCA/IG9wdGlvbi50ZXh0TGlzdCA6IHRleHRMaXN0LFxyXG4gICAgICAgICAgb2Zmc2V0OiBvcHRpb24ub2Zmc2V0ICE9PSB1bmRlZmluZWQgPyBvcHRpb24ub2Zmc2V0IDogb2Zmc2V0LFxyXG4gICAgICAgICAgb3B0aW9uOiBvcHRpb24sXHJcbiAgICAgICAgICBpbmRleDogaW5kZXhcclxuICAgICAgICB9O1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBkcmF3Q2hhcnRzLmNhbGwodGhpcywgb3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxuICB9XHJcbn07XHJcblxyXG51Q2hhcnRzLnByb3RvdHlwZS50cmFuc2xhdGUgPSBmdW5jdGlvbihkaXN0YW5jZSkge1xyXG4gIHRoaXMuc2Nyb2xsT3B0aW9uID0ge1xyXG4gICAgY3VycmVudE9mZnNldDogZGlzdGFuY2UsXHJcbiAgICBzdGFydFRvdWNoWDogZGlzdGFuY2UsXHJcbiAgICBkaXN0YW5jZTogMCxcclxuICAgIGxhc3RNb3ZlVGltZTogMFxyXG4gIH07XHJcbiAgbGV0IG9wdHMgPSBhc3NpZ24oe30sIHRoaXMub3B0cywge1xyXG4gICAgX3Njcm9sbERpc3RhbmNlXzogZGlzdGFuY2UsXHJcbiAgICBhbmltYXRpb246IGZhbHNlXHJcbiAgfSk7XHJcbiAgZHJhd0NoYXJ0cy5jYWxsKHRoaXMsIHRoaXMub3B0cy50eXBlLCBvcHRzLCB0aGlzLmNvbmZpZywgdGhpcy5jb250ZXh0KTtcclxufTtcclxuXHJcbnVDaGFydHMucHJvdG90eXBlLnNjcm9sbFN0YXJ0ID0gZnVuY3Rpb24oZSkge1xyXG4gIHZhciB0b3VjaGVzID0gbnVsbDtcclxuICBpZiAoZS5jaGFuZ2VkVG91Y2hlcykge1xyXG4gICAgdG91Y2hlcyA9IGUuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfSBlbHNlIHtcclxuICAgIHRvdWNoZXMgPSBlLm1wLmNoYW5nZWRUb3VjaGVzWzBdO1xyXG4gIH1cclxuICB2YXIgX3RvdWNoZXMkID0gZ2V0VG91Y2hlcyh0b3VjaGVzLCB0aGlzLm9wdHMsIGUpO1xyXG4gIGlmICh0b3VjaGVzICYmIHRoaXMub3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIHRoaXMuc2Nyb2xsT3B0aW9uLnN0YXJ0VG91Y2hYID0gX3RvdWNoZXMkLng7XHJcbiAgfVxyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2Nyb2xsID0gZnVuY3Rpb24oZSkge1xyXG4gIGlmICh0aGlzLnNjcm9sbE9wdGlvbi5sYXN0TW92ZVRpbWUgPT09IDApIHtcclxuICAgIHRoaXMuc2Nyb2xsT3B0aW9uLmxhc3RNb3ZlVGltZSA9IERhdGUubm93KCk7XHJcbiAgfVxyXG4gIGxldCBMaW1pdCA9IHRoaXMub3B0cy50b3VjaE1vdmVMaW1pdCB8fCA2MDtcclxuICBsZXQgY3Vyck1vdmVUaW1lID0gRGF0ZS5ub3coKTtcclxuICBsZXQgZHVyYXRpb24gPSBjdXJyTW92ZVRpbWUgLSB0aGlzLnNjcm9sbE9wdGlvbi5sYXN0TW92ZVRpbWU7XHJcbiAgaWYgKGR1cmF0aW9uIDwgTWF0aC5mbG9vcigxMDAwIC8gTGltaXQpKSByZXR1cm47XHJcbiAgaWYgKHRoaXMuc2Nyb2xsT3B0aW9uLnN0YXJ0VG91Y2hYID09IDApIHJldHVybjtcclxuICB0aGlzLnNjcm9sbE9wdGlvbi5sYXN0TW92ZVRpbWUgPSBjdXJyTW92ZVRpbWU7XHJcbiAgdmFyIHRvdWNoZXMgPSBudWxsO1xyXG4gIGlmIChlLmNoYW5nZWRUb3VjaGVzKSB7XHJcbiAgICB0b3VjaGVzID0gZS5jaGFuZ2VkVG91Y2hlc1swXTtcclxuICB9IGVsc2Uge1xyXG4gICAgdG91Y2hlcyA9IGUubXAuY2hhbmdlZFRvdWNoZXNbMF07XHJcbiAgfVxyXG4gIGlmICh0b3VjaGVzICYmIHRoaXMub3B0cy5lbmFibGVTY3JvbGwgPT09IHRydWUpIHtcclxuICAgIHZhciBfdG91Y2hlcyQgPSBnZXRUb3VjaGVzKHRvdWNoZXMsIHRoaXMub3B0cywgZSk7XHJcbiAgICB2YXIgX2Rpc3RhbmNlO1xyXG4gICAgX2Rpc3RhbmNlID0gX3RvdWNoZXMkLnggLSB0aGlzLnNjcm9sbE9wdGlvbi5zdGFydFRvdWNoWDtcclxuICAgIHZhciBjdXJyZW50T2Zmc2V0ID0gdGhpcy5zY3JvbGxPcHRpb24uY3VycmVudE9mZnNldDtcclxuICAgIHZhciB2YWxpZERpc3RhbmNlID0gY2FsVmFsaWREaXN0YW5jZSh0aGlzLCBjdXJyZW50T2Zmc2V0ICsgX2Rpc3RhbmNlLCB0aGlzLm9wdHMuY2hhcnREYXRhLCB0aGlzLmNvbmZpZywgdGhpcy5vcHRzKTtcclxuICAgIHRoaXMuc2Nyb2xsT3B0aW9uLmRpc3RhbmNlID0gX2Rpc3RhbmNlID0gdmFsaWREaXN0YW5jZSAtIGN1cnJlbnRPZmZzZXQ7XHJcbiAgICB2YXIgb3B0cyA9IGFzc2lnbih7fSwgdGhpcy5vcHRzLCB7XHJcbiAgICAgIF9zY3JvbGxEaXN0YW5jZV86IGN1cnJlbnRPZmZzZXQgKyBfZGlzdGFuY2UsXHJcbiAgICAgIGFuaW1hdGlvbjogZmFsc2VcclxuICAgIH0pO1xyXG5cdFx0dGhpcy5vcHRzID0gb3B0cztcclxuICAgIGRyYXdDaGFydHMuY2FsbCh0aGlzLCBvcHRzLnR5cGUsIG9wdHMsIHRoaXMuY29uZmlnLCB0aGlzLmNvbnRleHQpO1xyXG4gICAgcmV0dXJuIGN1cnJlbnRPZmZzZXQgKyBfZGlzdGFuY2U7XHJcbiAgfVxyXG59O1xyXG5cclxudUNoYXJ0cy5wcm90b3R5cGUuc2Nyb2xsRW5kID0gZnVuY3Rpb24oZSkge1xyXG4gIGlmICh0aGlzLm9wdHMuZW5hYmxlU2Nyb2xsID09PSB0cnVlKSB7XHJcbiAgICB2YXIgX3Njcm9sbE9wdGlvbiA9IHRoaXMuc2Nyb2xsT3B0aW9uLFxyXG4gICAgICBjdXJyZW50T2Zmc2V0ID0gX3Njcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0LFxyXG4gICAgICBkaXN0YW5jZSA9IF9zY3JvbGxPcHRpb24uZGlzdGFuY2U7XHJcbiAgICB0aGlzLnNjcm9sbE9wdGlvbi5jdXJyZW50T2Zmc2V0ID0gY3VycmVudE9mZnNldCArIGRpc3RhbmNlO1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24uZGlzdGFuY2UgPSAwO1xyXG4gICAgdGhpcy5zY3JvbGxPcHRpb24ubW92ZUNvdW50ID0gMDtcclxuICB9XHJcbn07XHJcblxyXG5leHBvcnQgZGVmYXVsdCB1Q2hhcnRzOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///122\n");
  13105. /***/ }),
  13106. /* 123 */
  13107. /*!******************************************************************************************************!*\
  13108. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/js_sdk/u-charts/config-ucharts.js ***!
  13109. \******************************************************************************************************/
  13110. /*! no static exports found */
  13111. /***/ (function(module, exports, __webpack_require__) {
  13112. "use strict";
  13113. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n/*\r\n * uCharts®\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts®官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\n\n// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性\nvar color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];\n\n//事件转换函数,主要用作格式化x轴为时间轴,根据需求自行修改\nvar formatDateTime = function formatDateTime(timeStamp, returnType) {\n var date = new Date();\n date.setTime(timeStamp * 1000);\n var y = date.getFullYear();\n var m = date.getMonth() + 1;\n m = m < 10 ? '0' + m : m;\n var d = date.getDate();\n d = d < 10 ? '0' + d : d;\n var h = date.getHours();\n h = h < 10 ? '0' + h : h;\n var minute = date.getMinutes();\n var second = date.getSeconds();\n minute = minute < 10 ? '0' + minute : minute;\n second = second < 10 ? '0' + second : second;\n if (returnType == 'full') {\n return y + '-' + m + '-' + d + ' ' + h + ':' + minute + ':' + second;\n }\n if (returnType == 'y-m-d') {\n return y + '-' + m + '-' + d;\n }\n if (returnType == 'h:m') {\n return h + ':' + minute;\n }\n if (returnType == 'h:m:s') {\n return h + ':' + minute + ':' + second;\n }\n return [y, m, d, h, minute, second];\n};\nvar cfu = {\n //demotype为自定义图表类型,一般不需要自定义图表类型,只需要改根节点上对应的类型即可\n \"type\": [\"pie\", \"ring\", \"rose\", \"word\", \"funnel\", \"map\", \"arcbar\", \"line\", \"column\", \"mount\", \"bar\", \"area\", \"radar\", \"gauge\", \"candle\", \"mix\", \"tline\", \"tarea\", \"scatter\", \"bubble\", \"demotype\"],\n \"range\": [\"饼状图\", \"圆环图\", \"玫瑰图\", \"词云图\", \"漏斗图\", \"地图\", \"圆弧进度条\", \"折线图\", \"柱状图\", \"山峰图\", \"条状图\", \"区域图\", \"雷达图\", \"仪表盘\", \"K线图\", \"混合图\", \"时间轴折线\", \"时间轴区域\", \"散点图\", \"气泡图\", \"自定义类型\"],\n //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型,例如最后的\"demotype\"\n //自定义类型时需要注意\"tline\",\"tarea\",\"scatter\",\"bubble\"等时间轴(矢量x轴)类图表,没有categories,不需要加入categories\n \"categories\": [\"line\", \"column\", \"mount\", \"bar\", \"area\", \"radar\", \"gauge\", \"candle\", \"mix\", \"demotype\"],\n //instance为实例变量承载属性,不要删除\n \"instance\": {},\n //option为opts及eopts承载属性,不要删除\n \"option\": {},\n //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换\n \"formatter\": {\n \"yAxisDemo1\": function yAxisDemo1(val, index, opts) {\n return val + '元';\n },\n \"yAxisDemo2\": function yAxisDemo2(val, index, opts) {\n return val.toFixed(2);\n },\n \"xAxisDemo1\": function xAxisDemo1(val, index, opts) {\n return val + '年';\n },\n \"xAxisDemo2\": function xAxisDemo2(val, index, opts) {\n return formatDateTime(val, 'h:m');\n },\n \"seriesDemo1\": function seriesDemo1(val, index, series, opts) {\n return val + '元';\n },\n \"tooltipDemo1\": function tooltipDemo1(item, category, index, opts) {\n if (index == 0) {\n return '随便用' + item.data + '年';\n } else {\n return '其他我没改' + item.data + '天';\n }\n },\n \"pieDemo\": function pieDemo(val, index, series, opts) {\n if (index !== undefined) {\n return series[index].name + ':' + series[index].data + '元';\n }\n }\n },\n //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type=\"demotype\" 后,组件会调用这个花括号里的option,如果组件上还存在opts参数,会将demotype与opts中option合并后渲染图表。\n \"demotype\": {\n //我这里把曲线图当做了自定义图表类型,您可以根据需要随意指定类型或配置\n \"type\": \"line\",\n \"color\": color,\n \"padding\": [15, 10, 0, 15],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"gridType\": \"dash\",\n \"dashLength\": 2\n },\n \"legend\": {},\n \"extra\": {\n \"line\": {\n \"type\": \"curve\",\n \"width\": 2\n }\n }\n },\n //下面是自定义配置,请添加项目所需的通用配置\n \"pie\": {\n \"type\": \"pie\",\n \"color\": color,\n \"padding\": [5, 5, 5, 5],\n \"extra\": {\n \"pie\": {\n \"activeOpacity\": 0.5,\n \"activeRadius\": 10,\n \"offsetAngle\": 0,\n \"labelWidth\": 15,\n \"border\": true,\n \"borderWidth\": 3,\n \"borderColor\": \"#FFFFFF\"\n }\n }\n },\n \"ring\": {\n \"type\": \"ring\",\n \"color\": color,\n \"padding\": [5, 5, 5, 5],\n \"rotate\": false,\n \"dataLabel\": true,\n \"legend\": {\n \"show\": true,\n \"position\": \"right\",\n \"lineHeight\": 25\n },\n \"title\": {\n \"name\": \"收益率\",\n \"fontSize\": 15,\n \"color\": \"#666666\"\n },\n \"subtitle\": {\n \"name\": \"70%\",\n \"fontSize\": 25,\n \"color\": \"#7cb5ec\"\n },\n \"extra\": {\n \"ring\": {\n \"ringWidth\": 30,\n \"activeOpacity\": 0.5,\n \"activeRadius\": 10,\n \"offsetAngle\": 0,\n \"labelWidth\": 15,\n \"border\": true,\n \"borderWidth\": 3,\n \"borderColor\": \"#FFFFFF\"\n }\n }\n },\n \"rose\": {\n \"type\": \"rose\",\n \"color\": color,\n \"padding\": [5, 5, 5, 5],\n \"legend\": {\n \"show\": true,\n \"position\": \"left\",\n \"lineHeight\": 25\n },\n \"extra\": {\n \"rose\": {\n \"type\": \"area\",\n \"minRadius\": 50,\n \"activeOpacity\": 0.5,\n \"activeRadius\": 10,\n \"offsetAngle\": 0,\n \"labelWidth\": 15,\n \"border\": false,\n \"borderWidth\": 2,\n \"borderColor\": \"#FFFFFF\"\n }\n }\n },\n \"word\": {\n \"type\": \"word\",\n \"color\": color,\n \"extra\": {\n \"word\": {\n \"type\": \"normal\",\n \"autoColors\": false\n }\n }\n },\n \"funnel\": {\n \"type\": \"funnel\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"extra\": {\n \"funnel\": {\n \"activeOpacity\": 0.3,\n \"activeWidth\": 10,\n \"border\": true,\n \"borderWidth\": 2,\n \"borderColor\": \"#FFFFFF\",\n \"fillOpacity\": 1,\n \"labelAlign\": \"right\"\n }\n }\n },\n \"map\": {\n \"type\": \"map\",\n \"color\": color,\n \"padding\": [0, 0, 0, 0],\n \"dataLabel\": true,\n \"extra\": {\n \"map\": {\n \"border\": true,\n \"borderWidth\": 1,\n \"borderColor\": \"#666666\",\n \"fillOpacity\": 0.6,\n \"activeBorderColor\": \"#F04864\",\n \"activeFillColor\": \"#FACC14\",\n \"activeFillOpacity\": 1\n }\n }\n },\n \"arcbar\": {\n \"type\": \"arcbar\",\n \"color\": color,\n \"title\": {\n \"name\": \"百分比\",\n \"fontSize\": 25,\n \"color\": \"#00FF00\"\n },\n \"subtitle\": {\n \"name\": \"默认标题\",\n \"fontSize\": 15,\n \"color\": \"#666666\"\n },\n \"extra\": {\n \"arcbar\": {\n \"type\": \"default\",\n \"width\": 12,\n \"backgroundColor\": \"#E9E9E9\",\n \"startAngle\": 0.75,\n \"endAngle\": 0.25,\n \"gap\": 2\n }\n }\n },\n \"line\": {\n \"type\": \"line\",\n \"color\": color,\n \"padding\": [15, 10, 0, 15],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"gridType\": \"dash\",\n \"dashLength\": 2\n },\n \"legend\": {},\n \"extra\": {\n \"line\": {\n \"type\": \"straight\",\n \"width\": 2,\n \"activeType\": \"hollow\"\n }\n }\n },\n \"tline\": {\n \"type\": \"line\",\n \"color\": color,\n \"padding\": [15, 10, 0, 15],\n \"xAxis\": {\n \"disableGrid\": false,\n \"boundaryGap\": \"justify\"\n },\n \"yAxis\": {\n \"gridType\": \"dash\",\n \"dashLength\": 2,\n \"data\": [{\n \"min\": 0,\n \"max\": 80\n }]\n },\n \"legend\": {},\n \"extra\": {\n \"line\": {\n \"type\": \"curve\",\n \"width\": 2,\n \"activeType\": \"hollow\"\n }\n }\n },\n \"tarea\": {\n \"type\": \"area\",\n \"color\": color,\n \"padding\": [15, 10, 0, 15],\n \"xAxis\": {\n \"disableGrid\": true,\n \"boundaryGap\": \"justify\"\n },\n \"yAxis\": {\n \"gridType\": \"dash\",\n \"dashLength\": 2,\n \"data\": [{\n \"min\": 0,\n \"max\": 80\n }]\n },\n \"legend\": {},\n \"extra\": {\n \"area\": {\n \"type\": \"curve\",\n \"opacity\": 0.2,\n \"addLine\": true,\n \"width\": 2,\n \"gradient\": true,\n \"activeType\": \"hollow\"\n }\n }\n },\n \"column\": {\n \"type\": \"column\",\n \"color\": color,\n \"padding\": [15, 15, 0, 5],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"data\": [{\n \"min\": 0\n }]\n },\n \"legend\": {},\n \"extra\": {\n \"column\": {\n \"type\": \"group\",\n \"width\": 30,\n \"activeBgColor\": \"#000000\",\n \"activeBgOpacity\": 0.08\n }\n }\n },\n \"mount\": {\n \"type\": \"mount\",\n \"color\": color,\n \"padding\": [15, 15, 0, 5],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"data\": [{\n \"min\": 0\n }]\n },\n \"legend\": {},\n \"extra\": {\n \"mount\": {\n \"type\": \"mount\",\n \"widthRatio\": 1.5\n }\n }\n },\n \"bar\": {\n \"type\": \"bar\",\n \"color\": color,\n \"padding\": [15, 30, 0, 5],\n \"xAxis\": {\n \"boundaryGap\": \"justify\",\n \"disableGrid\": false,\n \"min\": 0,\n \"axisLine\": false\n },\n \"yAxis\": {},\n \"legend\": {},\n \"extra\": {\n \"bar\": {\n \"type\": \"group\",\n \"width\": 30,\n \"meterBorde\": 1,\n \"meterFillColor\": \"#FFFFFF\",\n \"activeBgColor\": \"#000000\",\n \"activeBgOpacity\": 0.08\n }\n }\n },\n \"area\": {\n \"type\": \"area\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"gridType\": \"dash\",\n \"dashLength\": 2\n },\n \"legend\": {},\n \"extra\": {\n \"area\": {\n \"type\": \"straight\",\n \"opacity\": 0.2,\n \"addLine\": true,\n \"width\": 2,\n \"gradient\": false,\n \"activeType\": \"hollow\"\n }\n }\n },\n \"radar\": {\n \"type\": \"radar\",\n \"color\": color,\n \"padding\": [5, 5, 5, 5],\n \"dataLabel\": false,\n \"legend\": {\n \"show\": true,\n \"position\": \"right\",\n \"lineHeight\": 25\n },\n \"extra\": {\n \"radar\": {\n \"gridType\": \"radar\",\n \"gridColor\": \"#CCCCCC\",\n \"gridCount\": 3,\n \"opacity\": 0.2,\n \"max\": 200,\n \"labelShow\": true\n }\n }\n },\n \"gauge\": {\n \"type\": \"gauge\",\n \"color\": color,\n \"title\": {\n \"name\": \"66Km/H\",\n \"fontSize\": 25,\n \"color\": \"#2fc25b\",\n \"offsetY\": 50\n },\n \"subtitle\": {\n \"name\": \"实时速度\",\n \"fontSize\": 15,\n \"color\": \"#1890ff\",\n \"offsetY\": -50\n },\n \"extra\": {\n \"gauge\": {\n \"type\": \"default\",\n \"width\": 30,\n \"labelColor\": \"#666666\",\n \"startAngle\": 0.75,\n \"endAngle\": 0.25,\n \"startNumber\": 0,\n \"endNumber\": 100,\n \"labelFormat\": \"\",\n \"splitLine\": {\n \"fixRadius\": 0,\n \"splitNumber\": 10,\n \"width\": 30,\n \"color\": \"#FFFFFF\",\n \"childNumber\": 5,\n \"childWidth\": 12\n },\n \"pointer\": {\n \"width\": 24,\n \"color\": \"auto\"\n }\n }\n }\n },\n \"candle\": {\n \"type\": \"candle\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"enableScroll\": true,\n \"enableMarkLine\": true,\n \"dataLabel\": false,\n \"xAxis\": {\n \"labelCount\": 4,\n \"itemCount\": 40,\n \"disableGrid\": true,\n \"gridColor\": \"#CCCCCC\",\n \"gridType\": \"solid\",\n \"dashLength\": 4,\n \"scrollShow\": true,\n \"scrollAlign\": \"left\",\n \"scrollColor\": \"#A6A6A6\",\n \"scrollBackgroundColor\": \"#EFEBEF\"\n },\n \"yAxis\": {},\n \"legend\": {},\n \"extra\": {\n \"candle\": {\n \"color\": {\n \"upLine\": \"#f04864\",\n \"upFill\": \"#f04864\",\n \"downLine\": \"#2fc25b\",\n \"downFill\": \"#2fc25b\"\n },\n \"average\": {\n \"show\": true,\n \"name\": [\"MA5\", \"MA10\", \"MA30\"],\n \"day\": [5, 10, 20],\n \"color\": [\"#1890ff\", \"#2fc25b\", \"#facc14\"]\n }\n },\n \"markLine\": {\n \"type\": \"dash\",\n \"dashLength\": 5,\n \"data\": [{\n \"value\": 2150,\n \"lineColor\": \"#f04864\",\n \"showLabel\": true\n }, {\n \"value\": 2350,\n \"lineColor\": \"#f04864\",\n \"showLabel\": true\n }]\n }\n }\n },\n \"mix\": {\n \"type\": \"mix\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"xAxis\": {\n \"disableGrid\": true\n },\n \"yAxis\": {\n \"disabled\": false,\n \"disableGrid\": false,\n \"splitNumber\": 5,\n \"gridType\": \"dash\",\n \"dashLength\": 4,\n \"gridColor\": \"#CCCCCC\",\n \"padding\": 10,\n \"showTitle\": true,\n \"data\": []\n },\n \"legend\": {},\n \"extra\": {\n \"mix\": {\n \"column\": {\n \"width\": 20\n }\n }\n }\n },\n \"scatter\": {\n \"type\": \"scatter\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"dataLabel\": false,\n \"xAxis\": {\n \"disableGrid\": false,\n \"gridType\": \"dash\",\n \"splitNumber\": 5,\n \"boundaryGap\": \"justify\",\n \"min\": 0\n },\n \"yAxis\": {\n \"disableGrid\": false,\n \"gridType\": \"dash\"\n },\n \"legend\": {},\n \"extra\": {\n \"scatter\": {}\n }\n },\n \"bubble\": {\n \"type\": \"bubble\",\n \"color\": color,\n \"padding\": [15, 15, 0, 15],\n \"xAxis\": {\n \"disableGrid\": false,\n \"gridType\": \"dash\",\n \"splitNumber\": 5,\n \"boundaryGap\": \"justify\",\n \"min\": 0,\n \"max\": 250\n },\n \"yAxis\": {\n \"disableGrid\": false,\n \"gridType\": \"dash\",\n \"data\": [{\n \"min\": 0,\n \"max\": 150\n }]\n },\n \"legend\": {},\n \"extra\": {\n \"bubble\": {\n \"border\": 2,\n \"opacity\": 0.5\n }\n }\n }\n};\nvar _default = cfu;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvY29uZmlnLXVjaGFydHMuanMiXSwibmFtZXMiOlsiY29sb3IiLCJmb3JtYXREYXRlVGltZSIsInRpbWVTdGFtcCIsInJldHVyblR5cGUiLCJkYXRlIiwiRGF0ZSIsInNldFRpbWUiLCJ5IiwiZ2V0RnVsbFllYXIiLCJtIiwiZ2V0TW9udGgiLCJkIiwiZ2V0RGF0ZSIsImgiLCJnZXRIb3VycyIsIm1pbnV0ZSIsImdldE1pbnV0ZXMiLCJzZWNvbmQiLCJnZXRTZWNvbmRzIiwiY2Z1IiwidmFsIiwiaW5kZXgiLCJvcHRzIiwidG9GaXhlZCIsInNlcmllcyIsIml0ZW0iLCJjYXRlZ29yeSIsImRhdGEiLCJ1bmRlZmluZWQiLCJuYW1lIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0EsSUFBTUEsS0FBSyxHQUFHLENBQUMsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLENBQUM7O0FBRWpIO0FBQ0EsSUFBTUMsY0FBYyxHQUFHLFNBQWpCQSxjQUFjLENBQUlDLFNBQVMsRUFBRUMsVUFBVSxFQUFHO0VBQzlDLElBQUlDLElBQUksR0FBRyxJQUFJQyxJQUFJLEVBQUU7RUFDckJELElBQUksQ0FBQ0UsT0FBTyxDQUFDSixTQUFTLEdBQUcsSUFBSSxDQUFDO0VBQzlCLElBQUlLLENBQUMsR0FBR0gsSUFBSSxDQUFDSSxXQUFXLEVBQUU7RUFDMUIsSUFBSUMsQ0FBQyxHQUFHTCxJQUFJLENBQUNNLFFBQVEsRUFBRSxHQUFHLENBQUM7RUFDM0JELENBQUMsR0FBR0EsQ0FBQyxHQUFHLEVBQUUsR0FBSSxHQUFH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LENBQUM7SUFDSCxDQUFDO0lBQ0QsUUFBUSxFQUFFLENBQ1YsQ0FBQztJQUNELE9BQU8sRUFBRTtNQUNSLFFBQVEsRUFBRTtRQUNQLFFBQVEsRUFBQyxDQUFDO1FBQ1YsU0FBUyxFQUFFO01BQ2Q7SUFDRDtFQUNIO0FBQ0QsQ0FBQztBQUFBLGVBRWNtQixHQUFHO0FBQUEiLCJmaWxlIjoiMTIzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogdUNoYXJ0c8KuXHJcbiAqIOmrmOaAp+iDvei3qOW5s+WPsOWbvuihqOW6k++8jOaUr+aMgUg144CBQVBQ44CB5bCP56iL5bqP77yI5b6u5L+hL+aUr+S7mOWunS/nmb7luqYv5aS05p2hL1FRLzM2MO+8ieOAgVZ1ZeOAgVRhcm/nrYnmlK/mjIFjYW52YXPnmoTmoYbmnrblubPlj7BcclxuICogQ29weXJpZ2h0IChjKSAyMDIxIFFJVU7Crueni+S6kSBodHRwczovL3d3dy51Y2hhcnRzLmNuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkICggaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIClcclxuICog5aSN5Yi25L2/55So6K+35L+d55WZ5pys5q615rOo6YeK77yM5oSf6LCi5pSv5oyB5byA5rqQ77yBXHJcbiAqIFxyXG4gKiB1Q2hhcnRzwq7lrpjmlrnnvZHnq5lcclxuICogaHR0cHM6Ly93d3cudUNoYXJ0cy5jblxyXG4gKiBcclxuICog5byA5rqQ5Zyw5Z2AOlxyXG4gKiBodHRwczovL2dpdGVlLmNvbS91Q2hhcnRzL3VDaGFydHNcclxuICogXHJcbiAqIHVuaS1hcHDmj5Lku7bluILlnLrlnLDlnYDvvJpcclxuICogaHR0cDovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yNzFcclxuICogXHJcbiAqL1xyXG5cclxuLy8g5Li76aKY6aKc6Imy6YWN572u77ya5aaC5q+P5Liq5Zu+6KGo57G75Z6L6ZyA6KaB5LiN5ZCM5Li76aKY77yM6K+35Zyo5a+55bqU5Zu+6KGo57G75Z6L5LiK5pu05pS5Y29sb3LlsZ7mgKdcclxuY29uc3QgY29sb3IgPSBbJyMxODkwRkYnLCAnIzkxQ0I3NCcsICcjRkFDODU4JywgJyNFRTY2NjYnLCAnIzczQzBERScsICcjM0NBMjcyJywgJyNGQzg0NTInLCAnIzlBNjBCNCcsICcjZWE3Y2NjJ107XHJcblxyXG4vL+S6i+S7tui9rOaNouWHveaVsO+8jOS4u+imgeeUqOS9nOagvOW8j+WMlnjovbTkuLrml7bpl7TovbTvvIzmoLnmja7pnIDmsYLoh6rooYzkv67mlLlcclxuY29uc3QgZm9ybWF0RGF0ZVRpbWUgPSAodGltZVN0YW1wLCByZXR1cm5UeXBlKT0+e1xyXG4gIHZhciBkYXRlID0gbmV3IERhdGUoKTtcclxuICBkYXRlLnNldFRpbWUodGltZVN0YW1wICogMTAwMCk7XHJcbiAgdmFyIHkgPSBkYXRlLmdldEZ1bGxZZWFyKCk7XHJcbiAgdmFyIG0gPSBkYXRlLmdldE1vbnRoKCkgKyAxO1xyXG4gIG0gPSBtIDwgMTAgPyAoJzAnICsgbSkgOiBtO1xyXG4gIHZhciBkID0gZGF0ZS5nZXREYXRlKCk7XHJcbiAgZCA9IGQgPCAxMCA/ICgnMCcgKyBkKSA6IGQ7XHJcbiAgdmFyIGggPSBkYXRlLmdldEhvdXJzKCk7XHJcbiAgaCA9IGggPCAxMCA/ICgnMCcgKyBoKSA6IGg7XHJcbiAgdmFyIG1pbnV0ZSA9IGRhdGUuZ2V0TWludXRlcygpO1xyXG4gIHZhciBzZWNvbmQgPSBkYXRlLmdldFNlY29uZHMoKTtcclxuICBtaW51dGUgPSBtaW51dGUgPCAxMCA/ICgnMCcgKyBtaW51dGUpIDogbWludXRlO1xyXG4gIHNlY29uZCA9IHNlY29uZCA8IDEwID8gKCcwJyArIHNlY29uZCkgOiBzZWNvbmQ7XHJcbiAgaWYocmV0dXJuVHlwZSA9PSAnZnVsbCcpe3JldHVybiB5ICsgJy0nICsgbSArICctJyArIGQgKyAnICcrIGggKyc6JyArIG1pbnV0ZSArICc6JyArIHNlY29uZDt9XHJcbiAgaWYocmV0dXJuVHlwZSA9PSAneS1tLWQnKXtyZXR1cm4geSArICctJyArIG0gKyAnLScgKyBkO31cclxuICBpZihyZXR1cm5UeXBlID09ICdoOm0nKXtyZXR1cm4gIGggKyc6JyArIG1pbnV0ZTt9XHJcbiAgaWYocmV0dXJuVHlwZSA9PSAnaDptOnMnKXtyZXR1cm4gIGggKyc6JyArIG1pbnV0ZSArJzonICsgc2Vjb25kO31cclxuICByZXR1cm4gW3ksIG0sIGQsIGgsIG1pbnV0ZSwgc2Vjb25kXTtcclxufVxyXG5cclxuY29uc3QgY2Z1ID0ge1xyXG4gIC8vZGVtb3R5cGXkuLroh6rlrprkuYnlm77ooajnsbvlnovvvIzkuIDoiKzkuI3pnIDopoHoh6rlrprkuYnlm77ooajnsbvlnovvvIzlj6rpnIDopoHmlLnmoLnoioLngrnkuIrlr7nlupTnmoTnsbvlnovljbPlj69cclxuXHRcInR5cGVcIjpbXCJwaWVcIixcInJpbmdcIixcInJvc2VcIixcIndvcmRcIixcImZ1bm5lbFwiLFwibWFwXCIsXCJhcmNiYXJcIixcImxpbmVcIixcImNvbHVtblwiLFwibW91bnRcIixcImJhclwiLFwiYXJlYVwiLFwicmFkYXJcIixcImdhdWdlXCIsXCJjYW5kbGVcIixcIm1peFwiLFwidGxpbmVcIixcInRhcmVhXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIixcImRlbW90eXBlXCJdLFxyXG5cdFwicmFuZ2VcIjpbXCLppbznirblm75cIixcIuWchueOr+WbvlwiLFwi546r55Gw5Zu+XCIsXCLor43kupHlm75cIixcIua8j+aWl+WbvlwiLFwi5Zyw5Zu+XCIsXCLlnIblvKfov5vluqbmnaFcIixcIuaKmOe6v+WbvlwiLFwi5p+x54q25Zu+XCIsXCLlsbHls7Dlm75cIixcIuadoeeKtuWbvlwiLFwi5Yy65Z+f5Zu+XCIsXCLpm7fovr7lm75cIixcIuS7quihqOebmFwiLFwiS+e6v+WbvlwiLFwi5re35ZCI5Zu+XCIsXCLml7bpl7TovbTmipjnur9cIixcIuaXtumXtOi9tOWMuuWfn1wiLFwi5pWj54K55Zu+XCIsXCLmsJTms6Hlm75cIixcIuiHquWumuS5ieexu+Wei1wiXSxcclxuICAvL+WinuWKoOiHquWumuS5ieWbvuihqOexu+Wei++8jOWmguaenOmcgOimgWNhdGVnb3JpZXPvvIzor7flnKjov5nph4zliqDlhaXmgqjnmoTlm77ooajnsbvlnovvvIzkvovlpoLmnIDlkI7nmoRcImRlbW90eXBlXCJcclxuICAvL+iHquWumuS5ieexu+Wei+aXtumcgOimgeazqOaEj1widGxpbmVcIixcInRhcmVhXCIsXCJzY2F0dGVyXCIsXCJidWJibGVcIuetieaXtumXtOi9tO+8iOefoumHj3jovbTvvInnsbvlm77ooajvvIzmsqHmnIljYXRlZ29yaWVz77yM5LiN6ZyA6KaB5Yqg5YWlY2F0ZWdvcmllc1xyXG5cdFwiY2F0ZWdvcmllc1wiOltcImxpbmVcIixcImNvbHVtblwiLFwibW91bnRcIixcImJhclwiLFwiYXJlYVwiLFwicmFkYXJcIixcImdhdWdlXCIsXCJjYW5kbGVcIixcIm1peFwiLFwiZGVtb3R5cGVcIl0sXHJcbiAgLy9pbnN0YW5jZeS4uuWunuS+i+WPmOmHj+aJv+i9veWxnuaAp++8jOS4jeimgeWIoOmZpFxyXG4gIFwiaW5zdGFuY2VcIjp7fSxcclxuICAvL29wdGlvbuS4um9wdHPlj4plb3B0c+aJv+i9veWxnuaAp++8jOS4jeimgeWIoOmZpFxyXG4gIFwib3B0aW9uXCI6e30sXHJcbiAgLy/kuIvpnaLmmK/oh6rlrprkuYlmb3JtYXTphY3nva7vvIzlm6DpmaRINeerr+WklueahOWFtuS7luerr+aXoOazlemAmui/h3Byb3Bz5Lyg6YCS5Ye95pWw77yM5Y+q6IO96YCa6L+H5q2k5bGe5oCn5a+55bqU5LiL5qCH55qE5pa55byP5p2l5pu/5o2iXHJcbiAgXCJmb3JtYXR0ZXJcIjp7XHJcbiAgICBcInlBeGlzRGVtbzFcIjpmdW5jdGlvbih2YWwsIGluZGV4LCBvcHRzKXtyZXR1cm4gdmFsKyflhYMnfSxcclxuICAgIFwieUF4aXNEZW1vMlwiOmZ1bmN0aW9uKHZhbCwgaW5kZXgsIG9wdHMpe3JldHVybiB2YWwudG9GaXhlZCgyKX0sXHJcbiAgICBcInhBeGlzRGVtbzFcIjpmdW5jdGlvbih2YWwsIGluZGV4LCBvcHRzKXtyZXR1cm4gdmFsKyflubQnO30sXHJcbiAgICBcInhBeGlzRGVtbzJcIjpmdW5jdGlvbih2YWwsIGluZGV4LCBvcHRzKXtyZXR1cm4gZm9ybWF0RGF0ZVRpbWUodmFsLCdoOm0nKX0sXHJcbiAgICBcInNlcmllc0RlbW8xXCI6ZnVuY3Rpb24odmFsLCBpbmRleCwgc2VyaWVzLCBvcHRzKXtyZXR1cm4gdmFsKyflhYMnfSxcclxuICAgIFwidG9vbHRpcERlbW8xXCI6ZnVuY3Rpb24oaXRlbSwgY2F0ZWdvcnksIGluZGV4LCBvcHRzKXtcclxuICAgICAgaWYoaW5kZXg9PTApe1xyXG4gICAgICBcdHJldHVybiAn6ZqP5L6/55SoJytpdGVtLmRhdGErJ+W5tCdcclxuICAgICAgfWVsc2V7XHJcbiAgICAgIFx0cmV0dXJuICflhbbku5bmiJHmsqHmlLknK2l0ZW0uZGF0YSsn5aSpJ1xyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgXCJwaWVEZW1vXCI6ZnVuY3Rpb24odmFsLCBpbmRleCwgc2VyaWVzLCBvcHRzKXtcclxuICAgICAgaWYoaW5kZXggIT09IHVuZGVmaW5lZCl7XHJcbiAgICAgICAgcmV0dXJuIHNlcmllc1tpbmRleF0ubmFtZSsn77yaJytzZXJpZXNbaW5kZXhdLmRhdGErJ+WFgydcclxuICAgICAgfVxyXG4gICAgfSxcclxuICB9LFxyXG4gIC8v6L+Z6YeM5ryU56S65LqG6Ieq5a6a5LmJ5oKo55qE5Zu+6KGo57G75Z6L55qEb3B0aW9u77yM5Y+v5Lul6ZqP5oSP5ZG95ZCN77yM5LmL5ZCO5Zyo57uE5Lu25LiKIHR5cGU9XCJkZW1vdHlwZVwiIOWQju+8jOe7hOS7tuS8muiwg+eUqOi/meS4quiKseaLrOWPt+mHjOeahG9wdGlvbu+8jOWmguaenOe7hOS7tuS4iui/mOWtmOWcqG9wdHPlj4LmlbDvvIzkvJrlsIZkZW1vdHlwZeS4jm9wdHPkuK1vcHRpb27lkIjlubblkI7muLLmn5Plm77ooajjgIJcclxuICBcImRlbW90eXBlXCI6e1xyXG4gICAgLy/miJHov5nph4zmiormm7Lnur/lm77lvZPlgZrkuoboh6rlrprkuYnlm77ooajnsbvlnovvvIzmgqjlj6/ku6XmoLnmja7pnIDopoHpmo/mhI/mjIflrprnsbvlnovmiJbphY3nva5cclxuICAgIFwidHlwZVwiOiBcImxpbmVcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcbiAgICBcInBhZGRpbmdcIjogWzE1LDEwLDAsMTVdLFxyXG4gICAgXCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuICAgIH0sXHJcbiAgICBcInlBeGlzXCI6IHtcclxuICAgICAgXCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuICAgICAgXCJkYXNoTGVuZ3RoXCI6IDIsXHJcbiAgICB9LFxyXG4gICAgXCJsZWdlbmRcIjoge1xyXG4gICAgfSxcclxuICAgIFwiZXh0cmFcIjoge1xyXG4gICAgXHRcImxpbmVcIjoge1xyXG4gICAgXHRcdFwidHlwZVwiOiBcImN1cnZlXCIsXHJcbiAgICBcdFx0XCJ3aWR0aFwiOiAyXHJcbiAgICBcdH0sXHJcbiAgICB9XHJcbiAgfSxcclxuICAvL+S4i+mdouaYr+iHquWumuS5iemFjee9ru+8jOivt+a3u+WKoOmhueebruaJgOmcgOeahOmAmueUqOmFjee9rlxyXG5cdFwicGllXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwicGllXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFs1LDUsNSw1XSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcInBpZVwiOiB7XHJcblx0XHRcdFx0XCJhY3RpdmVPcGFjaXR5XCI6IDAuNSxcclxuXHRcdFx0XHRcImFjdGl2ZVJhZGl1c1wiOiAxMCxcclxuXHRcdFx0XHRcIm9mZnNldEFuZ2xlXCI6IDAsXHJcblx0XHRcdFx0XCJsYWJlbFdpZHRoXCI6IDE1LFxyXG5cdFx0XHRcdFwiYm9yZGVyXCI6IHRydWUsXHJcblx0XHRcdFx0XCJib3JkZXJXaWR0aFwiOiAzLFxyXG5cdFx0XHRcdFwiYm9yZGVyQ29sb3JcIjogXCIjRkZGRkZGXCJcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG5cdFwicmluZ1wiOntcclxuXHRcdFwidHlwZVwiOiBcInJpbmdcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzUsNSw1LDVdLFxyXG5cdFx0XCJyb3RhdGVcIjogZmFsc2UsXHJcblx0XHRcImRhdGFMYWJlbFwiOiB0cnVlLFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XCJwb3NpdGlvblwiOiBcInJpZ2h0XCIsXHJcbiAgICAgIFwibGluZUhlaWdodFwiOiAyNSxcclxuXHRcdH0sXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwi5pS255uK546HXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMTUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjNjY2NjY2XCJcclxuXHRcdH0sXHJcblx0XHRcInN1YnRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwiNzAlXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMjUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjN2NiNWVjXCJcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJyaW5nXCI6IHtcclxuXHRcdFx0XHRcInJpbmdXaWR0aFwiOjMwLFxyXG5cdFx0XHRcdFwiYWN0aXZlT3BhY2l0eVwiOiAwLjUsXHJcblx0XHRcdFx0XCJhY3RpdmVSYWRpdXNcIjogMTAsXHJcblx0XHRcdFx0XCJvZmZzZXRBbmdsZVwiOiAwLFxyXG5cdFx0XHRcdFwibGFiZWxXaWR0aFwiOiAxNSxcclxuXHRcdFx0XHRcImJvcmRlclwiOiB0cnVlLFxyXG5cdFx0XHRcdFwiYm9yZGVyV2lkdGhcIjogMyxcclxuXHRcdFx0XHRcImJvcmRlckNvbG9yXCI6IFwiI0ZGRkZGRlwiXHJcblx0XHRcdH0sXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0XCJyb3NlXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwicm9zZVwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbNSw1LDUsNV0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHRcdFwic2hvd1wiOiB0cnVlLFxyXG5cdFx0XHRcInBvc2l0aW9uXCI6IFwibGVmdFwiLFxyXG4gICAgICBcImxpbmVIZWlnaHRcIjogMjUsXHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwicm9zZVwiOiB7XHJcblx0XHRcdFx0XCJ0eXBlXCI6IFwiYXJlYVwiLFxyXG5cdFx0XHRcdFwibWluUmFkaXVzXCI6IDUwLFxyXG5cdFx0XHRcdFwiYWN0aXZlT3BhY2l0eVwiOiAwLjUsXHJcblx0XHRcdFx0XCJhY3RpdmVSYWRpdXNcIjogMTAsXHJcblx0XHRcdFx0XCJvZmZzZXRBbmdsZVwiOiAwLFxyXG5cdFx0XHRcdFwibGFiZWxXaWR0aFwiOiAxNSxcclxuXHRcdFx0XHRcImJvcmRlclwiOiBmYWxzZSxcclxuXHRcdFx0XHRcImJvcmRlcldpZHRoXCI6IDIsXHJcblx0XHRcdFx0XCJib3JkZXJDb2xvclwiOiBcIiNGRkZGRkZcIlxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJ3b3JkXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwid29yZFwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcIndvcmRcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcIm5vcm1hbFwiLFxyXG5cdFx0XHRcdFwiYXV0b0NvbG9yc1wiOiBmYWxzZVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0fSxcclxuXHRcImZ1bm5lbFwiOntcclxuXHRcdFwidHlwZVwiOiBcImZ1bm5lbFwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMTUsMTUsMCwxNV0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJmdW5uZWxcIjoge1xyXG5cdFx0XHRcdFwiYWN0aXZlT3BhY2l0eVwiOiAwLjMsXHJcblx0XHRcdFx0XCJhY3RpdmVXaWR0aFwiOiAxMCxcclxuXHRcdFx0XHRcImJvcmRlclwiOiB0cnVlLFxyXG5cdFx0XHRcdFwiYm9yZGVyV2lkdGhcIjogMixcclxuXHRcdFx0XHRcImJvcmRlckNvbG9yXCI6IFwiI0ZGRkZGRlwiLFxyXG5cdFx0XHRcdFwiZmlsbE9wYWNpdHlcIjogMSxcclxuXHRcdFx0XHRcImxhYmVsQWxpZ25cIjogXCJyaWdodFwiXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcIm1hcFwiOntcclxuXHRcdFwidHlwZVwiOiBcIm1hcFwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMCwwLDAsMF0sXHJcbiAgICBcImRhdGFMYWJlbFwiOiB0cnVlLFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwibWFwXCI6IHtcclxuXHRcdFx0XHRcImJvcmRlclwiOiB0cnVlLFxyXG5cdFx0XHRcdFwiYm9yZGVyV2lkdGhcIjogMSxcclxuXHRcdFx0XHRcImJvcmRlckNvbG9yXCI6IFwiIzY2NjY2NlwiLFxyXG5cdFx0XHRcdFwiZmlsbE9wYWNpdHlcIjogMC42LFxyXG5cdFx0XHRcdFwiYWN0aXZlQm9yZGVyQ29sb3JcIjogXCIjRjA0ODY0XCIsXHJcblx0XHRcdFx0XCJhY3RpdmVGaWxsQ29sb3JcIjogXCIjRkFDQzE0XCIsXHJcblx0XHRcdFx0XCJhY3RpdmVGaWxsT3BhY2l0eVwiOiAxXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcImFyY2JhclwiOntcclxuXHRcdFwidHlwZVwiOiBcImFyY2JhclwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogXCLnmb7liIbmr5RcIixcclxuXHRcdFx0XCJmb250U2l6ZVwiOiAyNSxcclxuXHRcdFx0XCJjb2xvclwiOiBcIiMwMEZGMDBcIlxyXG5cdFx0fSxcclxuXHRcdFwic3VidGl0bGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogXCLpu5jorqTmoIfpophcIixcclxuXHRcdFx0XCJmb250U2l6ZVwiOiAxNSxcclxuXHRcdFx0XCJjb2xvclwiOiBcIiM2NjY2NjZcIlxyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcImFyY2JhclwiOiB7XHJcblx0XHRcdFx0XCJ0eXBlXCI6IFwiZGVmYXVsdFwiLFxyXG5cdFx0XHRcdFwid2lkdGhcIjogMTIsXHJcblx0XHRcdFx0XCJiYWNrZ3JvdW5kQ29sb3JcIjogXCIjRTlFOUU5XCIsXHJcblx0XHRcdFx0XCJzdGFydEFuZ2xlXCI6IDAuNzUsXHJcblx0XHRcdFx0XCJlbmRBbmdsZVwiOiAwLjI1LFxyXG5cdFx0XHRcdFwiZ2FwXCI6IDJcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJsaW5lXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwibGluZVwiLFxyXG4gICAgXCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwicGFkZGluZ1wiOiBbMTUsMTAsMCwxNV0sXHJcblx0XHRcInhBeGlzXCI6IHtcclxuICAgICAgXCJkaXNhYmxlR3JpZFwiOiB0cnVlLFxyXG5cdFx0fSxcclxuXHRcdFwieUF4aXNcIjoge1xyXG4gICAgICBcImdyaWRUeXBlXCI6IFwiZGFzaFwiLFxyXG4gICAgICBcImRhc2hMZW5ndGhcIjogMixcclxuXHRcdH0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwibGluZVwiOiB7XHJcblx0XHRcdFx0XCJ0eXBlXCI6IFwic3RyYWlnaHRcIixcclxuXHRcdFx0XHRcIndpZHRoXCI6IDIsXHJcbiAgICAgICAgXCJhY3RpdmVUeXBlXCI6IFwiaG9sbG93XCJcclxuXHRcdFx0fSxcclxuXHRcdH1cclxuXHR9LFxyXG4gIFwidGxpbmVcIjp7XHJcbiAgXHRcInR5cGVcIjogXCJsaW5lXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gIFx0XCJwYWRkaW5nXCI6IFsxNSwxMCwwLDE1XSxcclxuICBcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IGZhbHNlLFxyXG4gICAgICBcImJvdW5kYXJ5R2FwXCI6XCJqdXN0aWZ5XCIsXHJcbiAgXHR9LFxyXG4gIFx0XCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZ3JpZFR5cGVcIjogXCJkYXNoXCIsXHJcbiAgICAgIFwiZGFzaExlbmd0aFwiOiAyLFxyXG4gICAgICBcImRhdGFcIjpbXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgXCJtaW5cIjowLFxyXG4gICAgICAgICAgXCJtYXhcIjo4MFxyXG4gICAgICAgIH1cclxuICAgICAgXVxyXG4gIFx0fSxcclxuICBcdFwibGVnZW5kXCI6IHtcclxuICBcdH0sXHJcbiAgXHRcImV4dHJhXCI6IHtcclxuICBcdFx0XCJsaW5lXCI6IHtcclxuICBcdFx0XHRcInR5cGVcIjogXCJjdXJ2ZVwiLFxyXG4gIFx0XHRcdFwid2lkdGhcIjogMixcclxuICAgICAgICBcImFjdGl2ZVR5cGVcIjogXCJob2xsb3dcIlxyXG4gIFx0XHR9LFxyXG4gIFx0fVxyXG4gIH0sXHJcbiAgXCJ0YXJlYVwiOntcclxuICBcdFwidHlwZVwiOiBcImFyZWFcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcbiAgXHRcInBhZGRpbmdcIjogWzE1LDEwLDAsMTVdLFxyXG4gIFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gIFx0fSxcclxuICBcdFwieUF4aXNcIjoge1xyXG4gICAgICBcImdyaWRUeXBlXCI6IFwiZGFzaFwiLFxyXG4gICAgICBcImRhc2hMZW5ndGhcIjogMixcclxuICAgICAgXCJkYXRhXCI6W1xyXG4gICAgICAgIHtcclxuICAgICAgICAgIFwibWluXCI6MCxcclxuICAgICAgICAgIFwibWF4XCI6ODBcclxuICAgICAgICB9XHJcbiAgICAgIF1cclxuICBcdH0sXHJcbiAgXHRcImxlZ2VuZFwiOiB7XHJcbiAgXHR9LFxyXG4gIFx0XCJleHRyYVwiOiB7XHJcbiAgXHRcdFwiYXJlYVwiOiB7XHJcbiAgXHRcdFx0XCJ0eXBlXCI6IFwiY3VydmVcIixcclxuICBcdFx0XHRcIm9wYWNpdHlcIjogMC4yLFxyXG4gIFx0XHRcdFwiYWRkTGluZVwiOiB0cnVlLFxyXG4gIFx0XHRcdFwid2lkdGhcIjogMixcclxuICBcdFx0XHRcImdyYWRpZW50XCI6IHRydWUsXHJcbiAgICAgICAgXCJhY3RpdmVUeXBlXCI6IFwiaG9sbG93XCJcclxuICBcdFx0fSxcclxuICBcdH1cclxuICB9LFxyXG5cdFwiY29sdW1uXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwiY29sdW1uXCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFsxNSwxNSwwLDVdLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJkYXRhXCI6W3tcIm1pblwiOjB9XVxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJjb2x1bW5cIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcImdyb3VwXCIsXHJcblx0XHRcdFx0XCJ3aWR0aFwiOiAzMCxcclxuXHRcdFx0XHRcImFjdGl2ZUJnQ29sb3JcIjogXCIjMDAwMDAwXCIsXHJcblx0XHRcdFx0XCJhY3RpdmVCZ09wYWNpdHlcIjogMC4wOFxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcbiAgXCJtb3VudFwiOntcclxuICBcdFwidHlwZVwiOiBcIm1vdW50XCIsXHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gIFx0XCJwYWRkaW5nXCI6IFsxNSwxNSwwLDVdLFxyXG4gIFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuICBcdH0sXHJcbiAgXHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJkYXRhXCI6W3tcIm1pblwiOjB9XVxyXG4gIFx0fSxcclxuICBcdFwibGVnZW5kXCI6IHtcclxuICBcdH0sXHJcbiAgXHRcImV4dHJhXCI6IHtcclxuICBcdFx0XCJtb3VudFwiOiB7XHJcbiAgXHRcdFx0XCJ0eXBlXCI6IFwibW91bnRcIixcclxuICBcdFx0XHRcIndpZHRoUmF0aW9cIjogMS41LFxyXG4gIFx0XHR9LFxyXG4gIFx0fVxyXG4gIH0sXHJcbiAgXCJiYXJcIjp7XHJcbiAgXHRcInR5cGVcIjogXCJiYXJcIixcclxuICAgIFwiY29sb3JcIjogY29sb3IsXHJcbiAgXHRcInBhZGRpbmdcIjogWzE1LDMwLDAsNV0sXHJcbiAgXHRcInhBeGlzXCI6IHtcclxuICAgICAgXCJib3VuZGFyeUdhcFwiOlwianVzdGlmeVwiLFxyXG4gICAgICBcImRpc2FibGVHcmlkXCI6ZmFsc2UsXHJcbiAgICAgIFwibWluXCI6MCxcclxuICAgICAgXCJheGlzTGluZVwiOmZhbHNlXHJcbiAgXHR9LFxyXG4gIFx0XCJ5QXhpc1wiOiB7XHJcbiAgXHR9LFxyXG4gIFx0XCJsZWdlbmRcIjoge1xyXG4gIFx0fSxcclxuICBcdFwiZXh0cmFcIjoge1xyXG4gIFx0XHRcImJhclwiOiB7XHJcbiAgXHRcdFx0XCJ0eXBlXCI6IFwiZ3JvdXBcIixcclxuICBcdFx0XHRcIndpZHRoXCI6IDMwLFxyXG4gIFx0XHRcdFwibWV0ZXJCb3JkZVwiOiAxLFxyXG4gIFx0XHRcdFwibWV0ZXJGaWxsQ29sb3JcIjogXCIjRkZGRkZGXCIsXHJcbiAgXHRcdFx0XCJhY3RpdmVCZ0NvbG9yXCI6IFwiIzAwMDAwMFwiLFxyXG4gIFx0XHRcdFwiYWN0aXZlQmdPcGFjaXR5XCI6IDAuMDhcclxuICBcdFx0fSxcclxuICBcdH1cclxuICB9LFxyXG5cdFwiYXJlYVwiOntcclxuXHRcdFwidHlwZVwiOiBcImFyZWFcIixcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDE1LDAsMTVdLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogdHJ1ZSxcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuICAgICAgXCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuICAgICAgXCJkYXNoTGVuZ3RoXCI6IDIsXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcImFyZWFcIjoge1xyXG5cdFx0XHRcdFwidHlwZVwiOiBcInN0cmFpZ2h0XCIsXHJcblx0XHRcdFx0XCJvcGFjaXR5XCI6IDAuMixcclxuXHRcdFx0XHRcImFkZExpbmVcIjogdHJ1ZSxcclxuXHRcdFx0XHRcIndpZHRoXCI6IDIsXHJcblx0XHRcdFx0XCJncmFkaWVudFwiOiBmYWxzZSxcclxuICAgICAgICBcImFjdGl2ZVR5cGVcIjogXCJob2xsb3dcIlxyXG5cdFx0XHR9LFxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJyYWRhclwiOntcclxuXHRcdFwidHlwZVwiOiBcInJhZGFyXCIsXHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFs1LDUsNSw1XSxcclxuICAgIFwiZGF0YUxhYmVsXCI6IGZhbHNlLFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XCJwb3NpdGlvblwiOiBcInJpZ2h0XCIsXHJcbiAgICAgIFwibGluZUhlaWdodFwiOiAyNSxcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJyYWRhclwiOiB7XHJcblx0XHRcdFx0XCJncmlkVHlwZVwiOiBcInJhZGFyXCIsXHJcblx0XHRcdFx0XCJncmlkQ29sb3JcIjogXCIjQ0NDQ0NDXCIsXHJcblx0XHRcdFx0XCJncmlkQ291bnRcIjogMyxcclxuXHRcdFx0XHRcIm9wYWNpdHlcIjogMC4yLFxyXG5cdFx0XHRcdFwibWF4XCI6IDIwMCxcclxuXHRcdFx0XHRcImxhYmVsU2hvd1wiOiB0cnVlXHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcImdhdWdlXCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwiZ2F1Z2VcIixcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRpdGxlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6IFwiNjZLbS9IXCIsXHJcblx0XHRcdFwiZm9udFNpemVcIjogMjUsXHJcblx0XHRcdFwiY29sb3JcIjogXCIjMmZjMjViXCIsXHJcblx0XHRcdFwib2Zmc2V0WVwiOiA1MFxyXG5cdFx0fSxcclxuXHRcdFwic3VidGl0bGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogXCLlrp7ml7bpgJ/luqZcIixcclxuXHRcdFx0XCJmb250U2l6ZVwiOiAxNSxcclxuXHRcdFx0XCJjb2xvclwiOiBcIiMxODkwZmZcIixcclxuXHRcdFx0XCJvZmZzZXRZXCI6IC01MFxyXG5cdFx0fSxcclxuXHRcdFwiZXh0cmFcIjoge1xyXG5cdFx0XHRcImdhdWdlXCI6IHtcclxuXHRcdFx0XHRcInR5cGVcIjogXCJkZWZhdWx0XCIsXHJcblx0XHRcdFx0XCJ3aWR0aFwiOiAzMCxcclxuXHRcdFx0XHRcImxhYmVsQ29sb3JcIjogXCIjNjY2NjY2XCIsXHJcblx0XHRcdFx0XCJzdGFydEFuZ2xlXCI6IDAuNzUsXHJcblx0XHRcdFx0XCJlbmRBbmdsZVwiOiAwLjI1LFxyXG5cdFx0XHRcdFwic3RhcnROdW1iZXJcIjogMCxcclxuXHRcdFx0XHRcImVuZE51bWJlclwiOiAxMDAsXHJcblx0XHRcdFx0XCJsYWJlbEZvcm1hdFwiOiBcIlwiLFxyXG5cdFx0XHRcdFwic3BsaXRMaW5lXCI6IHtcclxuXHRcdFx0XHRcdFwiZml4UmFkaXVzXCI6IDAsXHJcblx0XHRcdFx0XHRcInNwbGl0TnVtYmVyXCI6IDEwLFxyXG5cdFx0XHRcdFx0XCJ3aWR0aFwiOiAzMCxcclxuXHRcdFx0XHRcdFwiY29sb3JcIjogXCIjRkZGRkZGXCIsXHJcblx0XHRcdFx0XHRcImNoaWxkTnVtYmVyXCI6IDUsXHJcblx0XHRcdFx0XHRcImNoaWxkV2lkdGhcIjogMTJcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdFwicG9pbnRlclwiOiB7XHJcblx0XHRcdFx0XHRcIndpZHRoXCI6IDI0LFxyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiBcImF1dG9cIlxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0XCJjYW5kbGVcIjp7XHJcblx0XHRcInR5cGVcIjogXCJjYW5kbGVcIixcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjogWzE1LDE1LDAsMTVdLFxyXG5cdFx0XCJlbmFibGVTY3JvbGxcIjogdHJ1ZSxcclxuXHRcdFwiZW5hYmxlTWFya0xpbmVcIjogdHJ1ZSxcclxuXHRcdFwiZGF0YUxhYmVsXCI6IGZhbHNlLFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcblx0XHRcdFwibGFiZWxDb3VudFwiOiA0LFxyXG5cdFx0XHRcIml0ZW1Db3VudFwiOiA0MCxcclxuXHRcdFx0XCJkaXNhYmxlR3JpZFwiOiB0cnVlLFxyXG5cdFx0XHRcImdyaWRDb2xvclwiOiBcIiNDQ0NDQ0NcIixcclxuXHRcdFx0XCJncmlkVHlwZVwiOiBcInNvbGlkXCIsXHJcblx0XHRcdFwiZGFzaExlbmd0aFwiOiA0LFxyXG5cdFx0XHRcInNjcm9sbFNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XCJzY3JvbGxBbGlnblwiOiBcImxlZnRcIixcclxuXHRcdFx0XCJzY3JvbGxDb2xvclwiOiBcIiNBNkE2QTZcIixcclxuXHRcdFx0XCJzY3JvbGxCYWNrZ3JvdW5kQ29sb3JcIjogXCIjRUZFQkVGXCJcclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHR9LFxyXG5cdFx0XCJleHRyYVwiOiB7XHJcblx0XHRcdFwiY2FuZGxlXCI6IHtcclxuXHRcdFx0XHRcImNvbG9yXCI6IHtcclxuXHRcdFx0XHRcdFwidXBMaW5lXCI6IFwiI2YwNDg2NFwiLFxyXG5cdFx0XHRcdFx0XCJ1cEZpbGxcIjogXCIjZjA0ODY0XCIsXHJcblx0XHRcdFx0XHRcImRvd25MaW5lXCI6IFwiIzJmYzI1YlwiLFxyXG5cdFx0XHRcdFx0XCJkb3duRmlsbFwiOiBcIiMyZmMyNWJcIlxyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0XCJhdmVyYWdlXCI6IHtcclxuXHRcdFx0XHRcdFwic2hvd1wiOiB0cnVlLFxyXG5cdFx0XHRcdFx0XCJuYW1lXCI6IFtcIk1BNVwiLFwiTUExMFwiLFwiTUEzMFwiXSxcclxuXHRcdFx0XHRcdFwiZGF5XCI6IFs1LDEwLDIwXSxcclxuXHRcdFx0XHRcdFwiY29sb3JcIjogW1wiIzE4OTBmZlwiLFwiIzJmYzI1YlwiLFwiI2ZhY2MxNFwiXVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XCJtYXJrTGluZVwiOiB7XHJcblx0XHRcdFx0XCJ0eXBlXCI6IFwiZGFzaFwiLFxyXG5cdFx0XHRcdFwiZGFzaExlbmd0aFwiOiA1LFxyXG5cdFx0XHRcdFwiZGF0YVwiOiBbXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFwidmFsdWVcIjogMjE1MCxcclxuXHRcdFx0XHRcdFx0XCJsaW5lQ29sb3JcIjogXCIjZjA0ODY0XCIsXHJcblx0XHRcdFx0XHRcdFwic2hvd0xhYmVsXCI6IHRydWVcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR7XHJcblx0XHRcdFx0XHRcdFwidmFsdWVcIjogMjM1MCxcclxuXHRcdFx0XHRcdFx0XCJsaW5lQ29sb3JcIjogXCIjZjA0ODY0XCIsXHJcblx0XHRcdFx0XHRcdFwic2hvd0xhYmVsXCI6IHRydWVcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRdXHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9LFxyXG5cdFwibWl4XCI6e1xyXG5cdFx0XCJ0eXBlXCI6IFwibWl4XCIsXHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6IFsxNSwxNSwwLDE1XSxcclxuXHRcdFwieEF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IHRydWUsXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcblx0XHRcdFwiZGlzYWJsZWRcIjogZmFsc2UsXHJcblx0XHRcdFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcblx0XHRcdFwic3BsaXROdW1iZXJcIjogNSxcclxuXHRcdFx0XCJncmlkVHlwZVwiOiBcImRhc2hcIixcclxuXHRcdFx0XCJkYXNoTGVuZ3RoXCI6IDQsXHJcblx0XHRcdFwiZ3JpZENvbG9yXCI6IFwiI0NDQ0NDQ1wiLFxyXG5cdFx0XHRcInBhZGRpbmdcIjogMTAsXHJcblx0XHRcdFwic2hvd1RpdGxlXCI6IHRydWUsXHJcblx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdH0sXHJcblx0XHRcImV4dHJhXCI6IHtcclxuXHRcdFx0XCJtaXhcIjoge1xyXG5cdFx0XHRcdFwiY29sdW1uXCI6IHtcclxuXHRcdFx0XHRcdFwid2lkdGhcIjogMjBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHR9XHJcblx0fSxcclxuXHRcInNjYXR0ZXJcIjp7XHJcblx0XHRcInR5cGVcIjogXCJzY2F0dGVyXCIsXHJcblx0XHRcImNvbG9yXCI6Y29sb3IsXHJcblx0XHRcInBhZGRpbmdcIjpbMTUsMTUsMCwxNV0sXHJcbiAgICBcImRhdGFMYWJlbFwiOmZhbHNlLFxyXG4gICAgXCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcbiAgICAgIFwiZ3JpZFR5cGVcIjpcImRhc2hcIixcclxuICAgICAgXCJzcGxpdE51bWJlclwiOjUsXHJcbiAgICAgIFwiYm91bmRhcnlHYXBcIjpcImp1c3RpZnlcIixcclxuICAgICAgXCJtaW5cIjowXHJcbiAgICB9LFxyXG4gICAgXCJ5QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcbiAgICAgIFwiZ3JpZFR5cGVcIjpcImRhc2hcIixcclxuICAgIH0sXHJcbiAgICBcImxlZ2VuZFwiOiB7XHJcbiAgICB9LFxyXG4gICAgXCJleHRyYVwiOiB7XHJcbiAgICBcdFwic2NhdHRlclwiOiB7XHJcbiAgICBcdH0sXHJcbiAgICB9XHJcblx0fSxcclxuXHRcImJ1YmJsZVwiOntcclxuXHRcdFwidHlwZVwiOiBcImJ1YmJsZVwiLFxyXG5cdFx0XCJjb2xvclwiOmNvbG9yLFxyXG5cdFx0XCJwYWRkaW5nXCI6WzE1LDE1LDAsMTVdLFxyXG4gICAgXCJ4QXhpc1wiOiB7XHJcbiAgICAgIFwiZGlzYWJsZUdyaWRcIjogZmFsc2UsXHJcbiAgICAgIFwiZ3JpZFR5cGVcIjpcImRhc2hcIixcclxuICAgICAgXCJzcGxpdE51bWJlclwiOjUsXHJcbiAgICAgIFwiYm91bmRhcnlHYXBcIjpcImp1c3RpZnlcIixcclxuICAgICAgXCJtaW5cIjowLFxyXG4gICAgICBcIm1heFwiOjI1MFxyXG4gICAgfSxcclxuICAgIFwieUF4aXNcIjoge1xyXG4gICAgICBcImRpc2FibGVHcmlkXCI6IGZhbHNlLFxyXG4gICAgICBcImdyaWRUeXBlXCI6XCJkYXNoXCIsXHJcbiAgICAgIFwiZGF0YVwiOlt7XHJcbiAgICAgICAgXCJtaW5cIjowLFxyXG4gICAgICAgIFwibWF4XCI6MTUwXHJcbiAgICAgIH1dXHJcbiAgICB9LFxyXG4gICAgXCJsZWdlbmRcIjoge1xyXG4gICAgfSxcclxuICAgIFwiZXh0cmFcIjoge1xyXG4gICAgXHRcImJ1YmJsZVwiOiB7XHJcbiAgICAgICAgXCJib3JkZXJcIjoyLFxyXG4gICAgICAgIFwib3BhY2l0eVwiOiAwLjUsXHJcbiAgICBcdH0sXHJcbiAgICB9XHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjZnU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///123\n");
  13114. /***/ }),
  13115. /* 124 */
  13116. /*!******************************************************************************************************!*\
  13117. !*** D:/Intelligent/jn_uniapp/jn_app/uni_modules/qiun-data-charts/js_sdk/u-charts/config-echarts.js ***!
  13118. \******************************************************************************************************/
  13119. /*! no static exports found */
  13120. /***/ (function(module, exports, __webpack_require__) {
  13121. "use strict";
  13122. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n/*\r\n * uCharts®\r\n * 高性能跨平台图表库,支持H5、APP、小程序(微信/支付宝/百度/头条/QQ/360)、Vue、Taro等支持canvas的框架平台\r\n * Copyright (c) 2021 QIUN®秋云 https://www.ucharts.cn All rights reserved.\r\n * Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )\r\n * 复制使用请保留本段注释,感谢支持开源!\r\n * \r\n * uCharts®官方网站\r\n * https://www.uCharts.cn\r\n * \r\n * 开源地址:\r\n * https://gitee.com/uCharts/uCharts\r\n * \r\n * uni-app插件市场地址:\r\n * http://ext.dcloud.net.cn/plugin?id=271\r\n * \r\n */\n\n// 通用配置项\n\n// 主题颜色配置:如每个图表类型需要不同主题,请在对应图表类型上更改color属性\nvar color = ['#1890FF', '#91CB74', '#FAC858', '#EE6666', '#73C0DE', '#3CA272', '#FC8452', '#9A60B4', '#ea7ccc'];\nvar cfe = {\n //demotype为自定义图表类型\n \"type\": [\"pie\", \"ring\", \"rose\", \"funnel\", \"line\", \"column\", \"area\", \"radar\", \"gauge\", \"candle\", \"demotype\"],\n //增加自定义图表类型,如果需要categories,请在这里加入您的图表类型例如最后的\"demotype\"\n \"categories\": [\"line\", \"column\", \"area\", \"radar\", \"gauge\", \"candle\", \"demotype\"],\n //instance为实例变量承载属性,option为eopts承载属性,不要删除\n \"instance\": {},\n \"option\": {},\n //下面是自定义format配置,因除H5端外的其他端无法通过props传递函数,只能通过此属性对应下标的方式来替换\n \"formatter\": {\n \"tooltipDemo1\": function tooltipDemo1(res) {\n var result = '';\n for (var i in res) {\n if (i == 0) {\n result += res[i].axisValueLabel + '年销售额';\n }\n var value = '--';\n if (res[i].data !== null) {\n value = res[i].data;\n }\n result += '<br/>' + res[i].marker + res[i].seriesName + ':' + value + ' 万元';\n }\n return result;\n },\n legendFormat: function legendFormat(name) {\n return \"自定义图例+\" + name;\n },\n yAxisFormatDemo: function yAxisFormatDemo(value, index) {\n return value + '元';\n },\n seriesFormatDemo: function seriesFormatDemo(res) {\n return res.name + '年' + res.value + '元';\n }\n },\n //这里演示了自定义您的图表类型的option,可以随意命名,之后在组件上 type=\"demotype\" 后,组件会调用这个花括号里的option,如果组件上还存在eopts参数,会将demotype与eopts中option合并后渲染图表。\n \"demotype\": {\n \"color\": color\n //在这里填写echarts的option即可\n },\n\n //下面是自定义配置,请添加项目所需的通用配置\n \"column\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'axis'\n },\n \"grid\": {\n \"top\": 30,\n \"bottom\": 50,\n \"right\": 15,\n \"left\": 40\n },\n \"legend\": {\n \"bottom\": 'left'\n },\n \"toolbox\": {\n \"show\": false\n },\n \"xAxis\": {\n \"type\": 'category',\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n },\n \"boundaryGap\": true,\n \"data\": []\n },\n \"yAxis\": {\n \"type\": 'value',\n \"axisTick\": {\n \"show\": false\n },\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n }\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'bar',\n \"data\": [],\n \"barwidth\": 20,\n \"label\": {\n \"show\": true,\n \"color\": \"#666666\",\n \"position\": 'top'\n }\n }\n },\n \"line\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'axis'\n },\n \"grid\": {\n \"top\": 30,\n \"bottom\": 50,\n \"right\": 15,\n \"left\": 40\n },\n \"legend\": {\n \"bottom\": 'left'\n },\n \"toolbox\": {\n \"show\": false\n },\n \"xAxis\": {\n \"type\": 'category',\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n },\n \"boundaryGap\": true,\n \"data\": []\n },\n \"yAxis\": {\n \"type\": 'value',\n \"axisTick\": {\n \"show\": false\n },\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n }\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'line',\n \"data\": [],\n \"barwidth\": 20,\n \"label\": {\n \"show\": true,\n \"color\": \"#666666\",\n \"position\": 'top'\n }\n }\n },\n \"area\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'axis'\n },\n \"grid\": {\n \"top\": 30,\n \"bottom\": 50,\n \"right\": 15,\n \"left\": 40\n },\n \"legend\": {\n \"bottom\": 'left'\n },\n \"toolbox\": {\n \"show\": false\n },\n \"xAxis\": {\n \"type\": 'category',\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n },\n \"boundaryGap\": true,\n \"data\": []\n },\n \"yAxis\": {\n \"type\": 'value',\n \"axisTick\": {\n \"show\": false\n },\n \"axisLabel\": {\n \"color\": '#666666'\n },\n \"axisLine\": {\n \"lineStyle\": {\n \"color\": '#CCCCCC'\n }\n }\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'line',\n \"data\": [],\n \"areaStyle\": {},\n \"label\": {\n \"show\": true,\n \"color\": \"#666666\",\n \"position\": 'top'\n }\n }\n },\n \"pie\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'item'\n },\n \"grid\": {\n \"top\": 40,\n \"bottom\": 30,\n \"right\": 15,\n \"left\": 15\n },\n \"legend\": {\n \"bottom\": 'left'\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'pie',\n \"data\": [],\n \"radius\": '50%',\n \"label\": {\n \"show\": true,\n \"color\": \"#666666\",\n \"position\": 'top'\n }\n }\n },\n \"ring\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'item'\n },\n \"grid\": {\n \"top\": 40,\n \"bottom\": 30,\n \"right\": 15,\n \"left\": 15\n },\n \"legend\": {\n \"bottom\": 'left'\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'pie',\n \"data\": [],\n \"radius\": ['40%', '70%'],\n \"avoidLabelOverlap\": false,\n \"label\": {\n \"show\": true,\n \"color\": \"#666666\",\n \"position\": 'top'\n },\n \"labelLine\": {\n \"show\": true\n }\n }\n },\n \"rose\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'item'\n },\n \"legend\": {\n \"top\": 'bottom'\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'pie',\n \"data\": [],\n \"radius\": \"55%\",\n \"center\": ['50%', '50%'],\n \"roseType\": 'area'\n }\n },\n \"funnel\": {\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"tooltip\": {\n \"trigger\": 'item',\n \"formatter\": \"{b} : {c}%\"\n },\n \"legend\": {\n \"top\": 'bottom'\n },\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'funnel',\n \"left\": '10%',\n \"top\": 60,\n \"bottom\": 60,\n \"width\": '80%',\n \"min\": 0,\n \"max\": 100,\n \"minSize\": '0%',\n \"maxSize\": '100%',\n \"sort\": 'descending',\n \"gap\": 2,\n \"label\": {\n \"show\": true,\n \"position\": 'inside'\n },\n \"labelLine\": {\n \"length\": 10,\n \"lineStyle\": {\n \"width\": 1,\n \"type\": 'solid'\n }\n },\n \"itemStyle\": {\n \"bordercolor\": '#fff',\n \"borderwidth\": 1\n },\n \"emphasis\": {\n \"label\": {\n \"fontSize\": 20\n }\n },\n \"data\": []\n }\n },\n \"gauge\": {\n \"color\": color,\n \"tooltip\": {\n \"formatter\": '{a} <br/>{b} : {c}%'\n },\n \"seriesTemplate\": {\n \"name\": '业务指标',\n \"type\": 'gauge',\n \"detail\": {\n \"formatter\": '{value}%'\n },\n \"data\": [{\n \"value\": 50,\n \"name\": '完成率'\n }]\n }\n },\n \"candle\": {\n \"xAxis\": {\n \"data\": []\n },\n \"yAxis\": {},\n \"color\": color,\n \"title\": {\n \"text\": ''\n },\n \"dataZoom\": [{\n \"type\": 'inside',\n \"xAxisIndex\": [0, 1],\n \"start\": 10,\n \"end\": 100\n }, {\n \"show\": true,\n \"xAxisIndex\": [0, 1],\n \"type\": 'slider',\n \"bottom\": 10,\n \"start\": 10,\n \"end\": 100\n }],\n \"seriesTemplate\": {\n \"name\": '',\n \"type\": 'k',\n \"data\": []\n }\n }\n};\nvar _default = cfe;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdW5pX21vZHVsZXMvcWl1bi1kYXRhLWNoYXJ0cy9qc19zZGsvdS1jaGFydHMvY29uZmlnLWVjaGFydHMuanMiXSwibmFtZXMiOlsiY29sb3IiLCJjZmUiLCJyZXMiLCJyZXN1bHQiLCJpIiwiYXhpc1ZhbHVlTGFiZWwiLCJ2YWx1ZSIsImRhdGEiLCJtYXJrZXIiLCJzZXJpZXNOYW1lIiwibGVnZW5kRm9ybWF0IiwibmFtZSIsInlBeGlzRm9ybWF0RGVtbyIsImluZGV4Iiwic2VyaWVzRm9ybWF0RGVtbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTs7QUFFQTtBQUNBLElBQU1BLEtBQUssR0FBRyxDQUFDLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxTQUFTLEVBQUUsU0FBUyxDQUFDO0FBRWpILElBQU1DLEdBQUcsR0FBRztFQUNWO0VBQ0QsTUFBTSxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUMsUUFBUSxFQUFDLFVBQVUsQ0FBQztFQUN4RztFQUNELFlBQVksRUFBRSxDQUFDLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFDLFVBQVUsQ0FBQztFQUM5RTtFQUNELFVBQVUsRUFBRSxDQUFDLENBQUM7RUFDZCxRQUFRLEVBQUUsQ0FBQyxDQUFDO0VBQ1g7RUFDQSxXQUFXLEVBQUM7SUFDVixjQUFjLEVBQUMsc0JBQVNDLEdBQUcsRUFBQztNQUMxQixJQUFJQyxNQUFNLEdBQUcsRUFBRTtNQUNmLEtBQUssSUFBSUMs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LFdBQVcsRUFBRTtJQUNqQixDQUFDO0lBQ0gsZ0JBQWdCLEVBQUU7TUFDakIsTUFBTSxFQUFFLE1BQU07TUFDWCxNQUFNLEVBQUUsT0FBTztNQUNmLFFBQVEsRUFBRTtRQUFDLFdBQVcsRUFBRTtNQUFVLENBQUM7TUFDbkMsTUFBTSxFQUFFLENBQUM7UUFBQyxPQUFPLEVBQUUsRUFBRTtRQUFFLE1BQU0sRUFBRTtNQUFLLENBQUM7SUFDekM7RUFDRCxDQUFDO0VBQ0QsUUFBUSxFQUFFO0lBQ1QsT0FBTyxFQUFFO01BQ1IsTUFBTSxFQUFFO0lBQ1QsQ0FBQztJQUNELE9BQU8sRUFBRSxDQUFDLENBQUM7SUFDWCxPQUFPLEVBQUVBLEtBQUs7SUFDZCxPQUFPLEVBQUU7TUFDUixNQUFNLEVBQUU7SUFDVCxDQUFDO0lBQ0QsVUFBVSxFQUFFLENBQUM7TUFDWCxNQUFNLEVBQUUsUUFBUTtNQUNoQixZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQ3BCLE9BQU8sRUFBRSxFQUFFO01BQ1gsS0FBSyxFQUFFO0lBQ1IsQ0FBQyxFQUNEO01BQ0MsTUFBTSxFQUFFLElBQUk7TUFDWixZQUFZLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO01BQ3BCLE1BQU0sRUFBRSxRQUFRO01BQ2hCLFFBQVEsRUFBRSxFQUFFO01BQ1osT0FBTyxFQUFFLEVBQUU7TUFDWCxLQUFLLEVBQUU7SUFDUixDQUFDLENBQ0Q7SUFDRCxnQkFBZ0IsRUFBRTtNQUNqQixNQUFNLEVBQUUsRUFBRTtNQUNWLE1BQU0sRUFBRSxHQUFHO01BQ1gsTUFBTSxFQUFFO0lBQ1Q7RUFDRDtBQUNELENBQUM7QUFBQSxlQUVjQyxHQUFHO0FBQUEiLCJmaWxlIjoiMTI0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogdUNoYXJ0c8KuXHJcbiAqIOmrmOaAp+iDvei3qOW5s+WPsOWbvuihqOW6k++8jOaUr+aMgUg144CBQVBQ44CB5bCP56iL5bqP77yI5b6u5L+hL+aUr+S7mOWunS/nmb7luqYv5aS05p2hL1FRLzM2MO+8ieOAgVZ1ZeOAgVRhcm/nrYnmlK/mjIFjYW52YXPnmoTmoYbmnrblubPlj7BcclxuICogQ29weXJpZ2h0IChjKSAyMDIxIFFJVU7Crueni+S6kSBodHRwczovL3d3dy51Y2hhcnRzLmNuIEFsbCByaWdodHMgcmVzZXJ2ZWQuXHJcbiAqIExpY2Vuc2VkICggaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wIClcclxuICog5aSN5Yi25L2/55So6K+35L+d55WZ5pys5q615rOo6YeK77yM5oSf6LCi5pSv5oyB5byA5rqQ77yBXHJcbiAqIFxyXG4gKiB1Q2hhcnRzwq7lrpjmlrnnvZHnq5lcclxuICogaHR0cHM6Ly93d3cudUNoYXJ0cy5jblxyXG4gKiBcclxuICog5byA5rqQ5Zyw5Z2AOlxyXG4gKiBodHRwczovL2dpdGVlLmNvbS91Q2hhcnRzL3VDaGFydHNcclxuICogXHJcbiAqIHVuaS1hcHDmj5Lku7bluILlnLrlnLDlnYDvvJpcclxuICogaHR0cDovL2V4dC5kY2xvdWQubmV0LmNuL3BsdWdpbj9pZD0yNzFcclxuICogXHJcbiAqL1xyXG5cclxuLy8g6YCa55So6YWN572u6aG5XHJcblxyXG4vLyDkuLvpopjpopzoibLphY3nva7vvJrlpoLmr4/kuKrlm77ooajnsbvlnovpnIDopoHkuI3lkIzkuLvpopjvvIzor7flnKjlr7nlupTlm77ooajnsbvlnovkuIrmm7TmlLljb2xvcuWxnuaAp1xyXG5jb25zdCBjb2xvciA9IFsnIzE4OTBGRicsICcjOTFDQjc0JywgJyNGQUM4NTgnLCAnI0VFNjY2NicsICcjNzNDMERFJywgJyMzQ0EyNzInLCAnI0ZDODQ1MicsICcjOUE2MEI0JywgJyNlYTdjY2MnXTtcclxuXHJcbmNvbnN0IGNmZSA9IHtcclxuICAvL2RlbW90eXBl5Li66Ieq5a6a5LmJ5Zu+6KGo57G75Z6LXHJcblx0XCJ0eXBlXCI6IFtcInBpZVwiLCBcInJpbmdcIiwgXCJyb3NlXCIsIFwiZnVubmVsXCIsIFwibGluZVwiLCBcImNvbHVtblwiLCBcImFyZWFcIiwgXCJyYWRhclwiLCBcImdhdWdlXCIsXCJjYW5kbGVcIixcImRlbW90eXBlXCJdLFxyXG4gIC8v5aKe5Yqg6Ieq5a6a5LmJ5Zu+6KGo57G75Z6L77yM5aaC5p6c6ZyA6KaBY2F0ZWdvcmllc++8jOivt+WcqOi/memHjOWKoOWFpeaCqOeahOWbvuihqOexu+Wei+S+i+WmguacgOWQjueahFwiZGVtb3R5cGVcIlxyXG5cdFwiY2F0ZWdvcmllc1wiOiBbXCJsaW5lXCIsIFwiY29sdW1uXCIsIFwiYXJlYVwiLCBcInJhZGFyXCIsIFwiZ2F1Z2VcIiwgXCJjYW5kbGVcIixcImRlbW90eXBlXCJdLFxyXG4gIC8vaW5zdGFuY2XkuLrlrp7kvovlj5jph4/mib/ovb3lsZ7mgKfvvIxvcHRpb27kuLplb3B0c+aJv+i9veWxnuaAp++8jOS4jeimgeWIoOmZpFxyXG5cdFwiaW5zdGFuY2VcIjoge30sXHJcblx0XCJvcHRpb25cIjoge30sXHJcbiAgLy/kuIvpnaLmmK/oh6rlrprkuYlmb3JtYXTphY3nva7vvIzlm6DpmaRINeerr+WklueahOWFtuS7luerr+aXoOazlemAmui/h3Byb3Bz5Lyg6YCS5Ye95pWw77yM5Y+q6IO96YCa6L+H5q2k5bGe5oCn5a+55bqU5LiL5qCH55qE5pa55byP5p2l5pu/5o2iXHJcbiAgXCJmb3JtYXR0ZXJcIjp7XHJcbiAgICBcInRvb2x0aXBEZW1vMVwiOmZ1bmN0aW9uKHJlcyl7XHJcbiAgICAgIGxldCByZXN1bHQgPSAnJ1xyXG4gICAgICBmb3IgKGxldCBpIGluIHJlcykge1xyXG4gICAgICBcdGlmIChpID09IDApIHtcclxuICAgICAgXHRcdHJlc3VsdCArPSByZXNbaV0uYXhpc1ZhbHVlTGFiZWwgKyAn5bm06ZSA5ZSu6aKdJ1xyXG4gICAgICBcdH1cclxuICAgICAgXHRsZXQgdmFsdWUgPSAnLS0nXHJcbiAgICAgIFx0aWYgKHJlc1tpXS5kYXRhICE9PSBudWxsKSB7XHJcbiAgICAgIFx0XHR2YWx1ZSA9IHJlc1tpXS5kYXRhXHJcbiAgICAgIFx0fVxyXG5cclxuXHJcblxyXG4gICAgICBcdFxyXG5cclxuICAgICAgXHRyZXN1bHQgKz0gJzxici8+JyArIHJlc1tpXS5tYXJrZXIgKyByZXNbaV0uc2VyaWVzTmFtZSArICfvvJonICsgdmFsdWUgKyAnIOS4h+WFgydcclxuXHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgIH0sXHJcbiAgICBsZWdlbmRGb3JtYXQ6ZnVuY3Rpb24obmFtZSl7XHJcbiAgICAgIHJldHVybiBcIuiHquWumuS5ieWbvuS+iytcIituYW1lO1xyXG4gICAgfSxcclxuICAgIHlBeGlzRm9ybWF0RGVtbzpmdW5jdGlvbiAodmFsdWUsIGluZGV4KSB7XHJcbiAgICAgIHJldHVybiB2YWx1ZSArICflhYMnO1xyXG4gICAgfSxcclxuICAgIHNlcmllc0Zvcm1hdERlbW86ZnVuY3Rpb24ocmVzKXtcclxuICAgICAgcmV0dXJuIHJlcy5uYW1lICsgJ+W5tCcgKyByZXMudmFsdWUgKyAn5YWDJztcclxuICAgIH1cclxuICB9LFxyXG4gIC8v6L+Z6YeM5ryU56S65LqG6Ieq5a6a5LmJ5oKo55qE5Zu+6KGo57G75Z6L55qEb3B0aW9u77yM5Y+v5Lul6ZqP5oSP5ZG95ZCN77yM5LmL5ZCO5Zyo57uE5Lu25LiKIHR5cGU9XCJkZW1vdHlwZVwiIOWQju+8jOe7hOS7tuS8muiwg+eUqOi/meS4quiKseaLrOWPt+mHjOeahG9wdGlvbu+8jOWmguaenOe7hOS7tuS4iui/mOWtmOWcqGVvcHRz5Y+C5pWw77yM5Lya5bCGZGVtb3R5cGXkuI5lb3B0c+S4rW9wdGlvbuWQiOW5tuWQjua4suafk+WbvuihqOOAglxyXG4gIFwiZGVtb3R5cGVcIjp7XHJcbiAgICBcImNvbG9yXCI6IGNvbG9yLFxyXG4gICAgLy/lnKjov5nph4zloavlhpllY2hhcnRz55qEb3B0aW9u5Y2z5Y+vXHJcbiAgICBcclxuICB9LFxyXG4gIC8v5LiL6Z2i5piv6Ieq5a6a5LmJ6YWN572u77yM6K+35re75Yqg6aG555uu5omA6ZyA55qE6YCa55So6YWN572uXHJcblx0XCJjb2x1bW5cIjoge1xyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcInRleHRcIjogJydcclxuXHRcdH0sXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG5cdFx0XHRcInRyaWdnZXJcIjogJ2F4aXMnXHJcblx0XHR9LFxyXG5cdFx0XCJncmlkXCI6IHtcclxuXHRcdFx0XCJ0b3BcIjogMzAsXHJcblx0XHRcdFwiYm90dG9tXCI6IDUwLFxyXG5cdFx0XHRcInJpZ2h0XCI6IDE1LFxyXG5cdFx0XHRcImxlZnRcIjogNDBcclxuXHRcdH0sXHJcblx0XHRcImxlZ2VuZFwiOiB7XHJcblx0XHRcdFwiYm90dG9tXCI6ICdsZWZ0JyxcclxuXHRcdH0sXHJcblx0XHRcInRvb2xib3hcIjoge1xyXG5cdFx0XHRcInNob3dcIjogZmFsc2UsXHJcblx0XHR9LFxyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcblx0XHRcdFwidHlwZVwiOiAnY2F0ZWdvcnknLFxyXG5cdFx0XHRcImF4aXNMYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJjb2xvclwiOiAnIzY2NjY2NidcclxuXHRcdFx0fSxcclxuXHRcdFx0XCJheGlzTGluZVwiOiB7XHJcblx0XHRcdFx0XCJsaW5lU3R5bGVcIjoge1xyXG5cdFx0XHRcdFx0XCJjb2xvclwiOiAnI0NDQ0NDQydcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYm91bmRhcnlHYXBcIjogdHJ1ZSxcclxuXHRcdFx0XCJkYXRhXCI6IFtdXHJcblx0XHR9LFxyXG5cdFx0XCJ5QXhpc1wiOiB7XHJcblx0XHRcdFwidHlwZVwiOiAndmFsdWUnLFxyXG5cdFx0XHRcImF4aXNUaWNrXCI6IHtcclxuXHRcdFx0XHRcInNob3dcIjogZmFsc2UsXHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYXhpc0xhYmVsXCI6IHtcclxuXHRcdFx0XHRcImNvbG9yXCI6ICcjNjY2NjY2J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImF4aXNMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcImNvbG9yXCI6ICcjQ0NDQ0NDJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0XHRcInNlcmllc1RlbXBsYXRlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6ICcnLFxyXG5cdFx0XHRcInR5cGVcIjogJ2JhcicsXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdFx0XCJiYXJ3aWR0aFwiOiAyMCxcclxuXHRcdFx0XCJsYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcbiAgICAgICAgXCJjb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICd0b3AnLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFwibGluZVwiOiB7XHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwidG9vbHRpcFwiOiB7XHJcblx0XHRcdFwidHJpZ2dlclwiOiAnYXhpcydcclxuXHRcdH0sXHJcblx0XHRcImdyaWRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiAzMCxcclxuXHRcdFx0XCJib3R0b21cIjogNTAsXHJcblx0XHRcdFwicmlnaHRcIjogMTUsXHJcblx0XHRcdFwibGVmdFwiOiA0MFxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJib3R0b21cIjogJ2xlZnQnLFxyXG5cdFx0fSxcclxuXHRcdFwidG9vbGJveFwiOiB7XHJcblx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuXHRcdH0sXHJcblx0XHRcInhBeGlzXCI6IHtcclxuXHRcdFx0XCJ0eXBlXCI6ICdjYXRlZ29yeScsXHJcblx0XHRcdFwiYXhpc0xhYmVsXCI6IHtcclxuXHRcdFx0XHRcImNvbG9yXCI6ICcjNjY2NjY2J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImF4aXNMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcImNvbG9yXCI6ICcjQ0NDQ0NDJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XCJib3VuZGFyeUdhcFwiOiB0cnVlLFxyXG5cdFx0XHRcImRhdGFcIjogW11cclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuXHRcdFx0XCJ0eXBlXCI6ICd2YWx1ZScsXHJcblx0XHRcdFwiYXhpc1RpY2tcIjoge1xyXG5cdFx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuXHRcdFx0fSxcclxuXHRcdFx0XCJheGlzTGFiZWxcIjoge1xyXG5cdFx0XHRcdFwiY29sb3JcIjogJyM2NjY2NjYnXHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYXhpc0xpbmVcIjoge1xyXG5cdFx0XHRcdFwibGluZVN0eWxlXCI6IHtcclxuXHRcdFx0XHRcdFwiY29sb3JcIjogJyNDQ0NDQ0MnXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAnbGluZScsXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdFx0XCJiYXJ3aWR0aFwiOiAyMCxcclxuXHRcdFx0XCJsYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcbiAgICAgICAgXCJjb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICd0b3AnLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFwiYXJlYVwiOiB7XHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwidG9vbHRpcFwiOiB7XHJcblx0XHRcdFwidHJpZ2dlclwiOiAnYXhpcydcclxuXHRcdH0sXHJcblx0XHRcImdyaWRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiAzMCxcclxuXHRcdFx0XCJib3R0b21cIjogNTAsXHJcblx0XHRcdFwicmlnaHRcIjogMTUsXHJcblx0XHRcdFwibGVmdFwiOiA0MFxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJib3R0b21cIjogJ2xlZnQnLFxyXG5cdFx0fSxcclxuXHRcdFwidG9vbGJveFwiOiB7XHJcblx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuXHRcdH0sXHJcblx0XHRcInhBeGlzXCI6IHtcclxuXHRcdFx0XCJ0eXBlXCI6ICdjYXRlZ29yeScsXHJcblx0XHRcdFwiYXhpc0xhYmVsXCI6IHtcclxuXHRcdFx0XHRcImNvbG9yXCI6ICcjNjY2NjY2J1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImF4aXNMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcImNvbG9yXCI6ICcjQ0NDQ0NDJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XCJib3VuZGFyeUdhcFwiOiB0cnVlLFxyXG5cdFx0XHRcImRhdGFcIjogW11cclxuXHRcdH0sXHJcblx0XHRcInlBeGlzXCI6IHtcclxuXHRcdFx0XCJ0eXBlXCI6ICd2YWx1ZScsXHJcblx0XHRcdFwiYXhpc1RpY2tcIjoge1xyXG5cdFx0XHRcdFwic2hvd1wiOiBmYWxzZSxcclxuXHRcdFx0fSxcclxuXHRcdFx0XCJheGlzTGFiZWxcIjoge1xyXG5cdFx0XHRcdFwiY29sb3JcIjogJyM2NjY2NjYnXHJcblx0XHRcdH0sXHJcblx0XHRcdFwiYXhpc0xpbmVcIjoge1xyXG5cdFx0XHRcdFwibGluZVN0eWxlXCI6IHtcclxuXHRcdFx0XHRcdFwiY29sb3JcIjogJyNDQ0NDQ0MnXHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAnbGluZScsXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdFx0XCJhcmVhU3R5bGVcIjoge30sXHJcblx0XHRcdFwibGFiZWxcIjoge1xyXG5cdFx0XHRcdFwic2hvd1wiOiB0cnVlLFxyXG4gICAgICAgIFwiY29sb3JcIjogXCIjNjY2NjY2XCIsXHJcblx0XHRcdFx0XCJwb3NpdGlvblwiOiAndG9wJyxcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRcInBpZVwiOiB7XHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwidG9vbHRpcFwiOiB7XHJcblx0XHRcdFwidHJpZ2dlclwiOiAnaXRlbSdcclxuXHRcdH0sXHJcblx0XHRcImdyaWRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiA0MCxcclxuXHRcdFx0XCJib3R0b21cIjogMzAsXHJcblx0XHRcdFwicmlnaHRcIjogMTUsXHJcblx0XHRcdFwibGVmdFwiOiAxNVxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJib3R0b21cIjogJ2xlZnQnLFxyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAncGllJyxcclxuXHRcdFx0XCJkYXRhXCI6IFtdLFxyXG5cdFx0XHRcInJhZGl1c1wiOiAnNTAlJyxcclxuXHRcdFx0XCJsYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcbiAgICAgICAgXCJjb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICd0b3AnLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdFwicmluZ1wiOiB7XHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwidG9vbHRpcFwiOiB7XHJcblx0XHRcdFwidHJpZ2dlclwiOiAnaXRlbSdcclxuXHRcdH0sXHJcblx0XHRcImdyaWRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiA0MCxcclxuXHRcdFx0XCJib3R0b21cIjogMzAsXHJcblx0XHRcdFwicmlnaHRcIjogMTUsXHJcblx0XHRcdFwibGVmdFwiOiAxNVxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJib3R0b21cIjogJ2xlZnQnLFxyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAncGllJyxcclxuXHRcdFx0XCJkYXRhXCI6IFtdLFxyXG5cdFx0XHRcInJhZGl1c1wiOiBbJzQwJScsICc3MCUnXSxcclxuXHRcdFx0XCJhdm9pZExhYmVsT3ZlcmxhcFwiOiBmYWxzZSxcclxuXHRcdFx0XCJsYWJlbFwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcbiAgICAgICAgXCJjb2xvclwiOiBcIiM2NjY2NjZcIixcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICd0b3AnLFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImxhYmVsTGluZVwiOiB7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWVcclxuXHRcdFx0fSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRcInJvc2VcIjoge1xyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcInRleHRcIjogJydcclxuXHRcdH0sXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG5cdFx0XHRcInRyaWdnZXJcIjogJ2l0ZW0nXHJcblx0XHR9LFxyXG5cdFx0XCJsZWdlbmRcIjoge1xyXG5cdFx0XHRcInRvcFwiOiAnYm90dG9tJ1xyXG5cdFx0fSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAncGllJyxcclxuXHRcdFx0XCJkYXRhXCI6IFtdLFxyXG5cdFx0XHRcInJhZGl1c1wiOiBcIjU1JVwiLFxyXG5cdFx0XHRcImNlbnRlclwiOiBbJzUwJScsICc1MCUnXSxcclxuXHRcdFx0XCJyb3NlVHlwZVwiOiAnYXJlYScsXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0XCJmdW5uZWxcIjoge1xyXG5cdFx0XCJjb2xvclwiOiBjb2xvcixcclxuXHRcdFwidGl0bGVcIjoge1xyXG5cdFx0XHRcInRleHRcIjogJydcclxuXHRcdH0sXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG5cdFx0XHRcInRyaWdnZXJcIjogJ2l0ZW0nLFxyXG5cdFx0XHRcImZvcm1hdHRlclwiOiBcIntifSA6IHtjfSVcIlxyXG5cdFx0fSxcclxuXHRcdFwibGVnZW5kXCI6IHtcclxuXHRcdFx0XCJ0b3BcIjogJ2JvdHRvbSdcclxuXHRcdH0sXHJcblx0XHRcInNlcmllc1RlbXBsYXRlXCI6IHtcclxuXHRcdFx0XCJuYW1lXCI6ICcnLFxyXG5cdFx0XHRcInR5cGVcIjogJ2Z1bm5lbCcsXHJcblx0XHRcdFwibGVmdFwiOiAnMTAlJyxcclxuXHRcdFx0XCJ0b3BcIjogNjAsXHJcblx0XHRcdFwiYm90dG9tXCI6IDYwLFxyXG5cdFx0XHRcIndpZHRoXCI6ICc4MCUnLFxyXG5cdFx0XHRcIm1pblwiOiAwLFxyXG5cdFx0XHRcIm1heFwiOiAxMDAsXHJcblx0XHRcdFwibWluU2l6ZVwiOiAnMCUnLFxyXG5cdFx0XHRcIm1heFNpemVcIjogJzEwMCUnLFxyXG5cdFx0XHRcInNvcnRcIjogJ2Rlc2NlbmRpbmcnLFxyXG5cdFx0XHRcImdhcFwiOiAyLFxyXG5cdFx0XHRcImxhYmVsXCI6IHtcclxuXHRcdFx0XHRcInNob3dcIjogdHJ1ZSxcclxuXHRcdFx0XHRcInBvc2l0aW9uXCI6ICdpbnNpZGUnXHJcblx0XHRcdH0sXHJcblx0XHRcdFwibGFiZWxMaW5lXCI6IHtcclxuXHRcdFx0XHRcImxlbmd0aFwiOiAxMCxcclxuXHRcdFx0XHRcImxpbmVTdHlsZVwiOiB7XHJcblx0XHRcdFx0XHRcIndpZHRoXCI6IDEsXHJcblx0XHRcdFx0XHRcInR5cGVcIjogJ3NvbGlkJ1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XCJpdGVtU3R5bGVcIjoge1xyXG5cdFx0XHRcdFwiYm9yZGVyY29sb3JcIjogJyNmZmYnLFxyXG5cdFx0XHRcdFwiYm9yZGVyd2lkdGhcIjogMVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcImVtcGhhc2lzXCI6IHtcclxuXHRcdFx0XHRcImxhYmVsXCI6IHtcclxuXHRcdFx0XHRcdFwiZm9udFNpemVcIjogMjBcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHRcImdhdWdlXCI6IHtcclxuXHRcdFwiY29sb3JcIjogY29sb3IsXHJcblx0XHRcInRvb2x0aXBcIjoge1xyXG4gICAgICAgIFwiZm9ybWF0dGVyXCI6ICd7YX0gPGJyLz57Yn0gOiB7Y30lJ1xyXG4gICAgfSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJ+S4muWKoeaMh+aghycsXHJcbiAgICAgIFwidHlwZVwiOiAnZ2F1Z2UnLFxyXG4gICAgICBcImRldGFpbFwiOiB7XCJmb3JtYXR0ZXJcIjogJ3t2YWx1ZX0lJ30sXHJcbiAgICAgIFwiZGF0YVwiOiBbe1widmFsdWVcIjogNTAsIFwibmFtZVwiOiAn5a6M5oiQ546HJ31dXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0XCJjYW5kbGVcIjoge1xyXG5cdFx0XCJ4QXhpc1wiOiB7XHJcblx0XHRcdFwiZGF0YVwiOiBbXVxyXG5cdFx0fSxcclxuXHRcdFwieUF4aXNcIjoge30sXHJcblx0XHRcImNvbG9yXCI6IGNvbG9yLFxyXG5cdFx0XCJ0aXRsZVwiOiB7XHJcblx0XHRcdFwidGV4dFwiOiAnJ1xyXG5cdFx0fSxcclxuXHRcdFwiZGF0YVpvb21cIjogW3tcclxuXHRcdFx0XHRcInR5cGVcIjogJ2luc2lkZScsXHJcblx0XHRcdFx0XCJ4QXhpc0luZGV4XCI6IFswLCAxXSxcclxuXHRcdFx0XHRcInN0YXJ0XCI6IDEwLFxyXG5cdFx0XHRcdFwiZW5kXCI6IDEwMFxyXG5cdFx0XHR9LFxyXG5cdFx0XHR7XHJcblx0XHRcdFx0XCJzaG93XCI6IHRydWUsXHJcblx0XHRcdFx0XCJ4QXhpc0luZGV4XCI6IFswLCAxXSxcclxuXHRcdFx0XHRcInR5cGVcIjogJ3NsaWRlcicsXHJcblx0XHRcdFx0XCJib3R0b21cIjogMTAsXHJcblx0XHRcdFx0XCJzdGFydFwiOiAxMCxcclxuXHRcdFx0XHRcImVuZFwiOiAxMDBcclxuXHRcdFx0fVxyXG5cdFx0XSxcclxuXHRcdFwic2VyaWVzVGVtcGxhdGVcIjoge1xyXG5cdFx0XHRcIm5hbWVcIjogJycsXHJcblx0XHRcdFwidHlwZVwiOiAnaycsXHJcblx0XHRcdFwiZGF0YVwiOiBbXSxcclxuXHRcdH0sXHJcblx0fVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjZmU7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///124\n");
  13123. /***/ }),
  13124. /* 125 */
  13125. /*!****************************************************************************!*\
  13126. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/powerTu.png ***!
  13127. \****************************************************************************/
  13128. /*! no static exports found */
  13129. /***/ (function(module, exports) {
  13130. eval("module.exports = \"/static/jnImage/powerPage/powerTu.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL3Bvd2VyVHUucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///125\n");
  13131. /***/ }),
  13132. /* 126 */
  13133. /*!**************************************************************************!*\
  13134. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/clock.png ***!
  13135. \**************************************************************************/
  13136. /*! no static exports found */
  13137. /***/ (function(module, exports) {
  13138. eval("module.exports = \"/static/jnImage/powerPage/clock.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL2Nsb2NrLnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///126\n");
  13139. /***/ }),
  13140. /* 127 */
  13141. /*!*********************************************************************************!*\
  13142. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/powerDayIcon.png ***!
  13143. \*********************************************************************************/
  13144. /*! no static exports found */
  13145. /***/ (function(module, exports) {
  13146. eval("module.exports = \"/static/jnImage/powerPage/powerDayIcon.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL3Bvd2VyRGF5SWNvbi5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///127\n");
  13147. /***/ }),
  13148. /* 128 */
  13149. /*!****************************************************************************!*\
  13150. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/72clock.png ***!
  13151. \****************************************************************************/
  13152. /*! no static exports found */
  13153. /***/ (function(module, exports) {
  13154. eval("module.exports = \"/static/jnImage/powerPage/72clock.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEyOC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlLzcyY2xvY2sucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///128\n");
  13155. /***/ }),
  13156. /* 129 */
  13157. /*!*************************************************************************************************!*\
  13158. !*** D:/Intelligent/jn_uniapp/jn_app/pages/power/index.vue?vue&type=script&lang=js&mpType=page ***!
  13159. \*************************************************************************************************/
  13160. /*! no static exports found */
  13161. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  13162. "use strict";
  13163. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 130);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIxMjkuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///129\n");
  13164. /***/ }),
  13165. /* 130 */
  13166. /*!******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  13167. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/power/index.vue?vue&type=script&lang=js&mpType=page ***!
  13168. \******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  13169. /*! no static exports found */
  13170. /***/ (function(module, exports, __webpack_require__) {
  13171. "use strict";
  13172. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n// import * as echarts from 'echarts'\n// import uCharts from '../../components/u-charts/u-charts.js';\n// import qCharts from '../../components/u-charts/component.vue';\nvar uChartsInstance = {};\nvar _default = {\n onLoad: function onLoad() {},\n data: function data() {\n return {\n powerTab: 'DL',\n yearTab: 'month',\n powerTabData: [],\n yearData: [],\n powerProgressData: [],\n chartData: {},\n chartDataLine: {},\n opts: {},\n optsLine: {}\n };\n },\n created: function created() {\n this.powerTabData = [{\n nameZN: '电量',\n nameEN: 'DL',\n showColor: true\n }, {\n nameZN: '预测',\n nameEN: 'YC',\n showColor: false\n }];\n this.yearData = [{\n nameZN: '月',\n nameEN: 'month',\n showColor: true\n }, {\n nameZN: '年',\n nameEN: 'year',\n showColor: false\n }], this.powerProgressData = [{\n type: 'wind',\n inPower: 961,\n allPower: 1865,\n name: '宝龙山'\n }, {\n type: 'wind',\n inPower: 852,\n allPower: 1865,\n name: '乌力吉'\n }, {\n type: 'wind',\n inPower: 696,\n allPower: 1865,\n name: '浩日格吐'\n }, {\n type: 'wind',\n inPower: 527,\n allPower: 1865,\n name: '开鲁'\n }, {\n type: 'wind',\n inPower: 935,\n allPower: 1865,\n name: '景观'\n }, {\n type: 'wind',\n inPower: 1022,\n allPower: 1865,\n name: '高力板'\n }, {\n type: 'wind',\n inPower: 752,\n allPower: 1865,\n name: '书声'\n }, {\n type: 'wind',\n inPower: 1520,\n allPower: 1865,\n name: '宝力根花'\n }, {\n type: 'wind',\n inPower: 365.6,\n allPower: 1865,\n name: '振发'\n }];\n },\n onReady: function onReady() {\n this.getPowerBar();\n },\n methods: {\n getPowerBar: function getPowerBar() {\n var opts = {\n color: [\"#1890FF\", \"#91CB74\", \"#FAC858\", \"#EE6666\", \"#73C0DE\", \"#3CA272\", \"#FC8452\", \"#9A60B4\", \"#ea7ccc\"],\n padding: [15, 15, 0, 5],\n enableScroll: false,\n legend: {\n show: false\n },\n xAxis: {\n disableGrid: true,\n rotateLabel: true,\n axisLineColor: \"#A49EAC\",\n fontColor: \"#A49EAC\",\n fontSize: 10,\n marginTop: 5\n },\n yAxis: {\n showTitle: true,\n data: [{\n min: 0,\n fontColor: \"#A49EAC\",\n title: \"(万kwh)\",\n titleFontColor: \"#A49EAC\",\n titleFontSize: 10\n }]\n },\n extra: {\n column: {\n type: \"group\",\n width: 15,\n activeBgColor: \"#000000\",\n activeBgOpacity: 0.08\n }\n }\n };\n var proColor = ['#6C4B9E', '#323A97', '#4951B2', '#4287FF', '#3CB8FE', '#1AA7B5', '#5183B6', '#9F65C1', '#766FF1', '#4951B2'];\n //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接\n\n var xAxis = [];\n var series = [];\n this.powerProgressData.forEach(function (item, index) {\n xAxis.push(item.name);\n var obj = {\n color: '',\n name: '',\n textSize: 10,\n textColor: \"#A49EAC\",\n value: item.inPower\n };\n proColor.forEach(function (it, idx) {\n if (index.toString().length > 1) {\n obj.color = proColor[index.toString().slice(-1)];\n } else {\n obj.color = proColor[index];\n }\n });\n series.push(obj);\n });\n var res = {\n categories: xAxis,\n series: [{\n data: series\n }]\n };\n this.opts = opts;\n this.chartData = JSON.parse(JSON.stringify(res));\n },\n getLineBar: function getLineBar() {\n var opts = {\n color: [\"#1890FF\", \"#91CB74\", \"#FAC858\", \"#EE6666\", \"#73C0DE\", \"#3CA272\", \"#FC8452\", \"#9A60B4\", \"#ea7ccc\"],\n padding: [15, 15, 0, 5],\n enableScroll: false,\n legend: {\n show: true\n },\n xAxis: {\n disableGrid: true,\n axisLineColor: \"#A49EAC\",\n fontColor: \"#A49EAC\",\n fontSize: 10,\n marginTop: 5\n },\n yAxis: {\n showTitle: true,\n disabled: false,\n disableGrid: false,\n splitNumber: 5,\n gridType: \"dash\",\n dashLength: 4,\n gridColor: \"#CCCCCC\",\n padding: 10,\n data: [{\n position: \"left\",\n title: \"折线\",\n fontColor: \"#A49EAC\",\n titleFontColor: \"#A49EAC\",\n titleFontSize: 10\n }, {\n position: \"right\",\n min: 0,\n max: 200,\n title: \"点\",\n textAlign: \"left\",\n fontColor: \"#A49EAC\",\n titleFontColor: \"#A49EAC\",\n titleFontSize: 10\n }]\n },\n extra: {\n mix: {\n column: {\n width: 20\n }\n }\n }\n };\n var proColor = ['#6C4B9E', '#323A97', '#4951B2', '#4287FF', '#3CB8FE', '#1AA7B5', '#5183B6', '#9F65C1', '#766FF1', '#4951B2'];\n //模拟服务器返回数据,如果数据格式和标准格式不同,需自行按下面的格式拼接\n\n var res = {\n categories: [\"2018\", \"2019\", \"2020\", \"2021\", \"2022\", \"2023\"],\n series: [{\n name: \"折线\",\n type: \"line\",\n color: \"#2fc25b\",\n data: [150, 186, 205, 155, 96, 84]\n }, {\n name: \"折线\",\n type: \"line\",\n color: \"#2fc25b\",\n data: [120, 140, 105, 170, 95, 160]\n }, {\n name: \"点\",\n index: 2,\n type: \"point\",\n color: \"#f04864\",\n data: [100, 80, 125, 150, 112, 132]\n }]\n };\n this.optsLine = opts;\n this.chartDataLine = JSON.parse(JSON.stringify(res));\n },\n changePowerTab: function changePowerTab(item) {\n var _this = this;\n this.powerTabData.forEach(function (it) {\n it.showColor = false;\n if (it.nameEN === item.nameEN) {\n item.showColor = true;\n _this.powerTab = it.nameEN;\n }\n });\n if (this.powerTab === 'DL') {\n this.getPowerBar();\n } else {\n this.getLineBar();\n }\n },\n changeYearTab: function changeYearTab(item) {\n var _this2 = this;\n this.yearData.forEach(function (it) {\n it.showColor = false;\n if (it.nameEN === item.nameEN) {\n item.showColor = true;\n _this2.yearTab = it.nameEN;\n }\n });\n },\n showProgress: function showProgress(item, index) {\n var indexX = index;\n if (index > 9) {\n indexX = index - 9;\n }\n var proColor = ['#6C4B9E', '#323A97', '#4951B2', '#4287FF', '#3CB8FE', '#1AA7B5', '#5183B6', '#9F65C1', '#766FF1'];\n var pro = (item.inPower / item.allPower).toFixed(2) * 100 + '%';\n var showColor = proColor[indexX];\n var ss = \"width: \".concat(pro, \";background: \").concat(showColor);\n return ss;\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvcG93ZXIvaW5kZXgudnVlIl0sIm5hbWVzIjpbInVDaGFydHNJbnN0YW5jZSIsIm9uTG9hZCIsImRhdGEiLCJwb3dlclRhYiIsInllYXJUYWIiLCJwb3dlclRhYkRhdGEiLCJ5ZWFyRGF0YSIsInBvd2VyUHJvZ3Jlc3NEYXRhIiwiY2hhcnREYXRhIiwiY2hhcnREYXRhTGluZSIsIm9wdHMiLCJvcHRzTGluZSIsImNyZWF0ZWQiLCJuYW1lWk4iLCJuYW1lRU4iLCJzaG93Q29sb3IiLCJ0eXBlIiwiaW5Qb3dlciIsImFsbFBvd2VyIiwibmFtZSIsIm9uUmVhZHkiLCJnZXRQb3dlckJhciIsIm1ldGhvZHMiLCJjb2xvciIsInBhZGRpbmciLCJlbmFibGVTY3JvbGwiLCJsZWdlbmQiLCJzaG93IiwieEF4aXMiLCJkaXNhYmxlR3JpZCIsInJvdGF0ZUxhYmVsIiwiYXhpc0xpbmVDb2xvciIsImZvbnRDb2xvciIsImZvbnRTaXplIiwibWFyZ2luVG9wIiwieUF4aXMiLCJzaG93VGl0bGUiLCJtaW4iLCJ0aXRsZSIsInRpdGxlRm9udENvbG9yIiwidGl0bGVGb250U2l6ZSIsImV4dHJhIiwiY29sdW1uIiwid2lkdGgiLCJhY3RpdmVCZ0NvbG9yIiwiYWN0aXZlQmdPcGFjaXR5IiwicHJvQ29sb3IiLCJzZXJpZXMiLCJmb3JFYWNoIiwiaXRlbSIsImluZGV4IiwicHVzaCIsIm9iaiIsInRleHRTaXplIiwidGV4dENvbG9yIiwidmFsdWUiLCJpdCIsImlkeCIsInRvU3RyaW5nIiwibGVuZ3RoIiwic2xpY2UiLCJyZXMiLCJjYXRlZ29yaWVzIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiZ2V0TGluZUJhciIsImRpc2FibGVkIiwic3BsaXROdW1iZXIiLCJncmlkVHlwZSIsImRhc2hMZW5ndGgiLCJncmlkQ29sb3IiLCJwb3NpdGlvbiIsIm1heCIsInRleHRBbGlnbiIsIm1peCIsImNoYW5nZVBvd2VyVGFiIiwiY2hhbmdlWWVhclRh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ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG4vLyBpbXBvcnQgKiBhcyBlY2hhcnRzIGZyb20gJ2VjaGFydHMnXG4vLyBpbXBvcnQgdUNoYXJ0cyBmcm9tICcuLi8uLi9jb21wb25lbnRzL3UtY2hhcnRzL3UtY2hhcnRzLmpzJztcbi8vIGltcG9ydCBxQ2hhcnRzIGZyb20gJy4uLy4uL2NvbXBvbmVudHMvdS1jaGFydHMvY29tcG9uZW50LnZ1ZSc7XG52YXIgdUNoYXJ0c0luc3RhbmNlID0ge307XG5leHBvcnQgZGVmYXVsdCB7XG5cdG9uTG9hZDogZnVuY3Rpb24oKSB7fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0cG93ZXJUYWI6ICdETCcsXG5cdFx0XHR5ZWFyVGFiOiAnbW9udGgnLFxuXHRcdFx0cG93ZXJUYWJEYXRhOiBbXSxcblx0XHRcdHllYXJEYXRhOiBbXSxcblx0XHRcdHBvd2VyUHJvZ3Jlc3NEYXRhOiBbXSxcblx0XHRcdGNoYXJ0RGF0YToge30sXG5cdFx0XHRjaGFydERhdGFMaW5lOiB7fSxcblx0XHRcdG9wdHM6IHt9LFxuXHRcdFx0b3B0c0xpbmU6IHt9LFxuXHRcdH1cblx0fSxcblx0Y3JlYXRlZCgpIHtcblx0XHR0aGlzLnBvd2VyVGFiRGF0YSA9IFt7XG5cdFx0XHRcdG5hbWVaTjogJ+eUtemHjycsXG5cdFx0XHRcdG5hbWVFTjogJ0RMJyxcblx0XHRcdFx0c2hvd0NvbG9yOiB0cnVlXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lWk46ICfpooTmtYsnLFxuXHRcdFx0XHRuYW1lRU46ICdZQycsXG5cdFx0XHRcdHNob3dDb2xvcjogZmFsc2VcblxuXHRcdFx0fVxuXHRcdF1cblx0XHR0aGlzLnllYXJEYXRhID0gW3tcblx0XHRcdFx0XHRuYW1lWk46ICfmnIgnLFxuXHRcdFx0XHRcdG5hbWVFTjogJ21vbnRoJyxcblx0XHRcdFx0XHRzaG93Q29sb3I6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdG5hbWVaTjogJ+W5tCcsXG5cdFx0XHRcdFx0bmFtZUVOOiAneWVhcicsXG5cdFx0XHRcdFx0c2hvd0NvbG9yOiBmYWxzZVxuXG5cdFx0XHRcdH1cblx0XHRcdF0sXG5cdFx0XHR0aGlzLnBvd2VyUHJvZ3Jlc3NEYXRhID0gW3tcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogOTYxLFxuXHRcdFx0XHRcdGFsbFBvd2VyOiAxODY1LFxuXHRcdFx0XHRcdG5hbWU6ICflrp3pvpnlsbEnXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogODUyLFxuXHRcdFx0XHRcdGFsbFBvd2VyOiAxODY1LFxuXHRcdFx0XHRcdG5hbWU6ICfkuYzlipvlkIknXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogNjk2LFxuXHRcdFx0XHRcdGFsbFBvd2VyOiAxODY1LFxuXHRcdFx0XHRcdG5hbWU6ICfmtanml6XmoLzlkJAnXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogNTI3LFxuXHRcdFx0XHRcdGFsbFBvd2VyOiAxODY1LFxuXHRcdFx0XHRcdG5hbWU6ICflvIDpsoEnXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogOTM1LFxuXHRcdFx0XHRcdGFsbFBvd2VyOiAxODY1LFxuXHRcdFx0XHRcdG5hbWU6ICfmma/op4InXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHtcblx0XHRcdFx0XHR0eXBlOiAnd2luZCcsXG5cdFx0XHRcdFx0aW5Qb3dlcjogMTAyMixcblx0XHRcdFx0XHRhbGxQb3dlcjogMTg2NSxcblx0XHRcdFx0XHRuYW1lOiAn6auY5Yqb5p2/J1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dHlwZTogJ3dpbmQnLFxuXHRcdFx0XHRcdGluUG93ZXI6IDc1Mixcblx0XHRcdFx0XHRhbGxQb3dlcjogMTg2NSxcblx0XHRcdFx0XHRuYW1lOiAn5Lmm5aOwJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XHR7XG5cdFx0XHRcdFx0dHlwZTogJ3dpbmQnLFxuXHRcdFx0XHRcdGluUG93ZXI6IDE1MjAsXG5cdFx0XHRcdFx0YWxsUG93ZXI6IDE4NjUsXG5cdFx0XHRcdFx0bmFtZTogJ+WuneWKm+agueiKsSdcblx0XHRcdFx0fSxcblx0XHRcdFx0e1xuXHRcdFx0XHRcdHR5cGU6ICd3aW5kJyxcblx0XHRcdFx0XHRpblBvd2VyOiAzNjUuNixcblx0XHRcdFx0XHRhbGxQb3dlcjogMTg2NSxcblx0XHRcdFx0XHRuYW1lOiAn5oyv5Y+RJ1xuXHRcdFx0XHR9LFxuXHRcdFx0XVxuXHR9LFxuXHRvblJlYWR5KCkge1xuXHRcdHRoaXMuZ2V0UG93ZXJCYXIoKVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0Z2V0UG93ZXJCYXIoKSB7XG5cdFx0XHRsZXQgb3B0cyA9IHtcblx0XHRcdFx0Y29sb3I6IFtcIiMxODkwRkZcIiwgXCIjOTFDQjc0XCIsIFwiI0ZBQzg1OFwiLCBcIiNFRTY2NjZcIiwgXCIjNzNDMERFXCIsIFwiIzNDQTI3MlwiLCBcIiNGQzg0NTJcIiwgXCIjOUE2MEI0XCIsXG5cdFx0XHRcdFx0XCIjZWE3Y2NjXCJcblx0XHRcdFx0XSxcblx0XHRcdFx0cGFkZGluZzogWzE1LCAxNSwgMCwgNV0sXG5cdFx0XHRcdGVuYWJsZVNjcm9sbDogZmFsc2UsXG5cdFx0XHRcdGxlZ2VuZDoge1xuXHRcdFx0XHRcdHNob3c6IGZhbHNlXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHhBeGlzOiB7XG5cdFx0XHRcdFx0ZGlzYWJsZUdyaWQ6IHRydWUsXG5cdFx0XHRcdFx0cm90YXRlTGFiZWw6IHRydWUsXG5cdFx0XHRcdFx0YXhpc0xpbmVDb2xvcjogXCIjQTQ5RUFDXCIsXG5cdFx0XHRcdFx0Zm9udENvbG9yOiBcIiNBNDlFQUNcIixcblx0XHRcdFx0XHRmb250U2l6ZTogMTAsXG5cdFx0XHRcdFx0bWFyZ2luVG9wOiA1XG5cdFx0XHRcdH0sXG5cdFx0XHRcdHlBeGlzOiB7XG5cdFx0XHRcdFx0c2hvd1RpdGxlOiB0cnVlLFxuXHRcdFx0XHRcdGRhdGE6IFt7XG5cdFx0XHRcdFx0XHRtaW46IDAsXG5cdFx0XHRcdFx0XHRmb250Q29sb3I6IFwiI0E0OUVBQ1wiLFxuXHRcdFx0XHRcdFx0dGl0bGU6IFwiKOS4h2t3aClcIixcblx0XHRcdFx0XHRcdHRpdGxlRm9udENvbG9yOiBcIiNBNDlFQUNcIixcblx0XHRcdFx0XHRcdHRpdGxlRm9udFNpemU6IDEwXG5cdFx0XHRcdFx0fV1cblx0XHRcdFx0fSxcblx0XHRcdFx0ZXh0cmE6IHtcblx0XHRcdFx0XHRjb2x1bW46IHtcblx0XHRcdFx0XHRcdHR5cGU6IFwiZ3JvdXBcIixcblx0XHRcdFx0XHRcdHdpZHRoOiAxNSxcblx0XHRcdFx0XHRcdGFjdGl2ZUJnQ29sb3I6IFwiIzAwMDAwMFwiLFxuXHRcdFx0XHRcdFx0YWN0aXZlQmdPcGFjaXR5OiAwLjA4XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGxldCBwcm9Db2xvciA9IFsnIzZDNEI5RScsICcjMzIzQTk3JywgJyM0OTUxQjInLCAnIzQyODdGRicsICcjM0NCOEZFJywgJyMxQUE3QjUnLCAnIzUxODNCNicsICcjOUY2NUMxJyxcblx0XHRcdFx0JyM3NjZGRjEnLCAnIzQ5NTFCMicsXG5cdFx0XHRdXG5cdFx0XHQvL+aooeaLn+acjeWKoeWZqOi/lOWbnuaVsOaNru+8jOWmguaenOaVsOaNruagvOW8j+WSjOagh+WHhuagvOW8j+S4jeWQjO+8jOmcgOiHquihjOaMieS4i+mdoueahOagvOW8j+aLvOaOpVxuXG5cdFx0XHRsZXQgeEF4aXMgPSBbXVxuXHRcdFx0bGV0IHNlcmllcyA9IFtdXG5cdFx0XHR0aGlzLnBvd2VyUHJvZ3Jlc3NEYXRhLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG5cdFx0XHRcdHhBeGlzLnB1c2goaXRlbS5uYW1lKVxuXHRcdFx0XHRsZXQgb2JqID0ge1xuXHRcdFx0XHRcdGNvbG9yOiAnJyxcblx0XHRcdFx0XHRuYW1lOiAnJyxcblx0XHRcdFx0XHR0ZXh0U2l6ZTogMTAsXG5cdFx0XHRcdFx0dGV4dENvbG9yOiBcIiNBNDlFQUNcIixcblx0XHRcdFx0XHR2YWx1ZTogaXRlbS5pblBvd2VyXG5cdFx0XHRcdH1cblx0XHRcdFx0cHJvQ29sb3IuZm9yRWFjaCgoaXQsIGlkeCkgPT4ge1xuXHRcdFx0XHRcdGlmIChpbmRleC50b1N0cmluZygpLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRcdG9iai5jb2xvciA9IHByb0NvbG9yW2luZGV4LnRvU3RyaW5nKCkuc2xpY2UoLTEpXVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvYmouY29sb3IgPSBwcm9Db2xvcltpbmRleF1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHNlcmllcy5wdXNoKG9iailcblx0XHRcdH0pXG5cdFx0XHRsZXQgcmVzID0ge1xuXHRcdFx0XHRjYXRlZ29yaWVzOiB4QXhpcyxcblx0XHRcdFx0c2VyaWVzOiBbe1xuXHRcdFx0XHRcdGRhdGE6IHNlcmllc1xuXHRcdFx0XHR9XVxuXHRcdFx0fTtcblx0XHRcdHRoaXMub3B0cyA9IG9wdHNcblx0XHRcdHRoaXMuY2hhcnREYXRhID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXMpKTtcblx0XHR9LFxuXHRcdGdldExpbmVCYXIoKSB7XG5cdFx0XHRsZXQgb3B0cyA9IHtcblx0XHRcdFx0Y29sb3I6IFtcIiMxODkwRkZcIiwgXCIjOTFDQjc0XCIsIFwiI0ZBQzg1OFwiLCBcIiNFRTY2NjZcIiwgXCIjNzNDMERFXCIsIFwiIzNDQTI3MlwiLCBcIiNGQzg0NTJcIiwgXCIjOUE2MEI0XCIsXG5cdFx0XHRcdFx0XCIjZWE3Y2NjXCJcblx0XHRcdFx0XSxcblx0XHRcdFx0cGFkZGluZzogWzE1LCAxNSwgMCwgNV0sXG5cdFx0XHRcdGVuYWJsZVNjcm9sbDogZmFsc2UsXG5cdFx0XHRcdGxlZ2VuZDoge1xuXHRcdFx0XHRcdHNob3c6IHRydWVcblx0XHRcdFx0fSxcblx0XHRcdFx0eEF4aXM6IHtcblx0XHRcdFx0XHRkaXNhYmxlR3JpZDogdHJ1ZSxcblx0XHRcdFx0XHRheGlzTGluZUNvbG9yOiBcIiNBNDlFQUNcIixcblx0XHRcdFx0XHRmb250Q29sb3I6IFwiI0E0OUVBQ1wiLFxuXHRcdFx0XHRcdGZvbnRTaXplOiAxMCxcblx0XHRcdFx0XHRtYXJnaW5Ub3A6IDVcblx0XHRcdFx0fSxcblx0XHRcdFx0eUF4aXM6IHtcblx0XHRcdFx0XHRzaG93VGl0bGU6IHRydWUsXG5cdFx0XHRcdFx0ZGlzYWJsZWQ6IGZhbHNlLFxuXHRcdFx0XHRcdGRpc2FibGVHcmlkOiBmYWxzZSxcblx0XHRcdFx0XHRzcGxpdE51bWJlcjogNSxcblx0XHRcdFx0XHRncmlkVHlwZTogXCJkYXNoXCIsXG5cdFx0XHRcdFx0ZGFzaExlbmd0aDogNCxcblx0XHRcdFx0XHRncmlkQ29sb3I6IFwiI0NDQ0NDQ1wiLFxuXHRcdFx0XHRcdHBhZGRpbmc6IDEwLFxuXHRcdFx0XHRcdGRhdGE6IFt7XG5cdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcImxlZnRcIixcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5oqY57q/XCIsXG5cdFx0XHRcdFx0XHRcdGZvbnRDb2xvcjogXCIjQTQ5RUFDXCIsXG5cdFx0XHRcdFx0XHRcdHRpdGxlRm9udENvbG9yOiBcIiNBNDlFQUNcIixcblx0XHRcdFx0XHRcdFx0dGl0bGVGb250U2l6ZTogMTBcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRcdHBvc2l0aW9uOiBcInJpZ2h0XCIsXG5cdFx0XHRcdFx0XHRcdG1pbjogMCxcblx0XHRcdFx0XHRcdFx0bWF4OiAyMDAsXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIueCuVwiLFxuXHRcdFx0XHRcdFx0XHR0ZXh0QWxpZ246IFwibGVmdFwiLFxuXHRcdFx0XHRcdFx0XHRmb250Q29sb3I6IFwiI0E0OUVBQ1wiLFxuXHRcdFx0XHRcdFx0XHR0aXRsZUZvbnRDb2xvcjogXCIjQTQ5RUFDXCIsXG5cdFx0XHRcdFx0XHRcdHRpdGxlRm9udFNpemU6IDEwXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHRyYToge1xuXHRcdFx0XHRcdG1peDoge1xuXHRcdFx0XHRcdFx0Y29sdW1uOiB7XG5cdFx0XHRcdFx0XHRcdHdpZHRoOiAyMFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRsZXQgcHJvQ29sb3IgPSBbJyM2QzRCOUUnLCAnIzMyM0E5NycsICcjNDk1MUIyJywgJyM0Mjg3RkYnLCAnIzNDQjhGRScsICcjMUFBN0I1JywgJyM1MTgzQjYnLCAnIzlGNjVDMScsXG5cdFx0XHRcdCcjNzY2RkYxJywgJyM0OTUxQjInLFxuXHRcdFx0XVxuXHRcdFx0Ly/mqKHmi5/mnI3liqHlmajov5Tlm57mlbDmja7vvIzlpoLmnpzmlbDmja7moLzlvI/lkozmoIflh4bmoLzlvI/kuI3lkIzvvIzpnIDoh6rooYzmjInkuIvpnaLnmoTmoLzlvI/mi7zmjqVcblxuXHRcdFx0bGV0IHJlcyA9IHtcblx0XHRcdFx0Y2F0ZWdvcmllczogW1wiMjAxOFwiLCBcIjIwMTlcIiwgXCIyMDIwXCIsIFwiMjAyMVwiLCBcIjIwMjJcIiwgXCIyMDIzXCJdLFxuXHRcdFx0XHRzZXJpZXM6IFt7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIuaKmOe6v1wiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJsaW5lXCIsXG5cdFx0XHRcdFx0XHRjb2xvcjogXCIjMmZjMjViXCIsXG5cdFx0XHRcdFx0XHRkYXRhOiBbMTUwLCAxODYsIDIwNSwgMTU1LCA5NiwgODRdXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHR7XG5cdFx0XHRcdFx0XHRuYW1lOiBcIuaKmOe6v1wiLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJsaW5lXCIsXG5cdFx0XHRcdFx0XHRjb2xvcjogXCIjMmZjMjViXCIsXG5cdFx0XHRcdFx0XHRkYXRhOiBbMTIwLCAxNDAsIDEwNSwgMTcwLCA5NSwgMTYwXVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0e1xuXHRcdFx0XHRcdFx0bmFtZTogXCLngrlcIixcblx0XHRcdFx0XHRcdGluZGV4OiAyLFxuXHRcdFx0XHRcdFx0dHlwZTogXCJwb2ludFwiLFxuXHRcdFx0XHRcdFx0Y29sb3I6IFwiI2YwNDg2NFwiLFxuXHRcdFx0XHRcdFx0ZGF0YTogWzEwMCwgODAsIDEyNSwgMTUwLCAxMTIsIDEzMl1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdF1cblx0XHRcdH07XG5cdFx0XHR0aGlzLm9wdHNMaW5lID0gb3B0c1xuXHRcdFx0dGhpcy5jaGFydERhdGFMaW5lID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeShyZXMpKTtcblx0XHR9LFxuXHRcdGNoYW5nZVBvd2VyVGFiKGl0ZW0pIHtcblx0XHRcdHRoaXMucG93ZXJUYWJEYXRhLmZvckVhY2goaXQgPT4ge1xuXHRcdFx0XHRpdC5zaG93Q29sb3IgPSBmYWxzZVxuXHRcdFx0XHRpZiAoaXQubmFtZUVOID09PSBpdGVtLm5hbWVFTikge1xuXHRcdFx0XHRcdGl0ZW0uc2hvd0NvbG9yID0gdHJ1ZVxuXHRcdFx0XHRcdHRoaXMucG93ZXJUYWIgPSBpdC5uYW1lRU5cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdGlmICh0aGlzLnBvd2VyVGFiID09PSAnREwnKSB7XG5cdFx0XHRcdHRoaXMuZ2V0UG93ZXJCYXIoKVxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dGhpcy5nZXRMaW5lQmFyKClcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNoYW5nZVllYXJUYWIoaXRlbSkge1xuXHRcdFx0dGhpcy55ZWFyRGF0YS5mb3JFYWNoKGl0ID0+IHtcblx0XHRcdFx0aXQuc2hvd0NvbG9yID0gZmFsc2Vcblx0XHRcdFx0aWYgKGl0Lm5hbWVFTiA9PT0gaXRlbS5uYW1lRU4pIHtcblx0XHRcdFx0XHRpdGVtLnNob3dDb2xvciA9IHRydWVcblx0XHRcdFx0XHR0aGlzLnllYXJUYWIgPSBpdC5uYW1lRU5cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9LFxuXHRcdHNob3dQcm9ncmVzcyhpdGVtLCBpbmRleCkge1xuXHRcdFx0bGV0IGluZGV4WCA9IGluZGV4XG5cdFx0XHRpZiAoaW5kZXggPiA5KSB7XG5cdFx0XHRcdGluZGV4WCA9IGluZGV4IC0gOVxuXHRcdFx0fVxuXHRcdFx0bGV0IHByb0NvbG9yID0gWycjNkM0QjlFJywgJyMzMjNBOTcnLCAnIzQ5NTFCMicsICcjNDI4N0ZGJywgJyMzQ0I4RkUnLCAnIzFBQTdCNScsICcjNTE4M0I2JywgJyM5RjY1QzEnLFxuXHRcdFx0XHQnIzc2NkZGMSdcblx0XHRcdF1cblx0XHRcdGxldCBwcm8gPSAoKGl0ZW0uaW5Qb3dlciAvIGl0ZW0uYWxsUG93ZXIpLnRvRml4ZWQoMikpICogMTAwICsgJyUnXG5cdFx0XHRsZXQgc2hvd0NvbG9yID0gcHJvQ29sb3JbaW5kZXhYXVxuXHRcdFx0bGV0IHNzID0gYHdpZHRoOiAke3Byb307YmFja2dyb3VuZDogJHtzaG93Q29sb3J9YFxuXHRcdFx0cmV0dXJuIHNzXG5cdFx0fSxcblxuXHR9LFxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///130\n");
  13173. /***/ }),
  13174. /* 131 */
  13175. /*!************************************************************************!*\
  13176. !*** D:/Intelligent/jn_uniapp/jn_app/pages/type/index.vue?mpType=page ***!
  13177. \************************************************************************/
  13178. /*! no static exports found */
  13179. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  13180. "use strict";
  13181. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=716508c6&mpType=page */ 132);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 138);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/type/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTMxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9NzE2NTA4YzYmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL3R5cGUvaW5kZXgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///131\n");
  13182. /***/ }),
  13183. /* 132 */
  13184. /*!******************************************************************************************************!*\
  13185. !*** D:/Intelligent/jn_uniapp/jn_app/pages/type/index.vue?vue&type=template&id=716508c6&mpType=page ***!
  13186. \******************************************************************************************************/
  13187. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  13188. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  13189. "use strict";
  13190. __webpack_require__.r(__webpack_exports__);
  13191. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=716508c6&mpType=page */ 133);
  13192. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
  13193. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  13194. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  13195. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_716508c6_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
  13196. /***/ }),
  13197. /* 133 */
  13198. /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  13199. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/type/index.vue?vue&type=template&id=716508c6&mpType=page ***!
  13200. \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  13201. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  13202. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  13203. "use strict";
  13204. __webpack_require__.r(__webpack_exports__);
  13205. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  13206. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  13207. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  13208. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  13209. var components
  13210. try {
  13211. components = {
  13212. qiunDataCharts:
  13213. __webpack_require__(/*! @/uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue */ 52)
  13214. .default,
  13215. uniRow: __webpack_require__(/*! @/uni_modules/uni-row/components/uni-row/uni-row.vue */ 42)
  13216. .default,
  13217. uniCol: __webpack_require__(/*! @/uni_modules/uni-row/components/uni-col/uni-col.vue */ 47)
  13218. .default,
  13219. }
  13220. } catch (e) {
  13221. if (
  13222. e.message.indexOf("Cannot find module") !== -1 &&
  13223. e.message.indexOf(".vue") !== -1
  13224. ) {
  13225. console.error(e.message)
  13226. console.error("1. 排查组件名称拼写是否正确")
  13227. console.error(
  13228. "2. 排查组件是否符合 easycom 规范,文档:https://uniapp.dcloud.net.cn/collocation/pages?id=easycom"
  13229. )
  13230. console.error(
  13231. "3. 若组件不符合 easycom 规范,需手动引入,并在 components 中注册该组件"
  13232. )
  13233. } else {
  13234. throw e
  13235. }
  13236. }
  13237. var render = function () {
  13238. var _vm = this
  13239. var _h = _vm.$createElement
  13240. var _c = _vm._self._c || _h
  13241. return _c(
  13242. "view",
  13243. { staticClass: _vm._$s(0, "sc", "faultType"), attrs: { _i: 0 } },
  13244. [
  13245. _c(
  13246. "view",
  13247. { staticClass: _vm._$s(1, "sc", "home_header"), attrs: { _i: 1 } },
  13248. [
  13249. _c(
  13250. "view",
  13251. {
  13252. staticClass: _vm._$s(2, "sc", "header_message"),
  13253. attrs: { _i: 2 },
  13254. },
  13255. [
  13256. _c("image", {
  13257. attrs: {
  13258. src: _vm._$s(
  13259. 3,
  13260. "a-src",
  13261. __webpack_require__(/*! ../../static/jnImage/indexPage/message.png */ 22)
  13262. ),
  13263. _i: 3,
  13264. },
  13265. }),
  13266. ]
  13267. ),
  13268. _c(
  13269. "view",
  13270. { staticClass: _vm._$s(4, "sc", "header_title"), attrs: { _i: 4 } },
  13271. [
  13272. _c("image", {
  13273. attrs: {
  13274. src: _vm._$s(
  13275. 5,
  13276. "a-src",
  13277. __webpack_require__(/*! ../../static/jnImage/loginPage/logo.png */ 10)
  13278. ),
  13279. _i: 5,
  13280. },
  13281. }),
  13282. _c("text", {
  13283. staticClass: _vm._$s(6, "sc", "titleName"),
  13284. attrs: { _i: 6 },
  13285. }),
  13286. ]
  13287. ),
  13288. _c(
  13289. "view",
  13290. { staticClass: _vm._$s(7, "sc", "header_more"), attrs: { _i: 7 } },
  13291. [
  13292. _c("image", {
  13293. attrs: {
  13294. src: _vm._$s(
  13295. 8,
  13296. "a-src",
  13297. __webpack_require__(/*! ../../static/jnImage/indexPage/more.png */ 23)
  13298. ),
  13299. _i: 8,
  13300. },
  13301. }),
  13302. ]
  13303. ),
  13304. ]
  13305. ),
  13306. _c(
  13307. "view",
  13308. { staticClass: _vm._$s(9, "sc", "faultType_main"), attrs: { _i: 9 } },
  13309. [
  13310. _c(
  13311. "view",
  13312. {
  13313. staticClass: _vm._$s(10, "sc", "flex justify-center"),
  13314. attrs: { _i: 10 },
  13315. },
  13316. [
  13317. _c(
  13318. "view",
  13319. {
  13320. staticClass: _vm._$s(11, "sc", "faultType_tab"),
  13321. attrs: { _i: 11 },
  13322. },
  13323. _vm._l(
  13324. _vm._$s(12, "f", { forItems: _vm.faultTypeTabData }),
  13325. function (item, index, $20, $30) {
  13326. return _c(
  13327. "text",
  13328. {
  13329. key: _vm._$s(12, "f", { forIndex: $20, key: index }),
  13330. style: _vm._$s(
  13331. "12-" + $30,
  13332. "s",
  13333. item.showColor ? "background: #4287FF;color:#fff" : ""
  13334. ),
  13335. attrs: { _i: "12-" + $30 },
  13336. on: {
  13337. click: function ($event) {
  13338. return _vm.changefaultTypeTab(item)
  13339. },
  13340. },
  13341. },
  13342. [
  13343. _vm._v(
  13344. _vm._$s("12-" + $30, "t0-0", _vm._s(item.nameZN))
  13345. ),
  13346. ]
  13347. )
  13348. }
  13349. ),
  13350. 0
  13351. ),
  13352. ]
  13353. ),
  13354. _c(
  13355. "view",
  13356. { staticClass: _vm._$s(13, "sc", "gzcs"), attrs: { _i: 13 } },
  13357. [
  13358. _c(
  13359. "view",
  13360. {
  13361. staticClass: _vm._$s(14, "sc", "flex justify-between"),
  13362. attrs: { _i: 14 },
  13363. },
  13364. [
  13365. _c(
  13366. "view",
  13367. {
  13368. staticClass: _vm._$s(
  13369. 15,
  13370. "sc",
  13371. "gzcs_title flex justify-center"
  13372. ),
  13373. attrs: { _i: 15 },
  13374. },
  13375. [
  13376. _vm._$s(16, "i", _vm.faultTypeTab === "XT")
  13377. ? _c("image", {
  13378. attrs: {
  13379. src: _vm._$s(
  13380. 16,
  13381. "a-src",
  13382. __webpack_require__(/*! ../../static/jnImage/powerPage/powerDayIcon.png */ 127)
  13383. ),
  13384. _i: 16,
  13385. },
  13386. })
  13387. : _c("image", {
  13388. attrs: {
  13389. src: _vm._$s(
  13390. 17,
  13391. "a-src",
  13392. __webpack_require__(/*! ../../static/jnImage/powerPage/cishu.png */ 134)
  13393. ),
  13394. _i: 17,
  13395. },
  13396. }),
  13397. _c("text"),
  13398. ]
  13399. ),
  13400. _c(
  13401. "view",
  13402. {
  13403. staticClass: _vm._$s(19, "sc", "yearTab"),
  13404. attrs: { _i: 19 },
  13405. },
  13406. _vm._l(
  13407. _vm._$s(20, "f", { forItems: _vm.yearData }),
  13408. function (item, index, $21, $31) {
  13409. return _c(
  13410. "text",
  13411. {
  13412. key: _vm._$s(20, "f", {
  13413. forIndex: $21,
  13414. key: index,
  13415. }),
  13416. style: _vm._$s(
  13417. "20-" + $31,
  13418. "s",
  13419. item.showColor
  13420. ? "background: #4287FF;color:#fff"
  13421. : ""
  13422. ),
  13423. attrs: { _i: "20-" + $31 },
  13424. on: {
  13425. click: function ($event) {
  13426. return _vm.changeYearTab(item)
  13427. },
  13428. },
  13429. },
  13430. [
  13431. _vm._v(
  13432. _vm._$s("20-" + $31, "t0-0", _vm._s(item.nameZN))
  13433. ),
  13434. ]
  13435. )
  13436. }
  13437. ),
  13438. 0
  13439. ),
  13440. ]
  13441. ),
  13442. _c(
  13443. "view",
  13444. {
  13445. staticClass: _vm._$s(21, "sc", "qiun-chartsPie"),
  13446. attrs: { _i: 21 },
  13447. },
  13448. [
  13449. _c("qiun-data-charts", {
  13450. attrs: {
  13451. type: "ring",
  13452. opts: _vm.opts,
  13453. chartData: _vm.chartData,
  13454. _i: 22,
  13455. },
  13456. }),
  13457. ],
  13458. 1
  13459. ),
  13460. _c(
  13461. "view",
  13462. {
  13463. staticClass: _vm._$s(23, "sc", "gzcs_data"),
  13464. attrs: { _i: 23 },
  13465. },
  13466. [
  13467. _c(
  13468. "uni-row",
  13469. {
  13470. staticClass: _vm._$s(24, "sc", "gzcs_data_row"),
  13471. attrs: { _i: 24 },
  13472. },
  13473. _vm._l(
  13474. _vm._$s(25, "f", { forItems: _vm.faultTypeData }),
  13475. function (item, index, $22, $32) {
  13476. return _c(
  13477. "uni-col",
  13478. {
  13479. key: _vm._$s(25, "f", {
  13480. forIndex: $22,
  13481. key: index,
  13482. }),
  13483. attrs: { span: 12, _i: "25-" + $32 },
  13484. },
  13485. [
  13486. _c(
  13487. "view",
  13488. {
  13489. staticClass: _vm._$s(
  13490. "26-" + $32,
  13491. "sc",
  13492. "gzcs_data_col flex"
  13493. ),
  13494. attrs: { _i: "26-" + $32 },
  13495. },
  13496. [
  13497. _c(
  13498. "view",
  13499. {
  13500. staticClass: _vm._$s(
  13501. "27-" + $32,
  13502. "sc",
  13503. "gzcs_data_col_left"
  13504. ),
  13505. style: _vm._$s(
  13506. "27-" + $32,
  13507. "s",
  13508. _vm.showColor(item)
  13509. ),
  13510. attrs: { _i: "27-" + $32 },
  13511. },
  13512. [
  13513. _c("text", [
  13514. _vm._v(
  13515. _vm._$s(
  13516. "28-" + $32,
  13517. "t0-0",
  13518. _vm._s(item.name)
  13519. )
  13520. ),
  13521. ]),
  13522. ]
  13523. ),
  13524. _c(
  13525. "view",
  13526. {
  13527. staticClass: _vm._$s(
  13528. "29-" + $32,
  13529. "sc",
  13530. " gzcs_data_col_right flex justify-between"
  13531. ),
  13532. attrs: { _i: "29-" + $32 },
  13533. },
  13534. [
  13535. _c("text", [
  13536. _vm._v(
  13537. _vm._$s(
  13538. "30-" + $32,
  13539. "t0-0",
  13540. _vm._s(item.data)
  13541. )
  13542. ),
  13543. ]),
  13544. _c("text"),
  13545. ]
  13546. ),
  13547. ]
  13548. ),
  13549. ]
  13550. )
  13551. }
  13552. ),
  13553. 1
  13554. ),
  13555. ],
  13556. 1
  13557. ),
  13558. _vm._$s(32, "i", _vm.faultTypeTab === "JX")
  13559. ? _c(
  13560. "view",
  13561. {
  13562. staticClass: _vm._$s(32, "sc", "heji flex"),
  13563. attrs: { _i: 32 },
  13564. },
  13565. [
  13566. _c(
  13567. "view",
  13568. {
  13569. staticClass: _vm._$s(33, "sc", "heji_img"),
  13570. attrs: { _i: 33 },
  13571. },
  13572. [
  13573. _c("image", {
  13574. attrs: {
  13575. src: _vm._$s(
  13576. 34,
  13577. "a-src",
  13578. __webpack_require__(/*! ../../static/jnImage/powerPage/heji.png */ 135)
  13579. ),
  13580. _i: 34,
  13581. },
  13582. }),
  13583. ]
  13584. ),
  13585. _c(
  13586. "view",
  13587. {
  13588. staticClass: _vm._$s(
  13589. 35,
  13590. "sc",
  13591. "heji_msg flex justify-between"
  13592. ),
  13593. attrs: { _i: 35 },
  13594. },
  13595. [
  13596. _c(
  13597. "view",
  13598. {
  13599. staticClass: _vm._$s(36, "sc", "heji_msg_tit"),
  13600. attrs: { _i: 36 },
  13601. },
  13602. [_c("text")]
  13603. ),
  13604. _c(
  13605. "view",
  13606. {
  13607. staticClass: _vm._$s(
  13608. 38,
  13609. "sc",
  13610. "heji_msg_data flex justify-between"
  13611. ),
  13612. attrs: { _i: 38 },
  13613. },
  13614. [_c("text"), _c("text")]
  13615. ),
  13616. ]
  13617. ),
  13618. ]
  13619. )
  13620. : _vm._e(),
  13621. ]
  13622. ),
  13623. _c(
  13624. "view",
  13625. { staticClass: _vm._$s(41, "sc", "ssdl"), attrs: { _i: 41 } },
  13626. [
  13627. _c(
  13628. "view",
  13629. {
  13630. staticClass: _vm._$s(42, "sc", "flex justify-between"),
  13631. attrs: { _i: 42 },
  13632. },
  13633. [
  13634. _c(
  13635. "view",
  13636. {
  13637. staticClass: _vm._$s(
  13638. 43,
  13639. "sc",
  13640. "gzcs_title flex justify-center"
  13641. ),
  13642. attrs: { _i: 43 },
  13643. },
  13644. [
  13645. _vm._$s(44, "i", _vm.faultTypeTab === "XT")
  13646. ? _c("image", {
  13647. attrs: {
  13648. src: _vm._$s(
  13649. 44,
  13650. "a-src",
  13651. __webpack_require__(/*! ../../static/jnImage/powerPage/powerDayIcon.png */ 127)
  13652. ),
  13653. _i: 44,
  13654. },
  13655. })
  13656. : _c("image", {
  13657. attrs: {
  13658. src: _vm._$s(
  13659. 45,
  13660. "a-src",
  13661. __webpack_require__(/*! ../../static/jnImage/powerPage/sunshi.png */ 136)
  13662. ),
  13663. _i: 45,
  13664. },
  13665. }),
  13666. _c("text"),
  13667. ]
  13668. ),
  13669. _c(
  13670. "view",
  13671. {
  13672. staticClass: _vm._$s(47, "sc", "yearTab"),
  13673. attrs: { _i: 47 },
  13674. },
  13675. _vm._l(
  13676. _vm._$s(48, "f", { forItems: _vm.yearData }),
  13677. function (item, index, $23, $33) {
  13678. return _c(
  13679. "text",
  13680. {
  13681. key: _vm._$s(48, "f", {
  13682. forIndex: $23,
  13683. key: index,
  13684. }),
  13685. style: _vm._$s(
  13686. "48-" + $33,
  13687. "s",
  13688. item.showColor
  13689. ? "background: #4287FF;color:#fff"
  13690. : ""
  13691. ),
  13692. attrs: { _i: "48-" + $33 },
  13693. on: {
  13694. click: function ($event) {
  13695. return _vm.changeYearTab(item)
  13696. },
  13697. },
  13698. },
  13699. [
  13700. _vm._v(
  13701. _vm._$s("48-" + $33, "t0-0", _vm._s(item.nameZN))
  13702. ),
  13703. ]
  13704. )
  13705. }
  13706. ),
  13707. 0
  13708. ),
  13709. ]
  13710. ),
  13711. _c(
  13712. "view",
  13713. {
  13714. staticClass: _vm._$s(49, "sc", "qiun-chartsPie"),
  13715. attrs: { _i: 49 },
  13716. },
  13717. [
  13718. _c("qiun-data-charts", {
  13719. attrs: {
  13720. type: "ring",
  13721. opts: _vm.opts,
  13722. chartData: _vm.chartData,
  13723. _i: 50,
  13724. },
  13725. }),
  13726. ],
  13727. 1
  13728. ),
  13729. _c(
  13730. "view",
  13731. {
  13732. staticClass: _vm._$s(51, "sc", "gzcs_data"),
  13733. attrs: { _i: 51 },
  13734. },
  13735. [
  13736. _c(
  13737. "uni-row",
  13738. {
  13739. staticClass: _vm._$s(52, "sc", "gzcs_data_row"),
  13740. attrs: { _i: 52 },
  13741. },
  13742. _vm._l(
  13743. _vm._$s(53, "f", { forItems: _vm.faultTypeData }),
  13744. function (item, index, $24, $34) {
  13745. return _c(
  13746. "uni-col",
  13747. {
  13748. key: _vm._$s(53, "f", {
  13749. forIndex: $24,
  13750. key: index,
  13751. }),
  13752. attrs: { span: 12, _i: "53-" + $34 },
  13753. },
  13754. [
  13755. _c(
  13756. "view",
  13757. {
  13758. staticClass: _vm._$s(
  13759. "54-" + $34,
  13760. "sc",
  13761. "gzcs_data_col flex"
  13762. ),
  13763. attrs: { _i: "54-" + $34 },
  13764. },
  13765. [
  13766. _c(
  13767. "view",
  13768. {
  13769. staticClass: _vm._$s(
  13770. "55-" + $34,
  13771. "sc",
  13772. "gzcs_data_col_left"
  13773. ),
  13774. style: _vm._$s(
  13775. "55-" + $34,
  13776. "s",
  13777. _vm.showColor(item)
  13778. ),
  13779. attrs: { _i: "55-" + $34 },
  13780. },
  13781. [
  13782. _c("text", [
  13783. _vm._v(
  13784. _vm._$s(
  13785. "56-" + $34,
  13786. "t0-0",
  13787. _vm._s(item.name)
  13788. )
  13789. ),
  13790. ]),
  13791. ]
  13792. ),
  13793. _c(
  13794. "view",
  13795. {
  13796. staticClass: _vm._$s(
  13797. "57-" + $34,
  13798. "sc",
  13799. " gzcs_data_col_right flex justify-between"
  13800. ),
  13801. attrs: { _i: "57-" + $34 },
  13802. },
  13803. [
  13804. _c("text", [
  13805. _vm._v(
  13806. _vm._$s(
  13807. "58-" + $34,
  13808. "t0-0",
  13809. _vm._s(item.data)
  13810. )
  13811. ),
  13812. ]),
  13813. _c("text"),
  13814. ]
  13815. ),
  13816. ]
  13817. ),
  13818. ]
  13819. )
  13820. }
  13821. ),
  13822. 1
  13823. ),
  13824. ],
  13825. 1
  13826. ),
  13827. _vm._$s(60, "i", _vm.faultTypeTab === "JX")
  13828. ? _c(
  13829. "view",
  13830. {
  13831. staticClass: _vm._$s(60, "sc", "heji flex"),
  13832. attrs: { _i: 60 },
  13833. },
  13834. [
  13835. _c(
  13836. "view",
  13837. {
  13838. staticClass: _vm._$s(61, "sc", "heji_img"),
  13839. attrs: { _i: 61 },
  13840. },
  13841. [
  13842. _c("image", {
  13843. attrs: {
  13844. src: _vm._$s(
  13845. 62,
  13846. "a-src",
  13847. __webpack_require__(/*! ../../static/jnImage/powerPage/heji.png */ 135)
  13848. ),
  13849. _i: 62,
  13850. },
  13851. }),
  13852. ]
  13853. ),
  13854. _c(
  13855. "view",
  13856. {
  13857. staticClass: _vm._$s(
  13858. 63,
  13859. "sc",
  13860. "heji_msg flex justify-between"
  13861. ),
  13862. attrs: { _i: 63 },
  13863. },
  13864. [
  13865. _c(
  13866. "view",
  13867. {
  13868. staticClass: _vm._$s(64, "sc", "heji_msg_tit"),
  13869. attrs: { _i: 64 },
  13870. },
  13871. [_c("text")]
  13872. ),
  13873. _c(
  13874. "view",
  13875. {
  13876. staticClass: _vm._$s(
  13877. 66,
  13878. "sc",
  13879. "heji_msg_data flex justify-between"
  13880. ),
  13881. attrs: { _i: 66 },
  13882. },
  13883. [_c("text"), _c("text")]
  13884. ),
  13885. ]
  13886. ),
  13887. ]
  13888. )
  13889. : _vm._e(),
  13890. ]
  13891. ),
  13892. _c(
  13893. "view",
  13894. { staticClass: _vm._$s(69, "sc", "wxss"), attrs: { _i: 69 } },
  13895. [
  13896. _c(
  13897. "view",
  13898. {
  13899. staticClass: _vm._$s(70, "sc", "flex justify-between"),
  13900. attrs: { _i: 70 },
  13901. },
  13902. [
  13903. _c(
  13904. "view",
  13905. {
  13906. staticClass: _vm._$s(
  13907. 71,
  13908. "sc",
  13909. "gzcs_title flex justify-center"
  13910. ),
  13911. attrs: { _i: 71 },
  13912. },
  13913. [
  13914. _vm._$s(72, "i", _vm.faultTypeTab === "XT")
  13915. ? _c("image", {
  13916. attrs: {
  13917. src: _vm._$s(
  13918. 72,
  13919. "a-src",
  13920. __webpack_require__(/*! ../../static/jnImage/powerPage/powerDayIcon.png */ 127)
  13921. ),
  13922. _i: 72,
  13923. },
  13924. })
  13925. : _c("image", {
  13926. attrs: {
  13927. src: _vm._$s(
  13928. 73,
  13929. "a-src",
  13930. __webpack_require__(/*! ../../static/jnImage/powerPage/wuxiang.png */ 137)
  13931. ),
  13932. _i: 73,
  13933. },
  13934. }),
  13935. _c("text"),
  13936. ]
  13937. ),
  13938. _c(
  13939. "view",
  13940. {
  13941. staticClass: _vm._$s(75, "sc", "yearTab"),
  13942. attrs: { _i: 75 },
  13943. },
  13944. _vm._l(
  13945. _vm._$s(76, "f", { forItems: _vm.yearData }),
  13946. function (item, index, $25, $35) {
  13947. return _c(
  13948. "text",
  13949. {
  13950. key: _vm._$s(76, "f", {
  13951. forIndex: $25,
  13952. key: index,
  13953. }),
  13954. style: _vm._$s(
  13955. "76-" + $35,
  13956. "s",
  13957. item.showColor
  13958. ? "background: #4287FF;color:#fff"
  13959. : ""
  13960. ),
  13961. attrs: { _i: "76-" + $35 },
  13962. on: {
  13963. click: function ($event) {
  13964. return _vm.changeYearTab(item)
  13965. },
  13966. },
  13967. },
  13968. [
  13969. _vm._v(
  13970. _vm._$s("76-" + $35, "t0-0", _vm._s(item.nameZN))
  13971. ),
  13972. ]
  13973. )
  13974. }
  13975. ),
  13976. 0
  13977. ),
  13978. ]
  13979. ),
  13980. _c(
  13981. "view",
  13982. {
  13983. staticClass: _vm._$s(77, "sc", "qiun-chartsPie"),
  13984. attrs: { _i: 77 },
  13985. },
  13986. [
  13987. _c("qiun-data-charts", {
  13988. attrs: {
  13989. type: "ring",
  13990. opts: _vm.opts,
  13991. chartData: _vm.chartDatawxss,
  13992. _i: 78,
  13993. },
  13994. }),
  13995. ],
  13996. 1
  13997. ),
  13998. _c(
  13999. "view",
  14000. {
  14001. staticClass: _vm._$s(79, "sc", "gzcs_data"),
  14002. attrs: { _i: 79 },
  14003. },
  14004. [
  14005. _c(
  14006. "uni-row",
  14007. {
  14008. staticClass: _vm._$s(80, "sc", "gzcs_data_row"),
  14009. attrs: { _i: 80 },
  14010. },
  14011. _vm._l(
  14012. _vm._$s(81, "f", { forItems: _vm.wxssTypeData }),
  14013. function (item, index, $26, $36) {
  14014. return _c(
  14015. "uni-col",
  14016. {
  14017. key: _vm._$s(81, "f", {
  14018. forIndex: $26,
  14019. key: index,
  14020. }),
  14021. attrs: { span: 12, _i: "81-" + $36 },
  14022. },
  14023. [
  14024. _c(
  14025. "view",
  14026. {
  14027. staticClass: _vm._$s(
  14028. "82-" + $36,
  14029. "sc",
  14030. "gzcs_data_col flex"
  14031. ),
  14032. attrs: { _i: "82-" + $36 },
  14033. },
  14034. [
  14035. _c(
  14036. "view",
  14037. {
  14038. staticClass: _vm._$s(
  14039. "83-" + $36,
  14040. "sc",
  14041. "gzcs_data_col_left"
  14042. ),
  14043. style: _vm._$s(
  14044. "83-" + $36,
  14045. "s",
  14046. _vm.showColor(item)
  14047. ),
  14048. attrs: { _i: "83-" + $36 },
  14049. },
  14050. [
  14051. _c("text", [
  14052. _vm._v(
  14053. _vm._$s(
  14054. "84-" + $36,
  14055. "t0-0",
  14056. _vm._s(item.name)
  14057. )
  14058. ),
  14059. ]),
  14060. ]
  14061. ),
  14062. _c(
  14063. "view",
  14064. {
  14065. staticClass: _vm._$s(
  14066. "85-" + $36,
  14067. "sc",
  14068. " gzcs_data_col_right flex justify-between"
  14069. ),
  14070. attrs: { _i: "85-" + $36 },
  14071. },
  14072. [
  14073. _c("text", [
  14074. _vm._v(
  14075. _vm._$s(
  14076. "86-" + $36,
  14077. "t0-0",
  14078. _vm._s(item.data)
  14079. )
  14080. ),
  14081. ]),
  14082. _c("text"),
  14083. ]
  14084. ),
  14085. ]
  14086. ),
  14087. ]
  14088. )
  14089. }
  14090. ),
  14091. 1
  14092. ),
  14093. ],
  14094. 1
  14095. ),
  14096. ]
  14097. ),
  14098. ]
  14099. ),
  14100. ]
  14101. )
  14102. }
  14103. var recyclableRender = false
  14104. var staticRenderFns = []
  14105. render._withStripped = true
  14106. /***/ }),
  14107. /* 134 */
  14108. /*!**************************************************************************!*\
  14109. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/cishu.png ***!
  14110. \**************************************************************************/
  14111. /*! no static exports found */
  14112. /***/ (function(module, exports) {
  14113. eval("module.exports = \"/static/jnImage/powerPage/cishu.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzNC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL2Npc2h1LnBuZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///134\n");
  14114. /***/ }),
  14115. /* 135 */
  14116. /*!*************************************************************************!*\
  14117. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/heji.png ***!
  14118. \*************************************************************************/
  14119. /*! no static exports found */
  14120. /***/ (function(module, exports) {
  14121. eval("module.exports = \"/static/jnImage/powerPage/heji.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzNS5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL2hlamkucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///135\n");
  14122. /***/ }),
  14123. /* 136 */
  14124. /*!***************************************************************************!*\
  14125. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/sunshi.png ***!
  14126. \***************************************************************************/
  14127. /*! no static exports found */
  14128. /***/ (function(module, exports) {
  14129. eval("module.exports = \"/static/jnImage/powerPage/sunshi.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzNi5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL3N1bnNoaS5wbmdcIjsiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///136\n");
  14130. /***/ }),
  14131. /* 137 */
  14132. /*!****************************************************************************!*\
  14133. !*** D:/Intelligent/jn_uniapp/jn_app/static/jnImage/powerPage/wuxiang.png ***!
  14134. \****************************************************************************/
  14135. /*! no static exports found */
  14136. /***/ (function(module, exports) {
  14137. eval("module.exports = \"/static/jnImage/powerPage/wuxiang.png\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjEzNy5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2puSW1hZ2UvcG93ZXJQYWdlL3d1eGlhbmcucG5nXCI7Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///137\n");
  14138. /***/ }),
  14139. /* 138 */
  14140. /*!************************************************************************************************!*\
  14141. !*** D:/Intelligent/jn_uniapp/jn_app/pages/type/index.vue?vue&type=script&lang=js&mpType=page ***!
  14142. \************************************************************************************************/
  14143. /*! no static exports found */
  14144. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14145. "use strict";
  14146. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 139);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIxMzguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///138\n");
  14147. /***/ }),
  14148. /* 139 */
  14149. /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  14150. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/type/index.vue?vue&type=script&lang=js&mpType=page ***!
  14151. \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  14152. /*! no static exports found */
  14153. /***/ (function(module, exports, __webpack_require__) {
  14154. "use strict";
  14155. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n onLoad: function onLoad() {},\n data: function data() {\n return (0, _defineProperty2.default)({\n faultTypeTab: 'XT',\n faultTypeTabData: [],\n yearTab: '',\n yearData: [],\n chartData: {},\n chartDatawxss: {},\n opts: {},\n faultTypeData: [],\n wxssTypeData: []\n }, \"opts\", {\n rotate: false,\n fontColor: '#909BA9',\n rotateLock: false,\n color: ['#5CB2EF', '#3E78C5', '#00299D', '#3EAD9F', '#3F3A99', '#5EAC88', '#5D56D0', '#CD8D23', '#9F65C1', '#FD8974', '#C745B9', '#FF6B3E'],\n padding: [5, 5, 5, 5],\n dataLabel: true,\n enableScroll: false,\n legend: {\n show: false\n },\n title: {\n show: false,\n name: \"\",\n fontSize: 5,\n color: \"#666666\"\n },\n subtitle: {\n show: false,\n name: \"\",\n fontSize: 5,\n color: \"#7cb5ec\"\n },\n extra: {\n ring: {\n ringWidth: 20,\n activeOpacity: 0.5,\n activeRadius: 10,\n centerColor: '#202246',\n offsetAngle: 0,\n labelWidth: 10,\n border: false\n }\n }\n });\n },\n created: function created() {\n this.faultTypeTabData = [{\n nameZN: '系统',\n nameEN: 'XT',\n showColor: true\n }, {\n nameZN: '机型',\n nameEN: 'JX',\n showColor: false\n }];\n this.yearData = [{\n nameZN: '日',\n nameEN: 'day',\n showColor: true\n }, {\n nameZN: '月',\n nameEN: 'month',\n showColor: false\n }, {\n nameZN: '年',\n nameEN: 'year',\n showColor: false\n }];\n this.faultTypeData = [{\n data: 1865,\n name: '发电机'\n }, {\n data: 1865,\n name: '传动变速'\n }, {\n data: 696,\n name: '远程监控'\n }, {\n data: 527,\n name: '电气控制'\n }, {\n data: 935,\n name: '变桨'\n }, {\n data: 1022,\n name: '变频'\n }, {\n data: 752,\n name: '电源'\n }, {\n data: 1520,\n name: '机舱与塔架'\n }, {\n data: 365.6,\n name: '风轮'\n }, {\n data: 365,\n name: '偏航'\n }, {\n data: 256,\n name: '液压'\n }, {\n data: 214,\n name: '通讯'\n }];\n this.wxssTypeData = [{\n data: 1865,\n name: '发电机'\n }, {\n data: 1865,\n name: '传动变速'\n }, {\n data: 696,\n name: '远程监控'\n }, {\n data: 527,\n name: '电气控制'\n }, {\n data: 935,\n name: '变桨'\n }, {\n data: 1022,\n name: '变频'\n }];\n },\n onReady: function onReady() {\n this.getPieBar();\n this.getPieBarwxss();\n },\n methods: {\n getPieBar: function getPieBar() {\n var proColor = ['#5CB2EF', '#3E78C5', '#00299D', '#3EAD9F', '#3F3A99', '#5EAC88', '#5D56D0', '#CD8D23', '#9F65C1', '#FD8974', '#C745B9', '#FF6B3E'];\n var series = [];\n this.faultTypeData.forEach(function (item, index) {\n var obj = {\n name: item.name,\n value: item.data\n };\n proColor.forEach(function (it, idx) {\n if (index.toString().length > 1) {\n obj.color = proColor[index.toString().slice(-1)];\n item.color = proColor[index.toString().slice(-1)];\n } else {\n obj.color = proColor[index];\n item.color = proColor[index];\n }\n });\n series.push(obj);\n });\n var res = {\n series: [{\n data: series\n }]\n };\n this.chartData = JSON.parse(JSON.stringify(res));\n },\n getPieBarwxss: function getPieBarwxss() {\n var proColor = ['#5CB2EF', '#3E78C5', '#00299D', '#3EAD9F', '#3F3A99', '#5EAC88', '#5D56D0', '#CD8D23', '#9F65C1', '#FD8974', '#C745B9', '#FF6B3E'];\n var series = [];\n this.wxssTypeData.forEach(function (item, index) {\n var obj = {\n name: item.name,\n value: item.data\n };\n proColor.forEach(function (it, idx) {\n if (index.toString().length > 1) {\n obj.color = proColor[index.toString().slice(-1)];\n item.color = proColor[index.toString().slice(-1)];\n } else {\n obj.color = proColor[index];\n item.color = proColor[index];\n }\n });\n series.push(obj);\n });\n var res = {\n series: [{\n data: series\n }]\n };\n this.chartDatawxss = JSON.parse(JSON.stringify(res));\n },\n showColor: function showColor(item) {\n return \"background: \".concat(item.color);\n },\n changefaultTypeTab: function changefaultTypeTab(item) {\n var _this = this;\n this.faultTypeTabData.forEach(function (it) {\n it.showColor = false;\n if (it.nameEN === item.nameEN) {\n item.showColor = true;\n _this.faultTypeTab = it.nameEN;\n }\n });\n // if (this.faultTypeTab === 'XT') {\n // \tthis.getPowerBar()\n // } else {\n // \tthis.getLineBar()\n // }\n },\n changeYearTab: function changeYearTab(item) {\n var _this2 = this;\n this.yearData.forEach(function (it) {\n it.showColor = false;\n if (it.nameEN === item.nameEN) {\n item.showColor = true;\n _this2.yearTab = it.nameEN;\n }\n });\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvdHlwZS9pbmRleC52dWUiXSwibmFtZXMiOlsib25Mb2FkIiwiZGF0YSIsImZhdWx0VHlwZVRhYiIsImZhdWx0VHlwZVRhYkRhdGEiLCJ5ZWFyVGFiIiwieWVhckRhdGEiLCJjaGFydERhdGEiLCJjaGFydERhdGF3eHNzIiwib3B0cyIsImZhdWx0VHlwZURhdGEiLCJ3eHNzVHlwZURhdGEiLCJyb3RhdGUiLCJmb250Q29sb3IiLCJyb3RhdGVMb2NrIiwiY29sb3IiLCJwYWRkaW5nIiwiZGF0YUxhYmVsIiwiZW5hYmxlU2Nyb2xsIiwibGVnZW5kIiwic2hvdyIsInRpdGxlIiwibmFtZSIsImZvbnRTaXplIiwic3VidGl0bGUiLCJleHRyYSIsInJpbmciLCJyaW5nV2lkdGgiLCJhY3RpdmVPcGFjaXR5IiwiYWN0aXZlUmFkaXVzIiwiY2VudGVyQ29sb3IiLCJvZmZzZXRBbmdsZSIsImxhYmVsV2lkdGgiLCJib3JkZXIiLCJjcmVhdGVkIiwibmFtZVpOIiwibmFtZUVOIiwic2hvd0NvbG9yIiwib25SZWFkeSIsImdldFBpZUJhciIsImdldFBpZUJhcnd4c3MiLCJtZXRob2RzIiwicHJvQ29sb3IiLCJzZXJpZXMiLCJmb3JFYWNoIiwiaXRlbSIsImluZGV4Iiwib2JqIiwidmFsdWUiLCJpdCIsImlkeCIsInRvU3RyaW5nIiwibGVuZ3RoIiwic2xpY2UiLCJwdXNoIiwicmVzIiwiSlNPTiIsInBhcnNlIiwic3RyaW5naWZ5IiwiY2hhbmdlZmF1bHRUeXBlVGFiIiwiY2hhbmdlWWVhclRhYiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUU7TUFBQTtNQUN4QixJQUFJLENBQUN6QyxnQkFBZ0IsQ0FBQ3dDLE9BQU8sQ0FBQyxVQUFBSyxFQUFFLEVBQUk7UUFDbkNBLEVBQUUsQ0FBQ1osU0FBUyxHQUFHLEtBQUs7UUFDcEIsSUFBSVksRUFBRSxDQUFDYixNQUFNLEtBQUtTLElBQUksQ0FBQ1QsTUFBTSxFQUFFO1VBQzlCUyxJQUFJLENBQUNSLFNBQVMsR0FBRyxJQUFJO1VBQ3JCLEtBQUksQ0FBQ2xDLFlBQVksR0FBRzhDLEVBQUUsQ0FBQ2IsTUFBTTtRQUM5QjtNQUNELENBQUMsQ0FBQztNQUNGO01BQ0E7TUFDQTtNQUNBO01BQ0E7SUFDRCxDQUFDO0lBQ0R3QixhQUFhLHlCQUFDZixJQUFJLEVBQUU7TUFBQTtNQUNuQixJQUFJLENBQUN2QyxRQUFRLENBQUNzQyxPQUFPLENBQUMsVUFBQUssRUFBRSxFQUFJO1FBQzNCQSxFQUFFLENBQUNaLFNBQVMsR0FBRyxLQUFLO1FBQ3BCLElBQUlZLEVBQUUsQ0FBQ2IsTUFBTSxLQUFLUyxJQUFJLENBQUNULE1BQU0sRUFBRTtVQUM5QlMsSUFBSSxDQUFDUixTQUFTLEdBQUcsSUFBSTtVQUNyQixNQUFJLENBQUNoQyxPQUFPLEdBQUc0QyxFQUFFLENBQUNiLE1BQU07UUFDekI7TUFDRCxDQUFDLENBQUM7SUFDSDtFQUNEO0FBQ0QsQ0FBQztBQUFBIiwiZmlsZSI6IjEzOS5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuXG5leHBvcnQgZGVmYXVsdCB7XG5cdG9uTG9hZDogZnVuY3Rpb24oKSB7fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0ZmF1bHRUeXBlVGFiOiAnWFQnLFxuXHRcdFx0ZmF1bHRUeXBlVGFiRGF0YTogW10sXG5cdFx0XHR5ZWFyVGFiOiAnJyxcblx0XHRcdHllYXJEYXRhOiBbXSxcblx0XHRcdGNoYXJ0RGF0YToge30sXG5cdFx0XHRjaGFydERhdGF3eHNzOiB7fSxcblx0XHRcdG9wdHM6IHt9LFxuXHRcdFx0ZmF1bHRUeXBlRGF0YTogW10sXG5cdFx0XHR3eHNzVHlwZURhdGE6IFtdLFxuXHRcdFx0b3B0czoge1xuXHRcdFx0XHRyb3RhdGU6IGZhbHNlLFxuXHRcdFx0XHRmb250Q29sb3I6ICcjOTA5QkE5Jyxcblx0XHRcdFx0cm90YXRlTG9jazogZmFsc2UsXG5cdFx0XHRcdGNvbG9yOiBbJyM1Q0IyRUYnLCAnIzNFNzhDNScsICcjMDAyOTlEJywgJyMzRUFEOUYnLCAnIzNGM0E5OScsICcjNUVBQzg4JywgJyM1RDU2RDAnLCAnI0NEOEQyMycsXG5cdFx0XHRcdFx0JyM5RjY1QzEnLCAnI0ZEODk3NCcsICcjQzc0NUI5JywgJyNGRjZCM0UnLFxuXHRcdFx0XHRdLFxuXHRcdFx0XHRwYWRkaW5nOiBbNSwgNSwgNSwgNV0sXG5cdFx0XHRcdGRhdGFMYWJlbDogdHJ1ZSxcblx0XHRcdFx0ZW5hYmxlU2Nyb2xsOiBmYWxzZSxcblx0XHRcdFx0bGVnZW5kOiB7XG5cdFx0XHRcdFx0c2hvdzogZmFsc2UsXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHRpdGxlOiB7XG5cdFx0XHRcdFx0c2hvdzogZmFsc2UsXG5cdFx0XHRcdFx0bmFtZTogXCJcIixcblx0XHRcdFx0XHRmb250U2l6ZTogNSxcblx0XHRcdFx0XHRjb2xvcjogXCIjNjY2NjY2XCJcblx0XHRcdFx0fSxcblx0XHRcdFx0c3VidGl0bGU6IHtcblx0XHRcdFx0XHRzaG93OiBmYWxzZSxcblx0XHRcdFx0XHRuYW1lOiBcIlwiLFxuXHRcdFx0XHRcdGZvbnRTaXplOiA1LFxuXHRcdFx0XHRcdGNvbG9yOiBcIiM3Y2I1ZWNcIlxuXHRcdFx0XHR9LFxuXHRcdFx0XHRleHRyYToge1xuXHRcdFx0XHRcdHJpbmc6IHtcblx0XHRcdFx0XHRcdHJpbmdXaWR0aDogMjAsXG5cdFx0XHRcdFx0XHRhY3RpdmVPcGFjaXR5OiAwLjUsXG5cdFx0XHRcdFx0XHRhY3RpdmVSYWRpdXM6IDEwLFxuXHRcdFx0XHRcdFx0Y2VudGVyQ29sb3I6ICcjMjAyMjQ2Jyxcblx0XHRcdFx0XHRcdG9mZnNldEFuZ2xlOiAwLFxuXHRcdFx0XHRcdFx0bGFiZWxXaWR0aDogMTAsXG5cdFx0XHRcdFx0XHRib3JkZXI6IGZhbHNlLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH1cblx0fSxcblx0Y3JlYXRlZCgpIHtcblx0XHR0aGlzLmZhdWx0VHlwZVRhYkRhdGEgPSBbe1xuXHRcdFx0XHRuYW1lWk46ICfns7vnu58nLFxuXHRcdFx0XHRuYW1lRU46ICdYVCcsXG5cdFx0XHRcdHNob3dDb2xvcjogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0bmFtZVpOOiAn5py65Z6LJyxcblx0XHRcdFx0bmFtZUVOOiAnSlgnLFxuXHRcdFx0XHRzaG93Q29sb3I6IGZhbHNlXG5cblx0XHRcdH1cblx0XHRdXG5cdFx0dGhpcy55ZWFyRGF0YSA9IFt7XG5cdFx0XHRcdG5hbWVaTjogJ+aXpScsXG5cdFx0XHRcdG5hbWVFTjogJ2RheScsXG5cdFx0XHRcdHNob3dDb2xvcjogdHJ1ZVxuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0bmFtZVpOOiAn5pyIJyxcblx0XHRcdFx0bmFtZUVOOiAnbW9udGgnLFxuXHRcdFx0XHRzaG93Q29sb3I6IGZhbHNlXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRuYW1lWk46ICflubQnLFxuXHRcdFx0XHRuYW1lRU46ICd5ZWFyJyxcblx0XHRcdFx0c2hvd0NvbG9yOiBmYWxzZVxuXG5cdFx0XHR9XG5cdFx0XVxuXHRcdHRoaXMuZmF1bHRUeXBlRGF0YSA9IFt7XG5cdFx0XHRcdGRhdGE6IDE4NjUsXG5cdFx0XHRcdG5hbWU6ICflj5HnlLXmnLonXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiAxODY1LFxuXHRcdFx0XHRuYW1lOiAn5Lyg5Yqo5Y+Y6YCfJ1xuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0ZGF0YTogNjk2LFxuXHRcdFx0XHRuYW1lOiAn6L+c56iL55uR5o6nJ1xuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0ZGF0YTogNTI3LFxuXHRcdFx0XHRuYW1lOiAn55S15rCU5o6n5Yi2J1xuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0ZGF0YTogOTM1LFxuXHRcdFx0XHRuYW1lOiAn5Y+Y5qGoJ1xuXHRcdFx0fSxcblx0XHRcdHtcblx0XHRcdFx0ZGF0YTogMTAyMixcblx0XHRcdFx0bmFtZTogJ+WPmOmikSdcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDc1Mixcblx0XHRcdFx0bmFtZTogJ+eUtea6kCdcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDE1MjAsXG5cdFx0XHRcdG5hbWU6ICfmnLroiLHkuI7loZTmnrYnXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiAzNjUuNixcblx0XHRcdFx0bmFtZTogJ+mjjui9ridcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDM2NSxcblx0XHRcdFx0bmFtZTogJ+WBj+iIqidcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDI1Nixcblx0XHRcdFx0bmFtZTogJ+a2suWOiydcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDIxNCxcblx0XHRcdFx0bmFtZTogJ+mAmuiurydcblx0XHRcdH0sXG5cdFx0XVxuXHRcdHRoaXMud3hzc1R5cGVEYXRhID0gW3tcblx0XHRcdFx0ZGF0YTogMTg2NSxcblx0XHRcdFx0bmFtZTogJ+WPkeeUteacuidcblx0XHRcdH0sXG5cdFx0XHR7XG5cdFx0XHRcdGRhdGE6IDE4NjUsXG5cdFx0XHRcdG5hbWU6ICfkvKDliqjlj5jpgJ8nXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiA2OTYsXG5cdFx0XHRcdG5hbWU6ICfov5znqIvnm5HmjqcnXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiA1MjcsXG5cdFx0XHRcdG5hbWU6ICfnlLXmsJTmjqfliLYnXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiA5MzUsXG5cdFx0XHRcdG5hbWU6ICflj5jmoagnXG5cdFx0XHR9LFxuXHRcdFx0e1xuXHRcdFx0XHRkYXRhOiAxMDIyLFxuXHRcdFx0XHRuYW1lOiAn5Y+Y6aKRJ1xuXHRcdFx0fVxuXHRcdF1cblx0fSxcblx0b25SZWFkeSgpIHtcblx0XHR0aGlzLmdldFBpZUJhcigpXG5cdFx0dGhpcy5nZXRQaWVCYXJ3eHNzKClcblx0fSxcblx0bWV0aG9kczoge1xuXHRcdGdldFBpZUJhcigpIHtcblx0XHRcdGxldCBwcm9Db2xvciA9IFsnIzVDQjJFRicsICcjM0U3OEM1JywgJyMwMDI5OUQnLCAnIzNFQUQ5RicsICcjM0YzQTk5JywgJyM1RUFDODgnLCAnIzVENTZEMCcsICcjQ0Q4RDIzJyxcblx0XHRcdFx0JyM5RjY1QzEnLCAnI0ZEODk3NCcsICcjQzc0NUI5JywgJyNGRjZCM0UnXG5cdFx0XHRdXG5cblx0XHRcdGxldCBzZXJpZXMgPSBbXVxuXHRcdFx0dGhpcy5mYXVsdFR5cGVEYXRhLmZvckVhY2goKGl0ZW0sIGluZGV4KSA9PiB7XG5cdFx0XHRcdGxldCBvYmogPSB7XG5cdFx0XHRcdFx0bmFtZTogaXRlbS5uYW1lLFxuXHRcdFx0XHRcdHZhbHVlOiBpdGVtLmRhdGEsXG5cdFx0XHRcdH1cblx0XHRcdFx0cHJvQ29sb3IuZm9yRWFjaCgoaXQsIGlkeCkgPT4ge1xuXHRcdFx0XHRcdGlmIChpbmRleC50b1N0cmluZygpLmxlbmd0aCA+IDEpIHtcblx0XHRcdFx0XHRcdG9iai5jb2xvciA9IHByb0NvbG9yW2luZGV4LnRvU3RyaW5nKCkuc2xpY2UoLTEpXVxuXHRcdFx0XHRcdFx0aXRlbS5jb2xvciA9IHByb0NvbG9yW2luZGV4LnRvU3RyaW5nKCkuc2xpY2UoLTEpXVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRvYmouY29sb3IgPSBwcm9Db2xvcltpbmRleF1cblx0XHRcdFx0XHRcdGl0ZW0uY29sb3IgPSBwcm9Db2xvcltpbmRleF1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pXG5cdFx0XHRcdHNlcmllcy5wdXNoKG9iailcblx0XHRcdH0pXG5cdFx0XHRsZXQgcmVzID0ge1xuXHRcdFx0XHRzZXJpZXM6IFt7XG5cdFx0XHRcdFx0ZGF0YTogc2VyaWVzXG5cdFx0XHRcdH1dXG5cdFx0XHR9O1xuXHRcdFx0dGhpcy5jaGFydERhdGEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcykpO1xuXHRcdH0sXG5cdFx0Z2V0UGllQmFyd3hzcygpIHtcblx0XHRcdGxldCBwcm9Db2xvciA9IFsnIzVDQjJFRicsICcjM0U3OEM1JywgJyMwMDI5OUQnLCAnIzNFQUQ5RicsICcjM0YzQTk5JywgJyM1RUFDODgnLCAnIzVENTZEMCcsICcjQ0Q4RDIzJyxcblx0XHRcdFx0JyM5RjY1QzEnLCAnI0ZEODk3NCcsICcjQzc0NUI5JywgJyNGRjZCM0UnXG5cdFx0XHRdXG5cblx0XHRcdGxldCBzZXJpZXMgPSBbXVxuXHRcdFx0dGhpcy53eHNzVHlwZURhdGEuZm9yRWFjaCgoaXRlbSwgaW5kZXgpID0+IHtcblx0XHRcdFx0bGV0IG9iaiA9IHtcblx0XHRcdFx0XHRuYW1lOiBpdGVtLm5hbWUsXG5cdFx0XHRcdFx0dmFsdWU6IGl0ZW0uZGF0YSxcblx0XHRcdFx0fVxuXHRcdFx0XHRwcm9Db2xvci5mb3JFYWNoKChpdCwgaWR4KSA9PiB7XG5cdFx0XHRcdFx0aWYgKGluZGV4LnRvU3RyaW5nKCkubGVuZ3RoID4gMSkge1xuXHRcdFx0XHRcdFx0b2JqLmNvbG9yID0gcHJvQ29sb3JbaW5kZXgudG9TdHJpbmcoKS5zbGljZSgtMSldXG5cdFx0XHRcdFx0XHRpdGVtLmNvbG9yID0gcHJvQ29sb3JbaW5kZXgudG9TdHJpbmcoKS5zbGljZSgtMSldXG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdG9iai5jb2xvciA9IHByb0NvbG9yW2luZGV4XVxuXHRcdFx0XHRcdFx0aXRlbS5jb2xvciA9IHByb0NvbG9yW2luZGV4XVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSlcblx0XHRcdFx0c2VyaWVzLnB1c2gob2JqKVxuXHRcdFx0fSlcblx0XHRcdGxldCByZXMgPSB7XG5cdFx0XHRcdHNlcmllczogW3tcblx0XHRcdFx0XHRkYXRhOiBzZXJpZXNcblx0XHRcdFx0fV1cblx0XHRcdH07XG5cdFx0XHR0aGlzLmNoYXJ0RGF0YXd4c3MgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHJlcykpO1xuXHRcdH0sXG5cdFx0c2hvd0NvbG9yKGl0ZW0pIHtcblx0XHRcdHJldHVybiBgYmFja2dyb3VuZDogJHtpdGVtLmNvbG9yfWBcblx0XHR9LFxuXHRcdGNoYW5nZWZhdWx0VHlwZVRhYihpdGVtKSB7XG5cdFx0XHR0aGlzLmZhdWx0VHlwZVRhYkRhdGEuZm9yRWFjaChpdCA9PiB7XG5cdFx0XHRcdGl0LnNob3dDb2xvciA9IGZhbHNlXG5cdFx0XHRcdGlmIChpdC5uYW1lRU4gPT09IGl0ZW0ubmFtZUVOKSB7XG5cdFx0XHRcdFx0aXRlbS5zaG93Q29sb3IgPSB0cnVlXG5cdFx0XHRcdFx0dGhpcy5mYXVsdFR5cGVUYWIgPSBpdC5uYW1lRU5cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC8vIGlmICh0aGlzLmZhdWx0VHlwZVRhYiA9PT0gJ1hUJykge1xuXHRcdFx0Ly8gXHR0aGlzLmdldFBvd2VyQmFyKClcblx0XHRcdC8vIH0gZWxzZSB7XG5cdFx0XHQvLyBcdHRoaXMuZ2V0TGluZUJhcigpXG5cdFx0XHQvLyB9XG5cdFx0fSxcblx0XHRjaGFuZ2VZZWFyVGFiKGl0ZW0pIHtcblx0XHRcdHRoaXMueWVhckRhdGEuZm9yRWFjaChpdCA9PiB7XG5cdFx0XHRcdGl0LnNob3dDb2xvciA9IGZhbHNlXG5cdFx0XHRcdGlmIChpdC5uYW1lRU4gPT09IGl0ZW0ubmFtZUVOKSB7XG5cdFx0XHRcdFx0aXRlbS5zaG93Q29sb3IgPSB0cnVlXG5cdFx0XHRcdFx0dGhpcy55ZWFyVGFiID0gaXQubmFtZUVOXG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///139\n");
  14156. /***/ }),
  14157. /* 140 */
  14158. /*!**************************************************************************!*\
  14159. !*** D:/Intelligent/jn_uniapp/jn_app/pages/report/index.vue?mpType=page ***!
  14160. \**************************************************************************/
  14161. /*! no static exports found */
  14162. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14163. "use strict";
  14164. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=21a5f300&mpType=page */ 141);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 143);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/report/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTQwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjFhNWYzMDAmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL3JlcG9ydC9pbmRleC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///140\n");
  14165. /***/ }),
  14166. /* 141 */
  14167. /*!********************************************************************************************************!*\
  14168. !*** D:/Intelligent/jn_uniapp/jn_app/pages/report/index.vue?vue&type=template&id=21a5f300&mpType=page ***!
  14169. \********************************************************************************************************/
  14170. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  14171. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14172. "use strict";
  14173. __webpack_require__.r(__webpack_exports__);
  14174. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=21a5f300&mpType=page */ 142);
  14175. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
  14176. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  14177. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  14178. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_21a5f300_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
  14179. /***/ }),
  14180. /* 142 */
  14181. /*!************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  14182. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/report/index.vue?vue&type=template&id=21a5f300&mpType=page ***!
  14183. \************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  14184. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  14185. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14186. "use strict";
  14187. __webpack_require__.r(__webpack_exports__);
  14188. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  14189. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  14190. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  14191. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  14192. var components
  14193. var render = function () {
  14194. var _vm = this
  14195. var _h = _vm.$createElement
  14196. var _c = _vm._self._c || _h
  14197. return _c("view", { staticClass: _vm._$s(0, "sc", "home"), attrs: { _i: 0 } })
  14198. }
  14199. var recyclableRender = false
  14200. var staticRenderFns = []
  14201. render._withStripped = true
  14202. /***/ }),
  14203. /* 143 */
  14204. /*!**************************************************************************************************!*\
  14205. !*** D:/Intelligent/jn_uniapp/jn_app/pages/report/index.vue?vue&type=script&lang=js&mpType=page ***!
  14206. \**************************************************************************************************/
  14207. /*! no static exports found */
  14208. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14209. "use strict";
  14210. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 144);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIxNDMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///143\n");
  14211. /***/ }),
  14212. /* 144 */
  14213. /*!*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  14214. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/report/index.vue?vue&type=script&lang=js&mpType=page ***!
  14215. \*******************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  14216. /*! no static exports found */
  14217. /***/ (function(module, exports, __webpack_require__) {
  14218. "use strict";
  14219. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\nvar _default = {\n onLoad: function onLoad() {}\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvcmVwb3J0L2luZGV4LnZ1ZSJdLCJuYW1lcyI6WyJvbkxvYWQiXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBLGVBRWU7RUFDZEEsTUFBTSxFQUFFLGtCQUFXLENBQUM7QUFDckIsQ0FBQztBQUFBIiwiZmlsZSI6IjE0NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuZXhwb3J0IGRlZmF1bHQge1xuXHRvbkxvYWQ6IGZ1bmN0aW9uKCkge31cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///144\n");
  14220. /***/ }),
  14221. /* 145 */
  14222. /*!************************************************************************!*\
  14223. !*** D:/Intelligent/jn_uniapp/jn_app/pages/warn/index.vue?mpType=page ***!
  14224. \************************************************************************/
  14225. /*! no static exports found */
  14226. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14227. "use strict";
  14228. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./index.vue?vue&type=template&id=b3a969dc&mpType=page */ 146);\n/* harmony import */ var _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.vue?vue&type=script&lang=js&mpType=page */ 148);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\n\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(\n _index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n _index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"render\"],\n _index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"staticRenderFns\"],\n false,\n null,\n null,\n null,\n false,\n _index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__[\"components\"],\n renderjs\n)\n\ncomponent.options.__file = \"pages/warn/index.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBNkg7QUFDN0g7QUFDb0U7QUFDTDs7O0FBRy9EO0FBQ2lOO0FBQ2pOLGdCQUFnQixxTkFBVTtBQUMxQixFQUFFLHNGQUFNO0FBQ1IsRUFBRSwyRkFBTTtBQUNSLEVBQUUsb0dBQWU7QUFDakI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEVBQUUsK0ZBQVU7QUFDWjtBQUNBOztBQUVBO0FBQ2UsZ0YiLCJmaWxlIjoiMTQ1LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMsIHJlY3ljbGFibGVSZW5kZXIsIGNvbXBvbmVudHMgfSBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YjNhOTY5ZGMmbXBUeXBlPXBhZ2VcIlxudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiXG5leHBvcnQgKiBmcm9tIFwiLi9pbmRleC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmbXBUeXBlPXBhZ2VcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGwsXG4gIGZhbHNlLFxuICBjb21wb25lbnRzLFxuICByZW5kZXJqc1xuKVxuXG5jb21wb25lbnQub3B0aW9ucy5fX2ZpbGUgPSBcInBhZ2VzL3dhcm4vaW5kZXgudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///145\n");
  14229. /***/ }),
  14230. /* 146 */
  14231. /*!******************************************************************************************************!*\
  14232. !*** D:/Intelligent/jn_uniapp/jn_app/pages/warn/index.vue?vue&type=template&id=b3a969dc&mpType=page ***!
  14233. \******************************************************************************************************/
  14234. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  14235. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14236. "use strict";
  14237. __webpack_require__.r(__webpack_exports__);
  14238. /* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=template&id=b3a969dc&mpType=page */ 147);
  14239. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "render", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__["render"]; });
  14240. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__["staticRenderFns"]; });
  14241. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__["recyclableRender"]; });
  14242. /* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "components", function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_11_0_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_filter_modules_template_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_page_meta_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_template_id_b3a969dc_mpType_page__WEBPACK_IMPORTED_MODULE_0__["components"]; });
  14243. /***/ }),
  14244. /* 147 */
  14245. /*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  14246. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--11-0!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/filter-modules-template.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/page-meta.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/warn/index.vue?vue&type=template&id=b3a969dc&mpType=page ***!
  14247. \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  14248. /*! exports provided: render, staticRenderFns, recyclableRender, components */
  14249. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14250. "use strict";
  14251. __webpack_require__.r(__webpack_exports__);
  14252. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "render", function() { return render; });
  14253. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "staticRenderFns", function() { return staticRenderFns; });
  14254. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "recyclableRender", function() { return recyclableRender; });
  14255. /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "components", function() { return components; });
  14256. var components
  14257. var render = function () {
  14258. var _vm = this
  14259. var _h = _vm.$createElement
  14260. var _c = _vm._self._c || _h
  14261. return _c("view", { staticClass: _vm._$s(0, "sc", "home"), attrs: { _i: 0 } })
  14262. }
  14263. var recyclableRender = false
  14264. var staticRenderFns = []
  14265. render._withStripped = true
  14266. /***/ }),
  14267. /* 148 */
  14268. /*!************************************************************************************************!*\
  14269. !*** D:/Intelligent/jn_uniapp/jn_app/pages/warn/index.vue?vue&type=script&lang=js&mpType=page ***!
  14270. \************************************************************************************************/
  14271. /*! no static exports found */
  14272. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14273. "use strict";
  14274. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./index.vue?vue&type=script&lang=js&mpType=page */ 149);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_script_lang_js_mpType_page__WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQW91QixDQUFnQixzdUJBQUcsRUFBQyIsImZpbGUiOiIxNDguanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL2luZGV4LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZtcFR5cGU9cGFnZVwiIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///148\n");
  14275. /***/ }),
  14276. /* 149 */
  14277. /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  14278. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/pages/warn/index.vue?vue&type=script&lang=js&mpType=page ***!
  14279. \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  14280. /*! no static exports found */
  14281. /***/ (function(module, exports, __webpack_require__) {
  14282. "use strict";
  14283. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n//\n//\n//\n//\n//\n//\nvar _default = {\n onLoad: function onLoad() {}\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvd2Fybi9pbmRleC52dWUiXSwibmFtZXMiOlsib25Mb2FkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSxlQUVlO0VBQ2RBLE1BQU0sRUFBRSxrQkFBVyxDQUFDO0FBQ3JCLENBQUM7QUFBQSIsImZpbGUiOiIxNDkuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbmV4cG9ydCBkZWZhdWx0IHtcblx0b25Mb2FkOiBmdW5jdGlvbigpIHt9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///149\n");
  14284. /***/ }),
  14285. /* 150 */
  14286. /*!***********************************************!*\
  14287. !*** D:/Intelligent/jn_uniapp/jn_app/App.vue ***!
  14288. \***********************************************/
  14289. /*! no static exports found */
  14290. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14291. "use strict";
  14292. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./App.vue?vue&type=script&lang=js& */ 151);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib/runtime/componentNormalizer.js */ 18);\nvar render, staticRenderFns, recyclableRender, components\nvar renderjs\n\n\n\n\n/* normalize component */\n\nvar component = Object(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n _App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n render,\n staticRenderFns,\n false,\n null,\n null,\n null,\n false,\n components,\n renderjs\n)\n\ncomponent.options.__file = \"App.vue\"\n/* harmony default export */ __webpack_exports__[\"default\"] = (component.exports);//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUN1RDtBQUNMOzs7QUFHbEQ7QUFDMk07QUFDM00sZ0JBQWdCLHFOQUFVO0FBQzFCLEVBQUUseUVBQU07QUFDUjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNlLGdGIiwiZmlsZSI6IjE1MC5qcyIsInNvdXJjZXNDb250ZW50IjpbInZhciByZW5kZXIsIHN0YXRpY1JlbmRlckZucywgcmVjeWNsYWJsZVJlbmRlciwgY29tcG9uZW50c1xudmFyIHJlbmRlcmpzXG5pbXBvcnQgc2NyaXB0IGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcbmV4cG9ydCAqIGZyb20gXCIuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCJcblxuXG4vKiBub3JtYWxpemUgY29tcG9uZW50ICovXG5pbXBvcnQgbm9ybWFsaXplciBmcm9tIFwiIS4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanNcIlxudmFyIGNvbXBvbmVudCA9IG5vcm1hbGl6ZXIoXG4gIHNjcmlwdCxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZhbHNlLFxuICBudWxsLFxuICBudWxsLFxuICBudWxsLFxuICBmYWxzZSxcbiAgY29tcG9uZW50cyxcbiAgcmVuZGVyanNcbilcblxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJBcHAudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///150\n");
  14293. /***/ }),
  14294. /* 151 */
  14295. /*!************************************************************************!*\
  14296. !*** D:/Intelligent/jn_uniapp/jn_app/App.vue?vue&type=script&lang=js& ***!
  14297. \************************************************************************/
  14298. /*! no static exports found */
  14299. /***/ (function(module, __webpack_exports__, __webpack_require__) {
  14300. "use strict";
  14301. eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/babel-loader/lib!../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!../../../软件/HBuilderX/HBuilderX.3.2.2.20210818.full/HBuilderX/plugins/uniapp-cli/node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!./App.vue?vue&type=script&lang=js& */ 152);\n/* harmony import */ var _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__) if([\"default\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__));\n /* harmony default export */ __webpack_exports__[\"default\"] = (_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_babel_loader_lib_index_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_preprocess_loader_index_js_ref_7_1_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_webpack_uni_app_loader_using_components_js_HBuilderX_HBuilderX_3_2_2_20210818_full_HBuilderX_plugins_uniapp_cli_node_modules_dcloudio_vue_cli_plugin_uni_packages_vue_loader_lib_index_js_vue_loader_options_App_vue_vue_type_script_lang_js___WEBPACK_IMPORTED_MODULE_0___default.a); //# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQStyQixDQUFnQix5dEJBQUcsRUFBQyIsImZpbGUiOiIxNTEuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay1wcmVwcm9jZXNzLWxvYWRlci9pbmRleC5qcz8/cmVmLS03LTEhLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9AZGNsb3VkaW8vdnVlLWNsaS1wbHVnaW4tdW5pL3BhY2thZ2VzL3dlYnBhY2stdW5pLWFwcC1sb2FkZXIvdXNpbmctY29tcG9uZW50cy5qcyEuLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL0FwcC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anMmXCI7IGV4cG9ydCBkZWZhdWx0IG1vZDsgZXhwb3J0ICogZnJvbSBcIi0hLi4vLi4vLi4v6L2v5Lu2L0hCdWlsZGVyWC9IQnVpbGRlclguMy4yLjIuMjAyMTA4MTguZnVsbC9IQnVpbGRlclgvcGx1Z2lucy91bmlhcHAtY2xpL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy93ZWJwYWNrLXByZXByb2Nlc3MtbG9hZGVyL2luZGV4LmpzPz9yZWYtLTctMSEuLi8uLi8uLi/ova/ku7YvSEJ1aWxkZXJYL0hCdWlsZGVyWC4zLjIuMi4yMDIxMDgxOC5mdWxsL0hCdWlsZGVyWC9wbHVnaW5zL3VuaWFwcC1jbGkvbm9kZV9tb2R1bGVzL0BkY2xvdWRpby92dWUtY2xpLXBsdWdpbi11bmkvcGFja2FnZXMvd2VicGFjay11bmktYXBwLWxvYWRlci91c2luZy1jb21wb25lbnRzLmpzIS4uLy4uLy4uL+i9r+S7ti9IQnVpbGRlclgvSEJ1aWxkZXJYLjMuMi4yLjIwMjEwODE4LmZ1bGwvSEJ1aWxkZXJYL3BsdWdpbnMvdW5pYXBwLWNsaS9ub2RlX21vZHVsZXMvQGRjbG91ZGlvL3Z1ZS1jbGktcGx1Z2luLXVuaS9wYWNrYWdlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vQXBwLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qcyZcIiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///151\n");
  14302. /***/ }),
  14303. /* 152 */
  14304. /*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
  14305. !*** ./node_modules/babel-loader/lib!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-preprocess-loader??ref--7-1!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/webpack-uni-app-loader/using-components.js!./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vue-loader/lib??vue-loader-options!D:/Intelligent/jn_uniapp/jn_app/App.vue?vue&type=script&lang=js& ***!
  14306. \*****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
  14307. /*! no static exports found */
  14308. /***/ (function(module, exports, __webpack_require__) {
  14309. "use strict";
  14310. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _config = _interopRequireDefault(__webpack_require__(/*! ./config */ 153));\nvar _store = _interopRequireDefault(__webpack_require__(/*! @/store */ 154));\nvar _auth = __webpack_require__(/*! @/utils/auth */ 161);\nvar _default = {\n onLaunch: function onLaunch() {\n this.initApp();\n },\n methods: {\n // 初始化应用\n initApp: function initApp() {\n // 初始化应用配置\n this.initConfig();\n // 检查用户登录状态\n },\n initConfig: function initConfig() {\n this.globalData.config = _config.default;\n },\n checkLogin: function checkLogin() {\n if (!(0, _auth.getAccessToken)()) {\n this.$tab.reLaunch('/pages/login');\n }\n }\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vQXBwLnZ1ZSJdLCJuYW1lcyI6WyJvbkxhdW5jaCIsImluaXRBcHAiLCJtZXRob2RzIiwiaW5pdENvbmZpZyIsImdsb2JhbERhdGEiLCJjb25maWciLCJjaGVja0xvZ2luIiwiZ2V0QWNjZXNzVG9rZW4iLCIkdGFiIiwicmVMYXVuY2giXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFDQTtBQUNBO0FBQ0E7QUFBNkMsZUFFOUI7RUFDYkEsUUFBUSxFQUFFLG9CQUFXO0lBQ25CLElBQUksQ0FBQ0MsT0FBTyxFQUFFO0VBQ2hCLENBQUM7RUFDREMsT0FBTyxFQUFFO0lBQ1A7SUFDQUQsT0FBTyxxQkFBRztNQUNSO01BQ0EsSUFBSSxDQUFDRSxVQUFVLEVBQUU7TUFDakI7SUFJRixDQUFDO0lBQ0RBLFVBQVUsd0JBQUc7TUFDWCxJQUFJLENBQUNDLFVBQVUsQ0FBQ0MsTUFBTSxHQUFHQSxlQUFNO0lBQ2pDLENBQUM7SUFDREMsVUFBVSx3QkFBRztNQUNYLElBQUksQ0FBQyxJQUFBQyxvQkFBYyxHQUFFLEVBQUU7UUFDckIsSUFBSSxDQUFDQyxJQUFJLENBQUNDLFFBQVEsQ0FBQyxjQUFjLENBQUM7TUFDcEM7SUFDRjtFQUNGO0FBQ0YsQ0FBQztBQUFBIiwiZmlsZSI6IjE1Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IGNvbmZpZyBmcm9tICcuL2NvbmZpZydcbmltcG9ydCBzdG9yZSBmcm9tICdAL3N0b3JlJ1xuaW1wb3J0IHsgZ2V0QWNjZXNzVG9rZW4gfSBmcm9tICdAL3V0aWxzL2F1dGgnXG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgb25MYXVuY2g6IGZ1bmN0aW9uKCkge1xuICAgIHRoaXMuaW5pdEFwcCgpXG4gIH0sXG4gIG1ldGhvZHM6IHtcbiAgICAvLyDliJ3lp4vljJblupTnlKhcbiAgICBpbml0QXBwKCkge1xuICAgICAgLy8g5Yid5aeL5YyW5bqU55So6YWN572uXG4gICAgICB0aGlzLmluaXRDb25maWcoKVxuICAgICAgLy8g5qOA5p+l55So5oi355m75b2V54q25oCBXG5cblxuXG4gICAgfSxcbiAgICBpbml0Q29uZmlnKCkge1xuICAgICAgdGhpcy5nbG9iYWxEYXRhLmNvbmZpZyA9IGNvbmZpZ1xuICAgIH0sXG4gICAgY2hlY2tMb2dpbigpIHtcbiAgICAgIGlmICghZ2V0QWNjZXNzVG9rZW4oKSkge1xuICAgICAgICB0aGlzLiR0YWIucmVMYXVuY2goJy9wYWdlcy9sb2dpbicpXG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///152\n");
  14311. /***/ }),
  14312. /* 153 */
  14313. /*!*************************************************!*\
  14314. !*** D:/Intelligent/jn_uniapp/jn_app/config.js ***!
  14315. \*************************************************/
  14316. /*! no static exports found */
  14317. /***/ (function(module, exports) {
  14318. eval("// 应用全局配置\nmodule.exports = {\n // baseUrl: 'http://api-dashboard.yudao.iocoder.cn',\n baseUrl: 'http://192.168.2.7:48080',\n baseApi: '/admin-api',\n // 应用信息\n appInfo: {\n // 应用名称\n name: \"yudao-app\",\n // 应用版本\n version: \"1.0.0\",\n // 应用logo\n logo: \"/static/logo.png\",\n // 官方网站\n site_url: \"https://iocoder.cn\",\n // 政策协议\n agreements: [{\n title: \"隐私政策\",\n url: \"https://iocoder.cn\"\n }, {\n title: \"用户服务协议\",\n url: \"https://iocoder.cn\"\n }]\n }\n};//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vY29uZmlnLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJiYXNlVXJsIiwiYmFzZUFwaSIsImFwcEluZm8iLCJuYW1lIiwidmVyc2lvbiIsImxvZ28iLCJzaXRlX3VybCIsImFncmVlbWVudHMiLCJ0aXRsZSIsInVybCJdLCJtYXBwaW5ncyI6IkFBQUE7QUFDQUEsTUFBTSxDQUFDQyxPQUFPLEdBQUc7RUFDZjtFQUNBQyxPQUFPLEVBQUUsMEJBQTBCO0VBQ25DQyxPQUFPLEVBQUUsWUFBWTtFQUNyQjtFQUNBQyxPQUFPLEVBQUU7SUFDUDtJQUNBQyxJQUFJLEVBQUUsV0FBVztJQUNqQjtJQUNBQyxPQUFPLEVBQUUsT0FBTztJQUNoQjtJQUNBQyxJQUFJLEVBQUUsa0JBQWtCO0lBQ3hCO0lBQ0FDLFFBQVEsRUFBRSxvQkFBb0I7SUFDOUI7SUFDQUMsVUFBVSxFQUFFLENBQUM7TUFDVEMsS0FBSyxFQUFFLE1BQU07TUFDYkMsR0FBRyxFQUFFO0lBQ1AsQ0FBQyxFQUNEO01BQ0VELEtBQUssRUFBRSxRQUFRO01BQ2ZDLEdBQUcsRUFBRTtJQUNQLENBQUM7RUFFTDtBQUNGLENBQUMiLCJmaWxlIjoiMTUzLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8g5bqU55So5YWo5bGA6YWN572uXHJcbm1vZHVsZS5leHBvcnRzID0ge1xyXG4gIC8vIGJhc2VVcmw6ICdodHRwOi8vYXBpLWRhc2hib2FyZC55dWRhby5pb2NvZGVyLmNuJyxcclxuICBiYXNlVXJsOiAnaHR0cDovLzE5Mi4xNjguMi43OjQ4MDgwJyxcclxuICBiYXNlQXBpOiAnL2FkbWluLWFwaScsXHJcbiAgLy8g5bqU55So5L+h5oGvXHJcbiAgYXBwSW5mbzoge1xyXG4gICAgLy8g5bqU55So5ZCN56ewXHJcbiAgICBuYW1lOiBcInl1ZGFvLWFwcFwiLFxyXG4gICAgLy8g5bqU55So54mI5pysXHJcbiAgICB2ZXJzaW9uOiBcIjEuMC4wXCIsXHJcbiAgICAvLyDlupTnlKhsb2dvXHJcbiAgICBsb2dvOiBcIi9zdGF0aWMvbG9nby5wbmdcIixcclxuICAgIC8vIOWumOaWuee9keermVxyXG4gICAgc2l0ZV91cmw6IFwiaHR0cHM6Ly9pb2NvZGVyLmNuXCIsXHJcbiAgICAvLyDmlL/nrZbljY/orq5cclxuICAgIGFncmVlbWVudHM6IFt7XHJcbiAgICAgICAgdGl0bGU6IFwi6ZqQ56eB5pS/562WXCIsXHJcbiAgICAgICAgdXJsOiBcImh0dHBzOi8vaW9jb2Rlci5jblwiXHJcbiAgICAgIH0sXHJcbiAgICAgIHtcclxuICAgICAgICB0aXRsZTogXCLnlKjmiLfmnI3liqHljY/orq5cIixcclxuICAgICAgICB1cmw6IFwiaHR0cHM6Ly9pb2NvZGVyLmNuXCJcclxuICAgICAgfVxyXG4gICAgXVxyXG4gIH1cclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///153\n");
  14319. /***/ }),
  14320. /* 154 */
  14321. /*!******************************************************!*\
  14322. !*** D:/Intelligent/jn_uniapp/jn_app/store/index.js ***!
  14323. \******************************************************/
  14324. /*! no static exports found */
  14325. /***/ (function(module, exports, __webpack_require__) {
  14326. "use strict";
  14327. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 101));\nvar _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 155));\nvar _user = _interopRequireDefault(__webpack_require__(/*! @/store/modules/user */ 156));\nvar _getters = _interopRequireDefault(__webpack_require__(/*! ./getters */ 165));\n_vue.default.use(_vuex.default);\nvar store = new _vuex.default.Store({\n modules: {\n user: _user.default\n },\n getters: _getters.default\n});\nvar _default = store;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvaW5kZXguanMiXSwibmFtZXMiOlsiVnVlIiwidXNlIiwiVnVleCIsInN0b3JlIiwiU3RvcmUiLCJtb2R1bGVzIiwidXNlciIsImdldHRlcnMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBQSxZQUFHLENBQUNDLEdBQUcsQ0FBQ0MsYUFBSSxDQUFDO0FBRWIsSUFBTUMsS0FBSyxHQUFHLElBQUlELGFBQUksQ0FBQ0UsS0FBSyxDQUFDO0VBQzNCQyxPQUFPLEVBQUU7SUFDUEMsSUFBSSxFQUFKQTtFQUNGLENBQUM7RUFDREMsT0FBTyxFQUFQQTtBQUNGLENBQUMsQ0FBQztBQUFBLGVBRWFKLEtBQUs7QUFBQSIsImZpbGUiOiIxNTQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcclxuaW1wb3J0IFZ1ZXggZnJvbSAndnVleCdcclxuaW1wb3J0IHVzZXIgZnJvbSAnQC9zdG9yZS9tb2R1bGVzL3VzZXInXHJcbmltcG9ydCBnZXR0ZXJzIGZyb20gJy4vZ2V0dGVycydcclxuXHJcblZ1ZS51c2UoVnVleClcclxuXHJcbmNvbnN0IHN0b3JlID0gbmV3IFZ1ZXguU3RvcmUoe1xyXG4gIG1vZHVsZXM6IHtcclxuICAgIHVzZXJcclxuICB9LFxyXG4gIGdldHRlcnNcclxufSlcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHN0b3JlXHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///154\n");
  14328. /***/ }),
  14329. /* 155 */
  14330. /*!**************************************************************************************!*\
  14331. !*** ./node_modules/@dcloudio/vue-cli-plugin-uni/packages/vuex3/dist/vuex.common.js ***!
  14332. \**************************************************************************************/
  14333. /*! no static exports found */
  14334. /***/ (function(module, exports, __webpack_require__) {
  14335. "use strict";
  14336. /* WEBPACK VAR INJECTION */(function(global) {/*!
  14337. * vuex v3.6.2
  14338. * (c) 2021 Evan You
  14339. * @license MIT
  14340. */
  14341. function applyMixin (Vue) {
  14342. var version = Number(Vue.version.split('.')[0]);
  14343. if (version >= 2) {
  14344. Vue.mixin({ beforeCreate: vuexInit });
  14345. } else {
  14346. // override init and inject vuex init procedure
  14347. // for 1.x backwards compatibility.
  14348. var _init = Vue.prototype._init;
  14349. Vue.prototype._init = function (options) {
  14350. if ( options === void 0 ) options = {};
  14351. options.init = options.init
  14352. ? [vuexInit].concat(options.init)
  14353. : vuexInit;
  14354. _init.call(this, options);
  14355. };
  14356. }
  14357. /**
  14358. * Vuex init hook, injected into each instances init hooks list.
  14359. */
  14360. function vuexInit () {
  14361. var options = this.$options;
  14362. // store injection
  14363. if (options.store) {
  14364. this.$store = typeof options.store === 'function'
  14365. ? options.store()
  14366. : options.store;
  14367. } else if (options.parent && options.parent.$store) {
  14368. this.$store = options.parent.$store;
  14369. }
  14370. }
  14371. }
  14372. var target = typeof window !== 'undefined'
  14373. ? window
  14374. : typeof global !== 'undefined'
  14375. ? global
  14376. : {};
  14377. var devtoolHook = target.__VUE_DEVTOOLS_GLOBAL_HOOK__;
  14378. function devtoolPlugin (store) {
  14379. if (!devtoolHook) { return }
  14380. store._devtoolHook = devtoolHook;
  14381. devtoolHook.emit('vuex:init', store);
  14382. devtoolHook.on('vuex:travel-to-state', function (targetState) {
  14383. store.replaceState(targetState);
  14384. });
  14385. store.subscribe(function (mutation, state) {
  14386. devtoolHook.emit('vuex:mutation', mutation, state);
  14387. }, { prepend: true });
  14388. store.subscribeAction(function (action, state) {
  14389. devtoolHook.emit('vuex:action', action, state);
  14390. }, { prepend: true });
  14391. }
  14392. /**
  14393. * Get the first item that pass the test
  14394. * by second argument function
  14395. *
  14396. * @param {Array} list
  14397. * @param {Function} f
  14398. * @return {*}
  14399. */
  14400. function find (list, f) {
  14401. return list.filter(f)[0]
  14402. }
  14403. /**
  14404. * Deep copy the given object considering circular structure.
  14405. * This function caches all nested objects and its copies.
  14406. * If it detects circular structure, use cached copy to avoid infinite loop.
  14407. *
  14408. * @param {*} obj
  14409. * @param {Array<Object>} cache
  14410. * @return {*}
  14411. */
  14412. function deepCopy (obj, cache) {
  14413. if ( cache === void 0 ) cache = [];
  14414. // just return if obj is immutable value
  14415. if (obj === null || typeof obj !== 'object') {
  14416. return obj
  14417. }
  14418. // if obj is hit, it is in circular structure
  14419. var hit = find(cache, function (c) { return c.original === obj; });
  14420. if (hit) {
  14421. return hit.copy
  14422. }
  14423. var copy = Array.isArray(obj) ? [] : {};
  14424. // put the copy into cache at first
  14425. // because we want to refer it in recursive deepCopy
  14426. cache.push({
  14427. original: obj,
  14428. copy: copy
  14429. });
  14430. Object.keys(obj).forEach(function (key) {
  14431. copy[key] = deepCopy(obj[key], cache);
  14432. });
  14433. return copy
  14434. }
  14435. /**
  14436. * forEach for object
  14437. */
  14438. function forEachValue (obj, fn) {
  14439. Object.keys(obj).forEach(function (key) { return fn(obj[key], key); });
  14440. }
  14441. function isObject (obj) {
  14442. return obj !== null && typeof obj === 'object'
  14443. }
  14444. function isPromise (val) {
  14445. return val && typeof val.then === 'function'
  14446. }
  14447. function assert (condition, msg) {
  14448. if (!condition) { throw new Error(("[vuex] " + msg)) }
  14449. }
  14450. function partial (fn, arg) {
  14451. return function () {
  14452. return fn(arg)
  14453. }
  14454. }
  14455. // Base data struct for store's module, package with some attribute and method
  14456. var Module = function Module (rawModule, runtime) {
  14457. this.runtime = runtime;
  14458. // Store some children item
  14459. this._children = Object.create(null);
  14460. // Store the origin module object which passed by programmer
  14461. this._rawModule = rawModule;
  14462. var rawState = rawModule.state;
  14463. // Store the origin module's state
  14464. this.state = (typeof rawState === 'function' ? rawState() : rawState) || {};
  14465. };
  14466. var prototypeAccessors = { namespaced: { configurable: true } };
  14467. prototypeAccessors.namespaced.get = function () {
  14468. return !!this._rawModule.namespaced
  14469. };
  14470. Module.prototype.addChild = function addChild (key, module) {
  14471. this._children[key] = module;
  14472. };
  14473. Module.prototype.removeChild = function removeChild (key) {
  14474. delete this._children[key];
  14475. };
  14476. Module.prototype.getChild = function getChild (key) {
  14477. return this._children[key]
  14478. };
  14479. Module.prototype.hasChild = function hasChild (key) {
  14480. return key in this._children
  14481. };
  14482. Module.prototype.update = function update (rawModule) {
  14483. this._rawModule.namespaced = rawModule.namespaced;
  14484. if (rawModule.actions) {
  14485. this._rawModule.actions = rawModule.actions;
  14486. }
  14487. if (rawModule.mutations) {
  14488. this._rawModule.mutations = rawModule.mutations;
  14489. }
  14490. if (rawModule.getters) {
  14491. this._rawModule.getters = rawModule.getters;
  14492. }
  14493. };
  14494. Module.prototype.forEachChild = function forEachChild (fn) {
  14495. forEachValue(this._children, fn);
  14496. };
  14497. Module.prototype.forEachGetter = function forEachGetter (fn) {
  14498. if (this._rawModule.getters) {
  14499. forEachValue(this._rawModule.getters, fn);
  14500. }
  14501. };
  14502. Module.prototype.forEachAction = function forEachAction (fn) {
  14503. if (this._rawModule.actions) {
  14504. forEachValue(this._rawModule.actions, fn);
  14505. }
  14506. };
  14507. Module.prototype.forEachMutation = function forEachMutation (fn) {
  14508. if (this._rawModule.mutations) {
  14509. forEachValue(this._rawModule.mutations, fn);
  14510. }
  14511. };
  14512. Object.defineProperties( Module.prototype, prototypeAccessors );
  14513. var ModuleCollection = function ModuleCollection (rawRootModule) {
  14514. // register root module (Vuex.Store options)
  14515. this.register([], rawRootModule, false);
  14516. };
  14517. ModuleCollection.prototype.get = function get (path) {
  14518. return path.reduce(function (module, key) {
  14519. return module.getChild(key)
  14520. }, this.root)
  14521. };
  14522. ModuleCollection.prototype.getNamespace = function getNamespace (path) {
  14523. var module = this.root;
  14524. return path.reduce(function (namespace, key) {
  14525. module = module.getChild(key);
  14526. return namespace + (module.namespaced ? key + '/' : '')
  14527. }, '')
  14528. };
  14529. ModuleCollection.prototype.update = function update$1 (rawRootModule) {
  14530. update([], this.root, rawRootModule);
  14531. };
  14532. ModuleCollection.prototype.register = function register (path, rawModule, runtime) {
  14533. var this$1 = this;
  14534. if ( runtime === void 0 ) runtime = true;
  14535. if ((true)) {
  14536. assertRawModule(path, rawModule);
  14537. }
  14538. var newModule = new Module(rawModule, runtime);
  14539. if (path.length === 0) {
  14540. this.root = newModule;
  14541. } else {
  14542. var parent = this.get(path.slice(0, -1));
  14543. parent.addChild(path[path.length - 1], newModule);
  14544. }
  14545. // register nested modules
  14546. if (rawModule.modules) {
  14547. forEachValue(rawModule.modules, function (rawChildModule, key) {
  14548. this$1.register(path.concat(key), rawChildModule, runtime);
  14549. });
  14550. }
  14551. };
  14552. ModuleCollection.prototype.unregister = function unregister (path) {
  14553. var parent = this.get(path.slice(0, -1));
  14554. var key = path[path.length - 1];
  14555. var child = parent.getChild(key);
  14556. if (!child) {
  14557. if ((true)) {
  14558. console.warn(
  14559. "[vuex] trying to unregister module '" + key + "', which is " +
  14560. "not registered"
  14561. );
  14562. }
  14563. return
  14564. }
  14565. if (!child.runtime) {
  14566. return
  14567. }
  14568. parent.removeChild(key);
  14569. };
  14570. ModuleCollection.prototype.isRegistered = function isRegistered (path) {
  14571. var parent = this.get(path.slice(0, -1));
  14572. var key = path[path.length - 1];
  14573. if (parent) {
  14574. return parent.hasChild(key)
  14575. }
  14576. return false
  14577. };
  14578. function update (path, targetModule, newModule) {
  14579. if ((true)) {
  14580. assertRawModule(path, newModule);
  14581. }
  14582. // update target module
  14583. targetModule.update(newModule);
  14584. // update nested modules
  14585. if (newModule.modules) {
  14586. for (var key in newModule.modules) {
  14587. if (!targetModule.getChild(key)) {
  14588. if ((true)) {
  14589. console.warn(
  14590. "[vuex] trying to add a new module '" + key + "' on hot reloading, " +
  14591. 'manual reload is needed'
  14592. );
  14593. }
  14594. return
  14595. }
  14596. update(
  14597. path.concat(key),
  14598. targetModule.getChild(key),
  14599. newModule.modules[key]
  14600. );
  14601. }
  14602. }
  14603. }
  14604. var functionAssert = {
  14605. assert: function (value) { return typeof value === 'function'; },
  14606. expected: 'function'
  14607. };
  14608. var objectAssert = {
  14609. assert: function (value) { return typeof value === 'function' ||
  14610. (typeof value === 'object' && typeof value.handler === 'function'); },
  14611. expected: 'function or object with "handler" function'
  14612. };
  14613. var assertTypes = {
  14614. getters: functionAssert,
  14615. mutations: functionAssert,
  14616. actions: objectAssert
  14617. };
  14618. function assertRawModule (path, rawModule) {
  14619. Object.keys(assertTypes).forEach(function (key) {
  14620. if (!rawModule[key]) { return }
  14621. var assertOptions = assertTypes[key];
  14622. forEachValue(rawModule[key], function (value, type) {
  14623. assert(
  14624. assertOptions.assert(value),
  14625. makeAssertionMessage(path, key, type, value, assertOptions.expected)
  14626. );
  14627. });
  14628. });
  14629. }
  14630. function makeAssertionMessage (path, key, type, value, expected) {
  14631. var buf = key + " should be " + expected + " but \"" + key + "." + type + "\"";
  14632. if (path.length > 0) {
  14633. buf += " in module \"" + (path.join('.')) + "\"";
  14634. }
  14635. buf += " is " + (JSON.stringify(value)) + ".";
  14636. return buf
  14637. }
  14638. var Vue; // bind on install
  14639. var Store = function Store (options) {
  14640. var this$1 = this;
  14641. if ( options === void 0 ) options = {};
  14642. // Auto install if it is not done yet and `window` has `Vue`.
  14643. // To allow users to avoid auto-installation in some cases,
  14644. // this code should be placed here. See #731
  14645. if (!Vue && typeof window !== 'undefined' && window.Vue) {
  14646. install(window.Vue);
  14647. }
  14648. if ((true)) {
  14649. assert(Vue, "must call Vue.use(Vuex) before creating a store instance.");
  14650. assert(typeof Promise !== 'undefined', "vuex requires a Promise polyfill in this browser.");
  14651. assert(this instanceof Store, "store must be called with the new operator.");
  14652. }
  14653. var plugins = options.plugins; if ( plugins === void 0 ) plugins = [];
  14654. var strict = options.strict; if ( strict === void 0 ) strict = false;
  14655. // store internal state
  14656. this._committing = false;
  14657. this._actions = Object.create(null);
  14658. this._actionSubscribers = [];
  14659. this._mutations = Object.create(null);
  14660. this._wrappedGetters = Object.create(null);
  14661. this._modules = new ModuleCollection(options);
  14662. this._modulesNamespaceMap = Object.create(null);
  14663. this._subscribers = [];
  14664. this._watcherVM = new Vue();
  14665. this._makeLocalGettersCache = Object.create(null);
  14666. // bind commit and dispatch to self
  14667. var store = this;
  14668. var ref = this;
  14669. var dispatch = ref.dispatch;
  14670. var commit = ref.commit;
  14671. this.dispatch = function boundDispatch (type, payload) {
  14672. return dispatch.call(store, type, payload)
  14673. };
  14674. this.commit = function boundCommit (type, payload, options) {
  14675. return commit.call(store, type, payload, options)
  14676. };
  14677. // strict mode
  14678. this.strict = strict;
  14679. var state = this._modules.root.state;
  14680. // init root module.
  14681. // this also recursively registers all sub-modules
  14682. // and collects all module getters inside this._wrappedGetters
  14683. installModule(this, state, [], this._modules.root);
  14684. // initialize the store vm, which is responsible for the reactivity
  14685. // (also registers _wrappedGetters as computed properties)
  14686. resetStoreVM(this, state);
  14687. // apply plugins
  14688. plugins.forEach(function (plugin) { return plugin(this$1); });
  14689. var useDevtools = options.devtools !== undefined ? options.devtools : Vue.config.devtools;
  14690. if (useDevtools) {
  14691. devtoolPlugin(this);
  14692. }
  14693. };
  14694. var prototypeAccessors$1 = { state: { configurable: true } };
  14695. prototypeAccessors$1.state.get = function () {
  14696. return this._vm._data.$$state
  14697. };
  14698. prototypeAccessors$1.state.set = function (v) {
  14699. if ((true)) {
  14700. assert(false, "use store.replaceState() to explicit replace store state.");
  14701. }
  14702. };
  14703. Store.prototype.commit = function commit (_type, _payload, _options) {
  14704. var this$1 = this;
  14705. // check object-style commit
  14706. var ref = unifyObjectStyle(_type, _payload, _options);
  14707. var type = ref.type;
  14708. var payload = ref.payload;
  14709. var options = ref.options;
  14710. var mutation = { type: type, payload: payload };
  14711. var entry = this._mutations[type];
  14712. if (!entry) {
  14713. if ((true)) {
  14714. console.error(("[vuex] unknown mutation type: " + type));
  14715. }
  14716. return
  14717. }
  14718. this._withCommit(function () {
  14719. entry.forEach(function commitIterator (handler) {
  14720. handler(payload);
  14721. });
  14722. });
  14723. this._subscribers
  14724. .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe
  14725. .forEach(function (sub) { return sub(mutation, this$1.state); });
  14726. if (
  14727. ( true) &&
  14728. options && options.silent
  14729. ) {
  14730. console.warn(
  14731. "[vuex] mutation type: " + type + ". Silent option has been removed. " +
  14732. 'Use the filter functionality in the vue-devtools'
  14733. );
  14734. }
  14735. };
  14736. Store.prototype.dispatch = function dispatch (_type, _payload) {
  14737. var this$1 = this;
  14738. // check object-style dispatch
  14739. var ref = unifyObjectStyle(_type, _payload);
  14740. var type = ref.type;
  14741. var payload = ref.payload;
  14742. var action = { type: type, payload: payload };
  14743. var entry = this._actions[type];
  14744. if (!entry) {
  14745. if ((true)) {
  14746. console.error(("[vuex] unknown action type: " + type));
  14747. }
  14748. return
  14749. }
  14750. try {
  14751. this._actionSubscribers
  14752. .slice() // shallow copy to prevent iterator invalidation if subscriber synchronously calls unsubscribe
  14753. .filter(function (sub) { return sub.before; })
  14754. .forEach(function (sub) { return sub.before(action, this$1.state); });
  14755. } catch (e) {
  14756. if ((true)) {
  14757. console.warn("[vuex] error in before action subscribers: ");
  14758. console.error(e);
  14759. }
  14760. }
  14761. var result = entry.length > 1
  14762. ? Promise.all(entry.map(function (handler) { return handler(payload); }))
  14763. : entry[0](payload);
  14764. return new Promise(function (resolve, reject) {
  14765. result.then(function (res) {
  14766. try {
  14767. this$1._actionSubscribers
  14768. .filter(function (sub) { return sub.after; })
  14769. .forEach(function (sub) { return sub.after(action, this$1.state); });
  14770. } catch (e) {
  14771. if ((true)) {
  14772. console.warn("[vuex] error in after action subscribers: ");
  14773. console.error(e);
  14774. }
  14775. }
  14776. resolve(res);
  14777. }, function (error) {
  14778. try {
  14779. this$1._actionSubscribers
  14780. .filter(function (sub) { return sub.error; })
  14781. .forEach(function (sub) { return sub.error(action, this$1.state, error); });
  14782. } catch (e) {
  14783. if ((true)) {
  14784. console.warn("[vuex] error in error action subscribers: ");
  14785. console.error(e);
  14786. }
  14787. }
  14788. reject(error);
  14789. });
  14790. })
  14791. };
  14792. Store.prototype.subscribe = function subscribe (fn, options) {
  14793. return genericSubscribe(fn, this._subscribers, options)
  14794. };
  14795. Store.prototype.subscribeAction = function subscribeAction (fn, options) {
  14796. var subs = typeof fn === 'function' ? { before: fn } : fn;
  14797. return genericSubscribe(subs, this._actionSubscribers, options)
  14798. };
  14799. Store.prototype.watch = function watch (getter, cb, options) {
  14800. var this$1 = this;
  14801. if ((true)) {
  14802. assert(typeof getter === 'function', "store.watch only accepts a function.");
  14803. }
  14804. return this._watcherVM.$watch(function () { return getter(this$1.state, this$1.getters); }, cb, options)
  14805. };
  14806. Store.prototype.replaceState = function replaceState (state) {
  14807. var this$1 = this;
  14808. this._withCommit(function () {
  14809. this$1._vm._data.$$state = state;
  14810. });
  14811. };
  14812. Store.prototype.registerModule = function registerModule (path, rawModule, options) {
  14813. if ( options === void 0 ) options = {};
  14814. if (typeof path === 'string') { path = [path]; }
  14815. if ((true)) {
  14816. assert(Array.isArray(path), "module path must be a string or an Array.");
  14817. assert(path.length > 0, 'cannot register the root module by using registerModule.');
  14818. }
  14819. this._modules.register(path, rawModule);
  14820. installModule(this, this.state, path, this._modules.get(path), options.preserveState);
  14821. // reset store to update getters...
  14822. resetStoreVM(this, this.state);
  14823. };
  14824. Store.prototype.unregisterModule = function unregisterModule (path) {
  14825. var this$1 = this;
  14826. if (typeof path === 'string') { path = [path]; }
  14827. if ((true)) {
  14828. assert(Array.isArray(path), "module path must be a string or an Array.");
  14829. }
  14830. this._modules.unregister(path);
  14831. this._withCommit(function () {
  14832. var parentState = getNestedState(this$1.state, path.slice(0, -1));
  14833. Vue.delete(parentState, path[path.length - 1]);
  14834. });
  14835. resetStore(this);
  14836. };
  14837. Store.prototype.hasModule = function hasModule (path) {
  14838. if (typeof path === 'string') { path = [path]; }
  14839. if ((true)) {
  14840. assert(Array.isArray(path), "module path must be a string or an Array.");
  14841. }
  14842. return this._modules.isRegistered(path)
  14843. };
  14844. Store.prototype[[104,111,116,85,112,100,97,116,101].map(function (item) {return String.fromCharCode(item)}).join('')] = function (newOptions) {
  14845. this._modules.update(newOptions);
  14846. resetStore(this, true);
  14847. };
  14848. Store.prototype._withCommit = function _withCommit (fn) {
  14849. var committing = this._committing;
  14850. this._committing = true;
  14851. fn();
  14852. this._committing = committing;
  14853. };
  14854. Object.defineProperties( Store.prototype, prototypeAccessors$1 );
  14855. function genericSubscribe (fn, subs, options) {
  14856. if (subs.indexOf(fn) < 0) {
  14857. options && options.prepend
  14858. ? subs.unshift(fn)
  14859. : subs.push(fn);
  14860. }
  14861. return function () {
  14862. var i = subs.indexOf(fn);
  14863. if (i > -1) {
  14864. subs.splice(i, 1);
  14865. }
  14866. }
  14867. }
  14868. function resetStore (store, hot) {
  14869. store._actions = Object.create(null);
  14870. store._mutations = Object.create(null);
  14871. store._wrappedGetters = Object.create(null);
  14872. store._modulesNamespaceMap = Object.create(null);
  14873. var state = store.state;
  14874. // init all modules
  14875. installModule(store, state, [], store._modules.root, true);
  14876. // reset vm
  14877. resetStoreVM(store, state, hot);
  14878. }
  14879. function resetStoreVM (store, state, hot) {
  14880. var oldVm = store._vm;
  14881. // bind store public getters
  14882. store.getters = {};
  14883. // reset local getters cache
  14884. store._makeLocalGettersCache = Object.create(null);
  14885. var wrappedGetters = store._wrappedGetters;
  14886. var computed = {};
  14887. forEachValue(wrappedGetters, function (fn, key) {
  14888. // use computed to leverage its lazy-caching mechanism
  14889. // direct inline function use will lead to closure preserving oldVm.
  14890. // using partial to return function with only arguments preserved in closure environment.
  14891. computed[key] = partial(fn, store);
  14892. Object.defineProperty(store.getters, key, {
  14893. get: function () { return store._vm[key]; },
  14894. enumerable: true // for local getters
  14895. });
  14896. });
  14897. // use a Vue instance to store the state tree
  14898. // suppress warnings just in case the user has added
  14899. // some funky global mixins
  14900. var silent = Vue.config.silent;
  14901. Vue.config.silent = true;
  14902. store._vm = new Vue({
  14903. data: {
  14904. $$state: state
  14905. },
  14906. computed: computed
  14907. });
  14908. Vue.config.silent = silent;
  14909. // enable strict mode for new vm
  14910. if (store.strict) {
  14911. enableStrictMode(store);
  14912. }
  14913. if (oldVm) {
  14914. if (hot) {
  14915. // dispatch changes in all subscribed watchers
  14916. // to force getter re-evaluation for hot reloading.
  14917. store._withCommit(function () {
  14918. oldVm._data.$$state = null;
  14919. });
  14920. }
  14921. Vue.nextTick(function () { return oldVm.$destroy(); });
  14922. }
  14923. }
  14924. function installModule (store, rootState, path, module, hot) {
  14925. var isRoot = !path.length;
  14926. var namespace = store._modules.getNamespace(path);
  14927. // register in namespace map
  14928. if (module.namespaced) {
  14929. if (store._modulesNamespaceMap[namespace] && ("development" !== 'production')) {
  14930. console.error(("[vuex] duplicate namespace " + namespace + " for the namespaced module " + (path.join('/'))));
  14931. }
  14932. store._modulesNamespaceMap[namespace] = module;
  14933. }
  14934. // set state
  14935. if (!isRoot && !hot) {
  14936. var parentState = getNestedState(rootState, path.slice(0, -1));
  14937. var moduleName = path[path.length - 1];
  14938. store._withCommit(function () {
  14939. if ((true)) {
  14940. if (moduleName in parentState) {
  14941. console.warn(
  14942. ("[vuex] state field \"" + moduleName + "\" was overridden by a module with the same name at \"" + (path.join('.')) + "\"")
  14943. );
  14944. }
  14945. }
  14946. Vue.set(parentState, moduleName, module.state);
  14947. });
  14948. }
  14949. var local = module.context = makeLocalContext(store, namespace, path);
  14950. module.forEachMutation(function (mutation, key) {
  14951. var namespacedType = namespace + key;
  14952. registerMutation(store, namespacedType, mutation, local);
  14953. });
  14954. module.forEachAction(function (action, key) {
  14955. var type = action.root ? key : namespace + key;
  14956. var handler = action.handler || action;
  14957. registerAction(store, type, handler, local);
  14958. });
  14959. module.forEachGetter(function (getter, key) {
  14960. var namespacedType = namespace + key;
  14961. registerGetter(store, namespacedType, getter, local);
  14962. });
  14963. module.forEachChild(function (child, key) {
  14964. installModule(store, rootState, path.concat(key), child, hot);
  14965. });
  14966. }
  14967. /**
  14968. * make localized dispatch, commit, getters and state
  14969. * if there is no namespace, just use root ones
  14970. */
  14971. function makeLocalContext (store, namespace, path) {
  14972. var noNamespace = namespace === '';
  14973. var local = {
  14974. dispatch: noNamespace ? store.dispatch : function (_type, _payload, _options) {
  14975. var args = unifyObjectStyle(_type, _payload, _options);
  14976. var payload = args.payload;
  14977. var options = args.options;
  14978. var type = args.type;
  14979. if (!options || !options.root) {
  14980. type = namespace + type;
  14981. if (( true) && !store._actions[type]) {
  14982. console.error(("[vuex] unknown local action type: " + (args.type) + ", global type: " + type));
  14983. return
  14984. }
  14985. }
  14986. return store.dispatch(type, payload)
  14987. },
  14988. commit: noNamespace ? store.commit : function (_type, _payload, _options) {
  14989. var args = unifyObjectStyle(_type, _payload, _options);
  14990. var payload = args.payload;
  14991. var options = args.options;
  14992. var type = args.type;
  14993. if (!options || !options.root) {
  14994. type = namespace + type;
  14995. if (( true) && !store._mutations[type]) {
  14996. console.error(("[vuex] unknown local mutation type: " + (args.type) + ", global type: " + type));
  14997. return
  14998. }
  14999. }
  15000. store.commit(type, payload, options);
  15001. }
  15002. };
  15003. // getters and state object must be gotten lazily
  15004. // because they will be changed by vm update
  15005. Object.defineProperties(local, {
  15006. getters: {
  15007. get: noNamespace
  15008. ? function () { return store.getters; }
  15009. : function () { return makeLocalGetters(store, namespace); }
  15010. },
  15011. state: {
  15012. get: function () { return getNestedState(store.state, path); }
  15013. }
  15014. });
  15015. return local
  15016. }
  15017. function makeLocalGetters (store, namespace) {
  15018. if (!store._makeLocalGettersCache[namespace]) {
  15019. var gettersProxy = {};
  15020. var splitPos = namespace.length;
  15021. Object.keys(store.getters).forEach(function (type) {
  15022. // skip if the target getter is not match this namespace
  15023. if (type.slice(0, splitPos) !== namespace) { return }
  15024. // extract local getter type
  15025. var localType = type.slice(splitPos);
  15026. // Add a port to the getters proxy.
  15027. // Define as getter property because
  15028. // we do not want to evaluate the getters in this time.
  15029. Object.defineProperty(gettersProxy, localType, {
  15030. get: function () { return store.getters[type]; },
  15031. enumerable: true
  15032. });
  15033. });
  15034. store._makeLocalGettersCache[namespace] = gettersProxy;
  15035. }
  15036. return store._makeLocalGettersCache[namespace]
  15037. }
  15038. function registerMutation (store, type, handler, local) {
  15039. var entry = store._mutations[type] || (store._mutations[type] = []);
  15040. entry.push(function wrappedMutationHandler (payload) {
  15041. handler.call(store, local.state, payload);
  15042. });
  15043. }
  15044. function registerAction (store, type, handler, local) {
  15045. var entry = store._actions[type] || (store._actions[type] = []);
  15046. entry.push(function wrappedActionHandler (payload) {
  15047. var res = handler.call(store, {
  15048. dispatch: local.dispatch,
  15049. commit: local.commit,
  15050. getters: local.getters,
  15051. state: local.state,
  15052. rootGetters: store.getters,
  15053. rootState: store.state
  15054. }, payload);
  15055. if (!isPromise(res)) {
  15056. res = Promise.resolve(res);
  15057. }
  15058. if (store._devtoolHook) {
  15059. return res.catch(function (err) {
  15060. store._devtoolHook.emit('vuex:error', err);
  15061. throw err
  15062. })
  15063. } else {
  15064. return res
  15065. }
  15066. });
  15067. }
  15068. function registerGetter (store, type, rawGetter, local) {
  15069. if (store._wrappedGetters[type]) {
  15070. if ((true)) {
  15071. console.error(("[vuex] duplicate getter key: " + type));
  15072. }
  15073. return
  15074. }
  15075. store._wrappedGetters[type] = function wrappedGetter (store) {
  15076. return rawGetter(
  15077. local.state, // local state
  15078. local.getters, // local getters
  15079. store.state, // root state
  15080. store.getters // root getters
  15081. )
  15082. };
  15083. }
  15084. function enableStrictMode (store) {
  15085. store._vm.$watch(function () { return this._data.$$state }, function () {
  15086. if ((true)) {
  15087. assert(store._committing, "do not mutate vuex store state outside mutation handlers.");
  15088. }
  15089. }, { deep: true, sync: true });
  15090. }
  15091. function getNestedState (state, path) {
  15092. return path.reduce(function (state, key) { return state[key]; }, state)
  15093. }
  15094. function unifyObjectStyle (type, payload, options) {
  15095. if (isObject(type) && type.type) {
  15096. options = payload;
  15097. payload = type;
  15098. type = type.type;
  15099. }
  15100. if ((true)) {
  15101. assert(typeof type === 'string', ("expects string as the type, but found " + (typeof type) + "."));
  15102. }
  15103. return { type: type, payload: payload, options: options }
  15104. }
  15105. function install (_Vue) {
  15106. if (Vue && _Vue === Vue) {
  15107. if ((true)) {
  15108. console.error(
  15109. '[vuex] already installed. Vue.use(Vuex) should be called only once.'
  15110. );
  15111. }
  15112. return
  15113. }
  15114. Vue = _Vue;
  15115. applyMixin(Vue);
  15116. }
  15117. /**
  15118. * Reduce the code which written in Vue.js for getting the state.
  15119. * @param {String} [namespace] - Module's namespace
  15120. * @param {Object|Array} states # Object's item can be a function which accept state and getters for param, you can do something for state and getters in it.
  15121. * @param {Object}
  15122. */
  15123. var mapState = normalizeNamespace(function (namespace, states) {
  15124. var res = {};
  15125. if (( true) && !isValidMap(states)) {
  15126. console.error('[vuex] mapState: mapper parameter must be either an Array or an Object');
  15127. }
  15128. normalizeMap(states).forEach(function (ref) {
  15129. var key = ref.key;
  15130. var val = ref.val;
  15131. res[key] = function mappedState () {
  15132. var state = this.$store.state;
  15133. var getters = this.$store.getters;
  15134. if (namespace) {
  15135. var module = getModuleByNamespace(this.$store, 'mapState', namespace);
  15136. if (!module) {
  15137. return
  15138. }
  15139. state = module.context.state;
  15140. getters = module.context.getters;
  15141. }
  15142. return typeof val === 'function'
  15143. ? val.call(this, state, getters)
  15144. : state[val]
  15145. };
  15146. // mark vuex getter for devtools
  15147. res[key].vuex = true;
  15148. });
  15149. return res
  15150. });
  15151. /**
  15152. * Reduce the code which written in Vue.js for committing the mutation
  15153. * @param {String} [namespace] - Module's namespace
  15154. * @param {Object|Array} mutations # Object's item can be a function which accept `commit` function as the first param, it can accept another params. You can commit mutation and do any other things in this function. specially, You need to pass anthor params from the mapped function.
  15155. * @return {Object}
  15156. */
  15157. var mapMutations = normalizeNamespace(function (namespace, mutations) {
  15158. var res = {};
  15159. if (( true) && !isValidMap(mutations)) {
  15160. console.error('[vuex] mapMutations: mapper parameter must be either an Array or an Object');
  15161. }
  15162. normalizeMap(mutations).forEach(function (ref) {
  15163. var key = ref.key;
  15164. var val = ref.val;
  15165. res[key] = function mappedMutation () {
  15166. var args = [], len = arguments.length;
  15167. while ( len-- ) args[ len ] = arguments[ len ];
  15168. // Get the commit method from store
  15169. var commit = this.$store.commit;
  15170. if (namespace) {
  15171. var module = getModuleByNamespace(this.$store, 'mapMutations', namespace);
  15172. if (!module) {
  15173. return
  15174. }
  15175. commit = module.context.commit;
  15176. }
  15177. return typeof val === 'function'
  15178. ? val.apply(this, [commit].concat(args))
  15179. : commit.apply(this.$store, [val].concat(args))
  15180. };
  15181. });
  15182. return res
  15183. });
  15184. /**
  15185. * Reduce the code which written in Vue.js for getting the getters
  15186. * @param {String} [namespace] - Module's namespace
  15187. * @param {Object|Array} getters
  15188. * @return {Object}
  15189. */
  15190. var mapGetters = normalizeNamespace(function (namespace, getters) {
  15191. var res = {};
  15192. if (( true) && !isValidMap(getters)) {
  15193. console.error('[vuex] mapGetters: mapper parameter must be either an Array or an Object');
  15194. }
  15195. normalizeMap(getters).forEach(function (ref) {
  15196. var key = ref.key;
  15197. var val = ref.val;
  15198. // The namespace has been mutated by normalizeNamespace
  15199. val = namespace + val;
  15200. res[key] = function mappedGetter () {
  15201. if (namespace && !getModuleByNamespace(this.$store, 'mapGetters', namespace)) {
  15202. return
  15203. }
  15204. if (( true) && !(val in this.$store.getters)) {
  15205. console.error(("[vuex] unknown getter: " + val));
  15206. return
  15207. }
  15208. return this.$store.getters[val]
  15209. };
  15210. // mark vuex getter for devtools
  15211. res[key].vuex = true;
  15212. });
  15213. return res
  15214. });
  15215. /**
  15216. * Reduce the code which written in Vue.js for dispatch the action
  15217. * @param {String} [namespace] - Module's namespace
  15218. * @param {Object|Array} actions # Object's item can be a function which accept `dispatch` function as the first param, it can accept anthor params. You can dispatch action and do any other things in this function. specially, You need to pass anthor params from the mapped function.
  15219. * @return {Object}
  15220. */
  15221. var mapActions = normalizeNamespace(function (namespace, actions) {
  15222. var res = {};
  15223. if (( true) && !isValidMap(actions)) {
  15224. console.error('[vuex] mapActions: mapper parameter must be either an Array or an Object');
  15225. }
  15226. normalizeMap(actions).forEach(function (ref) {
  15227. var key = ref.key;
  15228. var val = ref.val;
  15229. res[key] = function mappedAction () {
  15230. var args = [], len = arguments.length;
  15231. while ( len-- ) args[ len ] = arguments[ len ];
  15232. // get dispatch function from store
  15233. var dispatch = this.$store.dispatch;
  15234. if (namespace) {
  15235. var module = getModuleByNamespace(this.$store, 'mapActions', namespace);
  15236. if (!module) {
  15237. return
  15238. }
  15239. dispatch = module.context.dispatch;
  15240. }
  15241. return typeof val === 'function'
  15242. ? val.apply(this, [dispatch].concat(args))
  15243. : dispatch.apply(this.$store, [val].concat(args))
  15244. };
  15245. });
  15246. return res
  15247. });
  15248. /**
  15249. * Rebinding namespace param for mapXXX function in special scoped, and return them by simple object
  15250. * @param {String} namespace
  15251. * @return {Object}
  15252. */
  15253. var createNamespacedHelpers = function (namespace) { return ({
  15254. mapState: mapState.bind(null, namespace),
  15255. mapGetters: mapGetters.bind(null, namespace),
  15256. mapMutations: mapMutations.bind(null, namespace),
  15257. mapActions: mapActions.bind(null, namespace)
  15258. }); };
  15259. /**
  15260. * Normalize the map
  15261. * normalizeMap([1, 2, 3]) => [ { key: 1, val: 1 }, { key: 2, val: 2 }, { key: 3, val: 3 } ]
  15262. * normalizeMap({a: 1, b: 2, c: 3}) => [ { key: 'a', val: 1 }, { key: 'b', val: 2 }, { key: 'c', val: 3 } ]
  15263. * @param {Array|Object} map
  15264. * @return {Object}
  15265. */
  15266. function normalizeMap (map) {
  15267. if (!isValidMap(map)) {
  15268. return []
  15269. }
  15270. return Array.isArray(map)
  15271. ? map.map(function (key) { return ({ key: key, val: key }); })
  15272. : Object.keys(map).map(function (key) { return ({ key: key, val: map[key] }); })
  15273. }
  15274. /**
  15275. * Validate whether given map is valid or not
  15276. * @param {*} map
  15277. * @return {Boolean}
  15278. */
  15279. function isValidMap (map) {
  15280. return Array.isArray(map) || isObject(map)
  15281. }
  15282. /**
  15283. * Return a function expect two param contains namespace and map. it will normalize the namespace and then the param's function will handle the new namespace and the map.
  15284. * @param {Function} fn
  15285. * @return {Function}
  15286. */
  15287. function normalizeNamespace (fn) {
  15288. return function (namespace, map) {
  15289. if (typeof namespace !== 'string') {
  15290. map = namespace;
  15291. namespace = '';
  15292. } else if (namespace.charAt(namespace.length - 1) !== '/') {
  15293. namespace += '/';
  15294. }
  15295. return fn(namespace, map)
  15296. }
  15297. }
  15298. /**
  15299. * Search a special module from store by namespace. if module not exist, print error message.
  15300. * @param {Object} store
  15301. * @param {String} helper
  15302. * @param {String} namespace
  15303. * @return {Object}
  15304. */
  15305. function getModuleByNamespace (store, helper, namespace) {
  15306. var module = store._modulesNamespaceMap[namespace];
  15307. if (( true) && !module) {
  15308. console.error(("[vuex] module namespace not found in " + helper + "(): " + namespace));
  15309. }
  15310. return module
  15311. }
  15312. // Credits: borrowed code from fcomb/redux-logger
  15313. function createLogger (ref) {
  15314. if ( ref === void 0 ) ref = {};
  15315. var collapsed = ref.collapsed; if ( collapsed === void 0 ) collapsed = true;
  15316. var filter = ref.filter; if ( filter === void 0 ) filter = function (mutation, stateBefore, stateAfter) { return true; };
  15317. var transformer = ref.transformer; if ( transformer === void 0 ) transformer = function (state) { return state; };
  15318. var mutationTransformer = ref.mutationTransformer; if ( mutationTransformer === void 0 ) mutationTransformer = function (mut) { return mut; };
  15319. var actionFilter = ref.actionFilter; if ( actionFilter === void 0 ) actionFilter = function (action, state) { return true; };
  15320. var actionTransformer = ref.actionTransformer; if ( actionTransformer === void 0 ) actionTransformer = function (act) { return act; };
  15321. var logMutations = ref.logMutations; if ( logMutations === void 0 ) logMutations = true;
  15322. var logActions = ref.logActions; if ( logActions === void 0 ) logActions = true;
  15323. var logger = ref.logger; if ( logger === void 0 ) logger = console;
  15324. return function (store) {
  15325. var prevState = deepCopy(store.state);
  15326. if (typeof logger === 'undefined') {
  15327. return
  15328. }
  15329. if (logMutations) {
  15330. store.subscribe(function (mutation, state) {
  15331. var nextState = deepCopy(state);
  15332. if (filter(mutation, prevState, nextState)) {
  15333. var formattedTime = getFormattedTime();
  15334. var formattedMutation = mutationTransformer(mutation);
  15335. var message = "mutation " + (mutation.type) + formattedTime;
  15336. startMessage(logger, message, collapsed);
  15337. logger.log('%c prev state', 'color: #9E9E9E; font-weight: bold', transformer(prevState));
  15338. logger.log('%c mutation', 'color: #03A9F4; font-weight: bold', formattedMutation);
  15339. logger.log('%c next state', 'color: #4CAF50; font-weight: bold', transformer(nextState));
  15340. endMessage(logger);
  15341. }
  15342. prevState = nextState;
  15343. });
  15344. }
  15345. if (logActions) {
  15346. store.subscribeAction(function (action, state) {
  15347. if (actionFilter(action, state)) {
  15348. var formattedTime = getFormattedTime();
  15349. var formattedAction = actionTransformer(action);
  15350. var message = "action " + (action.type) + formattedTime;
  15351. startMessage(logger, message, collapsed);
  15352. logger.log('%c action', 'color: #03A9F4; font-weight: bold', formattedAction);
  15353. endMessage(logger);
  15354. }
  15355. });
  15356. }
  15357. }
  15358. }
  15359. function startMessage (logger, message, collapsed) {
  15360. var startMessage = collapsed
  15361. ? logger.groupCollapsed
  15362. : logger.group;
  15363. // render
  15364. try {
  15365. startMessage.call(logger, message);
  15366. } catch (e) {
  15367. logger.log(message);
  15368. }
  15369. }
  15370. function endMessage (logger) {
  15371. try {
  15372. logger.groupEnd();
  15373. } catch (e) {
  15374. logger.log('—— log end ——');
  15375. }
  15376. }
  15377. function getFormattedTime () {
  15378. var time = new Date();
  15379. return (" @ " + (pad(time.getHours(), 2)) + ":" + (pad(time.getMinutes(), 2)) + ":" + (pad(time.getSeconds(), 2)) + "." + (pad(time.getMilliseconds(), 3)))
  15380. }
  15381. function repeat (str, times) {
  15382. return (new Array(times + 1)).join(str)
  15383. }
  15384. function pad (num, maxLength) {
  15385. return repeat('0', maxLength - num.toString().length) + num
  15386. }
  15387. var index_cjs = {
  15388. Store: Store,
  15389. install: install,
  15390. version: '3.6.2',
  15391. mapState: mapState,
  15392. mapMutations: mapMutations,
  15393. mapGetters: mapGetters,
  15394. mapActions: mapActions,
  15395. createNamespacedHelpers: createNamespacedHelpers,
  15396. createLogger: createLogger
  15397. };
  15398. module.exports = index_cjs;
  15399. /* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../webpack/buildin/global.js */ 93)))
  15400. /***/ }),
  15401. /* 156 */
  15402. /*!*************************************************************!*\
  15403. !*** D:/Intelligent/jn_uniapp/jn_app/store/modules/user.js ***!
  15404. \*************************************************************/
  15405. /*! no static exports found */
  15406. /***/ (function(module, exports, __webpack_require__) {
  15407. "use strict";
  15408. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _config = _interopRequireDefault(__webpack_require__(/*! @/config */ 153));\nvar _storage = _interopRequireDefault(__webpack_require__(/*! @/utils/storage */ 157));\nvar _constant = _interopRequireDefault(__webpack_require__(/*! @/utils/constant */ 158));\nvar _login = __webpack_require__(/*! @/api/login */ 159);\nvar _auth = __webpack_require__(/*! @/utils/auth */ 161);\nvar baseUrl = _config.default.baseUrl;\nvar user = {\n state: {\n id: 0,\n // 用户编号\n name: _storage.default.get(_constant.default.name),\n avatar: _storage.default.get(_constant.default.avatar),\n roles: _storage.default.get(_constant.default.roles),\n permissions: _storage.default.get(_constant.default.permissions)\n },\n mutations: {\n SET_ID: function SET_ID(state, id) {\n state.id = id;\n },\n SET_NAME: function SET_NAME(state, name) {\n state.name = name;\n _storage.default.set(_constant.default.name, name);\n },\n SET_AVATAR: function SET_AVATAR(state, avatar) {\n state.avatar = avatar;\n _storage.default.set(_constant.default.avatar, avatar);\n },\n SET_ROLES: function SET_ROLES(state, roles) {\n state.roles = roles;\n _storage.default.set(_constant.default.roles, roles);\n },\n SET_PERMISSIONS: function SET_PERMISSIONS(state, permissions) {\n state.permissions = permissions;\n _storage.default.set(_constant.default.permissions, permissions);\n }\n },\n actions: {\n // 登录\n Login: function Login(_ref, userInfo) {\n var commit = _ref.commit;\n var username = userInfo.username.trim();\n var password = userInfo.password;\n var captchaVerification = userInfo.captchaVerification;\n return new Promise(function (resolve, reject) {\n (0, _login.login)(username, password, captchaVerification).then(function (res) {\n res = res.data;\n // 设置 token\n (0, _auth.setToken)(res);\n resolve();\n }).catch(function (error) {\n reject(error);\n });\n });\n },\n // 获取用户信息\n GetInfo: function GetInfo(_ref2) {\n var commit = _ref2.commit,\n state = _ref2.state;\n return new Promise(function (resolve, reject) {\n (0, _login.getInfo)().then(function (res) {\n res = res.data; // 读取 data 数据\n var user = res.user;\n var avatar = user == null || user.avatar === \"\" || user.avatar == null ? __webpack_require__(/*! @/static/images/profile.jpg */ 164) : user.avatar;\n var nickname = user == null || user.nickname === \"\" || user.nickname == null ? \"\" : user.nickname;\n if (res.roles && res.roles.length > 0) {\n commit('SET_ROLES', res.roles);\n commit('SET_PERMISSIONS', res.permissions);\n } else {\n commit('SET_ROLES', ['ROLE_DEFAULT']);\n }\n commit('SET_NAME', nickname);\n commit('SET_AVATAR', avatar);\n resolve(res);\n }).catch(function (error) {\n reject(error);\n });\n });\n },\n // 退出系统\n LogOut: function LogOut(_ref3) {\n var commit = _ref3.commit,\n state = _ref3.state;\n return new Promise(function (resolve, reject) {\n (0, _login.logout)(state.token).then(function () {\n commit('SET_ROLES', []);\n commit('SET_PERMISSIONS', []);\n (0, _auth.removeToken)();\n _storage.default.clean();\n resolve();\n }).catch(function (error) {\n reject(error);\n });\n });\n }\n }\n};\nvar _default = user;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvbW9kdWxlcy91c2VyLmpzIl0sIm5hbWVzIjpbImJhc2VVcmwiLCJjb25maWciLCJ1c2VyIiwic3RhdGUiLCJpZCIsIm5hbWUiLCJzdG9yYWdlIiwiZ2V0IiwiY29uc3RhbnQiLCJhdmF0YXIiLCJyb2xlcyIsInBlcm1pc3Npb25zIiwibXV0YXRpb25zIiwiU0VUX0lEIiwiU0VUX05BTUUiLCJzZXQiLCJTRVRfQVZBVEFSIiwiU0VUX1JPTEVTIiwiU0VUX1BFUk1JU1NJT05TIiwiYWN0aW9ucyIsIkxvZ2luIiwidXNlckluZm8iLCJjb21taXQiLCJ1c2VybmFtZSIsInRyaW0iLCJwYXNzd29yZCIsImNhcHRjaGFWZXJpZmljYXRpb24iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImxvZ2luIiwidGhlbiIsInJlcyIsImRhdGEiLCJzZXRUb2tlbiIsImNhdGNoIiwiZXJyb3IiLCJHZXRJbmZvIiwiZ2V0SW5mbyIsInJlcXVpcmUiLCJuaWNrbmFtZSIsImxlbmd0aCIsIkxvZ091dCIsImxvZ291dCIsInRva2VuIiwicmVtb3ZlVG9rZW4iLCJjbGVhbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQSxJQUFNQSxPQUFPLEdBQUdDLGVBQU0sQ0FBQ0QsT0FBTztBQUU5QixJQUFNRSxJQUFJLEdBQUc7RUFDWEMsS0FBSyxFQUFFO0lBQ0xDLEVBQUUsRUFBRSxDQUFDO0lBQUU7SUFDUEMsSUFBSSxFQUFFQyxnQkFBTyxDQUFDQyxHQUFHLENBQUNDLGlCQUFRLENBQUNILElBQUksQ0FBQztJQUNoQ0ksTUFBTSxFQUFFSCxnQkFBTyxDQUFDQyxHQUFHLENBQUNDLGlCQUFRLENBQUNDLE1BQU0sQ0FBQztJQUNwQ0MsS0FBSyxFQUFFSixnQkFBTyxDQUFDQyxHQUFHLENBQUNDLGlCQUFRLENBQUNFLEtBQUssQ0FBQztJQUNsQ0MsV0FBVyxFQUFFTCxnQkFBTyxDQUFDQyxHQUFHLENBQUND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Q0FBQ08sS0FBSyxDQUFDLFVBQUFDLEtBQUssRUFBSTtVQUNoQlAsTUFBTSxDQUFDTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7TUFDSixDQUFDLENBQUM7SUFDSjtFQUNGO0FBQ0YsQ0FBQztBQUFBLGVBRWNsQyxJQUFJO0FBQUEiLCJmaWxlIjoiMTU2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbmZpZyBmcm9tICdAL2NvbmZpZydcclxuaW1wb3J0IHN0b3JhZ2UgZnJvbSAnQC91dGlscy9zdG9yYWdlJ1xyXG5pbXBvcnQgY29uc3RhbnQgZnJvbSAnQC91dGlscy9jb25zdGFudCdcclxuaW1wb3J0IHsgbG9naW4sIGxvZ291dCwgZ2V0SW5mbyB9IGZyb20gJ0AvYXBpL2xvZ2luJ1xyXG5pbXBvcnQgeyBzZXRUb2tlbiwgcmVtb3ZlVG9rZW4gfSBmcm9tICdAL3V0aWxzL2F1dGgnXHJcblxyXG5jb25zdCBiYXNlVXJsID0gY29uZmlnLmJhc2VVcmxcclxuXHJcbmNvbnN0IHVzZXIgPSB7XHJcbiAgc3RhdGU6IHtcclxuICAgIGlkOiAwLCAvLyDnlKjmiLfnvJblj7dcclxuICAgIG5hbWU6IHN0b3JhZ2UuZ2V0KGNvbnN0YW50Lm5hbWUpLFxyXG4gICAgYXZhdGFyOiBzdG9yYWdlLmdldChjb25zdGFudC5hdmF0YXIpLFxyXG4gICAgcm9sZXM6IHN0b3JhZ2UuZ2V0KGNvbnN0YW50LnJvbGVzKSxcclxuICAgIHBlcm1pc3Npb25zOiBzdG9yYWdlLmdldChjb25zdGFudC5wZXJtaXNzaW9ucylcclxuICB9LFxyXG5cclxuICBtdXRhdGlvbnM6IHtcclxuICAgIFNFVF9JRDogKHN0YXRlLCBpZCkgPT4ge1xyXG4gICAgICBzdGF0ZS5pZCA9IGlkXHJcbiAgICB9LFxyXG4gICAgU0VUX05BTUU6IChzdGF0ZSwgbmFtZSkgPT4ge1xyXG4gICAgICBzdGF0ZS5uYW1lID0gbmFtZVxyXG4gICAgICBzdG9yYWdlLnNldChjb25zdGFudC5uYW1lLCBuYW1lKVxyXG4gICAgfSxcclxuICAgIFNFVF9BVkFUQVI6IChzdGF0ZSwgYXZhdGFyKSA9PiB7XHJcbiAgICAgIHN0YXRlLmF2YXRhciA9IGF2YXRhclxyXG4gICAgICBzdG9yYWdlLnNldChjb25zdGFudC5hdmF0YXIsIGF2YXRhcilcclxuICAgIH0sXHJcbiAgICBTRVRfUk9MRVM6IChzdGF0ZSwgcm9sZXMpID0+IHtcclxuICAgICAgc3RhdGUucm9sZXMgPSByb2xlc1xyXG4gICAgICBzdG9yYWdlLnNldChjb25zdGFudC5yb2xlcywgcm9sZXMpXHJcbiAgICB9LFxyXG4gICAgU0VUX1BFUk1JU1NJT05TOiAoc3RhdGUsIHBlcm1pc3Npb25zKSA9PiB7XHJcbiAgICAgIHN0YXRlLnBlcm1pc3Npb25zID0gcGVybWlzc2lvbnNcclxuICAgICAgc3RvcmFnZS5zZXQoY29uc3RhbnQucGVybWlzc2lvbnMsIHBlcm1pc3Npb25zKVxyXG4gICAgfVxyXG4gIH0sXHJcblxyXG4gIGFjdGlvbnM6IHtcclxuICAgIC8vIOeZu+W9lVxyXG4gICAgTG9naW4oeyBjb21taXQgfSwgdXNlckluZm8pIHtcclxuICAgICAgY29uc3QgdXNlcm5hbWUgPSB1c2VySW5mby51c2VybmFtZS50cmltKClcclxuICAgICAgY29uc3QgcGFzc3dvcmQgPSB1c2VySW5mby5wYXNzd29yZFxyXG4gICAgICBjb25zdCBjYXB0Y2hhVmVyaWZpY2F0aW9uID0gdXNlckluZm8uY2FwdGNoYVZlcmlmaWNhdGlvblxyXG4gICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgIGxvZ2luKHVzZXJuYW1lLCBwYXNzd29yZCwgY2FwdGNoYVZlcmlmaWNhdGlvbikudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgcmVzID0gcmVzLmRhdGE7XHJcbiAgICAgICAgICAvLyDorr7nva4gdG9rZW5cclxuICAgICAgICAgIHNldFRva2VuKHJlcylcclxuICAgICAgICAgIHJlc29sdmUoKVxyXG4gICAgICAgIH0pLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICAgIHJlamVjdChlcnJvcilcclxuICAgICAgICB9KVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuXHJcbiAgICAvLyDojrflj5bnlKjmiLfkv6Hmga9cclxuICAgIEdldEluZm8oeyBjb21taXQsIHN0YXRlIH0pIHtcclxuICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICBnZXRJbmZvKCkudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgcmVzID0gcmVzLmRhdGE7IC8vIOivu+WPliBkYXRhIOaVsOaNrlxyXG4gICAgICAgICAgY29uc3QgdXNlciA9IHJlcy51c2VyXHJcbiAgICAgICAgICBjb25zdCBhdmF0YXIgPSAodXNlciA9PSBudWxsIHx8IHVzZXIuYXZhdGFyID09PSBcIlwiIHx8IHVzZXIuYXZhdGFyID09IG51bGwpID8gcmVxdWlyZShcIkAvc3RhdGljL2ltYWdlcy9wcm9maWxlLmpwZ1wiKSA6IHVzZXIuYXZhdGFyXHJcbiAgICAgICAgICBjb25zdCBuaWNrbmFtZSA9ICh1c2VyID09IG51bGwgfHwgdXNlci5uaWNrbmFtZSA9PT0gXCJcIiB8fCB1c2VyLm5pY2tuYW1lID09IG51bGwpID8gXCJcIiA6IHVzZXIubmlja25hbWVcclxuICAgICAgICAgIGlmIChyZXMucm9sZXMgJiYgcmVzLnJvbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgY29tbWl0KCdTRVRfUk9MRVMnLCByZXMucm9sZXMpXHJcbiAgICAgICAgICAgIGNvbW1pdCgnU0VUX1BFUk1JU1NJT05TJywgcmVzLnBlcm1pc3Npb25zKVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgY29tbWl0KCdTRVRfUk9MRVMnLCBbJ1JPTEVfREVGQVVMVCddKVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgY29tbWl0KCdTRVRfTkFNRScsIG5pY2tuYW1lKVxyXG4gICAgICAgICAgY29tbWl0KCdTRVRfQVZBVEFSJywgYXZhdGFyKVxyXG4gICAgICAgICAgcmVzb2x2ZShyZXMpXHJcbiAgICAgICAgfSkuY2F0Y2goZXJyb3IgPT4ge1xyXG4gICAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICAgIH0pXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG5cclxuICAgIC8vIOmAgOWHuuezu+e7n1xyXG4gICAgTG9nT3V0KHsgY29tbWl0LCBzdGF0ZSB9KSB7XHJcbiAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgbG9nb3V0KHN0YXRlLnRva2VuKS50aGVuKCgpID0+IHtcclxuICAgICAgICAgIGNvbW1pdCgnU0VUX1JPTEVTJywgW10pXHJcbiAgICAgICAgICBjb21taXQoJ1NFVF9QRVJNSVNTSU9OUycsIFtdKVxyXG4gICAgICAgICAgcmVtb3ZlVG9rZW4oKVxyXG4gICAgICAgICAgc3RvcmFnZS5jbGVhbigpXHJcbiAgICAgICAgICByZXNvbHZlKClcclxuICAgICAgICB9KS5jYXRjaChlcnJvciA9PiB7XHJcbiAgICAgICAgICByZWplY3QoZXJyb3IpXHJcbiAgICAgICAgfSlcclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHVzZXJcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///156\n");
  15409. /***/ }),
  15410. /* 157 */
  15411. /*!********************************************************!*\
  15412. !*** D:/Intelligent/jn_uniapp/jn_app/utils/storage.js ***!
  15413. \********************************************************/
  15414. /*! no static exports found */
  15415. /***/ (function(module, exports, __webpack_require__) {
  15416. "use strict";
  15417. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _constant = _interopRequireDefault(__webpack_require__(/*! ./constant */ 158));\n// 存储变量名\nvar storageKey = 'storage_data';\n\n// 存储节点变量名\nvar storageNodeKeys = [_constant.default.avatar, _constant.default.name, _constant.default.roles, _constant.default.permissions];\n\n// 存储的数据\nvar storageData = uni.getStorageSync(storageKey) || {};\nvar storage = {\n set: function set(key, value) {\n if (storageNodeKeys.indexOf(key) != -1) {\n var tmp = uni.getStorageSync(storageKey);\n tmp = tmp ? tmp : {};\n tmp[key] = value;\n uni.setStorageSync(storageKey, tmp);\n }\n },\n get: function get(key) {\n return storageData[key] || \"\";\n },\n remove: function remove(key) {\n delete storageData[key];\n uni.setStorageSync(storageKey, storageData);\n },\n clean: function clean() {\n uni.removeStorageSync(storageKey);\n }\n};\nvar _default = storage;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvc3RvcmFnZS5qcyJdLCJuYW1lcyI6WyJzdG9yYWdlS2V5Iiwic3RvcmFnZU5vZGVLZXlzIiwiY29uc3RhbnQiLCJhdmF0YXIiLCJuYW1lIiwicm9sZXMiLCJwZXJtaXNzaW9ucyIsInN0b3JhZ2VEYXRhIiwidW5pIiwiZ2V0U3RvcmFnZVN5bmMiLCJzdG9yYWdlIiwic2V0Iiwia2V5IiwidmFsdWUiLCJpbmRleE9mIiwidG1wIiwic2V0U3RvcmFnZVN5bmMiLCJnZXQiLCJyZW1vdmUiLCJjbGVhbiIsInJlbW92ZVN0b3JhZ2VTeW5jIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFFQTtBQUNBLElBQUlBLFVBQVUsR0FBRyxjQUFjOztBQUUvQjtBQUNBLElBQUlDLGVBQWUsR0FBRyxDQUFDQyxpQkFBUSxDQUFDQyxNQUFNLEVBQUVELGlCQUFRLENBQUNFLElBQUksRUFBRUYsaUJBQVEsQ0FBQ0csS0FBSyxFQUFFSCxpQkFBUSxDQUFDSSxXQUFXLENBQUM7O0FBRTVGO0FBQ0EsSUFBSUMsV0FBVyxHQUFHQyxHQUFHLENBQUNDLGNBQWMsQ0FBQ1QsVUFBVSxDQUFDLElBQUksQ0FBQyxDQUFDO0FBRXRELElBQU1VLE9BQU8sR0FBRztFQUNkQyxHQUFHLEVBQUUsYUFBU0MsR0FBRyxFQUFFQyxLQUFLLEVBQUU7SUFDeEIsSUFBSVosZUFBZSxDQUFDYSxPQUFPLENBQUNGLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxFQUFFO01BQ3RDLElBQUlHLEdBQUcsR0FBR1AsR0FBRyxDQUFDQyxjQUFjLENBQUNULFVBQVUsQ0FBQztNQUN4Q2UsR0FBRyxHQUFHQSxHQUFHLEdBQUdBLEdBQUcsR0FBRyxDQUFDLENBQUM7TUFDcEJBLEdBQUcsQ0FBQ0gsR0FBRyxDQUFDLEdBQUdDLEtBQUs7TUFDaEJMLEdBQUcsQ0FBQ1EsY0FBYyxDQUFDaEIsVUFBVSxFQUFFZSxHQUFHLENBQUM7SUFDckM7RUFDRixDQUFDO0VBQ0RFLEdBQUcsRUFBRSxhQUFTTCxHQUFHLEVBQUU7SUFDakIsT0FBT0wsV0FBVyxDQUFDSyxHQUFHLENBQUMsSUFBSSxFQUFFO0VBQy9CLENBQUM7RUFDRE0sTUFBTSxFQUFFLGdCQUFTTixHQUFHLEVBQUU7SUFDcEIsT0FBT0wsV0FBVyxDQUFDSyxHQUFHLENBQUM7SUFDdkJKLEdBQUcsQ0FBQ1EsY0FBYyxDQUFDaEIsVUFBVSxFQUFFTyxXQUFXLENBQUM7RUFDN0MsQ0FBQztFQUNEWSxLQUFLLEVBQUUsaUJBQVc7SUFDaEJYLEdBQUcsQ0FBQ1ksaUJBQWlCLENBQUNwQixVQUFVLENBQUM7RUFDbkM7QUFDRixDQUFDO0FBQUEsZUFFY1UsT0FBTztBQUFBIiwiZmlsZSI6IjE1Ny5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25zdGFudCBmcm9tICcuL2NvbnN0YW50J1xyXG5cclxuLy8g5a2Y5YKo5Y+Y6YeP5ZCNXHJcbmxldCBzdG9yYWdlS2V5ID0gJ3N0b3JhZ2VfZGF0YSdcclxuXHJcbi8vIOWtmOWCqOiKgueCueWPmOmHj+WQjVxyXG5sZXQgc3RvcmFnZU5vZGVLZXlzID0gW2NvbnN0YW50LmF2YXRhciwgY29uc3RhbnQubmFtZSwgY29uc3RhbnQucm9sZXMsIGNvbnN0YW50LnBlcm1pc3Npb25zXVxyXG5cclxuLy8g5a2Y5YKo55qE5pWw5o2uXHJcbmxldCBzdG9yYWdlRGF0YSA9IHVuaS5nZXRTdG9yYWdlU3luYyhzdG9yYWdlS2V5KSB8fCB7fVxyXG5cclxuY29uc3Qgc3RvcmFnZSA9IHtcclxuICBzZXQ6IGZ1bmN0aW9uKGtleSwgdmFsdWUpIHtcclxuICAgIGlmIChzdG9yYWdlTm9kZUtleXMuaW5kZXhPZihrZXkpICE9IC0xKSB7XHJcbiAgICAgIGxldCB0bXAgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoc3RvcmFnZUtleSlcclxuICAgICAgdG1wID0gdG1wID8gdG1wIDoge31cclxuICAgICAgdG1wW2tleV0gPSB2YWx1ZVxyXG4gICAgICB1bmkuc2V0U3RvcmFnZVN5bmMoc3RvcmFnZUtleSwgdG1wKVxyXG4gICAgfVxyXG4gIH0sXHJcbiAgZ2V0OiBmdW5jdGlvbihrZXkpIHtcclxuICAgIHJldHVybiBzdG9yYWdlRGF0YVtrZXldIHx8IFwiXCJcclxuICB9LFxyXG4gIHJlbW92ZTogZnVuY3Rpb24oa2V5KSB7XHJcbiAgICBkZWxldGUgc3RvcmFnZURhdGFba2V5XVxyXG4gICAgdW5pLnNldFN0b3JhZ2VTeW5jKHN0b3JhZ2VLZXksIHN0b3JhZ2VEYXRhKVxyXG4gIH0sXHJcbiAgY2xlYW46IGZ1bmN0aW9uKCkge1xyXG4gICAgdW5pLnJlbW92ZVN0b3JhZ2VTeW5jKHN0b3JhZ2VLZXkpXHJcbiAgfVxyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBzdG9yYWdlXHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///157\n");
  15418. /***/ }),
  15419. /* 158 */
  15420. /*!*********************************************************!*\
  15421. !*** D:/Intelligent/jn_uniapp/jn_app/utils/constant.js ***!
  15422. \*********************************************************/
  15423. /*! no static exports found */
  15424. /***/ (function(module, exports, __webpack_require__) {
  15425. "use strict";
  15426. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar constant = {\n avatar: 'vuex_avatar',\n name: 'vuex_name',\n roles: 'vuex_roles',\n permissions: 'vuex_permissions'\n};\nvar _default = constant;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvY29uc3RhbnQuanMiXSwibmFtZXMiOlsiY29uc3RhbnQiLCJhdmF0YXIiLCJuYW1lIiwicm9sZXMiLCJwZXJtaXNzaW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBTUEsUUFBUSxHQUFHO0VBQ2RDLE1BQU0sRUFBRSxhQUFhO0VBQ3JCQyxJQUFJLEVBQUUsV0FBVztFQUNqQkMsS0FBSyxFQUFFLFlBQVk7RUFDbkJDLFdBQVcsRUFBRTtBQUNmLENBQUM7QUFBQSxlQUVjSixRQUFRO0FBQUEiLCJmaWxlIjoiMTU4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgY29uc3RhbnQgPSB7XHJcbiAgIGF2YXRhcjogJ3Z1ZXhfYXZhdGFyJyxcclxuICAgbmFtZTogJ3Z1ZXhfbmFtZScsXHJcbiAgIHJvbGVzOiAndnVleF9yb2xlcycsXHJcbiAgIHBlcm1pc3Npb25zOiAndnVleF9wZXJtaXNzaW9ucydcclxuIH1cclxuXHJcbiBleHBvcnQgZGVmYXVsdCBjb25zdGFudFxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///158\n");
  15427. /***/ }),
  15428. /* 159 */
  15429. /*!****************************************************!*\
  15430. !*** D:/Intelligent/jn_uniapp/jn_app/api/login.js ***!
  15431. \****************************************************/
  15432. /*! no static exports found */
  15433. /***/ (function(module, exports, __webpack_require__) {
  15434. "use strict";
  15435. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getInfo = getInfo;\nexports.login = login;\nexports.logout = logout;\nvar _request = _interopRequireDefault(__webpack_require__(/*! @/utils/request */ 160));\n// 登录方法\nfunction login(username, password, captchaVerification) {\n var data = {\n username: username,\n password: password,\n captchaVerification: captchaVerification\n };\n return (0, _request.default)({\n url: '/system/auth/login',\n headers: {\n isToken: false\n },\n 'method': 'POST',\n 'data': data\n });\n}\n\n// 获取用户详细信息\nfunction getInfo() {\n return (0, _request.default)({\n url: '/system/auth/get-permission-info',\n 'method': 'GET'\n });\n}\n\n// 退出方法\nfunction logout() {\n return (0, _request.default)({\n url: '/system/auth/logout',\n 'method': 'POST'\n });\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vYXBpL2xvZ2luLmpzIl0sIm5hbWVzIjpbImxvZ2luIiwidXNlcm5hbWUiLCJwYXNzd29yZCIsImNhcHRjaGFWZXJpZmljYXRpb24iLCJkYXRhIiwicmVxdWVzdCIsInVybCIsImhlYWRlcnMiLCJpc1Rva2VuIiwiZ2V0SW5mbyIsImxvZ291dCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBQUE7QUFFQTtBQUNPLFNBQVNBLEtBQUssQ0FBQ0MsUUFBUSxFQUFFQyxRQUFRLEVBQUVDLG1CQUFtQixFQUFFO0VBQzlELElBQU1DLElBQUksR0FBRztJQUNaSCxRQUFRLEVBQVJBLFFBQVE7SUFDUkMsUUFBUSxFQUFSQSxRQUFRO0lBQ1JDLG1CQUFtQixFQUFuQkE7RUFDRCxDQUFDO0VBQ0QsT0FBTyxJQUFBRSxnQkFBTyxFQUFDO0lBQ2RDLEdBQUcsRUFBRSxvQkFBb0I7SUFDekJDLE9BQU8sRUFBRTtNQUNSQyxPQUFPLEVBQUU7SUFDVixDQUFDO0lBQ0QsUUFBUSxFQUFFLE1BQU07SUFDaEIsTUFBTSxFQUFFSjtFQUNULENBQUMsQ0FBQztBQUNIOztBQUVBO0FBQ08sU0FBU0ssT0FBTyxHQUFHO0VBQ3pCLE9BQU8sSUFBQUosZ0JBQU8sRUFBQztJQUNkQyxHQUFHLEVBQUUsa0NBQWtDO0lBQ3ZDLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQztBQUNIOztBQUVBO0FBQ08sU0FBU0ksTUFBTSxHQUFHO0VBQ3hCLE9BQU8sSUFBQUwsZ0JBQU8sRUFBQztJQUNkQyxHQUFHLEVBQUUscUJBQXFCO0lBQzFCLFFBQVEsRUFBRTtFQUNYLENBQUMsQ0FBQztBQUNIIiwiZmlsZSI6IjE1OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCByZXF1ZXN0IGZyb20gJ0AvdXRpbHMvcmVxdWVzdCdcclxuXHJcbi8vIOeZu+W9leaWueazlVxyXG5leHBvcnQgZnVuY3Rpb24gbG9naW4odXNlcm5hbWUsIHBhc3N3b3JkLCBjYXB0Y2hhVmVyaWZpY2F0aW9uKSB7XHJcblx0Y29uc3QgZGF0YSA9IHtcclxuXHRcdHVzZXJuYW1lLFxyXG5cdFx0cGFzc3dvcmQsXHJcblx0XHRjYXB0Y2hhVmVyaWZpY2F0aW9uXHJcblx0fVxyXG5cdHJldHVybiByZXF1ZXN0KHtcclxuXHRcdHVybDogJy9zeXN0ZW0vYXV0aC9sb2dpbicsXHJcblx0XHRoZWFkZXJzOiB7XHJcblx0XHRcdGlzVG9rZW46IGZhbHNlXHJcblx0XHR9LFxyXG5cdFx0J21ldGhvZCc6ICdQT1NUJyxcclxuXHRcdCdkYXRhJzogZGF0YVxyXG5cdH0pXHJcbn1cclxuXHJcbi8vIOiOt+WPlueUqOaIt+ivpue7huS/oeaBr1xyXG5leHBvcnQgZnVuY3Rpb24gZ2V0SW5mbygpIHtcclxuXHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHR1cmw6ICcvc3lzdGVtL2F1dGgvZ2V0LXBlcm1pc3Npb24taW5mbycsXHJcblx0XHQnbWV0aG9kJzogJ0dFVCdcclxuXHR9KVxyXG59XHJcblxyXG4vLyDpgIDlh7rmlrnms5VcclxuZXhwb3J0IGZ1bmN0aW9uIGxvZ291dCgpIHtcclxuXHRyZXR1cm4gcmVxdWVzdCh7XHJcblx0XHR1cmw6ICcvc3lzdGVtL2F1dGgvbG9nb3V0JyxcclxuXHRcdCdtZXRob2QnOiAnUE9TVCdcclxuXHR9KVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///159\n");
  15436. /***/ }),
  15437. /* 160 */
  15438. /*!********************************************************!*\
  15439. !*** D:/Intelligent/jn_uniapp/jn_app/utils/request.js ***!
  15440. \********************************************************/
  15441. /*! no static exports found */
  15442. /***/ (function(module, exports, __webpack_require__) {
  15443. "use strict";
  15444. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _slicedToArray2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/slicedToArray */ 95));\nvar _store = _interopRequireDefault(__webpack_require__(/*! @/store */ 154));\nvar _config = _interopRequireDefault(__webpack_require__(/*! @/config */ 153));\nvar _auth = __webpack_require__(/*! @/utils/auth */ 161);\nvar _errorCode = _interopRequireDefault(__webpack_require__(/*! @/utils/errorCode */ 162));\nvar _common = __webpack_require__(/*! @/utils/common */ 163);\nvar timeout = 10000;\nvar baseUrl = _config.default.baseUrl + _config.default.baseApi;\nvar request = function request(config) {\n // 是否需要设置 token\n var isToken = (config.headers || {}).isToken === false;\n config.header = config.header || {};\n if ((0, _auth.getAccessToken)() && !isToken) {\n config.header['Authorization'] = 'Bearer ' + (0, _auth.getAccessToken)();\n }\n // 设置租户 TODO 芋艿:强制 1 先\n config.header['tenant-id'] = '1';\n // get请求映射params参数\n if (config.params) {\n var url = config.url + '?' + (0, _common.tansParams)(config.params);\n url = url.slice(0, -1);\n config.url = url;\n }\n return new Promise(function (resolve, reject) {\n uni.request({\n method: config.method || 'get',\n timeout: config.timeout || timeout,\n url: config.baseUrl || baseUrl + config.url,\n data: config.data,\n // header: config.header,\n header: config.header,\n dataType: 'json'\n }).then(function (response) {\n var _response = (0, _slicedToArray2.default)(response, 2),\n error = _response[0],\n res = _response[1];\n if (error) {\n (0, _common.toast)('后端接口连接异常');\n reject('后端接口连接异常');\n return;\n }\n var code = res.data.code || 200;\n var msg = _errorCode.default[code] || res.data.msg || _errorCode.default['default'];\n if (code === 401) {\n (0, _common.showConfirm)('登录状态已过期,您可以继续留在该页面,或者重新登录?').then(function (res) {\n if (res.confirm) {\n _store.default.dispatch('LogOut').then(function (res) {\n uni.reLaunch({\n url: '/pages/login'\n });\n });\n }\n });\n reject('无效的会话,或者会话已过期,请重新登录。');\n } else if (code === 500) {\n (0, _common.toast)(msg);\n reject('500');\n } else if (code !== 200) {\n (0, _common.toast)(msg);\n reject(code);\n }\n resolve(res.data);\n }).catch(function (error) {\n var message = error.message;\n if (message === 'Network Error') {\n message = '后端接口连接异常';\n } else if (message.includes('timeout')) {\n message = '系统接口请求超时';\n } else if (message.includes('Request failed with status code')) {\n message = '系统接口' + message.substr(message.length - 3) + '异常';\n }\n (0, _common.toast)(message);\n reject(error);\n });\n });\n};\nvar _default = request;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvcmVxdWVzdC5qcyJdLCJuYW1lcyI6WyJ0aW1lb3V0IiwiYmFzZVVybCIsImNvbmZpZyIsImJhc2VBcGkiLCJyZXF1ZXN0IiwiaXNUb2tlbiIsImhlYWRlcnMiLCJoZWFkZXIiLCJnZXRBY2Nlc3NUb2tlbiIsInBhcmFtcyIsInVybCIsInRhbnNQYXJhbXMiLCJzbGljZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwidW5pIiwibWV0aG9kIiwiZGF0YSIsImRhdGFUeXBlIiwidGhlbiIsInJlc3BvbnNlIiwiZXJyb3IiLCJyZXMiLCJ0b2FzdCIsImNvZGUiLCJtc2ciLCJlcnJvckNvZGUiLCJzaG93Q29uZmlybSIsImNvbmZpcm0iLCJzdG9yZSIsImRpc3BhdGNoIiwicmVMYXVuY2giLCJjYXRjaCIsIm1lc3NhZ2UiLCJpbmNsdWRlcyIsInN1YnN0ciIsImxlbmd0aCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUEsSUFBSUEsT0FBTyxHQUFHLEtBQUs7QUFDbkIsSUFBTUMsT0FBTyxHQUFHQyxlQUFNLENBQUNELE9BQU8sR0FBR0MsZUFBTSxDQUFDQyxPQUFPO0FBRS9DLElBQU1DLE9BQU8sR0FBRyxTQUFWQSxPQUFPLENBQUdGLE1BQU0sRUFBSTtFQUN4QjtFQUNBLElBQU1HLE9BQU8sR0FBRyxDQUFDSCxNQUFNLENBQUNJLE9BQU8sSUFBSSxDQUFDLENBQUMsRUFBRUQsT0FBTyxLQUFLLEtBQUs7RUFDeERILE1BQU0sQ0FBQ0ssTUFBTSxHQUFHTCxNQUFNLENBQUNLLE1BQU0sSUFBSSxDQUFDLENBQUM7RUFDbkMsSUFBSSxJQUFBQyxvQkFBYyxHQUFFLElBQUksQ0FBQ0gsT0FBTyxFQUFFO0lBQ2hDSCxNQUFNLENBQUNLLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxTQUFTLEdBQUcsSUFBQUMsb0JBQWMsR0FBRTtFQUMvRDtFQUNBO0VBQ0FOLE1BQU0sQ0FBQ0ssTUFB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QUcsTUFBTSxHQUFHQSxPQUFPLENBQUNFLE1BQU0sQ0FBQ0YsT0FBTyxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxDQUFDLEdBQUcsSUFBSTtNQUM5RDtNQUNBLElBQUFiLGFBQUssRUFBQ1UsT0FBTyxDQUFDO01BQ2RuQixNQUFNLENBQUNPLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztFQUNOLENBQUMsQ0FBQztBQUNKLENBQUM7QUFBQSxlQUVjbEIsT0FBTztBQUFBIiwiZmlsZSI6IjE2MC5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBzdG9yZSBmcm9tICdAL3N0b3JlJ1xyXG5pbXBvcnQgY29uZmlnIGZyb20gJ0AvY29uZmlnJ1xyXG5pbXBvcnQgeyBnZXRBY2Nlc3NUb2tlbiB9IGZyb20gJ0AvdXRpbHMvYXV0aCdcclxuaW1wb3J0IGVycm9yQ29kZSBmcm9tICdAL3V0aWxzL2Vycm9yQ29kZSdcclxuaW1wb3J0IHsgdG9hc3QsIHNob3dDb25maXJtLCB0YW5zUGFyYW1zIH0gZnJvbSAnQC91dGlscy9jb21tb24nXHJcblxyXG5sZXQgdGltZW91dCA9IDEwMDAwXHJcbmNvbnN0IGJhc2VVcmwgPSBjb25maWcuYmFzZVVybCArIGNvbmZpZy5iYXNlQXBpO1xyXG5cclxuY29uc3QgcmVxdWVzdCA9IGNvbmZpZyA9PiB7XHJcbiAgLy8g5piv5ZCm6ZyA6KaB6K6+572uIHRva2VuXHJcbiAgY29uc3QgaXNUb2tlbiA9IChjb25maWcuaGVhZGVycyB8fCB7fSkuaXNUb2tlbiA9PT0gZmFsc2VcclxuICBjb25maWcuaGVhZGVyID0gY29uZmlnLmhlYWRlciB8fCB7fVxyXG4gIGlmIChnZXRBY2Nlc3NUb2tlbigpICYmICFpc1Rva2VuKSB7XHJcbiAgICBjb25maWcuaGVhZGVyWydBdXRob3JpemF0aW9uJ10gPSAnQmVhcmVyICcgKyBnZXRBY2Nlc3NUb2tlbigpXHJcbiAgfVxyXG4gIC8vIOiuvue9ruenn+aItyBUT0RPIOiKi+iJv++8muW8uuWItiAxIOWFiFxyXG4gIGNvbmZpZy5oZWFkZXJbJ3RlbmFudC1pZCddID0gJzEnO1xyXG4gIC8vIGdldOivt+axguaYoOWwhHBhcmFtc+WPguaVsFxyXG4gIGlmIChjb25maWcucGFyYW1zKSB7XHJcbiAgICBsZXQgdXJsID0gY29uZmlnLnVybCArICc/JyArIHRhbnNQYXJhbXMoY29uZmlnLnBhcmFtcylcclxuICAgIHVybCA9IHVybC5zbGljZSgwLCAtMSlcclxuICAgIGNvbmZpZy51cmwgPSB1cmxcclxuICB9XHJcbiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgIHVuaS5yZXF1ZXN0KHtcclxuICAgICAgICBtZXRob2Q6IGNvbmZpZy5tZXRob2QgfHwgJ2dldCcsXHJcbiAgICAgICAgdGltZW91dDogY29uZmlnLnRpbWVvdXQgfHwgIHRpbWVvdXQsXHJcbiAgICAgICAgdXJsOiBjb25maWcuYmFzZVVybCB8fCBiYXNlVXJsICsgY29uZmlnLnVybCxcclxuICAgICAgICBkYXRhOiBjb25maWcuZGF0YSxcclxuICAgICAgICAvLyBoZWFkZXI6IGNvbmZpZy5oZWFkZXIsXHJcbiAgICAgICAgaGVhZGVyOiBjb25maWcuaGVhZGVyLFxyXG4gICAgICAgIGRhdGFUeXBlOiAnanNvbidcclxuICAgICAgfSkudGhlbihyZXNwb25zZSA9PiB7XHJcbiAgICAgICAgbGV0IFtlcnJvciwgcmVzXSA9IHJlc3BvbnNlXHJcbiAgICAgICAgaWYgKGVycm9yKSB7XHJcbiAgICAgICAgICB0b2FzdCgn5ZCO56uv5o6l5Y+j6L+e5o6l5byC5bi4JylcclxuICAgICAgICAgIHJlamVjdCgn5ZCO56uv5o6l5Y+j6L+e5o6l5byC5bi4JylcclxuICAgICAgICAgIHJldHVyblxyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBjb2RlID0gcmVzLmRhdGEuY29kZSB8fCAyMDBcclxuICAgICAgICBjb25zdCBtc2cgPSBlcnJvckNvZGVbY29kZV0gfHwgcmVzLmRhdGEubXNnIHx8IGVycm9yQ29kZVsnZGVmYXVsdCddXHJcbiAgICAgICAgaWYgKGNvZGUgPT09IDQwMSkge1xyXG4gICAgICAgICAgc2hvd0NvbmZpcm0oJ+eZu+W9leeKtuaAgeW3sui/h+acn++8jOaCqOWPr+S7pee7p+e7reeVmeWcqOivpemhtemdou+8jOaIluiAhemHjeaWsOeZu+W9lT8nKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgIGlmIChyZXMuY29uZmlybSkge1xyXG4gICAgICAgICAgICAgIHN0b3JlLmRpc3BhdGNoKCdMb2dPdXQnKS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICB1bmkucmVMYXVuY2goeyB1cmw6ICcvcGFnZXMvbG9naW4nIH0pXHJcbiAgICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSlcclxuICAgICAgICAgIHJlamVjdCgn5peg5pWI55qE5Lya6K+d77yM5oiW6ICF5Lya6K+d5bey6L+H5pyf77yM6K+36YeN5paw55m75b2V44CCJylcclxuICAgICAgICB9IGVsc2UgaWYgKGNvZGUgPT09IDUwMCkge1xyXG4gICAgICAgICAgdG9hc3QobXNnKVxyXG4gICAgICAgICAgcmVqZWN0KCc1MDAnKVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29kZSAhPT0gMjAwKSB7XHJcbiAgICAgICAgICB0b2FzdChtc2cpXHJcbiAgICAgICAgICByZWplY3QoY29kZSlcclxuICAgICAgICB9XHJcbiAgICAgICAgcmVzb2x2ZShyZXMuZGF0YSlcclxuICAgICAgfSlcclxuICAgICAgLmNhdGNoKGVycm9yID0+IHtcclxuICAgICAgICBsZXQgeyBtZXNzYWdlIH0gPSBlcnJvclxyXG4gICAgICAgIGlmIChtZXNzYWdlID09PSAnTmV0d29yayBFcnJvcicpIHtcclxuICAgICAgICAgIG1lc3NhZ2UgPSAn5ZCO56uv5o6l5Y+j6L+e5o6l5byC5bi4J1xyXG4gICAgICAgIH0gZWxzZSBpZiAobWVzc2FnZS5pbmNsdWRlcygndGltZW91dCcpKSB7XHJcbiAgICAgICAgICBtZXNzYWdlID0gJ+ezu+e7n+aOpeWPo+ivt+axgui2heaXtidcclxuICAgICAgICB9IGVsc2UgaWYgKG1lc3NhZ2UuaW5jbHVkZXMoJ1JlcXVlc3QgZmFpbGVkIHdpdGggc3RhdHVzIGNvZGUnKSkge1xyXG4gICAgICAgICAgbWVzc2FnZSA9ICfns7vnu5/mjqXlj6MnICsgbWVzc2FnZS5zdWJzdHIobWVzc2FnZS5sZW5ndGggLSAzKSArICflvILluLgnXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHRvYXN0KG1lc3NhZ2UpXHJcbiAgICAgICAgcmVqZWN0KGVycm9yKVxyXG4gICAgICB9KVxyXG4gIH0pXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHJlcXVlc3RcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///160\n");
  15445. /***/ }),
  15446. /* 161 */
  15447. /*!*****************************************************!*\
  15448. !*** D:/Intelligent/jn_uniapp/jn_app/utils/auth.js ***!
  15449. \*****************************************************/
  15450. /*! no static exports found */
  15451. /***/ (function(module, exports, __webpack_require__) {
  15452. "use strict";
  15453. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getAccessToken = getAccessToken;\nexports.getRefreshToken = getRefreshToken;\nexports.removeToken = removeToken;\nexports.setToken = setToken;\nvar AccessTokenKey = 'ACCESS_TOKEN';\nvar RefreshTokenKey = 'REFRESH_TOKEN';\n\n// ========== Token 相关 ==========\n\nfunction getAccessToken() {\n return uni.getStorageSync(AccessTokenKey);\n}\nfunction getRefreshToken() {\n return uni.getStorageSync(RefreshTokenKey);\n}\nfunction setToken(token) {\n uni.setStorageSync(AccessTokenKey, token.accessToken);\n uni.setStorageSync(RefreshTokenKey, token.refreshToken);\n}\nfunction removeToken() {\n uni.removeStorageSync(AccessTokenKey);\n uni.removeStorageSync(RefreshTokenKey);\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvYXV0aC5qcyJdLCJuYW1lcyI6WyJBY2Nlc3NUb2tlbktleSIsIlJlZnJlc2hUb2tlbktleSIsImdldEFjY2Vzc1Rva2VuIiwidW5pIiwiZ2V0U3RvcmFnZVN5bmMiLCJnZXRSZWZyZXNoVG9rZW4iLCJzZXRUb2tlbiIsInRva2VuIiwic2V0U3RvcmFnZVN5bmMiLCJhY2Nlc3NUb2tlbiIsInJlZnJlc2hUb2tlbiIsInJlbW92ZVRva2VuIiwicmVtb3ZlU3RvcmFnZVN5bmMiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQU1BLGNBQWMsR0FBRyxjQUFjO0FBQ3JDLElBQU1DLGVBQWUsR0FBRyxlQUFlOztBQUV2Qzs7QUFFTyxTQUFTQyxjQUFjLEdBQUc7RUFDL0IsT0FBT0MsR0FBRyxDQUFDQyxjQUFjLENBQUNKLGNBQWMsQ0FBQztBQUMzQztBQUVPLFNBQVNLLGVBQWUsR0FBRztFQUNoQyxPQUFPRixHQUFHLENBQUNDLGNBQWMsQ0FBQ0gsZUFBZSxDQUFDO0FBQzVDO0FBRU8sU0FBU0ssUUFBUSxDQUFDQyxLQUFLLEVBQUU7RUFDOUJKLEdBQUcsQ0FBQ0ssY0FBYyxDQUFDUixjQUFjLEVBQUVPLEtBQUssQ0FBQ0UsV0FBVyxDQUFDO0VBQ3JETixHQUFHLENBQUNLLGNBQWMsQ0FBQ1AsZUFBZSxFQUFFTSxLQUFLLENBQUNHLFlBQVksQ0FBQztBQUN6RDtBQUVPLFNBQVNDLFdBQVcsR0FBRztFQUM1QlIsR0FBRyxDQUFDUyxpQkFBaUIsQ0FBQ1osY0FBYyxDQUFDO0VBQ3JDRyxHQUFHLENBQUNTLGlCQUFpQixDQUFDWCxlQUFlLENBQUM7QUFDeEMiLCJmaWxlIjoiMTYxLmpzIiwic291cmNlc0NvbnRlbnQiOlsiY29uc3QgQWNjZXNzVG9rZW5LZXkgPSAnQUNDRVNTX1RPS0VOJ1xyXG5jb25zdCBSZWZyZXNoVG9rZW5LZXkgPSAnUkVGUkVTSF9UT0tFTidcclxuXHJcbi8vID09PT09PT09PT0gVG9rZW4g55u45YWzID09PT09PT09PT1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXRBY2Nlc3NUb2tlbigpIHtcclxuICByZXR1cm4gdW5pLmdldFN0b3JhZ2VTeW5jKEFjY2Vzc1Rva2VuS2V5KVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVmcmVzaFRva2VuKCkge1xyXG4gIHJldHVybiB1bmkuZ2V0U3RvcmFnZVN5bmMoUmVmcmVzaFRva2VuS2V5KVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gc2V0VG9rZW4odG9rZW4pIHtcclxuICB1bmkuc2V0U3RvcmFnZVN5bmMoQWNjZXNzVG9rZW5LZXksIHRva2VuLmFjY2Vzc1Rva2VuKVxyXG4gIHVuaS5zZXRTdG9yYWdlU3luYyhSZWZyZXNoVG9rZW5LZXksIHRva2VuLnJlZnJlc2hUb2tlbilcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIHJlbW92ZVRva2VuKCkge1xyXG4gIHVuaS5yZW1vdmVTdG9yYWdlU3luYyhBY2Nlc3NUb2tlbktleSlcclxuICB1bmkucmVtb3ZlU3RvcmFnZVN5bmMoUmVmcmVzaFRva2VuS2V5KVxyXG59XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///161\n");
  15454. /***/ }),
  15455. /* 162 */
  15456. /*!**********************************************************!*\
  15457. !*** D:/Intelligent/jn_uniapp/jn_app/utils/errorCode.js ***!
  15458. \**********************************************************/
  15459. /*! no static exports found */
  15460. /***/ (function(module, exports, __webpack_require__) {
  15461. "use strict";
  15462. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n '401': '认证失败,无法访问系统资源',\n '403': '当前操作没有权限',\n '404': '访问资源不存在',\n 'default': '系统未知错误,请反馈给管理员'\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvZXJyb3JDb2RlLmpzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztlQUFlO0VBQ2IsS0FBSyxFQUFFLGVBQWU7RUFDdEIsS0FBSyxFQUFFLFVBQVU7RUFDakIsS0FBSyxFQUFFLFNBQVM7RUFDaEIsU0FBUyxFQUFFO0FBQ2IsQ0FBQztBQUFBIiwiZmlsZSI6IjE2Mi5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICAnNDAxJzogJ+iupOivgeWksei0pe+8jOaXoOazleiuv+mXruezu+e7n+i1hOa6kCcsXHJcbiAgJzQwMyc6ICflvZPliY3mk43kvZzmsqHmnInmnYPpmZAnLFxyXG4gICc0MDQnOiAn6K6/6Zeu6LWE5rqQ5LiN5a2Y5ZyoJyxcclxuICAnZGVmYXVsdCc6ICfns7vnu5/mnKrnn6XplJnor6/vvIzor7flj43ppojnu5nnrqHnkIblkZgnXHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///162\n");
  15463. /***/ }),
  15464. /* 163 */
  15465. /*!*******************************************************!*\
  15466. !*** D:/Intelligent/jn_uniapp/jn_app/utils/common.js ***!
  15467. \*******************************************************/
  15468. /*! no static exports found */
  15469. /***/ (function(module, exports, __webpack_require__) {
  15470. "use strict";
  15471. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.showConfirm = showConfirm;\nexports.tansParams = tansParams;\nexports.toast = toast;\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\n/**\r\n* 显示消息提示框\r\n* @param content 提示的标题\r\n*/\nfunction toast(content) {\n uni.showToast({\n icon: 'none',\n title: content\n });\n}\n\n/**\r\n* 显示模态弹窗\r\n* @param content 提示的标题\r\n*/\nfunction showConfirm(content) {\n return new Promise(function (resolve, reject) {\n uni.showModal({\n title: '提示',\n content: content,\n cancelText: '取消',\n confirmText: '确定',\n success: function success(res) {\n resolve(res);\n }\n });\n });\n}\n\n/**\r\n* 参数处理\r\n* @param params 参数\r\n*/\nfunction tansParams(params) {\n var result = '';\n for (var _i = 0, _Object$keys = Object.keys(params); _i < _Object$keys.length; _i++) {\n var propName = _Object$keys[_i];\n var value = params[propName];\n var part = encodeURIComponent(propName) + \"=\";\n if (value !== null && value !== \"\" && typeof value !== \"undefined\") {\n if ((0, _typeof2.default)(value) === 'object') {\n for (var _i2 = 0, _Object$keys2 = Object.keys(value); _i2 < _Object$keys2.length; _i2++) {\n var key = _Object$keys2[_i2];\n if (value[key] !== null && value[key] !== \"\" && typeof value[key] !== 'undefined') {\n var _params = propName + '[' + key + ']';\n var subPart = encodeURIComponent(_params) + \"=\";\n result += subPart + encodeURIComponent(value[key]) + \"&\";\n }\n }\n } else {\n result += part + encodeURIComponent(value) + \"&\";\n }\n }\n }\n return result;\n}//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vdXRpbHMvY29tbW9uLmpzIl0sIm5hbWVzIjpbInRvYXN0IiwiY29udGVudCIsInVuaSIsInNob3dUb2FzdCIsImljb24iLCJ0aXRsZSIsInNob3dDb25maXJtIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJzaG93TW9kYWwiLCJjYW5jZWxUZXh0IiwiY29uZmlybVRleHQiLCJzdWNjZXNzIiwicmVzIiwidGFuc1BhcmFtcyIsInBhcmFtcyIsInJlc3VsdCIsIk9iamVjdCIsImtleXMiLCJwcm9wTmFtZSIsInZhbHVlIiwicGFydCIsImVuY29kZVVSSUNvbXBvbmVudCIsImtleSIsInN1YlBhcnQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNPLFNBQVNBLEtBQUssQ0FBQ0MsT0FBTyxFQUFFO0VBQzdCQyxHQUFHLENBQUNDLFNBQVMsQ0FBQztJQUNaQyxJQUFJLEVBQUUsTUFBTTtJQUNaQyxLQUFLLEVBQUVKO0VBQ1QsQ0FBQyxDQUFDO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTSyxXQUFXLENBQUNMLE9BQU8sRUFBRTtFQUNuQyxPQUFPLElBQUlNLE9BQU8sQ0FBQyxVQUFDQyxPQUFPLEVBQUVDLE1BQU0sRUFBSztJQUN0Q1AsR0FBRyxDQUFDUSxTQUFTLENBQUM7TUFDWkwsS0FBSyxFQUFFLElBQUk7TUFDWEosT0FBTyxFQUFFQSxPQUFPO01BQ2hCVSxVQUFVLEVBQUUsSUFBSTtNQUNoQkMsV0FBVyxFQUFFLElBQUk7TUFDakJDLE9BQU8sRUFBRSxpQkFBU0MsR0FBRyxFQUFFO1FBQ3JCTixPQUFPLENBQUNNLEdBQUcsQ0FBQztNQUNkO0lBQ0YsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0o7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyxVQUFVLENBQUNDLE1BQU0sRUFBRTtFQUNqQyxJQUFJQyxNQUFNLEdBQUcsRUFBRTtFQUNmLGdDQUF1QkMsTUFBTSxDQUFDQyxJQUFJLENBQUNILE1BQU0sQ0FBQyxrQ0FBRTtJQUF2QyxJQUFNSSxRQUFRO0lBQ2pCLElBQU1DLEtBQUssR0FBR0wsTUFBTSxDQUFDSSxRQUFRLENBQUM7SUFDOUIsSUFBSUUsSUFBSSxHQUFHQyxrQkFBa0IsQ0FBQ0gsUUFBUSxDQUFDLEdBQUcsR0FBRztJQUM3QyxJQUFJQyxLQUFLLEtBQUssSUFBSSxJQUFJQSxLQUFLLEtBQUssRUFBRSxJQUFJLE9BQVFBLEtBQU0sS0FBSyxXQUFXLEVBQUU7TUFDcEUsSUFBSSxzQkFBT0EsS0FBSyxNQUFLLFFBQVEsRUFBRTtRQUM3QixrQ0FBa0JILE1BQU0sQ0FBQ0MsSUFBSSxDQUFDRSxLQUFLLENBQUMscUNBQUU7VUFBakMsSUFBTUcsR0FBRztVQUNaLElBQUlILEtBQUssQ0FBQ0csR0FBRyxDQUFDLEtBQUssSUFBSSxJQUFJSCxLQUFLLENBQUNHLEdBQUcsQ0FBQyxLQUFLLEVBQUUsSUFBSSxPQUFRSCxLQUFLLENBQUNHLEdBQUcsQ0FBRSxLQUFLLFdBQVcsRUFBRTtZQUNuRixJQUFJUixPQUFNLEdBQUdJLFFBQVEsR0FBRyxHQUFHLEdBQUdJLEdBQUcsR0FBRyxHQUFHO1lBQ3ZDLElBQUlDLE9BQU8sR0FBR0Ysa0JBQWtCLENBQUNQLE9BQU0sQ0FBQyxHQUFHLEdBQUc7WUFDOUNDLE1BQU0sSUFBSVEsT0FBTyxHQUFHRixrQkFBa0IsQ0FBQ0YsS0FBSyxDQUFDRyxHQUFHLENBQUMsQ0FBQyxHQUFHLEdBQUc7VUFDMUQ7UUFDRjtNQUNGLENBQUMsTUFBTTtRQUNMUCxNQUFNLElBQUlLLElBQUksR0FBR0Msa0JBQWtCLENBQUNGLEtBQUssQ0FBQyxHQUFHLEdBQUc7TUFDbEQ7SUFDRjtFQUNGO0VBQ0EsT0FBT0osTUFBTTtBQUNmIiwiZmlsZSI6IjE2My5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxyXG4qIOaYvuekuua2iOaBr+aPkOekuuahhlxyXG4qIEBwYXJhbSBjb250ZW50IOaPkOekuueahOagh+mimFxyXG4qL1xyXG5leHBvcnQgZnVuY3Rpb24gdG9hc3QoY29udGVudCkge1xyXG4gIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgaWNvbjogJ25vbmUnLFxyXG4gICAgdGl0bGU6IGNvbnRlbnRcclxuICB9KVxyXG59XHJcblxyXG4vKipcclxuKiDmmL7npLrmqKHmgIHlvLnnqpdcclxuKiBAcGFyYW0gY29udGVudCDmj5DnpLrnmoTmoIfpophcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHNob3dDb25maXJtKGNvbnRlbnQpIHtcclxuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgdW5pLnNob3dNb2RhbCh7XHJcbiAgICAgIHRpdGxlOiAn5o+Q56S6JyxcclxuICAgICAgY29udGVudDogY29udGVudCxcclxuICAgICAgY2FuY2VsVGV4dDogJ+WPlua2iCcsXHJcbiAgICAgIGNvbmZpcm1UZXh0OiAn56Gu5a6aJyxcclxuICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7XHJcbiAgICAgICAgcmVzb2x2ZShyZXMpXHJcbiAgICAgIH1cclxuICAgIH0pXHJcbiAgfSlcclxufVxyXG5cclxuLyoqXHJcbiog5Y+C5pWw5aSE55CGXHJcbiogQHBhcmFtIHBhcmFtcyDlj4LmlbBcclxuKi9cclxuZXhwb3J0IGZ1bmN0aW9uIHRhbnNQYXJhbXMocGFyYW1zKSB7XHJcbiAgbGV0IHJlc3VsdCA9ICcnXHJcbiAgZm9yIChjb25zdCBwcm9wTmFtZSBvZiBPYmplY3Qua2V5cyhwYXJhbXMpKSB7XHJcbiAgICBjb25zdCB2YWx1ZSA9IHBhcmFtc1twcm9wTmFtZV1cclxuICAgIHZhciBwYXJ0ID0gZW5jb2RlVVJJQ29tcG9uZW50KHByb3BOYW1lKSArIFwiPVwiXHJcbiAgICBpZiAodmFsdWUgIT09IG51bGwgJiYgdmFsdWUgIT09IFwiXCIgJiYgdHlwZW9mICh2YWx1ZSkgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyh2YWx1ZSkpIHtcclxuICAgICAgICAgIGlmICh2YWx1ZVtrZXldICE9PSBudWxsICYmIHZhbHVlW2tleV0gIT09IFwiXCIgJiYgdHlwZW9mICh2YWx1ZVtrZXldKSAhPT0gJ3VuZGVmaW5lZCcpIHtcclxuICAgICAgICAgICAgbGV0IHBhcmFtcyA9IHByb3BOYW1lICsgJ1snICsga2V5ICsgJ10nXHJcbiAgICAgICAgICAgIHZhciBzdWJQYXJ0ID0gZW5jb2RlVVJJQ29tcG9uZW50KHBhcmFtcykgKyBcIj1cIlxyXG4gICAgICAgICAgICByZXN1bHQgKz0gc3ViUGFydCArIGVuY29kZVVSSUNvbXBvbmVudCh2YWx1ZVtrZXldKSArIFwiJlwiXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHJlc3VsdCArPSBwYXJ0ICsgZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKSArIFwiJlwiXHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcbiAgcmV0dXJuIHJlc3VsdFxyXG59Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///163\n");
  15472. /***/ }),
  15473. /* 164 */
  15474. /*!*****************************************************************!*\
  15475. !*** D:/Intelligent/jn_uniapp/jn_app/static/images/profile.jpg ***!
  15476. \*****************************************************************/
  15477. /*! no static exports found */
  15478. /***/ (function(module, exports) {
  15479. eval("module.exports = \"/static/images/profile.jpg\";//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbbnVsbF0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBIiwiZmlsZSI6IjE2NC5qcyIsInNvdXJjZXNDb250ZW50IjpbIm1vZHVsZS5leHBvcnRzID0gXCIvc3RhdGljL2ltYWdlcy9wcm9maWxlLmpwZ1wiOyJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///164\n");
  15480. /***/ }),
  15481. /* 165 */
  15482. /*!********************************************************!*\
  15483. !*** D:/Intelligent/jn_uniapp/jn_app/store/getters.js ***!
  15484. \********************************************************/
  15485. /*! no static exports found */
  15486. /***/ (function(module, exports, __webpack_require__) {
  15487. "use strict";
  15488. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar getters = {\n token: function token(state) {\n return state.user.token;\n },\n avatar: function avatar(state) {\n return state.user.avatar;\n },\n name: function name(state) {\n return state.user.name;\n },\n roles: function roles(state) {\n return state.user.roles;\n },\n permissions: function permissions(state) {\n return state.user.permissions;\n }\n};\nvar _default = getters;\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvZ2V0dGVycy5qcyJdLCJuYW1lcyI6WyJnZXR0ZXJzIiwidG9rZW4iLCJzdGF0ZSIsInVzZXIiLCJhdmF0YXIiLCJuYW1lIiwicm9sZXMiLCJwZXJtaXNzaW9ucyJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBTUEsT0FBTyxHQUFHO0VBQ2RDLEtBQUssRUFBRSxlQUFBQyxLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDQyxJQUFJLENBQUNGLEtBQUs7RUFBQTtFQUNoQ0csTUFBTSxFQUFFLGdCQUFBRixLQUFLO0lBQUEsT0FBSUEsS0FBSyxDQUFDQyxJQUFJLENBQUNDLE1BQU07RUFBQTtFQUNsQ0MsSUFBSSxFQUFFLGNBQUFILEtBQUs7SUFBQSxPQUFJQSxLQUFLLENBQUNDLElBQUksQ0FBQ0UsSUFBSTtFQUFBO0VBQzlCQyxLQUFLLEVBQUUsZUFBQUosS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0MsSUFBSSxDQUFDRyxLQUFLO0VBQUE7RUFDaENDLFdBQVcsRUFBRSxxQkFBQUwsS0FBSztJQUFBLE9BQUlBLEtBQUssQ0FBQ0MsSUFBSSxDQUFDSSxXQUFXO0VBQUE7QUFDOUMsQ0FBQztBQUFBLGVBQ2NQLE9BQU87QUFBQSIsImZpbGUiOiIxNjUuanMiLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBnZXR0ZXJzID0ge1xyXG4gIHRva2VuOiBzdGF0ZSA9PiBzdGF0ZS51c2VyLnRva2VuLFxyXG4gIGF2YXRhcjogc3RhdGUgPT4gc3RhdGUudXNlci5hdmF0YXIsXHJcbiAgbmFtZTogc3RhdGUgPT4gc3RhdGUudXNlci5uYW1lLFxyXG4gIHJvbGVzOiBzdGF0ZSA9PiBzdGF0ZS51c2VyLnJvbGVzLFxyXG4gIHBlcm1pc3Npb25zOiBzdGF0ZSA9PiBzdGF0ZS51c2VyLnBlcm1pc3Npb25zXHJcbn1cclxuZXhwb3J0IGRlZmF1bHQgZ2V0dGVyc1xyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///165\n");
  15489. /***/ }),
  15490. /* 166 */
  15491. /*!********************************************************!*\
  15492. !*** D:/Intelligent/jn_uniapp/jn_app/plugins/index.js ***!
  15493. \********************************************************/
  15494. /*! no static exports found */
  15495. /***/ (function(module, exports, __webpack_require__) {
  15496. "use strict";
  15497. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _tab = _interopRequireDefault(__webpack_require__(/*! ./tab */ 167));\nvar _auth = _interopRequireDefault(__webpack_require__(/*! ./auth */ 168));\nvar _modal = _interopRequireDefault(__webpack_require__(/*! ./modal */ 169));\nvar _default = {\n install: function install(Vue) {\n // 页签操作\n Vue.prototype.$tab = _tab.default;\n // 认证对象\n Vue.prototype.$auth = _auth.default;\n // 模态框对象\n Vue.prototype.$modal = _modal.default;\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGx1Z2lucy9pbmRleC5qcyJdLCJuYW1lcyI6WyJpbnN0YWxsIiwiVnVlIiwicHJvdG90eXBlIiwiJHRhYiIsInRhYiIsIiRhdXRoIiwiYXV0aCIsIiRtb2RhbCIsIm1vZGFsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQTJCLGVBRVo7RUFDYkEsT0FBTyxtQkFBQ0MsR0FBRyxFQUFFO0lBQ1g7SUFDQUEsR0FBRyxDQUFDQyxTQUFTLENBQUNDLElBQUksR0FBR0MsWUFBRztJQUN4QjtJQUNBSCxHQUFHLENBQUNDLFNBQVMsQ0FBQ0csS0FBSyxHQUFHQyxhQUFJO0lBQzFCO0lBQ0FMLEdBQUcsQ0FBQ0MsU0FBUyxDQUFDSyxNQUFNLEdBQUdDLGNBQUs7RUFDOUI7QUFDRixDQUFDO0FBQUEiLCJmaWxlIjoiMTY2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHRhYiBmcm9tICcuL3RhYidcclxuaW1wb3J0IGF1dGggZnJvbSAnLi9hdXRoJ1xyXG5pbXBvcnQgbW9kYWwgZnJvbSAnLi9tb2RhbCdcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBpbnN0YWxsKFZ1ZSkge1xyXG4gICAgLy8g6aG1562+5pON5L2cXHJcbiAgICBWdWUucHJvdG90eXBlLiR0YWIgPSB0YWJcclxuICAgIC8vIOiupOivgeWvueixoVxyXG4gICAgVnVlLnByb3RvdHlwZS4kYXV0aCA9IGF1dGhcclxuICAgIC8vIOaooeaAgeahhuWvueixoVxyXG4gICAgVnVlLnByb3RvdHlwZS4kbW9kYWwgPSBtb2RhbFxyXG4gIH1cclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///166\n");
  15498. /***/ }),
  15499. /* 167 */
  15500. /*!******************************************************!*\
  15501. !*** D:/Intelligent/jn_uniapp/jn_app/plugins/tab.js ***!
  15502. \******************************************************/
  15503. /*! no static exports found */
  15504. /***/ (function(module, exports, __webpack_require__) {
  15505. "use strict";
  15506. eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = {\n // 关闭所有页面,打开到应用内的某个页面\n reLaunch: function reLaunch(url) {\n return uni.reLaunch({\n url: url\n });\n },\n // 跳转到tabBar页面,并关闭其他所有非tabBar页面\n switchTab: function switchTab(url) {\n return uni.switchTab({\n url: url\n });\n },\n // 关闭当前页面,跳转到应用内的某个页面\n redirectTo: function redirectTo(url) {\n return uni.redirectTo({\n url: url\n });\n },\n // 保留当前页面,跳转到应用内的某个页面\n navigateTo: function navigateTo(url) {\n return uni.navigateTo({\n url: url\n });\n },\n // 关闭当前页面,返回上一页面或多级页面\n navigateBack: function navigateBack() {\n return uni.navigateBack();\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGx1Z2lucy90YWIuanMiXSwibmFtZXMiOlsicmVMYXVuY2giLCJ1cmwiLCJ1bmkiLCJzd2l0Y2hUYWIiLCJyZWRpcmVjdFRvIiwibmF2aWdhdGVUbyIsIm5hdmlnYXRlQmFjayJdLCJtYXBwaW5ncyI6Ijs7Ozs7O2VBQWU7RUFDYjtFQUNBQSxRQUFRLG9CQUFDQyxHQUFHLEVBQUU7SUFDWixPQUFPQyxHQUFHLENBQUNGLFFBQVEsQ0FBQztNQUNsQkMsR0FBRyxFQUFFQTtJQUNQLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBRSxTQUFTLHFCQUFDRixHQUFHLEVBQUU7SUFDYixPQUFPQyxHQUFHLENBQUNDLFNBQVMsQ0FBQztNQUNuQkYsR0FBRyxFQUFFQTtJQUNQLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBRyxVQUFVLHNCQUFDSCxHQUFHLEVBQUU7SUFDZCxPQUFPQyxHQUFHLENBQUNFLFVBQVUsQ0FBQztNQUNwQkgsR0FBRyxFQUFFQTtJQUNQLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBSSxVQUFVLHNCQUFDSixHQUFHLEVBQUU7SUFDZCxPQUFPQyxHQUFHLENBQUNHLFVBQVUsQ0FBQztNQUNwQkosR0FBRyxFQUFFQTtJQUNQLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBSyxZQUFZLDBCQUFHO0lBQ2IsT0FBT0osR0FBRyxDQUFDSSxZQUFZLEVBQUU7RUFDM0I7QUFDRixDQUFDO0FBQUEiLCJmaWxlIjoiMTY3LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQge1xyXG4gIC8vIOWFs+mXreaJgOaciemhtemdou+8jOaJk+W8gOWIsOW6lOeUqOWGheeahOafkOS4qumhtemdolxyXG4gIHJlTGF1bmNoKHVybCkge1xyXG4gICAgcmV0dXJuIHVuaS5yZUxhdW5jaCh7XHJcbiAgICAgIHVybDogdXJsXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgLy8g6Lez6L2s5YiwdGFiQmFy6aG16Z2i77yM5bm25YWz6Zet5YW25LuW5omA5pyJ6Z2edGFiQmFy6aG16Z2iXHJcbiAgc3dpdGNoVGFiKHVybCkge1xyXG4gICAgcmV0dXJuIHVuaS5zd2l0Y2hUYWIoe1xyXG4gICAgICB1cmw6IHVybFxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOWFs+mXreW9k+WJjemhtemdou+8jOi3s+i9rOWIsOW6lOeUqOWGheeahOafkOS4qumhtemdolxyXG4gIHJlZGlyZWN0VG8odXJsKSB7XHJcbiAgICByZXR1cm4gdW5pLnJlZGlyZWN0VG8oe1xyXG4gICAgICB1cmw6IHVybFxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOS/neeVmeW9k+WJjemhtemdou+8jOi3s+i9rOWIsOW6lOeUqOWGheeahOafkOS4qumhtemdolxyXG4gIG5hdmlnYXRlVG8odXJsKSB7XHJcbiAgICByZXR1cm4gdW5pLm5hdmlnYXRlVG8oe1xyXG4gICAgICB1cmw6IHVybFxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOWFs+mXreW9k+WJjemhtemdou+8jOi/lOWbnuS4iuS4gOmhtemdouaIluWkmue6p+mhtemdolxyXG4gIG5hdmlnYXRlQmFjaygpIHtcclxuICAgIHJldHVybiB1bmkubmF2aWdhdGVCYWNrKClcclxuICB9XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///167\n");
  15507. /***/ }),
  15508. /* 168 */
  15509. /*!*******************************************************!*\
  15510. !*** D:/Intelligent/jn_uniapp/jn_app/plugins/auth.js ***!
  15511. \*******************************************************/
  15512. /*! no static exports found */
  15513. /***/ (function(module, exports, __webpack_require__) {
  15514. "use strict";
  15515. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _store = _interopRequireDefault(__webpack_require__(/*! @/store */ 154));\nfunction authPermission(permission) {\n var all_permission = \"*:*:*\";\n var permissions = _store.default.getters && _store.default.getters.permissions;\n if (permission && permission.length > 0) {\n return permissions.some(function (v) {\n return all_permission === v || v === permission;\n });\n } else {\n return false;\n }\n}\nfunction authRole(role) {\n var super_admin = \"admin\";\n var roles = _store.default.getters && _store.default.getters.roles;\n if (role && role.length > 0) {\n return roles.some(function (v) {\n return super_admin === v || v === role;\n });\n } else {\n return false;\n }\n}\nvar _default = {\n // 验证用户是否具备某权限\n hasPermi: function hasPermi(permission) {\n return authPermission(permission);\n },\n // 验证用户是否含有指定权限,只需包含其中一个\n hasPermiOr: function hasPermiOr(permissions) {\n return permissions.some(function (item) {\n return authPermission(item);\n });\n },\n // 验证用户是否含有指定权限,必须全部拥有\n hasPermiAnd: function hasPermiAnd(permissions) {\n return permissions.every(function (item) {\n return authPermission(item);\n });\n },\n // 验证用户是否具备某角色\n hasRole: function hasRole(role) {\n return authRole(role);\n },\n // 验证用户是否含有指定角色,只需包含其中一个\n hasRoleOr: function hasRoleOr(roles) {\n return roles.some(function (item) {\n return authRole(item);\n });\n },\n // 验证用户是否含有指定角色,必须全部拥有\n hasRoleAnd: function hasRoleAnd(roles) {\n return roles.every(function (item) {\n return authRole(item);\n });\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGx1Z2lucy9hdXRoLmpzIl0sIm5hbWVzIjpbImF1dGhQZXJtaXNzaW9uIiwicGVybWlzc2lvbiIsImFsbF9wZXJtaXNzaW9uIiwicGVybWlzc2lvbnMiLCJzdG9yZSIsImdldHRlcnMiLCJsZW5ndGgiLCJzb21lIiwidiIsImF1dGhSb2xlIiwicm9sZSIsInN1cGVyX2FkbWluIiwicm9sZXMiLCJoYXNQZXJtaSIsImhhc1Blcm1pT3IiLCJpdGVtIiwiaGFzUGVybWlBbmQiLCJldmVyeSIsImhhc1JvbGUiLCJoYXNSb2xlT3IiLCJoYXNSb2xlQW5kIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7QUFFQSxTQUFTQSxjQUFjLENBQUNDLFVBQVUsRUFBRTtFQUNsQyxJQUFNQyxjQUFjLEdBQUcsT0FBTztFQUM5QixJQUFNQyxXQUFXLEdBQUdDLGNBQUssQ0FBQ0MsT0FBTyxJQUFJRCxjQUFLLENBQUNDLE9BQU8sQ0FBQ0YsV0FBVztFQUM5RCxJQUFJRixVQUFVLElBQUlBLFVBQVUsQ0FBQ0ssTUFBTSxHQUFHLENBQUMsRUFBRTtJQUN2QyxPQUFPSCxXQUFXLENBQUNJLElBQUksQ0FBQyxVQUFBQyxDQUFDLEVBQUk7TUFDM0IsT0FBT04sY0FBYyxLQUFLTSxDQUFDLElBQUlBLENBQUMsS0FBS1AsVUFBVTtJQUNqRCxDQUFDLENBQUM7RUFDSixDQUFDLE1BQU07SUFDTCxPQUFPLEtBQUs7RUFDZDtBQUNGO0FBRUEsU0FBU1EsUUFBUSxDQUFDQyxJQUFJLEVBQUU7RUFDdEIsSUFBTUMsV0FBVyxHQUFHLE9BQU87RUFDM0IsSUFBTUMsS0FBSyxHQUFHUixjQUFLLENBQUNDLE9BQU8sSUFBSUQsY0FBSyxDQUFDQyxPQUFPLENBQUNPLEtBQUs7RUFDbEQsSUFBSUYsSUFBSSxJQUFJQSxJQUFJLENBQUNKLE1BQU0sR0FBRyxDQUFDLEVBQUU7SUFDM0IsT0FBT00sS0FBSyxDQUFDTCxJQUFJLENBQUMsVUFBQUMsQ0FBQyxFQUFJO01BQ3JCLE9BQU9HLFdBQVcsS0FBS0gsQ0FBQyxJQUFJQSxDQUFDLEtBQUtFLElBQUk7SUFDeEMsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxNQUFNO0lBQ0wsT0FBTyxLQUFLO0VBQ2Q7QUFDRjtBQUFDLGVBRWM7RUFDYjtFQUNBRyxRQUFRLG9CQUFDWixVQUFVLEVBQUU7SUFDbkIsT0FBT0QsY0FBYyxDQUFDQyxVQUFVLENBQUM7RUFDbkMsQ0FBQztFQUNEO0VBQ0FhLFVBQVUsc0JBQUNYLFdBQVcsRUFBRTtJQUN0QixPQUFPQSxXQUFXLENBQUNJLElBQUksQ0FBQyxVQUFBUSxJQUFJLEVBQUk7TUFDOUIsT0FBT2YsY0FBYyxDQUFDZSxJQUFJLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEO0VBQ0FDLFdBQVcsdUJBQUNiLFdBQVcsRUFBRTtJQUN2QixPQUFPQSxXQUFXLENBQUNjLEtBQUssQ0FBQyxVQUFBRixJQUFJLEVBQUk7TUFDL0IsT0FBT2YsY0FBYyxDQUFDZSxJQUFJLENBQUM7SUFDN0IsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEO0VBQ0FHLE9BQU8sbUJBQUNSLElBQUksRUFBRTtJQUNaLE9BQU9ELFFBQVEsQ0FBQ0MsSUFBSSxDQUFDO0VBQ3ZCLENBQUM7RUFDRDtFQUNBUyxTQUFTLHFCQUFDUCxLQUFLLEVBQUU7SUFDZixPQUFPQSxLQUFLLENBQUNMLElBQUksQ0FBQyxVQUFBUSxJQUFJLEVBQUk7TUFDeEIsT0FBT04sUUFBUSxDQUFDTSxJQUFJLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEO0VBQ0FLLFVBQVUsc0JBQUNSLEtBQUssRUFBRTtJQUNoQixPQUFPQSxLQUFLLENBQUNLLEtBQUssQ0FBQyxVQUFBRixJQUFJLEVBQUk7TUFDekIsT0FBT04sUUFBUSxDQUFDTSxJQUFJLENBQUM7SUFDdkIsQ0FBQyxDQUFDO0VBQ0o7QUFDRixDQUFDO0FBQUEiLCJmaWxlIjoiMTY4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHN0b3JlIGZyb20gJ0Avc3RvcmUnXHJcblxyXG5mdW5jdGlvbiBhdXRoUGVybWlzc2lvbihwZXJtaXNzaW9uKSB7XHJcbiAgY29uc3QgYWxsX3Blcm1pc3Npb24gPSBcIio6KjoqXCJcclxuICBjb25zdCBwZXJtaXNzaW9ucyA9IHN0b3JlLmdldHRlcnMgJiYgc3RvcmUuZ2V0dGVycy5wZXJtaXNzaW9uc1xyXG4gIGlmIChwZXJtaXNzaW9uICYmIHBlcm1pc3Npb24ubGVuZ3RoID4gMCkge1xyXG4gICAgcmV0dXJuIHBlcm1pc3Npb25zLnNvbWUodiA9PiB7XHJcbiAgICAgIHJldHVybiBhbGxfcGVybWlzc2lvbiA9PT0gdiB8fCB2ID09PSBwZXJtaXNzaW9uXHJcbiAgICB9KVxyXG4gIH0gZWxzZSB7XHJcbiAgICByZXR1cm4gZmFsc2VcclxuICB9XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGF1dGhSb2xlKHJvbGUpIHtcclxuICBjb25zdCBzdXBlcl9hZG1pbiA9IFwiYWRtaW5cIlxyXG4gIGNvbnN0IHJvbGVzID0gc3RvcmUuZ2V0dGVycyAmJiBzdG9yZS5nZXR0ZXJzLnJvbGVzXHJcbiAgaWYgKHJvbGUgJiYgcm9sZS5sZW5ndGggPiAwKSB7XHJcbiAgICByZXR1cm4gcm9sZXMuc29tZSh2ID0+IHtcclxuICAgICAgcmV0dXJuIHN1cGVyX2FkbWluID09PSB2IHx8IHYgPT09IHJvbGVcclxuICAgIH0pXHJcbiAgfSBlbHNlIHtcclxuICAgIHJldHVybiBmYWxzZVxyXG4gIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIC8vIOmqjOivgeeUqOaIt+aYr+WQpuWFt+Wkh+afkOadg+mZkFxyXG4gIGhhc1Blcm1pKHBlcm1pc3Npb24pIHtcclxuICAgIHJldHVybiBhdXRoUGVybWlzc2lvbihwZXJtaXNzaW9uKVxyXG4gIH0sXHJcbiAgLy8g6aqM6K+B55So5oi35piv5ZCm5ZCr5pyJ5oyH5a6a5p2D6ZmQ77yM5Y+q6ZyA5YyF5ZCr5YW25Lit5LiA5LiqXHJcbiAgaGFzUGVybWlPcihwZXJtaXNzaW9ucykge1xyXG4gICAgcmV0dXJuIHBlcm1pc3Npb25zLnNvbWUoaXRlbSA9PiB7XHJcbiAgICAgIHJldHVybiBhdXRoUGVybWlzc2lvbihpdGVtKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOmqjOivgeeUqOaIt+aYr+WQpuWQq+acieaMh+Wumuadg+mZkO+8jOW/hemhu+WFqOmDqOaLpeaciVxyXG4gIGhhc1Blcm1pQW5kKHBlcm1pc3Npb25zKSB7XHJcbiAgICByZXR1cm4gcGVybWlzc2lvbnMuZXZlcnkoaXRlbSA9PiB7XHJcbiAgICAgIHJldHVybiBhdXRoUGVybWlzc2lvbihpdGVtKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIC8vIOmqjOivgeeUqOaIt+aYr+WQpuWFt+Wkh+afkOinkuiJslxyXG4gIGhhc1JvbGUocm9sZSkge1xyXG4gICAgcmV0dXJuIGF1dGhSb2xlKHJvbGUpXHJcbiAgfSxcclxuICAvLyDpqozor4HnlKjmiLfmmK/lkKblkKvmnInmjIflrprop5LoibLvvIzlj6rpnIDljIXlkKvlhbbkuK3kuIDkuKpcclxuICBoYXNSb2xlT3Iocm9sZXMpIHtcclxuICAgIHJldHVybiByb2xlcy5zb21lKGl0ZW0gPT4ge1xyXG4gICAgICByZXR1cm4gYXV0aFJvbGUoaXRlbSlcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDpqozor4HnlKjmiLfmmK/lkKblkKvmnInmjIflrprop5LoibLvvIzlv4Xpobvlhajpg6jmi6XmnIlcclxuICBoYXNSb2xlQW5kKHJvbGVzKSB7XHJcbiAgICByZXR1cm4gcm9sZXMuZXZlcnkoaXRlbSA9PiB7XHJcbiAgICAgIHJldHVybiBhdXRoUm9sZShpdGVtKVxyXG4gICAgfSlcclxuICB9XHJcbn1cclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///168\n");
  15516. /***/ }),
  15517. /* 169 */
  15518. /*!********************************************************!*\
  15519. !*** D:/Intelligent/jn_uniapp/jn_app/plugins/modal.js ***!
  15520. \********************************************************/
  15521. /*! no static exports found */
  15522. /***/ (function(module, exports, __webpack_require__) {
  15523. "use strict";
  15524. eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _typeof2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/typeof */ 4));\nvar _default = {\n // 消息提示\n msg: function msg(content) {\n uni.showToast({\n title: content,\n icon: 'none'\n });\n },\n // 错误消息\n msgError: function msgError(content) {\n uni.showToast({\n title: content,\n icon: 'error'\n });\n },\n // 成功消息\n msgSuccess: function msgSuccess(content) {\n uni.showToast({\n title: content,\n icon: 'success'\n });\n },\n // 隐藏消息\n hideMsg: function hideMsg(content) {\n uni.hideToast();\n },\n // 弹出提示\n alert: function alert(content) {\n uni.showModal({\n title: '提示',\n content: content,\n showCancel: false\n });\n },\n // 确认窗体\n confirm: function confirm(content) {\n return new Promise(function (resolve, reject) {\n uni.showModal({\n title: '系统提示',\n content: content,\n cancelText: '取消',\n confirmText: '确定',\n success: function success(res) {\n if (res.confirm) {\n resolve(res.confirm);\n }\n }\n });\n });\n },\n // 提示信息\n showToast: function showToast(option) {\n if ((0, _typeof2.default)(option) === \"object\") {\n uni.showToast(option);\n } else {\n uni.showToast({\n title: option,\n icon: \"none\",\n duration: 2500\n });\n }\n },\n // 打开遮罩层\n loading: function loading(content) {\n uni.showLoading({\n title: content,\n icon: 'none'\n });\n },\n // 关闭遮罩层\n closeLoading: function closeLoading() {\n uni.hideLoading();\n }\n};\nexports.default = _default;//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGx1Z2lucy9tb2RhbC5qcyJdLCJuYW1lcyI6WyJtc2ciLCJjb250ZW50IiwidW5pIiwic2hvd1RvYXN0IiwidGl0bGUiLCJpY29uIiwibXNnRXJyb3IiLCJtc2dTdWNjZXNzIiwiaGlkZU1zZyIsImhpZGVUb2FzdCIsImFsZXJ0Iiwic2hvd01vZGFsIiwic2hvd0NhbmNlbCIsImNvbmZpcm0iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImNhbmNlbFRleHQiLCJjb25maXJtVGV4dCIsInN1Y2Nlc3MiLCJyZXMiLCJvcHRpb24iLCJkdXJhdGlvbiIsImxvYWRpbmciLCJzaG93TG9hZGluZyIsImNsb3NlTG9hZGluZyIsImhpZGVMb2FkaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztlQUFlO0VBQ2I7RUFDQUEsR0FBRyxlQUFDQyxPQUFPLEVBQUU7SUFDWEMsR0FBRyxDQUFDQyxTQUFTLENBQUM7TUFDWkMsS0FBSyxFQUFFSCxPQUFPO01BQ2RJLElBQUksRUFBRTtJQUNSLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBQyxRQUFRLG9CQUFDTCxPQUFPLEVBQUU7SUFDaEJDLEdBQUcsQ0FBQ0MsU0FBUyxDQUFDO01BQ1pDLEtBQUssRUFBRUgsT0FBTztNQUNkSSxJQUFJLEVBQUU7SUFDUixDQUFDLENBQUM7RUFDSixDQUFDO0VBQ0Q7RUFDQUUsVUFBVSxzQkFBQ04sT0FBTyxFQUFFO0lBQ2xCQyxHQUFHLENBQUNDLFNBQVMsQ0FBQztNQUNaQyxLQUFLLEVBQUVILE9BQU87TUFDZEksSUFBSSxFQUFFO0lBQ1IsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEO0VBQ0FHLE9BQU8sbUJBQUNQLE9BQU8sRUFBRTtJQUNmQyxHQUFHLENBQUNPLFNBQVMsRUFBRTtFQUNqQixDQUFDO0VBQ0Q7RUFDQUMsS0FBSyxpQkFBQ1QsT0FBTyxFQUFFO0lBQ2JDLEdBQUcsQ0FBQ1MsU0FBUyxDQUFDO01BQ1pQLEtBQUssRUFBRSxJQUFJO01BQ1hILE9BQU8sRUFBRUEsT0FBTztNQUNoQlcsVUFBVSxFQUFFO0lBQ2QsQ0FBQyxDQUFDO0VBQ0osQ0FBQztFQUNEO0VBQ0FDLE9BQU8sbUJBQUNaLE9BQU8sRUFBRTtJQUNmLE9BQU8sSUFBSWEsT0FBTyxDQUFDLFVBQUNDLE9BQU8sRUFBRUMsTUFBTSxFQUFLO01BQ3RDZCxHQUFHLENBQUNTLFNBQVMsQ0FBQztRQUNaUCxLQUFLLEVBQUUsTUFBTTtRQUNiSCxPQUFPLEVBQUVBLE9BQU87UUFDaEJnQixVQUFVLEVBQUUsSUFBSTtRQUNoQkMsV0FBVyxFQUFFLElBQUk7UUFDakJDLE9BQU8sRUFBRSxpQkFBU0MsR0FBRyxFQUFFO1VBQ3JCLElBQUlBLEdBQUcsQ0FBQ1AsT0FBTyxFQUFFO1lBQ2ZFLE9BQU8sQ0FBQ0ssR0FBRyxDQUFDUCxPQUFPLENBQUM7VUFDdEI7UUFDRjtNQUNGLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBVixTQUFTLHFCQUFDa0IsTUFBTSxFQUFFO0lBQ2hCLElBQUksc0JBQU9BLE1BQU0sTUFBSyxRQUFRLEVBQUU7TUFDOUJuQixHQUFHLENBQUNDLFNBQVMsQ0FBQ2tCLE1BQU0sQ0FBQztJQUN2QixDQUFDLE1BQU07TUFDTG5CLEdBQUcsQ0FBQ0MsU0FBUyxDQUFDO1FBQ1pDLEtBQUssRUFBRWlCLE1BQU07UUFDYmhCLElBQUksRUFBRSxNQUFNO1FBQ1ppQixRQUFRLEVBQUU7TUFDWixDQUFDLENBQUM7SUFDSjtFQUNGLENBQUM7RUFDRDtFQUNBQyxPQUFPLG1CQUFDdEIsT0FBTyxFQUFFO0lBQ2ZDLEdBQUcsQ0FBQ3NCLFdBQVcsQ0FBQztNQUNkcEIsS0FBSyxFQUFFSCxPQUFPO01BQ2RJLElBQUksRUFBRTtJQUNSLENBQUMsQ0FBQztFQUNKLENBQUM7RUFDRDtFQUNBb0IsWUFBWSwwQkFBRztJQUNidkIsR0FBRyxDQUFDd0IsV0FBVyxFQUFFO0VBQ25CO0FBQ0YsQ0FBQztBQUFBIiwiZmlsZSI6IjE2OS5qcyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IHtcclxuICAvLyDmtojmga/mj5DnpLpcclxuICBtc2coY29udGVudCkge1xyXG4gICAgdW5pLnNob3dUb2FzdCh7XHJcbiAgICAgIHRpdGxlOiBjb250ZW50LFxyXG4gICAgICBpY29uOiAnbm9uZSdcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDplJnor6/mtojmga9cclxuICBtc2dFcnJvcihjb250ZW50KSB7XHJcbiAgICB1bmkuc2hvd1RvYXN0KHtcclxuICAgICAgdGl0bGU6IGNvbnRlbnQsXHJcbiAgICAgIGljb246ICdlcnJvcidcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDmiJDlip/mtojmga9cclxuICBtc2dTdWNjZXNzKGNvbnRlbnQpIHtcclxuICAgIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgICB0aXRsZTogY29udGVudCxcclxuICAgICAgaWNvbjogJ3N1Y2Nlc3MnXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgLy8g6ZqQ6JeP5raI5oGvXHJcbiAgaGlkZU1zZyhjb250ZW50KSB7XHJcbiAgICB1bmkuaGlkZVRvYXN0KClcclxuICB9LFxyXG4gIC8vIOW8ueWHuuaPkOekulxyXG4gIGFsZXJ0KGNvbnRlbnQpIHtcclxuICAgIHVuaS5zaG93TW9kYWwoe1xyXG4gICAgICB0aXRsZTogJ+aPkOekuicsXHJcbiAgICAgIGNvbnRlbnQ6IGNvbnRlbnQsXHJcbiAgICAgIHNob3dDYW5jZWw6IGZhbHNlXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgLy8g56Gu6K6k56qX5L2TXHJcbiAgY29uZmlybShjb250ZW50KSB7XHJcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICB1bmkuc2hvd01vZGFsKHtcclxuICAgICAgICB0aXRsZTogJ+ezu+e7n+aPkOekuicsXHJcbiAgICAgICAgY29udGVudDogY29udGVudCxcclxuICAgICAgICBjYW5jZWxUZXh0OiAn5Y+W5raIJyxcclxuICAgICAgICBjb25maXJtVGV4dDogJ+ehruWumicsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24ocmVzKSB7XHJcbiAgICAgICAgICBpZiAocmVzLmNvbmZpcm0pIHtcclxuICAgICAgICAgICAgcmVzb2x2ZShyZXMuY29uZmlybSlcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgLy8g5o+Q56S65L+h5oGvXHJcbiAgc2hvd1RvYXN0KG9wdGlvbikge1xyXG4gICAgaWYgKHR5cGVvZiBvcHRpb24gPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgdW5pLnNob3dUb2FzdChvcHRpb24pXHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB1bmkuc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogb3B0aW9uLFxyXG4gICAgICAgIGljb246IFwibm9uZVwiLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyNTAwXHJcbiAgICAgIH0pXHJcbiAgICB9XHJcbiAgfSxcclxuICAvLyDmiZPlvIDpga7nvanlsYJcclxuICBsb2FkaW5nKGNvbnRlbnQpIHtcclxuICAgIHVuaS5zaG93TG9hZGluZyh7XHJcbiAgICAgIHRpdGxlOiBjb250ZW50LFxyXG4gICAgICBpY29uOiAnbm9uZSdcclxuICAgIH0pXHJcbiAgfSxcclxuICAvLyDlhbPpl63pga7nvanlsYJcclxuICBjbG9zZUxvYWRpbmcoKSB7XHJcbiAgICB1bmkuaGlkZUxvYWRpbmcoKVxyXG4gIH1cclxufVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///169\n");
  15525. /***/ }),
  15526. /* 170 */
  15527. /*!*****************************************************!*\
  15528. !*** D:/Intelligent/jn_uniapp/jn_app/permission.js ***!
  15529. \*****************************************************/
  15530. /*! no static exports found */
  15531. /***/ (function(module, exports, __webpack_require__) {
  15532. "use strict";
  15533. eval("\n\nvar _auth = __webpack_require__(/*! @/utils/auth */ 161);\n// 登录页面\nvar loginPage = \"/pages/login\";\n\n// 页面白名单\nvar whiteList = ['/pages/login', '/pages/common/webview/index'];\n\n// 检查地址白名单\nfunction checkWhite(url) {\n var path = url.split('?')[0];\n return whiteList.indexOf(path) !== -1;\n}\n\n// 页面跳转验证拦截器\n// let list = [\"navigateTo\", \"redirectTo\", \"reLaunch\", \"switchTab\"]\n// list.forEach(item => {\n// uni.addInterceptor(item, {\n// invoke(to) {\n// if (getAccessToken()) {\n// if (to.path === loginPage) {\n// uni.reLaunch({ url: \"/\" })\n// }\n// return true\n// } else {\n// if (checkWhite(to.url)) {\n// return true\n// }\n// uni.reLaunch({ url: loginPage })\n// return false\n// }\n// },\n// fail(err) {\n// console.log(err)\n// }\n// })\n// })//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGVybWlzc2lvbi5qcyJdLCJuYW1lcyI6WyJsb2dpblBhZ2UiLCJ3aGl0ZUxpc3QiLCJjaGVja1doaXRlIiwidXJsIiwicGF0aCIsInNwbGl0IiwiaW5kZXhPZiJdLCJtYXBwaW5ncyI6Ijs7QUFBQTtBQUlBO0FBQ0EsSUFBTUEsU0FBUyxHQUFHLGNBQWM7O0FBRWhDO0FBQ0EsSUFBTUMsU0FBUyxHQUFHLENBQ2pCLGNBQWMsRUFBRSw2QkFBNkIsQ0FDN0M7O0FBRUQ7QUFDQSxTQUFTQyxVQUFVLENBQUNDLEdBQUcsRUFBRTtFQUN4QixJQUFNQyxJQUFJLEdBQUdELEdBQUcsQ0FBQ0UsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztFQUM5QixPQUFPSixTQUFTLENBQUNLLE9BQU8sQ0FBQ0YsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQ3RDOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EiLCJmaWxlIjoiMTcwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuXHRnZXRBY2Nlc3NUb2tlblxyXG59IGZyb20gJ0AvdXRpbHMvYXV0aCdcclxuXHJcbi8vIOeZu+W9lemhtemdolxyXG5jb25zdCBsb2dpblBhZ2UgPSBcIi9wYWdlcy9sb2dpblwiXHJcblxyXG4vLyDpobXpnaLnmb3lkI3ljZVcclxuY29uc3Qgd2hpdGVMaXN0ID0gW1xyXG5cdCcvcGFnZXMvbG9naW4nLCAnL3BhZ2VzL2NvbW1vbi93ZWJ2aWV3L2luZGV4J1xyXG5dXHJcblxyXG4vLyDmo4Dmn6XlnLDlnYDnmb3lkI3ljZVcclxuZnVuY3Rpb24gY2hlY2tXaGl0ZSh1cmwpIHtcclxuXHRjb25zdCBwYXRoID0gdXJsLnNwbGl0KCc/JylbMF1cclxuXHRyZXR1cm4gd2hpdGVMaXN0LmluZGV4T2YocGF0aCkgIT09IC0xXHJcbn1cclxuXHJcbi8vIOmhtemdoui3s+i9rOmqjOivgeaLpuaIquWZqFxyXG4vLyBsZXQgbGlzdCA9IFtcIm5hdmlnYXRlVG9cIiwgXCJyZWRpcmVjdFRvXCIsIFwicmVMYXVuY2hcIiwgXCJzd2l0Y2hUYWJcIl1cclxuLy8gbGlzdC5mb3JFYWNoKGl0ZW0gPT4ge1xyXG4vLyAgIHVuaS5hZGRJbnRlcmNlcHRvcihpdGVtLCB7XHJcbi8vICAgICBpbnZva2UodG8pIHtcclxuLy8gICAgICAgaWYgKGdldEFjY2Vzc1Rva2VuKCkpIHtcclxuLy8gICAgICAgICBpZiAodG8ucGF0aCA9PT0gbG9naW5QYWdlKSB7XHJcbi8vICAgICAgICAgICB1bmkucmVMYXVuY2goeyB1cmw6IFwiL1wiIH0pXHJcbi8vICAgICAgICAgfVxyXG4vLyAgICAgICAgIHJldHVybiB0cnVlXHJcbi8vICAgICAgIH0gZWxzZSB7XHJcbi8vICAgICAgICAgaWYgKGNoZWNrV2hpdGUodG8udXJsKSkge1xyXG4vLyAgICAgICAgICAgcmV0dXJuIHRydWVcclxuLy8gICAgICAgICB9XHJcbi8vICAgICAgICAgdW5pLnJlTGF1bmNoKHsgdXJsOiBsb2dpblBhZ2UgfSlcclxuLy8gICAgICAgICByZXR1cm4gZmFsc2VcclxuLy8gICAgICAgfVxyXG4vLyAgICAgfSxcclxuLy8gICAgIGZhaWwoZXJyKSB7XHJcbi8vICAgICAgIGNvbnNvbGUubG9nKGVycilcclxuLy8gICAgIH1cclxuLy8gICB9KVxyXG4vLyB9KVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///170\n");
  15534. /***/ })
  15535. ],[[0,"app-config"]]]);