| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077 | var VueRuntimeDOM = (function (exports) {  'use strict';  /**   * Make a map and return a function for checking if a key   * is in that map.   * IMPORTANT: all calls of this function must be prefixed with   * \/\*#\_\_PURE\_\_\*\/   * So that rollup can tree-shake them if necessary.   */  function makeMap(str, expectsLowerCase) {      const map = Object.create(null);      const list = str.split(',');      for (let i = 0; i < list.length; i++) {          map[list[i]] = true;      }      return expectsLowerCase ? val => !!map[val.toLowerCase()] : val => !!map[val];  }  const GLOBALS_WHITE_LISTED = 'Infinity,undefined,NaN,isFinite,isNaN,parseFloat,parseInt,decodeURI,' +      'decodeURIComponent,encodeURI,encodeURIComponent,Math,Number,Date,Array,' +      'Object,Boolean,String,RegExp,Map,Set,JSON,Intl,BigInt';  const isGloballyWhitelisted = /*#__PURE__*/ makeMap(GLOBALS_WHITE_LISTED);  function normalizeStyle(value) {      if (isArray(value)) {          const res = {};          for (let i = 0; i < value.length; i++) {              const item = value[i];              const normalized = isString(item)                  ? parseStringStyle(item)                  : normalizeStyle(item);              if (normalized) {                  for (const key in normalized) {                      res[key] = normalized[key];                  }              }          }          return res;      }      else if (isString(value)) {          return value;      }      else if (isObject(value)) {          return value;      }  }  const listDelimiterRE = /;(?![^(]*\))/g;  const propertyDelimiterRE = /:([^]+)/;  const styleCommentRE = /\/\*.*?\*\//gs;  function parseStringStyle(cssText) {      const ret = {};      cssText          .replace(styleCommentRE, '')          .split(listDelimiterRE)          .forEach(item => {          if (item) {              const tmp = item.split(propertyDelimiterRE);              tmp.length > 1 && (ret[tmp[0].trim()] = tmp[1].trim());          }      });      return ret;  }  function normalizeClass(value) {      let res = '';      if (isString(value)) {          res = value;      }      else if (isArray(value)) {          for (let i = 0; i < value.length; i++) {              const normalized = normalizeClass(value[i]);              if (normalized) {                  res += normalized + ' ';              }          }      }      else if (isObject(value)) {          for (const name in value) {              if (value[name]) {                  res += name + ' ';              }          }      }      return res.trim();  }  function normalizeProps(props) {      if (!props)          return null;      let { class: klass, style } = props;      if (klass && !isString(klass)) {          props.class = normalizeClass(klass);      }      if (style) {          props.style = normalizeStyle(style);      }      return props;  }  // These tag configs are shared between compiler-dom and runtime-dom, so they  // https://developer.mozilla.org/en-US/docs/Web/HTML/Element  const HTML_TAGS = 'html,body,base,head,link,meta,style,title,address,article,aside,footer,' +      'header,h1,h2,h3,h4,h5,h6,nav,section,div,dd,dl,dt,figcaption,' +      'figure,picture,hr,img,li,main,ol,p,pre,ul,a,b,abbr,bdi,bdo,br,cite,code,' +      'data,dfn,em,i,kbd,mark,q,rp,rt,ruby,s,samp,small,span,strong,sub,sup,' +      'time,u,var,wbr,area,audio,map,track,video,embed,object,param,source,' +      'canvas,script,noscript,del,ins,caption,col,colgroup,table,thead,tbody,td,' +      'th,tr,button,datalist,fieldset,form,input,label,legend,meter,optgroup,' +      'option,output,progress,select,textarea,details,dialog,menu,' +      'summary,template,blockquote,iframe,tfoot';  // https://developer.mozilla.org/en-US/docs/Web/SVG/Element  const SVG_TAGS = 'svg,animate,animateMotion,animateTransform,circle,clipPath,color-profile,' +      'defs,desc,discard,ellipse,feBlend,feColorMatrix,feComponentTransfer,' +      'feComposite,feConvolveMatrix,feDiffuseLighting,feDisplacementMap,' +      'feDistanceLight,feDropShadow,feFlood,feFuncA,feFuncB,feFuncG,feFuncR,' +      'feGaussianBlur,feImage,feMerge,feMergeNode,feMorphology,feOffset,' +      'fePointLight,feSpecularLighting,feSpotLight,feTile,feTurbulence,filter,' +      'foreignObject,g,hatch,hatchpath,image,line,linearGradient,marker,mask,' +      'mesh,meshgradient,meshpatch,meshrow,metadata,mpath,path,pattern,' +      'polygon,polyline,radialGradient,rect,set,solidcolor,stop,switch,symbol,' +      'text,textPath,title,tspan,unknown,use,view';  /**   * Compiler only.   * Do NOT use in runtime code paths unless behind `true` flag.   */  const isHTMLTag = /*#__PURE__*/ makeMap(HTML_TAGS);  /**   * Compiler only.   * Do NOT use in runtime code paths unless behind `true` flag.   */  const isSVGTag = /*#__PURE__*/ makeMap(SVG_TAGS);  /**   * On the client we only need to offer special cases for boolean attributes that   * have different names from their corresponding dom properties:   * - itemscope -> N/A   * - allowfullscreen -> allowFullscreen   * - formnovalidate -> formNoValidate   * - ismap -> isMap   * - nomodule -> noModule   * - novalidate -> noValidate   * - readonly -> readOnly   */  const specialBooleanAttrs = `itemscope,allowfullscreen,formnovalidate,ismap,nomodule,novalidate,readonly`;  const isSpecialBooleanAttr = /*#__PURE__*/ makeMap(specialBooleanAttrs);  /**   * Boolean attributes should be included if the value is truthy or ''.   * e.g. `<select multiple>` compiles to `{ multiple: '' }`   */  function includeBooleanAttr(value) {      return !!value || value === '';  }  function looseCompareArrays(a, b) {      if (a.length !== b.length)          return false;      let equal = true;      for (let i = 0; equal && i < a.length; i++) {          equal = looseEqual(a[i], b[i]);      }      return equal;  }  function looseEqual(a, b) {      if (a === b)          return true;      let aValidType = isDate(a);      let bValidType = isDate(b);      if (aValidType || bValidType) {          return aValidType && bValidType ? a.getTime() === b.getTime() : false;      }      aValidType = isSymbol(a);      bValidType = isSymbol(b);      if (aValidType || bValidType) {          return a === b;      }      aValidType = isArray(a);      bValidType = isArray(b);      if (aValidType || bValidType) {          return aValidType && bValidType ? looseCompareArrays(a, b) : false;      }      aValidType = isObject(a);      bValidType = isObject(b);      if (aValidType || bValidType) {          /* istanbul ignore if: this if will probably never be called */          if (!aValidType || !bValidType) {              return false;          }          const aKeysCount = Object.keys(a).length;          const bKeysCount = Object.keys(b).length;          if (aKeysCount !== bKeysCount) {              return false;          }          for (const key in a) {              const aHasKey = a.hasOwnProperty(key);              const bHasKey = b.hasOwnProperty(key);              if ((aHasKey && !bHasKey) ||                  (!aHasKey && bHasKey) ||                  !looseEqual(a[key], b[key])) {                  return false;              }          }      }      return String(a) === String(b);  }  function looseIndexOf(arr, val) {      return arr.findIndex(item => looseEqual(item, val));  }  /**   * For converting {{ interpolation }} values to displayed strings.   * @private   */  const toDisplayString = (val) => {      return isString(val)          ? val          : val == null              ? ''              : isArray(val) ||                  (isObject(val) &&                      (val.toString === objectToString || !isFunction(val.toString)))                  ? JSON.stringify(val, replacer, 2)                  : String(val);  };  const replacer = (_key, val) => {      // can't use isRef here since @vue/shared has no deps      if (val && val.__v_isRef) {          return replacer(_key, val.value);      }      else if (isMap(val)) {          return {              [`Map(${val.size})`]: [...val.entries()].reduce((entries, [key, val]) => {                  entries[`${key} =>`] = val;                  return entries;              }, {})          };      }      else if (isSet(val)) {          return {              [`Set(${val.size})`]: [...val.values()]          };      }      else if (isObject(val) && !isArray(val) && !isPlainObject(val)) {          return String(val);      }      return val;  };  const EMPTY_OBJ = Object.freeze({})      ;  const EMPTY_ARR = Object.freeze([]) ;  const NOOP = () => { };  /**   * Always return false.   */  const NO = () => false;  const onRE = /^on[^a-z]/;  const isOn = (key) => onRE.test(key);  const isModelListener = (key) => key.startsWith('onUpdate:');  const extend = Object.assign;  const remove = (arr, el) => {      const i = arr.indexOf(el);      if (i > -1) {          arr.splice(i, 1);      }  };  const hasOwnProperty = Object.prototype.hasOwnProperty;  const hasOwn = (val, key) => hasOwnProperty.call(val, key);  const isArray = Array.isArray;  const isMap = (val) => toTypeString(val) === '[object Map]';  const isSet = (val) => toTypeString(val) === '[object Set]';  const isDate = (val) => toTypeString(val) === '[object Date]';  const isFunction = (val) => typeof val === 'function';  const isString = (val) => typeof val === 'string';  const isSymbol = (val) => typeof val === 'symbol';  const isObject = (val) => val !== null && typeof val === 'object';  const isPromise = (val) => {      return isObject(val) && isFunction(val.then) && isFunction(val.catch);  };  const objectToString = Object.prototype.toString;  const toTypeString = (value) => objectToString.call(value);  const toRawType = (value) => {      // extract "RawType" from strings like "[object RawType]"      return toTypeString(value).slice(8, -1);  };  const isPlainObject = (val) => toTypeString(val) === '[object Object]';  const isIntegerKey = (key) => isString(key) &&      key !== 'NaN' &&      key[0] !== '-' &&      '' + parseInt(key, 10) === key;  const isReservedProp = /*#__PURE__*/ makeMap(  // the leading comma is intentional so empty string "" is also included  ',key,ref,ref_for,ref_key,' +      'onVnodeBeforeMount,onVnodeMounted,' +      'onVnodeBeforeUpdate,onVnodeUpdated,' +      'onVnodeBeforeUnmount,onVnodeUnmounted');  const isBuiltInDirective = /*#__PURE__*/ makeMap('bind,cloak,else-if,else,for,html,if,model,on,once,pre,show,slot,text,memo');  const cacheStringFunction = (fn) => {      const cache = Object.create(null);      return ((str) => {          const hit = cache[str];          return hit || (cache[str] = fn(str));      });  };  const camelizeRE = /-(\w)/g;  /**   * @private   */  const camelize = cacheStringFunction((str) => {      return str.replace(camelizeRE, (_, c) => (c ? c.toUpperCase() : ''));  });  const hyphenateRE = /\B([A-Z])/g;  /**   * @private   */  const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase());  /**   * @private   */  const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1));  /**   * @private   */  const toHandlerKey = cacheStringFunction((str) => str ? `on${capitalize(str)}` : ``);  // compare whether a value has changed, accounting for NaN.  const hasChanged = (value, oldValue) => !Object.is(value, oldValue);  const invokeArrayFns = (fns, arg) => {      for (let i = 0; i < fns.length; i++) {          fns[i](arg);      }  };  const def = (obj, key, value) => {      Object.defineProperty(obj, key, {          configurable: true,          enumerable: false,          value      });  };  const toNumber = (val) => {      const n = parseFloat(val);      return isNaN(n) ? val : n;  };  let _globalThis;  const getGlobalThis = () => {      return (_globalThis ||          (_globalThis =              typeof globalThis !== 'undefined'                  ? globalThis                  : typeof self !== 'undefined'                      ? self                      : typeof window !== 'undefined'                          ? window                          : typeof global !== 'undefined'                              ? global                              : {}));  };  function warn(msg, ...args) {      console.warn(`[Vue warn] ${msg}`, ...args);  }  let activeEffectScope;  class EffectScope {      constructor(detached = false) {          this.detached = detached;          /**           * @internal           */          this.active = true;          /**           * @internal           */          this.effects = [];          /**           * @internal           */          this.cleanups = [];          this.parent = activeEffectScope;          if (!detached && activeEffectScope) {              this.index =                  (activeEffectScope.scopes || (activeEffectScope.scopes = [])).push(this) - 1;          }      }      run(fn) {          if (this.active) {              const currentEffectScope = activeEffectScope;              try {                  activeEffectScope = this;                  return fn();              }              finally {                  activeEffectScope = currentEffectScope;              }          }          else {              warn(`cannot run an inactive effect scope.`);          }      }      /**       * This should only be called on non-detached scopes       * @internal       */      on() {          activeEffectScope = this;      }      /**       * This should only be called on non-detached scopes       * @internal       */      off() {          activeEffectScope = this.parent;      }      stop(fromParent) {          if (this.active) {              let i, l;              for (i = 0, l = this.effects.length; i < l; i++) {                  this.effects[i].stop();              }              for (i = 0, l = this.cleanups.length; i < l; i++) {                  this.cleanups[i]();              }              if (this.scopes) {                  for (i = 0, l = this.scopes.length; i < l; i++) {                      this.scopes[i].stop(true);                  }              }              // nested scope, dereference from parent to avoid memory leaks              if (!this.detached && this.parent && !fromParent) {                  // optimized O(1) removal                  const last = this.parent.scopes.pop();                  if (last && last !== this) {                      this.parent.scopes[this.index] = last;                      last.index = this.index;                  }              }              this.parent = undefined;              this.active = false;          }      }  }  function effectScope(detached) {      return new EffectScope(detached);  }  function recordEffectScope(effect, scope = activeEffectScope) {      if (scope && scope.active) {          scope.effects.push(effect);      }  }  function getCurrentScope() {      return activeEffectScope;  }  function onScopeDispose(fn) {      if (activeEffectScope) {          activeEffectScope.cleanups.push(fn);      }      else {          warn(`onScopeDispose() is called when there is no active effect scope` +              ` to be associated with.`);      }  }  const createDep = (effects) => {      const dep = new Set(effects);      dep.w = 0;      dep.n = 0;      return dep;  };  const wasTracked = (dep) => (dep.w & trackOpBit) > 0;  const newTracked = (dep) => (dep.n & trackOpBit) > 0;  const initDepMarkers = ({ deps }) => {      if (deps.length) {          for (let i = 0; i < deps.length; i++) {              deps[i].w |= trackOpBit; // set was tracked          }      }  };  const finalizeDepMarkers = (effect) => {      const { deps } = effect;      if (deps.length) {          let ptr = 0;          for (let i = 0; i < deps.length; i++) {              const dep = deps[i];              if (wasTracked(dep) && !newTracked(dep)) {                  dep.delete(effect);              }              else {                  deps[ptr++] = dep;              }              // clear bits              dep.w &= ~trackOpBit;              dep.n &= ~trackOpBit;          }          deps.length = ptr;      }  };  const targetMap = new WeakMap();  // The number of effects currently being tracked recursively.  let effectTrackDepth = 0;  let trackOpBit = 1;  /**   * The bitwise track markers support at most 30 levels of recursion.   * This value is chosen to enable modern JS engines to use a SMI on all platforms.   * When recursion depth is greater, fall back to using a full cleanup.   */  const maxMarkerBits = 30;  let activeEffect;  const ITERATE_KEY = Symbol('iterate' );  const MAP_KEY_ITERATE_KEY = Symbol('Map key iterate' );  class ReactiveEffect {      constructor(fn, scheduler = null, scope) {          this.fn = fn;          this.scheduler = scheduler;          this.active = true;          this.deps = [];          this.parent = undefined;          recordEffectScope(this, scope);      }      run() {          if (!this.active) {              return this.fn();          }          let parent = activeEffect;          let lastShouldTrack = shouldTrack;          while (parent) {              if (parent === this) {                  return;              }              parent = parent.parent;          }          try {              this.parent = activeEffect;              activeEffect = this;              shouldTrack = true;              trackOpBit = 1 << ++effectTrackDepth;              if (effectTrackDepth <= maxMarkerBits) {                  initDepMarkers(this);              }              else {                  cleanupEffect(this);              }              return this.fn();          }          finally {              if (effectTrackDepth <= maxMarkerBits) {                  finalizeDepMarkers(this);              }              trackOpBit = 1 << --effectTrackDepth;              activeEffect = this.parent;              shouldTrack = lastShouldTrack;              this.parent = undefined;              if (this.deferStop) {                  this.stop();              }          }      }      stop() {          // stopped while running itself - defer the cleanup          if (activeEffect === this) {              this.deferStop = true;          }          else if (this.active) {              cleanupEffect(this);              if (this.onStop) {                  this.onStop();              }              this.active = false;          }      }  }  function cleanupEffect(effect) {      const { deps } = effect;      if (deps.length) {          for (let i = 0; i < deps.length; i++) {              deps[i].delete(effect);          }          deps.length = 0;      }  }  function effect(fn, options) {      if (fn.effect) {          fn = fn.effect.fn;      }      const _effect = new ReactiveEffect(fn);      if (options) {          extend(_effect, options);          if (options.scope)              recordEffectScope(_effect, options.scope);      }      if (!options || !options.lazy) {          _effect.run();      }      const runner = _effect.run.bind(_effect);      runner.effect = _effect;      return runner;  }  function stop(runner) {      runner.effect.stop();  }  let shouldTrack = true;  const trackStack = [];  function pauseTracking() {      trackStack.push(shouldTrack);      shouldTrack = false;  }  function resetTracking() {      const last = trackStack.pop();      shouldTrack = last === undefined ? true : last;  }  function track(target, type, key) {      if (shouldTrack && activeEffect) {          let depsMap = targetMap.get(target);          if (!depsMap) {              targetMap.set(target, (depsMap = new Map()));          }          let dep = depsMap.get(key);          if (!dep) {              depsMap.set(key, (dep = createDep()));          }          const eventInfo = { effect: activeEffect, target, type, key }              ;          trackEffects(dep, eventInfo);      }  }  function trackEffects(dep, debuggerEventExtraInfo) {      let shouldTrack = false;      if (effectTrackDepth <= maxMarkerBits) {          if (!newTracked(dep)) {              dep.n |= trackOpBit; // set newly tracked              shouldTrack = !wasTracked(dep);          }      }      else {          // Full cleanup mode.          shouldTrack = !dep.has(activeEffect);      }      if (shouldTrack) {          dep.add(activeEffect);          activeEffect.deps.push(dep);          if (activeEffect.onTrack) {              activeEffect.onTrack(Object.assign({ effect: activeEffect }, debuggerEventExtraInfo));          }      }  }  function trigger(target, type, key, newValue, oldValue, oldTarget) {      const depsMap = targetMap.get(target);      if (!depsMap) {          // never been tracked          return;      }      let deps = [];      if (type === "clear" /* TriggerOpTypes.CLEAR */) {          // collection being cleared          // trigger all effects for target          deps = [...depsMap.values()];      }      else if (key === 'length' && isArray(target)) {          const newLength = toNumber(newValue);          depsMap.forEach((dep, key) => {              if (key === 'length' || key >= newLength) {                  deps.push(dep);              }          });      }      else {          // schedule runs for SET | ADD | DELETE          if (key !== void 0) {              deps.push(depsMap.get(key));          }          // also run for iteration key on ADD | DELETE | Map.SET          switch (type) {              case "add" /* TriggerOpTypes.ADD */:                  if (!isArray(target)) {                      deps.push(depsMap.get(ITERATE_KEY));                      if (isMap(target)) {                          deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));                      }                  }                  else if (isIntegerKey(key)) {                      // new index added to array -> length changes                      deps.push(depsMap.get('length'));                  }                  break;              case "delete" /* TriggerOpTypes.DELETE */:                  if (!isArray(target)) {                      deps.push(depsMap.get(ITERATE_KEY));                      if (isMap(target)) {                          deps.push(depsMap.get(MAP_KEY_ITERATE_KEY));                      }                  }                  break;              case "set" /* TriggerOpTypes.SET */:                  if (isMap(target)) {                      deps.push(depsMap.get(ITERATE_KEY));                  }                  break;          }      }      const eventInfo = { target, type, key, newValue, oldValue, oldTarget }          ;      if (deps.length === 1) {          if (deps[0]) {              {                  triggerEffects(deps[0], eventInfo);              }          }      }      else {          const effects = [];          for (const dep of deps) {              if (dep) {                  effects.push(...dep);              }          }          {              triggerEffects(createDep(effects), eventInfo);          }      }  }  function triggerEffects(dep, debuggerEventExtraInfo) {      // spread into array for stabilization      const effects = isArray(dep) ? dep : [...dep];      for (const effect of effects) {          if (effect.computed) {              triggerEffect(effect, debuggerEventExtraInfo);          }      }      for (const effect of effects) {          if (!effect.computed) {              triggerEffect(effect, debuggerEventExtraInfo);          }      }  }  function triggerEffect(effect, debuggerEventExtraInfo) {      if (effect !== activeEffect || effect.allowRecurse) {          if (effect.onTrigger) {              effect.onTrigger(extend({ effect }, debuggerEventExtraInfo));          }          if (effect.scheduler) {              effect.scheduler();          }          else {              effect.run();          }      }  }  const isNonTrackableKeys = /*#__PURE__*/ makeMap(`__proto__,__v_isRef,__isVue`);  const builtInSymbols = new Set(  /*#__PURE__*/  Object.getOwnPropertyNames(Symbol)      // ios10.x Object.getOwnPropertyNames(Symbol) can enumerate 'arguments' and 'caller'      // but accessing them on Symbol leads to TypeError because Symbol is a strict mode      // function      .filter(key => key !== 'arguments' && key !== 'caller')      .map(key => Symbol[key])      .filter(isSymbol));  const get = /*#__PURE__*/ createGetter();  const shallowGet = /*#__PURE__*/ createGetter(false, true);  const readonlyGet = /*#__PURE__*/ createGetter(true);  const shallowReadonlyGet = /*#__PURE__*/ createGetter(true, true);  const arrayInstrumentations = /*#__PURE__*/ createArrayInstrumentations();  function createArrayInstrumentations() {      const instrumentations = {};      ['includes', 'indexOf', 'lastIndexOf'].forEach(key => {          instrumentations[key] = function (...args) {              const arr = toRaw(this);              for (let i = 0, l = this.length; i < l; i++) {                  track(arr, "get" /* TrackOpTypes.GET */, i + '');              }              // we run the method using the original args first (which may be reactive)              const res = arr[key](...args);              if (res === -1 || res === false) {                  // if that didn't work, run it again using raw values.                  return arr[key](...args.map(toRaw));              }              else {                  return res;              }          };      });      ['push', 'pop', 'shift', 'unshift', 'splice'].forEach(key => {          instrumentations[key] = function (...args) {              pauseTracking();              const res = toRaw(this)[key].apply(this, args);              resetTracking();              return res;          };      });      return instrumentations;  }  function createGetter(isReadonly = false, shallow = false) {      return function get(target, key, receiver) {          if (key === "__v_isReactive" /* ReactiveFlags.IS_REACTIVE */) {              return !isReadonly;          }          else if (key === "__v_isReadonly" /* ReactiveFlags.IS_READONLY */) {              return isReadonly;          }          else if (key === "__v_isShallow" /* ReactiveFlags.IS_SHALLOW */) {              return shallow;          }          else if (key === "__v_raw" /* ReactiveFlags.RAW */ &&              receiver ===                  (isReadonly                      ? shallow                          ? shallowReadonlyMap                          : readonlyMap                      : shallow                          ? shallowReactiveMap                          : reactiveMap).get(target)) {              return target;          }          const targetIsArray = isArray(target);          if (!isReadonly && targetIsArray && hasOwn(arrayInstrumentations, key)) {              return Reflect.get(arrayInstrumentations, key, receiver);          }          const res = Reflect.get(target, key, receiver);          if (isSymbol(key) ? builtInSymbols.has(key) : isNonTrackableKeys(key)) {              return res;          }          if (!isReadonly) {              track(target, "get" /* TrackOpTypes.GET */, key);          }          if (shallow) {              return res;          }          if (isRef(res)) {              // ref unwrapping - skip unwrap for Array + integer key.              return targetIsArray && isIntegerKey(key) ? res : res.value;          }          if (isObject(res)) {              // Convert returned value into a proxy as well. we do the isObject check              // here to avoid invalid value warning. Also need to lazy access readonly              // and reactive here to avoid circular dependency.              return isReadonly ? readonly(res) : reactive(res);          }          return res;      };  }  const set = /*#__PURE__*/ createSetter();  const shallowSet = /*#__PURE__*/ createSetter(true);  function createSetter(shallow = false) {      return function set(target, key, value, receiver) {          let oldValue = target[key];          if (isReadonly(oldValue) && isRef(oldValue) && !isRef(value)) {              return false;          }          if (!shallow) {              if (!isShallow(value) && !isReadonly(value)) {                  oldValue = toRaw(oldValue);                  value = toRaw(value);              }              if (!isArray(target) && isRef(oldValue) && !isRef(value)) {                  oldValue.value = value;                  return true;              }          }          const hadKey = isArray(target) && isIntegerKey(key)              ? Number(key) < target.length              : hasOwn(target, key);          const result = Reflect.set(target, key, value, receiver);          // don't trigger if target is something up in the prototype chain of original          if (target === toRaw(receiver)) {              if (!hadKey) {                  trigger(target, "add" /* TriggerOpTypes.ADD */, key, value);              }              else if (hasChanged(value, oldValue)) {                  trigger(target, "set" /* TriggerOpTypes.SET */, key, value, oldValue);              }          }          return result;      };  }  function deleteProperty(target, key) {      const hadKey = hasOwn(target, key);      const oldValue = target[key];      const result = Reflect.deleteProperty(target, key);      if (result && hadKey) {          trigger(target, "delete" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);      }      return result;  }  function has(target, key) {      const result = Reflect.has(target, key);      if (!isSymbol(key) || !builtInSymbols.has(key)) {          track(target, "has" /* TrackOpTypes.HAS */, key);      }      return result;  }  function ownKeys(target) {      track(target, "iterate" /* TrackOpTypes.ITERATE */, isArray(target) ? 'length' : ITERATE_KEY);      return Reflect.ownKeys(target);  }  const mutableHandlers = {      get,      set,      deleteProperty,      has,      ownKeys  };  const readonlyHandlers = {      get: readonlyGet,      set(target, key) {          {              warn(`Set operation on key "${String(key)}" failed: target is readonly.`, target);          }          return true;      },      deleteProperty(target, key) {          {              warn(`Delete operation on key "${String(key)}" failed: target is readonly.`, target);          }          return true;      }  };  const shallowReactiveHandlers = /*#__PURE__*/ extend({}, mutableHandlers, {      get: shallowGet,      set: shallowSet  });  // Props handlers are special in the sense that it should not unwrap top-level  // refs (in order to allow refs to be explicitly passed down), but should  // retain the reactivity of the normal readonly object.  const shallowReadonlyHandlers = /*#__PURE__*/ extend({}, readonlyHandlers, {      get: shallowReadonlyGet  });  const toShallow = (value) => value;  const getProto = (v) => Reflect.getPrototypeOf(v);  function get$1(target, key, isReadonly = false, isShallow = false) {      // #1772: readonly(reactive(Map)) should return readonly + reactive version      // of the value      target = target["__v_raw" /* ReactiveFlags.RAW */];      const rawTarget = toRaw(target);      const rawKey = toRaw(key);      if (!isReadonly) {          if (key !== rawKey) {              track(rawTarget, "get" /* TrackOpTypes.GET */, key);          }          track(rawTarget, "get" /* TrackOpTypes.GET */, rawKey);      }      const { has } = getProto(rawTarget);      const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;      if (has.call(rawTarget, key)) {          return wrap(target.get(key));      }      else if (has.call(rawTarget, rawKey)) {          return wrap(target.get(rawKey));      }      else if (target !== rawTarget) {          // #3602 readonly(reactive(Map))          // ensure that the nested reactive `Map` can do tracking for itself          target.get(key);      }  }  function has$1(key, isReadonly = false) {      const target = this["__v_raw" /* ReactiveFlags.RAW */];      const rawTarget = toRaw(target);      const rawKey = toRaw(key);      if (!isReadonly) {          if (key !== rawKey) {              track(rawTarget, "has" /* TrackOpTypes.HAS */, key);          }          track(rawTarget, "has" /* TrackOpTypes.HAS */, rawKey);      }      return key === rawKey          ? target.has(key)          : target.has(key) || target.has(rawKey);  }  function size(target, isReadonly = false) {      target = target["__v_raw" /* ReactiveFlags.RAW */];      !isReadonly && track(toRaw(target), "iterate" /* TrackOpTypes.ITERATE */, ITERATE_KEY);      return Reflect.get(target, 'size', target);  }  function add(value) {      value = toRaw(value);      const target = toRaw(this);      const proto = getProto(target);      const hadKey = proto.has.call(target, value);      if (!hadKey) {          target.add(value);          trigger(target, "add" /* TriggerOpTypes.ADD */, value, value);      }      return this;  }  function set$1(key, value) {      value = toRaw(value);      const target = toRaw(this);      const { has, get } = getProto(target);      let hadKey = has.call(target, key);      if (!hadKey) {          key = toRaw(key);          hadKey = has.call(target, key);      }      else {          checkIdentityKeys(target, has, key);      }      const oldValue = get.call(target, key);      target.set(key, value);      if (!hadKey) {          trigger(target, "add" /* TriggerOpTypes.ADD */, key, value);      }      else if (hasChanged(value, oldValue)) {          trigger(target, "set" /* TriggerOpTypes.SET */, key, value, oldValue);      }      return this;  }  function deleteEntry(key) {      const target = toRaw(this);      const { has, get } = getProto(target);      let hadKey = has.call(target, key);      if (!hadKey) {          key = toRaw(key);          hadKey = has.call(target, key);      }      else {          checkIdentityKeys(target, has, key);      }      const oldValue = get ? get.call(target, key) : undefined;      // forward the operation before queueing reactions      const result = target.delete(key);      if (hadKey) {          trigger(target, "delete" /* TriggerOpTypes.DELETE */, key, undefined, oldValue);      }      return result;  }  function clear() {      const target = toRaw(this);      const hadItems = target.size !== 0;      const oldTarget = isMap(target)              ? new Map(target)              : new Set(target)          ;      // forward the operation before queueing reactions      const result = target.clear();      if (hadItems) {          trigger(target, "clear" /* TriggerOpTypes.CLEAR */, undefined, undefined, oldTarget);      }      return result;  }  function createForEach(isReadonly, isShallow) {      return function forEach(callback, thisArg) {          const observed = this;          const target = observed["__v_raw" /* ReactiveFlags.RAW */];          const rawTarget = toRaw(target);          const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;          !isReadonly && track(rawTarget, "iterate" /* TrackOpTypes.ITERATE */, ITERATE_KEY);          return target.forEach((value, key) => {              // important: make sure the callback is              // 1. invoked with the reactive map as `this` and 3rd arg              // 2. the value received should be a corresponding reactive/readonly.              return callback.call(thisArg, wrap(value), wrap(key), observed);          });      };  }  function createIterableMethod(method, isReadonly, isShallow) {      return function (...args) {          const target = this["__v_raw" /* ReactiveFlags.RAW */];          const rawTarget = toRaw(target);          const targetIsMap = isMap(rawTarget);          const isPair = method === 'entries' || (method === Symbol.iterator && targetIsMap);          const isKeyOnly = method === 'keys' && targetIsMap;          const innerIterator = target[method](...args);          const wrap = isShallow ? toShallow : isReadonly ? toReadonly : toReactive;          !isReadonly &&              track(rawTarget, "iterate" /* TrackOpTypes.ITERATE */, isKeyOnly ? MAP_KEY_ITERATE_KEY : ITERATE_KEY);          // return a wrapped iterator which returns observed versions of the          // values emitted from the real iterator          return {              // iterator protocol              next() {                  const { value, done } = innerIterator.next();                  return done                      ? { value, done }                      : {                          value: isPair ? [wrap(value[0]), wrap(value[1])] : wrap(value),                          done                      };              },              // iterable protocol              [Symbol.iterator]() {                  return this;              }          };      };  }  function createReadonlyMethod(type) {      return function (...args) {          {              const key = args[0] ? `on key "${args[0]}" ` : ``;              console.warn(`${capitalize(type)} operation ${key}failed: target is readonly.`, toRaw(this));          }          return type === "delete" /* TriggerOpTypes.DELETE */ ? false : this;      };  }  function createInstrumentations() {      const mutableInstrumentations = {          get(key) {              return get$1(this, key);          },          get size() {              return size(this);          },          has: has$1,          add,          set: set$1,          delete: deleteEntry,          clear,          forEach: createForEach(false, false)      };      const shallowInstrumentations = {          get(key) {              return get$1(this, key, false, true);          },          get size() {              return size(this);          },          has: has$1,          add,          set: set$1,          delete: deleteEntry,          clear,          forEach: createForEach(false, true)      };      const readonlyInstrumentations = {          get(key) {              return get$1(this, key, true);          },          get size() {              return size(this, true);          },          has(key) {              return has$1.call(this, key, true);          },          add: createReadonlyMethod("add" /* TriggerOpTypes.ADD */),          set: createReadonlyMethod("set" /* TriggerOpTypes.SET */),          delete: createReadonlyMethod("delete" /* TriggerOpTypes.DELETE */),          clear: createReadonlyMethod("clear" /* TriggerOpTypes.CLEAR */),          forEach: createForEach(true, false)      };      const shallowReadonlyInstrumentations = {          get(key) {              return get$1(this, key, true, true);          },          get size() {              return size(this, true);          },          has(key) {              return has$1.call(this, key, true);          },          add: createReadonlyMethod("add" /* TriggerOpTypes.ADD */),          set: createReadonlyMethod("set" /* TriggerOpTypes.SET */),          delete: createReadonlyMethod("delete" /* TriggerOpTypes.DELETE */),          clear: createReadonlyMethod("clear" /* TriggerOpTypes.CLEAR */),          forEach: createForEach(true, true)      };      const iteratorMethods = ['keys', 'values', 'entries', Symbol.iterator];      iteratorMethods.forEach(method => {          mutableInstrumentations[method] = createIterableMethod(method, false, false);          readonlyInstrumentations[method] = createIterableMethod(method, true, false);          shallowInstrumentations[method] = createIterableMethod(method, false, true);          shallowReadonlyInstrumentations[method] = createIterableMethod(method, true, true);      });      return [          mutableInstrumentations,          readonlyInstrumentations,          shallowInstrumentations,          shallowReadonlyInstrumentations      ];  }  const [mutableInstrumentations, readonlyInstrumentations, shallowInstrumentations, shallowReadonlyInstrumentations] = /* #__PURE__*/ createInstrumentations();  function createInstrumentationGetter(isReadonly, shallow) {      const instrumentations = shallow          ? isReadonly              ? shallowReadonlyInstrumentations              : shallowInstrumentations          : isReadonly              ? readonlyInstrumentations              : mutableInstrumentations;      return (target, key, receiver) => {          if (key === "__v_isReactive" /* ReactiveFlags.IS_REACTIVE */) {              return !isReadonly;          }          else if (key === "__v_isReadonly" /* ReactiveFlags.IS_READONLY */) {              return isReadonly;          }          else if (key === "__v_raw" /* ReactiveFlags.RAW */) {              return target;          }          return Reflect.get(hasOwn(instrumentations, key) && key in target              ? instrumentations              : target, key, receiver);      };  }  const mutableCollectionHandlers = {      get: /*#__PURE__*/ createInstrumentationGetter(false, false)  };  const shallowCollectionHandlers = {      get: /*#__PURE__*/ createInstrumentationGetter(false, true)  };  const readonlyCollectionHandlers = {      get: /*#__PURE__*/ createInstrumentationGetter(true, false)  };  const shallowReadonlyCollectionHandlers = {      get: /*#__PURE__*/ createInstrumentationGetter(true, true)  };  function checkIdentityKeys(target, has, key) {      const rawKey = toRaw(key);      if (rawKey !== key && has.call(target, rawKey)) {          const type = toRawType(target);          console.warn(`Reactive ${type} contains both the raw and reactive ` +              `versions of the same object${type === `Map` ? ` as keys` : ``}, ` +              `which can lead to inconsistencies. ` +              `Avoid differentiating between the raw and reactive versions ` +              `of an object and only use the reactive version if possible.`);      }  }  const reactiveMap = new WeakMap();  const shallowReactiveMap = new WeakMap();  const readonlyMap = new WeakMap();  const shallowReadonlyMap = new WeakMap();  function targetTypeMap(rawType) {      switch (rawType) {          case 'Object':          case 'Array':              return 1 /* TargetType.COMMON */;          case 'Map':          case 'Set':          case 'WeakMap':          case 'WeakSet':              return 2 /* TargetType.COLLECTION */;          default:              return 0 /* TargetType.INVALID */;      }  }  function getTargetType(value) {      return value["__v_skip" /* ReactiveFlags.SKIP */] || !Object.isExtensible(value)          ? 0 /* TargetType.INVALID */          : targetTypeMap(toRawType(value));  }  function reactive(target) {      // if trying to observe a readonly proxy, return the readonly version.      if (isReadonly(target)) {          return target;      }      return createReactiveObject(target, false, mutableHandlers, mutableCollectionHandlers, reactiveMap);  }  /**   * Return a shallowly-reactive copy of the original object, where only the root   * level properties are reactive. It also does not auto-unwrap refs (even at the   * root level).   */  function shallowReactive(target) {      return createReactiveObject(target, false, shallowReactiveHandlers, shallowCollectionHandlers, shallowReactiveMap);  }  /**   * Creates a readonly copy of the original object. Note the returned copy is not   * made reactive, but `readonly` can be called on an already reactive object.   */  function readonly(target) {      return createReactiveObject(target, true, readonlyHandlers, readonlyCollectionHandlers, readonlyMap);  }  /**   * Returns a reactive-copy of the original object, where only the root level   * properties are readonly, and does NOT unwrap refs nor recursively convert   * returned properties.   * This is used for creating the props proxy object for stateful components.   */  function shallowReadonly(target) {      return createReactiveObject(target, true, shallowReadonlyHandlers, shallowReadonlyCollectionHandlers, shallowReadonlyMap);  }  function createReactiveObject(target, isReadonly, baseHandlers, collectionHandlers, proxyMap) {      if (!isObject(target)) {          {              console.warn(`value cannot be made reactive: ${String(target)}`);          }          return target;      }      // target is already a Proxy, return it.      // exception: calling readonly() on a reactive object      if (target["__v_raw" /* ReactiveFlags.RAW */] &&          !(isReadonly && target["__v_isReactive" /* ReactiveFlags.IS_REACTIVE */])) {          return target;      }      // target already has corresponding Proxy      const existingProxy = proxyMap.get(target);      if (existingProxy) {          return existingProxy;      }      // only specific value types can be observed.      const targetType = getTargetType(target);      if (targetType === 0 /* TargetType.INVALID */) {          return target;      }      const proxy = new Proxy(target, targetType === 2 /* TargetType.COLLECTION */ ? collectionHandlers : baseHandlers);      proxyMap.set(target, proxy);      return proxy;  }  function isReactive(value) {      if (isReadonly(value)) {          return isReactive(value["__v_raw" /* ReactiveFlags.RAW */]);      }      return !!(value && value["__v_isReactive" /* ReactiveFlags.IS_REACTIVE */]);  }  function isReadonly(value) {      return !!(value && value["__v_isReadonly" /* ReactiveFlags.IS_READONLY */]);  }  function isShallow(value) {      return !!(value && value["__v_isShallow" /* ReactiveFlags.IS_SHALLOW */]);  }  function isProxy(value) {      return isReactive(value) || isReadonly(value);  }  function toRaw(observed) {      const raw = observed && observed["__v_raw" /* ReactiveFlags.RAW */];      return raw ? toRaw(raw) : observed;  }  function markRaw(value) {      def(value, "__v_skip" /* ReactiveFlags.SKIP */, true);      return value;  }  const toReactive = (value) => isObject(value) ? reactive(value) : value;  const toReadonly = (value) => isObject(value) ? readonly(value) : value;  function trackRefValue(ref) {      if (shouldTrack && activeEffect) {          ref = toRaw(ref);          {              trackEffects(ref.dep || (ref.dep = createDep()), {                  target: ref,                  type: "get" /* TrackOpTypes.GET */,                  key: 'value'              });          }      }  }  function triggerRefValue(ref, newVal) {      ref = toRaw(ref);      if (ref.dep) {          {              triggerEffects(ref.dep, {                  target: ref,                  type: "set" /* TriggerOpTypes.SET */,                  key: 'value',                  newValue: newVal              });          }      }  }  function isRef(r) {      return !!(r && r.__v_isRef === true);  }  function ref(value) {      return createRef(value, false);  }  function shallowRef(value) {      return createRef(value, true);  }  function createRef(rawValue, shallow) {      if (isRef(rawValue)) {          return rawValue;      }      return new RefImpl(rawValue, shallow);  }  class RefImpl {      constructor(value, __v_isShallow) {          this.__v_isShallow = __v_isShallow;          this.dep = undefined;          this.__v_isRef = true;          this._rawValue = __v_isShallow ? value : toRaw(value);          this._value = __v_isShallow ? value : toReactive(value);      }      get value() {          trackRefValue(this);          return this._value;      }      set value(newVal) {          const useDirectValue = this.__v_isShallow || isShallow(newVal) || isReadonly(newVal);          newVal = useDirectValue ? newVal : toRaw(newVal);          if (hasChanged(newVal, this._rawValue)) {              this._rawValue = newVal;              this._value = useDirectValue ? newVal : toReactive(newVal);              triggerRefValue(this, newVal);          }      }  }  function triggerRef(ref) {      triggerRefValue(ref, ref.value );  }  function unref(ref) {      return isRef(ref) ? ref.value : ref;  }  const shallowUnwrapHandlers = {      get: (target, key, receiver) => unref(Reflect.get(target, key, receiver)),      set: (target, key, value, receiver) => {          const oldValue = target[key];          if (isRef(oldValue) && !isRef(value)) {              oldValue.value = value;              return true;          }          else {              return Reflect.set(target, key, value, receiver);          }      }  };  function proxyRefs(objectWithRefs) {      return isReactive(objectWithRefs)          ? objectWithRefs          : new Proxy(objectWithRefs, shallowUnwrapHandlers);  }  class CustomRefImpl {      constructor(factory) {          this.dep = undefined;          this.__v_isRef = true;          const { get, set } = factory(() => trackRefValue(this), () => triggerRefValue(this));          this._get = get;          this._set = set;      }      get value() {          return this._get();      }      set value(newVal) {          this._set(newVal);      }  }  function customRef(factory) {      return new CustomRefImpl(factory);  }  function toRefs(object) {      if (!isProxy(object)) {          console.warn(`toRefs() expects a reactive object but received a plain one.`);      }      const ret = isArray(object) ? new Array(object.length) : {};      for (const key in object) {          ret[key] = toRef(object, key);      }      return ret;  }  class ObjectRefImpl {      constructor(_object, _key, _defaultValue) {          this._object = _object;          this._key = _key;          this._defaultValue = _defaultValue;          this.__v_isRef = true;      }      get value() {          const val = this._object[this._key];          return val === undefined ? this._defaultValue : val;      }      set value(newVal) {          this._object[this._key] = newVal;      }  }  function toRef(object, key, defaultValue) {      const val = object[key];      return isRef(val)          ? val          : new ObjectRefImpl(object, key, defaultValue);  }  var _a;  class ComputedRefImpl {      constructor(getter, _setter, isReadonly, isSSR) {          this._setter = _setter;          this.dep = undefined;          this.__v_isRef = true;          this[_a] = false;          this._dirty = true;          this.effect = new ReactiveEffect(getter, () => {              if (!this._dirty) {                  this._dirty = true;                  triggerRefValue(this);              }          });          this.effect.computed = this;          this.effect.active = this._cacheable = !isSSR;          this["__v_isReadonly" /* ReactiveFlags.IS_READONLY */] = isReadonly;      }      get value() {          // the computed ref may get wrapped by other proxies e.g. readonly() #3376          const self = toRaw(this);          trackRefValue(self);          if (self._dirty || !self._cacheable) {              self._dirty = false;              self._value = self.effect.run();          }          return self._value;      }      set value(newValue) {          this._setter(newValue);      }  }  _a = "__v_isReadonly" /* ReactiveFlags.IS_READONLY */;  function computed(getterOrOptions, debugOptions, isSSR = false) {      let getter;      let setter;      const onlyGetter = isFunction(getterOrOptions);      if (onlyGetter) {          getter = getterOrOptions;          setter = () => {                  console.warn('Write operation failed: computed value is readonly');              }              ;      }      else {          getter = getterOrOptions.get;          setter = getterOrOptions.set;      }      const cRef = new ComputedRefImpl(getter, setter, onlyGetter || !setter, isSSR);      if (debugOptions && !isSSR) {          cRef.effect.onTrack = debugOptions.onTrack;          cRef.effect.onTrigger = debugOptions.onTrigger;      }      return cRef;  }  const stack = [];  function pushWarningContext(vnode) {      stack.push(vnode);  }  function popWarningContext() {      stack.pop();  }  function warn$1(msg, ...args) {      // avoid props formatting or warn handler tracking deps that might be mutated      // during patch, leading to infinite recursion.      pauseTracking();      const instance = stack.length ? stack[stack.length - 1].component : null;      const appWarnHandler = instance && instance.appContext.config.warnHandler;      const trace = getComponentTrace();      if (appWarnHandler) {          callWithErrorHandling(appWarnHandler, instance, 11 /* ErrorCodes.APP_WARN_HANDLER */, [              msg + args.join(''),              instance && instance.proxy,              trace                  .map(({ vnode }) => `at <${formatComponentName(instance, vnode.type)}>`)                  .join('\n'),              trace          ]);      }      else {          const warnArgs = [`[Vue warn]: ${msg}`, ...args];          /* istanbul ignore if */          if (trace.length &&              // avoid spamming console during tests              !false) {              warnArgs.push(`\n`, ...formatTrace(trace));          }          console.warn(...warnArgs);      }      resetTracking();  }  function getComponentTrace() {      let currentVNode = stack[stack.length - 1];      if (!currentVNode) {          return [];      }      // we can't just use the stack because it will be incomplete during updates      // that did not start from the root. Re-construct the parent chain using      // instance parent pointers.      const normalizedStack = [];      while (currentVNode) {          const last = normalizedStack[0];          if (last && last.vnode === currentVNode) {              last.recurseCount++;          }          else {              normalizedStack.push({                  vnode: currentVNode,                  recurseCount: 0              });          }          const parentInstance = currentVNode.component && currentVNode.component.parent;          currentVNode = parentInstance && parentInstance.vnode;      }      return normalizedStack;  }  /* istanbul ignore next */  function formatTrace(trace) {      const logs = [];      trace.forEach((entry, i) => {          logs.push(...(i === 0 ? [] : [`\n`]), ...formatTraceEntry(entry));      });      return logs;  }  function formatTraceEntry({ vnode, recurseCount }) {      const postfix = recurseCount > 0 ? `... (${recurseCount} recursive calls)` : ``;      const isRoot = vnode.component ? vnode.component.parent == null : false;      const open = ` at <${formatComponentName(vnode.component, vnode.type, isRoot)}`;      const close = `>` + postfix;      return vnode.props          ? [open, ...formatProps(vnode.props), close]          : [open + close];  }  /* istanbul ignore next */  function formatProps(props) {      const res = [];      const keys = Object.keys(props);      keys.slice(0, 3).forEach(key => {          res.push(...formatProp(key, props[key]));      });      if (keys.length > 3) {          res.push(` ...`);      }      return res;  }  /* istanbul ignore next */  function formatProp(key, value, raw) {      if (isString(value)) {          value = JSON.stringify(value);          return raw ? value : [`${key}=${value}`];      }      else if (typeof value === 'number' ||          typeof value === 'boolean' ||          value == null) {          return raw ? value : [`${key}=${value}`];      }      else if (isRef(value)) {          value = formatProp(key, toRaw(value.value), true);          return raw ? value : [`${key}=Ref<`, value, `>`];      }      else if (isFunction(value)) {          return [`${key}=fn${value.name ? `<${value.name}>` : ``}`];      }      else {          value = toRaw(value);          return raw ? value : [`${key}=`, value];      }  }  const ErrorTypeStrings = {      ["sp" /* LifecycleHooks.SERVER_PREFETCH */]: 'serverPrefetch hook',      ["bc" /* LifecycleHooks.BEFORE_CREATE */]: 'beforeCreate hook',      ["c" /* LifecycleHooks.CREATED */]: 'created hook',      ["bm" /* LifecycleHooks.BEFORE_MOUNT */]: 'beforeMount hook',      ["m" /* LifecycleHooks.MOUNTED */]: 'mounted hook',      ["bu" /* LifecycleHooks.BEFORE_UPDATE */]: 'beforeUpdate hook',      ["u" /* LifecycleHooks.UPDATED */]: 'updated',      ["bum" /* LifecycleHooks.BEFORE_UNMOUNT */]: 'beforeUnmount hook',      ["um" /* LifecycleHooks.UNMOUNTED */]: 'unmounted hook',      ["a" /* LifecycleHooks.ACTIVATED */]: 'activated hook',      ["da" /* LifecycleHooks.DEACTIVATED */]: 'deactivated hook',      ["ec" /* LifecycleHooks.ERROR_CAPTURED */]: 'errorCaptured hook',      ["rtc" /* LifecycleHooks.RENDER_TRACKED */]: 'renderTracked hook',      ["rtg" /* LifecycleHooks.RENDER_TRIGGERED */]: 'renderTriggered hook',      [0 /* ErrorCodes.SETUP_FUNCTION */]: 'setup function',      [1 /* ErrorCodes.RENDER_FUNCTION */]: 'render function',      [2 /* ErrorCodes.WATCH_GETTER */]: 'watcher getter',      [3 /* ErrorCodes.WATCH_CALLBACK */]: 'watcher callback',      [4 /* ErrorCodes.WATCH_CLEANUP */]: 'watcher cleanup function',      [5 /* ErrorCodes.NATIVE_EVENT_HANDLER */]: 'native event handler',      [6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */]: 'component event handler',      [7 /* ErrorCodes.VNODE_HOOK */]: 'vnode hook',      [8 /* ErrorCodes.DIRECTIVE_HOOK */]: 'directive hook',      [9 /* ErrorCodes.TRANSITION_HOOK */]: 'transition hook',      [10 /* ErrorCodes.APP_ERROR_HANDLER */]: 'app errorHandler',      [11 /* ErrorCodes.APP_WARN_HANDLER */]: 'app warnHandler',      [12 /* ErrorCodes.FUNCTION_REF */]: 'ref function',      [13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */]: 'async component loader',      [14 /* ErrorCodes.SCHEDULER */]: 'scheduler flush. This is likely a Vue internals bug. ' +          'Please open an issue at https://new-issue.vuejs.org/?repo=vuejs/core'  };  function callWithErrorHandling(fn, instance, type, args) {      let res;      try {          res = args ? fn(...args) : fn();      }      catch (err) {          handleError(err, instance, type);      }      return res;  }  function callWithAsyncErrorHandling(fn, instance, type, args) {      if (isFunction(fn)) {          const res = callWithErrorHandling(fn, instance, type, args);          if (res && isPromise(res)) {              res.catch(err => {                  handleError(err, instance, type);              });          }          return res;      }      const values = [];      for (let i = 0; i < fn.length; i++) {          values.push(callWithAsyncErrorHandling(fn[i], instance, type, args));      }      return values;  }  function handleError(err, instance, type, throwInDev = true) {      const contextVNode = instance ? instance.vnode : null;      if (instance) {          let cur = instance.parent;          // the exposed instance is the render proxy to keep it consistent with 2.x          const exposedInstance = instance.proxy;          // in production the hook receives only the error code          const errorInfo = ErrorTypeStrings[type] ;          while (cur) {              const errorCapturedHooks = cur.ec;              if (errorCapturedHooks) {                  for (let i = 0; i < errorCapturedHooks.length; i++) {                      if (errorCapturedHooks[i](err, exposedInstance, errorInfo) === false) {                          return;                      }                  }              }              cur = cur.parent;          }          // app-level handling          const appErrorHandler = instance.appContext.config.errorHandler;          if (appErrorHandler) {              callWithErrorHandling(appErrorHandler, null, 10 /* ErrorCodes.APP_ERROR_HANDLER */, [err, exposedInstance, errorInfo]);              return;          }      }      logError(err, type, contextVNode, throwInDev);  }  function logError(err, type, contextVNode, throwInDev = true) {      {          const info = ErrorTypeStrings[type];          if (contextVNode) {              pushWarningContext(contextVNode);          }          warn$1(`Unhandled error${info ? ` during execution of ${info}` : ``}`);          if (contextVNode) {              popWarningContext();          }          // crash in dev by default so it's more noticeable          if (throwInDev) {              throw err;          }          else {              console.error(err);          }      }  }  let isFlushing = false;  let isFlushPending = false;  const queue = [];  let flushIndex = 0;  const pendingPostFlushCbs = [];  let activePostFlushCbs = null;  let postFlushIndex = 0;  const resolvedPromise = /*#__PURE__*/ Promise.resolve();  let currentFlushPromise = null;  const RECURSION_LIMIT = 100;  function nextTick(fn) {      const p = currentFlushPromise || resolvedPromise;      return fn ? p.then(this ? fn.bind(this) : fn) : p;  }  // #2768  // Use binary-search to find a suitable position in the queue,  // so that the queue maintains the increasing order of job's id,  // which can prevent the job from being skipped and also can avoid repeated patching.  function findInsertionIndex(id) {      // the start index should be `flushIndex + 1`      let start = flushIndex + 1;      let end = queue.length;      while (start < end) {          const middle = (start + end) >>> 1;          const middleJobId = getId(queue[middle]);          middleJobId < id ? (start = middle + 1) : (end = middle);      }      return start;  }  function queueJob(job) {      // the dedupe search uses the startIndex argument of Array.includes()      // by default the search index includes the current job that is being run      // so it cannot recursively trigger itself again.      // if the job is a watch() callback, the search will start with a +1 index to      // allow it recursively trigger itself - it is the user's responsibility to      // ensure it doesn't end up in an infinite loop.      if (!queue.length ||          !queue.includes(job, isFlushing && job.allowRecurse ? flushIndex + 1 : flushIndex)) {          if (job.id == null) {              queue.push(job);          }          else {              queue.splice(findInsertionIndex(job.id), 0, job);          }          queueFlush();      }  }  function queueFlush() {      if (!isFlushing && !isFlushPending) {          isFlushPending = true;          currentFlushPromise = resolvedPromise.then(flushJobs);      }  }  function invalidateJob(job) {      const i = queue.indexOf(job);      if (i > flushIndex) {          queue.splice(i, 1);      }  }  function queuePostFlushCb(cb) {      if (!isArray(cb)) {          if (!activePostFlushCbs ||              !activePostFlushCbs.includes(cb, cb.allowRecurse ? postFlushIndex + 1 : postFlushIndex)) {              pendingPostFlushCbs.push(cb);          }      }      else {          // if cb is an array, it is a component lifecycle hook which can only be          // triggered by a job, which is already deduped in the main queue, so          // we can skip duplicate check here to improve perf          pendingPostFlushCbs.push(...cb);      }      queueFlush();  }  function flushPreFlushCbs(seen,   // if currently flushing, skip the current job itself  i = isFlushing ? flushIndex + 1 : 0) {      {          seen = seen || new Map();      }      for (; i < queue.length; i++) {          const cb = queue[i];          if (cb && cb.pre) {              if (checkRecursiveUpdates(seen, cb)) {                  continue;              }              queue.splice(i, 1);              i--;              cb();          }      }  }  function flushPostFlushCbs(seen) {      if (pendingPostFlushCbs.length) {          const deduped = [...new Set(pendingPostFlushCbs)];          pendingPostFlushCbs.length = 0;          // #1947 already has active queue, nested flushPostFlushCbs call          if (activePostFlushCbs) {              activePostFlushCbs.push(...deduped);              return;          }          activePostFlushCbs = deduped;          {              seen = seen || new Map();          }          activePostFlushCbs.sort((a, b) => getId(a) - getId(b));          for (postFlushIndex = 0; postFlushIndex < activePostFlushCbs.length; postFlushIndex++) {              if (checkRecursiveUpdates(seen, activePostFlushCbs[postFlushIndex])) {                  continue;              }              activePostFlushCbs[postFlushIndex]();          }          activePostFlushCbs = null;          postFlushIndex = 0;      }  }  const getId = (job) => job.id == null ? Infinity : job.id;  const comparator = (a, b) => {      const diff = getId(a) - getId(b);      if (diff === 0) {          if (a.pre && !b.pre)              return -1;          if (b.pre && !a.pre)              return 1;      }      return diff;  };  function flushJobs(seen) {      isFlushPending = false;      isFlushing = true;      {          seen = seen || new Map();      }      // Sort queue before flush.      // This ensures that:      // 1. Components are updated from parent to child. (because parent is always      //    created before the child so its render effect will have smaller      //    priority number)      // 2. If a component is unmounted during a parent component's update,      //    its update can be skipped.      queue.sort(comparator);      // conditional usage of checkRecursiveUpdate must be determined out of      // try ... catch block since Rollup by default de-optimizes treeshaking      // inside try-catch. This can leave all warning code unshaked. Although      // they would get eventually shaken by a minifier like terser, some minifiers      // would fail to do that (e.g. https://github.com/evanw/esbuild/issues/1610)      const check = (job) => checkRecursiveUpdates(seen, job)          ;      try {          for (flushIndex = 0; flushIndex < queue.length; flushIndex++) {              const job = queue[flushIndex];              if (job && job.active !== false) {                  if (true && check(job)) {                      continue;                  }                  // console.log(`running:`, job.id)                  callWithErrorHandling(job, null, 14 /* ErrorCodes.SCHEDULER */);              }          }      }      finally {          flushIndex = 0;          queue.length = 0;          flushPostFlushCbs(seen);          isFlushing = false;          currentFlushPromise = null;          // some postFlushCb queued jobs!          // keep flushing until it drains.          if (queue.length || pendingPostFlushCbs.length) {              flushJobs(seen);          }      }  }  function checkRecursiveUpdates(seen, fn) {      if (!seen.has(fn)) {          seen.set(fn, 1);      }      else {          const count = seen.get(fn);          if (count > RECURSION_LIMIT) {              const instance = fn.ownerInstance;              const componentName = instance && getComponentName(instance.type);              warn$1(`Maximum recursive updates exceeded${componentName ? ` in component <${componentName}>` : ``}. ` +                  `This means you have a reactive effect that is mutating its own ` +                  `dependencies and thus recursively triggering itself. Possible sources ` +                  `include component template, render function, updated hook or ` +                  `watcher source function.`);              return true;          }          else {              seen.set(fn, count + 1);          }      }  }  /* eslint-disable no-restricted-globals */  let isHmrUpdating = false;  const hmrDirtyComponents = new Set();  // Expose the HMR runtime on the global object  // This makes it entirely tree-shakable without polluting the exports and makes  // it easier to be used in toolings like vue-loader  // Note: for a component to be eligible for HMR it also needs the __hmrId option  // to be set so that its instances can be registered / removed.  {      getGlobalThis().__VUE_HMR_RUNTIME__ = {          createRecord: tryWrap(createRecord),          rerender: tryWrap(rerender),          reload: tryWrap(reload)      };  }  const map = new Map();  function registerHMR(instance) {      const id = instance.type.__hmrId;      let record = map.get(id);      if (!record) {          createRecord(id, instance.type);          record = map.get(id);      }      record.instances.add(instance);  }  function unregisterHMR(instance) {      map.get(instance.type.__hmrId).instances.delete(instance);  }  function createRecord(id, initialDef) {      if (map.has(id)) {          return false;      }      map.set(id, {          initialDef: normalizeClassComponent(initialDef),          instances: new Set()      });      return true;  }  function normalizeClassComponent(component) {      return isClassComponent(component) ? component.__vccOpts : component;  }  function rerender(id, newRender) {      const record = map.get(id);      if (!record) {          return;      }      // update initial record (for not-yet-rendered component)      record.initialDef.render = newRender;      [...record.instances].forEach(instance => {          if (newRender) {              instance.render = newRender;              normalizeClassComponent(instance.type).render = newRender;          }          instance.renderCache = [];          // this flag forces child components with slot content to update          isHmrUpdating = true;          instance.update();          isHmrUpdating = false;      });  }  function reload(id, newComp) {      const record = map.get(id);      if (!record)          return;      newComp = normalizeClassComponent(newComp);      // update initial def (for not-yet-rendered components)      updateComponentDef(record.initialDef, newComp);      // create a snapshot which avoids the set being mutated during updates      const instances = [...record.instances];      for (const instance of instances) {          const oldComp = normalizeClassComponent(instance.type);          if (!hmrDirtyComponents.has(oldComp)) {              // 1. Update existing comp definition to match new one              if (oldComp !== record.initialDef) {                  updateComponentDef(oldComp, newComp);              }              // 2. mark definition dirty. This forces the renderer to replace the              // component on patch.              hmrDirtyComponents.add(oldComp);          }          // 3. invalidate options resolution cache          instance.appContext.optionsCache.delete(instance.type);          // 4. actually update          if (instance.ceReload) {              // custom element              hmrDirtyComponents.add(oldComp);              instance.ceReload(newComp.styles);              hmrDirtyComponents.delete(oldComp);          }          else if (instance.parent) {              // 4. Force the parent instance to re-render. This will cause all updated              // components to be unmounted and re-mounted. Queue the update so that we              // don't end up forcing the same parent to re-render multiple times.              queueJob(instance.parent.update);          }          else if (instance.appContext.reload) {              // root instance mounted via createApp() has a reload method              instance.appContext.reload();          }          else if (typeof window !== 'undefined') {              // root instance inside tree created via raw render(). Force reload.              window.location.reload();          }          else {              console.warn('[HMR] Root or manually mounted instance modified. Full reload required.');          }      }      // 5. make sure to cleanup dirty hmr components after update      queuePostFlushCb(() => {          for (const instance of instances) {              hmrDirtyComponents.delete(normalizeClassComponent(instance.type));          }      });  }  function updateComponentDef(oldComp, newComp) {      extend(oldComp, newComp);      for (const key in oldComp) {          if (key !== '__file' && !(key in newComp)) {              delete oldComp[key];          }      }  }  function tryWrap(fn) {      return (id, arg) => {          try {              return fn(id, arg);          }          catch (e) {              console.error(e);              console.warn(`[HMR] Something went wrong during Vue component hot-reload. ` +                  `Full reload required.`);          }      };  }  let buffer = [];  let devtoolsNotInstalled = false;  function emit(event, ...args) {      if (exports.devtools) {          exports.devtools.emit(event, ...args);      }      else if (!devtoolsNotInstalled) {          buffer.push({ event, args });      }  }  function setDevtoolsHook(hook, target) {      var _a, _b;      exports.devtools = hook;      if (exports.devtools) {          exports.devtools.enabled = true;          buffer.forEach(({ event, args }) => exports.devtools.emit(event, ...args));          buffer = [];      }      else if (      // handle late devtools injection - only do this if we are in an actual      // browser environment to avoid the timer handle stalling test runner exit      // (#4815)      typeof window !== 'undefined' &&          // some envs mock window but not fully          window.HTMLElement &&          // also exclude jsdom          !((_b = (_a = window.navigator) === null || _a === void 0 ? void 0 : _a.userAgent) === null || _b === void 0 ? void 0 : _b.includes('jsdom'))) {          const replay = (target.__VUE_DEVTOOLS_HOOK_REPLAY__ =              target.__VUE_DEVTOOLS_HOOK_REPLAY__ || []);          replay.push((newHook) => {              setDevtoolsHook(newHook, target);          });          // clear buffer after 3s - the user probably doesn't have devtools installed          // at all, and keeping the buffer will cause memory leaks (#4738)          setTimeout(() => {              if (!exports.devtools) {                  target.__VUE_DEVTOOLS_HOOK_REPLAY__ = null;                  devtoolsNotInstalled = true;                  buffer = [];              }          }, 3000);      }      else {          // non-browser env, assume not installed          devtoolsNotInstalled = true;          buffer = [];      }  }  function devtoolsInitApp(app, version) {      emit("app:init" /* DevtoolsHooks.APP_INIT */, app, version, {          Fragment,          Text,          Comment,          Static      });  }  function devtoolsUnmountApp(app) {      emit("app:unmount" /* DevtoolsHooks.APP_UNMOUNT */, app);  }  const devtoolsComponentAdded = /*#__PURE__*/ createDevtoolsComponentHook("component:added" /* DevtoolsHooks.COMPONENT_ADDED */);  const devtoolsComponentUpdated =   /*#__PURE__*/ createDevtoolsComponentHook("component:updated" /* DevtoolsHooks.COMPONENT_UPDATED */);  const _devtoolsComponentRemoved = /*#__PURE__*/ createDevtoolsComponentHook("component:removed" /* DevtoolsHooks.COMPONENT_REMOVED */);  const devtoolsComponentRemoved = (component) => {      if (exports.devtools &&          typeof exports.devtools.cleanupBuffer === 'function' &&          // remove the component if it wasn't buffered          !exports.devtools.cleanupBuffer(component)) {          _devtoolsComponentRemoved(component);      }  };  function createDevtoolsComponentHook(hook) {      return (component) => {          emit(hook, component.appContext.app, component.uid, component.parent ? component.parent.uid : undefined, component);      };  }  const devtoolsPerfStart = /*#__PURE__*/ createDevtoolsPerformanceHook("perf:start" /* DevtoolsHooks.PERFORMANCE_START */);  const devtoolsPerfEnd = /*#__PURE__*/ createDevtoolsPerformanceHook("perf:end" /* DevtoolsHooks.PERFORMANCE_END */);  function createDevtoolsPerformanceHook(hook) {      return (component, type, time) => {          emit(hook, component.appContext.app, component.uid, component, type, time);      };  }  function devtoolsComponentEmit(component, event, params) {      emit("component:emit" /* DevtoolsHooks.COMPONENT_EMIT */, component.appContext.app, component, event, params);  }  function emit$1(instance, event, ...rawArgs) {      if (instance.isUnmounted)          return;      const props = instance.vnode.props || EMPTY_OBJ;      {          const { emitsOptions, propsOptions: [propsOptions] } = instance;          if (emitsOptions) {              if (!(event in emitsOptions) &&                  !(false )) {                  if (!propsOptions || !(toHandlerKey(event) in propsOptions)) {                      warn$1(`Component emitted event "${event}" but it is neither declared in ` +                          `the emits option nor as an "${toHandlerKey(event)}" prop.`);                  }              }              else {                  const validator = emitsOptions[event];                  if (isFunction(validator)) {                      const isValid = validator(...rawArgs);                      if (!isValid) {                          warn$1(`Invalid event arguments: event validation failed for event "${event}".`);                      }                  }              }          }      }      let args = rawArgs;      const isModelListener = event.startsWith('update:');      // for v-model update:xxx events, apply modifiers on args      const modelArg = isModelListener && event.slice(7);      if (modelArg && modelArg in props) {          const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`;          const { number, trim } = props[modifiersKey] || EMPTY_OBJ;          if (trim) {              args = rawArgs.map(a => (isString(a) ? a.trim() : a));          }          if (number) {              args = rawArgs.map(toNumber);          }      }      {          devtoolsComponentEmit(instance, event, args);      }      {          const lowerCaseEvent = event.toLowerCase();          if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) {              warn$1(`Event "${lowerCaseEvent}" is emitted in component ` +                  `${formatComponentName(instance, instance.type)} but the handler is registered for "${event}". ` +                  `Note that HTML attributes are case-insensitive and you cannot use ` +                  `v-on to listen to camelCase events when using in-DOM templates. ` +                  `You should probably use "${hyphenate(event)}" instead of "${event}".`);          }      }      let handlerName;      let handler = props[(handlerName = toHandlerKey(event))] ||          // also try camelCase event handler (#2249)          props[(handlerName = toHandlerKey(camelize(event)))];      // for v-model update:xxx events, also trigger kebab-case equivalent      // for props passed via kebab-case      if (!handler && isModelListener) {          handler = props[(handlerName = toHandlerKey(hyphenate(event)))];      }      if (handler) {          callWithAsyncErrorHandling(handler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);      }      const onceHandler = props[handlerName + `Once`];      if (onceHandler) {          if (!instance.emitted) {              instance.emitted = {};          }          else if (instance.emitted[handlerName]) {              return;          }          instance.emitted[handlerName] = true;          callWithAsyncErrorHandling(onceHandler, instance, 6 /* ErrorCodes.COMPONENT_EVENT_HANDLER */, args);      }  }  function normalizeEmitsOptions(comp, appContext, asMixin = false) {      const cache = appContext.emitsCache;      const cached = cache.get(comp);      if (cached !== undefined) {          return cached;      }      const raw = comp.emits;      let normalized = {};      // apply mixin/extends props      let hasExtends = false;      if (!isFunction(comp)) {          const extendEmits = (raw) => {              const normalizedFromExtend = normalizeEmitsOptions(raw, appContext, true);              if (normalizedFromExtend) {                  hasExtends = true;                  extend(normalized, normalizedFromExtend);              }          };          if (!asMixin && appContext.mixins.length) {              appContext.mixins.forEach(extendEmits);          }          if (comp.extends) {              extendEmits(comp.extends);          }          if (comp.mixins) {              comp.mixins.forEach(extendEmits);          }      }      if (!raw && !hasExtends) {          if (isObject(comp)) {              cache.set(comp, null);          }          return null;      }      if (isArray(raw)) {          raw.forEach(key => (normalized[key] = null));      }      else {          extend(normalized, raw);      }      if (isObject(comp)) {          cache.set(comp, normalized);      }      return normalized;  }  // Check if an incoming prop key is a declared emit event listener.  // e.g. With `emits: { click: null }`, props named `onClick` and `onclick` are  // both considered matched listeners.  function isEmitListener(options, key) {      if (!options || !isOn(key)) {          return false;      }      key = key.slice(2).replace(/Once$/, '');      return (hasOwn(options, key[0].toLowerCase() + key.slice(1)) ||          hasOwn(options, hyphenate(key)) ||          hasOwn(options, key));  }  /**   * mark the current rendering instance for asset resolution (e.g.   * resolveComponent, resolveDirective) during render   */  let currentRenderingInstance = null;  let currentScopeId = null;  /**   * Note: rendering calls maybe nested. The function returns the parent rendering   * instance if present, which should be restored after the render is done:   *   * ```js   * const prev = setCurrentRenderingInstance(i)   * // ...render   * setCurrentRenderingInstance(prev)   * ```   */  function setCurrentRenderingInstance(instance) {      const prev = currentRenderingInstance;      currentRenderingInstance = instance;      currentScopeId = (instance && instance.type.__scopeId) || null;      return prev;  }  /**   * Set scope id when creating hoisted vnodes.   * @private compiler helper   */  function pushScopeId(id) {      currentScopeId = id;  }  /**   * Technically we no longer need this after 3.0.8 but we need to keep the same   * API for backwards compat w/ code generated by compilers.   * @private   */  function popScopeId() {      currentScopeId = null;  }  /**   * Only for backwards compat   * @private   */  const withScopeId = (_id) => withCtx;  /**   * Wrap a slot function to memoize current rendering instance   * @private compiler helper   */  function withCtx(fn, ctx = currentRenderingInstance, isNonScopedSlot // false only  ) {      if (!ctx)          return fn;      // already normalized      if (fn._n) {          return fn;      }      const renderFnWithContext = (...args) => {          // If a user calls a compiled slot inside a template expression (#1745), it          // can mess up block tracking, so by default we disable block tracking and          // force bail out when invoking a compiled slot (indicated by the ._d flag).          // This isn't necessary if rendering a compiled `<slot>`, so we flip the          // ._d flag off when invoking the wrapped fn inside `renderSlot`.          if (renderFnWithContext._d) {              setBlockTracking(-1);          }          const prevInstance = setCurrentRenderingInstance(ctx);          let res;          try {              res = fn(...args);          }          finally {              setCurrentRenderingInstance(prevInstance);              if (renderFnWithContext._d) {                  setBlockTracking(1);              }          }          {              devtoolsComponentUpdated(ctx);          }          return res;      };      // mark normalized to avoid duplicated wrapping      renderFnWithContext._n = true;      // mark this as compiled by default      // this is used in vnode.ts -> normalizeChildren() to set the slot      // rendering flag.      renderFnWithContext._c = true;      // disable block tracking by default      renderFnWithContext._d = true;      return renderFnWithContext;  }  /**   * dev only flag to track whether $attrs was used during render.   * If $attrs was used during render then the warning for failed attrs   * fallthrough can be suppressed.   */  let accessedAttrs = false;  function markAttrsAccessed() {      accessedAttrs = true;  }  function renderComponentRoot(instance) {      const { type: Component, vnode, proxy, withProxy, props, propsOptions: [propsOptions], slots, attrs, emit, render, renderCache, data, setupState, ctx, inheritAttrs } = instance;      let result;      let fallthroughAttrs;      const prev = setCurrentRenderingInstance(instance);      {          accessedAttrs = false;      }      try {          if (vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) {              // withProxy is a proxy with a different `has` trap only for              // runtime-compiled render functions using `with` block.              const proxyToUse = withProxy || proxy;              result = normalizeVNode(render.call(proxyToUse, proxyToUse, renderCache, props, setupState, data, ctx));              fallthroughAttrs = attrs;          }          else {              // functional              const render = Component;              // in dev, mark attrs accessed if optional props (attrs === props)              if (true && attrs === props) {                  markAttrsAccessed();              }              result = normalizeVNode(render.length > 1                  ? render(props, true                      ? {                          get attrs() {                              markAttrsAccessed();                              return attrs;                          },                          slots,                          emit                      }                      : { attrs, slots, emit })                  : render(props, null /* we know it doesn't need it */));              fallthroughAttrs = Component.props                  ? attrs                  : getFunctionalFallthrough(attrs);          }      }      catch (err) {          blockStack.length = 0;          handleError(err, instance, 1 /* ErrorCodes.RENDER_FUNCTION */);          result = createVNode(Comment);      }      // attr merging      // in dev mode, comments are preserved, and it's possible for a template      // to have comments along side the root element which makes it a fragment      let root = result;      let setRoot = undefined;      if (result.patchFlag > 0 &&          result.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {          [root, setRoot] = getChildRoot(result);      }      if (fallthroughAttrs && inheritAttrs !== false) {          const keys = Object.keys(fallthroughAttrs);          const { shapeFlag } = root;          if (keys.length) {              if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 6 /* ShapeFlags.COMPONENT */)) {                  if (propsOptions && keys.some(isModelListener)) {                      // If a v-model listener (onUpdate:xxx) has a corresponding declared                      // prop, it indicates this component expects to handle v-model and                      // it should not fallthrough.                      // related: #1543, #1643, #1989                      fallthroughAttrs = filterModelListeners(fallthroughAttrs, propsOptions);                  }                  root = cloneVNode(root, fallthroughAttrs);              }              else if (!accessedAttrs && root.type !== Comment) {                  const allAttrs = Object.keys(attrs);                  const eventAttrs = [];                  const extraAttrs = [];                  for (let i = 0, l = allAttrs.length; i < l; i++) {                      const key = allAttrs[i];                      if (isOn(key)) {                          // ignore v-model handlers when they fail to fallthrough                          if (!isModelListener(key)) {                              // remove `on`, lowercase first letter to reflect event casing                              // accurately                              eventAttrs.push(key[2].toLowerCase() + key.slice(3));                          }                      }                      else {                          extraAttrs.push(key);                      }                  }                  if (extraAttrs.length) {                      warn$1(`Extraneous non-props attributes (` +                          `${extraAttrs.join(', ')}) ` +                          `were passed to component but could not be automatically inherited ` +                          `because component renders fragment or text root nodes.`);                  }                  if (eventAttrs.length) {                      warn$1(`Extraneous non-emits event listeners (` +                          `${eventAttrs.join(', ')}) ` +                          `were passed to component but could not be automatically inherited ` +                          `because component renders fragment or text root nodes. ` +                          `If the listener is intended to be a component custom event listener only, ` +                          `declare it using the "emits" option.`);                  }              }          }      }      // inherit directives      if (vnode.dirs) {          if (!isElementRoot(root)) {              warn$1(`Runtime directive used on component with non-element root node. ` +                  `The directives will not function as intended.`);          }          // clone before mutating since the root may be a hoisted vnode          root = cloneVNode(root);          root.dirs = root.dirs ? root.dirs.concat(vnode.dirs) : vnode.dirs;      }      // inherit transition data      if (vnode.transition) {          if (!isElementRoot(root)) {              warn$1(`Component inside <Transition> renders non-element root node ` +                  `that cannot be animated.`);          }          root.transition = vnode.transition;      }      if (setRoot) {          setRoot(root);      }      else {          result = root;      }      setCurrentRenderingInstance(prev);      return result;  }  /**   * dev only   * In dev mode, template root level comments are rendered, which turns the   * template into a fragment root, but we need to locate the single element   * root for attrs and scope id processing.   */  const getChildRoot = (vnode) => {      const rawChildren = vnode.children;      const dynamicChildren = vnode.dynamicChildren;      const childRoot = filterSingleRoot(rawChildren);      if (!childRoot) {          return [vnode, undefined];      }      const index = rawChildren.indexOf(childRoot);      const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1;      const setRoot = (updatedRoot) => {          rawChildren[index] = updatedRoot;          if (dynamicChildren) {              if (dynamicIndex > -1) {                  dynamicChildren[dynamicIndex] = updatedRoot;              }              else if (updatedRoot.patchFlag > 0) {                  vnode.dynamicChildren = [...dynamicChildren, updatedRoot];              }          }      };      return [normalizeVNode(childRoot), setRoot];  };  function filterSingleRoot(children) {      let singleRoot;      for (let i = 0; i < children.length; i++) {          const child = children[i];          if (isVNode(child)) {              // ignore user comment              if (child.type !== Comment || child.children === 'v-if') {                  if (singleRoot) {                      // has more than 1 non-comment child, return now                      return;                  }                  else {                      singleRoot = child;                  }              }          }          else {              return;          }      }      return singleRoot;  }  const getFunctionalFallthrough = (attrs) => {      let res;      for (const key in attrs) {          if (key === 'class' || key === 'style' || isOn(key)) {              (res || (res = {}))[key] = attrs[key];          }      }      return res;  };  const filterModelListeners = (attrs, props) => {      const res = {};      for (const key in attrs) {          if (!isModelListener(key) || !(key.slice(9) in props)) {              res[key] = attrs[key];          }      }      return res;  };  const isElementRoot = (vnode) => {      return (vnode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 1 /* ShapeFlags.ELEMENT */) ||          vnode.type === Comment // potential v-if branch switch      );  };  function shouldUpdateComponent(prevVNode, nextVNode, optimized) {      const { props: prevProps, children: prevChildren, component } = prevVNode;      const { props: nextProps, children: nextChildren, patchFlag } = nextVNode;      const emits = component.emitsOptions;      // Parent component's render function was hot-updated. Since this may have      // caused the child component's slots content to have changed, we need to      // force the child to update as well.      if ((prevChildren || nextChildren) && isHmrUpdating) {          return true;      }      // force child update for runtime directive or transition on component vnode.      if (nextVNode.dirs || nextVNode.transition) {          return true;      }      if (optimized && patchFlag >= 0) {          if (patchFlag & 1024 /* PatchFlags.DYNAMIC_SLOTS */) {              // slot content that references values that might have changed,              // e.g. in a v-for              return true;          }          if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {              if (!prevProps) {                  return !!nextProps;              }              // presence of this flag indicates props are always non-null              return hasPropsChanged(prevProps, nextProps, emits);          }          else if (patchFlag & 8 /* PatchFlags.PROPS */) {              const dynamicProps = nextVNode.dynamicProps;              for (let i = 0; i < dynamicProps.length; i++) {                  const key = dynamicProps[i];                  if (nextProps[key] !== prevProps[key] &&                      !isEmitListener(emits, key)) {                      return true;                  }              }          }      }      else {          // this path is only taken by manually written render functions          // so presence of any children leads to a forced update          if (prevChildren || nextChildren) {              if (!nextChildren || !nextChildren.$stable) {                  return true;              }          }          if (prevProps === nextProps) {              return false;          }          if (!prevProps) {              return !!nextProps;          }          if (!nextProps) {              return true;          }          return hasPropsChanged(prevProps, nextProps, emits);      }      return false;  }  function hasPropsChanged(prevProps, nextProps, emitsOptions) {      const nextKeys = Object.keys(nextProps);      if (nextKeys.length !== Object.keys(prevProps).length) {          return true;      }      for (let i = 0; i < nextKeys.length; i++) {          const key = nextKeys[i];          if (nextProps[key] !== prevProps[key] &&              !isEmitListener(emitsOptions, key)) {              return true;          }      }      return false;  }  function updateHOCHostEl({ vnode, parent }, el // HostNode  ) {      while (parent && parent.subTree === vnode) {          (vnode = parent.vnode).el = el;          parent = parent.parent;      }  }  const isSuspense = (type) => type.__isSuspense;  // Suspense exposes a component-like API, and is treated like a component  // in the compiler, but internally it's a special built-in type that hooks  // directly into the renderer.  const SuspenseImpl = {      name: 'Suspense',      // In order to make Suspense tree-shakable, we need to avoid importing it      // directly in the renderer. The renderer checks for the __isSuspense flag      // on a vnode's type and calls the `process` method, passing in renderer      // internals.      __isSuspense: true,      process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized,       // platform-specific impl passed from renderer      rendererInternals) {          if (n1 == null) {              mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals);          }          else {              patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, rendererInternals);          }      },      hydrate: hydrateSuspense,      create: createSuspenseBoundary,      normalize: normalizeSuspenseChildren  };  // Force-casted public typing for h and TSX props inference  const Suspense = (SuspenseImpl      );  function triggerEvent(vnode, name) {      const eventListener = vnode.props && vnode.props[name];      if (isFunction(eventListener)) {          eventListener();      }  }  function mountSuspense(vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals) {      const { p: patch, o: { createElement } } = rendererInternals;      const hiddenContainer = createElement('div');      const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals));      // start mounting the content subtree in an off-dom container      patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds);      // now check if we have encountered any async deps      if (suspense.deps > 0) {          // has async          // invoke @fallback event          triggerEvent(vnode, 'onPending');          triggerEvent(vnode, 'onFallback');          // mount the fallback tree          patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context          isSVG, slotScopeIds);          setActiveBranch(suspense, vnode.ssFallback);      }      else {          // Suspense has no async deps. Just resolve.          suspense.resolve();      }  }  function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, slotScopeIds, optimized, { p: patch, um: unmount, o: { createElement } }) {      const suspense = (n2.suspense = n1.suspense);      suspense.vnode = n2;      n2.el = n1.el;      const newBranch = n2.ssContent;      const newFallback = n2.ssFallback;      const { activeBranch, pendingBranch, isInFallback, isHydrating } = suspense;      if (pendingBranch) {          suspense.pendingBranch = newBranch;          if (isSameVNodeType(newBranch, pendingBranch)) {              // same root type but content may have changed.              patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);              if (suspense.deps <= 0) {                  suspense.resolve();              }              else if (isInFallback) {                  patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context                  isSVG, slotScopeIds, optimized);                  setActiveBranch(suspense, newFallback);              }          }          else {              // toggled before pending tree is resolved              suspense.pendingId++;              if (isHydrating) {                  // if toggled before hydration is finished, the current DOM tree is                  // no longer valid. set it as the active branch so it will be unmounted                  // when resolved                  suspense.isHydrating = false;                  suspense.activeBranch = pendingBranch;              }              else {                  unmount(pendingBranch, parentComponent, suspense);              }              // increment pending ID. this is used to invalidate async callbacks              // reset suspense state              suspense.deps = 0;              // discard effects from pending branch              suspense.effects.length = 0;              // discard previous container              suspense.hiddenContainer = createElement('div');              if (isInFallback) {                  // already in fallback state                  patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);                  if (suspense.deps <= 0) {                      suspense.resolve();                  }                  else {                      patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context                      isSVG, slotScopeIds, optimized);                      setActiveBranch(suspense, newFallback);                  }              }              else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {                  // toggled "back" to current active branch                  patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);                  // force resolve                  suspense.resolve(true);              }              else {                  // switched to a 3rd branch                  patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);                  if (suspense.deps <= 0) {                      suspense.resolve();                  }              }          }      }      else {          if (activeBranch && isSameVNodeType(newBranch, activeBranch)) {              // root did not change, just normal patch              patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, slotScopeIds, optimized);              setActiveBranch(suspense, newBranch);          }          else {              // root node toggled              // invoke @pending event              triggerEvent(n2, 'onPending');              // mount pending branch in off-dom container              suspense.pendingBranch = newBranch;              suspense.pendingId++;              patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, slotScopeIds, optimized);              if (suspense.deps <= 0) {                  // incoming branch has no async deps, resolve now.                  suspense.resolve();              }              else {                  const { timeout, pendingId } = suspense;                  if (timeout > 0) {                      setTimeout(() => {                          if (suspense.pendingId === pendingId) {                              suspense.fallback(newFallback);                          }                      }, timeout);                  }                  else if (timeout === 0) {                      suspense.fallback(newFallback);                  }              }          }      }  }  let hasWarned = false;  function createSuspenseBoundary(vnode, parent, parentComponent, container, hiddenContainer, anchor, isSVG, slotScopeIds, optimized, rendererInternals, isHydrating = false) {      /* istanbul ignore if */      if (!hasWarned) {          hasWarned = true;          // @ts-ignore `console.info` cannot be null error          console[console.info ? 'info' : 'log'](`<Suspense> is an experimental feature and its API will likely change.`);      }      const { p: patch, m: move, um: unmount, n: next, o: { parentNode, remove } } = rendererInternals;      const timeout = toNumber(vnode.props && vnode.props.timeout);      const suspense = {          vnode,          parent,          parentComponent,          isSVG,          container,          hiddenContainer,          anchor,          deps: 0,          pendingId: 0,          timeout: typeof timeout === 'number' ? timeout : -1,          activeBranch: null,          pendingBranch: null,          isInFallback: true,          isHydrating,          isUnmounted: false,          effects: [],          resolve(resume = false) {              {                  if (!resume && !suspense.pendingBranch) {                      throw new Error(`suspense.resolve() is called without a pending branch.`);                  }                  if (suspense.isUnmounted) {                      throw new Error(`suspense.resolve() is called on an already unmounted suspense boundary.`);                  }              }              const { vnode, activeBranch, pendingBranch, pendingId, effects, parentComponent, container } = suspense;              if (suspense.isHydrating) {                  suspense.isHydrating = false;              }              else if (!resume) {                  const delayEnter = activeBranch &&                      pendingBranch.transition &&                      pendingBranch.transition.mode === 'out-in';                  if (delayEnter) {                      activeBranch.transition.afterLeave = () => {                          if (pendingId === suspense.pendingId) {                              move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);                          }                      };                  }                  // this is initial anchor on mount                  let { anchor } = suspense;                  // unmount current active tree                  if (activeBranch) {                      // if the fallback tree was mounted, it may have been moved                      // as part of a parent suspense. get the latest anchor for insertion                      anchor = next(activeBranch);                      unmount(activeBranch, parentComponent, suspense, true);                  }                  if (!delayEnter) {                      // move content from off-dom container to actual container                      move(pendingBranch, container, anchor, 0 /* MoveType.ENTER */);                  }              }              setActiveBranch(suspense, pendingBranch);              suspense.pendingBranch = null;              suspense.isInFallback = false;              // flush buffered effects              // check if there is a pending parent suspense              let parent = suspense.parent;              let hasUnresolvedAncestor = false;              while (parent) {                  if (parent.pendingBranch) {                      // found a pending parent suspense, merge buffered post jobs                      // into that parent                      parent.effects.push(...effects);                      hasUnresolvedAncestor = true;                      break;                  }                  parent = parent.parent;              }              // no pending parent suspense, flush all jobs              if (!hasUnresolvedAncestor) {                  queuePostFlushCb(effects);              }              suspense.effects = [];              // invoke @resolve event              triggerEvent(vnode, 'onResolve');          },          fallback(fallbackVNode) {              if (!suspense.pendingBranch) {                  return;              }              const { vnode, activeBranch, parentComponent, container, isSVG } = suspense;              // invoke @fallback event              triggerEvent(vnode, 'onFallback');              const anchor = next(activeBranch);              const mountFallback = () => {                  if (!suspense.isInFallback) {                      return;                  }                  // mount the fallback tree                  patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context                  isSVG, slotScopeIds, optimized);                  setActiveBranch(suspense, fallbackVNode);              };              const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in';              if (delayEnter) {                  activeBranch.transition.afterLeave = mountFallback;              }              suspense.isInFallback = true;              // unmount current active branch              unmount(activeBranch, parentComponent, null, // no suspense so unmount hooks fire now              true // shouldRemove              );              if (!delayEnter) {                  mountFallback();              }          },          move(container, anchor, type) {              suspense.activeBranch &&                  move(suspense.activeBranch, container, anchor, type);              suspense.container = container;          },          next() {              return suspense.activeBranch && next(suspense.activeBranch);          },          registerDep(instance, setupRenderEffect) {              const isInPendingSuspense = !!suspense.pendingBranch;              if (isInPendingSuspense) {                  suspense.deps++;              }              const hydratedEl = instance.vnode.el;              instance                  .asyncDep.catch(err => {                  handleError(err, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);              })                  .then(asyncSetupResult => {                  // retry when the setup() promise resolves.                  // component may have been unmounted before resolve.                  if (instance.isUnmounted ||                      suspense.isUnmounted ||                      suspense.pendingId !== instance.suspenseId) {                      return;                  }                  // retry from this component                  instance.asyncResolved = true;                  const { vnode } = instance;                  {                      pushWarningContext(vnode);                  }                  handleSetupResult(instance, asyncSetupResult, false);                  if (hydratedEl) {                      // vnode may have been replaced if an update happened before the                      // async dep is resolved.                      vnode.el = hydratedEl;                  }                  const placeholder = !hydratedEl && instance.subTree.el;                  setupRenderEffect(instance, vnode,                   // component may have been moved before resolve.                  // if this is not a hydration, instance.subTree will be the comment                  // placeholder.                  parentNode(hydratedEl || instance.subTree.el),                   // anchor will not be used if this is hydration, so only need to                  // consider the comment placeholder case.                  hydratedEl ? null : next(instance.subTree), suspense, isSVG, optimized);                  if (placeholder) {                      remove(placeholder);                  }                  updateHOCHostEl(instance, vnode.el);                  {                      popWarningContext();                  }                  // only decrease deps count if suspense is not already resolved                  if (isInPendingSuspense && --suspense.deps === 0) {                      suspense.resolve();                  }              });          },          unmount(parentSuspense, doRemove) {              suspense.isUnmounted = true;              if (suspense.activeBranch) {                  unmount(suspense.activeBranch, parentComponent, parentSuspense, doRemove);              }              if (suspense.pendingBranch) {                  unmount(suspense.pendingBranch, parentComponent, parentSuspense, doRemove);              }          }      };      return suspense;  }  function hydrateSuspense(node, vnode, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, rendererInternals, hydrateNode) {      /* eslint-disable no-restricted-globals */      const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, node.parentNode, document.createElement('div'), null, isSVG, slotScopeIds, optimized, rendererInternals, true /* hydrating */));      // there are two possible scenarios for server-rendered suspense:      // - success: ssr content should be fully resolved      // - failure: ssr content should be the fallback branch.      // however, on the client we don't really know if it has failed or not      // attempt to hydrate the DOM assuming it has succeeded, but we still      // need to construct a suspense boundary first      const result = hydrateNode(node, (suspense.pendingBranch = vnode.ssContent), parentComponent, suspense, slotScopeIds, optimized);      if (suspense.deps === 0) {          suspense.resolve();      }      return result;      /* eslint-enable no-restricted-globals */  }  function normalizeSuspenseChildren(vnode) {      const { shapeFlag, children } = vnode;      const isSlotChildren = shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */;      vnode.ssContent = normalizeSuspenseSlot(isSlotChildren ? children.default : children);      vnode.ssFallback = isSlotChildren          ? normalizeSuspenseSlot(children.fallback)          : createVNode(Comment);  }  function normalizeSuspenseSlot(s) {      let block;      if (isFunction(s)) {          const trackBlock = isBlockTreeEnabled && s._c;          if (trackBlock) {              // disableTracking: false              // allow block tracking for compiled slots              // (see ./componentRenderContext.ts)              s._d = false;              openBlock();          }          s = s();          if (trackBlock) {              s._d = true;              block = currentBlock;              closeBlock();          }      }      if (isArray(s)) {          const singleChild = filterSingleRoot(s);          if (!singleChild) {              warn$1(`<Suspense> slots expect a single root node.`);          }          s = singleChild;      }      s = normalizeVNode(s);      if (block && !s.dynamicChildren) {          s.dynamicChildren = block.filter(c => c !== s);      }      return s;  }  function queueEffectWithSuspense(fn, suspense) {      if (suspense && suspense.pendingBranch) {          if (isArray(fn)) {              suspense.effects.push(...fn);          }          else {              suspense.effects.push(fn);          }      }      else {          queuePostFlushCb(fn);      }  }  function setActiveBranch(suspense, branch) {      suspense.activeBranch = branch;      const { vnode, parentComponent } = suspense;      const el = (vnode.el = branch.el);      // in case suspense is the root node of a component,      // recursively update the HOC el      if (parentComponent && parentComponent.subTree === vnode) {          parentComponent.vnode.el = el;          updateHOCHostEl(parentComponent, el);      }  }  function provide(key, value) {      if (!currentInstance) {          {              warn$1(`provide() can only be used inside setup().`);          }      }      else {          let provides = currentInstance.provides;          // by default an instance inherits its parent's provides object          // but when it needs to provide values of its own, it creates its          // own provides object using parent provides object as prototype.          // this way in `inject` we can simply look up injections from direct          // parent and let the prototype chain do the work.          const parentProvides = currentInstance.parent && currentInstance.parent.provides;          if (parentProvides === provides) {              provides = currentInstance.provides = Object.create(parentProvides);          }          // TS doesn't allow symbol as index type          provides[key] = value;      }  }  function inject(key, defaultValue, treatDefaultAsFactory = false) {      // fallback to `currentRenderingInstance` so that this can be called in      // a functional component      const instance = currentInstance || currentRenderingInstance;      if (instance) {          // #2400          // to support `app.use` plugins,          // fallback to appContext's `provides` if the instance is at root          const provides = instance.parent == null              ? instance.vnode.appContext && instance.vnode.appContext.provides              : instance.parent.provides;          if (provides && key in provides) {              // TS doesn't allow symbol as index type              return provides[key];          }          else if (arguments.length > 1) {              return treatDefaultAsFactory && isFunction(defaultValue)                  ? defaultValue.call(instance.proxy)                  : defaultValue;          }          else {              warn$1(`injection "${String(key)}" not found.`);          }      }      else {          warn$1(`inject() can only be used inside setup() or functional components.`);      }  }  // Simple effect.  function watchEffect(effect, options) {      return doWatch(effect, null, options);  }  function watchPostEffect(effect, options) {      return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'post' }) ));  }  function watchSyncEffect(effect, options) {      return doWatch(effect, null, (Object.assign(Object.assign({}, options), { flush: 'sync' }) ));  }  // initial value for watchers to trigger on undefined initial values  const INITIAL_WATCHER_VALUE = {};  // implementation  function watch(source, cb, options) {      if (!isFunction(cb)) {          warn$1(`\`watch(fn, options?)\` signature has been moved to a separate API. ` +              `Use \`watchEffect(fn, options?)\` instead. \`watch\` now only ` +              `supports \`watch(source, cb, options?) signature.`);      }      return doWatch(source, cb, options);  }  function doWatch(source, cb, { immediate, deep, flush, onTrack, onTrigger } = EMPTY_OBJ) {      if (!cb) {          if (immediate !== undefined) {              warn$1(`watch() "immediate" option is only respected when using the ` +                  `watch(source, callback, options?) signature.`);          }          if (deep !== undefined) {              warn$1(`watch() "deep" option is only respected when using the ` +                  `watch(source, callback, options?) signature.`);          }      }      const warnInvalidSource = (s) => {          warn$1(`Invalid watch source: `, s, `A watch source can only be a getter/effect function, a ref, ` +              `a reactive object, or an array of these types.`);      };      const instance = currentInstance;      let getter;      let forceTrigger = false;      let isMultiSource = false;      if (isRef(source)) {          getter = () => source.value;          forceTrigger = isShallow(source);      }      else if (isReactive(source)) {          getter = () => source;          deep = true;      }      else if (isArray(source)) {          isMultiSource = true;          forceTrigger = source.some(s => isReactive(s) || isShallow(s));          getter = () => source.map(s => {              if (isRef(s)) {                  return s.value;              }              else if (isReactive(s)) {                  return traverse(s);              }              else if (isFunction(s)) {                  return callWithErrorHandling(s, instance, 2 /* ErrorCodes.WATCH_GETTER */);              }              else {                  warnInvalidSource(s);              }          });      }      else if (isFunction(source)) {          if (cb) {              // getter with cb              getter = () => callWithErrorHandling(source, instance, 2 /* ErrorCodes.WATCH_GETTER */);          }          else {              // no cb -> simple effect              getter = () => {                  if (instance && instance.isUnmounted) {                      return;                  }                  if (cleanup) {                      cleanup();                  }                  return callWithAsyncErrorHandling(source, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [onCleanup]);              };          }      }      else {          getter = NOOP;          warnInvalidSource(source);      }      if (cb && deep) {          const baseGetter = getter;          getter = () => traverse(baseGetter());      }      let cleanup;      let onCleanup = (fn) => {          cleanup = effect.onStop = () => {              callWithErrorHandling(fn, instance, 4 /* ErrorCodes.WATCH_CLEANUP */);          };      };      let oldValue = isMultiSource          ? new Array(source.length).fill(INITIAL_WATCHER_VALUE)          : INITIAL_WATCHER_VALUE;      const job = () => {          if (!effect.active) {              return;          }          if (cb) {              // watch(source, cb)              const newValue = effect.run();              if (deep ||                  forceTrigger ||                  (isMultiSource                      ? newValue.some((v, i) => hasChanged(v, oldValue[i]))                      : hasChanged(newValue, oldValue)) ||                  (false  )) {                  // cleanup before running cb again                  if (cleanup) {                      cleanup();                  }                  callWithAsyncErrorHandling(cb, instance, 3 /* ErrorCodes.WATCH_CALLBACK */, [                      newValue,                      // pass undefined as the old value when it's changed for the first time                      oldValue === INITIAL_WATCHER_VALUE                          ? undefined                          : (isMultiSource && oldValue[0] === INITIAL_WATCHER_VALUE)                              ? []                              : oldValue,                      onCleanup                  ]);                  oldValue = newValue;              }          }          else {              // watchEffect              effect.run();          }      };      // important: mark the job as a watcher callback so that scheduler knows      // it is allowed to self-trigger (#1727)      job.allowRecurse = !!cb;      let scheduler;      if (flush === 'sync') {          scheduler = job; // the scheduler function gets called directly      }      else if (flush === 'post') {          scheduler = () => queuePostRenderEffect(job, instance && instance.suspense);      }      else {          // default: 'pre'          job.pre = true;          if (instance)              job.id = instance.uid;          scheduler = () => queueJob(job);      }      const effect = new ReactiveEffect(getter, scheduler);      {          effect.onTrack = onTrack;          effect.onTrigger = onTrigger;      }      // initial run      if (cb) {          if (immediate) {              job();          }          else {              oldValue = effect.run();          }      }      else if (flush === 'post') {          queuePostRenderEffect(effect.run.bind(effect), instance && instance.suspense);      }      else {          effect.run();      }      const unwatch = () => {          effect.stop();          if (instance && instance.scope) {              remove(instance.scope.effects, effect);          }      };      return unwatch;  }  // this.$watch  function instanceWatch(source, value, options) {      const publicThis = this.proxy;      const getter = isString(source)          ? source.includes('.')              ? createPathGetter(publicThis, source)              : () => publicThis[source]          : source.bind(publicThis, publicThis);      let cb;      if (isFunction(value)) {          cb = value;      }      else {          cb = value.handler;          options = value;      }      const cur = currentInstance;      setCurrentInstance(this);      const res = doWatch(getter, cb.bind(publicThis), options);      if (cur) {          setCurrentInstance(cur);      }      else {          unsetCurrentInstance();      }      return res;  }  function createPathGetter(ctx, path) {      const segments = path.split('.');      return () => {          let cur = ctx;          for (let i = 0; i < segments.length && cur; i++) {              cur = cur[segments[i]];          }          return cur;      };  }  function traverse(value, seen) {      if (!isObject(value) || value["__v_skip" /* ReactiveFlags.SKIP */]) {          return value;      }      seen = seen || new Set();      if (seen.has(value)) {          return value;      }      seen.add(value);      if (isRef(value)) {          traverse(value.value, seen);      }      else if (isArray(value)) {          for (let i = 0; i < value.length; i++) {              traverse(value[i], seen);          }      }      else if (isSet(value) || isMap(value)) {          value.forEach((v) => {              traverse(v, seen);          });      }      else if (isPlainObject(value)) {          for (const key in value) {              traverse(value[key], seen);          }      }      return value;  }  function useTransitionState() {      const state = {          isMounted: false,          isLeaving: false,          isUnmounting: false,          leavingVNodes: new Map()      };      onMounted(() => {          state.isMounted = true;      });      onBeforeUnmount(() => {          state.isUnmounting = true;      });      return state;  }  const TransitionHookValidator = [Function, Array];  const BaseTransitionImpl = {      name: `BaseTransition`,      props: {          mode: String,          appear: Boolean,          persisted: Boolean,          // enter          onBeforeEnter: TransitionHookValidator,          onEnter: TransitionHookValidator,          onAfterEnter: TransitionHookValidator,          onEnterCancelled: TransitionHookValidator,          // leave          onBeforeLeave: TransitionHookValidator,          onLeave: TransitionHookValidator,          onAfterLeave: TransitionHookValidator,          onLeaveCancelled: TransitionHookValidator,          // appear          onBeforeAppear: TransitionHookValidator,          onAppear: TransitionHookValidator,          onAfterAppear: TransitionHookValidator,          onAppearCancelled: TransitionHookValidator      },      setup(props, { slots }) {          const instance = getCurrentInstance();          const state = useTransitionState();          let prevTransitionKey;          return () => {              const children = slots.default && getTransitionRawChildren(slots.default(), true);              if (!children || !children.length) {                  return;              }              let child = children[0];              if (children.length > 1) {                  let hasFound = false;                  // locate first non-comment child                  for (const c of children) {                      if (c.type !== Comment) {                          if (hasFound) {                              // warn more than one non-comment child                              warn$1('<transition> can only be used on a single element or component. ' +                                  'Use <transition-group> for lists.');                              break;                          }                          child = c;                          hasFound = true;                      }                  }              }              // there's no need to track reactivity for these props so use the raw              // props for a bit better perf              const rawProps = toRaw(props);              const { mode } = rawProps;              // check mode              if (mode &&                  mode !== 'in-out' &&                  mode !== 'out-in' &&                  mode !== 'default') {                  warn$1(`invalid <transition> mode: ${mode}`);              }              if (state.isLeaving) {                  return emptyPlaceholder(child);              }              // in the case of <transition><keep-alive/></transition>, we need to              // compare the type of the kept-alive children.              const innerChild = getKeepAliveChild(child);              if (!innerChild) {                  return emptyPlaceholder(child);              }              const enterHooks = resolveTransitionHooks(innerChild, rawProps, state, instance);              setTransitionHooks(innerChild, enterHooks);              const oldChild = instance.subTree;              const oldInnerChild = oldChild && getKeepAliveChild(oldChild);              let transitionKeyChanged = false;              const { getTransitionKey } = innerChild.type;              if (getTransitionKey) {                  const key = getTransitionKey();                  if (prevTransitionKey === undefined) {                      prevTransitionKey = key;                  }                  else if (key !== prevTransitionKey) {                      prevTransitionKey = key;                      transitionKeyChanged = true;                  }              }              // handle mode              if (oldInnerChild &&                  oldInnerChild.type !== Comment &&                  (!isSameVNodeType(innerChild, oldInnerChild) || transitionKeyChanged)) {                  const leavingHooks = resolveTransitionHooks(oldInnerChild, rawProps, state, instance);                  // update old tree's hooks in case of dynamic transition                  setTransitionHooks(oldInnerChild, leavingHooks);                  // switching between different views                  if (mode === 'out-in') {                      state.isLeaving = true;                      // return placeholder node and queue update when leave finishes                      leavingHooks.afterLeave = () => {                          state.isLeaving = false;                          // #6835                          // it also needs to be updated when active is undefined                          if (instance.update.active !== false) {                              instance.update();                          }                      };                      return emptyPlaceholder(child);                  }                  else if (mode === 'in-out' && innerChild.type !== Comment) {                      leavingHooks.delayLeave = (el, earlyRemove, delayedLeave) => {                          const leavingVNodesCache = getLeavingNodesForType(state, oldInnerChild);                          leavingVNodesCache[String(oldInnerChild.key)] = oldInnerChild;                          // early removal callback                          el._leaveCb = () => {                              earlyRemove();                              el._leaveCb = undefined;                              delete enterHooks.delayedLeave;                          };                          enterHooks.delayedLeave = delayedLeave;                      };                  }              }              return child;          };      }  };  // export the public type for h/tsx inference  // also to avoid inline import() in generated d.ts files  const BaseTransition = BaseTransitionImpl;  function getLeavingNodesForType(state, vnode) {      const { leavingVNodes } = state;      let leavingVNodesCache = leavingVNodes.get(vnode.type);      if (!leavingVNodesCache) {          leavingVNodesCache = Object.create(null);          leavingVNodes.set(vnode.type, leavingVNodesCache);      }      return leavingVNodesCache;  }  // The transition hooks are attached to the vnode as vnode.transition  // and will be called at appropriate timing in the renderer.  function resolveTransitionHooks(vnode, props, state, instance) {      const { appear, mode, persisted = false, onBeforeEnter, onEnter, onAfterEnter, onEnterCancelled, onBeforeLeave, onLeave, onAfterLeave, onLeaveCancelled, onBeforeAppear, onAppear, onAfterAppear, onAppearCancelled } = props;      const key = String(vnode.key);      const leavingVNodesCache = getLeavingNodesForType(state, vnode);      const callHook = (hook, args) => {          hook &&              callWithAsyncErrorHandling(hook, instance, 9 /* ErrorCodes.TRANSITION_HOOK */, args);      };      const callAsyncHook = (hook, args) => {          const done = args[1];          callHook(hook, args);          if (isArray(hook)) {              if (hook.every(hook => hook.length <= 1))                  done();          }          else if (hook.length <= 1) {              done();          }      };      const hooks = {          mode,          persisted,          beforeEnter(el) {              let hook = onBeforeEnter;              if (!state.isMounted) {                  if (appear) {                      hook = onBeforeAppear || onBeforeEnter;                  }                  else {                      return;                  }              }              // for same element (v-show)              if (el._leaveCb) {                  el._leaveCb(true /* cancelled */);              }              // for toggled element with same key (v-if)              const leavingVNode = leavingVNodesCache[key];              if (leavingVNode &&                  isSameVNodeType(vnode, leavingVNode) &&                  leavingVNode.el._leaveCb) {                  // force early removal (not cancelled)                  leavingVNode.el._leaveCb();              }              callHook(hook, [el]);          },          enter(el) {              let hook = onEnter;              let afterHook = onAfterEnter;              let cancelHook = onEnterCancelled;              if (!state.isMounted) {                  if (appear) {                      hook = onAppear || onEnter;                      afterHook = onAfterAppear || onAfterEnter;                      cancelHook = onAppearCancelled || onEnterCancelled;                  }                  else {                      return;                  }              }              let called = false;              const done = (el._enterCb = (cancelled) => {                  if (called)                      return;                  called = true;                  if (cancelled) {                      callHook(cancelHook, [el]);                  }                  else {                      callHook(afterHook, [el]);                  }                  if (hooks.delayedLeave) {                      hooks.delayedLeave();                  }                  el._enterCb = undefined;              });              if (hook) {                  callAsyncHook(hook, [el, done]);              }              else {                  done();              }          },          leave(el, remove) {              const key = String(vnode.key);              if (el._enterCb) {                  el._enterCb(true /* cancelled */);              }              if (state.isUnmounting) {                  return remove();              }              callHook(onBeforeLeave, [el]);              let called = false;              const done = (el._leaveCb = (cancelled) => {                  if (called)                      return;                  called = true;                  remove();                  if (cancelled) {                      callHook(onLeaveCancelled, [el]);                  }                  else {                      callHook(onAfterLeave, [el]);                  }                  el._leaveCb = undefined;                  if (leavingVNodesCache[key] === vnode) {                      delete leavingVNodesCache[key];                  }              });              leavingVNodesCache[key] = vnode;              if (onLeave) {                  callAsyncHook(onLeave, [el, done]);              }              else {                  done();              }          },          clone(vnode) {              return resolveTransitionHooks(vnode, props, state, instance);          }      };      return hooks;  }  // the placeholder really only handles one special case: KeepAlive  // in the case of a KeepAlive in a leave phase we need to return a KeepAlive  // placeholder with empty content to avoid the KeepAlive instance from being  // unmounted.  function emptyPlaceholder(vnode) {      if (isKeepAlive(vnode)) {          vnode = cloneVNode(vnode);          vnode.children = null;          return vnode;      }  }  function getKeepAliveChild(vnode) {      return isKeepAlive(vnode)          ? vnode.children              ? vnode.children[0]              : undefined          : vnode;  }  function setTransitionHooks(vnode, hooks) {      if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */ && vnode.component) {          setTransitionHooks(vnode.component.subTree, hooks);      }      else if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {          vnode.ssContent.transition = hooks.clone(vnode.ssContent);          vnode.ssFallback.transition = hooks.clone(vnode.ssFallback);      }      else {          vnode.transition = hooks;      }  }  function getTransitionRawChildren(children, keepComment = false, parentKey) {      let ret = [];      let keyedFragmentCount = 0;      for (let i = 0; i < children.length; i++) {          let child = children[i];          // #5360 inherit parent key in case of <template v-for>          const key = parentKey == null              ? child.key              : String(parentKey) + String(child.key != null ? child.key : i);          // handle fragment children case, e.g. v-for          if (child.type === Fragment) {              if (child.patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */)                  keyedFragmentCount++;              ret = ret.concat(getTransitionRawChildren(child.children, keepComment, key));          }          // comment placeholders should be skipped, e.g. v-if          else if (keepComment || child.type !== Comment) {              ret.push(key != null ? cloneVNode(child, { key }) : child);          }      }      // #1126 if a transition children list contains multiple sub fragments, these      // fragments will be merged into a flat children array. Since each v-for      // fragment may contain different static bindings inside, we need to de-op      // these children to force full diffs to ensure correct behavior.      if (keyedFragmentCount > 1) {          for (let i = 0; i < ret.length; i++) {              ret[i].patchFlag = -2 /* PatchFlags.BAIL */;          }      }      return ret;  }  // implementation, close to no-op  function defineComponent(options) {      return isFunction(options) ? { setup: options, name: options.name } : options;  }  const isAsyncWrapper = (i) => !!i.type.__asyncLoader;  function defineAsyncComponent(source) {      if (isFunction(source)) {          source = { loader: source };      }      const { loader, loadingComponent, errorComponent, delay = 200, timeout, // undefined = never times out      suspensible = true, onError: userOnError } = source;      let pendingRequest = null;      let resolvedComp;      let retries = 0;      const retry = () => {          retries++;          pendingRequest = null;          return load();      };      const load = () => {          let thisRequest;          return (pendingRequest ||              (thisRequest = pendingRequest =                  loader()                      .catch(err => {                      err = err instanceof Error ? err : new Error(String(err));                      if (userOnError) {                          return new Promise((resolve, reject) => {                              const userRetry = () => resolve(retry());                              const userFail = () => reject(err);                              userOnError(err, userRetry, userFail, retries + 1);                          });                      }                      else {                          throw err;                      }                  })                      .then((comp) => {                      if (thisRequest !== pendingRequest && pendingRequest) {                          return pendingRequest;                      }                      if (!comp) {                          warn$1(`Async component loader resolved to undefined. ` +                              `If you are using retry(), make sure to return its return value.`);                      }                      // interop module default                      if (comp &&                          (comp.__esModule || comp[Symbol.toStringTag] === 'Module')) {                          comp = comp.default;                      }                      if (comp && !isObject(comp) && !isFunction(comp)) {                          throw new Error(`Invalid async component load result: ${comp}`);                      }                      resolvedComp = comp;                      return comp;                  })));      };      return defineComponent({          name: 'AsyncComponentWrapper',          __asyncLoader: load,          get __asyncResolved() {              return resolvedComp;          },          setup() {              const instance = currentInstance;              // already resolved              if (resolvedComp) {                  return () => createInnerComp(resolvedComp, instance);              }              const onError = (err) => {                  pendingRequest = null;                  handleError(err, instance, 13 /* ErrorCodes.ASYNC_COMPONENT_LOADER */, !errorComponent /* do not throw in dev if user provided error component */);              };              // suspense-controlled or SSR.              if ((suspensible && instance.suspense) ||                  (false )) {                  return load()                      .then(comp => {                      return () => createInnerComp(comp, instance);                  })                      .catch(err => {                      onError(err);                      return () => errorComponent                          ? createVNode(errorComponent, {                              error: err                          })                          : null;                  });              }              const loaded = ref(false);              const error = ref();              const delayed = ref(!!delay);              if (delay) {                  setTimeout(() => {                      delayed.value = false;                  }, delay);              }              if (timeout != null) {                  setTimeout(() => {                      if (!loaded.value && !error.value) {                          const err = new Error(`Async component timed out after ${timeout}ms.`);                          onError(err);                          error.value = err;                      }                  }, timeout);              }              load()                  .then(() => {                  loaded.value = true;                  if (instance.parent && isKeepAlive(instance.parent.vnode)) {                      // parent is keep-alive, force update so the loaded component's                      // name is taken into account                      queueJob(instance.parent.update);                  }              })                  .catch(err => {                  onError(err);                  error.value = err;              });              return () => {                  if (loaded.value && resolvedComp) {                      return createInnerComp(resolvedComp, instance);                  }                  else if (error.value && errorComponent) {                      return createVNode(errorComponent, {                          error: error.value                      });                  }                  else if (loadingComponent && !delayed.value) {                      return createVNode(loadingComponent);                  }              };          }      });  }  function createInnerComp(comp, parent) {      const { ref, props, children, ce } = parent.vnode;      const vnode = createVNode(comp, props, children);      // ensure inner component inherits the async wrapper's ref owner      vnode.ref = ref;      // pass the custom element callback on to the inner comp      // and remove it from the async wrapper      vnode.ce = ce;      delete parent.vnode.ce;      return vnode;  }  const isKeepAlive = (vnode) => vnode.type.__isKeepAlive;  const KeepAliveImpl = {      name: `KeepAlive`,      // Marker for special handling inside the renderer. We are not using a ===      // check directly on KeepAlive in the renderer, because importing it directly      // would prevent it from being tree-shaken.      __isKeepAlive: true,      props: {          include: [String, RegExp, Array],          exclude: [String, RegExp, Array],          max: [String, Number]      },      setup(props, { slots }) {          const instance = getCurrentInstance();          // KeepAlive communicates with the instantiated renderer via the          // ctx where the renderer passes in its internals,          // and the KeepAlive instance exposes activate/deactivate implementations.          // The whole point of this is to avoid importing KeepAlive directly in the          // renderer to facilitate tree-shaking.          const sharedContext = instance.ctx;          const cache = new Map();          const keys = new Set();          let current = null;          {              instance.__v_cache = cache;          }          const parentSuspense = instance.suspense;          const { renderer: { p: patch, m: move, um: _unmount, o: { createElement } } } = sharedContext;          const storageContainer = createElement('div');          sharedContext.activate = (vnode, container, anchor, isSVG, optimized) => {              const instance = vnode.component;              move(vnode, container, anchor, 0 /* MoveType.ENTER */, parentSuspense);              // in case props have changed              patch(instance.vnode, vnode, container, anchor, instance, parentSuspense, isSVG, vnode.slotScopeIds, optimized);              queuePostRenderEffect(() => {                  instance.isDeactivated = false;                  if (instance.a) {                      invokeArrayFns(instance.a);                  }                  const vnodeHook = vnode.props && vnode.props.onVnodeMounted;                  if (vnodeHook) {                      invokeVNodeHook(vnodeHook, instance.parent, vnode);                  }              }, parentSuspense);              {                  // Update components tree                  devtoolsComponentAdded(instance);              }          };          sharedContext.deactivate = (vnode) => {              const instance = vnode.component;              move(vnode, storageContainer, null, 1 /* MoveType.LEAVE */, parentSuspense);              queuePostRenderEffect(() => {                  if (instance.da) {                      invokeArrayFns(instance.da);                  }                  const vnodeHook = vnode.props && vnode.props.onVnodeUnmounted;                  if (vnodeHook) {                      invokeVNodeHook(vnodeHook, instance.parent, vnode);                  }                  instance.isDeactivated = true;              }, parentSuspense);              {                  // Update components tree                  devtoolsComponentAdded(instance);              }          };          function unmount(vnode) {              // reset the shapeFlag so it can be properly unmounted              resetShapeFlag(vnode);              _unmount(vnode, instance, parentSuspense, true);          }          function pruneCache(filter) {              cache.forEach((vnode, key) => {                  const name = getComponentName(vnode.type);                  if (name && (!filter || !filter(name))) {                      pruneCacheEntry(key);                  }              });          }          function pruneCacheEntry(key) {              const cached = cache.get(key);              if (!current || cached.type !== current.type) {                  unmount(cached);              }              else if (current) {                  // current active instance should no longer be kept-alive.                  // we can't unmount it now but it might be later, so reset its flag now.                  resetShapeFlag(current);              }              cache.delete(key);              keys.delete(key);          }          // prune cache on include/exclude prop change          watch(() => [props.include, props.exclude], ([include, exclude]) => {              include && pruneCache(name => matches(include, name));              exclude && pruneCache(name => !matches(exclude, name));          },           // prune post-render after `current` has been updated          { flush: 'post', deep: true });          // cache sub tree after render          let pendingCacheKey = null;          const cacheSubtree = () => {              // fix #1621, the pendingCacheKey could be 0              if (pendingCacheKey != null) {                  cache.set(pendingCacheKey, getInnerChild(instance.subTree));              }          };          onMounted(cacheSubtree);          onUpdated(cacheSubtree);          onBeforeUnmount(() => {              cache.forEach(cached => {                  const { subTree, suspense } = instance;                  const vnode = getInnerChild(subTree);                  if (cached.type === vnode.type) {                      // current instance will be unmounted as part of keep-alive's unmount                      resetShapeFlag(vnode);                      // but invoke its deactivated hook here                      const da = vnode.component.da;                      da && queuePostRenderEffect(da, suspense);                      return;                  }                  unmount(cached);              });          });          return () => {              pendingCacheKey = null;              if (!slots.default) {                  return null;              }              const children = slots.default();              const rawVNode = children[0];              if (children.length > 1) {                  {                      warn$1(`KeepAlive should contain exactly one component child.`);                  }                  current = null;                  return children;              }              else if (!isVNode(rawVNode) ||                  (!(rawVNode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */) &&                      !(rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */))) {                  current = null;                  return rawVNode;              }              let vnode = getInnerChild(rawVNode);              const comp = vnode.type;              // for async components, name check should be based in its loaded              // inner component if available              const name = getComponentName(isAsyncWrapper(vnode)                  ? vnode.type.__asyncResolved || {}                  : comp);              const { include, exclude, max } = props;              if ((include && (!name || !matches(include, name))) ||                  (exclude && name && matches(exclude, name))) {                  current = vnode;                  return rawVNode;              }              const key = vnode.key == null ? comp : vnode.key;              const cachedVNode = cache.get(key);              // clone vnode if it's reused because we are going to mutate it              if (vnode.el) {                  vnode = cloneVNode(vnode);                  if (rawVNode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {                      rawVNode.ssContent = vnode;                  }              }              // #1513 it's possible for the returned vnode to be cloned due to attr              // fallthrough or scopeId, so the vnode here may not be the final vnode              // that is mounted. Instead of caching it directly, we store the pending              // key and cache `instance.subTree` (the normalized vnode) in              // beforeMount/beforeUpdate hooks.              pendingCacheKey = key;              if (cachedVNode) {                  // copy over mounted state                  vnode.el = cachedVNode.el;                  vnode.component = cachedVNode.component;                  if (vnode.transition) {                      // recursively update transition hooks on subTree                      setTransitionHooks(vnode, vnode.transition);                  }                  // avoid vnode being mounted as fresh                  vnode.shapeFlag |= 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;                  // make this key the freshest                  keys.delete(key);                  keys.add(key);              }              else {                  keys.add(key);                  // prune oldest entry                  if (max && keys.size > parseInt(max, 10)) {                      pruneCacheEntry(keys.values().next().value);                  }              }              // avoid vnode being unmounted              vnode.shapeFlag |= 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;              current = vnode;              return isSuspense(rawVNode.type) ? rawVNode : vnode;          };      }  };  // export the public type for h/tsx inference  // also to avoid inline import() in generated d.ts files  const KeepAlive = KeepAliveImpl;  function matches(pattern, name) {      if (isArray(pattern)) {          return pattern.some((p) => matches(p, name));      }      else if (isString(pattern)) {          return pattern.split(',').includes(name);      }      else if (pattern.test) {          return pattern.test(name);      }      /* istanbul ignore next */      return false;  }  function onActivated(hook, target) {      registerKeepAliveHook(hook, "a" /* LifecycleHooks.ACTIVATED */, target);  }  function onDeactivated(hook, target) {      registerKeepAliveHook(hook, "da" /* LifecycleHooks.DEACTIVATED */, target);  }  function registerKeepAliveHook(hook, type, target = currentInstance) {      // cache the deactivate branch check wrapper for injected hooks so the same      // hook can be properly deduped by the scheduler. "__wdc" stands for "with      // deactivation check".      const wrappedHook = hook.__wdc ||          (hook.__wdc = () => {              // only fire the hook if the target instance is NOT in a deactivated branch.              let current = target;              while (current) {                  if (current.isDeactivated) {                      return;                  }                  current = current.parent;              }              return hook();          });      injectHook(type, wrappedHook, target);      // In addition to registering it on the target instance, we walk up the parent      // chain and register it on all ancestor instances that are keep-alive roots.      // This avoids the need to walk the entire component tree when invoking these      // hooks, and more importantly, avoids the need to track child components in      // arrays.      if (target) {          let current = target.parent;          while (current && current.parent) {              if (isKeepAlive(current.parent.vnode)) {                  injectToKeepAliveRoot(wrappedHook, type, target, current);              }              current = current.parent;          }      }  }  function injectToKeepAliveRoot(hook, type, target, keepAliveRoot) {      // injectHook wraps the original for error handling, so make sure to remove      // the wrapped version.      const injected = injectHook(type, hook, keepAliveRoot, true /* prepend */);      onUnmounted(() => {          remove(keepAliveRoot[type], injected);      }, target);  }  function resetShapeFlag(vnode) {      // bitwise operations to remove keep alive flags      vnode.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;      vnode.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;  }  function getInnerChild(vnode) {      return vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */ ? vnode.ssContent : vnode;  }  function injectHook(type, hook, target = currentInstance, prepend = false) {      if (target) {          const hooks = target[type] || (target[type] = []);          // cache the error handling wrapper for injected hooks so the same hook          // can be properly deduped by the scheduler. "__weh" stands for "with error          // handling".          const wrappedHook = hook.__weh ||              (hook.__weh = (...args) => {                  if (target.isUnmounted) {                      return;                  }                  // disable tracking inside all lifecycle hooks                  // since they can potentially be called inside effects.                  pauseTracking();                  // Set currentInstance during hook invocation.                  // This assumes the hook does not synchronously trigger other hooks, which                  // can only be false when the user does something really funky.                  setCurrentInstance(target);                  const res = callWithAsyncErrorHandling(hook, target, type, args);                  unsetCurrentInstance();                  resetTracking();                  return res;              });          if (prepend) {              hooks.unshift(wrappedHook);          }          else {              hooks.push(wrappedHook);          }          return wrappedHook;      }      else {          const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, ''));          warn$1(`${apiName} is called when there is no active component instance to be ` +              `associated with. ` +              `Lifecycle injection APIs can only be used during execution of setup().` +              (` If you are using async setup(), make sure to register lifecycle ` +                      `hooks before the first await statement.`                  ));      }  }  const createHook = (lifecycle) => (hook, target = currentInstance) =>   // post-create lifecycle registrations are noops during SSR (except for serverPrefetch)  (!isInSSRComponentSetup || lifecycle === "sp" /* LifecycleHooks.SERVER_PREFETCH */) &&      injectHook(lifecycle, (...args) => hook(...args), target);  const onBeforeMount = createHook("bm" /* LifecycleHooks.BEFORE_MOUNT */);  const onMounted = createHook("m" /* LifecycleHooks.MOUNTED */);  const onBeforeUpdate = createHook("bu" /* LifecycleHooks.BEFORE_UPDATE */);  const onUpdated = createHook("u" /* LifecycleHooks.UPDATED */);  const onBeforeUnmount = createHook("bum" /* LifecycleHooks.BEFORE_UNMOUNT */);  const onUnmounted = createHook("um" /* LifecycleHooks.UNMOUNTED */);  const onServerPrefetch = createHook("sp" /* LifecycleHooks.SERVER_PREFETCH */);  const onRenderTriggered = createHook("rtg" /* LifecycleHooks.RENDER_TRIGGERED */);  const onRenderTracked = createHook("rtc" /* LifecycleHooks.RENDER_TRACKED */);  function onErrorCaptured(hook, target = currentInstance) {      injectHook("ec" /* LifecycleHooks.ERROR_CAPTURED */, hook, target);  }  /**  Runtime helper for applying directives to a vnode. Example usage:  const comp = resolveComponent('comp')  const foo = resolveDirective('foo')  const bar = resolveDirective('bar')  return withDirectives(h(comp), [    [foo, this.x],    [bar, this.y]  ])  */  function validateDirectiveName(name) {      if (isBuiltInDirective(name)) {          warn$1('Do not use built-in directive ids as custom directive id: ' + name);      }  }  /**   * Adds directives to a VNode.   */  function withDirectives(vnode, directives) {      const internalInstance = currentRenderingInstance;      if (internalInstance === null) {          warn$1(`withDirectives can only be used inside render functions.`);          return vnode;      }      const instance = getExposeProxy(internalInstance) ||          internalInstance.proxy;      const bindings = vnode.dirs || (vnode.dirs = []);      for (let i = 0; i < directives.length; i++) {          let [dir, value, arg, modifiers = EMPTY_OBJ] = directives[i];          if (dir) {              if (isFunction(dir)) {                  dir = {                      mounted: dir,                      updated: dir                  };              }              if (dir.deep) {                  traverse(value);              }              bindings.push({                  dir,                  instance,                  value,                  oldValue: void 0,                  arg,                  modifiers              });          }      }      return vnode;  }  function invokeDirectiveHook(vnode, prevVNode, instance, name) {      const bindings = vnode.dirs;      const oldBindings = prevVNode && prevVNode.dirs;      for (let i = 0; i < bindings.length; i++) {          const binding = bindings[i];          if (oldBindings) {              binding.oldValue = oldBindings[i].value;          }          let hook = binding.dir[name];          if (hook) {              // disable tracking inside all lifecycle hooks              // since they can potentially be called inside effects.              pauseTracking();              callWithAsyncErrorHandling(hook, instance, 8 /* ErrorCodes.DIRECTIVE_HOOK */, [                  vnode.el,                  binding,                  vnode,                  prevVNode              ]);              resetTracking();          }      }  }  const COMPONENTS = 'components';  const DIRECTIVES = 'directives';  /**   * @private   */  function resolveComponent(name, maybeSelfReference) {      return resolveAsset(COMPONENTS, name, true, maybeSelfReference) || name;  }  const NULL_DYNAMIC_COMPONENT = Symbol();  /**   * @private   */  function resolveDynamicComponent(component) {      if (isString(component)) {          return resolveAsset(COMPONENTS, component, false) || component;      }      else {          // invalid types will fallthrough to createVNode and raise warning          return (component || NULL_DYNAMIC_COMPONENT);      }  }  /**   * @private   */  function resolveDirective(name) {      return resolveAsset(DIRECTIVES, name);  }  // implementation  function resolveAsset(type, name, warnMissing = true, maybeSelfReference = false) {      const instance = currentRenderingInstance || currentInstance;      if (instance) {          const Component = instance.type;          // explicit self name has highest priority          if (type === COMPONENTS) {              const selfName = getComponentName(Component, false /* do not include inferred name to avoid breaking existing code */);              if (selfName &&                  (selfName === name ||                      selfName === camelize(name) ||                      selfName === capitalize(camelize(name)))) {                  return Component;              }          }          const res =           // local registration          // check instance[type] first which is resolved for options API          resolve(instance[type] || Component[type], name) ||              // global registration              resolve(instance.appContext[type], name);          if (!res && maybeSelfReference) {              // fallback to implicit self-reference              return Component;          }          if (warnMissing && !res) {              const extra = type === COMPONENTS                  ? `\nIf this is a native custom element, make sure to exclude it from ` +                      `component resolution via compilerOptions.isCustomElement.`                  : ``;              warn$1(`Failed to resolve ${type.slice(0, -1)}: ${name}${extra}`);          }          return res;      }      else {          warn$1(`resolve${capitalize(type.slice(0, -1))} ` +              `can only be used in render() or setup().`);      }  }  function resolve(registry, name) {      return (registry &&          (registry[name] ||              registry[camelize(name)] ||              registry[capitalize(camelize(name))]));  }  /**   * Actual implementation   */  function renderList(source, renderItem, cache, index) {      let ret;      const cached = (cache && cache[index]);      if (isArray(source) || isString(source)) {          ret = new Array(source.length);          for (let i = 0, l = source.length; i < l; i++) {              ret[i] = renderItem(source[i], i, undefined, cached && cached[i]);          }      }      else if (typeof source === 'number') {          if (!Number.isInteger(source)) {              warn$1(`The v-for range expect an integer value but got ${source}.`);          }          ret = new Array(source);          for (let i = 0; i < source; i++) {              ret[i] = renderItem(i + 1, i, undefined, cached && cached[i]);          }      }      else if (isObject(source)) {          if (source[Symbol.iterator]) {              ret = Array.from(source, (item, i) => renderItem(item, i, undefined, cached && cached[i]));          }          else {              const keys = Object.keys(source);              ret = new Array(keys.length);              for (let i = 0, l = keys.length; i < l; i++) {                  const key = keys[i];                  ret[i] = renderItem(source[key], key, i, cached && cached[i]);              }          }      }      else {          ret = [];      }      if (cache) {          cache[index] = ret;      }      return ret;  }  /**   * Compiler runtime helper for creating dynamic slots object   * @private   */  function createSlots(slots, dynamicSlots) {      for (let i = 0; i < dynamicSlots.length; i++) {          const slot = dynamicSlots[i];          // array of dynamic slot generated by <template v-for="..." #[...]>          if (isArray(slot)) {              for (let j = 0; j < slot.length; j++) {                  slots[slot[j].name] = slot[j].fn;              }          }          else if (slot) {              // conditional single slot generated by <template v-if="..." #foo>              slots[slot.name] = slot.key                  ? (...args) => {                      const res = slot.fn(...args);                      // attach branch key so each conditional branch is considered a                      // different fragment                      if (res)                          res.key = slot.key;                      return res;                  }                  : slot.fn;          }      }      return slots;  }  /**   * Compiler runtime helper for rendering `<slot/>`   * @private   */  function renderSlot(slots, name, props = {},   // this is not a user-facing function, so the fallback is always generated by  // the compiler and guaranteed to be a function returning an array  fallback, noSlotted) {      if (currentRenderingInstance.isCE ||          (currentRenderingInstance.parent &&              isAsyncWrapper(currentRenderingInstance.parent) &&              currentRenderingInstance.parent.isCE)) {          if (name !== 'default')              props.name = name;          return createVNode('slot', props, fallback && fallback());      }      let slot = slots[name];      if (slot && slot.length > 1) {          warn$1(`SSR-optimized slot function detected in a non-SSR-optimized render ` +              `function. You need to mark this component with $dynamic-slots in the ` +              `parent template.`);          slot = () => [];      }      // a compiled slot disables block tracking by default to avoid manual      // invocation interfering with template-based block tracking, but in      // `renderSlot` we can be sure that it's template-based so we can force      // enable it.      if (slot && slot._c) {          slot._d = false;      }      openBlock();      const validSlotContent = slot && ensureValidVNode(slot(props));      const rendered = createBlock(Fragment, {          key: props.key ||              // slot content array of a dynamic conditional slot may have a branch              // key attached in the `createSlots` helper, respect that              (validSlotContent && validSlotContent.key) ||              `_${name}`      }, validSlotContent || (fallback ? fallback() : []), validSlotContent && slots._ === 1 /* SlotFlags.STABLE */          ? 64 /* PatchFlags.STABLE_FRAGMENT */          : -2 /* PatchFlags.BAIL */);      if (!noSlotted && rendered.scopeId) {          rendered.slotScopeIds = [rendered.scopeId + '-s'];      }      if (slot && slot._c) {          slot._d = true;      }      return rendered;  }  function ensureValidVNode(vnodes) {      return vnodes.some(child => {          if (!isVNode(child))              return true;          if (child.type === Comment)              return false;          if (child.type === Fragment &&              !ensureValidVNode(child.children))              return false;          return true;      })          ? vnodes          : null;  }  /**   * For prefixing keys in v-on="obj" with "on"   * @private   */  function toHandlers(obj, preserveCaseIfNecessary) {      const ret = {};      if (!isObject(obj)) {          warn$1(`v-on with no argument expects an object value.`);          return ret;      }      for (const key in obj) {          ret[preserveCaseIfNecessary && /[A-Z]/.test(key)              ? `on:${key}`              : toHandlerKey(key)] = obj[key];      }      return ret;  }  /**   * #2437 In Vue 3, functional components do not have a public instance proxy but   * they exist in the internal parent chain. For code that relies on traversing   * public $parent chains, skip functional ones and go to the parent instead.   */  const getPublicInstance = (i) => {      if (!i)          return null;      if (isStatefulComponent(i))          return getExposeProxy(i) || i.proxy;      return getPublicInstance(i.parent);  };  const publicPropertiesMap =   // Move PURE marker to new line to workaround compiler discarding it  // due to type annotation  /*#__PURE__*/ extend(Object.create(null), {      $: i => i,      $el: i => i.vnode.el,      $data: i => i.data,      $props: i => (shallowReadonly(i.props) ),      $attrs: i => (shallowReadonly(i.attrs) ),      $slots: i => (shallowReadonly(i.slots) ),      $refs: i => (shallowReadonly(i.refs) ),      $parent: i => getPublicInstance(i.parent),      $root: i => getPublicInstance(i.root),      $emit: i => i.emit,      $options: i => (resolveMergedOptions(i) ),      $forceUpdate: i => i.f || (i.f = () => queueJob(i.update)),      $nextTick: i => i.n || (i.n = nextTick.bind(i.proxy)),      $watch: i => (instanceWatch.bind(i) )  });  const isReservedPrefix = (key) => key === '_' || key === '$';  const hasSetupBinding = (state, key) => state !== EMPTY_OBJ && !state.__isScriptSetup && hasOwn(state, key);  const PublicInstanceProxyHandlers = {      get({ _: instance }, key) {          const { ctx, setupState, data, props, accessCache, type, appContext } = instance;          // for internal formatters to know that this is a Vue instance          if (key === '__isVue') {              return true;          }          // data / props / ctx          // This getter gets called for every property access on the render context          // during render and is a major hotspot. The most expensive part of this          // is the multiple hasOwn() calls. It's much faster to do a simple property          // access on a plain object, so we use an accessCache object (with null          // prototype) to memoize what access type a key corresponds to.          let normalizedProps;          if (key[0] !== '$') {              const n = accessCache[key];              if (n !== undefined) {                  switch (n) {                      case 1 /* AccessTypes.SETUP */:                          return setupState[key];                      case 2 /* AccessTypes.DATA */:                          return data[key];                      case 4 /* AccessTypes.CONTEXT */:                          return ctx[key];                      case 3 /* AccessTypes.PROPS */:                          return props[key];                      // default: just fallthrough                  }              }              else if (hasSetupBinding(setupState, key)) {                  accessCache[key] = 1 /* AccessTypes.SETUP */;                  return setupState[key];              }              else if (data !== EMPTY_OBJ && hasOwn(data, key)) {                  accessCache[key] = 2 /* AccessTypes.DATA */;                  return data[key];              }              else if (              // only cache other properties when instance has declared (thus stable)              // props              (normalizedProps = instance.propsOptions[0]) &&                  hasOwn(normalizedProps, key)) {                  accessCache[key] = 3 /* AccessTypes.PROPS */;                  return props[key];              }              else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {                  accessCache[key] = 4 /* AccessTypes.CONTEXT */;                  return ctx[key];              }              else if (shouldCacheAccess) {                  accessCache[key] = 0 /* AccessTypes.OTHER */;              }          }          const publicGetter = publicPropertiesMap[key];          let cssModule, globalProperties;          // public $xxx properties          if (publicGetter) {              if (key === '$attrs') {                  track(instance, "get" /* TrackOpTypes.GET */, key);                  markAttrsAccessed();              }              return publicGetter(instance);          }          else if (          // css module (injected by vue-loader)          (cssModule = type.__cssModules) &&              (cssModule = cssModule[key])) {              return cssModule;          }          else if (ctx !== EMPTY_OBJ && hasOwn(ctx, key)) {              // user may set custom properties to `this` that start with `$`              accessCache[key] = 4 /* AccessTypes.CONTEXT */;              return ctx[key];          }          else if (          // global properties          ((globalProperties = appContext.config.globalProperties),              hasOwn(globalProperties, key))) {              {                  return globalProperties[key];              }          }          else if (currentRenderingInstance &&              (!isString(key) ||                  // #1091 avoid internal isRef/isVNode checks on component instance leading                  // to infinite warning loop                  key.indexOf('__v') !== 0)) {              if (data !== EMPTY_OBJ && isReservedPrefix(key[0]) && hasOwn(data, key)) {                  warn$1(`Property ${JSON.stringify(key)} must be accessed via $data because it starts with a reserved ` +                      `character ("$" or "_") and is not proxied on the render context.`);              }              else if (instance === currentRenderingInstance) {                  warn$1(`Property ${JSON.stringify(key)} was accessed during render ` +                      `but is not defined on instance.`);              }          }      },      set({ _: instance }, key, value) {          const { data, setupState, ctx } = instance;          if (hasSetupBinding(setupState, key)) {              setupState[key] = value;              return true;          }          else if (setupState.__isScriptSetup &&              hasOwn(setupState, key)) {              warn$1(`Cannot mutate <script setup> binding "${key}" from Options API.`);              return false;          }          else if (data !== EMPTY_OBJ && hasOwn(data, key)) {              data[key] = value;              return true;          }          else if (hasOwn(instance.props, key)) {              warn$1(`Attempting to mutate prop "${key}". Props are readonly.`);              return false;          }          if (key[0] === '$' && key.slice(1) in instance) {              warn$1(`Attempting to mutate public property "${key}". ` +                      `Properties starting with $ are reserved and readonly.`);              return false;          }          else {              if (key in instance.appContext.config.globalProperties) {                  Object.defineProperty(ctx, key, {                      enumerable: true,                      configurable: true,                      value                  });              }              else {                  ctx[key] = value;              }          }          return true;      },      has({ _: { data, setupState, accessCache, ctx, appContext, propsOptions } }, key) {          let normalizedProps;          return (!!accessCache[key] ||              (data !== EMPTY_OBJ && hasOwn(data, key)) ||              hasSetupBinding(setupState, key) ||              ((normalizedProps = propsOptions[0]) && hasOwn(normalizedProps, key)) ||              hasOwn(ctx, key) ||              hasOwn(publicPropertiesMap, key) ||              hasOwn(appContext.config.globalProperties, key));      },      defineProperty(target, key, descriptor) {          if (descriptor.get != null) {              // invalidate key cache of a getter based property #5417              target._.accessCache[key] = 0;          }          else if (hasOwn(descriptor, 'value')) {              this.set(target, key, descriptor.value, null);          }          return Reflect.defineProperty(target, key, descriptor);      }  };  {      PublicInstanceProxyHandlers.ownKeys = (target) => {          warn$1(`Avoid app logic that relies on enumerating keys on a component instance. ` +              `The keys will be empty in production mode to avoid performance overhead.`);          return Reflect.ownKeys(target);      };  }  const RuntimeCompiledPublicInstanceProxyHandlers = /*#__PURE__*/ extend({}, PublicInstanceProxyHandlers, {      get(target, key) {          // fast path for unscopables when using `with` block          if (key === Symbol.unscopables) {              return;          }          return PublicInstanceProxyHandlers.get(target, key, target);      },      has(_, key) {          const has = key[0] !== '_' && !isGloballyWhitelisted(key);          if (!has && PublicInstanceProxyHandlers.has(_, key)) {              warn$1(`Property ${JSON.stringify(key)} should not start with _ which is a reserved prefix for Vue internals.`);          }          return has;      }  });  // dev only  // In dev mode, the proxy target exposes the same properties as seen on `this`  // for easier console inspection. In prod mode it will be an empty object so  // these properties definitions can be skipped.  function createDevRenderContext(instance) {      const target = {};      // expose internal instance for proxy handlers      Object.defineProperty(target, `_`, {          configurable: true,          enumerable: false,          get: () => instance      });      // expose public properties      Object.keys(publicPropertiesMap).forEach(key => {          Object.defineProperty(target, key, {              configurable: true,              enumerable: false,              get: () => publicPropertiesMap[key](instance),              // intercepted by the proxy so no need for implementation,              // but needed to prevent set errors              set: NOOP          });      });      return target;  }  // dev only  function exposePropsOnRenderContext(instance) {      const { ctx, propsOptions: [propsOptions] } = instance;      if (propsOptions) {          Object.keys(propsOptions).forEach(key => {              Object.defineProperty(ctx, key, {                  enumerable: true,                  configurable: true,                  get: () => instance.props[key],                  set: NOOP              });          });      }  }  // dev only  function exposeSetupStateOnRenderContext(instance) {      const { ctx, setupState } = instance;      Object.keys(toRaw(setupState)).forEach(key => {          if (!setupState.__isScriptSetup) {              if (isReservedPrefix(key[0])) {                  warn$1(`setup() return property ${JSON.stringify(key)} should not start with "$" or "_" ` +                      `which are reserved prefixes for Vue internals.`);                  return;              }              Object.defineProperty(ctx, key, {                  enumerable: true,                  configurable: true,                  get: () => setupState[key],                  set: NOOP              });          }      });  }  function createDuplicateChecker() {      const cache = Object.create(null);      return (type, key) => {          if (cache[key]) {              warn$1(`${type} property "${key}" is already defined in ${cache[key]}.`);          }          else {              cache[key] = type;          }      };  }  let shouldCacheAccess = true;  function applyOptions(instance) {      const options = resolveMergedOptions(instance);      const publicThis = instance.proxy;      const ctx = instance.ctx;      // do not cache property access on public proxy during state initialization      shouldCacheAccess = false;      // call beforeCreate first before accessing other options since      // the hook may mutate resolved options (#2791)      if (options.beforeCreate) {          callHook(options.beforeCreate, instance, "bc" /* LifecycleHooks.BEFORE_CREATE */);      }      const {       // state      data: dataOptions, computed: computedOptions, methods, watch: watchOptions, provide: provideOptions, inject: injectOptions,       // lifecycle      created, beforeMount, mounted, beforeUpdate, updated, activated, deactivated, beforeDestroy, beforeUnmount, destroyed, unmounted, render, renderTracked, renderTriggered, errorCaptured, serverPrefetch,       // public API      expose, inheritAttrs,       // assets      components, directives, filters } = options;      const checkDuplicateProperties = createDuplicateChecker() ;      {          const [propsOptions] = instance.propsOptions;          if (propsOptions) {              for (const key in propsOptions) {                  checkDuplicateProperties("Props" /* OptionTypes.PROPS */, key);              }          }      }      // options initialization order (to be consistent with Vue 2):      // - props (already done outside of this function)      // - inject      // - methods      // - data (deferred since it relies on `this` access)      // - computed      // - watch (deferred since it relies on `this` access)      if (injectOptions) {          resolveInjections(injectOptions, ctx, checkDuplicateProperties, instance.appContext.config.unwrapInjectedRef);      }      if (methods) {          for (const key in methods) {              const methodHandler = methods[key];              if (isFunction(methodHandler)) {                  // In dev mode, we use the `createRenderContext` function to define                  // methods to the proxy target, and those are read-only but                  // reconfigurable, so it needs to be redefined here                  {                      Object.defineProperty(ctx, key, {                          value: methodHandler.bind(publicThis),                          configurable: true,                          enumerable: true,                          writable: true                      });                  }                  {                      checkDuplicateProperties("Methods" /* OptionTypes.METHODS */, key);                  }              }              else {                  warn$1(`Method "${key}" has type "${typeof methodHandler}" in the component definition. ` +                      `Did you reference the function correctly?`);              }          }      }      if (dataOptions) {          if (!isFunction(dataOptions)) {              warn$1(`The data option must be a function. ` +                  `Plain object usage is no longer supported.`);          }          const data = dataOptions.call(publicThis, publicThis);          if (isPromise(data)) {              warn$1(`data() returned a Promise - note data() cannot be async; If you ` +                  `intend to perform data fetching before component renders, use ` +                  `async setup() + <Suspense>.`);          }          if (!isObject(data)) {              warn$1(`data() should return an object.`);          }          else {              instance.data = reactive(data);              {                  for (const key in data) {                      checkDuplicateProperties("Data" /* OptionTypes.DATA */, key);                      // expose data on ctx during dev                      if (!isReservedPrefix(key[0])) {                          Object.defineProperty(ctx, key, {                              configurable: true,                              enumerable: true,                              get: () => data[key],                              set: NOOP                          });                      }                  }              }          }      }      // state initialization complete at this point - start caching access      shouldCacheAccess = true;      if (computedOptions) {          for (const key in computedOptions) {              const opt = computedOptions[key];              const get = isFunction(opt)                  ? opt.bind(publicThis, publicThis)                  : isFunction(opt.get)                      ? opt.get.bind(publicThis, publicThis)                      : NOOP;              if (get === NOOP) {                  warn$1(`Computed property "${key}" has no getter.`);              }              const set = !isFunction(opt) && isFunction(opt.set)                  ? opt.set.bind(publicThis)                  : () => {                          warn$1(`Write operation failed: computed property "${key}" is readonly.`);                      }                      ;              const c = computed$1({                  get,                  set              });              Object.defineProperty(ctx, key, {                  enumerable: true,                  configurable: true,                  get: () => c.value,                  set: v => (c.value = v)              });              {                  checkDuplicateProperties("Computed" /* OptionTypes.COMPUTED */, key);              }          }      }      if (watchOptions) {          for (const key in watchOptions) {              createWatcher(watchOptions[key], ctx, publicThis, key);          }      }      if (provideOptions) {          const provides = isFunction(provideOptions)              ? provideOptions.call(publicThis)              : provideOptions;          Reflect.ownKeys(provides).forEach(key => {              provide(key, provides[key]);          });      }      if (created) {          callHook(created, instance, "c" /* LifecycleHooks.CREATED */);      }      function registerLifecycleHook(register, hook) {          if (isArray(hook)) {              hook.forEach(_hook => register(_hook.bind(publicThis)));          }          else if (hook) {              register(hook.bind(publicThis));          }      }      registerLifecycleHook(onBeforeMount, beforeMount);      registerLifecycleHook(onMounted, mounted);      registerLifecycleHook(onBeforeUpdate, beforeUpdate);      registerLifecycleHook(onUpdated, updated);      registerLifecycleHook(onActivated, activated);      registerLifecycleHook(onDeactivated, deactivated);      registerLifecycleHook(onErrorCaptured, errorCaptured);      registerLifecycleHook(onRenderTracked, renderTracked);      registerLifecycleHook(onRenderTriggered, renderTriggered);      registerLifecycleHook(onBeforeUnmount, beforeUnmount);      registerLifecycleHook(onUnmounted, unmounted);      registerLifecycleHook(onServerPrefetch, serverPrefetch);      if (isArray(expose)) {          if (expose.length) {              const exposed = instance.exposed || (instance.exposed = {});              expose.forEach(key => {                  Object.defineProperty(exposed, key, {                      get: () => publicThis[key],                      set: val => (publicThis[key] = val)                  });              });          }          else if (!instance.exposed) {              instance.exposed = {};          }      }      // options that are handled when creating the instance but also need to be      // applied from mixins      if (render && instance.render === NOOP) {          instance.render = render;      }      if (inheritAttrs != null) {          instance.inheritAttrs = inheritAttrs;      }      // asset options.      if (components)          instance.components = components;      if (directives)          instance.directives = directives;  }  function resolveInjections(injectOptions, ctx, checkDuplicateProperties = NOOP, unwrapRef = false) {      if (isArray(injectOptions)) {          injectOptions = normalizeInject(injectOptions);      }      for (const key in injectOptions) {          const opt = injectOptions[key];          let injected;          if (isObject(opt)) {              if ('default' in opt) {                  injected = inject(opt.from || key, opt.default, true /* treat default function as factory */);              }              else {                  injected = inject(opt.from || key);              }          }          else {              injected = inject(opt);          }          if (isRef(injected)) {              // TODO remove the check in 3.3              if (unwrapRef) {                  Object.defineProperty(ctx, key, {                      enumerable: true,                      configurable: true,                      get: () => injected.value,                      set: v => (injected.value = v)                  });              }              else {                  {                      warn$1(`injected property "${key}" is a ref and will be auto-unwrapped ` +                          `and no longer needs \`.value\` in the next minor release. ` +                          `To opt-in to the new behavior now, ` +                          `set \`app.config.unwrapInjectedRef = true\` (this config is ` +                          `temporary and will not be needed in the future.)`);                  }                  ctx[key] = injected;              }          }          else {              ctx[key] = injected;          }          {              checkDuplicateProperties("Inject" /* OptionTypes.INJECT */, key);          }      }  }  function callHook(hook, instance, type) {      callWithAsyncErrorHandling(isArray(hook)          ? hook.map(h => h.bind(instance.proxy))          : hook.bind(instance.proxy), instance, type);  }  function createWatcher(raw, ctx, publicThis, key) {      const getter = key.includes('.')          ? createPathGetter(publicThis, key)          : () => publicThis[key];      if (isString(raw)) {          const handler = ctx[raw];          if (isFunction(handler)) {              watch(getter, handler);          }          else {              warn$1(`Invalid watch handler specified by key "${raw}"`, handler);          }      }      else if (isFunction(raw)) {          watch(getter, raw.bind(publicThis));      }      else if (isObject(raw)) {          if (isArray(raw)) {              raw.forEach(r => createWatcher(r, ctx, publicThis, key));          }          else {              const handler = isFunction(raw.handler)                  ? raw.handler.bind(publicThis)                  : ctx[raw.handler];              if (isFunction(handler)) {                  watch(getter, handler, raw);              }              else {                  warn$1(`Invalid watch handler specified by key "${raw.handler}"`, handler);              }          }      }      else {          warn$1(`Invalid watch option: "${key}"`, raw);      }  }  /**   * Resolve merged options and cache it on the component.   * This is done only once per-component since the merging does not involve   * instances.   */  function resolveMergedOptions(instance) {      const base = instance.type;      const { mixins, extends: extendsOptions } = base;      const { mixins: globalMixins, optionsCache: cache, config: { optionMergeStrategies } } = instance.appContext;      const cached = cache.get(base);      let resolved;      if (cached) {          resolved = cached;      }      else if (!globalMixins.length && !mixins && !extendsOptions) {          {              resolved = base;          }      }      else {          resolved = {};          if (globalMixins.length) {              globalMixins.forEach(m => mergeOptions(resolved, m, optionMergeStrategies, true));          }          mergeOptions(resolved, base, optionMergeStrategies);      }      if (isObject(base)) {          cache.set(base, resolved);      }      return resolved;  }  function mergeOptions(to, from, strats, asMixin = false) {      const { mixins, extends: extendsOptions } = from;      if (extendsOptions) {          mergeOptions(to, extendsOptions, strats, true);      }      if (mixins) {          mixins.forEach((m) => mergeOptions(to, m, strats, true));      }      for (const key in from) {          if (asMixin && key === 'expose') {              warn$1(`"expose" option is ignored when declared in mixins or extends. ` +                      `It should only be declared in the base component itself.`);          }          else {              const strat = internalOptionMergeStrats[key] || (strats && strats[key]);              to[key] = strat ? strat(to[key], from[key]) : from[key];          }      }      return to;  }  const internalOptionMergeStrats = {      data: mergeDataFn,      props: mergeObjectOptions,      emits: mergeObjectOptions,      // objects      methods: mergeObjectOptions,      computed: mergeObjectOptions,      // lifecycle      beforeCreate: mergeAsArray,      created: mergeAsArray,      beforeMount: mergeAsArray,      mounted: mergeAsArray,      beforeUpdate: mergeAsArray,      updated: mergeAsArray,      beforeDestroy: mergeAsArray,      beforeUnmount: mergeAsArray,      destroyed: mergeAsArray,      unmounted: mergeAsArray,      activated: mergeAsArray,      deactivated: mergeAsArray,      errorCaptured: mergeAsArray,      serverPrefetch: mergeAsArray,      // assets      components: mergeObjectOptions,      directives: mergeObjectOptions,      // watch      watch: mergeWatchOptions,      // provide / inject      provide: mergeDataFn,      inject: mergeInject  };  function mergeDataFn(to, from) {      if (!from) {          return to;      }      if (!to) {          return from;      }      return function mergedDataFn() {          return (extend)(isFunction(to) ? to.call(this, this) : to, isFunction(from) ? from.call(this, this) : from);      };  }  function mergeInject(to, from) {      return mergeObjectOptions(normalizeInject(to), normalizeInject(from));  }  function normalizeInject(raw) {      if (isArray(raw)) {          const res = {};          for (let i = 0; i < raw.length; i++) {              res[raw[i]] = raw[i];          }          return res;      }      return raw;  }  function mergeAsArray(to, from) {      return to ? [...new Set([].concat(to, from))] : from;  }  function mergeObjectOptions(to, from) {      return to ? extend(extend(Object.create(null), to), from) : from;  }  function mergeWatchOptions(to, from) {      if (!to)          return from;      if (!from)          return to;      const merged = extend(Object.create(null), to);      for (const key in from) {          merged[key] = mergeAsArray(to[key], from[key]);      }      return merged;  }  function initProps(instance, rawProps, isStateful, // result of bitwise flag comparison  isSSR = false) {      const props = {};      const attrs = {};      def(attrs, InternalObjectKey, 1);      instance.propsDefaults = Object.create(null);      setFullProps(instance, rawProps, props, attrs);      // ensure all declared prop keys are present      for (const key in instance.propsOptions[0]) {          if (!(key in props)) {              props[key] = undefined;          }      }      // validation      {          validateProps(rawProps || {}, props, instance);      }      if (isStateful) {          // stateful          instance.props = isSSR ? props : shallowReactive(props);      }      else {          if (!instance.type.props) {              // functional w/ optional props, props === attrs              instance.props = attrs;          }          else {              // functional w/ declared props              instance.props = props;          }      }      instance.attrs = attrs;  }  function isInHmrContext(instance) {      while (instance) {          if (instance.type.__hmrId)              return true;          instance = instance.parent;      }  }  function updateProps(instance, rawProps, rawPrevProps, optimized) {      const { props, attrs, vnode: { patchFlag } } = instance;      const rawCurrentProps = toRaw(props);      const [options] = instance.propsOptions;      let hasAttrsChanged = false;      if (      // always force full diff in dev      // - #1942 if hmr is enabled with sfc component      // - vite#872 non-sfc component used by sfc component      !(isInHmrContext(instance)) &&          (optimized || patchFlag > 0) &&          !(patchFlag & 16 /* PatchFlags.FULL_PROPS */)) {          if (patchFlag & 8 /* PatchFlags.PROPS */) {              // Compiler-generated props & no keys change, just set the updated              // the props.              const propsToUpdate = instance.vnode.dynamicProps;              for (let i = 0; i < propsToUpdate.length; i++) {                  let key = propsToUpdate[i];                  // skip if the prop key is a declared emit event listener                  if (isEmitListener(instance.emitsOptions, key)) {                      continue;                  }                  // PROPS flag guarantees rawProps to be non-null                  const value = rawProps[key];                  if (options) {                      // attr / props separation was done on init and will be consistent                      // in this code path, so just check if attrs have it.                      if (hasOwn(attrs, key)) {                          if (value !== attrs[key]) {                              attrs[key] = value;                              hasAttrsChanged = true;                          }                      }                      else {                          const camelizedKey = camelize(key);                          props[camelizedKey] = resolvePropValue(options, rawCurrentProps, camelizedKey, value, instance, false /* isAbsent */);                      }                  }                  else {                      if (value !== attrs[key]) {                          attrs[key] = value;                          hasAttrsChanged = true;                      }                  }              }          }      }      else {          // full props update.          if (setFullProps(instance, rawProps, props, attrs)) {              hasAttrsChanged = true;          }          // in case of dynamic props, check if we need to delete keys from          // the props object          let kebabKey;          for (const key in rawCurrentProps) {              if (!rawProps ||                  // for camelCase                  (!hasOwn(rawProps, key) &&                      // it's possible the original props was passed in as kebab-case                      // and converted to camelCase (#955)                      ((kebabKey = hyphenate(key)) === key || !hasOwn(rawProps, kebabKey)))) {                  if (options) {                      if (rawPrevProps &&                          // for camelCase                          (rawPrevProps[key] !== undefined ||                              // for kebab-case                              rawPrevProps[kebabKey] !== undefined)) {                          props[key] = resolvePropValue(options, rawCurrentProps, key, undefined, instance, true /* isAbsent */);                      }                  }                  else {                      delete props[key];                  }              }          }          // in the case of functional component w/o props declaration, props and          // attrs point to the same object so it should already have been updated.          if (attrs !== rawCurrentProps) {              for (const key in attrs) {                  if (!rawProps ||                      (!hasOwn(rawProps, key) &&                          (!false ))) {                      delete attrs[key];                      hasAttrsChanged = true;                  }              }          }      }      // trigger updates for $attrs in case it's used in component slots      if (hasAttrsChanged) {          trigger(instance, "set" /* TriggerOpTypes.SET */, '$attrs');      }      {          validateProps(rawProps || {}, props, instance);      }  }  function setFullProps(instance, rawProps, props, attrs) {      const [options, needCastKeys] = instance.propsOptions;      let hasAttrsChanged = false;      let rawCastValues;      if (rawProps) {          for (let key in rawProps) {              // key, ref are reserved and never passed down              if (isReservedProp(key)) {                  continue;              }              const value = rawProps[key];              // prop option names are camelized during normalization, so to support              // kebab -> camel conversion here we need to camelize the key.              let camelKey;              if (options && hasOwn(options, (camelKey = camelize(key)))) {                  if (!needCastKeys || !needCastKeys.includes(camelKey)) {                      props[camelKey] = value;                  }                  else {                      (rawCastValues || (rawCastValues = {}))[camelKey] = value;                  }              }              else if (!isEmitListener(instance.emitsOptions, key)) {                  if (!(key in attrs) || value !== attrs[key]) {                      attrs[key] = value;                      hasAttrsChanged = true;                  }              }          }      }      if (needCastKeys) {          const rawCurrentProps = toRaw(props);          const castValues = rawCastValues || EMPTY_OBJ;          for (let i = 0; i < needCastKeys.length; i++) {              const key = needCastKeys[i];              props[key] = resolvePropValue(options, rawCurrentProps, key, castValues[key], instance, !hasOwn(castValues, key));          }      }      return hasAttrsChanged;  }  function resolvePropValue(options, props, key, value, instance, isAbsent) {      const opt = options[key];      if (opt != null) {          const hasDefault = hasOwn(opt, 'default');          // default values          if (hasDefault && value === undefined) {              const defaultValue = opt.default;              if (opt.type !== Function && isFunction(defaultValue)) {                  const { propsDefaults } = instance;                  if (key in propsDefaults) {                      value = propsDefaults[key];                  }                  else {                      setCurrentInstance(instance);                      value = propsDefaults[key] = defaultValue.call(null, props);                      unsetCurrentInstance();                  }              }              else {                  value = defaultValue;              }          }          // boolean casting          if (opt[0 /* BooleanFlags.shouldCast */]) {              if (isAbsent && !hasDefault) {                  value = false;              }              else if (opt[1 /* BooleanFlags.shouldCastTrue */] &&                  (value === '' || value === hyphenate(key))) {                  value = true;              }          }      }      return value;  }  function normalizePropsOptions(comp, appContext, asMixin = false) {      const cache = appContext.propsCache;      const cached = cache.get(comp);      if (cached) {          return cached;      }      const raw = comp.props;      const normalized = {};      const needCastKeys = [];      // apply mixin/extends props      let hasExtends = false;      if (!isFunction(comp)) {          const extendProps = (raw) => {              hasExtends = true;              const [props, keys] = normalizePropsOptions(raw, appContext, true);              extend(normalized, props);              if (keys)                  needCastKeys.push(...keys);          };          if (!asMixin && appContext.mixins.length) {              appContext.mixins.forEach(extendProps);          }          if (comp.extends) {              extendProps(comp.extends);          }          if (comp.mixins) {              comp.mixins.forEach(extendProps);          }      }      if (!raw && !hasExtends) {          if (isObject(comp)) {              cache.set(comp, EMPTY_ARR);          }          return EMPTY_ARR;      }      if (isArray(raw)) {          for (let i = 0; i < raw.length; i++) {              if (!isString(raw[i])) {                  warn$1(`props must be strings when using array syntax.`, raw[i]);              }              const normalizedKey = camelize(raw[i]);              if (validatePropName(normalizedKey)) {                  normalized[normalizedKey] = EMPTY_OBJ;              }          }      }      else if (raw) {          if (!isObject(raw)) {              warn$1(`invalid props options`, raw);          }          for (const key in raw) {              const normalizedKey = camelize(key);              if (validatePropName(normalizedKey)) {                  const opt = raw[key];                  const prop = (normalized[normalizedKey] =                      isArray(opt) || isFunction(opt) ? { type: opt } : Object.assign({}, opt));                  if (prop) {                      const booleanIndex = getTypeIndex(Boolean, prop.type);                      const stringIndex = getTypeIndex(String, prop.type);                      prop[0 /* BooleanFlags.shouldCast */] = booleanIndex > -1;                      prop[1 /* BooleanFlags.shouldCastTrue */] =                          stringIndex < 0 || booleanIndex < stringIndex;                      // if the prop needs boolean casting or default value                      if (booleanIndex > -1 || hasOwn(prop, 'default')) {                          needCastKeys.push(normalizedKey);                      }                  }              }          }      }      const res = [normalized, needCastKeys];      if (isObject(comp)) {          cache.set(comp, res);      }      return res;  }  function validatePropName(key) {      if (key[0] !== '$') {          return true;      }      else {          warn$1(`Invalid prop name: "${key}" is a reserved property.`);      }      return false;  }  // use function string name to check type constructors  // so that it works across vms / iframes.  function getType(ctor) {      const match = ctor && ctor.toString().match(/^\s*function (\w+)/);      return match ? match[1] : ctor === null ? 'null' : '';  }  function isSameType(a, b) {      return getType(a) === getType(b);  }  function getTypeIndex(type, expectedTypes) {      if (isArray(expectedTypes)) {          return expectedTypes.findIndex(t => isSameType(t, type));      }      else if (isFunction(expectedTypes)) {          return isSameType(expectedTypes, type) ? 0 : -1;      }      return -1;  }  /**   * dev only   */  function validateProps(rawProps, props, instance) {      const resolvedValues = toRaw(props);      const options = instance.propsOptions[0];      for (const key in options) {          let opt = options[key];          if (opt == null)              continue;          validateProp(key, resolvedValues[key], opt, !hasOwn(rawProps, key) && !hasOwn(rawProps, hyphenate(key)));      }  }  /**   * dev only   */  function validateProp(name, value, prop, isAbsent) {      const { type, required, validator } = prop;      // required!      if (required && isAbsent) {          warn$1('Missing required prop: "' + name + '"');          return;      }      // missing but optional      if (value == null && !prop.required) {          return;      }      // type check      if (type != null && type !== true) {          let isValid = false;          const types = isArray(type) ? type : [type];          const expectedTypes = [];          // value is valid as long as one of the specified types match          for (let i = 0; i < types.length && !isValid; i++) {              const { valid, expectedType } = assertType(value, types[i]);              expectedTypes.push(expectedType || '');              isValid = valid;          }          if (!isValid) {              warn$1(getInvalidTypeMessage(name, value, expectedTypes));              return;          }      }      // custom validator      if (validator && !validator(value)) {          warn$1('Invalid prop: custom validator check failed for prop "' + name + '".');      }  }  const isSimpleType = /*#__PURE__*/ makeMap('String,Number,Boolean,Function,Symbol,BigInt');  /**   * dev only   */  function assertType(value, type) {      let valid;      const expectedType = getType(type);      if (isSimpleType(expectedType)) {          const t = typeof value;          valid = t === expectedType.toLowerCase();          // for primitive wrapper objects          if (!valid && t === 'object') {              valid = value instanceof type;          }      }      else if (expectedType === 'Object') {          valid = isObject(value);      }      else if (expectedType === 'Array') {          valid = isArray(value);      }      else if (expectedType === 'null') {          valid = value === null;      }      else {          valid = value instanceof type;      }      return {          valid,          expectedType      };  }  /**   * dev only   */  function getInvalidTypeMessage(name, value, expectedTypes) {      let message = `Invalid prop: type check failed for prop "${name}".` +          ` Expected ${expectedTypes.map(capitalize).join(' | ')}`;      const expectedType = expectedTypes[0];      const receivedType = toRawType(value);      const expectedValue = styleValue(value, expectedType);      const receivedValue = styleValue(value, receivedType);      // check if we need to specify expected value      if (expectedTypes.length === 1 &&          isExplicable(expectedType) &&          !isBoolean(expectedType, receivedType)) {          message += ` with value ${expectedValue}`;      }      message += `, got ${receivedType} `;      // check if we need to specify received value      if (isExplicable(receivedType)) {          message += `with value ${receivedValue}.`;      }      return message;  }  /**   * dev only   */  function styleValue(value, type) {      if (type === 'String') {          return `"${value}"`;      }      else if (type === 'Number') {          return `${Number(value)}`;      }      else {          return `${value}`;      }  }  /**   * dev only   */  function isExplicable(type) {      const explicitTypes = ['string', 'number', 'boolean'];      return explicitTypes.some(elem => type.toLowerCase() === elem);  }  /**   * dev only   */  function isBoolean(...args) {      return args.some(elem => elem.toLowerCase() === 'boolean');  }  const isInternalKey = (key) => key[0] === '_' || key === '$stable';  const normalizeSlotValue = (value) => isArray(value)      ? value.map(normalizeVNode)      : [normalizeVNode(value)];  const normalizeSlot = (key, rawSlot, ctx) => {      if (rawSlot._n) {          // already normalized - #5353          return rawSlot;      }      const normalized = withCtx((...args) => {          if (true && currentInstance) {              warn$1(`Slot "${key}" invoked outside of the render function: ` +                  `this will not track dependencies used in the slot. ` +                  `Invoke the slot function inside the render function instead.`);          }          return normalizeSlotValue(rawSlot(...args));      }, ctx);      normalized._c = false;      return normalized;  };  const normalizeObjectSlots = (rawSlots, slots, instance) => {      const ctx = rawSlots._ctx;      for (const key in rawSlots) {          if (isInternalKey(key))              continue;          const value = rawSlots[key];          if (isFunction(value)) {              slots[key] = normalizeSlot(key, value, ctx);          }          else if (value != null) {              {                  warn$1(`Non-function value encountered for slot "${key}". ` +                      `Prefer function slots for better performance.`);              }              const normalized = normalizeSlotValue(value);              slots[key] = () => normalized;          }      }  };  const normalizeVNodeSlots = (instance, children) => {      if (!isKeepAlive(instance.vnode) &&          !(false )) {          warn$1(`Non-function value encountered for default slot. ` +              `Prefer function slots for better performance.`);      }      const normalized = normalizeSlotValue(children);      instance.slots.default = () => normalized;  };  const initSlots = (instance, children) => {      if (instance.vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {          const type = children._;          if (type) {              // users can get the shallow readonly version of the slots object through `this.$slots`,              // we should avoid the proxy object polluting the slots of the internal instance              instance.slots = toRaw(children);              // make compiler marker non-enumerable              def(children, '_', type);          }          else {              normalizeObjectSlots(children, (instance.slots = {}));          }      }      else {          instance.slots = {};          if (children) {              normalizeVNodeSlots(instance, children);          }      }      def(instance.slots, InternalObjectKey, 1);  };  const updateSlots = (instance, children, optimized) => {      const { vnode, slots } = instance;      let needDeletionCheck = true;      let deletionComparisonTarget = EMPTY_OBJ;      if (vnode.shapeFlag & 32 /* ShapeFlags.SLOTS_CHILDREN */) {          const type = children._;          if (type) {              // compiled slots.              if (isHmrUpdating) {                  // Parent was HMR updated so slot content may have changed.                  // force update slots and mark instance for hmr as well                  extend(slots, children);              }              else if (optimized && type === 1 /* SlotFlags.STABLE */) {                  // compiled AND stable.                  // no need to update, and skip stale slots removal.                  needDeletionCheck = false;              }              else {                  // compiled but dynamic (v-if/v-for on slots) - update slots, but skip                  // normalization.                  extend(slots, children);                  // #2893                  // when rendering the optimized slots by manually written render function,                  // we need to delete the `slots._` flag if necessary to make subsequent updates reliable,                  // i.e. let the `renderSlot` create the bailed Fragment                  if (!optimized && type === 1 /* SlotFlags.STABLE */) {                      delete slots._;                  }              }          }          else {              needDeletionCheck = !children.$stable;              normalizeObjectSlots(children, slots);          }          deletionComparisonTarget = children;      }      else if (children) {          // non slot object children (direct value) passed to a component          normalizeVNodeSlots(instance, children);          deletionComparisonTarget = { default: 1 };      }      // delete stale slots      if (needDeletionCheck) {          for (const key in slots) {              if (!isInternalKey(key) && !(key in deletionComparisonTarget)) {                  delete slots[key];              }          }      }  };  function createAppContext() {      return {          app: null,          config: {              isNativeTag: NO,              performance: false,              globalProperties: {},              optionMergeStrategies: {},              errorHandler: undefined,              warnHandler: undefined,              compilerOptions: {}          },          mixins: [],          components: {},          directives: {},          provides: Object.create(null),          optionsCache: new WeakMap(),          propsCache: new WeakMap(),          emitsCache: new WeakMap()      };  }  let uid = 0;  function createAppAPI(render, hydrate) {      return function createApp(rootComponent, rootProps = null) {          if (!isFunction(rootComponent)) {              rootComponent = Object.assign({}, rootComponent);          }          if (rootProps != null && !isObject(rootProps)) {              warn$1(`root props passed to app.mount() must be an object.`);              rootProps = null;          }          const context = createAppContext();          const installedPlugins = new Set();          let isMounted = false;          const app = (context.app = {              _uid: uid++,              _component: rootComponent,              _props: rootProps,              _container: null,              _context: context,              _instance: null,              version,              get config() {                  return context.config;              },              set config(v) {                  {                      warn$1(`app.config cannot be replaced. Modify individual options instead.`);                  }              },              use(plugin, ...options) {                  if (installedPlugins.has(plugin)) {                      warn$1(`Plugin has already been applied to target app.`);                  }                  else if (plugin && isFunction(plugin.install)) {                      installedPlugins.add(plugin);                      plugin.install(app, ...options);                  }                  else if (isFunction(plugin)) {                      installedPlugins.add(plugin);                      plugin(app, ...options);                  }                  else {                      warn$1(`A plugin must either be a function or an object with an "install" ` +                          `function.`);                  }                  return app;              },              mixin(mixin) {                  {                      if (!context.mixins.includes(mixin)) {                          context.mixins.push(mixin);                      }                      else {                          warn$1('Mixin has already been applied to target app' +                              (mixin.name ? `: ${mixin.name}` : ''));                      }                  }                  return app;              },              component(name, component) {                  {                      validateComponentName(name, context.config);                  }                  if (!component) {                      return context.components[name];                  }                  if (context.components[name]) {                      warn$1(`Component "${name}" has already been registered in target app.`);                  }                  context.components[name] = component;                  return app;              },              directive(name, directive) {                  {                      validateDirectiveName(name);                  }                  if (!directive) {                      return context.directives[name];                  }                  if (context.directives[name]) {                      warn$1(`Directive "${name}" has already been registered in target app.`);                  }                  context.directives[name] = directive;                  return app;              },              mount(rootContainer, isHydrate, isSVG) {                  if (!isMounted) {                      // #5571                      if (rootContainer.__vue_app__) {                          warn$1(`There is already an app instance mounted on the host container.\n` +                              ` If you want to mount another app on the same host container,` +                              ` you need to unmount the previous app by calling \`app.unmount()\` first.`);                      }                      const vnode = createVNode(rootComponent, rootProps);                      // store app context on the root VNode.                      // this will be set on the root instance on initial mount.                      vnode.appContext = context;                      // HMR root reload                      {                          context.reload = () => {                              render(cloneVNode(vnode), rootContainer, isSVG);                          };                      }                      if (isHydrate && hydrate) {                          hydrate(vnode, rootContainer);                      }                      else {                          render(vnode, rootContainer, isSVG);                      }                      isMounted = true;                      app._container = rootContainer;                      rootContainer.__vue_app__ = app;                      {                          app._instance = vnode.component;                          devtoolsInitApp(app, version);                      }                      return getExposeProxy(vnode.component) || vnode.component.proxy;                  }                  else {                      warn$1(`App has already been mounted.\n` +                          `If you want to remount the same app, move your app creation logic ` +                          `into a factory function and create fresh app instances for each ` +                          `mount - e.g. \`const createMyApp = () => createApp(App)\``);                  }              },              unmount() {                  if (isMounted) {                      render(null, app._container);                      {                          app._instance = null;                          devtoolsUnmountApp(app);                      }                      delete app._container.__vue_app__;                  }                  else {                      warn$1(`Cannot unmount an app that is not mounted.`);                  }              },              provide(key, value) {                  if (key in context.provides) {                      warn$1(`App already provides property with key "${String(key)}". ` +                          `It will be overwritten with the new value.`);                  }                  context.provides[key] = value;                  return app;              }          });          return app;      };  }  /**   * Function for handling a template ref   */  function setRef(rawRef, oldRawRef, parentSuspense, vnode, isUnmount = false) {      if (isArray(rawRef)) {          rawRef.forEach((r, i) => setRef(r, oldRawRef && (isArray(oldRawRef) ? oldRawRef[i] : oldRawRef), parentSuspense, vnode, isUnmount));          return;      }      if (isAsyncWrapper(vnode) && !isUnmount) {          // when mounting async components, nothing needs to be done,          // because the template ref is forwarded to inner component          return;      }      const refValue = vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */          ? getExposeProxy(vnode.component) || vnode.component.proxy          : vnode.el;      const value = isUnmount ? null : refValue;      const { i: owner, r: ref } = rawRef;      if (!owner) {          warn$1(`Missing ref owner context. ref cannot be used on hoisted vnodes. ` +              `A vnode with ref must be created inside the render function.`);          return;      }      const oldRef = oldRawRef && oldRawRef.r;      const refs = owner.refs === EMPTY_OBJ ? (owner.refs = {}) : owner.refs;      const setupState = owner.setupState;      // dynamic ref changed. unset old ref      if (oldRef != null && oldRef !== ref) {          if (isString(oldRef)) {              refs[oldRef] = null;              if (hasOwn(setupState, oldRef)) {                  setupState[oldRef] = null;              }          }          else if (isRef(oldRef)) {              oldRef.value = null;          }      }      if (isFunction(ref)) {          callWithErrorHandling(ref, owner, 12 /* ErrorCodes.FUNCTION_REF */, [value, refs]);      }      else {          const _isString = isString(ref);          const _isRef = isRef(ref);          if (_isString || _isRef) {              const doSet = () => {                  if (rawRef.f) {                      const existing = _isString                          ? hasOwn(setupState, ref)                              ? setupState[ref]                              : refs[ref]                          : ref.value;                      if (isUnmount) {                          isArray(existing) && remove(existing, refValue);                      }                      else {                          if (!isArray(existing)) {                              if (_isString) {                                  refs[ref] = [refValue];                                  if (hasOwn(setupState, ref)) {                                      setupState[ref] = refs[ref];                                  }                              }                              else {                                  ref.value = [refValue];                                  if (rawRef.k)                                      refs[rawRef.k] = ref.value;                              }                          }                          else if (!existing.includes(refValue)) {                              existing.push(refValue);                          }                      }                  }                  else if (_isString) {                      refs[ref] = value;                      if (hasOwn(setupState, ref)) {                          setupState[ref] = value;                      }                  }                  else if (_isRef) {                      ref.value = value;                      if (rawRef.k)                          refs[rawRef.k] = value;                  }                  else {                      warn$1('Invalid template ref type:', ref, `(${typeof ref})`);                  }              };              if (value) {                  doSet.id = -1;                  queuePostRenderEffect(doSet, parentSuspense);              }              else {                  doSet();              }          }          else {              warn$1('Invalid template ref type:', ref, `(${typeof ref})`);          }      }  }  let hasMismatch = false;  const isSVGContainer = (container) => /svg/.test(container.namespaceURI) && container.tagName !== 'foreignObject';  const isComment = (node) => node.nodeType === 8 /* DOMNodeTypes.COMMENT */;  // Note: hydration is DOM-specific  // But we have to place it in core due to tight coupling with core - splitting  // it out creates a ton of unnecessary complexity.  // Hydration also depends on some renderer internal logic which needs to be  // passed in via arguments.  function createHydrationFunctions(rendererInternals) {      const { mt: mountComponent, p: patch, o: { patchProp, createText, nextSibling, parentNode, remove, insert, createComment } } = rendererInternals;      const hydrate = (vnode, container) => {          if (!container.hasChildNodes()) {              warn$1(`Attempting to hydrate existing markup but container is empty. ` +                      `Performing full mount instead.`);              patch(null, vnode, container);              flushPostFlushCbs();              container._vnode = vnode;              return;          }          hasMismatch = false;          hydrateNode(container.firstChild, vnode, null, null, null);          flushPostFlushCbs();          container._vnode = vnode;          if (hasMismatch && !false) {              // this error should show up in production              console.error(`Hydration completed but contains mismatches.`);          }      };      const hydrateNode = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized = false) => {          const isFragmentStart = isComment(node) && node.data === '[';          const onMismatch = () => handleMismatch(node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragmentStart);          const { type, ref, shapeFlag, patchFlag } = vnode;          let domType = node.nodeType;          vnode.el = node;          if (patchFlag === -2 /* PatchFlags.BAIL */) {              optimized = false;              vnode.dynamicChildren = null;          }          let nextNode = null;          switch (type) {              case Text:                  if (domType !== 3 /* DOMNodeTypes.TEXT */) {                      // #5728 empty text node inside a slot can cause hydration failure                      // because the server rendered HTML won't contain a text node                      if (vnode.children === '') {                          insert((vnode.el = createText('')), parentNode(node), node);                          nextNode = node;                      }                      else {                          nextNode = onMismatch();                      }                  }                  else {                      if (node.data !== vnode.children) {                          hasMismatch = true;                          warn$1(`Hydration text mismatch:` +                                  `\n- Client: ${JSON.stringify(node.data)}` +                                  `\n- Server: ${JSON.stringify(vnode.children)}`);                          node.data = vnode.children;                      }                      nextNode = nextSibling(node);                  }                  break;              case Comment:                  if (domType !== 8 /* DOMNodeTypes.COMMENT */ || isFragmentStart) {                      nextNode = onMismatch();                  }                  else {                      nextNode = nextSibling(node);                  }                  break;              case Static:                  if (isFragmentStart) {                      // entire template is static but SSRed as a fragment                      node = nextSibling(node);                      domType = node.nodeType;                  }                  if (domType === 1 /* DOMNodeTypes.ELEMENT */ || domType === 3 /* DOMNodeTypes.TEXT */) {                      // determine anchor, adopt content                      nextNode = node;                      // if the static vnode has its content stripped during build,                      // adopt it from the server-rendered HTML.                      const needToAdoptContent = !vnode.children.length;                      for (let i = 0; i < vnode.staticCount; i++) {                          if (needToAdoptContent)                              vnode.children +=                                  nextNode.nodeType === 1 /* DOMNodeTypes.ELEMENT */                                      ? nextNode.outerHTML                                      : nextNode.data;                          if (i === vnode.staticCount - 1) {                              vnode.anchor = nextNode;                          }                          nextNode = nextSibling(nextNode);                      }                      return isFragmentStart ? nextSibling(nextNode) : nextNode;                  }                  else {                      onMismatch();                  }                  break;              case Fragment:                  if (!isFragmentStart) {                      nextNode = onMismatch();                  }                  else {                      nextNode = hydrateFragment(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);                  }                  break;              default:                  if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {                      if (domType !== 1 /* DOMNodeTypes.ELEMENT */ ||                          vnode.type.toLowerCase() !==                              node.tagName.toLowerCase()) {                          nextNode = onMismatch();                      }                      else {                          nextNode = hydrateElement(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);                      }                  }                  else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {                      // when setting up the render effect, if the initial vnode already                      // has .el set, the component will perform hydration instead of mount                      // on its sub-tree.                      vnode.slotScopeIds = slotScopeIds;                      const container = parentNode(node);                      mountComponent(vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), optimized);                      // component may be async, so in the case of fragments we cannot rely                      // on component's rendered output to determine the end of the fragment                      // instead, we do a lookahead to find the end anchor node.                      nextNode = isFragmentStart                          ? locateClosingAsyncAnchor(node)                          : nextSibling(node);                      // #4293 teleport as component root                      if (nextNode &&                          isComment(nextNode) &&                          nextNode.data === 'teleport end') {                          nextNode = nextSibling(nextNode);                      }                      // #3787                      // if component is async, it may get moved / unmounted before its                      // inner component is loaded, so we need to give it a placeholder                      // vnode that matches its adopted DOM.                      if (isAsyncWrapper(vnode)) {                          let subTree;                          if (isFragmentStart) {                              subTree = createVNode(Fragment);                              subTree.anchor = nextNode                                  ? nextNode.previousSibling                                  : container.lastChild;                          }                          else {                              subTree =                                  node.nodeType === 3 ? createTextVNode('') : createVNode('div');                          }                          subTree.el = node;                          vnode.component.subTree = subTree;                      }                  }                  else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {                      if (domType !== 8 /* DOMNodeTypes.COMMENT */) {                          nextNode = onMismatch();                      }                      else {                          nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, rendererInternals, hydrateChildren);                      }                  }                  else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {                      nextNode = vnode.type.hydrate(node, vnode, parentComponent, parentSuspense, isSVGContainer(parentNode(node)), slotScopeIds, optimized, rendererInternals, hydrateNode);                  }                  else {                      warn$1('Invalid HostVNode type:', type, `(${typeof type})`);                  }          }          if (ref != null) {              setRef(ref, null, parentSuspense, vnode);          }          return nextNode;      };      const hydrateElement = (el, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {          optimized = optimized || !!vnode.dynamicChildren;          const { type, props, patchFlag, shapeFlag, dirs } = vnode;          // #4006 for form elements with non-string v-model value bindings          // e.g. <option :value="obj">, <input type="checkbox" :true-value="1">          const forcePatchValue = (type === 'input' && dirs) || type === 'option';          // skip props & children if this is hoisted static nodes          // #5405 in dev, always hydrate children for HMR          {              if (dirs) {                  invokeDirectiveHook(vnode, null, parentComponent, 'created');              }              // props              if (props) {                  if (forcePatchValue ||                      !optimized ||                      patchFlag & (16 /* PatchFlags.FULL_PROPS */ | 32 /* PatchFlags.HYDRATE_EVENTS */)) {                      for (const key in props) {                          if ((forcePatchValue && key.endsWith('value')) ||                              (isOn(key) && !isReservedProp(key))) {                              patchProp(el, key, null, props[key], false, undefined, parentComponent);                          }                      }                  }                  else if (props.onClick) {                      // Fast path for click listeners (which is most often) to avoid                      // iterating through props.                      patchProp(el, 'onClick', null, props.onClick, false, undefined, parentComponent);                  }              }              // vnode / directive hooks              let vnodeHooks;              if ((vnodeHooks = props && props.onVnodeBeforeMount)) {                  invokeVNodeHook(vnodeHooks, parentComponent, vnode);              }              if (dirs) {                  invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');              }              if ((vnodeHooks = props && props.onVnodeMounted) || dirs) {                  queueEffectWithSuspense(() => {                      vnodeHooks && invokeVNodeHook(vnodeHooks, parentComponent, vnode);                      dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');                  }, parentSuspense);              }              // children              if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */ &&                  // skip if element has innerHTML / textContent                  !(props && (props.innerHTML || props.textContent))) {                  let next = hydrateChildren(el.firstChild, vnode, el, parentComponent, parentSuspense, slotScopeIds, optimized);                  let hasWarned = false;                  while (next) {                      hasMismatch = true;                      if (!hasWarned) {                          warn$1(`Hydration children mismatch in <${vnode.type}>: ` +                              `server rendered element contains more child nodes than client vdom.`);                          hasWarned = true;                      }                      // The SSRed DOM contains more nodes than it should. Remove them.                      const cur = next;                      next = next.nextSibling;                      remove(cur);                  }              }              else if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {                  if (el.textContent !== vnode.children) {                      hasMismatch = true;                      warn$1(`Hydration text content mismatch in <${vnode.type}>:\n` +                              `- Client: ${el.textContent}\n` +                              `- Server: ${vnode.children}`);                      el.textContent = vnode.children;                  }              }          }          return el.nextSibling;      };      const hydrateChildren = (node, parentVNode, container, parentComponent, parentSuspense, slotScopeIds, optimized) => {          optimized = optimized || !!parentVNode.dynamicChildren;          const children = parentVNode.children;          const l = children.length;          let hasWarned = false;          for (let i = 0; i < l; i++) {              const vnode = optimized                  ? children[i]                  : (children[i] = normalizeVNode(children[i]));              if (node) {                  node = hydrateNode(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized);              }              else if (vnode.type === Text && !vnode.children) {                  continue;              }              else {                  hasMismatch = true;                  if (!hasWarned) {                      warn$1(`Hydration children mismatch in <${container.tagName.toLowerCase()}>: ` +                          `server rendered element contains fewer child nodes than client vdom.`);                      hasWarned = true;                  }                  // the SSRed DOM didn't contain enough nodes. Mount the missing ones.                  patch(null, vnode, container, null, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);              }          }          return node;      };      const hydrateFragment = (node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized) => {          const { slotScopeIds: fragmentSlotScopeIds } = vnode;          if (fragmentSlotScopeIds) {              slotScopeIds = slotScopeIds                  ? slotScopeIds.concat(fragmentSlotScopeIds)                  : fragmentSlotScopeIds;          }          const container = parentNode(node);          const next = hydrateChildren(nextSibling(node), vnode, container, parentComponent, parentSuspense, slotScopeIds, optimized);          if (next && isComment(next) && next.data === ']') {              return nextSibling((vnode.anchor = next));          }          else {              // fragment didn't hydrate successfully, since we didn't get a end anchor              // back. This should have led to node/children mismatch warnings.              hasMismatch = true;              // since the anchor is missing, we need to create one and insert it              insert((vnode.anchor = createComment(`]`)), container, next);              return next;          }      };      const handleMismatch = (node, vnode, parentComponent, parentSuspense, slotScopeIds, isFragment) => {          hasMismatch = true;          warn$1(`Hydration node mismatch:\n- Client vnode:`, vnode.type, `\n- Server rendered DOM:`, node, node.nodeType === 3 /* DOMNodeTypes.TEXT */                  ? `(text)`                  : isComment(node) && node.data === '['                      ? `(start of fragment)`                      : ``);          vnode.el = null;          if (isFragment) {              // remove excessive fragment nodes              const end = locateClosingAsyncAnchor(node);              while (true) {                  const next = nextSibling(node);                  if (next && next !== end) {                      remove(next);                  }                  else {                      break;                  }              }          }          const next = nextSibling(node);          const container = parentNode(node);          remove(node);          patch(null, vnode, container, next, parentComponent, parentSuspense, isSVGContainer(container), slotScopeIds);          return next;      };      const locateClosingAsyncAnchor = (node) => {          let match = 0;          while (node) {              node = nextSibling(node);              if (node && isComment(node)) {                  if (node.data === '[')                      match++;                  if (node.data === ']') {                      if (match === 0) {                          return nextSibling(node);                      }                      else {                          match--;                      }                  }              }          }          return node;      };      return [hydrate, hydrateNode];  }  /* eslint-disable no-restricted-globals */  let supported;  let perf;  function startMeasure(instance, type) {      if (instance.appContext.config.performance && isSupported()) {          perf.mark(`vue-${type}-${instance.uid}`);      }      {          devtoolsPerfStart(instance, type, isSupported() ? perf.now() : Date.now());      }  }  function endMeasure(instance, type) {      if (instance.appContext.config.performance && isSupported()) {          const startTag = `vue-${type}-${instance.uid}`;          const endTag = startTag + `:end`;          perf.mark(endTag);          perf.measure(`<${formatComponentName(instance, instance.type)}> ${type}`, startTag, endTag);          perf.clearMarks(startTag);          perf.clearMarks(endTag);      }      {          devtoolsPerfEnd(instance, type, isSupported() ? perf.now() : Date.now());      }  }  function isSupported() {      if (supported !== undefined) {          return supported;      }      if (typeof window !== 'undefined' && window.performance) {          supported = true;          perf = window.performance;      }      else {          supported = false;      }      return supported;  }  const queuePostRenderEffect = queueEffectWithSuspense      ;  /**   * The createRenderer function accepts two generic arguments:   * HostNode and HostElement, corresponding to Node and Element types in the   * host environment. For example, for runtime-dom, HostNode would be the DOM   * `Node` interface and HostElement would be the DOM `Element` interface.   *   * Custom renderers can pass in the platform specific types like this:   *   * ``` js   * const { render, createApp } = createRenderer<Node, Element>({   *   patchProp,   *   ...nodeOps   * })   * ```   */  function createRenderer(options) {      return baseCreateRenderer(options);  }  // Separate API for creating hydration-enabled renderer.  // Hydration logic is only used when calling this function, making it  // tree-shakable.  function createHydrationRenderer(options) {      return baseCreateRenderer(options, createHydrationFunctions);  }  // implementation  function baseCreateRenderer(options, createHydrationFns) {      const target = getGlobalThis();      target.__VUE__ = true;      {          setDevtoolsHook(target.__VUE_DEVTOOLS_GLOBAL_HOOK__, target);      }      const { insert: hostInsert, remove: hostRemove, patchProp: hostPatchProp, createElement: hostCreateElement, createText: hostCreateText, createComment: hostCreateComment, setText: hostSetText, setElementText: hostSetElementText, parentNode: hostParentNode, nextSibling: hostNextSibling, setScopeId: hostSetScopeId = NOOP, insertStaticContent: hostInsertStaticContent } = options;      // Note: functions inside this closure should use `const xxx = () => {}`      // style in order to prevent being inlined by minifiers.      const patch = (n1, n2, container, anchor = null, parentComponent = null, parentSuspense = null, isSVG = false, slotScopeIds = null, optimized = isHmrUpdating ? false : !!n2.dynamicChildren) => {          if (n1 === n2) {              return;          }          // patching & not same type, unmount old tree          if (n1 && !isSameVNodeType(n1, n2)) {              anchor = getNextHostNode(n1);              unmount(n1, parentComponent, parentSuspense, true);              n1 = null;          }          if (n2.patchFlag === -2 /* PatchFlags.BAIL */) {              optimized = false;              n2.dynamicChildren = null;          }          const { type, ref, shapeFlag } = n2;          switch (type) {              case Text:                  processText(n1, n2, container, anchor);                  break;              case Comment:                  processCommentNode(n1, n2, container, anchor);                  break;              case Static:                  if (n1 == null) {                      mountStaticNode(n2, container, anchor, isSVG);                  }                  else {                      patchStaticNode(n1, n2, container, isSVG);                  }                  break;              case Fragment:                  processFragment(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                  break;              default:                  if (shapeFlag & 1 /* ShapeFlags.ELEMENT */) {                      processElement(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                  }                  else if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {                      processComponent(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                  }                  else if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {                      type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);                  }                  else if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {                      type.process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals);                  }                  else {                      warn$1('Invalid VNode type:', type, `(${typeof type})`);                  }          }          // set ref          if (ref != null && parentComponent) {              setRef(ref, n1 && n1.ref, parentSuspense, n2 || n1, !n2);          }      };      const processText = (n1, n2, container, anchor) => {          if (n1 == null) {              hostInsert((n2.el = hostCreateText(n2.children)), container, anchor);          }          else {              const el = (n2.el = n1.el);              if (n2.children !== n1.children) {                  hostSetText(el, n2.children);              }          }      };      const processCommentNode = (n1, n2, container, anchor) => {          if (n1 == null) {              hostInsert((n2.el = hostCreateComment(n2.children || '')), container, anchor);          }          else {              // there's no support for dynamic comments              n2.el = n1.el;          }      };      const mountStaticNode = (n2, container, anchor, isSVG) => {          [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG, n2.el, n2.anchor);      };      /**       * Dev / HMR only       */      const patchStaticNode = (n1, n2, container, isSVG) => {          // static nodes are only patched during dev for HMR          if (n2.children !== n1.children) {              const anchor = hostNextSibling(n1.anchor);              // remove existing              removeStaticNode(n1);              [n2.el, n2.anchor] = hostInsertStaticContent(n2.children, container, anchor, isSVG);          }          else {              n2.el = n1.el;              n2.anchor = n1.anchor;          }      };      const moveStaticNode = ({ el, anchor }, container, nextSibling) => {          let next;          while (el && el !== anchor) {              next = hostNextSibling(el);              hostInsert(el, container, nextSibling);              el = next;          }          hostInsert(anchor, container, nextSibling);      };      const removeStaticNode = ({ el, anchor }) => {          let next;          while (el && el !== anchor) {              next = hostNextSibling(el);              hostRemove(el);              el = next;          }          hostRemove(anchor);      };      const processElement = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {          isSVG = isSVG || n2.type === 'svg';          if (n1 == null) {              mountElement(n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);          }          else {              patchElement(n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);          }      };      const mountElement = (vnode, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {          let el;          let vnodeHook;          const { type, props, shapeFlag, transition, dirs } = vnode;          el = vnode.el = hostCreateElement(vnode.type, isSVG, props && props.is, props);          // mount children first, since some props may rely on child content          // being already rendered, e.g. `<select value>`          if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {              hostSetElementText(el, vnode.children);          }          else if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {              mountChildren(vnode.children, el, null, parentComponent, parentSuspense, isSVG && type !== 'foreignObject', slotScopeIds, optimized);          }          if (dirs) {              invokeDirectiveHook(vnode, null, parentComponent, 'created');          }          // props          if (props) {              for (const key in props) {                  if (key !== 'value' && !isReservedProp(key)) {                      hostPatchProp(el, key, null, props[key], isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);                  }              }              /**               * Special case for setting value on DOM elements:               * - it can be order-sensitive (e.g. should be set *after* min/max, #2325, #4024)               * - it needs to be forced (#1471)               * #2353 proposes adding another renderer option to configure this, but               * the properties affects are so finite it is worth special casing it               * here to reduce the complexity. (Special casing it also should not               * affect non-DOM renderers)               */              if ('value' in props) {                  hostPatchProp(el, 'value', null, props.value);              }              if ((vnodeHook = props.onVnodeBeforeMount)) {                  invokeVNodeHook(vnodeHook, parentComponent, vnode);              }          }          // scopeId          setScopeId(el, vnode, vnode.scopeId, slotScopeIds, parentComponent);          {              Object.defineProperty(el, '__vnode', {                  value: vnode,                  enumerable: false              });              Object.defineProperty(el, '__vueParentComponent', {                  value: parentComponent,                  enumerable: false              });          }          if (dirs) {              invokeDirectiveHook(vnode, null, parentComponent, 'beforeMount');          }          // #1583 For inside suspense + suspense not resolved case, enter hook should call when suspense resolved          // #1689 For inside suspense + suspense resolved case, just call it          const needCallTransitionHooks = (!parentSuspense || (parentSuspense && !parentSuspense.pendingBranch)) &&              transition &&              !transition.persisted;          if (needCallTransitionHooks) {              transition.beforeEnter(el);          }          hostInsert(el, container, anchor);          if ((vnodeHook = props && props.onVnodeMounted) ||              needCallTransitionHooks ||              dirs) {              queuePostRenderEffect(() => {                  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);                  needCallTransitionHooks && transition.enter(el);                  dirs && invokeDirectiveHook(vnode, null, parentComponent, 'mounted');              }, parentSuspense);          }      };      const setScopeId = (el, vnode, scopeId, slotScopeIds, parentComponent) => {          if (scopeId) {              hostSetScopeId(el, scopeId);          }          if (slotScopeIds) {              for (let i = 0; i < slotScopeIds.length; i++) {                  hostSetScopeId(el, slotScopeIds[i]);              }          }          if (parentComponent) {              let subTree = parentComponent.subTree;              if (subTree.patchFlag > 0 &&                  subTree.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */) {                  subTree =                      filterSingleRoot(subTree.children) || subTree;              }              if (vnode === subTree) {                  const parentVNode = parentComponent.vnode;                  setScopeId(el, parentVNode, parentVNode.scopeId, parentVNode.slotScopeIds, parentComponent.parent);              }          }      };      const mountChildren = (children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, start = 0) => {          for (let i = start; i < children.length; i++) {              const child = (children[i] = optimized                  ? cloneIfMounted(children[i])                  : normalizeVNode(children[i]));              patch(null, child, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);          }      };      const patchElement = (n1, n2, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {          const el = (n2.el = n1.el);          let { patchFlag, dynamicChildren, dirs } = n2;          // #1426 take the old vnode's patch flag into account since user may clone a          // compiler-generated vnode, which de-opts to FULL_PROPS          patchFlag |= n1.patchFlag & 16 /* PatchFlags.FULL_PROPS */;          const oldProps = n1.props || EMPTY_OBJ;          const newProps = n2.props || EMPTY_OBJ;          let vnodeHook;          // disable recurse in beforeUpdate hooks          parentComponent && toggleRecurse(parentComponent, false);          if ((vnodeHook = newProps.onVnodeBeforeUpdate)) {              invokeVNodeHook(vnodeHook, parentComponent, n2, n1);          }          if (dirs) {              invokeDirectiveHook(n2, n1, parentComponent, 'beforeUpdate');          }          parentComponent && toggleRecurse(parentComponent, true);          if (isHmrUpdating) {              // HMR updated, force full diff              patchFlag = 0;              optimized = false;              dynamicChildren = null;          }          const areChildrenSVG = isSVG && n2.type !== 'foreignObject';          if (dynamicChildren) {              patchBlockChildren(n1.dynamicChildren, dynamicChildren, el, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds);              if (parentComponent && parentComponent.type.__hmrId) {                  traverseStaticChildren(n1, n2);              }          }          else if (!optimized) {              // full diff              patchChildren(n1, n2, el, null, parentComponent, parentSuspense, areChildrenSVG, slotScopeIds, false);          }          if (patchFlag > 0) {              // the presence of a patchFlag means this element's render code was              // generated by the compiler and can take the fast path.              // in this path old node and new node are guaranteed to have the same shape              // (i.e. at the exact same position in the source template)              if (patchFlag & 16 /* PatchFlags.FULL_PROPS */) {                  // element props contain dynamic keys, full diff needed                  patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);              }              else {                  // class                  // this flag is matched when the element has dynamic class bindings.                  if (patchFlag & 2 /* PatchFlags.CLASS */) {                      if (oldProps.class !== newProps.class) {                          hostPatchProp(el, 'class', null, newProps.class, isSVG);                      }                  }                  // style                  // this flag is matched when the element has dynamic style bindings                  if (patchFlag & 4 /* PatchFlags.STYLE */) {                      hostPatchProp(el, 'style', oldProps.style, newProps.style, isSVG);                  }                  // props                  // This flag is matched when the element has dynamic prop/attr bindings                  // other than class and style. The keys of dynamic prop/attrs are saved for                  // faster iteration.                  // Note dynamic keys like :[foo]="bar" will cause this optimization to                  // bail out and go through a full diff because we need to unset the old key                  if (patchFlag & 8 /* PatchFlags.PROPS */) {                      // if the flag is present then dynamicProps must be non-null                      const propsToUpdate = n2.dynamicProps;                      for (let i = 0; i < propsToUpdate.length; i++) {                          const key = propsToUpdate[i];                          const prev = oldProps[key];                          const next = newProps[key];                          // #1471 force patch value                          if (next !== prev || key === 'value') {                              hostPatchProp(el, key, prev, next, isSVG, n1.children, parentComponent, parentSuspense, unmountChildren);                          }                      }                  }              }              // text              // This flag is matched when the element has only dynamic text children.              if (patchFlag & 1 /* PatchFlags.TEXT */) {                  if (n1.children !== n2.children) {                      hostSetElementText(el, n2.children);                  }              }          }          else if (!optimized && dynamicChildren == null) {              // unoptimized, full diff              patchProps(el, n2, oldProps, newProps, parentComponent, parentSuspense, isSVG);          }          if ((vnodeHook = newProps.onVnodeUpdated) || dirs) {              queuePostRenderEffect(() => {                  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, n2, n1);                  dirs && invokeDirectiveHook(n2, n1, parentComponent, 'updated');              }, parentSuspense);          }      };      // The fast path for blocks.      const patchBlockChildren = (oldChildren, newChildren, fallbackContainer, parentComponent, parentSuspense, isSVG, slotScopeIds) => {          for (let i = 0; i < newChildren.length; i++) {              const oldVNode = oldChildren[i];              const newVNode = newChildren[i];              // Determine the container (parent element) for the patch.              const container =               // oldVNode may be an errored async setup() component inside Suspense              // which will not have a mounted element              oldVNode.el &&                  // - In the case of a Fragment, we need to provide the actual parent                  // of the Fragment itself so it can move its children.                  (oldVNode.type === Fragment ||                      // - In the case of different nodes, there is going to be a replacement                      // which also requires the correct parent container                      !isSameVNodeType(oldVNode, newVNode) ||                      // - In the case of a component, it could contain anything.                      oldVNode.shapeFlag & (6 /* ShapeFlags.COMPONENT */ | 64 /* ShapeFlags.TELEPORT */))                  ? hostParentNode(oldVNode.el)                  : // In other cases, the parent container is not actually used so we                      // just pass the block element here to avoid a DOM parentNode call.                      fallbackContainer;              patch(oldVNode, newVNode, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, true);          }      };      const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => {          if (oldProps !== newProps) {              if (oldProps !== EMPTY_OBJ) {                  for (const key in oldProps) {                      if (!isReservedProp(key) && !(key in newProps)) {                          hostPatchProp(el, key, oldProps[key], null, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);                      }                  }              }              for (const key in newProps) {                  // empty string is not valid prop                  if (isReservedProp(key))                      continue;                  const next = newProps[key];                  const prev = oldProps[key];                  // defer patching value                  if (next !== prev && key !== 'value') {                      hostPatchProp(el, key, prev, next, isSVG, vnode.children, parentComponent, parentSuspense, unmountChildren);                  }              }              if ('value' in newProps) {                  hostPatchProp(el, 'value', oldProps.value, newProps.value);              }          }      };      const processFragment = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {          const fragmentStartAnchor = (n2.el = n1 ? n1.el : hostCreateText(''));          const fragmentEndAnchor = (n2.anchor = n1 ? n1.anchor : hostCreateText(''));          let { patchFlag, dynamicChildren, slotScopeIds: fragmentSlotScopeIds } = n2;          if (// #5523 dev root fragment may inherit directives              (isHmrUpdating || patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */)) {              // HMR updated / Dev root fragment (w/ comments), force full diff              patchFlag = 0;              optimized = false;              dynamicChildren = null;          }          // check if this is a slot fragment with :slotted scope ids          if (fragmentSlotScopeIds) {              slotScopeIds = slotScopeIds                  ? slotScopeIds.concat(fragmentSlotScopeIds)                  : fragmentSlotScopeIds;          }          if (n1 == null) {              hostInsert(fragmentStartAnchor, container, anchor);              hostInsert(fragmentEndAnchor, container, anchor);              // a fragment can only have array children              // since they are either generated by the compiler, or implicitly created              // from arrays.              mountChildren(n2.children, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);          }          else {              if (patchFlag > 0 &&                  patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */ &&                  dynamicChildren &&                  // #2715 the previous fragment could've been a BAILed one as a result                  // of renderSlot() with no valid children                  n1.dynamicChildren) {                  // a stable fragment (template root or <template v-for>) doesn't need to                  // patch children order, but it may contain dynamicChildren.                  patchBlockChildren(n1.dynamicChildren, dynamicChildren, container, parentComponent, parentSuspense, isSVG, slotScopeIds);                  if (parentComponent && parentComponent.type.__hmrId) {                      traverseStaticChildren(n1, n2);                  }                  else if (                  // #2080 if the stable fragment has a key, it's a <template v-for> that may                  //  get moved around. Make sure all root level vnodes inherit el.                  // #2134 or if it's a component root, it may also get moved around                  // as the component is being moved.                  n2.key != null ||                      (parentComponent && n2 === parentComponent.subTree)) {                      traverseStaticChildren(n1, n2, true /* shallow */);                  }              }              else {                  // keyed / unkeyed, or manual fragments.                  // for keyed & unkeyed, since they are compiler generated from v-for,                  // each child is guaranteed to be a block so the fragment will never                  // have dynamicChildren.                  patchChildren(n1, n2, container, fragmentEndAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);              }          }      };      const processComponent = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {          n2.slotScopeIds = slotScopeIds;          if (n1 == null) {              if (n2.shapeFlag & 512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */) {                  parentComponent.ctx.activate(n2, container, anchor, isSVG, optimized);              }              else {                  mountComponent(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized);              }          }          else {              updateComponent(n1, n2, optimized);          }      };      const mountComponent = (initialVNode, container, anchor, parentComponent, parentSuspense, isSVG, optimized) => {          const instance = (initialVNode.component = createComponentInstance(initialVNode, parentComponent, parentSuspense));          if (instance.type.__hmrId) {              registerHMR(instance);          }          {              pushWarningContext(initialVNode);              startMeasure(instance, `mount`);          }          // inject renderer internals for keepAlive          if (isKeepAlive(initialVNode)) {              instance.ctx.renderer = internals;          }          // resolve props and slots for setup context          {              {                  startMeasure(instance, `init`);              }              setupComponent(instance);              {                  endMeasure(instance, `init`);              }          }          // setup() is async. This component relies on async logic to be resolved          // before proceeding          if (instance.asyncDep) {              parentSuspense && parentSuspense.registerDep(instance, setupRenderEffect);              // Give it a placeholder if this is not hydration              // TODO handle self-defined fallback              if (!initialVNode.el) {                  const placeholder = (instance.subTree = createVNode(Comment));                  processCommentNode(null, placeholder, container, anchor);              }              return;          }          setupRenderEffect(instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized);          {              popWarningContext();              endMeasure(instance, `mount`);          }      };      const updateComponent = (n1, n2, optimized) => {          const instance = (n2.component = n1.component);          if (shouldUpdateComponent(n1, n2, optimized)) {              if (instance.asyncDep &&                  !instance.asyncResolved) {                  // async & still pending - just update props and slots                  // since the component's reactive effect for render isn't set-up yet                  {                      pushWarningContext(n2);                  }                  updateComponentPreRender(instance, n2, optimized);                  {                      popWarningContext();                  }                  return;              }              else {                  // normal update                  instance.next = n2;                  // in case the child component is also queued, remove it to avoid                  // double updating the same child component in the same flush.                  invalidateJob(instance.update);                  // instance.update is the reactive effect.                  instance.update();              }          }          else {              // no update needed. just copy over properties              n2.el = n1.el;              instance.vnode = n2;          }      };      const setupRenderEffect = (instance, initialVNode, container, anchor, parentSuspense, isSVG, optimized) => {          const componentUpdateFn = () => {              if (!instance.isMounted) {                  let vnodeHook;                  const { el, props } = initialVNode;                  const { bm, m, parent } = instance;                  const isAsyncWrapperVNode = isAsyncWrapper(initialVNode);                  toggleRecurse(instance, false);                  // beforeMount hook                  if (bm) {                      invokeArrayFns(bm);                  }                  // onVnodeBeforeMount                  if (!isAsyncWrapperVNode &&                      (vnodeHook = props && props.onVnodeBeforeMount)) {                      invokeVNodeHook(vnodeHook, parent, initialVNode);                  }                  toggleRecurse(instance, true);                  if (el && hydrateNode) {                      // vnode has adopted host node - perform hydration instead of mount.                      const hydrateSubTree = () => {                          {                              startMeasure(instance, `render`);                          }                          instance.subTree = renderComponentRoot(instance);                          {                              endMeasure(instance, `render`);                          }                          {                              startMeasure(instance, `hydrate`);                          }                          hydrateNode(el, instance.subTree, instance, parentSuspense, null);                          {                              endMeasure(instance, `hydrate`);                          }                      };                      if (isAsyncWrapperVNode) {                          initialVNode.type.__asyncLoader().then(                          // note: we are moving the render call into an async callback,                          // which means it won't track dependencies - but it's ok because                          // a server-rendered async wrapper is already in resolved state                          // and it will never need to change.                          () => !instance.isUnmounted && hydrateSubTree());                      }                      else {                          hydrateSubTree();                      }                  }                  else {                      {                          startMeasure(instance, `render`);                      }                      const subTree = (instance.subTree = renderComponentRoot(instance));                      {                          endMeasure(instance, `render`);                      }                      {                          startMeasure(instance, `patch`);                      }                      patch(null, subTree, container, anchor, instance, parentSuspense, isSVG);                      {                          endMeasure(instance, `patch`);                      }                      initialVNode.el = subTree.el;                  }                  // mounted hook                  if (m) {                      queuePostRenderEffect(m, parentSuspense);                  }                  // onVnodeMounted                  if (!isAsyncWrapperVNode &&                      (vnodeHook = props && props.onVnodeMounted)) {                      const scopedInitialVNode = initialVNode;                      queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, scopedInitialVNode), parentSuspense);                  }                  // activated hook for keep-alive roots.                  // #1742 activated hook must be accessed after first render                  // since the hook may be injected by a child keep-alive                  if (initialVNode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */ ||                      (parent &&                          isAsyncWrapper(parent.vnode) &&                          parent.vnode.shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */)) {                      instance.a && queuePostRenderEffect(instance.a, parentSuspense);                  }                  instance.isMounted = true;                  {                      devtoolsComponentAdded(instance);                  }                  // #2458: deference mount-only object parameters to prevent memleaks                  initialVNode = container = anchor = null;              }              else {                  // updateComponent                  // This is triggered by mutation of component's own state (next: null)                  // OR parent calling processComponent (next: VNode)                  let { next, bu, u, parent, vnode } = instance;                  let originNext = next;                  let vnodeHook;                  {                      pushWarningContext(next || instance.vnode);                  }                  // Disallow component effect recursion during pre-lifecycle hooks.                  toggleRecurse(instance, false);                  if (next) {                      next.el = vnode.el;                      updateComponentPreRender(instance, next, optimized);                  }                  else {                      next = vnode;                  }                  // beforeUpdate hook                  if (bu) {                      invokeArrayFns(bu);                  }                  // onVnodeBeforeUpdate                  if ((vnodeHook = next.props && next.props.onVnodeBeforeUpdate)) {                      invokeVNodeHook(vnodeHook, parent, next, vnode);                  }                  toggleRecurse(instance, true);                  // render                  {                      startMeasure(instance, `render`);                  }                  const nextTree = renderComponentRoot(instance);                  {                      endMeasure(instance, `render`);                  }                  const prevTree = instance.subTree;                  instance.subTree = nextTree;                  {                      startMeasure(instance, `patch`);                  }                  patch(prevTree, nextTree,                   // parent may have changed if it's in a teleport                  hostParentNode(prevTree.el),                   // anchor may have changed if it's in a fragment                  getNextHostNode(prevTree), instance, parentSuspense, isSVG);                  {                      endMeasure(instance, `patch`);                  }                  next.el = nextTree.el;                  if (originNext === null) {                      // self-triggered update. In case of HOC, update parent component                      // vnode el. HOC is indicated by parent instance's subTree pointing                      // to child component's vnode                      updateHOCHostEl(instance, nextTree.el);                  }                  // updated hook                  if (u) {                      queuePostRenderEffect(u, parentSuspense);                  }                  // onVnodeUpdated                  if ((vnodeHook = next.props && next.props.onVnodeUpdated)) {                      queuePostRenderEffect(() => invokeVNodeHook(vnodeHook, parent, next, vnode), parentSuspense);                  }                  {                      devtoolsComponentUpdated(instance);                  }                  {                      popWarningContext();                  }              }          };          // create reactive effect for rendering          const effect = (instance.effect = new ReactiveEffect(componentUpdateFn, () => queueJob(update), instance.scope // track it in component's effect scope          ));          const update = (instance.update = () => effect.run());          update.id = instance.uid;          // allowRecurse          // #1801, #2043 component render effects should allow recursive updates          toggleRecurse(instance, true);          {              effect.onTrack = instance.rtc                  ? e => invokeArrayFns(instance.rtc, e)                  : void 0;              effect.onTrigger = instance.rtg                  ? e => invokeArrayFns(instance.rtg, e)                  : void 0;              update.ownerInstance = instance;          }          update();      };      const updateComponentPreRender = (instance, nextVNode, optimized) => {          nextVNode.component = instance;          const prevProps = instance.vnode.props;          instance.vnode = nextVNode;          instance.next = null;          updateProps(instance, nextVNode.props, prevProps, optimized);          updateSlots(instance, nextVNode.children, optimized);          pauseTracking();          // props update may have triggered pre-flush watchers.          // flush them before the render update.          flushPreFlushCbs();          resetTracking();      };      const patchChildren = (n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized = false) => {          const c1 = n1 && n1.children;          const prevShapeFlag = n1 ? n1.shapeFlag : 0;          const c2 = n2.children;          const { patchFlag, shapeFlag } = n2;          // fast path          if (patchFlag > 0) {              if (patchFlag & 128 /* PatchFlags.KEYED_FRAGMENT */) {                  // this could be either fully-keyed or mixed (some keyed some not)                  // presence of patchFlag means children are guaranteed to be arrays                  patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                  return;              }              else if (patchFlag & 256 /* PatchFlags.UNKEYED_FRAGMENT */) {                  // unkeyed                  patchUnkeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                  return;              }          }          // children has 3 possibilities: text, array or no children.          if (shapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {              // text children fast path              if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {                  unmountChildren(c1, parentComponent, parentSuspense);              }              if (c2 !== c1) {                  hostSetElementText(container, c2);              }          }          else {              if (prevShapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {                  // prev children was array                  if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {                      // two arrays, cannot assume anything, do full diff                      patchKeyedChildren(c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                  }                  else {                      // no new children, just unmount old                      unmountChildren(c1, parentComponent, parentSuspense, true);                  }              }              else {                  // prev children was text OR null                  // new children is array OR null                  if (prevShapeFlag & 8 /* ShapeFlags.TEXT_CHILDREN */) {                      hostSetElementText(container, '');                  }                  // mount new if array                  if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {                      mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                  }              }          }      };      const patchUnkeyedChildren = (c1, c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {          c1 = c1 || EMPTY_ARR;          c2 = c2 || EMPTY_ARR;          const oldLength = c1.length;          const newLength = c2.length;          const commonLength = Math.min(oldLength, newLength);          let i;          for (i = 0; i < commonLength; i++) {              const nextChild = (c2[i] = optimized                  ? cloneIfMounted(c2[i])                  : normalizeVNode(c2[i]));              patch(c1[i], nextChild, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);          }          if (oldLength > newLength) {              // remove old              unmountChildren(c1, parentComponent, parentSuspense, true, false, commonLength);          }          else {              // mount new              mountChildren(c2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, commonLength);          }      };      // can be all-keyed or mixed      const patchKeyedChildren = (c1, c2, container, parentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized) => {          let i = 0;          const l2 = c2.length;          let e1 = c1.length - 1; // prev ending index          let e2 = l2 - 1; // next ending index          // 1. sync from start          // (a b) c          // (a b) d e          while (i <= e1 && i <= e2) {              const n1 = c1[i];              const n2 = (c2[i] = optimized                  ? cloneIfMounted(c2[i])                  : normalizeVNode(c2[i]));              if (isSameVNodeType(n1, n2)) {                  patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);              }              else {                  break;              }              i++;          }          // 2. sync from end          // a (b c)          // d e (b c)          while (i <= e1 && i <= e2) {              const n1 = c1[e1];              const n2 = (c2[e2] = optimized                  ? cloneIfMounted(c2[e2])                  : normalizeVNode(c2[e2]));              if (isSameVNodeType(n1, n2)) {                  patch(n1, n2, container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);              }              else {                  break;              }              e1--;              e2--;          }          // 3. common sequence + mount          // (a b)          // (a b) c          // i = 2, e1 = 1, e2 = 2          // (a b)          // c (a b)          // i = 0, e1 = -1, e2 = 0          if (i > e1) {              if (i <= e2) {                  const nextPos = e2 + 1;                  const anchor = nextPos < l2 ? c2[nextPos].el : parentAnchor;                  while (i <= e2) {                      patch(null, (c2[i] = optimized                          ? cloneIfMounted(c2[i])                          : normalizeVNode(c2[i])), container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                      i++;                  }              }          }          // 4. common sequence + unmount          // (a b) c          // (a b)          // i = 2, e1 = 2, e2 = 1          // a (b c)          // (b c)          // i = 0, e1 = 0, e2 = -1          else if (i > e2) {              while (i <= e1) {                  unmount(c1[i], parentComponent, parentSuspense, true);                  i++;              }          }          // 5. unknown sequence          // [i ... e1 + 1]: a b [c d e] f g          // [i ... e2 + 1]: a b [e d c h] f g          // i = 2, e1 = 4, e2 = 5          else {              const s1 = i; // prev starting index              const s2 = i; // next starting index              // 5.1 build key:index map for newChildren              const keyToNewIndexMap = new Map();              for (i = s2; i <= e2; i++) {                  const nextChild = (c2[i] = optimized                      ? cloneIfMounted(c2[i])                      : normalizeVNode(c2[i]));                  if (nextChild.key != null) {                      if (keyToNewIndexMap.has(nextChild.key)) {                          warn$1(`Duplicate keys found during update:`, JSON.stringify(nextChild.key), `Make sure keys are unique.`);                      }                      keyToNewIndexMap.set(nextChild.key, i);                  }              }              // 5.2 loop through old children left to be patched and try to patch              // matching nodes & remove nodes that are no longer present              let j;              let patched = 0;              const toBePatched = e2 - s2 + 1;              let moved = false;              // used to track whether any node has moved              let maxNewIndexSoFar = 0;              // works as Map<newIndex, oldIndex>              // Note that oldIndex is offset by +1              // and oldIndex = 0 is a special value indicating the new node has              // no corresponding old node.              // used for determining longest stable subsequence              const newIndexToOldIndexMap = new Array(toBePatched);              for (i = 0; i < toBePatched; i++)                  newIndexToOldIndexMap[i] = 0;              for (i = s1; i <= e1; i++) {                  const prevChild = c1[i];                  if (patched >= toBePatched) {                      // all new children have been patched so this can only be a removal                      unmount(prevChild, parentComponent, parentSuspense, true);                      continue;                  }                  let newIndex;                  if (prevChild.key != null) {                      newIndex = keyToNewIndexMap.get(prevChild.key);                  }                  else {                      // key-less node, try to locate a key-less node of the same type                      for (j = s2; j <= e2; j++) {                          if (newIndexToOldIndexMap[j - s2] === 0 &&                              isSameVNodeType(prevChild, c2[j])) {                              newIndex = j;                              break;                          }                      }                  }                  if (newIndex === undefined) {                      unmount(prevChild, parentComponent, parentSuspense, true);                  }                  else {                      newIndexToOldIndexMap[newIndex - s2] = i + 1;                      if (newIndex >= maxNewIndexSoFar) {                          maxNewIndexSoFar = newIndex;                      }                      else {                          moved = true;                      }                      patch(prevChild, c2[newIndex], container, null, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                      patched++;                  }              }              // 5.3 move and mount              // generate longest stable subsequence only when nodes have moved              const increasingNewIndexSequence = moved                  ? getSequence(newIndexToOldIndexMap)                  : EMPTY_ARR;              j = increasingNewIndexSequence.length - 1;              // looping backwards so that we can use last patched node as anchor              for (i = toBePatched - 1; i >= 0; i--) {                  const nextIndex = s2 + i;                  const nextChild = c2[nextIndex];                  const anchor = nextIndex + 1 < l2 ? c2[nextIndex + 1].el : parentAnchor;                  if (newIndexToOldIndexMap[i] === 0) {                      // mount new                      patch(null, nextChild, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                  }                  else if (moved) {                      // move if:                      // There is no stable subsequence (e.g. a reverse)                      // OR current node is not among the stable sequence                      if (j < 0 || i !== increasingNewIndexSequence[j]) {                          move(nextChild, container, anchor, 2 /* MoveType.REORDER */);                      }                      else {                          j--;                      }                  }              }          }      };      const move = (vnode, container, anchor, moveType, parentSuspense = null) => {          const { el, type, transition, children, shapeFlag } = vnode;          if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {              move(vnode.component.subTree, container, anchor, moveType);              return;          }          if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {              vnode.suspense.move(container, anchor, moveType);              return;          }          if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {              type.move(vnode, container, anchor, internals);              return;          }          if (type === Fragment) {              hostInsert(el, container, anchor);              for (let i = 0; i < children.length; i++) {                  move(children[i], container, anchor, moveType);              }              hostInsert(vnode.anchor, container, anchor);              return;          }          if (type === Static) {              moveStaticNode(vnode, container, anchor);              return;          }          // single nodes          const needTransition = moveType !== 2 /* MoveType.REORDER */ &&              shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&              transition;          if (needTransition) {              if (moveType === 0 /* MoveType.ENTER */) {                  transition.beforeEnter(el);                  hostInsert(el, container, anchor);                  queuePostRenderEffect(() => transition.enter(el), parentSuspense);              }              else {                  const { leave, delayLeave, afterLeave } = transition;                  const remove = () => hostInsert(el, container, anchor);                  const performLeave = () => {                      leave(el, () => {                          remove();                          afterLeave && afterLeave();                      });                  };                  if (delayLeave) {                      delayLeave(el, remove, performLeave);                  }                  else {                      performLeave();                  }              }          }          else {              hostInsert(el, container, anchor);          }      };      const unmount = (vnode, parentComponent, parentSuspense, doRemove = false, optimized = false) => {          const { type, props, ref, children, dynamicChildren, shapeFlag, patchFlag, dirs } = vnode;          // unset ref          if (ref != null) {              setRef(ref, null, parentSuspense, vnode, true);          }          if (shapeFlag & 256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */) {              parentComponent.ctx.deactivate(vnode);              return;          }          const shouldInvokeDirs = shapeFlag & 1 /* ShapeFlags.ELEMENT */ && dirs;          const shouldInvokeVnodeHook = !isAsyncWrapper(vnode);          let vnodeHook;          if (shouldInvokeVnodeHook &&              (vnodeHook = props && props.onVnodeBeforeUnmount)) {              invokeVNodeHook(vnodeHook, parentComponent, vnode);          }          if (shapeFlag & 6 /* ShapeFlags.COMPONENT */) {              unmountComponent(vnode.component, parentSuspense, doRemove);          }          else {              if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {                  vnode.suspense.unmount(parentSuspense, doRemove);                  return;              }              if (shouldInvokeDirs) {                  invokeDirectiveHook(vnode, null, parentComponent, 'beforeUnmount');              }              if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {                  vnode.type.remove(vnode, parentComponent, parentSuspense, optimized, internals, doRemove);              }              else if (dynamicChildren &&                  // #1153: fast path should not be taken for non-stable (v-for) fragments                  (type !== Fragment ||                      (patchFlag > 0 && patchFlag & 64 /* PatchFlags.STABLE_FRAGMENT */))) {                  // fast path for block nodes: only need to unmount dynamic children.                  unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true);              }              else if ((type === Fragment &&                  patchFlag &                      (128 /* PatchFlags.KEYED_FRAGMENT */ | 256 /* PatchFlags.UNKEYED_FRAGMENT */)) ||                  (!optimized && shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */)) {                  unmountChildren(children, parentComponent, parentSuspense);              }              if (doRemove) {                  remove(vnode);              }          }          if ((shouldInvokeVnodeHook &&              (vnodeHook = props && props.onVnodeUnmounted)) ||              shouldInvokeDirs) {              queuePostRenderEffect(() => {                  vnodeHook && invokeVNodeHook(vnodeHook, parentComponent, vnode);                  shouldInvokeDirs &&                      invokeDirectiveHook(vnode, null, parentComponent, 'unmounted');              }, parentSuspense);          }      };      const remove = vnode => {          const { type, el, anchor, transition } = vnode;          if (type === Fragment) {              if (vnode.patchFlag > 0 &&                  vnode.patchFlag & 2048 /* PatchFlags.DEV_ROOT_FRAGMENT */ &&                  transition &&                  !transition.persisted) {                  vnode.children.forEach(child => {                      if (child.type === Comment) {                          hostRemove(child.el);                      }                      else {                          remove(child);                      }                  });              }              else {                  removeFragment(el, anchor);              }              return;          }          if (type === Static) {              removeStaticNode(vnode);              return;          }          const performRemove = () => {              hostRemove(el);              if (transition && !transition.persisted && transition.afterLeave) {                  transition.afterLeave();              }          };          if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ &&              transition &&              !transition.persisted) {              const { leave, delayLeave } = transition;              const performLeave = () => leave(el, performRemove);              if (delayLeave) {                  delayLeave(vnode.el, performRemove, performLeave);              }              else {                  performLeave();              }          }          else {              performRemove();          }      };      const removeFragment = (cur, end) => {          // For fragments, directly remove all contained DOM nodes.          // (fragment child nodes cannot have transition)          let next;          while (cur !== end) {              next = hostNextSibling(cur);              hostRemove(cur);              cur = next;          }          hostRemove(end);      };      const unmountComponent = (instance, parentSuspense, doRemove) => {          if (instance.type.__hmrId) {              unregisterHMR(instance);          }          const { bum, scope, update, subTree, um } = instance;          // beforeUnmount hook          if (bum) {              invokeArrayFns(bum);          }          // stop effects in component scope          scope.stop();          // update may be null if a component is unmounted before its async          // setup has resolved.          if (update) {              // so that scheduler will no longer invoke it              update.active = false;              unmount(subTree, instance, parentSuspense, doRemove);          }          // unmounted hook          if (um) {              queuePostRenderEffect(um, parentSuspense);          }          queuePostRenderEffect(() => {              instance.isUnmounted = true;          }, parentSuspense);          // A component with async dep inside a pending suspense is unmounted before          // its async dep resolves. This should remove the dep from the suspense, and          // cause the suspense to resolve immediately if that was the last dep.          if (parentSuspense &&              parentSuspense.pendingBranch &&              !parentSuspense.isUnmounted &&              instance.asyncDep &&              !instance.asyncResolved &&              instance.suspenseId === parentSuspense.pendingId) {              parentSuspense.deps--;              if (parentSuspense.deps === 0) {                  parentSuspense.resolve();              }          }          {              devtoolsComponentRemoved(instance);          }      };      const unmountChildren = (children, parentComponent, parentSuspense, doRemove = false, optimized = false, start = 0) => {          for (let i = start; i < children.length; i++) {              unmount(children[i], parentComponent, parentSuspense, doRemove, optimized);          }      };      const getNextHostNode = vnode => {          if (vnode.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {              return getNextHostNode(vnode.component.subTree);          }          if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {              return vnode.suspense.next();          }          return hostNextSibling((vnode.anchor || vnode.el));      };      const render = (vnode, container, isSVG) => {          if (vnode == null) {              if (container._vnode) {                  unmount(container._vnode, null, null, true);              }          }          else {              patch(container._vnode || null, vnode, container, null, null, null, isSVG);          }          flushPreFlushCbs();          flushPostFlushCbs();          container._vnode = vnode;      };      const internals = {          p: patch,          um: unmount,          m: move,          r: remove,          mt: mountComponent,          mc: mountChildren,          pc: patchChildren,          pbc: patchBlockChildren,          n: getNextHostNode,          o: options      };      let hydrate;      let hydrateNode;      if (createHydrationFns) {          [hydrate, hydrateNode] = createHydrationFns(internals);      }      return {          render,          hydrate,          createApp: createAppAPI(render, hydrate)      };  }  function toggleRecurse({ effect, update }, allowed) {      effect.allowRecurse = update.allowRecurse = allowed;  }  /**   * #1156   * When a component is HMR-enabled, we need to make sure that all static nodes   * inside a block also inherit the DOM element from the previous tree so that   * HMR updates (which are full updates) can retrieve the element for patching.   *   * #2080   * Inside keyed `template` fragment static children, if a fragment is moved,   * the children will always be moved. Therefore, in order to ensure correct move   * position, el should be inherited from previous nodes.   */  function traverseStaticChildren(n1, n2, shallow = false) {      const ch1 = n1.children;      const ch2 = n2.children;      if (isArray(ch1) && isArray(ch2)) {          for (let i = 0; i < ch1.length; i++) {              // this is only called in the optimized path so array children are              // guaranteed to be vnodes              const c1 = ch1[i];              let c2 = ch2[i];              if (c2.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && !c2.dynamicChildren) {                  if (c2.patchFlag <= 0 || c2.patchFlag === 32 /* PatchFlags.HYDRATE_EVENTS */) {                      c2 = ch2[i] = cloneIfMounted(ch2[i]);                      c2.el = c1.el;                  }                  if (!shallow)                      traverseStaticChildren(c1, c2);              }              // #6852 also inherit for text nodes              if (c2.type === Text) {                  c2.el = c1.el;              }              // also inherit for comment nodes, but not placeholders (e.g. v-if which              // would have received .el during block patch)              if (c2.type === Comment && !c2.el) {                  c2.el = c1.el;              }          }      }  }  // https://en.wikipedia.org/wiki/Longest_increasing_subsequence  function getSequence(arr) {      const p = arr.slice();      const result = [0];      let i, j, u, v, c;      const len = arr.length;      for (i = 0; i < len; i++) {          const arrI = arr[i];          if (arrI !== 0) {              j = result[result.length - 1];              if (arr[j] < arrI) {                  p[i] = j;                  result.push(i);                  continue;              }              u = 0;              v = result.length - 1;              while (u < v) {                  c = (u + v) >> 1;                  if (arr[result[c]] < arrI) {                      u = c + 1;                  }                  else {                      v = c;                  }              }              if (arrI < arr[result[u]]) {                  if (u > 0) {                      p[i] = result[u - 1];                  }                  result[u] = i;              }          }      }      u = result.length;      v = result[u - 1];      while (u-- > 0) {          result[u] = v;          v = p[v];      }      return result;  }  const isTeleport = (type) => type.__isTeleport;  const isTeleportDisabled = (props) => props && (props.disabled || props.disabled === '');  const isTargetSVG = (target) => typeof SVGElement !== 'undefined' && target instanceof SVGElement;  const resolveTarget = (props, select) => {      const targetSelector = props && props.to;      if (isString(targetSelector)) {          if (!select) {              warn$1(`Current renderer does not support string target for Teleports. ` +                      `(missing querySelector renderer option)`);              return null;          }          else {              const target = select(targetSelector);              if (!target) {                  warn$1(`Failed to locate Teleport target with selector "${targetSelector}". ` +                          `Note the target element must exist before the component is mounted - ` +                          `i.e. the target cannot be rendered by the component itself, and ` +                          `ideally should be outside of the entire Vue component tree.`);              }              return target;          }      }      else {          if (!targetSelector && !isTeleportDisabled(props)) {              warn$1(`Invalid Teleport target: ${targetSelector}`);          }          return targetSelector;      }  };  const TeleportImpl = {      __isTeleport: true,      process(n1, n2, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized, internals) {          const { mc: mountChildren, pc: patchChildren, pbc: patchBlockChildren, o: { insert, querySelector, createText, createComment } } = internals;          const disabled = isTeleportDisabled(n2.props);          let { shapeFlag, children, dynamicChildren } = n2;          // #3302          // HMR updated, force full diff          if (isHmrUpdating) {              optimized = false;              dynamicChildren = null;          }          if (n1 == null) {              // insert anchors in the main view              const placeholder = (n2.el = createComment('teleport start')                  );              const mainAnchor = (n2.anchor = createComment('teleport end')                  );              insert(placeholder, container, anchor);              insert(mainAnchor, container, anchor);              const target = (n2.target = resolveTarget(n2.props, querySelector));              const targetAnchor = (n2.targetAnchor = createText(''));              if (target) {                  insert(targetAnchor, target);                  // #2652 we could be teleporting from a non-SVG tree into an SVG tree                  isSVG = isSVG || isTargetSVG(target);              }              else if (!disabled) {                  warn$1('Invalid Teleport target on mount:', target, `(${typeof target})`);              }              const mount = (container, anchor) => {                  // Teleport *always* has Array children. This is enforced in both the                  // compiler and vnode children normalization.                  if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {                      mountChildren(children, container, anchor, parentComponent, parentSuspense, isSVG, slotScopeIds, optimized);                  }              };              if (disabled) {                  mount(container, mainAnchor);              }              else if (target) {                  mount(target, targetAnchor);              }          }          else {              // update content              n2.el = n1.el;              const mainAnchor = (n2.anchor = n1.anchor);              const target = (n2.target = n1.target);              const targetAnchor = (n2.targetAnchor = n1.targetAnchor);              const wasDisabled = isTeleportDisabled(n1.props);              const currentContainer = wasDisabled ? container : target;              const currentAnchor = wasDisabled ? mainAnchor : targetAnchor;              isSVG = isSVG || isTargetSVG(target);              if (dynamicChildren) {                  // fast path when the teleport happens to be a block root                  patchBlockChildren(n1.dynamicChildren, dynamicChildren, currentContainer, parentComponent, parentSuspense, isSVG, slotScopeIds);                  // even in block tree mode we need to make sure all root-level nodes                  // in the teleport inherit previous DOM references so that they can                  // be moved in future patches.                  traverseStaticChildren(n1, n2, true);              }              else if (!optimized) {                  patchChildren(n1, n2, currentContainer, currentAnchor, parentComponent, parentSuspense, isSVG, slotScopeIds, false);              }              if (disabled) {                  if (!wasDisabled) {                      // enabled -> disabled                      // move into main container                      moveTeleport(n2, container, mainAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);                  }              }              else {                  // target changed                  if ((n2.props && n2.props.to) !== (n1.props && n1.props.to)) {                      const nextTarget = (n2.target = resolveTarget(n2.props, querySelector));                      if (nextTarget) {                          moveTeleport(n2, nextTarget, null, internals, 0 /* TeleportMoveTypes.TARGET_CHANGE */);                      }                      else {                          warn$1('Invalid Teleport target on update:', target, `(${typeof target})`);                      }                  }                  else if (wasDisabled) {                      // disabled -> enabled                      // move into teleport target                      moveTeleport(n2, target, targetAnchor, internals, 1 /* TeleportMoveTypes.TOGGLE */);                  }              }          }          updateCssVars(n2);      },      remove(vnode, parentComponent, parentSuspense, optimized, { um: unmount, o: { remove: hostRemove } }, doRemove) {          const { shapeFlag, children, anchor, targetAnchor, target, props } = vnode;          if (target) {              hostRemove(targetAnchor);          }          // an unmounted teleport should always remove its children if not disabled          if (doRemove || !isTeleportDisabled(props)) {              hostRemove(anchor);              if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {                  for (let i = 0; i < children.length; i++) {                      const child = children[i];                      unmount(child, parentComponent, parentSuspense, true, !!child.dynamicChildren);                  }              }          }      },      move: moveTeleport,      hydrate: hydrateTeleport  };  function moveTeleport(vnode, container, parentAnchor, { o: { insert }, m: move }, moveType = 2 /* TeleportMoveTypes.REORDER */) {      // move target anchor if this is a target change.      if (moveType === 0 /* TeleportMoveTypes.TARGET_CHANGE */) {          insert(vnode.targetAnchor, container, parentAnchor);      }      const { el, anchor, shapeFlag, children, props } = vnode;      const isReorder = moveType === 2 /* TeleportMoveTypes.REORDER */;      // move main view anchor if this is a re-order.      if (isReorder) {          insert(el, container, parentAnchor);      }      // if this is a re-order and teleport is enabled (content is in target)      // do not move children. So the opposite is: only move children if this      // is not a reorder, or the teleport is disabled      if (!isReorder || isTeleportDisabled(props)) {          // Teleport has either Array children or no children.          if (shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {              for (let i = 0; i < children.length; i++) {                  move(children[i], container, parentAnchor, 2 /* MoveType.REORDER */);              }          }      }      // move main view anchor if this is a re-order.      if (isReorder) {          insert(anchor, container, parentAnchor);      }  }  function hydrateTeleport(node, vnode, parentComponent, parentSuspense, slotScopeIds, optimized, { o: { nextSibling, parentNode, querySelector } }, hydrateChildren) {      const target = (vnode.target = resolveTarget(vnode.props, querySelector));      if (target) {          // if multiple teleports rendered to the same target element, we need to          // pick up from where the last teleport finished instead of the first node          const targetNode = target._lpa || target.firstChild;          if (vnode.shapeFlag & 16 /* ShapeFlags.ARRAY_CHILDREN */) {              if (isTeleportDisabled(vnode.props)) {                  vnode.anchor = hydrateChildren(nextSibling(node), vnode, parentNode(node), parentComponent, parentSuspense, slotScopeIds, optimized);                  vnode.targetAnchor = targetNode;              }              else {                  vnode.anchor = nextSibling(node);                  // lookahead until we find the target anchor                  // we cannot rely on return value of hydrateChildren() because there                  // could be nested teleports                  let targetAnchor = targetNode;                  while (targetAnchor) {                      targetAnchor = nextSibling(targetAnchor);                      if (targetAnchor &&                          targetAnchor.nodeType === 8 &&                          targetAnchor.data === 'teleport anchor') {                          vnode.targetAnchor = targetAnchor;                          target._lpa =                              vnode.targetAnchor && nextSibling(vnode.targetAnchor);                          break;                      }                  }                  hydrateChildren(targetNode, vnode, target, parentComponent, parentSuspense, slotScopeIds, optimized);              }          }          updateCssVars(vnode);      }      return vnode.anchor && nextSibling(vnode.anchor);  }  // Force-casted public typing for h and TSX props inference  const Teleport = TeleportImpl;  function updateCssVars(vnode) {      // presence of .ut method indicates owner component uses css vars.      // code path here can assume browser environment.      const ctx = vnode.ctx;      if (ctx && ctx.ut) {          let node = vnode.children[0].el;          while (node !== vnode.targetAnchor) {              if (node.nodeType === 1)                  node.setAttribute('data-v-owner', ctx.uid);              node = node.nextSibling;          }          ctx.ut();      }  }  const Fragment = Symbol('Fragment' );  const Text = Symbol('Text' );  const Comment = Symbol('Comment' );  const Static = Symbol('Static' );  // Since v-if and v-for are the two possible ways node structure can dynamically  // change, once we consider v-if branches and each v-for fragment a block, we  // can divide a template into nested blocks, and within each block the node  // structure would be stable. This allows us to skip most children diffing  // and only worry about the dynamic nodes (indicated by patch flags).  const blockStack = [];  let currentBlock = null;  /**   * Open a block.   * This must be called before `createBlock`. It cannot be part of `createBlock`   * because the children of the block are evaluated before `createBlock` itself   * is called. The generated code typically looks like this:   *   * ```js   * function render() {   *   return (openBlock(),createBlock('div', null, [...]))   * }   * ```   * disableTracking is true when creating a v-for fragment block, since a v-for   * fragment always diffs its children.   *   * @private   */  function openBlock(disableTracking = false) {      blockStack.push((currentBlock = disableTracking ? null : []));  }  function closeBlock() {      blockStack.pop();      currentBlock = blockStack[blockStack.length - 1] || null;  }  // Whether we should be tracking dynamic child nodes inside a block.  // Only tracks when this value is > 0  // We are not using a simple boolean because this value may need to be  // incremented/decremented by nested usage of v-once (see below)  let isBlockTreeEnabled = 1;  /**   * Block tracking sometimes needs to be disabled, for example during the   * creation of a tree that needs to be cached by v-once. The compiler generates   * code like this:   *   * ``` js   * _cache[1] || (   *   setBlockTracking(-1),   *   _cache[1] = createVNode(...),   *   setBlockTracking(1),   *   _cache[1]   * )   * ```   *   * @private   */  function setBlockTracking(value) {      isBlockTreeEnabled += value;  }  function setupBlock(vnode) {      // save current block children on the block vnode      vnode.dynamicChildren =          isBlockTreeEnabled > 0 ? currentBlock || EMPTY_ARR : null;      // close block      closeBlock();      // a block is always going to be patched, so track it as a child of its      // parent block      if (isBlockTreeEnabled > 0 && currentBlock) {          currentBlock.push(vnode);      }      return vnode;  }  /**   * @private   */  function createElementBlock(type, props, children, patchFlag, dynamicProps, shapeFlag) {      return setupBlock(createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, true /* isBlock */));  }  /**   * Create a block root vnode. Takes the same exact arguments as `createVNode`.   * A block root keeps track of dynamic nodes within the block in the   * `dynamicChildren` array.   *   * @private   */  function createBlock(type, props, children, patchFlag, dynamicProps) {      return setupBlock(createVNode(type, props, children, patchFlag, dynamicProps, true /* isBlock: prevent a block from tracking itself */));  }  function isVNode(value) {      return value ? value.__v_isVNode === true : false;  }  function isSameVNodeType(n1, n2) {      if (n2.shapeFlag & 6 /* ShapeFlags.COMPONENT */ &&          hmrDirtyComponents.has(n2.type)) {          // #7042, ensure the vnode being unmounted during HMR          // bitwise operations to remove keep alive flags          n1.shapeFlag &= ~256 /* ShapeFlags.COMPONENT_SHOULD_KEEP_ALIVE */;          n2.shapeFlag &= ~512 /* ShapeFlags.COMPONENT_KEPT_ALIVE */;          // HMR only: if the component has been hot-updated, force a reload.          return false;      }      return n1.type === n2.type && n1.key === n2.key;  }  let vnodeArgsTransformer;  /**   * Internal API for registering an arguments transform for createVNode   * used for creating stubs in the test-utils   * It is *internal* but needs to be exposed for test-utils to pick up proper   * typings   */  function transformVNodeArgs(transformer) {      vnodeArgsTransformer = transformer;  }  const createVNodeWithArgsTransform = (...args) => {      return _createVNode(...(vnodeArgsTransformer          ? vnodeArgsTransformer(args, currentRenderingInstance)          : args));  };  const InternalObjectKey = `__vInternal`;  const normalizeKey = ({ key }) => key != null ? key : null;  const normalizeRef = ({ ref, ref_key, ref_for }) => {      return (ref != null          ? isString(ref) || isRef(ref) || isFunction(ref)              ? { i: currentRenderingInstance, r: ref, k: ref_key, f: !!ref_for }              : ref          : null);  };  function createBaseVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, shapeFlag = type === Fragment ? 0 : 1 /* ShapeFlags.ELEMENT */, isBlockNode = false, needFullChildrenNormalization = false) {      const vnode = {          __v_isVNode: true,          __v_skip: true,          type,          props,          key: props && normalizeKey(props),          ref: props && normalizeRef(props),          scopeId: currentScopeId,          slotScopeIds: null,          children,          component: null,          suspense: null,          ssContent: null,          ssFallback: null,          dirs: null,          transition: null,          el: null,          anchor: null,          target: null,          targetAnchor: null,          staticCount: 0,          shapeFlag,          patchFlag,          dynamicProps,          dynamicChildren: null,          appContext: null,          ctx: currentRenderingInstance      };      if (needFullChildrenNormalization) {          normalizeChildren(vnode, children);          // normalize suspense children          if (shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {              type.normalize(vnode);          }      }      else if (children) {          // compiled element vnode - if children is passed, only possible types are          // string or Array.          vnode.shapeFlag |= isString(children)              ? 8 /* ShapeFlags.TEXT_CHILDREN */              : 16 /* ShapeFlags.ARRAY_CHILDREN */;      }      // validate key      if (vnode.key !== vnode.key) {          warn$1(`VNode created with invalid key (NaN). VNode type:`, vnode.type);      }      // track vnode for block tree      if (isBlockTreeEnabled > 0 &&          // avoid a block node from tracking itself          !isBlockNode &&          // has current parent block          currentBlock &&          // presence of a patch flag indicates this node needs patching on updates.          // component nodes also should always be patched, because even if the          // component doesn't need to update, it needs to persist the instance on to          // the next vnode so that it can be properly unmounted later.          (vnode.patchFlag > 0 || shapeFlag & 6 /* ShapeFlags.COMPONENT */) &&          // the EVENTS flag is only for hydration and if it is the only flag, the          // vnode should not be considered dynamic due to handler caching.          vnode.patchFlag !== 32 /* PatchFlags.HYDRATE_EVENTS */) {          currentBlock.push(vnode);      }      return vnode;  }  const createVNode = (createVNodeWithArgsTransform );  function _createVNode(type, props = null, children = null, patchFlag = 0, dynamicProps = null, isBlockNode = false) {      if (!type || type === NULL_DYNAMIC_COMPONENT) {          if (!type) {              warn$1(`Invalid vnode type when creating vnode: ${type}.`);          }          type = Comment;      }      if (isVNode(type)) {          // createVNode receiving an existing vnode. This happens in cases like          // <component :is="vnode"/>          // #2078 make sure to merge refs during the clone instead of overwriting it          const cloned = cloneVNode(type, props, true /* mergeRef: true */);          if (children) {              normalizeChildren(cloned, children);          }          if (isBlockTreeEnabled > 0 && !isBlockNode && currentBlock) {              if (cloned.shapeFlag & 6 /* ShapeFlags.COMPONENT */) {                  currentBlock[currentBlock.indexOf(type)] = cloned;              }              else {                  currentBlock.push(cloned);              }          }          cloned.patchFlag |= -2 /* PatchFlags.BAIL */;          return cloned;      }      // class component normalization.      if (isClassComponent(type)) {          type = type.__vccOpts;      }      // class & style normalization.      if (props) {          // for reactive or proxy objects, we need to clone it to enable mutation.          props = guardReactiveProps(props);          let { class: klass, style } = props;          if (klass && !isString(klass)) {              props.class = normalizeClass(klass);          }          if (isObject(style)) {              // reactive state objects need to be cloned since they are likely to be              // mutated              if (isProxy(style) && !isArray(style)) {                  style = extend({}, style);              }              props.style = normalizeStyle(style);          }      }      // encode the vnode type information into a bitmap      const shapeFlag = isString(type)          ? 1 /* ShapeFlags.ELEMENT */          : isSuspense(type)              ? 128 /* ShapeFlags.SUSPENSE */              : isTeleport(type)                  ? 64 /* ShapeFlags.TELEPORT */                  : isObject(type)                      ? 4 /* ShapeFlags.STATEFUL_COMPONENT */                      : isFunction(type)                          ? 2 /* ShapeFlags.FUNCTIONAL_COMPONENT */                          : 0;      if (shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */ && isProxy(type)) {          type = toRaw(type);          warn$1(`Vue received a Component which was made a reactive object. This can ` +              `lead to unnecessary performance overhead, and should be avoided by ` +              `marking the component with \`markRaw\` or using \`shallowRef\` ` +              `instead of \`ref\`.`, `\nComponent that was made reactive: `, type);      }      return createBaseVNode(type, props, children, patchFlag, dynamicProps, shapeFlag, isBlockNode, true);  }  function guardReactiveProps(props) {      if (!props)          return null;      return isProxy(props) || InternalObjectKey in props          ? extend({}, props)          : props;  }  function cloneVNode(vnode, extraProps, mergeRef = false) {      // This is intentionally NOT using spread or extend to avoid the runtime      // key enumeration cost.      const { props, ref, patchFlag, children } = vnode;      const mergedProps = extraProps ? mergeProps(props || {}, extraProps) : props;      const cloned = {          __v_isVNode: true,          __v_skip: true,          type: vnode.type,          props: mergedProps,          key: mergedProps && normalizeKey(mergedProps),          ref: extraProps && extraProps.ref              ? // #2078 in the case of <component :is="vnode" ref="extra"/>                  // if the vnode itself already has a ref, cloneVNode will need to merge                  // the refs so the single vnode can be set on multiple refs                  mergeRef && ref                      ? isArray(ref)                          ? ref.concat(normalizeRef(extraProps))                          : [ref, normalizeRef(extraProps)]                      : normalizeRef(extraProps)              : ref,          scopeId: vnode.scopeId,          slotScopeIds: vnode.slotScopeIds,          children: patchFlag === -1 /* PatchFlags.HOISTED */ && isArray(children)              ? children.map(deepCloneVNode)              : children,          target: vnode.target,          targetAnchor: vnode.targetAnchor,          staticCount: vnode.staticCount,          shapeFlag: vnode.shapeFlag,          // if the vnode is cloned with extra props, we can no longer assume its          // existing patch flag to be reliable and need to add the FULL_PROPS flag.          // note: preserve flag for fragments since they use the flag for children          // fast paths only.          patchFlag: extraProps && vnode.type !== Fragment              ? patchFlag === -1 // hoisted node                  ? 16 /* PatchFlags.FULL_PROPS */                  : patchFlag | 16 /* PatchFlags.FULL_PROPS */              : patchFlag,          dynamicProps: vnode.dynamicProps,          dynamicChildren: vnode.dynamicChildren,          appContext: vnode.appContext,          dirs: vnode.dirs,          transition: vnode.transition,          // These should technically only be non-null on mounted VNodes. However,          // they *should* be copied for kept-alive vnodes. So we just always copy          // them since them being non-null during a mount doesn't affect the logic as          // they will simply be overwritten.          component: vnode.component,          suspense: vnode.suspense,          ssContent: vnode.ssContent && cloneVNode(vnode.ssContent),          ssFallback: vnode.ssFallback && cloneVNode(vnode.ssFallback),          el: vnode.el,          anchor: vnode.anchor,          ctx: vnode.ctx      };      return cloned;  }  /**   * Dev only, for HMR of hoisted vnodes reused in v-for   * https://github.com/vitejs/vite/issues/2022   */  function deepCloneVNode(vnode) {      const cloned = cloneVNode(vnode);      if (isArray(vnode.children)) {          cloned.children = vnode.children.map(deepCloneVNode);      }      return cloned;  }  /**   * @private   */  function createTextVNode(text = ' ', flag = 0) {      return createVNode(Text, null, text, flag);  }  /**   * @private   */  function createStaticVNode(content, numberOfNodes) {      // A static vnode can contain multiple stringified elements, and the number      // of elements is necessary for hydration.      const vnode = createVNode(Static, null, content);      vnode.staticCount = numberOfNodes;      return vnode;  }  /**   * @private   */  function createCommentVNode(text = '',   // when used as the v-else branch, the comment node must be created as a  // block to ensure correct updates.  asBlock = false) {      return asBlock          ? (openBlock(), createBlock(Comment, null, text))          : createVNode(Comment, null, text);  }  function normalizeVNode(child) {      if (child == null || typeof child === 'boolean') {          // empty placeholder          return createVNode(Comment);      }      else if (isArray(child)) {          // fragment          return createVNode(Fragment, null,           // #3666, avoid reference pollution when reusing vnode          child.slice());      }      else if (typeof child === 'object') {          // already vnode, this should be the most common since compiled templates          // always produce all-vnode children arrays          return cloneIfMounted(child);      }      else {          // strings and numbers          return createVNode(Text, null, String(child));      }  }  // optimized normalization for template-compiled render fns  function cloneIfMounted(child) {      return (child.el === null && child.patchFlag !== -1 /* PatchFlags.HOISTED */) ||          child.memo          ? child          : cloneVNode(child);  }  function normalizeChildren(vnode, children) {      let type = 0;      const { shapeFlag } = vnode;      if (children == null) {          children = null;      }      else if (isArray(children)) {          type = 16 /* ShapeFlags.ARRAY_CHILDREN */;      }      else if (typeof children === 'object') {          if (shapeFlag & (1 /* ShapeFlags.ELEMENT */ | 64 /* ShapeFlags.TELEPORT */)) {              // Normalize slot to plain children for plain element and Teleport              const slot = children.default;              if (slot) {                  // _c marker is added by withCtx() indicating this is a compiled slot                  slot._c && (slot._d = false);                  normalizeChildren(vnode, slot());                  slot._c && (slot._d = true);              }              return;          }          else {              type = 32 /* ShapeFlags.SLOTS_CHILDREN */;              const slotFlag = children._;              if (!slotFlag && !(InternalObjectKey in children)) {                  children._ctx = currentRenderingInstance;              }              else if (slotFlag === 3 /* SlotFlags.FORWARDED */ && currentRenderingInstance) {                  // a child component receives forwarded slots from the parent.                  // its slot type is determined by its parent's slot type.                  if (currentRenderingInstance.slots._ === 1 /* SlotFlags.STABLE */) {                      children._ = 1 /* SlotFlags.STABLE */;                  }                  else {                      children._ = 2 /* SlotFlags.DYNAMIC */;                      vnode.patchFlag |= 1024 /* PatchFlags.DYNAMIC_SLOTS */;                  }              }          }      }      else if (isFunction(children)) {          children = { default: children, _ctx: currentRenderingInstance };          type = 32 /* ShapeFlags.SLOTS_CHILDREN */;      }      else {          children = String(children);          // force teleport children to array so it can be moved around          if (shapeFlag & 64 /* ShapeFlags.TELEPORT */) {              type = 16 /* ShapeFlags.ARRAY_CHILDREN */;              children = [createTextVNode(children)];          }          else {              type = 8 /* ShapeFlags.TEXT_CHILDREN */;          }      }      vnode.children = children;      vnode.shapeFlag |= type;  }  function mergeProps(...args) {      const ret = {};      for (let i = 0; i < args.length; i++) {          const toMerge = args[i];          for (const key in toMerge) {              if (key === 'class') {                  if (ret.class !== toMerge.class) {                      ret.class = normalizeClass([ret.class, toMerge.class]);                  }              }              else if (key === 'style') {                  ret.style = normalizeStyle([ret.style, toMerge.style]);              }              else if (isOn(key)) {                  const existing = ret[key];                  const incoming = toMerge[key];                  if (incoming &&                      existing !== incoming &&                      !(isArray(existing) && existing.includes(incoming))) {                      ret[key] = existing                          ? [].concat(existing, incoming)                          : incoming;                  }              }              else if (key !== '') {                  ret[key] = toMerge[key];              }          }      }      return ret;  }  function invokeVNodeHook(hook, instance, vnode, prevVNode = null) {      callWithAsyncErrorHandling(hook, instance, 7 /* ErrorCodes.VNODE_HOOK */, [          vnode,          prevVNode      ]);  }  const emptyAppContext = createAppContext();  let uid$1 = 0;  function createComponentInstance(vnode, parent, suspense) {      const type = vnode.type;      // inherit parent app context - or - if root, adopt from root vnode      const appContext = (parent ? parent.appContext : vnode.appContext) || emptyAppContext;      const instance = {          uid: uid$1++,          vnode,          type,          parent,          appContext,          root: null,          next: null,          subTree: null,          effect: null,          update: null,          scope: new EffectScope(true /* detached */),          render: null,          proxy: null,          exposed: null,          exposeProxy: null,          withProxy: null,          provides: parent ? parent.provides : Object.create(appContext.provides),          accessCache: null,          renderCache: [],          // local resolved assets          components: null,          directives: null,          // resolved props and emits options          propsOptions: normalizePropsOptions(type, appContext),          emitsOptions: normalizeEmitsOptions(type, appContext),          // emit          emit: null,          emitted: null,          // props default value          propsDefaults: EMPTY_OBJ,          // inheritAttrs          inheritAttrs: type.inheritAttrs,          // state          ctx: EMPTY_OBJ,          data: EMPTY_OBJ,          props: EMPTY_OBJ,          attrs: EMPTY_OBJ,          slots: EMPTY_OBJ,          refs: EMPTY_OBJ,          setupState: EMPTY_OBJ,          setupContext: null,          // suspense related          suspense,          suspenseId: suspense ? suspense.pendingId : 0,          asyncDep: null,          asyncResolved: false,          // lifecycle hooks          // not using enums here because it results in computed properties          isMounted: false,          isUnmounted: false,          isDeactivated: false,          bc: null,          c: null,          bm: null,          m: null,          bu: null,          u: null,          um: null,          bum: null,          da: null,          a: null,          rtg: null,          rtc: null,          ec: null,          sp: null      };      {          instance.ctx = createDevRenderContext(instance);      }      instance.root = parent ? parent.root : instance;      instance.emit = emit$1.bind(null, instance);      // apply custom element special handling      if (vnode.ce) {          vnode.ce(instance);      }      return instance;  }  let currentInstance = null;  const getCurrentInstance = () => currentInstance || currentRenderingInstance;  const setCurrentInstance = (instance) => {      currentInstance = instance;      instance.scope.on();  };  const unsetCurrentInstance = () => {      currentInstance && currentInstance.scope.off();      currentInstance = null;  };  const isBuiltInTag = /*#__PURE__*/ makeMap('slot,component');  function validateComponentName(name, config) {      const appIsNativeTag = config.isNativeTag || NO;      if (isBuiltInTag(name) || appIsNativeTag(name)) {          warn$1('Do not use built-in or reserved HTML elements as component id: ' + name);      }  }  function isStatefulComponent(instance) {      return instance.vnode.shapeFlag & 4 /* ShapeFlags.STATEFUL_COMPONENT */;  }  let isInSSRComponentSetup = false;  function setupComponent(instance, isSSR = false) {      isInSSRComponentSetup = isSSR;      const { props, children } = instance.vnode;      const isStateful = isStatefulComponent(instance);      initProps(instance, props, isStateful, isSSR);      initSlots(instance, children);      const setupResult = isStateful          ? setupStatefulComponent(instance, isSSR)          : undefined;      isInSSRComponentSetup = false;      return setupResult;  }  function setupStatefulComponent(instance, isSSR) {      var _a;      const Component = instance.type;      {          if (Component.name) {              validateComponentName(Component.name, instance.appContext.config);          }          if (Component.components) {              const names = Object.keys(Component.components);              for (let i = 0; i < names.length; i++) {                  validateComponentName(names[i], instance.appContext.config);              }          }          if (Component.directives) {              const names = Object.keys(Component.directives);              for (let i = 0; i < names.length; i++) {                  validateDirectiveName(names[i]);              }          }          if (Component.compilerOptions && isRuntimeOnly()) {              warn$1(`"compilerOptions" is only supported when using a build of Vue that ` +                  `includes the runtime compiler. Since you are using a runtime-only ` +                  `build, the options should be passed via your build tool config instead.`);          }      }      // 0. create render proxy property access cache      instance.accessCache = Object.create(null);      // 1. create public instance / render proxy      // also mark it raw so it's never observed      instance.proxy = markRaw(new Proxy(instance.ctx, PublicInstanceProxyHandlers));      {          exposePropsOnRenderContext(instance);      }      // 2. call setup()      const { setup } = Component;      if (setup) {          const setupContext = (instance.setupContext =              setup.length > 1 ? createSetupContext(instance) : null);          setCurrentInstance(instance);          pauseTracking();          const setupResult = callWithErrorHandling(setup, instance, 0 /* ErrorCodes.SETUP_FUNCTION */, [shallowReadonly(instance.props) , setupContext]);          resetTracking();          unsetCurrentInstance();          if (isPromise(setupResult)) {              setupResult.then(unsetCurrentInstance, unsetCurrentInstance);              if (isSSR) {                  // return the promise so server-renderer can wait on it                  return setupResult                      .then((resolvedResult) => {                      handleSetupResult(instance, resolvedResult, isSSR);                  })                      .catch(e => {                      handleError(e, instance, 0 /* ErrorCodes.SETUP_FUNCTION */);                  });              }              else {                  // async setup returned Promise.                  // bail here and wait for re-entry.                  instance.asyncDep = setupResult;                  if (!instance.suspense) {                      const name = (_a = Component.name) !== null && _a !== void 0 ? _a : 'Anonymous';                      warn$1(`Component <${name}>: setup function returned a promise, but no ` +                          `<Suspense> boundary was found in the parent component tree. ` +                          `A component with async setup() must be nested in a <Suspense> ` +                          `in order to be rendered.`);                  }              }          }          else {              handleSetupResult(instance, setupResult, isSSR);          }      }      else {          finishComponentSetup(instance, isSSR);      }  }  function handleSetupResult(instance, setupResult, isSSR) {      if (isFunction(setupResult)) {          // setup returned an inline render function          {              instance.render = setupResult;          }      }      else if (isObject(setupResult)) {          if (isVNode(setupResult)) {              warn$1(`setup() should not return VNodes directly - ` +                  `return a render function instead.`);          }          // setup returned bindings.          // assuming a render function compiled from template is present.          {              instance.devtoolsRawSetupState = setupResult;          }          instance.setupState = proxyRefs(setupResult);          {              exposeSetupStateOnRenderContext(instance);          }      }      else if (setupResult !== undefined) {          warn$1(`setup() should return an object. Received: ${setupResult === null ? 'null' : typeof setupResult}`);      }      finishComponentSetup(instance, isSSR);  }  let compile;  let installWithProxy;  /**   * For runtime-dom to register the compiler.   * Note the exported method uses any to avoid d.ts relying on the compiler types.   */  function registerRuntimeCompiler(_compile) {      compile = _compile;      installWithProxy = i => {          if (i.render._rc) {              i.withProxy = new Proxy(i.ctx, RuntimeCompiledPublicInstanceProxyHandlers);          }      };  }  // dev only  const isRuntimeOnly = () => !compile;  function finishComponentSetup(instance, isSSR, skipOptions) {      const Component = instance.type;      // template / render function normalization      // could be already set when returned from setup()      if (!instance.render) {          // only do on-the-fly compile if not in SSR - SSR on-the-fly compilation          // is done by server-renderer          if (!isSSR && compile && !Component.render) {              const template = Component.template ||                  resolveMergedOptions(instance).template;              if (template) {                  {                      startMeasure(instance, `compile`);                  }                  const { isCustomElement, compilerOptions } = instance.appContext.config;                  const { delimiters, compilerOptions: componentCompilerOptions } = Component;                  const finalCompilerOptions = extend(extend({                      isCustomElement,                      delimiters                  }, compilerOptions), componentCompilerOptions);                  Component.render = compile(template, finalCompilerOptions);                  {                      endMeasure(instance, `compile`);                  }              }          }          instance.render = (Component.render || NOOP);          // for runtime-compiled render functions using `with` blocks, the render          // proxy used needs a different `has` handler which is more performant and          // also only allows a whitelist of globals to fallthrough.          if (installWithProxy) {              installWithProxy(instance);          }      }      // support for 2.x options      {          setCurrentInstance(instance);          pauseTracking();          applyOptions(instance);          resetTracking();          unsetCurrentInstance();      }      // warn missing template/render      // the runtime compilation of template in SSR is done by server-render      if (!Component.render && instance.render === NOOP && !isSSR) {          /* istanbul ignore if */          if (!compile && Component.template) {              warn$1(`Component provided template option but ` +                  `runtime compilation is not supported in this build of Vue.` +                  (` Use "vue.global.js" instead.`                              ) /* should not happen */);          }          else {              warn$1(`Component is missing template or render function.`);          }      }  }  function createAttrsProxy(instance) {      return new Proxy(instance.attrs, {              get(target, key) {                  markAttrsAccessed();                  track(instance, "get" /* TrackOpTypes.GET */, '$attrs');                  return target[key];              },              set() {                  warn$1(`setupContext.attrs is readonly.`);                  return false;              },              deleteProperty() {                  warn$1(`setupContext.attrs is readonly.`);                  return false;              }          }          );  }  function createSetupContext(instance) {      const expose = exposed => {          if (instance.exposed) {              warn$1(`expose() should be called only once per setup().`);          }          instance.exposed = exposed || {};      };      let attrs;      {          // We use getters in dev in case libs like test-utils overwrite instance          // properties (overwrites should not be done in prod)          return Object.freeze({              get attrs() {                  return attrs || (attrs = createAttrsProxy(instance));              },              get slots() {                  return shallowReadonly(instance.slots);              },              get emit() {                  return (event, ...args) => instance.emit(event, ...args);              },              expose          });      }  }  function getExposeProxy(instance) {      if (instance.exposed) {          return (instance.exposeProxy ||              (instance.exposeProxy = new Proxy(proxyRefs(markRaw(instance.exposed)), {                  get(target, key) {                      if (key in target) {                          return target[key];                      }                      else if (key in publicPropertiesMap) {                          return publicPropertiesMap[key](instance);                      }                  },                  has(target, key) {                      return key in target || key in publicPropertiesMap;                  }              })));      }  }  const classifyRE = /(?:^|[-_])(\w)/g;  const classify = (str) => str.replace(classifyRE, c => c.toUpperCase()).replace(/[-_]/g, '');  function getComponentName(Component, includeInferred = true) {      return isFunction(Component)          ? Component.displayName || Component.name          : Component.name || (includeInferred && Component.__name);  }  /* istanbul ignore next */  function formatComponentName(instance, Component, isRoot = false) {      let name = getComponentName(Component);      if (!name && Component.__file) {          const match = Component.__file.match(/([^/\\]+)\.\w+$/);          if (match) {              name = match[1];          }      }      if (!name && instance && instance.parent) {          // try to infer the name based on reverse resolution          const inferFromRegistry = (registry) => {              for (const key in registry) {                  if (registry[key] === Component) {                      return key;                  }              }          };          name =              inferFromRegistry(instance.components ||                  instance.parent.type.components) || inferFromRegistry(instance.appContext.components);      }      return name ? classify(name) : isRoot ? `App` : `Anonymous`;  }  function isClassComponent(value) {      return isFunction(value) && '__vccOpts' in value;  }  const computed$1 = ((getterOrOptions, debugOptions) => {      // @ts-ignore      return computed(getterOrOptions, debugOptions, isInSSRComponentSetup);  });  // dev only  const warnRuntimeUsage = (method) => warn$1(`${method}() is a compiler-hint helper that is only usable inside ` +      `<script setup> of a single file component. Its arguments should be ` +      `compiled away and passing it at runtime has no effect.`);  // implementation  function defineProps() {      {          warnRuntimeUsage(`defineProps`);      }      return null;  }  // implementation  function defineEmits() {      {          warnRuntimeUsage(`defineEmits`);      }      return null;  }  /**   * Vue `<script setup>` compiler macro for declaring a component's exposed   * instance properties when it is accessed by a parent component via template   * refs.   *   * `<script setup>` components are closed by default - i.e. variables inside   * the `<script setup>` scope is not exposed to parent unless explicitly exposed   * via `defineExpose`.   *   * This is only usable inside `<script setup>`, is compiled away in the   * output and should **not** be actually called at runtime.   */  function defineExpose(exposed) {      {          warnRuntimeUsage(`defineExpose`);      }  }  /**   * Vue `<script setup>` compiler macro for providing props default values when   * using type-based `defineProps` declaration.   *   * Example usage:   * ```ts   * withDefaults(defineProps<{   *   size?: number   *   labels?: string[]   * }>(), {   *   size: 3,   *   labels: () => ['default label']   * })   * ```   *   * This is only usable inside `<script setup>`, is compiled away in the output   * and should **not** be actually called at runtime.   */  function withDefaults(props, defaults) {      {          warnRuntimeUsage(`withDefaults`);      }      return null;  }  function useSlots() {      return getContext().slots;  }  function useAttrs() {      return getContext().attrs;  }  function getContext() {      const i = getCurrentInstance();      if (!i) {          warn$1(`useContext() called without active instance.`);      }      return i.setupContext || (i.setupContext = createSetupContext(i));  }  /**   * Runtime helper for merging default declarations. Imported by compiled code   * only.   * @internal   */  function mergeDefaults(raw, defaults) {      const props = isArray(raw)          ? raw.reduce((normalized, p) => ((normalized[p] = {}), normalized), {})          : raw;      for (const key in defaults) {          const opt = props[key];          if (opt) {              if (isArray(opt) || isFunction(opt)) {                  props[key] = { type: opt, default: defaults[key] };              }              else {                  opt.default = defaults[key];              }          }          else if (opt === null) {              props[key] = { default: defaults[key] };          }          else {              warn$1(`props default key "${key}" has no corresponding declaration.`);          }      }      return props;  }  /**   * Used to create a proxy for the rest element when destructuring props with   * defineProps().   * @internal   */  function createPropsRestProxy(props, excludedKeys) {      const ret = {};      for (const key in props) {          if (!excludedKeys.includes(key)) {              Object.defineProperty(ret, key, {                  enumerable: true,                  get: () => props[key]              });          }      }      return ret;  }  /**   * `<script setup>` helper for persisting the current instance context over   * async/await flows.   *   * `@vue/compiler-sfc` converts the following:   *   * ```ts   * const x = await foo()   * ```   *   * into:   *   * ```ts   * let __temp, __restore   * const x = (([__temp, __restore] = withAsyncContext(() => foo())),__temp=await __temp,__restore(),__temp)   * ```   * @internal   */  function withAsyncContext(getAwaitable) {      const ctx = getCurrentInstance();      if (!ctx) {          warn$1(`withAsyncContext called without active current instance. ` +              `This is likely a bug.`);      }      let awaitable = getAwaitable();      unsetCurrentInstance();      if (isPromise(awaitable)) {          awaitable = awaitable.catch(e => {              setCurrentInstance(ctx);              throw e;          });      }      return [awaitable, () => setCurrentInstance(ctx)];  }  // Actual implementation  function h(type, propsOrChildren, children) {      const l = arguments.length;      if (l === 2) {          if (isObject(propsOrChildren) && !isArray(propsOrChildren)) {              // single vnode without props              if (isVNode(propsOrChildren)) {                  return createVNode(type, null, [propsOrChildren]);              }              // props without children              return createVNode(type, propsOrChildren);          }          else {              // omit props              return createVNode(type, null, propsOrChildren);          }      }      else {          if (l > 3) {              children = Array.prototype.slice.call(arguments, 2);          }          else if (l === 3 && isVNode(children)) {              children = [children];          }          return createVNode(type, propsOrChildren, children);      }  }  const ssrContextKey = Symbol(`ssrContext` );  const useSSRContext = () => {      {          warn$1(`useSSRContext() is not supported in the global build.`);      }  };  function initCustomFormatter() {      /* eslint-disable no-restricted-globals */      if (typeof window === 'undefined') {          return;      }      const vueStyle = { style: 'color:#3ba776' };      const numberStyle = { style: 'color:#0b1bc9' };      const stringStyle = { style: 'color:#b62e24' };      const keywordStyle = { style: 'color:#9d288c' };      // custom formatter for Chrome      // https://www.mattzeunert.com/2016/02/19/custom-chrome-devtools-object-formatters.html      const formatter = {          header(obj) {              // TODO also format ComponentPublicInstance & ctx.slots/attrs in setup              if (!isObject(obj)) {                  return null;              }              if (obj.__isVue) {                  return ['div', vueStyle, `VueInstance`];              }              else if (isRef(obj)) {                  return [                      'div',                      {},                      ['span', vueStyle, genRefFlag(obj)],                      '<',                      formatValue(obj.value),                      `>`                  ];              }              else if (isReactive(obj)) {                  return [                      'div',                      {},                      ['span', vueStyle, isShallow(obj) ? 'ShallowReactive' : 'Reactive'],                      '<',                      formatValue(obj),                      `>${isReadonly(obj) ? ` (readonly)` : ``}`                  ];              }              else if (isReadonly(obj)) {                  return [                      'div',                      {},                      ['span', vueStyle, isShallow(obj) ? 'ShallowReadonly' : 'Readonly'],                      '<',                      formatValue(obj),                      '>'                  ];              }              return null;          },          hasBody(obj) {              return obj && obj.__isVue;          },          body(obj) {              if (obj && obj.__isVue) {                  return [                      'div',                      {},                      ...formatInstance(obj.$)                  ];              }          }      };      function formatInstance(instance) {          const blocks = [];          if (instance.type.props && instance.props) {              blocks.push(createInstanceBlock('props', toRaw(instance.props)));          }          if (instance.setupState !== EMPTY_OBJ) {              blocks.push(createInstanceBlock('setup', instance.setupState));          }          if (instance.data !== EMPTY_OBJ) {              blocks.push(createInstanceBlock('data', toRaw(instance.data)));          }          const computed = extractKeys(instance, 'computed');          if (computed) {              blocks.push(createInstanceBlock('computed', computed));          }          const injected = extractKeys(instance, 'inject');          if (injected) {              blocks.push(createInstanceBlock('injected', injected));          }          blocks.push([              'div',              {},              [                  'span',                  {                      style: keywordStyle.style + ';opacity:0.66'                  },                  '$ (internal): '              ],              ['object', { object: instance }]          ]);          return blocks;      }      function createInstanceBlock(type, target) {          target = extend({}, target);          if (!Object.keys(target).length) {              return ['span', {}];          }          return [              'div',              { style: 'line-height:1.25em;margin-bottom:0.6em' },              [                  'div',                  {                      style: 'color:#476582'                  },                  type              ],              [                  'div',                  {                      style: 'padding-left:1.25em'                  },                  ...Object.keys(target).map(key => {                      return [                          'div',                          {},                          ['span', keywordStyle, key + ': '],                          formatValue(target[key], false)                      ];                  })              ]          ];      }      function formatValue(v, asRaw = true) {          if (typeof v === 'number') {              return ['span', numberStyle, v];          }          else if (typeof v === 'string') {              return ['span', stringStyle, JSON.stringify(v)];          }          else if (typeof v === 'boolean') {              return ['span', keywordStyle, v];          }          else if (isObject(v)) {              return ['object', { object: asRaw ? toRaw(v) : v }];          }          else {              return ['span', stringStyle, String(v)];          }      }      function extractKeys(instance, type) {          const Comp = instance.type;          if (isFunction(Comp)) {              return;          }          const extracted = {};          for (const key in instance.ctx) {              if (isKeyOfType(Comp, key, type)) {                  extracted[key] = instance.ctx[key];              }          }          return extracted;      }      function isKeyOfType(Comp, key, type) {          const opts = Comp[type];          if ((isArray(opts) && opts.includes(key)) ||              (isObject(opts) && key in opts)) {              return true;          }          if (Comp.extends && isKeyOfType(Comp.extends, key, type)) {              return true;          }          if (Comp.mixins && Comp.mixins.some(m => isKeyOfType(m, key, type))) {              return true;          }      }      function genRefFlag(v) {          if (isShallow(v)) {              return `ShallowRef`;          }          if (v.effect) {              return `ComputedRef`;          }          return `Ref`;      }      if (window.devtoolsFormatters) {          window.devtoolsFormatters.push(formatter);      }      else {          window.devtoolsFormatters = [formatter];      }  }  function withMemo(memo, render, cache, index) {      const cached = cache[index];      if (cached && isMemoSame(cached, memo)) {          return cached;      }      const ret = render();      // shallow clone      ret.memo = memo.slice();      return (cache[index] = ret);  }  function isMemoSame(cached, memo) {      const prev = cached.memo;      if (prev.length != memo.length) {          return false;      }      for (let i = 0; i < prev.length; i++) {          if (hasChanged(prev[i], memo[i])) {              return false;          }      }      // make sure to let parent block track it when returning cached      if (isBlockTreeEnabled > 0 && currentBlock) {          currentBlock.push(cached);      }      return true;  }  // Core API ------------------------------------------------------------------  const version = "3.2.45";  /**   * SSR utils for \@vue/server-renderer. Only exposed in ssr-possible builds.   * @internal   */  const ssrUtils = (null);  /**   * @internal only exposed in compat builds   */  const resolveFilter = null;  /**   * @internal only exposed in compat builds.   */  const compatUtils = (null);  const svgNS = 'http://www.w3.org/2000/svg';  const doc = (typeof document !== 'undefined' ? document : null);  const templateContainer = doc && /*#__PURE__*/ doc.createElement('template');  const nodeOps = {      insert: (child, parent, anchor) => {          parent.insertBefore(child, anchor || null);      },      remove: child => {          const parent = child.parentNode;          if (parent) {              parent.removeChild(child);          }      },      createElement: (tag, isSVG, is, props) => {          const el = isSVG              ? doc.createElementNS(svgNS, tag)              : doc.createElement(tag, is ? { is } : undefined);          if (tag === 'select' && props && props.multiple != null) {              el.setAttribute('multiple', props.multiple);          }          return el;      },      createText: text => doc.createTextNode(text),      createComment: text => doc.createComment(text),      setText: (node, text) => {          node.nodeValue = text;      },      setElementText: (el, text) => {          el.textContent = text;      },      parentNode: node => node.parentNode,      nextSibling: node => node.nextSibling,      querySelector: selector => doc.querySelector(selector),      setScopeId(el, id) {          el.setAttribute(id, '');      },      // __UNSAFE__      // Reason: innerHTML.      // Static content here can only come from compiled templates.      // As long as the user only uses trusted templates, this is safe.      insertStaticContent(content, parent, anchor, isSVG, start, end) {          // <parent> before | first ... last | anchor </parent>          const before = anchor ? anchor.previousSibling : parent.lastChild;          // #5308 can only take cached path if:          // - has a single root node          // - nextSibling info is still available          if (start && (start === end || start.nextSibling)) {              // cached              while (true) {                  parent.insertBefore(start.cloneNode(true), anchor);                  if (start === end || !(start = start.nextSibling))                      break;              }          }          else {              // fresh insert              templateContainer.innerHTML = isSVG ? `<svg>${content}</svg>` : content;              const template = templateContainer.content;              if (isSVG) {                  // remove outer svg wrapper                  const wrapper = template.firstChild;                  while (wrapper.firstChild) {                      template.appendChild(wrapper.firstChild);                  }                  template.removeChild(wrapper);              }              parent.insertBefore(template, anchor);          }          return [              // first              before ? before.nextSibling : parent.firstChild,              // last              anchor ? anchor.previousSibling : parent.lastChild          ];      }  };  // compiler should normalize class + :class bindings on the same element  // into a single binding ['staticClass', dynamic]  function patchClass(el, value, isSVG) {      // directly setting className should be faster than setAttribute in theory      // if this is an element during a transition, take the temporary transition      // classes into account.      const transitionClasses = el._vtc;      if (transitionClasses) {          value = (value ? [value, ...transitionClasses] : [...transitionClasses]).join(' ');      }      if (value == null) {          el.removeAttribute('class');      }      else if (isSVG) {          el.setAttribute('class', value);      }      else {          el.className = value;      }  }  function patchStyle(el, prev, next) {      const style = el.style;      const isCssString = isString(next);      if (next && !isCssString) {          for (const key in next) {              setStyle(style, key, next[key]);          }          if (prev && !isString(prev)) {              for (const key in prev) {                  if (next[key] == null) {                      setStyle(style, key, '');                  }              }          }      }      else {          const currentDisplay = style.display;          if (isCssString) {              if (prev !== next) {                  style.cssText = next;              }          }          else if (prev) {              el.removeAttribute('style');          }          // indicates that the `display` of the element is controlled by `v-show`,          // so we always keep the current `display` value regardless of the `style`          // value, thus handing over control to `v-show`.          if ('_vod' in el) {              style.display = currentDisplay;          }      }  }  const semicolonRE = /[^\\];\s*$/;  const importantRE = /\s*!important$/;  function setStyle(style, name, val) {      if (isArray(val)) {          val.forEach(v => setStyle(style, name, v));      }      else {          if (val == null)              val = '';          {              if (semicolonRE.test(val)) {                  warn$1(`Unexpected semicolon at the end of '${name}' style value: '${val}'`);              }          }          if (name.startsWith('--')) {              // custom property definition              style.setProperty(name, val);          }          else {              const prefixed = autoPrefix(style, name);              if (importantRE.test(val)) {                  // !important                  style.setProperty(hyphenate(prefixed), val.replace(importantRE, ''), 'important');              }              else {                  style[prefixed] = val;              }          }      }  }  const prefixes = ['Webkit', 'Moz', 'ms'];  const prefixCache = {};  function autoPrefix(style, rawName) {      const cached = prefixCache[rawName];      if (cached) {          return cached;      }      let name = camelize(rawName);      if (name !== 'filter' && name in style) {          return (prefixCache[rawName] = name);      }      name = capitalize(name);      for (let i = 0; i < prefixes.length; i++) {          const prefixed = prefixes[i] + name;          if (prefixed in style) {              return (prefixCache[rawName] = prefixed);          }      }      return rawName;  }  const xlinkNS = 'http://www.w3.org/1999/xlink';  function patchAttr(el, key, value, isSVG, instance) {      if (isSVG && key.startsWith('xlink:')) {          if (value == null) {              el.removeAttributeNS(xlinkNS, key.slice(6, key.length));          }          else {              el.setAttributeNS(xlinkNS, key, value);          }      }      else {          // note we are only checking boolean attributes that don't have a          // corresponding dom prop of the same name here.          const isBoolean = isSpecialBooleanAttr(key);          if (value == null || (isBoolean && !includeBooleanAttr(value))) {              el.removeAttribute(key);          }          else {              el.setAttribute(key, isBoolean ? '' : value);          }      }  }  // __UNSAFE__  // functions. The user is responsible for using them with only trusted content.  function patchDOMProp(el, key, value,   // the following args are passed only due to potential innerHTML/textContent  // overriding existing VNodes, in which case the old tree must be properly  // unmounted.  prevChildren, parentComponent, parentSuspense, unmountChildren) {      if (key === 'innerHTML' || key === 'textContent') {          if (prevChildren) {              unmountChildren(prevChildren, parentComponent, parentSuspense);          }          el[key] = value == null ? '' : value;          return;      }      if (key === 'value' &&          el.tagName !== 'PROGRESS' &&          // custom elements may use _value internally          !el.tagName.includes('-')) {          // store value as _value as well since          // non-string values will be stringified.          el._value = value;          const newValue = value == null ? '' : value;          if (el.value !== newValue ||              // #4956: always set for OPTION elements because its value falls back to              // textContent if no value attribute is present. And setting .value for              // OPTION has no side effect              el.tagName === 'OPTION') {              el.value = newValue;          }          if (value == null) {              el.removeAttribute(key);          }          return;      }      let needRemove = false;      if (value === '' || value == null) {          const type = typeof el[key];          if (type === 'boolean') {              // e.g. <select multiple> compiles to { multiple: '' }              value = includeBooleanAttr(value);          }          else if (value == null && type === 'string') {              // e.g. <div :id="null">              value = '';              needRemove = true;          }          else if (type === 'number') {              // e.g. <img :width="null">              value = 0;              needRemove = true;          }      }      // some properties perform value validation and throw,      // some properties has getter, no setter, will error in 'use strict'      // eg. <select :type="null"></select> <select :willValidate="null"></select>      try {          el[key] = value;      }      catch (e) {          // do not warn if value is auto-coerced from nullish values          if (!needRemove) {              warn$1(`Failed setting prop "${key}" on <${el.tagName.toLowerCase()}>: ` +                  `value ${value} is invalid.`, e);          }      }      needRemove && el.removeAttribute(key);  }  function addEventListener(el, event, handler, options) {      el.addEventListener(event, handler, options);  }  function removeEventListener(el, event, handler, options) {      el.removeEventListener(event, handler, options);  }  function patchEvent(el, rawName, prevValue, nextValue, instance = null) {      // vei = vue event invokers      const invokers = el._vei || (el._vei = {});      const existingInvoker = invokers[rawName];      if (nextValue && existingInvoker) {          // patch          existingInvoker.value = nextValue;      }      else {          const [name, options] = parseName(rawName);          if (nextValue) {              // add              const invoker = (invokers[rawName] = createInvoker(nextValue, instance));              addEventListener(el, name, invoker, options);          }          else if (existingInvoker) {              // remove              removeEventListener(el, name, existingInvoker, options);              invokers[rawName] = undefined;          }      }  }  const optionsModifierRE = /(?:Once|Passive|Capture)$/;  function parseName(name) {      let options;      if (optionsModifierRE.test(name)) {          options = {};          let m;          while ((m = name.match(optionsModifierRE))) {              name = name.slice(0, name.length - m[0].length);              options[m[0].toLowerCase()] = true;          }      }      const event = name[2] === ':' ? name.slice(3) : hyphenate(name.slice(2));      return [event, options];  }  // To avoid the overhead of repeatedly calling Date.now(), we cache  // and use the same timestamp for all event listeners attached in the same tick.  let cachedNow = 0;  const p = /*#__PURE__*/ Promise.resolve();  const getNow = () => cachedNow || (p.then(() => (cachedNow = 0)), (cachedNow = Date.now()));  function createInvoker(initialValue, instance) {      const invoker = (e) => {          // async edge case vuejs/vue#6566          // inner click event triggers patch, event handler          // attached to outer element during patch, and triggered again. This          // happens because browsers fire microtask ticks between event propagation.          // this no longer happens for templates in Vue 3, but could still be          // theoretically possible for hand-written render functions.          // the solution: we save the timestamp when a handler is attached,          // and also attach the timestamp to any event that was handled by vue          // for the first time (to avoid inconsistent event timestamp implementations          // or events fired from iframes, e.g. #2513)          // The handler would only fire if the event passed to it was fired          // AFTER it was attached.          if (!e._vts) {              e._vts = Date.now();          }          else if (e._vts <= invoker.attached) {              return;          }          callWithAsyncErrorHandling(patchStopImmediatePropagation(e, invoker.value), instance, 5 /* ErrorCodes.NATIVE_EVENT_HANDLER */, [e]);      };      invoker.value = initialValue;      invoker.attached = getNow();      return invoker;  }  function patchStopImmediatePropagation(e, value) {      if (isArray(value)) {          const originalStop = e.stopImmediatePropagation;          e.stopImmediatePropagation = () => {              originalStop.call(e);              e._stopped = true;          };          return value.map(fn => (e) => !e._stopped && fn && fn(e));      }      else {          return value;      }  }  const nativeOnRE = /^on[a-z]/;  const patchProp = (el, key, prevValue, nextValue, isSVG = false, prevChildren, parentComponent, parentSuspense, unmountChildren) => {      if (key === 'class') {          patchClass(el, nextValue, isSVG);      }      else if (key === 'style') {          patchStyle(el, prevValue, nextValue);      }      else if (isOn(key)) {          // ignore v-model listeners          if (!isModelListener(key)) {              patchEvent(el, key, prevValue, nextValue, parentComponent);          }      }      else if (key[0] === '.'          ? ((key = key.slice(1)), true)          : key[0] === '^'              ? ((key = key.slice(1)), false)              : shouldSetAsProp(el, key, nextValue, isSVG)) {          patchDOMProp(el, key, nextValue, prevChildren, parentComponent, parentSuspense, unmountChildren);      }      else {          // special case for <input v-model type="checkbox"> with          // :true-value & :false-value          // store value as dom properties since non-string values will be          // stringified.          if (key === 'true-value') {              el._trueValue = nextValue;          }          else if (key === 'false-value') {              el._falseValue = nextValue;          }          patchAttr(el, key, nextValue, isSVG);      }  };  function shouldSetAsProp(el, key, value, isSVG) {      if (isSVG) {          // most keys must be set as attribute on svg elements to work          // ...except innerHTML & textContent          if (key === 'innerHTML' || key === 'textContent') {              return true;          }          // or native onclick with function values          if (key in el && nativeOnRE.test(key) && isFunction(value)) {              return true;          }          return false;      }      // these are enumerated attrs, however their corresponding DOM properties      // are actually booleans - this leads to setting it with a string "false"      // value leading it to be coerced to `true`, so we need to always treat      // them as attributes.      // Note that `contentEditable` doesn't have this problem: its DOM      // property is also enumerated string values.      if (key === 'spellcheck' || key === 'draggable' || key === 'translate') {          return false;      }      // #1787, #2840 form property on form elements is readonly and must be set as      // attribute.      if (key === 'form') {          return false;      }      // #1526 <input list> must be set as attribute      if (key === 'list' && el.tagName === 'INPUT') {          return false;      }      // #2766 <textarea type> must be set as attribute      if (key === 'type' && el.tagName === 'TEXTAREA') {          return false;      }      // native onclick with string value, must be set as attribute      if (nativeOnRE.test(key) && isString(value)) {          return false;      }      return key in el;  }  function defineCustomElement(options, hydrate) {      const Comp = defineComponent(options);      class VueCustomElement extends VueElement {          constructor(initialProps) {              super(Comp, initialProps, hydrate);          }      }      VueCustomElement.def = Comp;      return VueCustomElement;  }  const defineSSRCustomElement = ((options) => {      // @ts-ignore      return defineCustomElement(options, hydrate);  });  const BaseClass = (typeof HTMLElement !== 'undefined' ? HTMLElement : class {  });  class VueElement extends BaseClass {      constructor(_def, _props = {}, hydrate) {          super();          this._def = _def;          this._props = _props;          /**           * @internal           */          this._instance = null;          this._connected = false;          this._resolved = false;          this._numberProps = null;          if (this.shadowRoot && hydrate) {              hydrate(this._createVNode(), this.shadowRoot);          }          else {              if (this.shadowRoot) {                  warn$1(`Custom element has pre-rendered declarative shadow root but is not ` +                      `defined as hydratable. Use \`defineSSRCustomElement\`.`);              }              this.attachShadow({ mode: 'open' });              if (!this._def.__asyncLoader) {                  // for sync component defs we can immediately resolve props                  this._resolveProps(this._def);              }          }      }      connectedCallback() {          this._connected = true;          if (!this._instance) {              if (this._resolved) {                  this._update();              }              else {                  this._resolveDef();              }          }      }      disconnectedCallback() {          this._connected = false;          nextTick(() => {              if (!this._connected) {                  render(null, this.shadowRoot);                  this._instance = null;              }          });      }      /**       * resolve inner component definition (handle possible async component)       */      _resolveDef() {          this._resolved = true;          // set initial attrs          for (let i = 0; i < this.attributes.length; i++) {              this._setAttr(this.attributes[i].name);          }          // watch future attr changes          new MutationObserver(mutations => {              for (const m of mutations) {                  this._setAttr(m.attributeName);              }          }).observe(this, { attributes: true });          const resolve = (def, isAsync = false) => {              const { props, styles } = def;              // cast Number-type props set before resolve              let numberProps;              if (props && !isArray(props)) {                  for (const key in props) {                      const opt = props[key];                      if (opt === Number || (opt && opt.type === Number)) {                          if (key in this._props) {                              this._props[key] = toNumber(this._props[key]);                          }                          (numberProps || (numberProps = Object.create(null)))[camelize(key)] = true;                      }                  }              }              this._numberProps = numberProps;              if (isAsync) {                  // defining getter/setters on prototype                  // for sync defs, this already happened in the constructor                  this._resolveProps(def);              }              // apply CSS              this._applyStyles(styles);              // initial render              this._update();          };          const asyncDef = this._def.__asyncLoader;          if (asyncDef) {              asyncDef().then(def => resolve(def, true));          }          else {              resolve(this._def);          }      }      _resolveProps(def) {          const { props } = def;          const declaredPropKeys = isArray(props) ? props : Object.keys(props || {});          // check if there are props set pre-upgrade or connect          for (const key of Object.keys(this)) {              if (key[0] !== '_' && declaredPropKeys.includes(key)) {                  this._setProp(key, this[key], true, false);              }          }          // defining getter/setters on prototype          for (const key of declaredPropKeys.map(camelize)) {              Object.defineProperty(this, key, {                  get() {                      return this._getProp(key);                  },                  set(val) {                      this._setProp(key, val);                  }              });          }      }      _setAttr(key) {          let value = this.getAttribute(key);          const camelKey = camelize(key);          if (this._numberProps && this._numberProps[camelKey]) {              value = toNumber(value);          }          this._setProp(camelKey, value, false);      }      /**       * @internal       */      _getProp(key) {          return this._props[key];      }      /**       * @internal       */      _setProp(key, val, shouldReflect = true, shouldUpdate = true) {          if (val !== this._props[key]) {              this._props[key] = val;              if (shouldUpdate && this._instance) {                  this._update();              }              // reflect              if (shouldReflect) {                  if (val === true) {                      this.setAttribute(hyphenate(key), '');                  }                  else if (typeof val === 'string' || typeof val === 'number') {                      this.setAttribute(hyphenate(key), val + '');                  }                  else if (!val) {                      this.removeAttribute(hyphenate(key));                  }              }          }      }      _update() {          render(this._createVNode(), this.shadowRoot);      }      _createVNode() {          const vnode = createVNode(this._def, extend({}, this._props));          if (!this._instance) {              vnode.ce = instance => {                  this._instance = instance;                  instance.isCE = true;                  // HMR                  {                      instance.ceReload = newStyles => {                          // always reset styles                          if (this._styles) {                              this._styles.forEach(s => this.shadowRoot.removeChild(s));                              this._styles.length = 0;                          }                          this._applyStyles(newStyles);                          this._instance = null;                          this._update();                      };                  }                  const dispatch = (event, args) => {                      this.dispatchEvent(new CustomEvent(event, {                          detail: args                      }));                  };                  // intercept emit                  instance.emit = (event, ...args) => {                      // dispatch both the raw and hyphenated versions of an event                      // to match Vue behavior                      dispatch(event, args);                      if (hyphenate(event) !== event) {                          dispatch(hyphenate(event), args);                      }                  };                  // locate nearest Vue custom element parent for provide/inject                  let parent = this;                  while ((parent =                      parent && (parent.parentNode || parent.host))) {                      if (parent instanceof VueElement) {                          instance.parent = parent._instance;                          instance.provides = parent._instance.provides;                          break;                      }                  }              };          }          return vnode;      }      _applyStyles(styles) {          if (styles) {              styles.forEach(css => {                  const s = document.createElement('style');                  s.textContent = css;                  this.shadowRoot.appendChild(s);                  // record for HMR                  {                      (this._styles || (this._styles = [])).push(s);                  }              });          }      }  }  function useCssModule(name = '$style') {      /* istanbul ignore else */      {          {              warn$1(`useCssModule() is not supported in the global build.`);          }          return EMPTY_OBJ;      }  }  /**   * Runtime helper for SFC's CSS variable injection feature.   * @private   */  function useCssVars(getter) {      const instance = getCurrentInstance();      /* istanbul ignore next */      if (!instance) {          warn$1(`useCssVars is called without current active component instance.`);          return;      }      const updateTeleports = (instance.ut = (vars = getter(instance.proxy)) => {          Array.from(document.querySelectorAll(`[data-v-owner="${instance.uid}"]`)).forEach(node => setVarsOnNode(node, vars));      });      const setVars = () => {          const vars = getter(instance.proxy);          setVarsOnVNode(instance.subTree, vars);          updateTeleports(vars);      };      watchPostEffect(setVars);      onMounted(() => {          const ob = new MutationObserver(setVars);          ob.observe(instance.subTree.el.parentNode, { childList: true });          onUnmounted(() => ob.disconnect());      });  }  function setVarsOnVNode(vnode, vars) {      if (vnode.shapeFlag & 128 /* ShapeFlags.SUSPENSE */) {          const suspense = vnode.suspense;          vnode = suspense.activeBranch;          if (suspense.pendingBranch && !suspense.isHydrating) {              suspense.effects.push(() => {                  setVarsOnVNode(suspense.activeBranch, vars);              });          }      }      // drill down HOCs until it's a non-component vnode      while (vnode.component) {          vnode = vnode.component.subTree;      }      if (vnode.shapeFlag & 1 /* ShapeFlags.ELEMENT */ && vnode.el) {          setVarsOnNode(vnode.el, vars);      }      else if (vnode.type === Fragment) {          vnode.children.forEach(c => setVarsOnVNode(c, vars));      }      else if (vnode.type === Static) {          let { el, anchor } = vnode;          while (el) {              setVarsOnNode(el, vars);              if (el === anchor)                  break;              el = el.nextSibling;          }      }  }  function setVarsOnNode(el, vars) {      if (el.nodeType === 1) {          const style = el.style;          for (const key in vars) {              style.setProperty(`--${key}`, vars[key]);          }      }  }  const TRANSITION = 'transition';  const ANIMATION = 'animation';  // DOM Transition is a higher-order-component based on the platform-agnostic  // base Transition component, with DOM-specific logic.  const Transition = (props, { slots }) => h(BaseTransition, resolveTransitionProps(props), slots);  Transition.displayName = 'Transition';  const DOMTransitionPropsValidators = {      name: String,      type: String,      css: {          type: Boolean,          default: true      },      duration: [String, Number, Object],      enterFromClass: String,      enterActiveClass: String,      enterToClass: String,      appearFromClass: String,      appearActiveClass: String,      appearToClass: String,      leaveFromClass: String,      leaveActiveClass: String,      leaveToClass: String  };  const TransitionPropsValidators = (Transition.props =      /*#__PURE__*/ extend({}, BaseTransition.props, DOMTransitionPropsValidators));  /**   * #3227 Incoming hooks may be merged into arrays when wrapping Transition   * with custom HOCs.   */  const callHook$1 = (hook, args = []) => {      if (isArray(hook)) {          hook.forEach(h => h(...args));      }      else if (hook) {          hook(...args);      }  };  /**   * Check if a hook expects a callback (2nd arg), which means the user   * intends to explicitly control the end of the transition.   */  const hasExplicitCallback = (hook) => {      return hook          ? isArray(hook)              ? hook.some(h => h.length > 1)              : hook.length > 1          : false;  };  function resolveTransitionProps(rawProps) {      const baseProps = {};      for (const key in rawProps) {          if (!(key in DOMTransitionPropsValidators)) {              baseProps[key] = rawProps[key];          }      }      if (rawProps.css === false) {          return baseProps;      }      const { name = 'v', type, duration, enterFromClass = `${name}-enter-from`, enterActiveClass = `${name}-enter-active`, enterToClass = `${name}-enter-to`, appearFromClass = enterFromClass, appearActiveClass = enterActiveClass, appearToClass = enterToClass, leaveFromClass = `${name}-leave-from`, leaveActiveClass = `${name}-leave-active`, leaveToClass = `${name}-leave-to` } = rawProps;      const durations = normalizeDuration(duration);      const enterDuration = durations && durations[0];      const leaveDuration = durations && durations[1];      const { onBeforeEnter, onEnter, onEnterCancelled, onLeave, onLeaveCancelled, onBeforeAppear = onBeforeEnter, onAppear = onEnter, onAppearCancelled = onEnterCancelled } = baseProps;      const finishEnter = (el, isAppear, done) => {          removeTransitionClass(el, isAppear ? appearToClass : enterToClass);          removeTransitionClass(el, isAppear ? appearActiveClass : enterActiveClass);          done && done();      };      const finishLeave = (el, done) => {          el._isLeaving = false;          removeTransitionClass(el, leaveFromClass);          removeTransitionClass(el, leaveToClass);          removeTransitionClass(el, leaveActiveClass);          done && done();      };      const makeEnterHook = (isAppear) => {          return (el, done) => {              const hook = isAppear ? onAppear : onEnter;              const resolve = () => finishEnter(el, isAppear, done);              callHook$1(hook, [el, resolve]);              nextFrame(() => {                  removeTransitionClass(el, isAppear ? appearFromClass : enterFromClass);                  addTransitionClass(el, isAppear ? appearToClass : enterToClass);                  if (!hasExplicitCallback(hook)) {                      whenTransitionEnds(el, type, enterDuration, resolve);                  }              });          };      };      return extend(baseProps, {          onBeforeEnter(el) {              callHook$1(onBeforeEnter, [el]);              addTransitionClass(el, enterFromClass);              addTransitionClass(el, enterActiveClass);          },          onBeforeAppear(el) {              callHook$1(onBeforeAppear, [el]);              addTransitionClass(el, appearFromClass);              addTransitionClass(el, appearActiveClass);          },          onEnter: makeEnterHook(false),          onAppear: makeEnterHook(true),          onLeave(el, done) {              el._isLeaving = true;              const resolve = () => finishLeave(el, done);              addTransitionClass(el, leaveFromClass);              // force reflow so *-leave-from classes immediately take effect (#2593)              forceReflow();              addTransitionClass(el, leaveActiveClass);              nextFrame(() => {                  if (!el._isLeaving) {                      // cancelled                      return;                  }                  removeTransitionClass(el, leaveFromClass);                  addTransitionClass(el, leaveToClass);                  if (!hasExplicitCallback(onLeave)) {                      whenTransitionEnds(el, type, leaveDuration, resolve);                  }              });              callHook$1(onLeave, [el, resolve]);          },          onEnterCancelled(el) {              finishEnter(el, false);              callHook$1(onEnterCancelled, [el]);          },          onAppearCancelled(el) {              finishEnter(el, true);              callHook$1(onAppearCancelled, [el]);          },          onLeaveCancelled(el) {              finishLeave(el);              callHook$1(onLeaveCancelled, [el]);          }      });  }  function normalizeDuration(duration) {      if (duration == null) {          return null;      }      else if (isObject(duration)) {          return [NumberOf(duration.enter), NumberOf(duration.leave)];      }      else {          const n = NumberOf(duration);          return [n, n];      }  }  function NumberOf(val) {      const res = toNumber(val);      validateDuration(res);      return res;  }  function validateDuration(val) {      if (typeof val !== 'number') {          warn$1(`<transition> explicit duration is not a valid number - ` +              `got ${JSON.stringify(val)}.`);      }      else if (isNaN(val)) {          warn$1(`<transition> explicit duration is NaN - ` +              'the duration expression might be incorrect.');      }  }  function addTransitionClass(el, cls) {      cls.split(/\s+/).forEach(c => c && el.classList.add(c));      (el._vtc ||          (el._vtc = new Set())).add(cls);  }  function removeTransitionClass(el, cls) {      cls.split(/\s+/).forEach(c => c && el.classList.remove(c));      const { _vtc } = el;      if (_vtc) {          _vtc.delete(cls);          if (!_vtc.size) {              el._vtc = undefined;          }      }  }  function nextFrame(cb) {      requestAnimationFrame(() => {          requestAnimationFrame(cb);      });  }  let endId = 0;  function whenTransitionEnds(el, expectedType, explicitTimeout, resolve) {      const id = (el._endId = ++endId);      const resolveIfNotStale = () => {          if (id === el._endId) {              resolve();          }      };      if (explicitTimeout) {          return setTimeout(resolveIfNotStale, explicitTimeout);      }      const { type, timeout, propCount } = getTransitionInfo(el, expectedType);      if (!type) {          return resolve();      }      const endEvent = type + 'end';      let ended = 0;      const end = () => {          el.removeEventListener(endEvent, onEnd);          resolveIfNotStale();      };      const onEnd = (e) => {          if (e.target === el && ++ended >= propCount) {              end();          }      };      setTimeout(() => {          if (ended < propCount) {              end();          }      }, timeout + 1);      el.addEventListener(endEvent, onEnd);  }  function getTransitionInfo(el, expectedType) {      const styles = window.getComputedStyle(el);      // JSDOM may return undefined for transition properties      const getStyleProperties = (key) => (styles[key] || '').split(', ');      const transitionDelays = getStyleProperties(`${TRANSITION}Delay`);      const transitionDurations = getStyleProperties(`${TRANSITION}Duration`);      const transitionTimeout = getTimeout(transitionDelays, transitionDurations);      const animationDelays = getStyleProperties(`${ANIMATION}Delay`);      const animationDurations = getStyleProperties(`${ANIMATION}Duration`);      const animationTimeout = getTimeout(animationDelays, animationDurations);      let type = null;      let timeout = 0;      let propCount = 0;      /* istanbul ignore if */      if (expectedType === TRANSITION) {          if (transitionTimeout > 0) {              type = TRANSITION;              timeout = transitionTimeout;              propCount = transitionDurations.length;          }      }      else if (expectedType === ANIMATION) {          if (animationTimeout > 0) {              type = ANIMATION;              timeout = animationTimeout;              propCount = animationDurations.length;          }      }      else {          timeout = Math.max(transitionTimeout, animationTimeout);          type =              timeout > 0                  ? transitionTimeout > animationTimeout                      ? TRANSITION                      : ANIMATION                  : null;          propCount = type              ? type === TRANSITION                  ? transitionDurations.length                  : animationDurations.length              : 0;      }      const hasTransform = type === TRANSITION &&          /\b(transform|all)(,|$)/.test(getStyleProperties(`${TRANSITION}Property`).toString());      return {          type,          timeout,          propCount,          hasTransform      };  }  function getTimeout(delays, durations) {      while (delays.length < durations.length) {          delays = delays.concat(delays);      }      return Math.max(...durations.map((d, i) => toMs(d) + toMs(delays[i])));  }  // Old versions of Chromium (below 61.0.3163.100) formats floating pointer  // numbers in a locale-dependent way, using a comma instead of a dot.  // If comma is not replaced with a dot, the input will be rounded down  // (i.e. acting as a floor function) causing unexpected behaviors  function toMs(s) {      return Number(s.slice(0, -1).replace(',', '.')) * 1000;  }  // synchronously force layout to put elements into a certain state  function forceReflow() {      return document.body.offsetHeight;  }  const positionMap = new WeakMap();  const newPositionMap = new WeakMap();  const TransitionGroupImpl = {      name: 'TransitionGroup',      props: /*#__PURE__*/ extend({}, TransitionPropsValidators, {          tag: String,          moveClass: String      }),      setup(props, { slots }) {          const instance = getCurrentInstance();          const state = useTransitionState();          let prevChildren;          let children;          onUpdated(() => {              // children is guaranteed to exist after initial render              if (!prevChildren.length) {                  return;              }              const moveClass = props.moveClass || `${props.name || 'v'}-move`;              if (!hasCSSTransform(prevChildren[0].el, instance.vnode.el, moveClass)) {                  return;              }              // we divide the work into three loops to avoid mixing DOM reads and writes              // in each iteration - which helps prevent layout thrashing.              prevChildren.forEach(callPendingCbs);              prevChildren.forEach(recordPosition);              const movedChildren = prevChildren.filter(applyTranslation);              // force reflow to put everything in position              forceReflow();              movedChildren.forEach(c => {                  const el = c.el;                  const style = el.style;                  addTransitionClass(el, moveClass);                  style.transform = style.webkitTransform = style.transitionDuration = '';                  const cb = (el._moveCb = (e) => {                      if (e && e.target !== el) {                          return;                      }                      if (!e || /transform$/.test(e.propertyName)) {                          el.removeEventListener('transitionend', cb);                          el._moveCb = null;                          removeTransitionClass(el, moveClass);                      }                  });                  el.addEventListener('transitionend', cb);              });          });          return () => {              const rawProps = toRaw(props);              const cssTransitionProps = resolveTransitionProps(rawProps);              let tag = rawProps.tag || Fragment;              prevChildren = children;              children = slots.default ? getTransitionRawChildren(slots.default()) : [];              for (let i = 0; i < children.length; i++) {                  const child = children[i];                  if (child.key != null) {                      setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));                  }                  else {                      warn$1(`<TransitionGroup> children must be keyed.`);                  }              }              if (prevChildren) {                  for (let i = 0; i < prevChildren.length; i++) {                      const child = prevChildren[i];                      setTransitionHooks(child, resolveTransitionHooks(child, cssTransitionProps, state, instance));                      positionMap.set(child, child.el.getBoundingClientRect());                  }              }              return createVNode(tag, null, children);          };      }  };  const TransitionGroup = TransitionGroupImpl;  function callPendingCbs(c) {      const el = c.el;      if (el._moveCb) {          el._moveCb();      }      if (el._enterCb) {          el._enterCb();      }  }  function recordPosition(c) {      newPositionMap.set(c, c.el.getBoundingClientRect());  }  function applyTranslation(c) {      const oldPos = positionMap.get(c);      const newPos = newPositionMap.get(c);      const dx = oldPos.left - newPos.left;      const dy = oldPos.top - newPos.top;      if (dx || dy) {          const s = c.el.style;          s.transform = s.webkitTransform = `translate(${dx}px,${dy}px)`;          s.transitionDuration = '0s';          return c;      }  }  function hasCSSTransform(el, root, moveClass) {      // Detect whether an element with the move class applied has      // CSS transitions. Since the element may be inside an entering      // transition at this very moment, we make a clone of it and remove      // all other transition classes applied to ensure only the move class      // is applied.      const clone = el.cloneNode();      if (el._vtc) {          el._vtc.forEach(cls => {              cls.split(/\s+/).forEach(c => c && clone.classList.remove(c));          });      }      moveClass.split(/\s+/).forEach(c => c && clone.classList.add(c));      clone.style.display = 'none';      const container = (root.nodeType === 1 ? root : root.parentNode);      container.appendChild(clone);      const { hasTransform } = getTransitionInfo(clone);      container.removeChild(clone);      return hasTransform;  }  const getModelAssigner = (vnode) => {      const fn = vnode.props['onUpdate:modelValue'] ||          (false );      return isArray(fn) ? value => invokeArrayFns(fn, value) : fn;  };  function onCompositionStart(e) {      e.target.composing = true;  }  function onCompositionEnd(e) {      const target = e.target;      if (target.composing) {          target.composing = false;          target.dispatchEvent(new Event('input'));      }  }  // We are exporting the v-model runtime directly as vnode hooks so that it can  // be tree-shaken in case v-model is never used.  const vModelText = {      created(el, { modifiers: { lazy, trim, number } }, vnode) {          el._assign = getModelAssigner(vnode);          const castToNumber = number || (vnode.props && vnode.props.type === 'number');          addEventListener(el, lazy ? 'change' : 'input', e => {              if (e.target.composing)                  return;              let domValue = el.value;              if (trim) {                  domValue = domValue.trim();              }              if (castToNumber) {                  domValue = toNumber(domValue);              }              el._assign(domValue);          });          if (trim) {              addEventListener(el, 'change', () => {                  el.value = el.value.trim();              });          }          if (!lazy) {              addEventListener(el, 'compositionstart', onCompositionStart);              addEventListener(el, 'compositionend', onCompositionEnd);              // Safari < 10.2 & UIWebView doesn't fire compositionend when              // switching focus before confirming composition choice              // this also fixes the issue where some browsers e.g. iOS Chrome              // fires "change" instead of "input" on autocomplete.              addEventListener(el, 'change', onCompositionEnd);          }      },      // set value on mounted so it's after min/max for type="range"      mounted(el, { value }) {          el.value = value == null ? '' : value;      },      beforeUpdate(el, { value, modifiers: { lazy, trim, number } }, vnode) {          el._assign = getModelAssigner(vnode);          // avoid clearing unresolved text. #2302          if (el.composing)              return;          if (document.activeElement === el && el.type !== 'range') {              if (lazy) {                  return;              }              if (trim && el.value.trim() === value) {                  return;              }              if ((number || el.type === 'number') && toNumber(el.value) === value) {                  return;              }          }          const newValue = value == null ? '' : value;          if (el.value !== newValue) {              el.value = newValue;          }      }  };  const vModelCheckbox = {      // #4096 array checkboxes need to be deep traversed      deep: true,      created(el, _, vnode) {          el._assign = getModelAssigner(vnode);          addEventListener(el, 'change', () => {              const modelValue = el._modelValue;              const elementValue = getValue(el);              const checked = el.checked;              const assign = el._assign;              if (isArray(modelValue)) {                  const index = looseIndexOf(modelValue, elementValue);                  const found = index !== -1;                  if (checked && !found) {                      assign(modelValue.concat(elementValue));                  }                  else if (!checked && found) {                      const filtered = [...modelValue];                      filtered.splice(index, 1);                      assign(filtered);                  }              }              else if (isSet(modelValue)) {                  const cloned = new Set(modelValue);                  if (checked) {                      cloned.add(elementValue);                  }                  else {                      cloned.delete(elementValue);                  }                  assign(cloned);              }              else {                  assign(getCheckboxValue(el, checked));              }          });      },      // set initial checked on mount to wait for true-value/false-value      mounted: setChecked,      beforeUpdate(el, binding, vnode) {          el._assign = getModelAssigner(vnode);          setChecked(el, binding, vnode);      }  };  function setChecked(el, { value, oldValue }, vnode) {      el._modelValue = value;      if (isArray(value)) {          el.checked = looseIndexOf(value, vnode.props.value) > -1;      }      else if (isSet(value)) {          el.checked = value.has(vnode.props.value);      }      else if (value !== oldValue) {          el.checked = looseEqual(value, getCheckboxValue(el, true));      }  }  const vModelRadio = {      created(el, { value }, vnode) {          el.checked = looseEqual(value, vnode.props.value);          el._assign = getModelAssigner(vnode);          addEventListener(el, 'change', () => {              el._assign(getValue(el));          });      },      beforeUpdate(el, { value, oldValue }, vnode) {          el._assign = getModelAssigner(vnode);          if (value !== oldValue) {              el.checked = looseEqual(value, vnode.props.value);          }      }  };  const vModelSelect = {      // <select multiple> value need to be deep traversed      deep: true,      created(el, { value, modifiers: { number } }, vnode) {          const isSetModel = isSet(value);          addEventListener(el, 'change', () => {              const selectedVal = Array.prototype.filter                  .call(el.options, (o) => o.selected)                  .map((o) => number ? toNumber(getValue(o)) : getValue(o));              el._assign(el.multiple                  ? isSetModel                      ? new Set(selectedVal)                      : selectedVal                  : selectedVal[0]);          });          el._assign = getModelAssigner(vnode);      },      // set value in mounted & updated because <select> relies on its children      // <option>s.      mounted(el, { value }) {          setSelected(el, value);      },      beforeUpdate(el, _binding, vnode) {          el._assign = getModelAssigner(vnode);      },      updated(el, { value }) {          setSelected(el, value);      }  };  function setSelected(el, value) {      const isMultiple = el.multiple;      if (isMultiple && !isArray(value) && !isSet(value)) {          warn$1(`<select multiple v-model> expects an Array or Set value for its binding, ` +                  `but got ${Object.prototype.toString.call(value).slice(8, -1)}.`);          return;      }      for (let i = 0, l = el.options.length; i < l; i++) {          const option = el.options[i];          const optionValue = getValue(option);          if (isMultiple) {              if (isArray(value)) {                  option.selected = looseIndexOf(value, optionValue) > -1;              }              else {                  option.selected = value.has(optionValue);              }          }          else {              if (looseEqual(getValue(option), value)) {                  if (el.selectedIndex !== i)                      el.selectedIndex = i;                  return;              }          }      }      if (!isMultiple && el.selectedIndex !== -1) {          el.selectedIndex = -1;      }  }  // retrieve raw value set via :value bindings  function getValue(el) {      return '_value' in el ? el._value : el.value;  }  // retrieve raw value for true-value and false-value set via :true-value or :false-value bindings  function getCheckboxValue(el, checked) {      const key = checked ? '_trueValue' : '_falseValue';      return key in el ? el[key] : checked;  }  const vModelDynamic = {      created(el, binding, vnode) {          callModelHook(el, binding, vnode, null, 'created');      },      mounted(el, binding, vnode) {          callModelHook(el, binding, vnode, null, 'mounted');      },      beforeUpdate(el, binding, vnode, prevVNode) {          callModelHook(el, binding, vnode, prevVNode, 'beforeUpdate');      },      updated(el, binding, vnode, prevVNode) {          callModelHook(el, binding, vnode, prevVNode, 'updated');      }  };  function resolveDynamicModel(tagName, type) {      switch (tagName) {          case 'SELECT':              return vModelSelect;          case 'TEXTAREA':              return vModelText;          default:              switch (type) {                  case 'checkbox':                      return vModelCheckbox;                  case 'radio':                      return vModelRadio;                  default:                      return vModelText;              }      }  }  function callModelHook(el, binding, vnode, prevVNode, hook) {      const modelToUse = resolveDynamicModel(el.tagName, vnode.props && vnode.props.type);      const fn = modelToUse[hook];      fn && fn(el, binding, vnode, prevVNode);  }  const systemModifiers = ['ctrl', 'shift', 'alt', 'meta'];  const modifierGuards = {      stop: e => e.stopPropagation(),      prevent: e => e.preventDefault(),      self: e => e.target !== e.currentTarget,      ctrl: e => !e.ctrlKey,      shift: e => !e.shiftKey,      alt: e => !e.altKey,      meta: e => !e.metaKey,      left: e => 'button' in e && e.button !== 0,      middle: e => 'button' in e && e.button !== 1,      right: e => 'button' in e && e.button !== 2,      exact: (e, modifiers) => systemModifiers.some(m => e[`${m}Key`] && !modifiers.includes(m))  };  /**   * @private   */  const withModifiers = (fn, modifiers) => {      return (event, ...args) => {          for (let i = 0; i < modifiers.length; i++) {              const guard = modifierGuards[modifiers[i]];              if (guard && guard(event, modifiers))                  return;          }          return fn(event, ...args);      };  };  // Kept for 2.x compat.  // Note: IE11 compat for `spacebar` and `del` is removed for now.  const keyNames = {      esc: 'escape',      space: ' ',      up: 'arrow-up',      left: 'arrow-left',      right: 'arrow-right',      down: 'arrow-down',      delete: 'backspace'  };  /**   * @private   */  const withKeys = (fn, modifiers) => {      return (event) => {          if (!('key' in event)) {              return;          }          const eventKey = hyphenate(event.key);          if (modifiers.some(k => k === eventKey || keyNames[k] === eventKey)) {              return fn(event);          }      };  };  const vShow = {      beforeMount(el, { value }, { transition }) {          el._vod = el.style.display === 'none' ? '' : el.style.display;          if (transition && value) {              transition.beforeEnter(el);          }          else {              setDisplay(el, value);          }      },      mounted(el, { value }, { transition }) {          if (transition && value) {              transition.enter(el);          }      },      updated(el, { value, oldValue }, { transition }) {          if (!value === !oldValue)              return;          if (transition) {              if (value) {                  transition.beforeEnter(el);                  setDisplay(el, true);                  transition.enter(el);              }              else {                  transition.leave(el, () => {                      setDisplay(el, false);                  });              }          }          else {              setDisplay(el, value);          }      },      beforeUnmount(el, { value }) {          setDisplay(el, value);      }  };  function setDisplay(el, value) {      el.style.display = value ? el._vod : 'none';  }  const rendererOptions = /*#__PURE__*/ extend({ patchProp }, nodeOps);  // lazy create the renderer - this makes core renderer logic tree-shakable  // in case the user only imports reactivity utilities from Vue.  let renderer;  let enabledHydration = false;  function ensureRenderer() {      return (renderer ||          (renderer = createRenderer(rendererOptions)));  }  function ensureHydrationRenderer() {      renderer = enabledHydration          ? renderer          : createHydrationRenderer(rendererOptions);      enabledHydration = true;      return renderer;  }  // use explicit type casts here to avoid import() calls in rolled-up d.ts  const render = ((...args) => {      ensureRenderer().render(...args);  });  const hydrate = ((...args) => {      ensureHydrationRenderer().hydrate(...args);  });  const createApp = ((...args) => {      const app = ensureRenderer().createApp(...args);      {          injectNativeTagCheck(app);          injectCompilerOptionsCheck(app);      }      const { mount } = app;      app.mount = (containerOrSelector) => {          const container = normalizeContainer(containerOrSelector);          if (!container)              return;          const component = app._component;          if (!isFunction(component) && !component.render && !component.template) {              // __UNSAFE__              // Reason: potential execution of JS expressions in in-DOM template.              // The user must make sure the in-DOM template is trusted. If it's              // rendered by the server, the template should not contain any user data.              component.template = container.innerHTML;          }          // clear content before mounting          container.innerHTML = '';          const proxy = mount(container, false, container instanceof SVGElement);          if (container instanceof Element) {              container.removeAttribute('v-cloak');              container.setAttribute('data-v-app', '');          }          return proxy;      };      return app;  });  const createSSRApp = ((...args) => {      const app = ensureHydrationRenderer().createApp(...args);      {          injectNativeTagCheck(app);          injectCompilerOptionsCheck(app);      }      const { mount } = app;      app.mount = (containerOrSelector) => {          const container = normalizeContainer(containerOrSelector);          if (container) {              return mount(container, true, container instanceof SVGElement);          }      };      return app;  });  function injectNativeTagCheck(app) {      // Inject `isNativeTag`      // this is used for component name validation (dev only)      Object.defineProperty(app.config, 'isNativeTag', {          value: (tag) => isHTMLTag(tag) || isSVGTag(tag),          writable: false      });  }  // dev only  function injectCompilerOptionsCheck(app) {      if (isRuntimeOnly()) {          const isCustomElement = app.config.isCustomElement;          Object.defineProperty(app.config, 'isCustomElement', {              get() {                  return isCustomElement;              },              set() {                  warn$1(`The \`isCustomElement\` config option is deprecated. Use ` +                      `\`compilerOptions.isCustomElement\` instead.`);              }          });          const compilerOptions = app.config.compilerOptions;          const msg = `The \`compilerOptions\` config option is only respected when using ` +              `a build of Vue.js that includes the runtime compiler (aka "full build"). ` +              `Since you are using the runtime-only build, \`compilerOptions\` ` +              `must be passed to \`@vue/compiler-dom\` in the build setup instead.\n` +              `- For vue-loader: pass it via vue-loader's \`compilerOptions\` loader option.\n` +              `- For vue-cli: see https://cli.vuejs.org/guide/webpack.html#modifying-options-of-a-loader\n` +              `- For vite: pass it via @vitejs/plugin-vue options. See https://github.com/vitejs/vite/tree/main/packages/plugin-vue#example-for-passing-options-to-vuecompiler-dom`;          Object.defineProperty(app.config, 'compilerOptions', {              get() {                  warn$1(msg);                  return compilerOptions;              },              set() {                  warn$1(msg);              }          });      }  }  function normalizeContainer(container) {      if (isString(container)) {          const res = document.querySelector(container);          if (!res) {              warn$1(`Failed to mount app: mount target selector "${container}" returned null.`);          }          return res;      }      if (window.ShadowRoot &&          container instanceof window.ShadowRoot &&          container.mode === 'closed') {          warn$1(`mounting on a ShadowRoot with \`{mode: "closed"}\` may lead to unpredictable bugs`);      }      return container;  }  /**   * @internal   */  const initDirectivesForSSR = NOOP;  exports.BaseTransition = BaseTransition;  exports.Comment = Comment;  exports.EffectScope = EffectScope;  exports.Fragment = Fragment;  exports.KeepAlive = KeepAlive;  exports.ReactiveEffect = ReactiveEffect;  exports.Static = Static;  exports.Suspense = Suspense;  exports.Teleport = Teleport;  exports.Text = Text;  exports.Transition = Transition;  exports.TransitionGroup = TransitionGroup;  exports.VueElement = VueElement;  exports.callWithAsyncErrorHandling = callWithAsyncErrorHandling;  exports.callWithErrorHandling = callWithErrorHandling;  exports.camelize = camelize;  exports.capitalize = capitalize;  exports.cloneVNode = cloneVNode;  exports.compatUtils = compatUtils;  exports.computed = computed$1;  exports.createApp = createApp;  exports.createBlock = createBlock;  exports.createCommentVNode = createCommentVNode;  exports.createElementBlock = createElementBlock;  exports.createElementVNode = createBaseVNode;  exports.createHydrationRenderer = createHydrationRenderer;  exports.createPropsRestProxy = createPropsRestProxy;  exports.createRenderer = createRenderer;  exports.createSSRApp = createSSRApp;  exports.createSlots = createSlots;  exports.createStaticVNode = createStaticVNode;  exports.createTextVNode = createTextVNode;  exports.createVNode = createVNode;  exports.customRef = customRef;  exports.defineAsyncComponent = defineAsyncComponent;  exports.defineComponent = defineComponent;  exports.defineCustomElement = defineCustomElement;  exports.defineEmits = defineEmits;  exports.defineExpose = defineExpose;  exports.defineProps = defineProps;  exports.defineSSRCustomElement = defineSSRCustomElement;  exports.effect = effect;  exports.effectScope = effectScope;  exports.getCurrentInstance = getCurrentInstance;  exports.getCurrentScope = getCurrentScope;  exports.getTransitionRawChildren = getTransitionRawChildren;  exports.guardReactiveProps = guardReactiveProps;  exports.h = h;  exports.handleError = handleError;  exports.hydrate = hydrate;  exports.initCustomFormatter = initCustomFormatter;  exports.initDirectivesForSSR = initDirectivesForSSR;  exports.inject = inject;  exports.isMemoSame = isMemoSame;  exports.isProxy = isProxy;  exports.isReactive = isReactive;  exports.isReadonly = isReadonly;  exports.isRef = isRef;  exports.isRuntimeOnly = isRuntimeOnly;  exports.isShallow = isShallow;  exports.isVNode = isVNode;  exports.markRaw = markRaw;  exports.mergeDefaults = mergeDefaults;  exports.mergeProps = mergeProps;  exports.nextTick = nextTick;  exports.normalizeClass = normalizeClass;  exports.normalizeProps = normalizeProps;  exports.normalizeStyle = normalizeStyle;  exports.onActivated = onActivated;  exports.onBeforeMount = onBeforeMount;  exports.onBeforeUnmount = onBeforeUnmount;  exports.onBeforeUpdate = onBeforeUpdate;  exports.onDeactivated = onDeactivated;  exports.onErrorCaptured = onErrorCaptured;  exports.onMounted = onMounted;  exports.onRenderTracked = onRenderTracked;  exports.onRenderTriggered = onRenderTriggered;  exports.onScopeDispose = onScopeDispose;  exports.onServerPrefetch = onServerPrefetch;  exports.onUnmounted = onUnmounted;  exports.onUpdated = onUpdated;  exports.openBlock = openBlock;  exports.popScopeId = popScopeId;  exports.provide = provide;  exports.proxyRefs = proxyRefs;  exports.pushScopeId = pushScopeId;  exports.queuePostFlushCb = queuePostFlushCb;  exports.reactive = reactive;  exports.readonly = readonly;  exports.ref = ref;  exports.registerRuntimeCompiler = registerRuntimeCompiler;  exports.render = render;  exports.renderList = renderList;  exports.renderSlot = renderSlot;  exports.resolveComponent = resolveComponent;  exports.resolveDirective = resolveDirective;  exports.resolveDynamicComponent = resolveDynamicComponent;  exports.resolveFilter = resolveFilter;  exports.resolveTransitionHooks = resolveTransitionHooks;  exports.setBlockTracking = setBlockTracking;  exports.setDevtoolsHook = setDevtoolsHook;  exports.setTransitionHooks = setTransitionHooks;  exports.shallowReactive = shallowReactive;  exports.shallowReadonly = shallowReadonly;  exports.shallowRef = shallowRef;  exports.ssrContextKey = ssrContextKey;  exports.ssrUtils = ssrUtils;  exports.stop = stop;  exports.toDisplayString = toDisplayString;  exports.toHandlerKey = toHandlerKey;  exports.toHandlers = toHandlers;  exports.toRaw = toRaw;  exports.toRef = toRef;  exports.toRefs = toRefs;  exports.transformVNodeArgs = transformVNodeArgs;  exports.triggerRef = triggerRef;  exports.unref = unref;  exports.useAttrs = useAttrs;  exports.useCssModule = useCssModule;  exports.useCssVars = useCssVars;  exports.useSSRContext = useSSRContext;  exports.useSlots = useSlots;  exports.useTransitionState = useTransitionState;  exports.vModelCheckbox = vModelCheckbox;  exports.vModelDynamic = vModelDynamic;  exports.vModelRadio = vModelRadio;  exports.vModelSelect = vModelSelect;  exports.vModelText = vModelText;  exports.vShow = vShow;  exports.version = version;  exports.warn = warn$1;  exports.watch = watch;  exports.watchEffect = watchEffect;  exports.watchPostEffect = watchPostEffect;  exports.watchSyncEffect = watchSyncEffect;  exports.withAsyncContext = withAsyncContext;  exports.withCtx = withCtx;  exports.withDefaults = withDefaults;  exports.withDirectives = withDirectives;  exports.withKeys = withKeys;  exports.withMemo = withMemo;  exports.withModifiers = withModifiers;  exports.withScopeId = withScopeId;  Object.defineProperty(exports, '__esModule', { value: true });  return exports;}({}));
 |